efficient-easel 6.5.0 → 7.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/README.md +12 -2
- package/dist/{CanvasDragLayer-O1gVT1AL.d.ts → CanvasDragLayer-CLb7j-CZ.d.ts} +18 -2
- package/dist/blocks/index.d.ts +2 -2
- package/dist/{chunk-Q2L6YTII.js → chunk-5AVEAO36.js} +1 -1
- package/dist/{chunk-MCHMF32I.js → chunk-5F3PKNT7.js} +1 -1
- package/dist/{chunk-WZMU646D.js → chunk-64ZRPAWS.js} +2 -2
- package/dist/{chunk-ESQZG7B3.js → chunk-6UNFME6S.js} +1 -1
- package/dist/{chunk-PAM3NLFL.js → chunk-6Z5VENIE.js} +1 -1
- package/dist/{chunk-4UJ6CPLO.js → chunk-A6X355SX.js} +1 -1
- package/dist/chunk-B3PXQMFN.js +5 -0
- package/dist/{chunk-UY7BCB32.js → chunk-DDOJANIE.js} +1 -1
- package/dist/{chunk-HQWQLDCB.js → chunk-E4MAYJX5.js} +1 -1
- package/dist/{chunk-ZR4CFNMW.js → chunk-FKXEPECH.js} +5 -5
- package/dist/{chunk-57NRNFLO.js → chunk-GV3EVHZM.js} +1 -1
- package/dist/{chunk-TCVTMNYE.js → chunk-JVTSUA2U.js} +1 -1
- package/dist/chunk-LC62L4P2.js +1 -0
- package/dist/{chunk-BXQBCW3P.js → chunk-MVQEEWTE.js} +1 -1
- package/dist/{chunk-M5VRWM7M.js → chunk-P6EIA5NH.js} +8 -8
- package/dist/chunk-SOZUYCQZ.js +1 -0
- package/dist/chunk-SSORUDHE.js +18 -0
- package/dist/chunk-UMUNJM5I.js +1 -0
- package/dist/chunk-WHOCJGHH.js +7 -0
- package/dist/chunk-YXVJAUAU.js +62 -0
- package/dist/drag/drag.css +33 -26
- package/dist/drag/index.d.ts +34 -3
- package/dist/drag/index.js +1 -1
- package/dist/easel/index.d.ts +7 -6
- package/dist/easel/index.js +1 -1
- package/dist/node-ops/index.d.ts +2 -2
- package/dist/node-ops/index.js +1 -1
- package/dist/{plan-CHKjPr6l.d.ts → plan-xc48tt77.d.ts} +10 -1
- package/dist/screen/components/AddBlockRow.js +1 -1
- package/dist/screen/components/AddSidePanel.js +1 -1
- package/dist/screen/components/MediaSidePanel.d.ts +2 -2
- package/dist/screen/components/MediaSidePanel.js +1 -1
- package/dist/screen/components/NodeContextMenu.d.ts +8 -7
- package/dist/screen/components/NodeContextMenu.js +1 -1
- package/dist/screen/components/PageEditGuardNotices.js +1 -1
- package/dist/screen/components/ScreenChrome.js +1 -1
- package/dist/screen/components/ScreenDocumentContext.d.ts +2 -2
- package/dist/screen/components/ScreenDocumentContext.js +1 -1
- package/dist/screen/components/ScreenMount.d.ts +3 -3
- package/dist/screen/components/ScreenMount.js +1 -1
- package/dist/screen/components/ScreenStoreProvider.d.ts +3 -3
- package/dist/screen/components/ScreenStoreProvider.js +1 -1
- package/dist/screen/components/SectionScreenShell.js +14 -14
- package/dist/screen/components/usePartBridge.d.ts +3 -3
- package/dist/screen/components/usePartBridge.js +1 -1
- package/dist/screen/index.d.ts +4 -4
- package/dist/screen/index.js +1 -1
- package/dist/screen/lib/admin-bridge.d.ts +2 -2
- package/dist/screen/lib/document-addressing.d.ts +2 -2
- package/dist/screen/lib/document-hooks.d.ts +2 -2
- package/dist/screen/lib/host.d.ts +2 -2
- package/dist/screen/lib/key-scope.js +1 -1
- package/dist/screen/lib/media-panel.d.ts +2 -2
- package/dist/screen/lib/media-picker.d.ts +2 -2
- package/dist/screen/lib/page-lock.d.ts +2 -2
- package/dist/screen/lib/puck/device-fields.js +1 -1
- package/dist/screen/lib/puck/palette-sections.d.ts +2 -2
- package/dist/screen/lib/puck/section-doc.d.ts +2 -2
- package/dist/screen/lib/puck/style-clipboard.d.ts +3 -3
- package/dist/screen/lib/puck/style-clipboard.js +1 -1
- package/dist/screen/lib/puck/use-section-ops.d.ts +2 -2
- package/dist/screen/lib/puck/use-section-ops.js +1 -1
- package/dist/screen/lib/screen-parts.d.ts +27 -8
- package/dist/screen/lib/screen-parts.js +1 -1
- package/dist/screen/lib/section-templates.d.ts +2 -2
- package/dist/screen/lib/session-context.d.ts +2 -2
- package/dist/screen/lib/session.d.ts +2 -2
- package/dist/screen/screen.css +6 -127
- package/dist/screen/words.d.ts +5 -0
- package/dist/screen/words.js +1 -1
- package/dist/strings/catalogue.js +1 -1
- package/dist/strings/index.js +1 -1
- package/dist/{types-tNFRS_AW.d.ts → types-BbkxBdG9.d.ts} +1 -1
- package/dist/{useNodeOps-CLbZyd43.d.ts → useNodeOps-CTQN3wky.d.ts} +3 -1
- package/package.json +3 -3
- package/dist/chunk-5PUEZ22M.js +0 -1
- package/dist/chunk-GIP45GWF.js +0 -65
- package/dist/chunk-HFW6D46X.js +0 -14
- package/dist/chunk-LVUDUQNL.js +0 -1
- package/dist/chunk-NAGDOIW4.js +0 -5
- package/dist/chunk-T5ORM737.js +0 -7
- package/dist/chunk-UK2FQOUT.js +0 -1
package/dist/screen/screen.css
CHANGED
|
@@ -629,9 +629,11 @@
|
|
|
629
629
|
interactive; only the slim bands are clickable. On hover a band shows an accent
|
|
630
630
|
insertion line + a dark "Add section" pill; clicking opens the picker targeted
|
|
631
631
|
at that seam. It sits inside the scaled device frame, so it tracks the zoom. */
|
|
632
|
-
/* The full-width band only POSITIONS the
|
|
632
|
+
/* The full-width band only POSITIONS the ➕ over a seam — it is itself
|
|
633
633
|
click-through (pointer-events:none) so it never steals canvas clicks / Puck
|
|
634
|
-
selection near a section boundary. Only the
|
|
634
|
+
selection near a section boundary. Only the ➕ is interactive: the canvas
|
|
635
|
+
insert point (efficient-easel/drag `CanvasInsert`, drag.css), the shell's
|
|
636
|
+
24px IconButton (owner 2026-10-14). */
|
|
635
637
|
.sf-preview-gap {
|
|
636
638
|
position: absolute;
|
|
637
639
|
left: 0;
|
|
@@ -656,134 +658,11 @@
|
|
|
656
658
|
overflow: hidden;
|
|
657
659
|
}
|
|
658
660
|
|
|
659
|
-
.sf-preview-gap--tight:hover
|
|
661
|
+
.sf-preview-gap--tight:hover,
|
|
662
|
+
.sf-preview-gap--tight:focus-within {
|
|
660
663
|
overflow: visible;
|
|
661
664
|
}
|
|
662
665
|
|
|
663
|
-
/* ── Canvas "Add section" seams (overlay between preview sections) ──────────
|
|
664
|
-
Absolutely positioned over .sf-preview-host (the iframe's box), one band per
|
|
665
|
-
seam between top-level sections, placed at the boundary Y measured from the
|
|
666
|
-
live iframe. The container ignores pointer events so the canvas stays
|
|
667
|
-
interactive; only the slim bands are clickable. On hover a band shows an accent
|
|
668
|
-
insertion line + a dark "Add section" pill; clicking opens the picker targeted
|
|
669
|
-
at that seam. It sits inside the scaled device frame, so it tracks the zoom. */
|
|
670
|
-
.sf-preview-gap-line {
|
|
671
|
-
position: absolute;
|
|
672
|
-
left: 0;
|
|
673
|
-
right: 0;
|
|
674
|
-
top: 50%;
|
|
675
|
-
height: 2px;
|
|
676
|
-
transform: translateY(-50%);
|
|
677
|
-
background: var(--sf-accent);
|
|
678
|
-
opacity: 0;
|
|
679
|
-
pointer-events: none;
|
|
680
|
-
transition: opacity 0.12s;
|
|
681
|
-
}
|
|
682
|
-
|
|
683
|
-
/* ── Canvas "Add section" seams (overlay between preview sections) ──────────
|
|
684
|
-
Absolutely positioned over .sf-preview-host (the iframe's box), one band per
|
|
685
|
-
seam between top-level sections, placed at the boundary Y measured from the
|
|
686
|
-
live iframe. The container ignores pointer events so the canvas stays
|
|
687
|
-
interactive; only the slim bands are clickable. On hover a band shows an accent
|
|
688
|
-
insertion line + a dark "Add section" pill; clicking opens the picker targeted
|
|
689
|
-
at that seam. It sits inside the scaled device frame, so it tracks the zoom. */
|
|
690
|
-
/* The only clickable element: a compact "+" chip that is hidden at rest and
|
|
691
|
-
fades in on hover, expanding to the full "Add section" pill. Keeping it
|
|
692
|
-
invisible until hovered means the canvas carries no persistent affordance,
|
|
693
|
-
while the dead zone stays no larger than this small chip (opacity:0 still
|
|
694
|
-
hit-tests, so the seam remains hoverable). */
|
|
695
|
-
.sf-preview-gap-pill {
|
|
696
|
-
position: relative;
|
|
697
|
-
display: inline-flex;
|
|
698
|
-
align-items: center;
|
|
699
|
-
padding: 4px;
|
|
700
|
-
border-radius: 999px;
|
|
701
|
-
background: var(--sf-toast-bg);
|
|
702
|
-
color: var(--sf-on-accent);
|
|
703
|
-
font-family: var(--sf-font);
|
|
704
|
-
font-size: 12px;
|
|
705
|
-
font-weight: 500;
|
|
706
|
-
white-space: nowrap;
|
|
707
|
-
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.28);
|
|
708
|
-
opacity: 0;
|
|
709
|
-
cursor: pointer;
|
|
710
|
-
pointer-events: auto;
|
|
711
|
-
transition: opacity 0.12s, padding 0.12s;
|
|
712
|
-
}
|
|
713
|
-
|
|
714
|
-
/* ── Canvas "Add section" seams (overlay between preview sections) ──────────
|
|
715
|
-
Absolutely positioned over .sf-preview-host (the iframe's box), one band per
|
|
716
|
-
seam between top-level sections, placed at the boundary Y measured from the
|
|
717
|
-
live iframe. The container ignores pointer events so the canvas stays
|
|
718
|
-
interactive; only the slim bands are clickable. On hover a band shows an accent
|
|
719
|
-
insertion line + a dark "Add section" pill; clicking opens the picker targeted
|
|
720
|
-
at that seam. It sits inside the scaled device frame, so it tracks the zoom. */
|
|
721
|
-
.sf-preview-gap-pill:hover {
|
|
722
|
-
opacity: 1;
|
|
723
|
-
padding: 4px 12px 4px 4px;
|
|
724
|
-
}
|
|
725
|
-
|
|
726
|
-
/* ── Canvas "Add section" seams (overlay between preview sections) ──────────
|
|
727
|
-
Absolutely positioned over .sf-preview-host (the iframe's box), one band per
|
|
728
|
-
seam between top-level sections, placed at the boundary Y measured from the
|
|
729
|
-
live iframe. The container ignores pointer events so the canvas stays
|
|
730
|
-
interactive; only the slim bands are clickable. On hover a band shows an accent
|
|
731
|
-
insertion line + a dark "Add section" pill; clicking opens the picker targeted
|
|
732
|
-
at that seam. It sits inside the scaled device frame, so it tracks the zoom. */
|
|
733
|
-
.sf-preview-gap-plus {
|
|
734
|
-
display: inline-flex;
|
|
735
|
-
align-items: center;
|
|
736
|
-
justify-content: center;
|
|
737
|
-
width: 18px;
|
|
738
|
-
height: 18px;
|
|
739
|
-
border-radius: 50%;
|
|
740
|
-
background: var(--sf-accent);
|
|
741
|
-
color: var(--sf-on-accent);
|
|
742
|
-
font-size: 14px;
|
|
743
|
-
line-height: 1;
|
|
744
|
-
flex: none;
|
|
745
|
-
}
|
|
746
|
-
|
|
747
|
-
/* ── Canvas "Add section" seams (overlay between preview sections) ──────────
|
|
748
|
-
Absolutely positioned over .sf-preview-host (the iframe's box), one band per
|
|
749
|
-
seam between top-level sections, placed at the boundary Y measured from the
|
|
750
|
-
live iframe. The container ignores pointer events so the canvas stays
|
|
751
|
-
interactive; only the slim bands are clickable. On hover a band shows an accent
|
|
752
|
-
insertion line + a dark "Add section" pill; clicking opens the picker targeted
|
|
753
|
-
at that seam. It sits inside the scaled device frame, so it tracks the zoom. */
|
|
754
|
-
/* Label collapsed until hover so the resting chip is just the "+". */
|
|
755
|
-
.sf-preview-gap-label {
|
|
756
|
-
max-width: 0;
|
|
757
|
-
margin-left: 0;
|
|
758
|
-
overflow: hidden;
|
|
759
|
-
opacity: 0;
|
|
760
|
-
transition: max-width 0.14s, margin-left 0.14s, opacity 0.12s;
|
|
761
|
-
}
|
|
762
|
-
|
|
763
|
-
/* ── Canvas "Add section" seams (overlay between preview sections) ──────────
|
|
764
|
-
Absolutely positioned over .sf-preview-host (the iframe's box), one band per
|
|
765
|
-
seam between top-level sections, placed at the boundary Y measured from the
|
|
766
|
-
live iframe. The container ignores pointer events so the canvas stays
|
|
767
|
-
interactive; only the slim bands are clickable. On hover a band shows an accent
|
|
768
|
-
insertion line + a dark "Add section" pill; clicking opens the picker targeted
|
|
769
|
-
at that seam. It sits inside the scaled device frame, so it tracks the zoom. */
|
|
770
|
-
.sf-preview-gap-pill:hover .sf-preview-gap-label {
|
|
771
|
-
max-width: 140px;
|
|
772
|
-
margin-left: 6px;
|
|
773
|
-
opacity: 1;
|
|
774
|
-
}
|
|
775
|
-
|
|
776
|
-
/* ── Canvas "Add section" seams (overlay between preview sections) ──────────
|
|
777
|
-
Absolutely positioned over .sf-preview-host (the iframe's box), one band per
|
|
778
|
-
seam between top-level sections, placed at the boundary Y measured from the
|
|
779
|
-
live iframe. The container ignores pointer events so the canvas stays
|
|
780
|
-
interactive; only the slim bands are clickable. On hover a band shows an accent
|
|
781
|
-
insertion line + a dark "Add section" pill; clicking opens the picker targeted
|
|
782
|
-
at that seam. It sits inside the scaled device frame, so it tracks the zoom. */
|
|
783
|
-
.sf-preview-gap:has(.sf-preview-gap-pill:hover) .sf-preview-gap-line {
|
|
784
|
-
opacity: 1;
|
|
785
|
-
}
|
|
786
|
-
|
|
787
666
|
.sf-msg {
|
|
788
667
|
padding: 24px;
|
|
789
668
|
font-size: 14px;
|
package/dist/screen/words.d.ts
CHANGED
|
@@ -253,6 +253,11 @@ type ScreenWords = {
|
|
|
253
253
|
sectionAdded: (v: {
|
|
254
254
|
name: string;
|
|
255
255
|
}) => string;
|
|
256
|
+
/** A section or block was deleted, at once: the toast that offers its Undo
|
|
257
|
+
* (owner 2026-10-14). The action's word is `bar.undo`. */
|
|
258
|
+
deleted: (v: {
|
|
259
|
+
name: string;
|
|
260
|
+
}) => string;
|
|
256
261
|
/** The right panel's resize grip's accessible name. */
|
|
257
262
|
resizeSettingsPanel: string;
|
|
258
263
|
/** A section opened on its own (`SectionScreenShell`): the head's tooltip,
|
package/dist/screen/words.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export{DEFAULT_SCREEN_ADD_WORDS,DEFAULT_SCREEN_WORDS}from"../chunk-
|
|
1
|
+
export{DEFAULT_SCREEN_ADD_WORDS,DEFAULT_SCREEN_WORDS}from"../chunk-5F3PKNT7.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{DEFAULT_EASEL_STRINGS,mergeEaselStrings}from"../chunk-
|
|
1
|
+
export{DEFAULT_EASEL_STRINGS,mergeEaselStrings}from"../chunk-JVTSUA2U.js";import"../chunk-M6F6LS3H.js";import"../chunk-ZAOM6PFH.js";import"../chunk-6WY6ZXJG.js";import"../chunk-5F3PKNT7.js";import"../chunk-TBY3DFKS.js";import"../chunk-K56YDHYQ.js";import"../chunk-KFV7N2DJ.js";import"../chunk-WK3AFPXY.js";import"../chunk-H6DDIBQ4.js";import"../chunk-Y2G7CU6A.js";import"../chunk-RE4LP46F.js";import"../chunk-2OAZYSWJ.js";import"../chunk-AUT242JK.js";import"../chunk-FFYXVAAL.js";import"../chunk-546BBOPE.js";import"../chunk-O2NLQBFX.js";
|
package/dist/strings/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{DEFAULT_EASEL_STRINGS as r,mergeEaselStrings as n}from"../chunk-
|
|
1
|
+
import{DEFAULT_EASEL_STRINGS as r,mergeEaselStrings as n}from"../chunk-JVTSUA2U.js";export{DEFAULT_EASEL_STRINGS,mergeEaselStrings}from"../chunk-JVTSUA2U.js";import"../chunk-M6F6LS3H.js";import"../chunk-ZAOM6PFH.js";import"../chunk-6WY6ZXJG.js";import"../chunk-5F3PKNT7.js";import"../chunk-TBY3DFKS.js";import"../chunk-K56YDHYQ.js";import"../chunk-KFV7N2DJ.js";import"../chunk-WK3AFPXY.js";import"../chunk-H6DDIBQ4.js";import"../chunk-Y2G7CU6A.js";import"../chunk-RE4LP46F.js";import"../chunk-2OAZYSWJ.js";import"../chunk-AUT242JK.js";import"../chunk-FFYXVAAL.js";import"../chunk-546BBOPE.js";import{stringsContext as o}from"../chunk-MFIRYGHW.js";import"../chunk-O2NLQBFX.js";import{useContext as t,useMemo as c}from"react";import{jsx as i}from"react/jsx-runtime";function s({value:s,locale:u,children:m}){const e=o(),p=t(e),h=p?.strings??r,j=u??p?.locale??"en",k=c(()=>({strings:n(h,s),locale:j}),[h,s,j]);/* @__PURE__ */
|
|
2
2
|
return i(e.Provider,{value:k,children:m})}function u(){return t(o())?.strings??r}function m(){return t(o())?.locale??"en"}export{s as EaselStringsProvider,m as useEaselLocale,u as useEaselStrings};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { DataInput } from './data/index.js';
|
|
2
|
-
import { I as ItemSelector, N as NodeSelection } from './plan-
|
|
2
|
+
import { I as ItemSelector, N as NodeSelection } from './plan-xc48tt77.js';
|
|
3
3
|
import { D as Data, S as SlotAddress, a as DataConfig, N as Node } from './types-41704JE4.js';
|
|
4
4
|
|
|
5
5
|
/**
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { N as Node, S as SlotAddress, D as Data, a as DataConfig, P as Place } from './types-41704JE4.js';
|
|
2
|
-
import { N as NodeSelection, A as AfterRemove, S as StepBounds } from './plan-
|
|
2
|
+
import { N as NodeSelection, A as AfterRemove, S as StepBounds } from './plan-xc48tt77.js';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* The node clipboard — what Copy and Cut hold, and Paste reads.
|
|
@@ -60,6 +60,8 @@ declare function useNodeOps(host: NodeOpsHost): {
|
|
|
60
60
|
/** Copy, then delete — the delete is the one commit. */
|
|
61
61
|
cut: (id: string, label: string) => boolean;
|
|
62
62
|
paste: (at: Place) => boolean;
|
|
63
|
+
/** Put back exactly what a delete took, at its place, selected (`planRestore`). */
|
|
64
|
+
restore: (node: Node, at: Place) => boolean;
|
|
63
65
|
/** Where "up one level" goes from `selection`, or null when there is nothing above. */
|
|
64
66
|
parentOf: (selection: NodeSelection) => NodeSelection;
|
|
65
67
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "efficient-easel",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "7.0.0",
|
|
4
4
|
"description": "Efficient Easel: the EFFICIENT editors' shared engine and chrome: the saved document as pure functions, the published renderer, and the editor frame, panels, Layers tree, text grammar and type-in-place box. Published as editor-shell up to 0.66.0 and as efficient-editor up to 0.95.0.",
|
|
5
5
|
"license": "UNLICENSED",
|
|
6
6
|
"author": "Efficient Pty Ltd",
|
|
@@ -517,7 +517,7 @@
|
|
|
517
517
|
"dist"
|
|
518
518
|
],
|
|
519
519
|
"peerDependencies": {
|
|
520
|
-
"efficient-shell": "^7.
|
|
520
|
+
"efficient-shell": "^7.24.0",
|
|
521
521
|
"react": ">=18",
|
|
522
522
|
"react-dom": ">=18"
|
|
523
523
|
},
|
|
@@ -527,7 +527,7 @@
|
|
|
527
527
|
"@types/node": "^22.0.0",
|
|
528
528
|
"@types/react": "^18.2.0",
|
|
529
529
|
"@types/react-dom": "^18.2.0",
|
|
530
|
-
"efficient-shell": "^7.
|
|
530
|
+
"efficient-shell": "^7.24.0",
|
|
531
531
|
"esbuild": "^0.27.0",
|
|
532
532
|
"jsdom": "^26.1.0",
|
|
533
533
|
"react": "^18.2.0",
|
package/dist/chunk-5PUEZ22M.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{useSectionOps as o}from"./chunk-57NRNFLO.js";import{decodePartId as e,encodePartId as r}from"./chunk-IYT6NN2J.js";import{usePreviewParts as t}from"./chunk-I54UCYOU.js";import{SELECTION_MODE as n}from"./chunk-ZR4CFNMW.js";import{useEasel as p}from"./chunk-M5VRWM7M.js";import{useCallback as d,useEffect as c}from"react";var s=o=>"part"===o.kind;function m({mode:m,setMode:i,onOpenPart:a}){const{getSelectorForId:u}=p(o=>o),I=o(),{setSelectedPartId:f,setSelectHandler:k}=t(),l=d(o=>{const r=e(o);if(!r)return;const{nodeId:t,propKey:p}=r;p?(i(o=>s(o)&&o.nodeId===t&&o.propKey===p?o:{kind:"part",nodeId:t,propKey:p}),a?.(t)):i(o=>"part"===o.kind?n:o)},[i,a]);c(()=>{k(l)},[k,l]);const N=s(m)?r(m.nodeId,m.propKey):null;c(()=>{f(N)},[N,f]);return{selectNode:d(o=>{i(()=>n);const e=u(o);e&&I.select(e)},[i,u,I]),openPartId:N}}export{m as usePartBridge};
|
package/dist/chunk-GIP45GWF.js
DELETED
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
import{dedupeSlotChildren as e}from"./chunk-26OOWIJJ.js";import{styleClipboardOf as n}from"./chunk-BXQBCW3P.js";import{markedTreeNodeId as t,revealSelectedTreeRow as o,sameSelector as r}from"./chunk-FGNR22NY.js";import{cloneNodeWithFreshIds as i}from"./chunk-2GVCAIPX.js";import{rootRowName as l,slotChildRowName as s,slotChildRenameProp as d,sectionRenameProp as a}from"./chunk-TBF5CVPA.js";import{scrollPreviewToSection as c,gotoPreviewSlide as p,scrollPreviewToTop as u}from"./chunk-4ES5JGGX.js";import{useEaselKeyTarget as f,useEaselUndoKeys as h,editorRootFocus as m}from"./chunk-UY7BCB32.js";import{SlotChildActionsProvider as g}from"./chunk-KCBEE2MC.js";import{screenStorageKeys as y,DEFAULT_PANEL_W as k,clampPanelWidth as S}from"./chunk-6TOYXESC.js";import{usePartBridge as v}from"./chunk-5PUEZ22M.js";import{useSectionOps as w}from"./chunk-57NRNFLO.js";import{useNodeClipboard as x,useNodeContextMenu as b}from"./chunk-LVUDUQNL.js";import{PageEditGuardNotices as z}from"./chunk-HQWQLDCB.js";import{useScreenDocument as B}from"./chunk-WZMU646D.js";import{requestMediaPick as C}from"./chunk-KG7RJWOK.js";import{heldStyle as N,styleShortcut as O}from"./chunk-V7U33NF2.js";import{AddChildRow as I}from"./chunk-5545A3PC.js";import{AddSidePanel as $}from"./chunk-NAGDOIW4.js";import{SidePanelHead as P,PanelShowStrip as T}from"./chunk-PFNIVZPN.js";import{MediaSidePanel as M}from"./chunk-Q2L6YTII.js";import{useScreenSaveSwitch as A,useScreenNodeKeys as j,useScreenPinned as R,useScreenDocumentLabel as L,useScreenCanvasFrame as E,useScreenInspectorPanel as V,useScreenDevices as F,useScreenPickFollowsSelection as W,useScreenLeftView as D,useScreenAdd as U,SELECTION_MODE as H,sameInspectorMode as G,useScreenBridges as J,useScreenBlockRules as Y,useScreenBlockLook as X,useScreenStorageNamespace as Q,useScreenNotify as K,useScreenCanvasHead as _,isSlotMode as q,useScreenStyleClipboard as Z,useScreenDocumentPass as ee,useScreenCanvasDrag as ne,ScreenCanvasTargetProvider as te,isPinnedFirst as oe,isPinnedLast as re,screenSlotsOf as ie}from"./chunk-ZR4CFNMW.js";import{ROOT_ZONE as le,blockNodeActions as se,TREE_MAX_DEPTH as de,childSlotsOf as ae,slotFieldsOf as ce,slotChildrenIn as pe,nestsInTree as ue,newNodeId as fe}from"./chunk-PLVEGYK6.js";import{useMediaPanel as he,usePanelPick as me,useCancelPanelPick as ge}from"./chunk-R6WTQWAC.js";import{useEaselHost as ye,useHostEscape as ke}from"./chunk-U3JP4VGF.js";import{DEFAULT_STYLE_CLIPBOARD_WORDS as Se}from"./chunk-6WY6ZXJG.js";import{DEFAULT_SCREEN_WORDS as ve}from"./chunk-MCHMF32I.js";import{useEasel as we,useEaselApi as xe}from"./chunk-M5VRWM7M.js";import{TreeRow as be,Subtree as ze,LayersTree as Be,TreeGroupLabel as Ce,TreeRowAction as Ne,TreeSeam as Oe}from"./chunk-4JSBIW5H.js";import{DEFAULT_TREE_WORDS as Ie}from"./chunk-K56YDHYQ.js";import{DEFAULT_NODE_MENU_WORDS as $e}from"./chunk-WK3AFPXY.js";import{toItemSelector as Pe,useNodeOps as Te,clickPick as Me}from"./chunk-UK2FQOUT.js";import{LayersIcon as Ae,MediaIcon as je}from"./chunk-4VJATVVR.js";import{DEFAULT_SAVE_WORDS as Re,saveIndicator as Le}from"./chunk-H6DDIBQ4.js";import{EaselTopBar as Ee,TopBarRail as Ve,TopBarCluster as Fe,EaselIconButton as We,TopBarDivider as De,DeviceSwitch as Ue,InspectorIconButton as He,PanelResizeHandle as Ge,MAX_PANEL_W as Je,MIN_PANEL_W as Ye,panelWidthVars as Xe,SaveState as Qe,SaveStateToggle as Ke}from"./chunk-UB4TLWVJ.js";import{DEFAULT_CHROME_WORDS as _e}from"./chunk-Y2G7CU6A.js";import{useWords as qe}from"./chunk-MFIRYGHW.js";import{CanvasDragLayer as Ze}from"./chunk-HFW6D46X.js";import{DEFAULT_DRAG_WORDS as en}from"./chunk-O2NLQBFX.js";import{createDragSession as nn,useTreeDrag as tn,gapToMoveIndex as on}from"./chunk-67GNT6PF.js";import{useCanvasFrame as rn,LIST_SELECTOR as ln,BLOCK_SELECTOR as sn,useCanvasEvent as dn}from"./chunk-AWJUYMX7.js";import{zoneKey as an,ROOT_ID as cn,ROOT_SLOT as pn,parseZoneKey as un,DataError as fn,find as hn}from"./chunk-KRXQM65X.js";import{useRef as mn,useMemo as gn,useState as yn,useEffect as kn,useCallback as Sn,useLayoutEffect as vn,Fragment as wn}from"react";import{Tooltip as xn,Button as bn,toast as zn}from"efficient-shell/ui";import{UndoIcon as Bn,RedoIcon as Cn,TrashIcon as Nn,EyeOffIcon as On,EyeIcon as In,DuplicateIcon as $n}from"efficient-shell/icons/efficient";import{jsx as Pn,jsxs as Tn,Fragment as Mn}from"react/jsx-runtime";function An({saveState:e,notSaving:n,readOnlyReason:t,toggle:o,onToggle:r,onRetry:i,words:l,saveWords:s}){if(null!==t)/* @__PURE__ */return Pn(Qe,{tone:"off",label:t,role:"status"});if(n)/* @__PURE__ */
|
|
2
|
-
return Pn(Qe,{tone:e.pending?"off-unsaved":"off",label:l.notSaving,role:"status"});const{tone:d,label:a}=Le(e,s),c=e.failed&&!e.paused&&/* @__PURE__ */Pn(bn,{variant:"secondary",size:"sm",onClick:i,children:l.retry});/* @__PURE__ */
|
|
3
|
-
return Tn(Mn,o?{children:[
|
|
4
|
-
/* @__PURE__ */Pn(Ke,{pressed:e.paused,onToggle:r,title:e.paused?l.autoSaveOff:l.autoSaveOn,children:/* @__PURE__ */Pn(Qe,{tone:d,label:a})}),c]}:{children:[
|
|
5
|
-
/* @__PURE__ */Pn(Qe,{tone:d,label:a,role:"status"}),c]})}function jn({expand:e}){/* @__PURE__ */
|
|
6
|
-
return Pn("svg",{width:"15",height:"15",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:1.9,strokeLinecap:"round",strokeLinejoin:"round",children:/* @__PURE__ */Tn(Mn,e?{children:[
|
|
7
|
-
/* @__PURE__ */Pn("path",{d:"M8 9l4-4 4 4"}),
|
|
8
|
-
/* @__PURE__ */Pn("path",{d:"M8 15l4 4 4-4"})]}:{children:[
|
|
9
|
-
/* @__PURE__ */Pn("path",{d:"M8 4l4 4 4-4"}),
|
|
10
|
-
/* @__PURE__ */Pn("path",{d:"M8 20l4-4 4 4"}),
|
|
11
|
-
/* @__PURE__ */Pn("path",{d:"M5 12h14"})]})})}var Rn=`${ln}, ${sn}`;function Ln(e,n,t){const o=t-n;if(o<6)return null;if(o<26)return{top:Math.round((n+t)/2),height:Math.round(o)};return{top:Math.round(Math.min(Math.max(e,n+13),t-13))}}var En="__rungs";var Vn="screen:band",Fn={duplicate:!0,delete:!0};function Wn(){const Le=ye(),{target:Qe,docId:Ke,capabilities:ln,currentSlug:Wn,siteId:Dn,onPublish:Un,saveState:Hn,saveConflict:Gn,retrySave:Jn,toggleAutoSave:Yn,readOnly:Xn,readOnlyReason:Qn=null}=B(),Kn=A(),_n=j(),{mediaEditing:qn,hasEditGuard:Zn,hasPinnedChrome:et}=ln,{appState:nt,dispatch:tt,history:ot,selectedItem:rt,getSelectorForId:it,config:lt}=we(e=>e),st=R(),{first:dt,firstGroup:at,lastGroup:ct,isSectionGroup:pt,sectionGroupZone:ut,panelOf:ft}=st,ht=ft(dt),mt=e=>oe(st,e),gt=e=>re(st,e),yt="node"===st.firstRow,kt=st.band??null,St=qe("screen",ve),vt=qe("tree",Ie),wt=qe("drag",en),xt=qe("save",Re),bt=qe("menu",$e),zt=qe("styleClipboard",Se),Bt=qe("chrome",_e),Ct=L()??`/${Wn}`,Nt=E(),Ot=V(),It=w({readOnly:Xn}),$t=w({readOnly:Xn,foldIntoHistory:!0}),Pt=mn(null),Tt=xe(),Mt=gn(()=>({...It,select:e=>{Pt.current=e,It.select(e)},commitDocument:(e,n)=>{if(void 0!==n){const t=Tt.config;Pt.current=Pe(e,t,n)}It.commitDocument(e,n)}}),[It,Tt]),At=nt.ui,jt=At.leftSideBarVisible,Rt=At.rightSideBarVisible,{options:Lt,widths:Et,initial:Vt,fluid:Ft,fit:Wt}=F(),[Dt,Ut]=yn(Vt),Ht=he(),Gt=qn&&null!==Ht,Jt=me(),Yt=ge();W(rt?.props.id);const{read:Xt,write:Qt,forSelection:Kt}=D(),[_t,qt]=yn(Xt);kn(()=>{Qt(_t)},[_t]);const[Zt,eo]=yn(0),no=mn(null),to=mn(null),oo=rn(to,{readySelector:Rn}),ro=f(to);h(to,oo);const[io,lo]=yn(!1),so=mn(!1),ao=mn(!1),[co,po]=yn(null),uo=U(),fo=e=>po(null===e?null:{zone:le,index:e}),[ho,mo]=yn([]),[go,yo]=yn(H),ko="puck"===go.kind,So=io&&!co&&uo.railTarget?uo.railTarget(nt.data,{node:rt??null,mode:go}):null,vo=So?{zone:an(So),index:So.index}:null,wo=co??vo,xo=wo&&wo.zone===le?wo.index:null,bo=t(go,rt?.props.id),[zo,Bo]=yn(null);kn(()=>{zo&&(o(),Bo(null))},[zo]);const Co=mn(it);Co.current=it;const No=Sn((e,{scroll:n})=>{qt(n=>Kt(e,n)),n&&Bo(e);const t=[];let o=e;for(let e=0;e<4;e++){const e=Co.current(o)?.zone;if(!e||!e.includes(":"))break;const n=e.split(":")[0];t.push(n),t.push(e),o=n}0!==t.length&&or(e=>{if(t.every(n=>!e.has(n)))return e;const n=new Set(e);return t.forEach(e=>n.delete(e)),n})},[]),Oo=mn(null);kn(()=>{const e=Oo.current;Oo.current=null;const n=null==rt?.props.id?null:String(rt.props.id);yo(e&&e.id===n?e.mode:ft(rt?.type)??H);const t=rt?.props.id,o=Pt.current;if(Pt.current=null,!t)return;const i=it(t);No(String(t),{scroll:!r(o,i??null,le)})},[rt?.props.id,No]);const Io=Sn(e=>{yo(n=>G(n,e)?n:e),tt({type:"setUi",ui:{rightSideBarVisible:!0}})},[tt]),$o=mn(()=>{});$o.current=(e,n)=>{const t=e?Xr(e.zone??le)[e.index]?.props.id:null,o=null==t?null:String(t),r=null==rt?.props.id?null:String(rt.props.id);yo(e=>G(e,n)?e:n),o!==r&&(Oo.current={id:o,mode:n},Mt.select(e))};const Po=Sn((e,n)=>$o.current(e,n),[]),To={kind:go.kind,mode:go,open:Io,show:e=>yo(e),reveal:()=>{Rt||tt({type:"setUi",ui:{rightSideBarVisible:!0}})},select:Po},Mo=J(To,{data:nt.data,selected:rt??null,zoneOf:e=>it(e)?.zone,readOnly:Boolean(Xn),select:e=>{yo(H),Mt.select({index:e})},replace:(e,n)=>Mt.replaceComponent(le,e,n),scrollTo:e=>Si(e)},{device:Dt,refreshes:Zt},{setView:qt,reveal:()=>{jt||tt({type:"setUi",ui:{leftSideBarVisible:!0}})}}),Ao=Mo.pinnedSource??!1,jo=Mo.resolveLeftView?Mo.resolveLeftView(_t,Gt):"media"===_t&&Gt?_t:"sections",Ro=Y(),{isLockedBlock:Lo,duplicateBlocked:Eo,nestDepth:Vo,newSectionNode:Fo,canAddTo:Wo,blockIsOffered:Do}=Ro,Uo=X(),{labelAtLevel:Ho,Icon:Go,useProducts:Jo}=Uo,Yo=Uo.rowName?(e,n,t)=>Uo.rowName(e,n,t):void 0,Xo=Sn(e=>{tt({type:"setUi",ui:{rightSideBarVisible:!0}}),c(e),No(e,{scroll:!0})},[tt,No]),{selectNode:Qo,openPartId:Ko}=v({mode:go,setMode:yo,onOpenPart:Xo}),[_o,qo]=yn(null);ke(null!==_o,()=>qo(null));const Zo=y(Q()),er=Zo.collapsed,nr=Zo.panelWidths,[tr,or]=yn(()=>{if("undefined"==typeof window)/* @__PURE__ */return new Set;try{const e=window.localStorage.getItem(er);return new Set(e?JSON.parse(e):[])}catch{/* @__PURE__ */
|
|
12
|
-
return new Set}});kn(()=>{try{window.localStorage.setItem(er,JSON.stringify([...tr]))}catch{}},[tr]);const[rr,ir]=yn(()=>{if("undefined"==typeof window)return{...k};try{const e=window.localStorage.getItem(nr);if(!e)return{...k};const n=JSON.parse(e);return{left:S(Number(n.left)||k.left),right:S(Number(n.right)||k.right)}}catch{return{...k}}});kn(()=>{const e=setTimeout(()=>{try{window.localStorage.setItem(nr,JSON.stringify(rr))}catch{}},300);return()=>clearTimeout(e)},[rr]);const lr=Sn((e,n)=>ir(t=>{const o="function"==typeof n?n(t[e]):n;return t[e]===o?t:{...t,[e]:o}}),[]),sr=Sn(e=>lr("left",e),[lr]),dr=Sn(e=>lr("right",e),[lr]),ar=e=>tr.has(e),cr=e=>or(n=>{const t=new Set(n);return t.has(e)?t.delete(e):t.add(e),t}),pr=mn(!1),ur=mn(null);kn(()=>{if(pr.current&&!io){const e=ur.current,n=e&&e.isConnected&&!e.closest('[aria-hidden="true"]')?e:null;(n??to.current?.querySelector(`button[aria-label="${CSS.escape(St.add.title)}"]`))?.focus(),ur.current=null}pr.current=io},[io]),kn(()=>{if(!io||!ro)return;const e=e=>{"Escape"===e.key&&Oi()};return ro.addEventListener("keydown",e),()=>ro.removeEventListener("keydown",e)},[io,ro]),ke(io,()=>Oi()),kn(()=>{!jt&&io&&(lo(!1),po(null),so.current=!1)},[jt]),kn(()=>{if(!Jt)return ao.current&&tt({type:"setUi",ui:{leftSideBarVisible:!1}}),void(ao.current=!1);io&&(lo(!1),po(null),ao.current=so.current,so.current=!1),jt||(ao.current=!0,tt({type:"setUi",ui:{leftSideBarVisible:!0}}))},[Jt]),kn(()=>{!jt&&Jt&&(ao.current=!1,Yt())},[jt]),kn(()=>{if(!Jt||!ro)return;const e=e=>{"Escape"===e.key&&Yt()};return ro.addEventListener("keydown",e),()=>ro.removeEventListener("keydown",e)},[Jt,ro]),ke(null!==Jt,()=>Yt());const fr=K(),hr=(e,n="success")=>{fr?fr(e,"error"===n?"error":"info"):"error"===n?zn.error(e,{duration:3200,sound:!1}):zn.success(e,{duration:1900,sound:!1})},mr=mn(null),[gr,yr]=yn(0),[kr,Sr]=yn(0),vr=_(),wr=mn(null),xr=e=>Math.max(0,e.clientHeight-(wr.current?.offsetHeight??0));kn(()=>{const e=mr.current;if(!e)return;const n=()=>{yr(e.clientWidth),Sr(xr(e))};n();const t=new ResizeObserver(n);return t.observe(e),wr.current&&t.observe(wr.current),()=>t.disconnect()},[]),vn(()=>{mr.current&&(yr(mr.current.clientWidth),Sr(xr(mr.current)))},[rr,jt,Rt]);const br=Dt===Ft?gr>0?gr:Et[Ft]:Et[Dt],zr=gr>0?Math.min(gr/br,"shrink"===Wt?1:2):1,Br=br*zr,Cr=gr>0&&Br>gr+1,Nr={width:Br,height:kr||"100%",flex:"none",position:"relative"},Or={width:br,height:kr?kr/zr:"100%",maxHeight:"none",transform:1!==zr?`scale(${zr})`:void 0,transformOrigin:"top left"},Ir=()=>tt({type:"setUi",ui:{leftSideBarVisible:!jt}}),$r=()=>tt({type:"setUi",ui:{rightSideBarVisible:!Rt}}),Pr=e=>{io&&(lo(!1),po(null),so.current=!1,jt&&_t===e)||Jt&&(ao.current=!1,Yt(),jt&&_t===e)||(jt&&_t===e?Ir():(qt(e),jt||tt({type:"setUi",ui:{leftSideBarVisible:!0}})))},Tr=()=>{C(Le,{accept:"image/*",title:Bt.mediaLibrary})},Mr=()=>{yo(H),Mt.select(null),u()},Ar=()=>{yo(ht??H),Rt||tt({type:"setUi",ui:{rightSideBarVisible:!0}})},jr=nt.data.content??[],Rr=()=>{const e=jr.findIndex(mt),n=jr.findIndex(gt);return{floor:e>=0?e+1:0,cap:n>=0?n:jr.length}},Lr=lt,Er=Ro.stripCopy,Vr=e=>i(e,Er),Fr=x(),Wr=Te({data:nt.data,config:Lr,readOnly:Boolean(Xn),clipboard:Fr,strip:Er?e=>Er(e):void 0,afterRemove:"none",stepBounds:(e,n)=>{if(e.parentId!==cn||e.slot!==pn)return{min:0,max:n-1};const{floor:t,cap:o}=Rr();return{min:t,max:o-1}},commit:(e,{select:n})=>{void 0!==n&&yo(H);const t=void 0===n||"node"===n?.kind?n:null;Mt.commitDocument(e,t)}}),Dr=e=>Ho(e,"block",lt.components[e]?.label??e),Ur=Sn(e=>lt.components[e]?.defaultProps??{},[lt]),Hr=e=>Ho(e,"section",Dr(e)),Gr=e=>l({type:e.type,props:e.props??{}},Hr(e.type),Yo),{nodeAddresses:Jr,zoneItems:Yr}=gn(()=>{const e=/* @__PURE__ */new Map,n=/* @__PURE__ */new Map,t=(o,r,i)=>{n.set(r,o),o.forEach((n,o)=>{const l=String(n.props?.id??"");if(l&&e.set(l,{zone:r,index:o}),i>=de)return;const s=/* @__PURE__ */new Map;for(const{child:e,zone:t}of ae(lt,n))s.set(t,[...s.get(t)??[],e]);for(const[e,n]of s)t(n,e,i+1)})};return t(jr,le,0),{nodeAddresses:e,zoneItems:n}},[jr,lt]),Xr=Sn(e=>Yr.get(e)??[],[Yr]),Qr=e=>{const n=Jr.get(e);return n?Xr(n.zone)[n.index]:void 0},Kr=e=>ie(Ro,lt,e),_r=e=>{if(!Ro.slotsOf||e===le)return null;const n=e.lastIndexOf(":");if(n<=0)return null;const t=Qr(e.slice(0,n));if(!t)return null;const o=Kr(t).filter(e=>e.rung),r=o.findIndex(t=>t.slot===e.slice(n+1));return r<0?null:{node:t,slot:o[r],position:r}},qr=(()=>{if(!q(go))return null;const e=`${go.nodeId}:${go.slot}`;return _r(e)?.slot.panel===go.kind?e:null})(),Zr=mn(null);kn(()=>{const e=Zr.current;if(Zr.current=null,!qr||!q(go))return;const n=go.nodeId;No(n,{scroll:e!==qr}),or(e=>{if(!e.has(n))return e;const t=new Set(e);return t.delete(n),t})},[go]);const ei=(e,n,t)=>{const o=String(e.props.id);if(!n.panel)return void(e=>{const n=Jr.get(e);n&&(n.zone===le?vi(n.index):Ki(n.zone,n.index,e,Qr(n.zone.slice(0,n.zone.lastIndexOf(":")))?.type??""))})(o);const r={kind:n.panel,nodeId:o,slot:n.slot},i=`${o}:${n.slot}`;t&&qr!==i&&(Zr.current=i),Po(null,r),Rt||tt({type:"setUi",ui:{rightSideBarVisible:!0}}),Si(o)},ni=(e,n,t)=>{const o=`${e}:${n}`;if(or(n=>{if(!n.has(o)&&!n.has(e))return n;const t=new Set(n);return t.delete(o),t.delete(e),t}),!t)return;qr!==o&&(Zr.current=o);Po(null,{kind:t,nodeId:e,slot:n})},ti=(e,n,t)=>{if(Xn||!Ro.moveSlot)return;const o=Qr(e),r=o?Kr(o).filter(e=>e.rung):[],i=r[n];if(!i)return;const l={parentId:e,slot:En,index:n},s=on(l,{...l,index:Math.min(Math.max(t,0),r.length)});if(s===n)return;const d=Ro.moveSlot(e,n,s);"string"==typeof d&&ni(e,d,i.panel)},oi=Jo(),ri=gn(()=>{const e=/* @__PURE__ */new Map;for(const n of oi??[])e.set(n.slug,n.name);return e},[oi]),ii=e=>s(e,Dr,Uo.plainText,e=>ri.get(e),Uo.rowName),li=(e,n)=>{const t=lt.components[e.type]?.fields,o=n===le||hl(n)?"section":"block",r=n===le&&(mt(e)||gt(e)||pt(e.type)),i="block"===o?d(t):r?null:a(t);return Uo.renamePropOf?Uo.renamePropOf(e,o,i):i},si=(e,n,t,o)=>{if(!(!Xn&&_o?.zone===e&&_o.index===n))return;const r=(t,o)=>{qo(null),o&&((e,n,t)=>{const o=Xr(e)[n];if(!o)return;const r=li(o,e);r&&Mt.replaceComponent(e,n,{...o,props:{...o.props,[r]:t.trim()}})})(e,n,t)};/* @__PURE__ */
|
|
13
|
-
return Pn("input",{className:"es-tree-rename",defaultValue:o,autoFocus:!0,"aria-label":St.rename,onClick:e=>e.stopPropagation(),onBlur:e=>r(e.currentTarget.value,!0),onKeyDown:e=>{"Enter"===e.key?(e.preventDefault(),r(e.currentTarget.value,!0)):"Escape"===e.key&&(e.preventDefault(),r("",!1))}},t)},di=n(Z(),zt),ai=di.scope({target:Qe,siteId:Dn,docId:Ke}),ci=lt,pi=(e,n)=>n===le?Hr(e):Dr(e),ui=(e,n,t)=>{const o=di.plan(ai,t,pi(t.type,e),ci);o&&(o.changed&&Mt.replaceComponent(e,n,{...t,props:{...o.props,id:t.props.id}}),hr(o.message))},fi=b({nodesIn:Xr,nodeAt:(e,n)=>Xr(e)[n]??null,labelOf:(e,n)=>n===le?Hr(e):Dr(e),renamePropOf:li,beginRename:(e,n)=>qo({zone:e,index:n}),history:{hasPast:ot.hasPast,hasFuture:ot.hasFuture,back:()=>ot.back(),forward:()=>ot.forward()},openAddSection:()=>{Mt.select(null),Ci(null)},openPageSettings:()=>{Mt.select(null),yo(H)},pageSettingsLabel:St.pageSettings,words:{menu:bt,styleClipboard:zt,screen:St.menu},readOnly:Boolean(Xn),collapseAll:()=>or(new Set(Xr(le).map(e=>String(e.props.id)))),onPasteRefused:e=>hr(e?St.pasteRefused({name:e.label}):St.menu.clipboardRefused,"error"),canPasteAt:(e,n)=>gl(e,n),menuRows:Mo.menuRows,isLocked:e=>Lo(e.type),duplicateBlocked:e=>Eo(nt.data,e),permits:e=>se(lt,e.type),canAddTo:Wo,nodeOps:Wr,isPinned:(e,n)=>n===le&&(mt(e)||gt(e)),sectionBand:Rr,openAddInside:(e,n)=>{e===le?vi(n):Mt.select({zone:e,index:n}),Ci(null)},locate:e=>Jr.get(e)??null,rowNameOf:(e,n)=>n===le?Gr(e):ii(e),selectAt:(e,n,t,o)=>{e===le?vi(n):Ki(e,n,t,o??"")},slotRung:e=>{const n=_r(e);return n?.slot.panel?{label:n.slot.label,select:()=>ei(n.node,n.slot,!1)}:null},style:{held:()=>N(ai),canCopy:e=>di.rows(ci,e).some(e=>!1!==e.counted),copy:(e,n)=>di.copy(ai,e,pi(e.type,n),ci),paste:(e,n,t)=>ui(e,n,t)},keys:_n?{target:ro,selected:()=>{const e=nt.ui.itemSelector;return e?{zone:e.zone??le,index:e.index}:null},held:()=>Fr.get(),readOnly:Boolean(Xn),onDone:({done:e,name:n})=>{"copied"===e&&hr(St.copied({name:n}))}}:void 0},oo),hi=mn({copy:(e,n)=>{},paste:(e,n,t)=>{},at:()=>null,readOnly:!1});kn(()=>{hi.current={copy:(e,n)=>di.copy(ai,e,pi(e.type,n),ci),paste:ui,at:()=>{const e=nt.ui.itemSelector;if(!e)return null;const n=e.zone??le,t=Xr(n)[e.index];return t?{zone:n,index:e.index,node:t}:null},readOnly:Boolean(Xn)}});const mi=Sn(e=>{const n=O(e);if(!n)return;const t=hi.current,o=t.at();o&&(e.preventDefault(),"copy"===n?t.copy(o.node,o.zone):t.readOnly||t.paste(o.zone,o.index,o.node))},[]);kn(()=>{if(!ro)return;const e=e=>mi(e);return ro.addEventListener("keydown",e),()=>ro.removeEventListener("keydown",e)},[mi,ro]),dn(oo,"keydown",mi);const gi=jr.map(e=>e.props.id).join("|");kn(()=>{const e=oo?.document??null,n=oo?.window??null;let t=0;const o=[],r=()=>{if(!e)return void mo(e=>e.length?[]:e);const n=jr.findIndex(gt),t=n>=0?n:jr.length,o=n=>{const t=jr[n]?.props?.id;return null==t?null:e.querySelector(`[data-puck-component="${CSS.escape(String(t))}"]`)},r=e=>e?[...e.querySelectorAll(sn)].map(e=>e.getBoundingClientRect()).filter(e=>e.width>0||e.height>0):[],i=[];for(let e=1;e<=t;e++){const n=o(e),t=o(e-1),l=n?.getBoundingClientRect()??null,s=t?.getBoundingClientRect()??null;if(!l&&!s)continue;const d=Ln(l&&s?(s.bottom+l.top)/2:l?l.top:s.bottom,Math.max(-1/0,...r(t).map(e=>e.bottom)),Math.min(1/0,...r(n).map(e=>e.top)));d&&i.push({...d,index:e})}mo(e=>function(e,n){if(e.length!==n.length)return!1;for(let t=0;t<e.length;t++)if(e[t].top!==n[t].top||e[t].index!==n[t].index||e[t].height!==n[t].height)return!1;return!0}(e,i)?e:i)},i=()=>{cancelAnimationFrame(t),t=requestAnimationFrame(r)};if(!e||!n)return void r();n.addEventListener("scroll",i,{passive:!0});const l=new ResizeObserver(i);return l.observe(e.documentElement),r(),o.push(setTimeout(r,150),setTimeout(r,450)),()=>{cancelAnimationFrame(t),o.forEach(clearTimeout),n.removeEventListener("scroll",i),l.disconnect()}},[oo,gi,Dt,zr,jt,Rt,rt?.props.id]);const yi=oo?.document??null,ki=oo?.window??null;kn(()=>{const e=no.current;if(!e||!yi||!ki)return;const n=[],t=()=>{const n=yi.querySelector(`[data-puck-component="${CSS.escape(e.id)}"]`);if(!n)return!1;const t=n.getBoundingClientRect().top-e.offset;return Math.abs(t)>1&&ki.scrollTo({left:ki.scrollX,top:ki.scrollY+t,behavior:"instant"}),!0};return no.current=null,t()&&n.push(setTimeout(t,150),setTimeout(t,450)),()=>n.forEach(clearTimeout)},[yi,ki]);const Si=e=>{Mo.holdCanvasOn?Mo.holdCanvasOn(e):c(e)},vi=e=>{yo(H),Mt.select({index:e}),Mo.sectionPressed?.(jr[e]);const n=jr[e]?.props?.id;n&&Si(n)},wi=e=>{const{floor:n,cap:t}=Rr(),o=e=>Math.min(Math.max(n,e),t);if("number"==typeof e)return o(e);const r=rt&&go.kind!==ht?.kind?jr.findIndex(e=>e.props.id===rt.props.id):-1;return o(r>=0?r+1:t)},xi=(e,n)=>{const{floor:t,cap:o}=Rr(),r=Math.min(Math.max(n,t),o),i=e<r?r-1:r;return i===e?{moved:!1,dest:e}:(Mt.reorderComponent(le,e,i),Mt.select({index:i}),{moved:!0,dest:i})},bi=(e,n,t,o)=>{yo(H),Mt.select(o?{index:o.index,zone:o.zone}:{index:e}),c(n),hr(St.sectionAdded({name:t}))},zi=(e,n)=>{const t=wi(n),o=Fo(e,{nodeDefaults:Ur,newNodeId:fe,sectionLabel:Hr,blockIsOffered:Do}),r=o?Mt.insertNode(le,t,o):Mt.insertSection(e,t);return bi(t,r,Hr(e),o?((e,n,t)=>{if(e.type===t)return null;const o={at:null},r=(e,n,i)=>{const l=i.filter(n=>n===e.type).length;for(const{child:s,zone:d,index:a}of ae(lt,e)){if(s.type===t&&(!o.at||n>o.at.depth)){const r=Wo(e.type,l,d.slice(d.lastIndexOf(":")+1)),i=r?.choices??(r?.spec?[{type:r.spec.childType,label:r.spec.childType}]:[]);null!==r&&"footer"!==r.source&&`${e.props.id}:${r.slot}`===d&&i.some(e=>e.type===t)&&(o.at={zone:d,index:a,depth:n})}r(s,n+1,[...i,e.type])}};return r({type:e.type,props:{...e.props,id:n}},1,[]),o.at?{zone:o.at.zone,index:o.at.index}:null})(o,r,e):null),t},Bi=(e,n,t)=>{const o=wi(t),r=Mt.insertNode(le,o,n);return bi(o,r,e),o},Ci=e=>Ni(le,e),Ni=(e,n)=>{ur.current=document.activeElement??null,Jt&&(so.current=ao.current,ao.current=!1,Yt()),po(null===n?null:{zone:e,index:n}),lo(!0),jt||(so.current=!0,tt({type:"setUi",ui:{leftSideBarVisible:!0}}))},Oi=()=>{lo(!1),po(null),so.current&&tt({type:"setUi",ui:{leftSideBarVisible:!1}}),so.current=!1},Ii=(e,n,t)=>{if("section"===e.kind)Mt.insertComponent(n,e.type,t);else{if("template"!==e.kind)return;Mt.insertNode(n,t,Vr(e.template.node))}yo(H),Mt.select({index:t,zone:n})},$i=(e,n)=>Uo.rowName?n?mt(e)?Uo.rowName(e,"section",St.header):gt(e)?Uo.rowName(e,"section",St.footer):pt(e.type)?Uo.rowName(e,"section",Dr(e.type)):Gr(e):ii(e):n?Hr(e.type):Dr(e.type),Pi=e=>n=>{e()},Ti=()=>Mo.editPinnedSource?.(),Mi=(e,n,t)=>{if(Xn)return null;const o=Xr(e)[n];return o&&!se(lt,o.type).delete?null:/* @__PURE__ */Pn(Ne,{kind:"delete",label:St.deleteNamed({name:t}),onClick:()=>((e,n)=>{const t=Xr(e)[n]?.props?.id;null!=t&&Wr.remove(String(t))})(e,n),children:/* @__PURE__ */Pn(Nn,{size:15})})},Ai=e=>Uo.rowPreview?.(e)||void 0,ji=e=>Uo.rowMarks?.(e)??void 0,Ri=(e,n,t)=>Uo.rowActions?.(e,n,t)??null,Li=(e,n,t,o)=>{if(Xn)return null;const r=Boolean(t.props._hidden);/* @__PURE__ */
|
|
14
|
-
return Pn(Ne,{kind:"eye",label:r?St.showNamed({name:o}):St.hideNamed({name:o}),onClick:()=>Vi(e,n,t),children:/* @__PURE__ */Pn(r?On:In,{size:14,strokeWidth:1.8,strokeLinecap:void 0,strokeLinejoin:void 0})})},Ei=e=>{const n=Hr(jr[e]?.type??""),t=n?St.addSectionBefore({name:n}):St.addSectionHere;return El(le,e,()=>Ci(e),t)},Vi=(e,n,t)=>{Mt.replaceComponent(e,n,{...t,props:{...t.props,_hidden:!t.props._hidden}})},Fi=e=>ce(lt,e),Wi=e=>ae(lt,e),Di=e=>Ro.slotsOf?Kr(e).map(n=>({slot:n.slot,rung:n.rung?n:null,kids:pe(e,n.slot)})):[{slot:null,rung:null,kids:Wi(e)}],Ui=e=>Ro.slotsOf?Di(e).flatMap(e=>e.kids):Wi(e),Hi=e=>Boolean(Ro.slotsOf)&&Kr(e).some(e=>e.rung),Gi=(e,n,t)=>null===t?void 0===n?Wo(e):Wo(e,n):Wo(e,n,t),Ji=(e,n,t)=>{const o=ue(lt,e.type,n)&&(t||Ui(e).length>0||Hi(e));return{collapsible:o,folded:o&&ar(String(e.props.id))}},Yi=(e,n,t)=>Di(e).flatMap(o=>{const r=o.rung?n+1:n,i=o.kids.flatMap(({child:e})=>Ji(e,r,t(e.type)).collapsible?[String(e.props.id),...Yi(e,r+1,t)]:[]);return o.rung?[`${e.props.id}:${o.rung.slot}`,...i]:i}),Xi=e=>Ui(e).length>0||Hi(e)||Boolean(Wo(e.type)),Qi=e=>Boolean(Wo(e)),Ki=(e,n,t,o)=>{if(yo(H),Wo(o)?.spec?.slider){const t=e.split(":")[0];p(t,n),Mt.select({index:n,zone:e}),c(t)}else Mt.select({index:n,zone:e}),Si(t)},_i=(e,n,t,o,r)=>{const i=`${e}:${n}`;Mt.insertComponent(i,t,o),Wo(r)?.spec?.slider?requestAnimationFrame(()=>{p(e,o),Mt.select({index:o,zone:i})}):Mt.select({index:o,zone:i})},qi=(e,n,t)=>{Mt.insertComponent(e,n,t),yo(H),Mt.select({index:t,zone:e})},Zi=mn(/* @__PURE__ */new Set);kn(()=>{jr.forEach(e=>{const n=Wo(e.type)?.spec;if(!n)return;const t=e.props.id;if(Zi.current.has(t))return;Zi.current.add(t);if((Array.isArray(e.props[n.slot])?e.props[n.slot]:[]).length>0)return;if(n.skipSeed?.(e.props))return;const o=`${t}:${n.slot}`,r=n.legacy?.(e.props)??[];(r.length?r:n.seeds(Ur)).forEach((e,t)=>$t.seedChild(o,t,n.childType,e))})},[jr,$t,Ur]);const el=mn(/* @__PURE__ */new Set);kn(()=>{jr.forEach((n,t)=>{const o=n.props.id;if(el.current.has(o))return;const r=e(n,Fi(n.type));el.current.add(o),r&&$t.replaceComponent(le,t,{...n,props:r})})},[jr,$t]),ee($t,lt);const nl=jr.findIndex(gt),tl=nl>=0?jr[nl]:null,ol=yt?jr.findIndex(mt):-1,rl=ol>=0?jr[ol]:null,il=jr.find(e=>e.type===at)??null,ll=jr.find(e=>e.type===ct)??null,sl=nl>=0?nl:jr.length,dl=[];jr.forEach(e=>{gt(e)||(Xi(e)&&dl.push(String(e.props.id)),dl.push(...Yi(e,1,Qi)))}),tl&&(dl.push(String(tl.props.id)),dl.push(...Yi(tl,1,Qi)));const al=dl.length>0&&dl.every(e=>tr.has(e)),cl=e=>{const n=Uo.blockRowName(e,Dr);return Uo.rowName?Uo.rowName(e,"block",n):n},pl=(e,n,t,o)=>{const r=Xr(e)[t];if(!r)return;const i={...un(e),index:t},l={...un(n),index:Math.min(Math.max(o,0),Xr(n).length)},s=on(i,l);if(e!==n||s!==t)try{Wr.move(String(r.props.id),{...l,index:s})}catch(e){if(!(e instanceof fn))throw e}},ul=e=>{const n=/* @__PURE__ */new Set,t=e=>{for(const{child:o,zone:r}of Wi(e))n.add(r),t(o)};for(const t of Fi(e.type))n.add(`${e.props.id}:${t}`);return t(e),n},fl=e=>{let n=e.slice(0,e.indexOf(":"));for(let e=0;e<64;e++){const e=Jr.get(n);if(!e)return null;if(e.zone===le)return n;n=e.zone.slice(0,e.zone.indexOf(":"))}return null},hl=e=>{const n=e.slice(0,e.indexOf(":")),t=jr.find(e=>pt(e.type)&&String(e.props.id)===n);return t&&ut(n)===e?t:null},ml=(e,n,t)=>{if(e.rung){const t=Qr(e.rung.nodeId),o=t?Kr(t).filter(e=>e.rung).length:0;return n.parentId===e.rung.nodeId&&n.slot===En&&n.index>=0&&n.index<=o}if(n.slot===En)return!1;if(e.add)return kl(e.add,n);const o=an(n);if(pt(e.type))return!1;const r=hl(o),i=hl(e.zone);if(r||i)return!(!r||!i)&&(n.index>=0&&n.index<=Xr(o).length);if(e.zone===le||o===le){if(e.zone!==o)return!1;const{floor:t,cap:r}=Rr();return n.index>=t&&n.index<=r}if(n.index<0||n.index>Xr(o).length)return!1;if(e.zone===o)return!0;const l=tl&&!st.lastIsOpen?String(tl.props.id):null;return(!l||fl(e.zone)!==l&&fl(o)!==l)&&((e,n,t,o)=>{if(e===n)return!0;const r=o??Xr(e)[t];if(!r)return!1;const i=n.split(":")[0],l=Jr.get(i),s=l?Xr(l.zone)[l.index]:void 0;if(!s)return!1;if(!o&&ul(r).has(n))return!1;const d=Wo(s.type,Vo(nt?.data,s.type,i),n.slice(n.lastIndexOf(":")+1));return!!d&&(!!(d.choices?d.choices.some(e=>e.type===r.type):d.spec?.childType===r.type)&&!d.spec?.addBlocked?.(Xr(n),r))})(e.zone,o,e.index,t)},gl=(e,n)=>{const t=an(e.from);if(t===an(n))return!0;const o=e.node;return ml({id:String(o.props?.id??""),zone:t,index:-1,type:o.type},n,o)},yl=e=>{const n=e.slice(0,e.indexOf(":")),t=Jr.get(n),o=t?Xr(t.zone)[t.index]:void 0;if(!t||!o)return null;const r=Wo(o.type,Vo(nt?.data,o.type,n),e.slice(e.lastIndexOf(":")+1));if(!r||`${n}:${r.slot}`!==e)return null;if("footer"===r.source)return null;const i=r.choices??(r.spec?[{type:r.spec.childType,label:Dr(r.spec.childType)}]:[]),l=_r(e);return{parent:o,parentId:n,target:r,choices:i,parentName:l?l.slot.label:$i(o,t.zone===le)}},kl=(e,n)=>{const t=an(n);if("block"!==e.kind){if(hl(t))return n.index>=0&&n.index<=Xr(t).length;if(t!==le)return!1;const{floor:e,cap:o}=Rr();return n.index>=e&&n.index<=o}if(t===le)return!1;const o=yl(t);return!(!o||!o.choices.some(n=>n.type===e.type))&&!o.target.spec?.addBlocked?.(Xr(t))},Sl=(e,n)=>{e.rung?ti(e.rung.nodeId,e.index,n.index):e.add?((e,n)=>{if("block"!==e.kind&&hl(an(n)))return void Ii(e,an(n),n.index);if("section"===e.kind)return void zi(e.type,n.index);if("template"===e.kind)return void Bi(e.template.name,Vr(e.template.node),n.index);const t=an(n),o=yl(t);o&&(o.target.spec?_i(o.parentId,o.target.slot,e.type,n.index,o.parent.type):qi(t,e.type,n.index))})(e.add,n):e.zone===le?xi(e.index,n.index):pl(e.zone,an(n),e.index,n.index)},[vl]=yn(()=>nn()),wl=tn({keyOf:e=>e.id,readOnly:Boolean(Xn),session:vl,canDrop:ml,onDrop:Sl,onStep:(e,n)=>{e.rung?ti(e.rung.nodeId,e.index,n<0?e.index-1:e.index+2):e.zone===le?((e,n)=>{const t=Hr(jr[e]?.type??""),o=xi(e,n<0?e-1:e+2);if(!o.moved)return void hr(n<0?St.sectionFirst({name:t}):St.sectionLast({name:t}));const{floor:r,cap:i}=Rr();hr(St.sectionMoved({name:t,n:o.dest-r+1,total:i-r}))})(e.index,n):pl(e.zone,e.zone,e.index,n<0?e.index-1:e.index+2)}}),xl=Sn(e=>{const{floor:n,cap:t}=Rr(),o=[];for(const r of e.nodes){const e=an(r.place),i=Xr(e)[r.place.index];if(!i||String(i.props.id)!==r.id)continue;if(mt(i)||gt(i)||Lo(i.type))continue;if(pt(i.type))continue;const l=Boolean(hl(e)),s=e===le||l;e===le&&t-n<2||o.push({key:r.id,item:{id:r.id,zone:e,index:r.place.index,type:i.type},box:r.box,label:s?Hr(i.type):ii(i),from:r.place})}return{sources:o,zones:e.zones.flatMap(e=>{const n=an(e.list);return n===le&&0===e.children.length?[{...e,addLabel:St.addSection,addAlways:!0}]:e.children.length>0||Boolean(yl(n)?.choices.length)||Boolean(hl(n))?[e]:[]})}},[nt.data]),bl=null==rt?.props.id?null:String(rt.props.id),zl=Sn(e=>{const n=lt,t=e=>!e.item.rung&&null!==hn(nt.data,n,e.item.id),o=e[e.length-1];if(!t(o))return o;const r=n=>e.find(e=>t(e)&&e.item.id===n),i=r(bl);return i||(r(Me(nt.data,n,o.item.id,bl))??o)},[nt.data,lt,bl]),Bl=e=>{yo(H),Mt.select(e.zone===le?{index:e.index}:{index:e.index,zone:e.zone})},Cl=ne(),Nl=()=>({data:nt.data,device:Dt,ops:Mt,inspector:To}),Ol=Cl?.model,Il=gn(()=>Ol?e=>Ol(e,xl(e),Nl()):xl,[Ol,xl,Dt]),$l=Cl?.measure,Pl=$l?(e,n)=>$l(e,n,Nl()):void 0,Tl=Cl?.canDrop,Ml=Tl?(e,n)=>Tl(e,n,ml,Nl()):ml,Al=Cl?.drop,jl=Al?(e,n)=>Al(e,n,Sl,Nl()):Sl,Rl=Cl?.pick,Ll=Rl?e=>Rl(e,Bl,Nl()):Bl,El=(e,n,t,o)=>/* @__PURE__ */Pn(Oe,{...Xn?{}:wl.seam({place:{...un(e),index:n}}),onAdd:Xn?void 0:t,label:o},`seam:${e}:${n}`),Vl={rowClick:Pi,isCollapsed:ar,toggleCollapse:cr},Fl=e=>{const n=String(e.props.id),t=jr.findIndex(e=>String(e.props.id)===n),o=ut(n),r=Xr(o),i=ar(n),l=Dr(e.type),s=Uo.rowName?Uo.rowName(e,"section",l):l,d=e=>El(o,e,()=>Ni(o,e),St.addSectionHere);/* @__PURE__ */
|
|
15
|
-
return Tn(Mn,{children:[
|
|
16
|
-
/* @__PURE__ */Pn(be,{words:vt,icon:/* @__PURE__ */Pn(Go,{type:e.type,size:13}),name:s,preview:Ai(e),marks:ji(e),onSelect:()=>vi(t),nameSlot:si(le,t,n,s),selected:bo===n,actions:Ri(e,le,t)??void 0,rowProps:{"data-node-id":n,onClick:Pi(()=>vi(t))},fold:{open:!i,label:"section",onToggle:()=>cr(n)}}),!i&&/* @__PURE__ */Tn(ze,{children:[r.map((n,t)=>{const r=String(n.props.id),i=Gr(n),l=Xi(n),s=l&&ar(r),a=()=>Ki(o,t,r,e.type),{rowProps:c,...p}=wl.row({item:{id:r,zone:o,index:t,type:n.type},place:{...un(o),index:t}},{"data-node-id":r,onClick:Pi(a)});/* @__PURE__ */
|
|
17
|
-
return Tn(wn,{children:[d(t),
|
|
18
|
-
/* @__PURE__ */Pn(be,{words:vt,icon:/* @__PURE__ */Pn(Go,{type:n.type,size:13}),name:i,preview:Ai(n),marks:ji(n),onSelect:a,nameSlot:si(o,t,r,i),selected:bo===r,hidden:Boolean(n.props._hidden),...p,fold:l?{open:!s,label:"section",onToggle:()=>cr(r)}:void 0,actions:/* @__PURE__ */Tn(Mn,{children:[Mi(o,t,i),Ri(n,o,t),Li(o,t,n,i)]}),rowProps:c}),l&&!s&&/* @__PURE__ */Pn(ze,{children:Ul(n,2)})]},r)}),d(r.length)]})]})},Wl=(e,n,t,o,r)=>{const i=String(e.props.id),l=`${i}:${n.slot}`,s=wl.dragging,d=!ar(l)&&s?.rung?.nodeId!==i,a={...un(l),index:0},c=s&&!s.rung&&ml(s,a)?a:void 0,p=()=>ei(e,n,!0),{rowProps:u,...f}=wl.row({item:{id:`rung:${l}`,zone:`${i}:${En}`,index:t,type:e.type,rung:{nodeId:i,slot:n.slot}},place:{parentId:i,slot:En,index:t},into:c,canDrag:Boolean(Ro.moveSlot)&&!1!==n.movable&&o>1},{"data-slot-zone":l,onClick:Pi(p)}),h=Xn?null:Ro.slotActions?.(e,n.slot);/* @__PURE__ */
|
|
19
|
-
return Tn(wn,{children:[n.heading,
|
|
20
|
-
/* @__PURE__ */Pn(be,{words:vt,icon:n.glyph??null,name:n.label,badge:n.badge,onSelect:p,selected:qr===l,...f,dragHint:n.dragHint,fold:{open:d,label:n.label,onToggle:()=>cr(l)},actions:h&&h.length>0?/* @__PURE__ */Pn(Mn,{children:h.map((t,o)=>/* @__PURE__ */Pn(Ne,{kind:"delete"===t.kind?"delete":"plain",label:t.label,disabled:t.disabled,onClick:()=>((e,n,t)=>{if(Xn||t.disabled)return;const o=String(e.props.id),r=e=>{"string"==typeof e&&ni(o,e,n.panel)},i=t.run();i&&"function"==typeof i.then?i.then(r):r(i)})(e,n,t),children:"delete"===t.kind?/* @__PURE__ */Pn(Nn,{size:15}):/* @__PURE__ */Pn($n,{size:15})},`${o}:${t.kind}`))}):void 0,rowProps:u}),d&&/* @__PURE__ */Pn(ze,{children:r})]},l)},Dl=(e,n)=>{const t=Di(e),o=t.filter(e=>e.rung).length;let r=0;/* @__PURE__ */
|
|
21
|
-
return Pn(Mn,{children:t.map(t=>{const i=t.kids,l=t.rung?n+1:n,s=Gi(e.type,void 0,t.slot),d=s?`${e.props.id}:${s.slot}`:null,a=null===t.slot?null:`${e.props.id}:${t.slot}`,c=null!==a&&Boolean(yl(a)?.choices.length),p=(e,n)=>c?El(e,n,()=>Ni(e,n),St.addBlockHere):El(e,n),u=/* @__PURE__ */Tn(Mn,{children:[i.map(({child:n,zone:t,index:o})=>{const r=bo===String(n.props.id),{collapsible:i,folded:s}=Ji(n,l,Qi(n.type)),d=String(n.props.id),a=cl(n),c=()=>Ki(t,o,d,e.type),{rowProps:u,...f}=wl.row({item:{id:d,zone:t,index:o,type:n.type},place:{...un(t),index:o}},{"data-node-id":d,onClick:Pi(c)});/* @__PURE__ */
|
|
22
|
-
return Tn(wn,{children:[0===o&&p(t,0),
|
|
23
|
-
/* @__PURE__ */Pn(be,{words:vt,icon:/* @__PURE__ */Pn(Go,{type:n.type,size:13}),name:a,preview:Ai(n),marks:ji(n),onSelect:c,nameSlot:si(t,o,d,a),selected:r,hidden:Boolean(n.props._hidden),...f,fold:i?{open:!s,label:"group",onToggle:()=>cr(d)}:void 0,actions:/* @__PURE__ */Tn(Mn,{children:[Mi(t,o,a),Ri(n,t,o),Li(t,o,n,a)]}),rowProps:u}),i&&!s&&/* @__PURE__ */Pn(ze,{children:Dl(n,l+1)}),p(t,o+1)]},String(n.props.id??`${t}-${o}`))}),null===a?d&&!i.some(e=>e.zone===d)?p(d,0):null:0!==i.length||!t.rung&&d!==a?null:p(a,0)]});return t.rung?Wl(e,t.rung,r++,o,u):/* @__PURE__ */Pn(wn,{children:u},t.slot??"")})})},Ul=(e,n)=>{const t=Vo(nt?.data,e.type,String(e.props.id)),o=Di(e),r=o.filter(e=>e.rung).length;let i=0;/* @__PURE__ */
|
|
24
|
-
return Pn(Mn,{children:o.map(o=>{const l=o.kids,s=o.rung?n+1:n,d=Gi(e.type,t,o.slot),a=d?.spec??null,c=a&&Array.isArray(e.props[a.slot])?e.props[a.slot]:[],p=d&&d.choices?{slot:d.slot,choices:d.choices}:null,u=String(e.props.id),f=a&&!a.fixed?`${u}:${a.slot}`:null,h=p?`${u}:${p.slot}`:null,m=(n,t)=>{const o=n===f&&a&&!a.addBlocked?.(c)?()=>_i(e.props.id,a.slot,a.childType,t,e.type):n===h?()=>Ni(n,t):void 0;return El(n,t,o,n===f&&a?a.addLabel:St.addBlockHere)},g=null===o.slot?null:`${u}:${o.slot}`,y=Boolean(a&&!a.fixed&&(null===g||g===f)),k=/* @__PURE__ */Tn(Mn,{children:[l.map(({child:n,zone:t,index:o})=>{const r=bo===String(n.props.id),i=ii(n),l=String(n.props.id),{collapsible:d,folded:a}=Ji(n,s,Qi(n.type)),c=Fi(n.type),p=1===c.length?`${l}:${c[0]}`:null,u=p?{...un(p),index:Xr(p).length}:void 0,f=wl.dragging,h=u&&f&&ml(f,u)?u:void 0,g=()=>Ki(t,o,l,e.type),{rowProps:y,...k}=wl.row({item:{id:l,zone:t,index:o,type:n.type},place:{...un(t),index:o},into:h,canDrag:!Lo(n.type)},{"data-node-id":l,onClick:Pi(g)});/* @__PURE__ */
|
|
25
|
-
return Tn(wn,{children:[0===o&&m(t,0),
|
|
26
|
-
/* @__PURE__ */Pn(be,{words:vt,icon:/* @__PURE__ */Pn(Go,{type:n.type,size:13}),name:i,preview:Ai(n),marks:ji(n),onSelect:g,nameSlot:si(t,o,l,i),selected:r,hidden:Boolean(n.props._hidden),...k,fold:d?{open:!a,label:"group",onToggle:()=>cr(l)}:void 0,actions:Lo(n.type)?Ri(n,t,o)??void 0:/* @__PURE__ */Tn(Mn,{children:[Mi(t,o,i),Ri(n,t,o),Li(t,o,n,i)]}),rowProps:y}),d&&!a&&/* @__PURE__ */Pn(ze,{children:Ul(n,s+1)}),m(t,o+1)]},String(n.props.id??`${t}-${o}`))}),y&&a&&
|
|
27
|
-
/* @__PURE__ */Pn(I,{small:!0,label:a.addLabel,blocked:a.addBlocked?.(c)??null,onAdd:()=>_i(e.props.id,a.slot,a.childType,c.length,e.type)}),null===g?h&&!l.some(e=>e.zone===h)?m(h,0):null:0!==l.length||(o.rung?y:g!==h)?null:m(g,0)]});return o.rung?Wl(e,o.rung,i++,r,k):/* @__PURE__ */Pn(wn,{children:k},o.slot??"")})})},Hl=(()=>{if(!rt||!ko)return null;const e=String(rt.type),n=String(rt.props.id),t=Wo(e,Vo(nt?.data,e,n));if(!t||"footer"===t.source)return null;const o=jr.some(e=>String(e.props?.id)===n),r=Array.isArray(rt.props[t.slot])?rt.props[t.slot]:[];if(t.spec?.addBlocked?.(r))return null;const i=t.choices??(t.spec?[{type:t.spec.childType,label:Dr(t.spec.childType)}]:[]);return 0===i.length?null:{parentName:$i(rt,o),choices:i,onPick:o=>{t.spec?_i(n,t.slot,o,r.length,e):qi(`${n}:${t.slot}`,o,r.length)}}})(),Gl=wo&&wo.zone!==le&&!hl(wo.zone)?wo.zone:null,Jl=!0===uo.blocksFirst,Yl=Gl?yl(Gl):Jl&&wo?null:Hl,Xl=Boolean(co&&Gl)||Jl&&Boolean(Yl&&Yl.choices.length>0),Ql=io||null!==Jt,Kl=e=>"panel"in e?{id:e.id,label:e.label,icon:e.icon,active:jt&&!Ql&&jo===e.id,onSelect:()=>Pr(e.id)}:e,_l=[{id:"add",label:St.add.title,icon:/* @__PURE__ */Pn("span",{className:"sf-rail-plus","aria-hidden":"true",children:"+"}),active:io,onSelect:()=>io?Oi():Ci(null)},...(Mo.railLead??[]).map(Kl),{id:"sections",label:St.layers,icon:/* @__PURE__ */Pn(Ae,{}),active:jt&&!Ql&&"sections"===jo,onSelect:()=>Pr("sections")},...(Mo.railTrail??[]).map(Kl)];Gt?_l.push({id:"media",label:St.railMedia,icon:/* @__PURE__ */Pn(je,{}),active:jt&&!io&&(null!==Jt||"media"===jo),onSelect:()=>Pr("media")}):qn&&_l.push({id:"media",label:St.railMedia,icon:/* @__PURE__ */Pn(je,{}),onSelect:Tr});const ql=[...Mo.railLead??[],...Mo.railTrail??[]].find(e=>"panel"in e&&e.id===jo),Zl=Boolean(kt?.foldable)&&!Ao,es=kt?.label??(Zn?St.pageSections:St.templateSections),ns=Zl&&ar(Vn),ts=/* @__PURE__ */Tn(Mn,{children:[jr.map((e,n)=>{if(mt(e)||gt(e)||pt(e.type))return null;const t=bo===String(e.props.id),o=Boolean(e.props._hidden);Wi(e);const r=String(e.props.id),i=Mo.hasOwnRows?.(e)??!1,l=Xi(e)||i,s=l&&ar(r),d=Fi(e.type),a=1===d.length?`${r}:${d[0]}`:null,c=a?{...un(a),index:Xr(a).length}:void 0,p=wl.dragging,u=c&&p&&ml(p,c)?c:void 0,{rowProps:f,...h}=wl.row({item:{id:r,zone:le,index:n,type:e.type},place:{...un(le),index:n},into:u},{"data-node-id":r,onClick:Pi(()=>vi(n))});/* @__PURE__ */
|
|
28
|
-
return Tn(wn,{children:[n>0&&Ei(n),
|
|
29
|
-
/* @__PURE__ */Pn(be,{words:vt,icon:/* @__PURE__ */Pn(Go,{type:e.type,size:13}),name:Gr(e),preview:Ai(e),marks:ji(e),onSelect:()=>vi(n),nameSlot:si(le,n,r,Gr(e)),selected:t,hidden:o,...h,fold:l?{open:!s,label:"section",onToggle:()=>cr(r)}:void 0,actions:/* @__PURE__ */Tn(Mn,{children:[Mi(le,n,Gr(e)),Ri(e,le,n),Li(le,n,e,Gr(e))]}),rowProps:f}),Xi(e)&&!s&&/* @__PURE__ */Tn(ze,{children:[Ul(e,1),Mo.partRows?.(e,Vl)]}),i&&!s&&/* @__PURE__ */Pn(ze,{children:Mo.ownRows?.(e,n,Vl)})]},String(e.props.id??n))}),!Ao&&sl>0&&Ei(sl),kt?.addAtEnd&&!Ao&&!Xn&&/* @__PURE__ */Pn(I,{small:!0,label:St.addSection,blocked:null,onAdd:()=>Ci(sl)})]}),os=(e,n,t)=>{const o=String(e.props.id),r=Ui(e).length>0||Hi(e)||Boolean(Wo(e.type)),i=r&&ar(o),l="header"===t?St.header:St.footer,s=Uo.rowName?Uo.rowName(e,"section",l):l;/* @__PURE__ */
|
|
30
|
-
return Tn(Mn,{children:[
|
|
31
|
-
/* @__PURE__ */Pn(be,{words:vt,icon:/* @__PURE__ */Pn(Go,{type:t,size:13}),name:s,preview:Ai(e),marks:ji(e),onSelect:()=>vi(n),nameSlot:si(le,n,o,s),selected:bo===String(e.props.id),fold:r?{open:!i,label:"section",onToggle:()=>cr(o)}:void 0,actions:Ri(e,le,n)??void 0,rowProps:{"data-node-id":o,onClick:Pi(()=>vi(n))}}),r&&!i&&/* @__PURE__ */Pn(ze,{children:Dl(e,1)})]})};return(Mo.wrap??(e=>e))(
|
|
32
|
-
/* @__PURE__ */Pn(te,{target:oo,children:/* @__PURE__ */Tn("div",{ref:to,className:"sf-editor es-editor",style:Xe(rr),onContextMenu:fi.onEditorContextMenu,...m(Le),children:[
|
|
33
|
-
/* @__PURE__ */Tn(Ee,{children:[
|
|
34
|
-
/* @__PURE__ */Pn(Ve,{items:_l,ariaLabel:St.bar.views}),
|
|
35
|
-
/* @__PURE__ */Tn(Fe,{children:[
|
|
36
|
-
/* @__PURE__ */Pn(We,{label:St.bar.undo,disabled:Boolean(Xn)||!ot.hasPast,onClick:()=>ot.back(),children:/* @__PURE__ */Pn(Bn,{})}),
|
|
37
|
-
/* @__PURE__ */Pn(We,{label:St.bar.redo,disabled:Boolean(Xn)||!ot.hasFuture,onClick:()=>ot.forward(),children:/* @__PURE__ */Pn(Cn,{})}),
|
|
38
|
-
/* @__PURE__ */Pn(De,{}),
|
|
39
|
-
/* @__PURE__ */Pn(Ue,{devices:Lt,value:Dt,onChange:Ut})]}),
|
|
40
|
-
/* @__PURE__ */Tn(Fe,{kind:"right",style:{minWidth:300},children:[
|
|
41
|
-
/* @__PURE__ */Pn(An,{saveState:Hn,notSaving:Boolean(Xn)||null!=Gn,readOnlyReason:Qn,toggle:Kn,onToggle:Yn,onRetry:Jn,words:St.bar,saveWords:xt}),Mo.barLead?.(),
|
|
42
|
-
/* @__PURE__ */Pn(xn,{content:St.bar.refreshTip,side:"bottom",children:/* @__PURE__ */Pn(bn,{variant:"secondary",onClick:()=>{no.current=(()=>{const e=oo?.document;if(!e)return null;const n=jr.findIndex(gt),t=n>=0?n:jr.length;let o=null;for(let n=0;n<t;n++){const t=jr[n]?.props?.id;if(null==t)continue;const r=e.querySelector(`[data-puck-component="${CSS.escape(String(t))}"]`);if(!r)continue;const i=r.getBoundingClientRect().top;i<=4&&(null===o||i>o.offset)&&(o={id:String(t),offset:i})}if(!o){const e=rt?.props?.id??jr[0]?.props?.id;null!=e&&(o={id:String(e),offset:0})}return o})(),eo(e=>e+1)},children:St.bar.refresh})}),Mo.barTrail?.(),Mo.barMain?Mo.barMain():/* @__PURE__ */Pn(bn,{variant:"primary",disabled:null!==Qn,onClick:()=>{Un(nt.data)},children:St.done})]})]}),
|
|
43
|
-
/* @__PURE__ */Pn(z,{}),
|
|
44
|
-
/* @__PURE__ */Tn("div",{className:"sf-body",children:[jt?/* @__PURE__ */Tn(Mn,{children:[
|
|
45
|
-
/* @__PURE__ */Pn("aside",{className:"es-sidepanel es-sidepanel--left sf-panel sf-panel--left","aria-label":St.leftPanel,children:io?/* @__PURE__ */Pn($,{blocks:Yl,blocksOnly:Xl,at:co?{label:(e=>{const n=hl(e.zone);if(n)return St.add.addingTo({name:Uo.rowName?$i(n,!0):Dr(n.type)});if(e.zone===le){const n=jr[e.index];return n&&!gt(n)?St.add.addingBefore({name:$i(n,!0)}):St.add.addingAtEnd}const t=yl(e.zone);return t?St.add.addingTo({name:t.parentName}):St.add.addingHere})(co),onClear:()=>po(null)}:void 0,onAdd:e=>{const n=wo,t=(e,n)=>{co&&po({zone:e,index:n})};if(n&&"block"!==e.kind&&hl(n.zone))return Ii(e,n.zone,n.index),void t(n.zone,n.index+1);if("section"===e.kind)return(e=>{if(null===xo)return void zi(e);const n=zi(e,xo);co&&fo(n+1)})(e.type);if("template"===e.kind)return((e,n)=>{if(null===xo)return void Bi(e,n);const t=Bi(e,n,xo);co&&fo(t+1)})(e.template.name,Vr(e.template.node));if(n&&n.zone!==le){const o=yl(n.zone);if(!o)return;return o.target.spec?_i(o.parentId,o.target.slot,e.type,n.index,o.parent.type):qi(n.zone,e.type,n.index),void t(n.zone,n.index+1)}Hl?.onPick(e.type)},itemFor:e=>({id:`new:${e.kind}:${"template"===e.kind?e.template.id:e.type}`,zone:"",index:-1,type:"template"===e.kind?e.template.node.type:e.type,add:e}),session:vl,siteWide:Mo.addPanelRow?.(Oi),onClose:Oi,onHide:Ir,readOnly:Boolean(Xn)}):Jt&&Ht?
|
|
46
|
-
/* @__PURE__ */Pn(M,{panel:Ht,pick:Jt,onHide:Ir}):ql?ql.panel({onHide:Ir,notify:hr}):"media"===jo&&Ht?/* @__PURE__ */Pn(M,{panel:Ht,pick:null,onHide:Ir}):/* @__PURE__ */Tn(Mn,{children:[
|
|
47
|
-
/* @__PURE__ */Pn(P,{icon:/* @__PURE__ */Pn(Ae,{}),title:St.layers,context:Ct,actions:
|
|
48
|
-
/* @__PURE__ */Pn(He,{label:al?St.expandAll:St.collapseAll,title:0===dl.length?St.nothingToFold:void 0,disabled:0===dl.length,onClick:()=>or(e=>{const n=new Set(dl);return al?new Set([...e].filter(e=>!n.has(e))):/* @__PURE__ */new Set([...e,...dl])}),children:/* @__PURE__ */Pn(jn,{expand:al})}),onHide:Ir}),
|
|
49
|
-
/* @__PURE__ */Tn(Be,{className:"sf-tree sf-scroll",words:vt,children:[
|
|
50
|
-
/* @__PURE__ */Pn(be,{words:vt,icon:/* @__PURE__ */Pn(Go,{type:"page",size:13}),name:St.pageSettings,onSelect:Mr,selected:!rt&&ko,rowProps:{onClick:Pi(Mr)}}),il&&/* @__PURE__ */Tn(Mn,{children:[
|
|
51
|
-
/* @__PURE__ */Pn(Ce,{children:St.header}),Fl(il)]}),!Ao&&et&&/* @__PURE__ */Tn(Mn,{children:[
|
|
52
|
-
/* @__PURE__ */Pn(Ce,{children:St.header}),!yt&&/* @__PURE__ */Pn(be,{words:vt,icon:/* @__PURE__ */Pn(Go,{type:"header",size:13}),name:St.header,onSelect:Ar,selected:go.kind===ht?.kind,rowProps:{onClick:Pi(Ar)}})]}),!Ao&&rl&&os(rl,ol,"header"),!Ao&&!Zl&&/* @__PURE__ */Pn(Ce,{children:es}),Zl?/* @__PURE__ */Tn(Mn,{children:[
|
|
53
|
-
/* @__PURE__ */Pn(be,{words:vt,icon:null,name:es,fold:{open:!ns,label:es,onToggle:()=>cr(Vn)}}),!ns&&/* @__PURE__ */Pn(ze,{children:ts})]}):ts,et&&/* @__PURE__ */Pn(Ce,{children:St.footer}),tl&&os(tl,nl,"footer"),!Ao&&!tl&&et&&/* @__PURE__ */Pn(be,{words:vt,icon:/* @__PURE__ */Pn(Go,{type:"footer",size:13}),name:St.footer,onSelect:Ti,rowProps:{onClick:Pi(Ti),title:St.editFooter}}),ll&&Fl(ll),Mo.treeFoot?.()]})]})}),
|
|
54
|
-
/* @__PURE__ */Pn(Ge,{side:"left",width:rr.left,min:Ye,max:Je,defaultWidth:k.left,label:St.resizeLeftPanel,onResize:sr})]}):/* @__PURE__ */Pn(T,{side:"left",onShow:Ir}),
|
|
55
|
-
/* @__PURE__ */Tn("div",{ref:mr,className:"sf-center sf-scroll","data-sf-canvas-head":vr?"":void 0,style:{overflowX:Cr?"auto":"hidden",overflowY:"hidden"},children:[vr&&/* @__PURE__ */Pn("div",{ref:wr,className:"sf-canvas-head",children:/* @__PURE__ */Pn(vr,{device:Dt})}),
|
|
56
|
-
/* @__PURE__ */Pn("div",{className:"sf-frame-scaler",style:Nr,children:/* @__PURE__ */Pn("div",{className:"sf-frame "+(Dt===Ft?"":`sf-frame--${Dt}`),style:Or,children:/* @__PURE__ */Tn("div",{className:"sf-preview-host",children:[
|
|
57
|
-
/* @__PURE__ */Pn(Nt,{},Zt),
|
|
58
|
-
/* @__PURE__ */Pn(Ze,{canvas:oo,session:vl,model:Il,measure:Pl,canDrop:Ml,onDrop:jl,choose:zl,onPick:Ll,onZoneAdd:e=>{const n=an(e),t=_r(n);t&&ei(t.node,t.slot,!1),Ni(n,0)},zoneAddLabel:St.canvasAddBlock,words:wt.canvas,readOnly:Boolean(Xn),revision:nt.data}),ho.length>0&&/* @__PURE__ */Pn("div",{className:"sf-preview-gaps","aria-hidden":"true",children:ho.map(e=>/* @__PURE__ */Tn("button",{type:"button",tabIndex:-1,className:void 0===e.height?"sf-preview-gap":"sf-preview-gap sf-preview-gap--tight",style:void 0===e.height?{top:e.top}:{top:e.top,height:e.height},onClick:()=>Ci(e.index),children:[
|
|
59
|
-
/* @__PURE__ */Pn("span",{className:"sf-preview-gap-line"}),
|
|
60
|
-
/* @__PURE__ */Tn("span",{className:"sf-preview-gap-pill",children:[
|
|
61
|
-
/* @__PURE__ */Pn("span",{className:"sf-preview-gap-plus",children:"+"}),
|
|
62
|
-
/* @__PURE__ */Pn("span",{className:"sf-preview-gap-label",children:St.addSection})]})]},e.index))})]})})})]}),Rt?/* @__PURE__ */Tn(Mn,{children:[
|
|
63
|
-
/* @__PURE__ */Pn(g,{value:{selectChild:Ki,addChild:_i,childRowName:ii,blockRowName:cl},children:/* @__PURE__ */Pn(Ot,{mode:go,onOpenWebsiteSettings:Mo.openSettings??(()=>{}),onOpenSiteStyles:Mo.openStyles,onSelectNode:Qo,onNotify:hr,onHidePanel:$r,nodeActions:rt?se(lt,rt.type):Fn})}),
|
|
64
|
-
/* @__PURE__ */Pn(Ge,{side:"right",width:rr.right,min:Ye,max:Je,defaultWidth:k.right,label:St.resizeSettingsPanel,onResize:dr})]}):
|
|
65
|
-
/* @__PURE__ */Pn(T,{side:"right",onShow:$r})]}),fi.menu]})}))}export{Wn as ScreenChrome};
|
package/dist/chunk-HFW6D46X.js
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import{DEFAULT_DRAG_WORDS as e}from"./chunk-O2NLQBFX.js";import{dropEffectFor as t,scrollBoxOf as n,frameScrollBox as l,startAutoScroll as r,isNoOpDrop as a}from"./chunk-67GNT6PF.js";import{useCanvasLayout as o,useCanvasEvent as s,CANVAS_TYPING_EVENT as i,framePointToHost as c,elementScale as d,frameRectToLayer as u,clientPointToLayer as h}from"./chunk-AWJUYMX7.js";import{withTip as f}from"./chunk-P2VEMZH5.js";import{parseZoneKey as p}from"./chunk-KRXQM65X.js";import{useRef as m,useEffect as g,useState as y,useCallback as b,useMemo as v,useSyncExternalStore as x,useId as k,useLayoutEffect as w}from"react";import{Tooltip as N,Input as A,IconButton as z}from"efficient-shell/ui";import{jsxs as D,jsx as T}from"react/jsx-runtime";import{CloseIcon as C,SearchIcon as $}from"efficient-shell/icons/efficient";var S=(e,t,n)=>t>=e.left&&t<=e.left+e.width&&n>=e.top&&n<=e.top+e.height,E=e=>e.width*e.height;function L(e,t,n){return e.map((e,t)=>({s:e,at:t})).filter(({s:e})=>S(e.box,t,n)).sort((e,t)=>E(t.s.box)-E(e.s.box)||e.at-t.at).map(({s:e})=>e)}function M(e,t,n){return L(e,t,n).at(-1)??null}function j(e,t,n){const l="x"===e.axis?t:n;let r=0;for(const t of e.children){l>("x"===e.axis?t.left+t.width/2:t.top+t.height/2)&&(r+=1)}return r}function B(e,t){const n=e.children;if("x"===e.axis){const l=n[t-1],r=n[t],a=l&&r?(l.left+l.width+r.left)/2:l?l.left+l.width:r?r.left:e.box.left,o=r??l??e.box;return{left:a-1,top:o.top,width:2,height:o.height}}const l=n[t-1],r=n[t],a=l&&r?(l.top+l.height+r.top)/2:l?l.top+l.height:r?r.top:e.box.top;return{left:e.box.left,top:a-1,width:e.box.width,height:2}}function K(e,t,n,l,r=()=>!1,a=()=>!0){const o=e.filter(e=>S(e.box,t,n)).sort((e,t)=>E(e.box)-E(t.box));for(const e of o){const o=j(e,t,n),s={...e.list,index:o};if(r(s))return null;if(l(s))return{zone:e,to:s,line:B(e,o)};if(!a(s))return null}return null}function X(e,t=e.key){const n=[];for(let l=1;l<e.children.length;l++){const r=e.children[l-1],a=e.children[l],o=r.top+r.height;n.push({key:`${t}:${l}`,place:{...e.list,index:l},box:{left:e.box.left,top:o,width:e.box.width,height:Math.max(a.top-o,0)}})}return n}var q={nodes:[],zones:[]},O="data-puck-dropzone",P="data-puck-component";function F(e,t){if(e.length>=2){const[t,n]=e;return Math.abs(n.top-t.top)<Math.min(t.height,n.height)/2&&n.left>t.left?"x":"y"}const n=t.ownerDocument.defaultView?.getComputedStyle(t);return n&&n.display.includes("flex")&&n.flexDirection.startsWith("row")?"x":"y"}function R(e,t){const{frame:n,document:l}=e,r=e=>u(n,function(e){const t=e.getBoundingClientRect();return{left:t.left,top:t.top,width:t.width,height:t.height}}(e),t),a=[],o=[];for(const e of l.querySelectorAll(`[${O}]`)){const t=e.getAttribute(O)??"";let n;try{n=p(t)}catch{continue}const l=[...e.querySelectorAll(`[${P}]`)].filter(t=>t.parentElement?.closest(`[${O}]`)===e),s=l.map(r);o.push({key:t,list:n,box:r(e),axis:F(s,e),children:s}),l.forEach((e,t)=>{const l=e.getAttribute(P);l&&a.push({id:l,place:{...n,index:t},box:s[t]})})}return{nodes:a,zones:o}}var Y="data-es-empty-cell",Z="data-puck-dropzone",I=140;var Q=e=>({left:e.left,top:e.top,width:e.width,height:e.height});function V(u){const{canvas:f,session:p,readOnly:k,words:A=e.canvas}=u,z=m(u);g(()=>{z.current=u});const C=m(null),$=o(f),[S,E]=y(0),M=b(()=>E(e=>e+1),[]),[j,B]=y(q);g(()=>{const e=C.current;f&&e&&B((z.current.measure??R)(f,e))},[f,$,u.revision,S]);const X=u.model,O=v(()=>X(j),[X,j]),P=x(p.subscribe,p.shown,p.shown),F=u.choose,I=(e,t)=>{const n=L(O.sources,e,t);return 0===n.length?null:F?F(n):n[n.length-1]},[V,W]=y(null),[G,H]=y(null),J=m(null),U=()=>{J.current&&clearTimeout(J.current),J.current=null},_=()=>{U(),J.current=setTimeout(()=>{p.get()||W(null)},140)};g(()=>U,[]);const ee=m(null),te=m(!1);s(f,i,e=>{te.current=Boolean(e.detail?.typing),te.current&&(U(),W(null))}),s(f,"mousemove",e=>{const t=C.current;if(!f||!t)return;const n=c(f.frame,e.clientX,e.clientY,t),l=d(t),r={x:n.x/l,y:n.y/l};if(ee.current=r,z.current.readOnly||p.get()||te.current)return;U();const a=I(r.x,r.y);W(e=>e?.key===a?.key&&e?.box===a?.box?e:a)}),s(f,"mouseout",e=>{e.relatedTarget||(ee.current=null,_())}),s(f,"mouseover",e=>{e.relatedTarget||M()});const ne=m(null),le=b(()=>{ne.current?.(),ne.current=null,H(null)},[]);g(()=>p.subscribe(()=>{p.get()?M():le()}),[p,le,M]),g(()=>le,[le]),("undefined"==typeof document?g:w)(()=>{if(p.get())return;const e=ee.current;W(t=>k||te.current?null:e?I(e.x,e.y):t?O.sources.find(e=>e.key===t.key)??null:null)},[O,P,p,k,F]);const re=e=>{const t=p.get(),n=C.current;if(!t||!n)return null;const l=h(n,e.clientX,e.clientY);ee.current=l;const r=K(O.zones,l.x,l.y,e=>z.current.canDrop(t.item,e),e=>!!t.from&&a(t.from,e),e=>z.current.fallThrough?.(t.item,e,t.from)??!0);return r?{h:t,t:r}:null},ae={onDragEnter:e=>{if(ne.current)return;const t=n(e.currentTarget.parentElement?.parentElement??null),a=f?l(f.document):null,o=[];t&&o.push(r(t)),a&&f&&o.push(r(a,f.frame)),ne.current=o.length?()=>o.forEach(e=>e()):null},onDragOver:e=>{const n=re(e);if(!n)return void H(null);e.preventDefault(),e.dataTransfer.dropEffect=t(e.dataTransfer.effectAllowed);const l={zoneKey:n.t.zone.key,line:n.t.line,axis:n.t.zone.axis};H(e=>e&&e.zoneKey===l.zoneKey&&e.line.left===l.line.left&&e.line.top===l.line.top?e:l)},onDragLeave:e=>{const t=e.relatedTarget;t&&e.currentTarget.contains(t)||(ee.current=null,H(null))},onDrop:e=>{const t=re(e);t&&(e.preventDefault(),p.end(),le(),z.current.onDrop(t.h.item,t.t.to))}},oe={draggable:!k&&!!V,onMouseEnter:U,onMouseLeave:()=>!p.get()&&_(),onDragStart:e=>{if(V&&!k){p.start({key:V.key,item:V.item,from:V.from}),e.dataTransfer.effectAllowed="move";try{e.dataTransfer.setData("text/plain",V.key)}catch{}}else e.preventDefault()},onDragEnd:()=>{p.end(),le()},onClick:()=>{V&&!k&&z.current.onPick?.(V.item)}},{seams:se=[]}=O,ie=O.zones.filter(e=>0===e.children.length),ce=u.onZoneAdd&&!k?ie:[],de=ce.map(e=>e.key).join("\n");return g(()=>{const e=f?.document;if(!e)return;const t=new Set(de?de.split("\n"):[]);for(const n of e.querySelectorAll(`[${Z}]`))n.toggleAttribute(Y,t.has(n.getAttribute(Z)??""));return()=>{for(const t of e.querySelectorAll(`[${Y}]`))t.removeAttribute(Y)}},[f,de,j,$,S]),/* @__PURE__ */D("div",{ref:C,className:"es-canvas-layer",children:[P||!u.onSeamAdd||k?null:se.map(e=>/* @__PURE__ */T("div",{className:"es-canvas-seam",style:{left:e.box.left,top:e.box.top+e.box.height/2-8,width:e.box.width,height:16},children:/* @__PURE__ */T("button",{type:"button",className:"es-canvas-seam-add",onClick:()=>u.onSeamAdd?.(e.place),children:A.addButton({label:u.seamLabel??A.addSection})})},e.key)),ce.length?ce.map(e=>/* @__PURE__ */T("button",{type:"button",className:["es-canvas-empty",e.addAlways?"is-always":"",G?.zoneKey===e.key?"is-over":""].filter(Boolean).join(" "),style:Q(e.box),onClick:()=>u.onZoneAdd?.({...e.list,index:0}),children:/* @__PURE__ */T("span",{className:"es-canvas-empty-add",children:A.addButton({label:e.addLabel??u.zoneAddLabel??A.addBlock})})},e.key)):null,P?/* @__PURE__ */T("div",{className:"es-canvas-catch",...ae}):null,G&&!ie.some(e=>e.key===G.zoneKey)?/* @__PURE__ */T("div",{className:`es-canvas-line is-${G.axis}`,style:Q(G.line)}):null,
|
|
2
|
-
/* @__PURE__ */T("div",{className:"es-canvas-handle-spot",style:V?{"--es-handle-x":`${V.box.left+2}px`,"--es-handle-y":`${Math.max(V.box.top-11,0)}px`}:void 0,children:/* @__PURE__ */T(N,{className:"es-canvas-handle-tip",side:"top",content:!V||k||P?null:V.title??A.handle({label:V.label}),children:/* @__PURE__ */D("div",{className:["es-canvas-handle",V&&!k?"is-shown":"",P?"is-dragging":""].filter(Boolean).join(" "),...oe,children:[
|
|
3
|
-
/* @__PURE__ */T("span",{className:"es-canvas-grip","aria-hidden":"true",children:"⋮⋮"}),V?.label]})})})]})}var W=e=>e.tiles.length>0&&e.tiles.every(e=>null!=e.cover);function G({groups:t,session:n,itemFor:l,onInsert:r,at:a,hint:o,searchLabel:s,readOnly:i,words:c=e.add}){const d=o??c.hint,u=s??c.search,[h,p]=y(""),m=k(),g=h.trim().toLowerCase(),b=function(e){const t=/* @__PURE__ */new Map;return e.map(e=>{const n=e.key??e.title,l=t.get(n)??0;return t.set(n,l+1),0===l?n:`${n}\0${l}`})}(t),v=t.map((e,t)=>({...e,key:b[t],tiles:g?e.tiles.filter(e=>((e,t)=>e.label.toLowerCase().includes(t)||(e.keywords??[]).some(e=>e.toLowerCase().includes(t)))(e,g)):e.tiles})).filter(e=>e.tiles.length>0),x=(e,t)=>r=>{if(t)r.preventDefault();else{n.start({key:`new:${e}`,item:l(e)}),r.dataTransfer.effectAllowed="copy";try{r.dataTransfer.setData("text/plain",e)}catch{}}};/* @__PURE__ */
|
|
4
|
-
return D("div",{className:"es-add",children:[a?/* @__PURE__ */D("div",{className:"es-add-at",role:"status",children:[
|
|
5
|
-
/* @__PURE__ */T("span",{children:a.label}),f(c.stop,/* @__PURE__ */T("button",{type:"button",className:"es-add-at-clear","aria-label":c.stop,onClick:a.onClear,children:/* @__PURE__ */T(C,{size:12,"aria-hidden":"true"})}))]}):null,
|
|
6
|
-
/* @__PURE__ */T("p",{className:"es-add-hint",children:d}),
|
|
7
|
-
/* @__PURE__ */T("div",{className:"es-add-find",children:/* @__PURE__ */T(A,{id:m,type:"search","aria-label":u,placeholder:c.searchPlaceholder({label:u}),value:h,onChange:e=>p(e.target.value),leftIcon:/* @__PURE__ */T($,{size:16,"aria-hidden":"true"}),rightAdornment:h?/* @__PURE__ */T(z,{size:"sm","aria-label":c.clearSearch,onClick:()=>p(""),children:/* @__PURE__ */T(C,{size:12,"aria-hidden":"true"})}):void 0})}),0===v.length?/* @__PURE__ */D("div",{className:"es-add-empty",role:"status",children:[
|
|
8
|
-
/* @__PURE__ */T("div",{className:"es-add-empty-title",children:c.nothing({query:h.trim()})}),
|
|
9
|
-
/* @__PURE__ */T("div",{className:"es-add-empty-sub",children:c.tryAnother})]}):v.map(e=>/* @__PURE__ */D("section",{className:"es-add-group","aria-label":e.title,children:[
|
|
10
|
-
/* @__PURE__ */D("div",{className:"es-add-group-head",children:[
|
|
11
|
-
/* @__PURE__ */T("span",{className:"es-add-group-title",children:e.title}),
|
|
12
|
-
/* @__PURE__ */T("span",{className:"es-add-group-count",children:e.tiles.length})]}),
|
|
13
|
-
/* @__PURE__ */T("div",{className:W(e)?"es-add-grid is-cards":"es-add-grid",children:e.tiles.map(e=>{const t=Boolean(i||e.disabled),l=i?void 0:e.disabled?e.disabledReason:e.title??c.tile({label:e.label});return f(l,/* @__PURE__ */D("button",{type:"button",className:null!=e.cover?"es-add-tile has-cover":"es-add-tile",draggable:!t,"aria-disabled":t||void 0,"aria-label":c.tile({label:e.label}),onDragStart:x(e.type,t),onDragEnd:()=>n.end(),onClick:()=>!t&&r(e.type),children:[null!=e.cover?/* @__PURE__ */T("span",{className:"es-add-tile-cover","aria-hidden":"true",children:e.cover}):e.icon?/* @__PURE__ */T("span",{className:"es-add-tile-glyph","aria-hidden":"true",children:e.icon}):null,
|
|
14
|
-
/* @__PURE__ */T("span",{className:"es-add-tile-label",children:e.label})]},e.type))})})]},e.key))]})}export{G as AddPanel,V as CanvasDragLayer,q as EMPTY_MEASURE,I as HANDLE_GRACE_MS,K as canvasTarget,S as contains,j as gapInZone,B as gapLine,R as measureCanvas,M as pickSource,X as seamsBetween,L as sourcesAt};
|
package/dist/chunk-LVUDUQNL.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{styleMenuItems as e}from"./chunk-V7U33NF2.js";import{useEaselSession as n}from"./chunk-O7Q4DDJT.js";import{ROOT_ZONE as t}from"./chunk-PLVEGYK6.js";import{useHostEscape as o}from"./chunk-U3JP4VGF.js";import{DEFAULT_SCREEN_WORDS as l}from"./chunk-MCHMF32I.js";import{EaselMenuItems as r,menuLabel as i}from"./chunk-EA2HTX37.js";import{createNodeClipboard as c,nodeMenuItems as s}from"./chunk-OSPUG6S6.js";import{DEFAULT_NODE_MENU_WORDS as a}from"./chunk-WK3AFPXY.js";import{isTypingTarget as u,useCanvasEvent as d,framePointToHost as p}from"./chunk-AWJUYMX7.js";import{zoneKey as f,ROOT_SLOT as m,ROOT_ID as h}from"./chunk-KRXQM65X.js";import{useState as y,useCallback as k,useRef as b,useEffect as v}from"react";import{ContextMenu as g}from"efficient-shell/ui";import{UndoIcon as w,RedoIcon as x,AddIcon as C,PasteIcon as z,SettingsIcon as P,LayersIcon as A,CopyIcon as O}from"efficient-shell/icons/efficient";import{jsx as M}from"react/jsx-runtime";function S(e,n){const o=[],l=/* @__PURE__ */new Set;let r={zone:n.zone,index:n.index};for(;r;){const n=e.nodeAt(r.zone,r.index);if(!n||l.has(n.props.id))break;if(l.add(n.props.id),o.push({zone:r.zone,index:r.index,node:n,parentType:null}),r.zone===t)break;const i=r.zone.lastIndexOf(":");if(i<=0)break;r=e.locate(r.zone.slice(0,i))}for(let e=0;e<o.length-1;e+=1)o[e].parentType=o[e+1].node.type;return o}var K=c(),j=/* @__PURE__ */new WeakMap;function D(e){if(e.claimsPage)return K;const n=e.registry;if(!n)return e.cache("easel:node-clipboard",c);let t=j.get(n);return t||(t=c(),j.set(n,t)),t}function T(){return D(n())}function X(e,n,o){if(n===t){const{floor:n,cap:t}=e.sectionBand();return{parentId:h,slot:m,index:Math.min(Math.max(o,n),t)}}const l=n.lastIndexOf(":");return{parentId:n.slice(0,l),slot:n.slice(l+1),index:o}}function I(e,n,t){const o=e.isPinned(n,t),l=!o&&!e.isLocked(n)&&!e.duplicateBlocked(n),r=e.permits?.(n)??{duplicate:!0,delete:!0};return{copy:!o&&r.duplicate,cut:l&&r.duplicate&&r.delete}}function E(e,n,t){const o=e.canPasteAt;if(!o)return f(n.from)===t.zone?X(e,t.zone,t.index+1):null;for(const l of S(e,t)){const t=X(e,l.zone,l.index+1);if(o(n,t))return t}return null}function L(e){if(e.defaultPrevented||e.altKey||e.shiftKey||!e.metaKey&&!e.ctrlKey)return null;if(u(e.target))return null;const n=e.target,t=n&&"ownerDocument"in n?n.ownerDocument??n:null,o=t?.getSelection?.();if(o&&!o.isCollapsed&&o.toString().trim())return null;const l=e.code||(1===e.key.length?`Key${e.key.toUpperCase()}`:"");return"KeyC"===l?"copy":"KeyX"===l?"cut":"KeyV"===l?"paste":null}function R(e,n,t,o){const l=e.nodeAt(t.zone,t.index);if(!l)return null;const r=l.props.id,i=e.labelOf(l.type,t.zone),c=I(e,l,t.zone);if("copy"===n)return c.copy?(e.nodeOps.copy(r,i),{done:"copied",name:i}):null;if(o.readOnly)return null;if("cut"===n)return c.cut?(e.nodeOps.cut(r,i),{done:"cut",name:i}):null;const s=o.held;if(!s)return null;const a=e.isPinned(l,t.zone)?null:E(e,s,t);return a?(e.nodeOps.paste(a),{done:"pasted",name:s.label}):(e.onPasteRefused(s),{done:"refused",name:s.label})}function U(n,o){const{zone:l,index:r}=o,i=n.nodeAt(l,r);if(!i)return[];const c=i.props.id,a=n.labelOf(i.type,l),u=Boolean(i.props._hidden),d=n.nodeOps,p=n.isPinned(i,l),f=n.isLocked(i),m=!p&&!f&&!n.duplicateBlocked(i),h=n.permits?.(i)??{duplicate:!0,delete:!0},y=I(n,i,l),k=S(n,o),b=d.held,v=b&&!p?E(n,b,o):null,g=!n.readOnly,w=n.style?e({held:g?n.style.held():null,canCopy:n.style.canCopy(i,l),onCopy:()=>n.style?.copy(i,l),onPaste:()=>n.style?.paste(l,r,i),words:n.words?.styleClipboard}):[];return s({title:a,words:n.words?.menu,layer:{group:"pick",items:k.flatMap((e,o)=>{const l={label:n.rowNameOf(e.node,e.zone),checked:0===o,onClick:()=>n.selectAt(e.zone,e.index,e.node.props.id,e.parentType)},r=e.zone===t?null:n.slotRung?.(e.zone)??null;return r?[l,{label:r.label,checked:!1,onClick:r.select}]:[l]})},actions:{addInside:g&&n.canAddTo(i.type)?()=>n.openAddInside(l,r):void 0,duplicate:g&&m&&h.duplicate?()=>d.duplicate(c):void 0,moveUp:g&&d.canStep(c,-1)?()=>d.step(c,-1):void 0,moveDown:g&&d.canStep(c,1)?()=>d.step(c,1):void 0,copy:y.copy?()=>d.copy(c,a):void 0,cut:g&&y.cut?()=>d.cut(c,a):void 0,paste:g&&b&&v?{label:b.label,run:()=>d.paste(v)}:void 0,rename:g&&n.renamePropOf(i,l)?()=>n.beginRename(l,r):void 0,hide:!g||f||p?void 0:{hidden:u,run:()=>d.setProps(c,{_hidden:!u})},delete:g&&m&&h.delete?()=>d.remove(c):void 0},style:w,extras:n.menuRows?.(i,l,r)??void 0,pinnedLine:p?Y(n).pinned:void 0})}var Y=e=>e.words?.screen??l.menu;function V(e){const n=Y(e),o=!e.readOnly,r=[];o&&e.history.hasPast&&r.push({label:n.undo,icon:/* @__PURE__ */M(w,{}),shortcut:"⌘Z",onClick:e.history.back}),o&&e.history.hasFuture&&r.push({label:n.redo,icon:/* @__PURE__ */M(x,{}),shortcut:"⇧⌘Z",onClick:e.history.forward});const i=o?[{label:n.addSection,icon:/* @__PURE__ */M(C,{}),onClick:e.openAddSection}]:[],c=e.nodeOps.held,s=X(e,t,e.sectionBand().cap);if(o&&c&&(e.canPasteAt?e.canPasteAt(c,s):f(c.from)===t)){const n=s,t=e.words?.menu??a;i.push({label:t.pasteNamed({paste:t.paste,label:c.label}),icon:/* @__PURE__ */M(z,{}),shortcut:"⌘V",onClick:()=>e.nodeOps.paste(n)})}const u=[r,i,[{label:e.pageSettingsLabel??l.pageSettings,icon:/* @__PURE__ */M(P,{}),onClick:e.openPageSettings},{label:n.collapseAll,icon:/* @__PURE__ */M(A,{}),onClick:e.collapseAll}]].filter(e=>e.length>0),d={label:"—",onClick:()=>{}};return u.flatMap((e,n)=>n?[d,...e]:e)}function B(e,n){const t=n.selectionStart??0,o=n.selectionEnd??0,l=n.value.slice(t,o),r=e=>{n.focus(),n.setRangeText(e,t,o,"end"),n.dispatchEvent(new Event("input",{bubbles:!0}))},i=e.words?.menu??a,c=Y(e),s=[];l&&(s.push({label:i.copy,icon:/* @__PURE__ */M(O,{}),shortcut:"⌘C",onClick:()=>navigator.clipboard?.writeText(l)}),s.push({label:i.cut,icon:/* @__PURE__ */M(O,{}),shortcut:"⌘X",onClick:()=>{navigator.clipboard?.writeText(l),r("")}})),s.push({label:i.paste,icon:/* @__PURE__ */M(z,{}),shortcut:"⌘V",onClick:()=>{navigator.clipboard?.readText().then(e=>{e&&r(e)}).catch(()=>e.onPasteRefused())}});const u=[s,n.value?[{label:c.selectAll,shortcut:"⌘A",onClick:()=>{n.focus(),n.select()}}]:[]].filter(e=>e.length>0),d={label:"—",onClick:()=>{}};return u.flatMap((e,n)=>n?[d,...e]:e)}function F(e){return e.shiftKey}function N(e,n){const[t,l]=y(null),r=k(()=>l(null),[]);o(null!==t,r);const i=b(e);i.current=e;const c=k(e=>{const n=i.current,t=n.keys;if(!t)return;const o=L(e);if(!o)return;const l=t.selected();if(!l)return;const r=R(n,o,l,{readOnly:t.readOnly,held:t.held()});r&&(e.preventDefault(),t.onDone?.(r))},[]),s=e.keys?.target??null;v(()=>{if(!s)return;const e=e=>c(e);return s.addEventListener("keydown",e),()=>s.removeEventListener("keydown",e)},[s,c]),d(n,"keydown",c);const a=k(n=>{if(F(n))return;const t=n.target;if(t?.closest?.("[data-slot-zone]"))return n.preventDefault(),void l(null);const o=function(e){const n=e?.closest?.("input, textarea");return n&&("INPUT"!==n.tagName||["text","search","url","email","tel","number",""].includes(n.type))?n:null}(t);if(o)return n.preventDefault(),void l({kind:"input",x:n.clientX,y:n.clientY,el:o,owner:t});const r=t?.closest?.("[data-node-id]")?.getAttribute("data-node-id"),i=r?e.locate(r):null;n.preventDefault(),l(i?{kind:"node",x:n.clientX,y:n.clientY,...i,owner:t}:{kind:"empty",x:n.clientX,y:n.clientY,owner:t})},[e]);d(n,"contextmenu",t=>{if(F(t)||!n)return;const o=t.target?.closest?.("[data-puck-component]")??null,r=o?.getAttribute("data-puck-component"),i=r?e.locate(r):null;t.preventDefault();const c=p(n.frame,t.clientX,t.clientY),s=n.frame;l(i?{kind:"node",...c,...i,owner:s}:{kind:"empty",...c,owner:s})}),d(n,"mousedown",r),d(n,"scroll",r,{on:"window"});return{onEditorContextMenu:a,menu:t?/* @__PURE__ */M(G,{host:e,target:t,onClose:r}):null,closeMenu:r}}function G({host:e,target:n,onClose:t}){const o="node"===n.kind?U(e,n):"input"===n.kind?B(e,n.el):V(e);return 0===o.length?null:/* @__PURE__ */M(g,{at:{x:n.x,y:n.y},owner:n.owner??null,onClose:t,"aria-label":i(o),children:/* @__PURE__ */M(r,{items:o,onClose:t})})}export{K as EASEL_NODE_CLIPBOARD,S as ancestorChain,D as nodeClipboardOf,I as nodeClipboardRules,U as nodeMenuItems,L as nodeShortcut,V as pageMenuItems,E as pastePlace,R as runNodeShortcut,B as textMenuItems,T as useNodeClipboard,N as useNodeContextMenu};
|
package/dist/chunk-NAGDOIW4.js
DELETED
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import{blockTypesIn as e}from"./chunk-5ZBY24K7.js";import{buildPaletteSections as t,pinnedSection as o,paletteWithoutPinned as n,categoryLabel as i}from"./chunk-PA3PNTVV.js";import{sectionTemplatesOf as s}from"./chunk-BVN33R76.js";import{SidePanelHead as r,PanelModeExit as c}from"./chunk-PFNIVZPN.js";import{useEaselSession as l}from"./chunk-O7Q4DDJT.js";import{blockRuns as a}from"./chunk-HQ4VVRIC.js";import{useScreenBlockLook as p,useScreenBlockRules as m}from"./chunk-ZR4CFNMW.js";import{DEFAULT_SCREEN_WORDS as d}from"./chunk-MCHMF32I.js";import{useEasel as f}from"./chunk-M5VRWM7M.js";import{useWords as u}from"./chunk-MFIRYGHW.js";import{AddPanel as k}from"./chunk-HFW6D46X.js";import{DEFAULT_DRAG_WORDS as h}from"./chunk-O2NLQBFX.js";import{useState as y,useEffect as b,useMemo as j}from"react";import{AddIcon as g}from"efficient-shell/icons/efficient";import{jsx as $,jsxs as B,Fragment as F}from"react/jsx-runtime";var N=e=>`section:${e}`,O=e=>`block:${e}`,v=e=>`template:${e}`;function I({blocks:I,blocksOnly:M,at:V,onAdd:x,itemFor:H,session:C,siteWide:L,onClose:R,onHide:W,readOnly:A}){const D=f(e=>e.config),P=p(),{labelAtLevel:w,categoryLabel:Q,firstSection:T,Icon:Z,Thumbnail:z}=P,{blockIsOffered:S}=m(),X=u("screen",d).add,Y=u("drag",h).add,E=l(),[G,J]=y([]);b(()=>{let t=!1;const o=e=>S(e,E);return s(E).list().then(n=>{if(t)return;const i=D.components;J(n.filter(t=>t.node?.type&&i[t.node.type]&&e(t.node).every(o)))}).catch(()=>{}),()=>{t=!0}},[D,E]);const K=j(()=>t(D,P),[D]),q=e=>({type:N(e.type),label:e.name,cover:/* @__PURE__ */$(z,{type:e.type}),title:e.desc?`${e.name} — ${e.desc}`:X.tile({name:e.name}),keywords:[e.alias??"",e.desc,e.type,e.catLabel].filter(Boolean)}),U=j(()=>{const e=[];if(I&&I.choices.length>0&&a(I.choices).forEach((t,o)=>{e.push({key:`blocks:${o}`,title:0===o?`${X.inside({name:I.parentName})}${t.group?` · ${t.group}`:""}`:t.group??"",tiles:t.items.map(e=>({type:O(e.type),label:e.label,icon:/* @__PURE__ */$(Z,{type:e.type,size:18}),title:X.tile({name:e.label})}))})}),M)return e;const t=o(K,T);t&&e.push({key:"start",title:X.startBlank,tiles:[q(t)]}),G.length>0&&e.push({key:"templates",title:X.templates,tiles:G.map(e=>{return{type:v(e.id),label:e.name,cover:/* @__PURE__ */$(z,{type:e.node.type}),keywords:[(t=e.node.type,w(t,"section",D.components[t]?.label??t)),e.node.type]};var t})});const s=n(K,T);for(const t of Object.keys(D.categories??{})){const o=s.filter(e=>e.cat===t);0!==o.length&&e.push({key:`category:${t}`,title:i(D,t,Q),tiles:o.map(q)})}return e},[I,M,G,K,D,X]),_=e=>{const t=e.indexOf(":"),o=e.slice(0,t),n=e.slice(t+1);if("section"===o)return{kind:"section",type:n};if("block"===o)return{kind:"block",type:n};if("template"===o){const e=G.find(e=>e.id===n);return e?{kind:"template",template:e}:null}return null};/* @__PURE__ */
|
|
2
|
-
return B(F,{children:[
|
|
3
|
-
/* @__PURE__ */$(r,{icon:/* @__PURE__ */$(g,{size:15}),title:X.title,context:M?X.contextBlocks:X.contextAll,actions:/* @__PURE__ */$(c,{label:X.done,description:X.doneDescription,onClick:R}),onHide:W}),
|
|
4
|
-
/* @__PURE__ */B("div",{className:"sf-addside sf-scroll",children:[
|
|
5
|
-
/* @__PURE__ */$(k,{groups:U,session:C,itemFor:e=>H(_(e)??{kind:"section",type:e}),onInsert:e=>{const t=_(e);t&&x(t)},at:V,hint:M?X.hintBlocks:X.hint,searchLabel:M?X.searchBlocks:X.searchSections,readOnly:A,words:Y}),L&&!M?L:null]})]})}export{I as AddSidePanel,O as blockKey,N as sectionKey,v as templateKey};
|
package/dist/chunk-T5ORM737.js
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import{clientOnly as n}from"./chunk-GXQCZJOP.js";import{ScreenStoreProvider as r}from"./chunk-4UJ6CPLO.js";import{ScreenChrome as e}from"./chunk-GIP45GWF.js";import{ScreenDocumentProvider as i,useScreenDocument as a}from"./chunk-WZMU646D.js";import{DEFAULT_SCREEN_WORDS as s}from"./chunk-MCHMF32I.js";import{documentPermissions as o}from"./chunk-THWO5YVZ.js";import{useWords as c}from"./chunk-MFIRYGHW.js";import{useMemo as t}from"react";import{Dialog as d,Button as l}from"efficient-shell/ui";import{jsx as m,jsxs as g,Fragment as h}from"react/jsx-runtime";var f=n(r),v=n(e);function p({saving:n,onCancel:r,onDiscard:e,onSave:i}){const a=c("screen",s).leave;/* @__PURE__ */
|
|
2
|
-
return m(d,{open:!0,role:"alertdialog",size:"sm",title:a.title,onClose:r,footer:/* @__PURE__ */g(h,{children:[
|
|
3
|
-
/* @__PURE__ */m(l,{variant:"secondary",onClick:r,children:a.cancel}),
|
|
4
|
-
/* @__PURE__ */m(l,{variant:"ghost-danger",onClick:e,children:a.discard}),
|
|
5
|
-
/* @__PURE__ */m(l,{variant:"primary",loading:n,onClick:i,children:n?a.saving:a.save})]}),children:a.body})}function u({target:n,addressing:r,onHostMessage:e,children:a}){/* @__PURE__ */
|
|
6
|
-
return m(i,{target:n,addressing:r,onHostMessage:e,children:a})}var C=(n,r)=>/* @__PURE__ */g(h,{children:[n,r]});function k({config:n,parts:r,wrap:e=C}){const{data:i,error:d,redirecting:l,ready:g,saveStatus:h,readOnly:u,onChange:k,pendingNav:j,cancelPendingNav:N,discardAndNavigate:M,saveAndNavigate:y}=a(),H=t(()=>o(!u),[u]),F=c("screen",s);return l?/* @__PURE__ */m("div",{className:"sf-msg",children:F.loading}):d?/* @__PURE__ */m("div",{className:"sf-msg sf-msg--error",children:d}):g?i?e(
|
|
7
|
-
/* @__PURE__ */m(f,{config:n,data:i,onChange:k,permissions:H,parts:r,children:/* @__PURE__ */m(v,{})}),j&&/* @__PURE__ */m(p,{saving:"saving"===h,onCancel:N,onDiscard:M,onSave:()=>{y()}})):/* @__PURE__ */m("div",{className:"sf-msg",children:F.loading}):/* @__PURE__ */m("div",{className:"sf-msg",children:F.waitingForAuthorization})}export{k as DocumentScreen,u as ScreenMount};
|
package/dist/chunk-UK2FQOUT.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{find as t,remove as n,getList as e,newId as r,duplicate as o,move as l,copyNode as a,insert as c,setProps as d,slotsOf as i}from"./chunk-KRXQM65X.js";import{useRef as s,useSyncExternalStore as p,useCallback as u,useMemo as f}from"react";var m=t=>({kind:"node",id:t});function x(r,o,l,a="none"){const c=t(r,o,l),d=n(r,o,l);if("none"===a||!c)return{data:d,select:null};const i=e(r,o,c.place)??[],s=i[c.place.index+1]??i[c.place.index-1];return s?.props?.id?{data:d,select:m(s.props.id)}:"root"!==c.place.parentId?{data:d,select:m(c.place.parentId)}:{data:d,select:null}}function I(n,e,l,a={}){const c=t(n,e,l)?.node,d=a.id??r(c?.type??"Node");return{data:o(n,e,l,{strip:a.strip,id:d}),select:m(d)}}function g(t,n,e,r){return{data:l(t,n,e,r),select:m(e)}}var v=(t,n)=>({min:0,max:n-1});function b(n,r,o,l,a=v){const c=t(n,r,o);if(!c)return!1;const d=e(n,r,c.place)?.length??0,{min:i,max:s}=a(c.place,d),p=c.place.index+l;return c.place.index>=i&&c.place.index<=s&&p>=i&&p<=s}function h(n,e,r,o,l=v){if(!b(n,e,r,o,l))return null;const a=t(n,e,r);return g(n,e,r,{...a.place,index:a.place.index+o})}function k(t,n,e,r,o={}){const l=a(e,n,{strip:o.strip});return{data:c(t,n,r,l),select:m(l.props.id)}}function y(t,n,e,r){return{data:d(t,n,e,r),select:void 0}}function O(n,e,r,o=()=>!1){if(!r)return null;if("slot"===r.kind)return t(n,e,r.parentId)?m(r.parentId):null;const l=t(n,e,r.id);if(!l||"root"===l.place.parentId)return null;const a=t(n,e,l.place.parentId);return a?o(a.node,l.place.slot)?{kind:"slot",parentId:a.node.props.id,slot:l.place.slot}:m(a.node.props.id):null}function z(n,e,r){const o=t(n,e,r);return o?[...o.path.filter(t=>"root"!==t.parentId).map(t=>t.parentId),r]:[]}function R(t,n){if(0===t.length)return null;const e=null===n?-1:t.indexOf(n);return-1===e?t[0]:t[Math.min(e+1,t.length-1)]}function B(n,e,r,o){const l=t(n,e,r);return l?0===i(l.node,e).length?r:R(z(n,e,r),o):null}function M(n,e,r){if(!r||"node"!==r.kind)return null;const o=t(n,e,r.id);return o?{zone:`${o.place.parentId}:${o.place.slot}`,index:o.place.index}:null}function X(t,n,r){if(!r)return null;const[o,l]=(r.zone??"root:default-zone").split(/:(.*)/s),a={parentId:o,slot:l},c=e(t,n,a)?.[r.index];return c?.props?.id?m(c.props.id):null}var $={get:()=>null,set:()=>{},subscribe:()=>()=>{}};function j(n){const e=s(n);e.current=n;const r=n.clipboard??$,o=p(r.subscribe,r.get,r.get),l=u(t=>{const n=e.current;if(n.readOnly)return!1;const r=t(n.data,n.config);return!!r&&((r.data!==n.data||void 0!==r.select)&&(n.commit(r.data,{select:r.select}),e.current={...n,data:r.data},!0))},[]);return f(()=>{const n=()=>e.current,r=(e,r)=>{const o=t(n().data,n().config,e);return o?{node:o.node,label:r,from:{parentId:o.place.parentId,slot:o.place.slot}}:null};return{held:o,remove:t=>l((e,r)=>x(e,r,t,n().afterRemove)),duplicate:t=>l((e,r)=>I(e,r,t,{strip:n().strip})),move:(t,n)=>l((e,r)=>g(e,r,t,n)),step:(t,e)=>l((r,o)=>h(r,o,t,e,n().stepBounds)),canStep:(t,e)=>b(n().data,n().config,t,e,n().stepBounds),setProps:(t,n)=>l((e,r)=>y(e,r,t,n)),copy:(t,e)=>{const o=r(t,e);return o&&(n().clipboard??$).set(o),!!o},cut:(t,e)=>{if(n().readOnly)return!1;const o=r(t,e);return!!o&&((n().clipboard??$).set(o),l((e,r)=>x(e,r,t,n().afterRemove)))},paste:t=>{const e=(n().clipboard??$).get();return!!e&&l((r,o)=>k(r,o,e.node,t,{strip:n().strip}))},parentOf:t=>O(n().data,n().config,t,n().slotIsLevel)}},[o,l])}export{b as canStep,B as clickPick,X as fromItemSelector,R as nextInChain,z as nodeChain,O as parentStep,I as planDuplicate,g as planMove,k as planPaste,x as planRemove,y as planSetProps,h as planStep,M as toItemSelector,j as useNodeOps};
|