@aphexcms/cms-core 9.0.0 → 9.2.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 +1314 -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 +318 -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 +319 -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
@@ -0,0 +1,319 @@
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 === 'codeBlock') {
141
+ const text = node.content?.[0]?.text ?? '';
142
+ blocks.push({
143
+ _type: 'block',
144
+ _key: genKey(),
145
+ style: 'code',
146
+ children: [{ _type: 'span', _key: genKey(), text }],
147
+ markDefs: undefined
148
+ });
149
+ }
150
+ else if (node.type === 'portableTextObject') {
151
+ const { _type, _key, data } = node.attrs || {};
152
+ blocks.push({ _type, _key: _key || genKey(), ...data });
153
+ }
154
+ }
155
+ return blocks;
156
+ }
157
+ function buildMarkLookup(markDefs) {
158
+ const map = new Map();
159
+ if (markDefs) {
160
+ for (const def of markDefs) {
161
+ map.set(def._key, def);
162
+ }
163
+ }
164
+ return map;
165
+ }
166
+ function spansToTiptapContent(children, markDefs) {
167
+ const markLookup = buildMarkLookup(markDefs);
168
+ const result = [];
169
+ for (const child of children) {
170
+ if (child._type !== 'span') {
171
+ const { _type, _key, ...data } = child;
172
+ result.push({
173
+ type: 'portableTextInlineObject',
174
+ attrs: { _type, _key, data }
175
+ });
176
+ continue;
177
+ }
178
+ const span = child;
179
+ if (span.text === '\n') {
180
+ result.push({ type: 'hardBreak' });
181
+ continue;
182
+ }
183
+ // ProseMirror rejects empty text nodes
184
+ if (!span.text)
185
+ continue;
186
+ const marks = [];
187
+ if (span.marks) {
188
+ for (const markRef of span.marks) {
189
+ const def = markLookup.get(markRef);
190
+ if (def && def._type === 'link') {
191
+ marks.push({
192
+ type: 'link',
193
+ attrs: { href: def.href, target: null, rel: null, class: null }
194
+ });
195
+ }
196
+ else if (def) {
197
+ const { _type, _key, ...data } = def;
198
+ marks.push({
199
+ type: `annotation_${_type}`,
200
+ attrs: { _key, data }
201
+ });
202
+ }
203
+ else if (DECORATOR_MAP_REVERSE[markRef]) {
204
+ marks.push({ type: DECORATOR_MAP_REVERSE[markRef] });
205
+ }
206
+ }
207
+ }
208
+ result.push({
209
+ type: 'text',
210
+ text: span.text,
211
+ ...(marks.length > 0 ? { marks } : {})
212
+ });
213
+ }
214
+ return result;
215
+ }
216
+ export function portableTextToTiptap(value) {
217
+ const doc = { type: 'doc', content: [] };
218
+ if (!value || value.length === 0) {
219
+ doc.content = [{ type: 'paragraph' }];
220
+ return doc;
221
+ }
222
+ let i = 0;
223
+ while (i < value.length) {
224
+ const node = value[i];
225
+ if (node._type !== 'block') {
226
+ const { _type, _key, ...data } = node;
227
+ doc.content.push({
228
+ type: 'portableTextObject',
229
+ attrs: { _type, _key, data }
230
+ });
231
+ i++;
232
+ continue;
233
+ }
234
+ const block = node;
235
+ if (block.listItem) {
236
+ const listType = block.listItem === 'number' ? 'orderedList' : 'bulletList';
237
+ const listNode = buildListNode(value, i, listType, block.level || 1);
238
+ doc.content.push(listNode.node);
239
+ i = listNode.nextIndex;
240
+ continue;
241
+ }
242
+ if (block.style === 'code') {
243
+ const text = block.children
244
+ .filter((c) => c._type === 'span')
245
+ .map((c) => c.text)
246
+ .join('');
247
+ doc.content.push({
248
+ type: 'codeBlock',
249
+ attrs: { language: null },
250
+ content: text ? [{ type: 'text', text }] : []
251
+ });
252
+ }
253
+ else if (block.style === 'blockquote') {
254
+ const content = spansToTiptapContent(block.children, block.markDefs);
255
+ doc.content.push({
256
+ type: 'blockquote',
257
+ content: [{ type: 'paragraph', content: content.length > 0 ? content : undefined }]
258
+ });
259
+ }
260
+ else if (block.style?.startsWith('h')) {
261
+ const level = parseInt(block.style.slice(1), 10);
262
+ const content = spansToTiptapContent(block.children, block.markDefs);
263
+ doc.content.push({
264
+ type: 'heading',
265
+ attrs: { level },
266
+ content: content.length > 0 ? content : undefined
267
+ });
268
+ }
269
+ else {
270
+ const content = spansToTiptapContent(block.children, block.markDefs);
271
+ doc.content.push({
272
+ type: 'paragraph',
273
+ content: content.length > 0 ? content : undefined
274
+ });
275
+ }
276
+ i++;
277
+ }
278
+ return doc;
279
+ }
280
+ function buildListNode(blocks, startIndex, listType, level) {
281
+ const items = [];
282
+ let i = startIndex;
283
+ while (i < blocks.length) {
284
+ const node = blocks[i];
285
+ if (node._type !== 'block')
286
+ break;
287
+ const block = node;
288
+ if (!block.listItem)
289
+ break;
290
+ const blockLevel = block.level || 1;
291
+ if (blockLevel < level)
292
+ break;
293
+ if (blockLevel === level) {
294
+ const content = spansToTiptapContent(block.children, block.markDefs);
295
+ const itemContent = [{ type: 'paragraph', content }];
296
+ i++;
297
+ const next = i < blocks.length ? blocks[i] : null;
298
+ if (next &&
299
+ next._type === 'block' &&
300
+ next.listItem &&
301
+ (next.level || 1) > level) {
302
+ const nestedType = next.listItem === 'number' ? 'orderedList' : 'bulletList';
303
+ const nested = buildListNode(blocks, i, nestedType, blockLevel + 1);
304
+ itemContent.push(nested.node);
305
+ i = nested.nextIndex;
306
+ }
307
+ items.push({ type: 'listItem', content: itemContent });
308
+ }
309
+ else {
310
+ break;
311
+ }
312
+ }
313
+ const nodeType = listType === 'orderedList' ? 'orderedList' : 'bulletList';
314
+ return {
315
+ node: { type: nodeType, content: items },
316
+ nextIndex: i
317
+ };
318
+ }
319
+ //# 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":"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"}
@@ -0,0 +1,8 @@
1
+ import type { NodeViewRendererProps } from '@tiptap/core';
2
+ import type { NodeView as ProseMirrorNodeView } from '@tiptap/pm/view';
3
+ export declare function SvelteInlineNodeViewRenderer(onEdit: (attrs: {
4
+ _type: string;
5
+ _key: string;
6
+ data: Record<string, unknown>;
7
+ }) => void, onDelete: (key: string) => void): (props: NodeViewRendererProps) => ProseMirrorNodeView;
8
+ //# sourceMappingURL=svelte-inline-node-view.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"svelte-inline-node-view.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/components/admin/fields/richtext/svelte-inline-node-view.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,KAAK,EAAE,QAAQ,IAAI,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAIvE,wBAAgB,4BAA4B,CAC3C,MAAM,EAAE,CAAC,KAAK,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,KAAK,IAAI,EACvF,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,IAEvB,OAAO,qBAAqB,KAAG,mBAAmB,CAiE1D"}
@@ -0,0 +1,68 @@
1
+ import { mount, unmount } from 'svelte';
2
+ import PortableTextInlineView from './PortableTextInlineView.svelte';
3
+ export function SvelteInlineNodeViewRenderer(onEdit, onDelete) {
4
+ return (props) => {
5
+ const wrapper = document.createElement('span');
6
+ wrapper.setAttribute('data-portable-text-inline', '');
7
+ wrapper.setAttribute('data-node-view-wrapper', '');
8
+ wrapper.contentEditable = 'false';
9
+ wrapper.style.display = 'inline';
10
+ let nodeAttrs = props.node.attrs;
11
+ function mountView() {
12
+ return mount(PortableTextInlineView, {
13
+ target: wrapper,
14
+ props: {
15
+ type: nodeAttrs._type,
16
+ nodeKey: nodeAttrs._key,
17
+ data: nodeAttrs.data,
18
+ selected: false,
19
+ onEdit: () => {
20
+ onEdit({
21
+ _type: nodeAttrs._type,
22
+ _key: nodeAttrs._key,
23
+ data: nodeAttrs.data
24
+ });
25
+ },
26
+ onDelete: () => {
27
+ onDelete(nodeAttrs._key);
28
+ }
29
+ }
30
+ });
31
+ }
32
+ let currentComponent = mountView();
33
+ return {
34
+ dom: wrapper,
35
+ update(node) {
36
+ if (node.type.name !== 'portableTextInlineObject')
37
+ return false;
38
+ nodeAttrs = node.attrs;
39
+ unmount(currentComponent);
40
+ currentComponent = mountView();
41
+ return true;
42
+ },
43
+ selectNode() {
44
+ wrapper.classList.add('ProseMirror-selectednode');
45
+ onEdit({
46
+ _type: nodeAttrs._type,
47
+ _key: nodeAttrs._key,
48
+ data: nodeAttrs.data
49
+ });
50
+ },
51
+ deselectNode() {
52
+ wrapper.classList.remove('ProseMirror-selectednode');
53
+ },
54
+ destroy() {
55
+ unmount(currentComponent);
56
+ },
57
+ stopEvent(event) {
58
+ if (event.type === 'mousedown' || event.type === 'click')
59
+ return true;
60
+ return false;
61
+ },
62
+ ignoreMutation() {
63
+ return true;
64
+ }
65
+ };
66
+ };
67
+ }
68
+ //# sourceMappingURL=svelte-inline-node-view.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"svelte-inline-node-view.js","sourceRoot":"","sources":["../../../../../../src/lib/components/admin/fields/richtext/svelte-inline-node-view.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,sBAAsB,MAAM,iCAAiC,CAAC;AAErE,MAAM,UAAU,4BAA4B,CAC3C,MAAuF,EACvF,QAA+B;IAE/B,OAAO,CAAC,KAA4B,EAAuB,EAAE;QAC5D,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC/C,OAAO,CAAC,YAAY,CAAC,2BAA2B,EAAE,EAAE,CAAC,CAAC;QACtD,OAAO,CAAC,YAAY,CAAC,wBAAwB,EAAE,EAAE,CAAC,CAAC;QACnD,OAAO,CAAC,eAAe,GAAG,OAAO,CAAC;QAClC,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,QAAQ,CAAC;QAEjC,IAAI,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;QAEjC,SAAS,SAAS;YACjB,OAAO,KAAK,CAAC,sBAAsB,EAAE;gBACpC,MAAM,EAAE,OAAO;gBACf,KAAK,EAAE;oBACN,IAAI,EAAE,SAAS,CAAC,KAAK;oBACrB,OAAO,EAAE,SAAS,CAAC,IAAI;oBACvB,IAAI,EAAE,SAAS,CAAC,IAAI;oBACpB,QAAQ,EAAE,KAAK;oBACf,MAAM,EAAE,GAAG,EAAE;wBACZ,MAAM,CAAC;4BACN,KAAK,EAAE,SAAS,CAAC,KAAK;4BACtB,IAAI,EAAE,SAAS,CAAC,IAAI;4BACpB,IAAI,EAAE,SAAS,CAAC,IAAI;yBACpB,CAAC,CAAC;oBACJ,CAAC;oBACD,QAAQ,EAAE,GAAG,EAAE;wBACd,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;oBAC1B,CAAC;iBACD;aACD,CAAC,CAAC;QACJ,CAAC;QAED,IAAI,gBAAgB,GAAG,SAAS,EAAE,CAAC;QAEnC,OAAO;YACN,GAAG,EAAE,OAAO;YACZ,MAAM,CAAC,IAAI;gBACV,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,0BAA0B;oBAAE,OAAO,KAAK,CAAC;gBAChE,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC;gBACvB,OAAO,CAAC,gBAAgB,CAAC,CAAC;gBAC1B,gBAAgB,GAAG,SAAS,EAAE,CAAC;gBAC/B,OAAO,IAAI,CAAC;YACb,CAAC;YACD,UAAU;gBACT,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;gBAClD,MAAM,CAAC;oBACN,KAAK,EAAE,SAAS,CAAC,KAAK;oBACtB,IAAI,EAAE,SAAS,CAAC,IAAI;oBACpB,IAAI,EAAE,SAAS,CAAC,IAAI;iBACpB,CAAC,CAAC;YACJ,CAAC;YACD,YAAY;gBACX,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,0BAA0B,CAAC,CAAC;YACtD,CAAC;YACD,OAAO;gBACN,OAAO,CAAC,gBAAgB,CAAC,CAAC;YAC3B,CAAC;YACD,SAAS,CAAC,KAAY;gBACrB,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO;oBAAE,OAAO,IAAI,CAAC;gBACtE,OAAO,KAAK,CAAC;YACd,CAAC;YACD,cAAc;gBACb,OAAO,IAAI,CAAC;YACb,CAAC;SACD,CAAC;IACH,CAAC,CAAC;AACH,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { NodeViewRendererProps } from '@tiptap/core';
2
+ import type { NodeView as ProseMirrorNodeView } from '@tiptap/pm/view';
3
+ export declare function SvelteNodeViewRenderer(onEdit: (attrs: {
4
+ _type: string;
5
+ _key: string;
6
+ data: Record<string, unknown>;
7
+ }) => void, onDelete: (key: string) => void): (props: NodeViewRendererProps) => ProseMirrorNodeView;
8
+ //# sourceMappingURL=svelte-node-view.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"svelte-node-view.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/components/admin/fields/richtext/svelte-node-view.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,KAAK,EAAE,QAAQ,IAAI,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAKvE,wBAAgB,sBAAsB,CACrC,MAAM,EAAE,CAAC,KAAK,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,KAAK,IAAI,EACvF,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,IAEvB,OAAO,qBAAqB,KAAG,mBAAmB,CA8D1D"}
@@ -0,0 +1,64 @@
1
+ import { mount, unmount } from 'svelte';
2
+ import PortableTextObjectView from './PortableTextObjectView.svelte';
3
+ import PortableTextImageView from './PortableTextImageView.svelte';
4
+ export function SvelteNodeViewRenderer(onEdit, onDelete) {
5
+ return (props) => {
6
+ const wrapper = document.createElement('div');
7
+ wrapper.setAttribute('data-portable-text-object', '');
8
+ wrapper.setAttribute('data-node-view-wrapper', '');
9
+ wrapper.contentEditable = 'false';
10
+ let nodeAttrs = props.node.attrs;
11
+ function getViewComponent() {
12
+ return nodeAttrs._type === 'image' ? PortableTextImageView : PortableTextObjectView;
13
+ }
14
+ function mountView() {
15
+ return mount(getViewComponent(), {
16
+ target: wrapper,
17
+ props: {
18
+ type: nodeAttrs._type,
19
+ nodeKey: nodeAttrs._key,
20
+ data: nodeAttrs.data,
21
+ selected: false,
22
+ onEdit: () => {
23
+ onEdit({
24
+ _type: nodeAttrs._type,
25
+ _key: nodeAttrs._key,
26
+ data: nodeAttrs.data
27
+ });
28
+ },
29
+ onDelete: () => {
30
+ onDelete(nodeAttrs._key);
31
+ }
32
+ }
33
+ });
34
+ }
35
+ let currentComponent = mountView();
36
+ return {
37
+ dom: wrapper,
38
+ update(node) {
39
+ if (node.type.name !== 'portableTextObject')
40
+ return false;
41
+ nodeAttrs = node.attrs;
42
+ unmount(currentComponent);
43
+ currentComponent = mountView();
44
+ return true;
45
+ },
46
+ selectNode() {
47
+ wrapper.classList.add('ProseMirror-selectednode');
48
+ },
49
+ deselectNode() {
50
+ wrapper.classList.remove('ProseMirror-selectednode');
51
+ },
52
+ destroy() {
53
+ unmount(currentComponent);
54
+ },
55
+ stopEvent() {
56
+ return true;
57
+ },
58
+ ignoreMutation() {
59
+ return true;
60
+ }
61
+ };
62
+ };
63
+ }
64
+ //# sourceMappingURL=svelte-node-view.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"svelte-node-view.js","sourceRoot":"","sources":["../../../../../../src/lib/components/admin/fields/richtext/svelte-node-view.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,sBAAsB,MAAM,iCAAiC,CAAC;AACrE,OAAO,qBAAqB,MAAM,gCAAgC,CAAC;AAEnE,MAAM,UAAU,sBAAsB,CACrC,MAAuF,EACvF,QAA+B;IAE/B,OAAO,CAAC,KAA4B,EAAuB,EAAE;QAC5D,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC9C,OAAO,CAAC,YAAY,CAAC,2BAA2B,EAAE,EAAE,CAAC,CAAC;QACtD,OAAO,CAAC,YAAY,CAAC,wBAAwB,EAAE,EAAE,CAAC,CAAC;QACnD,OAAO,CAAC,eAAe,GAAG,OAAO,CAAC;QAElC,IAAI,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;QAEjC,SAAS,gBAAgB;YACxB,OAAO,SAAS,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,sBAAsB,CAAC;QACrF,CAAC;QAED,SAAS,SAAS;YACjB,OAAO,KAAK,CAAC,gBAAgB,EAAE,EAAE;gBAChC,MAAM,EAAE,OAAO;gBACf,KAAK,EAAE;oBACN,IAAI,EAAE,SAAS,CAAC,KAAK;oBACrB,OAAO,EAAE,SAAS,CAAC,IAAI;oBACvB,IAAI,EAAE,SAAS,CAAC,IAAI;oBACpB,QAAQ,EAAE,KAAK;oBACf,MAAM,EAAE,GAAG,EAAE;wBACZ,MAAM,CAAC;4BACN,KAAK,EAAE,SAAS,CAAC,KAAK;4BACtB,IAAI,EAAE,SAAS,CAAC,IAAI;4BACpB,IAAI,EAAE,SAAS,CAAC,IAAI;yBACpB,CAAC,CAAC;oBACJ,CAAC;oBACD,QAAQ,EAAE,GAAG,EAAE;wBACd,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;oBAC1B,CAAC;iBACD;aACD,CAAC,CAAC;QACJ,CAAC;QAED,IAAI,gBAAgB,GAAG,SAAS,EAAE,CAAC;QAEnC,OAAO;YACN,GAAG,EAAE,OAAO;YACZ,MAAM,CAAC,IAAI;gBACV,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,oBAAoB;oBAAE,OAAO,KAAK,CAAC;gBAC1D,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC;gBACvB,OAAO,CAAC,gBAAgB,CAAC,CAAC;gBAC1B,gBAAgB,GAAG,SAAS,EAAE,CAAC;gBAC/B,OAAO,IAAI,CAAC;YACb,CAAC;YACD,UAAU;gBACT,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;YACnD,CAAC;YACD,YAAY;gBACX,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,0BAA0B,CAAC,CAAC;YACtD,CAAC;YACD,OAAO;gBACN,OAAO,CAAC,gBAAgB,CAAC,CAAC;YAC3B,CAAC;YACD,SAAS;gBACR,OAAO,IAAI,CAAC;YACb,CAAC;YACD,cAAc;gBACb,OAAO,IAAI,CAAC;YACb,CAAC;SACD,CAAC;IACH,CAAC,CAAC;AACH,CAAC"}
@@ -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) {