efficient-easel 3.6.0 → 4.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.
Files changed (78) hide show
  1. package/README.md +3 -1
  2. package/dist/{CanvasDragLayer-zgYT1xwY.d.ts → CanvasDragLayer-DVJGgA-g.d.ts} +13 -1
  3. package/dist/blocks/index.d.ts +2 -2
  4. package/dist/chunk-4JSBIW5H.js +9 -0
  5. package/dist/{chunk-OFNXIZEP.js → chunk-4YBMSUPL.js} +1 -1
  6. package/dist/chunk-7GVPKRW2.js +14 -0
  7. package/dist/{chunk-6B4276GZ.js → chunk-D4BUPPPV.js} +1 -1
  8. package/dist/chunk-FUOZKV7A.js +9 -0
  9. package/dist/chunk-KFMJ4IM4.js +5 -0
  10. package/dist/chunk-LJOYIXO4.js +65 -0
  11. package/dist/{chunk-CRPJGCSO.js → chunk-NJOPEWYN.js} +16 -16
  12. package/dist/{chunk-UVAIY7VO.js → chunk-QBJJVMVB.js} +1 -1
  13. package/dist/chunk-QEWRHH6R.js +5 -0
  14. package/dist/{chunk-FRGCTHDB.js → chunk-SNMCF2ZD.js} +1 -1
  15. package/dist/{chunk-ZN752E2O.js → chunk-TJOUAFJE.js} +1 -1
  16. package/dist/chunk-UK2FQOUT.js +1 -0
  17. package/dist/{chunk-J2JBETVO.js → chunk-X2GNFJRC.js} +1 -1
  18. package/dist/{chunk-6QSPOILR.js → chunk-XJPNW26S.js} +1 -1
  19. package/dist/{chunk-MTRFMGBO.js → chunk-ZHTQCAQ2.js} +1 -1
  20. package/dist/drag/drag.css +5 -56
  21. package/dist/drag/index.d.ts +1 -1
  22. package/dist/drag/index.js +1 -1
  23. package/dist/easel/index.d.ts +5 -5
  24. package/dist/easel/index.js +1 -1
  25. package/dist/fields/index.js +1 -1
  26. package/dist/node-ops/index.d.ts +2 -2
  27. package/dist/node-ops/index.js +1 -1
  28. package/dist/{plan-BdQ9mLIf.d.ts → plan-CHKjPr6l.d.ts} +10 -1
  29. package/dist/screen/components/AddBlockRow.js +1 -1
  30. package/dist/screen/components/AddSidePanel.js +1 -1
  31. package/dist/screen/components/MediaSidePanel.d.ts +2 -2
  32. package/dist/screen/components/MediaSidePanel.js +1 -1
  33. package/dist/screen/components/NodeContextMenu.d.ts +5 -5
  34. package/dist/screen/components/NodeContextMenu.js +1 -1
  35. package/dist/screen/components/ScreenChrome.js +1 -1
  36. package/dist/screen/components/ScreenDocumentContext.d.ts +2 -2
  37. package/dist/screen/components/ScreenMount.d.ts +4 -4
  38. package/dist/screen/components/ScreenMount.js +1 -1
  39. package/dist/screen/components/ScreenStoreProvider.d.ts +4 -4
  40. package/dist/screen/components/ScreenStoreProvider.js +1 -1
  41. package/dist/screen/components/SectionScreenShell.js +16 -16
  42. package/dist/screen/components/usePartBridge.d.ts +4 -4
  43. package/dist/screen/components/usePartBridge.js +1 -1
  44. package/dist/screen/index.d.ts +4 -4
  45. package/dist/screen/index.js +1 -1
  46. package/dist/screen/lib/admin-bridge.d.ts +2 -2
  47. package/dist/screen/lib/document-addressing.d.ts +2 -2
  48. package/dist/screen/lib/document-hooks.d.ts +2 -2
  49. package/dist/screen/lib/host.d.ts +2 -2
  50. package/dist/screen/lib/key-scope.js +1 -1
  51. package/dist/screen/lib/media-panel.d.ts +2 -2
  52. package/dist/screen/lib/media-picker.d.ts +2 -2
  53. package/dist/screen/lib/page-lock.d.ts +2 -2
  54. package/dist/screen/lib/puck/palette-sections.d.ts +2 -2
  55. package/dist/screen/lib/puck/section-doc.d.ts +2 -2
  56. package/dist/screen/lib/puck/style-clipboard.d.ts +4 -4
  57. package/dist/screen/lib/puck/use-section-ops.d.ts +2 -2
  58. package/dist/screen/lib/puck/use-section-ops.js +1 -1
  59. package/dist/screen/lib/screen-parts.d.ts +4 -4
  60. package/dist/screen/lib/screen-parts.js +1 -1
  61. package/dist/screen/lib/section-templates.d.ts +2 -2
  62. package/dist/screen/lib/session-context.d.ts +2 -2
  63. package/dist/screen/lib/session.d.ts +2 -2
  64. package/dist/screen/screen.css +9 -42
  65. package/dist/tree/index.d.ts +8 -4
  66. package/dist/tree/index.js +1 -1
  67. package/dist/tree/tree.css +6 -3
  68. package/dist/{types-BqGnUVX5.d.ts → types-BLRK6_JO.d.ts} +7 -0
  69. package/dist/{types-CGFykP7c.d.ts → types-tNFRS_AW.d.ts} +1 -1
  70. package/dist/{useNodeOps-B3e4b8a2.d.ts → useNodeOps-CLbZyd43.d.ts} +1 -1
  71. package/package.json +3 -3
  72. package/dist/chunk-55IKQFBW.js +0 -5
  73. package/dist/chunk-6HHHBBSY.js +0 -16
  74. package/dist/chunk-PDZXAFNX.js +0 -9
  75. package/dist/chunk-QASZFO4S.js +0 -1
  76. package/dist/chunk-QVWPI2FL.js +0 -5
  77. package/dist/chunk-TNTV7UZ6.js +0 -65
  78. package/dist/chunk-UFY6RNMT.js +0 -9
@@ -7,24 +7,24 @@ export { A as AnyDocumentAddressing, D as DETACHED_EASEL_HOST, a as DocumentAddr
7
7
  export { EaselCapabilities, EaselDocument, EaselDocumentAdapter, EaselPageRow, SiteRecord, SiteRecordPatch, WebsiteEditLock } from './lib/document-contract.js';
8
8
  import 'react';
9
9
  import '../blocks/index.js';
10
- import '../types-CGFykP7c.js';
10
+ import '../types-tNFRS_AW.js';
11
11
  import '../data/index.js';
12
12
  import '../types-41704JE4.js';
13
13
  import '../resolve-D68pb3Bx.js';
14
- import '../plan-BdQ9mLIf.js';
14
+ import '../plan-CHKjPr6l.js';
15
15
  import '../watch-BTYOJpQU.js';
16
16
  import '../types-Dt1CFR1S.js';
17
17
  import '../types-CsgMwHHa.js';
18
18
  import '../wordFit-7XpmhcaW.js';
19
19
  import '../edit-lock/index.js';
20
20
  import '../panelWidths-D9hTLR25.js';
21
- import '../CanvasDragLayer-zgYT1xwY.js';
21
+ import '../CanvasDragLayer-DVJGgA-g.js';
22
22
  import '../session-DSQFmIvx.js';
23
23
  import '../words-BDignMl_.js';
24
24
  import '../types-BsyPh6EW.js';
25
25
  import '../style-clipboard/index.js';
26
26
  import '../words-CnnHb9jo.js';
27
- import '../types-BqGnUVX5.js';
27
+ import '../types-BLRK6_JO.js';
28
28
  import '../words-Cl9xMUYY.js';
29
29
  import './components/AddSidePanel.js';
30
30
  import './lib/section-template-types.js';
@@ -1 +1 @@
1
- import"../chunk-GZO72N3Q.js";export{DocumentScreen,ScreenMount}from"../chunk-6B4276GZ.js";import"../chunk-GXQCZJOP.js";export{ScreenStoreProvider}from"../chunk-6QSPOILR.js";import"../chunk-TNTV7UZ6.js";import"../chunk-26OOWIJJ.js";import"../chunk-7P6IFCR4.js";import"../chunk-FGNR22NY.js";import"../chunk-ZE7I3PLX.js";import"../chunk-2GVCAIPX.js";import"../chunk-PAM3NLFL.js";import"../chunk-7F52SZOI.js";import"../chunk-R2HLPNQF.js";import"../chunk-TBF5CVPA.js";import"../chunk-4ES5JGGX.js";import"../chunk-IQ5TA7AM.js";import"../chunk-DUVRZ456.js";import"../chunk-6W7WLPZH.js";import"../chunk-J2JBETVO.js";import"../chunk-KCBEE2MC.js";import"../chunk-42TMLDSQ.js";import"../chunk-OFNXIZEP.js";import"../chunk-FRGCTHDB.js";import"../chunk-IYT6NN2J.js";import"../chunk-MTRFMGBO.js";import"../chunk-2I7MAA2U.js";import"../chunk-BSPCSC45.js";import"../chunk-I54UCYOU.js";import"../chunk-GOTN2KY4.js";import"../chunk-R5L2E7JX.js";import"../chunk-WZMU646D.js";import"../chunk-S4AWJX4Q.js";import"../chunk-ERR437B5.js";import"../chunk-KG7RJWOK.js";import"../chunk-GMCZXMOV.js";export{NO_DOCUMENT_ADDRESSING}from"../chunk-RLBXE4EU.js";import"../chunk-HNKB2ZYR.js";import"../chunk-CLOS6SSX.js";import"../chunk-VPFNZ7TB.js";import"../chunk-LOMEH6DG.js";import"../chunk-V7U33NF2.js";import"../chunk-5545A3PC.js";import"../chunk-QVWPI2FL.js";import"../chunk-5ZBY24K7.js";import"../chunk-PA3PNTVV.js";import"../chunk-BVN33R76.js";import"../chunk-5SOSVTVI.js";import"../chunk-KQMML6JM.js";import"../chunk-KCOBHPN6.js";export{EaselSessionProvider,useEaselSession}from"../chunk-O7Q4DDJT.js";export{EFFICIENT_BACKEND,activateEaselSession,backendOf,createEaselSession,currentEaselSession,deactivateEaselSession,efficientClientOpen,isEfficientBackend,provideDefaultBackend,resetAmbientEaselSession,sessionRegistry,setSessionBridgedSite,setSessionDocumentSite}from"../chunk-RSCMJIWS.js";import"../chunk-HQ4VVRIC.js";import"../chunk-ZN752E2O.js";export{SELECTION_MODE,ScreenCanvasTargetProvider,ScreenPartsProvider,isPinnedFirst,isPinnedLast,isSlotMode,sameInspectorMode,screenSlotsOf,useScreenAdd,useScreenBlockLook,useScreenBlockRules,useScreenBridges,useScreenCanvasDrag,useScreenCanvasFrame,useScreenCanvasHead,useScreenCanvasTarget,useScreenDevices,useScreenDocumentLabel,useScreenDocumentPass,useScreenInspectorPanel,useScreenLeftView,useScreenNodeKeys,useScreenNotify,useScreenOwnerName,useScreenParts,useScreenPickFollowsSelection,useScreenPinned,useScreenSaveSwitch,useScreenStorageNamespace,useScreenStyleClipboard,useStandaloneScreenBridges}from"../chunk-55IKQFBW.js";import"../chunk-PLVEGYK6.js";import"../chunk-R6WTQWAC.js";export{DETACHED_EASEL_HOST,EaselHostContext,EaselHostProvider,createEaselHost,useEaselHost,useHostEscape}from"../chunk-U3JP4VGF.js";import"../chunk-6WY6ZXJG.js";import"../chunk-MCHMF32I.js";import"../chunk-PDZXAFNX.js";import"../chunk-AELNNAFM.js";import"../chunk-CRPJGCSO.js";import"../chunk-OZ72A6MY.js";import"../chunk-UFY6RNMT.js";import"../chunk-YNOZ5NXW.js";import"../chunk-K56YDHYQ.js";import"../chunk-QTLAVDJE.js";import"../chunk-YRLPFZW3.js";import"../chunk-BXMXTO36.js";import"../chunk-EA2HTX37.js";import"../chunk-OSPUG6S6.js";import"../chunk-WK3AFPXY.js";import"../chunk-QASZFO4S.js";import"../chunk-4VJATVVR.js";import"../chunk-BDTITTMW.js";import"../chunk-H6DDIBQ4.js";import"../chunk-GTDLBUOC.js";import"../chunk-Y2G7CU6A.js";import"../chunk-THWO5YVZ.js";import"../chunk-RE4LP46F.js";import"../chunk-MJM6SFD3.js";import"../chunk-2OAZYSWJ.js";import"../chunk-66LWADFP.js";import"../chunk-QLD57GBB.js";import"../chunk-FFYXVAAL.js";import"../chunk-MFIRYGHW.js";import"../chunk-6HHHBBSY.js";import"../chunk-O2NLQBFX.js";import"../chunk-67GNT6PF.js";import"../chunk-PAELDYYS.js";import"../chunk-ZNCEOSXO.js";import"../chunk-P2VEMZH5.js";import"../chunk-KRXQM65X.js";import"../chunk-NKB3KVAB.js";
1
+ import"../chunk-GZO72N3Q.js";export{DocumentScreen,ScreenMount}from"../chunk-D4BUPPPV.js";import"../chunk-GXQCZJOP.js";export{ScreenStoreProvider}from"../chunk-XJPNW26S.js";import"../chunk-LJOYIXO4.js";import"../chunk-26OOWIJJ.js";import"../chunk-7P6IFCR4.js";import"../chunk-FGNR22NY.js";import"../chunk-ZE7I3PLX.js";import"../chunk-2GVCAIPX.js";import"../chunk-PAM3NLFL.js";import"../chunk-7F52SZOI.js";import"../chunk-R2HLPNQF.js";import"../chunk-TBF5CVPA.js";import"../chunk-4ES5JGGX.js";import"../chunk-IQ5TA7AM.js";import"../chunk-DUVRZ456.js";import"../chunk-6W7WLPZH.js";import"../chunk-X2GNFJRC.js";import"../chunk-KCBEE2MC.js";import"../chunk-42TMLDSQ.js";import"../chunk-4YBMSUPL.js";import"../chunk-SNMCF2ZD.js";import"../chunk-IYT6NN2J.js";import"../chunk-ZHTQCAQ2.js";import"../chunk-2I7MAA2U.js";import"../chunk-BSPCSC45.js";import"../chunk-I54UCYOU.js";import"../chunk-GOTN2KY4.js";import"../chunk-R5L2E7JX.js";import"../chunk-WZMU646D.js";import"../chunk-S4AWJX4Q.js";import"../chunk-ERR437B5.js";import"../chunk-KG7RJWOK.js";import"../chunk-GMCZXMOV.js";export{NO_DOCUMENT_ADDRESSING}from"../chunk-RLBXE4EU.js";import"../chunk-HNKB2ZYR.js";import"../chunk-CLOS6SSX.js";import"../chunk-VPFNZ7TB.js";import"../chunk-LOMEH6DG.js";import"../chunk-V7U33NF2.js";import"../chunk-5545A3PC.js";import"../chunk-QEWRHH6R.js";import"../chunk-5ZBY24K7.js";import"../chunk-PA3PNTVV.js";import"../chunk-BVN33R76.js";import"../chunk-5SOSVTVI.js";import"../chunk-KQMML6JM.js";import"../chunk-KCOBHPN6.js";export{EaselSessionProvider,useEaselSession}from"../chunk-O7Q4DDJT.js";export{EFFICIENT_BACKEND,activateEaselSession,backendOf,createEaselSession,currentEaselSession,deactivateEaselSession,efficientClientOpen,isEfficientBackend,provideDefaultBackend,resetAmbientEaselSession,sessionRegistry,setSessionBridgedSite,setSessionDocumentSite}from"../chunk-RSCMJIWS.js";import"../chunk-HQ4VVRIC.js";import"../chunk-TJOUAFJE.js";export{SELECTION_MODE,ScreenCanvasTargetProvider,ScreenPartsProvider,isPinnedFirst,isPinnedLast,isSlotMode,sameInspectorMode,screenSlotsOf,useScreenAdd,useScreenBlockLook,useScreenBlockRules,useScreenBridges,useScreenCanvasDrag,useScreenCanvasFrame,useScreenCanvasHead,useScreenCanvasTarget,useScreenDevices,useScreenDocumentLabel,useScreenDocumentPass,useScreenInspectorPanel,useScreenLeftView,useScreenNodeKeys,useScreenNotify,useScreenOwnerName,useScreenParts,useScreenPickFollowsSelection,useScreenPinned,useScreenSaveSwitch,useScreenStorageNamespace,useScreenStyleClipboard,useStandaloneScreenBridges}from"../chunk-KFMJ4IM4.js";import"../chunk-PLVEGYK6.js";import"../chunk-R6WTQWAC.js";export{DETACHED_EASEL_HOST,EaselHostContext,EaselHostProvider,createEaselHost,useEaselHost,useHostEscape}from"../chunk-U3JP4VGF.js";import"../chunk-6WY6ZXJG.js";import"../chunk-MCHMF32I.js";import"../chunk-FUOZKV7A.js";import"../chunk-AELNNAFM.js";import"../chunk-NJOPEWYN.js";import"../chunk-OZ72A6MY.js";import"../chunk-4JSBIW5H.js";import"../chunk-YNOZ5NXW.js";import"../chunk-K56YDHYQ.js";import"../chunk-QTLAVDJE.js";import"../chunk-YRLPFZW3.js";import"../chunk-BXMXTO36.js";import"../chunk-EA2HTX37.js";import"../chunk-OSPUG6S6.js";import"../chunk-WK3AFPXY.js";import"../chunk-UK2FQOUT.js";import"../chunk-4VJATVVR.js";import"../chunk-BDTITTMW.js";import"../chunk-H6DDIBQ4.js";import"../chunk-GTDLBUOC.js";import"../chunk-Y2G7CU6A.js";import"../chunk-THWO5YVZ.js";import"../chunk-RE4LP46F.js";import"../chunk-MJM6SFD3.js";import"../chunk-2OAZYSWJ.js";import"../chunk-66LWADFP.js";import"../chunk-QLD57GBB.js";import"../chunk-FFYXVAAL.js";import"../chunk-MFIRYGHW.js";import"../chunk-7GVPKRW2.js";import"../chunk-O2NLQBFX.js";import"../chunk-67GNT6PF.js";import"../chunk-P2VEMZH5.js";import"../chunk-KRXQM65X.js";import"../chunk-NKB3KVAB.js";import"../chunk-PAELDYYS.js";import"../chunk-ZNCEOSXO.js";
@@ -1,11 +1,11 @@
1
1
  import { RefObject } from 'react';
2
2
  import { EaselSession } from './session.js';
3
3
  import '../../blocks/index.js';
4
- import '../../types-CGFykP7c.js';
4
+ import '../../types-tNFRS_AW.js';
5
5
  import '../../data/index.js';
6
6
  import '../../types-41704JE4.js';
7
7
  import '../../resolve-D68pb3Bx.js';
8
- import '../../plan-BdQ9mLIf.js';
8
+ import '../../plan-CHKjPr6l.js';
9
9
  import './backend-error.js';
10
10
  import '../../edit-lock/index.js';
11
11
  import './host-chrome.js';
@@ -3,11 +3,11 @@ import './document-contract.js';
3
3
  import './session.js';
4
4
  import 'react';
5
5
  import '../../blocks/index.js';
6
- import '../../types-CGFykP7c.js';
6
+ import '../../types-tNFRS_AW.js';
7
7
  import '../../data/index.js';
8
8
  import '../../types-41704JE4.js';
9
9
  import '../../resolve-D68pb3Bx.js';
10
- import '../../plan-BdQ9mLIf.js';
10
+ import '../../plan-CHKjPr6l.js';
11
11
  import './document-switch.js';
12
12
  import '../../engine-DBxp_v6B.js';
13
13
  import '../../edit-lock/index.js';
@@ -1,11 +1,11 @@
1
1
  import { Data } from '../../blocks/index.js';
2
2
  import { EaselCapabilities } from './document-contract.js';
3
3
  import 'react';
4
- import '../../types-CGFykP7c.js';
4
+ import '../../types-tNFRS_AW.js';
5
5
  import '../../data/index.js';
6
6
  import '../../types-41704JE4.js';
7
7
  import '../../resolve-D68pb3Bx.js';
8
- import '../../plan-BdQ9mLIf.js';
8
+ import '../../plan-CHKjPr6l.js';
9
9
 
10
10
  /**
11
11
  * WHAT A HOST DOES TO A DOCUMENT AS IT OPENS AND AS IT IS STORED.
@@ -1,11 +1,11 @@
1
1
  import 'react';
2
2
  export { D as DETACHED_EASEL_HOST, E as EaselHost, b as EaselHostAddress, c as EaselHostContext, d as EaselHostProvider, e as EaselMessageType, f as EaselToHostMessage, H as HostPickedMedia, g as HostToEaselMessage, I as InboundHostMessage, S as SectionScreenTarget, h as SendToHost, i as createEaselHost, u as useEaselHost, j as useHostEscape } from '../../host-CiuzZJXj.js';
3
3
  import '../../blocks/index.js';
4
- import '../../types-CGFykP7c.js';
4
+ import '../../types-tNFRS_AW.js';
5
5
  import '../../data/index.js';
6
6
  import '../../types-41704JE4.js';
7
7
  import '../../resolve-D68pb3Bx.js';
8
- import '../../plan-BdQ9mLIf.js';
8
+ import '../../plan-CHKjPr6l.js';
9
9
  import './document-contract.js';
10
10
  import './session.js';
11
11
  import './backend-error.js';
@@ -1 +1 @@
1
- export{editorRootFocus,useEaselKeyTarget,useEaselUndoKeys}from"../../chunk-J2JBETVO.js";import"../../chunk-U3JP4VGF.js";import"../../chunk-PDZXAFNX.js";import"../../chunk-AELNNAFM.js";import"../../chunk-YRLPFZW3.js";import"../../chunk-QASZFO4S.js";import"../../chunk-MFIRYGHW.js";import"../../chunk-ZNCEOSXO.js";import"../../chunk-KRXQM65X.js";import"../../chunk-NKB3KVAB.js";
1
+ export{editorRootFocus,useEaselKeyTarget,useEaselUndoKeys}from"../../chunk-X2GNFJRC.js";import"../../chunk-U3JP4VGF.js";import"../../chunk-FUOZKV7A.js";import"../../chunk-AELNNAFM.js";import"../../chunk-YRLPFZW3.js";import"../../chunk-UK2FQOUT.js";import"../../chunk-MFIRYGHW.js";import"../../chunk-KRXQM65X.js";import"../../chunk-NKB3KVAB.js";import"../../chunk-ZNCEOSXO.js";
@@ -2,11 +2,11 @@ import * as react from 'react';
2
2
  import { ComponentType, ReactNode } from 'react';
3
3
  import { H as HostPickedMedia, E as EaselHost } from '../../host-CiuzZJXj.js';
4
4
  import '../../blocks/index.js';
5
- import '../../types-CGFykP7c.js';
5
+ import '../../types-tNFRS_AW.js';
6
6
  import '../../data/index.js';
7
7
  import '../../types-41704JE4.js';
8
8
  import '../../resolve-D68pb3Bx.js';
9
- import '../../plan-BdQ9mLIf.js';
9
+ import '../../plan-CHKjPr6l.js';
10
10
  import './document-contract.js';
11
11
  import './session.js';
12
12
  import './backend-error.js';
@@ -1,11 +1,11 @@
1
1
  import { E as EaselHost } from '../../host-CiuzZJXj.js';
2
2
  import 'react';
3
3
  import '../../blocks/index.js';
4
- import '../../types-CGFykP7c.js';
4
+ import '../../types-tNFRS_AW.js';
5
5
  import '../../data/index.js';
6
6
  import '../../types-41704JE4.js';
7
7
  import '../../resolve-D68pb3Bx.js';
8
- import '../../plan-BdQ9mLIf.js';
8
+ import '../../plan-CHKjPr6l.js';
9
9
  import './document-contract.js';
10
10
  import './session.js';
11
11
  import './backend-error.js';
@@ -2,11 +2,11 @@ import { EditLock } from '../../edit-lock/index.js';
2
2
  import { EaselSession } from './session.js';
3
3
  import '../../blocks/index.js';
4
4
  import 'react';
5
- import '../../types-CGFykP7c.js';
5
+ import '../../types-tNFRS_AW.js';
6
6
  import '../../data/index.js';
7
7
  import '../../types-41704JE4.js';
8
8
  import '../../resolve-D68pb3Bx.js';
9
- import '../../plan-BdQ9mLIf.js';
9
+ import '../../plan-CHKjPr6l.js';
10
10
  import './backend-error.js';
11
11
  import './host-chrome.js';
12
12
  import './links/link-filters.js';
@@ -1,10 +1,10 @@
1
1
  import { Config } from '../../../blocks/index.js';
2
2
  import 'react';
3
- import '../../../types-CGFykP7c.js';
3
+ import '../../../types-tNFRS_AW.js';
4
4
  import '../../../data/index.js';
5
5
  import '../../../types-41704JE4.js';
6
6
  import '../../../resolve-D68pb3Bx.js';
7
- import '../../../plan-BdQ9mLIf.js';
7
+ import '../../../plan-CHKjPr6l.js';
8
8
 
9
9
  /** One offerable section, with the category it is grouped under. */
10
10
  type PaletteSection = {
@@ -1,11 +1,11 @@
1
1
  import { Data } from '../../../blocks/index.js';
2
2
  import { TreeItem } from './content-tree.js';
3
3
  import 'react';
4
- import '../../../types-CGFykP7c.js';
4
+ import '../../../types-tNFRS_AW.js';
5
5
  import '../../../data/index.js';
6
6
  import '../../../types-41704JE4.js';
7
7
  import '../../../resolve-D68pb3Bx.js';
8
- import '../../../plan-BdQ9mLIf.js';
8
+ import '../../../plan-CHKjPr6l.js';
9
9
 
10
10
  declare function nodeToDoc(node: TreeItem): Data;
11
11
  declare function docToNode(data: Data): TreeItem | null;
@@ -5,21 +5,21 @@ import { panelFieldsOf } from './panel-fields.js';
5
5
  import '../../../types-BsyPh6EW.js';
6
6
  import 'react';
7
7
  import '../../../blocks/index.js';
8
- import '../../../types-CGFykP7c.js';
8
+ import '../../../types-tNFRS_AW.js';
9
9
  import '../../../data/index.js';
10
10
  import '../../../types-41704JE4.js';
11
11
  import '../../../resolve-D68pb3Bx.js';
12
- import '../../../plan-BdQ9mLIf.js';
12
+ import '../../../plan-CHKjPr6l.js';
13
13
  import '../../../watch-BTYOJpQU.js';
14
14
  import '../../../types-Dt1CFR1S.js';
15
15
  import '../../../types-CsgMwHHa.js';
16
16
  import '../../../wordFit-7XpmhcaW.js';
17
17
  import '../../../edit-lock/index.js';
18
18
  import '../../../panelWidths-D9hTLR25.js';
19
- import '../../../CanvasDragLayer-zgYT1xwY.js';
19
+ import '../../../CanvasDragLayer-DVJGgA-g.js';
20
20
  import '../../../session-DSQFmIvx.js';
21
21
  import '../../../words-BDignMl_.js';
22
- import '../../../types-BqGnUVX5.js';
22
+ import '../../../types-BLRK6_JO.js';
23
23
  import '../../../words-Cl9xMUYY.js';
24
24
  import '../../components/AddSidePanel.js';
25
25
  import '../section-template-types.js';
@@ -1,9 +1,9 @@
1
- import { N as NodeSelection } from '../../../plan-BdQ9mLIf.js';
1
+ import { N as NodeSelection } from '../../../plan-CHKjPr6l.js';
2
2
  import { Data } from '../../../blocks/index.js';
3
3
  import { TreeItem } from './content-tree.js';
4
4
  import '../../../types-41704JE4.js';
5
5
  import 'react';
6
- import '../../../types-CGFykP7c.js';
6
+ import '../../../types-tNFRS_AW.js';
7
7
  import '../../../data/index.js';
8
8
  import '../../../resolve-D68pb3Bx.js';
9
9
 
@@ -1 +1 @@
1
- export{useSectionOps}from"../../../chunk-FRGCTHDB.js";import"../../../chunk-55IKQFBW.js";import"../../../chunk-PLVEGYK6.js";import"../../../chunk-R6WTQWAC.js";import"../../../chunk-U3JP4VGF.js";import"../../../chunk-PDZXAFNX.js";import"../../../chunk-AELNNAFM.js";import"../../../chunk-CRPJGCSO.js";import"../../../chunk-OZ72A6MY.js";import"../../../chunk-UFY6RNMT.js";import"../../../chunk-YNOZ5NXW.js";import"../../../chunk-K56YDHYQ.js";import"../../../chunk-QTLAVDJE.js";import"../../../chunk-YRLPFZW3.js";import"../../../chunk-EA2HTX37.js";import"../../../chunk-QASZFO4S.js";import"../../../chunk-66LWADFP.js";import"../../../chunk-QLD57GBB.js";import"../../../chunk-FFYXVAAL.js";import"../../../chunk-MFIRYGHW.js";import"../../../chunk-67GNT6PF.js";import"../../../chunk-ZNCEOSXO.js";import"../../../chunk-P2VEMZH5.js";import"../../../chunk-KRXQM65X.js";import"../../../chunk-NKB3KVAB.js";
1
+ export{useSectionOps}from"../../../chunk-SNMCF2ZD.js";import"../../../chunk-KFMJ4IM4.js";import"../../../chunk-PLVEGYK6.js";import"../../../chunk-R6WTQWAC.js";import"../../../chunk-U3JP4VGF.js";import"../../../chunk-FUOZKV7A.js";import"../../../chunk-AELNNAFM.js";import"../../../chunk-NJOPEWYN.js";import"../../../chunk-OZ72A6MY.js";import"../../../chunk-4JSBIW5H.js";import"../../../chunk-YNOZ5NXW.js";import"../../../chunk-K56YDHYQ.js";import"../../../chunk-QTLAVDJE.js";import"../../../chunk-YRLPFZW3.js";import"../../../chunk-EA2HTX37.js";import"../../../chunk-UK2FQOUT.js";import"../../../chunk-66LWADFP.js";import"../../../chunk-QLD57GBB.js";import"../../../chunk-FFYXVAAL.js";import"../../../chunk-MFIRYGHW.js";import"../../../chunk-67GNT6PF.js";import"../../../chunk-P2VEMZH5.js";import"../../../chunk-KRXQM65X.js";import"../../../chunk-NKB3KVAB.js";import"../../../chunk-ZNCEOSXO.js";
@@ -4,21 +4,21 @@ import { Data } from '../../blocks/index.js';
4
4
  import { C as CanvasTarget } from '../../watch-BTYOJpQU.js';
5
5
  import { D as DeviceOption } from '../../types-Dt1CFR1S.js';
6
6
  import { P as Place } from '../../types-41704JE4.js';
7
- import { M as MeasuredCanvas, C as CanvasDragModel } from '../../CanvasDragLayer-zgYT1xwY.js';
7
+ import { M as MeasuredCanvas, C as CanvasDragModel } from '../../CanvasDragLayer-DVJGgA-g.js';
8
8
  import { E as EaselContextMenuItem } from '../../types-BsyPh6EW.js';
9
9
  import { a as EaselRailItem } from '../../types-CsgMwHHa.js';
10
10
  import { StyleRow } from '../../style-clipboard/index.js';
11
- import { T as TreeRowMark } from '../../types-BqGnUVX5.js';
11
+ import { T as TreeRowMark } from '../../types-BLRK6_JO.js';
12
12
  import { AddKey } from '../components/AddSidePanel.js';
13
13
  import { k as AnyScreenTarget } from '../../host-CiuzZJXj.js';
14
14
  import { HostProduct } from './host-chrome.js';
15
15
  import { EaselSession } from './session.js';
16
16
  import { AddTarget } from './puck/add-target-types.js';
17
17
  import { SlotConfigView } from './puck/content-tree.js';
18
- import '../../types-CGFykP7c.js';
18
+ import '../../types-tNFRS_AW.js';
19
19
  import '../../data/index.js';
20
20
  import '../../resolve-D68pb3Bx.js';
21
- import '../../plan-BdQ9mLIf.js';
21
+ import '../../plan-CHKjPr6l.js';
22
22
  import '../../edit-lock/index.js';
23
23
  import '../../panelWidths-D9hTLR25.js';
24
24
  import '../../session-DSQFmIvx.js';
@@ -1 +1 @@
1
- export{SELECTION_MODE,ScreenCanvasTargetProvider,ScreenPartsProvider,isPinnedFirst,isPinnedLast,isSlotMode,sameInspectorMode,screenSlotsOf,useScreenAdd,useScreenBlockLook,useScreenBlockRules,useScreenBridges,useScreenCanvasDrag,useScreenCanvasFrame,useScreenCanvasHead,useScreenCanvasTarget,useScreenDevices,useScreenDocumentLabel,useScreenDocumentPass,useScreenInspectorPanel,useScreenLeftView,useScreenNodeKeys,useScreenNotify,useScreenOwnerName,useScreenParts,useScreenPickFollowsSelection,useScreenPinned,useScreenSaveSwitch,useScreenStorageNamespace,useScreenStyleClipboard,useStandaloneScreenBridges}from"../../chunk-55IKQFBW.js";import"../../chunk-PLVEGYK6.js";import"../../chunk-R6WTQWAC.js";import"../../chunk-U3JP4VGF.js";import"../../chunk-PDZXAFNX.js";import"../../chunk-AELNNAFM.js";import"../../chunk-CRPJGCSO.js";import"../../chunk-OZ72A6MY.js";import"../../chunk-UFY6RNMT.js";import"../../chunk-YNOZ5NXW.js";import"../../chunk-K56YDHYQ.js";import"../../chunk-QTLAVDJE.js";import"../../chunk-YRLPFZW3.js";import"../../chunk-EA2HTX37.js";import"../../chunk-QASZFO4S.js";import"../../chunk-66LWADFP.js";import"../../chunk-QLD57GBB.js";import"../../chunk-FFYXVAAL.js";import"../../chunk-MFIRYGHW.js";import"../../chunk-67GNT6PF.js";import"../../chunk-ZNCEOSXO.js";import"../../chunk-P2VEMZH5.js";import"../../chunk-KRXQM65X.js";import"../../chunk-NKB3KVAB.js";
1
+ export{SELECTION_MODE,ScreenCanvasTargetProvider,ScreenPartsProvider,isPinnedFirst,isPinnedLast,isSlotMode,sameInspectorMode,screenSlotsOf,useScreenAdd,useScreenBlockLook,useScreenBlockRules,useScreenBridges,useScreenCanvasDrag,useScreenCanvasFrame,useScreenCanvasHead,useScreenCanvasTarget,useScreenDevices,useScreenDocumentLabel,useScreenDocumentPass,useScreenInspectorPanel,useScreenLeftView,useScreenNodeKeys,useScreenNotify,useScreenOwnerName,useScreenParts,useScreenPickFollowsSelection,useScreenPinned,useScreenSaveSwitch,useScreenStorageNamespace,useScreenStyleClipboard,useStandaloneScreenBridges}from"../../chunk-KFMJ4IM4.js";import"../../chunk-PLVEGYK6.js";import"../../chunk-R6WTQWAC.js";import"../../chunk-U3JP4VGF.js";import"../../chunk-FUOZKV7A.js";import"../../chunk-AELNNAFM.js";import"../../chunk-NJOPEWYN.js";import"../../chunk-OZ72A6MY.js";import"../../chunk-4JSBIW5H.js";import"../../chunk-YNOZ5NXW.js";import"../../chunk-K56YDHYQ.js";import"../../chunk-QTLAVDJE.js";import"../../chunk-YRLPFZW3.js";import"../../chunk-EA2HTX37.js";import"../../chunk-UK2FQOUT.js";import"../../chunk-66LWADFP.js";import"../../chunk-QLD57GBB.js";import"../../chunk-FFYXVAAL.js";import"../../chunk-MFIRYGHW.js";import"../../chunk-67GNT6PF.js";import"../../chunk-P2VEMZH5.js";import"../../chunk-KRXQM65X.js";import"../../chunk-NKB3KVAB.js";import"../../chunk-ZNCEOSXO.js";
@@ -3,11 +3,11 @@ import { EaselSession } from './session.js';
3
3
  import './puck/content-tree.js';
4
4
  import '../../blocks/index.js';
5
5
  import 'react';
6
- import '../../types-CGFykP7c.js';
6
+ import '../../types-tNFRS_AW.js';
7
7
  import '../../data/index.js';
8
8
  import '../../types-41704JE4.js';
9
9
  import '../../resolve-D68pb3Bx.js';
10
- import '../../plan-BdQ9mLIf.js';
10
+ import '../../plan-CHKjPr6l.js';
11
11
  import './backend-error.js';
12
12
  import '../../edit-lock/index.js';
13
13
  import './host-chrome.js';
@@ -2,11 +2,11 @@ import * as react from 'react';
2
2
  import { ReactNode } from 'react';
3
3
  import { EaselSession } from './session.js';
4
4
  import '../../blocks/index.js';
5
- import '../../types-CGFykP7c.js';
5
+ import '../../types-tNFRS_AW.js';
6
6
  import '../../data/index.js';
7
7
  import '../../types-41704JE4.js';
8
8
  import '../../resolve-D68pb3Bx.js';
9
- import '../../plan-BdQ9mLIf.js';
9
+ import '../../plan-CHKjPr6l.js';
10
10
  import './backend-error.js';
11
11
  import '../../edit-lock/index.js';
12
12
  import './host-chrome.js';
@@ -5,11 +5,11 @@ import { WebsiteEditLock } from './document-contract.js';
5
5
  import { EaselDocumentHooks } from './document-hooks.js';
6
6
  import { SectionTemplateStore } from './section-template-types.js';
7
7
  import 'react';
8
- import '../../types-CGFykP7c.js';
8
+ import '../../types-tNFRS_AW.js';
9
9
  import '../../data/index.js';
10
10
  import '../../types-41704JE4.js';
11
11
  import '../../resolve-D68pb3Bx.js';
12
- import '../../plan-BdQ9mLIf.js';
12
+ import '../../plan-CHKjPr6l.js';
13
13
  import '../../edit-lock/index.js';
14
14
  import './links/link-filters.js';
15
15
  import 'efficient-shell/ui';
@@ -337,51 +337,18 @@
337
337
  box-shadow: inset 2px 0 0 var(--sf-accent);
338
338
  }
339
339
 
340
- /* ── Left panel: section tree (wraps Puck.Outline) ────────────────────── */
340
+ /* ── Left panel: section tree ─────────────────────────────────────────────
341
+ The Layers tree is the left panel's scroll box (`lib/puck/tree-reveal`
342
+ scrolls it to the selected row). Nothing more: its ONE inset, 12 a side, is
343
+ `.es-tree`'s (`efficient-easel/tree.css`). This rule used to pad the same
344
+ element a second time (8 / 11 / 10 over `.es-tree`'s 8 / 12 / 12) and to
345
+ re-declare `--es-rhythm-group` 10 and `--es-rhythm-between` 6 for rows that
346
+ stopped reading them when they became the shell's `TreeRow` — their gaps
347
+ are the shell tree's, 4 (Lewis on the Pages panel, 2026-10-13: "packed too
348
+ tight"). */
341
349
  .sf-tree {
342
350
  flex: 1;
343
351
  overflow-y: auto;
344
- /* THE TWO SIDES PAY FOR DIFFERENT THINGS, and they always did.
345
- LEFT 8 — the inset a rounded row needs. The reason WAS "a rounded bar
346
- cannot bleed to a panel edge"; the bars are gone (One Ladder, 2026-09-04)
347
- and the reason survives them unchanged, because every row in the tree is
348
- still a rounded control and an inset control is simply a control.
349
- RIGHT 11 — this element also carries `.sf-scroll`, and
350
- `.sf-scroll::-webkit-scrollbar` is `width: 11px` of REAL, space-taking
351
- gutter, not an overlay. This tree scrolls on almost every page. What used
352
- to live at the row's right end was the caret; it is the count pill now,
353
- and a count sitting under a scrollbar thumb is the same defect wearing a
354
- different glyph.
355
- Everything inside still starts on the same 11px text column, which is what
356
- keeps the words aligned down the panel. */
357
- padding: 0 11px 10px 8px;
358
-
359
- /* ── THE TREE'S RHYTHM — the shell's names, the tree's own density ─────────
360
- `efficient-easel` 0.19.0 stopped hiding its spacing inside literals and gave
361
- each rhythm a name (card 66228, `efficient-easel/panel.css`). The tree reads
362
- those names. It does NOT read the panel's VALUES and does not compute them:
363
-
364
- · Copying 28/7 in would be a second source of truth for numbers the shell
365
- is already the source of — the one rule that sits above a green suite.
366
- · A scale FACTOR off them would be a lie. Lewis picked the tree's two
367
- numbers by eye on 2026-08-31 (`mockups/layers-panel-v9-left-only-and-drag.html`
368
- and `editor-add-and-context-v1.html`): 10 between bars, 6 between rows.
369
- Against the panel that is 10/36 = 0.28 and 6/28 = 0.21 — TWO factors,
370
- not one, so there is no single number to scale by. `panel.css` already
371
- refuses this shape for the same reason, in its own words: 28 was
372
- measured, it is not "10 plus 18".
373
-
374
- So what is shared is the VOCABULARY and the RULE, not the values: `-group`
375
- means "a heading, from what is above it" in both panels and `-between`
376
- means "one row, from the next" in both, each stated once at its own
377
- density. A tree at the panel's 28px a row would scroll forever.
378
-
379
- Declared HERE rather than on `.sf-editor` deliberately — the settings panel
380
- is a sibling reading the same names from the shell, and an override at the
381
- editor root would re-rhythm IT too. `scripts/test-tree-rhythm-tokens.ts` is
382
- the gate. */
383
- --es-rhythm-group: 10px;
384
- --es-rhythm-between: 6px;
385
352
  }
386
353
 
387
354
  .sf-chip {
@@ -1,6 +1,6 @@
1
1
  import * as react from 'react';
2
- import { L as LayersTreeProps, S as SubtreeProps, a as TreeGroupLabelProps, b as TreeEmptySlotProps, c as TreeRowProps, d as TreeRowActionProps, e as TreeSeamProps } from '../types-BqGnUVX5.js';
3
- export { f as TreeRowFold, T as TreeRowMark } from '../types-BqGnUVX5.js';
2
+ import { L as LayersTreeProps, S as SubtreeProps, a as TreeGroupLabelProps, b as TreeEmptySlotProps, c as TreeRowProps, d as TreeRowActionProps, e as TreeSeamProps } from '../types-BLRK6_JO.js';
3
+ export { f as TreeRowFold, T as TreeRowMark } from '../types-BLRK6_JO.js';
4
4
  export { T as TreeWords } from '../words-Cl9xMUYY.js';
5
5
 
6
6
  /**
@@ -9,8 +9,12 @@ export { T as TreeWords } from '../words-Cl9xMUYY.js';
9
9
  * `screen/lib/puck/tree-reveal` scrolls, and the scroll box `tree.css` keeps.
10
10
  */
11
11
  declare function LayersTree({ className, children, rootProps, ariaLabel, words }: LayersTreeProps): react.JSX.Element;
12
- /** A quiet uppercase label over a run of rows — the shell's `TreeGroupLabel`. */
13
- declare function TreeGroupLabel({ children }: TreeGroupLabelProps): react.JSX.Element;
12
+ /**
13
+ * A quiet uppercase label over a run of rows — the shell's `TreeGroupLabel`,
14
+ * with its count and its fold (efficient-shell, "TreeGroupLabel takes a count
15
+ * and folds"): the Pages panel's headings and the Layers panel's are one.
16
+ */
17
+ declare function TreeGroupLabel({ children, count, expanded, onToggle }: TreeGroupLabelProps): react.JSX.Element;
14
18
  /**
15
19
  * The rows one level down: the shell's `TreeGroup` (`role="group"`, the indent
16
20
  * and the hairline — the only thing in the tree that says depth), and one more
@@ -1 +1 @@
1
- export{LayersTree,Subtree,TREE_DRAG_HINT,TreeEmptySlot,TreeGroupLabel,TreeRow,TreeRowAction,TreeSeam}from"../chunk-UFY6RNMT.js";import"../chunk-K56YDHYQ.js";
1
+ export{LayersTree,Subtree,TREE_DRAG_HINT,TreeEmptySlot,TreeGroupLabel,TreeRow,TreeRowAction,TreeSeam}from"../chunk-4JSBIW5H.js";import"../chunk-K56YDHYQ.js";
@@ -22,9 +22,12 @@
22
22
  .es-tree {
23
23
  flex: 1;
24
24
  overflow-y: auto;
25
- /* LEFT 8 — the inset a rounded row needs. RIGHT 12 — the room a real,
26
- space-taking scrollbar takes, so nothing at a row's end sits under the thumb. */
27
- padding: 0 12px 12px 8px;
25
+ /* ONE INSET, 12 A SIDE — the editor panel's search field's (Lewis on the
26
+ Pages panel, 2026-10-13: "packed too tight"). It was 8 left and 12 right,
27
+ and the screen's `.sf-tree` said 8 and 11 over the top of it on the same
28
+ element; a row's fill ran nearly to the panel's edge. A scrollbar, when
29
+ the tree scrolls, takes its own room outside this padding. */
30
+ padding: 0 var(--es-space-12) var(--es-space-12);
28
31
  /* The row actions lie over the end of the name on a scrim of the row's own
29
32
  tone over the PANEL's ground (efficient-shell 4.166.0). The shell assumes
30
33
  `--surface`; the tree sits on easel's panel, so it says which. */
@@ -14,6 +14,13 @@ type LayersTreeProps = {
14
14
  };
15
15
  type TreeGroupLabelProps = {
16
16
  children: ReactNode;
17
+ /** How many rows it heads, in the shell's count pill at its end — "MAIN PAGES 3". */
18
+ count?: ReactNode;
19
+ /** Present when the heading folds the rows under it: whether they show. The
20
+ * heading is then the shell's button, with `aria-expanded` and the row's caret. */
21
+ expanded?: boolean;
22
+ /** Fold or unfold. The rows under it are the host's to render or leave out. */
23
+ onToggle?: () => void;
17
24
  };
18
25
  type SubtreeProps = {
19
26
  children?: ReactNode;
@@ -1,5 +1,5 @@
1
1
  import { DataInput } from './data/index.js';
2
- import { I as ItemSelector, N as NodeSelection } from './plan-BdQ9mLIf.js';
2
+ import { I as ItemSelector, N as NodeSelection } from './plan-CHKjPr6l.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-BdQ9mLIf.js';
2
+ import { N as NodeSelection, A as AfterRemove, S as StepBounds } from './plan-CHKjPr6l.js';
3
3
 
4
4
  /**
5
5
  * The node clipboard — what Copy and Cut hold, and Paste reads.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "efficient-easel",
3
- "version": "3.6.0",
3
+ "version": "4.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": "^5.6.0 || ^6.4.0 || ^7.7.0",
520
+ "efficient-shell": "^5.6.0 || ^6.4.0 || ^7.21.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.7.0",
530
+ "efficient-shell": "^7.21.0",
531
531
  "esbuild": "^0.27.0",
532
532
  "jsdom": "^26.1.0",
533
533
  "react": "^18.2.0",
@@ -1,5 +0,0 @@
1
- import{slotFieldsOf as n}from"./chunk-PLVEGYK6.js";import{usePickFollowsSelection as e}from"./chunk-R6WTQWAC.js";import{EaselCanvas as t,useSelectedFields as r}from"./chunk-PDZXAFNX.js";import{Inspector as i}from"./chunk-CRPJGCSO.js";import{createContext as o,useContext as u}from"react";import{DesktopIcon as l}from"efficient-shell/icons/efficient";import{jsx as s}from"react/jsx-runtime";var c={kind:"puck"};function f(n,e){const t=n,r=e,i=Object.keys(t);return i.length===Object.keys(r).length&&i.every(n=>Object.is(t[n],r[n]))}function a(n){const e=n;return"string"==typeof e.nodeId&&"string"==typeof e.slot}function d(e,t,r){const i=e.slotsOf?.(r);return i||n(t,r.type).map(n=>({slot:n,label:n,rung:!1}))}function p(n,e){return n.isFirst?n.isFirst(e):e.type===n.first}function m(n,e){return n.isLast?n.isLast(e):e.type===n.last}var k={},h={},v=()=>k,g=()=>"",y=()=>null,b=()=>{},O={isLockedBlock:()=>!1,duplicateBlocked:()=>null,nestDepth:()=>0,newSectionNode:()=>null,canAddTo:()=>null,blockIsOffered:()=>!0},j={labelAtLevel:(n,e,t)=>t,descriptions:{},categoryLabel:()=>{},firstSection:null,blockRowName:(n,e)=>e(n.type),plainText:n=>n,Icon:()=>null,Thumbnail:()=>null,useProducts:()=>null},w={options:[{id:"desktop",label:"Desktop",icon:/* @__PURE__ */s(l,{})}],initial:"desktop",fluid:"desktop",widths:{desktop:2e3}},C={read:()=>"sections",write:()=>{},forSelection:(n,e)=>n?"sections":e},L={first:null,last:null,firstGroup:null,lastGroup:null,isSectionGroup:()=>!1,sectionGroupZone:()=>"",panelOf:()=>null};function P(){/* @__PURE__ */
2
- return s(t,{height:"fill"})}function S(){const{id:n,fields:e,values:t,readOnly:o,onChange:u}=r();/* @__PURE__ */
3
- return s("div",{className:"es-sidepanel es-sidepanel--right",children:/* @__PURE__ */s(i,{fields:e,values:t,onChange:u,readOnly:o,idPrefix:n})})}var D=o({});function G({parts:n,children:e}){/* @__PURE__ */
4
- return s(D.Provider,{value:n,children:e})}function N(){return u(D)}function x(){return(N().useOwnerName??g)()}function A(){return(N().useDocumentLabel??y)()}function B(n,e,t,r){return(N().useBridges??v)(n,e,t,r)}function F(n){return(N().useStandaloneBridges??v)(n)}function I(n,e){(N().useDocumentPass??b)(n,e)}function R(){return N().blockRules??O}function T(){return N().blockLook??j}function K(){return N().devices??w}function V(){return N().leftView??C}function W(){return N().pinned??L}function X(){return N().saveSwitch??!0}function Z(n){e(!0===N().pickFollowsSelection,n)}function E(){return N().add??h}function H(){return N().storageNamespace||void 0}function J(){return N().styleClipboard??null}function Q(){return N().nodeKeys??!0}function Y(){return N().notify??null}function q(){return N().Canvas??P}function z(){return N().CanvasHead??null}function M(){return N().canvasDrag??null}var U=o(null);function $({target:n,children:e}){/* @__PURE__ */
5
- return s(U.Provider,{value:n,children:e})}function _(){return u(U)}function nn(){return N().Inspector??S}export{c as SELECTION_MODE,$ as ScreenCanvasTargetProvider,G as ScreenPartsProvider,p as isPinnedFirst,m as isPinnedLast,a as isSlotMode,f as sameInspectorMode,d as screenSlotsOf,E as useScreenAdd,T as useScreenBlockLook,R as useScreenBlockRules,B as useScreenBridges,M as useScreenCanvasDrag,q as useScreenCanvasFrame,z as useScreenCanvasHead,_ as useScreenCanvasTarget,K as useScreenDevices,A as useScreenDocumentLabel,I as useScreenDocumentPass,nn as useScreenInspectorPanel,V as useScreenLeftView,Q as useScreenNodeKeys,Y as useScreenNotify,x as useScreenOwnerName,N as useScreenParts,Z as useScreenPickFollowsSelection,W as useScreenPinned,X as useScreenSaveSwitch,H as useScreenStorageNamespace,J as useScreenStyleClipboard,F as useStandaloneScreenBridges};
@@ -1,16 +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}from"./chunk-PAELDYYS.js";import{framePointToHost as i,elementScale as c,frameRectToLayer as d,clientPointToLayer as u}from"./chunk-ZNCEOSXO.js";import{withTip as h}from"./chunk-P2VEMZH5.js";import{parseZoneKey as f}from"./chunk-KRXQM65X.js";import{useRef as p,useEffect as m,useState as b,useCallback as g,useMemo as y,useSyncExternalStore as v,useId as x,useLayoutEffect as k}from"react";import{Tooltip as w}from"efficient-shell/ui";import{jsxs as N,jsx as A}from"react/jsx-runtime";import{CloseIcon as D,SearchIcon as z}from"efficient-shell/icons/efficient";var T=(e,t,n)=>t>=e.left&&t<=e.left+e.width&&n>=e.top&&n<=e.top+e.height,C=e=>e.width*e.height;function S(e,t,n){let l=null;for(const r of e)T(r.box,t,n)&&(!l||C(r.box)<=C(l.box))&&(l=r);return l}function E(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 $(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 L(e,t,n,l,r=()=>!1,a=()=>!0){const o=e.filter(e=>T(e.box,t,n)).sort((e,t)=>C(e.box)-C(t.box));for(const e of o){const o=E(e,t,n),s={...e.list,index:o};if(r(s))return null;if(l(s))return{zone:e,to:s,line:$(e,o)};if(!a(s))return null}return null}function j(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 M={nodes:[],zones:[]},B="data-puck-dropzone",O="data-puck-component";function K(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 X(e,t){const{frame:n,document:l}=e,r=e=>d(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(`[${B}]`)){const t=e.getAttribute(B)??"";let n;try{n=f(t)}catch{continue}const l=[...e.querySelectorAll(`[${O}]`)].filter(t=>t.parentElement?.closest(`[${B}]`)===e),s=l.map(r);o.push({key:t,list:n,box:r(e),axis:K(s,e),children:s}),l.forEach((e,t)=>{const l=e.getAttribute(O);l&&a.push({id:l,place:{...n,index:t},box:s[t]})})}return{nodes:a,zones:o}}var q="data-es-empty-cell",P="data-puck-dropzone",Y=140;var Z=e=>({left:e.left,top:e.top,width:e.width,height:e.height});function F(d){const{canvas:h,session:f,readOnly:x,words:D=e.canvas}=d,z=p(d);m(()=>{z.current=d});const T=p(null),C=o(h),[E,$]=b(0),j=g(()=>$(e=>e+1),[]),[B,O]=b(M);m(()=>{const e=T.current;h&&e&&O((z.current.measure??X)(h,e))},[h,C,d.revision,E]);const K=d.model,Y=y(()=>K(B),[K,B]),F=v(f.subscribe,f.shown,f.shown),[R,Q]=b(null),[V,G]=b(null),H=p(null),I=()=>{H.current&&clearTimeout(H.current),H.current=null},W=()=>{I(),H.current=setTimeout(()=>{f.get()||Q(null)},140)};m(()=>I,[]);const J=p(null);s(h,"mousemove",e=>{const t=T.current;if(!h||!t)return;const n=i(h.frame,e.clientX,e.clientY,t),l=c(t),r={x:n.x/l,y:n.y/l};if(J.current=r,z.current.readOnly||f.get())return;I();const a=S(Y.sources,r.x,r.y);Q(e=>e?.key===a?.key&&e?.box===a?.box?e:a)}),s(h,"mouseout",e=>{e.relatedTarget||(J.current=null,W())}),s(h,"mouseover",e=>{e.relatedTarget||j()});const U=p(null),_=g(()=>{U.current?.(),U.current=null,G(null)},[]);m(()=>f.subscribe(()=>{f.get()?j():_()}),[f,_,j]),m(()=>_,[_]),("undefined"==typeof document?m:k)(()=>{if(f.get())return;const e=J.current;Q(t=>x?null:e?S(Y.sources,e.x,e.y):t?Y.sources.find(e=>e.key===t.key)??null:null)},[Y,F,f,x]);const ee=e=>{const t=f.get(),n=T.current;if(!t||!n)return null;const l=u(n,e.clientX,e.clientY);J.current=l;const r=L(Y.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},te={onDragEnter:e=>{if(U.current)return;const t=n(e.currentTarget.parentElement?.parentElement??null),a=h?l(h.document):null,o=[];t&&o.push(r(t)),a&&h&&o.push(r(a,h.frame)),U.current=o.length?()=>o.forEach(e=>e()):null},onDragOver:e=>{const n=ee(e);if(!n)return void G(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};G(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)||(J.current=null,G(null))},onDrop:e=>{const t=ee(e);t&&(e.preventDefault(),f.end(),_(),z.current.onDrop(t.h.item,t.t.to))}},ne={draggable:!x&&!!R,onMouseEnter:I,onMouseLeave:()=>!f.get()&&W(),onDragStart:e=>{if(R&&!x){f.start({key:R.key,item:R.item,from:R.from}),e.dataTransfer.effectAllowed="move";try{e.dataTransfer.setData("text/plain",R.key)}catch{}}else e.preventDefault()},onDragEnd:()=>{f.end(),_()},onClick:()=>{R&&!x&&z.current.onPick?.(R.item)}},{seams:le=[]}=Y,re=Y.zones.filter(e=>0===e.children.length),ae=d.onZoneAdd&&!x?re:[],oe=ae.map(e=>e.key).join("\n");return m(()=>{const e=h?.document;if(!e)return;const t=new Set(oe?oe.split("\n"):[]);for(const n of e.querySelectorAll(`[${P}]`))n.toggleAttribute(q,t.has(n.getAttribute(P)??""));return()=>{for(const t of e.querySelectorAll(`[${q}]`))t.removeAttribute(q)}},[h,oe,B,C,E]),/* @__PURE__ */N("div",{ref:T,className:"es-canvas-layer",children:[F||!d.onSeamAdd||x?null:le.map(e=>/* @__PURE__ */A("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__ */A("button",{type:"button",className:"es-canvas-seam-add",onClick:()=>d.onSeamAdd?.(e.place),children:D.addButton({label:d.seamLabel??D.addSection})})},e.key)),ae.length?ae.map(e=>/* @__PURE__ */A("button",{type:"button",className:V?.zoneKey===e.key?"es-canvas-empty is-over":"es-canvas-empty",style:Z(e.box),onClick:()=>d.onZoneAdd?.({...e.list,index:0}),children:/* @__PURE__ */A("span",{className:"es-canvas-empty-add",children:D.addButton({label:d.zoneAddLabel??D.addBlock})})},e.key)):null,F?/* @__PURE__ */A("div",{className:"es-canvas-catch",...te}):null,V&&!re.some(e=>e.key===V.zoneKey)?/* @__PURE__ */A("div",{className:`es-canvas-line is-${V.axis}`,style:Z(V.line)}):null,
2
- /* @__PURE__ */A("div",{className:"es-canvas-handle-spot",style:R?{"--es-handle-x":`${R.box.left+2}px`,"--es-handle-y":`${Math.max(R.box.top-11,0)}px`}:void 0,children:/* @__PURE__ */A(w,{className:"es-canvas-handle-tip",side:"top",content:!R||x||F?null:R.title??D.handle({label:R.label}),children:/* @__PURE__ */N("div",{className:["es-canvas-handle",R&&!x?"is-shown":"",F?"is-dragging":""].filter(Boolean).join(" "),...ne,children:[
3
- /* @__PURE__ */A("span",{className:"es-canvas-grip","aria-hidden":"true",children:"⋮⋮"}),R?.label]})})})]})}var R=e=>e.tiles.length>0&&e.tiles.every(e=>null!=e.cover);function Q({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,[f,p]=b(""),m=x(),g=f.trim().toLowerCase(),y=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:y[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),k=(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 N("div",{className:"es-add",children:[a?/* @__PURE__ */N("div",{className:"es-add-at",role:"status",children:[
5
- /* @__PURE__ */A("span",{children:a.label}),h(c.stop,/* @__PURE__ */A("button",{type:"button",className:"es-add-at-clear","aria-label":c.stop,onClick:a.onClear,children:/* @__PURE__ */A(D,{size:12,"aria-hidden":"true"})}))]}):null,
6
- /* @__PURE__ */A("p",{className:"es-add-hint",children:d}),
7
- /* @__PURE__ */N("div",{className:"es-add-search",children:[
8
- /* @__PURE__ */A(z,{size:16,"aria-hidden":"true"}),
9
- /* @__PURE__ */A("input",{id:m,type:"search","aria-label":u,placeholder:c.searchPlaceholder({label:u}),value:f,onChange:e=>p(e.target.value)}),f?/* @__PURE__ */A("button",{type:"button",className:"es-add-search-clear","aria-label":c.clearSearch,onClick:()=>p(""),children:/* @__PURE__ */A(D,{size:12,"aria-hidden":"true"})}):null]}),0===v.length?/* @__PURE__ */N("div",{className:"es-add-empty",role:"status",children:[
10
- /* @__PURE__ */A("div",{className:"es-add-empty-title",children:c.nothing({query:f.trim()})}),
11
- /* @__PURE__ */A("div",{className:"es-add-empty-sub",children:c.tryAnother})]}):v.map(e=>/* @__PURE__ */N("section",{className:"es-add-group","aria-label":e.title,children:[
12
- /* @__PURE__ */N("div",{className:"es-add-group-head",children:[
13
- /* @__PURE__ */A("span",{className:"es-add-group-title",children:e.title}),
14
- /* @__PURE__ */A("span",{className:"es-add-group-count",children:e.tiles.length})]}),
15
- /* @__PURE__ */A("div",{className:R(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 h(l,/* @__PURE__ */N("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:k(e.type,t),onDragEnd:()=>n.end(),onClick:()=>!t&&r(e.type),children:[null!=e.cover?/* @__PURE__ */A("span",{className:"es-add-tile-cover","aria-hidden":"true",children:e.cover}):e.icon?/* @__PURE__ */A("span",{className:"es-add-tile-glyph","aria-hidden":"true",children:e.icon}):null,
16
- /* @__PURE__ */A("span",{className:"es-add-tile-label",children:e.label})]},e.type))})})]},e.key))]})}export{Q as AddPanel,F as CanvasDragLayer,M as EMPTY_MEASURE,Y as HANDLE_GRACE_MS,L as canvasTarget,T as contains,E as gapInZone,$ as gapLine,X as measureCanvas,S as pickSource,j as seamsBetween};