@prismicio/types-internal 4.0.0-pr.6.38cb7de → 4.0.0-pr.6.6ce647d

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 (46) hide show
  1. package/dist/content/legacy/group.d.ts.map +1 -1
  2. package/dist/content/legacy/group.js.map +1 -1
  3. package/dist/content/legacy/nestable.js.map +1 -1
  4. package/dist/content/legacy/repeatable.js +2 -8
  5. package/dist/content/legacy/repeatable.js.map +1 -1
  6. package/dist/content/legacy/slice.js +2 -3
  7. package/dist/content/legacy/slice.js.map +1 -1
  8. package/dist/content/nestable.js +1 -0
  9. package/dist/content/nestable.js.map +1 -1
  10. package/dist/helpers/contentPath.js +1 -1
  11. package/dist/helpers/customTypeModel.js +1 -1
  12. package/dist/helpers/documentContent.d.ts +2 -1
  13. package/dist/helpers/documentContent.d.ts.map +1 -1
  14. package/dist/helpers/documentContent.js +14 -1
  15. package/dist/helpers/documentContent.js.map +1 -1
  16. package/dist/helpers/sliceContent.d.ts +12 -0
  17. package/dist/helpers/sliceContent.d.ts.map +1 -0
  18. package/dist/helpers/sliceContent.js +60 -0
  19. package/dist/helpers/sliceContent.js.map +1 -0
  20. package/dist/helpers/traverseContent.d.ts +5 -5
  21. package/dist/helpers/traverseContent.d.ts.map +1 -1
  22. package/dist/helpers/traverseContent.js +50 -18
  23. package/dist/helpers/traverseContent.js.map +1 -1
  24. package/dist/helpers/traverseContentWithModel.d.ts +4 -4
  25. package/dist/helpers/traverseContentWithModel.d.ts.map +1 -1
  26. package/dist/helpers/traverseContentWithModel.js +60 -34
  27. package/dist/helpers/traverseContentWithModel.js.map +1 -1
  28. package/dist/index.d.ts +2 -1
  29. package/dist/index.js +2 -1
  30. package/dist/io-ts.d.ts +1 -69
  31. package/dist/io-ts.d.ts.map +1 -1
  32. package/dist/model/table.d.ts.map +1 -1
  33. package/dist/model/table.js.map +1 -1
  34. package/dist/model/widget.d.ts +8 -8
  35. package/package.json +1 -1
  36. package/src/content/legacy/group.ts +2 -0
  37. package/src/content/legacy/nestable.ts +1 -1
  38. package/src/content/legacy/repeatable.ts +3 -16
  39. package/src/content/legacy/slice.ts +6 -5
  40. package/src/content/nestable.ts +2 -0
  41. package/src/helpers/documentContent.ts +32 -1
  42. package/src/helpers/sliceContent.ts +86 -0
  43. package/src/helpers/traverseContent.ts +89 -27
  44. package/src/helpers/traverseContentWithModel.ts +69 -42
  45. package/src/index.ts +1 -0
  46. package/src/model/table.ts +2 -1
@@ -1 +1 @@
1
- {"version":3,"file":"group.d.ts","names":[],"sources":["../../../src/content/legacy/group.ts"],"mappings":";;;cAKa,qBAAA,EAAqB,CAAA,CAAA,aAAA,CAAA,CAAA,CAAA,aAAA,UAAA,CAAA,CAAA,cAAA;AAAA,KAEtB,eAAA,GAAkB,CAAA,CAAE,KAAA,QAAa,qBAAA;AAAA,KAMjC,WAAA,IAAe,eAAA"}
1
+ {"version":3,"file":"group.d.ts","names":[],"sources":["../../../src/content/legacy/group.ts"],"mappings":";;;cAOa,qBAAA,EAAqB,CAAA,CAAA,aAAA,CAAA,CAAA,CAAA,aAAA,UAAA,CAAA,CAAA,cAAA;AAAA,KAEtB,eAAA,GAAkB,CAAA,CAAE,KAAA,QAAa,qBAAA;AAAA,KAMjC,WAAA,IAAe,eAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"group.js","names":[],"sources":["../../../src/content/legacy/group.ts"],"sourcesContent":["import { z } from \"zod/mini\"\n\nimport type { NestableLegacy } from \"./nestable\"\nimport { NestableLegacySchema } from \"./nestable\"\n\nexport const GroupItemLegacySchema = z.record(z.string(), z.unknown())\n\nexport type GroupItemLegacy = z.infer<typeof GroupItemLegacySchema>\n\nexport const GroupLegacySchema: z.ZodMiniType<GroupLegacy> = z.array(\n\tz.union([GroupItemLegacySchema, z.null()]),\n)\n\nexport type GroupLegacy = (GroupItemLegacy | null)[]\n\nexport const NestableAndGroupLegacySchema: z.ZodMiniType<NestableAndGroupLegacy> = z.union([\n\tNestableLegacySchema,\n\tGroupLegacySchema,\n])\n\nexport type NestableAndGroupLegacy = NestableLegacy | GroupLegacy\n"],"mappings":";;;AAKA,MAAa,wBAAwB,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,SAAS,CAAC;AAItE,MAAa,oBAAgD,EAAE,MAC9D,EAAE,MAAM,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAC,CAC1C;AAID,MAAa,+BAAsE,EAAE,MAAM,CAC1F,sBACA,kBACA,CAAC"}
1
+ {"version":3,"file":"group.js","names":[],"sources":["../../../src/content/legacy/group.ts"],"sourcesContent":["import { z } from \"zod/mini\"\n\nimport type { NestableLegacy } from \"./nestable\"\nimport { NestableLegacySchema } from \"./nestable\"\n\n// Keep item values raw here: array-shaped legacy payloads are ambiguous until\n// `codec/group.ts` resolves the field model and picks the right decoder.\nexport const GroupItemLegacySchema = z.record(z.string(), z.unknown())\n\nexport type GroupItemLegacy = z.infer<typeof GroupItemLegacySchema>\n\nexport const GroupLegacySchema: z.ZodMiniType<GroupLegacy> = z.array(\n\tz.union([GroupItemLegacySchema, z.null()]),\n)\n\nexport type GroupLegacy = (GroupItemLegacy | null)[]\n\nexport const NestableAndGroupLegacySchema: z.ZodMiniType<NestableAndGroupLegacy> = z.union([\n\tNestableLegacySchema,\n\tGroupLegacySchema,\n])\n\nexport type NestableAndGroupLegacy = NestableLegacy | GroupLegacy\n"],"mappings":";;;AAOA,MAAa,wBAAwB,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,SAAS,CAAC;AAItE,MAAa,oBAAgD,EAAE,MAC9D,EAAE,MAAM,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAC,CAC1C;AAID,MAAa,+BAAsE,EAAE,MAAM,CAC1F,sBACA,kBACA,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"nestable.js","names":[],"sources":["../../../src/content/legacy/nestable.ts"],"sourcesContent":["import { z } from \"zod/mini\"\n\nimport type { BooleanLegacy } from \"./boolean\"\nimport { BooleanLegacySchema } from \"./boolean\"\nimport type { EmbedLegacy } from \"./embed\"\nimport { EmbedLegacyLooseSchema } from \"./embed\"\nimport type { EmptyLegacy } from \"./empty\"\nimport { EmptyLegacySchema } from \"./empty\"\nimport type { StringLegacy} from \"./field\";\nimport { StringLegacySchema } from \"./field\"\nimport type { GeoPointLegacy } from \"./geopoint\"\nimport { GeoPointLegacySchema } from \"./geopoint\"\nimport type { ImageLegacy } from \"./image\"\nimport { ImageLegacySchema } from \"./image\"\nimport type { IntegrationFieldLegacy } from \"./integrationField\"\nimport { IntegrationFieldLegacySchema } from \"./integrationField\"\nimport type { LinkLegacy } from \"./link\"\nimport { LinkLegacySchema } from \"./link\"\nimport type { RepeatableLegacy } from \"./repeatable\"\nimport { RepeatableLegacySchema } from \"./repeatable\"\nimport type { RichTextLegacy } from \"./richText\"\nimport { RichTextLegacySchema } from \"./richText\"\nimport type { SeparatorLegacy } from \"./separator\"\nimport { SeparatorLegacySchema } from \"./separator\"\nimport type { TableLegacy } from \"./table\"\nimport { TableLegacySchema } from \"./table\"\n\nexport const NestableLegacySchema: z.ZodMiniType<NestableLegacy> = z.union([\n\tEmptyLegacySchema,\n\tBooleanLegacySchema,\n\tEmbedLegacyLooseSchema,\n\tStringLegacySchema,\n\tGeoPointLegacySchema,\n\tImageLegacySchema,\n\tIntegrationFieldLegacySchema,\n\tLinkLegacySchema,\n\tRepeatableLegacySchema,\n\tRichTextLegacySchema,\n\tSeparatorLegacySchema,\n\tTableLegacySchema,\n])\n\nexport type NestableLegacy =\n\t| EmptyLegacy\n\t| BooleanLegacy\n\t| EmbedLegacy\n\t| StringLegacy\n\t| GeoPointLegacy\n\t| ImageLegacy\n\t| IntegrationFieldLegacy\n\t| LinkLegacy\n\t| RepeatableLegacy\n\t| RichTextLegacy\n\t| SeparatorLegacy\n\t| TableLegacy\n"],"mappings":";;;;;;;;;;;;;;AA2BA,MAAa,uBAAsD,EAAE,MAAM;CAC1E;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,CAAC"}
1
+ {"version":3,"file":"nestable.js","names":[],"sources":["../../../src/content/legacy/nestable.ts"],"sourcesContent":["import { z } from \"zod/mini\"\n\nimport type { BooleanLegacy } from \"./boolean\"\nimport { BooleanLegacySchema } from \"./boolean\"\nimport type { EmbedLegacy } from \"./embed\"\nimport { EmbedLegacyLooseSchema } from \"./embed\"\nimport type { EmptyLegacy } from \"./empty\"\nimport { EmptyLegacySchema } from \"./empty\"\nimport type { StringLegacy } from \"./field\"\nimport { StringLegacySchema } from \"./field\"\nimport type { GeoPointLegacy } from \"./geopoint\"\nimport { GeoPointLegacySchema } from \"./geopoint\"\nimport type { ImageLegacy } from \"./image\"\nimport { ImageLegacySchema } from \"./image\"\nimport type { IntegrationFieldLegacy } from \"./integrationField\"\nimport { IntegrationFieldLegacySchema } from \"./integrationField\"\nimport type { LinkLegacy } from \"./link\"\nimport { LinkLegacySchema } from \"./link\"\nimport type { RepeatableLegacy } from \"./repeatable\"\nimport { RepeatableLegacySchema } from \"./repeatable\"\nimport type { RichTextLegacy } from \"./richText\"\nimport { RichTextLegacySchema } from \"./richText\"\nimport type { SeparatorLegacy } from \"./separator\"\nimport { SeparatorLegacySchema } from \"./separator\"\nimport type { TableLegacy } from \"./table\"\nimport { TableLegacySchema } from \"./table\"\n\nexport const NestableLegacySchema: z.ZodMiniType<NestableLegacy> = z.union([\n\tEmptyLegacySchema,\n\tBooleanLegacySchema,\n\tEmbedLegacyLooseSchema,\n\tStringLegacySchema,\n\tGeoPointLegacySchema,\n\tImageLegacySchema,\n\tIntegrationFieldLegacySchema,\n\tLinkLegacySchema,\n\tRepeatableLegacySchema,\n\tRichTextLegacySchema,\n\tSeparatorLegacySchema,\n\tTableLegacySchema,\n])\n\nexport type NestableLegacy =\n\t| EmptyLegacy\n\t| BooleanLegacy\n\t| EmbedLegacy\n\t| StringLegacy\n\t| GeoPointLegacy\n\t| ImageLegacy\n\t| IntegrationFieldLegacy\n\t| LinkLegacy\n\t| RepeatableLegacy\n\t| RichTextLegacy\n\t| SeparatorLegacy\n\t| TableLegacy\n"],"mappings":";;;;;;;;;;;;;;AA2BA,MAAa,uBAAsD,EAAE,MAAM;CAC1E;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,CAAC"}
@@ -1,12 +1,6 @@
1
- import { LinkLegacySchema } from "./link.js";
2
1
  import { z } from "zod/mini";
3
- const RepeatableLegacySchema = z.pipe(z.array(z.unknown()), z.transform((value) => value.flatMap((item) => {
4
- try {
5
- return [LinkLegacySchema.parse(item)];
6
- } catch {
7
- return [];
8
- }
9
- })));
2
+ //#region src/content/legacy/repeatable.ts
3
+ const RepeatableLegacySchema = z.array(z.unknown());
10
4
  //#endregion
11
5
  export { RepeatableLegacySchema };
12
6
 
@@ -1 +1 @@
1
- {"version":3,"file":"repeatable.js","names":[],"sources":["../../../src/content/legacy/repeatable.ts"],"sourcesContent":["import { z } from \"zod/mini\"\n\nimport { LinkLegacySchema } from \"./link\"\n\nconst RepeatableLinkLegacySchema = z.pipe(\n\tz.array(z.unknown()),\n\tz.transform((value) =>\n\t\tvalue.flatMap((item) => {\n\t\t\ttry {\n\t\t\t\treturn [LinkLegacySchema.parse(item)]\n\t\t\t} catch {\n\t\t\t\treturn []\n\t\t\t}\n\t\t}),\n\t),\n)\n\nexport const RepeatableLegacySchema = RepeatableLinkLegacySchema\n\nexport type RepeatableLegacy = z.infer<typeof RepeatableLegacySchema>\n"],"mappings":";;AAiBA,MAAa,yBAbsB,EAAE,KACpC,EAAE,MAAM,EAAE,SAAS,CAAC,EACpB,EAAE,WAAW,UACZ,MAAM,SAAS,SAAS;AACvB,KAAI;AACH,SAAO,CAAC,iBAAiB,MAAM,KAAK,CAAC;SAC9B;AACP,SAAO,EAAE;;EAET,CACF,CACD"}
1
+ {"version":3,"file":"repeatable.js","names":[],"sources":["../../../src/content/legacy/repeatable.ts"],"sourcesContent":["import { z } from \"zod/mini\"\n\n// Keep the legacy schema non-lossy; item-level link decoding lives in\n// `codec/repeatable.ts`, where the field model is available.\nexport const RepeatableLegacySchema = z.array(z.unknown())\n\nexport type RepeatableLegacy = z.infer<typeof RepeatableLegacySchema>\n"],"mappings":";;AAIA,MAAa,yBAAyB,EAAE,MAAM,EAAE,SAAS,CAAC"}
@@ -1,15 +1,14 @@
1
- import { NestableLegacySchema } from "./nestable.js";
2
1
  import { GroupItemLegacySchema, NestableAndGroupLegacySchema } from "./group.js";
3
2
  import { z } from "zod/mini";
4
3
  //#region src/content/legacy/slice.ts
5
4
  const LegacySliceLegacySchema = NestableAndGroupLegacySchema;
6
5
  const CompositeSliceLegacySchema = z.object({
7
- "non-repeat": z.optional(z.record(z.string(), NestableLegacySchema)),
6
+ "non-repeat": z.optional(z.record(z.string(), z.unknown())),
8
7
  repeat: z.optional(z.array(GroupItemLegacySchema))
9
8
  });
10
9
  const SharedSliceLegacySchema = z.object({
11
10
  variation: z.string(),
12
- primary: z.transform((value) => z.record(z.string(), NestableAndGroupLegacySchema).safeParse(value).data || {}),
11
+ primary: z.transform((value) => z.record(z.string(), z.unknown()).safeParse(value).data || {}),
13
12
  items: z.transform((value) => z.array(GroupItemLegacySchema).safeParse(value).data || [])
14
13
  });
15
14
  const SliceLegacySchema = z.union([
@@ -1 +1 @@
1
- {"version":3,"file":"slice.js","names":[],"sources":["../../../src/content/legacy/slice.ts"],"sourcesContent":["import { z } from \"zod/mini\"\n\nimport { GroupItemLegacySchema, NestableAndGroupLegacySchema } from \"./group\"\nimport { NestableLegacySchema } from \"./nestable\"\n\n// Legacy (before 2020)\nexport const LegacySliceLegacySchema = NestableAndGroupLegacySchema\n\nexport type LegacySliceLegacy = z.infer<typeof LegacySliceLegacySchema>\n\n// Composite (2020 to 2021)\nexport const CompositeSliceLegacySchema = z.object({\n\t\"non-repeat\": z.optional(z.record(z.string(), NestableLegacySchema)),\n\trepeat: z.optional(z.array(GroupItemLegacySchema)),\n})\n\nexport type CompositeSliceLegacy = z.infer<typeof CompositeSliceLegacySchema>\n\n// Shared (2021 to present)\nexport const SharedSliceLegacySchema = z.object({\n\tvariation: z.string(),\n\tprimary: z.transform(\n\t\t(value) => z.record(z.string(), NestableAndGroupLegacySchema).safeParse(value).data || {},\n\t),\n\titems: z.transform((value) => z.array(GroupItemLegacySchema).safeParse(value).data || []),\n})\n\nexport type SharedSliceLegacy = z.infer<typeof SharedSliceLegacySchema>\n\n// All\nexport const SliceLegacySchema: z.ZodMiniType<SliceLegacy> = z.union([\n\tLegacySliceLegacySchema,\n\tCompositeSliceLegacySchema,\n\tSharedSliceLegacySchema,\n])\n\nexport type SliceLegacy = LegacySliceLegacy | CompositeSliceLegacy | SharedSliceLegacy\n"],"mappings":";;;;AAMA,MAAa,0BAA0B;AAKvC,MAAa,6BAA6B,EAAE,OAAO;CAClD,cAAc,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,qBAAqB,CAAC;CACpE,QAAQ,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;CAClD,CAAC;AAKF,MAAa,0BAA0B,EAAE,OAAO;CAC/C,WAAW,EAAE,QAAQ;CACrB,SAAS,EAAE,WACT,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,6BAA6B,CAAC,UAAU,MAAM,CAAC,QAAQ,EAAE,CACzF;CACD,OAAO,EAAE,WAAW,UAAU,EAAE,MAAM,sBAAsB,CAAC,UAAU,MAAM,CAAC,QAAQ,EAAE,CAAC;CACzF,CAAC;AAKF,MAAa,oBAAgD,EAAE,MAAM;CACpE;CACA;CACA;CACA,CAAC"}
1
+ {"version":3,"file":"slice.js","names":[],"sources":["../../../src/content/legacy/slice.ts"],"sourcesContent":["import { z } from \"zod/mini\"\n\nimport { GroupItemLegacySchema, NestableAndGroupLegacySchema } from \"./group\"\n\n// Legacy (before 2020)\nexport const LegacySliceLegacySchema = NestableAndGroupLegacySchema\n\nexport type LegacySliceLegacy = z.infer<typeof LegacySliceLegacySchema>\n\n// Composite (2020 to 2021)\n// Keep non-repeat values raw here: array-shaped legacy payloads are ambiguous until\n// `codec/slice.ts` resolves the field model and picks the right decoder.\nexport const CompositeSliceLegacySchema = z.object({\n\t\"non-repeat\": z.optional(z.record(z.string(), z.unknown())),\n\trepeat: z.optional(z.array(GroupItemLegacySchema)),\n})\n\nexport type CompositeSliceLegacy = z.infer<typeof CompositeSliceLegacySchema>\n\n// Shared (2021 to present)\n// Keep primary values raw here: array-shaped legacy payloads are ambiguous until\n// `codec/slice.ts` resolves the field model and picks the right decoder.\nexport const SharedSliceLegacySchema = z.object({\n\tvariation: z.string(),\n\tprimary: z.transform((value) => z.record(z.string(), z.unknown()).safeParse(value).data || {}),\n\titems: z.transform((value) => z.array(GroupItemLegacySchema).safeParse(value).data || []),\n})\n\nexport type SharedSliceLegacy = z.infer<typeof SharedSliceLegacySchema>\n\n// All\nexport const SliceLegacySchema: z.ZodMiniType<SliceLegacy> = z.union([\n\tLegacySliceLegacySchema,\n\tCompositeSliceLegacySchema,\n\tSharedSliceLegacySchema,\n])\n\nexport type SliceLegacy = LegacySliceLegacy | CompositeSliceLegacy | SharedSliceLegacy\n"],"mappings":";;;AAKA,MAAa,0BAA0B;AAOvC,MAAa,6BAA6B,EAAE,OAAO;CAClD,cAAc,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,SAAS,CAAC,CAAC;CAC3D,QAAQ,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;CAClD,CAAC;AAOF,MAAa,0BAA0B,EAAE,OAAO;CAC/C,WAAW,EAAE,QAAQ;CACrB,SAAS,EAAE,WAAW,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,SAAS,CAAC,CAAC,UAAU,MAAM,CAAC,QAAQ,EAAE,CAAC;CAC9F,OAAO,EAAE,WAAW,UAAU,EAAE,MAAM,sBAAsB,CAAC,UAAU,MAAM,CAAC,QAAQ,EAAE,CAAC;CACzF,CAAC;AAKF,MAAa,oBAAgD,EAAE,MAAM;CACpE;CACA;CACA;CACA,CAAC"}
@@ -46,6 +46,7 @@ const NestableContentTypes = [
46
46
  SeparatorContentType,
47
47
  TableContentType
48
48
  ];
49
+ /** @internal */
49
50
  function isNestableContent(content) {
50
51
  return NestableContentTypes.includes(content.__TYPE__);
51
52
  }
@@ -1 +1 @@
1
- {"version":3,"file":"nestable.js","names":[],"sources":["../../src/content/nestable.ts"],"sourcesContent":["import { z } from \"zod/mini\"\n\nimport type { NestableModel } from \"../model/nestable\"\nimport type { BooleanContent } from \"./boolean\"\nimport { BooleanContentDefaultValue, BooleanContentSchema, BooleanContentType } from \"./boolean\"\nimport type { EmbedContent } from \"./embed\"\nimport { EmbedContentSchema, EmbedContentType } from \"./embed\"\nimport type { EmptyContent } from \"./empty\"\nimport { EmptyContentSchema, EmptyContentType } from \"./empty\"\nimport type {\n\tColorContent,\n\tDateContent,\n\tNumberContent,\n\tRangeContent,\n\tSelectContent,\n\tTextContent,\n\tTimestampContent,\n} from \"./field\"\nimport {\n\tColorContentSchema,\n\tDateContentSchema,\n\tFieldContentType,\n\tNumberContentSchema,\n\tRangeContentSchema,\n\tSelectContentDefaultValue,\n\tSelectContentSchema,\n\tTextContentSchema,\n\tTimestampContentSchema,\n} from \"./field\"\nimport type { GeoPointContent } from \"./geopoint\"\nimport { GeoPointContentSchema, GeoPointContentType } from \"./geopoint\"\nimport type { ImageContent } from \"./image\"\nimport { ImageContentSchema, ImageContentType } from \"./image\"\nimport type { IntegrationFieldContent } from \"./integrationField\"\nimport { IntegrationFieldContentSchema, IntegrationFieldContentType } from \"./integrationField\"\nimport type { LinkContent } from \"./link\"\nimport { LinkContentSchema, LinkContentType } from \"./link\"\nimport type { RepeatableContent } from \"./repeatable\"\nimport { RepeatableContentSchema, RepeatableContentType } from \"./repeatable\"\nimport type { RichTextContent } from \"./richText\"\nimport { RichTextContentSchema, RichTextContentType } from \"./richText\"\nimport type { SeparatorContent } from \"./separator\"\nimport { SeparatorContentSchema, SeparatorContentType } from \"./separator\"\nimport type { TableContent } from \"./table\"\nimport { TableContentSchema, TableContentType } from \"./table\"\n\nexport const NestableContentSchema: z.ZodMiniType<NestableContent> = z.union([\n\tEmptyContentSchema,\n\tBooleanContentSchema,\n\tColorContentSchema,\n\tDateContentSchema,\n\tEmbedContentSchema,\n\tGeoPointContentSchema,\n\tImageContentSchema,\n\tIntegrationFieldContentSchema,\n\tLinkContentSchema,\n\tNumberContentSchema,\n\tRangeContentSchema,\n\tRepeatableContentSchema,\n\tRichTextContentSchema,\n\tSelectContentSchema,\n\tSeparatorContentSchema,\n\tTableContentSchema,\n\tTextContentSchema,\n\tTimestampContentSchema,\n])\n\nexport type NestableContent =\n\t| EmptyContent\n\t| BooleanContent\n\t| ColorContent\n\t| DateContent\n\t| EmbedContent\n\t| GeoPointContent\n\t| ImageContent\n\t| IntegrationFieldContent\n\t| LinkContent\n\t| NumberContent\n\t| RangeContent\n\t| RepeatableContent\n\t| RichTextContent\n\t| SelectContent\n\t| SeparatorContent\n\t| TableContent\n\t| TextContent\n\t| TimestampContent\n\nconst NestableContentTypes = [\n\tEmptyContentType,\n\tBooleanContentType,\n\tEmbedContentType,\n\tFieldContentType,\n\tGeoPointContentType,\n\tImageContentType,\n\tIntegrationFieldContentType,\n\tLinkContentType,\n\tRepeatableContentType,\n\tRichTextContentType,\n\tSeparatorContentType,\n\tTableContentType,\n]\ntype NestableContentType = (typeof NestableContentTypes)[number]\nexport function isNestableContent(content: {\n\t__TYPE__: string\n}): content is { __TYPE__: NestableContentType } {\n\treturn (NestableContentTypes as string[]).includes(content.__TYPE__)\n}\n\n/**\n * Returns the default value for a nestable widget based on its configuration.\n * Currently only Boolean and Select fields have default values.\n */\nexport const NestableContentDefaultValue = (\n\twidgetDef: NestableModel,\n): NestableContent | undefined => {\n\tswitch (widgetDef.type) {\n\t\tcase \"Boolean\":\n\t\t\treturn BooleanContentDefaultValue(widgetDef)\n\t\tcase \"Select\":\n\t\t\treturn SelectContentDefaultValue(widgetDef)\n\t\tdefault:\n\t\t\treturn undefined\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;AA8CA,MAAa,wBAAwD,EAAE,MAAM;CAC5E;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,CAAC;AAsBF,MAAM,uBAAuB;CAC5B;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AAED,SAAgB,kBAAkB,SAEe;AAChD,QAAQ,qBAAkC,SAAS,QAAQ,SAAS"}
1
+ {"version":3,"file":"nestable.js","names":[],"sources":["../../src/content/nestable.ts"],"sourcesContent":["import { z } from \"zod/mini\"\n\nimport type { NestableModel } from \"../model/nestable\"\nimport type { BooleanContent } from \"./boolean\"\nimport { BooleanContentDefaultValue, BooleanContentSchema, BooleanContentType } from \"./boolean\"\nimport type { EmbedContent } from \"./embed\"\nimport { EmbedContentSchema, EmbedContentType } from \"./embed\"\nimport type { EmptyContent } from \"./empty\"\nimport { EmptyContentSchema, EmptyContentType } from \"./empty\"\nimport type {\n\tColorContent,\n\tDateContent,\n\tNumberContent,\n\tRangeContent,\n\tSelectContent,\n\tTextContent,\n\tTimestampContent,\n} from \"./field\"\nimport {\n\tColorContentSchema,\n\tDateContentSchema,\n\tFieldContentType,\n\tNumberContentSchema,\n\tRangeContentSchema,\n\tSelectContentDefaultValue,\n\tSelectContentSchema,\n\tTextContentSchema,\n\tTimestampContentSchema,\n} from \"./field\"\nimport type { GeoPointContent } from \"./geopoint\"\nimport { GeoPointContentSchema, GeoPointContentType } from \"./geopoint\"\nimport type { ImageContent } from \"./image\"\nimport { ImageContentSchema, ImageContentType } from \"./image\"\nimport type { IntegrationFieldContent } from \"./integrationField\"\nimport { IntegrationFieldContentSchema, IntegrationFieldContentType } from \"./integrationField\"\nimport type { LinkContent } from \"./link\"\nimport { LinkContentSchema, LinkContentType } from \"./link\"\nimport type { RepeatableContent } from \"./repeatable\"\nimport { RepeatableContentSchema, RepeatableContentType } from \"./repeatable\"\nimport type { RichTextContent } from \"./richText\"\nimport { RichTextContentSchema, RichTextContentType } from \"./richText\"\nimport type { SeparatorContent } from \"./separator\"\nimport { SeparatorContentSchema, SeparatorContentType } from \"./separator\"\nimport type { TableContent } from \"./table\"\nimport { TableContentSchema, TableContentType } from \"./table\"\n\nexport const NestableContentSchema: z.ZodMiniType<NestableContent> = z.union([\n\tEmptyContentSchema,\n\tBooleanContentSchema,\n\tColorContentSchema,\n\tDateContentSchema,\n\tEmbedContentSchema,\n\tGeoPointContentSchema,\n\tImageContentSchema,\n\tIntegrationFieldContentSchema,\n\tLinkContentSchema,\n\tNumberContentSchema,\n\tRangeContentSchema,\n\tRepeatableContentSchema,\n\tRichTextContentSchema,\n\tSelectContentSchema,\n\tSeparatorContentSchema,\n\tTableContentSchema,\n\tTextContentSchema,\n\tTimestampContentSchema,\n])\n\nexport type NestableContent =\n\t| EmptyContent\n\t| BooleanContent\n\t| ColorContent\n\t| DateContent\n\t| EmbedContent\n\t| GeoPointContent\n\t| ImageContent\n\t| IntegrationFieldContent\n\t| LinkContent\n\t| NumberContent\n\t| RangeContent\n\t| RepeatableContent\n\t| RichTextContent\n\t| SelectContent\n\t| SeparatorContent\n\t| TableContent\n\t| TextContent\n\t| TimestampContent\n\nconst NestableContentTypes = [\n\tEmptyContentType,\n\tBooleanContentType,\n\tEmbedContentType,\n\tFieldContentType,\n\tGeoPointContentType,\n\tImageContentType,\n\tIntegrationFieldContentType,\n\tLinkContentType,\n\tRepeatableContentType,\n\tRichTextContentType,\n\tSeparatorContentType,\n\tTableContentType,\n]\ntype NestableContentType = (typeof NestableContentTypes)[number]\n\n/** @internal */\nexport function isNestableContent(content: {\n\t__TYPE__: string\n}): content is { __TYPE__: NestableContentType } {\n\treturn (NestableContentTypes as string[]).includes(content.__TYPE__)\n}\n\n/**\n * Returns the default value for a nestable widget based on its configuration.\n * Currently only Boolean and Select fields have default values.\n */\nexport const NestableContentDefaultValue = (\n\twidgetDef: NestableModel,\n): NestableContent | undefined => {\n\tswitch (widgetDef.type) {\n\t\tcase \"Boolean\":\n\t\t\treturn BooleanContentDefaultValue(widgetDef)\n\t\tcase \"Select\":\n\t\t\treturn SelectContentDefaultValue(widgetDef)\n\t\tdefault:\n\t\t\treturn undefined\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;AA8CA,MAAa,wBAAwD,EAAE,MAAM;CAC5E;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,CAAC;AAsBF,MAAM,uBAAuB;CAC5B;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;;AAID,SAAgB,kBAAkB,SAEe;AAChD,QAAQ,qBAAkC,SAAS,QAAQ,SAAS"}
@@ -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
@@ -50,6 +50,6 @@ function collectSharedSlices(customType) {
50
50
  return sharedSlices;
51
51
  }
52
52
  //#endregion
53
- export { customTypeModel_exports, flatten };
53
+ export { collectSharedSlices, customTypeModel_exports, flatten };
54
54
 
55
55
  //# sourceMappingURL=customTypeModel.js.map
@@ -1,5 +1,6 @@
1
1
  import { WidgetContent } from "../content/widget.js";
2
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
 
@@ -12,7 +13,7 @@ declare function collectWidgets<TWidgetContent extends WidgetContent>(document:
12
13
  key: string;
13
14
  apiID: string;
14
15
  }) => content is TWidgetContent): Record<string, TWidgetContent>;
15
- declare function fromLegacy(legacy: DocumentLegacy): DocumentContent | undefined;
16
+ declare function fromLegacy(legacy: DocumentLegacy, model: StaticCustomTypeModel): DocumentContent | undefined;
16
17
  declare function toLegacy(document: DocumentContent): DocumentLegacy;
17
18
  //#endregion
18
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,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,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
@@ -20,7 +23,7 @@ function collectWidgets(document, test) {
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();
@@ -35,6 +38,16 @@ function fromLegacy(legacy) {
35
38
  } else if (!key.endsWith("_POSITION")) widgets[key] = value;
36
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: (\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(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(widgets)\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,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,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,QAAQ;AAClF,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"}
@@ -34,17 +34,17 @@ type TraverseSharedSliceContentConfig = {
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;
37
+ model?: CompositeSliceModel | SharedSliceVariationContentModel;
38
38
  transformWidget?: TraverseWidgetContentFunction;
39
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;
43
+ model?: LegacySliceModel | SharedSliceVariationContentModel;
44
44
  transformWidget?: TraverseWidgetContentFunction;
45
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;
@@ -71,7 +71,7 @@ type TraverseSliceContentFunction = <TContent extends SliceItemContent>(args: {
71
71
  apiID: string;
72
72
  content: TContent;
73
73
  model?: SliceContentModel;
74
- }) => TContent | undefined;
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;
@@ -1 +1 @@
1
- {"version":3,"file":"traverseContent.d.ts","names":[],"sources":["../../src/helpers/traverseContent.ts"],"mappings":";;;;;;;;;;;;;;;;;KAoCK,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,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;EACR,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;AAAA,KAuCE,gCAAA;EACJ,KAAA,GAAQ,gBAAA;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,KA2BE,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;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"}
1
+ {"version":3,"file":"traverseContent.d.ts","names":[],"sources":["../../src/helpers/traverseContent.ts"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { TableCellModel } from "../model/table.js";
2
- import { make } from "./contentPath.js";
2
+ import { append, make, serialize } from "./contentPath.js";
3
3
  import { flatten } from "./customTypeModel.js";
4
4
  import { isRepeatableContentValue } from "../content/repeatable.js";
5
5
  import { RichTextContentType } from "../content/richText.js";
@@ -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"
@@ -133,9 +155,9 @@ function traverseSharedSliceContent(path, key, apiID, content, config) {
133
155
  }
134
156
  function traverseCompositeSliceContent(path, key, apiID, content, config) {
135
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({
@@ -172,8 +195,17 @@ function traverseCompositeSliceContent(path, key, apiID, content, config) {
172
195
  }
173
196
  function traverseLegacySliceContent(path, key, apiID, content, config) {
174
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
  });
@@ -1 +1 @@
1
- {"version":3,"file":"traverseContent.js","names":["customTypeModel.flatten","contentPath.make"],"sources":["../../src/helpers/traverseContent.ts"],"sourcesContent":["import type { DocumentContent } from \"../content/document\"\nimport { GroupContentType } from \"../content/group\"\nimport type { GroupContent, GroupItemContent } from \"../content/group\"\nimport { isNestableContent } from \"../content/nestable\"\nimport { isRepeatableContentValue, RepeatableContentType } from \"../content/repeatable\"\nimport type { RepeatableContent } from \"../content/repeatable\"\nimport { RichTextContentType } from \"../content/richText\"\nimport { CompositeSliceContentType, SharedSliceContentType } from \"../content/slice\"\nimport type { CompositeSliceContent, SharedSliceContent } from \"../content/slice\"\nimport {\n\ttype CompositeSliceItemContent,\n\ttype SharedSliceItemContent,\n\ttype LegacySliceItemContent,\n\ttype SliceItemContent,\n\ttype SlicesContent,\n\tSlicesContentType,\n} from \"../content/slices\"\nimport { TableContentType, type TableContent } from \"../content/table\"\nimport type { WidgetContent } from \"../content/widget\"\nimport type { StaticCustomTypeModel } from \"../model/customType\"\nimport type { GroupModel, NestedGroupModel } from \"../model/group\"\nimport type { LinkModel } from \"../model/link\"\nimport type { NestableModel } from \"../model/nestable\"\nimport type {\n\tCompositeSliceModel,\n\tLegacySliceModel,\n\tSharedSliceVariationContentModel,\n\tSliceContentModel,\n} from \"../model/slice\"\nimport type { StaticSlicesModel } from \"../model/slices\"\nimport { TableCellModel } from \"../model/table\"\nimport type { TableModel } from \"../model/table\"\nimport type { StaticWidgetModel } from \"../model/widget\"\nimport * as contentPath from \"./contentPath\"\nimport * as customTypeModel from \"./customTypeModel\"\n\ntype TraverseDocumentContentConfig = {\n\tmodel?: StaticCustomTypeModel\n\ttransformWidget?: TraverseWidgetContentFunction\n\ttransformSlice?: TraverseSliceContentFunction\n}\n\nexport function traverseDocumentContent(\n\tdocument: DocumentContent,\n\tconfig: TraverseDocumentContentConfig,\n): DocumentContent {\n\tconst { model, transformWidget, transformSlice } = config\n\n\t// Remove tabs from custom type model\n\tconst flatModel = model ? customTypeModel.flatten(model) : {}\n\n\tconst traversed: DocumentContent = {}\n\tfor (const [key, content] of Object.entries(document)) {\n\t\tconst path = contentPath.make(\n\t\t\t{ key: config.model?.id, type: \"CustomType\" },\n\t\t\t{ key, type: \"Widget\" },\n\t\t)\n\n\t\tconst traversedContent = traverseWidgetContent(path, key, key, content, {\n\t\t\tmodel: flatModel[key],\n\t\t\ttransformWidget,\n\t\t\ttransformSlice,\n\t\t})\n\t\tif (traversedContent) {\n\t\t\ttraversed[key] = traversedContent\n\t\t}\n\t}\n\n\treturn traversed\n}\n\ntype TraverseSlicesContentConfig = {\n\tmodel?: StaticSlicesModel\n\ttransformWidget?: TraverseWidgetContentFunction\n\ttransformSlice?: TraverseSliceContentFunction\n}\n\nexport function traverseSlicesContent(\n\tpath: contentPath.Path,\n\tkey: string,\n\tapiID: string,\n\tcontent: SlicesContent,\n\tconfig: TraverseSlicesContentConfig,\n): SlicesContent | undefined {\n\tconst { transformWidget = (args) => args.content, transformSlice = (args) => args.content } =\n\t\tconfig\n\n\tconst traversed: SlicesContent[\"value\"] = []\n\tfor (const sliceItemContent of content.value) {\n\t\tconst sliceModel = config.model?.config?.choices?.[sliceItemContent.name]\n\n\t\tlet traversedSliceItemContent: SliceItemContent | undefined\n\t\tif (sliceItemContent.widget.__TYPE__ === SharedSliceContentType) {\n\t\t\tlet model: SharedSliceVariationContentModel | undefined\n\t\t\tif (sliceModel?.type === \"SharedSlice\") {\n\t\t\t\tconst variationID = sliceItemContent.widget.variation\n\t\t\t\tconst variationModel = sliceModel.variations.find(\n\t\t\t\t\t(variation) => variation.id === variationID,\n\t\t\t\t)\n\t\t\t\tif (variationModel) {\n\t\t\t\t\tmodel = {\n\t\t\t\t\t\ttype: \"SharedSlice\",\n\t\t\t\t\t\tsliceName: sliceModel.id,\n\t\t\t\t\t\tvariationID,\n\t\t\t\t\t\tfields: {\n\t\t\t\t\t\t\tprimary: variationModel.primary || {},\n\t\t\t\t\t\t\titems: variationModel.items || {},\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\ttraversedSliceItemContent = traverseSharedSliceContent(\n\t\t\t\tpath.concat({ key: sliceItemContent.key, type: \"SharedSlice\" }),\n\t\t\t\tsliceItemContent.key,\n\t\t\t\tsliceItemContent.name,\n\t\t\t\tsliceItemContent as SharedSliceItemContent,\n\t\t\t\t{ model, transformWidget, transformSlice },\n\t\t\t)\n\t\t} else if (sliceItemContent.widget.__TYPE__ === CompositeSliceContentType) {\n\t\t\tconst model = sliceModel?.type === \"Slice\" ? sliceModel : undefined\n\t\t\ttraversedSliceItemContent = traverseCompositeSliceContent(\n\t\t\t\tpath.concat({ key: sliceItemContent.key, type: \"Slice\" }),\n\t\t\t\tsliceItemContent.key,\n\t\t\t\tsliceItemContent.name,\n\t\t\t\tsliceItemContent as CompositeSliceItemContent,\n\t\t\t\t{ model, transformWidget, transformSlice },\n\t\t\t)\n\t\t} else {\n\t\t\tconst model =\n\t\t\t\tsliceModel?.type !== \"SharedSlice\" && sliceModel?.type !== \"Slice\" ? sliceModel : undefined\n\t\t\ttraversedSliceItemContent = traverseLegacySliceContent(\n\t\t\t\tpath.concat({ key: sliceItemContent.key, type: \"LegacySlice\" }),\n\t\t\t\tsliceItemContent.key,\n\t\t\t\tsliceItemContent.name,\n\t\t\t\tsliceItemContent as LegacySliceItemContent,\n\t\t\t\t{ model, transformWidget, transformSlice },\n\t\t\t)\n\t\t}\n\n\t\tif (traversedSliceItemContent) {\n\t\t\ttraversed.push(traversedSliceItemContent)\n\t\t}\n\t}\n\n\treturn transformWidget({\n\t\tpath,\n\t\tkey,\n\t\tapiID,\n\t\tcontent: { ...content, value: traversed },\n\t\tmodel: config.model,\n\t})\n}\n\ntype TraverseSharedSliceContentConfig = {\n\tmodel?: SharedSliceVariationContentModel\n\ttransformWidget?: TraverseWidgetContentFunction\n\ttransformSlice?: TraverseSliceContentFunction\n}\n\nexport function traverseSharedSliceContent(\n\tpath: contentPath.Path,\n\tkey: string,\n\tapiID: string,\n\tcontent: SharedSliceItemContent,\n\tconfig: TraverseSharedSliceContentConfig,\n): SharedSliceItemContent | undefined {\n\tconst { transformWidget = (args) => args.content, transformSlice = (args) => args.content } =\n\t\tconfig\n\n\tconst traversedPrimary: SharedSliceContent[\"primary\"] = {}\n\tfor (const [key, fieldContent] of Object.entries(content.widget.primary)) {\n\t\tconst model = config.model?.fields.primary?.[key]\n\n\t\tconst traversedContent = traverseWidgetContent(\n\t\t\tpath.concat({ key: \"primary\", type: \"primary\" }, { key, type: \"Widget\" }),\n\t\t\tkey,\n\t\t\tkey,\n\t\t\tfieldContent,\n\t\t\t{ model, transformWidget },\n\t\t)\n\n\t\tif (\n\t\t\ttraversedContent &&\n\t\t\t(isNestableContent(traversedContent) || traversedContent.__TYPE__ === GroupContentType)\n\t\t) {\n\t\t\ttraversedPrimary[key] = traversedContent\n\t\t}\n\t}\n\n\tconst traversedItems = traverseGroupItemsContent(\n\t\tpath.concat({ key: \"items\", type: \"items\" }),\n\t\tcontent.widget.items,\n\t\t{ model: config.model?.fields.items, transformWidget },\n\t)\n\n\treturn transformSlice({\n\t\tpath,\n\t\tkey,\n\t\tapiID,\n\t\tcontent: {\n\t\t\t...content,\n\t\t\twidget: { ...content.widget, primary: traversedPrimary, items: traversedItems },\n\t\t},\n\t\tmodel: config.model,\n\t})\n}\n\ntype TraverseCompositeSliceContentConfig = {\n\tmodel?: CompositeSliceModel\n\ttransformWidget?: TraverseWidgetContentFunction\n\ttransformSlice?: TraverseSliceContentFunction\n}\n\nexport function traverseCompositeSliceContent(\n\tpath: contentPath.Path,\n\tkey: string,\n\tapiID: string,\n\tcontent: CompositeSliceItemContent,\n\tconfig: TraverseCompositeSliceContentConfig,\n): CompositeSliceItemContent | undefined {\n\tconst { transformWidget = (args) => args.content, transformSlice = (args) => args.content } =\n\t\tconfig\n\n\tconst traversedPrimary: CompositeSliceContent[\"nonRepeat\"] = {}\n\tfor (const [key, fieldContent] of Object.entries(content.widget.nonRepeat)) {\n\t\tconst model = config.model?.[\"non-repeat\"]?.[key]\n\n\t\tconst traversedContent = traverseWidgetContent(\n\t\t\tpath.concat({ key: \"non-repeat\", type: \"primary\" }, { key, type: \"Widget\" }),\n\t\t\tkey,\n\t\t\tapiID,\n\t\t\tfieldContent,\n\t\t\t{ model, transformWidget },\n\t\t)\n\n\t\tif (traversedContent && isNestableContent(traversedContent)) {\n\t\t\ttraversedPrimary[key] = traversedContent\n\t\t}\n\t}\n\n\tconst traversedItems = traverseGroupItemsContent(\n\t\tpath.concat({ key: \"repeat\", type: \"items\" }),\n\t\tcontent.widget.repeat,\n\t\t{ model: config.model?.repeat, transformWidget },\n\t)\n\n\treturn transformSlice({\n\t\tpath,\n\t\tkey,\n\t\tapiID,\n\t\tcontent: {\n\t\t\t...content,\n\t\t\twidget: { ...content.widget, nonRepeat: traversedPrimary, repeat: traversedItems },\n\t\t},\n\t\tmodel: config.model,\n\t})\n}\n\ntype TraverseLegacySliceContentConfig = {\n\tmodel?: LegacySliceModel\n\ttransformWidget?: TraverseWidgetContentFunction\n\ttransformSlice?: TraverseSliceContentFunction\n}\n\nexport function traverseLegacySliceContent(\n\tpath: contentPath.Path,\n\tkey: string,\n\tapiID: string,\n\tcontent: LegacySliceItemContent,\n\tconfig: TraverseLegacySliceContentConfig,\n): LegacySliceItemContent | undefined {\n\tconst {\n\t\tmodel,\n\t\ttransformWidget = (args) => args.content,\n\t\ttransformSlice = (args) => args.content,\n\t} = config\n\n\tconst traversedContent = traverseWidgetContent(path, key, apiID, content.widget, {\n\t\tmodel,\n\t\ttransformWidget,\n\t\ttransformSlice,\n\t})\n\n\tif (\n\t\ttraversedContent &&\n\t\t(isNestableContent(traversedContent) || traversedContent.__TYPE__ === GroupContentType)\n\t) {\n\t\treturn transformSlice({\n\t\t\tpath,\n\t\t\tkey,\n\t\t\tapiID,\n\t\t\tcontent: { ...content, widget: traversedContent },\n\t\t\tmodel,\n\t\t})\n\t}\n}\n\ntype TraverseGroupContentConfig = {\n\tmodel?: GroupModel\n\ttransformWidget: TraverseWidgetContentFunction\n}\n\nexport function traverseGroupContent(\n\tpath: contentPath.Path,\n\tkey: string,\n\tapiID: string,\n\tcontent: GroupContent,\n\tconfig: TraverseGroupContentConfig,\n): GroupContent | undefined {\n\tconst { model, transformWidget } = config\n\n\tconst traversed = traverseGroupItemsContent(path, content.value, {\n\t\tmodel: model?.config?.fields,\n\t\ttransformWidget,\n\t})\n\n\treturn transformWidget({\n\t\tpath,\n\t\tkey,\n\t\tapiID,\n\t\tcontent: { ...content, value: traversed },\n\t\tmodel,\n\t})\n}\n\ntype TraverseGroupItemsContentConfig = {\n\tmodel?: Record<string, NestedGroupModel | NestableModel>\n\ttransformWidget: TraverseWidgetContentFunction\n}\n\nexport function traverseGroupItemsContent(\n\tpath: contentPath.Path,\n\tcontent: GroupItemContent[],\n\tconfig: TraverseGroupItemsContentConfig,\n): GroupItemContent[] {\n\tconst { transformWidget } = config\n\n\tconst traversed: GroupItemContent[] = []\n\tfor (const groupItemContent of content) {\n\t\tconst groupItemPath = path.concat({ key: groupItemContent.key, type: \"GroupItem\" })\n\n\t\tconst traversedValue: GroupItemContent[\"value\"] = []\n\t\tfor (const [key, content] of groupItemContent.value) {\n\t\t\tconst model = config.model?.[key]\n\t\t\tconst traversedContent = traverseWidgetContent(\n\t\t\t\tgroupItemPath.concat({ key, type: \"Widget\" }),\n\t\t\t\tkey,\n\t\t\t\tkey,\n\t\t\t\tcontent,\n\t\t\t\t{ model, transformWidget },\n\t\t\t)\n\n\t\t\tif (\n\t\t\t\ttraversedContent &&\n\t\t\t\t(isNestableContent(traversedContent) || traversedContent.__TYPE__ === GroupContentType)\n\t\t\t) {\n\t\t\t\ttraversedValue.push([key, traversedContent])\n\t\t\t}\n\t\t}\n\n\t\ttraversed.push({ ...groupItemContent, value: traversedValue })\n\t}\n\n\treturn traversed\n}\n\ntype TraverseRepeatableContentConfig = {\n\tmodel?: LinkModel\n\ttransformWidget: TraverseWidgetContentFunction\n}\n\nexport function traverseRepeatableContent(\n\tpath: contentPath.Path,\n\tkey: string,\n\tapiID: string,\n\tcontent: RepeatableContent,\n\tconfig: TraverseRepeatableContentConfig,\n): RepeatableContent | undefined {\n\tconst { model, transformWidget } = config\n\tconst nonRepeatModel =\n\t\tmodel?.type === \"Link\" && model.config\n\t\t\t? { ...model, config: { ...model.config, repeat: false } }\n\t\t\t: model\n\n\tconst traversed: RepeatableContent[\"value\"] = []\n\tfor (let index = 0; index < content.value.length; index++) {\n\t\tconst traversedContent = traverseWidgetContent(\n\t\t\tpath.concat({ key: index.toString(), type: \"Widget\" }),\n\t\t\tkey,\n\t\t\tapiID,\n\t\t\tcontent.value[index],\n\t\t\t{ model: nonRepeatModel, transformWidget },\n\t\t)\n\n\t\tif (traversedContent && isRepeatableContentValue(traversedContent)) {\n\t\t\ttraversed.push(traversedContent)\n\t\t}\n\t}\n\n\treturn transformWidget({\n\t\tpath,\n\t\tkey,\n\t\tapiID,\n\t\tcontent: { ...content, value: traversed },\n\t\tmodel,\n\t})\n}\n\ntype TraverseTableContentConfig = {\n\tmodel?: TableModel\n\ttransformWidget: TraverseWidgetContentFunction\n}\n\nexport function traverseTableContent(\n\tpath: contentPath.Path,\n\tkey: string,\n\tapiID: string,\n\tcontent: TableContent,\n\tconfig: TraverseTableContentConfig,\n): TableContent | undefined {\n\tconst { model, transformWidget } = config\n\n\tconst traversed: TableContent[\"content\"] = []\n\tfor (let rowIndex = 0; rowIndex < content.content.length; rowIndex++) {\n\t\tconst traversedContent: TableContent[\"content\"][number][\"content\"] = []\n\t\tfor (let cellIndex = 0; cellIndex < content.content[rowIndex].content.length; cellIndex++) {\n\t\t\tconst cellPath = path.concat({ key: [rowIndex, cellIndex].join(\",\"), type: \"Widget\" })\n\t\t\tconst cell = content.content[rowIndex].content[cellIndex]\n\n\t\t\tconst transformed = transformWidget({\n\t\t\t\tpath: cellPath,\n\t\t\t\tkey,\n\t\t\t\tapiID,\n\t\t\t\tcontent: cell.content,\n\t\t\t\tmodel: TableCellModel,\n\t\t\t})\n\n\t\t\tif (transformed && transformed.__TYPE__ === RichTextContentType) {\n\t\t\t\ttraversedContent.push({ ...cell, content: transformed })\n\t\t\t} else {\n\t\t\t\ttraversedContent.push({\n\t\t\t\t\t...cell,\n\t\t\t\t\tcontent: {\n\t\t\t\t\t\t__TYPE__: RichTextContentType,\n\t\t\t\t\t\tvalue: [],\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\n\t\ttraversed.push({ ...content.content[rowIndex], content: traversedContent })\n\t}\n\n\treturn transformWidget({\n\t\tpath,\n\t\tkey,\n\t\tapiID,\n\t\tcontent: { ...content, content: traversed },\n\t\tmodel,\n\t})\n}\n\nexport type TraverseSliceContentFunction = <TContent extends SliceItemContent>(args: {\n\tpath: contentPath.Path\n\tkey: string\n\tapiID: string\n\tcontent: TContent\n\tmodel?: SliceContentModel\n}) => TContent | undefined\n\nexport type TraverseWidgetContentFunction<\n\tTContentTransformMode extends \"preserve\" | \"widen\" = \"preserve\",\n> = <TContent extends WidgetContent>(args: {\n\tpath: contentPath.Path\n\tkey: string\n\tapiID: string\n\tcontent: TContent\n\tmodel?: StaticWidgetModel\n}) => (TContentTransformMode extends \"preserve\" ? TContent : WidgetContent) | undefined\n\n// Internals\ntype TraverseWidgetContentConfig = {\n\tmodel?: StaticWidgetModel\n\ttransformWidget?: TraverseWidgetContentFunction\n\ttransformSlice?: TraverseSliceContentFunction\n}\n\nfunction traverseWidgetContent(\n\tpath: contentPath.Path,\n\tkey: string,\n\tapiID: string,\n\tcontent: WidgetContent,\n\tconfig: TraverseWidgetContentConfig,\n): WidgetContent | undefined {\n\tconst { transformWidget = (args) => args.content, transformSlice = (args) => args.content } =\n\t\tconfig\n\n\tif (content.__TYPE__ === SlicesContentType) {\n\t\tconst model =\n\t\t\tconfig.model?.type === \"Slices\" || config.model?.type === \"Choice\" ? config.model : undefined\n\t\treturn traverseSlicesContent(path, key, apiID, content, {\n\t\t\ttransformWidget,\n\t\t\ttransformSlice,\n\t\t\tmodel,\n\t\t})\n\t}\n\n\tif (content.__TYPE__ === GroupContentType) {\n\t\tconst model = config.model?.type === \"Group\" ? config.model : undefined\n\t\treturn traverseGroupContent(path, key, apiID, content, { transformWidget, model })\n\t}\n\n\tif (content.__TYPE__ === RepeatableContentType) {\n\t\tconst model = config.model?.type === \"Link\" ? config.model : undefined\n\t\treturn traverseRepeatableContent(path, key, apiID, content, { transformWidget, model })\n\t}\n\n\tif (content.__TYPE__ === TableContentType) {\n\t\tconst model = config.model?.type === \"Table\" ? config.model : undefined\n\t\treturn traverseTableContent(path, key, apiID, content, { transformWidget, model })\n\t}\n\n\tconst model =\n\t\tconfig.model?.type !== \"Slices\" &&\n\t\tconfig.model?.type !== \"Choice\" &&\n\t\tconfig.model?.type !== \"Group\" &&\n\t\tconfig.model?.type !== \"Table\"\n\t\t\t? config.model\n\t\t\t: undefined\n\treturn transformWidget({ path, key, apiID, content, model })\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"traverseContent.js","names":["customTypeModel.flatten","contentPath.make","contentPath.append","contentPath.serialize"],"sources":["../../src/helpers/traverseContent.ts"],"sourcesContent":["import type { DocumentContent } from \"../content/document\"\nimport { GroupContentType } from \"../content/group\"\nimport type { GroupContent, GroupItemContent } from \"../content/group\"\nimport { isNestableContent } from \"../content/nestable\"\nimport { isRepeatableContentValue, RepeatableContentType } from \"../content/repeatable\"\nimport type { RepeatableContent } from \"../content/repeatable\"\nimport { RichTextContentType } from \"../content/richText\"\nimport { CompositeSliceContentType, SharedSliceContentType } from \"../content/slice\"\nimport type { CompositeSliceContent, SharedSliceContent } from \"../content/slice\"\nimport {\n\ttype CompositeSliceItemContent,\n\ttype SharedSliceItemContent,\n\ttype LegacySliceItemContent,\n\ttype SliceItemContent,\n\ttype SlicesContent,\n\tSlicesContentType,\n} from \"../content/slices\"\nimport { TableContentType, type TableContent } from \"../content/table\"\nimport type { WidgetContent } from \"../content/widget\"\nimport type { StaticCustomTypeModel } from \"../model/customType\"\nimport type { GroupModel, NestedGroupModel } from \"../model/group\"\nimport type { LinkModel } from \"../model/link\"\nimport type { NestableModel } from \"../model/nestable\"\nimport type {\n\tCompositeSliceModel,\n\tLegacySliceModel,\n\tSharedSliceModel,\n\tSharedSliceVariationContentModel,\n\tSliceContentModel,\n} from \"../model/slice\"\nimport type { StaticSlicesModel } from \"../model/slices\"\nimport { TableCellModel } from \"../model/table\"\nimport type { TableModel } from \"../model/table\"\nimport type { StaticWidgetModel } from \"../model/widget\"\nimport * as contentPath from \"./contentPath\"\nimport * as customTypeModel from \"./customTypeModel\"\n\ntype TraverseDocumentContentConfig = {\n\tmodel?: StaticCustomTypeModel\n\ttransformWidget?: TraverseWidgetContentFunction\n\ttransformSlice?: TraverseSliceContentFunction\n}\n\nexport function traverseDocumentContent(\n\tdocument: DocumentContent,\n\tconfig: TraverseDocumentContentConfig,\n): DocumentContent {\n\tconst { model, transformWidget, transformSlice } = config\n\n\t// Remove tabs from custom type model\n\tconst flatModel = model ? customTypeModel.flatten(model) : {}\n\n\tconst traversed: DocumentContent = {}\n\tfor (const [key, content] of Object.entries(document)) {\n\t\tconst path = contentPath.make(\n\t\t\t{ key: config.model?.id, type: \"CustomType\" },\n\t\t\t{ key, type: \"Widget\" },\n\t\t)\n\n\t\tconst traversedContent = traverseWidgetContent(path, key, key, content, {\n\t\t\tmodel: flatModel[key],\n\t\t\ttransformWidget,\n\t\t\ttransformSlice,\n\t\t})\n\t\tif (traversedContent) {\n\t\t\ttraversed[key] = traversedContent\n\t\t}\n\t}\n\n\treturn traversed\n}\n\ntype TraverseSlicesContentConfig = {\n\tmodel?: StaticSlicesModel\n\ttransformWidget?: TraverseWidgetContentFunction\n\ttransformSlice?: TraverseSliceContentFunction\n}\n\nexport function traverseSlicesContent(\n\tpath: contentPath.Path,\n\tkey: string,\n\tapiID: string,\n\tcontent: SlicesContent,\n\tconfig: TraverseSlicesContentConfig,\n): SlicesContent | undefined {\n\tconst { transformWidget = (args) => args.content, transformSlice = (args) => args.content } =\n\t\tconfig\n\n\tconst traversed: SlicesContent[\"value\"] = []\n\tfor (const sliceItemContent of content.value) {\n\t\tconst sliceModel = config.model?.config?.choices?.[sliceItemContent.name]\n\n\t\tlet sliceContentModel: SliceContentModel | undefined\n\n\t\t// Happy path, content and model are both shared slices\n\t\tif (\n\t\t\tsliceItemContent.widget.__TYPE__ === SharedSliceContentType &&\n\t\t\tsliceModel?.type === \"SharedSlice\"\n\t\t) {\n\t\t\tconst variationID = sliceItemContent.widget.variation\n\t\t\tconst variationModel = sliceModel.variations.find((variation) => variation.id === variationID)\n\t\t\tif (variationModel) {\n\t\t\t\tsliceContentModel = {\n\t\t\t\t\ttype: \"SharedSlice\",\n\t\t\t\t\tsliceName: sliceModel.id,\n\t\t\t\t\tvariationID: variationModel.id,\n\t\t\t\t\tfields: {\n\t\t\t\t\t\tprimary: variationModel.primary || {},\n\t\t\t\t\t\titems: variationModel.items || {},\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Migrated path, content is composite or legacy, model is shared slice\n\t\tif (!sliceContentModel) {\n\t\t\tconst legacyPath = contentPath.append(contentPath.serialize(path), sliceItemContent.name)\n\n\t\t\t// Find the migrated slice model who's legacy path matches the content path\n\t\t\tconst migratedSliceModel = Object.values(config.model?.config?.choices || {}).find(\n\t\t\t\t(model): model is SharedSliceModel => {\n\t\t\t\t\treturn model.type === \"SharedSlice\" && Boolean(model.legacyPaths?.[legacyPath])\n\t\t\t\t},\n\t\t\t)\n\n\t\t\tif (migratedSliceModel) {\n\t\t\t\t// Find the variation that matches the legacy path\n\t\t\t\tconst variation = migratedSliceModel.variations.find((variation) => {\n\t\t\t\t\treturn variation.id === migratedSliceModel.legacyPaths?.[legacyPath]\n\t\t\t\t})\n\n\t\t\t\tif (variation) {\n\t\t\t\t\tsliceContentModel = {\n\t\t\t\t\t\ttype: \"SharedSlice\",\n\t\t\t\t\t\tsliceName: migratedSliceModel.id,\n\t\t\t\t\t\tvariationID: variation.id,\n\t\t\t\t\t\tfields: {\n\t\t\t\t\t\t\tprimary: variation.primary || {},\n\t\t\t\t\t\t\titems: variation.items || {},\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Non-migrated path, content and model are composite or legacy\n\t\tif (!sliceContentModel && sliceModel && sliceModel.type !== \"SharedSlice\") {\n\t\t\tsliceContentModel = sliceModel\n\t\t}\n\n\t\tlet traversedSliceItemContent: SliceItemContent | undefined\n\t\tif (sliceItemContent.widget.__TYPE__ === SharedSliceContentType) {\n\t\t\tconst model = sliceContentModel?.type === \"SharedSlice\" ? sliceContentModel : undefined\n\t\t\ttraversedSliceItemContent = traverseSharedSliceContent(\n\t\t\t\tpath.concat({ key: sliceItemContent.key, type: \"SharedSlice\" }),\n\t\t\t\tsliceItemContent.key,\n\t\t\t\tsliceItemContent.name,\n\t\t\t\tsliceItemContent as SharedSliceItemContent,\n\t\t\t\t{ model, transformWidget, transformSlice },\n\t\t\t)\n\t\t} else if (sliceItemContent.widget.__TYPE__ === CompositeSliceContentType) {\n\t\t\tconst model =\n\t\t\t\tsliceContentModel?.type === \"Slice\" || sliceContentModel?.type === \"SharedSlice\"\n\t\t\t\t\t? sliceContentModel\n\t\t\t\t\t: undefined\n\t\t\ttraversedSliceItemContent = traverseCompositeSliceContent(\n\t\t\t\tpath.concat({ key: sliceItemContent.key, type: \"Slice\" }),\n\t\t\t\tsliceItemContent.key,\n\t\t\t\tsliceItemContent.name,\n\t\t\t\tsliceItemContent as CompositeSliceItemContent,\n\t\t\t\t{ model, transformWidget, transformSlice },\n\t\t\t)\n\t\t} else {\n\t\t\tconst model = sliceContentModel?.type !== \"Slice\" ? sliceContentModel : undefined\n\t\t\ttraversedSliceItemContent = traverseLegacySliceContent(\n\t\t\t\tpath.concat({ key: sliceItemContent.key, type: \"LegacySlice\" }),\n\t\t\t\tsliceItemContent.key,\n\t\t\t\tsliceItemContent.name,\n\t\t\t\tsliceItemContent as LegacySliceItemContent,\n\t\t\t\t{ model, transformWidget, transformSlice },\n\t\t\t)\n\t\t}\n\n\t\tif (traversedSliceItemContent) {\n\t\t\ttraversed.push(traversedSliceItemContent)\n\t\t}\n\t}\n\n\treturn transformWidget({\n\t\tpath,\n\t\tkey,\n\t\tapiID,\n\t\tcontent: { ...content, value: traversed },\n\t\tmodel: config.model,\n\t})\n}\n\ntype TraverseSharedSliceContentConfig = {\n\tmodel?: SharedSliceVariationContentModel\n\ttransformWidget?: TraverseWidgetContentFunction\n\ttransformSlice?: TraverseSliceContentFunction\n}\n\nexport function traverseSharedSliceContent(\n\tpath: contentPath.Path,\n\tkey: string,\n\tapiID: string,\n\tcontent: SharedSliceItemContent,\n\tconfig: TraverseSharedSliceContentConfig,\n): SharedSliceItemContent | undefined {\n\tconst { transformWidget = (args) => args.content, transformSlice = (args) => args.content } =\n\t\tconfig\n\n\tconst traversedPrimary: SharedSliceContent[\"primary\"] = {}\n\tfor (const [key, fieldContent] of Object.entries(content.widget.primary)) {\n\t\tconst model = config.model?.fields.primary?.[key]\n\n\t\tconst traversedContent = traverseWidgetContent(\n\t\t\tpath.concat({ key: \"primary\", type: \"primary\" }, { key, type: \"Widget\" }),\n\t\t\tkey,\n\t\t\tkey,\n\t\t\tfieldContent,\n\t\t\t{ model, transformWidget },\n\t\t)\n\n\t\tif (\n\t\t\ttraversedContent &&\n\t\t\t(isNestableContent(traversedContent) || traversedContent.__TYPE__ === GroupContentType)\n\t\t) {\n\t\t\ttraversedPrimary[key] = traversedContent\n\t\t}\n\t}\n\n\tconst traversedItems = traverseGroupItemsContent(\n\t\tpath.concat({ key: \"items\", type: \"items\" }),\n\t\tcontent.widget.items,\n\t\t{ model: config.model?.fields.items, transformWidget },\n\t)\n\n\treturn transformSlice({\n\t\tpath,\n\t\tkey,\n\t\tapiID,\n\t\tcontent: {\n\t\t\t...content,\n\t\t\twidget: { ...content.widget, primary: traversedPrimary, items: traversedItems },\n\t\t},\n\t\tmodel: config.model,\n\t})\n}\n\ntype TraverseCompositeSliceContentConfig = {\n\tmodel?: CompositeSliceModel | SharedSliceVariationContentModel\n\ttransformWidget?: TraverseWidgetContentFunction\n\ttransformSlice?: TraverseSliceContentFunction\n}\n\nexport function traverseCompositeSliceContent(\n\tpath: contentPath.Path,\n\tkey: string,\n\tapiID: string,\n\tcontent: CompositeSliceItemContent,\n\tconfig: TraverseCompositeSliceContentConfig,\n): CompositeSliceItemContent | SharedSliceItemContent | undefined {\n\tconst { transformWidget = (args) => args.content, transformSlice = (args) => args.content } =\n\t\tconfig\n\n\tconst primaryModel =\n\t\tconfig.model?.type === \"SharedSlice\"\n\t\t\t? config.model?.fields.primary\n\t\t\t: config.model?.[\"non-repeat\"]\n\tconst traversedPrimary: CompositeSliceContent[\"nonRepeat\"] = {}\n\tfor (const [key, fieldContent] of Object.entries(content.widget.nonRepeat)) {\n\t\tconst traversedContent = traverseWidgetContent(\n\t\t\tpath.concat({ key: \"non-repeat\", type: \"primary\" }, { key, type: \"Widget\" }),\n\t\t\tkey,\n\t\t\tapiID,\n\t\t\tfieldContent,\n\t\t\t{ model: primaryModel?.[key], transformWidget },\n\t\t)\n\n\t\tif (traversedContent && isNestableContent(traversedContent)) {\n\t\t\ttraversedPrimary[key] = traversedContent\n\t\t}\n\t}\n\n\tconst itemsModel =\n\t\tconfig.model?.type === \"SharedSlice\" ? config.model?.fields.items : config.model?.repeat\n\tconst traversedItems = traverseGroupItemsContent(\n\t\tpath.concat({ key: \"repeat\", type: \"items\" }),\n\t\tcontent.widget.repeat,\n\t\t{ model: itemsModel, transformWidget },\n\t)\n\n\treturn transformSlice({\n\t\tpath,\n\t\tkey,\n\t\tapiID,\n\t\tcontent: {\n\t\t\t...content,\n\t\t\twidget: { ...content.widget, nonRepeat: traversedPrimary, repeat: traversedItems },\n\t\t},\n\t\tmodel: config.model,\n\t})\n}\n\ntype TraverseLegacySliceContentConfig = {\n\tmodel?: LegacySliceModel | SharedSliceVariationContentModel\n\ttransformWidget?: TraverseWidgetContentFunction\n\ttransformSlice?: TraverseSliceContentFunction\n}\n\nexport function traverseLegacySliceContent(\n\tpath: contentPath.Path,\n\tkey: string,\n\tapiID: string,\n\tcontent: LegacySliceItemContent,\n\tconfig: TraverseLegacySliceContentConfig,\n): LegacySliceItemContent | SharedSliceItemContent | undefined {\n\tconst {\n\t\tmodel,\n\t\ttransformWidget = (args) => args.content,\n\t\ttransformSlice = (args) => args.content,\n\t} = config\n\n\tlet legacySliceModel: LegacySliceModel | undefined\n\tif (content.widget.__TYPE__ === \"GroupContentType\") {\n\t\tif (model?.type === \"Group\") {\n\t\t\tlegacySliceModel = model\n\t\t} else if (model?.type === \"SharedSlice\") {\n\t\t\tlegacySliceModel = { type: \"Group\", config: { fields: model.fields.items } }\n\t\t}\n\t} else {\n\t\tif (model?.type === \"SharedSlice\") {\n\t\t\tlegacySliceModel = model.fields.primary?.[content.name]\n\t\t} else if (model?.type !== \"Group\") {\n\t\t\tlegacySliceModel = model\n\t\t}\n\t}\n\n\tconst traversedContent = traverseWidgetContent(path, key, apiID, content.widget, {\n\t\tmodel: legacySliceModel,\n\t\ttransformWidget,\n\t\ttransformSlice,\n\t})\n\n\tif (\n\t\ttraversedContent &&\n\t\t(isNestableContent(traversedContent) || traversedContent.__TYPE__ === GroupContentType)\n\t) {\n\t\treturn transformSlice({\n\t\t\tpath,\n\t\t\tkey,\n\t\t\tapiID,\n\t\t\tcontent: { ...content, widget: traversedContent },\n\t\t\tmodel,\n\t\t})\n\t}\n}\n\ntype TraverseGroupContentConfig = {\n\tmodel?: GroupModel\n\ttransformWidget: TraverseWidgetContentFunction\n}\n\nexport function traverseGroupContent(\n\tpath: contentPath.Path,\n\tkey: string,\n\tapiID: string,\n\tcontent: GroupContent,\n\tconfig: TraverseGroupContentConfig,\n): GroupContent | undefined {\n\tconst { model, transformWidget } = config\n\n\tconst traversed = traverseGroupItemsContent(path, content.value, {\n\t\tmodel: model?.config?.fields,\n\t\ttransformWidget,\n\t})\n\n\treturn transformWidget({\n\t\tpath,\n\t\tkey,\n\t\tapiID,\n\t\tcontent: { ...content, value: traversed },\n\t\tmodel,\n\t})\n}\n\ntype TraverseGroupItemsContentConfig = {\n\tmodel?: Record<string, NestedGroupModel | NestableModel>\n\ttransformWidget: TraverseWidgetContentFunction\n}\n\nexport function traverseGroupItemsContent(\n\tpath: contentPath.Path,\n\tcontent: GroupItemContent[],\n\tconfig: TraverseGroupItemsContentConfig,\n): GroupItemContent[] {\n\tconst { transformWidget } = config\n\n\tconst traversed: GroupItemContent[] = []\n\tfor (const groupItemContent of content) {\n\t\tconst groupItemPath = path.concat({ key: groupItemContent.key, type: \"GroupItem\" })\n\n\t\tconst traversedValue: GroupItemContent[\"value\"] = []\n\t\tfor (const [key, content] of groupItemContent.value) {\n\t\t\tconst model = config.model?.[key]\n\t\t\tconst traversedContent = traverseWidgetContent(\n\t\t\t\tgroupItemPath.concat({ key, type: \"Widget\" }),\n\t\t\t\tkey,\n\t\t\t\tkey,\n\t\t\t\tcontent,\n\t\t\t\t{ model, transformWidget },\n\t\t\t)\n\n\t\t\tif (\n\t\t\t\ttraversedContent &&\n\t\t\t\t(isNestableContent(traversedContent) || traversedContent.__TYPE__ === GroupContentType)\n\t\t\t) {\n\t\t\t\ttraversedValue.push([key, traversedContent])\n\t\t\t}\n\t\t}\n\n\t\ttraversed.push({ ...groupItemContent, value: traversedValue })\n\t}\n\n\treturn traversed\n}\n\ntype TraverseRepeatableContentConfig = {\n\tmodel?: LinkModel\n\ttransformWidget: TraverseWidgetContentFunction\n}\n\nexport function traverseRepeatableContent(\n\tpath: contentPath.Path,\n\tkey: string,\n\tapiID: string,\n\tcontent: RepeatableContent,\n\tconfig: TraverseRepeatableContentConfig,\n): RepeatableContent | undefined {\n\tconst { model, transformWidget } = config\n\tconst nonRepeatModel =\n\t\tmodel?.type === \"Link\" && model.config\n\t\t\t? { ...model, config: { ...model.config, repeat: false } }\n\t\t\t: model\n\n\tconst traversed: RepeatableContent[\"value\"] = []\n\tfor (let index = 0; index < content.value.length; index++) {\n\t\tconst traversedContent = traverseWidgetContent(\n\t\t\tpath.concat({ key: index.toString(), type: \"Widget\" }),\n\t\t\tkey,\n\t\t\tapiID,\n\t\t\tcontent.value[index],\n\t\t\t{ model: nonRepeatModel, transformWidget },\n\t\t)\n\n\t\tif (traversedContent && isRepeatableContentValue(traversedContent)) {\n\t\t\ttraversed.push(traversedContent)\n\t\t}\n\t}\n\n\treturn transformWidget({\n\t\tpath,\n\t\tkey,\n\t\tapiID,\n\t\tcontent: { ...content, value: traversed },\n\t\tmodel,\n\t})\n}\n\ntype TraverseTableContentConfig = {\n\tmodel?: TableModel\n\ttransformWidget: TraverseWidgetContentFunction\n}\n\nexport function traverseTableContent(\n\tpath: contentPath.Path,\n\tkey: string,\n\tapiID: string,\n\tcontent: TableContent,\n\tconfig: TraverseTableContentConfig,\n): TableContent | undefined {\n\tconst { model, transformWidget } = config\n\n\tconst traversed: TableContent[\"content\"] = []\n\tfor (let rowIndex = 0; rowIndex < content.content.length; rowIndex++) {\n\t\tconst traversedContent: TableContent[\"content\"][number][\"content\"] = []\n\t\tfor (let cellIndex = 0; cellIndex < content.content[rowIndex].content.length; cellIndex++) {\n\t\t\tconst cellPath = path.concat({ key: [rowIndex, cellIndex].join(\",\"), type: \"Widget\" })\n\t\t\tconst cell = content.content[rowIndex].content[cellIndex]\n\n\t\t\tconst transformed = transformWidget({\n\t\t\t\tpath: cellPath,\n\t\t\t\tkey,\n\t\t\t\tapiID,\n\t\t\t\tcontent: cell.content,\n\t\t\t\tmodel: TableCellModel,\n\t\t\t})\n\n\t\t\tif (transformed && transformed.__TYPE__ === RichTextContentType) {\n\t\t\t\ttraversedContent.push({ ...cell, content: transformed })\n\t\t\t} else {\n\t\t\t\ttraversedContent.push({\n\t\t\t\t\t...cell,\n\t\t\t\t\tcontent: {\n\t\t\t\t\t\t__TYPE__: RichTextContentType,\n\t\t\t\t\t\tvalue: [],\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\n\t\ttraversed.push({ ...content.content[rowIndex], content: traversedContent })\n\t}\n\n\treturn transformWidget({\n\t\tpath,\n\t\tkey,\n\t\tapiID,\n\t\tcontent: { ...content, content: traversed },\n\t\tmodel,\n\t})\n}\n\nexport type TraverseSliceContentFunction = <TContent extends SliceItemContent>(args: {\n\tpath: contentPath.Path\n\tkey: string\n\tapiID: string\n\tcontent: TContent\n\tmodel?: SliceContentModel\n}) => TContent | SharedSliceItemContent | undefined\n\nexport type TraverseWidgetContentFunction<\n\tTContentTransformMode extends \"preserve\" | \"widen\" = \"preserve\",\n> = <TContent extends WidgetContent>(args: {\n\tpath: contentPath.Path\n\tkey: string\n\tapiID: string\n\tcontent: TContent\n\tmodel?: StaticWidgetModel\n}) => (TContentTransformMode extends \"preserve\" ? TContent : WidgetContent) | undefined\n\n// Internals\ntype TraverseWidgetContentConfig = {\n\tmodel?: StaticWidgetModel\n\ttransformWidget?: TraverseWidgetContentFunction\n\ttransformSlice?: TraverseSliceContentFunction\n}\n\nfunction traverseWidgetContent(\n\tpath: contentPath.Path,\n\tkey: string,\n\tapiID: string,\n\tcontent: WidgetContent,\n\tconfig: TraverseWidgetContentConfig,\n): WidgetContent | undefined {\n\tconst { transformWidget = (args) => args.content, transformSlice = (args) => args.content } =\n\t\tconfig\n\n\tif (content.__TYPE__ === SlicesContentType) {\n\t\tconst model =\n\t\t\tconfig.model?.type === \"Slices\" || config.model?.type === \"Choice\" ? config.model : undefined\n\t\treturn traverseSlicesContent(path, key, apiID, content, {\n\t\t\ttransformWidget,\n\t\t\ttransformSlice,\n\t\t\tmodel,\n\t\t})\n\t}\n\n\tif (content.__TYPE__ === GroupContentType) {\n\t\tconst model = config.model?.type === \"Group\" ? config.model : undefined\n\t\treturn traverseGroupContent(path, key, apiID, content, { transformWidget, model })\n\t}\n\n\tif (content.__TYPE__ === RepeatableContentType) {\n\t\tconst model = config.model?.type === \"Link\" ? config.model : undefined\n\t\treturn traverseRepeatableContent(path, key, apiID, content, { transformWidget, model })\n\t}\n\n\tif (content.__TYPE__ === TableContentType) {\n\t\tconst model = config.model?.type === \"Table\" ? config.model : undefined\n\t\treturn traverseTableContent(path, key, apiID, content, { transformWidget, model })\n\t}\n\n\tconst model =\n\t\tconfig.model?.type !== \"Slices\" &&\n\t\tconfig.model?.type !== \"Choice\" &&\n\t\tconfig.model?.type !== \"Group\" &&\n\t\tconfig.model?.type !== \"Table\"\n\t\t\t? config.model\n\t\t\t: undefined\n\treturn transformWidget({ path, key, apiID, content, model })\n}\n"],"mappings":"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"}