@drawnagency/primitives 0.1.109 → 0.1.110
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/auth/cookies.d.ts +8 -0
- package/dist/auth/cookies.d.ts.map +1 -1
- package/dist/auth/index.d.ts +1 -1
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/auth/index.js +3 -1
- package/dist/auth/types.d.ts +11 -4
- package/dist/auth/types.d.ts.map +1 -1
- package/dist/{chunk-WXBHP4JY.js → chunk-3GAG6ZXB.js} +55 -46
- package/dist/{chunk-FM4M4Q2W.js → chunk-4TZJZU2T.js} +23 -3
- package/dist/{chunk-5PVRACZY.js → chunk-7MI3HCOF.js} +60 -23
- package/dist/{chunk-WBDPDGFA.js → chunk-7WQJ57XG.js} +6 -31
- package/dist/{chunk-LQHYVPBS.js → chunk-ALMEC3XN.js} +11 -12
- package/dist/{chunk-TZQPOR5A.js → chunk-DMCGN5AS.js} +10 -3
- package/dist/{chunk-ZKVKNUJC.js → chunk-ELQ4C677.js} +1 -1
- package/dist/{chunk-5BM2Y3NJ.js → chunk-FRVO75DK.js} +14 -2
- package/dist/{chunk-VKAGMEKE.js → chunk-FTPETWXE.js} +1 -0
- package/dist/{chunk-3TO4RRHY.js → chunk-GPPVYLEI.js} +7 -0
- package/dist/{chunk-NLQ5F3RQ.js → chunk-HBULBDGP.js} +1 -1
- package/dist/{chunk-67ZOQCUD.js → chunk-NXGIHSL5.js} +67 -50
- package/dist/{chunk-CPTFFLK2.js → chunk-OTDA6KWL.js} +10 -3
- package/dist/{chunk-XIDE4TDF.js → chunk-OUYB2GCW.js} +1 -1
- package/dist/{chunk-72CG6AA2.js → chunk-RA5IOFPY.js} +10 -2
- package/dist/{chunk-GEENI3OC.js → chunk-SW6PCQQD.js} +4 -0
- package/dist/{chunk-BOZUEKWL.js → chunk-UVIYI4J6.js} +1 -1
- package/dist/{chunk-AB3XVXI3.js → chunk-VCCNKTFD.js} +37 -29
- package/dist/{chunk-XBYJQ5RS.js → chunk-XQMDWXD6.js} +21 -6
- package/dist/collab/rebase.d.ts +6 -0
- package/dist/collab/rebase.d.ts.map +1 -1
- package/dist/collab/rebase.js +12 -3
- package/dist/collab/recovery.d.ts +0 -20
- package/dist/collab/recovery.d.ts.map +1 -1
- package/dist/components/brandguide/ColorSwatchSettings.d.ts.map +1 -1
- package/dist/components/brandguide/ColorsView.d.ts.map +1 -1
- package/dist/components/brandguide/colors-shared.d.ts +10 -1
- package/dist/components/brandguide/colors-shared.d.ts.map +1 -1
- package/dist/components/chat/ChatPanel.d.ts.map +1 -1
- package/dist/components/docfile/DocFilePane.d.ts.map +1 -1
- package/dist/components/docfile/PdfCanvasViewer.d.ts.map +1 -1
- package/dist/components/docfile/doc-file-state.d.ts.map +1 -1
- package/dist/components/editor/IndicatorPill.d.ts.map +1 -1
- package/dist/components/editor/NavGroupRow.d.ts +7 -2
- package/dist/components/editor/NavGroupRow.d.ts.map +1 -1
- package/dist/components/editor/PagesModal.d.ts.map +1 -1
- package/dist/components/editor/index.js +13 -12
- package/dist/components/primitives/EditableRichText.d.ts.map +1 -1
- package/dist/components/primitives/LinkPopover.d.ts.map +1 -1
- package/dist/components/primitives/index.js +14 -12
- package/dist/components/primitives/useEditableCollection.d.ts.map +1 -1
- package/dist/components/primitives/useEditablePlainText.d.ts.map +1 -1
- package/dist/components/sections/IconList/index.d.ts.map +1 -1
- package/dist/components/sections/Prose/Prose.d.ts.map +1 -1
- package/dist/components/sections/brand-guide.js +8 -8
- package/dist/components/sections/register-schemas.js +14 -14
- package/dist/components/sections/register.js +14 -14
- package/dist/components/shared/FontPicker.d.ts.map +1 -1
- package/dist/components/shared/HistoryChangesModal.d.ts.map +1 -1
- package/dist/components/shared/HistoryPopover.d.ts.map +1 -1
- package/dist/components/shared/Navigation.d.ts.map +1 -1
- package/dist/components/shared/Popover.d.ts.map +1 -1
- package/dist/components/shell/AudienceAddForm.d.ts +1 -5
- package/dist/components/shell/AudienceAddForm.d.ts.map +1 -1
- package/dist/components/shell/AudienceRow.d.ts +2 -3
- package/dist/components/shell/AudienceRow.d.ts.map +1 -1
- package/dist/components/shell/BugReportFAB.d.ts.map +1 -1
- package/dist/components/shell/EditorShell.d.ts.map +1 -1
- package/dist/components/shell/MediaLibraryModal.d.ts.map +1 -1
- package/dist/components/shell/SiteSettingsUsers.d.ts.map +1 -1
- package/dist/components/shell/SiteSettingsViewerAccess.d.ts.map +1 -1
- package/dist/components/shell/view-branch.d.ts.map +1 -1
- package/dist/document/components/DocRail.d.ts.map +1 -1
- package/dist/document/components/DocViewer.d.ts.map +1 -1
- package/dist/document/components/measure.d.ts.map +1 -1
- package/dist/document/components/useDocPages.d.ts.map +1 -1
- package/dist/document/engine/blocks.d.ts.map +1 -1
- package/dist/document/engine/masonry.d.ts.map +1 -1
- package/dist/document/engine/paginate.d.ts.map +1 -1
- package/dist/document/engine/settings.d.ts +3 -0
- package/dist/document/engine/settings.d.ts.map +1 -1
- package/dist/document/index.js +79 -28
- package/dist/hooks/useBuildStatus.d.ts.map +1 -1
- package/dist/hooks/useDocumentUploads.d.ts +1 -0
- package/dist/hooks/useDocumentUploads.d.ts.map +1 -1
- package/dist/hooks/useEditorPersistence.d.ts.map +1 -1
- package/dist/hooks/useEditorPublish.d.ts.map +1 -1
- package/dist/hooks/useFocusTrap.d.ts +6 -0
- package/dist/hooks/useFocusTrap.d.ts.map +1 -1
- package/dist/hooks/useMediaPipeline.d.ts +3 -2
- package/dist/hooks/useMediaPipeline.d.ts.map +1 -1
- package/dist/hooks/useSanitizedHtml.d.ts +12 -0
- package/dist/hooks/useSanitizedHtml.d.ts.map +1 -0
- package/dist/index.js +19 -13
- package/dist/lib/block-move.d.ts.map +1 -1
- package/dist/lib/contrast.d.ts.map +1 -1
- package/dist/lib/dexie.d.ts +2 -8
- package/dist/lib/dexie.d.ts.map +1 -1
- package/dist/lib/dexie.js +21 -49
- package/dist/lib/index-ops.d.ts.map +1 -1
- package/dist/lib/index-ops.js +43 -23
- package/dist/lib/index.js +8 -8
- package/dist/lib/loader.d.ts.map +1 -1
- package/dist/lib/media-folders.d.ts +12 -4
- package/dist/lib/media-folders.d.ts.map +1 -1
- package/dist/lib/media-folders.js +12 -2
- package/dist/lib/migrate-sections-transform.js +1 -1
- package/dist/lib/nav-tree.d.ts.map +1 -1
- package/dist/lib/nav.d.ts.map +1 -1
- package/dist/lib/pages.d.ts.map +1 -1
- package/dist/lib/registry.d.ts.map +1 -1
- package/dist/lib/registry.js +1 -1
- package/dist/lib/sanitize.d.ts +6 -0
- package/dist/lib/sanitize.d.ts.map +1 -1
- package/dist/lib/timestamp.d.ts.map +1 -1
- package/dist/media/index.js +4 -4
- package/dist/media/queue.d.ts.map +1 -1
- package/dist/media/resolve.d.ts.map +1 -1
- package/dist/media/utils.d.ts.map +1 -1
- package/dist/media/videoPoster.d.ts.map +1 -1
- package/dist/schemas/audience.d.ts +5 -1
- package/dist/schemas/audience.d.ts.map +1 -1
- package/dist/schemas/audience.js +1 -1
- package/dist/schemas/index.js +8 -6
- package/dist/schemas/sections.d.ts +12 -0
- package/dist/schemas/sections.d.ts.map +1 -1
- package/dist/storage/index.d.ts +1 -1
- package/dist/storage/index.d.ts.map +1 -1
- package/dist/storage/index.js +3 -1
- package/dist/storage/types.d.ts +9 -0
- package/dist/storage/types.d.ts.map +1 -1
- package/dist/types/database.d.ts +0 -3
- package/dist/types/database.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/auth/cookies.ts +11 -0
- package/src/auth/index.ts +1 -1
- package/src/auth/types.ts +18 -4
- package/src/collab/rebase.ts +26 -1
- package/src/collab/recovery.ts +29 -3
- package/src/components/brandguide/ColorSwatchSettings.tsx +40 -13
- package/src/components/brandguide/ColorsEditable.tsx +7 -9
- package/src/components/brandguide/ColorsView.tsx +12 -11
- package/src/components/brandguide/colors-shared.ts +17 -1
- package/src/components/chat/ChatPanel.tsx +19 -0
- package/src/components/docfile/DocFilePane.tsx +11 -0
- package/src/components/docfile/PdfCanvasViewer.tsx +46 -5
- package/src/components/docfile/doc-file-state.ts +7 -0
- package/src/components/editor/IndicatorPill.tsx +5 -1
- package/src/components/editor/NavGroupRow.tsx +8 -3
- package/src/components/editor/PagesModal.tsx +10 -2
- package/src/components/primitives/EditableList.tsx +10 -2
- package/src/components/primitives/EditableRichText.tsx +4 -3
- package/src/components/primitives/LinkPopover.tsx +23 -1
- package/src/components/primitives/useEditableCollection.ts +61 -41
- package/src/components/primitives/useEditablePlainText.ts +24 -3
- package/src/components/sections/IconList/index.tsx +8 -1
- package/src/components/sections/Prose/Prose.tsx +4 -2
- package/src/components/shared/FontPicker.tsx +16 -4
- package/src/components/shared/HistoryChangesModal.tsx +12 -1
- package/src/components/shared/HistoryPopover.tsx +18 -4
- package/src/components/shared/Navigation.tsx +20 -2
- package/src/components/shared/Popover.tsx +9 -5
- package/src/components/shell/AudienceAddForm.tsx +6 -26
- package/src/components/shell/AudienceRow.tsx +29 -39
- package/src/components/shell/BugReportFAB.tsx +20 -2
- package/src/components/shell/EditorShell.tsx +200 -50
- package/src/components/shell/MediaLibraryModal.tsx +52 -10
- package/src/components/shell/SiteSettingsUsers.tsx +3 -0
- package/src/components/shell/SiteSettingsViewerAccess.tsx +21 -16
- package/src/components/shell/view-branch.ts +4 -1
- package/src/document/components/DocRail.tsx +27 -2
- package/src/document/components/DocViewer.tsx +5 -1
- package/src/document/components/measure.tsx +22 -6
- package/src/document/components/useDocPages.ts +13 -3
- package/src/document/engine/blocks.ts +33 -4
- package/src/document/engine/masonry.ts +8 -2
- package/src/document/engine/paginate.ts +4 -1
- package/src/document/engine/settings.ts +40 -3
- package/src/hooks/useBuildStatus.ts +6 -0
- package/src/hooks/useDocumentUploads.ts +46 -3
- package/src/hooks/useEditorPersistence.ts +33 -19
- package/src/hooks/useEditorPublish.ts +83 -34
- package/src/hooks/useFocusTrap.ts +18 -0
- package/src/hooks/useMediaPipeline.ts +111 -38
- package/src/hooks/useSanitizedHtml.ts +29 -0
- package/src/lib/audience-secret.ts +1 -0
- package/src/lib/block-move.ts +13 -2
- package/src/lib/contrast.ts +14 -14
- package/src/lib/dexie.ts +46 -49
- package/src/lib/index-ops.ts +63 -20
- package/src/lib/loader.ts +41 -12
- package/src/lib/media-folders.ts +31 -5
- package/src/lib/migrate-sections-transform.ts +22 -2
- package/src/lib/nav-tree.ts +16 -2
- package/src/lib/nav.ts +10 -1
- package/src/lib/pages.ts +24 -6
- package/src/lib/registry.ts +3 -0
- package/src/lib/sanitize.ts +9 -0
- package/src/lib/timestamp.ts +5 -0
- package/src/media/queue.ts +4 -0
- package/src/media/resolve.ts +14 -1
- package/src/media/utils.ts +3 -1
- package/src/media/videoPoster.ts +14 -3
- package/src/schemas/audience.ts +10 -2
- package/src/schemas/sections.ts +23 -1
- package/src/storage/index.ts +1 -1
- package/src/storage/types.ts +13 -0
- package/src/types/database.ts +0 -3
package/dist/index.js
CHANGED
|
@@ -5,6 +5,7 @@ import {
|
|
|
5
5
|
SESSION_COOKIE,
|
|
6
6
|
SESSION_MAX_AGE_SECONDS,
|
|
7
7
|
SessionExpiredError,
|
|
8
|
+
clearSessionCookie,
|
|
8
9
|
deriveUiCapabilities,
|
|
9
10
|
setSessionCookie,
|
|
10
11
|
signAudienceToken,
|
|
@@ -12,16 +13,17 @@ import {
|
|
|
12
13
|
verifyAudienceClaims,
|
|
13
14
|
verifyAudienceToken,
|
|
14
15
|
verifySessionToken
|
|
15
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-SW6PCQQD.js";
|
|
16
17
|
import {
|
|
17
18
|
ASSET_CACHE_CONTROL,
|
|
18
19
|
DOCUMENT_CACHE_CONTROL,
|
|
19
20
|
IDEMPOTENCY_KEY_RE,
|
|
20
21
|
IDEMPOTENCY_TRAILER,
|
|
21
22
|
IdempotencyLookupUnavailableError,
|
|
23
|
+
NothingToPublishError,
|
|
22
24
|
StorageConflictError,
|
|
23
25
|
withIdempotencyTrailer
|
|
24
|
-
} from "./chunk-
|
|
26
|
+
} from "./chunk-GPPVYLEI.js";
|
|
25
27
|
import {
|
|
26
28
|
CollabPeerSchema,
|
|
27
29
|
HEARTBEAT_INTERVAL_MS,
|
|
@@ -55,7 +57,7 @@ import {
|
|
|
55
57
|
resolveMedia,
|
|
56
58
|
sanitizeMediaName,
|
|
57
59
|
setMediaProvider
|
|
58
|
-
} from "./chunk-
|
|
60
|
+
} from "./chunk-XQMDWXD6.js";
|
|
59
61
|
import {
|
|
60
62
|
MediaGridOptionsSchema
|
|
61
63
|
} from "./chunk-B7VBSE5X.js";
|
|
@@ -75,7 +77,7 @@ import {
|
|
|
75
77
|
ViewerUsernameSchema,
|
|
76
78
|
normalizeUsername,
|
|
77
79
|
slugifyAudienceName
|
|
78
|
-
} from "./chunk-
|
|
80
|
+
} from "./chunk-HBULBDGP.js";
|
|
79
81
|
import {
|
|
80
82
|
DEFAULT_LINK,
|
|
81
83
|
LinkTargetSchema,
|
|
@@ -114,8 +116,8 @@ import {
|
|
|
114
116
|
safeRedirect,
|
|
115
117
|
suggestAccessibleOn,
|
|
116
118
|
wcagLevel
|
|
117
|
-
} from "./chunk-
|
|
118
|
-
import "./chunk-
|
|
119
|
+
} from "./chunk-VCCNKTFD.js";
|
|
120
|
+
import "./chunk-FRVO75DK.js";
|
|
119
121
|
import {
|
|
120
122
|
curatedIcons,
|
|
121
123
|
getIcon
|
|
@@ -131,7 +133,7 @@ import {
|
|
|
131
133
|
generateNavLinks,
|
|
132
134
|
sanitizeHtml,
|
|
133
135
|
toSectionId
|
|
134
|
-
} from "./chunk-
|
|
136
|
+
} from "./chunk-RA5IOFPY.js";
|
|
135
137
|
import {
|
|
136
138
|
cn
|
|
137
139
|
} from "./chunk-7EOSDFS3.js";
|
|
@@ -150,15 +152,16 @@ import {
|
|
|
150
152
|
navEntries,
|
|
151
153
|
pagesInNavOrder,
|
|
152
154
|
reconcileNav
|
|
153
|
-
} from "./chunk-
|
|
155
|
+
} from "./chunk-OTDA6KWL.js";
|
|
154
156
|
import {
|
|
155
157
|
NavEntrySchema,
|
|
156
158
|
NavFileSchema
|
|
157
159
|
} from "./chunk-REDDTTGJ.js";
|
|
158
160
|
import {
|
|
159
161
|
getSectionContentSchema,
|
|
160
|
-
getSectionSchema
|
|
161
|
-
|
|
162
|
+
getSectionSchema,
|
|
163
|
+
getSectionSchemaForType
|
|
164
|
+
} from "./chunk-DMCGN5AS.js";
|
|
162
165
|
import {
|
|
163
166
|
clearRegistry,
|
|
164
167
|
createRegistry,
|
|
@@ -169,7 +172,7 @@ import {
|
|
|
169
172
|
getSection,
|
|
170
173
|
registerSchema,
|
|
171
174
|
registerSection
|
|
172
|
-
} from "./chunk-
|
|
175
|
+
} from "./chunk-FTPETWXE.js";
|
|
173
176
|
import {
|
|
174
177
|
ChatbotConfigSchema,
|
|
175
178
|
ChatbotTaskSchema,
|
|
@@ -187,8 +190,8 @@ import {
|
|
|
187
190
|
StatusSchema,
|
|
188
191
|
VariantSchema,
|
|
189
192
|
normalizeSiteIndex
|
|
190
|
-
} from "./chunk-
|
|
191
|
-
import "./chunk-
|
|
193
|
+
} from "./chunk-UVIYI4J6.js";
|
|
194
|
+
import "./chunk-4TZJZU2T.js";
|
|
192
195
|
import {
|
|
193
196
|
FontNameSchema,
|
|
194
197
|
HexColorSchema,
|
|
@@ -242,6 +245,7 @@ export {
|
|
|
242
245
|
NavEntrySchema,
|
|
243
246
|
NavFileSchema,
|
|
244
247
|
NormalizedUsernameSchema,
|
|
248
|
+
NothingToPublishError,
|
|
245
249
|
PageSchema,
|
|
246
250
|
PageStatusSchema,
|
|
247
251
|
ProcessingQueue,
|
|
@@ -271,6 +275,7 @@ export {
|
|
|
271
275
|
audiencePasses,
|
|
272
276
|
buildGoogleFontsUrl,
|
|
273
277
|
clearRegistry,
|
|
278
|
+
clearSessionCookie,
|
|
274
279
|
cn,
|
|
275
280
|
composePreviewImage,
|
|
276
281
|
contrastColor,
|
|
@@ -304,6 +309,7 @@ export {
|
|
|
304
309
|
getSection,
|
|
305
310
|
getSectionContentSchema,
|
|
306
311
|
getSectionSchema,
|
|
312
|
+
getSectionSchemaForType,
|
|
307
313
|
gridColsClass,
|
|
308
314
|
groupDisplayLabel,
|
|
309
315
|
groupOfPage,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"block-move.d.ts","sourceRoot":"","sources":["../../src/lib/block-move.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE9C,OAAO,KAAK,EAAE,SAAS,EAAe,MAAM,wBAAwB,CAAC;AAcrE,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,KAAK,EAAE,SAAS,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,wJAAwJ;IACxJ,OAAO,EAAE,MAAM,CAAC;IAChB,0FAA0F;IAC1F,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,UAAU,EAAE,OAAO,CAAC;IACpB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,KAAK,EAAE,SAAS,CAAC;IACjB,OAAO,EAAE,gBAAgB,CAAC;IAC1B,OAAO,EAAE,OAAO,CAAC;CAClB;
|
|
1
|
+
{"version":3,"file":"block-move.d.ts","sourceRoot":"","sources":["../../src/lib/block-move.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE9C,OAAO,KAAK,EAAE,SAAS,EAAe,MAAM,wBAAwB,CAAC;AAcrE,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,KAAK,EAAE,SAAS,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,wJAAwJ;IACxJ,OAAO,EAAE,MAAM,CAAC;IAChB,0FAA0F;IAC1F,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,UAAU,EAAE,OAAO,CAAC;IACpB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,KAAK,EAAE,SAAS,CAAC;IACjB,OAAO,EAAE,gBAAgB,CAAC;IAC1B,OAAO,EAAE,OAAO,CAAC;CAClB;AAmCD,wBAAgB,cAAc,CAC5B,KAAK,EAAE,cAAc,EACrB,IAAI,EAAE,SAAS,EACf,KAAK,GAAE,MAAM,MAAqB,GACjC,eAAe,CA2FjB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contrast.d.ts","sourceRoot":"","sources":["../../src/lib/contrast.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"contrast.d.ts","sourceRoot":"","sources":["../../src/lib/contrast.ts"],"names":[],"mappings":"AAWA,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAUlD;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAKhE;AAID,2EAA2E;AAC3E,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAMrD;AAED,kFAAkF;AAClF,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAM1D;AAED,MAAM,WAAW,SAAS;IACxB,yCAAyC;IACzC,EAAE,EAAE,OAAO,CAAC;IACZ,mDAAmD;IACnD,OAAO,EAAE,OAAO,CAAC;IACjB,wCAAwC;IACxC,GAAG,EAAE,OAAO,CAAC;CACd;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAElD;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAErE"}
|
package/dist/lib/dexie.d.ts
CHANGED
|
@@ -59,12 +59,6 @@ export declare function persistAll(sections: {
|
|
|
59
59
|
sectionId: string;
|
|
60
60
|
content: SectionContent;
|
|
61
61
|
}[], siteIndex?: SiteIndex, deletedSectionIds?: string[], siteConfig?: Record<string, unknown>): Promise<void>;
|
|
62
|
-
export declare function updateBranchShas(savedSha: string | null, mainSha: string | null): Promise<void>;
|
|
63
|
-
export declare function getBranchShas(): Promise<{
|
|
64
|
-
savedSha: string | null;
|
|
65
|
-
mainSha: string | null;
|
|
66
|
-
} | null>;
|
|
67
|
-
export declare function getDeletedSections(): Promise<string[]>;
|
|
68
62
|
/**
|
|
69
63
|
* Write the content snapshot for one commit.
|
|
70
64
|
*
|
|
@@ -83,6 +77,7 @@ export declare function cacheContent(sha: string, sections: LoadedSection[], ind
|
|
|
83
77
|
savedBranchSha?: string | null;
|
|
84
78
|
changedSectionIds?: string[];
|
|
85
79
|
mainIndex?: SiteIndex | null;
|
|
80
|
+
unparseableSectionIds?: string[];
|
|
86
81
|
}): Promise<void>;
|
|
87
82
|
export declare function getCachedContent(): Promise<{
|
|
88
83
|
sha: string;
|
|
@@ -99,6 +94,7 @@ export declare function getCachedContent(): Promise<{
|
|
|
99
94
|
* value and is not null. */
|
|
100
95
|
mediaManifest: MediaManifest | null;
|
|
101
96
|
documentManifest: DocumentManifest | null;
|
|
97
|
+
unparseableSectionIds: string[];
|
|
102
98
|
} | null>;
|
|
103
99
|
/** Invalidate only the cached content snapshot (e.g. after a publish removes the
|
|
104
100
|
* draft), forcing the next editor load to refetch rather than serve stale diff
|
|
@@ -114,8 +110,6 @@ export declare function removePendingMediaDeletion(id: string): Promise<void>;
|
|
|
114
110
|
export declare function getPendingMediaDeletions(): Promise<string[]>;
|
|
115
111
|
export declare function clearPendingMedia(): Promise<void>;
|
|
116
112
|
export declare function clearPendingMediaByIds(itemIds: string[], deletionIds: string[]): Promise<void>;
|
|
117
|
-
/** Snapshot a local edit that is about to be superseded (takeover or conflict
|
|
118
|
-
* resolution) so it is recoverable rather than silently destroyed. */
|
|
119
113
|
export declare function preserveEdit(sectionId: string, content: SectionContent, reason: "takeover" | "conflict"): Promise<string>;
|
|
120
114
|
export declare function listPreservedEdits(): Promise<PreservedEditRow[]>;
|
|
121
115
|
export declare function removePreservedEdit(id: string): Promise<void>;
|
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
|
@@ -12,8 +12,12 @@ var EditorDatabase = class extends Dexie {
|
|
|
12
12
|
pendingMediaDeletions;
|
|
13
13
|
preservedEdits;
|
|
14
14
|
pendingDocuments;
|
|
15
|
+
/** The site this connection was opened for. Authoritative when the `meta` row
|
|
16
|
+
* is missing — see restoreLocalChanges. */
|
|
17
|
+
siteId;
|
|
15
18
|
constructor(siteId) {
|
|
16
19
|
super(`brand-portal-${siteId}`);
|
|
20
|
+
this.siteId = siteId;
|
|
17
21
|
this.version(1).stores({
|
|
18
22
|
sections: "sectionId",
|
|
19
23
|
siteIndex: "key",
|
|
@@ -135,6 +139,8 @@ function getDb() {
|
|
|
135
139
|
return db;
|
|
136
140
|
}
|
|
137
141
|
function initEditorStore(siteId) {
|
|
142
|
+
if (db?.name === `brand-portal-${siteId}`) return;
|
|
143
|
+
db?.close();
|
|
138
144
|
db = new EditorDatabase(siteId);
|
|
139
145
|
}
|
|
140
146
|
async function checkForLocalChanges() {
|
|
@@ -160,7 +166,7 @@ async function restoreLocalChanges() {
|
|
|
160
166
|
const configRow = await getDb().siteConfig.get("current");
|
|
161
167
|
if (indexRow) {
|
|
162
168
|
const metaRow = await getDb().meta.get("current");
|
|
163
|
-
const siteId = metaRow?.siteId
|
|
169
|
+
const siteId = metaRow?.siteId || getDb().siteId;
|
|
164
170
|
return {
|
|
165
171
|
sections,
|
|
166
172
|
siteIndex: { siteId, pages: indexRow.pages, sections: indexRow.sections, nav: indexRow.nav },
|
|
@@ -172,13 +178,14 @@ async function restoreLocalChanges() {
|
|
|
172
178
|
}
|
|
173
179
|
async function discardLocalChanges() {
|
|
174
180
|
const database = getDb();
|
|
175
|
-
await database.transaction("rw", [database.sections, database.siteIndex, database.meta, database.siteConfig, database.pendingMedia, database.pendingMediaDeletions], async () => {
|
|
181
|
+
await database.transaction("rw", [database.sections, database.siteIndex, database.meta, database.siteConfig, database.pendingMedia, database.pendingMediaDeletions, database.pendingDocuments], async () => {
|
|
176
182
|
await database.sections.clear();
|
|
177
183
|
await database.siteIndex.clear();
|
|
178
184
|
await database.meta.clear();
|
|
179
185
|
await database.siteConfig.clear();
|
|
180
186
|
await database.pendingMedia.clear();
|
|
181
187
|
await database.pendingMediaDeletions.clear();
|
|
188
|
+
await database.pendingDocuments.clear();
|
|
182
189
|
});
|
|
183
190
|
}
|
|
184
191
|
async function persistSiteIndex(index, deletedSections = []) {
|
|
@@ -193,13 +200,7 @@ async function persistSiteIndex(index, deletedSections = []) {
|
|
|
193
200
|
deletedSections,
|
|
194
201
|
updatedAt: now
|
|
195
202
|
});
|
|
196
|
-
await database.meta.put({
|
|
197
|
-
key: "current",
|
|
198
|
-
lastSavedSha: null,
|
|
199
|
-
mainSha: null,
|
|
200
|
-
lastSavedAt: null,
|
|
201
|
-
siteId: index.siteId
|
|
202
|
-
});
|
|
203
|
+
await database.meta.put({ key: "current", siteId: index.siteId });
|
|
203
204
|
});
|
|
204
205
|
}
|
|
205
206
|
async function persistSiteConfig(config) {
|
|
@@ -238,12 +239,9 @@ async function discardSavedChanges(savedSections) {
|
|
|
238
239
|
"rw",
|
|
239
240
|
[database.sections, database.siteIndex, database.meta, database.siteConfig, database.contentCache],
|
|
240
241
|
async () => {
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
await database.sections.delete(sectionId);
|
|
245
|
-
}
|
|
246
|
-
}
|
|
242
|
+
const rows = await database.sections.bulkGet(savedSections.map((s) => s.sectionId));
|
|
243
|
+
const untouched = savedSections.filter((s, i) => rows[i]?.updatedAt === s.updatedAt).map((s) => s.sectionId);
|
|
244
|
+
if (untouched.length > 0) await database.sections.bulkDelete(untouched);
|
|
247
245
|
await database.siteIndex.clear();
|
|
248
246
|
await database.meta.clear();
|
|
249
247
|
await database.siteConfig.clear();
|
|
@@ -285,13 +283,7 @@ async function persistAll(sections, siteIndex, deletedSectionIds, siteConfig) {
|
|
|
285
283
|
deletedSections: deletedSectionIds ?? [],
|
|
286
284
|
updatedAt: now
|
|
287
285
|
});
|
|
288
|
-
await database.meta.put({
|
|
289
|
-
key: "current",
|
|
290
|
-
lastSavedSha: null,
|
|
291
|
-
mainSha: null,
|
|
292
|
-
lastSavedAt: null,
|
|
293
|
-
siteId: siteIndex.siteId
|
|
294
|
-
});
|
|
286
|
+
await database.meta.put({ key: "current", siteId: siteIndex.siteId });
|
|
295
287
|
}
|
|
296
288
|
if (siteConfig) {
|
|
297
289
|
await database.siteConfig.put({
|
|
@@ -303,26 +295,6 @@ async function persistAll(sections, siteIndex, deletedSectionIds, siteConfig) {
|
|
|
303
295
|
}
|
|
304
296
|
);
|
|
305
297
|
}
|
|
306
|
-
async function updateBranchShas(savedSha, mainSha) {
|
|
307
|
-
const database = getDb();
|
|
308
|
-
const existing = await database.meta.get("current");
|
|
309
|
-
if (!existing) return;
|
|
310
|
-
await database.meta.put({
|
|
311
|
-
...existing,
|
|
312
|
-
lastSavedSha: savedSha,
|
|
313
|
-
mainSha,
|
|
314
|
-
lastSavedAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
315
|
-
});
|
|
316
|
-
}
|
|
317
|
-
async function getBranchShas() {
|
|
318
|
-
const row = await getDb().meta.get("current");
|
|
319
|
-
if (!row) return null;
|
|
320
|
-
return { savedSha: row.lastSavedSha, mainSha: row.mainSha ?? null };
|
|
321
|
-
}
|
|
322
|
-
async function getDeletedSections() {
|
|
323
|
-
const row = await getDb().siteIndex.get("current");
|
|
324
|
-
return row?.deletedSections ?? [];
|
|
325
|
-
}
|
|
326
298
|
async function cacheContent(sha, sections, index, siteConfig, manifests, diff) {
|
|
327
299
|
const now = (/* @__PURE__ */ new Date()).toISOString();
|
|
328
300
|
await getDb().contentCache.put({
|
|
@@ -336,7 +308,8 @@ async function cacheContent(sha, sections, index, siteConfig, manifests, diff) {
|
|
|
336
308
|
changedSectionIds: diff?.changedSectionIds ?? [],
|
|
337
309
|
mainIndex: diff?.mainIndex ?? null,
|
|
338
310
|
mediaManifest: manifests.media,
|
|
339
|
-
documentManifest: manifests.documents
|
|
311
|
+
documentManifest: manifests.documents,
|
|
312
|
+
unparseableSectionIds: diff?.unparseableSectionIds ?? []
|
|
340
313
|
});
|
|
341
314
|
}
|
|
342
315
|
async function getCachedContent() {
|
|
@@ -353,7 +326,8 @@ async function getCachedContent() {
|
|
|
353
326
|
// so the published index equals the current index.
|
|
354
327
|
mainIndex: row.mainIndex ?? row.index,
|
|
355
328
|
mediaManifest: row.mediaManifest ?? null,
|
|
356
|
-
documentManifest: row.documentManifest ?? null
|
|
329
|
+
documentManifest: row.documentManifest ?? null,
|
|
330
|
+
unparseableSectionIds: row.unparseableSectionIds ?? []
|
|
357
331
|
};
|
|
358
332
|
}
|
|
359
333
|
async function clearContentCache() {
|
|
@@ -404,9 +378,10 @@ async function clearPendingMediaByIds(itemIds, deletionIds) {
|
|
|
404
378
|
if (deletionIds.length > 0) await database.pendingMediaDeletions.bulkDelete(deletionIds);
|
|
405
379
|
});
|
|
406
380
|
}
|
|
381
|
+
var preservedEditSeq = 0;
|
|
407
382
|
async function preserveEdit(sectionId, content, reason) {
|
|
408
383
|
const preservedAt = (/* @__PURE__ */ new Date()).toISOString();
|
|
409
|
-
const id = `${sectionId}:${preservedAt}`;
|
|
384
|
+
const id = `${sectionId}:${preservedAt}:${preservedEditSeq++}`;
|
|
410
385
|
await getDb().preservedEdits.put({ id, sectionId, content, reason, preservedAt });
|
|
411
386
|
return id;
|
|
412
387
|
}
|
|
@@ -443,9 +418,7 @@ export {
|
|
|
443
418
|
deleteSectionRows,
|
|
444
419
|
discardLocalChanges,
|
|
445
420
|
discardSavedChanges,
|
|
446
|
-
getBranchShas,
|
|
447
421
|
getCachedContent,
|
|
448
|
-
getDeletedSections,
|
|
449
422
|
getDirtySectionRows,
|
|
450
423
|
getDirtySections,
|
|
451
424
|
getPendingDocumentBlob,
|
|
@@ -465,6 +438,5 @@ export {
|
|
|
465
438
|
removePendingMediaDeletion,
|
|
466
439
|
removePendingMediaItem,
|
|
467
440
|
removePreservedEdit,
|
|
468
|
-
restoreLocalChanges
|
|
469
|
-
updateBranchShas
|
|
441
|
+
restoreLocalChanges
|
|
470
442
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-ops.d.ts","sourceRoot":"","sources":["../../src/lib/index-ops.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index-ops.d.ts","sourceRoot":"","sources":["../../src/lib/index-ops.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/index-ops.js
CHANGED
|
@@ -11,14 +11,14 @@ import {
|
|
|
11
11
|
setGroupStartCollapsed,
|
|
12
12
|
slugifyPageSlug,
|
|
13
13
|
uniquePageSlug
|
|
14
|
-
} from "../chunk-
|
|
14
|
+
} from "../chunk-OTDA6KWL.js";
|
|
15
15
|
import {
|
|
16
16
|
IndexSchema,
|
|
17
17
|
PageStatusSchema,
|
|
18
18
|
RESERVED_SLUGS,
|
|
19
19
|
SLUG_RE
|
|
20
|
-
} from "../chunk-
|
|
21
|
-
import "../chunk-
|
|
20
|
+
} from "../chunk-UVIYI4J6.js";
|
|
21
|
+
import "../chunk-4TZJZU2T.js";
|
|
22
22
|
import "../chunk-GGXZZ77Z.js";
|
|
23
23
|
import "../chunk-JSBRDJBE.js";
|
|
24
24
|
|
|
@@ -157,10 +157,18 @@ function applyIndexOps(rawIndex, ops, newSectionTypes) {
|
|
|
157
157
|
...base.data,
|
|
158
158
|
pages: base.data.pages.map((p) => ({ ...p, order: [...p.order] })),
|
|
159
159
|
sections: Object.fromEntries(Object.entries(base.data.sections).map(([k, v]) => [k, { ...v }])),
|
|
160
|
-
|
|
160
|
+
// COPIED, not aliased. Taking the caller's array by reference meant any nav
|
|
161
|
+
// op that spliced in place would mutate the caller's index — the one thing
|
|
162
|
+
// this function's own comment promises it never does.
|
|
163
|
+
...Array.isArray(rawNav) ? {
|
|
164
|
+
nav: rawNav.map(
|
|
165
|
+
(entry) => entry && typeof entry === "object" && "pageIds" in entry ? { ...entry, pageIds: [...entry.pageIds] } : { ...entry }
|
|
166
|
+
)
|
|
167
|
+
} : {}
|
|
161
168
|
};
|
|
162
169
|
const removed = /* @__PURE__ */ new Set();
|
|
163
170
|
const warnings = [];
|
|
171
|
+
const advisories = [];
|
|
164
172
|
const fail = (error) => ({ ok: false, error });
|
|
165
173
|
let navTouched = false;
|
|
166
174
|
for (const [i, op] of ops.entries()) {
|
|
@@ -198,12 +206,7 @@ function applyIndexOps(rawIndex, ops, newSectionTypes) {
|
|
|
198
206
|
return fail(`${at}: section "${s.id}" has no usable body in this call \u2014 post its full body ({ "type": "...", "content": {...} }) in \`sections\` in the same save; an inserted section's type comes from the body.`);
|
|
199
207
|
}
|
|
200
208
|
const meta = { type, status: s.status ?? "draft", access: s.access ?? [] };
|
|
201
|
-
|
|
202
|
-
if (stranded.length > 0) {
|
|
203
|
-
warnings.push(
|
|
204
|
-
`${at}: section "${s.id}" carries audience(s) ${fmt(stranded)} that page "${op.pageId}" does not allow, so no audienced viewer will see it \u2014 clear it with setMeta, or widen the page's access.`
|
|
205
|
-
);
|
|
206
|
-
}
|
|
209
|
+
advisories.push({ kind: "section", at, sectionId: s.id, pageId: op.pageId });
|
|
207
210
|
metas.push([s.id, meta]);
|
|
208
211
|
}
|
|
209
212
|
page2.order.splice(position, 0, ...metas.map(([id]) => id));
|
|
@@ -228,12 +231,7 @@ function applyIndexOps(rawIndex, ops, newSectionTypes) {
|
|
|
228
231
|
position = idx + 1;
|
|
229
232
|
}
|
|
230
233
|
dest.order.splice(position, 0, op.id);
|
|
231
|
-
|
|
232
|
-
if (stranded.length > 0) {
|
|
233
|
-
warnings.push(
|
|
234
|
-
`${at}: section "${op.id}" carries audience(s) ${fmt(stranded)} that page "${op.pageId}" does not allow, so no audienced viewer will see it \u2014 clear it with setMeta, or widen the page's access.`
|
|
235
|
-
);
|
|
236
|
-
}
|
|
234
|
+
advisories.push({ kind: "section", at, sectionId: op.id, pageId: op.pageId });
|
|
237
235
|
continue;
|
|
238
236
|
}
|
|
239
237
|
if (op.op === "remove") {
|
|
@@ -370,6 +368,12 @@ function applyIndexOps(rawIndex, ops, newSectionTypes) {
|
|
|
370
368
|
if (op.slug !== void 0 && RESERVED_SLUGS.includes(op.slug)) {
|
|
371
369
|
return fail(`${at}: slug "${op.slug}" is reserved by a platform route and would shadow this page. Pick another slug.`);
|
|
372
370
|
}
|
|
371
|
+
if (op.slug !== void 0 && !SLUG_RE.test(op.slug)) {
|
|
372
|
+
return fail(`${at}: slug "${op.slug}" is not a valid URL slug \u2014 use lowercase words joined by dashes (e.g. "brand-guide").`);
|
|
373
|
+
}
|
|
374
|
+
if (op.slug !== void 0 && index.pages.some((p) => p.id !== op.pageId && p.slug === op.slug)) {
|
|
375
|
+
return fail(`${at}: slug "${op.slug}" is already used by another page. Slugs must be unique.`);
|
|
376
|
+
}
|
|
373
377
|
if (op.title !== void 0) page.title = op.title;
|
|
374
378
|
if (op.slug !== void 0) page.slug = op.slug;
|
|
375
379
|
if (op.showInNav !== void 0) page.showInNav = op.showInNav;
|
|
@@ -377,14 +381,30 @@ function applyIndexOps(rawIndex, ops, newSectionTypes) {
|
|
|
377
381
|
if (op.access !== void 0) {
|
|
378
382
|
const dropped = page.access.filter((a) => !op.access.includes(a));
|
|
379
383
|
page.access = op.access;
|
|
380
|
-
if (dropped.length > 0
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
384
|
+
if (dropped.length > 0) advisories.push({ kind: "pageAccess", at, pageId: op.pageId, dropped });
|
|
385
|
+
}
|
|
386
|
+
}
|
|
387
|
+
for (const advisory of advisories) {
|
|
388
|
+
const page = index.pages.find((p) => p.id === advisory.pageId);
|
|
389
|
+
if (!page || page.access.length === 0) continue;
|
|
390
|
+
if (advisory.kind === "section") {
|
|
391
|
+
const meta = index.sections[advisory.sectionId];
|
|
392
|
+
if (!meta || !page.order.includes(advisory.sectionId)) continue;
|
|
393
|
+
const stranded2 = meta.access.filter((a) => !page.access.includes(a));
|
|
394
|
+
if (stranded2.length > 0) {
|
|
395
|
+
warnings.push(
|
|
396
|
+
`${advisory.at}: section "${advisory.sectionId}" carries audience(s) ${fmt(stranded2)} that page "${advisory.pageId}" does not allow, so no audienced viewer will see it \u2014 clear it with setMeta, or widen the page's access.`
|
|
397
|
+
);
|
|
387
398
|
}
|
|
399
|
+
continue;
|
|
400
|
+
}
|
|
401
|
+
const dropped = advisory.dropped.filter((a) => !page.access.includes(a));
|
|
402
|
+
if (dropped.length === 0) continue;
|
|
403
|
+
const stranded = page.order.filter((id) => index.sections[id]?.access.some((a) => dropped.includes(a)));
|
|
404
|
+
if (stranded.length > 0) {
|
|
405
|
+
warnings.push(
|
|
406
|
+
`${advisory.at}: section(s) ${fmt(stranded)} still carry audience(s) ${fmt(dropped)} that page "${advisory.pageId}" no longer allows, so no audienced viewer will see them \u2014 clear them with setMeta.`
|
|
407
|
+
);
|
|
388
408
|
}
|
|
389
409
|
}
|
|
390
410
|
const removedIds = [...removed].filter((id) => !index.sections[id]);
|
package/dist/lib/index.js
CHANGED
|
@@ -18,8 +18,8 @@ import {
|
|
|
18
18
|
safeRedirect,
|
|
19
19
|
suggestAccessibleOn,
|
|
20
20
|
wcagLevel
|
|
21
|
-
} from "../chunk-
|
|
22
|
-
import "../chunk-
|
|
21
|
+
} from "../chunk-VCCNKTFD.js";
|
|
22
|
+
import "../chunk-FRVO75DK.js";
|
|
23
23
|
import {
|
|
24
24
|
curatedIcons,
|
|
25
25
|
getIcon
|
|
@@ -35,7 +35,7 @@ import {
|
|
|
35
35
|
generateNavLinks,
|
|
36
36
|
sanitizeHtml,
|
|
37
37
|
toSectionId
|
|
38
|
-
} from "../chunk-
|
|
38
|
+
} from "../chunk-RA5IOFPY.js";
|
|
39
39
|
import {
|
|
40
40
|
cn
|
|
41
41
|
} from "../chunk-7EOSDFS3.js";
|
|
@@ -50,9 +50,9 @@ import {
|
|
|
50
50
|
navEntries,
|
|
51
51
|
pagesInNavOrder,
|
|
52
52
|
reconcileNav
|
|
53
|
-
} from "../chunk-
|
|
53
|
+
} from "../chunk-OTDA6KWL.js";
|
|
54
54
|
import "../chunk-REDDTTGJ.js";
|
|
55
|
-
import "../chunk-
|
|
55
|
+
import "../chunk-DMCGN5AS.js";
|
|
56
56
|
import {
|
|
57
57
|
clearRegistry,
|
|
58
58
|
createRegistry,
|
|
@@ -63,9 +63,9 @@ import {
|
|
|
63
63
|
getSection,
|
|
64
64
|
registerSchema,
|
|
65
65
|
registerSection
|
|
66
|
-
} from "../chunk-
|
|
67
|
-
import "../chunk-
|
|
68
|
-
import "../chunk-
|
|
66
|
+
} from "../chunk-FTPETWXE.js";
|
|
67
|
+
import "../chunk-UVIYI4J6.js";
|
|
68
|
+
import "../chunk-4TZJZU2T.js";
|
|
69
69
|
import "../chunk-GGXZZ77Z.js";
|
|
70
70
|
import "../chunk-NSCT3AMV.js";
|
|
71
71
|
import "../chunk-JSBRDJBE.js";
|
package/dist/lib/loader.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/lib/loader.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/lib/loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2B,KAAK,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC5E,OAAO,EAAe,KAAK,SAAS,EAAE,KAAK,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAMvF,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,WAAW,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,KAAK,EAAE,SAAS,CAAC;IACjB;;;;2BAIuB;IACvB,WAAW,EAAE,OAAO,CAAC;CACtB;AA+BD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,SAAS,EAChB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACrC,OAAO,CAAC,EAAE,OAAO,GAChB,WAAW,CAsDb;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,SAAS,EAChB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACpC,OAAO,CAAC,EAAE,OAAO,GAChB,WAAW,CAQb;AAED;;;GAGG;AACH,wBAAsB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CA6C9E"}
|
|
@@ -59,11 +59,19 @@ export declare function healMediaManifest(manifest: MediaManifest): MediaManifes
|
|
|
59
59
|
*
|
|
60
60
|
* Images union, ours winning, so local alt/folder-move edits survive; a pending
|
|
61
61
|
* local deletion isn't removed from the manifest until save, so the union can't
|
|
62
|
-
* resurrect one.
|
|
63
|
-
*
|
|
64
|
-
*
|
|
62
|
+
* resurrect one. Mirrors the server-side merge in core's content-ops.
|
|
63
|
+
*
|
|
64
|
+
* Folders union too, minus the ones we deleted — which is why `base` (the
|
|
65
|
+
* manifest we diverged from, i.e. the last one we fetched) is needed: a folder
|
|
66
|
+
* deletion just removes the entry from our map, so without a baseline "we
|
|
67
|
+
* deleted it" and "they created it" are the same shape. Keeping folders ours
|
|
68
|
+
* verbatim, as this did, silently dropped a concurrent writer's new folders and
|
|
69
|
+
* then let `healMediaManifest` strip the now-dangling `folderId` off their
|
|
70
|
+
* images, flattening their whole organisation to root on our next save.
|
|
71
|
+
*
|
|
72
|
+
* Without `base` it degrades to the old folders-stay-ours behaviour.
|
|
65
73
|
*/
|
|
66
|
-
export declare function rebaseMediaManifest(local: MediaManifest, remote: MediaManifest): MediaManifest;
|
|
74
|
+
export declare function rebaseMediaManifest(local: MediaManifest, remote: MediaManifest, base?: MediaManifest): MediaManifest;
|
|
67
75
|
/**
|
|
68
76
|
* Save-time manifest assembly: merge uploaded pending items, apply deletions,
|
|
69
77
|
* preserve every other manifest key (folders!), then heal.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"media-folders.d.ts","sourceRoot":"","sources":["../../src/lib/media-folders.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE5E,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,cAAc,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,gBAAgB;IAC/B,2EAA2E;IAC3E,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACxC,6DAA6D;IAC7D,WAAW,EAAE;QAAE,IAAI,EAAE,IAAI,CAAC;QAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,EAAE,CAAC;CACxD;AAED;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,yBAAyB,CAAC;AAE1D,gFAAgF;AAChF,wBAAgB,cAAc,IAAI,MAAM,CAIvC;AAED,iEAAiE;AACjE,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAQxF;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAIjG;AAED,wEAAwE;AACxE,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,EAAE,CAItG;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,GAAG,cAAc,EAAE,CAQtF;AAED,qDAAqD;AACrD,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE,CAQ1F;AAED,0DAA0D;AAC1D,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE,CAQxF;AAED,2EAA2E;AAC3E,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,EAAE,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAgBjG;AAED,yFAAyF;AACzF,wBAAgB,aAAa,CAC3B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,EACpC,EAAE,EAAE,MAAM,EACV,cAAc,EAAE,MAAM,GAAG,IAAI,GAC5B,OAAO,CAMT;AAED,8FAA8F;AAC9F,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,EACpC,QAAQ,EAAE,MAAM,GAAG,IAAI,EACvB,OAAO,EAAE,MAAM,EACf,SAAS,CAAC,EAAE,MAAM,GACjB,MAAM,CAYR;AAED,8FAA8F;AAC9F,wBAAgB,YAAY,CAC1B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,EACpC,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,GAChC,MAAM,GAAG,IAAI,CAEf;AAED,kFAAkF;AAClF,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,EACpC,KAAK,EAAE,SAAS,EAAE,GACjB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAYxB;AAED,8EAA8E;AAC9E,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,aAAa,GAAG,aAAa,CAexE;AAED
|
|
1
|
+
{"version":3,"file":"media-folders.d.ts","sourceRoot":"","sources":["../../src/lib/media-folders.ts"],"names":[],"mappings":"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"}
|
|
@@ -117,8 +117,18 @@ function healMediaManifest(manifest) {
|
|
|
117
117
|
}
|
|
118
118
|
return { ...manifest, images, folders };
|
|
119
119
|
}
|
|
120
|
-
function rebaseMediaManifest(local, remote) {
|
|
121
|
-
|
|
120
|
+
function rebaseMediaManifest(local, remote, base) {
|
|
121
|
+
const images = { ...remote.images, ...local.images };
|
|
122
|
+
if (!base) return { ...local, images };
|
|
123
|
+
const deletedLocally = new Set(
|
|
124
|
+
Object.keys(base.folders).filter((id) => !(id in local.folders))
|
|
125
|
+
);
|
|
126
|
+
const folders = {};
|
|
127
|
+
for (const [id, folder] of Object.entries(remote.folders)) {
|
|
128
|
+
if (!deletedLocally.has(id)) folders[id] = folder;
|
|
129
|
+
}
|
|
130
|
+
for (const [id, folder] of Object.entries(local.folders)) folders[id] = folder;
|
|
131
|
+
return { ...local, images, folders };
|
|
122
132
|
}
|
|
123
133
|
function assembleSavedManifest(manifest, uploadedItems, deletedIds) {
|
|
124
134
|
const images = { ...manifest.images };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nav-tree.d.ts","sourceRoot":"","sources":["../../src/lib/nav-tree.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAE9D;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"nav-tree.d.ts","sourceRoot":"","sources":["../../src/lib/nav-tree.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAE9D;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,QAAQ,EAAE,CAwD3E;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,SAAS,GAAG,QAAQ,EAAE,CAEvD;AAED,oFAAoF;AACpF,wBAAgB,eAAe,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,EAAE,CAexD;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAKlF;AAED,0FAA0F;AAC1F,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED,uFAAuF;AACvF,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,MAAM,MAAM,GACd;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACvE;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACjD;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAIxC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAMrB,wBAAgB,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,CAKrE;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,CAIvF;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,OAAO,GAAG,SAAS,CAI5G;AAED,mFAAmF;AACnF,wBAAgB,WAAW,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,CAUxE;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,WAAW,GAAG,SAAS,CAgC5F"}
|
package/dist/lib/nav.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nav.d.ts","sourceRoot":"","sources":["../../src/lib/nav.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAc,KAAK,eAAe,EAAE,MAAM,YAAY,CAAC;AAG9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,EAAE,CAAC;CACrB;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAchD;AAED,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,aAAa,EAAE,EACzB,QAAQ,CAAC,EAAE,eAAe,GACzB,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"nav.d.ts","sourceRoot":"","sources":["../../src/lib/nav.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAc,KAAK,eAAe,EAAE,MAAM,YAAY,CAAC;AAG9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,EAAE,CAAC;CACrB;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAchD;AAED,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,aAAa,EAAE,EACzB,QAAQ,CAAC,EAAE,eAAe,GACzB,OAAO,EAAE,CA8DX;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,OAAO,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,OAAO,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,OAAO,CAAC;IACxB,KAAK,EAAE,WAAW,EAAE,CAAC;CACtB;AAED;;qBAEqB;AACrB,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,KAAK,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb;AAED;iFACiF;AACjF,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,WAAW,CAAC;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,UAAU,EAAE,CAAC;CACpB;AAED;2CAC2C;AAC3C,eAAO,MAAM,kBAAkB,kBAAkB,CAAC;AAElD,MAAM,MAAM,YAAY,GAAG,CAAC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,WAAW,CAAC,GAAG,YAAY,GAAG,eAAe,CAAC;AAE7F,MAAM,WAAW,OAAO;IACtB,+DAA+D;IAC/D,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,iFAAiF;IACjF,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,OAAO,EAAE,WAAW,EAAE,CAAC;CACxB;AAMD,wBAAgB,eAAe,CAAC,IAAI,EAAE;IACpC,KAAK,EAAE,SAAS,CAAC;IACjB,cAAc,EAAE,aAAa,EAAE,CAAC;IAChC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC1B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B;;;;;2BAKuB;IACvB,SAAS,CAAC,EAAE,YAAY,EAAE,CAAC;CAC5B,GAAG,OAAO,CAkEV"}
|