@nordcraft/runtime 1.0.85 → 1.0.87

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.
@@ -126,15 +126,18 @@ export function createNode({ id, dataSignal, path, ctx, namespace, parentElement
126
126
  return Object.entries(list ?? {});
127
127
  });
128
128
  repeatSignal.subscribe((list) => {
129
- const newRepeatItems = new Map();
130
- for (let i = 0; i < list.length; i++) {
131
- const [Key, Item] = list[i];
129
+ const data = dataSignal.get();
130
+ const parentListItem = data.ListItem;
131
+ const parentListItemInfo = parentListItem
132
+ ? { Parent: parentListItem }
133
+ : {};
134
+ // Pre-calculate all keys and data for the new list
135
+ const seenKeys = new Set();
136
+ const itemsToRender = list.map(([Key, Item], i) => {
132
137
  const childData = {
133
- ...dataSignal.get(),
138
+ ...data,
134
139
  ListItem: {
135
- ...(dataSignal.get().ListItem
136
- ? { Parent: dataSignal.get().ListItem }
137
- : {}),
140
+ ...parentListItemInfo,
138
141
  Item,
139
142
  Index: Number(i),
140
143
  Key,
@@ -151,16 +154,23 @@ export function createNode({ id, dataSignal, path, ctx, namespace, parentElement
151
154
  env: ctx.env,
152
155
  })
153
156
  : Key;
154
- // Can't we just use the Item reference as key as we have fine-grained reactivity at this point?
155
- // That way we won't need repeatKey at all as everything will be optimized by reference?!?
156
- // https://github.com/solidjs/solid/discussions/366#discussioncomment-1220239
157
- // childKey = Item
158
- // Do fallback to Key(index) if repeatKey has duplicate values.
159
- // This will essentially disable the optimization for repeatKey and will always re-render the children on every change.
160
- if (newRepeatItems.has(childKey)) {
157
+ if (seenKeys.has(childKey)) {
161
158
  console.warn(`Duplicate key "${childKey}" found in repeat. Fallback to index as key. This will cause a re-render of the duplicated children on every change.`);
162
159
  childKey = Key;
163
160
  }
161
+ seenKeys.add(childKey);
162
+ return { Key, Item, i, childData, childKey };
163
+ });
164
+ // Cleanup removed items' before rendering new items to ensure clean state
165
+ repeatItems.forEach((item, key) => {
166
+ if (!seenKeys.has(key)) {
167
+ item.cleanup();
168
+ item.dataSignal.destroy();
169
+ item.elements.forEach((e) => e.remove());
170
+ }
171
+ });
172
+ const newRepeatItems = new Map();
173
+ for (const { Key, Item, i, childData, childKey } of itemsToRender) {
164
174
  const existingItem = repeatItems.get(childKey);
165
175
  if (existingItem) {
166
176
  newRepeatItems.set(childKey, existingItem);
@@ -168,9 +178,7 @@ export function createNode({ id, dataSignal, path, ctx, namespace, parentElement
168
178
  return {
169
179
  ...data,
170
180
  ListItem: {
171
- ...(dataSignal.get().ListItem
172
- ? { Parent: dataSignal.get().ListItem }
173
- : {}),
181
+ ...parentListItemInfo,
174
182
  Item,
175
183
  Index: Number(i),
176
184
  Key,
@@ -211,14 +219,6 @@ export function createNode({ id, dataSignal, path, ctx, namespace, parentElement
211
219
  });
212
220
  }
213
221
  }
214
- // Cleanup removed items' data
215
- Array.from(repeatItems.entries()).forEach(([key, item]) => {
216
- if (!newRepeatItems.has(key)) {
217
- item.cleanup();
218
- item.dataSignal.destroy();
219
- item.elements.forEach((e) => e.remove());
220
- }
221
- });
222
222
  repeatItems = newRepeatItems;
223
223
  // No reason to continue if we are on first run, as the render-phase for the parent
224
224
  // has not yet been reached, or if there are no items to render
@@ -1 +1 @@
1
- {"version":3,"file":"createNode.js","sourceRoot":"","sources":["../../../src/components/createNode.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"createNode.js","sourceRoot":"","sources":["../../../src/components/createNode.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,7 @@ export function createSlot({ path, node, dataSignal, ctx, parentElement, instanc
9
9
  dataSignal.subscribe((data) => data, {
10
10
  destroy: () => childDataSignal.destroy(),
11
11
  });
12
+ const slotComponentIndex = getSlotComponentIndex(slotName, node, ctx.component.nodes);
12
13
  return createNode({
13
14
  ...child,
14
15
  dataSignal: childDataSignal,
@@ -19,6 +20,9 @@ export function createSlot({ path, node, dataSignal, ctx, parentElement, instanc
19
20
  },
20
21
  instance,
21
22
  namespace,
23
+ path: slotComponentIndex > 0
24
+ ? `${child.path}(${slotComponentIndex})`
25
+ : child.path,
22
26
  });
23
27
  });
24
28
  }
@@ -46,4 +50,22 @@ export function createSlot({ path, node, dataSignal, ctx, parentElement, instanc
46
50
  }
47
51
  return children;
48
52
  }
53
+ /**
54
+ * When multiple slots have the same name, we need to ensure that their path still remains unique.
55
+ */
56
+ function getSlotComponentIndex(nodeName, node, componentNodes) {
57
+ let slotsWithSameNameIndex = 0;
58
+ if (componentNodes) {
59
+ for (const n in componentNodes) {
60
+ const currentNode = componentNodes[n];
61
+ if (currentNode.type === 'slot' && currentNode.name === nodeName) {
62
+ if (currentNode === node) {
63
+ break;
64
+ }
65
+ slotsWithSameNameIndex++;
66
+ }
67
+ }
68
+ }
69
+ return slotsWithSameNameIndex;
70
+ }
49
71
  //# sourceMappingURL=createSlot.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"createSlot.js","sourceRoot":"","sources":["../../../src/components/createSlot.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAEzC,MAAM,UAAU,UAAU,CAAC,EACzB,IAAI,EACJ,IAAI,EACJ,UAAU,EACV,GAAG,EACH,aAAa,EACb,QAAQ,EACR,SAAS,GACmB,EAAiC;IAC7D,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,IAAI,SAAS,CAAA;IACvC,IAAI,QAAQ,GAA0B,EAAE,CAAA;IACxC,+BAA+B;IAC/B,IAAI,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3B,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;YACnD,MAAM,eAAe,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,CAAA;YAC5D,UAAU,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE;gBACnC,OAAO,EAAE,GAAG,EAAE,CAAC,eAAe,CAAC,OAAO,EAAE;aACzC,CAAC,CAAA;YACF,OAAO,UAAU,CAAC;gBAChB,GAAG,KAAK;gBACR,UAAU,EAAE,eAAe;gBAC3B,aAAa;gBACb,GAAG,EAAE;oBACH,GAAG,KAAK,CAAC,GAAG;oBACZ,SAAS,EAAE,GAAG,CAAC,SAAS;iBACzB;gBACD,QAAQ;gBACR,SAAS;aACV,CAAC,CAAA;QAAA,CACH,CAAC,CAAA;IACJ,CAAC;SAAM,CAAC;QACN,wCAAwC;QACxC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7C,OAAO,UAAU,CAAC;gBAChB,EAAE,EAAE,KAAK;gBACT,IAAI,EAAE,IAAI,GAAG,GAAG,GAAG,CAAC;gBACpB,UAAU;gBACV,GAAG;gBACH,aAAa;gBACb,QAAQ;gBACR,SAAS;aACV,CAAC,CAAA;QAAA,CACH,CAAC,CAAA;IACJ,CAAC;IAED,IAAI,GAAG,CAAC,GAAG,CAAC,OAAO,KAAK,gBAAgB,IAAI,GAAG,CAAC,eAAe,EAAE,CAAC;QAChE,MAAM,gBAAgB,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAA;QACvD,gBAAgB,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;QAC/C,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;YAC1B,gBAAgB,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;QAAA,CACpC,CAAC,CAAA;QAEF,OAAO,CAAC,gBAAgB,CAAC,CAAA;IAC3B,CAAC;IAED,OAAO,QAAQ,CAAA;AAAA,CAChB"}
1
+ {"version":3,"file":"createSlot.js","sourceRoot":"","sources":["../../../src/components/createSlot.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -9,8 +9,8 @@
9
9
  "directory": "packages/runtime"
10
10
  },
11
11
  "dependencies": {
12
- "@nordcraft/core": "1.0.85",
13
- "@nordcraft/std-lib": "1.0.85",
12
+ "@nordcraft/core": "1.0.87",
13
+ "@nordcraft/std-lib": "1.0.87",
14
14
  "fast-deep-equal": "3.1.3",
15
15
  "path-to-regexp": "6.3.0"
16
16
  },
@@ -23,5 +23,5 @@
23
23
  "files": ["dist", "src"],
24
24
  "main": "dist/page.main.js",
25
25
  "types": "dist/page.main.d.ts",
26
- "version": "1.0.85"
26
+ "version": "1.0.87"
27
27
  }
@@ -194,23 +194,18 @@ export function createNode({
194
194
 
195
195
  repeatSignal.subscribe(
196
196
  (list) => {
197
- const newRepeatItems = new Map<
198
- string | number,
199
- {
200
- dataSignal: Signal<ComponentData>
201
- cleanup: () => void
202
- elements: ReadonlyArray<Element | Text>
203
- }
204
- >()
205
-
206
- for (let i = 0; i < list.length; i++) {
207
- const [Key, Item] = list[i]
197
+ const data = dataSignal.get()
198
+ const parentListItem = data.ListItem
199
+ const parentListItemInfo = parentListItem
200
+ ? { Parent: parentListItem }
201
+ : {}
202
+ // Pre-calculate all keys and data for the new list
203
+ const seenKeys = new Set<string | number>()
204
+ const itemsToRender = list.map(([Key, Item], i) => {
208
205
  const childData = {
209
- ...dataSignal.get(),
206
+ ...data,
210
207
  ListItem: {
211
- ...(dataSignal.get().ListItem
212
- ? { Parent: dataSignal.get().ListItem }
213
- : {}),
208
+ ...parentListItemInfo,
214
209
  Item,
215
210
  Index: Number(i),
216
211
  Key,
@@ -228,19 +223,36 @@ export function createNode({
228
223
  })
229
224
  : Key
230
225
 
231
- // Can't we just use the Item reference as key as we have fine-grained reactivity at this point?
232
- // That way we won't need repeatKey at all as everything will be optimized by reference?!?
233
- // https://github.com/solidjs/solid/discussions/366#discussioncomment-1220239
234
- // childKey = Item
235
- // Do fallback to Key(index) if repeatKey has duplicate values.
236
- // This will essentially disable the optimization for repeatKey and will always re-render the children on every change.
237
- if (newRepeatItems.has(childKey)) {
226
+ if (seenKeys.has(childKey)) {
238
227
  console.warn(
239
228
  `Duplicate key "${childKey}" found in repeat. Fallback to index as key. This will cause a re-render of the duplicated children on every change.`,
240
229
  )
241
230
  childKey = Key
242
231
  }
232
+ seenKeys.add(childKey)
233
+
234
+ return { Key, Item, i, childData, childKey }
235
+ })
236
+
237
+ // Cleanup removed items' before rendering new items to ensure clean state
238
+ repeatItems.forEach((item, key) => {
239
+ if (!seenKeys.has(key)) {
240
+ item.cleanup()
241
+ item.dataSignal.destroy()
242
+ item.elements.forEach((e) => e.remove())
243
+ }
244
+ })
245
+
246
+ const newRepeatItems = new Map<
247
+ string | number,
248
+ {
249
+ dataSignal: Signal<ComponentData>
250
+ cleanup: () => void
251
+ elements: ReadonlyArray<Element | Text>
252
+ }
253
+ >()
243
254
 
255
+ for (const { Key, Item, i, childData, childKey } of itemsToRender) {
244
256
  const existingItem = repeatItems.get(childKey)
245
257
  if (existingItem) {
246
258
  newRepeatItems.set(childKey, existingItem)
@@ -248,9 +260,7 @@ export function createNode({
248
260
  return {
249
261
  ...data,
250
262
  ListItem: {
251
- ...(dataSignal.get().ListItem
252
- ? { Parent: dataSignal.get().ListItem }
253
- : {}),
263
+ ...parentListItemInfo,
254
264
  Item,
255
265
  Index: Number(i),
256
266
  Key,
@@ -295,15 +305,6 @@ export function createNode({
295
305
  })
296
306
  }
297
307
  }
298
-
299
- // Cleanup removed items' data
300
- Array.from(repeatItems.entries()).forEach(([key, item]) => {
301
- if (!newRepeatItems.has(key)) {
302
- item.cleanup()
303
- item.dataSignal.destroy()
304
- item.elements.forEach((e) => e.remove())
305
- }
306
- })
307
308
  repeatItems = newRepeatItems
308
309
 
309
310
  // No reason to continue if we are on first run, as the render-phase for the parent
@@ -1,4 +1,8 @@
1
- import type { SlotNodeModel } from '@nordcraft/core/dist/component/component.types'
1
+ import type {
2
+ NodeModel,
3
+ SlotNodeModel,
4
+ } from '@nordcraft/core/dist/component/component.types'
5
+ import type { Nullable } from '@nordcraft/core/dist/types'
2
6
  import type { NodeRenderer } from './createNode'
3
7
  import { createNode } from './createNode'
4
8
 
@@ -20,6 +24,12 @@ export function createSlot({
20
24
  dataSignal.subscribe((data) => data, {
21
25
  destroy: () => childDataSignal.destroy(),
22
26
  })
27
+ const slotComponentIndex = getSlotComponentIndex(
28
+ slotName,
29
+ node,
30
+ ctx.component.nodes,
31
+ )
32
+
23
33
  return createNode({
24
34
  ...child,
25
35
  dataSignal: childDataSignal,
@@ -30,6 +40,10 @@ export function createSlot({
30
40
  },
31
41
  instance,
32
42
  namespace,
43
+ path:
44
+ slotComponentIndex > 0
45
+ ? `${child.path}(${slotComponentIndex})`
46
+ : child.path,
33
47
  })
34
48
  })
35
49
  } else {
@@ -59,3 +73,26 @@ export function createSlot({
59
73
 
60
74
  return children
61
75
  }
76
+
77
+ /**
78
+ * When multiple slots have the same name, we need to ensure that their path still remains unique.
79
+ */
80
+ function getSlotComponentIndex(
81
+ nodeName: string,
82
+ node: NodeModel,
83
+ componentNodes: Nullable<Record<string, NodeModel>>,
84
+ ) {
85
+ let slotsWithSameNameIndex = 0
86
+ if (componentNodes) {
87
+ for (const n in componentNodes) {
88
+ const currentNode = componentNodes[n]
89
+ if (currentNode.type === 'slot' && currentNode.name === nodeName) {
90
+ if (currentNode === node) {
91
+ break
92
+ }
93
+ slotsWithSameNameIndex++
94
+ }
95
+ }
96
+ }
97
+ return slotsWithSameNameIndex
98
+ }