@alloy-js/core 0.22.0-dev.1 → 0.22.0-dev.4

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.
Files changed (65) hide show
  1. package/dist/src/components/Block.d.ts.map +1 -1
  2. package/dist/src/components/Block.js +24 -7
  3. package/dist/src/components/Block.js.map +1 -1
  4. package/dist/src/components/Indent.d.ts.map +1 -1
  5. package/dist/src/components/Indent.js +2 -1
  6. package/dist/src/components/Indent.js.map +1 -1
  7. package/dist/src/components/Prose.d.ts.map +1 -1
  8. package/dist/src/components/Prose.js +2 -1
  9. package/dist/src/components/Prose.js.map +1 -1
  10. package/dist/src/content-slot.d.ts +51 -0
  11. package/dist/src/content-slot.d.ts.map +1 -0
  12. package/dist/src/content-slot.js +69 -0
  13. package/dist/src/content-slot.js.map +1 -0
  14. package/dist/src/content-slot.test.d.ts +2 -0
  15. package/dist/src/content-slot.test.d.ts.map +1 -0
  16. package/dist/src/content-slot.test.js +57 -0
  17. package/dist/src/content-slot.test.js.map +1 -0
  18. package/dist/src/index.d.ts +1 -0
  19. package/dist/src/index.d.ts.map +1 -1
  20. package/dist/src/index.js +1 -0
  21. package/dist/src/index.js.map +1 -1
  22. package/dist/src/reactivity.d.ts +15 -1
  23. package/dist/src/reactivity.d.ts.map +1 -1
  24. package/dist/src/reactivity.js +20 -8
  25. package/dist/src/reactivity.js.map +1 -1
  26. package/dist/src/render.d.ts +24 -0
  27. package/dist/src/render.d.ts.map +1 -1
  28. package/dist/src/render.js +98 -2
  29. package/dist/src/render.js.map +1 -1
  30. package/dist/src/symbols/decl.d.ts +8 -0
  31. package/dist/src/symbols/decl.d.ts.map +1 -0
  32. package/dist/src/symbols/decl.js +22 -0
  33. package/dist/src/symbols/decl.js.map +1 -0
  34. package/dist/src/symbols/index.d.ts +1 -0
  35. package/dist/src/symbols/index.d.ts.map +1 -1
  36. package/dist/src/symbols/index.js +1 -0
  37. package/dist/src/symbols/index.js.map +1 -1
  38. package/dist/src/utils.d.ts.map +1 -1
  39. package/dist/src/utils.js +212 -15
  40. package/dist/src/utils.js.map +1 -1
  41. package/dist/test/components/block.test.d.ts.map +1 -1
  42. package/dist/test/components/block.test.js +18 -1
  43. package/dist/test/components/block.test.js.map +1 -1
  44. package/dist/test/components/list.test.d.ts.map +1 -1
  45. package/dist/test/components/list.test.js +80 -1
  46. package/dist/test/components/list.test.js.map +1 -1
  47. package/dist/test/control-flow/for.test.js +32 -2
  48. package/dist/test/control-flow/for.test.js.map +1 -1
  49. package/dist/tsconfig.tsbuildinfo +1 -1
  50. package/package.json +1 -1
  51. package/src/components/Block.tsx +18 -6
  52. package/src/components/Indent.tsx +4 -2
  53. package/src/components/Prose.tsx +2 -1
  54. package/src/content-slot.test.tsx +65 -0
  55. package/src/content-slot.tsx +91 -0
  56. package/src/index.ts +1 -0
  57. package/src/reactivity.ts +38 -5
  58. package/src/render.ts +112 -3
  59. package/src/symbols/decl.ts +25 -0
  60. package/src/symbols/index.ts +1 -0
  61. package/src/utils.tsx +240 -16
  62. package/temp/api.json +550 -4
  63. package/test/components/block.test.tsx +21 -1
  64. package/test/components/list.test.tsx +76 -1
  65. package/test/control-flow/for.test.tsx +43 -2
@@ -1,4 +1,4 @@
1
- import { isRef } from "@vue/reactivity";
1
+ import { isRef, ref } from "@vue/reactivity";
2
2
  import { doc } from "prettier";
3
3
  import prettier from "prettier/doc.js";
4
4
  import { useContext } from "./context.js";
@@ -126,16 +126,43 @@ export function createRenderTreeHook(subtree, hooks) {
126
126
  export function isPrintHook(type) {
127
127
  return typeof type === "object" && type !== null && printHookTag in type;
128
128
  }
129
+ /**
130
+ * Render a component tree to source directories and files. Will ensure that
131
+ * all non-async scheduled jobs are completed before returning. If async jobs
132
+ * are found, an error will be thrown. Use `renderAsync` when asynchronous
133
+ * jobs are expected.
134
+ */
129
135
  export function render(children, options) {
130
136
  const tree = renderTree(children);
131
137
  flushJobs();
132
138
  return sourceFilesForTree(tree, options);
133
139
  }
140
+
141
+ /**
142
+ * Render a component tree to source directories and files. Will ensure that all
143
+ * scheduled jobs are completed before returning.
144
+ */
134
145
  export async function renderAsync(children, options) {
135
146
  const tree = renderTree(children);
147
+ return sourceFilesForTreeAsync(tree, options);
148
+ }
149
+
150
+ /**
151
+ * Convert a rendered text tree to source directories and files. Will ensure that
152
+ * all scheduled jobs are completed, including async ones.
153
+ */
154
+ export async function sourceFilesForTreeAsync(tree, options) {
155
+ // if we await here, we ensure all reactive updates are flushed.
156
+ // sourceFilesForTree will flush again, but won't find anything, because tree
157
+ // printing won't schedule anything.
136
158
  await flushJobsAsync();
137
159
  return sourceFilesForTree(tree, options);
138
160
  }
161
+
162
+ /**
163
+ * Convert a rendered text tree to source directories and files. Will ensure
164
+ * that all scheduled jobs are completed before returning.
165
+ */
139
166
  export function sourceFilesForTree(tree, options) {
140
167
  let rootDirectory = undefined;
141
168
  collectSourceFiles(undefined, tree);
@@ -229,10 +256,66 @@ function renderWorker(node, children) {
229
256
  appendChild(node, children);
230
257
  }
231
258
  }
259
+ function contentAdded() {
260
+ const context = getContext();
261
+ context.childrenWithContent++;
262
+ }
263
+ export function notifyContentState() {
264
+ untrack(() => {
265
+ const startContext = getContext();
266
+ if (startContext.childrenWithContent === 0) {
267
+ if (startContext.isEmpty.value === true) {
268
+ // it was already empty, no work to do.
269
+ return;
270
+ }
271
+ if (startContext.isEmpty) {
272
+ startContext.isEmpty.value = true;
273
+ }
274
+
275
+ // otherwise we need to decrement the content counts up the tree.
276
+ let current = startContext.owner;
277
+ while (current) {
278
+ if (current.childrenWithContent === 0) {
279
+ break;
280
+ }
281
+ current.childrenWithContent--;
282
+ if (current.isEmpty) {
283
+ current.isEmpty.value = true;
284
+ }
285
+ current = current.owner;
286
+ }
287
+ } else {
288
+ if (startContext.isEmpty.value === false) {
289
+ // it was already non-empty, no work to do.
290
+ return;
291
+ }
292
+ if (startContext.isEmpty && startContext.isEmpty.value) {
293
+ startContext.isEmpty.value = false;
294
+ }
295
+
296
+ // otherwise we need to increment the content counts up the tree.
297
+ let current = startContext.owner;
298
+ while (current) {
299
+ current.childrenWithContent++;
300
+ if (current.childrenWithContent > 1) {
301
+ // This isn't the first content so we have no work to do
302
+ break;
303
+ }
304
+ if (current.isEmpty && current.isEmpty.value) {
305
+ current.isEmpty.value = false;
306
+ }
307
+ current = current.owner;
308
+ }
309
+ }
310
+ });
311
+ }
232
312
  function appendChild(node, rawChild) {
233
313
  trace(TracePhase.render.appendChild, () => debugPrintChild(rawChild));
234
314
  const child = normalizeChild(rawChild);
235
315
  if (typeof child === "string") {
316
+ if (child !== "") {
317
+ contentAdded();
318
+ }
236
319
  node.push(child);
237
320
  } else {
238
321
  const cache = getElementCache();
@@ -248,6 +331,7 @@ function appendChild(node, rawChild) {
248
331
  renderWorker(newNode, children);
249
332
  node.push(newNode);
250
333
  cache.set(child, newNode);
334
+ notifyContentState();
251
335
  });
252
336
  } else if (isIntrinsicElement(child)) {
253
337
  trace(TracePhase.render.appendChild, () => "IntrinsicElement: " + debugPrintChild(child));
@@ -345,6 +429,8 @@ function appendChild(node, rawChild) {
345
429
  effect(() => {
346
430
  trace(TracePhase.render.appendChild, () => "Component: " + debugPrintChild(child));
347
431
  const context = getContext();
432
+ context.childrenWithContent = 0;
433
+ context.isEmpty ??= ref(true);
348
434
  if (context) context.componentOwner = child;
349
435
  const componentRoot = [];
350
436
  pushStack(child.component, child.props);
@@ -352,7 +438,8 @@ function appendChild(node, rawChild) {
352
438
  popStack();
353
439
  node.push(componentRoot);
354
440
  cache.set(child, componentRoot);
355
- trace(TracePhase.render.appendChild, () => "Component done: " + debugPrintChild(child));
441
+ notifyContentState();
442
+ trace(TracePhase.render.appendChild, () => "Component done: " + debugPrintChild(child) + ", empty: " + context.isEmpty.value);
356
443
  });
357
444
  } else if (typeof child === "function") {
358
445
  trace(TracePhase.render.appendChild, () => "Memo: " + child.toString());
@@ -363,10 +450,14 @@ function appendChild(node, rawChild) {
363
450
  while (typeof res === "function" && !isComponentCreator(res)) {
364
451
  res = res();
365
452
  }
453
+ const context = getContext();
454
+ context.childrenWithContent = 0;
455
+ context.isEmpty ??= ref(true);
366
456
  const newNodes = [];
367
457
  renderWorker(newNodes, res);
368
458
  node[index] = newNodes;
369
459
  cache.set(child, newNodes);
460
+ notifyContentState();
370
461
  return newNodes;
371
462
  });
372
463
  } else {
@@ -432,6 +523,11 @@ const defaultPrintTreeOptions = {
432
523
  printWidth: 80,
433
524
  tabWidth: 2
434
525
  };
526
+
527
+ /**
528
+ * Convert a rendered text tree to a string. Will ensure that the scheduler is
529
+ * empty before printing.
530
+ */
435
531
  export function printTree(tree, options) {
436
532
  options = {
437
533
  ...defaultPrintTreeOptions,
@@ -1 +1 @@
1
- {"version":3,"names":["isRef","doc","prettier","useContext","SourceFileContext","shouldDebug","effect","getContext","getElementCache","isCustomContext","root","untrack","isRefkeyable","toRefkey","isComponentCreator","isRenderableObject","RENDERABLE","isIntrinsicElement","flushJobs","flushJobsAsync","trace","TracePhase","builders","align","breakParent","dedent","dedentToRoot","fill","group","hardline","indent","indentIfBreak","line","lineSuffix","lineSuffixBoundary","literalline","markAsRoot","softline","ifBreak","nodesToContext","WeakMap","getContextForRenderNode","node","get","printHookTag","Symbol","createRenderTreeHook","subtree","hooks","isPrintHook","type","render","children","options","tree","renderTree","sourceFilesForTree","renderAsync","rootDirectory","undefined","collectSourceFiles","Error","currentDirectory","Array","isArray","context","recurse","meta","directory","kind","path","contents","push","sourceFile","filetype","printTree","printWidth","printOptions","tabWidth","useTabs","insertFinalNewLine","copyFile","sourcePath","cwd","child","rootElem","renderWorker","e","printRenderStack","worker","dumpChildren","set","flat","Infinity","appendChild","rawChild","debugPrintChild","normalizeChild","cache","has","useCustomContext","newNode","formatHookWithChildren","command","print","props","formatHook","name","groupId","negate","id","shouldBreak","width","string","flatContents","componentOwner","componentRoot","pushStack","component","popStack","toString","index","length","renderEffect","res","newNodes","map","value","refkey","sfContext","reference","bind","String","join","JSON","stringify","defaultPrintTreeOptions","Object","fromEntries","entries","filter","_","v","d","printTreeWorker","result","printer","printDocToString","formatted","endsWith","normalizedNode","split","flatMap","array","renderStack","pop","console","error","i","inspectProps","key","safeValue"],"sources":["../../src/render.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["isRef","ref","doc","prettier","useContext","SourceFileContext","shouldDebug","effect","getContext","getElementCache","isCustomContext","root","untrack","isRefkeyable","toRefkey","isComponentCreator","isRenderableObject","RENDERABLE","isIntrinsicElement","flushJobs","flushJobsAsync","trace","TracePhase","builders","align","breakParent","dedent","dedentToRoot","fill","group","hardline","indent","indentIfBreak","line","lineSuffix","lineSuffixBoundary","literalline","markAsRoot","softline","ifBreak","nodesToContext","WeakMap","getContextForRenderNode","node","get","printHookTag","Symbol","createRenderTreeHook","subtree","hooks","isPrintHook","type","render","children","options","tree","renderTree","sourceFilesForTree","renderAsync","sourceFilesForTreeAsync","rootDirectory","undefined","collectSourceFiles","Error","currentDirectory","Array","isArray","context","recurse","meta","directory","kind","path","contents","push","sourceFile","filetype","printTree","printWidth","printOptions","tabWidth","useTabs","insertFinalNewLine","copyFile","sourcePath","cwd","child","rootElem","renderWorker","e","printRenderStack","worker","dumpChildren","set","flat","Infinity","appendChild","contentAdded","childrenWithContent","notifyContentState","startContext","isEmpty","value","current","owner","rawChild","debugPrintChild","normalizeChild","cache","has","useCustomContext","newNode","formatHookWithChildren","command","print","props","formatHook","name","groupId","negate","id","shouldBreak","width","string","flatContents","componentOwner","componentRoot","pushStack","component","popStack","toString","index","length","renderEffect","res","newNodes","map","refkey","sfContext","reference","bind","String","join","JSON","stringify","defaultPrintTreeOptions","Object","fromEntries","entries","filter","_","v","d","printTreeWorker","result","printer","printDocToString","formatted","endsWith","normalizedNode","split","flatMap","array","renderStack","pop","console","error","i","inspectProps","key","safeValue"],"sources":["../../src/render.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,8 @@
1
+ import { Namekey } from "../refkey.js";
2
+ /**
3
+ * Create a declaration in the current scope with the given namekey. Only works
4
+ * with basic scopes. Import `decl` from a specific language library for
5
+ * declaring language-specific symbols.
6
+ */
7
+ export declare function decl(namekey: Namekey): import("../runtime/component.js").ComponentCreator<{}>;
8
+ //# sourceMappingURL=decl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decl.d.ts","sourceRoot":"","sources":["../../../src/symbols/decl.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAKvC;;;;GAIG;AACH,wBAAgB,IAAI,CAAC,OAAO,EAAE,OAAO,0DAYpC"}
@@ -0,0 +1,22 @@
1
+ import { toRef } from "@vue/reactivity";
2
+ import { useScope } from "../context/scope.js";
3
+ import { createComponent } from "../runtime/component.js";
4
+ import { BasicScope } from "./basic-scope.js";
5
+ import { BasicSymbol } from "./basic-symbol.js";
6
+
7
+ /**
8
+ * Create a declaration in the current scope with the given namekey. Only works
9
+ * with basic scopes. Import `decl` from a specific language library for
10
+ * declaring language-specific symbols.
11
+ */
12
+ export function decl(namekey) {
13
+ return createComponent(() => {
14
+ const currentScope = useScope();
15
+ if (!(currentScope instanceof BasicScope)) {
16
+ throw new Error(`Cannot declare symbol in non-basic scope: ${currentScope.constructor.name}. Use a language-specific 'decl' function instead.`);
17
+ }
18
+ const symbol = new BasicSymbol(namekey, currentScope.symbols);
19
+ return toRef(symbol, "name");
20
+ }, {});
21
+ }
22
+ //# sourceMappingURL=decl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["toRef","useScope","createComponent","BasicScope","BasicSymbol","decl","namekey","currentScope","Error","constructor","name","symbol","symbols"],"sources":["../../../src/symbols/decl.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,KAAK,QAAQ,iBAAiB;AACvC,SAASC,QAAQ,QAAQ,qBAAqB;AAE9C,SAASC,eAAe,QAAQ,yBAAyB;AACzD,SAASC,UAAU,QAAQ,kBAAkB;AAC7C,SAASC,WAAW,QAAQ,mBAAmB;;AAE/C;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,IAAIA,CAACC,OAAgB,EAAE;EACrC,OAAOJ,eAAe,CAAC,MAAM;IAC3B,MAAMK,YAAY,GAAGN,QAAQ,CAAC,CAAC;IAC/B,IAAI,EAAEM,YAAY,YAAYJ,UAAU,CAAC,EAAE;MACzC,MAAM,IAAIK,KAAK,CACb,6CAA6CD,YAAY,CAACE,WAAW,CAACC,IAAI,oDAC5E,CAAC;IACH;IACA,MAAMC,MAAM,GAAG,IAAIP,WAAW,CAACE,OAAO,EAAEC,YAAY,CAACK,OAAO,CAAC;IAE7D,OAAOZ,KAAK,CAACW,MAAM,EAAE,MAAM,CAAC;EAC9B,CAAC,EAAE,CAAC,CAAC,CAAC;AACR","ignoreList":[]}
@@ -1,5 +1,6 @@
1
1
  export * from "./basic-scope.js";
2
2
  export * from "./basic-symbol.js";
3
+ export * from "./decl.js";
3
4
  export * from "./output-scope.js";
4
5
  export * from "./output-space.js";
5
6
  export * from "./output-symbol.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/symbols/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/symbols/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,WAAW,CAAC;AAC1B,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC"}
@@ -1,5 +1,6 @@
1
1
  export * from "./basic-scope.js";
2
2
  export * from "./basic-symbol.js";
3
+ export * from "./decl.js";
3
4
  export * from "./output-scope.js";
4
5
  export * from "./output-space.js";
5
6
  export * from "./output-symbol.js";
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["../../../src/symbols/index.ts"],"sourcesContent":[null],"mappings":"AAAA,cAAc,kBAAkB;AAChC,cAAc,mBAAmB;AACjC,cAAc,mBAAmB;AACjC,cAAc,mBAAmB;AACjC,cAAc,oBAAoB;AAClC,cAAc,kBAAkB;AAChC,cAAc,kBAAkB;AAChC,cAAc,mBAAmB","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":["../../../src/symbols/index.ts"],"sourcesContent":[null],"mappings":"AAAA,cAAc,kBAAkB;AAChC,cAAc,mBAAmB;AACjC,cAAc,WAAW;AACzB,cAAc,mBAAmB;AACjC,cAAc,mBAAmB;AACjC,cAAc,oBAAoB;AAClC,cAAc,kBAAkB;AAChC,cAAc,kBAAkB;AAChC,cAAc,mBAAmB","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.tsx"],"names":[],"mappings":"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"}
package/dist/src/utils.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { memo as _$memo, createIntrinsic as _$createIntrinsic } from "@alloy-js/core/jsx-runtime";
2
- import { toRaw } from "@vue/reactivity";
3
- import { createCustomContext, memo, onCleanup, root, untrack } from "./reactivity.js";
2
+ import { ref, toRaw } from "@vue/reactivity";
3
+ import { createCustomContext, effect, getContext, memo, onCleanup, root, untrack } from "./reactivity.js";
4
4
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
5
5
 
6
6
  import { isComponentCreator } from "./runtime/component.js";
@@ -45,17 +45,152 @@ const defaultJoinOptions = {
45
45
  */
46
46
 
47
47
  export function mapJoin(src, cb, rawOptions = {}) {
48
+ /**
49
+ * Strategy overview:
50
+ * - Initial render: collect a stable array of mapper outputs, cache
51
+ * per-index slot metadata, and create joiner `Ref`s for the gaps between
52
+ * items so the rendered list can be mutated without recreating siblings.
53
+ * - List mutations: diff the incoming iterable against slot metadata, reuse
54
+ * entries with matching keys, recycle disposers past the change point, and
55
+ * prune caches while recalculating first/last non-empty indices so we only
56
+ * edit joiners that are affected by the change.
57
+ * - Content transitions: each child renders inside a custom context that
58
+ * exposes an `isEmpty` flag; when a child gains or loses content we update
59
+ * neighbor joiner refs so separators appear and disappear reactively
60
+ * without re-running the mapper.
61
+ */
48
62
  const options = {
49
63
  ...defaultJoinOptions,
50
64
  ...rawOptions
51
65
  };
52
66
  const ender = options.ender === true ? options.joiner : options.ender || undefined;
53
- const currentItems = [];
54
- const disposables = [];
67
+ const itemSlots = [];
68
+ function getOrCreateSlot(index) {
69
+ let slot = itemSlots[index];
70
+ if (!slot) {
71
+ slot = {
72
+ isEmpty: ref(true)
73
+ };
74
+ itemSlots[index] = slot;
75
+ }
76
+ return slot;
77
+ }
78
+ const firstNonEmptyIndex = ref(-1);
79
+ const lastNonEmptyIndex = ref(-1);
55
80
  const mapped = [];
81
+ let enderMemo;
82
+
83
+ // Creates a ref placeholder that stores the joiner node for a boundary.
84
+ function createJoinerRef() {
85
+ return ref(undefined);
86
+ }
87
+
88
+ // Makes sure we have a joiner ref at the requested boundary index.
89
+ function ensureJoinerSlot(index) {
90
+ if (index === 0 || options.joiner === undefined) {
91
+ return;
92
+ }
93
+ const slot = getOrCreateSlot(index);
94
+ slot.joiner ??= createJoinerRef();
95
+ mapped[index * 2 - 1] = slot.joiner;
96
+ }
97
+
98
+ // Sets the joiner ref based on whether neighboring children have content.
99
+ function updateJoinerForIndex(index) {
100
+ if (index === 0 || options.joiner === undefined) {
101
+ return;
102
+ }
103
+ const slot = itemSlots[index];
104
+ const joinerRef = slot?.joiner;
105
+ if (!joinerRef) {
106
+ return;
107
+ }
108
+ if (index >= itemSlots.length) {
109
+ if (joinerRef.value !== undefined) {
110
+ joinerRef.value = undefined;
111
+ }
112
+ return;
113
+ }
114
+ const previousNonEmpty = findPrevNonEmpty(index - 1);
115
+ const rightSlot = itemSlots[index];
116
+ const shouldShow = previousNonEmpty !== -1 && rightSlot !== undefined && rightSlot.isEmpty.value === false;
117
+ const newValue = shouldShow ? options.joiner : undefined;
118
+ if (joinerRef.value !== newValue) {
119
+ joinerRef.value = newValue;
120
+ }
121
+ }
122
+
123
+ // Finds the next child that is not empty starting at or after `from`.
124
+ function findNextNonEmpty(from) {
125
+ for (let i = Math.max(from, 0); i < itemSlots.length; i++) {
126
+ const slot = itemSlots[i];
127
+ if (slot && slot.isEmpty.value === false) {
128
+ return i;
129
+ }
130
+ }
131
+ return -1;
132
+ }
133
+
134
+ // Finds the previous child that is not empty before or at `from`.
135
+ function findPrevNonEmpty(from) {
136
+ for (let i = Math.min(from, itemSlots.length - 1); i >= 0; i--) {
137
+ const slot = itemSlots[i];
138
+ if (slot && slot.isEmpty.value === false) {
139
+ return i;
140
+ }
141
+ }
142
+ return -1;
143
+ }
144
+
145
+ // Recomputes the cached first and last non-empty indices after changes.
146
+ function recalculateNonEmptyBounds() {
147
+ const first = findNextNonEmpty(0);
148
+ firstNonEmptyIndex.value = first;
149
+ lastNonEmptyIndex.value = first === -1 ? -1 : findPrevNonEmpty(itemSlots.length - 1);
150
+ refreshJoiners();
151
+ }
152
+
153
+ // Syncs all joiner refs after the structural shape of the list updates.
154
+ function refreshJoiners() {
155
+ if (options.joiner === undefined) {
156
+ return;
157
+ }
158
+ for (let i = 1; i < itemSlots.length; i++) {
159
+ const slot = itemSlots[i];
160
+ if (slot?.joiner) {
161
+ updateJoinerForIndex(i);
162
+ }
163
+ }
164
+ }
165
+
166
+ // Applies empty-state bookkeeping for an item and updates neighbor joiners.
167
+ function applyEmptyStateChange(index, isEmpty, wasEmpty) {
168
+ if (wasEmpty === isEmpty) {
169
+ return;
170
+ }
171
+ if (isEmpty) {
172
+ if (firstNonEmptyIndex.value === index) {
173
+ firstNonEmptyIndex.value = findNextNonEmpty(index + 1);
174
+ }
175
+ if (lastNonEmptyIndex.value === index) {
176
+ lastNonEmptyIndex.value = findPrevNonEmpty(index - 1);
177
+ }
178
+ } else {
179
+ if (firstNonEmptyIndex.value === -1 || index < firstNonEmptyIndex.value) {
180
+ firstNonEmptyIndex.value = index;
181
+ }
182
+ if (index > lastNonEmptyIndex.value) {
183
+ lastNonEmptyIndex.value = index;
184
+ }
185
+ }
186
+ updateJoinerForIndex(index);
187
+ updateJoinerForIndex(index + 1);
188
+ }
56
189
  let previousItemsLen = 0;
57
190
  onCleanup(() => {
58
- for (const d of disposables) d();
191
+ for (const slot of itemSlots) {
192
+ slot.disposer?.();
193
+ }
59
194
  });
60
195
  return () => {
61
196
  const itemsSource = src();
@@ -65,6 +200,10 @@ export function mapJoin(src, cb, rawOptions = {}) {
65
200
  if (options.skipFalsy) {
66
201
  items = items.filter(item => item !== null && item !== undefined && typeof item !== "boolean");
67
202
  }
203
+ const context = getContext();
204
+ if (context) {
205
+ context.isEmpty ??= ref(true);
206
+ }
68
207
  // this is important to access here in reactive context so we are
69
208
  // notified of new items from reactives.
70
209
  const itemsLen = items.length;
@@ -72,57 +211,115 @@ export function mapJoin(src, cb, rawOptions = {}) {
72
211
  const mapper = getMapperFunction(itemsSourceRaw);
73
212
  return untrack(() => {
74
213
  let startIndex = 0;
75
- for (; startIndex < itemsLen && startIndex < currentItems.length; startIndex++) {
76
- if (!compare(items[startIndex], currentItems[startIndex])) {
214
+ for (; startIndex < itemsLen && startIndex < itemSlots.length; startIndex++) {
215
+ const slot = itemSlots[startIndex];
216
+ if (!slot || !compare(items[startIndex], slot.item)) {
77
217
  break;
78
218
  }
79
219
  }
80
220
  if (startIndex > 0 && startIndex < itemsLen) {
81
221
  // need to update the previous joiner (might be ender or absent)
82
- mapped[startIndex * 2 - 1] = options.joiner;
222
+ ensureJoinerSlot(startIndex);
83
223
  }
84
224
  for (; startIndex < itemsLen; startIndex++) {
85
- currentItems[startIndex] = items[startIndex];
86
- if (disposables[startIndex]) {
87
- disposables[startIndex]();
225
+ const slot = getOrCreateSlot(startIndex);
226
+ slot.item = items[startIndex];
227
+ const emptyFlag = slot.isEmpty;
228
+ if (slot.disposer) {
229
+ if (emptyFlag.value === false) {
230
+ if (context) {
231
+ context.childrenWithContent--;
232
+ }
233
+ emptyFlag.value = true;
234
+ applyEmptyStateChange(startIndex, true, false);
235
+ }
236
+ slot.disposer();
88
237
  }
89
238
  const cleanupIndex = startIndex;
90
239
  mapped[startIndex * 2] = createCustomContext(cb => {
91
240
  return root(disposer => {
92
- disposables[cleanupIndex] = disposer;
241
+ const nestedContext = getContext();
242
+ const isEmptyFlag = nestedContext.isEmpty;
243
+ slot.disposer = disposer;
93
244
  disposer();
245
+ effect(prev => {
246
+ const isEmpty = isEmptyFlag.value;
247
+ return untrack(() => {
248
+ if (slot.isEmpty.value !== isEmpty) {
249
+ slot.isEmpty.value = isEmpty;
250
+ }
251
+ const wasEmpty = prev ?? true;
252
+ applyEmptyStateChange(cleanupIndex, isEmpty, wasEmpty);
253
+ return isEmpty;
254
+ });
255
+ });
94
256
  cb(mapper(items[cleanupIndex], cleanupIndex));
95
257
  });
96
258
  });
97
- mapped[startIndex * 2 + 1] = startIndex < items.length - 1 ? options.joiner : ender;
259
+ ensureJoinerSlot(startIndex);
98
260
  }
99
261
  mapped.length = startIndex * 2;
100
- mapped[mapped.length - 1] = ender;
262
+ if (mapped.length > 0) {
263
+ if (ender !== undefined) {
264
+ enderMemo ??= memo(() => lastNonEmptyIndex.value === -1 ? undefined : ender);
265
+ mapped[mapped.length - 1] = enderMemo;
266
+ } else {
267
+ mapped[mapped.length - 1] = undefined;
268
+ }
269
+ }
101
270
  for (; startIndex < previousItemsLen; startIndex++) {
102
- disposables[startIndex]?.();
271
+ const slot = itemSlots[startIndex];
272
+ if (!slot) {
273
+ continue;
274
+ }
275
+ slot.disposer?.();
276
+ if (slot.isEmpty.value === false) {
277
+ if (context) {
278
+ context.childrenWithContent--;
279
+ }
280
+ slot.isEmpty.value = true;
281
+ applyEmptyStateChange(startIndex, true, false);
282
+ }
283
+ }
284
+ if (previousItemsLen !== itemsLen) {
285
+ itemSlots.length = itemsLen;
286
+ recalculateNonEmptyBounds();
103
287
  }
104
288
  previousItemsLen = itemsLen;
105
289
  return mapped;
106
290
  });
107
291
  };
292
+
293
+ // Chooses the equality function based on the collection type in use.
108
294
  function getCompareFunction(itemsSource) {
109
295
  return Array.isArray(itemsSource) || isIterable(itemsSource) ? compareArray : compareMap;
110
296
  }
297
+
298
+ // Selects the mapper signature to match the collection type in use.
111
299
  function getMapperFunction(itemsSource) {
112
300
  return Array.isArray(itemsSource) || itemsSource instanceof Set || isIterable(itemsSource) ? mapArray : mapMap;
113
301
  }
302
+ // Strict equality check for array-like collections.
114
303
  function compareArray(elem1, elem2) {
115
304
  return elem1 === elem2;
116
305
  }
306
+
307
+ // Equality check for map entries that includes key and value.
117
308
  function compareMap(record1, record2) {
118
309
  return record1[0] === record2[0] && record1[1] === record2[1];
119
310
  }
311
+
312
+ // Invokes the user mapper for array-like collections.
120
313
  function mapArray(item, index) {
121
314
  return cb(item, index);
122
315
  }
316
+
317
+ // Invokes the user mapper for map collections.
123
318
  function mapMap(item, index) {
124
319
  return cb(item[0], item[1], index);
125
320
  }
321
+
322
+ // Runtime type guard for iterables returned from custom sources.
126
323
  function isIterable(x) {
127
324
  return typeof x.next === "function";
128
325
  }