@actuate-media/cms-admin 0.47.0 → 0.48.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +9 -0
- package/dist/__tests__/views/use-site-preview.render.test.d.ts +2 -0
- package/dist/__tests__/views/use-site-preview.render.test.d.ts.map +1 -0
- package/dist/__tests__/views/use-site-preview.render.test.js +86 -0
- package/dist/__tests__/views/use-site-preview.render.test.js.map +1 -0
- package/dist/views/page-editor/EditorTopBar.d.ts +8 -1
- package/dist/views/page-editor/EditorTopBar.d.ts.map +1 -1
- package/dist/views/page-editor/EditorTopBar.js +7 -3
- package/dist/views/page-editor/EditorTopBar.js.map +1 -1
- package/dist/views/page-editor/PageSectionEditor.d.ts.map +1 -1
- package/dist/views/page-editor/PageSectionEditor.js +14 -1
- package/dist/views/page-editor/PageSectionEditor.js.map +1 -1
- package/dist/views/page-editor/SitePreviewFrame.d.ts +18 -0
- package/dist/views/page-editor/SitePreviewFrame.d.ts.map +1 -0
- package/dist/views/page-editor/SitePreviewFrame.js +45 -0
- package/dist/views/page-editor/SitePreviewFrame.js.map +1 -0
- package/dist/views/page-editor/useSitePreview.d.ts +33 -0
- package/dist/views/page-editor/useSitePreview.d.ts.map +1 -0
- package/dist/views/page-editor/useSitePreview.js +72 -0
- package/dist/views/page-editor/useSitePreview.js.map +1 -0
- package/dist/views/post-editor/PostSectionEditor.d.ts.map +1 -1
- package/dist/views/post-editor/PostSectionEditor.js +14 -1
- package/dist/views/post-editor/PostSectionEditor.js.map +1 -1
- package/package.json +2 -2
- package/src/__tests__/views/use-site-preview.render.test.tsx +122 -0
- package/src/views/page-editor/EditorTopBar.tsx +31 -0
- package/src/views/page-editor/PageSectionEditor.tsx +33 -8
- package/src/views/page-editor/SitePreviewFrame.tsx +85 -0
- package/src/views/page-editor/useSitePreview.ts +117 -0
- package/src/views/post-editor/PostSectionEditor.tsx +35 -10
|
@@ -12,6 +12,8 @@ import { buildPublicPreviewUrl, createPreviewToken, resolveSiteUrl, } from '../.
|
|
|
12
12
|
import { hasCanvasRenderer, useAdminSectionRenderers, } from '../page-editor/sections/index.js';
|
|
13
13
|
import { DEFAULT_VIEWPORT } from '../page-editor/viewports.js';
|
|
14
14
|
import { EditorTopBar } from '../page-editor/EditorTopBar.js';
|
|
15
|
+
import { SitePreviewFrame } from '../page-editor/SitePreviewFrame.js';
|
|
16
|
+
import { useSitePreview } from '../page-editor/useSitePreview.js';
|
|
15
17
|
import { SectionsPanel } from '../page-editor/SectionsPanel.js';
|
|
16
18
|
import { SectionInspector } from '../page-editor/SectionInspector.js';
|
|
17
19
|
import { AddSectionModal } from '../page-editor/AddSectionModal.js';
|
|
@@ -202,6 +204,17 @@ export function PostSectionEditor({ postType, documentId, config, session, onNav
|
|
|
202
204
|
return false;
|
|
203
205
|
}
|
|
204
206
|
}, [post, documentId, postType, onNavigate]);
|
|
207
|
+
// Inline branded preview — iframe of the public site rendering this draft.
|
|
208
|
+
const sitePreview = useSitePreview({
|
|
209
|
+
collection: postType,
|
|
210
|
+
documentId: post?.id,
|
|
211
|
+
slug: post?.slug,
|
|
212
|
+
urlPrefix: config?.collections?.[postType]?.urlPrefix ?? postType,
|
|
213
|
+
siteUrl: config?.seo?.siteUrl,
|
|
214
|
+
dirty,
|
|
215
|
+
saveState,
|
|
216
|
+
saveDraft: handleSaveDraft,
|
|
217
|
+
});
|
|
205
218
|
const requestPublish = useCallback(() => {
|
|
206
219
|
if (!post)
|
|
207
220
|
return;
|
|
@@ -333,7 +346,7 @@ export function PostSectionEditor({ postType, documentId, config, session, onNav
|
|
|
333
346
|
const structuralTypes = Array.from(new Set(post.sections
|
|
334
347
|
.filter((s) => !hasCanvasRenderer(s.sectionType) && !customRenderers[s.sectionType])
|
|
335
348
|
.map((s) => s.sectionType)));
|
|
336
|
-
return (_jsxs(ErrorBoundary, { children: [_jsxs("div", { className: "bg-background flex h-full flex-col overflow-hidden", children: [_jsx(EditorTopBar, { title: post.title || `New ${typeLabel}`, status: post.status, dirty: dirty, saveState: saveState, publishing: publishing, canEdit: canEdit, canPublish: canPublish && canEdit, viewport: viewport, backLabel: "Posts", onViewport: setViewport, onBack: () => guardedNavigate('/posts'), onPreview: handlePreview, onViewOnSite: post.id ? handleViewOnSite : undefined, onHistory: post.id ? () => setHistoryOpen(true) : undefined, onOpenSettings: () => setFieldsOpen(true), onSaveDraft: handleSaveDraft, onPublish: requestPublish, structuralTypes: structuralTypes }), unmanagedTypes.length > 0 && (_jsxs("div", { role: "status", className: "border-border bg-muted/50 flex items-start gap-3 border-b px-4 py-2.5", children: [_jsx(Lock, { className: "text-muted-foreground mt-0.5 shrink-0", size: 16, "aria-hidden": true }), _jsxs("p", { className: "text-muted-foreground flex-1 text-sm", children: ["This post has", ' ', _jsxs("span", { className: "text-foreground font-medium", children: [unmanagedTypes.length, " section type", unmanagedTypes.length > 1 ? 's' : ''] }), ' ', "managed outside the editor (", unmanagedTypes.join(', '), "). They are preserved on save but edited in your seed script or code, not here."] })] })), validation && (_jsx(ValidationSummary, { errors: validation.errors, warnings: validation.warnings, onDismiss: () => setValidation(null) })), _jsxs("div", { className: "flex flex-1 overflow-hidden", children: [_jsx(SectionsPanel, { sections: post.sections, selectedId: selectedId, canEdit: canEdit, onSelect: setSelectedId, onReorder: handleReorder, onToggleVisibility: handleToggleVisibility, onDuplicate: handleDuplicate, onRequestDelete: (id) => setDeleteTargetId(id), onAdd: () => setAddOpen(true) }), _jsx("div", { className: "flex-1 overflow-hidden", children: _jsx(PostEditorCanvas, { sections: post.sections, header: header, context: context, selectedId: selectedId, viewport: viewport, onSelect: setSelectedId, onAddSection: () => setAddOpen(true), structuralTypes: structuralTypes }) }), selected && (_jsx(SectionInspector, { section: selected, canEdit: canEdit, onClose: () => setSelectedId(null), onContentChange: handleContentChange, onSettingsChange: handleSettingsChange, onMetaChange: handleMetaChange, onToggleVisibility: () => handleToggleVisibility(selected.id) }))] })] }), _jsx(AddSectionModal, { open: addOpen, scope: "post", onClose: () => setAddOpen(false), onAdd: handleAdd }), post.id && (_jsx(VersionHistory, { collectionSlug: postType, documentId: post.id, open: historyOpen, onClose: () => setHistoryOpen(false), onRestore: handleRestored })), _jsx(PostFieldsModal, { open: fieldsOpen, post: post, canEdit: canEdit, fields: config?.collections?.[postType]?.fields, onClose: () => setFieldsOpen(false), onSave: handleFields }), _jsx(ConfirmDialog, { open: deleteTargetId !== null, onClose: () => setDeleteTargetId(null), onConfirm: confirmDelete, title: "Delete section?", description: "This removes the section from the post. You can undo by leaving without saving.", confirmLabel: "Delete", destructive: true }), _jsx(ConfirmDialog, { open: confirmPublish, onClose: () => setConfirmPublish(false), onConfirm: doPublish, title: "Publish this post?", description: "The current content will go live and replace the published version.", confirmLabel: "Publish" }), _jsx(ConfirmDialog, { open: leaveTarget !== null, onClose: () => setLeaveTarget(null), onConfirm: () => {
|
|
349
|
+
return (_jsxs(ErrorBoundary, { children: [_jsxs("div", { className: "bg-background flex h-full flex-col overflow-hidden", children: [_jsx(EditorTopBar, { title: post.title || `New ${typeLabel}`, status: post.status, dirty: dirty, saveState: saveState, publishing: publishing, canEdit: canEdit, canPublish: canPublish && canEdit, viewport: viewport, backLabel: "Posts", onViewport: setViewport, onBack: () => guardedNavigate('/posts'), onPreview: handlePreview, onViewOnSite: post.id ? handleViewOnSite : undefined, sitePreview: sitePreview.active, onToggleSitePreview: post.id && post.slug ? sitePreview.toggle : undefined, onHistory: post.id ? () => setHistoryOpen(true) : undefined, onOpenSettings: () => setFieldsOpen(true), onSaveDraft: handleSaveDraft, onPublish: requestPublish, structuralTypes: structuralTypes }), unmanagedTypes.length > 0 && (_jsxs("div", { role: "status", className: "border-border bg-muted/50 flex items-start gap-3 border-b px-4 py-2.5", children: [_jsx(Lock, { className: "text-muted-foreground mt-0.5 shrink-0", size: 16, "aria-hidden": true }), _jsxs("p", { className: "text-muted-foreground flex-1 text-sm", children: ["This post has", ' ', _jsxs("span", { className: "text-foreground font-medium", children: [unmanagedTypes.length, " section type", unmanagedTypes.length > 1 ? 's' : ''] }), ' ', "managed outside the editor (", unmanagedTypes.join(', '), "). They are preserved on save but edited in your seed script or code, not here."] })] })), validation && (_jsx(ValidationSummary, { errors: validation.errors, warnings: validation.warnings, onDismiss: () => setValidation(null) })), _jsxs("div", { className: "flex flex-1 overflow-hidden", children: [_jsx(SectionsPanel, { sections: post.sections, selectedId: selectedId, canEdit: canEdit, onSelect: setSelectedId, onReorder: handleReorder, onToggleVisibility: handleToggleVisibility, onDuplicate: handleDuplicate, onRequestDelete: (id) => setDeleteTargetId(id), onAdd: () => setAddOpen(true) }), _jsx("div", { className: "flex-1 overflow-hidden", children: sitePreview.active ? (_jsx(SitePreviewFrame, { src: sitePreview.url, viewport: viewport, reloadKey: sitePreview.reloadKey, title: `Site preview: ${post.title || `New ${typeLabel}`}` })) : (_jsx(PostEditorCanvas, { sections: post.sections, header: header, context: context, selectedId: selectedId, viewport: viewport, onSelect: setSelectedId, onAddSection: () => setAddOpen(true), structuralTypes: structuralTypes })) }), selected && (_jsx(SectionInspector, { section: selected, canEdit: canEdit, onClose: () => setSelectedId(null), onContentChange: handleContentChange, onSettingsChange: handleSettingsChange, onMetaChange: handleMetaChange, onToggleVisibility: () => handleToggleVisibility(selected.id) }))] })] }), _jsx(AddSectionModal, { open: addOpen, scope: "post", onClose: () => setAddOpen(false), onAdd: handleAdd }), post.id && (_jsx(VersionHistory, { collectionSlug: postType, documentId: post.id, open: historyOpen, onClose: () => setHistoryOpen(false), onRestore: handleRestored })), _jsx(PostFieldsModal, { open: fieldsOpen, post: post, canEdit: canEdit, fields: config?.collections?.[postType]?.fields, onClose: () => setFieldsOpen(false), onSave: handleFields }), _jsx(ConfirmDialog, { open: deleteTargetId !== null, onClose: () => setDeleteTargetId(null), onConfirm: confirmDelete, title: "Delete section?", description: "This removes the section from the post. You can undo by leaving without saving.", confirmLabel: "Delete", destructive: true }), _jsx(ConfirmDialog, { open: confirmPublish, onClose: () => setConfirmPublish(false), onConfirm: doPublish, title: "Publish this post?", description: "The current content will go live and replace the published version.", confirmLabel: "Publish" }), _jsx(ConfirmDialog, { open: leaveTarget !== null, onClose: () => setLeaveTarget(null), onConfirm: () => {
|
|
337
350
|
const target = leaveTarget;
|
|
338
351
|
setLeaveTarget(null);
|
|
339
352
|
setDirty(false);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PostSectionEditor.js","sourceRoot":"","sources":["../../../src/views/post-editor/PostSectionEditor.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"PostSectionEditor.js","sourceRoot":"","sources":["../../../src/views/post-editor/PostSectionEditor.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AACjE,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAA;AAC3D,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AAC9B,OAAO,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAA;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAA;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAA;AACnE,OAAO,EACL,UAAU,EACV,aAAa,EACb,gBAAgB,EAChB,qBAAqB,EACrB,kBAAkB,EAClB,sBAAsB,EACtB,iBAAiB,EAEjB,WAAW,EACX,aAAa,EACb,eAAe,EACf,aAAa,EACb,uBAAuB,EACvB,oBAAoB,EACpB,iBAAiB,EACjB,qBAAqB,EACrB,YAAY,GAIb,MAAM,kCAAkC,CAAA;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAA;AACzE,OAAO,EACL,qBAAqB,EACrB,kBAAkB,EAClB,cAAc,GACf,MAAM,2BAA2B,CAAA;AAElC,OAAO,EACL,iBAAiB,EACjB,wBAAwB,GAEzB,MAAM,kCAAkC,CAAA;AACzC,OAAO,EAAE,gBAAgB,EAAmB,MAAM,6BAA6B,CAAA;AAC/E,OAAO,EAAE,YAAY,EAAkB,MAAM,gCAAgC,CAAA;AAC7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAA;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAA;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAA;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAA;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAA;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAA;AACvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,eAAe,EAAwB,MAAM,sBAAsB,CAAA;AAoC5E,SAAS,SAAS,CAAC,OAAkC;IAInD,MAAM,IAAI,GAAG,OAAO,EAAE,IAAI,EAAE,IAAI,CAAA;IAChC,uEAAuE;IACvE,2EAA2E;IAC3E,0EAA0E;IAC1E,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,CAAA;IACvD,MAAM,OAAO,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAA;IAC7C,MAAM,UAAU,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;IACtC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAA;AACnF,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,EAChC,QAAQ,EACR,UAAU,EACV,MAAM,EACN,OAAO,EACP,UAAU,EACV,aAAa,GACU;IACvB,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAoB,IAAI,CAAC,CAAA;IACzD,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAmB,iBAAiB,EAAE,CAAC,CAAA;IAC3E,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAA;IAC5C,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAA;IAE/D,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAA;IACjE,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAa,gBAAgB,CAAC,CAAA;IACtE,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IACzC,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAY,MAAM,CAAC,CAAA;IAC7D,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAEnD,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC7C,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IACnD,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IACrD,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAA;IACzE,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC3D,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAA;IACnE,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAA0B,IAAI,CAAC,CAAA;IAE3E,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAA;IAC5E,MAAM,eAAe,GAAG,wBAAwB,EAAE,CAAA;IAElD,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE;QAC7B,MAAM,GAAG,GAAG,MAAM,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAA;QAC3C,OAAO,GAAG,EAAE,MAAM,EAAE,QAAQ,IAAI,QAAQ,CAAA;IAC1C,CAAC,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAA;IAEtB,sEAAsE;IACtE,oEAAoE;IACpE,wEAAwE;IACxE,sEAAsE;IACtE,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE;QAC/B,MAAM,OAAO,GAAG,iBAAiB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;QACnD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAA;QACrC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAA;QACjC,OAAO,CACL,QAAQ,QAAQ,yCAAyC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI;YAC9E,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,sBAAsB;YAC9E,qDAAqD,CACtD,CAAA;IACH,CAAC,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAA;IAEtB,sEAAsE;IACtE,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,SAAS,GAAG,KAAK,CAAA;QACrB,UAAU,CAAC,IAAI,CAAC,CAAA;QAChB,YAAY,CAAC,IAAI,CAAC,CAAA;QAElB,wEAAwE;QACxE,yEAAyE;QACzE,IAAI,WAAW,EAAE,CAAC;YAChB,YAAY,CAAC,WAAW,CAAC,CAAA;YACzB,UAAU,CAAC,KAAK,CAAC,CAAA;YACjB,OAAM;QACR,CAAC;QAED,uEAAuE;QACvE,2DAA2D;QAC3D,sBAAsB,CAAC,QAAQ,CAAC;aAC7B,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;YACV,IAAI,CAAC,SAAS;gBAAE,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;QACrC,CAAC,CAAC;aACD,KAAK,CAAC,GAAG,EAAE;YACV,qCAAqC;QACvC,CAAC,CAAC,CAAA;QAEJ,MAAM,IAAI,GAAG,UAAU;YACrB,CAAC,CAAC,kBAAkB,CAAC,QAAQ,EAAE,UAAU,CAAC;YAC1C,CAAC,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAA;QAEnC,IAAI;aACD,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;YACV,IAAI,SAAS;gBAAE,OAAM;YACrB,OAAO,CAAC,CAAC,CAAC,CAAA;YACV,aAAa,CAAC,IAAI,CAAC,CAAA;YACnB,IAAI,CAAC,UAAU;gBAAE,QAAQ,CAAC,IAAI,CAAC,CAAA;QACjC,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YACb,IAAI,CAAC,SAAS;gBAAE,YAAY,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAA;QAC1F,CAAC,CAAC;aACD,OAAO,CAAC,GAAG,EAAE;YACZ,IAAI,CAAC,SAAS;gBAAE,UAAU,CAAC,KAAK,CAAC,CAAA;QACnC,CAAC,CAAC,CAAA;QAEJ,OAAO,GAAG,EAAE;YACV,SAAS,GAAG,IAAI,CAAA;QAClB,CAAC,CAAA;IACH,CAAC,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC,CAAA;IAEvC,wEAAwE;IACxE,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,KAAK;YAAE,OAAM;QAClB,SAAS,cAAc,CAAC,CAAoB;YAC1C,CAAC,CAAC,cAAc,EAAE,CAAA;YAClB,CAAC,CAAC,WAAW,GAAG,EAAE,CAAA;QACpB,CAAC;QACD,MAAM,CAAC,gBAAgB,CAAC,cAAc,EAAE,cAAc,CAAC,CAAA;QACvD,OAAO,GAAG,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,cAAc,EAAE,cAAc,CAAC,CAAA;IACzE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAA;IAEX,MAAM,OAAO,GAAsB,OAAO,CACxC,GAAG,EAAE,CAAC,CAAC;QACL,KAAK,EAAE,IAAI,EAAE,KAAK;QAClB,OAAO,EAAE,IAAI,EAAE,OAAO;QACtB,IAAI,EAAE,IAAI,EAAE,IAAI;QAChB,gBAAgB,EAAE,IAAI,EAAE,aAAa;QACrC,WAAW,EAAE,IAAI,EAAE,WAAW,IAAI,IAAI,EAAE,SAAS,IAAI,IAAI;QACzD,QAAQ,EAAE,IAAI,EAAE,QAAQ;QACxB,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,IAAI,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE;KAC9D,CAAC,EACF,CAAC,IAAI,EAAE,OAAO,CAAC,CAChB,CAAA;IAED,wEAAwE;IACxE,MAAM,cAAc,GAAG,WAAW,CAChC,CAAC,EAAgE,EAAE,EAAE;QACnE,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;QAC3E,QAAQ,CAAC,IAAI,CAAC,CAAA;QACd,YAAY,CAAC,MAAM,CAAC,CAAA;IACtB,CAAC,EACD,EAAE,CACH,CAAA;IAED,MAAM,SAAS,GAAG,WAAW,CAC3B,CAAC,IAAmB,EAAE,EAAE;QACtB,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC,CAAA;QACnC,cAAc,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAA;QAC7C,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;QACzB,UAAU,CAAC,KAAK,CAAC,CAAA;IACnB,CAAC,EACD,CAAC,cAAc,CAAC,CACjB,CAAA;IAED,MAAM,aAAa,GAAG,WAAW,CAC/B,CAAC,UAAoB,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,EAC/E,CAAC,cAAc,CAAC,CACjB,CAAA;IACD,MAAM,sBAAsB,GAAG,WAAW,CACxC,CAAC,EAAU,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,uBAAuB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EACrE,CAAC,cAAc,CAAC,CACjB,CAAA;IACD,MAAM,eAAe,GAAG,WAAW,CACjC,CAAC,EAAU,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAC9D,CAAC,cAAc,CAAC,CACjB,CAAA;IACD,MAAM,aAAa,GAAG,WAAW,CAAC,GAAG,EAAE;QACrC,IAAI,CAAC,cAAc;YAAE,OAAM;QAC3B,cAAc,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,CAAA;QACvD,aAAa,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,KAAK,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;QAC7D,iBAAiB,CAAC,IAAI,CAAC,CAAA;IACzB,CAAC,EAAE,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC,CAAA;IAEpC,MAAM,mBAAmB,GAAG,WAAW,CACrC,CAAC,KAA8B,EAAE,EAAE;QACjC,IAAI,CAAC,UAAU;YAAE,OAAM;QACvB,cAAc,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,oBAAoB,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC,CAAA;IACnE,CAAC,EACD,CAAC,UAAU,EAAE,cAAc,CAAC,CAC7B,CAAA;IACD,MAAM,oBAAoB,GAAG,WAAW,CACtC,CAAC,KAA+B,EAAE,EAAE;QAClC,IAAI,CAAC,UAAU;YAAE,OAAM;QACvB,cAAc,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,qBAAqB,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC,CAAA;IACpE,CAAC,EACD,CAAC,UAAU,EAAE,cAAc,CAAC,CAC7B,CAAA;IACD,MAAM,gBAAgB,GAAG,WAAW,CAClC,CAAC,KAAgD,EAAE,EAAE;QACnD,IAAI,CAAC,UAAU;YAAE,OAAM;QACvB,cAAc,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC,CAAA;IAChE,CAAC,EACD,CAAC,UAAU,EAAE,cAAc,CAAC,CAC7B,CAAA;IAED,MAAM,YAAY,GAAG,WAAW,CAAC,CAAC,KAA0B,EAAE,EAAE;QAC9D,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;QACxD,QAAQ,CAAC,IAAI,CAAC,CAAA;QACd,YAAY,CAAC,MAAM,CAAC,CAAA;IACtB,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,wEAAwE;IACxE,MAAM,eAAe,GAAG,WAAW,CAAC,KAAK,IAAsB,EAAE;QAC/D,IAAI,CAAC,IAAI;YAAE,OAAO,KAAK,CAAA;QACvB,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;QACxC,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,aAAa,CAAC,MAAM,CAAC,CAAA;YACrB,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,CAAA;YAC9B,aAAa,CAAC,IAAI,CAAC,CAAA;YACnB,OAAO,KAAK,CAAA;QACd,CAAC;QACD,YAAY,CAAC,QAAQ,CAAC,CAAA;QACtB,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,CAAA;YACvC,OAAO,CAAC,KAAK,CAAC,CAAA;YACd,QAAQ,CAAC,KAAK,CAAC,CAAA;YACf,YAAY,CAAC,OAAO,CAAC,CAAA;YACrB,aAAa,CAAC,IAAI,CAAC,CAAA;YACnB,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,CAAA;YAC5B,IAAI,CAAC,UAAU,IAAI,KAAK,CAAC,EAAE;gBAAE,UAAU,CAAC,UAAU,QAAQ,IAAI,KAAK,CAAC,EAAE,OAAO,CAAC,CAAA;YAC9E,OAAO,IAAI,CAAA;QACb,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,YAAY,CAAC,OAAO,CAAC,CAAA;YACrB,KAAK,CAAC,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAA;YACxE,OAAO,KAAK,CAAA;QACd,CAAC;IACH,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAA;IAE5C,2EAA2E;IAC3E,MAAM,WAAW,GAAG,cAAc,CAAC;QACjC,UAAU,EAAE,QAAQ;QACpB,UAAU,EAAE,IAAI,EAAE,EAAE;QACpB,IAAI,EAAE,IAAI,EAAE,IAAI;QAChB,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,EAAE,SAAS,IAAI,QAAQ;QACjE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO;QAC7B,KAAK;QACL,SAAS;QACT,SAAS,EAAE,eAAe;KAC3B,CAAC,CAAA;IAEF,MAAM,cAAc,GAAG,WAAW,CAAC,GAAG,EAAE;QACtC,IAAI,CAAC,IAAI;YAAE,OAAM;QACjB,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;QACvC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;QAC7E,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,KAAK,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAA;YAC1D,OAAM;QACR,CAAC;QACD,iBAAiB,CAAC,IAAI,CAAC,CAAA;IACzB,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAA;IAEV,MAAM,SAAS,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QACvC,IAAI,CAAC,IAAI;YAAE,OAAM;QACjB,aAAa,CAAC,IAAI,CAAC,CAAA;QACnB,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,CAAA;YACzC,OAAO,CAAC,SAAS,CAAC,CAAA;YAClB,QAAQ,CAAC,KAAK,CAAC,CAAA;YACf,YAAY,CAAC,OAAO,CAAC,CAAA;YACrB,aAAa,CAAC,IAAI,CAAC,CAAA;YACnB,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAA;YAC/B,IAAI,CAAC,UAAU,IAAI,SAAS,CAAC,EAAE;gBAAE,UAAU,CAAC,UAAU,QAAQ,IAAI,SAAS,CAAC,EAAE,OAAO,CAAC,CAAA;QACxF,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,KAAK,CAAC,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAA;QAC5E,CAAC;gBAAS,CAAC;YACT,aAAa,CAAC,KAAK,CAAC,CAAA;QACtB,CAAC;IACH,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAA;IAE5C,sEAAsE;IACtE,uEAAuE;IACvE,MAAM,cAAc,GAAG,WAAW,CAAC,GAAG,EAAE;QACtC,IAAI,CAAC,IAAI,EAAE,EAAE;YAAE,OAAM;QACrB,kBAAkB,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC;aAClC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;YACV,OAAO,CAAC,CAAC,CAAC,CAAA;YACV,aAAa,CAAC,IAAI,CAAC,CAAA;YACnB,QAAQ,CAAC,KAAK,CAAC,CAAA;YACf,YAAY,CAAC,MAAM,CAAC,CAAA;YACpB,aAAa,CAAC,IAAI,CAAC,CAAA;QACrB,CAAC,CAAC;aACD,KAAK,CAAC,GAAG,EAAE;YACV,KAAK,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAA;QAC/D,CAAC,CAAC,CAAA;IACN,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,CAAA;IAExB,MAAM,eAAe,GAAG,WAAW,CACjC,CAAC,IAAY,EAAE,EAAE;QACf,IAAI,KAAK;YAAE,cAAc,CAAC,IAAI,CAAC,CAAA;;YAC1B,UAAU,CAAC,IAAI,CAAC,CAAA;IACvB,CAAC,EACD,CAAC,KAAK,EAAE,UAAU,CAAC,CACpB,CAAA;IAED,MAAM,aAAa,GAAG,WAAW,CAAC,GAAG,EAAE;QACrC,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC;YACd,KAAK,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAA;YAC9C,OAAM;QACR,CAAC;QACD,MAAM,IAAI,GAAG,UAAU,QAAQ,IAAI,IAAI,CAAC,EAAE,UAAU,CAAA;QACpD,0EAA0E;QAC1E,kEAAkE;QAClE,IAAI,aAAa,EAAE,CAAC;YAClB,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;QAC1D,CAAC;aAAM,CAAC;YACN,eAAe,CAAC,IAAI,CAAC,CAAA;QACvB,CAAC;IACH,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,eAAe,CAAC,CAAC,CAAA;IAE5E,4EAA4E;IAC5E,sEAAsE;IACtE,MAAM,gBAAgB,GAAG,WAAW,CAAC,GAAG,EAAE;QACxC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YAC5B,KAAK,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAA;YAC1D,OAAM;QACR,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAA;QAChD,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,KAAK,CAAC,KAAK,CAAC,gEAAgE,CAAC,CAAA;YAC7E,OAAM;QACR,CAAC;QACD,KAAK,CAAC,KAAK,IAAI,EAAE;YACf,IAAI,CAAC;gBACH,IAAI,KAAK,EAAE,CAAC;oBACV,MAAM,EAAE,GAAG,MAAM,eAAe,EAAE,CAAA;oBAClC,IAAI,CAAC,EAAE,EAAE,CAAC;wBACR,GAAG,CAAC,KAAK,EAAE,CAAA;wBACX,OAAM;oBACR,CAAC;gBACH,CAAC;gBACD,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,kBAAkB,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAG,CAAC,CAAA;gBAC9D,MAAM,SAAS,GAAG,MAAM,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,EAAE,SAAS,IAAI,QAAQ,CAAA;gBACxE,MAAM,MAAM,GAAG,qBAAqB,CAAC;oBACnC,OAAO,EAAE,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC;oBAC7C,SAAS;oBACT,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,KAAK;iBACN,CAAC,CAAA;gBACF,IAAI,CAAC;oBACH,GAAG,CAAC,MAAM,GAAG,IAAI,CAAA;gBACnB,CAAC;gBAAC,MAAM,CAAC;oBACP,uBAAuB;gBACzB,CAAC;gBACD,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;YAC9B,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,GAAG,CAAC,KAAK,EAAE,CAAA;gBACX,KAAK,CAAC,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAA;YACjF,CAAC;QACH,CAAC,CAAC,EAAE,CAAA;IACN,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,CAAC,CAAC,CAAA;IAEpD,wEAAwE;IACxE,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CACL,eAAK,SAAS,EAAC,uDAAuD,aACpE,KAAC,OAAO,IAAC,SAAS,EAAC,4CAA4C,wBAAe,EAC9E,eAAM,SAAS,EAAC,SAAS,0CAA4B,IACjD,CACP,CAAA;IACH,CAAC;IAED,IAAI,SAAS,IAAI,CAAC,IAAI,EAAE,CAAC;QACvB,OAAO,CACL,cAAK,SAAS,EAAC,2DAA2D,YACxE,eAAK,SAAS,EAAC,+FAA+F,aAC5G,KAAC,aAAa,IAAC,SAAS,EAAC,2BAA2B,EAAC,IAAI,EAAE,EAAE,wBAAgB,EAC7E,eAAK,SAAS,EAAC,SAAS,aACtB,YAAG,SAAS,EAAC,qCAAqC,oCAAwB,EAC1E,YAAG,SAAS,EAAC,oCAAoC,YAAE,SAAS,IAAI,iBAAiB,GAAK,EACtF,iBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EACnC,SAAS,EAAC,uDAAuD,8BAG1D,IACL,IACF,GACF,CACP,CAAA;IACH,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,IAAI,IAAI,CAAA;IAEvE,0EAA0E;IAC1E,2EAA2E;IAC3E,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,CAC/B,IAAI,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAC5E,CAAA;IAED,sEAAsE;IACtE,wEAAwE;IACxE,yEAAyE;IACzE,iCAAiC;IACjC,MAAM,eAAe,GAAG,KAAK,CAAC,IAAI,CAChC,IAAI,GAAG,CACL,IAAI,CAAC,QAAQ;SACV,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;SACnF,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAC7B,CACF,CAAA;IAED,OAAO,CACL,MAAC,aAAa,eACZ,eAAK,SAAS,EAAC,oDAAoD,aACjE,KAAC,YAAY,IACX,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,OAAO,SAAS,EAAE,EACvC,MAAM,EAAE,IAAI,CAAC,MAAM,EACnB,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,UAAU,IAAI,OAAO,EACjC,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAC,OAAO,EACjB,UAAU,EAAE,WAAW,EACvB,MAAM,EAAE,GAAG,EAAE,CAAC,eAAe,CAAC,QAAQ,CAAC,EACvC,SAAS,EAAE,aAAa,EACxB,YAAY,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,EACpD,WAAW,EAAE,WAAW,CAAC,MAAM,EAC/B,mBAAmB,EAAE,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EAC1E,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,EAC3D,cAAc,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,EACzC,WAAW,EAAE,eAAe,EAC5B,SAAS,EAAE,cAAc,EACzB,eAAe,EAAE,eAAe,GAChC,EAED,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI,CAC5B,eACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,uEAAuE,aAEjF,KAAC,IAAI,IAAC,SAAS,EAAC,uCAAuC,EAAC,IAAI,EAAE,EAAE,wBAAgB,EAChF,aAAG,SAAS,EAAC,sCAAsC,8BACnC,GAAG,EACjB,gBAAM,SAAS,EAAC,6BAA6B,aAC1C,cAAc,CAAC,MAAM,mBAAe,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IACpE,EAAC,GAAG,kCACkB,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,uFAEpD,IACA,CACP,EAEA,UAAU,IAAI,CACb,KAAC,iBAAiB,IAChB,MAAM,EAAE,UAAU,CAAC,MAAM,EACzB,QAAQ,EAAE,UAAU,CAAC,QAAQ,EAC7B,SAAS,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,GACpC,CACH,EAED,eAAK,SAAS,EAAC,6BAA6B,aAC1C,KAAC,aAAa,IACZ,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,aAAa,EACvB,SAAS,EAAE,aAAa,EACxB,kBAAkB,EAAE,sBAAsB,EAC1C,WAAW,EAAE,eAAe,EAC5B,eAAe,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,CAAC,EAC9C,KAAK,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,GAC7B,EAEF,cAAK,SAAS,EAAC,wBAAwB,YACpC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CACpB,KAAC,gBAAgB,IACf,GAAG,EAAE,WAAW,CAAC,GAAG,EACpB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,WAAW,CAAC,SAAS,EAChC,KAAK,EAAE,iBAAiB,IAAI,CAAC,KAAK,IAAI,OAAO,SAAS,EAAE,EAAE,GAC1D,CACH,CAAC,CAAC,CAAC,CACF,KAAC,gBAAgB,IACf,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,aAAa,EACvB,YAAY,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EACpC,eAAe,EAAE,eAAe,GAChC,CACH,GACG,EAEL,QAAQ,IAAI,CACX,KAAC,gBAAgB,IACf,OAAO,EAAE,QAAQ,EACjB,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,EAClC,eAAe,EAAE,mBAAmB,EACpC,gBAAgB,EAAE,oBAAoB,EACtC,YAAY,EAAE,gBAAgB,EAC9B,kBAAkB,EAAE,GAAG,EAAE,CAAC,sBAAsB,CAAC,QAAQ,CAAC,EAAE,CAAC,GAC7D,CACH,IACG,IACF,EAEN,KAAC,eAAe,IACd,IAAI,EAAE,OAAO,EACb,KAAK,EAAC,MAAM,EACZ,OAAO,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,EAChC,KAAK,EAAE,SAAS,GAChB,EAED,IAAI,CAAC,EAAE,IAAI,CACV,KAAC,cAAc,IACb,cAAc,EAAE,QAAQ,EACxB,UAAU,EAAE,IAAI,CAAC,EAAE,EACnB,IAAI,EAAE,WAAW,EACjB,OAAO,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,EACpC,SAAS,EAAE,cAAc,GACzB,CACH,EAED,KAAC,eAAe,IACd,IAAI,EAAE,UAAU,EAChB,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,EAC/C,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,EACnC,MAAM,EAAE,YAAY,GACpB,EAEF,KAAC,aAAa,IACZ,IAAI,EAAE,cAAc,KAAK,IAAI,EAC7B,OAAO,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,EACtC,SAAS,EAAE,aAAa,EACxB,KAAK,EAAC,iBAAiB,EACvB,WAAW,EAAC,iFAAiF,EAC7F,YAAY,EAAC,QAAQ,EACrB,WAAW,SACX,EAEF,KAAC,aAAa,IACZ,IAAI,EAAE,cAAc,EACpB,OAAO,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,KAAK,CAAC,EACvC,SAAS,EAAE,SAAS,EACpB,KAAK,EAAC,oBAAoB,EAC1B,WAAW,EAAC,qEAAqE,EACjF,YAAY,EAAC,SAAS,GACtB,EAEF,KAAC,aAAa,IACZ,IAAI,EAAE,WAAW,KAAK,IAAI,EAC1B,OAAO,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,EACnC,SAAS,EAAE,GAAG,EAAE;oBACd,MAAM,MAAM,GAAG,WAAW,CAAA;oBAC1B,cAAc,CAAC,IAAI,CAAC,CAAA;oBACpB,QAAQ,CAAC,KAAK,CAAC,CAAA;oBACf,IAAI,MAAM;wBAAE,UAAU,CAAC,MAAM,CAAC,CAAA;gBAChC,CAAC,EACD,KAAK,EAAC,0BAA0B,EAChC,WAAW,EAAC,8DAA8D,EAC1E,YAAY,EAAC,OAAO,EACpB,WAAW,EAAC,MAAM,EAClB,WAAW,SACX,IACY,CACjB,CAAA;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@actuate-media/cms-admin",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.48.0",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "https://github.com/actuate-media/actuatecms.git",
|
|
@@ -89,7 +89,7 @@
|
|
|
89
89
|
"tailwindcss": "^4.0.0",
|
|
90
90
|
"typescript": "^5.7.0",
|
|
91
91
|
"vitest": "^4.1.0",
|
|
92
|
-
"@actuate-media/cms-core": "0.
|
|
92
|
+
"@actuate-media/cms-core": "0.65.0",
|
|
93
93
|
"@actuate-media/component-blocks": "0.2.1"
|
|
94
94
|
},
|
|
95
95
|
"scripts": {
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
// @vitest-environment happy-dom
|
|
2
|
+
import { beforeEach, describe, expect, it, vi } from 'vitest'
|
|
3
|
+
import { fireEvent, render, screen, waitFor } from '@testing-library/react'
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* useSitePreview — drives the inline branded preview (iframe of the public
|
|
7
|
+
* site rendering a draft). Pins: token minted + URL built on activation,
|
|
8
|
+
* unsaved drafts are persisted first (a failed save cancels activation), and
|
|
9
|
+
* the frame reloads (reloadKey bump) after each completed save.
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
const createPreviewToken = vi.fn(async () => ({
|
|
13
|
+
token: 'tok-123',
|
|
14
|
+
expiresAt: '2026-06-19T00:00:00Z',
|
|
15
|
+
}))
|
|
16
|
+
|
|
17
|
+
vi.mock('../../lib/preview-link.js', () => ({
|
|
18
|
+
createPreviewToken: (...args: unknown[]) => createPreviewToken(...(args as [])),
|
|
19
|
+
buildPublicPreviewUrl: ({ siteUrl, urlPrefix, slug, token }: any) =>
|
|
20
|
+
`${siteUrl}${urlPrefix ? `/${urlPrefix}` : ''}/${slug}?preview=${token}`,
|
|
21
|
+
resolveSiteUrl: (u?: string | null) => u ?? 'https://fallback.test',
|
|
22
|
+
}))
|
|
23
|
+
|
|
24
|
+
vi.mock('sonner', () => ({
|
|
25
|
+
toast: { error: vi.fn(), success: vi.fn() },
|
|
26
|
+
}))
|
|
27
|
+
|
|
28
|
+
const { useSitePreview } = await import('../../views/page-editor/useSitePreview.js')
|
|
29
|
+
const { toast } = await import('sonner')
|
|
30
|
+
|
|
31
|
+
import type { SaveState } from '../../views/page-editor/EditorTopBar.js'
|
|
32
|
+
|
|
33
|
+
function Harness({
|
|
34
|
+
documentId = 'doc-1',
|
|
35
|
+
slug = 'about',
|
|
36
|
+
dirty = false,
|
|
37
|
+
saveState = 'idle' as SaveState,
|
|
38
|
+
saveDraft = vi.fn(async () => true),
|
|
39
|
+
}: {
|
|
40
|
+
documentId?: string | null
|
|
41
|
+
slug?: string | null
|
|
42
|
+
dirty?: boolean
|
|
43
|
+
saveState?: SaveState
|
|
44
|
+
saveDraft?: () => Promise<boolean>
|
|
45
|
+
}) {
|
|
46
|
+
const sp = useSitePreview({
|
|
47
|
+
collection: 'pages',
|
|
48
|
+
documentId,
|
|
49
|
+
slug,
|
|
50
|
+
urlPrefix: '',
|
|
51
|
+
siteUrl: 'https://site.test',
|
|
52
|
+
dirty,
|
|
53
|
+
saveState,
|
|
54
|
+
saveDraft,
|
|
55
|
+
})
|
|
56
|
+
return (
|
|
57
|
+
<div>
|
|
58
|
+
<button type="button" onClick={sp.toggle}>
|
|
59
|
+
toggle
|
|
60
|
+
</button>
|
|
61
|
+
<output data-testid="state">
|
|
62
|
+
{JSON.stringify({ active: sp.active, url: sp.url, reloadKey: sp.reloadKey })}
|
|
63
|
+
</output>
|
|
64
|
+
</div>
|
|
65
|
+
)
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
function state(): { active: boolean; url: string | null; reloadKey: number } {
|
|
69
|
+
return JSON.parse(screen.getByTestId('state').textContent ?? '{}')
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
beforeEach(() => {
|
|
73
|
+
createPreviewToken.mockClear()
|
|
74
|
+
vi.mocked(toast.error).mockClear()
|
|
75
|
+
})
|
|
76
|
+
|
|
77
|
+
describe('useSitePreview', () => {
|
|
78
|
+
it('mints a token and builds the public draft URL on activation', async () => {
|
|
79
|
+
render(<Harness />)
|
|
80
|
+
fireEvent.click(screen.getByText('toggle'))
|
|
81
|
+
expect(state().active).toBe(true)
|
|
82
|
+
await waitFor(() => {
|
|
83
|
+
expect(state().url).toBe('https://site.test/about?preview=tok-123')
|
|
84
|
+
})
|
|
85
|
+
expect(createPreviewToken).toHaveBeenCalledWith('pages', 'doc-1')
|
|
86
|
+
})
|
|
87
|
+
|
|
88
|
+
it('saves a dirty draft before minting; a failed save cancels activation', async () => {
|
|
89
|
+
const saveDraft = vi.fn(async () => false)
|
|
90
|
+
render(<Harness dirty saveDraft={saveDraft} />)
|
|
91
|
+
fireEvent.click(screen.getByText('toggle'))
|
|
92
|
+
await waitFor(() => expect(saveDraft).toHaveBeenCalled())
|
|
93
|
+
await waitFor(() => expect(state().active).toBe(false))
|
|
94
|
+
expect(createPreviewToken).not.toHaveBeenCalled()
|
|
95
|
+
})
|
|
96
|
+
|
|
97
|
+
it('refuses to activate for unsaved documents', () => {
|
|
98
|
+
render(<Harness documentId={null} />)
|
|
99
|
+
fireEvent.click(screen.getByText('toggle'))
|
|
100
|
+
expect(state().active).toBe(false)
|
|
101
|
+
expect(toast.error).toHaveBeenCalled()
|
|
102
|
+
})
|
|
103
|
+
|
|
104
|
+
it('toggles back to the canvas on second click', async () => {
|
|
105
|
+
render(<Harness />)
|
|
106
|
+
fireEvent.click(screen.getByText('toggle'))
|
|
107
|
+
await waitFor(() => expect(state().url).not.toBeNull())
|
|
108
|
+
fireEvent.click(screen.getByText('toggle'))
|
|
109
|
+
expect(state().active).toBe(false)
|
|
110
|
+
})
|
|
111
|
+
|
|
112
|
+
it('bumps reloadKey after a save completes while the preview is open', async () => {
|
|
113
|
+
const { rerender } = render(<Harness saveState="idle" />)
|
|
114
|
+
fireEvent.click(screen.getByText('toggle'))
|
|
115
|
+
await waitFor(() => expect(state().url).not.toBeNull())
|
|
116
|
+
expect(state().reloadKey).toBe(0)
|
|
117
|
+
|
|
118
|
+
rerender(<Harness saveState="saving" />)
|
|
119
|
+
rerender(<Harness saveState="saved" />)
|
|
120
|
+
await waitFor(() => expect(state().reloadKey).toBe(1))
|
|
121
|
+
})
|
|
122
|
+
})
|
|
@@ -4,6 +4,7 @@ import {
|
|
|
4
4
|
Check,
|
|
5
5
|
ExternalLink,
|
|
6
6
|
Eye,
|
|
7
|
+
Globe,
|
|
7
8
|
History,
|
|
8
9
|
Laptop,
|
|
9
10
|
Loader2,
|
|
@@ -44,6 +45,13 @@ interface EditorTopBarProps {
|
|
|
44
45
|
* hidden — e.g. for unsaved documents that have no versions yet.
|
|
45
46
|
*/
|
|
46
47
|
onHistory?: () => void
|
|
48
|
+
/** Whether the inline site preview (iframe of the public site) is showing. */
|
|
49
|
+
sitePreview?: boolean
|
|
50
|
+
/**
|
|
51
|
+
* Toggle the inline site preview — renders the draft through the consumer's
|
|
52
|
+
* real public route inside the editor. Hidden when omitted (unsaved docs).
|
|
53
|
+
*/
|
|
54
|
+
onToggleSitePreview?: () => void
|
|
47
55
|
onOpenSettings: () => void
|
|
48
56
|
onSaveDraft: () => void
|
|
49
57
|
onPublish: () => void
|
|
@@ -85,6 +93,8 @@ export function EditorTopBar({
|
|
|
85
93
|
onPreview,
|
|
86
94
|
onViewOnSite,
|
|
87
95
|
onHistory,
|
|
96
|
+
sitePreview = false,
|
|
97
|
+
onToggleSitePreview,
|
|
88
98
|
onOpenSettings,
|
|
89
99
|
onSaveDraft,
|
|
90
100
|
onPublish,
|
|
@@ -187,6 +197,27 @@ export function EditorTopBar({
|
|
|
187
197
|
<Eye className="h-4 w-4" aria-hidden />
|
|
188
198
|
</button>
|
|
189
199
|
|
|
200
|
+
{onToggleSitePreview && (
|
|
201
|
+
<button
|
|
202
|
+
type="button"
|
|
203
|
+
onClick={onToggleSitePreview}
|
|
204
|
+
aria-pressed={sitePreview}
|
|
205
|
+
aria-label={sitePreview ? 'Back to editor canvas' : 'Inline site preview'}
|
|
206
|
+
title={
|
|
207
|
+
sitePreview
|
|
208
|
+
? 'Back to editor canvas'
|
|
209
|
+
: 'Inline site preview — render the draft through your public site, in place'
|
|
210
|
+
}
|
|
211
|
+
className={`rounded-lg p-2 transition-colors ${
|
|
212
|
+
sitePreview
|
|
213
|
+
? 'bg-primary text-primary-foreground'
|
|
214
|
+
: 'text-muted-foreground hover:text-foreground hover:bg-accent'
|
|
215
|
+
}`}
|
|
216
|
+
>
|
|
217
|
+
<Globe className="h-4 w-4" aria-hidden />
|
|
218
|
+
</button>
|
|
219
|
+
)}
|
|
220
|
+
|
|
190
221
|
{onViewOnSite &&
|
|
191
222
|
(structural ? (
|
|
192
223
|
<button
|
|
@@ -37,6 +37,8 @@ import { hasCanvasRenderer, useAdminSectionRenderers } from './sections/index.js
|
|
|
37
37
|
import { EditorTopBar, type SaveState } from './EditorTopBar.js'
|
|
38
38
|
import { SectionsPanel } from './SectionsPanel.js'
|
|
39
39
|
import { EditorCanvas } from './EditorCanvas.js'
|
|
40
|
+
import { SitePreviewFrame } from './SitePreviewFrame.js'
|
|
41
|
+
import { useSitePreview } from './useSitePreview.js'
|
|
40
42
|
import { SectionInspector } from './SectionInspector.js'
|
|
41
43
|
import { AddSectionModal } from './AddSectionModal.js'
|
|
42
44
|
import { PageSettingsModal } from './PageSettingsModal.js'
|
|
@@ -263,6 +265,18 @@ export function PageSectionEditor({
|
|
|
263
265
|
}
|
|
264
266
|
}, [page, documentId, onNavigate])
|
|
265
267
|
|
|
268
|
+
// Inline branded preview — iframe of the public site rendering this draft.
|
|
269
|
+
const sitePreview = useSitePreview({
|
|
270
|
+
collection: 'pages',
|
|
271
|
+
documentId: page?.id,
|
|
272
|
+
slug: page?.slug,
|
|
273
|
+
urlPrefix: '',
|
|
274
|
+
siteUrl: config?.seo?.siteUrl,
|
|
275
|
+
dirty,
|
|
276
|
+
saveState,
|
|
277
|
+
saveDraft: handleSaveDraft,
|
|
278
|
+
})
|
|
279
|
+
|
|
266
280
|
const requestPublish = useCallback(() => {
|
|
267
281
|
if (!page) return
|
|
268
282
|
const result = validatePage(page, true)
|
|
@@ -450,6 +464,8 @@ export function PageSectionEditor({
|
|
|
450
464
|
onBack={() => guardedNavigate('/pages')}
|
|
451
465
|
onPreview={handlePreview}
|
|
452
466
|
onViewOnSite={page.id ? handleViewOnSite : undefined}
|
|
467
|
+
sitePreview={sitePreview.active}
|
|
468
|
+
onToggleSitePreview={page.id && page.slug ? sitePreview.toggle : undefined}
|
|
453
469
|
onHistory={page.id ? () => setHistoryOpen(true) : undefined}
|
|
454
470
|
onOpenSettings={() => setSettingsOpen(true)}
|
|
455
471
|
onSaveDraft={handleSaveDraft}
|
|
@@ -519,14 +535,23 @@ export function PageSectionEditor({
|
|
|
519
535
|
/>
|
|
520
536
|
|
|
521
537
|
<div className="flex-1 overflow-hidden">
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
538
|
+
{sitePreview.active ? (
|
|
539
|
+
<SitePreviewFrame
|
|
540
|
+
src={sitePreview.url}
|
|
541
|
+
viewport={viewport}
|
|
542
|
+
reloadKey={sitePreview.reloadKey}
|
|
543
|
+
title={`Site preview: ${page.title || 'Untitled page'}`}
|
|
544
|
+
/>
|
|
545
|
+
) : (
|
|
546
|
+
<EditorCanvas
|
|
547
|
+
sections={page.sections}
|
|
548
|
+
selectedId={selectedId}
|
|
549
|
+
viewport={viewport}
|
|
550
|
+
onSelect={setSelectedId}
|
|
551
|
+
onAddSection={() => setAddOpen(true)}
|
|
552
|
+
structuralTypes={structuralTypes}
|
|
553
|
+
/>
|
|
554
|
+
)}
|
|
530
555
|
</div>
|
|
531
556
|
|
|
532
557
|
{selected && (
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
'use client'
|
|
2
|
+
|
|
3
|
+
import { useEffect, useLayoutEffect, useRef, useState } from 'react'
|
|
4
|
+
import { Loader2 } from 'lucide-react'
|
|
5
|
+
import { getViewport, type ViewportId } from './viewports.js'
|
|
6
|
+
|
|
7
|
+
interface SitePreviewFrameProps {
|
|
8
|
+
/** Public draft URL; null while the preview token is still minting. */
|
|
9
|
+
src: string | null
|
|
10
|
+
viewport: ViewportId
|
|
11
|
+
/** Changing this remounts the iframe so it reloads the persisted draft. */
|
|
12
|
+
reloadKey: number
|
|
13
|
+
title?: string
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Inline branded preview surface — replaces the editor canvas with an iframe
|
|
18
|
+
* of the consumer's real public route rendering the draft (site CSS, real
|
|
19
|
+
* components). Sized to the selected viewport's logical width and scaled to
|
|
20
|
+
* fit the canvas column, mirroring {@link EditorCanvas}.
|
|
21
|
+
*/
|
|
22
|
+
export function SitePreviewFrame({
|
|
23
|
+
src,
|
|
24
|
+
viewport,
|
|
25
|
+
reloadKey,
|
|
26
|
+
title = 'Site preview',
|
|
27
|
+
}: SitePreviewFrameProps) {
|
|
28
|
+
const vp = getViewport(viewport)
|
|
29
|
+
const containerRef = useRef<HTMLDivElement>(null)
|
|
30
|
+
const [scale, setScale] = useState(1)
|
|
31
|
+
const [frameHeight, setFrameHeight] = useState(600)
|
|
32
|
+
const [loaded, setLoaded] = useState(false)
|
|
33
|
+
|
|
34
|
+
useLayoutEffect(() => {
|
|
35
|
+
const container = containerRef.current
|
|
36
|
+
if (!container) return
|
|
37
|
+
const recompute = () => {
|
|
38
|
+
// 48px breathing room, matching EditorCanvas.
|
|
39
|
+
const availableW = container.clientWidth - 48
|
|
40
|
+
const availableH = container.clientHeight - 48
|
|
41
|
+
const next = Math.min(1, availableW / vp.width)
|
|
42
|
+
setScale(next > 0 ? next : 1)
|
|
43
|
+
setFrameHeight(availableH > 0 ? availableH : 600)
|
|
44
|
+
}
|
|
45
|
+
recompute()
|
|
46
|
+
const ro = new ResizeObserver(recompute)
|
|
47
|
+
ro.observe(container)
|
|
48
|
+
return () => ro.disconnect()
|
|
49
|
+
}, [vp.width])
|
|
50
|
+
|
|
51
|
+
useEffect(() => {
|
|
52
|
+
setLoaded(false)
|
|
53
|
+
}, [src, reloadKey])
|
|
54
|
+
|
|
55
|
+
return (
|
|
56
|
+
<div ref={containerRef} className="bg-muted relative h-full overflow-hidden p-6">
|
|
57
|
+
{(!src || !loaded) && (
|
|
58
|
+
<div
|
|
59
|
+
className="absolute inset-0 z-10 flex flex-col items-center justify-center gap-2"
|
|
60
|
+
aria-live="polite"
|
|
61
|
+
>
|
|
62
|
+
<Loader2 className="text-muted-foreground h-6 w-6 animate-spin" aria-hidden />
|
|
63
|
+
<span className="text-muted-foreground text-sm">Loading site preview…</span>
|
|
64
|
+
</div>
|
|
65
|
+
)}
|
|
66
|
+
{src && (
|
|
67
|
+
<div className="mx-auto" style={{ width: vp.width * scale, height: frameHeight }}>
|
|
68
|
+
<iframe
|
|
69
|
+
key={reloadKey}
|
|
70
|
+
src={src}
|
|
71
|
+
title={title}
|
|
72
|
+
onLoad={() => setLoaded(true)}
|
|
73
|
+
className="border-border rounded-xl border bg-white shadow-sm"
|
|
74
|
+
style={{
|
|
75
|
+
width: vp.width,
|
|
76
|
+
height: frameHeight / scale,
|
|
77
|
+
transform: `scale(${scale})`,
|
|
78
|
+
transformOrigin: 'top left',
|
|
79
|
+
}}
|
|
80
|
+
/>
|
|
81
|
+
</div>
|
|
82
|
+
)}
|
|
83
|
+
</div>
|
|
84
|
+
)
|
|
85
|
+
}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
'use client'
|
|
2
|
+
|
|
3
|
+
import { useCallback, useEffect, useRef, useState } from 'react'
|
|
4
|
+
import { toast } from 'sonner'
|
|
5
|
+
import {
|
|
6
|
+
buildPublicPreviewUrl,
|
|
7
|
+
createPreviewToken,
|
|
8
|
+
resolveSiteUrl,
|
|
9
|
+
} from '../../lib/preview-link.js'
|
|
10
|
+
import type { SaveState } from './EditorTopBar.js'
|
|
11
|
+
|
|
12
|
+
interface UseSitePreviewOptions {
|
|
13
|
+
collection: string
|
|
14
|
+
documentId?: string | null
|
|
15
|
+
slug?: string | null
|
|
16
|
+
/** Collection URL prefix (e.g. `blog`). Empty/null for top-level pages. */
|
|
17
|
+
urlPrefix?: string | null
|
|
18
|
+
/** Raw `config.seo.siteUrl`; falls back to the current origin. */
|
|
19
|
+
siteUrl?: string | null
|
|
20
|
+
dirty: boolean
|
|
21
|
+
saveState: SaveState
|
|
22
|
+
/** Persist the draft; resolves `false` when the save failed. */
|
|
23
|
+
saveDraft: () => Promise<boolean>
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export interface SitePreviewState {
|
|
27
|
+
/** Whether the inline iframe preview replaces the editor canvas. */
|
|
28
|
+
active: boolean
|
|
29
|
+
/** Public draft URL (`/<slug>?preview=<jwt>`); null while the token mints. */
|
|
30
|
+
url: string | null
|
|
31
|
+
/** Bumped after each completed save so the iframe reloads the fresh draft. */
|
|
32
|
+
reloadKey: number
|
|
33
|
+
toggle: () => void
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Inline branded preview — drives an in-editor iframe that renders the draft
|
|
38
|
+
* through the consumer's REAL public route (same `?preview=<token>` contract
|
|
39
|
+
* as "View on site"), so editors see actual site CSS without leaving the
|
|
40
|
+
* admin. Saves first when dirty, and reloads the frame after each save so
|
|
41
|
+
* what you see always matches the persisted draft.
|
|
42
|
+
*/
|
|
43
|
+
export function useSitePreview({
|
|
44
|
+
collection,
|
|
45
|
+
documentId,
|
|
46
|
+
slug,
|
|
47
|
+
urlPrefix,
|
|
48
|
+
siteUrl,
|
|
49
|
+
dirty,
|
|
50
|
+
saveState,
|
|
51
|
+
saveDraft,
|
|
52
|
+
}: UseSitePreviewOptions): SitePreviewState {
|
|
53
|
+
const [active, setActive] = useState(false)
|
|
54
|
+
const [url, setUrl] = useState<string | null>(null)
|
|
55
|
+
const [reloadKey, setReloadKey] = useState(0)
|
|
56
|
+
const tokenRef = useRef<string | null>(null)
|
|
57
|
+
const prevSaveState = useRef(saveState)
|
|
58
|
+
|
|
59
|
+
// After a save completes while the preview is open, rebuild the URL (the
|
|
60
|
+
// slug may have changed in settings — the token is bound to the document
|
|
61
|
+
// id, not the path) and reload the frame.
|
|
62
|
+
useEffect(() => {
|
|
63
|
+
if (active && prevSaveState.current === 'saving' && saveState === 'saved') {
|
|
64
|
+
if (tokenRef.current && slug) {
|
|
65
|
+
setUrl(
|
|
66
|
+
buildPublicPreviewUrl({
|
|
67
|
+
siteUrl: resolveSiteUrl(siteUrl),
|
|
68
|
+
urlPrefix: urlPrefix ?? '',
|
|
69
|
+
slug,
|
|
70
|
+
token: tokenRef.current,
|
|
71
|
+
}),
|
|
72
|
+
)
|
|
73
|
+
}
|
|
74
|
+
setReloadKey((k) => k + 1)
|
|
75
|
+
}
|
|
76
|
+
prevSaveState.current = saveState
|
|
77
|
+
}, [active, saveState, slug, siteUrl, urlPrefix])
|
|
78
|
+
|
|
79
|
+
const toggle = useCallback(() => {
|
|
80
|
+
if (active) {
|
|
81
|
+
setActive(false)
|
|
82
|
+
return
|
|
83
|
+
}
|
|
84
|
+
if (!documentId || !slug) {
|
|
85
|
+
toast.error('Save the page before opening the site preview')
|
|
86
|
+
return
|
|
87
|
+
}
|
|
88
|
+
setActive(true)
|
|
89
|
+
setUrl(null)
|
|
90
|
+
void (async () => {
|
|
91
|
+
try {
|
|
92
|
+
if (dirty) {
|
|
93
|
+
const ok = await saveDraft()
|
|
94
|
+
if (!ok) {
|
|
95
|
+
setActive(false)
|
|
96
|
+
return
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
const { token } = await createPreviewToken(collection, documentId)
|
|
100
|
+
tokenRef.current = token
|
|
101
|
+
setUrl(
|
|
102
|
+
buildPublicPreviewUrl({
|
|
103
|
+
siteUrl: resolveSiteUrl(siteUrl),
|
|
104
|
+
urlPrefix: urlPrefix ?? '',
|
|
105
|
+
slug,
|
|
106
|
+
token,
|
|
107
|
+
}),
|
|
108
|
+
)
|
|
109
|
+
} catch (err) {
|
|
110
|
+
toast.error(err instanceof Error ? err.message : 'Failed to open site preview')
|
|
111
|
+
setActive(false)
|
|
112
|
+
}
|
|
113
|
+
})()
|
|
114
|
+
}, [active, collection, documentId, slug, urlPrefix, siteUrl, dirty, saveDraft])
|
|
115
|
+
|
|
116
|
+
return { active, url, reloadKey, toggle }
|
|
117
|
+
}
|