efficient-easel 0.103.0 → 0.105.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 (137) hide show
  1. package/README.md +92 -7
  2. package/dist/CanvasDragLayer-zgYT1xwY.d.ts +168 -0
  3. package/dist/chrome/index.js +1 -1
  4. package/dist/chunk-3P6AMTOS.js +1 -0
  5. package/dist/chunk-4XQUWGIV.js +65 -0
  6. package/dist/{chunk-6UJ3Y6FC.js → chunk-53G47SWO.js} +1 -1
  7. package/dist/{chunk-IWAPPEL4.js → chunk-5ZBBXZPV.js} +1 -1
  8. package/dist/chunk-7FBDZTUD.js +2 -0
  9. package/dist/chunk-7V5WZ46F.js +2 -0
  10. package/dist/chunk-BVN33R76.js +1 -0
  11. package/dist/chunk-CLOS6SSX.js +1 -0
  12. package/dist/chunk-ERR437B5.js +1 -0
  13. package/dist/chunk-GMCZXMOV.js +1 -0
  14. package/dist/{chunk-OYX47SL7.js → chunk-HNKB2ZYR.js} +1 -1
  15. package/dist/{chunk-AKFJK65Z.js → chunk-IE4GFYKO.js} +1 -1
  16. package/dist/{chunk-KDYIMJTZ.js → chunk-KCOBHPN6.js} +1 -1
  17. package/dist/chunk-KG7RJWOK.js +1 -0
  18. package/dist/chunk-N7VRF7PR.js +5 -0
  19. package/dist/chunk-NYKIQJT2.js +4 -0
  20. package/dist/{chunk-6TZTKAB5.js → chunk-O7Q4DDJT.js} +1 -1
  21. package/dist/chunk-PA3PNTVV.js +1 -0
  22. package/dist/chunk-PLVEGYK6.js +1 -0
  23. package/dist/chunk-PQXIFBDY.js +1 -0
  24. package/dist/{chunk-66ICOE3I.js → chunk-QH6LCNOX.js} +1 -1
  25. package/dist/chunk-R6WTQWAC.js +2 -0
  26. package/dist/{chunk-Z3KBLIEH.js → chunk-RQHC4TD6.js} +3 -3
  27. package/dist/chunk-RSCMJIWS.js +1 -0
  28. package/dist/{chunk-7MU3RJ6S.js → chunk-S4AWJX4Q.js} +1 -1
  29. package/dist/{chunk-MSBF7IW3.js → chunk-SARZN4M7.js} +2 -2
  30. package/dist/chunk-SQTY6CJD.js +1 -0
  31. package/dist/chunk-TBF5CVPA.js +1 -0
  32. package/dist/chunk-THWO5YVZ.js +1 -0
  33. package/dist/chunk-TLZG2FCF.js +1 -0
  34. package/dist/chunk-U3JP4VGF.js +2 -0
  35. package/dist/{chunk-LG436UTD.js → chunk-V4LF7D4F.js} +1 -1
  36. package/dist/chunk-VSHV6KJQ.js +5 -0
  37. package/dist/{chunk-OM67AJQC.js → chunk-VSOP4GUM.js} +1 -1
  38. package/dist/{chunk-6DJHRLCU.js → chunk-YC4TB3CJ.js} +9 -9
  39. package/dist/{chunk-GXN65JMA.js → chunk-YN4KND5F.js} +1 -1
  40. package/dist/chunk-ZTTWFAAC.js +1 -0
  41. package/dist/drag/index.d.ts +4 -164
  42. package/dist/edit-lock/index.d.ts +55 -1
  43. package/dist/edit-lock/index.js +1 -1
  44. package/dist/{host-DJ8Gzsx7.d.ts → host-BQ_b9Qzk.d.ts} +27 -1
  45. package/dist/screen/components/AddBlockRow.js +1 -1
  46. package/dist/screen/components/AddSidePanel.js +1 -1
  47. package/dist/screen/components/MediaSidePanel.d.ts +3 -2
  48. package/dist/screen/components/MediaSidePanel.js +1 -1
  49. package/dist/screen/components/NodeContextMenu.d.ts +208 -5
  50. package/dist/screen/components/NodeContextMenu.js +1 -1
  51. package/dist/screen/components/PageEditGuardNotices.js +1 -1
  52. package/dist/screen/components/ScreenChrome.js +1 -1
  53. package/dist/screen/components/ScreenDocumentContext.d.ts +2 -1
  54. package/dist/screen/components/ScreenDocumentContext.js +1 -1
  55. package/dist/screen/components/ScreenMount.d.ts +14 -3
  56. package/dist/screen/components/ScreenMount.js +1 -1
  57. package/dist/screen/components/ScreenStoreProvider.d.ts +20 -5
  58. package/dist/screen/components/ScreenStoreProvider.js +1 -1
  59. package/dist/screen/components/SectionScreenShell.js +16 -16
  60. package/dist/screen/components/SidePanelHead.js +1 -1
  61. package/dist/screen/components/panel-widths.js +1 -1
  62. package/dist/screen/components/usePartBridge.d.ts +20 -5
  63. package/dist/screen/components/usePartBridge.js +1 -1
  64. package/dist/screen/index.d.ts +17 -6
  65. package/dist/screen/index.js +1 -1
  66. package/dist/screen/lib/admin-bridge.d.ts +2 -0
  67. package/dist/screen/lib/admin-bridge.js +1 -1
  68. package/dist/screen/lib/backend-error.d.ts +20 -5
  69. package/dist/screen/lib/backend-error.js +1 -1
  70. package/dist/screen/lib/document-addressing.d.ts +2 -1
  71. package/dist/screen/lib/document-switch.js +1 -1
  72. package/dist/screen/lib/failure.d.ts +6 -2
  73. package/dist/screen/lib/failure.js +1 -1
  74. package/dist/screen/lib/host-inbound.js +1 -1
  75. package/dist/screen/lib/host.d.ts +3 -2
  76. package/dist/screen/lib/host.js +1 -1
  77. package/dist/screen/lib/key-scope.js +1 -1
  78. package/dist/screen/lib/load-error.d.ts +9 -3
  79. package/dist/screen/lib/load-error.js +1 -1
  80. package/dist/screen/lib/media-panel.d.ts +81 -17
  81. package/dist/screen/lib/media-panel.js +1 -1
  82. package/dist/screen/lib/media-picker.d.ts +14 -2
  83. package/dist/screen/lib/media-picker.js +1 -1
  84. package/dist/screen/lib/page-lock.d.ts +45 -1
  85. package/dist/screen/lib/page-lock.js +1 -1
  86. package/dist/screen/lib/puck/content-tree.d.ts +27 -1
  87. package/dist/screen/lib/puck/content-tree.js +1 -1
  88. package/dist/screen/lib/puck/palette-sections.d.ts +7 -0
  89. package/dist/screen/lib/puck/palette-sections.js +1 -1
  90. package/dist/screen/lib/puck/section-doc.js +1 -1
  91. package/dist/screen/lib/puck/slot-child-name.d.ts +42 -3
  92. package/dist/screen/lib/puck/slot-child-name.js +1 -1
  93. package/dist/screen/lib/puck/style-clipboard.d.ts +53 -1
  94. package/dist/screen/lib/puck/style-clipboard.js +1 -1
  95. package/dist/screen/lib/puck/use-section-ops.d.ts +6 -0
  96. package/dist/screen/lib/puck/use-section-ops.js +1 -1
  97. package/dist/screen/lib/screen-parts.d.ts +619 -10
  98. package/dist/screen/lib/screen-parts.js +1 -1
  99. package/dist/screen/lib/section-templates.d.ts +25 -1
  100. package/dist/screen/lib/section-templates.js +1 -1
  101. package/dist/screen/lib/session-context.d.ts +5 -1
  102. package/dist/screen/lib/session-context.js +1 -1
  103. package/dist/screen/lib/session.d.ts +58 -5
  104. package/dist/screen/lib/session.js +1 -1
  105. package/dist/screen/screen.css +18 -0
  106. package/dist/screen/words.d.ts +96 -2
  107. package/dist/screen/words.js +1 -1
  108. package/dist/strings/catalogue.d.ts +4 -2
  109. package/dist/strings/catalogue.js +1 -1
  110. package/dist/strings/index.d.ts +1 -1
  111. package/dist/strings/index.js +1 -1
  112. package/dist/tree/index.d.ts +4 -142
  113. package/dist/types-DJDBtdB2.d.ts +143 -0
  114. package/package.json +1 -1
  115. package/dist/chunk-3M3A3DN2.js +0 -4
  116. package/dist/chunk-4MXFKJUY.js +0 -1
  117. package/dist/chunk-6FY3PZS3.js +0 -1
  118. package/dist/chunk-A7ZJII7O.js +0 -1
  119. package/dist/chunk-AJBJ74ME.js +0 -1
  120. package/dist/chunk-AKZWUV5Z.js +0 -1
  121. package/dist/chunk-F6CCTEIX.js +0 -1
  122. package/dist/chunk-FUDHI5I4.js +0 -1
  123. package/dist/chunk-GENAF3P6.js +0 -1
  124. package/dist/chunk-HDKTR5TZ.js +0 -62
  125. package/dist/chunk-HMX55DYT.js +0 -1
  126. package/dist/chunk-HWW4XJOH.js +0 -1
  127. package/dist/chunk-JUQ6YJCG.js +0 -1
  128. package/dist/chunk-NBJ2YY6Y.js +0 -4
  129. package/dist/chunk-OORDMLL4.js +0 -5
  130. package/dist/chunk-Q2HPBMG5.js +0 -1
  131. package/dist/chunk-Q3SQBNJB.js +0 -1
  132. package/dist/chunk-R5ZVNJLJ.js +0 -2
  133. package/dist/chunk-SERF2FAU.js +0 -1
  134. package/dist/chunk-VV5ADNBR.js +0 -1
  135. package/dist/chunk-YJXEHK6I.js +0 -2
  136. package/dist/chunk-ZWK3CBRU.js +0 -1
  137. package/dist/chunk-ZZ7VLIHQ.js +0 -1
@@ -1,9 +1,9 @@
1
1
  export { DocumentScreen, default as ScreenMount } from './components/ScreenMount.js';
2
2
  export { default as ScreenStoreProvider } from './components/ScreenStoreProvider.js';
3
- export { NodeDefaults, SELECTION_MODE, ScreenBlockLook, ScreenBlockRules, ScreenBridges, ScreenCanvas, ScreenDevices, ScreenDocumentOps, ScreenInspector, ScreenInspectorMode, ScreenInspectorPanelProps, ScreenLeftPanel, ScreenLeftView, ScreenLeftViewFrame, ScreenLeftViewRules, ScreenNewNode, ScreenNode, ScreenNodeLevel, ScreenNodeMaker, ScreenPartMode, ScreenParts, ScreenPartsProvider, ScreenPinnedNodes, ScreenRailItem, ScreenTree, ScreenTreeFolds, ScreenTreeRows, sameInspectorMode, useScreenBlockLook, useScreenBlockRules, useScreenBridges, useScreenCanvasFrame, useScreenDevices, useScreenDocumentPass, useScreenInspectorPanel, useScreenLeftView, useScreenOwnerName, useScreenParts, useScreenPinned, useScreenSaveSwitch, useStandaloneScreenBridges } from './lib/screen-parts.js';
4
- export { EFFICIENT_BACKEND, EaselSession, SessionBackend, SessionBlocks, activateEaselSession, backendOf, createEaselSession, currentEaselSession, deactivateEaselSession, efficientClientOpen, isEfficientBackend, provideDefaultBackend, resetAmbientEaselSession, sessionRegistry, setSessionBridgedSite, setSessionDocumentSite } from './lib/session.js';
3
+ export { NodeDefaults, SELECTION_MODE, ScreenAdd, ScreenBlockLook, ScreenBlockRules, ScreenBridges, ScreenCanvas, ScreenCanvasDrag, ScreenCanvasDragContext, ScreenCanvasHeadProps, ScreenCanvasTargetProvider, ScreenDevices, ScreenDocumentOps, ScreenDragItem, ScreenInspector, ScreenInspectorMode, ScreenInspectorPanelProps, ScreenLeftPanel, ScreenLeftView, ScreenLeftViewFrame, ScreenLeftViewRules, ScreenMenuRows, ScreenNewNode, ScreenNode, ScreenNodeActions, ScreenNodeLevel, ScreenNodeMaker, ScreenPartMode, ScreenParts, ScreenPartsProvider, ScreenPinnedBand, ScreenPinnedNodes, ScreenRailItem, ScreenSelection, ScreenSelector, ScreenSlot, ScreenSlotAction, ScreenSlotMode, ScreenStyleClipboard, ScreenStyleDocument, ScreenStylePastePlan, ScreenTree, ScreenTreeFolds, ScreenTreeRows, 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, useScreenStyleClipboard, useStandaloneScreenBridges } from './lib/screen-parts.js';
4
+ export { DefaultBackend, EFFICIENT_BACKEND, EaselSession, SessionBackend, SessionBlocks, activateEaselSession, backendOf, createEaselSession, currentEaselSession, deactivateEaselSession, efficientClientOpen, isEfficientBackend, provideDefaultBackend, resetAmbientEaselSession, sessionRegistry, setSessionBridgedSite, setSessionDocumentSite } from './lib/session.js';
5
5
  export { EaselSessionProvider, useEaselSession } from './lib/session-context.js';
6
- export { A as AnyDocumentAddressing, D as DETACHED_EASEL_HOST, a as DocumentAddressing, 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, N as NO_DOCUMENT_ADDRESSING, S as SectionScreenTarget, h as SendToHost, i as createEaselHost, u as useEaselHost } from '../host-DJ8Gzsx7.js';
6
+ export { A as AnyDocumentAddressing, D as DETACHED_EASEL_HOST, a as DocumentAddressing, 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, N as NO_DOCUMENT_ADDRESSING, S as SectionScreenTarget, h as SendToHost, i as createEaselHost, u as useEaselHost, j as useHostEscape } from '../host-BQ_b9Qzk.js';
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';
@@ -12,20 +12,31 @@ import '../data/index.js';
12
12
  import '../types-41704JE4.js';
13
13
  import '../resolve-D68pb3Bx.js';
14
14
  import '../plan-DChbUXdS.js';
15
+ import '../watch-BTYOJpQU.js';
15
16
  import '../types-CqY85foL.js';
16
17
  import '../types-DWS-s9z-.js';
17
18
  import '../wordFit-D4S36PvB.js';
18
19
  import '../edit-lock/index.js';
19
20
  import '../panelWidths-D9hTLR25.js';
21
+ import '../CanvasDragLayer-zgYT1xwY.js';
22
+ import '../session-DSQFmIvx.js';
23
+ import '../words-BDignMl_.js';
24
+ import '../types-Djdq6Xkd.js';
25
+ import '../style-clipboard/index.js';
26
+ import '../words-CnnHb9jo.js';
27
+ import '../types-DJDBtdB2.js';
28
+ import '../words-DgHcY5qB.js';
29
+ import './components/AddSidePanel.js';
30
+ import './lib/section-template-types.js';
31
+ import './lib/puck/content-tree.js';
32
+ import './lib/puck/block-choice.js';
20
33
  import './lib/host-chrome.js';
21
34
  import './lib/links/link-filters.js';
22
35
  import '../LinkPicker-W2Rtxetz.js';
23
36
  import './lib/puck/add-target-types.js';
24
- import './lib/puck/block-choice.js';
25
37
  import './lib/puck/slot-section-spec.js';
38
+ import './lib/backend-error.js';
26
39
  import './lib/document-hooks.js';
27
- import './lib/section-template-types.js';
28
- import './lib/puck/content-tree.js';
29
40
  import './lib/document-switch.js';
30
41
  import '../engine-DBxp_v6B.js';
31
42
  import './lib/admin-bridge.js';
@@ -1 +1 @@
1
- import"../chunk-GZO72N3Q.js";export{DocumentScreen,ScreenMount}from"../chunk-Z3KBLIEH.js";import"../chunk-GXQCZJOP.js";export{ScreenStoreProvider}from"../chunk-MSBF7IW3.js";import"../chunk-HDKTR5TZ.js";import"../chunk-26OOWIJJ.js";import"../chunk-Q2HPBMG5.js";import"../chunk-FGNR22NY.js";import"../chunk-ZE7I3PLX.js";import"../chunk-AKFJK65Z.js";import"../chunk-PWZOS45R.js";import"../chunk-7F52SZOI.js";import"../chunk-R2HLPNQF.js";import"../chunk-HWW4XJOH.js";import"../chunk-4ES5JGGX.js";import"../chunk-IQ5TA7AM.js";import"../chunk-DUVRZ456.js";import"../chunk-6W7WLPZH.js";import"../chunk-OM67AJQC.js";import"../chunk-KCBEE2MC.js";import"../chunk-5MZ3RNQQ.js";import"../chunk-SERF2FAU.js";import"../chunk-GXN65JMA.js";import"../chunk-VV5ADNBR.js";import"../chunk-IYT6NN2J.js";import"../chunk-F6CCTEIX.js";import"../chunk-FUDHI5I4.js";import"../chunk-LG436UTD.js";import"../chunk-BSPCSC45.js";import"../chunk-I54UCYOU.js";import"../chunk-GOTN2KY4.js";import"../chunk-R5L2E7JX.js";import"../chunk-YJXEHK6I.js";import"../chunk-7MU3RJ6S.js";import"../chunk-A7ZJII7O.js";import"../chunk-6FY3PZS3.js";import"../chunk-AKZWUV5Z.js";export{NO_DOCUMENT_ADDRESSING}from"../chunk-RLBXE4EU.js";import"../chunk-OYX47SL7.js";import"../chunk-HMX55DYT.js";import"../chunk-Q3SQBNJB.js";import"../chunk-3WSPDAK2.js";export{DETACHED_EASEL_HOST,EaselHostContext,EaselHostProvider,createEaselHost,useEaselHost}from"../chunk-R5ZVNJLJ.js";import"../chunk-57DJOKXT.js";import"../chunk-3QVB4AG2.js";import"../chunk-OORDMLL4.js";import"../chunk-5ZBY24K7.js";import"../chunk-GENAF3P6.js";import"../chunk-4MXFKJUY.js";import"../chunk-IWAPPEL4.js";import"../chunk-KQMML6JM.js";import"../chunk-KDYIMJTZ.js";export{EaselSessionProvider,useEaselSession}from"../chunk-6TZTKAB5.js";export{EFFICIENT_BACKEND,activateEaselSession,backendOf,createEaselSession,currentEaselSession,deactivateEaselSession,efficientClientOpen,isEfficientBackend,provideDefaultBackend,resetAmbientEaselSession,sessionRegistry,setSessionBridgedSite,setSessionDocumentSite}from"../chunk-AJBJ74ME.js";import"../chunk-HQ4VVRIC.js";import"../chunk-3M3A3DN2.js";import"../chunk-ZZ7VLIHQ.js";export{SELECTION_MODE,ScreenPartsProvider,sameInspectorMode,useScreenBlockLook,useScreenBlockRules,useScreenBridges,useScreenCanvasFrame,useScreenDevices,useScreenDocumentPass,useScreenInspectorPanel,useScreenLeftView,useScreenOwnerName,useScreenParts,useScreenPinned,useScreenSaveSwitch,useStandaloneScreenBridges}from"../chunk-NBJ2YY6Y.js";import"../chunk-6WY6ZXJG.js";import"../chunk-ZWK3CBRU.js";import"../chunk-P67FP7PG.js";import"../chunk-AELNNAFM.js";import"../chunk-BXZ6WLHC.js";import"../chunk-EOJNJCMJ.js";import"../chunk-ZFDCDJNZ.js";import"../chunk-ZNS7727Y.js";import"../chunk-3EDSDPIP.js";import"../chunk-QTLAVDJE.js";import"../chunk-YRLPFZW3.js";import"../chunk-RW4XBUUW.js";import"../chunk-KTVH2ZRL.js";import"../chunk-2LK54I4E.js";import"../chunk-WK3AFPXY.js";import"../chunk-D2BCHTQR.js";import"../chunk-OWBO4WKA.js";import"../chunk-BDTITTMW.js";import"../chunk-H6DDIBQ4.js";import"../chunk-6DJHRLCU.js";import"../chunk-ZJEBF4NB.js";import"../chunk-JUQ6YJCG.js";import"../chunk-RE4LP46F.js";import"../chunk-WZ7TGAAT.js";import"../chunk-2OAZYSWJ.js";import"../chunk-EWVJSRRY.js";import"../chunk-P6O363EE.js";import"../chunk-FPOKPNO4.js";import"../chunk-MFIRYGHW.js";import"../chunk-BZ5ASXOL.js";import"../chunk-TTJ54QGG.js";import"../chunk-O2NLQBFX.js";import"../chunk-67GNT6PF.js";import"../chunk-PAELDYYS.js";import"../chunk-ZNCEOSXO.js";import"../chunk-L5KW4HG5.js";import"../chunk-KRXQM65X.js";import"../chunk-NKB3KVAB.js";
1
+ import"../chunk-GZO72N3Q.js";export{DocumentScreen,ScreenMount}from"../chunk-RQHC4TD6.js";import"../chunk-GXQCZJOP.js";export{ScreenStoreProvider}from"../chunk-SARZN4M7.js";import"../chunk-4XQUWGIV.js";import"../chunk-26OOWIJJ.js";import"../chunk-SQTY6CJD.js";import"../chunk-FGNR22NY.js";import"../chunk-ZE7I3PLX.js";import"../chunk-IE4GFYKO.js";import"../chunk-PWZOS45R.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-VSOP4GUM.js";import"../chunk-KCBEE2MC.js";import"../chunk-5MZ3RNQQ.js";import"../chunk-ZTTWFAAC.js";import"../chunk-YN4KND5F.js";import"../chunk-TLZG2FCF.js";import"../chunk-IYT6NN2J.js";import"../chunk-7FBDZTUD.js";import"../chunk-V4LF7D4F.js";import"../chunk-BSPCSC45.js";import"../chunk-I54UCYOU.js";import"../chunk-GOTN2KY4.js";import"../chunk-R5L2E7JX.js";import"../chunk-7V5WZ46F.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-3P6AMTOS.js";import"../chunk-3WSPDAK2.js";import"../chunk-57DJOKXT.js";import"../chunk-3QVB4AG2.js";import"../chunk-N7VRF7PR.js";import"../chunk-5ZBY24K7.js";import"../chunk-PA3PNTVV.js";import"../chunk-BVN33R76.js";import"../chunk-5ZBBXZPV.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-NYKIQJT2.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,useScreenStyleClipboard,useStandaloneScreenBridges}from"../chunk-VSHV6KJQ.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-PQXIFBDY.js";import"../chunk-P67FP7PG.js";import"../chunk-AELNNAFM.js";import"../chunk-BXZ6WLHC.js";import"../chunk-EOJNJCMJ.js";import"../chunk-ZFDCDJNZ.js";import"../chunk-ZNS7727Y.js";import"../chunk-3EDSDPIP.js";import"../chunk-QTLAVDJE.js";import"../chunk-YRLPFZW3.js";import"../chunk-RW4XBUUW.js";import"../chunk-KTVH2ZRL.js";import"../chunk-2LK54I4E.js";import"../chunk-WK3AFPXY.js";import"../chunk-D2BCHTQR.js";import"../chunk-OWBO4WKA.js";import"../chunk-BDTITTMW.js";import"../chunk-H6DDIBQ4.js";import"../chunk-YC4TB3CJ.js";import"../chunk-ZJEBF4NB.js";import"../chunk-THWO5YVZ.js";import"../chunk-RE4LP46F.js";import"../chunk-WZ7TGAAT.js";import"../chunk-2OAZYSWJ.js";import"../chunk-EWVJSRRY.js";import"../chunk-P6O363EE.js";import"../chunk-FPOKPNO4.js";import"../chunk-MFIRYGHW.js";import"../chunk-BZ5ASXOL.js";import"../chunk-TTJ54QGG.js";import"../chunk-O2NLQBFX.js";import"../chunk-67GNT6PF.js";import"../chunk-PAELDYYS.js";import"../chunk-ZNCEOSXO.js";import"../chunk-L5KW4HG5.js";import"../chunk-KRXQM65X.js";import"../chunk-NKB3KVAB.js";
@@ -6,6 +6,8 @@ import '../../data/index.js';
6
6
  import '../../types-41704JE4.js';
7
7
  import '../../resolve-D68pb3Bx.js';
8
8
  import '../../plan-DChbUXdS.js';
9
+ import './backend-error.js';
10
+ import '../../edit-lock/index.js';
9
11
  import './host-chrome.js';
10
12
  import './links/link-filters.js';
11
13
  import '../../LinkPicker-W2Rtxetz.js';
@@ -1 +1 @@
1
- export{NO_BRIDGED_CAPABILITIES,applyAuthGrant,useAdminBridge}from"../../chunk-Q3SQBNJB.js";import"../../chunk-3WSPDAK2.js";import"../../chunk-R5ZVNJLJ.js";import"../../chunk-6TZTKAB5.js";import"../../chunk-AJBJ74ME.js";
1
+ export{NO_BRIDGED_CAPABILITIES,applyAuthGrant,useAdminBridge}from"../../chunk-3P6AMTOS.js";import"../../chunk-3WSPDAK2.js";import"../../chunk-O7Q4DDJT.js";import"../../chunk-RSCMJIWS.js";import"../../chunk-U3JP4VGF.js";
@@ -79,6 +79,8 @@ interface HostFailure {
79
79
  data: unknown;
80
80
  message: string;
81
81
  }
82
+ /** How a host's client errors read: the page's (`provideHostFailures`), or
83
+ * one session's own (`createEaselSession({ hostFailures })`, 0.103.0). */
82
84
  interface HostFailures {
83
85
  /** A host client error as a {@link HostFailure}; null for anything else. */
84
86
  read(err: unknown): HostFailure | null;
@@ -90,17 +92,30 @@ interface HostFailures {
90
92
  slug: string;
91
93
  }): string | null;
92
94
  }
95
+ /**
96
+ * WHOSE READING a failure gets (0.103.0): the editor's session it happened in,
97
+ * when that session brought its own (`EaselSession.hostFailures`), else the
98
+ * page's. Every reader below takes one, optionally: two hosts mounted in one
99
+ * page (the website editor and the campaign designer in the admin) each read
100
+ * their own client's errors, and neither has to replace the other's page-wide
101
+ * registration to do it. Left out, or a session that brought none, it is the
102
+ * page's, as it always was.
103
+ */
104
+ type FailureScope = {
105
+ readonly hostFailures?: HostFailures | null;
106
+ } | null | undefined;
93
107
  /** Tell the editor how to read the host client's own errors. Called once, by
94
- * the host's backend module as it loads (EFFICIENT's: `lib/efficient-backend`). */
108
+ * the host's backend module as it loads (EFFICIENT's: `lib/efficient-backend`).
109
+ * It is the page's: a session's own (`hostFailures`) is read in its place. */
95
110
  declare function provideHostFailures(failures: HostFailures): void;
96
111
  /** `err` as the host's client failure it is, or null when it is not one (or no
97
112
  * host has said how to read its errors). */
98
- declare function readHostFailure(err: unknown): HostFailure | null;
113
+ declare function readHostFailure(err: unknown, scope?: FailureScope): HostFailure | null;
99
114
  /** The host's sentence for a document it refused to open, or null. */
100
115
  declare function hostLoadRefusalOf(err: unknown, document: {
101
116
  slug: string;
102
- }): string | null;
117
+ }, scope?: FailureScope): string | null;
103
118
  /** The host's own "server cannot be reached" sentence, or a plain one. */
104
- declare function hostUnreachableMessage(): string;
119
+ declare function hostUnreachableMessage(scope?: FailureScope): string;
105
120
 
106
- export { type HostFailure, STATUS_UNREACHABLE, WebsiteBackendError, type WebsiteBackendErrorKind, hostLoadRefusalOf, hostUnreachableMessage, isBackendError, provideHostFailures, readHostFailure };
121
+ export { type FailureScope, type HostFailure, type HostFailures, STATUS_UNREACHABLE, WebsiteBackendError, type WebsiteBackendErrorKind, hostLoadRefusalOf, hostUnreachableMessage, isBackendError, provideHostFailures, readHostFailure };
@@ -1 +1 @@
1
- export{STATUS_UNREACHABLE,WebsiteBackendError,hostLoadRefusalOf,hostUnreachableMessage,isBackendError,provideHostFailures,readHostFailure}from"../../chunk-KDYIMJTZ.js";
1
+ export{STATUS_UNREACHABLE,WebsiteBackendError,hostLoadRefusalOf,hostUnreachableMessage,isBackendError,provideHostFailures,readHostFailure}from"../../chunk-KCOBHPN6.js";
@@ -1,4 +1,4 @@
1
- export { A as AnyDocumentAddressing, a as DocumentAddressing, N as NO_DOCUMENT_ADDRESSING } from '../../host-DJ8Gzsx7.js';
1
+ export { A as AnyDocumentAddressing, a as DocumentAddressing, N as NO_DOCUMENT_ADDRESSING } from '../../host-BQ_b9Qzk.js';
2
2
  import './document-contract.js';
3
3
  import './session.js';
4
4
  import 'react';
@@ -12,6 +12,7 @@ import './document-switch.js';
12
12
  import '../../engine-DBxp_v6B.js';
13
13
  import '../../edit-lock/index.js';
14
14
  import './admin-bridge.js';
15
+ import './backend-error.js';
15
16
  import './host-chrome.js';
16
17
  import './links/link-filters.js';
17
18
  import '../../LinkPicker-W2Rtxetz.js';
@@ -1 +1 @@
1
- export{resetForDocumentSwitch,saveStatusForNewDocument,saveStatusOf}from"../../chunk-OYX47SL7.js";import"../../chunk-JUQ6YJCG.js";import"../../chunk-RE4LP46F.js";
1
+ export{resetForDocumentSwitch,saveStatusForNewDocument,saveStatusOf}from"../../chunk-HNKB2ZYR.js";import"../../chunk-THWO5YVZ.js";import"../../chunk-RE4LP46F.js";
@@ -1,4 +1,5 @@
1
1
  import { EditLockFailure } from '../../edit-lock/index.js';
2
+ import { FailureScope } from './backend-error.js';
2
3
 
3
4
  /**
4
5
  * What a failed editor call WAS, as `{ status, data }` — the shape the shared
@@ -40,7 +41,10 @@ import { EditLockFailure } from '../../edit-lock/index.js';
40
41
  * (lib/efficient-backend), so a raw body and a translated kind read alike.
41
42
  */
42
43
  declare const PAGE_CONFLICT_CODE = "page_changed_elsewhere";
43
- declare function readEaselFailure(err: unknown): EditLockFailure | null;
44
+ /** `scope`: whose reading of a host's client error it is — the editor's
45
+ * session when it brought its own (lib/backend-error `FailureScope`), else
46
+ * the page's. */
47
+ declare function readEaselFailure(err: unknown, scope?: FailureScope): EditLockFailure | null;
44
48
  /**
45
49
  * A call was refused because the SESSION is no longer authorised — the one
46
50
  * failure the editor answers by asking its host for a fresh sign-in.
@@ -49,6 +53,6 @@ declare function readEaselFailure(err: unknown): EditLockFailure | null;
49
53
  * `unauthorized` too, and a 403 has never been a reason to re-authenticate. A
50
54
  * backend that speaks only in kinds says `unauthorized`.
51
55
  */
52
- declare function isExpiredSession(err: unknown): boolean;
56
+ declare function isExpiredSession(err: unknown, scope?: FailureScope): boolean;
53
57
 
54
58
  export { PAGE_CONFLICT_CODE, isExpiredSession, readEaselFailure };
@@ -1 +1 @@
1
- export{PAGE_CONFLICT_CODE,isExpiredSession,readEaselFailure}from"../../chunk-HMX55DYT.js";import"../../chunk-KDYIMJTZ.js";import"../../chunk-JUQ6YJCG.js";import"../../chunk-RE4LP46F.js";
1
+ export{PAGE_CONFLICT_CODE,isExpiredSession,readEaselFailure}from"../../chunk-CLOS6SSX.js";import"../../chunk-KCOBHPN6.js";import"../../chunk-THWO5YVZ.js";import"../../chunk-RE4LP46F.js";
@@ -1 +1 @@
1
- export{routeSharedHostMessage}from"../../chunk-7MU3RJ6S.js";import"../../chunk-6FY3PZS3.js";import"../../chunk-ZZ7VLIHQ.js";
1
+ export{routeSharedHostMessage}from"../../chunk-S4AWJX4Q.js";import"../../chunk-KG7RJWOK.js";import"../../chunk-R6WTQWAC.js";import"../../chunk-U3JP4VGF.js";
@@ -1,5 +1,5 @@
1
1
  import 'react';
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 } from '../../host-DJ8Gzsx7.js';
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-BQ_b9Qzk.js';
3
3
  import '../../blocks/index.js';
4
4
  import '../../types-E3HrTPg2.js';
5
5
  import '../../data/index.js';
@@ -8,6 +8,8 @@ import '../../resolve-D68pb3Bx.js';
8
8
  import '../../plan-DChbUXdS.js';
9
9
  import './document-contract.js';
10
10
  import './session.js';
11
+ import './backend-error.js';
12
+ import '../../edit-lock/index.js';
11
13
  import './host-chrome.js';
12
14
  import './links/link-filters.js';
13
15
  import '../../LinkPicker-W2Rtxetz.js';
@@ -16,5 +18,4 @@ import './section-template-types.js';
16
18
  import './puck/content-tree.js';
17
19
  import './document-switch.js';
18
20
  import '../../engine-DBxp_v6B.js';
19
- import '../../edit-lock/index.js';
20
21
  import './admin-bridge.js';
@@ -1 +1 @@
1
- export{DETACHED_EASEL_HOST,EaselHostContext,EaselHostProvider,createEaselHost,useEaselHost}from"../../chunk-R5ZVNJLJ.js";
1
+ export{DETACHED_EASEL_HOST,EaselHostContext,EaselHostProvider,createEaselHost,useEaselHost,useHostEscape}from"../../chunk-U3JP4VGF.js";
@@ -1 +1 @@
1
- export{useEaselKeyTarget,useEaselUndoKeys}from"../../chunk-OM67AJQC.js";import"../../chunk-R5ZVNJLJ.js";import"../../chunk-P67FP7PG.js";import"../../chunk-AELNNAFM.js";import"../../chunk-YRLPFZW3.js";import"../../chunk-D2BCHTQR.js";import"../../chunk-MFIRYGHW.js";import"../../chunk-ZNCEOSXO.js";import"../../chunk-KRXQM65X.js";import"../../chunk-NKB3KVAB.js";
1
+ export{useEaselKeyTarget,useEaselUndoKeys}from"../../chunk-VSOP4GUM.js";import"../../chunk-U3JP4VGF.js";import"../../chunk-P67FP7PG.js";import"../../chunk-AELNNAFM.js";import"../../chunk-YRLPFZW3.js";import"../../chunk-D2BCHTQR.js";import"../../chunk-MFIRYGHW.js";import"../../chunk-ZNCEOSXO.js";import"../../chunk-KRXQM65X.js";import"../../chunk-NKB3KVAB.js";
@@ -1,3 +1,6 @@
1
+ import { FailureScope } from './backend-error.js';
2
+ import '../../edit-lock/index.js';
3
+
1
4
  /** Say what stopped the editor loading a document, in words an operator can
2
5
  * hand to a developer.
3
6
  *
@@ -13,8 +16,11 @@
13
16
  * mismatch — and the one thing anybody could report was the one thing that
14
17
  * narrowed nothing down. It lives in its own module, apart from the React
15
18
  * provider that shows it, so the wording is pinned by a test rather than
16
- * re-derived by whoever next reads the catch block. */
17
- declare function describeLoadFailure(e: unknown): string;
19
+ * re-derived by whoever next reads the catch block.
20
+ *
21
+ * `scope` is whose reading of a host's client error it is (lib/backend-error
22
+ * `FailureScope`): the editor's session, when it brought its own. */
23
+ declare function describeLoadFailure(e: unknown, scope?: FailureScope): string;
18
24
  /**
19
25
  * The host's own sentence for a load it REFUSED, or null when this failure is
20
26
  * not one of those. EFFICIENT has one: a slug that more than one website owns,
@@ -24,6 +30,6 @@ declare function describeLoadFailure(e: unknown): string;
24
30
  */
25
31
  declare function hostLoadRefusal(e: unknown, document: {
26
32
  slug: string;
27
- }): string | null;
33
+ }, scope?: FailureScope): string | null;
28
34
 
29
35
  export { describeLoadFailure, hostLoadRefusal };
@@ -1 +1 @@
1
- export{describeLoadFailure,hostLoadRefusal}from"../../chunk-A7ZJII7O.js";import"../../chunk-KDYIMJTZ.js";
1
+ export{describeLoadFailure,hostLoadRefusal}from"../../chunk-ERR437B5.js";import"../../chunk-KCOBHPN6.js";
@@ -1,6 +1,6 @@
1
1
  import * as react from 'react';
2
2
  import { ComponentType, ReactNode } from 'react';
3
- import { H as HostPickedMedia } from '../../host-DJ8Gzsx7.js';
3
+ import { H as HostPickedMedia, E as EaselHost } from '../../host-BQ_b9Qzk.js';
4
4
  import '../../blocks/index.js';
5
5
  import '../../types-E3HrTPg2.js';
6
6
  import '../../data/index.js';
@@ -9,6 +9,8 @@ import '../../resolve-D68pb3Bx.js';
9
9
  import '../../plan-DChbUXdS.js';
10
10
  import './document-contract.js';
11
11
  import './session.js';
12
+ import './backend-error.js';
13
+ import '../../edit-lock/index.js';
12
14
  import './host-chrome.js';
13
15
  import './links/link-filters.js';
14
16
  import '../../LinkPicker-W2Rtxetz.js';
@@ -17,7 +19,6 @@ import './section-template-types.js';
17
19
  import './puck/content-tree.js';
18
20
  import './document-switch.js';
19
21
  import '../../engine-DBxp_v6B.js';
20
- import '../../edit-lock/index.js';
21
22
  import './admin-bridge.js';
22
23
 
23
24
  /**
@@ -40,13 +41,23 @@ import './admin-bridge.js';
40
41
  * • BROWSING — the rail opens the "media" left view. The host's panel shows
41
42
  * the library to look through, upload to, tidy. `pick` is null.
42
43
  * • PICKING — a field calls `requestMediaPick` (lib/media-picker). With
43
- * a panel here, that becomes {@link requestPanelPick}: the chrome lays the
44
- * panel over the left panel in pick mode, the host's panel calls `onPick`,
45
- * and the field gets the media. Leaving pick mode any other way (the
46
- * panel's Cancel, a rail button, closing the panel) settles it `null`.
44
+ * a panel here, that becomes a request to THIS provider's pick store: the
45
+ * chrome lays the panel over the left panel in pick mode, the host's panel
46
+ * calls `onPick`, and the field gets the media. Leaving pick mode any other
47
+ * way (the panel's Cancel, a rail button, closing the panel) settles it
48
+ * `null`.
47
49
  *
48
- * Module state for the same reason as lib/media-picker: the fields that
49
- * ask are Puck custom fields, which no prop reaches.
50
+ * ONE PENDING PICK PER PROVIDER (0.103.0). Until then the pending pick was
51
+ * module state, one for the page — right while one editor is mounted, and
52
+ * wrong the moment two are (the admin's website editor and campaign designer):
53
+ * a field in one laid the other's panel over its own left panel too, and a
54
+ * Cancel in either settled the other's field. Each provider now keeps its own
55
+ * {@link MediaPickStore}; the chrome under it reads that one, and a field's
56
+ * request finds it by the HOST the field asks through (`requestMediaPick(host,
57
+ * …)` — one host per mounted editor, lib/host), so no prop or context has to
58
+ * reach the field's click handler. A request whose host no provider sits under
59
+ * goes to the provider mounted last, which is exactly what the module state
60
+ * answered, so one mounted editor behaves as it always did.
50
61
  */
51
62
  /** What a field asked the panel for. `file` is a file dropped straight on the
52
63
  * field: the host uploads it and picks it without waiting for a click. */
@@ -57,6 +68,14 @@ interface MediaPickRequest {
57
68
  /** The field's label, e.g. "Background image". */
58
69
  title: string;
59
70
  file?: File | null;
71
+ /**
72
+ * The field's own terms for its host's panel (0.103.0), handed to it
73
+ * untouched — the campaign designer's logo field asks for `{ bakeableOnly:
74
+ * true }`. The screen reads none of it. Absent when the field gave none;
75
+ * the window's `open-media-picker` message never carries it (its shape is
76
+ * the website's protocol).
77
+ */
78
+ options?: Record<string, unknown>;
60
79
  }
61
80
  /** The props the host's panel component is drawn with. */
62
81
  interface MediaPanelProps {
@@ -67,28 +86,73 @@ interface MediaPanelProps {
67
86
  }
68
87
  /** The host's media library, as a component the editor draws in its panel. */
69
88
  type MediaPanelComponent = ComponentType<MediaPanelProps>;
89
+ /**
90
+ * One editor's pending pick (0.103.0): what its panel is choosing for, and who
91
+ * waits on the answer. A {@link MediaPanelProvider} makes one for itself.
92
+ */
93
+ interface MediaPickStore {
94
+ /** The field the panel is choosing for, or null while nothing is. */
95
+ current(): MediaPickRequest | null;
96
+ /**
97
+ * Open pick mode for one field; resolves with the media chosen, or null. A
98
+ * second field asking before the first is answered takes the panel over,
99
+ * and the first resolves null — one panel answers one field.
100
+ */
101
+ request(request: MediaPickRequest): Promise<HostPickedMedia | null>;
102
+ /** Answer the field the panel is choosing for (`media` null: no choice). A
103
+ * stale id — an answer for a request already superseded — does nothing. */
104
+ settle(requestId: string, media: HostPickedMedia | null): void;
105
+ /** Leave pick mode without a choice, whatever is being chosen. */
106
+ cancel(): void;
107
+ subscribe(listener: () => void): () => void;
108
+ }
109
+ declare function createMediaPickStore(): MediaPickStore;
70
110
  /** Supply the host's panel to the editor below. `panel` null keeps the old
71
- * window: fields ask the host with `open-media-picker`. */
111
+ * window: fields ask the host with `open-media-picker`. Sit it under the
112
+ * editor's `EaselHostProvider`, as the website's frame does: that host is
113
+ * how a field's request finds this provider among several. */
72
114
  declare function MediaPanelProvider({ panel, children }: {
73
115
  panel: MediaPanelComponent | null;
74
116
  children: ReactNode;
75
117
  }): react.JSX.Element;
76
118
  /** The host's panel for the editor this renders in, or null. */
77
119
  declare function useMediaPanel(): MediaPanelComponent | null;
78
- /** Whether a field's request goes to the panel rather than to the host. */
120
+ /**
121
+ * The pick store a field's request through `host` goes to, or null when that
122
+ * editor has no panel and the host is asked with the window's message: the
123
+ * provider under that host (the last one, if two share it), else the page's
124
+ * provider, as the one module-wide store answered before 0.103.0.
125
+ */
126
+ declare function mediaPickStoreFor(host: EaselHost): MediaPickStore | null;
127
+ /** Whether a field's request goes to the panel rather than to the host — of
128
+ * the page's provider, the one mounted last. */
79
129
  declare function hasMediaPanel(): boolean;
80
130
  /**
81
- * Open the panel in pick mode for one field; resolves with the media chosen, or
82
- * null. A second field asking before the first is answered takes the panel over,
83
- * and the first resolves null — one panel answers one field.
131
+ * Open the page's panel (the provider mounted last) in pick mode for one
132
+ * field; resolves with the media chosen, or null. A field asks through
133
+ * `requestMediaPick`, which finds the panel of ITS editor instead.
84
134
  */
85
135
  declare function requestPanelPick(request: MediaPickRequest): Promise<HostPickedMedia | null>;
86
- /** Answer the field the panel is choosing for (`media` null: no choice). A
136
+ /** Answer the field a panel is choosing for (`media` null: no choice), in
137
+ * whichever editor asked: a request id names one field of one editor. A
87
138
  * stale id — an answer for a request already superseded — does nothing. */
88
139
  declare function settlePanelPick(requestId: string, media: HostPickedMedia | null): void;
89
- /** Leave pick mode without a choice, whatever is being chosen. */
140
+ /** Leave the page's pick mode without a choice, whatever is being chosen.
141
+ * Under a provider, `useCancelPanelPick` leaves that editor's. */
90
142
  declare function cancelPanelPick(): void;
91
- /** The field the panel is choosing for, or null while nothing is. */
143
+ /** The field the panel is choosing for, or null while nothing is — in the
144
+ * editor this renders in. */
92
145
  declare function usePanelPick(): MediaPickRequest | null;
146
+ /** Leave THIS editor's pick mode without a choice (0.103.0): a stable
147
+ * function, for the chrome's Escape, rail and panel-closed paths. */
148
+ declare function useCancelPanelPick(): () => void;
149
+ /**
150
+ * A change of selection leaves pick mode (0.103.0, `ScreenParts
151
+ * .pickFollowsSelection`): with `follows`, the field still waiting when
152
+ * `selection` moves is settled with null, as a Cancel would — the field that
153
+ * asked belongs to the block that is no longer selected. Without it, nothing:
154
+ * a pick outlives a selection, as it always has.
155
+ */
156
+ declare function usePickFollowsSelection(follows: boolean, selection: unknown): void;
93
157
 
94
- export { type MediaPanelComponent, type MediaPanelProps, MediaPanelProvider, type MediaPickRequest, cancelPanelPick, hasMediaPanel, requestPanelPick, settlePanelPick, useMediaPanel, usePanelPick };
158
+ export { type MediaPanelComponent, type MediaPanelProps, MediaPanelProvider, type MediaPickRequest, type MediaPickStore, cancelPanelPick, createMediaPickStore, hasMediaPanel, mediaPickStoreFor, requestPanelPick, settlePanelPick, useCancelPanelPick, useMediaPanel, usePanelPick, usePickFollowsSelection };
@@ -1 +1 @@
1
- export{MediaPanelProvider,cancelPanelPick,hasMediaPanel,requestPanelPick,settlePanelPick,useMediaPanel,usePanelPick}from"../../chunk-ZZ7VLIHQ.js";
1
+ export{MediaPanelProvider,cancelPanelPick,createMediaPickStore,hasMediaPanel,mediaPickStoreFor,requestPanelPick,settlePanelPick,useCancelPanelPick,useMediaPanel,usePanelPick,usePickFollowsSelection}from"../../chunk-R6WTQWAC.js";import"../../chunk-U3JP4VGF.js";
@@ -1,4 +1,4 @@
1
- import { E as EaselHost } from '../../host-DJ8Gzsx7.js';
1
+ import { E as EaselHost } from '../../host-BQ_b9Qzk.js';
2
2
  import 'react';
3
3
  import '../../blocks/index.js';
4
4
  import '../../types-E3HrTPg2.js';
@@ -8,6 +8,8 @@ import '../../resolve-D68pb3Bx.js';
8
8
  import '../../plan-DChbUXdS.js';
9
9
  import './document-contract.js';
10
10
  import './session.js';
11
+ import './backend-error.js';
12
+ import '../../edit-lock/index.js';
11
13
  import './host-chrome.js';
12
14
  import './links/link-filters.js';
13
15
  import '../../LinkPicker-W2Rtxetz.js';
@@ -16,7 +18,6 @@ import './section-template-types.js';
16
18
  import './puck/content-tree.js';
17
19
  import './document-switch.js';
18
20
  import '../../engine-DBxp_v6B.js';
19
- import '../../edit-lock/index.js';
20
21
  import './admin-bridge.js';
21
22
 
22
23
  /**
@@ -28,6 +29,10 @@ import './admin-bridge.js';
28
29
  * • A host that supplies a MEDIA PANEL (lib/media-panel — the admin
29
30
  * portal, from efficient-web 0.2.0) answers in the editor's own left panel:
30
31
  * the request opens that panel in pick mode, and nothing leaves the editor.
32
+ * The panel is the one of the editor the field asks through: `host` is
33
+ * that editor's (one per mounted editor), and the provider under it keeps
34
+ * its own pending pick (0.103.0), so two editors mounted in one page never
35
+ * answer each other's fields.
31
36
  * • Any other host is asked to open its picker window, over the
32
37
  * request/response protocol below. The picker UI lives in the host, so
33
38
  * this module owns the EDITOR half:
@@ -54,11 +59,18 @@ interface PickedMedia {
54
59
  * Choose media for a slot; resolves with the chosen media, or null if the user
55
60
  * cancelled (or there's no host to ask). `file` is a file dropped straight on
56
61
  * the slot — the host uploads it and picks it immediately.
62
+ *
63
+ * `options` (0.103.0) are the field's own terms for its host's PANEL, handed to
64
+ * it untouched on the request (`MediaPickRequest.options`) — the campaign
65
+ * designer's logo field asks for `{ bakeableOnly: true }`. The window's
66
+ * `open-media-picker` message carries none: its shape is the website's
67
+ * protocol, mirrored by the storefront.
57
68
  */
58
69
  declare function requestMediaPick(host: EaselHost, opts: {
59
70
  accept: string;
60
71
  title: string;
61
72
  file?: File | null;
73
+ options?: Record<string, unknown>;
62
74
  }): Promise<PickedMedia | null>;
63
75
  /** Settle a pending pick (called by the central message listener on the admin's
64
76
  * reply). Unknown ids — a stale reply, or a pick meant for another editor
@@ -1 +1 @@
1
- export{requestMediaPick,resolveMediaPick}from"../../chunk-6FY3PZS3.js";import"../../chunk-ZZ7VLIHQ.js";
1
+ export{requestMediaPick,resolveMediaPick}from"../../chunk-KG7RJWOK.js";import"../../chunk-R6WTQWAC.js";import"../../chunk-U3JP4VGF.js";
@@ -1,5 +1,49 @@
1
1
  import { EditLock } from '../../edit-lock/index.js';
2
+ import { EaselSession } from './session.js';
3
+ import '../../blocks/index.js';
4
+ import 'react';
5
+ import '../../types-E3HrTPg2.js';
6
+ import '../../data/index.js';
7
+ import '../../types-41704JE4.js';
8
+ import '../../resolve-D68pb3Bx.js';
9
+ import '../../plan-DChbUXdS.js';
10
+ import './backend-error.js';
11
+ import './host-chrome.js';
12
+ import './links/link-filters.js';
13
+ import '../../LinkPicker-W2Rtxetz.js';
14
+ import './document-contract.js';
15
+ import './document-hooks.js';
16
+ import './section-template-types.js';
17
+ import './puck/content-tree.js';
18
+
19
+ /**
20
+ * The storefront editor's binding of the SHARED edit lock.
21
+ *
22
+ * The rules themselves — who may write the open document, what a failed claim /
23
+ * take-over / heartbeat means, how to read a refused save, and the claim driver
24
+ * that keeps a held write from being lost — live in `efficient-easel/edit-lock` and
25
+ * are imported straight from there by the code that needs them. This file used
26
+ * to be a 334-line copy of them; the campaign designer in efficient-admin-portal
27
+ * carried a second, drifted copy of the same rules. Card 11161 merged the two
28
+ * into the shared package, and this is all that is left here: the TWO facts that
29
+ * are genuinely this repo's.
30
+ *
31
+ * 1. what a failure looks like HERE (lib/failure: this repo's
32
+ * `ApiError`, or the editor backend's `WebsiteBackendError`), and
33
+ * 2. the `code` this backend puts in a refused-save body for a PAGE.
34
+ *
35
+ * Nothing else belongs in this file. A rule a second editor would also need goes
36
+ * in the shared module, or the copy starts growing back.
37
+ */
2
38
 
3
39
  declare const pageEditLock: EditLock;
40
+ /**
41
+ * The lock's rules for one editor's session (0.103.0): {@link pageEditLock}
42
+ * itself for a session that reads its host's errors as the page does — every
43
+ * session before 0.103.0, and the website's still — and, for a session that
44
+ * brought its own reading (`hostFailures`), the same rules reading a failure
45
+ * that session's way. Made once per session.
46
+ */
47
+ declare function editLockOf(session: EaselSession): EditLock;
4
48
 
5
- export { pageEditLock };
49
+ export { editLockOf, pageEditLock };
@@ -1 +1 @@
1
- export{pageEditLock}from"../../chunk-AKZWUV5Z.js";import"../../chunk-HMX55DYT.js";import"../../chunk-KDYIMJTZ.js";import"../../chunk-JUQ6YJCG.js";import"../../chunk-RE4LP46F.js";
1
+ export{editLockOf,pageEditLock}from"../../chunk-GMCZXMOV.js";import"../../chunk-CLOS6SSX.js";import"../../chunk-KCOBHPN6.js";import"../../chunk-THWO5YVZ.js";import"../../chunk-RE4LP46F.js";
@@ -27,6 +27,25 @@ type SlotConfigView = {
27
27
  * not know has no slots — and cannot render either, so there is nothing to walk.
28
28
  */
29
29
  declare function slotFieldsOf(config: SlotConfigView, type: string): string[];
30
+ /**
31
+ * What a component type's config ALLOWS of the two actions that make another
32
+ * node or take one away (0.103.0): its `permissions.duplicate` and
33
+ * `permissions.delete`, each true unless the config says false — the reading
34
+ * Puck gave a config that carried none. The campaign designer's Product keeps
35
+ * its Price line this way (`{ delete: false, duplicate: false }`).
36
+ *
37
+ * The screen's tree rows, its menu and the inspector head it hands this to
38
+ * (`ScreenInspectorPanelProps.nodeActions`) all ask HERE, so the three cannot
39
+ * come to disagree about one block. Only the config's own, never the
40
+ * easel-wide permissions the edit lock sets: a document somebody else holds is
41
+ * refused at the writes, as it always was, and draws the rows it drew.
42
+ *
43
+ * A type the config does not know allows both, as one with no `permissions`.
44
+ */
45
+ declare function blockNodeActions(config: SlotConfigView, type: string): {
46
+ duplicate: boolean;
47
+ delete: boolean;
48
+ };
30
49
  /**
31
50
  * A slot child, addressed the way the Layers tree selects it: the node, the
32
51
  * compound zone key "<parentId>:<slotName>" Puck's ops take, and its index in
@@ -46,6 +65,13 @@ type SlotChild = {
46
65
  * arrays rather than `data.zones` (which stays empty for slots).
47
66
  */
48
67
  declare function childSlotsOf(config: SlotConfigView, item: TreeItem): SlotChild[];
68
+ /**
69
+ * The children of ONE slot of `item`, addressed as {@link childSlotsOf}
70
+ * addresses them (0.105.0): what the Layers tree draws under a slot it draws
71
+ * as a row of its own (`ScreenBlockRules.slotsOf`). A slot the node holds
72
+ * nothing in, or no array in, has none.
73
+ */
74
+ declare function slotChildrenIn(item: TreeItem, slot: string): SlotChild[];
49
75
  /**
50
76
  * WHERE a node sits in the document — the node itself, the zone key its own
51
77
  * array is addressed by, and its index in that array. Exactly the three
@@ -193,4 +219,4 @@ declare function missingPinnedTypes(live: ReadonlyArray<{
193
219
  type?: string;
194
220
  }>): string[];
195
221
 
196
- export { FOOTER_TYPE, HEADER_TYPE, type NodeLocation, ROOT_ZONE, type SlotChild, type SlotConfigView, TREE_MAX_DEPTH, type TreeItem, childSlotsOf, locateNode, missingPinnedTypes, nestsInTree, newNodeId, pinnedDuplicateIds, pinnedDuplicateIndices, slotFieldsOf };
222
+ export { FOOTER_TYPE, HEADER_TYPE, type NodeLocation, ROOT_ZONE, type SlotChild, type SlotConfigView, TREE_MAX_DEPTH, type TreeItem, blockNodeActions, childSlotsOf, locateNode, missingPinnedTypes, nestsInTree, newNodeId, pinnedDuplicateIds, pinnedDuplicateIndices, slotChildrenIn, slotFieldsOf };
@@ -1 +1 @@
1
- export{FOOTER_TYPE,HEADER_TYPE,ROOT_ZONE,TREE_MAX_DEPTH,childSlotsOf,locateNode,missingPinnedTypes,nestsInTree,newNodeId,pinnedDuplicateIds,pinnedDuplicateIndices,slotFieldsOf}from"../../../chunk-FUDHI5I4.js";
1
+ export{FOOTER_TYPE,HEADER_TYPE,ROOT_ZONE,TREE_MAX_DEPTH,blockNodeActions,childSlotsOf,locateNode,missingPinnedTypes,nestsInTree,newNodeId,pinnedDuplicateIds,pinnedDuplicateIndices,slotChildrenIn,slotFieldsOf}from"../../../chunk-PLVEGYK6.js";
@@ -68,6 +68,13 @@ interface PaletteLook {
68
68
  * generic primitives (Heading / Text / ImageBlock / ButtonBlock) sit in NO
69
69
  * category on purpose, so they never appear here — they are added from their
70
70
  * parent's slot instead. See the note above `categories:` in lib/puck/config.tsx.
71
+ *
72
+ * A category the config marks `visible: false` is NOT offered (0.105.0, seam
73
+ * E9): it is a registry's way of keeping blocks it has out of the picker — the
74
+ * campaign designer's Product parts, its retired blocks, its Sections — and a
75
+ * palette that listed them would offer things that may not be put on a page.
76
+ * Puck's own palette read the flag the same way. No website category carries
77
+ * it, so the website's palette is the list it was.
71
78
  */
72
79
  declare function buildPaletteSections(config: Config, look: PaletteLook): PaletteSection[];
73
80
  /** A category's display label — the layer's short one where there is one, else the config's title. */
@@ -1 +1 @@
1
- export{buildPaletteSections,categoryLabel,matchesQuery,paletteWithoutPinned,pinnedSection}from"../../../chunk-GENAF3P6.js";
1
+ export{buildPaletteSections,categoryLabel,matchesQuery,paletteWithoutPinned,pinnedSection}from"../../../chunk-PA3PNTVV.js";
@@ -1 +1 @@
1
- export{cloneNodeWithFreshIds,docToNode,nodeToDoc}from"../../../chunk-AKFJK65Z.js";import"../../../chunk-FUDHI5I4.js";
1
+ export{cloneNodeWithFreshIds,docToNode,nodeToDoc}from"../../../chunk-IE4GFYKO.js";import"../../../chunk-PLVEGYK6.js";