mirror of
https://github.com/Matysh/houseplan-card
synced 2026-09-28 19:01:34 +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
2 lines
518 B
JavaScript
2 lines
518 B
JavaScript
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="b3e08d50a47faaba7562dc080f267ca13de845113735892a9115a6cdd991392a";import{dS as r,dT as t,dU as a}from"./houseplan-card-bOJWMeFY.js";const s={},e=r(class extends t{constructor(){super(...arguments),this.ot=s}render(r,t){return t()}update(r,[t,s]){if(Array.isArray(t)){if(Array.isArray(this.ot)&&this.ot.length===t.length&&t.every((r,t)=>r===this.ot[t]))return a}else if(this.ot===t)return a;return this.ot=Array.isArray(t)?Array.from(t):t,this.render(t,s)}});export{e as i};
|