synstate-dom 0.6.0 → 0.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/bind/bind-props.mjs +14 -1
- package/dist/bind/bind-props.mjs.map +1 -1
- package/dist/control/for.d.mts +6 -0
- package/dist/control/for.d.mts.map +1 -1
- package/dist/control/for.mjs +27 -15
- package/dist/control/for.mjs.map +1 -1
- package/dist/control/mount-switch.d.mts +6 -0
- package/dist/control/mount-switch.d.mts.map +1 -1
- package/dist/control/mount-switch.mjs +27 -12
- package/dist/control/mount-switch.mjs.map +1 -1
- package/dist/control/portal.d.mts.map +1 -1
- package/dist/control/portal.mjs +2 -2
- package/dist/control/portal.mjs.map +1 -1
- package/dist/internal/after-attach.d.mts +46 -0
- package/dist/internal/after-attach.d.mts.map +1 -0
- package/dist/internal/after-attach.mjs +170 -0
- package/dist/internal/after-attach.mjs.map +1 -0
- package/dist/internal/bind-value.mjs +11 -0
- package/dist/internal/bind-value.mjs.map +1 -1
- package/dist/internal/index.d.mts +1 -0
- package/dist/internal/index.d.mts.map +1 -1
- package/dist/internal/index.mjs +1 -0
- package/dist/internal/index.mjs.map +1 -1
- package/dist/jsx/element-props.d.mts +3 -1
- package/dist/jsx/element-props.d.mts.map +1 -1
- package/dist/jsx/jsx.mjs +2 -2
- package/dist/jsx/jsx.mjs.map +1 -1
- package/dist/render.d.mts +2 -1
- package/dist/render.d.mts.map +1 -1
- package/dist/render.mjs +19 -4
- package/dist/render.mjs.map +1 -1
- package/package.json +10 -10
- package/src/bind/bind-props.mts +22 -1
- package/src/control/for.mts +43 -19
- package/src/control/mount-switch.mts +38 -15
- package/src/control/portal.mts +7 -3
- package/src/internal/after-attach.mts +238 -0
- package/src/internal/bind-value.mts +14 -1
- package/src/internal/index.mts +1 -0
- package/src/jsx/element-props.mts +6 -3
- package/src/jsx/element-props.test.mts +18 -0
- package/src/jsx/jsx.mts +2 -2
- package/src/render.mts +32 -6
package/README.md
CHANGED
|
@@ -209,7 +209,7 @@ synstate derivations are not lazy: a derivation is computed whenever its parent
|
|
|
209
209
|
- `mapBindable`, `derive` and `toObservable`: helpers for a component that receives a `Bindable`. Constants stay constants and never enter the graph.
|
|
210
210
|
- The JSX runtime (`"jsx": "react-jsx"`, `"jsxImportSource": "synstate-dom"`): a JSX expression is a lazy `Mountable` description, and a component is called once, when it is mounted.
|
|
211
211
|
- `render(App, container)`: mounts `App` in a root scope and returns the function that unmounts it.
|
|
212
|
-
- Element props: attributes and DOM properties typed from `lib.dom.d.ts` (`Bindable<T>` of each writable primitive property), `aria-*` and `data-*`, `class` as a string or a `{ name: Bindable<boolean> }` object, `style` as a string or a per-property object, and `onClick`-style event handlers. SVG elements are created in the SVG namespace and take a fixed list of attributes.
|
|
212
|
+
- Element props: attributes and DOM properties typed from `lib.dom.d.ts` (`Bindable<T>` of each writable primitive property), `aria-*` (also a number, and a boolean written as `"true"` / `"false"`) and `data-*`, `class` as a string or a `{ name: Bindable<boolean> }` object, `style` as a string or a per-property object, and `onClick`-style event handlers. SVG elements are created in the SVG namespace and take a fixed list of attributes.
|
|
213
213
|
- A bound `checked` or `indeterminate` of an `<input>` is controlled: after a `change`, the input is drawn as its bound value again before the next frame is painted, so a change the owner does not take in `onChange` undoes itself. For a checkbox the user toggles freely, use `defaultChecked`. A radio group is set back as a whole when every button of it is bound.
|
|
214
214
|
- `If`, `MatchOptional` and `MatchResult`: mount one branch at a time in a scope of its own, rebuilt only when the condition or the tag changes.
|
|
215
215
|
- `For`: one row per key, each in a scope of its own; `item$` and `index$` are derived from `items`, and rows are moved as little as the longest increasing subsequence allows.
|
package/dist/bind/bind-props.mjs
CHANGED
|
@@ -32,6 +32,18 @@ const writeAttribute = (element, name, value) => {
|
|
|
32
32
|
|
|
33
33
|
|
|
34
34
|
|
|
35
|
+
|
|
36
|
+
const writeAriaAttribute = (element, name, value) => {
|
|
37
|
+
if (isBoolean(value)) {
|
|
38
|
+
element.setAttribute(name, value ? 'true' : 'false');
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
writeAttribute(element, name, value);
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
|
|
35
47
|
const isBindable = (value) => value !== undefined && value !== null;
|
|
36
48
|
|
|
37
49
|
const isPlainObject = (value) => isRecord(value) && !isObservable(value) && !hasKey(value, viewTag);
|
|
@@ -179,8 +191,9 @@ const bindProp = (element, key, value) => {
|
|
|
179
191
|
return;
|
|
180
192
|
}
|
|
181
193
|
const name = attributeNameOf[key] ?? key;
|
|
194
|
+
const write = name.startsWith('aria-') ? writeAriaAttribute : writeAttribute;
|
|
182
195
|
bindValue(value, (v) => {
|
|
183
|
-
|
|
196
|
+
write(element, name, v);
|
|
184
197
|
});
|
|
185
198
|
};
|
|
186
199
|
const propertyNameSet = new Set(propertyNames);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bind-props.mjs","sourceRoot":"","sources":["../../src/bind/bind-props.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAG7E,OAAO,EACL,eAAe,EACf,SAAS,EACT,aAAa,EACb,OAAO,GACR,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CACvB,OAAgB,EAChB,KAAsC,EAChC,EAAE;IACR,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACjD,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;IAChC,CAAC;AACH,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,cAAc,GAAG,CACrB,OAAgB,EAChB,IAAY,EACZ,KAAc,EACR,EAAE;IACR,IAAI,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAErC,OAAO;IACT,CAAC;IAED,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAC1C,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAE9B,OAAO;IACT,CAAC;IAED,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;AACrD,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,GAAG,CAAC,KAAc,EAA8B,EAAE,CAChE,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC;AAExC,kFAAkF;AAClF,MAAM,aAAa,GAAG,CACpB,KAAc,EAC4B,EAAE,CAC5C,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAErE,MAAM,SAAS,GAAG,CAAC,OAAgB,EAAE,KAAwB,EAAQ,EAAE;IACrE,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE;YACrB,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;QAEH,OAAO;IACT,CAAC;IAED,KAAK,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC/C,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACrB,OAAO,CAAC,KAAK,CACX,gCAAgC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,oDAAoD,CACzG,CAAC;YAEF,SAAS;QACX,CAAC;QAED,IAAI,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC;YACnB,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE;gBAClB,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC,CAAC;YAC7C,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,SAAS,GAAG,CAAC,OAAgB,EAAE,KAAwB,EAAQ,EAAE;IACrE,IAAI,CAAC,CAAC,OAAO,YAAY,WAAW,IAAI,OAAO,YAAY,UAAU,CAAC,EAAE,CAAC;QACvE,OAAO;IACT,CAAC;IAED,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;IAE1B,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE;YACrB,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;QAEH,OAAO;IACT,CAAC;IAED,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC9C,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;YAClB,SAAS,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE;gBACvB,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;oBAC9C,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;gBAC7B,CAAC;qBAAM,CAAC;oBACN,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;gBACpD,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;AACH,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,YAAY,GAAG,CAAC,KAAuB,EAA+B,EAAE;IAC5E,MAAM,IAAI,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IAEjC,IACE,KAAK,CAAC,IAAI,KAAK,OAAO;QACtB,KAAK,CAAC,IAAI,KAAK,EAAE;QACjB,CAAC,CAAC,IAAI,YAAY,QAAQ,IAAI,IAAI,YAAY,UAAU,CAAC,EACzD,CAAC;QACD,OAAO,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CACf,IAAI,CAAC,gBAAgB,CACnB,6BAA6B,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CACxD,CACF,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC;AACjD,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,YAAY,GAAG,CAAC,OAAyB,EAAc,EAAE;IAC7D,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAEzC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,MAAM,aAAa,GAAG,IAAI,GAAG,EAA6B,CAAC;IAE3D,MAAM,OAAO,GAAe;QAC1B,GAAG,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE;YACpB,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAClC,CAAC;QACD,OAAO,EAAE,GAAG,EAAE;YACZ,KAAK,MAAM,OAAO,IAAI,aAAa,CAAC,MAAM,EAAE,EAAE,CAAC;gBAC7C,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC;KACO,CAAC;IAEX,MAAM,QAAQ,GAAG,GAAS,EAAE;QAC1B,qBAAqB,CAAC,GAAG,EAAE;YACzB,KAAK,MAAM,KAAK,IAAI,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC1C,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC;YACnC,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,UAAU,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAEjC,aAAa,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IAE9D,cAAc,CAAC,GAAG,EAAE;QAClB,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,cAAc,GAAG,CACrB,OAAyB,EACzB,GAAkB,EAClB,KAAwB,EAClB,EAAE;IACR,MAAM,SAAS,GAAyB,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;IAE/D,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE;QACrB,SAAS,CAAC,OAAO,GAAG,CAAC,CAAC;QAEtB,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,YAAY,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE;QAClC,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,KAAK,SAAS,CAAC,OAAO,EAAE,CAAC;YACpD,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAUF,MAAM,eAAe,GAAG,CAAC,GAAW,EAAwB,EAAE,CAC5D,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,eAAe,CAAC;AAE/C,oDAAoD;AACpD,MAAM,UAAU,GAAG,IAAI,OAAO,EAAgC,CAAC;AAE/D,iEAAiE;AACjE,MAAM,UAAU,GAAG,CAAC,GAAW,EAAW,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAEnE,MAAM,cAAc,GAAG,CAAC,KAAc,EAA0B,EAAE,CAChE,OAAO,KAAK,KAAK,UAAU,CAAC;AAE9B,MAAM,QAAQ,GAAG,CAAC,OAAgB,EAAE,GAAW,EAAE,KAAc,EAAQ,EAAE;IACvE,IAAI,GAAG,KAAK,UAAU,IAAI,GAAG,KAAK,KAAK,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QAC9D,OAAO;IACT,CAAC;IAED,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;QACpB,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAE1B,OAAO;IACT,CAAC;IAED,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;QACpB,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAE1B,OAAO;IACT,CAAC;IAED,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7C,aAAa,CAAC,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,KAAK,CAAC,CAAC;QAE1D,OAAO;IACT,CAAC;IAED,IAAI,eAAe,CAAC,GAAG,CAAC,IAAI,OAAO,YAAY,gBAAgB,EAAE,CAAC;QAChE,cAAc,CAAC,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;QAEpC,OAAO;IACT,CAAC;IAED,IAAI,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7B,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE;YACrB,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;QAEH,OAAO;IACT,CAAC;IAED,MAAM,IAAI,GAAG,eAAe,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC;IAEzC,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE;QACrB,
|
|
1
|
+
{"version":3,"file":"bind-props.mjs","sourceRoot":"","sources":["../../src/bind/bind-props.mts"],"names":[],"mappings":"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"}
|
package/dist/control/for.d.mts
CHANGED
|
@@ -17,6 +17,12 @@ import { type JSX } from '../jsx/index.mjs';
|
|
|
17
17
|
* nodes; the rows that stay are moved as little as the longest increasing
|
|
18
18
|
* subsequence allows.
|
|
19
19
|
*
|
|
20
|
+
* An update that arrives before the anchor is in a parent (a later sibling
|
|
21
|
+
* wrote `items` while the enclosing element was still mounting its children) is
|
|
22
|
+
* applied, with the latest `items`, once the nodes `For` returned are inserted.
|
|
23
|
+
* One that a row being mounted writes is applied, with the latest `items`, once
|
|
24
|
+
* the rows of the update under way are all mounted and inserted (#3141).
|
|
25
|
+
*
|
|
20
26
|
* `key` is required, as in React; `(_, i) => i` matches rows by position. A key
|
|
21
27
|
* that appears twice is reported with `console.error`, and its later
|
|
22
28
|
* occurrences are rebuilt on every update.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"for.d.mts","sourceRoot":"","sources":["../../src/control/for.mts"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,qBAAqB,EAG3B,MAAM,UAAU,CAAC;AAGlB,OAAO,EAAgB,KAAK,QAAQ,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"for.d.mts","sourceRoot":"","sources":["../../src/control/for.mts"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,qBAAqB,EAG3B,MAAM,UAAU,CAAC;AAGlB,OAAO,EAAgB,KAAK,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAOpE,OAAO,EAAsB,KAAK,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAGhE;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,eAAO,MAAM,GAAG,GAAI,CAAC,6BAIlB,QAAQ,CAAC;IACV,KAAK,EAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IAC9B,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IACzC,QAAQ,EAAE,CACR,KAAK,EAAE,qBAAqB,CAAC,CAAC,CAAC,EAC/B,MAAM,EAAE,qBAAqB,CAAC,MAAM,CAAC,KAClC,GAAG,CAAC,OAAO,CAAC;CAClB,CAAC,KAAG,GAAG,CAAC,OAqNL,CAAC"}
|
package/dist/control/for.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createInitializedSyncChildObservable, createScope, getCurrentScope, map, onScopeDispose, } from 'synstate';
|
|
2
2
|
import { Arr, Optional } from 'ts-data-forge';
|
|
3
3
|
import { toObservable } from '../constant/index.mjs';
|
|
4
|
-
import { bindValue } from '../internal/index.mjs';
|
|
4
|
+
import { applyWhenAttached, bindValue, insertBefore, mountThenInsert, } from '../internal/index.mjs';
|
|
5
5
|
import { mountable, toNodes } from '../jsx/index.mjs';
|
|
6
6
|
import { longestIncreasingSubsequence } from './longest-increasing-subsequence.mjs';
|
|
7
7
|
|
|
@@ -18,6 +18,12 @@ import { longestIncreasingSubsequence } from './longest-increasing-subsequence.m
|
|
|
18
18
|
|
|
19
19
|
|
|
20
20
|
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
|
|
21
27
|
|
|
22
28
|
|
|
23
29
|
|
|
@@ -35,7 +41,10 @@ export const For = ({ items, key, children, }) => mountable(() => {
|
|
|
35
41
|
const callChildren = children;
|
|
36
42
|
const mut_rows = new Map();
|
|
37
43
|
const rowStarts = new WeakSet();
|
|
38
|
-
const mut_initial = {
|
|
44
|
+
const mut_initial = {
|
|
45
|
+
nodes: [],
|
|
46
|
+
built: false,
|
|
47
|
+
};
|
|
39
48
|
|
|
40
49
|
const createRow = (rowKey, entry) => {
|
|
41
50
|
const scope = createScope(parent);
|
|
@@ -86,11 +95,10 @@ export const For = ({ items, key, children, }) => mountable(() => {
|
|
|
86
95
|
range.setEndBefore(anchor);
|
|
87
96
|
range.deleteContents();
|
|
88
97
|
};
|
|
89
|
-
|
|
98
|
+
|
|
99
|
+
const update = (entries) => {
|
|
90
100
|
const previousOrder = Array.from(mut_rows.keys());
|
|
91
|
-
|
|
92
|
-
removeAllAtOnceIfEveryKeyGoes(previousOrder, entries);
|
|
93
|
-
}
|
|
101
|
+
removeAllAtOnceIfEveryKeyGoes(previousOrder, entries);
|
|
94
102
|
for (const [rowKey, row] of mut_rows) {
|
|
95
103
|
if (entries.byKey.has(rowKey)) {
|
|
96
104
|
continue;
|
|
@@ -98,13 +106,6 @@ export const For = ({ items, key, children, }) => mountable(() => {
|
|
|
98
106
|
row.scope.dispose();
|
|
99
107
|
mut_rows.delete(rowKey);
|
|
100
108
|
}
|
|
101
|
-
if (anchor.parentNode === null) {
|
|
102
|
-
mut_initial.nodes = entries.order.flatMap((rowKey) => {
|
|
103
|
-
const entry = entries.byKey.get(rowKey);
|
|
104
|
-
return entry === undefined ? [] : createRow(rowKey, entry);
|
|
105
|
-
});
|
|
106
|
-
return;
|
|
107
|
-
}
|
|
108
109
|
if (Arr.eq(previousOrder, entries.order)) {
|
|
109
110
|
return;
|
|
110
111
|
}
|
|
@@ -124,9 +125,8 @@ export const For = ({ items, key, children, }) => mountable(() => {
|
|
|
124
125
|
if (entry === undefined) {
|
|
125
126
|
continue;
|
|
126
127
|
}
|
|
127
|
-
const [start
|
|
128
|
+
const [start] = mountThenInsert((e) => createRow(rowKey, e), entry, insertBefore, mut_next);
|
|
128
129
|
if (start !== undefined) {
|
|
129
|
-
mut_next.before(start, ...rest);
|
|
130
130
|
mut_next = start;
|
|
131
131
|
}
|
|
132
132
|
continue;
|
|
@@ -137,6 +137,18 @@ export const For = ({ items, key, children, }) => mountable(() => {
|
|
|
137
137
|
mut_next = existing.start;
|
|
138
138
|
}
|
|
139
139
|
reorderMap(mut_rows, entries.order);
|
|
140
|
+
};
|
|
141
|
+
const updateWhenAttached = applyWhenAttached(anchor, update);
|
|
142
|
+
bindValue(entries$, (entries) => {
|
|
143
|
+
if (!mut_initial.built) {
|
|
144
|
+
mut_initial.built = true;
|
|
145
|
+
mut_initial.nodes = entries.order.flatMap((rowKey) => {
|
|
146
|
+
const entry = entries.byKey.get(rowKey);
|
|
147
|
+
return entry === undefined ? [] : createRow(rowKey, entry);
|
|
148
|
+
});
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
updateWhenAttached(entries);
|
|
140
152
|
});
|
|
141
153
|
return Arr.toPushed(mut_initial.nodes, anchor);
|
|
142
154
|
});
|
package/dist/control/for.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"for.mjs","sourceRoot":"","sources":["../../src/control/for.mts"],"names":[],"mappings":"AAAA,OAAO,EACL,oCAAoC,EACpC,WAAW,EACX,eAAe,EACf,GAAG,EACH,cAAc,GAIf,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE9C,OAAO,EAAE,YAAY,EAAiB,MAAM,uBAAuB,CAAC;AACpE,OAAO,
|
|
1
|
+
{"version":3,"file":"for.mjs","sourceRoot":"","sources":["../../src/control/for.mts"],"names":[],"mappings":"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"}
|
|
@@ -13,6 +13,12 @@ import { type Mountable, type MountedNodes } from '../jsx/index.mjs';
|
|
|
13
13
|
*
|
|
14
14
|
* `branch` runs inside the new scope, so whatever it creates belongs to the
|
|
15
15
|
* branch.
|
|
16
|
+
*
|
|
17
|
+
* A value that arrives before the anchor is in a parent (a later sibling wrote
|
|
18
|
+
* it while the enclosing element was still mounting its children) is kept, and
|
|
19
|
+
* the switch follows the latest one once the nodes it returned are inserted.
|
|
20
|
+
* A value the branch being mounted writes itself is applied once that branch is
|
|
21
|
+
* inserted (#3141).
|
|
16
22
|
*/
|
|
17
23
|
export declare const mountSwitch: <V, K>(value: Bindable<V>, keyOf: (current: V) => K, branch: (key: K, current: V) => Mountable | undefined) => MountedNodes;
|
|
18
24
|
//# sourceMappingURL=mount-switch.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mount-switch.d.mts","sourceRoot":"","sources":["../../src/control/mount-switch.mts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"mount-switch.d.mts","sourceRoot":"","sources":["../../src/control/mount-switch.mts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAOtD,OAAO,EAAW,KAAK,SAAS,EAAE,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAE9E;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,WAAW,GAAI,CAAC,EAAE,CAAC,SACvB,QAAQ,CAAC,CAAC,CAAC,SACX,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,UAChB,CAAC,GAAG,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,KAAK,SAAS,GAAG,SAAS,KACpD,YAyDF,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createScope, getCurrentScope, onScopeDispose, } from 'synstate';
|
|
2
2
|
import { Arr } from 'ts-data-forge';
|
|
3
|
-
import { bindValue } from '../internal/index.mjs';
|
|
3
|
+
import { applyWhenAttached, bindValue, insertBefore, mountThenInsert, } from '../internal/index.mjs';
|
|
4
4
|
import { toNodes } from '../jsx/index.mjs';
|
|
5
5
|
|
|
6
6
|
|
|
@@ -16,18 +16,18 @@ import { toNodes } from '../jsx/index.mjs';
|
|
|
16
16
|
|
|
17
17
|
|
|
18
18
|
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
19
25
|
export const mountSwitch = (value, keyOf, branch) => {
|
|
20
26
|
const parent = getCurrentScope();
|
|
21
27
|
const anchor = document.createComment('');
|
|
22
28
|
const mut_state = { current: undefined, initialNodes: [] };
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
if (mut_state.current !== undefined) {
|
|
26
|
-
if (Object.is(mut_state.current.key, key)) {
|
|
27
|
-
return;
|
|
28
|
-
}
|
|
29
|
-
mut_state.current.scope.dispose();
|
|
30
|
-
}
|
|
29
|
+
|
|
30
|
+
const mountBranch = (key, v) => {
|
|
31
31
|
const scope = createScope(parent);
|
|
32
32
|
const nodes = scope.run(() => {
|
|
33
33
|
const mounted = toNodes(branch(key, v)?.mount() ?? []);
|
|
@@ -39,11 +39,26 @@ export const mountSwitch = (value, keyOf, branch) => {
|
|
|
39
39
|
return mounted;
|
|
40
40
|
});
|
|
41
41
|
mut_state.current = { key, scope };
|
|
42
|
-
|
|
43
|
-
|
|
42
|
+
return nodes;
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
const switchTo = (v) => {
|
|
46
|
+
const key = keyOf(v);
|
|
47
|
+
if (mut_state.current !== undefined) {
|
|
48
|
+
if (Object.is(mut_state.current.key, key)) {
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
mut_state.current.scope.dispose();
|
|
52
|
+
}
|
|
53
|
+
mountThenInsert((k) => mountBranch(k, v), key, insertBefore, anchor);
|
|
54
|
+
};
|
|
55
|
+
const switchWhenAttached = applyWhenAttached(anchor, switchTo);
|
|
56
|
+
bindValue(value, (v) => {
|
|
57
|
+
if (mut_state.current === undefined) {
|
|
58
|
+
mut_state.initialNodes = mountBranch(keyOf(v), v);
|
|
44
59
|
}
|
|
45
60
|
else {
|
|
46
|
-
|
|
61
|
+
switchWhenAttached(v);
|
|
47
62
|
}
|
|
48
63
|
});
|
|
49
64
|
return Arr.toPushed(mut_state.initialNodes, anchor);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mount-switch.mjs","sourceRoot":"","sources":["../../src/control/mount-switch.mts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,eAAe,EACf,cAAc,GAEf,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AAEpC,OAAO,
|
|
1
|
+
{"version":3,"file":"mount-switch.mjs","sourceRoot":"","sources":["../../src/control/mount-switch.mts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,eAAe,EACf,cAAc,GAEf,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AAEpC,OAAO,EACL,iBAAiB,EACjB,SAAS,EACT,YAAY,EACZ,eAAe,GAChB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,OAAO,EAAqC,MAAM,kBAAkB,CAAC;AAE9E;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,KAAkB,EAClB,KAAwB,EACxB,MAAqD,EACvC,EAAE;IAChB,MAAM,MAAM,GAAG,eAAe,EAAE,CAAC;IAEjC,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;IAE1C,MAAM,SAAS,GAGX,EAAE,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC;IAE7C,6EAA6E;IAC7E,MAAM,WAAW,GAAG,CAAC,GAAM,EAAE,CAAI,EAAwB,EAAE;QACzD,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;QAElC,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE;YAC3B,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YAEvD,cAAc,CAAC,GAAG,EAAE;gBAClB,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;oBAC3B,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChB,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,OAAO,OAAO,CAAC;QACjB,CAAC,CAAC,CAAC;QAEH,SAAS,CAAC,OAAO,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;QAEnC,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;IAEF,0DAA0D;IAC1D,MAAM,QAAQ,GAAG,CAAC,CAAI,EAAQ,EAAE;QAC9B,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAErB,IAAI,SAAS,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YACpC,IAAI,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC;gBAC1C,OAAO;YACT,CAAC;YAED,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QACpC,CAAC;QAED,eAAe,CAAC,CAAC,CAAI,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;IAC1E,CAAC,CAAC;IAEF,MAAM,kBAAkB,GAAG,iBAAiB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAE/D,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE;QACrB,IAAI,SAAS,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YACpC,SAAS,CAAC,YAAY,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACpD,CAAC;aAAM,CAAC;YACN,kBAAkB,CAAC,CAAC,CAAC,CAAC;QACxB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;AACtD,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"portal.d.mts","sourceRoot":"","sources":["../../src/control/portal.mts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"portal.d.mts","sourceRoot":"","sources":["../../src/control/portal.mts"],"names":[],"mappings":"AAEA,OAAO,EAAyB,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAE/E;;;;;;;;GAQG;AACH,eAAO,MAAM,MAAM,0BAGhB,QAAQ,CAAC;IACV,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,KAAK,CAAC;CACjB,CAAC,KAAG,GAAG,CAAC,OAgBL,CAAC"}
|
package/dist/control/portal.mjs
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { onScopeDispose } from 'synstate';
|
|
2
|
+
import { appendTo, mountThenInsert } from '../internal/index.mjs';
|
|
2
3
|
import { mountChild, mountable } from '../jsx/index.mjs';
|
|
3
4
|
|
|
4
5
|
|
|
@@ -10,8 +11,7 @@ import { mountChild, mountable } from '../jsx/index.mjs';
|
|
|
10
11
|
|
|
11
12
|
|
|
12
13
|
export const Portal = ({ target, children, }) => mountable(() => {
|
|
13
|
-
const nodes = mountChild
|
|
14
|
-
(target ?? document.body).append(...nodes);
|
|
14
|
+
const nodes = mountThenInsert(mountChild, children, appendTo, target ?? document.body);
|
|
15
15
|
onScopeDispose(() => {
|
|
16
16
|
for (const node of nodes) {
|
|
17
17
|
node.remove();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"portal.mjs","sourceRoot":"","sources":["../../src/control/portal.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAwB,MAAM,kBAAkB,CAAC;AAE/E;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,EACrB,MAAM,EACN,QAAQ,GAIR,EAAe,EAAE,CACjB,SAAS,CAAC,GAAG,EAAE;IACb,MAAM,KAAK,GAAG,UAAU,
|
|
1
|
+
{"version":3,"file":"portal.mjs","sourceRoot":"","sources":["../../src/control/portal.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAwB,MAAM,kBAAkB,CAAC;AAE/E;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,EACrB,MAAM,EACN,QAAQ,GAIR,EAAe,EAAE,CACjB,SAAS,CAAC,GAAG,EAAE;IACb,MAAM,KAAK,GAAG,eAAe,CAC3B,UAAU,EACV,QAAQ,EACR,QAAQ,EACR,MAAM,IAAI,QAAQ,CAAC,IAAI,CACxB,CAAC;IAEF,cAAc,CAAC,GAAG,EAAE;QAClB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,EAAE,CAAC;AACZ,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Nodes are mounted before they are inserted: an element mounts all its
|
|
3
|
+
* children and then appends them, `render` mounts the app and then appends it,
|
|
4
|
+
* and `For` and `If` mount a row or a branch and then insert it. A child
|
|
5
|
+
* mounted later that writes to what an earlier `For` or `If` reads updates them
|
|
6
|
+
* while their anchor is in no parent yet (#2935).
|
|
7
|
+
*
|
|
8
|
+
* Every mount-and-insert goes through {@link mountThenInsert}. A `For` or a
|
|
9
|
+
* switch takes {@link applyWhenAttached} when it is mounted, which notes the
|
|
10
|
+
* mount open then; a value that arrives while its anchor is detached is kept,
|
|
11
|
+
* and the latest one is applied once that mount has inserted its nodes.
|
|
12
|
+
*
|
|
13
|
+
* `mount` takes `arg` rather than closing over it, so that the element and
|
|
14
|
+
* `render` paths allocate nothing; a mount that nothing defers to allocates no
|
|
15
|
+
* frame.
|
|
16
|
+
*/
|
|
17
|
+
export declare const mountThenInsert: <A, N, T>(mount: (input: A) => N, arg: A, insert: (into: T, mounted: N) => void, target: T) => N;
|
|
18
|
+
/** Appends `nodes` to `parent`: an `insert` for {@link mountThenInsert}. */
|
|
19
|
+
export declare const appendTo: (parent: Element, nodes: readonly ChildNode[]) => void;
|
|
20
|
+
/** Inserts `nodes` in front of `next`: an `insert` for {@link mountThenInsert}. */
|
|
21
|
+
export declare const insertBefore: (next: ChildNode, nodes: readonly ChildNode[]) => void;
|
|
22
|
+
/**
|
|
23
|
+
* Returns the function a `For` or a switch calls with each value after its
|
|
24
|
+
* first. While `anchor` is attached the value is applied at once, and replaces
|
|
25
|
+
* any value still waiting. While it is detached the value is kept, and the
|
|
26
|
+
* latest one is applied once the mount open now has inserted its nodes, and
|
|
27
|
+
* only if `anchor` is then attached: it is not when the `For` or switch was
|
|
28
|
+
* disposed in between.
|
|
29
|
+
*
|
|
30
|
+
* Mounted outside every {@link mountThenInsert} (a description mounted by hand),
|
|
31
|
+
* there is nothing to wait for: a value that arrives while `anchor` is detached
|
|
32
|
+
* is dropped.
|
|
33
|
+
*
|
|
34
|
+
* A value that arrives while `apply` runs (a row or a branch it mounts writes
|
|
35
|
+
* what chose it, #3141) is kept too, and the latest one is applied once `apply`
|
|
36
|
+
* returns, if `anchor` is still attached: applying it at once would act on rows
|
|
37
|
+
* or a branch the running call has not finished recording. A write that keeps
|
|
38
|
+
* coming back this way is an error after {@link maxReapply} passes, as synstate
|
|
39
|
+
* stops a nested update loop.
|
|
40
|
+
*
|
|
41
|
+
* Once the scope current when it was taken is disposed, nothing more is
|
|
42
|
+
* applied: `anchor` can still have a parent then, a disposed element that held
|
|
43
|
+
* the `For` or switch.
|
|
44
|
+
*/
|
|
45
|
+
export declare const applyWhenAttached: <V>(anchor: Node, apply: (value: V) => void) => ((value: V) => void);
|
|
46
|
+
//# sourceMappingURL=after-attach.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"after-attach.d.mts","sourceRoot":"","sources":["../../src/internal/after-attach.mts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,eAAe,GAAI,CAAC,EAAE,CAAC,EAAE,CAAC,SAC9B,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,OACjB,CAAC,UACE,CAAC,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,KAAK,IAAI,UAC7B,CAAC,KACR,CAuBF,CAAC;AAEF,4EAA4E;AAC5E,eAAO,MAAM,QAAQ,WACX,OAAO,SACR,SAAS,SAAS,EAAE,KAC1B,IAEF,CAAC;AAEF,mFAAmF;AACnF,eAAO,MAAM,YAAY,SACjB,SAAS,SACR,SAAS,SAAS,EAAE,KAC1B,IAEF,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,eAAO,MAAM,iBAAiB,GAAI,CAAC,UACzB,IAAI,SACL,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,KACxB,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAiGrB,CAAC"}
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
import { getCurrentScope, onScopeDispose } from 'synstate';
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
export const mountThenInsert = (mount, arg, insert, target) => {
|
|
19
|
+
mut_state.depth += 1;
|
|
20
|
+
mut_state.lastId += 1;
|
|
21
|
+
const { depth } = mut_state;
|
|
22
|
+
mut_state.ids[depth] = mut_state.lastId;
|
|
23
|
+
|
|
24
|
+
takeFrame(depth);
|
|
25
|
+
const nodes = runMount(mount, arg, depth);
|
|
26
|
+
const frame = takeFrame(depth);
|
|
27
|
+
insert(target, nodes);
|
|
28
|
+
if (frame !== undefined) {
|
|
29
|
+
runAll(frame);
|
|
30
|
+
}
|
|
31
|
+
return nodes;
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
export const appendTo = (parent, nodes) => {
|
|
35
|
+
parent.append(...nodes);
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
export const insertBefore = (next, nodes) => {
|
|
39
|
+
next.before(...nodes);
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
export const applyWhenAttached = (anchor, apply) => {
|
|
65
|
+
const { depth } = mut_state;
|
|
66
|
+
const id = mut_state.ids[depth];
|
|
67
|
+
const mut_pending = {
|
|
68
|
+
latest: undefined,
|
|
69
|
+
};
|
|
70
|
+
const mut_running = { current: false };
|
|
71
|
+
const mut_disposed = { current: false };
|
|
72
|
+
if (getCurrentScope() !== undefined) {
|
|
73
|
+
onScopeDispose(() => {
|
|
74
|
+
mut_disposed.current = true;
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
const attached = () => !mut_disposed.current && anchor.parentNode !== null;
|
|
78
|
+
|
|
79
|
+
const applyNow = (value) => {
|
|
80
|
+
mut_running.current = true;
|
|
81
|
+
try {
|
|
82
|
+
apply(value);
|
|
83
|
+
for (let mut_pass = 1;; mut_pass += 1) {
|
|
84
|
+
const { latest } = mut_pending;
|
|
85
|
+
mut_pending.latest = undefined;
|
|
86
|
+
if (latest === undefined || !attached()) {
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
if (mut_pass >= maxReapply) {
|
|
90
|
+
throw new Error(reapplyLoopMessage);
|
|
91
|
+
}
|
|
92
|
+
apply(latest.value);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
finally {
|
|
96
|
+
mut_running.current = false;
|
|
97
|
+
}
|
|
98
|
+
};
|
|
99
|
+
const flush = () => {
|
|
100
|
+
const { latest } = mut_pending;
|
|
101
|
+
mut_pending.latest = undefined;
|
|
102
|
+
if (latest !== undefined && attached()) {
|
|
103
|
+
applyNow(latest.value);
|
|
104
|
+
}
|
|
105
|
+
};
|
|
106
|
+
return (value) => {
|
|
107
|
+
if (mut_running.current) {
|
|
108
|
+
mut_pending.latest = { value };
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
if (attached()) {
|
|
112
|
+
mut_pending.latest = undefined;
|
|
113
|
+
applyNow(value);
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
const scheduled = mut_pending.latest !== undefined;
|
|
117
|
+
mut_pending.latest = { value };
|
|
118
|
+
if (scheduled) {
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
if (depth === 0 || mut_state.depth < depth || mut_state.ids[depth] !== id) {
|
|
122
|
+
|
|
123
|
+
flush();
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
const mut_frame = mut_state.frames[depth];
|
|
127
|
+
if (mut_frame === undefined) {
|
|
128
|
+
mut_state.frames[depth] = [flush];
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
mut_frame.push(flush);
|
|
132
|
+
}
|
|
133
|
+
};
|
|
134
|
+
};
|
|
135
|
+
|
|
136
|
+
const maxReapply = 100;
|
|
137
|
+
const reapplyLoopMessage = `synstate-dom: a For or a switch was updated more than ${maxReapply.toString()} times in a row by the rows or branch it was mounting: a row or branch keeps writing the value that chose it. Make the write stop (a condition, or a value that leads to rows or a branch that do not write).`;
|
|
138
|
+
const mut_state = { depth: 0, lastId: 0, ids: [0], frames: [] };
|
|
139
|
+
|
|
140
|
+
const takeFrame = (depth) => {
|
|
141
|
+
const frame = mut_state.frames[depth];
|
|
142
|
+
mut_state.frames[depth] = undefined;
|
|
143
|
+
return frame;
|
|
144
|
+
};
|
|
145
|
+
|
|
146
|
+
|
|
147
|
+
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
const runAll = (frame) => {
|
|
151
|
+
for (const [index, apply] of frame.entries()) {
|
|
152
|
+
try {
|
|
153
|
+
apply();
|
|
154
|
+
}
|
|
155
|
+
catch (error) {
|
|
156
|
+
runAll(frame.slice(index + 1));
|
|
157
|
+
throw error;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
};
|
|
161
|
+
|
|
162
|
+
const runMount = (mount, arg, depth) => {
|
|
163
|
+
try {
|
|
164
|
+
return mount(arg);
|
|
165
|
+
}
|
|
166
|
+
finally {
|
|
167
|
+
mut_state.depth = depth - 1;
|
|
168
|
+
}
|
|
169
|
+
};
|
|
170
|
+
//# sourceMappingURL=after-attach.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"after-attach.mjs","sourceRoot":"","sources":["../../src/internal/after-attach.mts"],"names":[],"mappings":"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"}
|
|
@@ -28,11 +28,22 @@ export const bindValue = (bindable, write) => {
|
|
|
28
28
|
write(bindable);
|
|
29
29
|
};
|
|
30
30
|
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
|
|
31
38
|
const bindObservable = (source, write) => {
|
|
32
39
|
if (source.isCompleted) {
|
|
33
40
|
write(source.getSnapshot().value);
|
|
34
41
|
return;
|
|
35
42
|
}
|
|
43
|
+
const { updateToken } = source;
|
|
36
44
|
subscribeInScope(source, write);
|
|
45
|
+
if (source.updateToken !== updateToken) {
|
|
46
|
+
write(source.getSnapshot().value);
|
|
47
|
+
}
|
|
37
48
|
};
|
|
38
49
|
//# sourceMappingURL=bind-value.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bind-value.mjs","sourceRoot":"","sources":["../../src/internal/bind-value.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAA8B,MAAM,UAAU,CAAC;AAEpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAEvC;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CACvB,QAAqB,EACrB,KAAyB,EACnB,EAAE;IACR,IAAI,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;QACrB,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;YAC3B,cAAc,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;gBAC/B,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;YACnB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,OAAO;IACT,CAAC;IAED,IAAI,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3B,cAAc,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAEhC,OAAO;IACT,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,CAAC;AAClB,CAAC,CAAC;AAEF
|
|
1
|
+
{"version":3,"file":"bind-value.mjs","sourceRoot":"","sources":["../../src/internal/bind-value.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAA8B,MAAM,UAAU,CAAC;AAEpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAEvC;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CACvB,QAAqB,EACrB,KAAyB,EACnB,EAAE;IACR,IAAI,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;QACrB,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;YAC3B,cAAc,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;gBAC/B,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;YACnB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,OAAO;IACT,CAAC;IAED,IAAI,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3B,cAAc,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAEhC,OAAO;IACT,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,CAAC;AAClB,CAAC,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,cAAc,GAAG,CACrB,MAAgC,EAChC,KAAyB,EACnB,EAAE;IACR,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;QACvB,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC;QAElC,OAAO;IACT,CAAC;IAED,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC;IAE/B,gBAAgB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAEhC,IAAI,MAAM,CAAC,WAAW,KAAK,WAAW,EAAE,CAAC;QACvC,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;AACH,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../../src/internal/index.mts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../../src/internal/index.mts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC"}
|
package/dist/internal/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../../src/internal/index.mts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../../src/internal/index.mts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC"}
|