efficient-web-builder 1.0.0 → 2.0.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 +30 -0
- package/README.md +2 -1
- package/dist/components/AddBlockRow.d.ts +1 -7
- package/dist/components/AddBlockRow.js +1 -1
- package/dist/components/AddChildRow.d.ts +1 -6
- package/dist/components/AddChildRow.js +1 -1
- package/dist/components/AddSidePanel.d.ts +2 -39
- package/dist/components/AddSidePanel.js +1 -1
- package/dist/components/BlockGapField.js +1 -1
- package/dist/components/BlogPostSource.js +1 -1
- package/dist/components/CardShadowField.js +1 -1
- package/dist/components/ChatSettingsPanel.js +1 -1
- package/dist/components/CornersField.d.ts +0 -1
- package/dist/components/CornersField.js +1 -1
- package/dist/components/DuplicateToPageMenu.js +1 -1
- package/dist/components/EditorScreenMount.d.ts +1 -0
- package/dist/components/EditorScreenMount.js +1 -0
- package/dist/components/EditorStoreProvider.d.ts +1 -0
- package/dist/components/EditorStoreProvider.js +1 -0
- package/dist/components/HeroImageField.js +1 -1
- package/dist/components/HeroSection.d.ts +2 -6
- package/dist/components/HeroSection.js +4 -4
- package/dist/components/HoverEffectField.js +1 -1
- package/dist/components/ImageFocusRow.js +1 -1
- package/dist/components/KeepHint.d.ts +5 -0
- package/dist/components/KeepHint.js +1 -0
- package/dist/components/LocationsGroupedField.js +1 -1
- package/dist/components/MediaSidePanel.d.ts +1 -6
- package/dist/components/MediaSidePanel.js +1 -1
- package/dist/components/MediaUploadField.js +1 -1
- package/dist/components/MultiSelectField.d.ts +4 -1
- package/dist/components/MultiSelectField.js +1 -1
- package/dist/components/NodeContextMenu.d.ts +2 -96
- package/dist/components/NodeContextMenu.js +1 -1
- package/dist/components/PageEditGuardNotices.d.ts +1 -1
- package/dist/components/PageEditGuardNotices.js +1 -1
- package/dist/components/PanelToggleIcon.d.ts +1 -3
- package/dist/components/PanelToggleIcon.js +1 -1
- package/dist/components/PartSettingsPanel.d.ts +5 -0
- package/dist/components/PartSettingsPanel.js +1 -1
- package/dist/components/PhotographyField.js +1 -1
- package/dist/components/PreviewDeviceContext.d.ts +2 -4
- package/dist/components/PreviewDeviceContext.js +1 -1
- package/dist/components/PreviewPartsContext.d.ts +1 -3
- package/dist/components/PreviewPartsContext.js +1 -1
- package/dist/components/SearchSelectField.d.ts +3 -1
- package/dist/components/SearchSelectField.js +1 -1
- package/dist/components/SectionEditor.d.ts +2 -5
- package/dist/components/SectionEditor.js +1 -1
- package/dist/components/SectionEditorShell.d.ts +1 -1
- package/dist/components/SectionEditorShell.js +1 -1
- package/dist/components/SectionThemePicker.d.ts +3 -1
- package/dist/components/SectionThemePicker.js +1 -1
- package/dist/components/ShadowColourField.js +1 -1
- package/dist/components/SidePanelHead.d.ts +1 -23
- package/dist/components/SidePanelHead.js +1 -1
- package/dist/components/SideSpaceField.d.ts +0 -1
- package/dist/components/SideSpaceField.js +1 -1
- package/dist/components/SiteEditorProvider.d.ts +3 -10
- package/dist/components/SiteEditorProvider.js +1 -1
- package/dist/components/SiteWidthField.d.ts +0 -1
- package/dist/components/SiteWidthField.js +1 -1
- package/dist/components/SlotChildActionsContext.d.ts +2 -13
- package/dist/components/SlotChildActionsContext.js +1 -1
- package/dist/components/SocialLinksPanel.js +1 -1
- package/dist/components/SourceStatus.js +1 -1
- package/dist/components/StandaloneSectionEditor.d.ts +1 -0
- package/dist/components/StandaloneSectionEditor.js +1 -1
- package/dist/components/StorefrontDocumentContext.d.ts +2 -67
- package/dist/components/StorefrontDocumentContext.js +1 -1
- package/dist/components/StorefrontEditor.d.ts +1 -0
- package/dist/components/StorefrontEditor.js +1 -1
- package/dist/components/StorefrontEditorChrome.d.ts +1 -1
- package/dist/components/StorefrontEditorChrome.js +1 -1
- package/dist/components/StorefrontLinkField.d.ts +9 -0
- package/dist/components/StorefrontLinkField.js +1 -1
- package/dist/components/ThemeField.js +1 -1
- package/dist/components/TickerSettingsPanel.js +1 -1
- package/dist/components/UiIcon.d.ts +2 -10
- package/dist/components/UiIcon.js +1 -1
- package/dist/components/WebsiteScreenParts.d.ts +2 -0
- package/dist/components/WebsiteScreenParts.js +1 -0
- package/dist/components/WidthFollowField.js +1 -1
- package/dist/components/panel-widths.d.ts +2 -12
- package/dist/components/panel-widths.js +1 -1
- package/dist/components/storefront-editor.css +125 -986
- package/dist/components/useFooterFocus.d.ts +2 -0
- package/dist/components/useFooterFocus.js +1 -0
- package/dist/components/useLocationsTree.d.ts +6 -0
- package/dist/components/useLocationsTree.js +1 -0
- package/dist/components/usePartBridge.d.ts +1 -9
- package/dist/components/usePartBridge.js +1 -1
- package/dist/components/usePinnedChromeSeed.d.ts +2 -0
- package/dist/components/usePinnedChromeSeed.js +1 -0
- package/dist/components/useSocialSettings.js +1 -1
- package/dist/components/useStorefrontBlogPosts.js +1 -1
- package/dist/lib/client-only.d.ts +1 -0
- package/dist/lib/client-only.js +1 -0
- package/dist/lib/content/view-tiers.d.ts +2 -6
- package/dist/lib/content/view-tiers.js +1 -1
- package/dist/lib/editor-admin-bridge.d.ts +2 -29
- package/dist/lib/editor-admin-bridge.js +1 -1
- package/dist/lib/editor-backend-error.d.ts +2 -0
- package/dist/lib/editor-backend-error.js +1 -0
- package/dist/lib/editor-blocks.d.ts +2 -2
- package/dist/lib/editor-chrome.d.ts +2 -52
- package/dist/lib/editor-chrome.js +1 -1
- package/dist/lib/editor-document-adapter.d.ts +3 -51
- package/dist/lib/editor-document-adapter.js +1 -1
- package/dist/lib/editor-document-addressing.d.ts +2 -0
- package/dist/lib/editor-document-addressing.js +1 -0
- package/dist/lib/editor-document-contract.d.ts +1 -0
- package/dist/lib/editor-document-contract.js +0 -0
- package/dist/lib/editor-document-hooks.d.ts +1 -15
- package/dist/lib/editor-document-switch.d.ts +2 -0
- package/dist/lib/editor-document-switch.js +1 -0
- package/dist/lib/editor-failure.d.ts +1 -4
- package/dist/lib/editor-failure.js +1 -1
- package/dist/lib/editor-host-inbound.d.ts +1 -1
- package/dist/lib/editor-host-inbound.js +1 -1
- package/dist/lib/editor-host.d.ts +2 -135
- package/dist/lib/editor-host.js +1 -1
- package/dist/lib/editor-key-scope.d.ts +1 -3
- package/dist/lib/editor-key-scope.js +1 -1
- package/dist/lib/editor-load-error.d.ts +1 -4
- package/dist/lib/editor-load-error.js +1 -1
- package/dist/lib/editor-media-panel.d.ts +2 -23
- package/dist/lib/editor-media-panel.js +1 -1
- package/dist/lib/editor-media-picker.d.ts +2 -12
- package/dist/lib/editor-media-picker.js +1 -1
- package/dist/lib/editor-page-lock.d.ts +1 -1
- package/dist/lib/editor-page-lock.js +1 -1
- package/dist/lib/editor-screen.d.ts +2 -0
- package/dist/lib/editor-screen.js +1 -0
- package/dist/lib/editor-section-templates.d.ts +1 -2
- package/dist/lib/editor-section-templates.js +1 -1
- package/dist/lib/editor-session-context.d.ts +1 -7
- package/dist/lib/editor-session-context.js +1 -1
- package/dist/lib/editor-session.d.ts +2 -45
- package/dist/lib/editor-session.js +1 -1
- package/dist/lib/editor-site-slug.js +1 -1
- package/dist/lib/editor-theme.d.ts +1 -1
- package/dist/lib/editor-theme.js +1 -1
- package/dist/lib/hero-arrows.d.ts +1 -1
- package/dist/lib/links/link-filters.d.ts +1 -0
- package/dist/lib/links/link-filters.js +0 -0
- package/dist/lib/links/link-picker-setup.d.ts +29 -0
- package/dist/lib/links/link-picker-setup.js +1 -0
- package/dist/lib/puck/ColourControl.d.ts +4 -1
- package/dist/lib/puck/ColourControl.js +1 -1
- package/dist/lib/puck/add-palette.d.ts +3 -9
- package/dist/lib/puck/add-palette.js +1 -1
- package/dist/lib/puck/add-target-types.d.ts +1 -0
- package/dist/lib/puck/add-target-types.js +0 -0
- package/dist/lib/puck/add-target.d.ts +2 -9
- package/dist/lib/puck/block-choice.d.ts +2 -0
- package/dist/lib/puck/block-choice.js +1 -0
- package/dist/lib/puck/block-offer.js +1 -1
- package/dist/lib/puck/block-types-in.d.ts +1 -1
- package/dist/lib/puck/block-types-in.js +1 -1
- package/dist/lib/puck/blocks/general/index.d.ts +2 -2
- package/dist/lib/puck/content-tree.d.ts +2 -43
- package/dist/lib/puck/content-tree.js +1 -1
- package/dist/lib/puck/controls.d.ts +11 -22
- package/dist/lib/puck/controls.js +1 -1
- package/dist/lib/puck/device-fields.d.ts +2 -24
- package/dist/lib/puck/device-fields.js +1 -1
- package/dist/lib/puck/field-buckets.d.ts +2 -0
- package/dist/lib/puck/field-buckets.js +1 -0
- package/dist/lib/puck/field-groups.d.ts +3 -3
- package/dist/lib/puck/field-groups.js +1 -1
- package/dist/lib/puck/field-markers.d.ts +2 -16
- package/dist/lib/puck/field-markers.js +1 -1
- package/dist/lib/puck/footer-block-row-name.d.ts +4 -0
- package/dist/lib/puck/footer-block-row-name.js +1 -0
- package/dist/lib/puck/footer-blocks.d.ts +2 -10
- package/dist/lib/puck/footer-blocks.js +1 -1
- package/dist/lib/puck/hidable.d.ts +2 -9
- package/dist/lib/puck/hidable.js +1 -1
- package/dist/lib/puck/palette-sections.d.ts +2 -0
- package/dist/lib/puck/palette-sections.js +1 -0
- package/dist/lib/puck/panel-fields.d.ts +2 -12
- package/dist/lib/puck/panel-fields.js +1 -1
- package/dist/lib/puck/panel-no-control-mark.d.ts +2 -7
- package/dist/lib/puck/panel-no-control-mark.js +1 -1
- package/dist/lib/puck/part-id.d.ts +1 -0
- package/dist/lib/puck/part-id.js +1 -0
- package/dist/lib/puck/pinned-seed-gate.d.ts +2 -12
- package/dist/lib/puck/pinned-seed-gate.js +1 -1
- package/dist/lib/puck/preview-click.d.ts +1 -2
- package/dist/lib/puck/preview-click.js +1 -1
- package/dist/lib/puck/preview-dom.d.ts +1 -6
- package/dist/lib/puck/preview-dom.js +1 -1
- package/dist/lib/puck/preview-events.d.ts +2 -0
- package/dist/lib/puck/preview-events.js +1 -0
- package/dist/lib/puck/preview-selection-context.d.ts +2 -19
- package/dist/lib/puck/preview-selection-context.js +1 -1
- package/dist/lib/puck/section-doc.d.ts +1 -5
- package/dist/lib/puck/section-doc.js +1 -1
- package/dist/lib/puck/section-groups.d.ts +1 -1
- package/dist/lib/puck/slot-child-name.d.ts +2 -8
- package/dist/lib/puck/slot-child-name.js +1 -1
- package/dist/lib/puck/slot-heal.d.ts +1 -2
- package/dist/lib/puck/slot-heal.js +1 -1
- package/dist/lib/puck/slot-section-spec.d.ts +1 -0
- package/dist/lib/puck/slot-section-spec.js +0 -0
- package/dist/lib/puck/slot-specs.d.ts +2 -13
- package/dist/lib/puck/style-clipboard.d.ts +1 -19
- package/dist/lib/puck/style-clipboard.js +1 -1
- package/dist/lib/puck/text-control-kinds.d.ts +2 -13
- package/dist/lib/puck/text-control-kinds.js +1 -1
- package/dist/lib/puck/text-parts.d.ts +2 -5
- package/dist/lib/puck/text-parts.js +1 -1
- package/dist/lib/puck/tree-reveal.d.ts +1 -11
- package/dist/lib/puck/tree-reveal.js +1 -1
- package/dist/lib/puck/use-section-ops.d.ts +2 -25
- package/dist/lib/puck/use-section-ops.js +1 -1
- package/dist/lib/reel.d.ts +1 -1
- package/dist/lib/section-template-types.d.ts +1 -21
- package/dist/lib/sections/new-section-node.d.ts +2 -0
- package/dist/lib/sections/new-section-node.js +1 -0
- package/dist/lib/source-rules/accent-token-name.d.ts +20 -0
- package/dist/lib/source-rules/accent-token-name.js +4 -0
- package/dist/lib/source-rules/button-corners.d.ts +13 -0
- package/dist/lib/source-rules/button-corners.js +2 -0
- package/dist/lib/source-rules/editor-chrome-note.d.ts +16 -0
- package/dist/lib/source-rules/editor-chrome-note.js +13 -0
- package/dist/lib/source-rules/editor-context-menu.d.ts +5 -0
- package/dist/lib/source-rules/editor-context-menu.js +4 -0
- package/dist/lib/source-rules/editor-puck-drag-off.d.ts +8 -0
- package/dist/lib/source-rules/editor-puck-drag-off.js +4 -0
- package/dist/lib/source-rules/efficient-easel-version.d.ts +9 -0
- package/dist/lib/source-rules/efficient-easel-version.js +2 -0
- package/dist/lib/source-rules/every-button-follows-the-button-colour.d.ts +12 -0
- package/dist/lib/source-rules/every-button-follows-the-button-colour.js +7 -0
- package/dist/lib/source-rules/flat-theme-palette.d.ts +10 -0
- package/dist/lib/source-rules/flat-theme-palette.js +8 -0
- package/dist/lib/source-rules/full-width-means-full.d.ts +8 -0
- package/dist/lib/source-rules/full-width-means-full.js +2 -0
- package/dist/lib/source-rules/heading-ceiling-sweep.d.ts +11 -0
- package/dist/lib/source-rules/heading-ceiling-sweep.js +8 -0
- package/dist/lib/source-rules/label-hints.d.ts +7 -0
- package/dist/lib/source-rules/label-hints.js +5 -0
- package/dist/lib/source-rules/label-vocabulary.d.ts +14 -0
- package/dist/lib/source-rules/label-vocabulary.js +5 -0
- package/dist/lib/source-rules/mirrored-rows-agree.d.ts +19 -0
- package/dist/lib/source-rules/mirrored-rows-agree.js +10 -0
- package/dist/lib/source-rules/no-comment-in-jsx.d.ts +9 -0
- package/dist/lib/source-rules/no-comment-in-jsx.js +7 -0
- package/dist/lib/source-rules/no-glyph-rows.d.ts +15 -0
- package/dist/lib/source-rules/no-glyph-rows.js +4 -0
- package/dist/lib/source-rules/one-colour-control.d.ts +7 -0
- package/dist/lib/source-rules/one-colour-control.js +2 -0
- package/dist/lib/source-rules/one-dropdown.d.ts +10 -0
- package/dist/lib/source-rules/one-dropdown.js +4 -0
- package/dist/lib/source-rules/one-editable-list.d.ts +16 -0
- package/dist/lib/source-rules/one-editable-list.js +6 -0
- package/dist/lib/source-rules/one-editor-list.d.ts +7 -0
- package/dist/lib/source-rules/one-editor-list.js +3 -0
- package/dist/lib/source-rules/one-right-click.d.ts +10 -0
- package/dist/lib/source-rules/one-right-click.js +2 -0
- package/dist/lib/source-rules/one-switch.d.ts +9 -0
- package/dist/lib/source-rules/one-switch.js +7 -0
- package/dist/lib/source-rules/one-up-level-link.d.ts +16 -0
- package/dist/lib/source-rules/one-up-level-link.js +18 -0
- package/dist/lib/source-rules/panel-colour-tokens.d.ts +48 -0
- package/dist/lib/source-rules/panel-colour-tokens.js +20 -0
- package/dist/lib/source-rules/panel-no-divider-lines.d.ts +14 -0
- package/dist/lib/source-rules/panel-no-divider-lines.js +10 -0
- package/dist/lib/source-rules/panel-one-arrow.d.ts +21 -0
- package/dist/lib/source-rules/panel-one-arrow.js +1 -0
- package/dist/lib/source-rules/panel-one-hover.d.ts +8 -0
- package/dist/lib/source-rules/panel-one-hover.js +2 -0
- package/dist/lib/source-rules/panel-rows-use-the-shared-row.d.ts +23 -0
- package/dist/lib/source-rules/panel-rows-use-the-shared-row.js +22 -0
- package/dist/lib/source-rules/part-slider-fills-row.d.ts +11 -0
- package/dist/lib/source-rules/part-slider-fills-row.js +29 -0
- package/dist/lib/source-rules/part-style-naming.d.ts +10 -0
- package/dist/lib/source-rules/part-style-naming.js +2 -0
- package/dist/lib/source-rules/puck-document-surfaces.d.ts +16 -0
- package/dist/lib/source-rules/puck-document-surfaces.js +8 -0
- package/dist/lib/source-rules/reduced-motion.d.ts +26 -0
- package/dist/lib/source-rules/reduced-motion.js +9 -0
- package/dist/lib/source-rules/route-content-width.d.ts +22 -0
- package/dist/lib/source-rules/route-content-width.js +5 -0
- package/dist/lib/source-rules/rule.d.ts +21 -0
- package/dist/lib/source-rules/rule.js +1 -0
- package/dist/lib/source-rules/section-theme-preview.d.ts +9 -0
- package/dist/lib/source-rules/section-theme-preview.js +8 -0
- package/dist/lib/source-rules/site-gutter.d.ts +6 -0
- package/dist/lib/source-rules/site-gutter.js +4 -0
- package/dist/lib/source-rules/site-square-by-default.d.ts +17 -0
- package/dist/lib/source-rules/site-square-by-default.js +3 -0
- package/dist/lib/source-rules/site-width.d.ts +11 -0
- package/dist/lib/source-rules/site-width.js +7 -0
- package/dist/lib/source-rules/size-token-paints.d.ts +8 -0
- package/dist/lib/source-rules/size-token-paints.js +11 -0
- package/dist/lib/source-rules/social-icons-import.d.ts +6 -0
- package/dist/lib/source-rules/social-icons-import.js +6 -0
- package/dist/lib/source-rules/source-status-is-shared.d.ts +7 -0
- package/dist/lib/source-rules/source-status-is-shared.js +1 -0
- package/dist/lib/source-rules/style-face-matches-size.d.ts +10 -0
- package/dist/lib/source-rules/style-face-matches-size.js +4 -0
- package/dist/lib/source-rules/support/accent-rename-bytes.d.ts +5 -0
- package/dist/lib/source-rules/support/accent-rename-bytes.js +1 -0
- package/dist/lib/source-rules/support/css-box-model.d.ts +5 -0
- package/dist/lib/source-rules/support/css-box-model.js +1 -0
- package/dist/lib/source-rules/support/css-length.d.ts +2 -0
- package/dist/lib/source-rules/support/css-length.js +1 -0
- package/dist/lib/source-rules/support/css-rules.d.ts +12 -0
- package/dist/lib/source-rules/support/css-rules.js +1 -0
- package/dist/lib/source-rules/support/css-source.d.ts +2 -0
- package/dist/lib/source-rules/support/css-source.js +3 -0
- package/dist/lib/source-rules/support/label-extraction.d.ts +14 -0
- package/dist/lib/source-rules/support/label-extraction.js +5 -0
- package/dist/lib/source-rules/support/panel-select-cascade.d.ts +72 -0
- package/dist/lib/source-rules/support/panel-select-cascade.js +2 -0
- package/dist/lib/source-rules/support/part-slider-call-sites.d.ts +9 -0
- package/dist/lib/source-rules/support/part-slider-call-sites.js +17 -0
- package/dist/lib/source-rules/support/registry-source.d.ts +14 -0
- package/dist/lib/source-rules/support/registry-source.js +3 -0
- package/dist/lib/source-rules/support/ts-source.d.ts +2 -0
- package/dist/lib/source-rules/support/ts-source.js +3 -0
- package/dist/lib/source-rules/theme-mode-controls-gone.d.ts +10 -0
- package/dist/lib/source-rules/theme-mode-controls-gone.js +5 -0
- package/dist/lib/source-rules/upload-intake-guard.d.ts +11 -0
- package/dist/lib/source-rules/upload-intake-guard.js +6 -0
- package/dist/lib/source-rules/word-styles.d.ts +8 -0
- package/dist/lib/source-rules/word-styles.js +4 -0
- package/dist/lib/theme-row-persist.js +1 -1
- package/dist/lib/theme-save-message.js +1 -1
- package/dist/lib/web-backend.d.ts +4 -59
- package/dist/lib/web-backend.js +1 -1
- package/dist/lib/website-document-addressing.d.ts +2 -0
- package/dist/lib/website-document-addressing.js +1 -0
- package/dist/lib/website-host-inbound.d.ts +1 -0
- package/dist/lib/website-host-inbound.js +1 -0
- package/dist/lib/website-session.d.ts +5 -0
- package/dist/lib/website-session.js +1 -0
- package/package.json +15 -5
|
@@ -1,67 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
import { type EditorCapabilities, type EditorDocumentAdapter } from "../lib/editor-document-adapter.js";
|
|
4
|
-
import { type SaveStatus } from "../lib/puck/pinned-seed-gate.js";
|
|
5
|
-
import { type BridgedCapabilities } from "../lib/editor-admin-bridge.js";
|
|
6
|
-
import { type SendToHost } from "../lib/editor-host.js";
|
|
7
|
-
import { type EditAccess, type SaveConflict } from "efficient-easel/edit-lock";
|
|
8
|
-
import { type AutosaveSnapshot } from "efficient-easel/autosave";
|
|
9
|
-
export type EditorTarget = {
|
|
10
|
-
kind: "page";
|
|
11
|
-
slug: string;
|
|
12
|
-
siteId?: string;
|
|
13
|
-
originSlug?: string;
|
|
14
|
-
} | {
|
|
15
|
-
kind: "template";
|
|
16
|
-
id: string;
|
|
17
|
-
pageSlug?: string;
|
|
18
|
-
};
|
|
19
|
-
export type { SaveStatus };
|
|
20
|
-
export type StorefrontDocumentValue = {
|
|
21
|
-
target: EditorTarget;
|
|
22
|
-
adapter: EditorDocumentAdapter;
|
|
23
|
-
capabilities: EditorCapabilities;
|
|
24
|
-
templateId: string | null;
|
|
25
|
-
currentSlug: string;
|
|
26
|
-
currentKind: string | null;
|
|
27
|
-
siteId: string | null;
|
|
28
|
-
ready: boolean;
|
|
29
|
-
token: string | null;
|
|
30
|
-
tokenRef: RefObject<string | null>;
|
|
31
|
-
notifyParent: SendToHost;
|
|
32
|
-
bridgeCapabilities: BridgedCapabilities;
|
|
33
|
-
runAuthed: (op: (token: string) => Promise<unknown>) => Promise<boolean>;
|
|
34
|
-
docId: string | null;
|
|
35
|
-
data: Data | null;
|
|
36
|
-
getLiveData: () => Data | null;
|
|
37
|
-
footerOriginSlug: string | null;
|
|
38
|
-
error: string | null;
|
|
39
|
-
redirecting: boolean;
|
|
40
|
-
saveStatus: SaveStatus;
|
|
41
|
-
saveState: AutosaveSnapshot;
|
|
42
|
-
autoSaveEnabled: boolean;
|
|
43
|
-
autoSaveStoppedByConflict: boolean;
|
|
44
|
-
hasUnsavedEdits: boolean;
|
|
45
|
-
toggleAutoSave: () => void;
|
|
46
|
-
retrySave: () => void;
|
|
47
|
-
onChange: (next: Data) => void;
|
|
48
|
-
flushSave: () => Promise<boolean>;
|
|
49
|
-
onPublish: (next: Data) => Promise<void>;
|
|
50
|
-
access: EditAccess;
|
|
51
|
-
readOnly: boolean;
|
|
52
|
-
takeOverEditing: () => void;
|
|
53
|
-
viewReadOnly: () => void;
|
|
54
|
-
saveConflict: SaveConflict | null;
|
|
55
|
-
reloadFromServer: () => void;
|
|
56
|
-
navigate: (target: EditorTarget) => void;
|
|
57
|
-
pendingNav: EditorTarget | null;
|
|
58
|
-
cancelPendingNav: () => void;
|
|
59
|
-
discardAndNavigate: () => void;
|
|
60
|
-
saveAndNavigate: () => Promise<void>;
|
|
61
|
-
};
|
|
62
|
-
export declare const StorefrontDocumentContext: import("react").Context<StorefrontDocumentValue | null>;
|
|
63
|
-
export declare function useStorefrontDocument(): StorefrontDocumentValue;
|
|
64
|
-
export declare function StorefrontDocumentProvider({ target, children, }: {
|
|
65
|
-
target: EditorTarget;
|
|
66
|
-
children: ReactNode;
|
|
67
|
-
}): import("react").JSX.Element;
|
|
1
|
+
export { ScreenDocumentContext as StorefrontDocumentContext, ScreenDocumentProvider as StorefrontDocumentProvider, useScreenDocument as useStorefrontDocument } from "efficient-easel/screen/components/ScreenDocumentContext";
|
|
2
|
+
export type { ScreenTarget as EditorTarget, SaveStatus, ScreenDocumentValue as StorefrontDocumentValue } from "efficient-easel/screen/components/ScreenDocumentContext";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{
|
|
1
|
+
"use client";import{ScreenDocumentContext as t,ScreenDocumentProvider as n,useScreenDocument as r}from"efficient-easel/screen/components/ScreenDocumentContext";export{t as StorefrontDocumentContext,n as StorefrontDocumentProvider,r as useStorefrontDocument};
|
|
@@ -11,6 +11,7 @@ import "efficient-easel/menu.css";
|
|
|
11
11
|
import "efficient-easel/chrome.css";
|
|
12
12
|
import "efficient-easel/tree.css";
|
|
13
13
|
import "efficient-easel/drag.css";
|
|
14
|
+
import "efficient-easel/screen.css";
|
|
14
15
|
import "./storefront-editor.css";
|
|
15
16
|
import { type EditorTarget } from "./StorefrontDocumentContext.js";
|
|
16
17
|
export default function StorefrontEditor({ target }: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as r,jsxs as k}from"react/jsx-runtime";import{useCallback as n,useEffect as f,useMemo as T,useRef as p,useState as o}from"react";import fe from"next/dynamic";import"efficient-easel/easel.css";import"efficient-easel/shell.css";import"efficient-easel/rail.css";import"efficient-easel/panel.css";import"efficient-easel/fields.css";import"efficient-easel/pick.css";import"efficient-easel/copy.css";import"efficient-easel/gold.css";import"efficient-easel/text-styles.css";import"efficient-easel/menu.css";import"efficient-easel/chrome.css";import"efficient-easel/tree.css";import"efficient-easel/drag.css";import"./storefront-editor.css";import{documentPermissions as _t}from"efficient-easel/edit-lock";import{buildConfig as vt}from"../lib/puck/build-config.js";import{ChromeWrap as Ct}from"../lib/editor-chrome.js";import{backendOf as z,sessionRegistry as yt}from"../lib/editor-session.js";import{useEditorSession as Tt}from"../lib/editor-session-context.js";import{withSiteBlockGapFields as Et}from"../lib/puck/site-gap-fields.js";import{withTemplateMediaPlaceholders as bt}from"../lib/puck/templateFields.js";import{setEditorPage as ge}from"../lib/puck/editor-page-context.js";import{resolveSiteName as xt}from"../lib/content/site-name.js";import{normalizeSiteGutter as Pt,normalizeSiteWidth as Nt}from"../lib/content/page-width.js";import{normalizeSiteBlockGap as Ft}from"../lib/content/container-gap.js";import{StorefrontDocumentProvider as Ht,useStorefrontDocument as It}from"./StorefrontDocumentContext.js";import{PreviewHeaderProvider as Rt}from"./PreviewHeaderContext.js";import{PreviewFooterProvider as kt}from"./PreviewFooterContext.js";import{PreviewChatProvider as zt,DEFAULT_CHAT_PREVIEW as Gt}from"./PreviewChatContext.js";import{PreviewSocialProvider as Mt}from"./PreviewSocialContext.js";import{useSocialSettings as Dt}from"./useSocialSettings.js";import{PreviewSurfaceProvider as At}from"./PreviewSurfaceContext.js";import{PreviewFocusProvider as Wt}from"./PreviewFocusContext.js";import{SITE_FOOTER_SLUG as Ot}from"../lib/content/footer.js";import{markFooterReturn as Lt}from"../lib/puck/footer-return.js";import{PreviewTickerProvider as Bt}from"./PreviewTickerContext.js";import{PreviewPartsProvider as Kt}from"./PreviewPartsContext.js";import{PreviewLocationPartProvider as Yt}from"./PreviewLocationPartContext.js";import{PreviewPartStyleProvider as Ut}from"./PreviewPartStyleContext.js";import{SiteMapsProvider as jt,readSiteMapsKey as Vt,writeSiteMapsKey as Se,readSiteMapId as Xt,writeSiteMapId as Zt}from"../lib/maps-config.js";import{CORNER_STYLE_TO_PX as qt,DEFAULT_HEADING_COMPRESSION as Jt,DEFAULT_HEADING_TYPOGRAPHY as Qt,DEFAULT_SWITCH_SHOWN as G,DEFAULT_SIZES as $t,DEFAULT_THEME_MODE as E,normalizeCornerRadius as er,normalizeCornerStyle as tr,normalizeCardShadow as rr,normalizeCardGap as or,normalizeHoverEffect as nr,normalizeShadowColor as ar,IDENTITY_CARD_GAP as we,IDENTITY_CARD_SHADOW as ir,IDENTITY_HOVER_EFFECT as dr,headingTypographyFromRow as cr,normalizeHeadingCompression as sr,normalizeSizes as lr,THEME_MODE_KEY as _e,THEME_STORAGE_KEY as ur,THEME_SWITCH_HIDE as ve,THEME_SWITCH_KEY as M}from"../lib/theme.js";import{DEFAULT_FONTS as mr,normalizeFonts as hr}from"../lib/fonts.js";const pr=fe(()=>import("./SiteEditorProvider.js"),{ssr:!1}),fr=fe(()=>import("./StorefrontEditorChrome.js"),{ssr:!1}),gr=()=>{if(typeof window>"u")return E;try{const a=window.localStorage.getItem(_e);return a==="light"||a==="dark"||a==="auto"?a:E}catch{return E}},Ce=a=>{if(!(typeof window>"u"))try{window.localStorage.setItem(_e,a)}catch{}},Sr=()=>{if(typeof window>"u")return G;try{return window.localStorage.getItem(M)!==ve}catch{return G}},wr=()=>{if(!(typeof window>"u"))try{window.localStorage.removeItem(ur)}catch{}},ye=a=>{if(!(typeof window>"u"))try{a?window.localStorage.removeItem(M):window.localStorage.setItem(M,ve)}catch{}};function _r({saving:a,onCancel:s,onDiscard:w,onSave:m}){return r("div",{className:"fixed inset-0 z-[200] flex items-center justify-center bg-black/30 p-4",role:"dialog","aria-modal":"true","aria-labelledby":"sf-leave-title",children:k("div",{className:"w-full max-w-sm rounded-lg bg-white p-5 shadow-xl",children:[r("h2",{id:"sf-leave-title",className:"text-[15px] font-semibold text-zinc-900",children:"Unsaved changes"}),r("p",{className:"mt-2 text-[13px] leading-relaxed text-zinc-600",children:"Your most recent edits haven\u2019t finished saving yet. Save them before switching, or leave and discard them."}),k("div",{className:"mt-4 flex justify-end gap-2",children:[r("button",{type:"button",onClick:s,className:"rounded-md border border-zinc-300 px-3 py-[7px] text-[13px] font-medium text-zinc-700 transition-colors hover:bg-zinc-100",children:"Cancel"}),r("button",{type:"button",onClick:w,className:"rounded-md border border-red-200 px-3 py-[7px] text-[13px] font-medium text-red-600 transition-colors hover:bg-red-50",children:"Discard & leave"}),r("button",{type:"button",onClick:m,disabled:a,className:"rounded-md bg-blue-600 px-3 py-[7px] text-[13px] font-medium text-white transition-colors hover:bg-blue-700 disabled:opacity-60",children:a?"Saving\u2026":"Save & leave"})]})]})})}function vr(){const{adapter:a,capabilities:s,templateId:w,ready:m,token:h,siteId:c,currentSlug:g,currentKind:D,data:_,getLiveData:A,footerOriginSlug:S,error:W,redirecting:Te,saveStatus:Ee,readOnly:O,navigate:v,onChange:be,pendingNav:xe,cancelPendingNav:Pe,discardAndNavigate:Ne,saveAndNavigate:Fe}=It();f(()=>(ge(g,D),()=>ge(null,null)),[g,D]);const b=s.placeholderFrames,[He,L]=o(null),[Ie,B]=o("");f(()=>{const e=a.templateName;if(!m||!w||!e){B("");return}let i=!1;return e().then(l=>!i&&B(l??"")).catch(()=>{}),()=>{i=!0}},[m,h,w,a]);const[Re,x]=o(E),[ke,P]=o(G),[ze,K]=o({selected:0,themes:[]}),[Ge,Y]=o(mr),[Me,U]=o($t),[De,j]=o(null),[Ae,V]=o(Jt),[We,X]=o(null),[Oe,Z]=o(null),[Le,q]=o(we),[Be,J]=o(null),[Ke,Q]=o(null),[Ye,$]=o(null),[N,ee]=o(null),u=Tt(),te=T(()=>vt(yt(u),u.blocks),[u]),Ue=T(()=>Et(bt(te,b),N),[te,b,N]),je=T(()=>_t(!O),[O]),[Ve,re]=o(Qt),[Xe,oe]=o(null),[Ze,ne]=o(null),ae=p(null),d=p(!1);f(()=>{x(gr()),P(Sr())},[]);const qe=n(e=>{d.current=!0,wr(),Ce(e),x(e)},[]),Je=n(e=>{d.current=!0,ye(e),P(e)},[]),Qe=n(e=>{d.current=!0,K(e)},[]),$e=n(e=>{d.current=!0,Y(e)},[]),et=n(e=>{d.current=!0,U(e)},[]),tt=n(e=>{d.current=!0,j(e)},[]),rt=n(e=>{d.current=!0,V(e)},[]),ot=n(e=>{d.current=!0,X(e)},[]),nt=n(e=>{d.current=!0,Z(e)},[]),at=n(e=>{d.current=!0,q(e)},[]),it=n(e=>{d.current=!0,J(e)},[]),dt=n(e=>{d.current=!0,re(e)},[]),ct=n(e=>{d.current=!0,Q(e)},[]),st=n(e=>{d.current=!0,$(e)},[]),lt=n(e=>{d.current=!0,ee(e)},[]),ut=n(e=>{d.current=!0,oe(e)},[]),mt=n(e=>{d.current=!0,ne(e)},[]);f(()=>{const e=z(u).theme;if(!h||!s.hasSiteTheme||!e)return;const i=c??"";ae.current!==i&&(ae.current=i,d.current=!1);let l=!1;return e.get(c?{siteId:c}:void 0).then(t=>{l||d.current||(Ce(t.default_mode),ye(t.show_theme_switch),x(t.default_mode),P(t.show_theme_switch),K({selected:t.selected_preset,themes:t.theme_presets}),Y(hr({heading:t.heading_font,body:t.body_font,accent:t.accent_font,label:t.label_font})),U(lr({headingLarge:t.heading_size_large_px,headingMedium:t.heading_size_medium_px,headingSmall:t.heading_size_small_px,body:t.body_size_px,label:t.label_size_px})),j(t.corner_radius_px===void 0?qt[tr(t.corner_style)]:er(t.corner_radius_px)),V(sr(t.heading_compression)),X(t.card_shadow==null?ir:rr(t.card_shadow)),q(t.card_gap==null?we:or(t.card_gap)),J(t.hover_effect==null?dr:nr(t.hover_effect)),Z(ar(t.shadow_color)),Q(Nt(t.site_width)),$(Pt(t.site_gutter)),ee(Ft(t.block_gap)),re(cr(t)),oe(t.hero_background_follows_width===!0),ne(t.photography_grayscale===!0))}).catch(()=>{}),()=>{l=!0}},[h,c,s.hasSiteTheme,u]);const ht=Dt({token:h,siteId:c,enabled:s.hasSiteSettings}),[pt,ie]=o(Gt),de=p(null),F=p(!1),H=p(null),C=p({}),ft=n(e=>{F.current=!0,ie(i=>({...i,...e})),!(!s.hasSiteSettings||!h)&&(C.current={...C.current,...e},H.current&&clearTimeout(H.current),H.current=setTimeout(()=>{const i=C.current;C.current={},z(u).chat?.update(i,c?{siteId:c}:void 0).catch(()=>{})},500))},[s.hasSiteSettings,h,c,u]);f(()=>{if(!h||!s.hasSiteSettings)return;const e=c??"";de.current!==e&&(de.current=e,F.current=!1);let i=!1;const l=z(u).chat;if(l)return l.get(c?{siteId:c}:void 0).then(t=>{i||F.current||ie({enabled:t.enabled,title:t.title,subtitle:t.subtitle,greeting:t.greeting})}).catch(()=>{}),()=>{i=!0}},[h,c,s.hasSiteSettings,u]);const[y,I]=o(""),ce=p(null),R=p(!1);f(()=>I(Vt()),[]);const se=n(e=>{const i=e.trim();if(i===y)return;R.current=!0,Se(i),I(i);const l=a.updateSite;!s.canEditSiteRecord||!m||!l||l({mapsApiKey:i}).catch(()=>{})},[y,s.canEditSiteRecord,m,a]),[le,ue]=o("");f(()=>ue(Xt()),[]),f(()=>{const e=a.site;if(!m||!s.hasSiteRecord||!e){L(null);return}const i=c??"";ce.current!==i&&(ce.current=i,R.current=!1);let l=!1;return e().then(t=>{if(l||(L(xt(t.name)),R.current))return;const he=t.mapsApiKey??"";Se(he),I(he);const pe=t.mapsMapId??"";Zt(pe),ue(pe)}).catch(()=>{}),()=>{l=!0}},[m,h,s.hasSiteRecord,c,a]);const gt=T(()=>({apiKey:y,setApiKey:se,mapId:le}),[y,se,le]),me=p(null),St=n(()=>{me.current=A()??_??null,Lt(g),v({kind:"page",slug:Ot,siteId:c??void 0,originSlug:g})},[A,_,g,v,c]),wt=n(()=>{S&&v({kind:"page",slug:S,siteId:c??void 0})},[S,v,c]);return Te?r("div",{className:"sf-msg",children:"Loading\u2026"}):W?r("div",{className:"sf-msg sf-msg--error",children:W}):m?_?r(Rt,{websiteName:He,templateChrome:b,templateName:Ie||null,themeMode:Re,onThemeModeChange:qe,themeSwitchShown:ke,onThemeSwitchShownChange:Je,theme:ze,onThemeChange:Qe,fonts:Ge,onFontsChange:$e,cornerRadiusPx:De,onCornerRadiusPxChange:tt,cardShadow:We,onCardShadowChange:ot,shadowColor:Oe,onShadowColorChange:nt,cardGap:Le,onCardGapChange:at,hoverEffect:Be,onHoverEffectChange:it,headingCompression:Ae,onHeadingCompressionChange:rt,headingTypography:Ve,onHeadingTypographyChange:dt,sizes:Me,onSizesChange:et,siteWidth:Ke,onSiteWidthChange:ct,siteGutter:Ye,onSiteGutterChange:st,blockGap:N,onBlockGapChange:lt,heroBackgroundFollowsWidth:Xe,onHeroBackgroundFollowsWidthChange:ut,photographyGrayscale:Ze,onPhotographyGrayscaleChange:mt,themeFromDocument:!s.hasSiteTheme,children:r(Wt,{originData:S?me.current:null,originSlug:S,exitFocus:wt,children:r(kt,{editFooter:St,children:r(Ct,{wrap:u.chrome?.wrap,surface:"page",children:r(Bt,{children:r(Kt,{children:r(Yt,{children:r(Ut,{children:k(jt,{value:gt,children:[r(zt,{chat:pt,onChatChange:ft,children:r(Mt,{value:ht,children:r(At,{children:r(pr,{config:Ue,data:_,onChange:be,permissions:je,children:r(fr,{})})})})}),xe&&r(_r,{saving:Ee==="saving",onCancel:Pe,onDiscard:Ne,onSave:()=>{Fe()}})]})})})})})})})})}):r("div",{className:"sf-msg",children:"Loading\u2026"}):r("div",{className:"sf-msg",children:"Waiting for editor authorization\u2026"})}function Cr({target:a}){return r(Ht,{target:a,children:r(vr,{})})}export{Cr as default};
|
|
1
|
+
"use client";import{jsx as d,jsxs as ct}from"react/jsx-runtime";import{useCallback as n,useEffect as p,useMemo as F,useRef as m,useState as o}from"react";import"efficient-easel/easel.css";import"efficient-easel/shell.css";import"efficient-easel/rail.css";import"efficient-easel/panel.css";import"efficient-easel/fields.css";import"efficient-easel/pick.css";import"efficient-easel/copy.css";import"efficient-easel/gold.css";import"efficient-easel/text-styles.css";import"efficient-easel/menu.css";import"efficient-easel/chrome.css";import"efficient-easel/tree.css";import"efficient-easel/drag.css";import"efficient-easel/screen.css";import"./storefront-editor.css";import{buildConfig as dt}from"../lib/puck/build-config.js";import{ChromeWrap as st}from"../lib/editor-chrome.js";import{sessionRegistry as ut}from"../lib/editor-session.js";import{backendOf as G,blocksOf as lt}from"../lib/website-session.js";import{useEditorSession as ht}from"../lib/editor-session-context.js";import{withSiteBlockGapFields as mt}from"../lib/puck/site-gap-fields.js";import{withTemplateMediaPlaceholders as pt}from"../lib/puck/templateFields.js";import{setEditorPage as he}from"../lib/puck/editor-page-context.js";import{resolveSiteName as ft}from"../lib/content/site-name.js";import{normalizeSiteGutter as St,normalizeSiteWidth as gt}from"../lib/content/page-width.js";import{normalizeSiteBlockGap as wt}from"../lib/content/container-gap.js";import _t,{DocumentScreen as Ct}from"./EditorScreenMount.js";import{useStorefrontDocument as Et}from"./StorefrontDocumentContext.js";import{PreviewHeaderProvider as Tt}from"./PreviewHeaderContext.js";import{PreviewFooterProvider as yt}from"./PreviewFooterContext.js";import{PreviewChatProvider as Pt,DEFAULT_CHAT_PREVIEW as vt}from"./PreviewChatContext.js";import{PreviewSocialProvider as It}from"./PreviewSocialContext.js";import{useSocialSettings as Ht}from"./useSocialSettings.js";import{PreviewSurfaceProvider as Rt}from"./PreviewSurfaceContext.js";import{PreviewFocusProvider as Mt}from"./PreviewFocusContext.js";import{SITE_FOOTER_SLUG as Ft}from"../lib/content/footer.js";import{markFooterReturn as Gt}from"../lib/puck/footer-return.js";import{WEBSITE_ADDRESSING as bt}from"../lib/website-document-addressing.js";import{PreviewTickerProvider as kt}from"./PreviewTickerContext.js";import{PreviewPartsProvider as Dt}from"./PreviewPartsContext.js";import{PreviewLocationPartProvider as zt}from"./PreviewLocationPartContext.js";import{PreviewPartStyleProvider as At}from"./PreviewPartStyleContext.js";import{SiteMapsProvider as Wt,readSiteMapsKey as xt,writeSiteMapsKey as me,readSiteMapId as Nt,writeSiteMapId as Ot}from"../lib/maps-config.js";import{CORNER_STYLE_TO_PX as Bt,DEFAULT_HEADING_COMPRESSION as Kt,DEFAULT_HEADING_TYPOGRAPHY as Lt,DEFAULT_SWITCH_SHOWN as b,DEFAULT_SIZES as Yt,DEFAULT_THEME_MODE as E,normalizeCornerRadius as Ut,normalizeCornerStyle as jt,normalizeCardShadow as Vt,normalizeCardGap as Xt,normalizeHoverEffect as Zt,normalizeShadowColor as qt,IDENTITY_CARD_GAP as pe,IDENTITY_CARD_SHADOW as Jt,IDENTITY_HOVER_EFFECT as Qt,headingTypographyFromRow as $t,normalizeHeadingCompression as er,normalizeSizes as tr,THEME_MODE_KEY as fe,THEME_STORAGE_KEY as rr,THEME_SWITCH_HIDE as Se,THEME_SWITCH_KEY as k}from"../lib/theme.js";import{DEFAULT_FONTS as or,normalizeFonts as nr}from"../lib/fonts.js";import{WEBSITE_SCREEN as ar}from"./WebsiteScreenParts.js";import{routeWebsiteHostMessage as ir}from"../lib/website-host-inbound.js";const cr=()=>{if(typeof window>"u")return E;try{const c=window.localStorage.getItem(fe);return c==="light"||c==="dark"||c==="auto"?c:E}catch{return E}},ge=c=>{if(!(typeof window>"u"))try{window.localStorage.setItem(fe,c)}catch{}},dr=()=>{if(typeof window>"u")return b;try{return window.localStorage.getItem(k)!==Se}catch{return b}},sr=()=>{if(!(typeof window>"u"))try{window.localStorage.removeItem(rr)}catch{}},we=c=>{if(!(typeof window>"u"))try{c?window.localStorage.removeItem(k):window.localStorage.setItem(k,Se)}catch{}};function ur(){const{adapter:c,capabilities:s,templateId:D,ready:f,token:h,siteId:i,currentSlug:S,currentKind:z,data:A,getLiveData:W,footerOriginSlug:g,navigate:w}=Et();p(()=>(he(S,z),()=>he(null,null)),[S,z]);const T=s.placeholderFrames,[_e,x]=o(null),[Ce,N]=o("");p(()=>{const e=c.templateName;if(!f||!D||!e){N("");return}let r=!1;return e().then(u=>!r&&N(u??"")).catch(()=>{}),()=>{r=!0}},[f,h,D,c]);const[Ee,y]=o(E),[Te,P]=o(b),[ye,O]=o({selected:0,themes:[]}),[Pe,B]=o(or),[ve,K]=o(Yt),[Ie,L]=o(null),[He,Y]=o(Kt),[Re,U]=o(null),[Me,j]=o(null),[Fe,V]=o(pe),[Ge,X]=o(null),[be,Z]=o(null),[ke,q]=o(null),[v,J]=o(null),l=ht(),Q=F(()=>dt(ut(l),lt(l)),[l]),De=F(()=>mt(pt(Q,T),v),[Q,T,v]),[ze,$]=o(Lt),[Ae,ee]=o(null),[We,te]=o(null),re=m(null),a=m(!1);p(()=>{y(cr()),P(dr())},[]);const xe=n(e=>{a.current=!0,sr(),ge(e),y(e)},[]),Ne=n(e=>{a.current=!0,we(e),P(e)},[]),Oe=n(e=>{a.current=!0,O(e)},[]),Be=n(e=>{a.current=!0,B(e)},[]),Ke=n(e=>{a.current=!0,K(e)},[]),Le=n(e=>{a.current=!0,L(e)},[]),Ye=n(e=>{a.current=!0,Y(e)},[]),Ue=n(e=>{a.current=!0,U(e)},[]),je=n(e=>{a.current=!0,j(e)},[]),Ve=n(e=>{a.current=!0,V(e)},[]),Xe=n(e=>{a.current=!0,X(e)},[]),Ze=n(e=>{a.current=!0,$(e)},[]),qe=n(e=>{a.current=!0,Z(e)},[]),Je=n(e=>{a.current=!0,q(e)},[]),Qe=n(e=>{a.current=!0,J(e)},[]),$e=n(e=>{a.current=!0,ee(e)},[]),et=n(e=>{a.current=!0,te(e)},[]);p(()=>{const e=G(l).theme;if(!h||!s.hasSiteTheme||!e)return;const r=i??"";re.current!==r&&(re.current=r,a.current=!1);let u=!1;return e.get(i?{siteId:i}:void 0).then(t=>{u||a.current||(ge(t.default_mode),we(t.show_theme_switch),y(t.default_mode),P(t.show_theme_switch),O({selected:t.selected_preset,themes:t.theme_presets}),B(nr({heading:t.heading_font,body:t.body_font,accent:t.accent_font,label:t.label_font})),K(tr({headingLarge:t.heading_size_large_px,headingMedium:t.heading_size_medium_px,headingSmall:t.heading_size_small_px,body:t.body_size_px,label:t.label_size_px})),L(t.corner_radius_px===void 0?Bt[jt(t.corner_style)]:Ut(t.corner_radius_px)),Y(er(t.heading_compression)),U(t.card_shadow==null?Jt:Vt(t.card_shadow)),V(t.card_gap==null?pe:Xt(t.card_gap)),X(t.hover_effect==null?Qt:Zt(t.hover_effect)),j(qt(t.shadow_color)),Z(gt(t.site_width)),q(St(t.site_gutter)),J(wt(t.block_gap)),$($t(t)),ee(t.hero_background_follows_width===!0),te(t.photography_grayscale===!0))}).catch(()=>{}),()=>{u=!0}},[h,i,s.hasSiteTheme,l]);const tt=Ht({token:h,siteId:i,enabled:s.hasSiteSettings}),[rt,oe]=o(vt),ne=m(null),I=m(!1),H=m(null),_=m({}),ot=n(e=>{I.current=!0,oe(r=>({...r,...e})),!(!s.hasSiteSettings||!h)&&(_.current={..._.current,...e},H.current&&clearTimeout(H.current),H.current=setTimeout(()=>{const r=_.current;_.current={},G(l).chat?.update(r,i?{siteId:i}:void 0).catch(()=>{})},500))},[s.hasSiteSettings,h,i,l]);p(()=>{if(!h||!s.hasSiteSettings)return;const e=i??"";ne.current!==e&&(ne.current=e,I.current=!1);let r=!1;const u=G(l).chat;if(u)return u.get(i?{siteId:i}:void 0).then(t=>{r||I.current||oe({enabled:t.enabled,title:t.title,subtitle:t.subtitle,greeting:t.greeting})}).catch(()=>{}),()=>{r=!0}},[h,i,s.hasSiteSettings,l]);const[C,R]=o(""),ae=m(null),M=m(!1);p(()=>R(xt()),[]);const ie=n(e=>{const r=e.trim();if(r===C)return;M.current=!0,me(r),R(r);const u=c.updateSite;!s.canEditSiteRecord||!f||!u||u({mapsApiKey:r}).catch(()=>{})},[C,s.canEditSiteRecord,f,c]),[ce,de]=o("");p(()=>de(Nt()),[]),p(()=>{const e=c.site;if(!f||!s.hasSiteRecord||!e){x(null);return}const r=i??"";ae.current!==r&&(ae.current=r,M.current=!1);let u=!1;return e().then(t=>{if(u||(x(ft(t.name)),M.current))return;const ue=t.mapsApiKey??"";me(ue),R(ue);const le=t.mapsMapId??"";Ot(le),de(le)}).catch(()=>{}),()=>{u=!0}},[f,h,s.hasSiteRecord,i,c]);const nt=F(()=>({apiKey:C,setApiKey:ie,mapId:ce}),[C,ie,ce]),se=m(null),at=n(()=>{se.current=W()??A??null,Gt(S),w({kind:"page",slug:Ft,siteId:i??void 0,originSlug:S})},[W,A,S,w,i]),it=n(()=>{g&&w({kind:"page",slug:g,siteId:i??void 0})},[g,w,i]);return d(Ct,{config:De,parts:ar,wrap:(e,r)=>d(Tt,{websiteName:_e,templateChrome:T,templateName:Ce||null,themeMode:Ee,onThemeModeChange:xe,themeSwitchShown:Te,onThemeSwitchShownChange:Ne,theme:ye,onThemeChange:Oe,fonts:Pe,onFontsChange:Be,cornerRadiusPx:Ie,onCornerRadiusPxChange:Le,cardShadow:Re,onCardShadowChange:Ue,shadowColor:Me,onShadowColorChange:je,cardGap:Fe,onCardGapChange:Ve,hoverEffect:Ge,onHoverEffectChange:Xe,headingCompression:He,onHeadingCompressionChange:Ye,headingTypography:ze,onHeadingTypographyChange:Ze,sizes:ve,onSizesChange:Ke,siteWidth:be,onSiteWidthChange:qe,siteGutter:ke,onSiteGutterChange:Je,blockGap:v,onBlockGapChange:Qe,heroBackgroundFollowsWidth:Ae,onHeroBackgroundFollowsWidthChange:$e,photographyGrayscale:We,onPhotographyGrayscaleChange:et,themeFromDocument:!s.hasSiteTheme,children:d(Mt,{originData:g?se.current:null,originSlug:g,exitFocus:it,children:d(yt,{editFooter:at,children:d(st,{wrap:l.chrome?.wrap,surface:"page",children:d(kt,{children:d(Dt,{children:d(zt,{children:d(At,{children:ct(Wt,{value:nt,children:[d(Pt,{chat:rt,onChatChange:ot,children:d(It,{value:tt,children:d(Rt,{children:e})})}),r]})})})})})})})})})})}function lr({target:c}){return d(_t,{target:c,addressing:bt,onHostMessage:ir,children:d(ur,{})})}export{lr as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export default
|
|
1
|
+
export { default } from "efficient-easel/screen/components/ScreenChrome";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as r,Fragment as E,jsxs as p}from"react/jsx-runtime";import{SECTION_HEAD_TYPE as rt,SPLITTABLE_SECTIONS as He,canSplitHead as Ts}from"../lib/sections/section-head-placement.js";import{eyebrowLookFor as vn}from"../lib/sections/section-eyebrow-look.js";import{presetFor as Is}from"../lib/sections/section-presets.js";import{blockIsOffered as Zo}from"../lib/puck/block-offer.js";import{Fragment as Ve,useCallback as z,useEffect as S,useLayoutEffect as Es,useMemo as wn,useRef as I,useState as L}from"react";import{PagesIcon as Ls,LayersIcon as Jo,StylesIcon as As,MediaIcon as Qo}from"efficient-easel/rail";import{LayersTree as Os,Subtree as ue,TreeGroupLabel as Bt,TreeRow as R,TreeRowAction as Dt,TreeSeam as bn}from"efficient-easel/tree";import{DeviceSwitch as Ns,EaselIconButton as er,EaselTopBar as Rs,InspectorIconButton as Bs,PanelResizeHandle as tr,SaveState as nr,SaveStateToggle as Ds,TopBarCluster as or,TopBarDivider as _s,TopBarRail as $s}from"efficient-easel/chrome";import{ExternalIcon as Ms,ImageIcon as zs,RedoIcon as Fs,TextLinesIcon as Hs,TrashIcon as xn,UndoIcon as Vs}from"efficient-easel/icons";import Ws,{PanelShowStrip as rr}from"./SidePanelHead.js";import{saveIndicator as Gs}from"efficient-easel/autosave";import{useStorefrontDocument as Us}from"./StorefrontDocumentContext.js";import Ks from"./PageEditGuardNotices.js";import{PREVIEW_DEVICES as Ys}from"./preview-devices.js";import{PreviewDeviceContext as js}from"./PreviewDeviceContext.js";import{LocationsTreeContext as qs}from"./LocationsTreeContext.js";import Xs from"./AddSidePanel.js";import{boxFooterFromFooter as Zs}from"../lib/puck/box-footer.js";import{isSectionGroupType as _t,sectionGroupZone as sr,siteFooterDocChrome as Js,SITE_FOOTER_TYPE as $t,SITE_HEADER_TYPE as Qs}from"../lib/puck/section-groups.js";import se from"./SectionIcon.js";import ir from"./UiIcon.js";import ei from"./PagesPanel.js";import{usePreviewSurface as ti}from"./PreviewSurfaceContext.js";import ni from"./StylesPanel.js";import{SITE_STYLES_TABS as oi,SITE_STYLES_TEXT_TAB as ri}from"./WebsiteSettingsPanel.js";import{requestMediaPick as si}from"../lib/editor-media-picker.js";import{useHostProducts as ii}from"../lib/use-host-products.js";import{cancelPanelPick as Mt,useMediaPanel as li,usePanelPick as ci}from"../lib/editor-media-panel.js";import lr from"./MediaSidePanel.js";import{useEditorHost as ai}from"../lib/editor-host.js";import di from"./HeadingAudit.js";import{DEFAULT_PANEL_W as Ne,MAX_PANEL_W as cr,MIN_PANEL_W as ar,PANEL_WIDTHS_KEY as dr,clampPanelWidth as pr,panelWidthVars as pi}from"./panel-widths.js";import ui,{CHAT_MODE as fi,SOCIAL_MODE as hi,HEADER_MODE as Pn,PUCK_MODE as Y,WEBSITE_MODE as gi}from"./SectionEditor.js";import{SlotChildActionsProvider as mi}from"./SlotChildActionsContext.js";import{usePreviewHeader as yi}from"./PreviewHeaderContext.js";import{usePreviewChat as Si}from"./PreviewChatContext.js";import{usePreviewSocial as ki}from"./PreviewSocialContext.js";import{TICKER_PART_LABEL as vi,usePreviewTicker as wi}from"./PreviewTickerContext.js";import{usePreviewFooter as bi}from"./PreviewFooterContext.js";import{decodeLocationPartId as xi,encodeLocationPartId as Pi,usePreviewLocationPart as Ci}from"./PreviewLocationPartContext.js";import{usePartBridge as Ti}from"./usePartBridge.js";import{ROOT_ZONE as u,newNodeId as st,TREE_MAX_DEPTH as Ii,childSlotsOf as ur,missingPinnedTypes as Ei,nestsInTree as Li,pinnedDuplicateIds as fr,slotFieldsOf as Ai}from"../lib/puck/content-tree.js";import{BOX_TYPE as zt}from"../lib/puck/container-blocks.js";import{isLockedBlock as Cn}from"../lib/puck/locked-blocks.js";import{sectionIdOfBoxZone as Oi,setBookingPreview as Ni}from"../lib/puck/booking-preview.js";import{canSeedPinnedChrome as Ri}from"../lib/puck/pinned-seed-gate.js";import{SLOT_SECTION_SPECS as Bi}from"../lib/puck/slot-specs.js";import{HERO_GROUP_TYPE as Ft,heroGroupNestDepth as Ht}from"../lib/hero-group-placement.js";import{canAddTo as ee}from"../lib/puck/add-target.js";import{EDITOR_NODE_CLIPBOARD as Di,useNodeContextMenu as _i}from"./NodeContextMenu.js";import{FOOTER_TYPE as A,HEADER_TYPE as xe,buildDefaultFooterBlocks as hr,buildDefaultHeaderNode as gr}from"../lib/puck/footer-blocks.js";import{SITE_FOOTER_SLUG as mr}from"../lib/content/footer.js";import{scrollPreviewToSection as it,pinPreviewToSection as Tn,pinPreviewToBottom as $i,gotoPreviewSlide as yr,scrollPreviewToTop as In}from"../lib/puck/preview-dom.js";import{readFooterReturn as Mi,clearFooterReturn as zi}from"../lib/puck/footer-return.js";import{dedupeSlotChildren as Fi}from"../lib/puck/slot-heal.js";import{rootRowName as Hi,slotChildRenameProp as Vi,slotChildRowName as Wi}from"../lib/puck/slot-child-name.js";import{cloneNodeWithFreshIds as En}from"../lib/puck/section-doc.js";import{labelAtLevel as Gi}from"../lib/puck/section-catalog.js";import Ui from"./AddChildRow.js";import{useSectionOps as Ki}from"../lib/puck/use-section-ops.js";import{markedTreeNodeId as Yi,revealSelectedTreeRow as ji,sameSelector as qi}from"../lib/puck/tree-reveal.js";import{useLocationsFocus as Xi,setLocationsFocus as ie}from"../lib/puck/locations-focus.js";import{bucketsOf as Sr,moveGroup as kr,moveCity as vr,addCity as Zi,addGroup as Ji,deleteGroup as Qi,deleteCity as el,absCityIndex as wr,groupLabelOf as tl,cardKey as br}from"../lib/puck/locations-tree.js";import{usePreviewHref as nl}from"./usePreviewHref.js";import{useEditorKeyTarget as ol,useEditorUndoKeys as rl}from"../lib/editor-key-scope.js";import{leftViewForSelection as sl,readLeftView as il,resolveLeftView as ll,writeLeftView as cl}from"../lib/puck/left-view.js";import al from"./TemplateGlyph.js";import{resolveSaveAsTemplateAction as dl,SAVE_AS_TEMPLATE_EVENT as pl}from"../lib/save-as-template-action.js";import{heldStyle as ul,styleShortcut as fl}from"efficient-easel/style-clipboard";import{BLOCK_SELECTOR as hl,useCanvasEvent as gl,useCanvasFrame as ml}from"efficient-easel/canvas";import{createNode as yl,DataError as Sl,newId as kl,parseZoneKey as Pe,ROOT_ID as vl,ROOT_SLOT as wl,zoneKey as le}from"efficient-easel/data";import{CanvasDragLayer as bl,createDragSession as xl,gapToMoveIndex as Pl,useTreeDrag as Ln}from"efficient-easel/drag";import{toItemSelector as Cl,useNodeOps as Tl}from"efficient-easel/node-ops";import{useEasel as Il,useEaselApi as El}from"efficient-easel/easel";import{copyNodeStyle as xr,nodeStyleRows as Ll,planNodePaste as Al,siteStyleScope as Ol}from"../lib/puck/style-clipboard.js";import{SiteCanvas as Nl}from"../lib/puck/overrides.js";function Rl({saveState:k,notSaving:ce,onToggle:j,onRetry:lt}){if(ce)return r(nr,{tone:k.pending?"off-unsaved":"off",label:"Not saving \u2014 see the notice above",role:"status"});const{tone:te,label:q}=Gs(k);return p(E,{children:[r(Ds,{pressed:k.paused,onToggle:j,title:k.paused?"Auto-save is off \u2014 click to turn it back on (saves your held edits)":"Auto-save is on \u2014 click to pause it",children:r(nr,{tone:te,label:q})}),k.failed&&!k.paused&&r("button",{type:"button",className:"es-btn-ghost",onClick:lt,children:"Retry now"})]})}function Bl(){return p("svg",{width:"17",height:"17",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:1.7,strokeLinecap:"round",strokeLinejoin:"round",children:[r("path",{d:"M12 3a9 9 0 0 0 0 18 2.3 2.3 0 0 0 2.3-2.3c0-.55-.22-1.05-.57-1.42-.34-.37-.56-.87-.56-1.43A2.35 2.35 0 0 1 15.6 13.5H18a3 3 0 0 0 3-3c0-4.14-4-7.5-9-7.5z"}),r("circle",{cx:"7.7",cy:"11.3",r:"1.05",fill:"currentColor",stroke:"none"}),r("circle",{cx:"12",cy:"8",r:"1.05",fill:"currentColor",stroke:"none"}),r("circle",{cx:"16",cy:"11",r:"1.05",fill:"currentColor",stroke:"none"})]})}function Dl({size:k=13}){return p("svg",{width:k,height:k,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:1.7,strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[r("circle",{cx:"12",cy:"12",r:"9"}),r("path",{d:"M3 12h18M12 3c2.6 2.6 2.6 15.4 0 18M12 3c-2.6 2.6-2.6 15.4 0 18"})]})}function _l({size:k=13}){return p("svg",{width:k,height:k,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:1.7,strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[r("path",{d:"M12 21s6-5 6-10a6 6 0 10-12 0c0 5 6 10 6 10z"}),r("circle",{cx:"12",cy:"11",r:"2"})]})}function $l({size:k=13}){return p("svg",{width:k,height:k,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:1.7,strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[r("path",{d:"M9 4 3 6.5v13L9 17l6 3 6-2.5v-13L15 7z"}),r("path",{d:"M9 4v13M15 7v13"})]})}function Ml({expand:k}){return r("svg",{width:"15",height:"15",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:1.9,strokeLinecap:"round",strokeLinejoin:"round",children:k?p(E,{children:[r("path",{d:"M8 9l4-4 4 4"}),r("path",{d:"M8 15l4 4 4-4"})]}):p(E,{children:[r("path",{d:"M8 4l4 4 4-4"}),r("path",{d:"M8 20l4-4 4 4"}),r("path",{d:"M5 12h14"})]})})}const Vt=k=>({parentId:`locations-${k}`,slot:"groups"}),An=(k,ce)=>({parentId:`locations-${k}`,slot:`cities:${ce}`});function zl(k,ce){if(k.length!==ce.length)return!1;for(let j=0;j<k.length;j++)if(k[j].top!==ce[j].top||k[j].index!==ce[j].index)return!1;return!0}function Fl(){const k=ai(),{adapter:ce,capabilities:j,templateId:lt,currentSlug:te,siteId:q,tokenRef:Pr,onPublish:Cr,saveStatus:On,saveState:Tr,saveConflict:Ir,retrySave:Er,hasUnsavedEdits:Lr,bridgeCapabilities:Ar,notifyParent:Nn,token:Rn,toggleAutoSave:Or,navigate:Bn,docId:Wt,data:Dn,footerOriginSlug:_n,readOnly:D}=Us(),{canPublish:Nr,hasSiteSettings:Gt,hasSiteTheme:ct,mediaEditing:$n,hasEditGuard:Rr,hasPinnedChrome:We,explainsSiteSettings:Br,hasPreviewLink:Dr}=j,at=dl({hasTrustedConsole:!!Rn,canCreatePlatformTemplate:Ar.canCreatePlatformTemplate,capabilities:j,siteId:q,hasUnsavedEdits:Lr}),_r=z(()=>{!q||!te||Nn(pl,{siteId:q,slug:te})},[Nn,q,te]),{appState:F,dispatch:b,history:fe,selectedItem:x,getSelectorForId:dt,config:H}=Il(e=>e),V=te===mr,Ut=Ki({readOnly:D}),Kt=I(null),h=wn(()=>({...Ut,select:e=>{Kt.current=e,Ut.select(e)}}),[Ut]),Mn=F.ui,P=Mn.leftSideBarVisible,Ce=Mn.rightSideBarVisible,[Te,$r]=L("desktop"),Ge=li(),zn=$n&&Ge!==null,X=ci(),[Re,pt]=L(il),[Mr,Fn]=L(oi[0].id),Ie=ll(Re,ct,zn);S(()=>{cl(Re)},[Re]);const[Hn,zr]=L(0),{surface:Fr,setSurface:Vn}=ti(),Yt=I(null),Ue=I(null),ae=ml(Ue,{readySelector:hl}),W=ol(Ue);rl(Ue);const[_,Ke]=L(!1),he=I(!1),ge=I(!1),[w,de]=L(null),ut=w&&w.zone===u?w.index:null,Wn=e=>de(e===null?null:{zone:u,index:e}),[Gn,Un]=L([]),[Z,T]=L(Y),jt=Z.kind==="puck",qt=Z.kind==="ticker"?Z.heroId:null,Be=Yi(Z,x?.props.id),me=I(null),Xt=I(null),[Kn,Yn]=L(null);S(()=>{Kn&&(ji(),Yn(null))},[Kn]);const jn=I(dt);jn.current=dt;const ft=z((e,{scroll:t})=>{pt(s=>sl(e,s)),t&&Yn(e);const n=[];let o=e;for(let s=0;s<4;s++){const i=jn.current(o)?.zone;if(!i||!i.includes(":"))break;const c=i.split(":")[0];n.push(c),o=c}n.length!==0&&mt(s=>{if(n.every(c=>!s.has(c)))return s;const i=new Set(s);return n.forEach(c=>i.delete(c)),i})},[]);S(()=>{T(x?.type===xe?Pn:Y),Ni(x?.type==="BookingBox"&&x.props.region==="confirm"?Oi(dt(String(x.props.id))?.zone):null);const e=x?.type==="ContactLocations"?String(x.props.id):null;e&&e!==Xt.current&&ie({level:"groups"}),Xt.current=e;const t=x?.props.id;V&&typeof t=="string"&&(me.current?.(),me.current=Tn(t));const n=Kt.current;if(Kt.current=null,!t)return;const o=dt(t);ft(String(t),{scroll:!qi(n,o??null,u)})},[x?.props.id,V,ft]);const{setSelected:qn,setSelectHandler:Xn}=yi(),{chat:Hr,setChat:Vr,setSelected:Zn,setSelectHandler:Jn}=Si(),{setSelectedHeroId:Qn,setSelectHandler:eo}=wi(),{editFooter:to}=bi(),{selectedLocationPartId:Wr,setSelectedLocationPartId:no,setSelectHandler:oo}=Ci(),ro=Z.kind==="header";S(()=>{qn(ro)},[ro,qn]),S(()=>{Xn(()=>{T(Pn),b({type:"setUi",ui:{rightSideBarVisible:!0}})})},[Xn,b]);const Zt=z(()=>{T(e=>e.kind==="chat"?e:fi),b({type:"setUi",ui:{rightSideBarVisible:!0}})},[b]),so=Z.kind==="chat";S(()=>{Zn(so)},[so,Zn]),S(()=>{Jn(Zt)},[Jn,Zt]);const{setOpenHandler:io}=ki(),lo=z(()=>{T(e=>e.kind==="social"?e:hi),b({type:"setUi",ui:{rightSideBarVisible:!0}})},[b]);S(()=>{io(lo)},[io,lo]);const ht=z(e=>{e&&(T(t=>t.kind==="ticker"&&t.heroId===e?t:{kind:"ticker",heroId:e}),b({type:"setUi",ui:{rightSideBarVisible:!0}}),it(e))},[b]);S(()=>{Qn(qt)},[qt,Qn]),S(()=>{eo(ht)},[eo,ht]);const Gr=z(e=>{b({type:"setUi",ui:{rightSideBarVisible:!0}}),it(e),ft(e,{scroll:!0})},[b,ft]),{selectNode:Ur,openPartId:Hl}=Ti({mode:Z,setMode:T,onOpenPart:Gr}),[co,ao]=L(null),po="sf-editor-collapsed-sections",[gt,mt]=L(()=>{if(typeof window>"u")return new Set;try{const e=window.localStorage.getItem(po);return new Set(e?JSON.parse(e):[])}catch{return new Set}});S(()=>{try{window.localStorage.setItem(po,JSON.stringify([...gt]))}catch{}},[gt]);const[De,Kr]=L(()=>{if(typeof window>"u")return{...Ne};try{const e=window.localStorage.getItem(dr);if(!e)return{...Ne};const t=JSON.parse(e);return{left:pr(Number(t.left)||Ne.left),right:pr(Number(t.right)||Ne.right)}}catch{return{...Ne}}});S(()=>{const e=setTimeout(()=>{try{window.localStorage.setItem(dr,JSON.stringify(De))}catch{}},300);return()=>clearTimeout(e)},[De]);const yt=z((e,t)=>Kr(n=>{const o=typeof t=="function"?t(n[e]):t;return n[e]===o?n:{...n,[e]:o}}),[]),Yr=z(e=>yt("left",e),[yt]),jr=z(e=>yt("right",e),[yt]),Ee=e=>gt.has(e),ye=e=>mt(t=>{const n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n}),uo=I(!1),Jt=I(null);S(()=>{if(uo.current&&!_){const e=Jt.current;((e&&e.isConnected&&!e.closest('[aria-hidden="true"]')?e:null)??Ue.current?.querySelector('button[aria-label="Add"]'))?.focus(),Jt.current=null}uo.current=_},[_]),S(()=>{if(!_||!W)return;const e=t=>{t.key==="Escape"&&Tt()};return W.addEventListener("keydown",e),()=>W.removeEventListener("keydown",e)},[_,W]),S(()=>{P||!_||(Ke(!1),de(null),he.current=!1)},[P]),S(()=>{if(!X){ge.current&&b({type:"setUi",ui:{leftSideBarVisible:!1}}),ge.current=!1;return}_&&(Ke(!1),de(null),ge.current=he.current,he.current=!1),P||(ge.current=!0,b({type:"setUi",ui:{leftSideBarVisible:!0}}))},[X]),S(()=>{P||!X||(ge.current=!1,Mt())},[P]),S(()=>{if(!X||!W)return;const e=t=>{t.key==="Escape"&&Mt()};return W.addEventListener("keydown",e),()=>W.removeEventListener("keydown",e)},[X,W]);const[St,fo]=L(null),[qr,Xr]=L(0),Ye=I(null),Le=(e,t="success")=>{fo({msg:e,tone:t}),Xr(n=>n+1),Ye.current&&clearTimeout(Ye.current),Ye.current=setTimeout(()=>fo(null),t==="error"?3200:1900)};S(()=>()=>{Ye.current&&clearTimeout(Ye.current)},[]);const je=I(null),[_e,ho]=L(0),[Qt,go]=L(0),G=Xi();S(()=>{const e=je.current;if(!e)return;const t=()=>{ho(e.clientWidth),go(e.clientHeight)};t();const n=new ResizeObserver(t);return n.observe(e),()=>n.disconnect()},[]),Es(()=>{je.current&&(ho(je.current.clientWidth),go(je.current.clientHeight))},[De,P,Ce]);const mo={desktop:2e3,tablet:800,mobile:390},en=Te==="desktop"?_e>0?_e:mo.desktop:mo[Te],qe=_e>0?Math.min(_e/en,2):1,yo=en*qe,Zr=_e>0&&yo>_e+1,Jr={width:yo,height:Qt||"100%",flex:"none",position:"relative"},Qr={width:en,height:Qt?Qt/qe:"100%",maxHeight:"none",transform:qe!==1?`scale(${qe})`:void 0,transformOrigin:"top left"},es=nl({pageSlug:te,siteId:q,token:Rn}),ts=ce.previewHref?.(te)??es,Se=()=>b({type:"setUi",ui:{leftSideBarVisible:!P}}),So=()=>b({type:"setUi",ui:{rightSideBarVisible:!Ce}}),kt=e=>{if(!(_&&(Ke(!1),de(null),he.current=!1,P&&Re===e))&&!(X&&(ge.current=!1,Mt(),P&&Re===e))){if(P&&Re===e){Se();return}pt(e),P||b({type:"setUi",ui:{leftSideBarVisible:!0}})}},ns=()=>{si(k,{accept:"image/*",title:"Media library"})},ko=()=>{T(Y),h.select(null),In()},vo=()=>{T(Pn),Ce||b({type:"setUi",ui:{rightSideBarVisible:!0}})},wo=()=>{if(ct){pt("styles"),P||b({type:"setUi",ui:{leftSideBarVisible:!0}}),In();return}T(gi),Ce||b({type:"setUi",ui:{rightSideBarVisible:!0}}),In()},g=F.data.content??[],ke=()=>{const e=g.findIndex(n=>n.type===xe),t=g.findIndex(n=>n.type===A);return{floor:e>=0?e+1:0,cap:t>=0?t:g.length}},bo=H,tn=Tl({data:F.data,config:bo,readOnly:!!D,clipboard:Di,afterRemove:"none",stepBounds:(e,t)=>{if(e.parentId!==vl||e.slot!==wl)return{min:0,max:t-1};const{floor:n,cap:o}=ke();return{min:n,max:o-1}},commit:(e,{select:t})=>{if(t!==void 0){T(Y);const n=t?.kind==="node"?Cl(e,bo,t):null;h.select(n&&n.zone===u?{index:n.index}:n)}h.commitDocument(e)}}),os=(e,t)=>{const n=C(e)[t]?.props?.id;n!=null&&tn.remove(String(n))},J=e=>H.components[e]?.label??e,Ae=z(e=>H.components[e]?.defaultProps??{},[H]),$=e=>Gi(e,"section",J(e)),Xe=e=>Hi({type:e.type,props:e.props??{}},$(e.type)),{nodeAddresses:vt,zoneItems:xo}=wn(()=>{const e=new Map,t=new Map,n=(o,s,i)=>{t.set(s,o),o.forEach((c,a)=>{const l=String(c.props?.id??"");if(l&&e.set(l,{zone:s,index:a}),i>=Ii)return;const f=new Map;for(const{child:m,zone:d}of ur(H,c))f.set(d,[...f.get(d)??[],m]);for(const[m,d]of f)n(d,m,i+1)})};return n(g,u,0),{nodeAddresses:e,zoneItems:t}},[g,H]),C=z(e=>xo.get(e)??[],[xo]),Po=ii(),rs=wn(()=>{const e=new Map;for(const t of Po??[])e.set(t.slug,t.name);return e},[Po]),wt=e=>Wi(e,J,t=>rs.get(t)),Co=(e,t)=>t===u?null:Vi(H.components[e.type]?.fields),ss=(e,t,n)=>{const o=C(e)[t];if(!o)return;const s=Co(o,e);s&&h.replaceComponent(e,t,{...o,props:{...o.props,[s]:n.trim()}})},is=(e,t,n,o)=>{if(!(co?.zone===e&&co.index===t))return;const i=(c,a)=>{ao(null),a&&ss(e,t,c)};return r("input",{className:"es-tree-rename",defaultValue:o,autoFocus:!0,"aria-label":"Rename",onClick:c=>c.stopPropagation(),onBlur:c=>i(c.currentTarget.value,!0),onKeyDown:c=>{c.key==="Enter"?(c.preventDefault(),i(c.currentTarget.value,!0)):c.key==="Escape"&&(c.preventDefault(),i("",!1))}},n)},ls=()=>mt(new Set(C(u).map(e=>String(e.props.id)))),bt=Ol(q),xt=H,nn=(e,t)=>t===u?$(e):J(e),To=(e,t,n)=>{const o=Al(xt,bt,n,nn(n.type,e));o&&(o.changed&&h.replaceComponent(e,t,{...n,props:{...o.props,id:n.props.id}}),Le(o.message))},Io=_i({nodesIn:C,nodeAt:(e,t)=>C(e)[t]??null,labelOf:(e,t)=>t===u?$(e):J(e),renamePropOf:Co,beginRename:(e,t)=>ao({zone:e,index:t}),history:{hasPast:fe.hasPast,hasFuture:fe.hasFuture,back:()=>fe.back(),forward:()=>fe.forward()},openAddSection:()=>{h.select(null),Je(null)},openPageSettings:()=>{h.select(null),T(Y)},collapseAll:ls,onPasteRefused:()=>Le("Your browser won\u2019t let us read the clipboard \u2014 press \u2318V","error"),document:F.data,nodeOps:tn,isPinned:(e,t)=>t===u&&(e.type===xe||e.type===A),sectionBand:ke,openAddInside:(e,t)=>{e===u?ve(t):h.select({zone:e,index:t}),Je(null)},locate:e=>vt.get(e)??null,rowNameOf:(e,t)=>t===u?Xe(e):wt(e),selectAt:(e,t,n,o)=>{e===u?ve(t):Qe(e,t,n,o??"")},style:{held:()=>ul(bt),canCopy:e=>Ll(xt,e).some(t=>t.counted!==!1),copy:(e,t)=>xr(xt,bt,e,nn(e.type,t)),paste:(e,t,n)=>To(e,t,n)}},ae),Eo=I({copy:(e,t)=>{},paste:(e,t,n)=>{},at:()=>null,readOnly:!1});S(()=>{Eo.current={copy:(e,t)=>xr(xt,bt,e,nn(e.type,t)),paste:To,at:()=>{const e=F.ui.itemSelector;if(!e)return null;const t=e.zone??u,n=C(t)[e.index];return n?{zone:t,index:e.index,node:n}:null},readOnly:!!D}});const on=z(e=>{const t=fl(e);if(!t)return;const n=Eo.current,o=n.at();o&&(e.preventDefault(),t==="copy"?n.copy(o.node,o.zone):n.readOnly||n.paste(o.zone,o.index,o.node))},[]);S(()=>{if(!W)return;const e=t=>on(t);return W.addEventListener("keydown",e),()=>W.removeEventListener("keydown",e)},[on,W]),gl(ae,"keydown",on);const cs=g.map(e=>e.props.id).join("|");S(()=>{const e=ae?.document??null,t=ae?.window??null;let n=0;const o=[],s=()=>{if(!e){Un(d=>d.length?[]:d);return}const a=g.findIndex(d=>d.type===A),l=a>=0?a:g.length,f=d=>{const y=g[d]?.props?.id;if(y==null)return null;const v=e.querySelector(`[data-puck-component="${CSS.escape(String(y))}"]`);return v?v.getBoundingClientRect():null},m=[];for(let d=1;d<=l;d++){const y=f(d),v=f(d-1);!y&&!v||m.push({top:Math.round(y?y.top:v.bottom),index:d})}Un(d=>zl(d,m)?d:m)},i=()=>{cancelAnimationFrame(n),n=requestAnimationFrame(s)};if(!e||!t){s();return}t.addEventListener("scroll",i,{passive:!0});const c=new ResizeObserver(i);return c.observe(e.documentElement),s(),o.push(setTimeout(s,150),setTimeout(s,450)),()=>{cancelAnimationFrame(n),o.forEach(clearTimeout),t.removeEventListener("scroll",i),c.disconnect()}},[ae,cs,Te,qe,P,Ce,x?.props.id]);const as=()=>{const e=ae?.document;if(!e)return null;const t=4,n=g.findIndex(i=>i.type===A),o=n>=0?n:g.length;let s=null;for(let i=0;i<o;i++){const c=g[i]?.props?.id;if(c==null)continue;const a=e.querySelector(`[data-puck-component="${CSS.escape(String(c))}"]`);if(!a)continue;const l=a.getBoundingClientRect().top;l<=t&&(s===null||l>s.offset)&&(s={id:String(c),offset:l})}if(!s){const i=x?.props?.id??g[0]?.props?.id;i!=null&&(s={id:String(i),offset:0})}return s},ds=()=>{Yt.current=as(),zr(e=>e+1)},rn=ae?.document??null,Ze=ae?.window??null;S(()=>{const e=Yt.current;if(!e||!rn||!Ze)return;const t=[],n=()=>{const o=rn.querySelector(`[data-puck-component="${CSS.escape(e.id)}"]`);if(!o)return!1;const s=o.getBoundingClientRect().top-e.offset;return Math.abs(s)>1&&Ze.scrollTo({left:Ze.scrollX,top:Ze.scrollY+s,behavior:"instant"}),!0};return Yt.current=null,n()&&t.push(setTimeout(n,150),setTimeout(n,450)),()=>t.forEach(clearTimeout)},[rn,Ze]);const sn=e=>{if(!V){it(e);return}me.current?.(),me.current=Tn(e)};S(()=>{if(!V||!_n)return;const e=g.find(t=>t.type===A)?.props?.id;if(e)return me.current?.(),me.current=Tn(String(e)),()=>{me.current?.(),me.current=null}},[V,_n,Hn]),S(()=>{if(!(V||!Mi()))return $i(()=>zi())},[]);const ve=e=>{T(Y),h.select({index:e}),g[e]?.type==="ContactLocations"&&ie({level:"groups"});const t=g[e]?.props?.id;t&&sn(t)},Lo=e=>{const{floor:t,cap:n}=ke(),o=i=>Math.min(Math.max(t,i),n);if(typeof e=="number")return o(e);const s=x&&Z.kind!=="header"?g.findIndex(i=>i.props.id===x.props.id):-1;return o(s>=0?s+1:n)},Ao=(e,t)=>{const{floor:n,cap:o}=ke(),s=Math.min(Math.max(t,n),o),i=e<s?s-1:s;return i===e?{moved:!1,dest:e}:(h.reorderComponent(u,e,i),h.select({index:i}),{moved:!0,dest:i})},ps=(e,t)=>{const n=$(g[e]?.type??""),o=Ao(e,t<0?e-1:e+2);if(!o.moved){Le(`\u201C${n}\u201D is already ${t<0?"first":"last"}`);return}const{floor:s,cap:i}=ke();Le(`Moved \u201C${n}\u201D to position ${o.dest-s+1} of ${i-s}`)},Pt=(e,t,n)=>{T(Y),h.select({index:e}),it(t),Le(`Added \u201C${n}\u201D section`)},ln=(e,t)=>{const n=Lo(t),o=Is(e);if(o){const c=o(Ae,st),a=h.insertNode(u,n,c);return Pt(n,a,$(e)),n}if(Ts(e)&&Zo(zt)&&Zo(rt)){const c={type:zt,props:{...Ae(zt),id:st(zt),direction:"column",name:`${$(e)} section`,content:[{type:rt,props:{...Ae(rt),id:st(rt),...He[e]?.headStyle?{headStyle:He[e].headStyle}:{},...He[e]?.headRowGap?{rowGap:He[e].headRowGap}:{},...He[e]?.headDescriptionSize?{descriptionSize:He[e].headDescriptionSize}:{},...vn(e)!==vn(rt)?{eyebrowLook:vn(e)}:{}}},{type:e,props:{...Ae(e),id:st(e),headPlacement:"own-box"}}]}},a=h.insertNode(u,n,c);return Pt(n,a,$(e)),n}const i=Bi[e]?.fixed===!0?h.insertNode(u,n,{type:e,props:{...Ae(e),id:st(e),layout:"boxes"}}):h.insertSection(e,n);return Pt(n,i,$(e)),n},cn=(e,t,n)=>{const o=Lo(n),s=h.insertNode(u,o,t);return Pt(o,s,e),o},Je=e=>Ct(u,e),Ct=(e,t)=>{Jt.current=document.activeElement??null,X&&(he.current=ge.current,ge.current=!1,Mt()),de(t===null?null:{zone:e,index:t}),Ke(!0),P||(he.current=!0,b({type:"setUi",ui:{leftSideBarVisible:!0}}))},Tt=()=>{Ke(!1),de(null),he.current&&b({type:"setUi",ui:{leftSideBarVisible:!1}}),he.current=!1},us=e=>{if(ut===null){ln(e);return}const t=ln(e,ut);Wn(t+1)},fs=(e,t)=>{if(ut===null){cn(e,t);return}const n=cn(e,t,ut);Wn(n+1)},Oo=(e,t,n)=>{if(e.kind==="section")h.insertComponent(t,e.type,n);else if(e.kind==="template")h.insertNode(t,n,En(e.template.node));else return;T(Y),h.select({index:n,zone:t})},hs=e=>{const t=ne(e.zone);if(t)return`Adding to ${J(t.type)}`;if(e.zone===u){const o=g[e.index];return o&&o.type!==A?`Adding before ${$(o.type)}`:"Adding at the end of the page"}const n=ze(e.zone);return n?`Adding to ${n.parentName}`:"Adding here"},gs=e=>{if(w&&e.kind!=="block"&&ne(w.zone)){Oo(e,w.zone,w.index),de({zone:w.zone,index:w.index+1});return}if(e.kind==="section")return us(e.type);if(e.kind==="template")return fs(e.template.name,En(e.template.node));if(w&&w.zone!==u){const t=ze(w.zone);if(!t)return;t.target.spec?$e(t.parentId,t.target.slot,e.type,w.index,t.parent.type):un(w.zone,e.type,w.index),de({zone:w.zone,index:w.index+1});return}Xo?.onPick(e.type)},O=e=>t=>{t.target.closest(".es-tree-select")||e()},No=()=>to?to():Bn({kind:"page",slug:mr,siteId:q??void 0}),It=(e,t,n)=>r(Dt,{kind:"delete",label:`Delete ${n}`,onClick:()=>os(e,t),children:r(xn,{size:15})}),Et=(e,t,n,o)=>{const s=!!n.props._hidden;return r(Dt,{kind:"eye",label:s?`Show ${o}`:`Hide ${o}`,onClick:()=>ms(e,t,n),children:s?r(ir,{name:"eye-off",size:14}):r(ir,{name:"eye",size:14})})},Ro=e=>{const t=$(g[e]?.type??""),n=t?`Add section before ${t}`:"Add section here";return Ot(u,e,()=>Je(e),n)},ms=(e,t,n)=>{h.replaceComponent(e,t,{...n,props:{...n.props,_hidden:!n.props._hidden}})},an=e=>Ai(H,e),we=e=>ur(H,e),dn=(e,t,n)=>{const o=Li(H,e.type,t)&&(n||we(e).length>0);return{collapsible:o,folded:o&&Ee(String(e.props.id))}},pn=(e,t,n)=>we(e).flatMap(({child:o})=>dn(o,t,n(o.type)).collapsible?[String(o.props.id),...pn(o,t+1,n)]:[]),Lt=e=>we(e).length>0||!!ee(e.type),At=e=>!!ee(e),Qe=(e,t,n,o)=>{if(T(Y),ee(o)?.spec?.slider){const s=e.split(":")[0];yr(s,t),h.select({index:t,zone:e}),it(s)}else h.select({index:t,zone:e}),sn(n)},$e=(e,t,n,o,s)=>{const i=`${e}:${t}`;h.insertComponent(i,n,o),ee(s)?.spec?.slider?requestAnimationFrame(()=>{yr(e,o),h.select({index:o,zone:i})}):h.select({index:o,zone:i})},un=(e,t,n)=>{h.insertComponent(e,t,n),T(Y),h.select({index:n,zone:e})},Bo=I(new Set);S(()=>{g.forEach(e=>{const t=ee(e.type)?.spec;if(!t)return;const n=e.props.id;if(Bo.current.has(n)||(Bo.current.add(n),(Array.isArray(e.props[t.slot])?e.props[t.slot]:[]).length>0)||t.skipSeed?.(e.props))return;const s=`${n}:${t.slot}`,i=t.legacy?.(e.props)??[];(i.length?i:t.seeds(Ae)).forEach((a,l)=>h.seedChild(s,l,t.childType,a))})},[g,h,Ae]);const Do=I(new Set);S(()=>{g.forEach((e,t)=>{const n=e.props.id;if(Do.current.has(n))return;const o=Fi(e,an(e.type));Do.current.add(n),o&&h.replaceComponent(u,t,{...e,props:o})})},[g,h]);const _o=El().getState,$o=I(null);S(()=>{if(!Ri({docId:Wt,saveStatus:On,seededDocId:$o.current})||($o.current=Wt,!We))return;const e=_o().appState.data,t=e.content,n=Dn?.content??[],o=(a,l)=>a.some(f=>f?.type===l);if(!Gt){const a=new Set(fr(t)),l=a.size?t.filter(m=>!a.has(m.props.id)):t;a.size&&h.setDocument({...e,content:l});const f=Ei(l,n);if(f.includes(A)){const m=l.length,d=h.insertSection(A,m);h.replaceComponent(u,m,{type:A,props:{id:d,blocks:hr()}})}f.includes(xe)&&h.insertNode(u,0,gr());return}if(V){const a=Js(t);if(a!==t&&h.setDocument({...e,content:[...a]}),!a.find(f=>f.type===A)&&!o(n,A)&&!o(a,$t)&&!o(n,$t)){const f=(d,y)=>yl(H,d,y),m={type:A,props:{blocks:hr()}};h.insertNode(u,a.length,Zs(m,f,kl($t)))}return}const s=t.filter(a=>a.type!==A),i=new Set(fr(s)),c=i.size?s.filter(a=>!i.has(a.props.id)):s;c.length!==t.length&&h.setDocument({...e,content:c}),!o(c,xe)&&!o(n,xe)&&h.insertNode(u,0,gr())},[Wt,On,Dn,_o,h,Gt,We,V]);const Me=g.findIndex(e=>e.type===A),U=Me>=0?g[Me]:null,Mo=g.find(e=>e.type===Qs)??null,zo=g.find(e=>e.type===$t)??null,Fo=Me>=0?Me:g.length,pe=[];g.forEach(e=>{e.type!==A&&(Lt(e)&&pe.push(String(e.props.id)),pe.push(...pn(e,1,At)))}),U&&(pe.push(String(U.props.id)),pe.push(...pn(U,1,At)));const fn=pe.length>0&&pe.every(e=>gt.has(e)),ys=()=>mt(e=>{const t=new Set(pe);return fn?new Set([...e].filter(n=>!t.has(n))):new Set([...e,...pe])}),Ho=e=>{const t=e.props;if(e.type==="FooterMenu"){const n=t.menu;return t.heading||n?.name||"Menu"}if(e.type==="FooterText"){const n=typeof t.text=="string"?t.text.trim():"";return n?n.length>28?`${n.slice(0,28)}\u2026`:n:"Text"}return e.type==="FooterEmailSignup"?t.heading||"Email signup":J(e.type)},Vo=(e,t,n,o)=>{const s=C(e)[n];if(!s)return;const i={...Pe(e),index:n},c={...Pe(t),index:Math.min(Math.max(o,0),C(t).length)},a=Pl(i,c);if(!(e===t&&a===n))try{tn.move(String(s.props.id),{...c,index:a})}catch(l){if(!(l instanceof Sl))throw l}},Ss=(e,t,n)=>{if(e===t)return!0;const o=C(e)[n];if(!o)return!1;const s=t.split(":")[0],i=vt.get(s),c=i?C(i.zone)[i.index]:void 0;if(!c||ks(o).has(t))return!1;const a=ee(c.type,c.type===Ft?Ht(F?.data,s):0);return!(!a||!(a.choices?a.choices.some(f=>f.type===o.type):a.spec?.childType===o.type)||a.spec?.addBlocked?.(C(t),o))},ks=e=>{const t=new Set,n=o=>{for(const{child:s,zone:i}of we(o))t.add(i),n(s)};for(const o of an(e.type))t.add(`${e.props.id}:${o}`);return n(e),t},Wo=e=>{let t=e.slice(0,e.indexOf(":"));for(let n=0;n<64;n++){const o=vt.get(t);if(!o)return null;if(o.zone===u)return t;t=o.zone.slice(0,o.zone.indexOf(":"))}return null},ne=e=>{const t=e.slice(0,e.indexOf(":")),n=g.find(o=>_t(o.type)&&String(o.props.id)===t);return n&&sr(t)===e?n:null},hn=(e,t)=>{if(e.add)return vs(e.add,t);const n=le(t);if(_t(e.type))return!1;const o=ne(n),s=ne(e.zone);if(o||s)return!o||!s?!1:t.index>=0&&t.index<=C(n).length;if(e.zone===u||n===u){if(e.zone!==n)return!1;const{floor:c,cap:a}=ke();return t.index>=c&&t.index<=a}if(t.index<0||t.index>C(n).length)return!1;if(e.zone===n)return!0;const i=U?String(U.props.id):null;return i&&(Wo(e.zone)===i||Wo(n)===i)?!1:Ss(e.zone,n,e.index)},ze=e=>{const t=e.slice(0,e.indexOf(":")),n=vt.get(t),o=n?C(n.zone)[n.index]:void 0;if(!n||!o)return null;const s=ee(o.type,o.type===Ft?Ht(F?.data,t):0);if(!s||`${t}:${s.slot}`!==e||s.source==="footer")return null;const i=s.choices??(s.spec?[{type:s.spec.childType,label:J(s.spec.childType)}]:[]);return{parent:o,parentId:t,target:s,choices:i,parentName:n.zone===u?$(o.type):J(o.type)}},vs=(e,t)=>{const n=le(t);if(e.kind!=="block"){if(ne(n))return t.index>=0&&t.index<=C(n).length;if(n!==u)return!1;const{floor:s,cap:i}=ke();return t.index>=s&&t.index<=i}if(n===u)return!1;const o=ze(n);return!o||!o.choices.some(s=>s.type===e.type)?!1:!o.target.spec?.addBlocked?.(C(n))},ws=(e,t)=>{if(e.kind!=="block"&&ne(le(t))){Oo(e,le(t),t.index);return}if(e.kind==="section"){ln(e.type,t.index);return}if(e.kind==="template"){cn(e.template.name,En(e.template.node),t.index);return}const n=le(t),o=ze(n);o&&(o.target.spec?$e(o.parentId,o.target.slot,e.type,t.index,o.parent.type):un(n,e.type,t.index))},Go=(e,t)=>{if(e.add){ws(e.add,t);return}e.zone===u?Ao(e.index,t.index):Vo(e.zone,le(t),e.index,t.index)},[gn]=L(()=>xl()),Fe=Ln({keyOf:e=>e.id,readOnly:!!D,session:gn,canDrop:hn,onDrop:Go,onStep:(e,t)=>{e.zone===u?ps(e.index,t):Vo(e.zone,e.zone,e.index,t<0?e.index-1:e.index+2)}}),bs=z(e=>{const{floor:t,cap:n}=ke(),o=[];for(const i of e.nodes){const c=le(i.place),a=C(c)[i.place.index];if(!a||String(a.props.id)!==i.id||a.type===xe||a.type===A||Cn(a.type)||_t(a.type))continue;const l=!!ne(c),f=c===u||l;c===u&&n-t<2||o.push({key:i.id,item:{id:i.id,zone:c,index:i.place.index,type:a.type},box:i.box,label:f?$(a.type):wt(a),from:i.place})}const s=e.zones.filter(i=>i.children.length>0||!!ze(le(i.list))?.choices.length||!!ne(le(i.list)));return{sources:o,zones:s}},[F.data]),xs=e=>{T(Y),h.select(e.zone===u?{index:e.index}:{index:e.index,zone:e.zone})},Ot=(e,t,n,o)=>r(bn,{...D?{}:Fe.seam({place:{...Pe(e),index:t}}),onAdd:D?void 0:n,label:o},`seam:${e}:${t}`),be=(e,t)=>{const n=g[e];n&&h.replaceComponent(u,e,{type:n.type,props:{...n.props,locations:t}})},et=e=>{const t=g[e]?.props?.locations;return Array.isArray(t)?t:[]},Uo=Ln({keyOf:e=>`group:${e.si}:${e.index}`,readOnly:!!D,canDrop:(e,t)=>t.parentId===Vt(e.si).parentId&&t.slot==="groups",onDrop:(e,t)=>{be(e.si,kr(et(e.si),e.index,t.index)),G.level==="city"&&ie({level:"groups"})},onStep:(e,t)=>{be(e.si,kr(et(e.si),e.index,t<0?e.index-1:e.index+2)),G.level==="city"&&ie({level:"groups"})}}),mn=Ln({keyOf:e=>`city:${e.si}:${e.group}:${e.index}`,readOnly:!!D,canDrop:(e,t)=>t.parentId===Vt(e.si).parentId&&t.slot.startsWith("cities:"),onDrop:(e,t)=>{const n=t.slot.slice(7);be(e.si,vr(et(e.si),e.group,e.index,n,t.index)),ie({level:"group",key:n})},onStep:(e,t)=>{be(e.si,vr(et(e.si),e.group,e.index,e.group,t<0?e.index-1:e.index+2)),G.level==="city"&&ie({level:"group",key:e.group})}}),Ko=I(g);Ko.current=g;const Yo=I(()=>{});S(()=>{oo(e=>{const t=xi(e);if(!t)return;const n=Ko.current.findIndex(o=>o.props?.id===t.nodeId);n<0||Yo.current(n,{level:t.part,index:t.index})})},[oo]);const K=(e,t)=>{T(Y),Xt.current=g[e]?.props?.id??null,h.select({index:e}),ie(t),Ce||b({type:"setUi",ui:{rightSideBarVisible:!0}});const n=g[e]?.props?.id;typeof n=="string"&&(t.level==="image"||t.level==="map")?no(Pi(n,t.index,t.level)):no(null),typeof n=="string"&&sn(n)};Yo.current=K;const Ps=(e,t)=>{const n=et(t),o=Sr(n),s=String(e.props.id),i=jt&&x?.props.id===s,c=l=>r(bn,{...D?{}:Uo.seam({place:{...Vt(t),index:l}})},`seam:${s}:groups:${l}`),a=(l,f)=>r(bn,{...D?{}:mn.seam({place:{...An(t,l),index:f}})},`seam:${s}:cities:${l}:${f}`);return p(E,{children:[r(R,{icon:r(Hs,{size:13}),name:"Texts",onSelect:()=>K(t,{level:"texts"}),selected:i&&G.level==="texts",rowProps:{onClick:O(()=>K(t,{level:"texts"}))}}),o.map((l,f)=>{const m=`${s}::grp::${l.key}`,d=Ee(m),y=i&&G.level==="group"&&G.key===l.key,v=tl(l.key,l.name),oe={...An(t,l.key),index:l.cards.length},Q=mn.row({item:{si:t,group:l.key,index:-1},place:oe,into:oe,canDrag:!1},{onClick:O(()=>K(t,{level:"group",key:l.key}))}),N=Uo.row({item:{si:t,index:f},place:{...Vt(t),index:f}},Q.rowProps);return p(Ve,{children:[f===0&&c(0),r(R,{icon:r(Dl,{size:13}),name:v,onSelect:()=>K(t,{level:"group",key:l.key}),selected:y,draggable:N.draggable,dragging:N.dragging,drop:N.drop??Q.drop,fold:{open:!d,label:"group",onToggle:()=>ye(m)},actions:r(Dt,{kind:"delete",label:`Delete ${v} group (${l.cards.length} ${l.cards.length===1?"city":"cities"})`,onClick:()=>{be(t,Qi(n,l.key)),ie({level:"groups"})},children:r(xn,{size:15})}),rowProps:N.rowProps,children:r("span",{className:"es-group-count",children:l.cards.length})}),!d&&p(ue,{children:[l.cards.map((re,M)=>{const B=wr(n,l.key,M),nt=i&&G.level==="city"&&G.index===B,Oe=String(re?.name??"")||"City",ot=`${s}::city::${br(re)}`,Nt=Ee(ot),{rowProps:Rt,...kn}=mn.row({item:{si:t,group:l.key,index:M},place:{...An(t,l.key),index:M}},{onClick:O(()=>K(t,{level:"city",index:B}))});return p(Ve,{children:[M===0&&a(l.key,0),r(R,{icon:r(_l,{size:13}),name:Oe,onSelect:()=>K(t,{level:"city",index:B}),selected:nt,...kn,fold:{open:!Nt,label:Oe,onToggle:()=>ye(ot)},actions:r(Dt,{kind:"delete",label:`Delete ${Oe}`,onClick:()=>{be(t,el(n,l.key,M)),ie({level:"group",key:l.key})},children:r(xn,{size:15})}),rowProps:Rt}),!Nt&&p(ue,{children:[r(R,{icon:r(zs,{size:13}),name:"Image",onSelect:()=>K(t,{level:"image",index:B}),selected:i&&G.level==="image"&&G.index===B,rowProps:{onClick:O(()=>K(t,{level:"image",index:B}))}}),r(R,{icon:r($l,{size:13}),name:"Map",onSelect:()=>K(t,{level:"map",index:B}),selected:i&&G.level==="map"&&G.index===B,rowProps:{onClick:O(()=>K(t,{level:"map",index:B}))}})]}),a(l.key,M+1)]},br(re))}),p("button",{type:"button",className:"sf-add-card",onClick:()=>{const re=Zi(n,l.key);be(t,re);const M=Sr(re).find(B=>B.key===l.key);ie(M&&M.cards.length?{level:"city",index:wr(re,l.key,M.cards.length-1)}:{level:"group",key:l.key})},children:[r("span",{className:"sf-plus sf-plus--sm",children:"+"}),"Add city"]})]}),c(f+1)]},m)}),p("button",{type:"button",className:"sf-add-card",onClick:()=>{const{cards:l,key:f}=Ji(n);be(t,l),K(t,{level:"group",key:f})},children:[r("span",{className:"sf-plus sf-plus--sm",children:"+"}),"Add group"]})]})},jo=e=>{const t=String(e.props.id),n=g.findIndex(l=>String(l.props.id)===t),o=sr(t),s=C(o),i=Ee(t),c=J(e.type),a=l=>Ot(o,l,()=>Ct(o,l),"Add section here");return p(E,{children:[r(R,{icon:r(se,{type:e.type,size:13}),name:c,onSelect:()=>ve(n),selected:Be===t,rowProps:{"data-node-id":t,onClick:O(()=>ve(n))},fold:{open:!i,label:"section",onToggle:()=>ye(t)}}),!i&&p(ue,{children:[s.map((l,f)=>{const m=String(l.props.id),d=Xe(l),y=Lt(l),v=y&&Ee(m),oe=()=>Qe(o,f,m,e.type),{rowProps:Q,...N}=Fe.row({item:{id:m,zone:o,index:f,type:l.type},place:{...Pe(o),index:f}},{"data-node-id":m,onClick:O(oe)});return p(Ve,{children:[a(f),r(R,{icon:r(se,{type:l.type,size:13}),name:d,onSelect:oe,selected:Be===m,hidden:!!l.props._hidden,...N,fold:y?{open:!v,label:"section",onToggle:()=>ye(m)}:void 0,actions:p(E,{children:[It(o,f,d),Et(o,f,l,d)]}),rowProps:Q}),y&&!v&&r(ue,{children:yn(l,2)})]},m)}),a(s.length)]})]})},qo=(e,t)=>{const n=we(e),o=(c,a)=>Ot(c,a),s=ee(e.type),i=s?`${e.props.id}:${s.slot}`:null;return p(E,{children:[n.map(({child:c,zone:a,index:l})=>{const f=Be===String(c.props.id),{collapsible:m,folded:d}=dn(c,t,At(c.type)),y=String(c.props.id),v=Ho(c),oe=()=>Qe(a,l,y,e.type),{rowProps:Q,...N}=Fe.row({item:{id:y,zone:a,index:l,type:c.type},place:{...Pe(a),index:l}},{"data-node-id":y,onClick:O(oe)});return p(Ve,{children:[l===0&&o(a,0),r(R,{icon:r(se,{type:c.type,size:13}),name:v,onSelect:oe,selected:f,hidden:!!c.props._hidden,...N,fold:m?{open:!d,label:"group",onToggle:()=>ye(y)}:void 0,actions:p(E,{children:[It(a,l,v),Et(a,l,c,v)]}),rowProps:Q}),m&&!d&&r(ue,{children:qo(c,t+1)}),o(a,l+1)]},String(c.props.id??`${a}-${l}`))}),i&&!n.some(c=>c.zone===i)?o(i,0):null]})},yn=(e,t)=>{const n=we(e),o=ee(e.type,e.type===Ft?Ht(F?.data,String(e.props.id)):0),s=o?.spec??null,i=s&&Array.isArray(e.props[s.slot])?e.props[s.slot]:[],c=o&&o.choices?{slot:o.slot,choices:o.choices}:null,a=String(e.props.id),l=s&&!s.fixed?`${a}:${s.slot}`:null,f=c?`${a}:${c.slot}`:null,m=(d,y)=>{const v=d===l&&s&&!s.addBlocked?.(i)?()=>$e(e.props.id,s.slot,s.childType,y,e.type):d===f?()=>Ct(d,y):void 0;return Ot(d,y,v,d===l&&s?s.addLabel:"Add block here")};return p(E,{children:[n.map(({child:d,zone:y,index:v})=>{const oe=Be===String(d.props.id),Q=wt(d),N=String(d.props.id),{collapsible:re,folded:M}=dn(d,t,At(d.type)),B=an(d.type),nt=B.length===1?`${N}:${B[0]}`:null,Oe=nt?{...Pe(nt),index:C(nt).length}:void 0,ot=Fe.dragging,Nt=Oe&&ot&&hn(ot,Oe)?Oe:void 0,Rt=()=>Qe(y,v,N,e.type),{rowProps:kn,...Cs}=Fe.row({item:{id:N,zone:y,index:v,type:d.type},place:{...Pe(y),index:v},into:Nt,canDrag:!Cn(d.type)},{"data-node-id":N,onClick:O(Rt)});return p(Ve,{children:[v===0&&m(y,0),r(R,{icon:r(se,{type:d.type,size:13}),name:Q,onSelect:Rt,nameSlot:is(y,v,N,Q),selected:oe,hidden:!!d.props._hidden,...Cs,fold:re?{open:!M,label:"group",onToggle:()=>ye(N)}:void 0,actions:Cn(d.type)?void 0:p(E,{children:[It(y,v,Q),Et(y,v,d,Q)]}),rowProps:kn}),re&&!M&&r(ue,{children:yn(d,t+1)}),m(y,v+1)]},String(d.props.id??`${y}-${v}`))}),s&&!s.fixed&&r(Ui,{small:!0,label:s.addLabel,blocked:s.addBlocked?.(i)??null,onAdd:()=>$e(e.props.id,s.slot,s.childType,i.length,e.type)}),f&&!n.some(d=>d.zone===f)?m(f,0):null]})},Xo=(()=>{if(!x||!jt)return null;const e=String(x.type),t=String(x.props.id),n=ee(e,e===Ft?Ht(F?.data,t):0);if(!n||n.source==="footer")return null;const o=g.some(c=>String(c.props?.id)===t),s=Array.isArray(x.props[n.slot])?x.props[n.slot]:[];if(n.spec?.addBlocked?.(s))return null;const i=n.choices??(n.spec?[{type:n.spec.childType,label:J(n.spec.childType)}]:[]);return i.length===0?null:{parentName:o?$(e):J(e),choices:i,onPick:c=>{n.spec?$e(t,n.slot,c,s.length,e):un(`${t}:${n.slot}`,c,s.length)}}})(),Sn=_||X!==null,tt=[{id:"add",label:"Add",icon:r("span",{className:"sf-rail-plus","aria-hidden":"true",children:"+"}),active:_,onSelect:()=>_?Tt():Je(null)},{id:"pages",label:"Pages",icon:r(Ls,{}),active:P&&!Sn&&Ie==="pages",onSelect:()=>kt("pages")},{id:"sections",label:"Layers",icon:r(Jo,{}),active:P&&!Sn&&Ie==="sections",onSelect:()=>kt("sections")}];return!ct&&Br&&tt.push({id:"appearance",label:"Appearance",icon:r(Bl,{}),active:Z.kind==="website",onSelect:wo}),ct&&tt.push({id:"styles",label:"Site styles",icon:r(As,{}),active:P&&!Sn&&Ie==="styles",onSelect:()=>kt("styles")}),zn?tt.push({id:"media",label:"Media library",icon:r(Qo,{}),active:P&&!_&&(X!==null||Ie==="media"),onSelect:()=>kt("media")}):$n&&tt.push({id:"media",label:"Media library",icon:r(Qo,{}),onSelect:ns}),r(qs.Provider,{value:!0,children:r(js.Provider,{value:Te,children:p("div",{ref:Ue,className:"sf-editor es-editor",style:pi(De),onContextMenu:Io.onEditorContextMenu,children:[p(Rs,{children:[r($s,{items:tt,ariaLabel:"Left panel views"}),p(or,{children:[r(er,{label:"Undo",disabled:!fe.hasPast,onClick:()=>fe.back(),children:r(Vs,{})}),r(er,{label:"Redo",disabled:!fe.hasFuture,onClick:()=>fe.forward(),children:r(Fs,{})}),r(_s,{}),r(Ns,{devices:Ys,value:Te,onChange:$r})]}),p(or,{kind:"right",style:{minWidth:300},children:[r(Rl,{saveState:Tr,notSaving:!!D||Ir!=null,onToggle:Or,onRetry:Er}),at.visible&&p("button",{type:"button",className:"es-btn-ghost",disabled:!at.enabled,title:at.enabled?"Save this website as a platform template":at.disabledReason,onClick:_r,children:["Save as Template",r(al,{})]}),r("button",{type:"button",className:"es-btn-ghost",title:"Refresh the preview (reloads the canvas, keeps your place)",onClick:ds,children:"Refresh"}),Dr&&te&&p("a",{className:"es-btn-ghost",href:ts,target:"_blank",rel:"noopener noreferrer",title:"Preview the live site (opens in a new tab)","aria-label":"Preview the live site in a new tab",children:["Preview",r(Ms,{size:15})]}),r("button",{type:"button",className:"es-btn-primary",onClick:()=>{Cr(F.data)},children:Nr?"Publish":"Save"})]})]}),r(Ks,{}),p("div",{className:"sf-body",children:[P?p(E,{children:[r("div",{className:"es-sidepanel es-sidepanel--left sf-panel sf-panel--left",children:_?r(Xs,{blocks:w&&w.zone!==u&&!ne(w.zone)?ze(w.zone):Xo,blocksOnly:!!(w&&w.zone!==u&&!ne(w.zone)),at:w?{label:hs(w),onClear:()=>de(null)}:void 0,onAdd:gs,itemFor:e=>({id:`new:${e.kind}:${e.kind==="template"?e.template.id:e.type}`,zone:"",index:-1,type:e.kind==="template"?e.template.node.type:e.type,add:e}),session:gn,siteWide:Gt?{chatEnabled:Hr.enabled,onToggleChat:e=>Vr({enabled:e}),onOpenChat:()=>{Tt(),Zt()}}:void 0,onClose:Tt,onHide:Se,readOnly:!!D}):X&&Ge?r(lr,{panel:Ge,pick:X,onHide:Se}):Ie==="pages"?r(ei,{activeSurface:Fr,onPreviewSurface:Vn,onNavigate:e=>{Vn(null),Bn(lt?{kind:"template",id:lt,pageSlug:e}:{kind:"page",slug:e,siteId:q??void 0})},onClose:Se}):Ie==="styles"?r(ni,{tokenRef:Pr,siteId:q??void 0,onClose:Se,onNotify:Le,tab:Mr,onTabChange:Fn}):Ie==="media"&&Ge?r(lr,{panel:Ge,pick:null,onHide:Se}):p(E,{children:[r(Ws,{icon:r(Jo,{}),title:"Layers",context:`/${te}`,actions:pe.length>0?r(Bs,{label:fn?"Expand all sections":"Collapse all sections",onClick:ys,children:r(Ml,{expand:fn})}):void 0,onHide:Se}),p(Os,{className:"sf-tree sf-scroll",children:[r(R,{icon:r(se,{type:"page",size:13}),name:"Page settings",onSelect:ko,selected:!x&&jt,rowProps:{onClick:O(ko)}}),Mo&&p(E,{children:[r(Bt,{children:"Header"}),jo(Mo)]}),!V&&We&&p(E,{children:[r(Bt,{children:"Header"}),r(R,{icon:r(se,{type:"header",size:13}),name:"Header",onSelect:vo,selected:Z.kind==="header",rowProps:{onClick:O(vo)}})]}),!V&&p(Bt,{children:["Template \xB7 ",Rr?"Home page":"Template"]}),g.map((e,t)=>{if(e.type===xe||e.type===A||_t(e.type))return null;const n=Be===String(e.props.id),o=!!e.props._hidden,s=we(e),i=String(e.props.id),c=e.type==="ContactLocations",a=Lt(e)||c,l=a&&Ee(i),{rowProps:f,...m}=Fe.row({item:{id:i,zone:u,index:t,type:e.type},place:{...Pe(u),index:t}},{"data-node-id":i,onClick:O(()=>ve(t))});return p(Ve,{children:[t>0&&Ro(t),r(R,{icon:r(se,{type:e.type,size:13}),name:Xe(e),onSelect:()=>ve(t),selected:n,hidden:o,...m,fold:a?{open:!l,label:"section",onToggle:()=>ye(i)}:void 0,actions:p(E,{children:[It(u,t,Xe(e)),Et(u,t,e,Xe(e))]}),rowProps:f}),Lt(e)&&!l&&p(ue,{children:[yn(e,1),e.type==="Hero"&&r(R,{icon:r(se,{type:"ticker",size:13}),name:vi,onSelect:()=>ht(i),selected:qt===i,rowProps:{onClick:O(()=>ht(i))}})]}),c&&!l&&r(ue,{children:Ps(e,t)})]},String(e.props.id??t))}),!V&&Fo>0&&Ro(Fo),We&&r(Bt,{children:"Footer"}),U&&(()=>{const e=String(U.props.id),t=we(U).length>0||!!ee(U.type),n=t&&Ee(e);return p(E,{children:[r(R,{icon:r(se,{type:"footer",size:13}),name:"Footer",onSelect:()=>ve(Me),selected:Be===String(U.props.id),fold:t?{open:!n,label:"section",onToggle:()=>ye(e)}:void 0,rowProps:{onClick:O(()=>ve(Me))}}),t&&!n&&r(ue,{children:qo(U,1)})]})})(),!V&&!U&&We&&r(R,{icon:r(se,{type:"footer",size:13}),name:"Footer",onSelect:No,rowProps:{onClick:O(No),title:"Edit the site footer"}}),zo&&jo(zo),r("div",{className:"sf-tree-tool",children:r(di,{})})]})]})}),r(tr,{side:"left",width:De.left,min:ar,max:cr,defaultWidth:Ne.left,label:"Resize Sections panel",onResize:Yr})]}):r(rr,{side:"left",onShow:Se}),r("div",{ref:je,className:"sf-center sf-scroll",style:{overflowX:Zr?"auto":"hidden",overflowY:"hidden"},children:r("div",{className:"sf-frame-scaler",style:Jr,children:r("div",{className:`sf-frame ${Te==="desktop"?"":`sf-frame--${Te}`}`,style:Qr,children:p("div",{className:"sf-preview-host",children:[r(Nl,{},Hn),r(bl,{canvas:ae,session:gn,model:bs,canDrop:hn,onDrop:Go,onPick:xs,onZoneAdd:e=>Ct(le(e),0),readOnly:!!D,revision:F.data}),Gn.length>0&&r("div",{className:"sf-preview-gaps","aria-hidden":"true",children:Gn.map(e=>p("button",{type:"button",tabIndex:-1,className:"sf-preview-gap",style:{top:e.top},title:"Add section here",onClick:()=>Je(e.index),children:[r("span",{className:"sf-preview-gap-line"}),p("span",{className:"sf-preview-gap-pill",children:[r("span",{className:"sf-preview-gap-plus",children:"+"}),r("span",{className:"sf-preview-gap-label",children:"Add section"})]})]},e.index))})]})})})}),Ce?p(E,{children:[r(mi,{value:{selectChild:Qe,addChild:$e,childRowName:wt,blockRowName:Ho},children:r(ui,{mode:Z,onOpenWebsiteSettings:wo,onOpenSiteStyles:()=>{Fn(ri),pt("styles")},onSelectNode:Ur,onNotify:Le,onHidePanel:So})}),r(tr,{side:"right",width:De.right,min:ar,max:cr,defaultWidth:Ne.right,label:"Resize settings panel",onResize:jr})]}):r(rr,{side:"right",onShow:So})]}),St&&p("div",{className:`sf-toast ${St.tone==="error"?"sf-toast--error":""}`,role:"status",children:[r("span",{className:"sf-toast-check","aria-hidden":"true",children:St.tone==="error"?"!":"\u2713"}),St.msg]},qr),Io.menu]})})})}export{Fl as default};
|
|
1
|
+
"use client";import{default as f}from"efficient-easel/screen/components/ScreenChrome";export{f as default};
|
|
@@ -1,6 +1,15 @@
|
|
|
1
1
|
import type { BlogPostRow, LinkTargetPage } from "../lib/web-backend.js";
|
|
2
|
+
import { type LinkFilters, type LinkPickerSetupInput } from "../lib/links/link-picker-setup.js";
|
|
2
3
|
export declare const loadPages: (key?: string) => Promise<LinkTargetPage[]>;
|
|
3
4
|
export declare const loadPosts: (key?: string) => Promise<BlogPostRow[]>;
|
|
5
|
+
interface PickerProps {
|
|
6
|
+
value: string;
|
|
7
|
+
onChange: (value: string) => void;
|
|
8
|
+
label?: string;
|
|
9
|
+
data: LinkPickerSetupInput;
|
|
10
|
+
filters?: LinkFilters | null;
|
|
11
|
+
}
|
|
12
|
+
export declare function StorefrontLinkPicker({ value, onChange, label, data, filters }: PickerProps): import("react").JSX.Element;
|
|
4
13
|
interface Props {
|
|
5
14
|
value?: string;
|
|
6
15
|
onChange: (value: string) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as
|
|
1
|
+
"use client";import{jsx as f,jsxs as C}from"react/jsx-runtime";import{LinkPicker as M}from"efficient-easel/fields";import{SettingsField as D}from"efficient-easel/panel";import{LinkIcon as H}from"efficient-easel/icons";import{useEffect as R,useMemo as P,useRef as O,useState as p}from"react";import{getEditorToken as q}from"../lib/editor-auth.js";import{currentEditorSession as z}from"../lib/editor-session.js";import{backendOf as T}from"../lib/website-session.js";import{useStorefrontDocument as A}from"./StorefrontDocumentContext.js";import{pagePath as G}from"../lib/links/page-link-rules.js";import{linkPickerSetup as I}from"../lib/links/link-picker-setup.js";import{useEditorSession as J}from"../lib/editor-session-context.js";import{isSystemPageSlug as K}from"../lib/content/subscribe.js";function j(i){const o=new Map;return(n="")=>{const t=q(),s=o.get(n);if(!s||s.token===null&&t!==null){const l=t||!z().usesBridgedToken?i(t??"",n).catch(()=>[]):Promise.resolve([]);return o.set(n,{promise:l,token:t}),l}return s.promise}}const N=j(async(i,o)=>{const n=o?{siteId:o}:void 0,{pages:t}=T();return t.linkTargets?t.linkTargets(n):(await t.list(n)).map(s=>({id:s.id,slug:s.slug,label:s.label,layout:null}))}),Q=j(async(i,o)=>await T().blog?.posts(o?{siteId:o}:void 0)??[]);function U({value:i,onChange:o,label:n="Link",data:t,filters:s}){const l=P(()=>I(t,s),[t,s]);return f(D,{label:n,icon:f(H,{}),children:f(M,{value:i,onChange:r=>o(r),kinds:l.kinds,rules:l.rules,filtersFor:l.filtersFor,label:n})})}function V({value:i,onChange:o,label:n="Link"}){const t=typeof i=="string"?i:"",{siteId:s,capabilities:l}=A(),{offersCommerce:r,hasBlog:a}=l,[g,y]=p([]),[S,E]=p([]),[L,_]=p([]),[k,b]=p(null),h=J().chrome,v=h?.products?.list,m=h?.linkFilters,x=m?void 0:h?.linkRow,c=O(!0);R(()=>(c.current=!0,()=>{c.current=!1}),[]),R(()=>{let e=!0;return N(s??void 0).then(u=>e&&c.current&&y(u)),a&&Q(s??void 0).then(u=>e&&c.current&&E(u)),r&&v?.().then(u=>e&&c.current&&_(u)),r&&m?m.load(s).catch(()=>null).then(u=>e&&c.current&&b(()=>u)):b(null),()=>{e=!1}},[s,r,a,v,m]);const d=P(()=>({pages:g.filter(e=>!K(e.slug)).map(e=>({slug:e.slug,title:e.label,docs:[e.layout]})),posts:a?S.map(e=>({slug:e.slug,title:e.title})):[],products:r?L.map(e=>({href:e.href,name:e.name})):[],offers:{offersCommerce:r,offersService:a}}),[g,S,L,r,a]),w=P(()=>k?k(d.pages):null,[k,d]),B=d.pages.map(e=>G(e.slug)),F=r&&x&&(t==="/"||B.includes(t))?x:void 0;return C("div",{children:[f(U,{value:t,onChange:o,label:n,data:d,filters:w}),F&&f(F,{value:t,onChange:o,pages:g})]})}export{U as StorefrontLinkPicker,V as default,N as loadPages,Q as loadPosts};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as
|
|
1
|
+
"use client";import{jsx as s,jsxs as i,Fragment as _}from"react/jsx-runtime";import{useState as d}from"react";import{SettingsDefaultReset as k,SettingsField as w}from"efficient-easel/panel";import{iconOf as S,noGlyph as L}from"../lib/puck/controls.js";import{ThemeCard as j}from"./ThemeCard.js";import{ClearColoursDialog as v}from"./ClearColoursDialog.js";import{BRAND_INKS as A,brandTheme as B,normalizeTheme as D,normalizeThemeColors as F,selectedThemeColors as G}from"../lib/theme.js";const I=L("the row's whole content is an action; the gutter names a subject and this row has none \u2014 the button's label is the name GG, 2026-09-23");function N(){return s("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",children:s("path",{d:"M12 5v14M5 12h14"})})}const O="Reset color",P={selected:0,themes:[]};function M(r){r(P)}function y({value:r,onChange:o}){const c=r?.themes??[],f=c.length===0,t=D(r),[u,m]=d(!1),[p,h]=d(null),g=(e,n)=>{o({...t,themes:t.themes.map((l,R)=>R===e?n:l)})},b=G(t).accent,T=new Set(t.themes.map(e=>e.brandInk).filter(Boolean)),x=A.filter(e=>!T.has(e)).map(e=>B(b,e)),a=[...t.themes,...x],C=e=>{if(e<t.themes.length)return o({...t,selected:e});const n=[...t.themes,a[e]];o({...t,themes:n,selected:n.length-1})},E=()=>{const e=[...t.themes,{...F(t.themes[t.selected])}];o({...t,themes:e,selected:e.length-1}),h(e.length-1)};return i(_,{children:[f?null:s(w,{label:O,icon:S(I),labelId:"sf-theme-reset",action:s(k,{label:"all theme colors",changed:!0,onReset:()=>m(!0)})}),u&&s(v,{count:c.length,onCancel:()=>m(!1),onConfirm:()=>{m(!1),M(o)}}),s("div",{className:"sf-theme-list",role:"radiogroup","aria-label":"Theme",children:a.map((e,n)=>s(j,{index:n,colors:e,selected:n===t.selected,open:p===n&&n<t.themes.length,editable:n<t.themes.length,onPick:()=>C(n),onEdit:()=>h(l=>l===n?null:n),onChangeColors:l=>g(n,l)},n))}),i("button",{type:"button",onClick:E,className:"sf-theme-add",children:[s(N,{}),"Add new theme"]})]})}export{P as CLEARED_THEME,O as RESET_COLOUR_LABEL,M as commitClearedTheme,y as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as
|
|
1
|
+
"use client";import{jsx as o,jsxs as h}from"react/jsx-runtime";import{useId as f,useMemo as T}from"react";import{useEasel as I}from"efficient-easel/easel";import{SettingsField as k,SettingsSwitch as x}from"efficient-easel/panel";import{EyeIcon as b}from"efficient-easel/icons";import{DEFAULT_TICKER_ITEMS as E}from"./HeroSection.js";import{GroupLabel as S,TextListField as g,TICKER_ITEMS_ROW as a}from"../lib/puck/controls.js";const w="root:default-zone";function _({heroId:c}){const{appState:l,dispatch:p}=I(e=>e),n=l.data.content??[],r=n.findIndex(e=>e.props.id===c),t=r>=0?n[r]:null,d=t?t.props.showTicker??!0:!0,m=T(()=>{const e=t?.props.tickerItems;return Array.isArray(e)?e:E.map(u=>({text:u}))},[t]),s=f();if(!t)return o("p",{className:"sf-note",children:"This ticker\u2019s hero is no longer on the page."});const i=e=>p({type:"replace",destinationZone:w,destinationIndex:r,data:{...t,props:{...t.props,...e}}});return h("div",{children:[o(S,{label:"Ticker"}),o(k,{label:"Show ticker",labelId:s,icon:o(b,{}),action:o(x,{checked:d,onChange:e=>i({showTicker:e}),ariaLabelledBy:s})}),o(g,{label:a.label,icon:a.icon,items:m,placeholder:"item",onChange:e=>i({tickerItems:e}),markup:!0})]})}export{_ as default};
|
|
@@ -1,10 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
export type UiIconName
|
|
3
|
-
export default function UiIcon({ name, size, strokeWidth, rounded, className, style, }: {
|
|
4
|
-
name: UiIconName;
|
|
5
|
-
size: number;
|
|
6
|
-
strokeWidth?: number;
|
|
7
|
-
rounded?: boolean;
|
|
8
|
-
className?: string;
|
|
9
|
-
style?: CSSProperties;
|
|
10
|
-
}): import("react").JSX.Element;
|
|
1
|
+
export { default } from "efficient-easel/screen/components/UiIcon";
|
|
2
|
+
export type { UiIconName } from "efficient-easel/screen/components/UiIcon";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{default as o}from"efficient-easel/screen/components/UiIcon";export{o as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use client";import{jsx as t,jsxs as w}from"react/jsx-runtime";import{useCallback as k,useEffect as f,useState as M}from"react";import{ExternalIcon as Y}from"efficient-easel/icons";import{SettingsSwitch as F}from"efficient-easel/panel";import{PagesIcon as G,StylesIcon as j}from"efficient-easel/rail";import{TreeRow as z}from"efficient-easel/tree";import K from"./HeadingAudit.js";import{LocationsTreeContext as U}from"./LocationsTreeContext.js";import Z from"./PagesPanel.js";import{usePreviewChat as q}from"./PreviewChatContext.js";import{PREVIEW_DEVICES as X}from"./preview-devices.js";import{PreviewDeviceContext as J}from"./PreviewDeviceContext.js";import{usePreviewHeader as Q}from"./PreviewHeaderContext.js";import{usePreviewSocial as $}from"./PreviewSocialContext.js";import{usePreviewSurface as ee}from"./PreviewSurfaceContext.js";import{TICKER_PART_LABEL as te,usePreviewTicker as oe}from"./PreviewTickerContext.js";import re,{CHAT_MODE as ie,HEADER_MODE as O,SOCIAL_MODE as se,WEBSITE_MODE as y}from"./SectionEditor.js";import g from"./SectionIcon.js";import ne from"./SectionThumbnail.js";import{useStorefrontDocument as I}from"./StorefrontDocumentContext.js";import ae from"./StylesPanel.js";import ce from"./TemplateGlyph.js";import{useFooterFocus as le}from"./useFooterFocus.js";import{LOCATIONS_TYPE as de,useLocationsTree as pe}from"./useLocationsTree.js";import{usePinnedChromeSeed as me}from"./usePinnedChromeSeed.js";import{usePreviewHref as fe}from"./usePreviewHref.js";import{SITE_STYLES_TABS as ue,SITE_STYLES_TEXT_TAB as Se,useWebsiteName as Ee}from"./WebsiteSettingsPanel.js";import{HERO_GROUP_TYPE as Te,duplicateBlocked as he,heroGroupNestDepth as we}from"../lib/hero-group-placement.js";import{stripMarkup as Pe}from"../lib/markup.js";import{categoryShortLabel as be,PINNED_SECTION_TYPE as ve}from"../lib/puck/add-palette.js";import{canAddTo as ke}from"../lib/puck/add-target.js";import{blockIsOffered as ge}from"../lib/puck/block-offer.js";import{sectionIdOfBoxZone as Ie,setBookingPreview as Ce}from"../lib/puck/booking-preview.js";import{footerBlockRowName as _e}from"../lib/puck/footer-block-row-name.js";import{FOOTER_TYPE as Le,HEADER_TYPE as A}from"../lib/puck/footer-blocks.js";import{leftViewForSelection as Oe,readLeftView as ye,resolveLeftView as Ae,writeLeftView as Be}from"../lib/puck/left-view.js";import{isLockedBlock as Ne}from"../lib/puck/locked-blocks.js";import{scrollPreviewToSection as Re,scrollPreviewToTop as B}from"../lib/puck/preview-dom.js";import{SiteCanvas as He}from"../lib/puck/overrides.js";import{labelAtLevel as De}from"../lib/puck/section-catalog.js";import{SECTION_DESCRIPTIONS as Ve}from"../lib/puck/section-descriptions.js";import{isSectionGroupType as xe,sectionGroupZone as We,SITE_FOOTER_TYPE as Me,SITE_HEADER_TYPE as Ye}from"../lib/puck/section-groups.js";import{resolveSaveAsTemplateAction as Fe,SAVE_AS_TEMPLATE_EVENT as Ge}from"../lib/save-as-template-action.js";import{newSectionNode as je}from"../lib/sections/new-section-node.js";import{useHostProducts as ze}from"../lib/use-host-products.js";function N({mode:e,open:o}){const{setSelectedHeroId:r,setSelectHandler:c}=oe(),l=e,s=l.kind==="ticker"?l.heroId:null,n=k(i=>{if(!i)return;o({kind:"ticker",heroId:i}),Re(i)},[o]);return f(()=>{r(s)},[s,r]),f(()=>{c(n)},[c,n]),{partRows:(i,{rowClick:m})=>{const a=String(i.props.id);return i.type==="Hero"&&t(z,{icon:t(g,{type:"ticker",size:13}),name:te,onSelect:()=>n(a),selected:s===a,rowProps:{onClick:m(()=>n(a))}})}}}function Ke(){const{adapter:e,capabilities:o,currentSlug:r,siteId:c,hasUnsavedEdits:l,bridgeCapabilities:s,notifyParent:n,token:i}=I(),{hasPreviewLink:m}=o,a=Fe({hasTrustedConsole:!!i,canCreatePlatformTemplate:s.canCreatePlatformTemplate,capabilities:o,siteId:c,hasUnsavedEdits:l}),T=k(()=>{!c||!r||n(Ge,{siteId:c,slug:r})},[n,c,r]),u=fe({pageSlug:r,siteId:c,token:i}),S=e.previewHref?.(r)??u;return{barLead:()=>a.visible&&w("button",{type:"button",className:"es-btn-ghost",disabled:!a.enabled,title:a.enabled?"Save this website as a platform template":a.disabledReason,onClick:T,children:["Save as Template",t(ce,{})]}),barTrail:()=>m&&r&&w("a",{className:"es-btn-ghost",href:S,target:"_blank",rel:"noopener noreferrer",title:"Preview the live site (opens in a new tab)","aria-label":"Preview the live site in a new tab",children:["Preview",t(Y,{size:15})]})}}function Ue(){return w("svg",{width:"17",height:"17",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:1.7,strokeLinecap:"round",strokeLinejoin:"round",children:[t("path",{d:"M12 3a9 9 0 0 0 0 18 2.3 2.3 0 0 0 2.3-2.3c0-.55-.22-1.05-.57-1.42-.34-.37-.56-.87-.56-1.43A2.35 2.35 0 0 1 15.6 13.5H18a3 3 0 0 0 3-3c0-4.14-4-7.5-9-7.5z"}),t("circle",{cx:"7.7",cy:"11.3",r:"1.05",fill:"currentColor",stroke:"none"}),t("circle",{cx:"12",cy:"8",r:"1.05",fill:"currentColor",stroke:"none"}),t("circle",{cx:"16",cy:"11",r:"1.05",fill:"currentColor",stroke:"none"})]})}function Ze(e,o){const{capabilities:r,templateId:c,siteId:l,tokenRef:s,navigate:n}=I(),{hasSiteTheme:i,explainsSiteSettings:m}=r,a=d=>o.setView(d),[T,u]=M(ue[0].id),{surface:S,setSurface:P}=ee(),b=()=>{if(i){a("styles"),o.reveal(),B();return}e.show(y),e.reveal(),B()},v={id:"pages",label:"Pages",icon:t(G,{}),panel:({onHide:d})=>t(Z,{activeSurface:S,onPreviewSurface:P,onNavigate:p=>{P(null),n(c?{kind:"template",id:c,pageSlug:p}:{kind:"page",slug:p,siteId:l??void 0})},onClose:d})},E=[];return!i&&m&&E.push({id:"appearance",label:"Appearance",icon:t(Ue,{}),active:e.kind==="website",onSelect:b}),i&&E.push({id:"styles",label:"Site styles",icon:t(j,{}),panel:({onHide:d,notify:p})=>t(ae,{tokenRef:s,siteId:l??void 0,onClose:d,onNotify:p,tab:T,onTabChange:u})}),{railLead:[v],railTrail:E,resolveLeftView:(d,p)=>Ae(d,i,p),openSettings:b,openStyles:()=>{u(Se),a("styles")}}}function qe(e,o,r,c){const{kind:l,open:s}=e,{selected:n,zoneOf:i}=o,m=le(o,r);f(()=>{Ce(n?.type==="BookingBox"&&n.props.region==="confirm"?Ie(i(String(n.props.id))):null)},[n?.props.id]);const a=pe(e,o),{capabilities:{hasSiteSettings:T}}=I(),{setSelected:u,setSelectHandler:S}=Q(),{chat:P,setChat:b,setSelected:v,setSelectHandler:E}=q(),d=l==="header";f(()=>{u(d)},[d,u]),f(()=>{S(()=>s(O))},[S,s]);const p=k(()=>s(ie),[s]),C=l==="chat";f(()=>{v(C)},[C,v]),f(()=>{E(p)},[E,p]);const{setOpenHandler:_}=$(),L=k(()=>s(se),[s]);f(()=>{_(L)},[_,L]);const H=N(e),D=Ke(),V=Ze(e,c),x=r.device;return{...m,...H,...D,...V,treeFoot:()=>t("div",{className:"sf-tree-tool",children:t(K,{})}),hasOwnRows:h=>h.type===de,ownRows:a.renderLocationTree,sectionPressed:a.sectionPressed,wrap:h=>t(U.Provider,{value:!0,children:t(J.Provider,{value:x,children:h})}),addPanelRow:h=>T?w("div",{className:"sf-addside-sitewide",children:[t("span",{className:"sf-addside-sitewide-glyph","aria-hidden":"true",children:t(g,{type:"chat",size:16})}),w("button",{type:"button",className:"sf-addside-sitewide-name",onClick:()=>{h(),p()},children:["Live chat",t("span",{className:"sf-addside-sitewide-desc",children:"A chat bubble on every page"})]}),t(F,{checked:P.enabled,onChange:W=>b({enabled:W}),ariaLabel:"Show the chat bubble on the whole site"})]}):void 0}}const Xe={isLockedBlock:Ne,duplicateBlocked:he,nestDepth:(e,o,r)=>o===Te?we(e,r):0,newSectionNode:je,canAddTo:ke,blockIsOffered:ge},Je={labelAtLevel:De,descriptions:Ve,categoryLabel:be,firstSection:ve,blockRowName:_e,plainText:Pe,Icon:g,Thumbnail:ne,useProducts:ze},Qe={desktop:2e3,tablet:800,mobile:390},R="desktop",$e={options:X,initial:R,fluid:R,widths:Qe},et={read:ye,write:e=>Be(e),forSelection:(e,o)=>Oe(e,o)},tt={first:A,last:Le,firstGroup:Ye,lastGroup:Me,isSectionGroup:xe,sectionGroupZone:We,panelOf:e=>e===A?O:null};function ot(e){return{...N(e),openSettings:()=>e.show(y)}}const Zt={useOwnerName:Ee,useBridges:qe,useStandaloneBridges:ot,useDocumentPass:me,blockRules:Xe,blockLook:Je,devices:$e,leftView:et,pinned:tt,Canvas:He,Inspector:re};export{Zt as WEBSITE_SCREEN};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as
|
|
1
|
+
"use client";import{jsx as t}from"react/jsx-runtime";import{SettingsDefaultReset as c,SettingsField as u,SettingsSegmented as m}from"efficient-easel/panel";import{WidthIcon as h}from"efficient-easel/icons";import{WIDTH_CHOICE_LABEL as l}from"../lib/content/section-width.js";function g({value:i,resolved:d,onChange:o,label:n="Width",labelId:a,followsLabel:s,hint:f}){const e=i===void 0,r=e?d:i;return t(u,{label:n,labelId:a,icon:t(h,{}),value:e?s:void 0,changed:!e,action:t(c,{label:n,changed:!e,onReset:()=>o(void 0)}),hint:f,children:t(m,{options:[{label:l.page,id:"content"},{label:l.full,id:"full"}],value:r,ariaLabel:n,onChange:o})})}export{g as default};
|
|
@@ -1,12 +1,2 @@
|
|
|
1
|
-
export { MAX_PANEL_W, MIN_PANEL_W, panelWidthVars } from "efficient-easel/
|
|
2
|
-
export
|
|
3
|
-
export declare const DEFAULT_PANEL_W: {
|
|
4
|
-
readonly left: 288;
|
|
5
|
-
readonly right: 320;
|
|
6
|
-
};
|
|
7
|
-
export type PanelSide = "left" | "right";
|
|
8
|
-
export type PanelWidths = {
|
|
9
|
-
left: number;
|
|
10
|
-
right: number;
|
|
11
|
-
};
|
|
12
|
-
export declare const clampPanelWidth: (w: number) => number;
|
|
1
|
+
export { clampPanelWidth, DEFAULT_PANEL_W, MAX_PANEL_W, MIN_PANEL_W, PANEL_WIDTHS_KEY, panelWidthVars } from "efficient-easel/screen/components/panel-widths";
|
|
2
|
+
export type { PanelSide, PanelWidths } from "efficient-easel/screen/components/panel-widths";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{clampPanelWidth as E,DEFAULT_PANEL_W as W,MAX_PANEL_W as L,MIN_PANEL_W as N,PANEL_WIDTHS_KEY as P,panelWidthVars as a}from"efficient-easel/screen/components/panel-widths";export{W as DEFAULT_PANEL_W,L as MAX_PANEL_W,N as MIN_PANEL_W,P as PANEL_WIDTHS_KEY,E as clampPanelWidth,a as panelWidthVars};
|