@aphexcms/cms-core 9.2.0 → 9.2.2

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 (111) hide show
  1. package/dist/cli/generate-types.d.ts.map +1 -1
  2. package/dist/cli/generate-types.js +21 -3
  3. package/dist/cli/generate-types.js.map +1 -1
  4. package/dist/client/index.d.ts +1 -0
  5. package/dist/client/index.d.ts.map +1 -1
  6. package/dist/client/index.js +4 -0
  7. package/dist/components/AdminApp.svelte +27 -11
  8. package/dist/components/AdminApp.svelte.d.ts.map +1 -1
  9. package/dist/components/admin/AdminLayout.svelte.d.ts +3 -3
  10. package/dist/components/admin/DocumentEditor.svelte +548 -21
  11. package/dist/components/admin/DocumentEditor.svelte.d.ts +6 -0
  12. package/dist/components/admin/DocumentEditor.svelte.d.ts.map +1 -1
  13. package/dist/components/admin/SchemaField.svelte +1 -1
  14. package/dist/components/admin/fields/ArrayField.svelte +2 -2
  15. package/dist/components/admin/fields/ImageField.svelte +85 -27
  16. package/dist/components/admin/fields/ImageField.svelte.d.ts.map +1 -1
  17. package/dist/components/admin/fields/NumberField.svelte +61 -16
  18. package/dist/components/admin/fields/NumberField.svelte.d.ts +2 -2
  19. package/dist/components/admin/fields/NumberField.svelte.d.ts.map +1 -1
  20. package/dist/components/admin/fields/StringField.svelte +26 -2
  21. package/dist/components/admin/fields/StringField.svelte.d.ts.map +1 -1
  22. package/dist/components/admin/fields/richtext/ImageBlockModal.svelte +133 -0
  23. package/dist/components/admin/fields/richtext/ImageBlockModal.svelte.d.ts +14 -0
  24. package/dist/components/admin/fields/richtext/ImageBlockModal.svelte.d.ts.map +1 -0
  25. package/dist/components/admin/fields/richtext/PortableTextImageView.svelte +2 -2
  26. package/dist/components/admin/fields/richtext/RichtextField.svelte +164 -13
  27. package/dist/components/admin/fields/richtext/RichtextField.svelte.d.ts.map +1 -1
  28. package/dist/components/admin/fields/richtext/portable-text-serializer.d.ts.map +1 -1
  29. package/dist/components/admin/fields/richtext/portable-text-serializer.js +6 -4
  30. package/dist/components/admin/fields/richtext/svelte-node-view.d.ts.map +1 -1
  31. package/dist/components/admin/fields/richtext/svelte-node-view.js +11 -0
  32. package/dist/lib/client/index.d.ts +1 -0
  33. package/dist/lib/client/index.d.ts.map +1 -1
  34. package/dist/lib/client/index.js +4 -0
  35. package/dist/lib/client/index.js.map +1 -1
  36. package/dist/lib/components/admin/fields/richtext/portable-text-serializer.d.ts.map +1 -1
  37. package/dist/lib/components/admin/fields/richtext/portable-text-serializer.js +6 -4
  38. package/dist/lib/components/admin/fields/richtext/portable-text-serializer.js.map +1 -1
  39. package/dist/lib/components/admin/fields/richtext/svelte-node-view.d.ts.map +1 -1
  40. package/dist/lib/components/admin/fields/richtext/svelte-node-view.js +11 -0
  41. package/dist/lib/components/admin/fields/richtext/svelte-node-view.js.map +1 -1
  42. package/dist/lib/preview/assets.d.ts +19 -0
  43. package/dist/lib/preview/assets.d.ts.map +1 -0
  44. package/dist/lib/preview/assets.js +60 -0
  45. package/dist/lib/preview/assets.js.map +1 -0
  46. package/dist/lib/preview/perspective.d.ts +20 -0
  47. package/dist/lib/preview/perspective.d.ts.map +1 -0
  48. package/dist/lib/preview/perspective.js +21 -0
  49. package/dist/lib/preview/perspective.js.map +1 -0
  50. package/dist/lib/preview/stega.d.ts +25 -0
  51. package/dist/lib/preview/stega.d.ts.map +1 -0
  52. package/dist/lib/preview/stega.js +168 -0
  53. package/dist/lib/preview/stega.js.map +1 -0
  54. package/dist/lib/richtext-context.svelte.d.ts +18 -0
  55. package/dist/lib/richtext-context.svelte.d.ts.map +1 -0
  56. package/dist/lib/richtext-context.svelte.js +13 -0
  57. package/dist/lib/richtext-context.svelte.js.map +1 -0
  58. package/dist/lib/server/index.d.ts +1 -0
  59. package/dist/lib/server/index.d.ts.map +1 -1
  60. package/dist/lib/server/index.js +2 -0
  61. package/dist/lib/server/index.js.map +1 -1
  62. package/dist/lib/services/asset-service.d.ts +12 -0
  63. package/dist/lib/services/asset-service.d.ts.map +1 -1
  64. package/dist/lib/services/asset-service.js +32 -0
  65. package/dist/lib/services/asset-service.js.map +1 -1
  66. package/dist/lib/types/asset.d.ts +15 -0
  67. package/dist/lib/types/asset.d.ts.map +1 -1
  68. package/dist/lib/types/config.d.ts +7 -0
  69. package/dist/lib/types/config.d.ts.map +1 -1
  70. package/dist/lib/types/schemas.d.ts +30 -1
  71. package/dist/lib/types/schemas.d.ts.map +1 -1
  72. package/dist/lib/types/schemas.js.map +1 -1
  73. package/dist/lib/utils/preview.d.ts +4 -0
  74. package/dist/lib/utils/preview.d.ts.map +1 -1
  75. package/dist/lib/utils/preview.js +7 -0
  76. package/dist/lib/utils/preview.js.map +1 -1
  77. package/dist/lib/vite/index.d.ts +12 -1
  78. package/dist/lib/vite/index.d.ts.map +1 -1
  79. package/dist/lib/vite/index.js +89 -1
  80. package/dist/lib/vite/index.js.map +1 -1
  81. package/dist/preview/assets.d.ts +19 -0
  82. package/dist/preview/assets.d.ts.map +1 -0
  83. package/dist/preview/assets.js +59 -0
  84. package/dist/preview/perspective.d.ts +20 -0
  85. package/dist/preview/perspective.d.ts.map +1 -0
  86. package/dist/preview/perspective.js +20 -0
  87. package/dist/preview/stega.d.ts +25 -0
  88. package/dist/preview/stega.d.ts.map +1 -0
  89. package/dist/preview/stega.js +167 -0
  90. package/dist/richtext-context.svelte.d.ts +18 -0
  91. package/dist/richtext-context.svelte.d.ts.map +1 -0
  92. package/dist/richtext-context.svelte.js +12 -0
  93. package/dist/server/index.d.ts +1 -0
  94. package/dist/server/index.d.ts.map +1 -1
  95. package/dist/server/index.js +2 -0
  96. package/dist/services/asset-service.d.ts +12 -0
  97. package/dist/services/asset-service.d.ts.map +1 -1
  98. package/dist/services/asset-service.js +32 -0
  99. package/dist/types/asset.d.ts +15 -0
  100. package/dist/types/asset.d.ts.map +1 -1
  101. package/dist/types/config.d.ts +7 -0
  102. package/dist/types/config.d.ts.map +1 -1
  103. package/dist/types/schemas.d.ts +30 -1
  104. package/dist/types/schemas.d.ts.map +1 -1
  105. package/dist/utils/preview.d.ts +4 -0
  106. package/dist/utils/preview.d.ts.map +1 -1
  107. package/dist/utils/preview.js +7 -0
  108. package/dist/vite/index.d.ts +12 -1
  109. package/dist/vite/index.d.ts.map +1 -1
  110. package/dist/vite/index.js +89 -1
  111. package/package.json +3 -2
@@ -35,7 +35,9 @@
35
35
  import type { ArrayField as ArrayFieldType, SchemaType } from '../../../../types/schemas';
36
36
  import { getSchemaContext } from '../../../../schema-context.svelte';
37
37
  import { getSchemaByName } from '../../../../schema-utils/utils';
38
+ import { getRichtextEditorRegistry } from '../../../../richtext-context.svelte.js';
38
39
  import ObjectModal from '../../ObjectModal.svelte';
40
+ import ImageBlockModal from './ImageBlockModal.svelte';
39
41
  import AssetBrowserModal from '../../AssetBrowserModal.svelte';
40
42
  import * as Tooltip from '@aphexcms/ui/shadcn/tooltip';
41
43
  import { Image as ImageIcon } from '@lucide/svelte';
@@ -190,8 +192,9 @@
190
192
 
191
193
  function handleEditBlock(attrs: { _type: string; _key: string; data: Record<string, unknown> }) {
192
194
  if (attrs._type === 'image') {
193
- editingNodeKey = attrs._key;
194
- showAssetBrowser = true;
195
+ editingImageKey = attrs._key;
196
+ editingImageData = { ...attrs.data };
197
+ imageModalOpen = true;
195
198
  return;
196
199
  }
197
200
  const typeDef = customTypes.find((t) => t.type === attrs._type);
@@ -278,6 +281,50 @@
278
281
 
279
282
  let showAssetBrowser = $state(false);
280
283
 
284
+ // Inline image block editing — preview + alt + replace/remove. `editingImageData`
285
+ // holds the block's data ({ asset, alt }); alt is persisted into the node so it
286
+ // serializes to the portable-text block and carries visual-editing stega.
287
+ let imageModalOpen = $state(false);
288
+ let editingImageKey = $state<string | null>(null);
289
+ let editingImageData = $state<Record<string, any>>({});
290
+
291
+ function applyImageData(key: string, data: Record<string, any>) {
292
+ if (!editor) return;
293
+ const existing = findNodeByKey(key);
294
+ if (!existing) return;
295
+ const { tr } = editor.state;
296
+ tr.setNodeMarkup(existing.pos, undefined, { _type: 'image', _key: key, data });
297
+ editor.view.dispatch(tr);
298
+ }
299
+
300
+ function handleImageAltChange(alt: string) {
301
+ if (!editingImageKey) return;
302
+ editingImageData = { ...editingImageData, alt: alt || undefined };
303
+ applyImageData(editingImageKey, editingImageData);
304
+ }
305
+
306
+ function handleImageReplace() {
307
+ // Hand off to the asset browser, keeping editingImageKey so the alt is preserved
308
+ // and the modal can re-open with the new asset.
309
+ editingNodeKey = editingImageKey;
310
+ imageModalOpen = false;
311
+ showAssetBrowser = true;
312
+ }
313
+
314
+ function handleImageRemove() {
315
+ const key = editingImageKey;
316
+ imageModalOpen = false;
317
+ editingImageKey = null;
318
+ editingImageData = {};
319
+ if (key) handleDeleteBlock(key);
320
+ }
321
+
322
+ function handleImageModalClose() {
323
+ imageModalOpen = false;
324
+ editingImageKey = null;
325
+ editingImageData = {};
326
+ }
327
+
281
328
  function handleInsertImageBlock() {
282
329
  editingNodeKey = null;
283
330
  insertMenuOpen = false;
@@ -287,13 +334,17 @@
287
334
  function handleAssetSelected(asset: any) {
288
335
  if (!editor || !asset) return;
289
336
 
337
+ const newAssetRef = { _type: 'reference', _ref: asset.id };
290
338
  const existing = editingNodeKey ? findNodeByKey(editingNodeKey) : null;
291
339
  if (existing) {
340
+ // Replace — merge into existing data so the block's alt survives the swap.
341
+ const prevData = (existing.node.attrs?.data as Record<string, any>) ?? {};
342
+ const merged = { ...prevData, asset: newAssetRef };
292
343
  const { tr } = editor.state;
293
344
  tr.setNodeMarkup(existing.pos, undefined, {
294
345
  _type: 'image',
295
346
  _key: editingNodeKey,
296
- data: { asset: { _type: 'reference', _ref: asset.id } }
347
+ data: merged
297
348
  });
298
349
  editor.view.dispatch(tr);
299
350
  } else {
@@ -305,7 +356,7 @@
305
356
  attrs: {
306
357
  _type: 'image',
307
358
  _key: genKey(),
308
- data: { asset: { _type: 'reference', _ref: asset.id } }
359
+ data: { asset: newAssetRef }
309
360
  }
310
361
  })
311
362
  .run();
@@ -313,6 +364,14 @@
313
364
 
314
365
  showAssetBrowser = false;
315
366
  editingNodeKey = null;
367
+
368
+ // If the browser was opened from the image modal (a replace), re-open it on the
369
+ // updated block so the user can keep editing the alt.
370
+ if (editingImageKey) {
371
+ const updated = findNodeByKey(editingImageKey);
372
+ editingImageData = (updated?.node.attrs?.data as Record<string, any>) ?? {};
373
+ imageModalOpen = true;
374
+ }
316
375
  }
317
376
 
318
377
  function handleModalUpdate(updatedData: Record<string, any>) {
@@ -497,14 +556,18 @@
497
556
  annotationModalOpen = true;
498
557
  }
499
558
 
559
+ const editorRegistry = getRichtextEditorRegistry();
560
+
500
561
  onMount(() => {
501
562
  createEditor();
563
+ if (editor) editorRegistry?.set(field.name, { editor, openLinkPopover: showLinkPreview });
502
564
  document.addEventListener('click', handleClickOutside);
503
565
  document.addEventListener('keydown', handleKeydown);
504
566
  element?.addEventListener('click', handleAnnotationClick);
505
567
  });
506
568
 
507
569
  onDestroy(() => {
570
+ editorRegistry?.delete(field.name);
508
571
  editor?.destroy();
509
572
  document.removeEventListener('click', handleClickOutside);
510
573
  document.removeEventListener('keydown', handleKeydown);
@@ -536,6 +599,33 @@
536
599
  // own change back" vs "parent loaded a different document."
537
600
  let lastSyncedVersion = 0;
538
601
  let editorJustCreated = false;
602
+
603
+ // Link marks round-trip lossy: only `href` is persisted to Portable Text, so a
604
+ // rehydrated link drops tiptap's presentation attrs (e.g. `class: 'richtext-link'`
605
+ // → null). Strip those volatile attrs before the equality check below, otherwise an
606
+ // identical round-trip looks "changed", replaces the doc, and collapses the caret to
607
+ // the end — yanking it out of a link the user just clicked in presentation mode.
608
+ function stripVolatileMarks(node: unknown): unknown {
609
+ if (Array.isArray(node)) return node.map(stripVolatileMarks);
610
+ if (node && typeof node === 'object') {
611
+ const obj = node as Record<string, unknown>;
612
+ const out: Record<string, unknown> = {};
613
+ for (const key in obj) {
614
+ if (key === 'marks' && Array.isArray(obj.marks)) {
615
+ out.marks = (obj.marks as Array<Record<string, unknown>>).map((m) =>
616
+ m?.type === 'link'
617
+ ? { type: 'link', attrs: { href: (m.attrs as { href?: unknown })?.href ?? '' } }
618
+ : m
619
+ );
620
+ } else {
621
+ out[key] = stripVolatileMarks(obj[key]);
622
+ }
623
+ }
624
+ return out;
625
+ }
626
+ return node;
627
+ }
628
+
539
629
  $effect(() => {
540
630
  const v = value;
541
631
  if (!editor) return;
@@ -547,10 +637,26 @@
547
637
  lastSyncedVersion = internalVersion;
548
638
  return;
549
639
  }
550
- // Replace content without polluting undo history
640
+ // Skip when the incoming value would produce identical content. The parent
641
+ // can hand us a fresh array reference with the same data (e.g. the live-
642
+ // preview round-trip in presentation mode reassigns documentData); replacing
643
+ // the doc in that case needlessly collapses the selection to the end — which
644
+ // reads as "the cursor jumps to the bottom" mid-edit.
551
645
  const tiptapDoc = portableTextToTiptap(v || []);
552
- const newDoc = editor.state.schema.nodeFromJSON(tiptapDoc);
553
- const tr = editor.state.tr.replaceWith(0, editor.state.doc.content.size, newDoc.content);
646
+ // Normalize the incoming doc THROUGH the editor schema before comparing. The raw
647
+ // serializer output omits node attrs/defaults that ProseMirror fills in, so comparing it
648
+ // directly against `editor.getJSON()` (already schema-normalized) reports a false
649
+ // "changed" for some docs (notably lists + links) — which triggers a destructive
650
+ // replaceWith that resets the caret and makes links impossible to click. Round-tripping
651
+ // the incoming doc through `nodeFromJSON().toJSON()` normalizes both sides identically.
652
+ const incomingDoc = editor.state.schema.nodeFromJSON(tiptapDoc);
653
+ if (
654
+ JSON.stringify(stripVolatileMarks(incomingDoc.toJSON())) ===
655
+ JSON.stringify(stripVolatileMarks(editor.getJSON()))
656
+ )
657
+ return;
658
+ // Replace content without polluting undo history
659
+ const tr = editor.state.tr.replaceWith(0, editor.state.doc.content.size, incomingDoc.content);
554
660
  tr.setMeta('addToHistory', false);
555
661
  isSyncingFromParent = true;
556
662
  editor.view.dispatch(tr);
@@ -589,15 +695,45 @@
589
695
  let linkPopoverPos = $state({ top: 0, left: 0 });
590
696
  let linkPreviewHref = $state('');
591
697
 
698
+ // Render the link popover at <body> level. The editor can sit inside an ancestor with a
699
+ // `transform` (e.g. the sliding responsive document panel), which would make the popover's
700
+ // `position: fixed` resolve against that ancestor instead of the viewport — placing it
701
+ // off-screen. Portaling escapes any such containing block / overflow clip.
702
+ function portal(node: HTMLElement) {
703
+ document.body.appendChild(node);
704
+ return {
705
+ destroy() {
706
+ node.remove();
707
+ }
708
+ };
709
+ }
710
+
592
711
  function positionLinkPopover() {
593
- if (!editor || !element) return;
712
+ if (!editor) return;
594
713
  const { from, to } = editor.state.selection;
595
714
  const start = editor.view.coordsAtPos(from);
596
715
  const end = editor.view.coordsAtPos(to);
597
- const editorRect = element.getBoundingClientRect();
716
+
717
+ // The popover is `position: fixed`, so it works in viewport coordinates — `coordsAtPos`
718
+ // already returns those. This sidesteps the editor's scroll/overflow container (e.g. the
719
+ // split form panel in visual-editing mode), which would otherwise clip or shift an
720
+ // absolutely-positioned child.
721
+ const POPOVER_H = 44;
722
+ const POPOVER_W = 320; // approx; only used to keep the popover off the right edge
723
+ const GAP = 4;
724
+ const MARGIN = 8;
725
+
726
+ // Below the selection by default; flip above when it would spill past the viewport bottom.
727
+ const roomBelow = end.bottom + GAP + POPOVER_H <= window.innerHeight - MARGIN;
728
+ const roomAbove = start.top - GAP - POPOVER_H >= MARGIN;
729
+ const placeBelow = roomBelow || !roomAbove;
730
+
598
731
  linkPopoverPos = {
599
- top: end.bottom - editorRect.top + 4,
600
- left: Math.max(0, Math.min(start.left, end.left) - editorRect.left)
732
+ top: placeBelow ? end.bottom + GAP : start.top - GAP - POPOVER_H,
733
+ left: Math.min(
734
+ Math.max(MARGIN, Math.min(start.left, end.left)),
735
+ window.innerWidth - POPOVER_W - MARGIN
736
+ )
601
737
  };
602
738
  }
603
739
 
@@ -1018,7 +1154,8 @@
1018
1154
 
1019
1155
  {#if linkMode === 'preview'}
1020
1156
  <div
1021
- class="border-rule bg-popover absolute z-40 flex items-center gap-1.5 rounded-md border px-2 py-1.5 shadow-lg"
1157
+ use:portal
1158
+ class="border-rule bg-popover fixed z-[60] flex items-center gap-1.5 rounded-md border px-2 py-1.5 shadow-lg"
1022
1159
  style="top: {linkPopoverPos.top}px; left: {linkPopoverPos.left}px;"
1023
1160
  >
1024
1161
  <a
@@ -1060,7 +1197,8 @@
1060
1197
  </div>
1061
1198
  {:else if linkMode === 'edit'}
1062
1199
  <div
1063
- class="border-rule bg-popover absolute z-40 flex items-center gap-2 rounded-md border px-3 py-2 shadow-lg"
1200
+ use:portal
1201
+ class="border-rule bg-popover fixed z-[60] flex items-center gap-2 rounded-md border px-3 py-2 shadow-lg"
1064
1202
  style="top: {linkPopoverPos.top}px; left: {linkPopoverPos.left}px;"
1065
1203
  >
1066
1204
  <LinkIcon class="text-muted-foreground h-4 w-4 shrink-0" />
@@ -1139,6 +1277,19 @@
1139
1277
  onSelect={handleAssetSelected}
1140
1278
  />
1141
1279
 
1280
+ {#if imageModalOpen}
1281
+ <ImageBlockModal
1282
+ open={imageModalOpen}
1283
+ assetRef={editingImageData?.asset?._ref}
1284
+ alt={(editingImageData?.alt as string) ?? ''}
1285
+ {readonly}
1286
+ onAltChange={handleImageAltChange}
1287
+ onReplace={handleImageReplace}
1288
+ onRemove={handleImageRemove}
1289
+ onClose={handleImageModalClose}
1290
+ />
1291
+ {/if}
1292
+
1142
1293
  <style>
1143
1294
  .richtext-editor {
1144
1295
  position: relative;
@@ -1 +1 @@
1
- {"version":3,"file":"RichtextField.svelte.d.ts","sourceRoot":"","sources":["../../../../../src/lib/components/admin/fields/richtext/RichtextField.svelte.ts"],"names":[],"mappings":"AA4BA,OAAO,EAGL,KAAK,iBAAiB,EACtB,MAAM,4BAA4B,CAAC;AAIrC,OAAO,KAAK,EAAE,UAAU,IAAI,cAAc,EAAc,MAAM,2BAA2B,CAAC;AASzF,UAAU,KAAK;IACd,KAAK,EAAE,cAAc,CAAC;IACtB,KAAK,EAAE,iBAAiB,GAAG,IAAI,GAAG,SAAS,CAAC;IAC5C,QAAQ,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC7C,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,eAAe,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IACrE,cAAc,CAAC,EAAE,MAAM,CAAC;CACxB;AAm+BF,QAAA,MAAM,aAAa,2CAAwC,CAAC;AAC5D,KAAK,aAAa,GAAG,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC;AACtD,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"RichtextField.svelte.d.ts","sourceRoot":"","sources":["../../../../../src/lib/components/admin/fields/richtext/RichtextField.svelte.ts"],"names":[],"mappings":"AA4BA,OAAO,EAGL,KAAK,iBAAiB,EACtB,MAAM,4BAA4B,CAAC;AAIrC,OAAO,KAAK,EAAE,UAAU,IAAI,cAAc,EAAc,MAAM,2BAA2B,CAAC;AAWzF,UAAU,KAAK;IACd,KAAK,EAAE,cAAc,CAAC;IACtB,KAAK,EAAE,iBAAiB,GAAG,IAAI,GAAG,SAAS,CAAC;IAC5C,QAAQ,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC7C,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,eAAe,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IACrE,cAAc,CAAC,EAAE,MAAM,CAAC;CACxB;AA+mCF,QAAA,MAAM,aAAa,2CAAwC,CAAC;AAC5D,KAAK,aAAa,GAAG,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC;AACtD,eAAe,aAAa,CAAC"}
@@ -1 +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,CAmCxE;AAuED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,iBAAiB,GAAG,WAAW,CAmE1E"}
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,CAmCxE;AAyED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,iBAAiB,GAAG,WAAW,CAmE1E"}
@@ -188,10 +188,12 @@ function spansToTiptapContent(children, markDefs) {
188
188
  for (const markRef of span.marks) {
189
189
  const def = markLookup.get(markRef);
190
190
  if (def && def._type === 'link') {
191
- marks.push({
192
- type: 'link',
193
- attrs: { href: def.href, target: null, rel: null, class: null }
194
- });
191
+ // Only supply `href` and let the Link extension fill target/rel/class from its
192
+ // own schema defaults — so a link rebuilt on load is byte-identical to one created
193
+ // by typing or pasting. Hand-setting nulls here diverges from the extension's
194
+ // defaults (e.g. `class: 'richtext-link'`), which left loaded links rendering inert
195
+ // until the content was re-parsed via cut/paste.
196
+ marks.push({ type: 'link', attrs: { href: def.href } });
195
197
  }
196
198
  else if (def) {
197
199
  const { _type, _key, ...data } = def;
@@ -1 +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"}
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,CAyE1D"}
@@ -38,7 +38,18 @@ export function SvelteNodeViewRenderer(onEdit, onDelete) {
38
38
  update(node) {
39
39
  if (node.type.name !== 'portableTextObject')
40
40
  return false;
41
+ const prevType = nodeAttrs._type;
42
+ const prevRef = nodeAttrs.data?.asset?._ref;
41
43
  nodeAttrs = node.attrs;
44
+ const nextType = nodeAttrs._type;
45
+ const nextRef = nodeAttrs.data?.asset?._ref;
46
+ // Image views re-fetch their asset on mount, so a blind remount makes the
47
+ // thumbnail flash (or briefly disappear) on every keystroke/selection. Skip
48
+ // the remount when the image is visually unchanged — alt edits don't touch the
49
+ // thumbnail. Other block types still remount so their content stays in sync.
50
+ if (prevType === 'image' && nextType === 'image' && prevRef === nextRef) {
51
+ return true;
52
+ }
42
53
  unmount(currentComponent);
43
54
  currentComponent = mountView();
44
55
  return true;
@@ -26,4 +26,5 @@ export type { ApiResponse } from '../api/index.js';
26
26
  export { toast } from 'svelte-sonner';
27
27
  export { confirmDialog, type ConfirmDialogOptions } from '../components/admin/confirm-dialog/confirm-dialog.svelte.js';
28
28
  export { default as ConfirmDialogHost } from '../components/admin/confirm-dialog/ConfirmDialogHost.svelte';
29
+ export { stegaClean } from '../preview/stega.js';
29
30
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/client/index.ts"],"names":[],"mappings":"AAIA,cAAc,gBAAgB,CAAC;AAC/B,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAGlG,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAG1C,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAGjF,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAG9E,OAAO,EACN,qBAAqB,EACrB,cAAc,EACd,KAAK,kBAAkB,EACvB,MAAM,+BAA+B,CAAC;AAGvC,cAAc,uBAAuB,CAAC;AAGtC,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,2CAA2C,CAAC;AACtF,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,wCAAwC,CAAC;AAChF,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,qCAAqC,CAAC;AAGzE,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,6CAA6C,CAAC;AAG1F,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,+CAA+C,CAAC;AACvF,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iDAAiD,CAAC;AAC3F,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,+CAA+C,CAAC;AACvF,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gDAAgD,CAAC;AACzF,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,8CAA8C,CAAC;AACrF,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,6CAA6C,CAAC;AACnF,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,6CAA6C,CAAC;AACnF,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,8CAA8C,CAAC;AACrF,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,kDAAkD,CAAC;AAG7F,cAAc,gBAAgB,CAAC;AAE/B,cAAc,cAAc,CAAC;AAC7B,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAGhD,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAGtC,OAAO,EACN,aAAa,EACb,KAAK,oBAAoB,EACzB,MAAM,0DAA0D,CAAC;AAClE,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,6DAA6D,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/client/index.ts"],"names":[],"mappings":"AAIA,cAAc,gBAAgB,CAAC;AAC/B,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAGlG,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAG1C,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAGjF,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAG9E,OAAO,EACN,qBAAqB,EACrB,cAAc,EACd,KAAK,kBAAkB,EACvB,MAAM,+BAA+B,CAAC;AAGvC,cAAc,uBAAuB,CAAC;AAGtC,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,2CAA2C,CAAC;AACtF,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,wCAAwC,CAAC;AAChF,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,qCAAqC,CAAC;AAGzE,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,6CAA6C,CAAC;AAG1F,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,+CAA+C,CAAC;AACvF,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iDAAiD,CAAC;AAC3F,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,+CAA+C,CAAC;AACvF,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gDAAgD,CAAC;AACzF,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,8CAA8C,CAAC;AACrF,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,6CAA6C,CAAC;AACnF,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,6CAA6C,CAAC;AACnF,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,8CAA8C,CAAC;AACrF,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,kDAAkD,CAAC;AAG7F,cAAc,gBAAgB,CAAC;AAE/B,cAAc,cAAc,CAAC;AAC7B,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAGhD,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAGtC,OAAO,EACN,aAAa,EACb,KAAK,oBAAoB,EACzB,MAAM,0DAA0D,CAAC;AAClE,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,6DAA6D,CAAC;AAK3G,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC"}
@@ -38,4 +38,8 @@ export { toast } from 'svelte-sonner';
38
38
  // Confirm dialog (imperative API backed by a mounted host)
39
39
  export { confirmDialog } from '../components/admin/confirm-dialog/confirm-dialog.svelte.js';
40
40
  export { default as ConfirmDialogHost } from '../components/admin/confirm-dialog/ConfirmDialogHost.svelte';
41
+ // Live preview — the runtime overlay + document context live in @aphexcms/visual-editing
42
+ // (AphexVisualOverlay, getLivePreviewDocument). cms-core only owns the stega encoder used
43
+ // by the editor and the stegaClean helper re-exported here for convenience.
44
+ export { stegaClean } from '../preview/stega.js';
41
45
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/client/index.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,oEAAoE;AAEpE,gDAAgD;AAChD,cAAc,gBAAgB,CAAC;AAG/B,4CAA4C;AAC5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAE1C,+DAA+D;AAC/D,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAEjF,uDAAuD;AACvD,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAE9E,uDAAuD;AACvD,OAAO,EACN,qBAAqB,EACrB,cAAc,EAEd,MAAM,+BAA+B,CAAC;AAEvC,8CAA8C;AAC9C,cAAc,uBAAuB,CAAC;AAEtC,qDAAqD;AACrD,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,2CAA2C,CAAC;AACtF,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,wCAAwC,CAAC;AAChF,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,qCAAqC,CAAC;AAEzE,gBAAgB;AAChB,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,6CAA6C,CAAC;AAE1F,mBAAmB;AACnB,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,+CAA+C,CAAC;AACvF,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iDAAiD,CAAC;AAC3F,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,+CAA+C,CAAC;AACvF,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gDAAgD,CAAC;AACzF,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,8CAA8C,CAAC;AACrF,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,6CAA6C,CAAC;AACnF,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,6CAA6C,CAAC;AACnF,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,8CAA8C,CAAC;AACrF,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,kDAAkD,CAAC;AAE7F,mCAAmC;AACnC,cAAc,gBAAgB,CAAC;AAE/B,cAAc,cAAc,CAAC;AAG7B,uEAAuE;AACvE,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEtC,2DAA2D;AAC3D,OAAO,EACN,aAAa,EAEb,MAAM,0DAA0D,CAAC;AAClE,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,6DAA6D,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/client/index.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,oEAAoE;AAEpE,gDAAgD;AAChD,cAAc,gBAAgB,CAAC;AAG/B,4CAA4C;AAC5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAE1C,+DAA+D;AAC/D,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAEjF,uDAAuD;AACvD,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAE9E,uDAAuD;AACvD,OAAO,EACN,qBAAqB,EACrB,cAAc,EAEd,MAAM,+BAA+B,CAAC;AAEvC,8CAA8C;AAC9C,cAAc,uBAAuB,CAAC;AAEtC,qDAAqD;AACrD,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,2CAA2C,CAAC;AACtF,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,wCAAwC,CAAC;AAChF,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,qCAAqC,CAAC;AAEzE,gBAAgB;AAChB,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,6CAA6C,CAAC;AAE1F,mBAAmB;AACnB,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,+CAA+C,CAAC;AACvF,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iDAAiD,CAAC;AAC3F,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,+CAA+C,CAAC;AACvF,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gDAAgD,CAAC;AACzF,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,8CAA8C,CAAC;AACrF,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,6CAA6C,CAAC;AACnF,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,6CAA6C,CAAC;AACnF,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,8CAA8C,CAAC;AACrF,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,kDAAkD,CAAC;AAE7F,mCAAmC;AACnC,cAAc,gBAAgB,CAAC;AAE/B,cAAc,cAAc,CAAC;AAG7B,uEAAuE;AACvE,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEtC,2DAA2D;AAC3D,OAAO,EACN,aAAa,EAEb,MAAM,0DAA0D,CAAC;AAClE,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,6DAA6D,CAAC;AAE3G,yFAAyF;AACzF,0FAA0F;AAC1F,4EAA4E;AAC5E,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC"}
@@ -1 +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,CAmCxE;AAuED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,iBAAiB,GAAG,WAAW,CAmE1E"}
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,CAmCxE;AAyED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,iBAAiB,GAAG,WAAW,CAmE1E"}
@@ -188,10 +188,12 @@ function spansToTiptapContent(children, markDefs) {
188
188
  for (const markRef of span.marks) {
189
189
  const def = markLookup.get(markRef);
190
190
  if (def && def._type === 'link') {
191
- marks.push({
192
- type: 'link',
193
- attrs: { href: def.href, target: null, rel: null, class: null }
194
- });
191
+ // Only supply `href` and let the Link extension fill target/rel/class from its
192
+ // own schema defaults — so a link rebuilt on load is byte-identical to one created
193
+ // by typing or pasting. Hand-setting nulls here diverges from the extension's
194
+ // defaults (e.g. `class: 'richtext-link'`), which left loaded links rendering inert
195
+ // until the content was re-parsed via cut/paste.
196
+ marks.push({ type: 'link', attrs: { href: def.href } });
195
197
  }
196
198
  else if (def) {
197
199
  const { _type, _key, ...data } = def;
@@ -1 +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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"}
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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"}
@@ -1 +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"}
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,CAyE1D"}
@@ -38,7 +38,18 @@ export function SvelteNodeViewRenderer(onEdit, onDelete) {
38
38
  update(node) {
39
39
  if (node.type.name !== 'portableTextObject')
40
40
  return false;
41
+ const prevType = nodeAttrs._type;
42
+ const prevRef = nodeAttrs.data?.asset?._ref;
41
43
  nodeAttrs = node.attrs;
44
+ const nextType = nodeAttrs._type;
45
+ const nextRef = nodeAttrs.data?.asset?._ref;
46
+ // Image views re-fetch their asset on mount, so a blind remount makes the
47
+ // thumbnail flash (or briefly disappear) on every keystroke/selection. Skip
48
+ // the remount when the image is visually unchanged — alt edits don't touch the
49
+ // thumbnail. Other block types still remount so their content stays in sync.
50
+ if (prevType === 'image' && nextType === 'image' && prevRef === nextRef) {
51
+ return true;
52
+ }
42
53
  unmount(currentComponent);
43
54
  currentComponent = mountView();
44
55
  return true;
@@ -1 +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"}
1
+ {"version":3,"file":"svelte-node-view.js","sourceRoot":"","sources":["../../../../../../src/lib/components/admin/fields/richtext/svelte-node-view.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /** A resolved asset's renderable data. */
2
+ export interface ResolvedAsset {
3
+ url: string;
4
+ alt?: string;
5
+ }
6
+ /**
7
+ * Collect every asset `_ref` reachable in a value. Image and file fields, and
8
+ * portable-text image blocks, all carry `{ asset: { _ref } }`, so one generic walk
9
+ * covers them — callers never enumerate field paths by hand.
10
+ */
11
+ export declare function collectAssetRefs(value: unknown, acc?: Set<string>): Set<string>;
12
+ /**
13
+ * Inject resolved `{ url, alt }` onto every `{ asset: { _ref } }` in a value, in place.
14
+ * After this, `image.asset.url` / `image.asset.alt` are populated so the frontend reads
15
+ * them directly. Mutates the value — pass a clone (e.g. `$state.snapshot`) if the input
16
+ * must be preserved. Refs absent from `resolved` are left untouched.
17
+ */
18
+ export declare function injectAssetData(value: unknown, resolved: ReadonlyMap<string, ResolvedAsset>): void;
19
+ //# sourceMappingURL=assets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assets.d.ts","sourceRoot":"","sources":["../../../src/lib/preview/assets.ts"],"names":[],"mappings":"AAYA,0CAA0C;AAC1C,MAAM,WAAW,aAAa;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,CAAC,EAAE,MAAM,CAAC;CACb;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,GAAE,GAAG,CAAC,MAAM,CAAa,GAAG,GAAG,CAAC,MAAM,CAAC,CAW1F;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAC9B,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,aAAa,CAAC,GAC1C,IAAI,CAgBN"}
@@ -0,0 +1,60 @@
1
+ // Asset URL injection — the single source of truth for "make a document's images
2
+ // renderable". Aphex asset URLs aren't derivable from the `_ref` alone, so before a
3
+ // document can be rendered (server-side on a public route, or client-side in the live
4
+ // preview) each `{ asset: { _ref } }` has to be resolved to its URL/alt and have those
5
+ // woven back into the document.
6
+ //
7
+ // This module owns the *walk* (collect refs / inject results). The *resolution* of a
8
+ // ref → { url, alt } differs by environment — the server uses `AssetService`, the editor
9
+ // uses the assets API client — so it's supplied by the caller. Keeping the walk in one
10
+ // place means SSR and live preview produce documents of the exact same shape:
11
+ // `image.asset.url` is always populated, and the frontend never needs a side-channel map.
12
+ /**
13
+ * Collect every asset `_ref` reachable in a value. Image and file fields, and
14
+ * portable-text image blocks, all carry `{ asset: { _ref } }`, so one generic walk
15
+ * covers them — callers never enumerate field paths by hand.
16
+ */
17
+ export function collectAssetRefs(value, acc = new Set()) {
18
+ if (!value || typeof value !== 'object')
19
+ return acc;
20
+ if (Array.isArray(value)) {
21
+ for (const v of value)
22
+ collectAssetRefs(v, acc);
23
+ return acc;
24
+ }
25
+ const obj = value;
26
+ const ref = obj.asset?._ref;
27
+ if (typeof ref === 'string')
28
+ acc.add(ref);
29
+ for (const key in obj)
30
+ collectAssetRefs(obj[key], acc);
31
+ return acc;
32
+ }
33
+ /**
34
+ * Inject resolved `{ url, alt }` onto every `{ asset: { _ref } }` in a value, in place.
35
+ * After this, `image.asset.url` / `image.asset.alt` are populated so the frontend reads
36
+ * them directly. Mutates the value — pass a clone (e.g. `$state.snapshot`) if the input
37
+ * must be preserved. Refs absent from `resolved` are left untouched.
38
+ */
39
+ export function injectAssetData(value, resolved) {
40
+ if (!value || typeof value !== 'object')
41
+ return;
42
+ if (Array.isArray(value)) {
43
+ for (const v of value)
44
+ injectAssetData(v, resolved);
45
+ return;
46
+ }
47
+ const obj = value;
48
+ const asset = obj.asset;
49
+ if (asset && typeof asset === 'object' && typeof asset._ref === 'string') {
50
+ const hit = resolved.get(asset._ref);
51
+ if (hit) {
52
+ asset.url = hit.url;
53
+ if (hit.alt != null)
54
+ asset.alt = hit.alt;
55
+ }
56
+ }
57
+ for (const key in obj)
58
+ injectAssetData(obj[key], resolved);
59
+ }
60
+ //# sourceMappingURL=assets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assets.js","sourceRoot":"","sources":["../../../src/lib/preview/assets.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,oFAAoF;AACpF,sFAAsF;AACtF,uFAAuF;AACvF,gCAAgC;AAChC,EAAE;AACF,qFAAqF;AACrF,yFAAyF;AACzF,uFAAuF;AACvF,8EAA8E;AAC9E,0FAA0F;AAQ1F;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAc,EAAE,MAAmB,IAAI,GAAG,EAAE;IAC5E,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,GAAG,CAAC;IACpD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,KAAK,MAAM,CAAC,IAAI,KAAK;YAAE,gBAAgB,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAChD,OAAO,GAAG,CAAC;IACZ,CAAC;IACD,MAAM,GAAG,GAAG,KAAgC,CAAC;IAC7C,MAAM,GAAG,GAAI,GAAG,CAAC,KAAwC,EAAE,IAAI,CAAC;IAChE,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC1C,KAAK,MAAM,GAAG,IAAI,GAAG;QAAE,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;IACvD,OAAO,GAAG,CAAC;AACZ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAC9B,KAAc,EACd,QAA4C;IAE5C,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO;IAChD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,KAAK,MAAM,CAAC,IAAI,KAAK;YAAE,eAAe,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;QACpD,OAAO;IACR,CAAC;IACD,MAAM,GAAG,GAAG,KAAgC,CAAC;IAC7C,MAAM,KAAK,GAAG,GAAG,CAAC,KAAmE,CAAC;IACtF,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC1E,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,GAAG,EAAE,CAAC;YACT,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC;YACpB,IAAI,GAAG,CAAC,GAAG,IAAI,IAAI;gBAAE,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC;QAC1C,CAAC;IACF,CAAC;IACD,KAAK,MAAM,GAAG,IAAI,GAAG;QAAE,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC;AAC5D,CAAC"}
@@ -0,0 +1,20 @@
1
+ import type { Auth } from '../types/auth.js';
2
+ export type PreviewPerspective = 'draft' | 'published';
3
+ /**
4
+ * Resolve the content perspective for a SvelteKit load function.
5
+ *
6
+ * Returns `'draft'` only when the `?aphex-preview` query param is present
7
+ * AND the request carries a valid authenticated session — so unauthenticated
8
+ * visitors who manually append the param always get published content.
9
+ *
10
+ * @example
11
+ * // +page.server.ts
12
+ * import { getPreviewPerspective } from '@aphexcms/cms-core/server';
13
+ *
14
+ * export const load = async ({ locals, url }) => {
15
+ * const perspective = getPreviewPerspective(locals.auth, url);
16
+ * const post = await api.findOne({ perspective });
17
+ * };
18
+ */
19
+ export declare function getPreviewPerspective(auth: Auth | undefined, url: URL): PreviewPerspective;
20
+ //# sourceMappingURL=perspective.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"perspective.d.ts","sourceRoot":"","sources":["../../../src/lib/preview/perspective.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAE7C,MAAM,MAAM,kBAAkB,GAAG,OAAO,GAAG,WAAW,CAAC;AAEvD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,IAAI,GAAG,SAAS,EAAE,GAAG,EAAE,GAAG,GAAG,kBAAkB,CAG1F"}