docs(shape): document keyed DOM cache pattern alongside paintAtomic
This commit is contained in:
parent
a9c28088cb
commit
429b0583ad
1 changed files with 14 additions and 0 deletions
|
|
@ -193,6 +193,20 @@ empty state invisible. Builders receive the fragment as their
|
||||||
returns inside the builder still commit whatever was appended
|
returns inside the builder still commit whatever was appended
|
||||||
before they returned.
|
before they returned.
|
||||||
|
|
||||||
|
**Keyed DOM caching:** for sections whose rows hold interactive state
|
||||||
|
(textarea drafts, checkboxes, focused inputs) `paintAtomic` is not
|
||||||
|
enough — wiping and rebuilding still destroys the state even if the
|
||||||
|
flash is hidden. The keyed pattern keeps a `Map<id, {el, fingerprint}>`
|
||||||
|
where the fingerprint is `JSON.stringify({...visible fields...})`.
|
||||||
|
On each render: cache-hit rows are reused verbatim (preserving
|
||||||
|
textarea draft, checkbox state, and event listeners); only cache-miss
|
||||||
|
rows are rebuilt and inserted. Used for: containers (`containerRowCache`),
|
||||||
|
rebuild-queue entries (`rebuildQueueRowCache`), and question rows
|
||||||
|
(`questionRowCache`). The spawn-form input+focus and meta-input
|
||||||
|
checkboxes use a lighter snapshot-then-restore pattern (snapshot
|
||||||
|
before `replaceChildren`, restore after) since they are single
|
||||||
|
values rather than per-row caches.
|
||||||
|
|
||||||
**`<details>` open-state preservation:** any collapsible element
|
**`<details>` open-state preservation:** any collapsible element
|
||||||
tagged with `data-restore-key="<stable-key>"` survives the
|
tagged with `data-restore-key="<stable-key>"` survives the
|
||||||
refresh. `snapshotOpenDetails()` walks managed sections before
|
refresh. `snapshotOpenDetails()` walks managed sections before
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue