mirror of
https://github.com/Matysh/houseplan-card
synced 2026-09-29 03:09:36 +00:00
Смена пространства выбрасывает слой, а не сверяет его поэлементно
#525 увёл оба списка сцены с `map()` на `repeat(items, (item) => item.id, …)`, чтобы Lit не переиспользовал узлы по позиции и не проигрывал анимацию двери, которой не было. Правка верная, но на плане с двумя сотнями маркеров она оказалась дорогой ровно там, где пользы не приносит: при смене пространства ключи не пересекаются вовсе, и `repeat` строит две карты ключей и обходит оба списка, чтобы затем всё равно выбросить всё и создать заново. Бисект по медиане `switchCycleMs` на `large-house`: 871,2 перед #525 → 953,5 после. На раннере эти 80 мс распадаются на шесть-девять дополнительных длинных задач, и `longTask.countP95` вышел за порог стабильного гейта. Теперь оба списка рендерятся как `keyed(space.id, repeat(…))`. Внешний ключ делает смену пространства: поддерево выбрасывается целиком, дифа нет. Внутренний остаётся, потому что состав списков едет и внутри пространства — у маркеров от призраков редактора и живого синка, у проёмов от записи с нерешённым хостом, которая живёт только в режиме plan, — а переходы на `.device-shell-frame`, `.op-leaf` и `.op-arc` никуда не делись. Замер после правки: `switchCycleMs` 889,1 против 936,0 на `main` и 871,2 до #525. Потолок карточки поднят на одну строку — на `import { keyed }`; переносить нечего, сам рендер не вырос ни на символ. Issue: #534 User-Visible: yes
This commit is contained in:
@@ -7438,8 +7438,9 @@ const MUTANT_DEFINITIONS = [
|
||||
+ 'animates a door that never moved (#525 AC1)',
|
||||
patches: [{
|
||||
file: 'src/houseplan-card.ts',
|
||||
find: ' return svg`<g class="openinglayer">${repeat(items, (o) => o.id, (o) => {',
|
||||
replace: ' return svg`<g class="openinglayer">${items.map((o) => {',
|
||||
find: " return svg`<g class=\"openinglayer\">${keyed(space.id, repeat(items,"
|
||||
+ " (o) => o.id, (o) => {",
|
||||
replace: " return svg`<g class=\"openinglayer\">${keyed(space.id, items.map((o) => {",
|
||||
}],
|
||||
},
|
||||
{
|
||||
@@ -7450,8 +7451,8 @@ const MUTANT_DEFINITIONS = [
|
||||
+ 'painter, which finds the dragged marker by that attribute (#525 AC2)',
|
||||
patches: [{
|
||||
file: 'src/houseplan-card.ts',
|
||||
find: ' ${repeat(devs, (d) => d.id, (d) => this._renderDevice(',
|
||||
replace: ' ${devs.map((d) => this._renderDevice(',
|
||||
find: ' ${keyed(space.id, repeat(devs, (d) => d.id, (d) => this._renderDevice(',
|
||||
replace: ' ${keyed(space.id, devs.map((d) => this._renderDevice(',
|
||||
}],
|
||||
},
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user