@aphexcms/cms-core 9.0.0 → 9.1.0

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 (114) hide show
  1. package/dist/cli/generate-types.d.ts.map +1 -1
  2. package/dist/cli/generate-types.js +197 -8
  3. package/dist/cli/generate-types.js.map +1 -1
  4. package/dist/components/AdminApp.svelte +46 -137
  5. package/dist/components/AdminApp.svelte.d.ts.map +1 -1
  6. package/dist/components/admin/DocumentEditor.svelte +237 -206
  7. package/dist/components/admin/DocumentEditor.svelte.d.ts.map +1 -1
  8. package/dist/components/admin/DocumentVersionPanel.svelte +3 -2
  9. package/dist/components/admin/DocumentVersionPanel.svelte.d.ts.map +1 -1
  10. package/dist/components/admin/MediaBrowser.svelte +22 -4
  11. package/dist/components/admin/MediaBrowser.svelte.d.ts.map +1 -1
  12. package/dist/components/admin/ObjectModal.svelte +62 -75
  13. package/dist/components/admin/ObjectModal.svelte.d.ts.map +1 -1
  14. package/dist/components/admin/SchemaField.svelte +2 -2
  15. package/dist/components/admin/fields/ArrayField.svelte +9 -1
  16. package/dist/components/admin/fields/ArrayField.svelte.d.ts.map +1 -1
  17. package/dist/components/admin/fields/ReferenceField.svelte +37 -8
  18. package/dist/components/admin/fields/ReferenceField.svelte.d.ts.map +1 -1
  19. package/dist/components/admin/fields/richtext/PortableTextImageView.svelte +116 -0
  20. package/dist/components/admin/fields/richtext/PortableTextImageView.svelte.d.ts +12 -0
  21. package/dist/components/admin/fields/richtext/PortableTextImageView.svelte.d.ts.map +1 -0
  22. package/dist/components/admin/fields/richtext/PortableTextInlineView.svelte +111 -0
  23. package/dist/components/admin/fields/richtext/PortableTextInlineView.svelte.d.ts +12 -0
  24. package/dist/components/admin/fields/richtext/PortableTextInlineView.svelte.d.ts.map +1 -0
  25. package/dist/components/admin/fields/richtext/PortableTextObjectView.svelte +67 -0
  26. package/dist/components/admin/fields/richtext/PortableTextObjectView.svelte.d.ts +12 -0
  27. package/dist/components/admin/fields/richtext/PortableTextObjectView.svelte.d.ts.map +1 -0
  28. package/dist/components/admin/fields/richtext/RichtextField.svelte +1296 -0
  29. package/dist/components/admin/fields/richtext/RichtextField.svelte.d.ts +15 -0
  30. package/dist/components/admin/fields/richtext/RichtextField.svelte.d.ts.map +1 -0
  31. package/dist/components/admin/fields/richtext/custom-annotation-mark.d.ts +7 -0
  32. package/dist/components/admin/fields/richtext/custom-annotation-mark.d.ts.map +1 -0
  33. package/dist/components/admin/fields/richtext/custom-annotation-mark.js +33 -0
  34. package/dist/components/admin/fields/richtext/portable-text-inline-object.d.ts +11 -0
  35. package/dist/components/admin/fields/richtext/portable-text-inline-object.d.ts.map +1 -0
  36. package/dist/components/admin/fields/richtext/portable-text-inline-object.js +31 -0
  37. package/dist/components/admin/fields/richtext/portable-text-object-node.d.ts +11 -0
  38. package/dist/components/admin/fields/richtext/portable-text-object-node.d.ts.map +1 -0
  39. package/dist/components/admin/fields/richtext/portable-text-object-node.js +31 -0
  40. package/dist/components/admin/fields/richtext/portable-text-serializer.d.ts +38 -0
  41. package/dist/components/admin/fields/richtext/portable-text-serializer.d.ts.map +1 -0
  42. package/dist/components/admin/fields/richtext/portable-text-serializer.js +297 -0
  43. package/dist/components/admin/fields/richtext/svelte-inline-node-view.d.ts +8 -0
  44. package/dist/components/admin/fields/richtext/svelte-inline-node-view.d.ts.map +1 -0
  45. package/dist/components/admin/fields/richtext/svelte-inline-node-view.js +67 -0
  46. package/dist/components/admin/fields/richtext/svelte-node-view.d.ts +8 -0
  47. package/dist/components/admin/fields/richtext/svelte-node-view.d.ts.map +1 -0
  48. package/dist/components/admin/fields/richtext/svelte-node-view.js +63 -0
  49. package/dist/db/interfaces/document.d.ts +8 -2
  50. package/dist/db/interfaces/document.d.ts.map +1 -1
  51. package/dist/graphql/resolvers.d.ts.map +1 -1
  52. package/dist/graphql/resolvers.js +13 -11
  53. package/dist/graphql/schema.d.ts.map +1 -1
  54. package/dist/graphql/schema.js +7 -3
  55. package/dist/lib/components/admin/fields/richtext/custom-annotation-mark.d.ts +7 -0
  56. package/dist/lib/components/admin/fields/richtext/custom-annotation-mark.d.ts.map +1 -0
  57. package/dist/lib/components/admin/fields/richtext/custom-annotation-mark.js +34 -0
  58. package/dist/lib/components/admin/fields/richtext/custom-annotation-mark.js.map +1 -0
  59. package/dist/lib/components/admin/fields/richtext/portable-text-inline-object.d.ts +11 -0
  60. package/dist/lib/components/admin/fields/richtext/portable-text-inline-object.d.ts.map +1 -0
  61. package/dist/lib/components/admin/fields/richtext/portable-text-inline-object.js +32 -0
  62. package/dist/lib/components/admin/fields/richtext/portable-text-inline-object.js.map +1 -0
  63. package/dist/lib/components/admin/fields/richtext/portable-text-object-node.d.ts +11 -0
  64. package/dist/lib/components/admin/fields/richtext/portable-text-object-node.d.ts.map +1 -0
  65. package/dist/lib/components/admin/fields/richtext/portable-text-object-node.js +32 -0
  66. package/dist/lib/components/admin/fields/richtext/portable-text-object-node.js.map +1 -0
  67. package/dist/lib/components/admin/fields/richtext/portable-text-serializer.d.ts +38 -0
  68. package/dist/lib/components/admin/fields/richtext/portable-text-serializer.d.ts.map +1 -0
  69. package/dist/lib/components/admin/fields/richtext/portable-text-serializer.js +298 -0
  70. package/dist/lib/components/admin/fields/richtext/portable-text-serializer.js.map +1 -0
  71. package/dist/lib/components/admin/fields/richtext/svelte-inline-node-view.d.ts +8 -0
  72. package/dist/lib/components/admin/fields/richtext/svelte-inline-node-view.d.ts.map +1 -0
  73. package/dist/lib/components/admin/fields/richtext/svelte-inline-node-view.js +68 -0
  74. package/dist/lib/components/admin/fields/richtext/svelte-inline-node-view.js.map +1 -0
  75. package/dist/lib/components/admin/fields/richtext/svelte-node-view.d.ts +8 -0
  76. package/dist/lib/components/admin/fields/richtext/svelte-node-view.d.ts.map +1 -0
  77. package/dist/lib/components/admin/fields/richtext/svelte-node-view.js +64 -0
  78. package/dist/lib/components/admin/fields/richtext/svelte-node-view.js.map +1 -0
  79. package/dist/lib/db/interfaces/document.d.ts +8 -2
  80. package/dist/lib/db/interfaces/document.d.ts.map +1 -1
  81. package/dist/lib/graphql/resolvers.d.ts.map +1 -1
  82. package/dist/lib/graphql/resolvers.js +13 -11
  83. package/dist/lib/graphql/resolvers.js.map +1 -1
  84. package/dist/lib/graphql/schema.d.ts.map +1 -1
  85. package/dist/lib/graphql/schema.js +7 -3
  86. package/dist/lib/graphql/schema.js.map +1 -1
  87. package/dist/lib/local-api/collection-api.d.ts.map +1 -1
  88. package/dist/lib/local-api/collection-api.js +7 -0
  89. package/dist/lib/local-api/collection-api.js.map +1 -1
  90. package/dist/lib/schema-utils/validator.d.ts.map +1 -1
  91. package/dist/lib/schema-utils/validator.js +5 -1
  92. package/dist/lib/schema-utils/validator.js.map +1 -1
  93. package/dist/lib/server/api/routes/assets-by-id.d.ts.map +1 -1
  94. package/dist/lib/server/api/routes/assets-by-id.js +10 -2
  95. package/dist/lib/server/api/routes/assets-by-id.js.map +1 -1
  96. package/dist/lib/server/api/routes/assets-references.d.ts.map +1 -1
  97. package/dist/lib/server/api/routes/assets-references.js +6 -4
  98. package/dist/lib/server/api/routes/assets-references.js.map +1 -1
  99. package/dist/lib/types/schemas.d.ts +27 -0
  100. package/dist/lib/types/schemas.d.ts.map +1 -1
  101. package/dist/lib/types/schemas.js +3 -1
  102. package/dist/lib/types/schemas.js.map +1 -1
  103. package/dist/local-api/collection-api.d.ts.map +1 -1
  104. package/dist/local-api/collection-api.js +7 -0
  105. package/dist/schema-utils/validator.d.ts.map +1 -1
  106. package/dist/schema-utils/validator.js +5 -1
  107. package/dist/server/api/routes/assets-by-id.d.ts.map +1 -1
  108. package/dist/server/api/routes/assets-by-id.js +10 -2
  109. package/dist/server/api/routes/assets-references.d.ts.map +1 -1
  110. package/dist/server/api/routes/assets-references.js +6 -4
  111. package/dist/types/schemas.d.ts +27 -0
  112. package/dist/types/schemas.d.ts.map +1 -1
  113. package/dist/types/schemas.js +3 -1
  114. package/package.json +6 -1
@@ -65,7 +65,7 @@ export interface DocumentAdapter {
65
65
  * @param assetId - The asset ID to search for
66
66
  * @returns Array of referencing documents (id, type, status, title)
67
67
  */
68
- findDocumentsReferencingAsset?(organizationId: string, assetId: string): Promise<Array<{
68
+ findDocumentsReferencingAsset?(organizationId: string, assetId: string, knownTypes?: string[]): Promise<Array<{
69
69
  documentId: string;
70
70
  type: string;
71
71
  title: string;
@@ -75,9 +75,15 @@ export interface DocumentAdapter {
75
75
  * Count document references for multiple asset IDs in batch
76
76
  * @param organizationId - Organization ID for multi-tenancy
77
77
  * @param assetIds - Array of asset IDs to count references for
78
+ * @param knownTypes - Only count references from these document types (excludes orphaned types)
78
79
  * @returns Map of asset ID to reference count
79
80
  */
80
- countDocumentReferencesForAssets?(organizationId: string, assetIds: string[]): Promise<Record<string, number>>;
81
+ countDocumentReferencesForAssets?(organizationId: string, assetIds: string[], knownTypes?: string[]): Promise<Record<string, number>>;
82
+ /**
83
+ * Clear references to a deleted asset from publishedData of non-published
84
+ * documents. Returns the number of documents cleaned.
85
+ */
86
+ clearAssetFromPublishedData?(organizationId: string, assetId: string): Promise<number>;
81
87
  createDocumentVersion?(data: {
82
88
  documentId: string;
83
89
  organizationId: string;
@@ -1 +1 @@
1
- {"version":3,"file":"document.d.ts","sourceRoot":"","sources":["../../../src/lib/db/interfaces/document.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"document.d.ts","sourceRoot":"","sources":["../../../src/lib/db/interfaces/document.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"resolvers.d.ts","sourceRoot":"","sources":["../../src/lib/graphql/resolvers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,KAAK,EAAE,UAAU,EAAS,MAAM,kBAAkB,CAAC;AA4H1D,wBAAgB,eAAe,CAC9B,GAAG,EAAE,YAAY,EACjB,WAAW,EAAE,UAAU,EAAE,EACzB,kBAAkB,GAAE,OAAO,GAAG,WAAyB,uBAwtBvD"}
1
+ {"version":3,"file":"resolvers.d.ts","sourceRoot":"","sources":["../../src/lib/graphql/resolvers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,KAAK,EAAE,UAAU,EAAS,MAAM,kBAAkB,CAAC;AA4H1D,wBAAgB,eAAe,CAC9B,GAAG,EAAE,YAAY,EACjB,WAAW,EAAE,UAAU,EAAE,EACzB,kBAAkB,GAAE,OAAO,GAAG,WAAyB,uBA2tBvD"}
@@ -253,23 +253,25 @@ export function createResolvers(cms, schemaTypes, defaultPerspective = 'publishe
253
253
  });
254
254
  }
255
255
  generateReferenceFieldResolvers();
256
- // Generate union type resolvers for array fields
256
+ // Generate union type resolvers for array fields — must match the logic in
257
+ // schema.ts which only emits a union when 2+ types exist in schemaTypes.
257
258
  function generateUnionResolvers() {
258
259
  schemaTypes.forEach((schemaType) => {
259
260
  function processFields(fields, parentName) {
260
261
  fields.forEach((field) => {
261
262
  if (field.type === 'array' && field.of && field.of.length > 1) {
262
- // Create resolver for union types
263
- const unionName = `${capitalizeFirst(parentName)}${capitalizeFirst(field.name)}Item`;
264
- resolvers[unionName] = {
265
- __resolveType(obj) {
266
- // Use the _type field to determine GraphQL type
267
- if (obj._type) {
268
- return capitalizeFirst(obj._type);
263
+ const validTypes = field.of.filter((item) => schemaTypes.find((s) => s.name === item.type));
264
+ if (validTypes.length > 1) {
265
+ const unionName = `${capitalizeFirst(parentName)}${capitalizeFirst(field.name)}Item`;
266
+ resolvers[unionName] = {
267
+ __resolveType(obj) {
268
+ if (obj._type) {
269
+ return capitalizeFirst(obj._type);
270
+ }
271
+ return null;
269
272
  }
270
- return null;
271
- }
272
- };
273
+ };
274
+ }
273
275
  }
274
276
  // Handle nested objects
275
277
  if (field.type === 'object' && field.fields) {
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/lib/graphql/schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAkD,MAAM,kBAAkB,CAAC;AAqYnG,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,UAAU,EAAE,GAAG,MAAM,CA2FvE"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/lib/graphql/schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAkD,MAAM,kBAAkB,CAAC;AA0YnG,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,UAAU,EAAE,GAAG,MAAM,CA2FvE"}
@@ -32,7 +32,11 @@ function getGraphQLType(field, schemaTypes, parentName = '') {
32
32
  }
33
33
  function handleArrayField(field, schemaTypes, parentName = '') {
34
34
  if (!field.of || field.of.length === 0) {
35
- return '[String]';
35
+ return '[JSON]';
36
+ }
37
+ // Portable Text (block content) — always JSON
38
+ if (field.of.some((item) => item.type === 'block')) {
39
+ return '[JSON]';
36
40
  }
37
41
  // Reference array items: resolve via `to` targets
38
42
  const refItems = field.of.filter((item) => item.type === 'reference');
@@ -42,12 +46,12 @@ function handleArrayField(field, schemaTypes, parentName = '') {
42
46
  if (to && to.length === 1) {
43
47
  return `[${capitalizeFirst(to[0].type)}]`;
44
48
  }
45
- return '[String]';
49
+ return '[JSON]';
46
50
  }
47
51
  // Check if all referenced types exist in schemaTypes
48
52
  const validTypes = field.of.filter((item) => schemaTypes.find((s) => s.name === item.type));
49
53
  if (validTypes.length === 0) {
50
- return '[String]'; // Fallback if no valid types found
54
+ return '[JSON]';
51
55
  }
52
56
  // If array contains only one type
53
57
  if (validTypes.length === 1) {
@@ -0,0 +1,7 @@
1
+ import { Mark } from '@tiptap/core';
2
+ export interface CustomAnnotationOptions {
3
+ annotationType: string;
4
+ onEdit: (attrs: Record<string, unknown>) => void;
5
+ }
6
+ export declare function createAnnotationMark(name: string): Mark<CustomAnnotationOptions, any>;
7
+ //# sourceMappingURL=custom-annotation-mark.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"custom-annotation-mark.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/components/admin/fields/richtext/custom-annotation-mark.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAmB,MAAM,cAAc,CAAC;AAErD,MAAM,WAAW,uBAAuB;IACvC,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;CACjD;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,sCAmChD"}
@@ -0,0 +1,34 @@
1
+ import { Mark, mergeAttributes } from '@tiptap/core';
2
+ export function createAnnotationMark(name) {
3
+ return Mark.create({
4
+ name: `annotation_${name}`,
5
+ inclusive: false,
6
+ addOptions() {
7
+ return {
8
+ annotationType: name,
9
+ onEdit: () => { }
10
+ };
11
+ },
12
+ addAttributes() {
13
+ return {
14
+ _key: { default: null },
15
+ data: { default: {} }
16
+ };
17
+ },
18
+ parseHTML() {
19
+ return [{ tag: `span[data-annotation="${name}"]` }];
20
+ },
21
+ renderHTML({ HTMLAttributes }) {
22
+ return [
23
+ 'span',
24
+ mergeAttributes(HTMLAttributes, {
25
+ 'data-annotation': name,
26
+ class: 'richtext-annotation',
27
+ style: 'border-bottom: 2px dashed currentColor; cursor: pointer;'
28
+ }),
29
+ 0
30
+ ];
31
+ }
32
+ });
33
+ }
34
+ //# sourceMappingURL=custom-annotation-mark.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"custom-annotation-mark.js","sourceRoot":"","sources":["../../../../../../src/lib/components/admin/fields/richtext/custom-annotation-mark.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAOrD,MAAM,UAAU,oBAAoB,CAAC,IAAY;IAChD,OAAO,IAAI,CAAC,MAAM,CAA0B;QAC3C,IAAI,EAAE,cAAc,IAAI,EAAE;QAC1B,SAAS,EAAE,KAAK;QAEhB,UAAU;YACT,OAAO;gBACN,cAAc,EAAE,IAAI;gBACpB,MAAM,EAAE,GAAG,EAAE,GAAE,CAAC;aAChB,CAAC;QACH,CAAC;QAED,aAAa;YACZ,OAAO;gBACN,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;gBACvB,IAAI,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;aACrB,CAAC;QACH,CAAC;QAED,SAAS;YACR,OAAO,CAAC,EAAE,GAAG,EAAE,yBAAyB,IAAI,IAAI,EAAE,CAAC,CAAC;QACrD,CAAC;QAED,UAAU,CAAC,EAAE,cAAc,EAAE;YAC5B,OAAO;gBACN,MAAM;gBACN,eAAe,CAAC,cAAc,EAAE;oBAC/B,iBAAiB,EAAE,IAAI;oBACvB,KAAK,EAAE,qBAAqB;oBAC5B,KAAK,EAAE,0DAA0D;iBACjE,CAAC;gBACF,CAAC;aACD,CAAC;QACH,CAAC;KACD,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { Node } from '@tiptap/core';
2
+ export interface PortableTextInlineObjectOptions {
3
+ onEdit: (attrs: {
4
+ _type: string;
5
+ _key: string;
6
+ data: Record<string, unknown>;
7
+ }) => void;
8
+ onDelete: (key: string) => void;
9
+ }
10
+ export declare const PortableTextInlineObject: Node<PortableTextInlineObjectOptions, any>;
11
+ //# sourceMappingURL=portable-text-inline-object.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"portable-text-inline-object.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/components/admin/fields/richtext/portable-text-inline-object.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAmB,MAAM,cAAc,CAAC;AAGrD,MAAM,WAAW,+BAA+B;IAC/C,MAAM,EAAE,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,KAAK,IAAI,CAAC;IACxF,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAChC;AAED,eAAO,MAAM,wBAAwB,4CAiCnC,CAAC"}
@@ -0,0 +1,32 @@
1
+ import { Node, mergeAttributes } from '@tiptap/core';
2
+ import { SvelteInlineNodeViewRenderer } from './svelte-inline-node-view.js';
3
+ export const PortableTextInlineObject = Node.create({
4
+ name: 'portableTextInlineObject',
5
+ group: 'inline',
6
+ inline: true,
7
+ atom: true,
8
+ selectable: true,
9
+ addOptions() {
10
+ return {
11
+ onEdit: () => { },
12
+ onDelete: () => { }
13
+ };
14
+ },
15
+ addAttributes() {
16
+ return {
17
+ _type: { default: null },
18
+ _key: { default: null },
19
+ data: { default: {} }
20
+ };
21
+ },
22
+ parseHTML() {
23
+ return [{ tag: 'span[data-portable-text-inline]' }];
24
+ },
25
+ renderHTML({ HTMLAttributes }) {
26
+ return ['span', mergeAttributes(HTMLAttributes, { 'data-portable-text-inline': '' }), 0];
27
+ },
28
+ addNodeView() {
29
+ return SvelteInlineNodeViewRenderer(this.options.onEdit, this.options.onDelete);
30
+ }
31
+ });
32
+ //# sourceMappingURL=portable-text-inline-object.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"portable-text-inline-object.js","sourceRoot":"","sources":["../../../../../../src/lib/components/admin/fields/richtext/portable-text-inline-object.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,4BAA4B,EAAE,MAAM,2BAA2B,CAAC;AAOzE,MAAM,CAAC,MAAM,wBAAwB,GAAG,IAAI,CAAC,MAAM,CAAkC;IACpF,IAAI,EAAE,0BAA0B;IAChC,KAAK,EAAE,QAAQ;IACf,MAAM,EAAE,IAAI;IACZ,IAAI,EAAE,IAAI;IACV,UAAU,EAAE,IAAI;IAEhB,UAAU;QACT,OAAO;YACN,MAAM,EAAE,GAAG,EAAE,GAAE,CAAC;YAChB,QAAQ,EAAE,GAAG,EAAE,GAAE,CAAC;SAClB,CAAC;IACH,CAAC;IAED,aAAa;QACZ,OAAO;YACN,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;YACxB,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;YACvB,IAAI,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;SACrB,CAAC;IACH,CAAC;IAED,SAAS;QACR,OAAO,CAAC,EAAE,GAAG,EAAE,iCAAiC,EAAE,CAAC,CAAC;IACrD,CAAC;IAED,UAAU,CAAC,EAAE,cAAc,EAAE;QAC5B,OAAO,CAAC,MAAM,EAAE,eAAe,CAAC,cAAc,EAAE,EAAE,2BAA2B,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1F,CAAC;IAED,WAAW;QACV,OAAO,4BAA4B,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACjF,CAAC;CACD,CAAC,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { Node } from '@tiptap/core';
2
+ export interface PortableTextObjectOptions {
3
+ onEdit: (attrs: {
4
+ _type: string;
5
+ _key: string;
6
+ data: Record<string, unknown>;
7
+ }) => void;
8
+ onDelete: (key: string) => void;
9
+ }
10
+ export declare const PortableTextObject: Node<PortableTextObjectOptions, any>;
11
+ //# sourceMappingURL=portable-text-object-node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"portable-text-object-node.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/components/admin/fields/richtext/portable-text-object-node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAmB,MAAM,cAAc,CAAC;AAGrD,MAAM,WAAW,yBAAyB;IACzC,MAAM,EAAE,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,KAAK,IAAI,CAAC;IACxF,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAChC;AAED,eAAO,MAAM,kBAAkB,sCAiC7B,CAAC"}
@@ -0,0 +1,32 @@
1
+ import { Node, mergeAttributes } from '@tiptap/core';
2
+ import { SvelteNodeViewRenderer } from './svelte-node-view.js';
3
+ export const PortableTextObject = Node.create({
4
+ name: 'portableTextObject',
5
+ group: 'block',
6
+ atom: true,
7
+ draggable: true,
8
+ selectable: true,
9
+ addOptions() {
10
+ return {
11
+ onEdit: () => { },
12
+ onDelete: () => { }
13
+ };
14
+ },
15
+ addAttributes() {
16
+ return {
17
+ _type: { default: null },
18
+ _key: { default: null },
19
+ data: { default: {} }
20
+ };
21
+ },
22
+ parseHTML() {
23
+ return [{ tag: 'div[data-portable-text-object]' }];
24
+ },
25
+ renderHTML({ HTMLAttributes }) {
26
+ return ['div', mergeAttributes(HTMLAttributes, { 'data-portable-text-object': '' }), 0];
27
+ },
28
+ addNodeView() {
29
+ return SvelteNodeViewRenderer(this.options.onEdit, this.options.onDelete);
30
+ }
31
+ });
32
+ //# sourceMappingURL=portable-text-object-node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"portable-text-object-node.js","sourceRoot":"","sources":["../../../../../../src/lib/components/admin/fields/richtext/portable-text-object-node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAO5D,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,CAAC,MAAM,CAA4B;IACxE,IAAI,EAAE,oBAAoB;IAC1B,KAAK,EAAE,OAAO;IACd,IAAI,EAAE,IAAI;IACV,SAAS,EAAE,IAAI;IACf,UAAU,EAAE,IAAI;IAEhB,UAAU;QACT,OAAO;YACN,MAAM,EAAE,GAAG,EAAE,GAAE,CAAC;YAChB,QAAQ,EAAE,GAAG,EAAE,GAAE,CAAC;SAClB,CAAC;IACH,CAAC;IAED,aAAa;QACZ,OAAO;YACN,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;YACxB,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;YACvB,IAAI,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;SACrB,CAAC;IACH,CAAC;IAED,SAAS;QACR,OAAO,CAAC,EAAE,GAAG,EAAE,gCAAgC,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,UAAU,CAAC,EAAE,cAAc,EAAE;QAC5B,OAAO,CAAC,KAAK,EAAE,eAAe,CAAC,cAAc,EAAE,EAAE,2BAA2B,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACzF,CAAC;IAED,WAAW;QACV,OAAO,sBAAsB,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC3E,CAAC;CACD,CAAC,CAAC"}
@@ -0,0 +1,38 @@
1
+ import type { JSONContent } from '@tiptap/core';
2
+ interface PortableTextSpan {
3
+ _type: 'span';
4
+ _key: string;
5
+ text: string;
6
+ marks?: string[];
7
+ }
8
+ export interface PortableTextInlineObject {
9
+ _type: string;
10
+ _key: string;
11
+ [key: string]: unknown;
12
+ }
13
+ export type PortableTextChild = PortableTextSpan | PortableTextInlineObject;
14
+ interface PortableTextMarkDefinition {
15
+ _type: string;
16
+ _key: string;
17
+ [key: string]: unknown;
18
+ }
19
+ interface PortableTextBlock {
20
+ _type: 'block';
21
+ _key: string;
22
+ style?: string;
23
+ children: PortableTextChild[];
24
+ markDefs?: PortableTextMarkDefinition[];
25
+ listItem?: string;
26
+ level?: number;
27
+ }
28
+ export interface PortableTextCustomBlock {
29
+ _type: string;
30
+ _key: string;
31
+ [key: string]: unknown;
32
+ }
33
+ export type PortableTextNode = PortableTextBlock | PortableTextCustomBlock;
34
+ export type PortableTextValue = PortableTextNode[];
35
+ export declare function tiptapToPortableText(doc: JSONContent): PortableTextValue;
36
+ export declare function portableTextToTiptap(value: PortableTextValue): JSONContent;
37
+ export {};
38
+ //# sourceMappingURL=portable-text-serializer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"portable-text-serializer.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/components/admin/fields/richtext/portable-text-serializer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD,UAAU,gBAAgB;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,wBAAwB;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACvB;AAED,MAAM,MAAM,iBAAiB,GAAG,gBAAgB,GAAG,wBAAwB,CAAC;AAE5E,UAAU,0BAA0B;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACvB;AAED,UAAU,iBAAiB;IAC1B,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,QAAQ,CAAC,EAAE,0BAA0B,EAAE,CAAC;IACxC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,uBAAuB;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACvB;AAED,MAAM,MAAM,gBAAgB,GAAG,iBAAiB,GAAG,uBAAuB,CAAC;AAC3E,MAAM,MAAM,iBAAiB,GAAG,gBAAgB,EAAE,CAAC;AAwInD,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,WAAW,GAAG,iBAAiB,CA0BxE;AAuED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,iBAAiB,GAAG,WAAW,CAyD1E"}
@@ -0,0 +1,298 @@
1
+ let keyCounter = 0;
2
+ function genKey() {
3
+ return (++keyCounter).toString(36) + Math.random().toString(36).slice(2, 6);
4
+ }
5
+ const DECORATOR_MAP = {
6
+ bold: 'strong',
7
+ italic: 'em',
8
+ underline: 'underline',
9
+ strike: 'strike-through',
10
+ code: 'code'
11
+ };
12
+ const DECORATOR_MAP_REVERSE = Object.fromEntries(Object.entries(DECORATOR_MAP).map(([k, v]) => [v, k]));
13
+ function extractMarksFromNode(node, markDefs) {
14
+ const marks = [];
15
+ if (!node.marks)
16
+ return marks;
17
+ for (const mark of node.marks) {
18
+ const markType = typeof mark === 'string' ? mark : mark.type;
19
+ const markAttrs = typeof mark === 'string' ? {} : mark.attrs || {};
20
+ if (markType === 'link') {
21
+ const key = genKey();
22
+ markDefs.push({
23
+ _type: 'link',
24
+ _key: key,
25
+ href: markAttrs.href || ''
26
+ });
27
+ marks.push(key);
28
+ }
29
+ else if (markType?.startsWith('annotation_')) {
30
+ const annotationType = markType.slice('annotation_'.length);
31
+ const key = markAttrs._key || genKey();
32
+ const existing = markDefs.find((d) => d._key === key);
33
+ if (existing) {
34
+ Object.assign(existing, { _type: annotationType, ...(markAttrs.data || {}) });
35
+ }
36
+ else {
37
+ markDefs.push({
38
+ _type: annotationType,
39
+ _key: key,
40
+ ...(markAttrs.data || {})
41
+ });
42
+ }
43
+ if (!marks.includes(key))
44
+ marks.push(key);
45
+ }
46
+ else if (DECORATOR_MAP[markType]) {
47
+ marks.push(DECORATOR_MAP[markType]);
48
+ }
49
+ }
50
+ return marks;
51
+ }
52
+ function prosemirrorBlockToPortableText(node, listItem, level) {
53
+ const markDefs = [];
54
+ const children = [];
55
+ if (node.content) {
56
+ for (const child of node.content) {
57
+ if (child.type === 'text') {
58
+ const marks = extractMarksFromNode(child, markDefs);
59
+ children.push({
60
+ _type: 'span',
61
+ _key: genKey(),
62
+ text: child.text || '',
63
+ marks: marks.length > 0 ? marks : undefined
64
+ });
65
+ }
66
+ else if (child.type === 'hardBreak') {
67
+ children.push({
68
+ _type: 'span',
69
+ _key: genKey(),
70
+ text: '\n'
71
+ });
72
+ }
73
+ else if (child.type === 'portableTextInlineObject') {
74
+ const { _type, _key, data } = child.attrs || {};
75
+ children.push({ _type, _key: _key || genKey(), ...data });
76
+ }
77
+ }
78
+ }
79
+ if (children.length === 0) {
80
+ children.push({ _type: 'span', _key: genKey(), text: '' });
81
+ }
82
+ let style = 'normal';
83
+ if (node.type === 'heading') {
84
+ style = `h${node.attrs?.level || 1}`;
85
+ }
86
+ else if (node.type === 'blockquote') {
87
+ style = 'blockquote';
88
+ }
89
+ const block = {
90
+ _type: 'block',
91
+ _key: genKey(),
92
+ style,
93
+ children,
94
+ markDefs: markDefs.length > 0 ? markDefs : undefined
95
+ };
96
+ if (listItem) {
97
+ block.listItem = listItem;
98
+ block.level = level;
99
+ }
100
+ return block;
101
+ }
102
+ function flattenListItems(node, listType, level, result) {
103
+ if (!node.content)
104
+ return;
105
+ for (const listItem of node.content) {
106
+ if (listItem.type !== 'listItem')
107
+ continue;
108
+ for (const child of listItem.content || []) {
109
+ if (child.type === 'paragraph' || child.type === 'heading') {
110
+ result.push(prosemirrorBlockToPortableText(child, listType, level));
111
+ }
112
+ else if (child.type === 'bulletList' || child.type === 'orderedList') {
113
+ const nestedType = child.type === 'bulletList' ? 'bullet' : 'number';
114
+ flattenListItems(child, nestedType, level + 1, result);
115
+ }
116
+ }
117
+ }
118
+ }
119
+ export function tiptapToPortableText(doc) {
120
+ const blocks = [];
121
+ if (!doc.content)
122
+ return blocks;
123
+ for (const node of doc.content) {
124
+ if (node.type === 'paragraph' || node.type === 'heading') {
125
+ blocks.push(prosemirrorBlockToPortableText(node));
126
+ }
127
+ else if (node.type === 'blockquote') {
128
+ for (const child of node.content || []) {
129
+ if (child.type === 'paragraph') {
130
+ const block = prosemirrorBlockToPortableText(child);
131
+ block.style = 'blockquote';
132
+ blocks.push(block);
133
+ }
134
+ }
135
+ }
136
+ else if (node.type === 'bulletList' || node.type === 'orderedList') {
137
+ const listType = node.type === 'bulletList' ? 'bullet' : 'number';
138
+ flattenListItems(node, listType, 1, blocks);
139
+ }
140
+ else if (node.type === 'portableTextObject') {
141
+ const { _type, _key, data } = node.attrs || {};
142
+ blocks.push({ _type, _key: _key || genKey(), ...data });
143
+ }
144
+ }
145
+ return blocks;
146
+ }
147
+ function buildMarkLookup(markDefs) {
148
+ const map = new Map();
149
+ if (markDefs) {
150
+ for (const def of markDefs) {
151
+ map.set(def._key, def);
152
+ }
153
+ }
154
+ return map;
155
+ }
156
+ function spansToTiptapContent(children, markDefs) {
157
+ const markLookup = buildMarkLookup(markDefs);
158
+ const result = [];
159
+ for (const child of children) {
160
+ if (child._type !== 'span') {
161
+ const { _type, _key, ...data } = child;
162
+ result.push({
163
+ type: 'portableTextInlineObject',
164
+ attrs: { _type, _key, data }
165
+ });
166
+ continue;
167
+ }
168
+ const span = child;
169
+ if (span.text === '\n') {
170
+ result.push({ type: 'hardBreak' });
171
+ continue;
172
+ }
173
+ // ProseMirror rejects empty text nodes
174
+ if (!span.text)
175
+ continue;
176
+ const marks = [];
177
+ if (span.marks) {
178
+ for (const markRef of span.marks) {
179
+ const def = markLookup.get(markRef);
180
+ if (def && def._type === 'link') {
181
+ marks.push({
182
+ type: 'link',
183
+ attrs: { href: def.href, target: null, rel: null, class: null }
184
+ });
185
+ }
186
+ else if (def) {
187
+ const { _type, _key, ...data } = def;
188
+ marks.push({
189
+ type: `annotation_${_type}`,
190
+ attrs: { _key, data }
191
+ });
192
+ }
193
+ else if (DECORATOR_MAP_REVERSE[markRef]) {
194
+ marks.push({ type: DECORATOR_MAP_REVERSE[markRef] });
195
+ }
196
+ }
197
+ }
198
+ result.push({
199
+ type: 'text',
200
+ text: span.text,
201
+ ...(marks.length > 0 ? { marks } : {})
202
+ });
203
+ }
204
+ return result;
205
+ }
206
+ export function portableTextToTiptap(value) {
207
+ const doc = { type: 'doc', content: [] };
208
+ if (!value || value.length === 0) {
209
+ doc.content = [{ type: 'paragraph' }];
210
+ return doc;
211
+ }
212
+ let i = 0;
213
+ while (i < value.length) {
214
+ const node = value[i];
215
+ if (node._type !== 'block') {
216
+ const { _type, _key, ...data } = node;
217
+ doc.content.push({
218
+ type: 'portableTextObject',
219
+ attrs: { _type, _key, data }
220
+ });
221
+ i++;
222
+ continue;
223
+ }
224
+ const block = node;
225
+ if (block.listItem) {
226
+ const listType = block.listItem === 'number' ? 'orderedList' : 'bulletList';
227
+ const listNode = buildListNode(value, i, listType, block.level || 1);
228
+ doc.content.push(listNode.node);
229
+ i = listNode.nextIndex;
230
+ continue;
231
+ }
232
+ if (block.style === 'blockquote') {
233
+ const content = spansToTiptapContent(block.children, block.markDefs);
234
+ doc.content.push({
235
+ type: 'blockquote',
236
+ content: [{ type: 'paragraph', content: content.length > 0 ? content : undefined }]
237
+ });
238
+ }
239
+ else if (block.style?.startsWith('h')) {
240
+ const level = parseInt(block.style.slice(1), 10);
241
+ const content = spansToTiptapContent(block.children, block.markDefs);
242
+ doc.content.push({
243
+ type: 'heading',
244
+ attrs: { level },
245
+ content: content.length > 0 ? content : undefined
246
+ });
247
+ }
248
+ else {
249
+ const content = spansToTiptapContent(block.children, block.markDefs);
250
+ doc.content.push({
251
+ type: 'paragraph',
252
+ content: content.length > 0 ? content : undefined
253
+ });
254
+ }
255
+ i++;
256
+ }
257
+ return doc;
258
+ }
259
+ function buildListNode(blocks, startIndex, listType, level) {
260
+ const items = [];
261
+ let i = startIndex;
262
+ while (i < blocks.length) {
263
+ const node = blocks[i];
264
+ if (node._type !== 'block')
265
+ break;
266
+ const block = node;
267
+ if (!block.listItem)
268
+ break;
269
+ const blockLevel = block.level || 1;
270
+ if (blockLevel < level)
271
+ break;
272
+ if (blockLevel === level) {
273
+ const content = spansToTiptapContent(block.children, block.markDefs);
274
+ const itemContent = [{ type: 'paragraph', content }];
275
+ i++;
276
+ const next = i < blocks.length ? blocks[i] : null;
277
+ if (next &&
278
+ next._type === 'block' &&
279
+ next.listItem &&
280
+ (next.level || 1) > level) {
281
+ const nestedType = next.listItem === 'number' ? 'orderedList' : 'bulletList';
282
+ const nested = buildListNode(blocks, i, nestedType, blockLevel + 1);
283
+ itemContent.push(nested.node);
284
+ i = nested.nextIndex;
285
+ }
286
+ items.push({ type: 'listItem', content: itemContent });
287
+ }
288
+ else {
289
+ break;
290
+ }
291
+ }
292
+ const nodeType = listType === 'orderedList' ? 'orderedList' : 'bulletList';
293
+ return {
294
+ node: { type: nodeType, content: items },
295
+ nextIndex: i
296
+ };
297
+ }
298
+ //# sourceMappingURL=portable-text-serializer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"portable-text-serializer.js","sourceRoot":"","sources":["../../../../../../src/lib/components/admin/fields/richtext/portable-text-serializer.ts"],"names":[],"mappings":"AA0CA,IAAI,UAAU,GAAG,CAAC,CAAC;AACnB,SAAS,MAAM;IACd,OAAO,CAAC,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC7E,CAAC;AAED,MAAM,aAAa,GAA2B;IAC7C,IAAI,EAAE,QAAQ;IACd,MAAM,EAAE,IAAI;IACZ,SAAS,EAAE,WAAW;IACtB,MAAM,EAAE,gBAAgB;IACxB,IAAI,EAAE,MAAM;CACZ,CAAC;AAEF,MAAM,qBAAqB,GAA2B,MAAM,CAAC,WAAW,CACvE,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CACrD,CAAC;AAEF,SAAS,oBAAoB,CAAC,IAAiB,EAAE,QAAsC;IACtF,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,CAAC,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IAE9B,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QAC/B,MAAM,QAAQ,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QAC7D,MAAM,SAAS,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;QAEnE,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;YACzB,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;YACrB,QAAQ,CAAC,IAAI,CAAC;gBACb,KAAK,EAAE,MAAM;gBACb,IAAI,EAAE,GAAG;gBACT,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,EAAE;aAC1B,CAAC,CAAC;YACH,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACjB,CAAC;aAAM,IAAI,QAAQ,EAAE,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;YAChD,MAAM,cAAc,GAAG,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YAC5D,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,IAAI,MAAM,EAAE,CAAC;YACvC,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC;YACtD,IAAI,QAAQ,EAAE,CAAC;gBACd,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG,CAAC,SAAS,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;YAC/E,CAAC;iBAAM,CAAC;gBACP,QAAQ,CAAC,IAAI,CAAC;oBACb,KAAK,EAAE,cAAc;oBACrB,IAAI,EAAE,GAAG;oBACT,GAAG,CAAC,SAAS,CAAC,IAAI,IAAI,EAAE,CAAC;iBACzB,CAAC,CAAC;YACJ,CAAC;YACD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3C,CAAC;aAAM,IAAI,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;YACpC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC;QACrC,CAAC;IACF,CAAC;IACD,OAAO,KAAK,CAAC;AACd,CAAC;AAED,SAAS,8BAA8B,CACtC,IAAiB,EACjB,QAAiB,EACjB,KAAc;IAEd,MAAM,QAAQ,GAAiC,EAAE,CAAC;IAClD,MAAM,QAAQ,GAAwB,EAAE,CAAC;IAEzC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QAClB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAClC,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAC3B,MAAM,KAAK,GAAG,oBAAoB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;gBACpD,QAAQ,CAAC,IAAI,CAAC;oBACb,KAAK,EAAE,MAAM;oBACb,IAAI,EAAE,MAAM,EAAE;oBACd,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,EAAE;oBACtB,KAAK,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;iBAC3C,CAAC,CAAC;YACJ,CAAC;iBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;gBACvC,QAAQ,CAAC,IAAI,CAAC;oBACb,KAAK,EAAE,MAAM;oBACb,IAAI,EAAE,MAAM,EAAE;oBACd,IAAI,EAAE,IAAI;iBACV,CAAC,CAAC;YACJ,CAAC;iBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,0BAA0B,EAAE,CAAC;gBACtD,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;gBAChD,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,IAAI,MAAM,EAAE,EAAE,GAAG,IAAI,EAA8B,CAAC,CAAC;YACvF,CAAC;QACF,CAAC;IACF,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,IAAI,KAAK,GAAG,QAAQ,CAAC;IACrB,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC7B,KAAK,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;IACtC,CAAC;SAAM,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;QACvC,KAAK,GAAG,YAAY,CAAC;IACtB,CAAC;IAED,MAAM,KAAK,GAAsB;QAChC,KAAK,EAAE,OAAO;QACd,IAAI,EAAE,MAAM,EAAE;QACd,KAAK;QACL,QAAQ;QACR,QAAQ,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;KACpD,CAAC;IAEF,IAAI,QAAQ,EAAE,CAAC;QACd,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAC1B,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,OAAO,KAAK,CAAC;AACd,CAAC;AAED,SAAS,gBAAgB,CACxB,IAAiB,EACjB,QAAgB,EAChB,KAAa,EACb,MAA2B;IAE3B,IAAI,CAAC,IAAI,CAAC,OAAO;QAAE,OAAO;IAE1B,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACrC,IAAI,QAAQ,CAAC,IAAI,KAAK,UAAU;YAAE,SAAS;QAE3C,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;YAC5C,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBAC5D,MAAM,CAAC,IAAI,CAAC,8BAA8B,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;YACrE,CAAC;iBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;gBACxE,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;gBACrE,gBAAgB,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;YACxD,CAAC;QACF,CAAC;IACF,CAAC;AACF,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,GAAgB;IACpD,MAAM,MAAM,GAAsB,EAAE,CAAC;IAErC,IAAI,CAAC,GAAG,CAAC,OAAO;QAAE,OAAO,MAAM,CAAC;IAEhC,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;QAChC,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC1D,MAAM,CAAC,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC,CAAC,CAAC;QACnD,CAAC;aAAM,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YACvC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;gBACxC,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;oBAChC,MAAM,KAAK,GAAG,8BAA8B,CAAC,KAAK,CAAC,CAAC;oBACpD,KAAK,CAAC,KAAK,GAAG,YAAY,CAAC;oBAC3B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACpB,CAAC;YACF,CAAC;QACF,CAAC;aAAM,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;YACtE,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;YAClE,gBAAgB,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,MAA6B,CAAC,CAAC;QACpE,CAAC;aAAM,IAAI,IAAI,CAAC,IAAI,KAAK,oBAAoB,EAAE,CAAC;YAC/C,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;YAC/C,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,IAAI,MAAM,EAAE,EAAE,GAAG,IAAI,EAA6B,CAAC,CAAC;QACpF,CAAC;IACF,CAAC;IAED,OAAO,MAAM,CAAC;AACf,CAAC;AAED,SAAS,eAAe,CACvB,QAAkD;IAElD,MAAM,GAAG,GAAG,IAAI,GAAG,EAAsC,CAAC;IAC1D,IAAI,QAAQ,EAAE,CAAC;QACd,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;YAC5B,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACxB,CAAC;IACF,CAAC;IACD,OAAO,GAAG,CAAC;AACZ,CAAC;AAED,SAAS,oBAAoB,CAC5B,QAA6B,EAC7B,QAAkD;IAElD,MAAM,UAAU,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;IAC7C,MAAM,MAAM,GAAkB,EAAE,CAAC;IAEjC,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;QAC9B,IAAI,KAAK,CAAC,KAAK,KAAK,MAAM,EAAE,CAAC;YAC5B,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;YACvC,MAAM,CAAC,IAAI,CAAC;gBACX,IAAI,EAAE,0BAA0B;gBAChC,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE;aAC5B,CAAC,CAAC;YACH,SAAS;QACV,CAAC;QAED,MAAM,IAAI,GAAG,KAAyB,CAAC;QACvC,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YACxB,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;YACnC,SAAS;QACV,CAAC;QAED,uCAAuC;QACvC,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,SAAS;QAEzB,MAAM,KAAK,GAAyD,EAAE,CAAC;QACvE,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAChB,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBAClC,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBACpC,IAAI,GAAG,IAAI,GAAG,CAAC,KAAK,KAAK,MAAM,EAAE,CAAC;oBACjC,KAAK,CAAC,IAAI,CAAC;wBACV,IAAI,EAAE,MAAM;wBACZ,KAAK,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,IAAc,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;qBACzE,CAAC,CAAC;gBACJ,CAAC;qBAAM,IAAI,GAAG,EAAE,CAAC;oBAChB,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC;oBACrC,KAAK,CAAC,IAAI,CAAC;wBACV,IAAI,EAAE,cAAc,KAAK,EAAE;wBAC3B,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;qBACrB,CAAC,CAAC;gBACJ,CAAC;qBAAM,IAAI,qBAAqB,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC3C,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,qBAAqB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBACtD,CAAC;YACF,CAAC;QACF,CAAC;QAED,MAAM,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACvB,CAAC,CAAC;IACnB,CAAC;IAED,OAAO,MAAM,CAAC;AACf,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,KAAwB;IAC5D,MAAM,GAAG,GAAgB,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClC,GAAG,CAAC,OAAO,GAAG,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;QACtC,OAAO,GAAG,CAAC;IACZ,CAAC;IAED,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;QAEvB,IAAI,IAAI,CAAC,KAAK,KAAK,OAAO,EAAE,CAAC;YAC5B,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC;YACtC,GAAG,CAAC,OAAQ,CAAC,IAAI,CAAC;gBACjB,IAAI,EAAE,oBAAoB;gBAC1B,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE;aAC5B,CAAC,CAAC;YACH,CAAC,EAAE,CAAC;YACJ,SAAS;QACV,CAAC;QAED,MAAM,KAAK,GAAG,IAAyB,CAAC;QAExC,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YACpB,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC;YAC5E,MAAM,QAAQ,GAAG,aAAa,CAAC,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;YACrE,GAAG,CAAC,OAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACjC,CAAC,GAAG,QAAQ,CAAC,SAAS,CAAC;YACvB,SAAS;QACV,CAAC;QAED,IAAI,KAAK,CAAC,KAAK,KAAK,YAAY,EAAE,CAAC;YAClC,MAAM,OAAO,GAAG,oBAAoB,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;YACrE,GAAG,CAAC,OAAQ,CAAC,IAAI,CAAC;gBACjB,IAAI,EAAE,YAAY;gBAClB,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;aACnF,CAAC,CAAC;QACJ,CAAC;aAAM,IAAI,KAAK,CAAC,KAAK,EAAE,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACzC,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACjD,MAAM,OAAO,GAAG,oBAAoB,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;YACrE,GAAG,CAAC,OAAQ,CAAC,IAAI,CAAC;gBACjB,IAAI,EAAE,SAAS;gBACf,KAAK,EAAE,EAAE,KAAK,EAAE;gBAChB,OAAO,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;aACjD,CAAC,CAAC;QACJ,CAAC;aAAM,CAAC;YACP,MAAM,OAAO,GAAG,oBAAoB,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;YACrE,GAAG,CAAC,OAAQ,CAAC,IAAI,CAAC;gBACjB,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;aACjD,CAAC,CAAC;QACJ,CAAC;QAED,CAAC,EAAE,CAAC;IACL,CAAC;IAED,OAAO,GAAG,CAAC;AACZ,CAAC;AAED,SAAS,aAAa,CACrB,MAAyB,EACzB,UAAkB,EAClB,QAAgB,EAChB,KAAa;IAEb,MAAM,KAAK,GAAkB,EAAE,CAAC;IAChC,IAAI,CAAC,GAAG,UAAU,CAAC;IAEnB,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;QAC1B,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAE,CAAC;QACxB,IAAI,IAAI,CAAC,KAAK,KAAK,OAAO;YAAE,MAAM;QAClC,MAAM,KAAK,GAAG,IAAyB,CAAC;QACxC,IAAI,CAAC,KAAK,CAAC,QAAQ;YAAE,MAAM;QAE3B,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC;QACpC,IAAI,UAAU,GAAG,KAAK;YAAE,MAAM;QAE9B,IAAI,UAAU,KAAK,KAAK,EAAE,CAAC;YAC1B,MAAM,OAAO,GAAG,oBAAoB,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;YACrE,MAAM,WAAW,GAAkB,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,CAAC;YAEpE,CAAC,EAAE,CAAC;YAEJ,MAAM,IAAI,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YACnD,IACC,IAAI;gBACJ,IAAI,CAAC,KAAK,KAAK,OAAO;gBACrB,IAA0B,CAAC,QAAQ;gBACpC,CAAE,IAA0B,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,KAAK,EAC/C,CAAC;gBACF,MAAM,UAAU,GACd,IAA0B,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC;gBAClF,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,UAAU,EAAE,UAAU,GAAG,CAAC,CAAC,CAAC;gBACpE,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAC9B,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC;YACtB,CAAC;YAED,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;QACxD,CAAC;aAAM,CAAC;YACP,MAAM;QACP,CAAC;IACF,CAAC;IAED,MAAM,QAAQ,GAAG,QAAQ,KAAK,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC;IAC3E,OAAO;QACN,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE;QACxC,SAAS,EAAE,CAAC;KACZ,CAAC;AACH,CAAC"}