@drawnagency/primitives 0.1.106 → 0.1.108
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.
- package/dist/{chunk-QLBHERK6.js → chunk-IPKZ5FU6.js} +74 -24
- package/dist/{chunk-Z7VXESB6.js → chunk-JIQBLG6Y.js} +6 -3
- package/dist/components/sections/Container/Container.d.ts.map +1 -1
- package/dist/components/sections/brand-guide.js +1 -1
- package/dist/components/sections/register-schemas.js +2 -2
- package/dist/components/sections/register.js +2 -2
- package/dist/components/shell/EditorShell.d.ts.map +1 -1
- package/dist/components/shell/MediaLibraryModal.d.ts.map +1 -1
- package/dist/components/shell/SectionTypePicker.d.ts.map +1 -1
- package/dist/hooks/useEditorPublish.d.ts +2 -0
- package/dist/hooks/useEditorPublish.d.ts.map +1 -1
- package/dist/lib/container-ops.d.ts.map +1 -1
- package/dist/lib/dexie.d.ts +25 -8
- package/dist/lib/dexie.d.ts.map +1 -1
- package/dist/lib/dexie.js +19 -17
- package/dist/lib/insert-menu.d.ts +7 -3
- package/dist/lib/insert-menu.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/components/sections/Container/Container.tsx +12 -2
- package/src/components/sections/IconList/IconList.tsx +75 -22
- package/src/components/shell/EditorShell.tsx +68 -30
- package/src/components/shell/MediaLibraryModal.tsx +42 -5
- package/src/components/shell/SectionTypePicker.tsx +28 -2
- package/src/hooks/useEditorPublish.ts +29 -4
- package/src/lib/container-ops.ts +6 -3
- package/src/lib/dexie.ts +62 -28
- package/src/lib/insert-menu.ts +38 -4
|
@@ -410,7 +410,7 @@ import { z as z3 } from "zod";
|
|
|
410
410
|
import { List, Columns2 } from "lucide-react";
|
|
411
411
|
|
|
412
412
|
// src/components/sections/IconList/IconList.tsx
|
|
413
|
-
import { useRef as useRef3, useEffect as useEffect4, useState as useState4, useCallback } from "react";
|
|
413
|
+
import { useRef as useRef3, useEffect as useEffect4, useState as useState4, useCallback, useId } from "react";
|
|
414
414
|
import { Check as Check2, CopyPlus, Pencil, X as X2 } from "lucide-react";
|
|
415
415
|
|
|
416
416
|
// src/components/primitives/IconPicker.tsx
|
|
@@ -670,12 +670,47 @@ function EditIconList({
|
|
|
670
670
|
iconClassName,
|
|
671
671
|
onItemsChange
|
|
672
672
|
}) {
|
|
673
|
-
const
|
|
673
|
+
const listId = useId();
|
|
674
|
+
const { wrappedItems, onReorder, onAdd, onInsertItem, onRemove } = useEditableCollection({
|
|
674
675
|
items,
|
|
675
676
|
onChange: onItemsChange,
|
|
676
677
|
createItem: () => ({ label: "", text: "" })
|
|
677
678
|
});
|
|
678
679
|
const [dragState, setDragState] = useState4({ sourceId: null, targetId: null });
|
|
680
|
+
const cfgRef = useRef3({ listId, onReorder, onRemove, onInsertItem });
|
|
681
|
+
cfgRef.current = { listId, onReorder, onRemove, onInsertItem };
|
|
682
|
+
useEffect4(() => {
|
|
683
|
+
let cleanup;
|
|
684
|
+
let cancelled = false;
|
|
685
|
+
import("./adapter-HH47ZPGM.js").then(({ monitorForElements }) => {
|
|
686
|
+
if (cancelled) return;
|
|
687
|
+
cleanup = monitorForElements({
|
|
688
|
+
onDrop: ({ source, location }) => {
|
|
689
|
+
if (source.data.dragType !== "icon-list-row") return;
|
|
690
|
+
setDragState({ sourceId: null, targetId: null });
|
|
691
|
+
const { listId: my, onReorder: onReorder2, onRemove: onRemove2, onInsertItem: onInsertItem2 } = cfgRef.current;
|
|
692
|
+
const target = location.current.dropTargets[0];
|
|
693
|
+
if (!target) return;
|
|
694
|
+
const srcListId = source.data.listId;
|
|
695
|
+
const dstListId = target.data.listId;
|
|
696
|
+
const fromIndex = source.data.index;
|
|
697
|
+
const targetIndex = target.data.index;
|
|
698
|
+
if (srcListId === my && dstListId === my) {
|
|
699
|
+
const toIndex = target.data.trailing ? targetIndex - 1 : targetIndex;
|
|
700
|
+
if (fromIndex !== toIndex) onReorder2(fromIndex, toIndex);
|
|
701
|
+
} else if (srcListId === my) {
|
|
702
|
+
onRemove2(source.data.id);
|
|
703
|
+
} else if (dstListId === my) {
|
|
704
|
+
onInsertItem2(targetIndex, source.data.item);
|
|
705
|
+
}
|
|
706
|
+
}
|
|
707
|
+
});
|
|
708
|
+
});
|
|
709
|
+
return () => {
|
|
710
|
+
cancelled = true;
|
|
711
|
+
cleanup?.();
|
|
712
|
+
};
|
|
713
|
+
}, []);
|
|
679
714
|
const updateItem = useCallback(
|
|
680
715
|
(index, patch) => {
|
|
681
716
|
const updated = wrappedItems.map(
|
|
@@ -703,6 +738,7 @@ function EditIconList({
|
|
|
703
738
|
EditableRow,
|
|
704
739
|
{
|
|
705
740
|
id: wrapped.id,
|
|
741
|
+
listId,
|
|
706
742
|
index,
|
|
707
743
|
item: wrapped.data,
|
|
708
744
|
defaultIcon,
|
|
@@ -715,7 +751,6 @@ function EditIconList({
|
|
|
715
751
|
iconClassName,
|
|
716
752
|
dragState,
|
|
717
753
|
setDragState,
|
|
718
|
-
onReorder,
|
|
719
754
|
onRemove,
|
|
720
755
|
onUpdateItem: (patch) => updateItem(index, patch),
|
|
721
756
|
onDuplicate: () => duplicateItem(index)
|
|
@@ -725,10 +760,10 @@ function EditIconList({
|
|
|
725
760
|
/* @__PURE__ */ jsx8(
|
|
726
761
|
TrailingDropZone,
|
|
727
762
|
{
|
|
763
|
+
listId,
|
|
728
764
|
index: wrappedItems.length,
|
|
729
765
|
dragState,
|
|
730
|
-
setDragState
|
|
731
|
-
onReorder
|
|
766
|
+
setDragState
|
|
732
767
|
}
|
|
733
768
|
),
|
|
734
769
|
/* @__PURE__ */ jsx8(
|
|
@@ -746,6 +781,7 @@ function EditIconList({
|
|
|
746
781
|
}
|
|
747
782
|
function EditableRow({
|
|
748
783
|
id,
|
|
784
|
+
listId,
|
|
749
785
|
index,
|
|
750
786
|
item,
|
|
751
787
|
defaultIcon,
|
|
@@ -758,13 +794,14 @@ function EditableRow({
|
|
|
758
794
|
iconClassName,
|
|
759
795
|
dragState,
|
|
760
796
|
setDragState,
|
|
761
|
-
onReorder,
|
|
762
797
|
onRemove,
|
|
763
798
|
onUpdateItem,
|
|
764
799
|
onDuplicate
|
|
765
800
|
}) {
|
|
766
801
|
const rowRef = useRef3(null);
|
|
767
802
|
const handleRef = useRef3(null);
|
|
803
|
+
const itemRef = useRef3(item);
|
|
804
|
+
itemRef.current = item;
|
|
768
805
|
const [iconHover, setIconHover] = useState4(false);
|
|
769
806
|
const [pickerOpen, setPickerOpen] = useState4(false);
|
|
770
807
|
const [dodontOpen, setDodontOpen] = useState4(false);
|
|
@@ -782,22 +819,21 @@ function EditableRow({
|
|
|
782
819
|
if (cancelled) return;
|
|
783
820
|
const cleanupDraggable = draggable({
|
|
784
821
|
element: handle,
|
|
785
|
-
|
|
822
|
+
// `item` rides along so a destination list can insert it verbatim —
|
|
823
|
+
// persisted icon-list items have no ids, only positions. Read from a ref
|
|
824
|
+
// so typing in the row doesn't re-register the drag mid-gesture.
|
|
825
|
+
getInitialData: () => ({ dragType: "icon-list-row", listId, id, index, item: itemRef.current }),
|
|
786
826
|
onDragStart: () => setDragState({ sourceId: id, targetId: null }),
|
|
787
827
|
onDrop: () => setDragState({ sourceId: null, targetId: null })
|
|
788
828
|
});
|
|
789
829
|
const cleanupDropTarget = dropTargetForElements({
|
|
790
830
|
element: row,
|
|
791
831
|
canDrop: ({ source }) => source.data.dragType === "icon-list-row",
|
|
792
|
-
getData: () => ({ id, index }),
|
|
832
|
+
getData: () => ({ listId, id, index }),
|
|
793
833
|
onDragEnter: () => setDragState((prev) => ({ ...prev, targetId: id })),
|
|
794
834
|
onDragLeave: () => setDragState(
|
|
795
835
|
(prev) => prev.targetId === id ? { ...prev, targetId: null } : prev
|
|
796
|
-
)
|
|
797
|
-
onDrop: ({ source }) => {
|
|
798
|
-
const fromIndex = source.data.index;
|
|
799
|
-
if (fromIndex !== index) onReorder(fromIndex, index);
|
|
800
|
-
}
|
|
836
|
+
)
|
|
801
837
|
});
|
|
802
838
|
cleanup = () => {
|
|
803
839
|
cleanupDraggable();
|
|
@@ -808,7 +844,7 @@ function EditableRow({
|
|
|
808
844
|
cancelled = true;
|
|
809
845
|
cleanup?.();
|
|
810
846
|
};
|
|
811
|
-
}, [id, index,
|
|
847
|
+
}, [id, index, listId, setDragState]);
|
|
812
848
|
const isDropTarget = dragState.targetId === id && dragState.sourceId !== id;
|
|
813
849
|
const onEditableActivity = (e) => {
|
|
814
850
|
const t = e.target;
|
|
@@ -964,10 +1000,10 @@ function EditableRow({
|
|
|
964
1000
|
);
|
|
965
1001
|
}
|
|
966
1002
|
function TrailingDropZone({
|
|
1003
|
+
listId,
|
|
967
1004
|
index,
|
|
968
1005
|
dragState,
|
|
969
|
-
setDragState
|
|
970
|
-
onReorder
|
|
1006
|
+
setDragState
|
|
971
1007
|
}) {
|
|
972
1008
|
const ref = useRef3(null);
|
|
973
1009
|
const trailingId = "__trailing__";
|
|
@@ -981,23 +1017,19 @@ function TrailingDropZone({
|
|
|
981
1017
|
cleanup = dropTargetForElements({
|
|
982
1018
|
element: el,
|
|
983
1019
|
canDrop: ({ source }) => source.data.dragType === "icon-list-row",
|
|
984
|
-
getData: () => ({ id: trailingId, index }),
|
|
1020
|
+
getData: () => ({ listId, id: trailingId, index, trailing: true }),
|
|
985
1021
|
onDragEnter: () => setDragState((prev) => ({ ...prev, targetId: trailingId })),
|
|
986
1022
|
onDragLeave: () => setDragState(
|
|
987
1023
|
(prev) => prev.targetId === trailingId ? { ...prev, targetId: null } : prev
|
|
988
|
-
)
|
|
989
|
-
onDrop: ({ source }) => {
|
|
990
|
-
const fromIndex = source.data.index;
|
|
991
|
-
if (fromIndex !== index - 1) onReorder(fromIndex, index - 1);
|
|
992
|
-
}
|
|
1024
|
+
)
|
|
993
1025
|
});
|
|
994
1026
|
});
|
|
995
1027
|
return () => {
|
|
996
1028
|
cancelled = true;
|
|
997
1029
|
cleanup?.();
|
|
998
1030
|
};
|
|
999
|
-
}, [index,
|
|
1000
|
-
const isDropTarget = dragState.targetId === trailingId
|
|
1031
|
+
}, [index, listId, setDragState]);
|
|
1032
|
+
const isDropTarget = dragState.targetId === trailingId;
|
|
1001
1033
|
return /* @__PURE__ */ jsx8(
|
|
1002
1034
|
"div",
|
|
1003
1035
|
{
|
|
@@ -1358,6 +1390,24 @@ function DocumentDropZone({ onDocumentSelected, className }) {
|
|
|
1358
1390
|
);
|
|
1359
1391
|
}
|
|
1360
1392
|
|
|
1393
|
+
// src/lib/insert-menu.ts
|
|
1394
|
+
var PRESET_PREFIX = "__preset:";
|
|
1395
|
+
var INSERT_MENU_ORDER = [
|
|
1396
|
+
"container",
|
|
1397
|
+
"link_heading",
|
|
1398
|
+
"sub_heading",
|
|
1399
|
+
"sub_sub_heading",
|
|
1400
|
+
"prose",
|
|
1401
|
+
"media",
|
|
1402
|
+
"video",
|
|
1403
|
+
"button",
|
|
1404
|
+
"colors",
|
|
1405
|
+
"document",
|
|
1406
|
+
"icon_list",
|
|
1407
|
+
`${PRESET_PREFIX}do_dont_list`,
|
|
1408
|
+
"dodont_media"
|
|
1409
|
+
];
|
|
1410
|
+
|
|
1361
1411
|
// src/lib/container-ops.ts
|
|
1362
1412
|
function getContainerChildren(block) {
|
|
1363
1413
|
const content = block.content;
|
|
@@ -9,7 +9,7 @@ import {
|
|
|
9
9
|
stripHtmlToPlainText,
|
|
10
10
|
trimTrailingSpacers,
|
|
11
11
|
truncate
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-IPKZ5FU6.js";
|
|
13
13
|
import {
|
|
14
14
|
DeleteButton,
|
|
15
15
|
DragHandle,
|
|
@@ -483,7 +483,7 @@ import { z as z5 } from "zod";
|
|
|
483
483
|
import { LayoutTemplate } from "lucide-react";
|
|
484
484
|
|
|
485
485
|
// src/components/sections/Container/Container.tsx
|
|
486
|
-
import "react";
|
|
486
|
+
import { useRef as useRef3 } from "react";
|
|
487
487
|
|
|
488
488
|
// src/components/editor/ChildBlockWrapper.tsx
|
|
489
489
|
import { forwardRef } from "react";
|
|
@@ -859,13 +859,16 @@ function Container({ content, isEditMode, onChange, openModal }) {
|
|
|
859
859
|
content: content.content
|
|
860
860
|
};
|
|
861
861
|
const emit = (nextSection) => onChange?.({ ...content, content: nextSection.content });
|
|
862
|
+
const pendingChildren = useRef3(children);
|
|
863
|
+
pendingChildren.current = children;
|
|
862
864
|
const updateChild = (index, childContent) => {
|
|
863
|
-
const next =
|
|
865
|
+
const next = pendingChildren.current.map((c, i) => {
|
|
864
866
|
if (i !== index) return c;
|
|
865
867
|
const merged = { ...childContent, id: c.id ?? newId() };
|
|
866
868
|
if (c.layout !== void 0) merged.layout = c.layout;
|
|
867
869
|
return merged;
|
|
868
870
|
});
|
|
871
|
+
pendingChildren.current = next;
|
|
869
872
|
onChange?.({ ...content, content: { ...content.content, children: next } });
|
|
870
873
|
};
|
|
871
874
|
const gridClass = cn(
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Container.d.ts","sourceRoot":"","sources":["../../../../src/components/sections/Container/Container.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAc,KAAK,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAcnE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AA4GzD,UAAU,gBAAgB;IACxB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC,QAAQ,EAAE,OAAO,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE;QAAE,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,gBAAgB,CAAA;KAAE,CAAC;IACpD,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACtC,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAwFD,wBAAgB,SAAS,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"Container.d.ts","sourceRoot":"","sources":["../../../../src/components/sections/Container/Container.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAc,KAAK,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAcnE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AA4GzD,UAAU,gBAAgB;IACxB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC,QAAQ,EAAE,OAAO,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE;QAAE,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,gBAAgB,CAAA;KAAE,CAAC;IACpD,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACtC,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAwFD,wBAAgB,SAAS,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,cAAc,kDAwSrF"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
allSectionDefs
|
|
3
|
-
} from "../../chunk-
|
|
4
|
-
import "../../chunk-
|
|
3
|
+
} from "../../chunk-JIQBLG6Y.js";
|
|
4
|
+
import "../../chunk-IPKZ5FU6.js";
|
|
5
5
|
import "../../chunk-ZHHJVKU7.js";
|
|
6
6
|
import "../../chunk-5THS4K5D.js";
|
|
7
7
|
import "../../chunk-LUAI5DWR.js";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
allSectionDefs
|
|
3
|
-
} from "../../chunk-
|
|
4
|
-
import "../../chunk-
|
|
3
|
+
} from "../../chunk-JIQBLG6Y.js";
|
|
4
|
+
import "../../chunk-IPKZ5FU6.js";
|
|
5
5
|
import "../../chunk-ZHHJVKU7.js";
|
|
6
6
|
import "../../chunk-5THS4K5D.js";
|
|
7
7
|
import "../../chunk-LUAI5DWR.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EditorShell.d.ts","sourceRoot":"","sources":["../../../src/components/shell/EditorShell.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAejD,OAAO,EAAoC,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"EditorShell.d.ts","sourceRoot":"","sources":["../../../src/components/shell/EditorShell.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAejD,OAAO,EAAoC,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAuDtF,OAAO,KAAK,EAAE,eAAe,EAA2D,MAAM,oBAAoB,CAAC;AA+CnH,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AA2BxD,UAAU,KAAK;IACb,OAAO,EAAE,MAAM,CAAC;IAIhB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,YAAY,EAAE;QACZ,KAAK,EAAE,OAAO,CAAC;QACf,aAAa,EAAE,OAAO,CAAC;QACvB,YAAY,EAAE,OAAO,CAAC;QACtB,cAAc,EAAE,OAAO,CAAC;QACxB,kBAAkB,EAAE,OAAO,CAAC;QAC5B,cAAc,EAAE,OAAO,CAAC;KACzB,CAAC;IACF,WAAW,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,OAAO,GAAG,QAAQ,CAAA;KAAE,GAAG,IAAI,CAAC;IAIhE,sBAAsB,CAAC,EAAE,OAAO,CAAC;IAKjC,eAAe,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;CAC1C;AAED,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,EAClC,OAAO,EACP,YAAY,EACZ,MAAM,EACN,SAAS,EAAE,gBAAgB,EAC3B,YAAY,EACZ,WAAW,EACX,sBAA8B,EAC9B,eAAe,GAChB,EAAE,KAAK,2CA2+DP;AAwED;6EAC6E;AAC7E,wBAAgB,kBAAkB,CAChC,YAAY,EAAE,WAAW,CAAC,YAAY,CAAC,EACvC,aAAa,EAAE,MAAM,GAAG,IAAI,EAC5B,eAAe,EAAE,MAAM,GAAG,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAK/B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MediaLibraryModal.d.ts","sourceRoot":"","sources":["../../../src/components/shell/MediaLibraryModal.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAchE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEzD;+EAC+E;AAC/E,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,KAAK,GAAG,MAAM,CAAC;CACtB;AAOD,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC1B,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,yEAAyE;IACzE,SAAS,CAAC,EAAE,mBAAmB,EAAE,CAAC;IAClC,4EAA4E;IAC5E,KAAK,CAAC,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC;IACnC,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAClE,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAClC;;oBAEgB;IAChB,iBAAiB,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAC3C,WAAW,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAChD,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C;gCAC4B;IAC5B,yBAAyB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnD,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAIxC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,oBAAoB,CAAC,EAAE,MAAM,IAAI,CAAC;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACtC,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,KAAK,MAAM,CAAC;IACnE,cAAc,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACpD,YAAY,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAC7D,cAAc,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ,KAAK,IAAI,CAAC;IACnE,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAC/D,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE;QAAE,IAAI,EAAE,IAAI,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,EAAE,EAAE,eAAe,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAC3G,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,qBAAqB,CAAC,EAAE,MAAM,IAAI,CAAC;CACpC;AA4MD,wBAAgB,iBAAiB,CAAC,EAChC,IAAI,EACJ,KAAK,EACL,SAAc,EACd,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,iBAAiB,EACjB,WAAW,EACX,iBAAiB,EACjB,yBAA8B,EAC9B,WAAgB,EAChB,WAAW,EACX,cAAmB,EACnB,WAAkB,EAClB,oBAAoB,EACpB,OAAY,EACZ,cAAc,EACd,cAAc,EACd,YAAY,EACZ,cAAc,EACd,WAAW,EACX,cAAc,EACd,YAAmB,EACnB,qBAAqB,GACtB,EAAE,sBAAsB,
|
|
1
|
+
{"version":3,"file":"MediaLibraryModal.d.ts","sourceRoot":"","sources":["../../../src/components/shell/MediaLibraryModal.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAchE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEzD;+EAC+E;AAC/E,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,KAAK,GAAG,MAAM,CAAC;CACtB;AAOD,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC1B,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,yEAAyE;IACzE,SAAS,CAAC,EAAE,mBAAmB,EAAE,CAAC;IAClC,4EAA4E;IAC5E,KAAK,CAAC,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC;IACnC,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAClE,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAClC;;oBAEgB;IAChB,iBAAiB,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAC3C,WAAW,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAChD,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C;gCAC4B;IAC5B,yBAAyB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnD,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAIxC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,oBAAoB,CAAC,EAAE,MAAM,IAAI,CAAC;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACtC,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,KAAK,MAAM,CAAC;IACnE,cAAc,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACpD,YAAY,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAC7D,cAAc,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ,KAAK,IAAI,CAAC;IACnE,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAC/D,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE;QAAE,IAAI,EAAE,IAAI,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,EAAE,EAAE,eAAe,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAC3G,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,qBAAqB,CAAC,EAAE,MAAM,IAAI,CAAC;CACpC;AA4MD,wBAAgB,iBAAiB,CAAC,EAChC,IAAI,EACJ,KAAK,EACL,SAAc,EACd,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,iBAAiB,EACjB,WAAW,EACX,iBAAiB,EACjB,yBAA8B,EAC9B,WAAgB,EAChB,WAAW,EACX,cAAmB,EACnB,WAAkB,EAClB,oBAAoB,EACpB,OAAY,EACZ,cAAc,EACd,cAAc,EACd,YAAY,EACZ,cAAc,EACd,WAAW,EACX,cAAc,EACd,YAAmB,EACnB,qBAAqB,GACtB,EAAE,sBAAsB,2CA0rBxB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SectionTypePicker.d.ts","sourceRoot":"","sources":["../../../src/components/shell/SectionTypePicker.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAE1E,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB;AAED,UAAU,sBAAsB;IAC9B,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,YAAY,CAAC,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;CAC9C;
|
|
1
|
+
{"version":3,"file":"SectionTypePicker.d.ts","sourceRoot":"","sources":["../../../src/components/shell/SectionTypePicker.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAE1E,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB;AAED,UAAU,sBAAsB;IAC9B,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,YAAY,CAAC,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;CAC9C;AAKD,wBAAgB,iBAAiB,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE,sBAAsB,2CA0DnG"}
|
|
@@ -52,6 +52,8 @@ interface PublishDeps {
|
|
|
52
52
|
sections: LoadedSection[];
|
|
53
53
|
index: SiteIndex;
|
|
54
54
|
savedIds: string[];
|
|
55
|
+
mediaManifest: MediaManifest;
|
|
56
|
+
documentManifest: DocumentManifest;
|
|
55
57
|
}) => Promise<void>;
|
|
56
58
|
/** Injected by EditorShell. Receives non-fatal server warnings from a
|
|
57
59
|
* successful save (e.g. the nav.json replacement was declined by the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useEditorPublish.d.ts","sourceRoot":"","sources":["../../src/hooks/useEditorPublish.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAG/D,OAAO,KAAK,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAgDpF,UAAU,WAAW;IACnB,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,kBAAkB,EAAE,MAAM,IAAI,CAAC;IAC/B,aAAa,EAAE,MAAM,OAAO,CAAC;IAC7B,gBAAgB,EAAE,MAAM,IAAI,CAAC;IAC7B,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IACzC,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;IAC9B,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B;;;;;;mFAM+E;IAC/E,SAAS,EAAE,CAAC,eAAe,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,EAAE,CAAA;KAAE,KAAK,IAAI,CAAC;IACtG,aAAa,EAAE,aAAa,CAAC;IAC7B;;2EAEuE;IACvE,gBAAgB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;IAClD,aAAa,EAAE,OAAO,CAAC;IACvB,kBAAkB,EAAE,MAAM,IAAI,CAAC;IAC/B,iBAAiB,EAAE,SAAS,EAAE,CAAC;IAC/B,qBAAqB,EAAE,MAAM,EAAE,CAAC;IAChC,gBAAgB,EAAE,CAAC,cAAc,EAAE,SAAS,EAAE,EAAE,kBAAkB,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACtF,aAAa,EAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACzE,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAC;IAI/B,cAAc,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IACpC;;;;qDAIiD;IACjD,eAAe,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IACzC;;;;;sDAKkD;IAClD,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,aAAa,EAAE,CAAC;QAAC,KAAK,EAAE,SAAS,CAAC;QAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"useEditorPublish.d.ts","sourceRoot":"","sources":["../../src/hooks/useEditorPublish.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"container-ops.d.ts","sourceRoot":"","sources":["../../src/lib/container-ops.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"container-ops.d.ts","sourceRoot":"","sources":["../../src/lib/container-ops.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAYnD,qEAAqE;AACrE,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,EAAE,CAG9D;AAWD,wBAAgB,YAAY,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAOlF;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,IAAI;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,SAAS,CAAA;CAAE,EAAE,CAMzF;AAED,wBAAgB,aAAa,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAMxF;AAED,wBAAgB,aAAa,CAC3B,SAAS,EAAE,OAAO,EAClB,KAAK,EAAE,MAAM,GACZ;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAA;CAAE,CAMjD;AAED,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,OAAO,EAClB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,MAAM,GAClB,OAAO,CAOT;AAED,0FAA0F;AAC1F,wBAAgB,eAAe,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAaxF;AAOD,8CAA8C;AAC9C,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAEhD;AAED,uCAAuC;AACvC,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,MAAM,GAAG,OAAO,CAEvD;AAED,iGAAiG;AACjG,wBAAgB,eAAe,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAE5E;AAED,8FAA8F;AAC9F,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,OAAO,GAAG,OAAO,CAM/D;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,OAAO,EAClB,KAAK,EAAE,OAAO,EACd,CAAC,EAAE,MAAM,EACT,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,MAAM,GAClB,OAAO,CAiBT"}
|
package/dist/lib/dexie.d.ts
CHANGED
|
@@ -65,11 +65,24 @@ export declare function getBranchShas(): Promise<{
|
|
|
65
65
|
mainSha: string | null;
|
|
66
66
|
} | null>;
|
|
67
67
|
export declare function getDeletedSections(): Promise<string[]>;
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
68
|
+
/**
|
|
69
|
+
* Write the content snapshot for one commit.
|
|
70
|
+
*
|
|
71
|
+
* `manifests` is REQUIRED, and that is the whole point: both sidecars belong to
|
|
72
|
+
* this sha, so every writer that advances the row must restate them. They used to
|
|
73
|
+
* be optional (the media one lived in a separate store entirely), and every
|
|
74
|
+
* save/publish that re-primed this row left them behind at an older sha — a later
|
|
75
|
+
* cache hit then served pre-upload media ("No Image" on images the published site
|
|
76
|
+
* rendered fine) and an empty document manifest ("File missing" on committed
|
|
77
|
+
* documents). Passing them positionally makes forgetting a compile error.
|
|
78
|
+
*/
|
|
79
|
+
export declare function cacheContent(sha: string, sections: LoadedSection[], index: SiteIndex, siteConfig: Record<string, unknown>, manifests: {
|
|
80
|
+
media: MediaManifest;
|
|
81
|
+
documents: DocumentManifest;
|
|
82
|
+
}, diff?: {
|
|
83
|
+
savedBranchSha?: string | null;
|
|
84
|
+
changedSectionIds?: string[];
|
|
85
|
+
mainIndex?: SiteIndex | null;
|
|
73
86
|
}): Promise<void>;
|
|
74
87
|
export declare function getCachedContent(): Promise<{
|
|
75
88
|
sha: string;
|
|
@@ -79,14 +92,18 @@ export declare function getCachedContent(): Promise<{
|
|
|
79
92
|
savedBranchSha: string | null;
|
|
80
93
|
changedSectionIds: string[];
|
|
81
94
|
mainIndex: SiteIndex | null;
|
|
82
|
-
|
|
95
|
+
/** Both are null ONLY for a row written before the sidecars moved onto it.
|
|
96
|
+
* Callers must treat null as an unusable cache and re-fetch — substituting an
|
|
97
|
+
* empty manifest would blank every image ("No Image") or every committed
|
|
98
|
+
* document ("File missing") on the page. An EMPTY manifest is a legitimate
|
|
99
|
+
* value and is not null. */
|
|
100
|
+
mediaManifest: MediaManifest | null;
|
|
101
|
+
documentManifest: DocumentManifest | null;
|
|
83
102
|
} | null>;
|
|
84
103
|
/** Invalidate only the cached content snapshot (e.g. after a publish removes the
|
|
85
104
|
* draft), forcing the next editor load to refetch rather than serve stale diff
|
|
86
105
|
* state. Narrower than discardSavedChanges, which also clears index/meta/config. */
|
|
87
106
|
export declare function clearContentCache(): Promise<void>;
|
|
88
|
-
export declare function persistMediaManifest(manifest: MediaManifest): Promise<void>;
|
|
89
|
-
export declare function getMediaManifest(): Promise<MediaManifest | null>;
|
|
90
107
|
export declare function addPendingMediaItem(item: MediaItem, localUrls?: Record<string, string>, blobs?: Record<string, Blob>): Promise<void>;
|
|
91
108
|
export declare function getPendingMediaItems(): Promise<MediaItem[]>;
|
|
92
109
|
export declare function getPendingMediaLocalUrls(id: string): Promise<Record<string, string> | null>;
|
package/dist/lib/dexie.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dexie.d.ts","sourceRoot":"","sources":["../../src/lib/dexie.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,SAAS,EAAe,UAAU,EAAQ,MAAM,wBAAwB,CAAC;AAEvF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC/D,OAAO,KAAK,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"dexie.d.ts","sourceRoot":"","sources":["../../src/lib/dexie.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/dexie.js
CHANGED
|
@@ -8,7 +8,6 @@ var EditorDatabase = class extends Dexie {
|
|
|
8
8
|
meta;
|
|
9
9
|
siteConfig;
|
|
10
10
|
contentCache;
|
|
11
|
-
mediaManifest;
|
|
12
11
|
pendingMedia;
|
|
13
12
|
pendingMediaDeletions;
|
|
14
13
|
preservedEdits;
|
|
@@ -114,6 +113,20 @@ var EditorDatabase = class extends Dexie {
|
|
|
114
113
|
preservedEdits: "id, sectionId",
|
|
115
114
|
pendingDocuments: "id"
|
|
116
115
|
});
|
|
116
|
+
this.version(11).stores({
|
|
117
|
+
sections: "sectionId",
|
|
118
|
+
siteIndex: "key",
|
|
119
|
+
meta: "key",
|
|
120
|
+
siteConfig: "key",
|
|
121
|
+
contentCache: "key",
|
|
122
|
+
mediaManifest: null,
|
|
123
|
+
pendingMedia: "id",
|
|
124
|
+
pendingMediaDeletions: "id",
|
|
125
|
+
preservedEdits: "id, sectionId",
|
|
126
|
+
pendingDocuments: "id"
|
|
127
|
+
}).upgrade(async (tx) => {
|
|
128
|
+
await tx.table("contentCache").clear();
|
|
129
|
+
});
|
|
117
130
|
}
|
|
118
131
|
};
|
|
119
132
|
var db = null;
|
|
@@ -310,7 +323,7 @@ async function getDeletedSections() {
|
|
|
310
323
|
const row = await getDb().siteIndex.get("current");
|
|
311
324
|
return row?.deletedSections ?? [];
|
|
312
325
|
}
|
|
313
|
-
async function cacheContent(sha, sections, index, siteConfig, diff) {
|
|
326
|
+
async function cacheContent(sha, sections, index, siteConfig, manifests, diff) {
|
|
314
327
|
const now = (/* @__PURE__ */ new Date()).toISOString();
|
|
315
328
|
await getDb().contentCache.put({
|
|
316
329
|
key: "current",
|
|
@@ -322,7 +335,8 @@ async function cacheContent(sha, sections, index, siteConfig, diff) {
|
|
|
322
335
|
savedBranchSha: diff?.savedBranchSha ?? null,
|
|
323
336
|
changedSectionIds: diff?.changedSectionIds ?? [],
|
|
324
337
|
mainIndex: diff?.mainIndex ?? null,
|
|
325
|
-
|
|
338
|
+
mediaManifest: manifests.media,
|
|
339
|
+
documentManifest: manifests.documents
|
|
326
340
|
});
|
|
327
341
|
}
|
|
328
342
|
async function getCachedContent() {
|
|
@@ -338,23 +352,13 @@ async function getCachedContent() {
|
|
|
338
352
|
// No stored mainIndex (e.g. legacy or post-publish cache) means "no draft",
|
|
339
353
|
// so the published index equals the current index.
|
|
340
354
|
mainIndex: row.mainIndex ?? row.index,
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
// heals on the next fresh load or save.
|
|
344
|
-
documentManifest: row.documentManifest ?? {}
|
|
355
|
+
mediaManifest: row.mediaManifest ?? null,
|
|
356
|
+
documentManifest: row.documentManifest ?? null
|
|
345
357
|
};
|
|
346
358
|
}
|
|
347
359
|
async function clearContentCache() {
|
|
348
360
|
await getDb().contentCache.clear();
|
|
349
361
|
}
|
|
350
|
-
async function persistMediaManifest(manifest) {
|
|
351
|
-
const now = (/* @__PURE__ */ new Date()).toISOString();
|
|
352
|
-
await getDb().mediaManifest.put({ key: "current", manifest, updatedAt: now });
|
|
353
|
-
}
|
|
354
|
-
async function getMediaManifest() {
|
|
355
|
-
const row = await getDb().mediaManifest.get("current");
|
|
356
|
-
return row?.manifest ?? null;
|
|
357
|
-
}
|
|
358
362
|
async function addPendingMediaItem(item, localUrls = {}, blobs = {}) {
|
|
359
363
|
const now = (/* @__PURE__ */ new Date()).toISOString();
|
|
360
364
|
await getDb().pendingMedia.put({ id: item.id, item, localUrls, blobs, updatedAt: now });
|
|
@@ -444,7 +448,6 @@ export {
|
|
|
444
448
|
getDeletedSections,
|
|
445
449
|
getDirtySectionRows,
|
|
446
450
|
getDirtySections,
|
|
447
|
-
getMediaManifest,
|
|
448
451
|
getPendingDocumentBlob,
|
|
449
452
|
getPendingDocuments,
|
|
450
453
|
getPendingMediaBlobs,
|
|
@@ -456,7 +459,6 @@ export {
|
|
|
456
459
|
listPreservedEdits,
|
|
457
460
|
markPendingMediaDeleted,
|
|
458
461
|
persistAll,
|
|
459
|
-
persistMediaManifest,
|
|
460
462
|
persistSiteConfig,
|
|
461
463
|
persistSiteIndex,
|
|
462
464
|
preserveEdit,
|
|
@@ -9,9 +9,13 @@ export interface InsertMenuOption {
|
|
|
9
9
|
label: string;
|
|
10
10
|
icon?: ReactNode;
|
|
11
11
|
}
|
|
12
|
-
/**
|
|
13
|
-
* sections
|
|
14
|
-
|
|
12
|
+
/** Sort insert-menu entries into `INSERT_MENU_ORDER`, with unlisted entries
|
|
13
|
+
* (custom sections) alphabetical by label at the end. Pure; returns a copy. */
|
|
14
|
+
export declare function sortInsertMenuOptions<T extends InsertMenuOption>(options: T[]): T[];
|
|
15
|
+
/** Every non-spacer section type, plus presets contributed by registered
|
|
16
|
+
* sections, in `INSERT_MENU_ORDER`. Presets appear only when their owning
|
|
17
|
+
* section is registered, so a core-only build (no brand-guide sections) shows
|
|
18
|
+
* no brand-guide presets. */
|
|
15
19
|
export declare function buildInsertMenuOptions(sections: SectionDefinition[]): InsertMenuOption[];
|
|
16
20
|
/** Resolve an Add-menu selection to ready-to-insert content. `newId` mints ids for
|
|
17
21
|
* any nested children a preset creates. Returns null for an unknown type/preset. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"insert-menu.d.ts","sourceRoot":"","sources":["../../src/lib/insert-menu.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D,wEAAwE;AACxE,eAAO,MAAM,aAAa,cAAc,CAAC;AAEzC,8EAA8E;AAC9E,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB;AAED
|
|
1
|
+
{"version":3,"file":"insert-menu.d.ts","sourceRoot":"","sources":["../../src/lib/insert-menu.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D,wEAAwE;AACxE,eAAO,MAAM,aAAa,cAAc,CAAC;AAEzC,8EAA8E;AAC9E,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB;AAsBD;gFACgF;AAChF,wBAAgB,qBAAqB,CAAC,CAAC,SAAS,gBAAgB,EAAE,OAAO,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CASnF;AAED;;;8BAG8B;AAC9B,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,iBAAiB,EAAE,GAAG,gBAAgB,EAAE,CAQxF;AAED;qFACqF;AACrF,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,iBAAiB,EAAE,EAC7B,KAAK,EAAE,MAAM,MAAM,GAClB,cAAc,GAAG,IAAI,CAQvB"}
|
package/package.json
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type ComponentType, type ReactNode } from "react";
|
|
1
|
+
import { useRef, type ComponentType, type ReactNode } from "react";
|
|
2
2
|
import type { Edge } from "@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge";
|
|
3
3
|
import { getSection, type OpenModal } from "../../../lib/registry";
|
|
4
4
|
import { cn } from "../../../lib/cn";
|
|
@@ -243,13 +243,23 @@ export function Container({ content, isEditMode, onChange, openModal }: Containe
|
|
|
243
243
|
// the existing child — an id-less child fails save validation for the whole
|
|
244
244
|
// container. Minting when the existing child has no id self-heals drafts saved
|
|
245
245
|
// by the pre-fix path.
|
|
246
|
+
// Folded onto a ref rather than straight onto `children` so that TWO children
|
|
247
|
+
// updating in the same tick compose instead of the second clobbering the
|
|
248
|
+
// first. That happens for real: dragging an icon-list row between two lists in
|
|
249
|
+
// one container removes from one child and inserts into the other, and both
|
|
250
|
+
// emits carry the whole container's content. Re-seeded from props each render,
|
|
251
|
+
// so a committed update is always the base for the next tick.
|
|
252
|
+
const pendingChildren = useRef(children);
|
|
253
|
+
pendingChildren.current = children;
|
|
254
|
+
|
|
246
255
|
const updateChild = (index: number, childContent: unknown) => {
|
|
247
|
-
const next =
|
|
256
|
+
const next = pendingChildren.current.map((c, i) => {
|
|
248
257
|
if (i !== index) return c;
|
|
249
258
|
const merged = { ...(childContent as Section), id: c.id ?? newId() };
|
|
250
259
|
if (c.layout !== undefined) merged.layout = c.layout;
|
|
251
260
|
return merged;
|
|
252
261
|
});
|
|
262
|
+
pendingChildren.current = next;
|
|
253
263
|
onChange?.({ ...content, content: { ...content.content, children: next } });
|
|
254
264
|
};
|
|
255
265
|
|