@drawnagency/primitives 0.1.97 → 0.1.98

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 (44) hide show
  1. package/dist/{chunk-F2337B35.js → chunk-26ALJO4K.js} +1 -1
  2. package/dist/{chunk-S4L3ZFKM.js → chunk-3COSXTOY.js} +1 -1
  3. package/dist/{chunk-RHWWQV3J.js → chunk-BGHWUJFV.js} +1 -0
  4. package/dist/{chunk-YDXBJR74.js → chunk-EWNDBKYK.js} +1 -1
  5. package/dist/{chunk-XYCCXKVC.js → chunk-FOY5TF7D.js} +1 -1
  6. package/dist/{chunk-II3X7GLJ.js → chunk-GYCBWGVW.js} +1 -1
  7. package/dist/{chunk-FOEZNEF5.js → chunk-HKHEAH5F.js} +6 -6
  8. package/dist/{chunk-5BFPJWIO.js → chunk-KP4DWTPR.js} +3 -3
  9. package/dist/{chunk-KPP2CFW6.js → chunk-MUTHF2GT.js} +2 -2
  10. package/dist/{chunk-QEHPGA5N.js → chunk-NA5EJM6Z.js} +1 -1
  11. package/dist/chunk-TGNS7D4F.js +200 -0
  12. package/dist/collab/rebase.js +1 -1
  13. package/dist/components/editor/index.js +5 -5
  14. package/dist/components/primitives/index.js +6 -6
  15. package/dist/components/sections/brand-guide.js +6 -6
  16. package/dist/components/sections/register-schemas.js +9 -9
  17. package/dist/components/sections/register.js +9 -9
  18. package/dist/components/shell/EditorShell.d.ts.map +1 -1
  19. package/dist/hooks/useEditorPersistence.d.ts +7 -0
  20. package/dist/hooks/useEditorPersistence.d.ts.map +1 -1
  21. package/dist/index.js +12 -10
  22. package/dist/lib/dexie.d.ts.map +1 -1
  23. package/dist/lib/dexie.js +6 -1
  24. package/dist/lib/index-ops.d.ts +138 -2
  25. package/dist/lib/index-ops.d.ts.map +1 -1
  26. package/dist/lib/index-ops.js +176 -8
  27. package/dist/lib/index.js +4 -4
  28. package/dist/media/index.js +3 -3
  29. package/dist/media/provider.d.ts +0 -1
  30. package/dist/media/provider.d.ts.map +1 -1
  31. package/dist/schemas/index.js +4 -2
  32. package/dist/schemas/site-config.d.ts +1 -0
  33. package/dist/schemas/site-config.d.ts.map +1 -1
  34. package/dist/types/database.d.ts +0 -3
  35. package/dist/types/database.d.ts.map +1 -1
  36. package/package.json +1 -1
  37. package/src/components/shell/EditorShell.tsx +27 -8
  38. package/src/hooks/useEditorPersistence.ts +14 -0
  39. package/src/lib/dexie.ts +6 -1
  40. package/src/lib/index-ops.ts +261 -7
  41. package/src/media/provider.ts +0 -1
  42. package/src/schemas/site-config.ts +3 -1
  43. package/src/types/database.ts +0 -3
  44. package/dist/chunk-ZD6XGRQM.js +0 -85
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getMediaProvider
3
- } from "./chunk-S4L3ZFKM.js";
3
+ } from "./chunk-3COSXTOY.js";
4
4
  import {
5
5
  cn
6
6
  } from "./chunk-7EOSDFS3.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  slugifyPageSlug
3
- } from "./chunk-ZD6XGRQM.js";
3
+ } from "./chunk-TGNS7D4F.js";
4
4
 
5
5
  // src/media/utils.ts
6
6
  async function hashFileBuffer(buffer) {
@@ -364,6 +364,7 @@ export {
364
364
  RESERVED_SLUGS,
365
365
  PageStatusSchema,
366
366
  PageSchema,
367
+ SLUG_RE,
367
368
  IndexSchema,
368
369
  normalizeSiteIndex,
369
370
  ChatbotTaskSchema,
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  EditablePlainText
3
- } from "./chunk-KPP2CFW6.js";
3
+ } from "./chunk-MUTHF2GT.js";
4
4
  import {
5
5
  Button,
6
6
  usePages
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  HexColorSchema
3
- } from "./chunk-RHWWQV3J.js";
3
+ } from "./chunk-BGHWUJFV.js";
4
4
 
5
5
  // src/schemas/audience.ts
6
6
  import { z } from "zod";
@@ -14,7 +14,7 @@ import {
14
14
  SettingsIcon,
15
15
  useMediaLibrary,
16
16
  useResolvedMedia
17
- } from "./chunk-F2337B35.js";
17
+ } from "./chunk-26ALJO4K.js";
18
18
  import {
19
19
  cn
20
20
  } from "./chunk-7EOSDFS3.js";
@@ -3,7 +3,7 @@ import {
3
3
  pluralize,
4
4
  stripHtmlToPlainText,
5
5
  truncate
6
- } from "./chunk-5BFPJWIO.js";
6
+ } from "./chunk-KP4DWTPR.js";
7
7
  import {
8
8
  DeleteButton,
9
9
  DragHandle,
@@ -17,11 +17,11 @@ import {
17
17
  buildBlockDropData,
18
18
  canDropBlock,
19
19
  isBlockDragData
20
- } from "./chunk-II3X7GLJ.js";
20
+ } from "./chunk-GYCBWGVW.js";
21
21
  import {
22
22
  EditableRichText,
23
23
  defineHeadingSection
24
- } from "./chunk-YDXBJR74.js";
24
+ } from "./chunk-EWNDBKYK.js";
25
25
  import {
26
26
  EditablePlainText,
27
27
  ImageDropZone,
@@ -31,11 +31,11 @@ import {
31
31
  containerGridClass,
32
32
  masonryColumnsClass,
33
33
  spacerHiddenClass
34
- } from "./chunk-KPP2CFW6.js";
34
+ } from "./chunk-MUTHF2GT.js";
35
35
  import {
36
36
  useMediaLibrary,
37
37
  useResolvedMedia
38
- } from "./chunk-F2337B35.js";
38
+ } from "./chunk-26ALJO4K.js";
39
39
  import {
40
40
  embedUrl
41
41
  } from "./chunk-Y4JQGO6G.js";
@@ -58,7 +58,7 @@ import {
58
58
  } from "./chunk-VKAGMEKE.js";
59
59
  import {
60
60
  SingleMediaReferenceSchema
61
- } from "./chunk-RHWWQV3J.js";
61
+ } from "./chunk-BGHWUJFV.js";
62
62
 
63
63
  // src/components/sections/LinkHeading/index.tsx
64
64
  import { Heading1 } from "lucide-react";
@@ -9,13 +9,13 @@ import {
9
9
  MediaBlock,
10
10
  containerGridClass,
11
11
  useEditableCollection
12
- } from "./chunk-KPP2CFW6.js";
12
+ } from "./chunk-MUTHF2GT.js";
13
13
  import {
14
14
  AddIcon,
15
15
  DeleteIcon,
16
16
  DragHandle,
17
17
  IconButton
18
- } from "./chunk-F2337B35.js";
18
+ } from "./chunk-26ALJO4K.js";
19
19
  import {
20
20
  DEFAULT_LINK,
21
21
  LinkValueSchema
@@ -33,7 +33,7 @@ import {
33
33
  import {
34
34
  HexColorSchema,
35
35
  SingleMediaReferenceSchema
36
- } from "./chunk-RHWWQV3J.js";
36
+ } from "./chunk-BGHWUJFV.js";
37
37
 
38
38
  // src/components/sections/Colors/index.tsx
39
39
  import { z as z2 } from "zod";
@@ -6,10 +6,10 @@ import {
6
6
  SettingsIcon,
7
7
  useMediaLibrary,
8
8
  useResolvedMedia
9
- } from "./chunk-F2337B35.js";
9
+ } from "./chunk-26ALJO4K.js";
10
10
  import {
11
11
  rebindImageRef
12
- } from "./chunk-S4L3ZFKM.js";
12
+ } from "./chunk-3COSXTOY.js";
13
13
  import {
14
14
  cn
15
15
  } from "./chunk-7EOSDFS3.js";
@@ -15,7 +15,7 @@ import {
15
15
  } from "./chunk-VKAGMEKE.js";
16
16
  import {
17
17
  IndexSchema
18
- } from "./chunk-RHWWQV3J.js";
18
+ } from "./chunk-BGHWUJFV.js";
19
19
  import {
20
20
  MAX_BLOCK_DEPTH,
21
21
  blockDepth
@@ -0,0 +1,200 @@
1
+ import {
2
+ RESERVED_SLUGS
3
+ } from "./chunk-BGHWUJFV.js";
4
+
5
+ // src/lib/nav-tree.ts
6
+ function reconcileNav(entries, pages) {
7
+ const entryList = Array.isArray(entries) ? entries : [];
8
+ const pageList = Array.isArray(pages) ? pages : [];
9
+ const validIds = /* @__PURE__ */ new Set();
10
+ for (const p of pageList) {
11
+ if (p?.id) validIds.add(p.id);
12
+ }
13
+ const placed = /* @__PURE__ */ new Set();
14
+ const seenGroupIds = /* @__PURE__ */ new Set();
15
+ const result = [];
16
+ for (const entry of entryList) {
17
+ if (entry?.kind === "page") {
18
+ if (!validIds.has(entry.pageId) || placed.has(entry.pageId)) continue;
19
+ placed.add(entry.pageId);
20
+ result.push({ ...entry });
21
+ continue;
22
+ }
23
+ if (entry?.kind !== "group") continue;
24
+ if (seenGroupIds.has(entry.id)) continue;
25
+ seenGroupIds.add(entry.id);
26
+ const claimed = Array.isArray(entry.pageIds) ? entry.pageIds : [];
27
+ const pageIds = claimed.filter((id) => {
28
+ if (!validIds.has(id) || placed.has(id)) return false;
29
+ placed.add(id);
30
+ return true;
31
+ });
32
+ const group = { ...entry, pageIds };
33
+ result.push(group);
34
+ }
35
+ for (const p of pageList) {
36
+ if (!p?.id || placed.has(p.id)) continue;
37
+ placed.add(p.id);
38
+ result.push({ kind: "page", pageId: p.id });
39
+ }
40
+ return result;
41
+ }
42
+ function navEntries(index) {
43
+ return reconcileNav(index.nav ?? [], index.pages);
44
+ }
45
+ function pagesInNavOrder(index) {
46
+ const byId = new Map(index.pages.map((p) => [p.id, p]));
47
+ const out = [];
48
+ for (const entry of navEntries(index)) {
49
+ if (entry.kind === "page") {
50
+ const p = byId.get(entry.pageId);
51
+ if (p) out.push(p);
52
+ } else {
53
+ for (const id of entry.pageIds) {
54
+ const p = byId.get(id);
55
+ if (p) out.push(p);
56
+ }
57
+ }
58
+ }
59
+ return out;
60
+ }
61
+ function groupOfPage(index, pageId) {
62
+ for (const entry of navEntries(index)) {
63
+ if (entry.kind === "group" && entry.pageIds.includes(pageId)) return entry;
64
+ }
65
+ return null;
66
+ }
67
+ function groupDisplayLabel(label) {
68
+ return label || "Untitled group";
69
+ }
70
+ function withNav(index, entries) {
71
+ return { ...index, nav: entries };
72
+ }
73
+ function addGroup(index, groupId) {
74
+ return withNav(index, [
75
+ ...navEntries(index),
76
+ { kind: "group", id: groupId, label: "", startCollapsed: false, pageIds: [] }
77
+ ]);
78
+ }
79
+ function renameGroup(index, groupId, label) {
80
+ return withNav(index, navEntries(index).map(
81
+ (e) => e.kind === "group" && e.id === groupId ? { ...e, label } : e
82
+ ));
83
+ }
84
+ function setGroupStartCollapsed(index, groupId, startCollapsed) {
85
+ return withNav(index, navEntries(index).map(
86
+ (e) => e.kind === "group" && e.id === groupId ? { ...e, startCollapsed } : e
87
+ ));
88
+ }
89
+ function deleteGroup(index, groupId) {
90
+ const out = [];
91
+ for (const entry of navEntries(index)) {
92
+ if (entry.kind === "group" && entry.id === groupId) {
93
+ for (const pageId of entry.pageIds) out.push({ kind: "page", pageId });
94
+ } else {
95
+ out.push(entry);
96
+ }
97
+ }
98
+ return withNav(index, out);
99
+ }
100
+ function moveNavEntry(index, from, to) {
101
+ const entries = navEntries(index).map((e) => e.kind === "group" ? { ...e, pageIds: [...e.pageIds] } : { ...e });
102
+ let moved;
103
+ if (from.groupId === null) {
104
+ if (from.index < 0 || from.index >= entries.length) return index;
105
+ [moved] = entries.splice(from.index, 1);
106
+ } else {
107
+ const group = entries.find((e) => e.kind === "group" && e.id === from.groupId);
108
+ if (!group || group.kind !== "group") return index;
109
+ if (from.index < 0 || from.index >= group.pageIds.length) return index;
110
+ [moved] = group.pageIds.splice(from.index, 1);
111
+ }
112
+ if (moved === void 0) return index;
113
+ const movedIsGroup = typeof moved !== "string" && moved.kind === "group";
114
+ if (movedIsGroup && to.groupId !== null) return index;
115
+ if (to.groupId === null) {
116
+ const entry = typeof moved === "string" ? { kind: "page", pageId: moved } : moved;
117
+ entries.splice(Math.max(0, Math.min(to.index, entries.length)), 0, entry);
118
+ } else {
119
+ const group = entries.find((e) => e.kind === "group" && e.id === to.groupId);
120
+ if (!group || group.kind !== "group") return index;
121
+ const pageId = typeof moved === "string" ? moved : moved.kind === "page" ? moved.pageId : null;
122
+ if (pageId === null) return index;
123
+ group.pageIds.splice(Math.max(0, Math.min(to.index, group.pageIds.length)), 0, pageId);
124
+ }
125
+ return withNav(index, entries);
126
+ }
127
+
128
+ // src/lib/pages.ts
129
+ function slugifyPageSlug(input) {
130
+ return input.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "");
131
+ }
132
+ function uniquePageSlug(base, existing) {
133
+ const taken = new Set(existing);
134
+ const reserved = new Set(RESERVED_SLUGS);
135
+ let candidate = base || "page";
136
+ if (!taken.has(candidate) && !reserved.has(candidate)) return candidate;
137
+ let n = 2;
138
+ while (taken.has(`${candidate}-${n}`) || reserved.has(`${candidate}-${n}`)) n++;
139
+ return `${candidate}-${n}`;
140
+ }
141
+ function pageById(index, id) {
142
+ return index.pages.find((p) => p.id === id);
143
+ }
144
+ function audiencePasses(access, audience) {
145
+ if (access.length === 0) return true;
146
+ if (!audience) return true;
147
+ return access.includes(audience);
148
+ }
149
+ function addPage(index, id) {
150
+ const slug = uniquePageSlug("new-page", index.pages.map((p) => p.slug));
151
+ const page = {
152
+ id,
153
+ title: "",
154
+ slug,
155
+ isHome: false,
156
+ showInNav: true,
157
+ status: "live",
158
+ access: [],
159
+ order: []
160
+ };
161
+ return {
162
+ ...index,
163
+ pages: [...index.pages, page],
164
+ nav: [...navEntries(index), { kind: "page", pageId: id }]
165
+ };
166
+ }
167
+ function deletePage(index, pageId) {
168
+ const page = pageById(index, pageId);
169
+ if (!page || page.isHome) return { index, removedSectionIds: [] };
170
+ const removedSectionIds = [...page.order];
171
+ const nextSections = { ...index.sections };
172
+ for (const id of removedSectionIds) delete nextSections[id];
173
+ return {
174
+ index: {
175
+ ...index,
176
+ pages: index.pages.filter((p) => p.id !== pageId),
177
+ sections: nextSections,
178
+ nav: navEntries(index).filter((e) => !(e.kind === "page" && e.pageId === pageId)).map((e) => e.kind === "group" ? { ...e, pageIds: e.pageIds.filter((id) => id !== pageId) } : e)
179
+ },
180
+ removedSectionIds
181
+ };
182
+ }
183
+
184
+ export {
185
+ reconcileNav,
186
+ navEntries,
187
+ pagesInNavOrder,
188
+ groupOfPage,
189
+ groupDisplayLabel,
190
+ addGroup,
191
+ renameGroup,
192
+ setGroupStartCollapsed,
193
+ deleteGroup,
194
+ moveNavEntry,
195
+ slugifyPageSlug,
196
+ uniquePageSlug,
197
+ audiencePasses,
198
+ addPage,
199
+ deletePage
200
+ };
@@ -3,7 +3,7 @@ import {
3
3
  } from "../chunk-HJSE6SK5.js";
4
4
  import {
5
5
  IndexSchema
6
- } from "../chunk-RHWWQV3J.js";
6
+ } from "../chunk-BGHWUJFV.js";
7
7
  import "../chunk-FM4M4Q2W.js";
8
8
  import "../chunk-JSBRDJBE.js";
9
9
 
@@ -11,20 +11,20 @@ import {
11
11
  buildBlockDropData,
12
12
  canDropBlock,
13
13
  isBlockDragData
14
- } from "../../chunk-II3X7GLJ.js";
14
+ } from "../../chunk-GYCBWGVW.js";
15
15
  import "../../chunk-5THS4K5D.js";
16
16
  import "../../chunk-ZSPCE6MZ.js";
17
17
  import {
18
18
  AddIcon,
19
19
  IconButton
20
- } from "../../chunk-F2337B35.js";
21
- import "../../chunk-S4L3ZFKM.js";
20
+ } from "../../chunk-26ALJO4K.js";
21
+ import "../../chunk-3COSXTOY.js";
22
22
  import "../../chunk-PTOLUMGV.js";
23
23
  import {
24
24
  cn
25
25
  } from "../../chunk-7EOSDFS3.js";
26
- import "../../chunk-ZD6XGRQM.js";
27
- import "../../chunk-RHWWQV3J.js";
26
+ import "../../chunk-TGNS7D4F.js";
27
+ import "../../chunk-BGHWUJFV.js";
28
28
  import "../../chunk-FM4M4Q2W.js";
29
29
  import "../../chunk-JSBRDJBE.js";
30
30
 
@@ -2,7 +2,7 @@ import {
2
2
  EditableRichText,
3
3
  LinkPopover,
4
4
  defineHeadingSection
5
- } from "../../chunk-YDXBJR74.js";
5
+ } from "../../chunk-EWNDBKYK.js";
6
6
  import {
7
7
  EditableGrid,
8
8
  EditablePlainText,
@@ -10,21 +10,21 @@ import {
10
10
  MediaBlock,
11
11
  ResolvedMedia,
12
12
  useEditableCollection
13
- } from "../../chunk-KPP2CFW6.js";
13
+ } from "../../chunk-MUTHF2GT.js";
14
14
  import "../../chunk-ZSPCE6MZ.js";
15
15
  import {
16
16
  DeleteIcon,
17
17
  DragHandle,
18
18
  IconButton
19
- } from "../../chunk-F2337B35.js";
20
- import "../../chunk-S4L3ZFKM.js";
19
+ } from "../../chunk-26ALJO4K.js";
20
+ import "../../chunk-3COSXTOY.js";
21
21
  import "../../chunk-72CG6AA2.js";
22
22
  import {
23
23
  cn
24
24
  } from "../../chunk-7EOSDFS3.js";
25
- import "../../chunk-ZD6XGRQM.js";
25
+ import "../../chunk-TGNS7D4F.js";
26
26
  import "../../chunk-VKAGMEKE.js";
27
- import "../../chunk-RHWWQV3J.js";
27
+ import "../../chunk-BGHWUJFV.js";
28
28
  import "../../chunk-FM4M4Q2W.js";
29
29
  import "../../chunk-JSBRDJBE.js";
30
30
 
@@ -2,17 +2,17 @@ import {
2
2
  ColorItemSchema,
3
3
  ColorSpaceSchema,
4
4
  brandGuideSectionDefs
5
- } from "../../chunk-5BFPJWIO.js";
5
+ } from "../../chunk-KP4DWTPR.js";
6
6
  import "../../chunk-5THS4K5D.js";
7
- import "../../chunk-KPP2CFW6.js";
8
- import "../../chunk-F2337B35.js";
9
- import "../../chunk-S4L3ZFKM.js";
7
+ import "../../chunk-MUTHF2GT.js";
8
+ import "../../chunk-26ALJO4K.js";
9
+ import "../../chunk-3COSXTOY.js";
10
10
  import "../../chunk-PZJL2S3Z.js";
11
11
  import "../../chunk-WDSVHKAH.js";
12
12
  import "../../chunk-7EOSDFS3.js";
13
- import "../../chunk-ZD6XGRQM.js";
13
+ import "../../chunk-TGNS7D4F.js";
14
14
  import "../../chunk-VKAGMEKE.js";
15
- import "../../chunk-RHWWQV3J.js";
15
+ import "../../chunk-BGHWUJFV.js";
16
16
  import "../../chunk-FM4M4Q2W.js";
17
17
  import "../../chunk-JSBRDJBE.js";
18
18
  export {
@@ -1,26 +1,26 @@
1
1
  import {
2
2
  allSectionDefs
3
- } from "../../chunk-FOEZNEF5.js";
4
- import "../../chunk-5BFPJWIO.js";
5
- import "../../chunk-II3X7GLJ.js";
3
+ } from "../../chunk-HKHEAH5F.js";
4
+ import "../../chunk-KP4DWTPR.js";
5
+ import "../../chunk-GYCBWGVW.js";
6
6
  import "../../chunk-5THS4K5D.js";
7
- import "../../chunk-YDXBJR74.js";
8
- import "../../chunk-KPP2CFW6.js";
7
+ import "../../chunk-EWNDBKYK.js";
8
+ import "../../chunk-MUTHF2GT.js";
9
9
  import "../../chunk-ZSPCE6MZ.js";
10
- import "../../chunk-F2337B35.js";
10
+ import "../../chunk-26ALJO4K.js";
11
11
  import "../../chunk-Y4JQGO6G.js";
12
- import "../../chunk-S4L3ZFKM.js";
12
+ import "../../chunk-3COSXTOY.js";
13
13
  import "../../chunk-PZJL2S3Z.js";
14
14
  import "../../chunk-WDSVHKAH.js";
15
15
  import "../../chunk-72CG6AA2.js";
16
16
  import "../../chunk-7EOSDFS3.js";
17
- import "../../chunk-ZD6XGRQM.js";
17
+ import "../../chunk-TGNS7D4F.js";
18
18
  import "../../chunk-TZQPOR5A.js";
19
19
  import {
20
20
  registerRichText,
21
21
  registerSchema
22
22
  } from "../../chunk-VKAGMEKE.js";
23
- import "../../chunk-RHWWQV3J.js";
23
+ import "../../chunk-BGHWUJFV.js";
24
24
  import "../../chunk-FM4M4Q2W.js";
25
25
  import "../../chunk-NSCT3AMV.js";
26
26
  import "../../chunk-JSBRDJBE.js";
@@ -1,25 +1,25 @@
1
1
  import {
2
2
  allSectionDefs
3
- } from "../../chunk-FOEZNEF5.js";
4
- import "../../chunk-5BFPJWIO.js";
5
- import "../../chunk-II3X7GLJ.js";
3
+ } from "../../chunk-HKHEAH5F.js";
4
+ import "../../chunk-KP4DWTPR.js";
5
+ import "../../chunk-GYCBWGVW.js";
6
6
  import "../../chunk-5THS4K5D.js";
7
- import "../../chunk-YDXBJR74.js";
8
- import "../../chunk-KPP2CFW6.js";
7
+ import "../../chunk-EWNDBKYK.js";
8
+ import "../../chunk-MUTHF2GT.js";
9
9
  import "../../chunk-ZSPCE6MZ.js";
10
- import "../../chunk-F2337B35.js";
10
+ import "../../chunk-26ALJO4K.js";
11
11
  import "../../chunk-Y4JQGO6G.js";
12
- import "../../chunk-S4L3ZFKM.js";
12
+ import "../../chunk-3COSXTOY.js";
13
13
  import "../../chunk-PZJL2S3Z.js";
14
14
  import "../../chunk-WDSVHKAH.js";
15
15
  import "../../chunk-72CG6AA2.js";
16
16
  import "../../chunk-7EOSDFS3.js";
17
- import "../../chunk-ZD6XGRQM.js";
17
+ import "../../chunk-TGNS7D4F.js";
18
18
  import "../../chunk-TZQPOR5A.js";
19
19
  import {
20
20
  registerSection
21
21
  } from "../../chunk-VKAGMEKE.js";
22
- import "../../chunk-RHWWQV3J.js";
22
+ import "../../chunk-BGHWUJFV.js";
23
23
  import "../../chunk-FM4M4Q2W.js";
24
24
  import "../../chunk-NSCT3AMV.js";
25
25
  import "../../chunk-JSBRDJBE.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;AAcjD,OAAO,EAAoC,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAyDtF,OAAO,KAAK,EAAE,eAAe,EAA2D,MAAM,oBAAoB,CAAC;AAyCnH,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAoBxD,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,2CAqsDP;AAuED;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
+ {"version":3,"file":"EditorShell.d.ts","sourceRoot":"","sources":["../../../src/components/shell/EditorShell.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAcjD,OAAO,EAAoC,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAyDtF,OAAO,KAAK,EAAE,eAAe,EAA2D,MAAM,oBAAoB,CAAC;AAyCnH,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAoBxD,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,2CAwtDP;AAuED;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"}
@@ -10,6 +10,13 @@ interface PersistenceOptions {
10
10
  sectionId: string;
11
11
  content: SectionContent;
12
12
  }[], indexFlushed: boolean) => void;
13
+ /** Ref mirror of the shell's pending-deletion set, read at flush time and
14
+ * persisted alongside the index snapshot. Deletion is INTENT that cannot be
15
+ * inferred back from the snapshot: the restore path would otherwise diff the
16
+ * stale local index against a fresh remote read and treat sections a third
17
+ * party added in the meantime (MCP connector, peer editor) as local
18
+ * deletions — then delete them on the next save. */
19
+ deletedSectionsRef?: React.RefObject<Set<string>>;
13
20
  }
14
21
  export declare function useEditorPersistence(siteIndexRef: React.RefObject<SiteIndex>, options?: PersistenceOptions): {
15
22
  markSectionDirty: (sectionId: string, content: SectionContent) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"useEditorPersistence.d.ts","sourceRoot":"","sources":["../../src/hooks/useEditorPersistence.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AA2BpE,UAAU,kBAAkB;IAC1B;;;;+DAI2D;IAC3D,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,cAAc,CAAA;KAAE,EAAE,EAAE,YAAY,EAAE,OAAO,KAAK,IAAI,CAAC;CACtG;AAED,wBAAgB,oBAAoB,CAClC,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,EACxC,OAAO,CAAC,EAAE,kBAAkB;kCAwFd,MAAM,WAAW,cAAc;;+BAmBC,MAAM;oCAiBD,MAAM;mCAQ3C,MAAM;4BAI6B,UAAU;;;;;;;yCAgCH,MAAM;;;qCAWhD,MAAM,cAAc,MAAM;EAuBzC"}
1
+ {"version":3,"file":"useEditorPersistence.d.ts","sourceRoot":"","sources":["../../src/hooks/useEditorPersistence.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AA2BpE,UAAU,kBAAkB;IAC1B;;;;+DAI2D;IAC3D,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,cAAc,CAAA;KAAE,EAAE,EAAE,YAAY,EAAE,OAAO,KAAK,IAAI,CAAC;IACrG;;;;;yDAKqD;IACrD,kBAAkB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;CACnD;AAED,wBAAgB,oBAAoB,CAClC,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,EACxC,OAAO,CAAC,EAAE,kBAAkB;kCA+Fd,MAAM,WAAW,cAAc;;+BAmBC,MAAM;oCAiBD,MAAM;mCAQ3C,MAAM;4BAI6B,UAAU;;;;;;;yCAgCH,MAAM;;;qCAWhD,MAAM,cAAc,MAAM;EAuBzC"}
package/dist/index.js CHANGED
@@ -29,7 +29,7 @@ import {
29
29
  resolveMedia,
30
30
  sanitizeMediaName,
31
31
  setMediaProvider
32
- } from "./chunk-S4L3ZFKM.js";
32
+ } from "./chunk-3COSXTOY.js";
33
33
  import {
34
34
  AUDIENCE_COOKIE,
35
35
  AUDIENCE_MAX_AGE_SECONDS,
@@ -58,7 +58,7 @@ import {
58
58
  AudienceNameSchema,
59
59
  MediaGridOptionsSchema,
60
60
  slugifyAudienceName
61
- } from "./chunk-XYCCXKVC.js";
61
+ } from "./chunk-FOY5TF7D.js";
62
62
  import {
63
63
  AudienceSchema,
64
64
  RoleSchema,
@@ -91,7 +91,7 @@ import {
91
91
  safeRedirect,
92
92
  suggestAccessibleOn,
93
93
  wcagLevel
94
- } from "./chunk-QEHPGA5N.js";
94
+ } from "./chunk-NA5EJM6Z.js";
95
95
  import {
96
96
  curatedIcons,
97
97
  getIcon
@@ -111,6 +111,11 @@ import {
111
111
  import {
112
112
  cn
113
113
  } from "./chunk-7EOSDFS3.js";
114
+ import {
115
+ isSameOriginRequest,
116
+ requireSessionSecret,
117
+ safeNextPath
118
+ } from "./chunk-S2L3BPLS.js";
114
119
  import {
115
120
  audiencePasses,
116
121
  groupDisplayLabel,
@@ -118,12 +123,7 @@ import {
118
123
  navEntries,
119
124
  pagesInNavOrder,
120
125
  reconcileNav
121
- } from "./chunk-ZD6XGRQM.js";
122
- import {
123
- isSameOriginRequest,
124
- requireSessionSecret,
125
- safeNextPath
126
- } from "./chunk-S2L3BPLS.js";
126
+ } from "./chunk-TGNS7D4F.js";
127
127
  import "./chunk-5BM2Y3NJ.js";
128
128
  import {
129
129
  NavEntrySchema,
@@ -158,6 +158,7 @@ import {
158
158
  PageSchema,
159
159
  PageStatusSchema,
160
160
  RESERVED_SLUGS,
161
+ SLUG_RE,
161
162
  SectionMetaSchema,
162
163
  SingleMediaReferenceSchema,
163
164
  SiteConfigSchema,
@@ -165,7 +166,7 @@ import {
165
166
  TextLineSchema,
166
167
  VariantSchema,
167
168
  normalizeSiteIndex
168
- } from "./chunk-RHWWQV3J.js";
169
+ } from "./chunk-BGHWUJFV.js";
169
170
  import "./chunk-FM4M4Q2W.js";
170
171
  import "./chunk-NSCT3AMV.js";
171
172
  import {
@@ -213,6 +214,7 @@ export {
213
214
  RoleSchema,
214
215
  SESSION_COOKIE,
215
216
  SESSION_MAX_AGE_SECONDS,
217
+ SLUG_RE,
216
218
  SavedMessageSchema,
217
219
  SectionMetaSchema,
218
220
  SectionUpdateMessageSchema,
@@ -1 +1 @@
1
- {"version":3,"file":"dexie.d.ts","sourceRoot":"","sources":["../../src/lib/dexie.ts"],"names":[],"mappings":"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"}
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
@@ -251,7 +251,12 @@ async function persistAll(sections, siteIndex, deletedSectionIds, siteConfig) {
251
251
  pages: siteIndex.pages,
252
252
  sections: siteIndex.sections,
253
253
  nav: siteIndex.nav,
254
- deletedSections: [],
254
+ // Record the deletion INTENT, not just its effect on the order. The
255
+ // restore path reads this back; when it was hardcoded `[]` that path
256
+ // had to re-derive deletions by diffing this snapshot against a fresh
257
+ // remote read, which treats a third party's additions (MCP connector,
258
+ // peer editor) as this editor's deletions.
259
+ deletedSections: deletedSectionIds ?? [],
255
260
  updatedAt: now
256
261
  });
257
262
  await database.meta.put({