@prismicio/types-internal 4.0.0-pr.6.e3136c3 → 4.0.0-pr.7.9dec8db

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 (164) hide show
  1. package/README.md +5 -5
  2. package/dist/content/codec/link.js +8 -8
  3. package/dist/content/codec/link.js.map +1 -1
  4. package/dist/content/codec/richText.js +2 -2
  5. package/dist/content/codec/richText.js.map +1 -1
  6. package/dist/content/document.d.ts +2 -3019
  7. package/dist/content/document.d.ts.map +1 -1
  8. package/dist/content/field.d.ts +1 -30
  9. package/dist/content/field.d.ts.map +1 -1
  10. package/dist/content/field.js.map +1 -1
  11. package/dist/content/group.d.ts +2 -1
  12. package/dist/content/group.d.ts.map +1 -1
  13. package/dist/content/group.js.map +1 -1
  14. package/dist/content/legacy/boolean.d.ts +1 -0
  15. package/dist/content/legacy/embed.d.ts +1 -0
  16. package/dist/content/legacy/empty.d.ts +1 -0
  17. package/dist/content/legacy/field.d.ts +1 -0
  18. package/dist/content/legacy/geopoint.d.ts +1 -0
  19. package/dist/content/legacy/group.d.ts +9 -0
  20. package/dist/content/legacy/group.d.ts.map +1 -0
  21. package/dist/content/legacy/group.js.map +1 -1
  22. package/dist/content/legacy/integrationField.d.ts +1 -0
  23. package/dist/content/legacy/link.d.ts +41 -0
  24. package/dist/content/legacy/link.d.ts.map +1 -0
  25. package/dist/content/legacy/link.js.map +1 -1
  26. package/dist/content/legacy/nestable.d.ts +1 -0
  27. package/dist/content/legacy/nestable.js.map +1 -1
  28. package/dist/content/legacy/repeatable.d.ts +1 -0
  29. package/dist/content/legacy/repeatable.js +2 -8
  30. package/dist/content/legacy/repeatable.js.map +1 -1
  31. package/dist/content/legacy/richText.d.ts +109 -0
  32. package/dist/content/legacy/richText.d.ts.map +1 -0
  33. package/dist/content/legacy/richText.js +3 -3
  34. package/dist/content/legacy/richText.js.map +1 -1
  35. package/dist/content/legacy/separator.d.ts +1 -0
  36. package/dist/content/legacy/slice.js +2 -3
  37. package/dist/content/legacy/slice.js.map +1 -1
  38. package/dist/content/legacy/table.d.ts +1 -0
  39. package/dist/content/link.d.ts +74 -99
  40. package/dist/content/link.d.ts.map +1 -1
  41. package/dist/content/link.js +2 -2
  42. package/dist/content/link.js.map +1 -1
  43. package/dist/content/nestable.d.ts +13 -749
  44. package/dist/content/nestable.d.ts.map +1 -1
  45. package/dist/content/nestable.js +1 -0
  46. package/dist/content/nestable.js.map +1 -1
  47. package/dist/content/repeatable.d.ts +3 -98
  48. package/dist/content/repeatable.d.ts.map +1 -1
  49. package/dist/content/richText.d.ts +81 -131
  50. package/dist/content/richText.d.ts.map +1 -1
  51. package/dist/content/richText.js +5 -4
  52. package/dist/content/richText.js.map +1 -1
  53. package/dist/content/slice.d.ts +6 -4509
  54. package/dist/content/slice.d.ts.map +1 -1
  55. package/dist/content/slice.js.map +1 -1
  56. package/dist/content/slices.d.ts +8 -6765
  57. package/dist/content/slices.d.ts.map +1 -1
  58. package/dist/content/table.d.ts +2 -134
  59. package/dist/content/table.d.ts.map +1 -1
  60. package/dist/content/widget.d.ts +5 -3020
  61. package/dist/content/widget.d.ts.map +1 -1
  62. package/dist/content/widget.js.map +1 -1
  63. package/dist/helpers/contentPath.js +1 -1
  64. package/dist/helpers/customTypeModel.d.ts +3 -2
  65. package/dist/helpers/customTypeModel.d.ts.map +1 -1
  66. package/dist/helpers/customTypeModel.js +31 -1
  67. package/dist/helpers/customTypeModel.js.map +1 -1
  68. package/dist/helpers/documentContent.d.ts +5 -10
  69. package/dist/helpers/documentContent.d.ts.map +1 -1
  70. package/dist/helpers/documentContent.js +18 -5
  71. package/dist/helpers/documentContent.js.map +1 -1
  72. package/dist/helpers/sliceContent.d.ts +12 -0
  73. package/dist/helpers/sliceContent.d.ts.map +1 -0
  74. package/dist/helpers/sliceContent.js +60 -0
  75. package/dist/helpers/sliceContent.js.map +1 -0
  76. package/dist/helpers/traverseContent.d.ts +21 -22
  77. package/dist/helpers/traverseContent.d.ts.map +1 -1
  78. package/dist/helpers/traverseContent.js +54 -22
  79. package/dist/helpers/traverseContent.js.map +1 -1
  80. package/dist/helpers/traverseContentWithModel.d.ts +20 -21
  81. package/dist/helpers/traverseContentWithModel.d.ts.map +1 -1
  82. package/dist/helpers/traverseContentWithModel.js +64 -38
  83. package/dist/helpers/traverseContentWithModel.js.map +1 -1
  84. package/dist/index.d.ts +26 -25
  85. package/dist/index.js +3 -1
  86. package/dist/io-ts.d.ts +3304 -70918
  87. package/dist/io-ts.d.ts.map +1 -1
  88. package/dist/io-ts.js +125 -122
  89. package/dist/io-ts.js.map +1 -1
  90. package/dist/model/customType.d.ts +3 -3329
  91. package/dist/model/customType.d.ts.map +1 -1
  92. package/dist/model/group.d.ts +391 -392
  93. package/dist/model/group.d.ts.map +1 -1
  94. package/dist/model/group.js.map +1 -1
  95. package/dist/model/image.d.ts +4 -4
  96. package/dist/model/image.js.map +1 -1
  97. package/dist/model/link.d.ts +18 -18
  98. package/dist/model/link.d.ts.map +1 -1
  99. package/dist/model/link.js +7 -7
  100. package/dist/model/link.js.map +1 -1
  101. package/dist/model/nestable.d.ts +17 -178
  102. package/dist/model/nestable.d.ts.map +1 -1
  103. package/dist/model/nestable.js +3 -3
  104. package/dist/model/nestable.js.map +1 -1
  105. package/dist/model/richText.d.ts +3 -7
  106. package/dist/model/richText.d.ts.map +1 -1
  107. package/dist/model/richText.js +4 -3
  108. package/dist/model/richText.js.map +1 -1
  109. package/dist/model/section.d.ts +3 -3329
  110. package/dist/model/section.d.ts.map +1 -1
  111. package/dist/model/select.d.ts +1 -1
  112. package/dist/model/select.js +1 -1
  113. package/dist/model/select.js.map +1 -1
  114. package/dist/model/slice.d.ts +861 -3800
  115. package/dist/model/slice.d.ts.map +1 -1
  116. package/dist/model/slice.js +7 -2
  117. package/dist/model/slice.js.map +1 -1
  118. package/dist/model/slices.d.ts +3 -2195
  119. package/dist/model/slices.d.ts.map +1 -1
  120. package/dist/model/table.d.ts +2 -1
  121. package/dist/model/table.d.ts.map +1 -1
  122. package/dist/model/table.js +9 -7
  123. package/dist/model/table.js.map +1 -1
  124. package/dist/model/widget.d.ts +14 -3339
  125. package/dist/model/widget.d.ts.map +1 -1
  126. package/dist/model/widget.js.map +1 -1
  127. package/dist/zod4.d.ts +1345 -34797
  128. package/dist/zod4.d.ts.map +1 -1
  129. package/dist/zod4.js +125 -122
  130. package/dist/zod4.js.map +1 -1
  131. package/package.json +3 -2
  132. package/src/content/codec/link.ts +8 -8
  133. package/src/content/codec/richText.ts +10 -6
  134. package/src/content/field.ts +9 -2
  135. package/src/content/group.ts +5 -2
  136. package/src/content/legacy/group.ts +12 -4
  137. package/src/content/legacy/link.ts +32 -9
  138. package/src/content/legacy/nestable.ts +26 -2
  139. package/src/content/legacy/repeatable.ts +3 -16
  140. package/src/content/legacy/richText.ts +40 -7
  141. package/src/content/legacy/slice.ts +8 -7
  142. package/src/content/legacy/widget.ts +6 -2
  143. package/src/content/link.ts +32 -9
  144. package/src/content/nestable.ts +42 -2
  145. package/src/content/richText.ts +31 -9
  146. package/src/content/slice.ts +2 -2
  147. package/src/content/widget.ts +6 -2
  148. package/src/helpers/customTypeModel.ts +44 -0
  149. package/src/helpers/documentContent.ts +45 -17
  150. package/src/helpers/sliceContent.ts +86 -0
  151. package/src/helpers/traverseContent.ts +108 -41
  152. package/src/helpers/traverseContentWithModel.ts +91 -60
  153. package/src/index.ts +5 -2
  154. package/src/io-ts.ts +166 -140
  155. package/src/model/group.ts +4 -1
  156. package/src/model/image.ts +1 -1
  157. package/src/model/link.ts +39 -45
  158. package/src/model/nestable.ts +33 -1
  159. package/src/model/richText.ts +2 -2
  160. package/src/model/select.ts +2 -2
  161. package/src/model/slice.ts +36 -9
  162. package/src/model/table.ts +11 -2
  163. package/src/model/widget.ts +8 -4
  164. package/src/zod4.ts +166 -140
@@ -1 +1 @@
1
- {"version":3,"file":"widget.d.ts","names":[],"sources":["../../src/content/widget.ts"],"mappings":";;;;cAOa,mBAAA,EAAmB,CAAA,CAAA,YAAA,WAAA,CAAA,CAAA,aAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAOpB,aAAA,GAAgB,CAAA,CAAE,KAAA,QAAa,mBAAA"}
1
+ {"version":3,"file":"widget.d.ts","names":[],"sources":["../../src/content/widget.ts"],"mappings":";;;;;;;KAkBY,aAAA,GAAgB,YAAA,GAAe,eAAA,GAAkB,UAAA,GAAa,aAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"widget.js","names":[],"sources":["../../src/content/widget.ts"],"sourcesContent":["import { z } from \"zod/mini\"\n\nimport { GroupContentSchema } from \"./group\"\nimport { NestableContentSchema } from \"./nestable\"\nimport { SlicesContentSchema } from \"./slices\"\nimport { UIDContentSchema } from \"./uid\"\n\nexport const WidgetContentSchema = z.union([\n\tGroupContentSchema,\n\tNestableContentSchema,\n\tUIDContentSchema,\n\tSlicesContentSchema,\n])\n\nexport type WidgetContent = z.infer<typeof WidgetContentSchema>\n\nexport type ContentType = WidgetContent[\"__TYPE__\"]\n"],"mappings":";;;;;;AAOA,MAAa,sBAAsB,EAAE,MAAM;CAC1C;CACA;CACA;CACA;CACA,CAAC"}
1
+ {"version":3,"file":"widget.js","names":[],"sources":["../../src/content/widget.ts"],"sourcesContent":["import { z } from \"zod/mini\"\n\nimport type { GroupContent } from \"./group\"\nimport { GroupContentSchema } from \"./group\"\nimport type { NestableContent } from \"./nestable\"\nimport { NestableContentSchema } from \"./nestable\"\nimport type { SlicesContent } from \"./slices\"\nimport { SlicesContentSchema } from \"./slices\"\nimport type { UIDContent } from \"./uid\"\nimport { UIDContentSchema } from \"./uid\"\n\nexport const WidgetContentSchema: z.ZodMiniType<WidgetContent> = z.union([\n\tGroupContentSchema,\n\tNestableContentSchema,\n\tUIDContentSchema,\n\tSlicesContentSchema,\n])\n\nexport type WidgetContent = GroupContent | NestableContent | UIDContent | SlicesContent\n\nexport type ContentType = WidgetContent[\"__TYPE__\"]\n"],"mappings":";;;;;;AAWA,MAAa,sBAAoD,EAAE,MAAM;CACxE;CACA;CACA;CACA;CACA,CAAC"}
@@ -25,6 +25,6 @@ function make(...entries) {
25
25
  }, []);
26
26
  }
27
27
  //#endregion
28
- export { contentPath_exports, make, serialize };
28
+ export { append, contentPath_exports, make, serialize };
29
29
 
30
30
  //# sourceMappingURL=contentPath.js.map
@@ -1,14 +1,15 @@
1
+ import { SharedSliceModel } from "../model/slice.js";
1
2
  import { CustomTypeModel, StaticCustomTypeModel } from "../model/customType.js";
2
3
  import { StaticSectionModel } from "../model/section.js";
3
- import { SharedSliceModel } from "../model/slice.js";
4
4
 
5
5
  //#region src/helpers/customTypeModel.d.ts
6
6
  declare namespace customTypeModel_d_exports {
7
- export { collectSharedSlices, flatten, toStatic };
7
+ export { collectSharedSlices, filterMissingSharedSlices, flatten, toStatic };
8
8
  }
9
9
  declare function toStatic(customType: CustomTypeModel, sharedSlices: Map<string, SharedSliceModel> | Record<string, SharedSliceModel>): StaticCustomTypeModel;
10
10
  declare function flatten(customType: StaticCustomTypeModel): StaticSectionModel;
11
11
  declare function collectSharedSlices(customType: StaticCustomTypeModel): Record<string, SharedSliceModel>;
12
+ declare function filterMissingSharedSlices<TCustomType extends StaticCustomTypeModel | CustomTypeModel>(customType: TCustomType, sharedSlices: Map<string, SharedSliceModel> | Record<string, SharedSliceModel>): TCustomType;
12
13
  //#endregion
13
14
  export { customTypeModel_d_exports };
14
15
  //# sourceMappingURL=customTypeModel.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"customTypeModel.d.ts","names":[],"sources":["../../src/helpers/customTypeModel.ts"],"mappings":";;;;;;;;iBAIgB,QAAA,CACf,UAAA,EAAY,eAAA,EACZ,YAAA,EAAc,GAAA,SAAY,gBAAA,IAAoB,MAAA,SAAe,gBAAA,IAC3D,qBAAA;AAAA,iBAwCa,OAAA,CAAQ,UAAA,EAAY,qBAAA,GAAwB,kBAAA;AAAA,iBAI5C,mBAAA,CACf,UAAA,EAAY,qBAAA,GACV,MAAA,SAAe,gBAAA"}
1
+ {"version":3,"file":"customTypeModel.d.ts","names":[],"sources":["../../src/helpers/customTypeModel.ts"],"mappings":";;;;;;;;iBAIgB,QAAA,CACf,UAAA,EAAY,eAAA,EACZ,YAAA,EAAc,GAAA,SAAY,gBAAA,IAAoB,MAAA,SAAe,gBAAA,IAC3D,qBAAA;AAAA,iBAwCa,OAAA,CAAQ,UAAA,EAAY,qBAAA,GAAwB,kBAAA;AAAA,iBAI5C,mBAAA,CACf,UAAA,EAAY,qBAAA,GACV,MAAA,SAAe,gBAAA;AAAA,iBAiBF,yBAAA,qBACK,qBAAA,GAAwB,eAAA,CAAA,CAE5C,UAAA,EAAY,WAAA,EACZ,YAAA,EAAc,GAAA,SAAY,gBAAA,IAAoB,MAAA,SAAe,gBAAA,IAC3D,WAAA"}
@@ -2,6 +2,7 @@ import { __exportAll } from "../_virtual/_rolldown/runtime.js";
2
2
  //#region src/helpers/customTypeModel.ts
3
3
  var customTypeModel_exports = /* @__PURE__ */ __exportAll({
4
4
  collectSharedSlices: () => collectSharedSlices,
5
+ filterMissingSharedSlices: () => filterMissingSharedSlices,
5
6
  flatten: () => flatten,
6
7
  toStatic: () => toStatic
7
8
  });
@@ -49,7 +50,36 @@ function collectSharedSlices(customType) {
49
50
  }
50
51
  return sharedSlices;
51
52
  }
53
+ function filterMissingSharedSlices(customType, sharedSlices) {
54
+ const json = {};
55
+ const sharedSlicesMap = sharedSlices instanceof Map ? sharedSlices : new Map(Object.entries(sharedSlices));
56
+ for (const [tabKey, tab] of Object.entries(customType.json)) {
57
+ const tabJSON = {};
58
+ for (const [key, widget] of Object.entries(tab)) switch (widget.type) {
59
+ case "Slices":
60
+ case "Choice":
61
+ const choices = {};
62
+ for (const [id, model] of Object.entries(widget.config?.choices || {})) if (model.type === "SharedSlice") {
63
+ if (sharedSlicesMap.get(id)) choices[id] = model;
64
+ } else choices[id] = model;
65
+ tabJSON[key] = {
66
+ ...widget,
67
+ config: {
68
+ ...widget.config,
69
+ choices
70
+ }
71
+ };
72
+ break;
73
+ default: tabJSON[key] = widget;
74
+ }
75
+ json[tabKey] = tabJSON;
76
+ }
77
+ return {
78
+ ...customType,
79
+ json
80
+ };
81
+ }
52
82
  //#endregion
53
- export { customTypeModel_exports, flatten };
83
+ export { collectSharedSlices, customTypeModel_exports, flatten };
54
84
 
55
85
  //# sourceMappingURL=customTypeModel.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"customTypeModel.js","names":[],"sources":["../../src/helpers/customTypeModel.ts"],"sourcesContent":["import type { CustomTypeModel, StaticCustomTypeModel } from \"../model/customType\"\nimport type { StaticSectionModel } from \"../model/section\"\nimport type { SharedSliceModel, StaticSliceModel } from \"../model/slice\"\n\nexport function toStatic(\n\tcustomType: CustomTypeModel,\n\tsharedSlices: Map<string, SharedSliceModel> | Record<string, SharedSliceModel>,\n): StaticCustomTypeModel {\n\tconst json: StaticCustomTypeModel[\"json\"] = {}\n\n\tconst sharedSlicesMap =\n\t\tsharedSlices instanceof Map ? sharedSlices : new Map(Object.entries(sharedSlices))\n\n\tfor (const [tabKey, tab] of Object.entries(customType.json)) {\n\t\tconst tabJSON: StaticCustomTypeModel[\"json\"][string] = {}\n\t\tfor (const [key, widget] of Object.entries(tab)) {\n\t\t\tswitch (widget.type) {\n\t\t\t\tcase \"Slices\":\n\t\t\t\tcase \"Choice\":\n\t\t\t\t\tconst choices: Record<string, StaticSliceModel> = {}\n\t\t\t\t\tfor (const [id, model] of Object.entries(widget.config?.choices || {})) {\n\t\t\t\t\t\tif (model.type === \"SharedSlice\") {\n\t\t\t\t\t\t\tconst sharedSlice = sharedSlicesMap.get(id)\n\t\t\t\t\t\t\tif (sharedSlice) {\n\t\t\t\t\t\t\t\tchoices[id] = sharedSlice\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tchoices[id] = model\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\ttabJSON[key] = {\n\t\t\t\t\t\t...widget,\n\t\t\t\t\t\tconfig: { ...widget.config, choices },\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\tdefault:\n\t\t\t\t\ttabJSON[key] = widget\n\t\t\t}\n\t\t}\n\n\t\tjson[tabKey] = tabJSON\n\t}\n\n\treturn { ...customType, json }\n}\n\nexport function flatten(customType: StaticCustomTypeModel): StaticSectionModel {\n\treturn Object.values(customType.json).reduce((acc, fields) => ({ ...acc, ...fields }), {})\n}\n\nexport function collectSharedSlices(\n\tcustomType: StaticCustomTypeModel,\n): Record<string, SharedSliceModel> {\n\tconst sharedSlices: Record<string, SharedSliceModel> = {}\n\n\tconst flattened = flatten(customType)\n\tfor (const widget of Object.values(flattened)) {\n\t\tif (widget.type === \"Slices\" || widget.type === \"Choice\") {\n\t\t\tfor (const [id, model] of Object.entries(widget.config?.choices || {})) {\n\t\t\t\tif (model.type === \"SharedSlice\") {\n\t\t\t\t\tsharedSlices[id] = model\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn sharedSlices\n}\n"],"mappings":";;;;;;;AAIA,SAAgB,SACf,YACA,cACwB;CACxB,MAAM,OAAsC,EAAE;CAE9C,MAAM,kBACL,wBAAwB,MAAM,eAAe,IAAI,IAAI,OAAO,QAAQ,aAAa,CAAC;AAEnF,MAAK,MAAM,CAAC,QAAQ,QAAQ,OAAO,QAAQ,WAAW,KAAK,EAAE;EAC5D,MAAM,UAAiD,EAAE;AACzD,OAAK,MAAM,CAAC,KAAK,WAAW,OAAO,QAAQ,IAAI,CAC9C,SAAQ,OAAO,MAAf;GACC,KAAK;GACL,KAAK;IACJ,MAAM,UAA4C,EAAE;AACpD,SAAK,MAAM,CAAC,IAAI,UAAU,OAAO,QAAQ,OAAO,QAAQ,WAAW,EAAE,CAAC,CACrE,KAAI,MAAM,SAAS,eAAe;KACjC,MAAM,cAAc,gBAAgB,IAAI,GAAG;AAC3C,SAAI,YACH,SAAQ,MAAM;UAGf,SAAQ,MAAM;AAIhB,YAAQ,OAAO;KACd,GAAG;KACH,QAAQ;MAAE,GAAG,OAAO;MAAQ;MAAS;KACrC;AACD;GACD,QACC,SAAQ,OAAO;;AAIlB,OAAK,UAAU;;AAGhB,QAAO;EAAE,GAAG;EAAY;EAAM;;AAG/B,SAAgB,QAAQ,YAAuD;AAC9E,QAAO,OAAO,OAAO,WAAW,KAAK,CAAC,QAAQ,KAAK,YAAY;EAAE,GAAG;EAAK,GAAG;EAAQ,GAAG,EAAE,CAAC;;AAG3F,SAAgB,oBACf,YACmC;CACnC,MAAM,eAAiD,EAAE;CAEzD,MAAM,YAAY,QAAQ,WAAW;AACrC,MAAK,MAAM,UAAU,OAAO,OAAO,UAAU,CAC5C,KAAI,OAAO,SAAS,YAAY,OAAO,SAAS;OAC1C,MAAM,CAAC,IAAI,UAAU,OAAO,QAAQ,OAAO,QAAQ,WAAW,EAAE,CAAC,CACrE,KAAI,MAAM,SAAS,cAClB,cAAa,MAAM;;AAMvB,QAAO"}
1
+ {"version":3,"file":"customTypeModel.js","names":[],"sources":["../../src/helpers/customTypeModel.ts"],"sourcesContent":["import type { CustomTypeModel, StaticCustomTypeModel } from \"../model/customType\"\nimport type { StaticSectionModel } from \"../model/section\"\nimport type { SharedSliceModel, StaticSliceModel } from \"../model/slice\"\n\nexport function toStatic(\n\tcustomType: CustomTypeModel,\n\tsharedSlices: Map<string, SharedSliceModel> | Record<string, SharedSliceModel>,\n): StaticCustomTypeModel {\n\tconst json: StaticCustomTypeModel[\"json\"] = {}\n\n\tconst sharedSlicesMap =\n\t\tsharedSlices instanceof Map ? sharedSlices : new Map(Object.entries(sharedSlices))\n\n\tfor (const [tabKey, tab] of Object.entries(customType.json)) {\n\t\tconst tabJSON: StaticCustomTypeModel[\"json\"][string] = {}\n\t\tfor (const [key, widget] of Object.entries(tab)) {\n\t\t\tswitch (widget.type) {\n\t\t\t\tcase \"Slices\":\n\t\t\t\tcase \"Choice\":\n\t\t\t\t\tconst choices: Record<string, StaticSliceModel> = {}\n\t\t\t\t\tfor (const [id, model] of Object.entries(widget.config?.choices || {})) {\n\t\t\t\t\t\tif (model.type === \"SharedSlice\") {\n\t\t\t\t\t\t\tconst sharedSlice = sharedSlicesMap.get(id)\n\t\t\t\t\t\t\tif (sharedSlice) {\n\t\t\t\t\t\t\t\tchoices[id] = sharedSlice\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tchoices[id] = model\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\ttabJSON[key] = {\n\t\t\t\t\t\t...widget,\n\t\t\t\t\t\tconfig: { ...widget.config, choices },\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\tdefault:\n\t\t\t\t\ttabJSON[key] = widget\n\t\t\t}\n\t\t}\n\n\t\tjson[tabKey] = tabJSON\n\t}\n\n\treturn { ...customType, json }\n}\n\nexport function flatten(customType: StaticCustomTypeModel): StaticSectionModel {\n\treturn Object.values(customType.json).reduce((acc, fields) => ({ ...acc, ...fields }), {})\n}\n\nexport function collectSharedSlices(\n\tcustomType: StaticCustomTypeModel,\n): Record<string, SharedSliceModel> {\n\tconst sharedSlices: Record<string, SharedSliceModel> = {}\n\n\tconst flattened = flatten(customType)\n\tfor (const widget of Object.values(flattened)) {\n\t\tif (widget.type === \"Slices\" || widget.type === \"Choice\") {\n\t\t\tfor (const [id, model] of Object.entries(widget.config?.choices || {})) {\n\t\t\t\tif (model.type === \"SharedSlice\") {\n\t\t\t\t\tsharedSlices[id] = model\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn sharedSlices\n}\n\nexport function filterMissingSharedSlices<\n\tTCustomType extends StaticCustomTypeModel | CustomTypeModel,\n>(\n\tcustomType: TCustomType,\n\tsharedSlices: Map<string, SharedSliceModel> | Record<string, SharedSliceModel>,\n): TCustomType {\n\tconst json: TCustomType[\"json\"] = {}\n\n\tconst sharedSlicesMap =\n\t\tsharedSlices instanceof Map ? sharedSlices : new Map(Object.entries(sharedSlices))\n\n\tfor (const [tabKey, tab] of Object.entries(customType.json)) {\n\t\tconst tabJSON: typeof tab = {}\n\t\tfor (const [key, widget] of Object.entries(tab)) {\n\t\t\tswitch (widget.type) {\n\t\t\t\tcase \"Slices\":\n\t\t\t\tcase \"Choice\":\n\t\t\t\t\tconst choices: Required<typeof widget>[\"config\"][\"choices\"] = {}\n\t\t\t\t\tfor (const [id, model] of Object.entries(widget.config?.choices || {})) {\n\t\t\t\t\t\tif (model.type === \"SharedSlice\") {\n\t\t\t\t\t\t\tif (sharedSlicesMap.get(id)) {\n\t\t\t\t\t\t\t\tchoices[id] = model\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tchoices[id] = model\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\ttabJSON[key] = {\n\t\t\t\t\t\t...widget,\n\t\t\t\t\t\tconfig: { ...widget.config, choices },\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\tdefault:\n\t\t\t\t\ttabJSON[key] = widget\n\t\t\t}\n\t\t}\n\n\t\tjson[tabKey] = tabJSON\n\t}\n\n\treturn { ...customType, json }\n}\n"],"mappings":";;;;;;;;AAIA,SAAgB,SACf,YACA,cACwB;CACxB,MAAM,OAAsC,EAAE;CAE9C,MAAM,kBACL,wBAAwB,MAAM,eAAe,IAAI,IAAI,OAAO,QAAQ,aAAa,CAAC;AAEnF,MAAK,MAAM,CAAC,QAAQ,QAAQ,OAAO,QAAQ,WAAW,KAAK,EAAE;EAC5D,MAAM,UAAiD,EAAE;AACzD,OAAK,MAAM,CAAC,KAAK,WAAW,OAAO,QAAQ,IAAI,CAC9C,SAAQ,OAAO,MAAf;GACC,KAAK;GACL,KAAK;IACJ,MAAM,UAA4C,EAAE;AACpD,SAAK,MAAM,CAAC,IAAI,UAAU,OAAO,QAAQ,OAAO,QAAQ,WAAW,EAAE,CAAC,CACrE,KAAI,MAAM,SAAS,eAAe;KACjC,MAAM,cAAc,gBAAgB,IAAI,GAAG;AAC3C,SAAI,YACH,SAAQ,MAAM;UAGf,SAAQ,MAAM;AAIhB,YAAQ,OAAO;KACd,GAAG;KACH,QAAQ;MAAE,GAAG,OAAO;MAAQ;MAAS;KACrC;AACD;GACD,QACC,SAAQ,OAAO;;AAIlB,OAAK,UAAU;;AAGhB,QAAO;EAAE,GAAG;EAAY;EAAM;;AAG/B,SAAgB,QAAQ,YAAuD;AAC9E,QAAO,OAAO,OAAO,WAAW,KAAK,CAAC,QAAQ,KAAK,YAAY;EAAE,GAAG;EAAK,GAAG;EAAQ,GAAG,EAAE,CAAC;;AAG3F,SAAgB,oBACf,YACmC;CACnC,MAAM,eAAiD,EAAE;CAEzD,MAAM,YAAY,QAAQ,WAAW;AACrC,MAAK,MAAM,UAAU,OAAO,OAAO,UAAU,CAC5C,KAAI,OAAO,SAAS,YAAY,OAAO,SAAS;OAC1C,MAAM,CAAC,IAAI,UAAU,OAAO,QAAQ,OAAO,QAAQ,WAAW,EAAE,CAAC,CACrE,KAAI,MAAM,SAAS,cAClB,cAAa,MAAM;;AAMvB,QAAO;;AAGR,SAAgB,0BAGf,YACA,cACc;CACd,MAAM,OAA4B,EAAE;CAEpC,MAAM,kBACL,wBAAwB,MAAM,eAAe,IAAI,IAAI,OAAO,QAAQ,aAAa,CAAC;AAEnF,MAAK,MAAM,CAAC,QAAQ,QAAQ,OAAO,QAAQ,WAAW,KAAK,EAAE;EAC5D,MAAM,UAAsB,EAAE;AAC9B,OAAK,MAAM,CAAC,KAAK,WAAW,OAAO,QAAQ,IAAI,CAC9C,SAAQ,OAAO,MAAf;GACC,KAAK;GACL,KAAK;IACJ,MAAM,UAAwD,EAAE;AAChE,SAAK,MAAM,CAAC,IAAI,UAAU,OAAO,QAAQ,OAAO,QAAQ,WAAW,EAAE,CAAC,CACrE,KAAI,MAAM,SAAS;SACd,gBAAgB,IAAI,GAAG,CAC1B,SAAQ,MAAM;UAGf,SAAQ,MAAM;AAIhB,YAAQ,OAAO;KACd,GAAG;KACH,QAAQ;MAAE,GAAG,OAAO;MAAQ;MAAS;KACrC;AACD;GACD,QACC,SAAQ,OAAO;;AAIlB,OAAK,UAAU;;AAGhB,QAAO;EAAE,GAAG;EAAY;EAAM"}
@@ -1,5 +1,6 @@
1
- import { DocumentContent } from "../content/document.js";
2
1
  import { WidgetContent } from "../content/widget.js";
2
+ import { DocumentContent } from "../content/document.js";
3
+ import { StaticCustomTypeModel } from "../model/customType.js";
3
4
  import { Path } from "./contentPath.js";
4
5
  import { DocumentLegacy } from "../content/legacy/document.js";
5
6
 
@@ -7,18 +8,12 @@ import { DocumentLegacy } from "../content/legacy/document.js";
7
8
  declare namespace documentContent_d_exports {
8
9
  export { collectWidgets, fromLegacy, toLegacy };
9
10
  }
10
- declare function collectWidgets<TWidgetContent extends WidgetContent>(document: DocumentContent, test: (args: {
11
- path: Path;
12
- key: string;
13
- apiID: string;
14
- content: WidgetContent;
15
- }) => args is {
11
+ declare function collectWidgets<TWidgetContent extends WidgetContent>(document: DocumentContent, test: (content: WidgetContent, args: {
16
12
  path: Path;
17
13
  key: string;
18
14
  apiID: string;
19
- content: TWidgetContent;
20
- }): Record<string, TWidgetContent>;
21
- declare function fromLegacy(legacy: DocumentLegacy): DocumentContent | undefined;
15
+ }) => content is TWidgetContent): Record<string, TWidgetContent>;
16
+ declare function fromLegacy(legacy: DocumentLegacy, model: StaticCustomTypeModel): DocumentContent | undefined;
22
17
  declare function toLegacy(document: DocumentContent): DocumentLegacy;
23
18
  //#endregion
24
19
  export { documentContent_d_exports };
@@ -1 +1 @@
1
- {"version":3,"file":"documentContent.d.ts","names":[],"sources":["../../src/helpers/documentContent.ts"],"mappings":";;;;;;;;;iBAagB,cAAA,wBAAsC,aAAA,CAAA,CACrD,QAAA,EAAU,eAAA,EACV,IAAA,GAAO,IAAA;EACN,IAAA,EAAM,IAAA;EACN,GAAA;EACA,KAAA;EACA,OAAA,EAAS,aAAA;AAAA,MACJ,IAAA;EACL,IAAA,EAAM,IAAA;EACN,GAAA;EACA,KAAA;EACA,OAAA,EAAS,cAAA;AAAA,IAER,MAAA,SAAe,cAAA;AAAA,iBAgBF,UAAA,CAAW,MAAA,EAAQ,cAAA,GAAiB,eAAA;AAAA,iBAiCpC,QAAA,CAAS,QAAA,EAAU,eAAA,GAAkB,cAAA"}
1
+ {"version":3,"file":"documentContent.d.ts","names":[],"sources":["../../src/helpers/documentContent.ts"],"mappings":";;;;;;;;;;iBAkBgB,cAAA,wBAAsC,aAAA,CAAA,CACrD,QAAA,EAAU,eAAA,EACV,IAAA,GACC,OAAA,EAAS,aAAA,EACT,IAAA;EACC,IAAA,EAAM,IAAA;EACN,GAAA;EACA,KAAA;AAAA,MAEG,OAAA,IAAW,cAAA,GACd,MAAA,SAAe,cAAA;AAAA,iBAgBF,UAAA,CACf,MAAA,EAAQ,cAAA,EACR,KAAA,EAAO,qBAAA,GACL,eAAA;AAAA,iBAwDa,QAAA,CAAS,QAAA,EAAU,eAAA,GAAkB,cAAA"}
@@ -1,9 +1,12 @@
1
1
  import { __exportAll } from "../_virtual/_rolldown/runtime.js";
2
2
  import { defaultCtx } from "../content/codec/legacyContentCtx.js";
3
3
  import { serialize } from "./contentPath.js";
4
+ import { collectSharedSlices } from "./customTypeModel.js";
5
+ import { isNestableContent } from "../content/nestable.js";
4
6
  import { DocumentLegacySchema } from "../content/legacy/document.js";
5
7
  import { DocumentLegacyCodec } from "../content/codec/document.js";
6
8
  import { FieldOrSliceTypeSchema } from "../model/widget.js";
9
+ import { compositeToShared, legacyToShared } from "./sliceContent.js";
7
10
  import { traverseDocumentContent } from "./traverseContent.js";
8
11
  import { z } from "zod/mini";
9
12
  //#region src/helpers/documentContent.ts
@@ -14,13 +17,13 @@ var documentContent_exports = /* @__PURE__ */ __exportAll({
14
17
  });
15
18
  function collectWidgets(document, test) {
16
19
  const collected = {};
17
- traverseDocumentContent(document, { transformWidget: (args) => {
18
- if (test(args)) collected[serialize(args.path)] = args.content;
19
- return args.content;
20
+ traverseDocumentContent(document, { transformWidget: ({ content, ...args }) => {
21
+ if (test(content, args)) collected[serialize(args.path)] = content;
22
+ return content;
20
23
  } });
21
24
  return collected;
22
25
  }
23
- function fromLegacy(legacy) {
26
+ function fromLegacy(legacy, model) {
24
27
  const parsed = DocumentLegacySchema.safeParse(legacy);
25
28
  if (!parsed.success) return;
26
29
  const types = /* @__PURE__ */ new Map();
@@ -33,8 +36,18 @@ function fromLegacy(legacy) {
33
36
  const parsed = z.uuidv4().safeParse(value);
34
37
  if (parsed.success) keys.set(key.substring(0, key.length - 4), parsed.data);
35
38
  } else if (!key.endsWith("_POSITION")) widgets[key] = value;
36
- const result = DocumentLegacyCodec(defaultCtx("", types, keys)).toContent(parsed.data);
39
+ const result = DocumentLegacyCodec(defaultCtx("", types, keys)).toContent(widgets);
37
40
  if (!result.success) return;
41
+ if (Object.values(collectSharedSlices(model)).some((slice) => Boolean(slice.legacyPaths))) return traverseDocumentContent(result.data, {
42
+ model,
43
+ transformSlice: ({ content, model }) => {
44
+ if (model?.type === "SharedSlice") {
45
+ if (content.widget.__TYPE__ === "CompositeSliceContent") return compositeToShared(content, model);
46
+ else if (content.widget.__TYPE__ === "GroupContentType" || isNestableContent(content.widget)) return legacyToShared(content, model);
47
+ }
48
+ return content;
49
+ }
50
+ });
38
51
  return result.data;
39
52
  }
40
53
  function toLegacy(document) {
@@ -1 +1 @@
1
- {"version":3,"file":"documentContent.js","names":["contentPath.serialize"],"sources":["../../src/helpers/documentContent.ts"],"sourcesContent":["import { z } from \"zod/mini\"\n\nimport { DocumentLegacyCodec } from \"../content/codec/document\"\nimport { defaultCtx } from \"../content/codec/legacyContentCtx\"\nimport type { DocumentContent } from \"../content/document\"\nimport type { DocumentLegacy } from \"../content/legacy/document\"\nimport { DocumentLegacySchema } from \"../content/legacy/document\"\nimport type { WidgetContent } from \"../content/widget\"\nimport type { FieldOrSliceType } from \"../model/widget\"\nimport { FieldOrSliceTypeSchema } from \"../model/widget\"\nimport * as contentPath from \"./contentPath\"\nimport { traverseDocumentContent } from \"./traverseContent\"\n\nexport function collectWidgets<TWidgetContent extends WidgetContent>(\n\tdocument: DocumentContent,\n\ttest: (args: {\n\t\tpath: contentPath.Path\n\t\tkey: string\n\t\tapiID: string\n\t\tcontent: WidgetContent\n\t}) => args is {\n\t\tpath: contentPath.Path\n\t\tkey: string\n\t\tapiID: string\n\t\tcontent: TWidgetContent\n\t},\n): Record<string, TWidgetContent> {\n\tconst collected: Record<string, TWidgetContent> = {}\n\n\ttraverseDocumentContent(document, {\n\t\ttransformWidget: (args) => {\n\t\t\tif (test(args)) {\n\t\t\t\tcollected[contentPath.serialize(args.path)] = args.content\n\t\t\t}\n\n\t\t\treturn args.content\n\t\t},\n\t})\n\n\treturn collected\n}\n\nexport function fromLegacy(legacy: DocumentLegacy): DocumentContent | undefined {\n\tconst parsed = DocumentLegacySchema.safeParse(legacy)\n\tif (!parsed.success) {\n\t\treturn\n\t}\n\n\tconst types = new Map<string, FieldOrSliceType>()\n\tconst keys = new Map<string, string>()\n\tconst widgets: DocumentLegacy = {}\n\tfor (const [key, value] of Object.entries(parsed.data)) {\n\t\tif (key.endsWith(\"_TYPE\")) {\n\t\t\tconst parsed = FieldOrSliceTypeSchema.safeParse(value)\n\t\t\tif (parsed.success) {\n\t\t\t\ttypes.set(key.substring(0, key.length - 5), parsed.data)\n\t\t\t}\n\t\t} else if (key.endsWith(\"_KEY\")) {\n\t\t\tconst parsed = z.uuidv4().safeParse(value)\n\t\t\tif (parsed.success) {\n\t\t\t\tkeys.set(key.substring(0, key.length - 4), parsed.data)\n\t\t\t}\n\t\t} else if (!key.endsWith(\"_POSITION\")) {\n\t\t\twidgets[key] = value\n\t\t}\n\t}\n\n\tconst result = DocumentLegacyCodec(defaultCtx(\"\", types, keys)).toContent(parsed.data)\n\tif (!result.success) {\n\t\treturn\n\t}\n\n\treturn result.data\n}\n\nexport function toLegacy(document: DocumentContent): DocumentLegacy {\n\tconst { content, types, keys } = DocumentLegacyCodec(defaultCtx(\"\")).fromContent(document)\n\n\treturn { ...content, ...types, ...keys }\n}\n"],"mappings":";;;;;;;;;;;;;;AAaA,SAAgB,eACf,UACA,MAWiC;CACjC,MAAM,YAA4C,EAAE;AAEpD,yBAAwB,UAAU,EACjC,kBAAkB,SAAS;AAC1B,MAAI,KAAK,KAAK,CACb,WAAUA,UAAsB,KAAK,KAAK,IAAI,KAAK;AAGpD,SAAO,KAAK;IAEb,CAAC;AAEF,QAAO;;AAGR,SAAgB,WAAW,QAAqD;CAC/E,MAAM,SAAS,qBAAqB,UAAU,OAAO;AACrD,KAAI,CAAC,OAAO,QACX;CAGD,MAAM,wBAAQ,IAAI,KAA+B;CACjD,MAAM,uBAAO,IAAI,KAAqB;CACtC,MAAM,UAA0B,EAAE;AAClC,MAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,OAAO,KAAK,CACrD,KAAI,IAAI,SAAS,QAAQ,EAAE;EAC1B,MAAM,SAAS,uBAAuB,UAAU,MAAM;AACtD,MAAI,OAAO,QACV,OAAM,IAAI,IAAI,UAAU,GAAG,IAAI,SAAS,EAAE,EAAE,OAAO,KAAK;YAE/C,IAAI,SAAS,OAAO,EAAE;EAChC,MAAM,SAAS,EAAE,QAAQ,CAAC,UAAU,MAAM;AAC1C,MAAI,OAAO,QACV,MAAK,IAAI,IAAI,UAAU,GAAG,IAAI,SAAS,EAAE,EAAE,OAAO,KAAK;YAE9C,CAAC,IAAI,SAAS,YAAY,CACpC,SAAQ,OAAO;CAIjB,MAAM,SAAS,oBAAoB,WAAW,IAAI,OAAO,KAAK,CAAC,CAAC,UAAU,OAAO,KAAK;AACtF,KAAI,CAAC,OAAO,QACX;AAGD,QAAO,OAAO;;AAGf,SAAgB,SAAS,UAA2C;CACnE,MAAM,EAAE,SAAS,OAAO,SAAS,oBAAoB,WAAW,GAAG,CAAC,CAAC,YAAY,SAAS;AAE1F,QAAO;EAAE,GAAG;EAAS,GAAG;EAAO,GAAG;EAAM"}
1
+ {"version":3,"file":"documentContent.js","names":["contentPath.serialize","customTypeModel.collectSharedSlices","sliceContent.compositeToShared","sliceContent.legacyToShared"],"sources":["../../src/helpers/documentContent.ts"],"sourcesContent":["import { z } from \"zod/mini\"\n\nimport { DocumentLegacyCodec } from \"../content/codec/document\"\nimport { defaultCtx } from \"../content/codec/legacyContentCtx\"\nimport type { DocumentContent } from \"../content/document\"\nimport type { DocumentLegacy } from \"../content/legacy/document\"\nimport { DocumentLegacySchema } from \"../content/legacy/document\"\nimport { isNestableContent } from \"../content/nestable\"\nimport type { CompositeSliceItemContent, LegacySliceItemContent } from \"../content/slices\"\nimport type { WidgetContent } from \"../content/widget\"\nimport type { StaticCustomTypeModel } from \"../model/customType\"\nimport type { FieldOrSliceType } from \"../model/widget\"\nimport { FieldOrSliceTypeSchema } from \"../model/widget\"\nimport * as contentPath from \"./contentPath\"\nimport * as customTypeModel from \"./customTypeModel\"\nimport * as sliceContent from \"./sliceContent\"\nimport { traverseDocumentContent } from \"./traverseContent\"\n\nexport function collectWidgets<TWidgetContent extends WidgetContent>(\n\tdocument: DocumentContent,\n\ttest: (\n\t\tcontent: WidgetContent,\n\t\targs: {\n\t\t\tpath: contentPath.Path\n\t\t\tkey: string\n\t\t\tapiID: string\n\t\t},\n\t) => content is TWidgetContent,\n): Record<string, TWidgetContent> {\n\tconst collected: Record<string, TWidgetContent> = {}\n\n\ttraverseDocumentContent(document, {\n\t\ttransformWidget: ({ content, ...args }) => {\n\t\t\tif (test(content, args)) {\n\t\t\t\tcollected[contentPath.serialize(args.path)] = content\n\t\t\t}\n\n\t\t\treturn content\n\t\t},\n\t})\n\n\treturn collected\n}\n\nexport function fromLegacy(\n\tlegacy: DocumentLegacy,\n\tmodel: StaticCustomTypeModel,\n): DocumentContent | undefined {\n\tconst parsed = DocumentLegacySchema.safeParse(legacy)\n\tif (!parsed.success) {\n\t\treturn\n\t}\n\n\tconst types = new Map<string, FieldOrSliceType>()\n\tconst keys = new Map<string, string>()\n\tconst widgets: DocumentLegacy = {}\n\tfor (const [key, value] of Object.entries(parsed.data)) {\n\t\tif (key.endsWith(\"_TYPE\")) {\n\t\t\tconst parsed = FieldOrSliceTypeSchema.safeParse(value)\n\t\t\tif (parsed.success) {\n\t\t\t\ttypes.set(key.substring(0, key.length - 5), parsed.data)\n\t\t\t}\n\t\t} else if (key.endsWith(\"_KEY\")) {\n\t\t\tconst parsed = z.uuidv4().safeParse(value)\n\t\t\tif (parsed.success) {\n\t\t\t\tkeys.set(key.substring(0, key.length - 4), parsed.data)\n\t\t\t}\n\t\t} else if (!key.endsWith(\"_POSITION\")) {\n\t\t\twidgets[key] = value\n\t\t}\n\t}\n\n\tconst result = DocumentLegacyCodec(defaultCtx(\"\", types, keys)).toContent(widgets)\n\tif (!result.success) {\n\t\treturn\n\t}\n\n\tconst needsMigration = Object.values(customTypeModel.collectSharedSlices(model)).some((slice) =>\n\t\tBoolean(slice.legacyPaths),\n\t)\n\n\tif (needsMigration) {\n\t\treturn traverseDocumentContent(result.data, {\n\t\t\tmodel,\n\t\t\ttransformSlice: ({ content, model }) => {\n\t\t\t\tif (model?.type === \"SharedSlice\") {\n\t\t\t\t\tif (content.widget.__TYPE__ === \"CompositeSliceContent\") {\n\t\t\t\t\t\treturn sliceContent.compositeToShared(content as CompositeSliceItemContent, model)\n\t\t\t\t\t} else if (\n\t\t\t\t\t\tcontent.widget.__TYPE__ === \"GroupContentType\" ||\n\t\t\t\t\t\tisNestableContent(content.widget)\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn sliceContent.legacyToShared(content as LegacySliceItemContent, model)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn content\n\t\t\t},\n\t\t})\n\t}\n\n\treturn result.data\n}\n\nexport function toLegacy(document: DocumentContent): DocumentLegacy {\n\tconst { content, types, keys } = DocumentLegacyCodec(defaultCtx(\"\")).fromContent(document)\n\n\treturn { ...content, ...types, ...keys }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAkBA,SAAgB,eACf,UACA,MAQiC;CACjC,MAAM,YAA4C,EAAE;AAEpD,yBAAwB,UAAU,EACjC,kBAAkB,EAAE,SAAS,GAAG,WAAW;AAC1C,MAAI,KAAK,SAAS,KAAK,CACtB,WAAUA,UAAsB,KAAK,KAAK,IAAI;AAG/C,SAAO;IAER,CAAC;AAEF,QAAO;;AAGR,SAAgB,WACf,QACA,OAC8B;CAC9B,MAAM,SAAS,qBAAqB,UAAU,OAAO;AACrD,KAAI,CAAC,OAAO,QACX;CAGD,MAAM,wBAAQ,IAAI,KAA+B;CACjD,MAAM,uBAAO,IAAI,KAAqB;CACtC,MAAM,UAA0B,EAAE;AAClC,MAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,OAAO,KAAK,CACrD,KAAI,IAAI,SAAS,QAAQ,EAAE;EAC1B,MAAM,SAAS,uBAAuB,UAAU,MAAM;AACtD,MAAI,OAAO,QACV,OAAM,IAAI,IAAI,UAAU,GAAG,IAAI,SAAS,EAAE,EAAE,OAAO,KAAK;YAE/C,IAAI,SAAS,OAAO,EAAE;EAChC,MAAM,SAAS,EAAE,QAAQ,CAAC,UAAU,MAAM;AAC1C,MAAI,OAAO,QACV,MAAK,IAAI,IAAI,UAAU,GAAG,IAAI,SAAS,EAAE,EAAE,OAAO,KAAK;YAE9C,CAAC,IAAI,SAAS,YAAY,CACpC,SAAQ,OAAO;CAIjB,MAAM,SAAS,oBAAoB,WAAW,IAAI,OAAO,KAAK,CAAC,CAAC,UAAU,QAAQ;AAClF,KAAI,CAAC,OAAO,QACX;AAOD,KAJuB,OAAO,OAAOC,oBAAoC,MAAM,CAAC,CAAC,MAAM,UACtF,QAAQ,MAAM,YAAY,CAC1B,CAGA,QAAO,wBAAwB,OAAO,MAAM;EAC3C;EACA,iBAAiB,EAAE,SAAS,YAAY;AACvC,OAAI,OAAO,SAAS;QACf,QAAQ,OAAO,aAAa,wBAC/B,QAAOC,kBAA+B,SAAsC,MAAM;aAElF,QAAQ,OAAO,aAAa,sBAC5B,kBAAkB,QAAQ,OAAO,CAEjC,QAAOC,eAA4B,SAAmC,MAAM;;AAG9E,UAAO;;EAER,CAAC;AAGH,QAAO,OAAO;;AAGf,SAAgB,SAAS,UAA2C;CACnE,MAAM,EAAE,SAAS,OAAO,SAAS,oBAAoB,WAAW,GAAG,CAAC,CAAC,YAAY,SAAS;AAE1F,QAAO;EAAE,GAAG;EAAS,GAAG;EAAO,GAAG;EAAM"}
@@ -0,0 +1,12 @@
1
+ import { CompositeSliceItemContent, LegacySliceItemContent, SharedSliceItemContent } from "../content/slices.js";
2
+ import { SharedSliceVariationContentModel } from "../model/slice.js";
3
+
4
+ //#region src/helpers/sliceContent.d.ts
5
+ declare namespace sliceContent_d_exports {
6
+ export { compositeToShared, legacyToShared };
7
+ }
8
+ declare const legacyToShared: (content: LegacySliceItemContent, model: SharedSliceVariationContentModel) => SharedSliceItemContent;
9
+ declare const compositeToShared: (content: CompositeSliceItemContent, model: SharedSliceVariationContentModel) => SharedSliceItemContent;
10
+ //#endregion
11
+ export { sliceContent_d_exports };
12
+ //# sourceMappingURL=sliceContent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sliceContent.d.ts","names":[],"sources":["../../src/helpers/sliceContent.ts"],"mappings":";;;;;;;cASa,cAAA,GACZ,OAAA,EAAS,sBAAA,EACT,KAAA,EAAO,gCAAA,KACL,sBAAA;AAAA,cAoCU,iBAAA,GACZ,OAAA,EAAS,yBAAA,EACT,KAAA,EAAO,gCAAA,KACL,sBAAA"}
@@ -0,0 +1,60 @@
1
+ import { __exportAll } from "../_virtual/_rolldown/runtime.js";
2
+ //#region src/helpers/sliceContent.ts
3
+ var sliceContent_exports = /* @__PURE__ */ __exportAll({
4
+ compositeToShared: () => compositeToShared,
5
+ legacyToShared: () => legacyToShared
6
+ });
7
+ const legacyToShared = (content, model) => {
8
+ const sliceUUID = content.key.split("$")[1];
9
+ const primary = {};
10
+ const items = [];
11
+ if (content.widget.__TYPE__ === "GroupContentType") for (const item of content.widget.value) {
12
+ const value = [];
13
+ for (const [key, nestable] of item.value) if (model.fields.items?.[key]) value.push([key, nestable]);
14
+ items.push({
15
+ ...item,
16
+ value
17
+ });
18
+ }
19
+ else if (model.fields.primary?.[content.name]) primary[content.name] = content.widget;
20
+ return {
21
+ key: `${model.sliceName}$${sliceUUID}`,
22
+ name: model.sliceName,
23
+ maybeLabel: content.maybeLabel,
24
+ widget: {
25
+ __TYPE__: "SharedSliceContent",
26
+ variation: model.variationID,
27
+ primary,
28
+ items
29
+ }
30
+ };
31
+ };
32
+ const compositeToShared = (content, model) => {
33
+ const sliceUUID = content.key.split("$")[1];
34
+ const primary = {};
35
+ for (const [key, value] of Object.entries(content.widget.nonRepeat)) if (model.fields.primary?.[key]) primary[key] = value;
36
+ const items = [];
37
+ for (const item of content.widget.repeat) {
38
+ const value = [];
39
+ for (const [key, nestable] of item.value) if (model.fields.items?.[key]) value.push([key, nestable]);
40
+ items.push({
41
+ ...item,
42
+ value
43
+ });
44
+ }
45
+ return {
46
+ key: `${model.sliceName}$${sliceUUID}`,
47
+ name: model.sliceName,
48
+ maybeLabel: content.maybeLabel,
49
+ widget: {
50
+ __TYPE__: "SharedSliceContent",
51
+ variation: model.variationID,
52
+ primary,
53
+ items
54
+ }
55
+ };
56
+ };
57
+ //#endregion
58
+ export { compositeToShared, legacyToShared, sliceContent_exports };
59
+
60
+ //# sourceMappingURL=sliceContent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sliceContent.js","names":[],"sources":["../../src/helpers/sliceContent.ts"],"sourcesContent":["import type { GroupItemContent } from \"../content/group\"\nimport type { SharedSliceContent } from \"../content/slice\"\nimport type {\n\tCompositeSliceItemContent,\n\tLegacySliceItemContent,\n\tSharedSliceItemContent,\n} from \"../content/slices\"\nimport type { SharedSliceVariationContentModel } from \"../model/slice\"\n\nexport const legacyToShared = (\n\tcontent: LegacySliceItemContent,\n\tmodel: SharedSliceVariationContentModel,\n): SharedSliceItemContent => {\n\tconst sliceUUID = content.key.split(\"$\")[1]\n\n\tconst primary: SharedSliceContent[\"primary\"] = {}\n\tconst items: SharedSliceContent[\"items\"] = []\n\tif (content.widget.__TYPE__ === \"GroupContentType\") {\n\t\t// Group content\n\t\tfor (const item of content.widget.value) {\n\t\t\tconst value: GroupItemContent[\"value\"] = []\n\n\t\t\tfor (const [key, nestable] of item.value) {\n\t\t\t\tif (model.fields.items?.[key]) {\n\t\t\t\t\tvalue.push([key, nestable])\n\t\t\t\t}\n\t\t\t}\n\n\t\t\titems.push({ ...item, value })\n\t\t}\n\t} else if (model.fields.primary?.[content.name]) {\n\t\t// Nestable content\n\t\tprimary[content.name] = content.widget\n\t}\n\n\treturn {\n\t\tkey: `${model.sliceName}$${sliceUUID}`,\n\t\tname: model.sliceName,\n\t\tmaybeLabel: content.maybeLabel,\n\t\twidget: {\n\t\t\t__TYPE__: \"SharedSliceContent\",\n\t\t\tvariation: model.variationID,\n\t\t\tprimary,\n\t\t\titems,\n\t\t},\n\t}\n}\n\nexport const compositeToShared = (\n\tcontent: CompositeSliceItemContent,\n\tmodel: SharedSliceVariationContentModel,\n): SharedSliceItemContent => {\n\tconst sliceUUID = content.key.split(\"$\")[1]\n\n\tconst primary: SharedSliceContent[\"primary\"] = {}\n\tfor (const [key, value] of Object.entries(content.widget.nonRepeat)) {\n\t\tif (model.fields.primary?.[key]) {\n\t\t\tprimary[key] = value\n\t\t}\n\t}\n\n\tconst items: SharedSliceContent[\"items\"] = []\n\tfor (const item of content.widget.repeat) {\n\t\tconst value: GroupItemContent[\"value\"] = []\n\n\t\tfor (const [key, nestable] of item.value) {\n\t\t\tif (model.fields.items?.[key]) {\n\t\t\t\tvalue.push([key, nestable])\n\t\t\t}\n\t\t}\n\n\t\titems.push({ ...item, value })\n\t}\n\n\treturn {\n\t\tkey: `${model.sliceName}$${sliceUUID}`,\n\t\tname: model.sliceName,\n\t\tmaybeLabel: content.maybeLabel,\n\t\twidget: {\n\t\t\t__TYPE__: \"SharedSliceContent\",\n\t\t\tvariation: model.variationID,\n\t\t\tprimary,\n\t\t\titems,\n\t\t},\n\t}\n}\n"],"mappings":";;;;;;AASA,MAAa,kBACZ,SACA,UAC4B;CAC5B,MAAM,YAAY,QAAQ,IAAI,MAAM,IAAI,CAAC;CAEzC,MAAM,UAAyC,EAAE;CACjD,MAAM,QAAqC,EAAE;AAC7C,KAAI,QAAQ,OAAO,aAAa,mBAE/B,MAAK,MAAM,QAAQ,QAAQ,OAAO,OAAO;EACxC,MAAM,QAAmC,EAAE;AAE3C,OAAK,MAAM,CAAC,KAAK,aAAa,KAAK,MAClC,KAAI,MAAM,OAAO,QAAQ,KACxB,OAAM,KAAK,CAAC,KAAK,SAAS,CAAC;AAI7B,QAAM,KAAK;GAAE,GAAG;GAAM;GAAO,CAAC;;UAErB,MAAM,OAAO,UAAU,QAAQ,MAEzC,SAAQ,QAAQ,QAAQ,QAAQ;AAGjC,QAAO;EACN,KAAK,GAAG,MAAM,UAAU,GAAG;EAC3B,MAAM,MAAM;EACZ,YAAY,QAAQ;EACpB,QAAQ;GACP,UAAU;GACV,WAAW,MAAM;GACjB;GACA;GACA;EACD;;AAGF,MAAa,qBACZ,SACA,UAC4B;CAC5B,MAAM,YAAY,QAAQ,IAAI,MAAM,IAAI,CAAC;CAEzC,MAAM,UAAyC,EAAE;AACjD,MAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,QAAQ,OAAO,UAAU,CAClE,KAAI,MAAM,OAAO,UAAU,KAC1B,SAAQ,OAAO;CAIjB,MAAM,QAAqC,EAAE;AAC7C,MAAK,MAAM,QAAQ,QAAQ,OAAO,QAAQ;EACzC,MAAM,QAAmC,EAAE;AAE3C,OAAK,MAAM,CAAC,KAAK,aAAa,KAAK,MAClC,KAAI,MAAM,OAAO,QAAQ,KACxB,OAAM,KAAK,CAAC,KAAK,SAAS,CAAC;AAI7B,QAAM,KAAK;GAAE,GAAG;GAAM;GAAO,CAAC;;AAG/B,QAAO;EACN,KAAK,GAAG,MAAM,UAAU,GAAG;EAC3B,MAAM,MAAM;EACZ,YAAY,QAAQ;EACpB,QAAQ;GACP,UAAU;GACV,WAAW,MAAM;GACjB;GACA;GACA;EACD"}
@@ -1,17 +1,17 @@
1
- import { GroupModel, NestedGroupModel } from "../model/group.js";
1
+ import { LinkModel } from "../model/link.js";
2
+ import { TableModel } from "../model/table.js";
2
3
  import { NestableModel } from "../model/nestable.js";
3
- import { GroupContent, GroupItemContent } from "../content/group.js";
4
- import { DocumentContent } from "../content/document.js";
4
+ import { GroupModel, NestedGroupModel } from "../model/group.js";
5
5
  import { RepeatableContent } from "../content/repeatable.js";
6
- import { CompositeSliceItemContent, LegacySliceItemContent, SharedSliceItemContent, SliceItemContent, SlicesContent } from "../content/slices.js";
7
6
  import { TableContent } from "../content/table.js";
7
+ import { GroupContent, GroupItemContent } from "../content/group.js";
8
+ import { CompositeSliceItemContent, LegacySliceItemContent, SharedSliceItemContent, SliceItemContent, SlicesContent } from "../content/slices.js";
8
9
  import { WidgetContent } from "../content/widget.js";
9
- import { StaticCustomTypeModel } from "../model/customType.js";
10
- import { LinkModel } from "../model/link.js";
11
- import { CompositeSliceModel, LegacySliceModel, SharedSliceVariationModel } from "../model/slice.js";
10
+ import { DocumentContent } from "../content/document.js";
11
+ import { CompositeSliceModel, LegacySliceModel, SharedSliceVariationContentModel, SliceContentModel } from "../model/slice.js";
12
12
  import { StaticSlicesModel } from "../model/slices.js";
13
- import { TableModel } from "../model/table.js";
14
13
  import { StaticWidgetModel } from "../model/widget.js";
14
+ import { StaticCustomTypeModel } from "../model/customType.js";
15
15
  import { Path } from "./contentPath.js";
16
16
 
17
17
  //#region src/helpers/traverseContent.d.ts
@@ -28,23 +28,23 @@ type TraverseSlicesContentConfig = {
28
28
  };
29
29
  declare function traverseSlicesContent(path: Path, key: string, apiID: string, content: SlicesContent, config: TraverseSlicesContentConfig): SlicesContent | undefined;
30
30
  type TraverseSharedSliceContentConfig = {
31
- model?: SharedSliceVariationModel;
32
- transformWidget: TraverseWidgetContentFunction;
33
- transformSlice: TraverseSliceContentFunction;
31
+ model?: SharedSliceVariationContentModel;
32
+ transformWidget?: TraverseWidgetContentFunction;
33
+ transformSlice?: TraverseSliceContentFunction;
34
34
  };
35
35
  declare function traverseSharedSliceContent(path: Path, key: string, apiID: string, content: SharedSliceItemContent, config: TraverseSharedSliceContentConfig): SharedSliceItemContent | undefined;
36
36
  type TraverseCompositeSliceContentConfig = {
37
- model?: CompositeSliceModel;
38
- transformWidget: TraverseWidgetContentFunction;
39
- transformSlice: TraverseSliceContentFunction;
37
+ model?: CompositeSliceModel | SharedSliceVariationContentModel;
38
+ transformWidget?: TraverseWidgetContentFunction;
39
+ transformSlice?: TraverseSliceContentFunction;
40
40
  };
41
- declare function traverseCompositeSliceContent(path: Path, key: string, apiID: string, content: CompositeSliceItemContent, config: TraverseCompositeSliceContentConfig): CompositeSliceItemContent | undefined;
41
+ declare function traverseCompositeSliceContent(path: Path, key: string, apiID: string, content: CompositeSliceItemContent, config: TraverseCompositeSliceContentConfig): CompositeSliceItemContent | SharedSliceItemContent | undefined;
42
42
  type TraverseLegacySliceContentConfig = {
43
- model?: LegacySliceModel;
44
- transformWidget: TraverseWidgetContentFunction;
45
- transformSlice: TraverseSliceContentFunction;
43
+ model?: LegacySliceModel | SharedSliceVariationContentModel;
44
+ transformWidget?: TraverseWidgetContentFunction;
45
+ transformSlice?: TraverseSliceContentFunction;
46
46
  };
47
- declare function traverseLegacySliceContent(path: Path, key: string, apiID: string, content: LegacySliceItemContent, config: TraverseLegacySliceContentConfig): LegacySliceItemContent | undefined;
47
+ declare function traverseLegacySliceContent(path: Path, key: string, apiID: string, content: LegacySliceItemContent, config: TraverseLegacySliceContentConfig): LegacySliceItemContent | SharedSliceItemContent | undefined;
48
48
  type TraverseGroupContentConfig = {
49
49
  model?: GroupModel;
50
50
  transformWidget: TraverseWidgetContentFunction;
@@ -70,8 +70,8 @@ type TraverseSliceContentFunction = <TContent extends SliceItemContent>(args: {
70
70
  key: string;
71
71
  apiID: string;
72
72
  content: TContent;
73
- model?: SliceModel;
74
- }) => TContent | undefined;
73
+ model?: SliceContentModel;
74
+ }) => TContent | SharedSliceItemContent | undefined;
75
75
  type TraverseWidgetContentFunction<TContentTransformMode extends "preserve" | "widen" = "preserve"> = <TContent extends WidgetContent>(args: {
76
76
  path: Path;
77
77
  key: string;
@@ -79,7 +79,6 @@ type TraverseWidgetContentFunction<TContentTransformMode extends "preserve" | "w
79
79
  content: TContent;
80
80
  model?: StaticWidgetModel;
81
81
  }) => (TContentTransformMode extends "preserve" ? TContent : WidgetContent) | undefined;
82
- type SliceModel = SharedSliceVariationModel | CompositeSliceModel | LegacySliceModel;
83
82
  //#endregion
84
83
  export { TraverseSliceContentFunction, TraverseWidgetContentFunction, traverseCompositeSliceContent, traverseDocumentContent, traverseGroupContent, traverseGroupItemsContent, traverseLegacySliceContent, traverseRepeatableContent, traverseSharedSliceContent, traverseSlicesContent, traverseTableContent };
85
84
  //# sourceMappingURL=traverseContent.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"traverseContent.d.ts","names":[],"sources":["../../src/helpers/traverseContent.ts"],"mappings":";;;;;;;;;;;;;;;;;KAmCK,6BAAA;EACJ,KAAA,GAAQ,qBAAA;EACR,eAAA,GAAkB,6BAAA;EAClB,cAAA,GAAiB,4BAAA;AAAA;AAAA,iBAGF,uBAAA,CACf,QAAA,EAAU,eAAA,EACV,MAAA,EAAQ,6BAAA,GACN,eAAA;AAAA,KA0BE,2BAAA;EACJ,KAAA,GAAQ,iBAAA;EACR,eAAA,GAAkB,6BAAA;EAClB,cAAA,GAAiB,4BAAA;AAAA;AAAA,iBAGF,qBAAA,CACf,IAAA,EAAM,IAAA,EACN,GAAA,UACA,KAAA,UACA,OAAA,EAAS,aAAA,EACT,MAAA,EAAQ,2BAAA,GACN,aAAA;AAAA,KAuEE,gCAAA;EACJ,KAAA,GAAQ,yBAAA;EACR,eAAA,EAAiB,6BAAA;EACjB,cAAA,EAAgB,4BAAA;AAAA;AAAA,iBAGD,0BAAA,CACf,IAAA,EAAM,IAAA,EACN,GAAA,UACA,KAAA,UACA,OAAA,EAAS,sBAAA,EACT,MAAA,EAAQ,gCAAA,GACN,sBAAA;AAAA,KAyCE,mCAAA;EACJ,KAAA,GAAQ,mBAAA;EACR,eAAA,EAAiB,6BAAA;EACjB,cAAA,EAAgB,4BAAA;AAAA;AAAA,iBAGD,6BAAA,CACf,IAAA,EAAM,IAAA,EACN,GAAA,UACA,KAAA,UACA,OAAA,EAAS,yBAAA,EACT,MAAA,EAAQ,mCAAA,GACN,yBAAA;AAAA,KAsCE,gCAAA;EACJ,KAAA,GAAQ,gBAAA;EACR,eAAA,EAAiB,6BAAA;EACjB,cAAA,EAAgB,4BAAA;AAAA;AAAA,iBAGD,0BAAA,CACf,IAAA,EAAM,IAAA,EACN,GAAA,UACA,KAAA,UACA,OAAA,EAAS,sBAAA,EACT,MAAA,EAAQ,gCAAA,GACN,sBAAA;AAAA,KAuBE,0BAAA;EACJ,KAAA,GAAQ,UAAA;EACR,eAAA,EAAiB,6BAAA;AAAA;AAAA,iBAGF,oBAAA,CACf,IAAA,EAAM,IAAA,EACN,GAAA,UACA,KAAA,UACA,OAAA,EAAS,YAAA,EACT,MAAA,EAAQ,0BAAA,GACN,YAAA;AAAA,KAiBE,+BAAA;EACJ,KAAA,GAAQ,MAAA,SAAe,gBAAA,GAAmB,aAAA;EAC1C,eAAA,EAAiB,6BAAA;AAAA;AAAA,iBAGF,yBAAA,CACf,IAAA,EAAM,IAAA,EACN,OAAA,EAAS,gBAAA,IACT,MAAA,EAAQ,+BAAA,GACN,gBAAA;AAAA,KAgCE,+BAAA;EACJ,KAAA,GAAQ,SAAA;EACR,eAAA,EAAiB,6BAAA;AAAA;AAAA,iBAGF,yBAAA,CACf,IAAA,EAAM,IAAA,EACN,GAAA,UACA,KAAA,UACA,OAAA,EAAS,iBAAA,EACT,MAAA,EAAQ,+BAAA,GACN,iBAAA;AAAA,KA+BE,0BAAA;EACJ,KAAA,GAAQ,UAAA;EACR,eAAA,EAAiB,6BAAA;AAAA;AAAA,iBAGF,oBAAA,CACf,IAAA,EAAM,IAAA,EACN,GAAA,UACA,KAAA,UACA,OAAA,EAAS,YAAA,EACT,MAAA,EAAQ,0BAAA,GACN,YAAA;AAAA,KA2CS,4BAAA,qBAAiD,gBAAA,EAAkB,IAAA;EAC9E,IAAA,EAAM,IAAA;EACN,GAAA;EACA,KAAA;EACA,OAAA,EAAS,QAAA;EACT,KAAA,GAAQ,UAAA;AAAA,MACH,QAAA;AAAA,KAEM,6BAAA,sFAEU,aAAA,EAAe,IAAA;EACpC,IAAA,EAAM,IAAA;EACN,GAAA;EACA,KAAA;EACA,OAAA,EAAS,QAAA;EACT,KAAA,GAAQ,iBAAA;AAAA,OACF,qBAAA,sBAA2C,QAAA,GAAW,aAAA;AAAA,KAGxD,UAAA,GAAa,yBAAA,GAA4B,mBAAA,GAAsB,gBAAA"}
1
+ {"version":3,"file":"traverseContent.d.ts","names":[],"sources":["../../src/helpers/traverseContent.ts"],"mappings":";;;;;;;;;;;;;;;;;KAqCK,6BAAA;EACJ,KAAA,GAAQ,qBAAA;EACR,eAAA,GAAkB,6BAAA;EAClB,cAAA,GAAiB,4BAAA;AAAA;AAAA,iBAGF,uBAAA,CACf,QAAA,EAAU,eAAA,EACV,MAAA,EAAQ,6BAAA,GACN,eAAA;AAAA,KA0BE,2BAAA;EACJ,KAAA,GAAQ,iBAAA;EACR,eAAA,GAAkB,6BAAA;EAClB,cAAA,GAAiB,4BAAA;AAAA;AAAA,iBAGF,qBAAA,CACf,IAAA,EAAM,IAAA,EACN,GAAA,UACA,KAAA,UACA,OAAA,EAAS,aAAA,EACT,MAAA,EAAQ,2BAAA,GACN,aAAA;AAAA,KAiHE,gCAAA;EACJ,KAAA,GAAQ,gCAAA;EACR,eAAA,GAAkB,6BAAA;EAClB,cAAA,GAAiB,4BAAA;AAAA;AAAA,iBAGF,0BAAA,CACf,IAAA,EAAM,IAAA,EACN,GAAA,UACA,KAAA,UACA,OAAA,EAAS,sBAAA,EACT,MAAA,EAAQ,gCAAA,GACN,sBAAA;AAAA,KA0CE,mCAAA;EACJ,KAAA,GAAQ,mBAAA,GAAsB,gCAAA;EAC9B,eAAA,GAAkB,6BAAA;EAClB,cAAA,GAAiB,4BAAA;AAAA;AAAA,iBAGF,6BAAA,CACf,IAAA,EAAM,IAAA,EACN,GAAA,UACA,KAAA,UACA,OAAA,EAAS,yBAAA,EACT,MAAA,EAAQ,mCAAA,GACN,yBAAA,GAA4B,sBAAA;AAAA,KA2C1B,gCAAA;EACJ,KAAA,GAAQ,gBAAA,GAAmB,gCAAA;EAC3B,eAAA,GAAkB,6BAAA;EAClB,cAAA,GAAiB,4BAAA;AAAA;AAAA,iBAGF,0BAAA,CACf,IAAA,EAAM,IAAA,EACN,GAAA,UACA,KAAA,UACA,OAAA,EAAS,sBAAA,EACT,MAAA,EAAQ,gCAAA,GACN,sBAAA,GAAyB,sBAAA;AAAA,KA0CvB,0BAAA;EACJ,KAAA,GAAQ,UAAA;EACR,eAAA,EAAiB,6BAAA;AAAA;AAAA,iBAGF,oBAAA,CACf,IAAA,EAAM,IAAA,EACN,GAAA,UACA,KAAA,UACA,OAAA,EAAS,YAAA,EACT,MAAA,EAAQ,0BAAA,GACN,YAAA;AAAA,KAiBE,+BAAA;EACJ,KAAA,GAAQ,MAAA,SAAe,gBAAA,GAAmB,aAAA;EAC1C,eAAA,EAAiB,6BAAA;AAAA;AAAA,iBAGF,yBAAA,CACf,IAAA,EAAM,IAAA,EACN,OAAA,EAAS,gBAAA,IACT,MAAA,EAAQ,+BAAA,GACN,gBAAA;AAAA,KAgCE,+BAAA;EACJ,KAAA,GAAQ,SAAA;EACR,eAAA,EAAiB,6BAAA;AAAA;AAAA,iBAGF,yBAAA,CACf,IAAA,EAAM,IAAA,EACN,GAAA,UACA,KAAA,UACA,OAAA,EAAS,iBAAA,EACT,MAAA,EAAQ,+BAAA,GACN,iBAAA;AAAA,KA+BE,0BAAA;EACJ,KAAA,GAAQ,UAAA;EACR,eAAA,EAAiB,6BAAA;AAAA;AAAA,iBAGF,oBAAA,CACf,IAAA,EAAM,IAAA,EACN,GAAA,UACA,KAAA,UACA,OAAA,EAAS,YAAA,EACT,MAAA,EAAQ,0BAAA,GACN,YAAA;AAAA,KA2CS,4BAAA,qBAAiD,gBAAA,EAAkB,IAAA;EAC9E,IAAA,EAAM,IAAA;EACN,GAAA;EACA,KAAA;EACA,OAAA,EAAS,QAAA;EACT,KAAA,GAAQ,iBAAA;AAAA,MACH,QAAA,GAAW,sBAAA;AAAA,KAEL,6BAAA,sFAEU,aAAA,EAAe,IAAA;EACpC,IAAA,EAAM,IAAA;EACN,GAAA;EACA,KAAA;EACA,OAAA,EAAS,QAAA;EACT,KAAA,GAAQ,iBAAA;AAAA,OACF,qBAAA,sBAA2C,QAAA,GAAW,aAAA"}
@@ -1,4 +1,5 @@
1
- import { make } from "./contentPath.js";
1
+ import { TableCellModel } from "../model/table.js";
2
+ import { append, make, serialize } from "./contentPath.js";
2
3
  import { flatten } from "./customTypeModel.js";
3
4
  import { isRepeatableContentValue } from "../content/repeatable.js";
4
5
  import { RichTextContentType } from "../content/richText.js";
@@ -7,7 +8,6 @@ import { isNestableContent } from "../content/nestable.js";
7
8
  import "../content/group.js";
8
9
  import "../content/slice.js";
9
10
  import "../content/slices.js";
10
- import { TableCellModel } from "../model/table.js";
11
11
  //#region src/helpers/traverseContent.ts
12
12
  function traverseDocumentContent(document, config) {
13
13
  const { model, transformWidget, transformSlice } = config;
@@ -34,22 +34,44 @@ function traverseSlicesContent(path, key, apiID, content, config) {
34
34
  const traversed = [];
35
35
  for (const sliceItemContent of content.value) {
36
36
  const sliceModel = config.model?.config?.choices?.[sliceItemContent.name];
37
- let traversedSliceItemContent;
38
- if (sliceItemContent.widget.__TYPE__ === "SharedSliceContent") {
39
- let model;
40
- if (sliceModel?.type === "SharedSlice") {
41
- const variationID = sliceItemContent.widget.variation;
42
- const variationModel = sliceModel.variations.find((variation) => variation.id === variationID);
43
- if (variationModel) model = {
37
+ let sliceContentModel;
38
+ if (sliceItemContent.widget.__TYPE__ === "SharedSliceContent" && sliceModel?.type === "SharedSlice") {
39
+ const variationID = sliceItemContent.widget.variation;
40
+ const variationModel = sliceModel.variations.find((variation) => variation.id === variationID);
41
+ if (variationModel) sliceContentModel = {
42
+ type: "SharedSlice",
43
+ sliceName: sliceModel.id,
44
+ variationID: variationModel.id,
45
+ fields: {
46
+ primary: variationModel.primary || {},
47
+ items: variationModel.items || {}
48
+ }
49
+ };
50
+ }
51
+ if (!sliceContentModel) {
52
+ const legacyPath = append(serialize(path), sliceItemContent.name);
53
+ const migratedSliceModel = Object.values(config.model?.config?.choices || {}).find((model) => {
54
+ return model.type === "SharedSlice" && Boolean(model.legacyPaths?.[legacyPath]);
55
+ });
56
+ if (migratedSliceModel) {
57
+ const variation = migratedSliceModel.variations.find((variation) => {
58
+ return variation.id === migratedSliceModel.legacyPaths?.[legacyPath];
59
+ });
60
+ if (variation) sliceContentModel = {
44
61
  type: "SharedSlice",
45
- sliceName: sliceModel.id,
46
- variationID,
62
+ sliceName: migratedSliceModel.id,
63
+ variationID: variation.id,
47
64
  fields: {
48
- primary: variationModel.primary || {},
49
- items: variationModel.items || {}
65
+ primary: variation.primary || {},
66
+ items: variation.items || {}
50
67
  }
51
68
  };
52
69
  }
70
+ }
71
+ if (!sliceContentModel && sliceModel && sliceModel.type !== "SharedSlice") sliceContentModel = sliceModel;
72
+ let traversedSliceItemContent;
73
+ if (sliceItemContent.widget.__TYPE__ === "SharedSliceContent") {
74
+ const model = sliceContentModel?.type === "SharedSlice" ? sliceContentModel : void 0;
53
75
  traversedSliceItemContent = traverseSharedSliceContent(path.concat({
54
76
  key: sliceItemContent.key,
55
77
  type: "SharedSlice"
@@ -59,7 +81,7 @@ function traverseSlicesContent(path, key, apiID, content, config) {
59
81
  transformSlice
60
82
  });
61
83
  } else if (sliceItemContent.widget.__TYPE__ === "CompositeSliceContent") {
62
- const model = sliceModel?.type === "Slice" ? sliceModel : void 0;
84
+ const model = sliceContentModel?.type === "Slice" || sliceContentModel?.type === "SharedSlice" ? sliceContentModel : void 0;
63
85
  traversedSliceItemContent = traverseCompositeSliceContent(path.concat({
64
86
  key: sliceItemContent.key,
65
87
  type: "Slice"
@@ -69,7 +91,7 @@ function traverseSlicesContent(path, key, apiID, content, config) {
69
91
  transformSlice
70
92
  });
71
93
  } else {
72
- const model = sliceModel?.type !== "SharedSlice" && sliceModel?.type !== "Slice" ? sliceModel : void 0;
94
+ const model = sliceContentModel?.type !== "Slice" ? sliceContentModel : void 0;
73
95
  traversedSliceItemContent = traverseLegacySliceContent(path.concat({
74
96
  key: sliceItemContent.key,
75
97
  type: "LegacySlice"
@@ -93,7 +115,7 @@ function traverseSlicesContent(path, key, apiID, content, config) {
93
115
  });
94
116
  }
95
117
  function traverseSharedSliceContent(path, key, apiID, content, config) {
96
- const { transformWidget, transformSlice } = config;
118
+ const { transformWidget = (args) => args.content, transformSlice = (args) => args.content } = config;
97
119
  const traversedPrimary = {};
98
120
  for (const [key, fieldContent] of Object.entries(content.widget.primary)) {
99
121
  const model = config.model?.fields.primary?.[key];
@@ -132,10 +154,10 @@ function traverseSharedSliceContent(path, key, apiID, content, config) {
132
154
  });
133
155
  }
134
156
  function traverseCompositeSliceContent(path, key, apiID, content, config) {
135
- const { transformWidget, transformSlice } = config;
157
+ const { transformWidget = (args) => args.content, transformSlice = (args) => args.content } = config;
158
+ const primaryModel = config.model?.type === "SharedSlice" ? config.model?.fields.primary : config.model?.["non-repeat"];
136
159
  const traversedPrimary = {};
137
160
  for (const [key, fieldContent] of Object.entries(content.widget.nonRepeat)) {
138
- const model = config.model?.["non-repeat"]?.[key];
139
161
  const traversedContent = traverseWidgetContent(path.concat({
140
162
  key: "non-repeat",
141
163
  type: "primary"
@@ -143,16 +165,17 @@ function traverseCompositeSliceContent(path, key, apiID, content, config) {
143
165
  key,
144
166
  type: "Widget"
145
167
  }), key, apiID, fieldContent, {
146
- model,
168
+ model: primaryModel?.[key],
147
169
  transformWidget
148
170
  });
149
171
  if (traversedContent && isNestableContent(traversedContent)) traversedPrimary[key] = traversedContent;
150
172
  }
173
+ const itemsModel = config.model?.type === "SharedSlice" ? config.model?.fields.items : config.model?.repeat;
151
174
  const traversedItems = traverseGroupItemsContent(path.concat({
152
175
  key: "repeat",
153
176
  type: "items"
154
177
  }), content.widget.repeat, {
155
- model: config.model?.repeat,
178
+ model: itemsModel,
156
179
  transformWidget
157
180
  });
158
181
  return transformSlice({
@@ -171,9 +194,18 @@ function traverseCompositeSliceContent(path, key, apiID, content, config) {
171
194
  });
172
195
  }
173
196
  function traverseLegacySliceContent(path, key, apiID, content, config) {
174
- const { model, transformWidget, transformSlice } = config;
197
+ const { model, transformWidget = (args) => args.content, transformSlice = (args) => args.content } = config;
198
+ let legacySliceModel;
199
+ if (content.widget.__TYPE__ === "GroupContentType") {
200
+ if (model?.type === "Group") legacySliceModel = model;
201
+ else if (model?.type === "SharedSlice") legacySliceModel = {
202
+ type: "Group",
203
+ config: { fields: model.fields.items }
204
+ };
205
+ } else if (model?.type === "SharedSlice") legacySliceModel = model.fields.primary?.[content.name];
206
+ else if (model?.type !== "Group") legacySliceModel = model;
175
207
  const traversedContent = traverseWidgetContent(path, key, apiID, content.widget, {
176
- model,
208
+ model: legacySliceModel,
177
209
  transformWidget,
178
210
  transformSlice
179
211
  });