@barefootjs/client 0.27.0 → 0.28.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/dist/runtime/claim-slots.d.ts +69 -4
- package/dist/runtime/claim-slots.d.ts.map +1 -1
- package/dist/runtime/component.d.ts +11 -1
- package/dist/runtime/component.d.ts.map +1 -1
- package/dist/runtime/index.d.ts +2 -1
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/index.js +322 -31
- package/dist/runtime/map-array-lazy.d.ts +164 -0
- package/dist/runtime/map-array-lazy.d.ts.map +1 -0
- package/dist/runtime/map-array.d.ts +35 -0
- package/dist/runtime/map-array.d.ts.map +1 -1
- package/dist/runtime/qsa-item.d.ts +7 -0
- package/dist/runtime/qsa-item.d.ts.map +1 -1
- package/dist/runtime/registry.d.ts.map +1 -1
- package/dist/runtime/standalone.js +310 -20
- package/package.json +2 -2
- package/src/runtime/claim-slots.ts +212 -14
- package/src/runtime/component.ts +116 -3
- package/src/runtime/index.ts +5 -1
- package/src/runtime/map-array-lazy.ts +470 -0
- package/src/runtime/map-array.ts +68 -11
- package/src/runtime/qsa-item.ts +9 -3
- package/src/runtime/registry.ts +5 -3
|
@@ -25,10 +25,18 @@
|
|
|
25
25
|
* Kind contracts (mirroring the mechanisms being superseded — this is the
|
|
26
26
|
* "one slot concept with an identity contract" of §4):
|
|
27
27
|
* - 'text': held ref is the Text node immediately after the anchor
|
|
28
|
-
* comment
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
28
|
+
* comment. The CLAIM is non-mutating: it adopts that node when SSR
|
|
29
|
+
* rendered the slot non-empty and otherwise holds the ANCHOR COMMENT
|
|
30
|
+
* itself as a stand-in for the not-yet-created node, deferring
|
|
31
|
+
* `document.createTextNode` to the first write that actually needs it
|
|
32
|
+
* (`materializeText` reads the insertion point off that comment). That
|
|
33
|
+
* one-field representation is deliberate — see `ClaimedTextSlot`. What
|
|
34
|
+
* lets
|
|
35
|
+
* `read` exist — a seed that only compares must be able to inspect a
|
|
36
|
+
* slot without leaving an empty Text node behind on every row
|
|
37
|
+
* (§9.3(1)). Writes are a `nodeValue` assignment, and once materialized
|
|
38
|
+
* the node's identity never changes — the guarantee effect closures and
|
|
39
|
+
* `mapArray`'s same-key path rely on.
|
|
32
40
|
* - 'markup': held ref is BOTH boundary comments (start = anchor, end =
|
|
33
41
|
* the matching `<!--/-->` found by a nesting-depth walk (any further
|
|
34
42
|
* `bf:`-prefixed comment along the way opens a nested region). A string
|
|
@@ -137,8 +145,49 @@ export type ClaimPlan = readonly SlotSpec[];
|
|
|
137
145
|
export interface ClaimedSlots {
|
|
138
146
|
write(id: string, value: unknown): void;
|
|
139
147
|
}
|
|
148
|
+
/**
|
|
149
|
+
* A claimed plan that can be read as well as written. Separate from
|
|
150
|
+
* {@link ClaimedSlots} because a door is allocated PER ROW: giving every
|
|
151
|
+
* claim a reader costs an extra closure on every row of a list, read or not
|
|
152
|
+
* (measured: ~40KB/1k rows). Only the loops that need read-compare-write
|
|
153
|
+
* seeding (`spec/slot-unification.md` §9.3(1)) ask for this shape. Both
|
|
154
|
+
* shapes sit on the SAME claim (`claimRefs`) — this is a second accessor
|
|
155
|
+
* bundle, never a second way to resolve a position (§2's claim-once rule).
|
|
156
|
+
*/
|
|
157
|
+
export interface ClaimedSlotsRW extends ClaimedSlots {
|
|
158
|
+
/**
|
|
159
|
+
* Current DOM text of a 'text' slot. `''` when the slot rendered empty,
|
|
160
|
+
* `null` when the slot cannot answer (not a 'text' slot, or it failed to
|
|
161
|
+
* claim); `null` MUST be treated by the caller as "differs, write it".
|
|
162
|
+
*/
|
|
163
|
+
read(id: string): string | null;
|
|
164
|
+
}
|
|
140
165
|
/** `lazySlots`'s per-write function — the same shape `ClaimedSlots.write` has. */
|
|
141
166
|
export type SlotWriter = (id: string, value: unknown) => void;
|
|
167
|
+
/**
|
|
168
|
+
* Pass a live Node through untouched; coerce anything else with `String`.
|
|
169
|
+
*
|
|
170
|
+
* The 'text' door's counterpart to {@link escapeTextOrNode}. A 'text' slot
|
|
171
|
+
* writes through `nodeValue`, which needs no escaping — routing it through
|
|
172
|
+
* `escapeText` would double-escape — but it DOES need the Node case
|
|
173
|
+
* separated out, because a Text node cannot host an element and
|
|
174
|
+
* `String(node)` destroys it: `[object HTMLDivElement]` in a browser, the
|
|
175
|
+
* serialized markup rendered as visible text under some DOM shims. Wrong
|
|
176
|
+
* either way, and silently so, which is why the split lives here rather
|
|
177
|
+
* than at each call site.
|
|
178
|
+
*
|
|
179
|
+
* A Node reaches a content slot whenever a child-position interpolation
|
|
180
|
+
* calls something that builds one — `props.renderRow(item)` handed an
|
|
181
|
+
* inline-JSX arrow, which the compiler lifts into a component whose call
|
|
182
|
+
* returns a real element. Whether such a call returns a string or a Node is
|
|
183
|
+
* not decidable from the expression's syntax (both are `CallExpression`), so
|
|
184
|
+
* the decision belongs at runtime, on the value.
|
|
185
|
+
*
|
|
186
|
+
* `String(value)`, not `String(value ?? '')`: a non-Node value must coerce
|
|
187
|
+
* exactly as the previous inline `String(...)` emission did. The nullish
|
|
188
|
+
* collapse stays where it already was, in {@link writeText}.
|
|
189
|
+
*/
|
|
190
|
+
export declare function textOrNode(value: unknown): string | Node;
|
|
142
191
|
/**
|
|
143
192
|
* Claim every slot in `plan` against `root` NOW. Escape hatch for callers
|
|
144
193
|
* that cannot honor the row-pristine invariant `lazySlots` relies on
|
|
@@ -154,4 +203,20 @@ export declare function claimSlots(root: Element, plan: ClaimPlan): ClaimedSlots
|
|
|
154
203
|
* pays for a claim at all.
|
|
155
204
|
*/
|
|
156
205
|
export declare function lazySlots(root: Element, plan: ClaimPlan): SlotWriter;
|
|
206
|
+
/**
|
|
207
|
+
* The read-capable twin of `lazySlots`: the same deferred claim, exposed as
|
|
208
|
+
* the full `{ write, read }` door instead of a bare write function.
|
|
209
|
+
*
|
|
210
|
+
* Two entry points rather than one door with a `.read` property because the
|
|
211
|
+
* door is allocated PER ROW: attaching a reader to every writer costs the
|
|
212
|
+
* extra closures on every row in the list, whether or not it ever reads
|
|
213
|
+
* (measured: +84KB/1k rows). Loops that need read-compare-write seeding
|
|
214
|
+
* (`spec/slot-unification.md` §9.3(1)) pay for the reader; every other loop
|
|
215
|
+
* keeps the single-closure writer. There is still exactly ONE claim
|
|
216
|
+
* mechanism underneath — every entry point resolves through `claimRefs`,
|
|
217
|
+
* and the first access of either kind resolves the whole plan while the row
|
|
218
|
+
* is pristine (§2's claim-once rule; reads never open a second resolution
|
|
219
|
+
* path).
|
|
220
|
+
*/
|
|
221
|
+
export declare function lazyClaimSlots(root: Element, plan: ClaimPlan): ClaimedSlotsRW;
|
|
157
222
|
//# sourceMappingURL=claim-slots.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claim-slots.d.ts","sourceRoot":"","sources":["../../src/runtime/claim-slots.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"claim-slots.d.ts","sourceRoot":"","sources":["../../src/runtime/claim-slots.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6GG;AAMH;;;;;;;;GAQG;AACH,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAA;IACvB,IAAI,EAAE,SAAS,MAAM,EAAE,CAAA;IACvB;;;;;;;;;;;;OAYG;IACH,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB;AAED,MAAM,MAAM,SAAS,GAAG,SAAS,QAAQ,EAAE,CAAA;AAgD3C;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAAA;CACxC;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,cAAe,SAAQ,YAAY;IAClD;;;;OAIG;IACH,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAA;CAChC;AAED,kFAAkF;AAClF,MAAM,MAAM,UAAU,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;AAwN7D;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAGxD;AA8HD;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,GAAG,YAAY,CAGvE;AAYD;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,GAAG,UAAU,CAMpE;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,GAAG,cAAc,CAO7E"}
|
|
@@ -6,6 +6,12 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import type { ComponentDef } from './types.ts';
|
|
8
8
|
export declare function setParentScopeId(id: string | null): void;
|
|
9
|
+
/** Where `mapArray` wants a fresh loop row connected before its `init` runs. */
|
|
10
|
+
export type RowMountPoint = {
|
|
11
|
+
container: Node;
|
|
12
|
+
anchor: Node | null;
|
|
13
|
+
};
|
|
14
|
+
export declare function setRowMountPoint(p: RowMountPoint | null): RowMountPoint | null;
|
|
9
15
|
/**
|
|
10
16
|
* Create a component instance with DOM element and initialized state.
|
|
11
17
|
*
|
|
@@ -19,6 +25,10 @@ export declare function setParentScopeId(id: string | null): void;
|
|
|
19
25
|
* @param name - Component name (e.g., 'TodoItem')
|
|
20
26
|
* @param props - Props to pass to the component
|
|
21
27
|
* @param key - Optional key for list reconciliation
|
|
28
|
+
* @param slot - Slot-relationship markers stamped as `bf-h` / `bf-m`
|
|
29
|
+
* @param mountAt - Placeholder this component replaces. When given, the
|
|
30
|
+
* element is connected to the document *before* `init` runs — see
|
|
31
|
+
* "Connect before init" below.
|
|
22
32
|
* @returns Created DOM element
|
|
23
33
|
*
|
|
24
34
|
* @example
|
|
@@ -43,7 +53,7 @@ export interface CreateComponentSlotInfo {
|
|
|
43
53
|
/** Slot id in the host (this child's `bf-m` value). */
|
|
44
54
|
mount: string;
|
|
45
55
|
}
|
|
46
|
-
export declare function createComponent(nameOrDef: string | ComponentDef, props?: Record<string, unknown>, key?: string | number, slot?: CreateComponentSlotInfo): HTMLElement;
|
|
56
|
+
export declare function createComponent(nameOrDef: string | ComponentDef, props?: Record<string, unknown>, key?: string | number, slot?: CreateComponentSlotInfo, mountAt?: Element | null): HTMLElement;
|
|
47
57
|
/**
|
|
48
58
|
* Render a child component's template to an HTML string.
|
|
49
59
|
* Used by compiler-generated template functions when a stateless component
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../../src/runtime/component.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AASH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAS9C,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAExD;AAED
|
|
1
|
+
{"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../../src/runtime/component.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AASH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAS9C,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAExD;AAED,gFAAgF;AAChF,MAAM,MAAM,aAAa,GAAG;IAAE,SAAS,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,IAAI,GAAG,IAAI,CAAA;CAAE,CAAA;AAsBpE,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,aAAa,GAAG,IAAI,GAAG,aAAa,GAAG,IAAI,CAI9E;AAQD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH;;;GAGG;AACH;;;;;GAKG;AACH,MAAM,WAAW,uBAAuB;IACtC,iDAAiD;IACjD,MAAM,EAAE,MAAM,CAAA;IACd,uDAAuD;IACvD,KAAK,EAAE,MAAM,CAAA;CACd;AAED,wBAAgB,eAAe,CAC7B,SAAS,EAAE,MAAM,GAAG,YAAY,EAChC,KAAK,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EACnC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,EACrB,IAAI,CAAC,EAAE,uBAAuB,EAC9B,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI,GACvB,WAAW,CAcb;AA2ND;;;;;;;;;;;;GAYG;AACH,wBAAgB,WAAW,CACzB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,EACrB,UAAU,CAAC,EAAE,MAAM,GAClB,MAAM,CAiDR;AA+DD;;;;;GAKG;AACH;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAOjD;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAGjD;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAG9D;AAID;;;;;;;;;;;;;GAaG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,IAAI,GAAG,gBAAgB,CAcjF"}
|
package/dist/runtime/index.d.ts
CHANGED
|
@@ -11,8 +11,9 @@ export { createPortal, isSSRPortal, findSiblingSlot, cleanupPortalPlaceholder, t
|
|
|
11
11
|
export { getLoopChildren, getLoopNodes } from './loop-markers.ts';
|
|
12
12
|
export { qsaItem, upsertChildItem } from './qsa-item.ts';
|
|
13
13
|
export { mapArray, mapArrayAnchored } from './map-array.ts';
|
|
14
|
+
export { mapArrayLazy, type LazyRowEntry, type LazyRowPlan } from './map-array-lazy.ts';
|
|
14
15
|
export { patchLeaf } from './patch-leaf.ts';
|
|
15
|
-
export { claimSlots, lazySlots, type SlotSpec, type ClaimPlan, type ClaimedSlots, type SlotWriter } from './claim-slots.ts';
|
|
16
|
+
export { claimSlots, lazySlots, lazyClaimSlots, textOrNode, type SlotSpec, type ClaimPlan, type ClaimedSlots, type ClaimedSlotsRW, type SlotWriter } from './claim-slots.ts';
|
|
16
17
|
export { registerTemplate, getTemplate, hasTemplate, type TemplateFn } from './template.ts';
|
|
17
18
|
export { createComponent, renderChild, parseHTML, escapeAttr, escapeText, escapeTextOrNode, } from './component.ts';
|
|
18
19
|
export { applyRestAttrs } from './apply-rest-attrs.ts';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"AAUA,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,sBAAsB,EACtB,UAAU,EACV,cAAc,EACd,UAAU,EACV,SAAS,EACT,OAAO,EACP,OAAO,EACP,KAAK,EACL,eAAe,EACf,SAAS,EACT,OAAO,EACP,gBAAgB,EAOhB,kBAAkB,EAClB,KAAK,gBAAgB,EACrB,sBAAsB,EACtB,KAAK,QAAQ,EACb,KAAK,MAAM,EACX,KAAK,IAAI,EACT,KAAK,SAAS,EACd,KAAK,QAAQ,EACb,KAAK,iBAAiB,EACtB,KAAK,cAAc,GACpB,MAAM,6BAA6B,CAAA;AAEpC,OAAO,EACL,mBAAmB,EACnB,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,KAAK,aAAa,GACnB,MAAM,uBAAuB,CAAA;AAE9B,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAAE,MAAM,EAAE,KAAK,UAAU,EAAE,MAAM,YAAY,CAAA;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AACrC,OAAO,EAAE,SAAS,EAAE,KAAK,WAAW,EAAE,KAAK,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACpF,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAI9C,OAAO,EACL,aAAa,EACb,UAAU,EACV,cAAc,EACd,eAAe,EACf,KAAK,OAAO,GACb,MAAM,cAAc,CAAA;AAGrB,OAAO,EACL,YAAY,EACZ,WAAW,EACX,eAAe,EACf,wBAAwB,EACxB,KAAK,MAAM,EACX,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,cAAc,GACpB,MAAM,aAAa,CAAA;AAIpB,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACjE,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AACxD,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"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"}
|