@nordcraft/ssr 1.0.91 → 1.0.93

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.
@@ -54,7 +54,9 @@ const renderComponent = async ({ path, apiCache, children, component, data, env,
54
54
  case 'slot': {
55
55
  const defaultChild = children?.[node.name ?? 'default'];
56
56
  if (defaultChild) {
57
- return defaultChild;
57
+ return typeof defaultChild === 'function'
58
+ ? await defaultChild(data.Contexts ?? {})
59
+ : defaultChild;
58
60
  }
59
61
  else {
60
62
  const slotChildren = await Promise.all(node.children.map((child) => renderNode({
@@ -226,37 +228,55 @@ const renderComponent = async ({ path, apiCache, children, component, data, env,
226
228
  apiCache,
227
229
  updateApiCache,
228
230
  });
229
- const childNodes = await Promise.all(node.children.map((child, i) => {
231
+ const childNodes = await Promise.all(node.children.map(async (child, i) => {
230
232
  const slotName = typeof child === 'string'
231
233
  ? (component.nodes?.[child]?.slot ?? 'default')
232
234
  : 'default';
233
- return renderNode({
234
- id: child,
235
- path: `${path}.${i}[${slotName}]`,
236
- namespace,
237
- node: component.nodes?.[child],
238
- data: {
239
- ...data,
240
- Contexts: {
241
- ...contexts,
242
- [childComponent.name]: Object.fromEntries(Object.entries(childComponent.formulas ?? {})
243
- .filter(([, formula]) => formula.exposeInContext)
244
- .map(([key, formula]) => [
245
- key,
246
- applyFormula(formula.formula, {
247
- component: childComponent,
248
- package: _packageName,
249
- data: {
250
- Contexts: {
251
- ...data.Contexts,
252
- ...Object.fromEntries(Object.entries(childComponent.formulas ?? {})
253
- .filter(([, formula]) => formula.exposeInContext)
254
- .map(([key, formula]) => [
255
- key,
256
- applyFormula(formula.formula, {
235
+ return (contexts) => {
236
+ return renderNode({
237
+ id: child,
238
+ path: `${path}.${i}[${slotName}]`,
239
+ namespace,
240
+ node: component.nodes?.[child],
241
+ data: {
242
+ ...data,
243
+ Contexts: {
244
+ ...data.Contexts,
245
+ ...contexts,
246
+ [childComponent.name]: Object.fromEntries(Object.entries(childComponent.formulas ?? {})
247
+ .filter(([, formula]) => formula.exposeInContext)
248
+ .map(([key, formula]) => [
249
+ key,
250
+ applyFormula(formula.formula, {
251
+ component: childComponent,
252
+ package: _packageName,
253
+ data: {
254
+ Contexts: {
255
+ ...data.Contexts,
256
+ ...Object.fromEntries(Object.entries(childComponent.formulas ?? {})
257
+ .filter(([, formula]) => formula.exposeInContext)
258
+ .map(([key, formula]) => [
259
+ key,
260
+ applyFormula(formula.formula, {
261
+ data: {
262
+ Attributes: attrs,
263
+ Apis: { ...data.Apis, ...apis },
264
+ Location: data.Location,
265
+ Page: data.Page,
266
+ },
267
+ component,
268
+ package: _packageName,
269
+ env,
270
+ toddle,
271
+ }),
272
+ ])),
273
+ },
274
+ Apis: apis,
275
+ Attributes: attrs,
276
+ Variables: mapValues(childComponent.variables ?? {}, ({ initialValue }) => {
277
+ return applyFormula(initialValue, {
257
278
  data: {
258
279
  Attributes: attrs,
259
- Apis: { ...data.Apis, ...apis },
260
280
  Location: data.Location,
261
281
  Page: data.Page,
262
282
  },
@@ -264,43 +284,40 @@ const renderComponent = async ({ path, apiCache, children, component, data, env,
264
284
  package: _packageName,
265
285
  env,
266
286
  toddle,
267
- }),
268
- ])),
287
+ });
288
+ }),
269
289
  },
270
- Apis: apis,
271
- Attributes: attrs,
272
- Variables: mapValues(childComponent.variables ?? {}, ({ initialValue }) => {
273
- return applyFormula(initialValue, {
274
- data: {
275
- Attributes: attrs,
276
- Location: data.Location,
277
- Page: data.Page,
278
- },
279
- component,
280
- package: _packageName,
281
- env,
282
- toddle,
283
- });
284
- }),
285
- },
286
- env,
287
- toddle,
288
- }),
289
- ])),
290
+ env,
291
+ toddle,
292
+ }),
293
+ ])),
294
+ },
290
295
  },
291
- },
292
- // pass package name to child component if it's defined
293
- packageName,
294
- });
296
+ // pass package name to child component if it's defined
297
+ packageName,
298
+ });
299
+ };
295
300
  }));
296
301
  const children = {};
297
- childNodes.forEach((childNode, i) => {
302
+ childNodes.forEach((renderFn, i) => {
298
303
  const childNodeId = node.children[i];
299
304
  // Add children to the correct slot in the right order
300
305
  const slotName = typeof childNodeId === 'string'
301
306
  ? (component.nodes?.[childNodeId]?.slot ?? 'default')
302
307
  : 'default';
303
- children[slotName] = `${children[slotName] ?? ''}${childNode}`;
308
+ const existing = children[slotName];
309
+ if (existing) {
310
+ const previous = typeof existing === 'function'
311
+ ? existing
312
+ : async () => existing;
313
+ // Handle multiple elements in the same slot by appending
314
+ children[slotName] = async (contexts) => {
315
+ return (await previous(contexts)) + (await renderFn(contexts));
316
+ };
317
+ }
318
+ else {
319
+ children[slotName] = renderFn;
320
+ }
304
321
  });
305
322
  // Add extra instance styling for each style-variable
306
323
  Object.entries(node.customProperties ?? {}).forEach(([customPropertyName, customProperty]) => {
@@ -384,15 +401,18 @@ const createComponent = async ({ path, apiCache, apis, attrs, children, componen
384
401
  // Own context formulas has access to all other data in the component (attributes, variables, apis etc.) so is applied last
385
402
  data.Contexts = {
386
403
  ...data.Contexts,
387
- ...Object.fromEntries(Object.entries(component.formulas ?? {})
388
- .filter(([, formula]) => formula.exposeInContext)
389
- .map(([key, formula]) => [
390
- key,
391
- applyFormula(formula.formula, {
392
- ...formulaContext,
393
- data,
394
- }),
395
- ])),
404
+ [component.name]: {
405
+ ...data.Contexts?.[component.name],
406
+ ...Object.fromEntries(Object.entries(component.formulas ?? {})
407
+ .filter(([, formula]) => formula.exposeInContext)
408
+ .map(([key, formula]) => [
409
+ key,
410
+ applyFormula(formula.formula, {
411
+ ...formulaContext,
412
+ data,
413
+ }),
414
+ ])),
415
+ },
396
416
  };
397
417
  return renderComponent({
398
418
  apiCache,
@@ -1 +1 @@
1
- {"version":3,"file":"components.js","sourceRoot":"","sources":["../../src/rendering/components.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"components.js","sourceRoot":"","sources":["../../src/rendering/components.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -21,11 +21,11 @@
21
21
  "main": "dist/index.js",
22
22
  "types": "dist/index.d.ts",
23
23
  "dependencies": {
24
- "@nordcraft/core": "1.0.91",
25
- "@nordcraft/std-lib": "1.0.91",
24
+ "@nordcraft/core": "1.0.93",
25
+ "@nordcraft/std-lib": "1.0.93",
26
26
  "fast-deep-equal": "3.1.3",
27
27
  "cookie": "1.0.2",
28
28
  "xss": "1.0.15"
29
29
  },
30
- "version": "1.0.91"
30
+ "version": "1.0.93"
31
31
  }
@@ -364,148 +364,143 @@ describe('renderPageBody', () => {
364
364
  )
365
365
  })
366
366
 
367
- // Disabled test
368
-
369
367
  // Bug: https://discord.com/channels/972416966683926538/1458387768504746068/1458387768504746068
370
368
  // TODO: Fix rendering so that context is properly passed through slots. Rendering should go through inner components before slotted content.
371
- test.failing(
372
- 'should render context value when consumer is through multiple slots of a wrapped provider',
373
- async () => {
374
- // Four components required for test setup:
375
- // PageComponent - uses WrappedProviderComponent with a slotted ConsumerComponent
376
- // WrappedProviderComponent - uses ProviderComponent and passes slot to it
377
- // ProviderComponent - provides context value to its children through a slot
378
- // ConsumerComponent - consumes context value and renders it
379
- const pageComponent: Component = {
380
- name: 'PageComponent',
381
- nodes: {
382
- root: {
383
- type: 'component',
384
- name: 'WrappedProviderComponent',
385
- attrs: {},
386
- children: ['consumerSlot'],
387
- events: {},
388
- style: {},
389
- },
390
- consumerSlot: {
391
- type: 'component',
392
- name: 'ConsumerComponent',
393
- attrs: {},
394
- children: [],
395
- events: {},
396
- style: {},
397
- },
369
+ test('should render context value when consumer is through multiple slots of a wrapped provider', async () => {
370
+ // Four components required for test setup:
371
+ // PageComponent - uses WrappedProviderComponent with a slotted ConsumerComponent
372
+ // WrappedProviderComponent - uses ProviderComponent and passes slot to it
373
+ // ProviderComponent - provides context value to its children through a slot
374
+ // ConsumerComponent - consumes context value and renders it
375
+ const pageComponent: Component = {
376
+ name: 'PageComponent',
377
+ nodes: {
378
+ root: {
379
+ type: 'component',
380
+ name: 'WrappedProviderComponent',
381
+ attrs: {},
382
+ children: ['consumerSlot'],
383
+ events: {},
384
+ style: {},
398
385
  },
399
- formulas: {},
400
- apis: {},
401
- attributes: {},
402
- variables: {},
403
- events: [],
404
- }
405
-
406
- const wrappedProviderComponent: Component = {
407
- name: 'WrappedProviderComponent',
408
- nodes: {
409
- root: {
410
- type: 'component',
411
- name: 'ProviderComponent',
412
- attrs: {},
413
- children: ['slot'],
414
- events: {},
415
- style: {},
416
- },
417
- slot: {
418
- type: 'slot',
419
- children: [],
420
- },
386
+ consumerSlot: {
387
+ type: 'component',
388
+ name: 'ConsumerComponent',
389
+ attrs: {},
390
+ children: [],
391
+ events: {},
392
+ style: {},
421
393
  },
422
- formulas: {},
423
- apis: {},
424
- attributes: {},
425
- variables: {},
426
- events: [],
427
- }
428
-
429
- const providerComponent: Component = {
430
- name: 'ProviderComponent',
431
- formulas: {
432
- contextValue: {
433
- name: 'contextValue',
434
- exposeInContext: true,
435
- formula: {
436
- type: 'value',
437
- value: 'provided-value',
438
- },
439
- },
394
+ },
395
+ formulas: {},
396
+ apis: {},
397
+ attributes: {},
398
+ variables: {},
399
+ events: [],
400
+ }
401
+
402
+ const wrappedProviderComponent: Component = {
403
+ name: 'WrappedProviderComponent',
404
+ nodes: {
405
+ root: {
406
+ type: 'component',
407
+ name: 'ProviderComponent',
408
+ attrs: {},
409
+ children: ['slot'],
410
+ events: {},
411
+ style: {},
440
412
  },
441
- nodes: {
442
- root: {
443
- type: 'slot',
444
- children: [],
445
- },
413
+ slot: {
414
+ type: 'slot',
415
+ children: [],
446
416
  },
447
- }
417
+ },
418
+ formulas: {},
419
+ apis: {},
420
+ attributes: {},
421
+ variables: {},
422
+ events: [],
423
+ }
448
424
 
449
- const consumerComponent: Component = {
450
- name: 'ConsumerComponent',
451
- contexts: {
452
- ProviderComponent: {
453
- formulas: ['contextValue'],
454
- workflows: [],
425
+ const providerComponent: Component = {
426
+ name: 'ProviderComponent',
427
+ formulas: {
428
+ contextValue: {
429
+ name: 'contextValue',
430
+ exposeInContext: true,
431
+ formula: {
432
+ type: 'value',
433
+ value: 'provided-value',
455
434
  },
456
435
  },
457
- nodes: {
458
- root: {
459
- type: 'text',
460
- value: {
461
- type: 'path',
462
- path: ['Contexts', 'ProviderComponent', 'contextValue'],
463
- },
464
- },
436
+ },
437
+ nodes: {
438
+ root: {
439
+ type: 'slot',
440
+ children: [],
441
+ },
442
+ },
443
+ }
444
+
445
+ const consumerComponent: Component = {
446
+ name: 'ConsumerComponent',
447
+ contexts: {
448
+ ProviderComponent: {
449
+ formulas: ['contextValue'],
450
+ workflows: [],
465
451
  },
466
- formulas: {},
467
- apis: {},
468
- attributes: {},
469
- variables: {},
470
- events: [],
471
- }
472
-
473
- const { html } = await renderPageBody({
474
- evaluateComponentApis: () => ({}) as any,
475
- component: pageComponent as any,
476
- formulaContext: {
477
- data: {
478
- Attributes: {},
452
+ },
453
+ nodes: {
454
+ root: {
455
+ type: 'text',
456
+ value: {
457
+ type: 'path',
458
+ path: ['Contexts', 'ProviderComponent', 'contextValue'],
479
459
  },
480
- component: pageComponent,
481
- env: {} as any,
482
- package: undefined,
483
- toddle: {} as any,
484
460
  },
461
+ },
462
+ formulas: {},
463
+ apis: {},
464
+ attributes: {},
465
+ variables: {},
466
+ events: [],
467
+ }
468
+
469
+ const { html } = await renderPageBody({
470
+ evaluateComponentApis: () => ({}) as any,
471
+ component: pageComponent as any,
472
+ formulaContext: {
473
+ data: {
474
+ Attributes: {},
475
+ },
476
+ component: pageComponent,
485
477
  env: {} as any,
486
- files: {
487
- components: {
488
- PageComponent: pageComponent,
489
- WrappedProviderComponent: wrappedProviderComponent,
490
- ProviderComponent: providerComponent,
491
- ConsumerComponent: consumerComponent,
492
- },
493
- } as any,
494
- includedComponents: [
495
- pageComponent,
496
- wrappedProviderComponent,
497
- providerComponent,
498
- consumerComponent,
499
- ],
500
- projectId: 'test-project',
501
- req: {} as any,
502
- })
478
+ package: undefined,
479
+ toddle: {} as any,
480
+ },
481
+ env: {} as any,
482
+ files: {
483
+ components: {
484
+ PageComponent: pageComponent,
485
+ WrappedProviderComponent: wrappedProviderComponent,
486
+ ProviderComponent: providerComponent,
487
+ ConsumerComponent: consumerComponent,
488
+ },
489
+ } as any,
490
+ includedComponents: [
491
+ pageComponent,
492
+ wrappedProviderComponent,
493
+ providerComponent,
494
+ consumerComponent,
495
+ ],
496
+ projectId: 'test-project',
497
+ req: {} as any,
498
+ })
503
499
 
504
- expect(html).toBe(
505
- `"<span data-node-type="text" data-node-id="root">provided-value</span>"`,
506
- )
507
- },
508
- )
500
+ expect(html).toBe(
501
+ `<span data-node-type="text" data-node-id="root">provided-value</span>`,
502
+ )
503
+ })
509
504
 
510
505
  test('should render a component where a variable initial value references Page.Theme', async () => {
511
506
  const component: Component = {
@@ -711,4 +706,262 @@ describe('renderPageBody', () => {
711
706
  '<span data-node-type="text" data-node-id="root">light</span>',
712
707
  )
713
708
  })
709
+
710
+ test('Component C should see the context value from Component A when Component B forwards its attribute using slots', async () => {
711
+ // Component A: Provider
712
+ // Accepts 'value' as attribute and provides it in context
713
+ const componentA: Component = {
714
+ name: 'ComponentA',
715
+ attributes: {
716
+ value: {
717
+ name: 'value',
718
+ testValue: 'test',
719
+ },
720
+ },
721
+ formulas: {
722
+ exposedValue: {
723
+ name: 'exposedValue',
724
+ exposeInContext: true,
725
+ formula: {
726
+ type: 'path',
727
+ path: ['Attributes', 'value'],
728
+ },
729
+ },
730
+ },
731
+ nodes: {
732
+ root: {
733
+ type: 'element',
734
+ tag: 'div',
735
+ attrs: {},
736
+ children: ['slot_node'],
737
+ events: {},
738
+ style: {},
739
+ },
740
+ slot_node: {
741
+ type: 'slot',
742
+ name: 'default',
743
+ children: [],
744
+ },
745
+ },
746
+ contexts: {},
747
+ apis: {},
748
+ variables: {},
749
+ events: [],
750
+ }
751
+
752
+ // Component B: Intermediary
753
+ // Accepts 'val' as attribute and forwards it to Component A's 'value' attribute
754
+ const componentB: Component = {
755
+ name: 'ComponentB',
756
+ attributes: {
757
+ val: {
758
+ name: 'val',
759
+ testValue: 'test',
760
+ },
761
+ },
762
+ nodes: {
763
+ root: {
764
+ type: 'element',
765
+ tag: 'div',
766
+ attrs: {},
767
+ children: ['provider_node'],
768
+ events: {},
769
+ style: {},
770
+ },
771
+ provider_node: {
772
+ type: 'component',
773
+ name: 'ComponentA',
774
+ attrs: {
775
+ value: {
776
+ type: 'path',
777
+ path: ['Attributes', 'val'],
778
+ },
779
+ },
780
+ children: ['slot_forwarder'],
781
+ events: {},
782
+ style: {},
783
+ },
784
+ slot_forwarder: {
785
+ type: 'slot',
786
+ name: 'default',
787
+ children: [],
788
+ },
789
+ },
790
+ contexts: {},
791
+ formulas: {},
792
+ apis: {},
793
+ variables: {},
794
+ events: [],
795
+ }
796
+
797
+ // Component C: Consumer
798
+ // Consumes Component A's context 'exposedValue'
799
+ const componentC: Component = {
800
+ name: 'ComponentC',
801
+ contexts: {
802
+ ComponentA: {
803
+ formulas: ['exposedValue'],
804
+ workflows: [],
805
+ },
806
+ },
807
+ nodes: {
808
+ root: {
809
+ type: 'text',
810
+ value: {
811
+ type: 'path',
812
+ path: ['Contexts', 'ComponentA', 'exposedValue'],
813
+ },
814
+ },
815
+ },
816
+ formulas: {},
817
+ apis: {},
818
+ attributes: {},
819
+ variables: {},
820
+ events: [],
821
+ }
822
+
823
+ // Root component that renders B with a specific value and C in its slot
824
+ const rootComponent: any = {
825
+ name: 'RootComponent',
826
+ route: {
827
+ path: [],
828
+ query: {},
829
+ info: {
830
+ theme: {
831
+ formula: { type: 'value', value: 'light' },
832
+ },
833
+ },
834
+ },
835
+ nodes: {
836
+ root: {
837
+ type: 'component',
838
+ name: 'ComponentB',
839
+ attrs: {
840
+ val: {
841
+ type: 'value',
842
+ value: 'expected-value',
843
+ },
844
+ },
845
+ children: ['consumer_node'],
846
+ events: {},
847
+ style: {},
848
+ },
849
+ consumer_node: {
850
+ type: 'component',
851
+ name: 'ComponentC',
852
+ attrs: {},
853
+ children: [],
854
+ events: {},
855
+ style: {},
856
+ slot: 'default',
857
+ },
858
+ },
859
+ contexts: {},
860
+ formulas: {},
861
+ apis: {},
862
+ attributes: {},
863
+ variables: {},
864
+ events: [],
865
+ }
866
+
867
+ const files = {
868
+ components: {
869
+ RootComponent: rootComponent,
870
+ ComponentB: componentB,
871
+ ComponentA: componentA,
872
+ ComponentC: componentC,
873
+ },
874
+ } as any
875
+
876
+ const { html } = await renderPageBody({
877
+ evaluateComponentApis: () => ({}) as any,
878
+ component: rootComponent as any,
879
+ formulaContext: getPageFormulaContext({
880
+ component: rootComponent as any,
881
+ branchName: 'main',
882
+ req: new Request('http://localhost'),
883
+ logErrors: true,
884
+ files,
885
+ }),
886
+ env: {} as any,
887
+ files,
888
+ includedComponents: [rootComponent, componentB, componentA, componentC],
889
+ projectId: 'test-project',
890
+ req: {} as any,
891
+ })
892
+
893
+ // Component C should render 'expected-value'
894
+ expect(html).toContain('expected-value')
895
+ })
896
+
897
+ test('should render ID formula with the expected order', async () => {
898
+ const component: Component = {
899
+ name: 'IdTestComponent',
900
+ nodes: {
901
+ root: {
902
+ type: 'element',
903
+ tag: 'div',
904
+ attrs: {
905
+ 'data-custom-id': {
906
+ type: 'function',
907
+ name: '@toddle/concatenate',
908
+ arguments: [
909
+ {
910
+ name: '0',
911
+ formula: { type: 'value', value: 'custom' },
912
+ type: { type: 'Array \\| String \\| Object' },
913
+ },
914
+ {
915
+ name: '0',
916
+ formula: {
917
+ type: 'function',
918
+ name: '@toddle/Id',
919
+ arguments: [],
920
+ display_name: 'Id',
921
+ },
922
+ type: { type: 'Array \\| String \\| Object' },
923
+ },
924
+ ],
925
+ },
926
+ },
927
+ children: [],
928
+ events: {},
929
+ style: {},
930
+ },
931
+ },
932
+ formulas: {},
933
+ apis: {},
934
+ attributes: {},
935
+ variables: {},
936
+ events: [],
937
+ route: {
938
+ path: [],
939
+ query: {},
940
+ },
941
+ }
942
+
943
+ const { html } = await renderPageBody({
944
+ evaluateComponentApis: () => ({}) as any,
945
+ component: component as any,
946
+ formulaContext: getPageFormulaContext({
947
+ component: component as any,
948
+ branchName: 'main',
949
+ req: new Request('http://localhost'),
950
+ logErrors: true,
951
+ files: {
952
+ components: { IdTestComponent: component },
953
+ },
954
+ }),
955
+ env: {} as any,
956
+ files: { components: { IdTestComponent: component } } as any,
957
+ includedComponents: [component],
958
+ projectId: 'test-project',
959
+ req: {} as any,
960
+ })
961
+
962
+ // Expect the ID formula to render with the correct order (0 in this case since it's the first formula rendered)
963
+ expect(html).toBe(
964
+ `<div data-custom-id="custom_id_0_" data-id="0" data-node-id="root" class="ftaNwg"></div>`,
965
+ )
966
+ })
714
967
  })
@@ -31,6 +31,9 @@ import type { ApiCache, ApiEvaluator } from './api'
31
31
  import { getNodeAttrs, toEncodedText } from './attributes'
32
32
 
33
33
  type CustomPropertyRule = `--${string}: ${string}`
34
+ type SlottedContent =
35
+ | string
36
+ | ((contexts: Record<string, Record<string, any>>) => Promise<string>)
34
37
 
35
38
  const renderComponent = async ({
36
39
  path,
@@ -53,7 +56,7 @@ const renderComponent = async ({
53
56
  }: {
54
57
  path: string
55
58
  apiCache: ApiCache
56
- children?: Record<string, string>
59
+ children?: Record<string, SlottedContent>
57
60
  component: Component
58
61
  data: ComponentData
59
62
  env: ToddleServerEnv
@@ -149,7 +152,9 @@ const renderComponent = async ({
149
152
  case 'slot': {
150
153
  const defaultChild = children?.[node.name ?? 'default']
151
154
  if (defaultChild) {
152
- return defaultChild
155
+ return typeof defaultChild === 'function'
156
+ ? await defaultChild(data.Contexts ?? {})
157
+ : defaultChild
153
158
  } else {
154
159
  const slotChildren = await Promise.all(
155
160
  node.children.map((child) =>
@@ -379,95 +384,111 @@ const renderComponent = async ({
379
384
  })
380
385
 
381
386
  const childNodes = await Promise.all(
382
- node.children.map((child, i) => {
387
+ node.children.map(async (child, i) => {
383
388
  const slotName =
384
389
  typeof child === 'string'
385
390
  ? (component.nodes?.[child]?.slot ?? 'default')
386
391
  : 'default'
387
392
 
388
- return renderNode({
389
- id: child,
390
- path: `${path}.${i}[${slotName}]`,
391
- namespace,
392
- node: component.nodes?.[child],
393
- data: {
394
- ...data,
395
- Contexts: {
396
- ...contexts,
397
- [childComponent.name]: Object.fromEntries(
398
- Object.entries(childComponent.formulas ?? {})
399
- .filter(([, formula]) => formula.exposeInContext)
400
- .map(([key, formula]) => [
401
- key,
402
- applyFormula(formula.formula, {
403
- component: childComponent,
404
- package: _packageName,
405
- data: {
406
- Contexts: {
407
- ...data.Contexts,
408
- ...Object.fromEntries(
409
- Object.entries(childComponent.formulas ?? {})
410
- .filter(
411
- ([, formula]) => formula.exposeInContext,
412
- )
413
- .map(([key, formula]) => [
414
- key,
415
- applyFormula(formula.formula, {
416
- data: {
417
- Attributes: attrs,
418
- Apis: { ...data.Apis, ...apis },
419
- Location: data.Location,
420
- Page: data.Page,
421
- },
422
- component,
423
- package: _packageName,
424
- env,
425
- toddle,
426
- }),
427
- ]),
393
+ return (contexts: Record<string, Record<string, unknown>>) => {
394
+ return renderNode({
395
+ id: child,
396
+ path: `${path}.${i}[${slotName}]`,
397
+ namespace,
398
+ node: component.nodes?.[child],
399
+ data: {
400
+ ...data,
401
+ Contexts: {
402
+ ...data.Contexts,
403
+ ...contexts,
404
+ [childComponent.name]: Object.fromEntries(
405
+ Object.entries(childComponent.formulas ?? {})
406
+ .filter(([, formula]) => formula.exposeInContext)
407
+ .map(([key, formula]) => [
408
+ key,
409
+ applyFormula(formula.formula, {
410
+ component: childComponent,
411
+ package: _packageName,
412
+ data: {
413
+ Contexts: {
414
+ ...data.Contexts,
415
+ ...Object.fromEntries(
416
+ Object.entries(childComponent.formulas ?? {})
417
+ .filter(
418
+ ([, formula]) => formula.exposeInContext,
419
+ )
420
+ .map(([key, formula]) => [
421
+ key,
422
+ applyFormula(formula.formula, {
423
+ data: {
424
+ Attributes: attrs,
425
+ Apis: { ...data.Apis, ...apis },
426
+ Location: data.Location,
427
+ Page: data.Page,
428
+ },
429
+ component,
430
+ package: _packageName,
431
+ env,
432
+ toddle,
433
+ }),
434
+ ]),
435
+ ),
436
+ },
437
+ Apis: apis,
438
+ Attributes: attrs,
439
+ Variables: mapValues(
440
+ childComponent.variables ?? {},
441
+ ({ initialValue }) => {
442
+ return applyFormula(initialValue, {
443
+ data: {
444
+ Attributes: attrs,
445
+ Location: data.Location,
446
+ Page: data.Page,
447
+ },
448
+ component,
449
+ package: _packageName,
450
+ env,
451
+ toddle,
452
+ })
453
+ },
428
454
  ),
429
455
  },
430
- Apis: apis,
431
- Attributes: attrs,
432
- Variables: mapValues(
433
- childComponent.variables ?? {},
434
- ({ initialValue }) => {
435
- return applyFormula(initialValue, {
436
- data: {
437
- Attributes: attrs,
438
- Location: data.Location,
439
- Page: data.Page,
440
- },
441
- component,
442
- package: _packageName,
443
- env,
444
- toddle,
445
- })
446
- },
447
- ),
448
- },
449
- env,
450
- toddle,
451
- }),
452
- ]),
453
- ),
456
+ env,
457
+ toddle,
458
+ }),
459
+ ]),
460
+ ),
461
+ },
454
462
  },
455
- },
456
- // pass package name to child component if it's defined
457
- packageName,
458
- })
463
+ // pass package name to child component if it's defined
464
+ packageName,
465
+ })
466
+ }
459
467
  }),
460
468
  )
461
469
 
462
- const children: Record<string, string> = {}
463
- childNodes.forEach((childNode, i) => {
470
+ const children: Record<string, SlottedContent> = {}
471
+ childNodes.forEach((renderFn, i) => {
464
472
  const childNodeId = node.children[i]
465
473
  // Add children to the correct slot in the right order
466
474
  const slotName =
467
475
  typeof childNodeId === 'string'
468
476
  ? (component.nodes?.[childNodeId]?.slot ?? 'default')
469
477
  : 'default'
470
- children[slotName] = `${children[slotName] ?? ''}${childNode}`
478
+
479
+ const existing = children[slotName]
480
+ if (existing) {
481
+ const previous =
482
+ typeof existing === 'function'
483
+ ? existing
484
+ : async () => existing as string
485
+ // Handle multiple elements in the same slot by appending
486
+ children[slotName] = async (contexts) => {
487
+ return (await previous(contexts)) + (await renderFn(contexts))
488
+ }
489
+ } else {
490
+ children[slotName] = renderFn
491
+ }
471
492
  })
472
493
 
473
494
  // Add extra instance styling for each style-variable
@@ -589,9 +610,9 @@ const createComponent = async ({
589
610
  })
590
611
  >
591
612
  attrs: Record<string, any>
592
- children?: Record<string, string>
613
+ children?: Record<string, SlottedContent>
593
614
  component: Component
594
- contexts?: Record<string, Record<string, any>>
615
+ contexts?: Record<string, Record<string, unknown>>
595
616
  env: ToddleServerEnv
596
617
  evaluateComponentApis: ApiEvaluator
597
618
  files: ProjectFiles
@@ -631,17 +652,20 @@ const createComponent = async ({
631
652
  // Own context formulas has access to all other data in the component (attributes, variables, apis etc.) so is applied last
632
653
  data.Contexts = {
633
654
  ...data.Contexts,
634
- ...Object.fromEntries(
635
- Object.entries(component.formulas ?? {})
636
- .filter(([, formula]) => formula.exposeInContext)
637
- .map(([key, formula]) => [
638
- key,
639
- applyFormula(formula.formula, {
640
- ...formulaContext,
641
- data,
642
- }),
643
- ]),
644
- ),
655
+ [component.name]: {
656
+ ...data.Contexts?.[component.name],
657
+ ...Object.fromEntries(
658
+ Object.entries(component.formulas ?? {})
659
+ .filter(([, formula]) => formula.exposeInContext)
660
+ .map(([key, formula]) => [
661
+ key,
662
+ applyFormula(formula.formula, {
663
+ ...formulaContext,
664
+ data,
665
+ }),
666
+ ]),
667
+ ),
668
+ },
645
669
  }
646
670
 
647
671
  return renderComponent({