@barefootjs/go-template 0.9.1 → 0.9.3

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.
@@ -30,6 +30,7 @@ export interface GoTemplateAdapterOptions {
30
30
  export declare class GoTemplateAdapter extends BaseAdapter implements ParsedExprEmitter, IRNodeEmitter<GoRenderCtx> {
31
31
  name: string;
32
32
  extension: string;
33
+ private static readonly SCOPE_SENTINEL;
33
34
  importMapInjection: 'html-snippet';
34
35
  private filterExprDepth;
35
36
  private filterExprUnsupported;
@@ -109,6 +110,10 @@ export declare class GoTemplateAdapter extends BaseAdapter implements ParsedExpr
109
110
  /** Set during type generation when any emit references
110
111
  * `template.HTML(...)`; toggles the `"html/template"` import. */
111
112
  private usesHtmlTemplate;
113
+ /** Component root scope element(s) — each carries `data-key` for a keyed loop
114
+ * item. A plain element root is one node; an `if-statement` (early-return)
115
+ * root contributes the top element of every branch. (#1297) */
116
+ private rootScopeNodes;
112
117
  /** Set during type generation when any emit references
113
118
  * `fmt.Sprint(...)` — e.g. a `Record<staticKeys, scalar>[propKey]`
114
119
  * indexed-map spread value (#checkbox); toggles the `"fmt"` import. */
@@ -367,7 +372,23 @@ export declare class GoTemplateAdapter extends BaseAdapter implements ParsedExpr
367
372
  * "drop children" fallback. Dynamic / component-bearing children
368
373
  * stay on the drop path until a re-evaluation hook lands.
369
374
  */
375
+ /**
376
+ * Pull the IR nodes out of a `children={<…/>}` attribute (a `jsx-children`
377
+ * prop value). Empty when the component takes no such prop. (#1326 / #1335)
378
+ */
379
+ private jsxChildrenPropNodes;
370
380
  private extractHtmlChildren;
381
+ /**
382
+ * Build a Go string-concat expression for hoisted-JSX children whose root
383
+ * carries `needsScope` (`children={<span/>}` — #1326 / #1335). Such roots
384
+ * render in the PARENT's scope, so their `bf-s` is the runtime parent
385
+ * `scopeID`, not a bake-time constant. We render the fragment, swap the
386
+ * parent-scope hydration marker for a sentinel, and splice `scopeID` back
387
+ * in. Returns null when the plain static `childrenHtml` path already
388
+ * applies, or when any other template action survives (genuinely dynamic —
389
+ * those stay on the drop path).
390
+ */
391
+ private extractScopedHtmlChildren;
371
392
  private collectStaticChildInstancesRecursive;
372
393
  /**
373
394
  * Extend the active provider-context map with one `<Ctx.Provider value>`. A
@@ -1 +1 @@
1
- {"version":3,"file":"go-template-adapter.d.ts","sourceRoot":"","sources":["../../src/adapter/go-template-adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"go-template-adapter.d.ts","sourceRoot":"","sources":["../../src/adapter/go-template-adapter.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Go html/template Adapter Exports
3
3
  */
4
- export { GoTemplateAdapter, goTemplateAdapter } from './go-template-adapter';
5
- export type { GoTemplateAdapterOptions } from './go-template-adapter';
4
+ export { GoTemplateAdapter, goTemplateAdapter } from './go-template-adapter.ts';
5
+ export type { GoTemplateAdapterOptions } from './go-template-adapter.ts';
6
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/adapter/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AAC5E,YAAY,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/adapter/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAC/E,YAAY,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAA"}
@@ -69,6 +69,42 @@ function capitalize(s) {
69
69
  }
70
70
  return s[0].toUpperCase() + s.slice(1);
71
71
  }
72
+ function loopKeyToGoFieldPath(key, param) {
73
+ if (!key || !param)
74
+ return null;
75
+ const segs = key.split(".");
76
+ if (segs[0] !== param)
77
+ return null;
78
+ const rest = segs.slice(1);
79
+ if (rest.length === 0)
80
+ return null;
81
+ if (!rest.every((s) => /^[A-Za-z_]\w*$/.test(s)))
82
+ return null;
83
+ return "item." + rest.map(capitalize).join(".");
84
+ }
85
+ function collectRootScopeNodes(node) {
86
+ const out = new Set;
87
+ const visit = (n) => {
88
+ if (!n)
89
+ return;
90
+ if (n.type === "element") {
91
+ out.add(n);
92
+ return;
93
+ }
94
+ if (n.type === "if-statement") {
95
+ const s = n;
96
+ visit(s.consequent);
97
+ visit(s.alternate);
98
+ return;
99
+ }
100
+ if (n.type === "fragment") {
101
+ for (const c of n.children)
102
+ visit(c);
103
+ }
104
+ };
105
+ visit(node);
106
+ return out;
107
+ }
72
108
  function slotIdToFieldSuffix(slotId) {
73
109
  const cleanId = slotId.startsWith("^") ? slotId.slice(1) : slotId;
74
110
  const match = cleanId.match(/^s(\d+)$/);
@@ -101,6 +137,7 @@ var GO_TEMPLATE_PRIMITIVES = {
101
137
  class GoTemplateAdapter extends BaseAdapter {
102
138
  name = "go-template";
103
139
  extension = ".tmpl";
140
+ static SCOPE_SENTINEL = "__BF_SCOPE_SENTINEL__";
104
141
  importMapInjection = "html-snippet";
105
142
  filterExprDepth = 0;
106
143
  filterExprUnsupported = false;
@@ -120,6 +157,7 @@ class GoTemplateAdapter extends BaseAdapter {
120
157
  localStructFields = new Map;
121
158
  synthStructTypes = new Map;
122
159
  usesHtmlTemplate = false;
160
+ rootScopeNodes = new Set;
123
161
  usesFmt = false;
124
162
  childComponentShapes = new Map;
125
163
  moduleStringConsts = new Map;
@@ -152,6 +190,7 @@ class GoTemplateAdapter extends BaseAdapter {
152
190
  const hasInteractivity = this.hasClientInteractivity(ir);
153
191
  const isRootComponent = ir.root.type === "component";
154
192
  const isIfStatement = ir.root.type === "if-statement";
193
+ this.rootScopeNodes = collectRootScopeNodes(ir.root);
155
194
  const templateBody = isIfStatement ? this.renderIfStatement(ir.root, { isRootOfClientComponent: hasInteractivity }) : this.renderNode(ir.root, { isRootOfClientComponent: hasInteractivity && isRootComponent });
156
195
  const scriptRegistrations = options?.skipScriptRegistration ? "" : this.generateScriptRegistrations(ir, options?.scriptBaseName);
157
196
  const template = `{{define "${this.componentName}"}}
@@ -683,6 +722,7 @@ ${goFields.join(`
683
722
  lines.push('\tBfIsChild bool `json:"-"`');
684
723
  lines.push('\tBfParent string `json:"-"`');
685
724
  lines.push('\tBfMount string `json:"-"`');
725
+ lines.push('\tBfDataKey string `json:"-"`');
686
726
  lines.push('\tScripts *bf.ScriptCollector `json:"-"`');
687
727
  const nestedArrayFields = new Set(nestedComponents.map((n) => `${n.name}s`));
688
728
  const propFieldNames = new Set;
@@ -798,6 +838,11 @@ ${goFields.join(`
798
838
  lines.push(` ${varName}[i] = New${nested.name}Props(item)`);
799
839
  lines.push(` ${varName}[i].BfParent = scopeID`);
800
840
  lines.push(` ${varName}[i].BfMount = "${nested.slotId}"`);
841
+ const keyField = loopKeyToGoFieldPath(nested.loopKey, nested.loopParam);
842
+ if (keyField) {
843
+ lines.push(` ${varName}[i].BfDataKey = fmt.Sprint(${keyField})`);
844
+ this.usesFmt = true;
845
+ }
801
846
  lines.push("\t}");
802
847
  lines.push("");
803
848
  }
@@ -934,6 +979,9 @@ ${goFields.join(`
934
979
  } else if (child.childrenHtml !== null) {
935
980
  this.usesHtmlTemplate = true;
936
981
  lines.push(` Children: template.HTML(${JSON.stringify(child.childrenHtml)}),`);
982
+ } else if (child.childrenScopedHtmlExpr !== null) {
983
+ this.usesHtmlTemplate = true;
984
+ lines.push(` Children: template.HTML(${child.childrenScopedHtmlExpr}),`);
937
985
  }
938
986
  lines.push(` }),`);
939
987
  }
@@ -972,7 +1020,9 @@ ${goFields.join(`
972
1020
  result.push({
973
1021
  ...loop.childComponent,
974
1022
  isDynamic: !loop.isStaticArray,
975
- isPropDerived: !!loop.isPropDerivedArray
1023
+ isPropDerived: !!loop.isPropDerivedArray,
1024
+ loopKey: loop.key ?? undefined,
1025
+ loopParam: loop.param ?? undefined
976
1026
  });
977
1027
  }
978
1028
  }
@@ -1013,6 +1063,13 @@ ${goFields.join(`
1013
1063
  }
1014
1064
  return out;
1015
1065
  }
1066
+ jsxChildrenPropNodes(props) {
1067
+ for (const p of props) {
1068
+ if (p.value.kind === "jsx-children")
1069
+ return p.value.children;
1070
+ }
1071
+ return [];
1072
+ }
1016
1073
  extractHtmlChildren(children) {
1017
1074
  if (children.length === 0)
1018
1075
  return null;
@@ -1023,6 +1080,20 @@ ${goFields.join(`
1023
1080
  return null;
1024
1081
  return html;
1025
1082
  }
1083
+ extractScopedHtmlChildren(children) {
1084
+ if (children.length === 0)
1085
+ return null;
1086
+ if (children.every((c) => c.type === "text"))
1087
+ return null;
1088
+ const html = this.renderChildren(children);
1089
+ const marker = this.renderScopeMarker(".ScopeID");
1090
+ const withSentinel = html.split(marker).join(`bf-s="${GoTemplateAdapter.SCOPE_SENTINEL}"`);
1091
+ if (!withSentinel.includes(GoTemplateAdapter.SCOPE_SENTINEL))
1092
+ return null;
1093
+ if (withSentinel.includes("{{"))
1094
+ return null;
1095
+ return withSentinel.split(GoTemplateAdapter.SCOPE_SENTINEL).map((seg) => JSON.stringify(seg)).join(" + scopeID + ");
1096
+ }
1026
1097
  collectStaticChildInstancesRecursive(node, result, inLoop, providerCtx) {
1027
1098
  if (node.type === "component") {
1028
1099
  const comp = node;
@@ -1034,13 +1105,15 @@ ${goFields.join(`
1034
1105
  }
1035
1106
  if (comp.name !== "Portal" && !inLoop && comp.slotId) {
1036
1107
  const suffix = slotIdToFieldSuffix(comp.slotId);
1108
+ const effectiveChildren = comp.children.length > 0 ? comp.children : this.jsxChildrenPropNodes(comp.props);
1037
1109
  result.push({
1038
1110
  name: comp.name,
1039
1111
  slotId: comp.slotId,
1040
1112
  props: comp.props,
1041
1113
  fieldName: `${comp.name}${suffix}`,
1042
- childrenText: this.extractTextChildren(comp.children),
1043
- childrenHtml: this.extractHtmlChildren(comp.children),
1114
+ childrenText: this.extractTextChildren(effectiveChildren),
1115
+ childrenHtml: this.extractHtmlChildren(effectiveChildren),
1116
+ childrenScopedHtmlExpr: this.extractScopedHtmlChildren(effectiveChildren),
1044
1117
  contextBindings: providerCtx.size > 0 ? providerCtx : undefined
1045
1118
  });
1046
1119
  }
@@ -2153,6 +2226,9 @@ ${goFields.join(`
2153
2226
  if (element.needsScope) {
2154
2227
  hydrationAttrs += ` ${this.renderScopeMarker(".ScopeID")}`;
2155
2228
  }
2229
+ if (this.rootScopeNodes.has(element) && element.needsScope) {
2230
+ hydrationAttrs += `{{if .BfDataKey}} data-key="{{.BfDataKey}}"{{end}}`;
2231
+ }
2156
2232
  if (element.slotId) {
2157
2233
  hydrationAttrs += ` ${this.renderSlotMarker(element.slotId)}`;
2158
2234
  }
package/dist/build.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import type { BuildOptions, PostBuildContext } from '@barefootjs/jsx';
2
- import { GoTemplateAdapter } from './adapter';
3
- import type { GoTemplateAdapterOptions } from './adapter';
2
+ import { GoTemplateAdapter } from './adapter/index.ts';
3
+ import type { GoTemplateAdapterOptions } from './adapter/index.ts';
4
4
  export interface GoTemplateBuildOptions extends BuildOptions {
5
5
  /** Adapter-specific options passed to GoTemplateAdapter */
6
6
  adapterOptions?: GoTemplateAdapterOptions;
@@ -1 +1 @@
1
- {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../src/build.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAC7C,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAA;AAEzD,MAAM,WAAW,sBAAuB,SAAQ,YAAY;IAC1D,2DAA2D;IAC3D,cAAc,CAAC,EAAE,wBAAwB,CAAA;IACzC,gGAAgG;IAChG,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,uFAAuF;IACvF,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAA;IAC1C,2FAA2F;IAC3F,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAID;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CA0C1D;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAmD3D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE;IACtC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC1B,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAA;CAC3C,GAAG,MAAM,CAyDT;AAID;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,OAAO,GAAE,sBAA2B;IAyC7D,OAAO;IACP,KAAK;IACL,UAAU;IACV,MAAM;IACN,MAAM;IACN,WAAW;IACX,SAAS;IACT,iBAAiB;IACjB,aAAa;IACb,mBAAmB;IACnB,YAAY;IAKZ,SAAS,QApDmB,gBAAgB;EAsD/C"}
1
+ {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../src/build.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAA;AAElE,MAAM,WAAW,sBAAuB,SAAQ,YAAY;IAC1D,2DAA2D;IAC3D,cAAc,CAAC,EAAE,wBAAwB,CAAA;IACzC,gGAAgG;IAChG,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,uFAAuF;IACvF,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAA;IAC1C,2FAA2F;IAC3F,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAID;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CA0C1D;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAmD3D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE;IACtC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC1B,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAA;CAC3C,GAAG,MAAM,CAsET;AAID;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,OAAO,GAAE,sBAA2B;IAyC7D,OAAO;IACP,KAAK;IACL,UAAU;IACV,MAAM;IACN,MAAM;IACN,WAAW;IACX,SAAS;IACT,iBAAiB;IACjB,aAAa;IACb,mBAAmB;IACnB,YAAY;IAKZ,SAAS,QApDmB,gBAAgB;EAsD/C"}
package/dist/build.js CHANGED
@@ -409,6 +409,42 @@ function capitalize(s) {
409
409
  }
410
410
  return s[0].toUpperCase() + s.slice(1);
411
411
  }
412
+ function loopKeyToGoFieldPath(key, param) {
413
+ if (!key || !param)
414
+ return null;
415
+ const segs = key.split(".");
416
+ if (segs[0] !== param)
417
+ return null;
418
+ const rest = segs.slice(1);
419
+ if (rest.length === 0)
420
+ return null;
421
+ if (!rest.every((s) => /^[A-Za-z_]\w*$/.test(s)))
422
+ return null;
423
+ return "item." + rest.map(capitalize).join(".");
424
+ }
425
+ function collectRootScopeNodes(node) {
426
+ const out = new Set;
427
+ const visit = (n) => {
428
+ if (!n)
429
+ return;
430
+ if (n.type === "element") {
431
+ out.add(n);
432
+ return;
433
+ }
434
+ if (n.type === "if-statement") {
435
+ const s = n;
436
+ visit(s.consequent);
437
+ visit(s.alternate);
438
+ return;
439
+ }
440
+ if (n.type === "fragment") {
441
+ for (const c of n.children)
442
+ visit(c);
443
+ }
444
+ };
445
+ visit(node);
446
+ return out;
447
+ }
412
448
  function slotIdToFieldSuffix(slotId) {
413
449
  const cleanId = slotId.startsWith("^") ? slotId.slice(1) : slotId;
414
450
  const match = cleanId.match(/^s(\d+)$/);
@@ -441,6 +477,7 @@ var GO_TEMPLATE_PRIMITIVES = {
441
477
  class GoTemplateAdapter extends BaseAdapter {
442
478
  name = "go-template";
443
479
  extension = ".tmpl";
480
+ static SCOPE_SENTINEL = "__BF_SCOPE_SENTINEL__";
444
481
  importMapInjection = "html-snippet";
445
482
  filterExprDepth = 0;
446
483
  filterExprUnsupported = false;
@@ -460,6 +497,7 @@ class GoTemplateAdapter extends BaseAdapter {
460
497
  localStructFields = new Map;
461
498
  synthStructTypes = new Map;
462
499
  usesHtmlTemplate = false;
500
+ rootScopeNodes = new Set;
463
501
  usesFmt = false;
464
502
  childComponentShapes = new Map;
465
503
  moduleStringConsts = new Map;
@@ -492,6 +530,7 @@ class GoTemplateAdapter extends BaseAdapter {
492
530
  const hasInteractivity = this.hasClientInteractivity(ir);
493
531
  const isRootComponent = ir.root.type === "component";
494
532
  const isIfStatement = ir.root.type === "if-statement";
533
+ this.rootScopeNodes = collectRootScopeNodes(ir.root);
495
534
  const templateBody = isIfStatement ? this.renderIfStatement(ir.root, { isRootOfClientComponent: hasInteractivity }) : this.renderNode(ir.root, { isRootOfClientComponent: hasInteractivity && isRootComponent });
496
535
  const scriptRegistrations = options?.skipScriptRegistration ? "" : this.generateScriptRegistrations(ir, options?.scriptBaseName);
497
536
  const template = `{{define "${this.componentName}"}}
@@ -1023,6 +1062,7 @@ ${goFields.join(`
1023
1062
  lines.push('\tBfIsChild bool `json:"-"`');
1024
1063
  lines.push('\tBfParent string `json:"-"`');
1025
1064
  lines.push('\tBfMount string `json:"-"`');
1065
+ lines.push('\tBfDataKey string `json:"-"`');
1026
1066
  lines.push('\tScripts *bf.ScriptCollector `json:"-"`');
1027
1067
  const nestedArrayFields = new Set(nestedComponents.map((n) => `${n.name}s`));
1028
1068
  const propFieldNames = new Set;
@@ -1138,6 +1178,11 @@ ${goFields.join(`
1138
1178
  lines.push(` ${varName}[i] = New${nested.name}Props(item)`);
1139
1179
  lines.push(` ${varName}[i].BfParent = scopeID`);
1140
1180
  lines.push(` ${varName}[i].BfMount = "${nested.slotId}"`);
1181
+ const keyField = loopKeyToGoFieldPath(nested.loopKey, nested.loopParam);
1182
+ if (keyField) {
1183
+ lines.push(` ${varName}[i].BfDataKey = fmt.Sprint(${keyField})`);
1184
+ this.usesFmt = true;
1185
+ }
1141
1186
  lines.push("\t}");
1142
1187
  lines.push("");
1143
1188
  }
@@ -1274,6 +1319,9 @@ ${goFields.join(`
1274
1319
  } else if (child.childrenHtml !== null) {
1275
1320
  this.usesHtmlTemplate = true;
1276
1321
  lines.push(` Children: template.HTML(${JSON.stringify(child.childrenHtml)}),`);
1322
+ } else if (child.childrenScopedHtmlExpr !== null) {
1323
+ this.usesHtmlTemplate = true;
1324
+ lines.push(` Children: template.HTML(${child.childrenScopedHtmlExpr}),`);
1277
1325
  }
1278
1326
  lines.push(` }),`);
1279
1327
  }
@@ -1312,7 +1360,9 @@ ${goFields.join(`
1312
1360
  result.push({
1313
1361
  ...loop.childComponent,
1314
1362
  isDynamic: !loop.isStaticArray,
1315
- isPropDerived: !!loop.isPropDerivedArray
1363
+ isPropDerived: !!loop.isPropDerivedArray,
1364
+ loopKey: loop.key ?? undefined,
1365
+ loopParam: loop.param ?? undefined
1316
1366
  });
1317
1367
  }
1318
1368
  }
@@ -1353,6 +1403,13 @@ ${goFields.join(`
1353
1403
  }
1354
1404
  return out;
1355
1405
  }
1406
+ jsxChildrenPropNodes(props) {
1407
+ for (const p of props) {
1408
+ if (p.value.kind === "jsx-children")
1409
+ return p.value.children;
1410
+ }
1411
+ return [];
1412
+ }
1356
1413
  extractHtmlChildren(children) {
1357
1414
  if (children.length === 0)
1358
1415
  return null;
@@ -1363,6 +1420,20 @@ ${goFields.join(`
1363
1420
  return null;
1364
1421
  return html;
1365
1422
  }
1423
+ extractScopedHtmlChildren(children) {
1424
+ if (children.length === 0)
1425
+ return null;
1426
+ if (children.every((c) => c.type === "text"))
1427
+ return null;
1428
+ const html = this.renderChildren(children);
1429
+ const marker = this.renderScopeMarker(".ScopeID");
1430
+ const withSentinel = html.split(marker).join(`bf-s="${GoTemplateAdapter.SCOPE_SENTINEL}"`);
1431
+ if (!withSentinel.includes(GoTemplateAdapter.SCOPE_SENTINEL))
1432
+ return null;
1433
+ if (withSentinel.includes("{{"))
1434
+ return null;
1435
+ return withSentinel.split(GoTemplateAdapter.SCOPE_SENTINEL).map((seg) => JSON.stringify(seg)).join(" + scopeID + ");
1436
+ }
1366
1437
  collectStaticChildInstancesRecursive(node, result, inLoop, providerCtx) {
1367
1438
  if (node.type === "component") {
1368
1439
  const comp = node;
@@ -1374,13 +1445,15 @@ ${goFields.join(`
1374
1445
  }
1375
1446
  if (comp.name !== "Portal" && !inLoop && comp.slotId) {
1376
1447
  const suffix = slotIdToFieldSuffix(comp.slotId);
1448
+ const effectiveChildren = comp.children.length > 0 ? comp.children : this.jsxChildrenPropNodes(comp.props);
1377
1449
  result.push({
1378
1450
  name: comp.name,
1379
1451
  slotId: comp.slotId,
1380
1452
  props: comp.props,
1381
1453
  fieldName: `${comp.name}${suffix}`,
1382
- childrenText: this.extractTextChildren(comp.children),
1383
- childrenHtml: this.extractHtmlChildren(comp.children),
1454
+ childrenText: this.extractTextChildren(effectiveChildren),
1455
+ childrenHtml: this.extractHtmlChildren(effectiveChildren),
1456
+ childrenScopedHtmlExpr: this.extractScopedHtmlChildren(effectiveChildren),
1384
1457
  contextBindings: providerCtx.size > 0 ? providerCtx : undefined
1385
1458
  });
1386
1459
  }
@@ -2493,6 +2566,9 @@ ${goFields.join(`
2493
2566
  if (element.needsScope) {
2494
2567
  hydrationAttrs += ` ${this.renderScopeMarker(".ScopeID")}`;
2495
2568
  }
2569
+ if (this.rootScopeNodes.has(element) && element.needsScope) {
2570
+ hydrationAttrs += `{{if .BfDataKey}} data-key="{{.BfDataKey}}"{{end}}`;
2571
+ }
2496
2572
  if (element.slotId) {
2497
2573
  hydrationAttrs += ` ${this.renderSlotMarker(element.slotId)}`;
2498
2574
  }
@@ -4026,12 +4102,20 @@ function combineGoTypes(options) {
4026
4102
  if (transformTypes) {
4027
4103
  combinedContent = transformTypes(combinedContent);
4028
4104
  }
4105
+ const usageScan = combinedContent + `
4106
+ ` + (manualTypes ?? "");
4107
+ const stdlibImports = [` "math/rand"`];
4108
+ if (/\bfmt\./.test(usageScan))
4109
+ stdlibImports.push(` "fmt"`);
4110
+ if (/\btemplate\.HTML\b/.test(usageScan))
4111
+ stdlibImports.push(` "html/template"`);
4112
+ stdlibImports.sort();
4029
4113
  const parts = [
4030
4114
  `// Code generated by BarefootJS. DO NOT EDIT.`,
4031
4115
  `package ${packageName}`,
4032
4116
  "",
4033
4117
  `import (`,
4034
- ` "math/rand"`,
4118
+ ...stdlibImports,
4035
4119
  "",
4036
4120
  ` bf "github.com/barefootjs/runtime/bf"`,
4037
4121
  `)`,
package/dist/index.d.ts CHANGED
@@ -3,6 +3,6 @@
3
3
  *
4
4
  * Generates Go html/template files from BarefootJS IR.
5
5
  */
6
- export { GoTemplateAdapter, goTemplateAdapter } from './adapter';
7
- export type { GoTemplateAdapterOptions } from './adapter';
6
+ export { GoTemplateAdapter, goTemplateAdapter } from './adapter/index.ts';
7
+ export type { GoTemplateAdapterOptions } from './adapter/index.ts';
8
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAChE,YAAY,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AACzE,YAAY,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAA"}
package/dist/index.js CHANGED
@@ -69,6 +69,42 @@ function capitalize(s) {
69
69
  }
70
70
  return s[0].toUpperCase() + s.slice(1);
71
71
  }
72
+ function loopKeyToGoFieldPath(key, param) {
73
+ if (!key || !param)
74
+ return null;
75
+ const segs = key.split(".");
76
+ if (segs[0] !== param)
77
+ return null;
78
+ const rest = segs.slice(1);
79
+ if (rest.length === 0)
80
+ return null;
81
+ if (!rest.every((s) => /^[A-Za-z_]\w*$/.test(s)))
82
+ return null;
83
+ return "item." + rest.map(capitalize).join(".");
84
+ }
85
+ function collectRootScopeNodes(node) {
86
+ const out = new Set;
87
+ const visit = (n) => {
88
+ if (!n)
89
+ return;
90
+ if (n.type === "element") {
91
+ out.add(n);
92
+ return;
93
+ }
94
+ if (n.type === "if-statement") {
95
+ const s = n;
96
+ visit(s.consequent);
97
+ visit(s.alternate);
98
+ return;
99
+ }
100
+ if (n.type === "fragment") {
101
+ for (const c of n.children)
102
+ visit(c);
103
+ }
104
+ };
105
+ visit(node);
106
+ return out;
107
+ }
72
108
  function slotIdToFieldSuffix(slotId) {
73
109
  const cleanId = slotId.startsWith("^") ? slotId.slice(1) : slotId;
74
110
  const match = cleanId.match(/^s(\d+)$/);
@@ -101,6 +137,7 @@ var GO_TEMPLATE_PRIMITIVES = {
101
137
  class GoTemplateAdapter extends BaseAdapter {
102
138
  name = "go-template";
103
139
  extension = ".tmpl";
140
+ static SCOPE_SENTINEL = "__BF_SCOPE_SENTINEL__";
104
141
  importMapInjection = "html-snippet";
105
142
  filterExprDepth = 0;
106
143
  filterExprUnsupported = false;
@@ -120,6 +157,7 @@ class GoTemplateAdapter extends BaseAdapter {
120
157
  localStructFields = new Map;
121
158
  synthStructTypes = new Map;
122
159
  usesHtmlTemplate = false;
160
+ rootScopeNodes = new Set;
123
161
  usesFmt = false;
124
162
  childComponentShapes = new Map;
125
163
  moduleStringConsts = new Map;
@@ -152,6 +190,7 @@ class GoTemplateAdapter extends BaseAdapter {
152
190
  const hasInteractivity = this.hasClientInteractivity(ir);
153
191
  const isRootComponent = ir.root.type === "component";
154
192
  const isIfStatement = ir.root.type === "if-statement";
193
+ this.rootScopeNodes = collectRootScopeNodes(ir.root);
155
194
  const templateBody = isIfStatement ? this.renderIfStatement(ir.root, { isRootOfClientComponent: hasInteractivity }) : this.renderNode(ir.root, { isRootOfClientComponent: hasInteractivity && isRootComponent });
156
195
  const scriptRegistrations = options?.skipScriptRegistration ? "" : this.generateScriptRegistrations(ir, options?.scriptBaseName);
157
196
  const template = `{{define "${this.componentName}"}}
@@ -683,6 +722,7 @@ ${goFields.join(`
683
722
  lines.push('\tBfIsChild bool `json:"-"`');
684
723
  lines.push('\tBfParent string `json:"-"`');
685
724
  lines.push('\tBfMount string `json:"-"`');
725
+ lines.push('\tBfDataKey string `json:"-"`');
686
726
  lines.push('\tScripts *bf.ScriptCollector `json:"-"`');
687
727
  const nestedArrayFields = new Set(nestedComponents.map((n) => `${n.name}s`));
688
728
  const propFieldNames = new Set;
@@ -798,6 +838,11 @@ ${goFields.join(`
798
838
  lines.push(` ${varName}[i] = New${nested.name}Props(item)`);
799
839
  lines.push(` ${varName}[i].BfParent = scopeID`);
800
840
  lines.push(` ${varName}[i].BfMount = "${nested.slotId}"`);
841
+ const keyField = loopKeyToGoFieldPath(nested.loopKey, nested.loopParam);
842
+ if (keyField) {
843
+ lines.push(` ${varName}[i].BfDataKey = fmt.Sprint(${keyField})`);
844
+ this.usesFmt = true;
845
+ }
801
846
  lines.push("\t}");
802
847
  lines.push("");
803
848
  }
@@ -934,6 +979,9 @@ ${goFields.join(`
934
979
  } else if (child.childrenHtml !== null) {
935
980
  this.usesHtmlTemplate = true;
936
981
  lines.push(` Children: template.HTML(${JSON.stringify(child.childrenHtml)}),`);
982
+ } else if (child.childrenScopedHtmlExpr !== null) {
983
+ this.usesHtmlTemplate = true;
984
+ lines.push(` Children: template.HTML(${child.childrenScopedHtmlExpr}),`);
937
985
  }
938
986
  lines.push(` }),`);
939
987
  }
@@ -972,7 +1020,9 @@ ${goFields.join(`
972
1020
  result.push({
973
1021
  ...loop.childComponent,
974
1022
  isDynamic: !loop.isStaticArray,
975
- isPropDerived: !!loop.isPropDerivedArray
1023
+ isPropDerived: !!loop.isPropDerivedArray,
1024
+ loopKey: loop.key ?? undefined,
1025
+ loopParam: loop.param ?? undefined
976
1026
  });
977
1027
  }
978
1028
  }
@@ -1013,6 +1063,13 @@ ${goFields.join(`
1013
1063
  }
1014
1064
  return out;
1015
1065
  }
1066
+ jsxChildrenPropNodes(props) {
1067
+ for (const p of props) {
1068
+ if (p.value.kind === "jsx-children")
1069
+ return p.value.children;
1070
+ }
1071
+ return [];
1072
+ }
1016
1073
  extractHtmlChildren(children) {
1017
1074
  if (children.length === 0)
1018
1075
  return null;
@@ -1023,6 +1080,20 @@ ${goFields.join(`
1023
1080
  return null;
1024
1081
  return html;
1025
1082
  }
1083
+ extractScopedHtmlChildren(children) {
1084
+ if (children.length === 0)
1085
+ return null;
1086
+ if (children.every((c) => c.type === "text"))
1087
+ return null;
1088
+ const html = this.renderChildren(children);
1089
+ const marker = this.renderScopeMarker(".ScopeID");
1090
+ const withSentinel = html.split(marker).join(`bf-s="${GoTemplateAdapter.SCOPE_SENTINEL}"`);
1091
+ if (!withSentinel.includes(GoTemplateAdapter.SCOPE_SENTINEL))
1092
+ return null;
1093
+ if (withSentinel.includes("{{"))
1094
+ return null;
1095
+ return withSentinel.split(GoTemplateAdapter.SCOPE_SENTINEL).map((seg) => JSON.stringify(seg)).join(" + scopeID + ");
1096
+ }
1026
1097
  collectStaticChildInstancesRecursive(node, result, inLoop, providerCtx) {
1027
1098
  if (node.type === "component") {
1028
1099
  const comp = node;
@@ -1034,13 +1105,15 @@ ${goFields.join(`
1034
1105
  }
1035
1106
  if (comp.name !== "Portal" && !inLoop && comp.slotId) {
1036
1107
  const suffix = slotIdToFieldSuffix(comp.slotId);
1108
+ const effectiveChildren = comp.children.length > 0 ? comp.children : this.jsxChildrenPropNodes(comp.props);
1037
1109
  result.push({
1038
1110
  name: comp.name,
1039
1111
  slotId: comp.slotId,
1040
1112
  props: comp.props,
1041
1113
  fieldName: `${comp.name}${suffix}`,
1042
- childrenText: this.extractTextChildren(comp.children),
1043
- childrenHtml: this.extractHtmlChildren(comp.children),
1114
+ childrenText: this.extractTextChildren(effectiveChildren),
1115
+ childrenHtml: this.extractHtmlChildren(effectiveChildren),
1116
+ childrenScopedHtmlExpr: this.extractScopedHtmlChildren(effectiveChildren),
1044
1117
  contextBindings: providerCtx.size > 0 ? providerCtx : undefined
1045
1118
  });
1046
1119
  }
@@ -2153,6 +2226,9 @@ ${goFields.join(`
2153
2226
  if (element.needsScope) {
2154
2227
  hydrationAttrs += ` ${this.renderScopeMarker(".ScopeID")}`;
2155
2228
  }
2229
+ if (this.rootScopeNodes.has(element) && element.needsScope) {
2230
+ hydrationAttrs += `{{if .BfDataKey}} data-key="{{.BfDataKey}}"{{end}}`;
2231
+ }
2156
2232
  if (element.slotId) {
2157
2233
  hydrationAttrs += ` ${this.renderSlotMarker(element.slotId)}`;
2158
2234
  }