@batterai/editor-shell 0.1.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 (666) hide show
  1. package/CHANGELOG.md +5 -0
  2. package/LICENSE +101 -0
  3. package/README.md +11 -0
  4. package/dist/App.d.ts +4 -0
  5. package/dist/App.d.ts.map +1 -0
  6. package/dist/App.js +388 -0
  7. package/dist/App.js.map +1 -0
  8. package/dist/app/AppCanvas.d.ts +52 -0
  9. package/dist/app/AppCanvas.d.ts.map +1 -0
  10. package/dist/app/AppCanvas.js +43 -0
  11. package/dist/app/AppCanvas.js.map +1 -0
  12. package/dist/app/AppDialogs.d.ts +25 -0
  13. package/dist/app/AppDialogs.d.ts.map +1 -0
  14. package/dist/app/AppDialogs.js +16 -0
  15. package/dist/app/AppDialogs.js.map +1 -0
  16. package/dist/app/AppInspectorPanel.d.ts +66 -0
  17. package/dist/app/AppInspectorPanel.d.ts.map +1 -0
  18. package/dist/app/AppInspectorPanel.js +94 -0
  19. package/dist/app/AppInspectorPanel.js.map +1 -0
  20. package/dist/app/AppStates.d.ts +5 -0
  21. package/dist/app/AppStates.d.ts.map +1 -0
  22. package/dist/app/AppStates.js +8 -0
  23. package/dist/app/AppStates.js.map +1 -0
  24. package/dist/app/AppTypes.d.ts +18 -0
  25. package/dist/app/AppTypes.d.ts.map +1 -0
  26. package/dist/app/AppTypes.js +2 -0
  27. package/dist/app/AppTypes.js.map +1 -0
  28. package/dist/app/OperationErrorBanner.d.ts +5 -0
  29. package/dist/app/OperationErrorBanner.d.ts.map +1 -0
  30. package/dist/app/OperationErrorBanner.js +5 -0
  31. package/dist/app/OperationErrorBanner.js.map +1 -0
  32. package/dist/app/capability-guards.d.ts +9 -0
  33. package/dist/app/capability-guards.d.ts.map +1 -0
  34. package/dist/app/capability-guards.js +22 -0
  35. package/dist/app/capability-guards.js.map +1 -0
  36. package/dist/app/deriveSelectionState.d.ts +31 -0
  37. package/dist/app/deriveSelectionState.d.ts.map +1 -0
  38. package/dist/app/deriveSelectionState.js +79 -0
  39. package/dist/app/deriveSelectionState.js.map +1 -0
  40. package/dist/app/helpers.d.ts +31 -0
  41. package/dist/app/helpers.d.ts.map +1 -0
  42. package/dist/app/helpers.js +145 -0
  43. package/dist/app/helpers.js.map +1 -0
  44. package/dist/app/hostServices.d.ts +2 -0
  45. package/dist/app/hostServices.d.ts.map +1 -0
  46. package/dist/app/hostServices.js +2 -0
  47. package/dist/app/hostServices.js.map +1 -0
  48. package/dist/app/persistence-machine.d.ts +27 -0
  49. package/dist/app/persistence-machine.d.ts.map +1 -0
  50. package/dist/app/persistence-machine.js +66 -0
  51. package/dist/app/persistence-machine.js.map +1 -0
  52. package/dist/app/useCollectionEditing.d.ts +30 -0
  53. package/dist/app/useCollectionEditing.d.ts.map +1 -0
  54. package/dist/app/useCollectionEditing.js +80 -0
  55. package/dist/app/useCollectionEditing.js.map +1 -0
  56. package/dist/app/useCommitActions.d.ts +64 -0
  57. package/dist/app/useCommitActions.d.ts.map +1 -0
  58. package/dist/app/useCommitActions.js +319 -0
  59. package/dist/app/useCommitActions.js.map +1 -0
  60. package/dist/app/useEditorCollaboration.d.ts +30 -0
  61. package/dist/app/useEditorCollaboration.d.ts.map +1 -0
  62. package/dist/app/useEditorCollaboration.js +374 -0
  63. package/dist/app/useEditorCollaboration.js.map +1 -0
  64. package/dist/app/useEditorEffects.d.ts +42 -0
  65. package/dist/app/useEditorEffects.d.ts.map +1 -0
  66. package/dist/app/useEditorEffects.js +105 -0
  67. package/dist/app/useEditorEffects.js.map +1 -0
  68. package/dist/app/useEditorRuntime.d.ts +34 -0
  69. package/dist/app/useEditorRuntime.d.ts.map +1 -0
  70. package/dist/app/useEditorRuntime.js +68 -0
  71. package/dist/app/useEditorRuntime.js.map +1 -0
  72. package/dist/app/useEditorState.d.ts +55 -0
  73. package/dist/app/useEditorState.d.ts.map +1 -0
  74. package/dist/app/useEditorState.js +68 -0
  75. package/dist/app/useEditorState.js.map +1 -0
  76. package/dist/app/usePageOps.d.ts +37 -0
  77. package/dist/app/usePageOps.d.ts.map +1 -0
  78. package/dist/app/usePageOps.js +69 -0
  79. package/dist/app/usePageOps.js.map +1 -0
  80. package/dist/app/usePersistence.d.ts +48 -0
  81. package/dist/app/usePersistence.d.ts.map +1 -0
  82. package/dist/app/usePersistence.js +344 -0
  83. package/dist/app/usePersistence.js.map +1 -0
  84. package/dist/app/usePreviewSession.d.ts +22 -0
  85. package/dist/app/usePreviewSession.d.ts.map +1 -0
  86. package/dist/app/usePreviewSession.js +21 -0
  87. package/dist/app/usePreviewSession.js.map +1 -0
  88. package/dist/app/useWorkspaceDocumentSync.d.ts +33 -0
  89. package/dist/app/useWorkspaceDocumentSync.d.ts.map +1 -0
  90. package/dist/app/useWorkspaceDocumentSync.js +128 -0
  91. package/dist/app/useWorkspaceDocumentSync.js.map +1 -0
  92. package/dist/appearance.d.ts +6 -0
  93. package/dist/appearance.d.ts.map +1 -0
  94. package/dist/appearance.js +53 -0
  95. package/dist/appearance.js.map +1 -0
  96. package/dist/bindingChips.d.ts +28 -0
  97. package/dist/bindingChips.d.ts.map +1 -0
  98. package/dist/bindingChips.js +93 -0
  99. package/dist/bindingChips.js.map +1 -0
  100. package/dist/block-factory.d.ts +21 -0
  101. package/dist/block-factory.d.ts.map +1 -0
  102. package/dist/block-factory.js +78 -0
  103. package/dist/block-factory.js.map +1 -0
  104. package/dist/blockHost.d.ts +22 -0
  105. package/dist/blockHost.d.ts.map +1 -0
  106. package/dist/blockHost.js +103 -0
  107. package/dist/blockHost.js.map +1 -0
  108. package/dist/blockInteraction.d.ts +11 -0
  109. package/dist/blockInteraction.d.ts.map +1 -0
  110. package/dist/blockInteraction.js +16 -0
  111. package/dist/blockInteraction.js.map +1 -0
  112. package/dist/blockPresets.d.ts +4 -0
  113. package/dist/blockPresets.d.ts.map +1 -0
  114. package/dist/blockPresets.js +11 -0
  115. package/dist/blockPresets.js.map +1 -0
  116. package/dist/collaboration.d.ts +41 -0
  117. package/dist/collaboration.d.ts.map +1 -0
  118. package/dist/collaboration.js +4 -0
  119. package/dist/collaboration.js.map +1 -0
  120. package/dist/collectionItemAddress.d.ts +12 -0
  121. package/dist/collectionItemAddress.d.ts.map +1 -0
  122. package/dist/collectionItemAddress.js +19 -0
  123. package/dist/collectionItemAddress.js.map +1 -0
  124. package/dist/components/AddCollectionItemControl.d.ts +15 -0
  125. package/dist/components/AddCollectionItemControl.d.ts.map +1 -0
  126. package/dist/components/AddCollectionItemControl.js +19 -0
  127. package/dist/components/AddCollectionItemControl.js.map +1 -0
  128. package/dist/components/AuditHistoryPanel.d.ts +10 -0
  129. package/dist/components/AuditHistoryPanel.d.ts.map +1 -0
  130. package/dist/components/AuditHistoryPanel.js +11 -0
  131. package/dist/components/AuditHistoryPanel.js.map +1 -0
  132. package/dist/components/Canvas.d.ts +64 -0
  133. package/dist/components/Canvas.d.ts.map +1 -0
  134. package/dist/components/Canvas.js +238 -0
  135. package/dist/components/Canvas.js.map +1 -0
  136. package/dist/components/CollaborationLayer.d.ts +13 -0
  137. package/dist/components/CollaborationLayer.d.ts.map +1 -0
  138. package/dist/components/CollaborationLayer.js +91 -0
  139. package/dist/components/CollaborationLayer.js.map +1 -0
  140. package/dist/components/DesignSettingsPanel.d.ts +10 -0
  141. package/dist/components/DesignSettingsPanel.d.ts.map +1 -0
  142. package/dist/components/DesignSettingsPanel.js +26 -0
  143. package/dist/components/DesignSettingsPanel.js.map +1 -0
  144. package/dist/components/EditableDate.d.ts +24 -0
  145. package/dist/components/EditableDate.d.ts.map +1 -0
  146. package/dist/components/EditableDate.js +41 -0
  147. package/dist/components/EditableDate.js.map +1 -0
  148. package/dist/components/EditableText.d.ts +23 -0
  149. package/dist/components/EditableText.d.ts.map +1 -0
  150. package/dist/components/EditableText.js +53 -0
  151. package/dist/components/EditableText.js.map +1 -0
  152. package/dist/components/FieldControl.d.ts +15 -0
  153. package/dist/components/FieldControl.d.ts.map +1 -0
  154. package/dist/components/FieldControl.js +64 -0
  155. package/dist/components/FieldControl.js.map +1 -0
  156. package/dist/components/IconFieldEditor.d.ts +9 -0
  157. package/dist/components/IconFieldEditor.d.ts.map +1 -0
  158. package/dist/components/IconFieldEditor.js +15 -0
  159. package/dist/components/IconFieldEditor.js.map +1 -0
  160. package/dist/components/ImageFieldEditor.d.ts +15 -0
  161. package/dist/components/ImageFieldEditor.d.ts.map +1 -0
  162. package/dist/components/ImageFieldEditor.js +37 -0
  163. package/dist/components/ImageFieldEditor.js.map +1 -0
  164. package/dist/components/Inspector.d.ts +55 -0
  165. package/dist/components/Inspector.d.ts.map +1 -0
  166. package/dist/components/Inspector.js +44 -0
  167. package/dist/components/Inspector.js.map +1 -0
  168. package/dist/components/LayoutBlockEditor.d.ts +32 -0
  169. package/dist/components/LayoutBlockEditor.d.ts.map +1 -0
  170. package/dist/components/LayoutBlockEditor.js +176 -0
  171. package/dist/components/LayoutBlockEditor.js.map +1 -0
  172. package/dist/components/LicenseWatermark.d.ts +5 -0
  173. package/dist/components/LicenseWatermark.d.ts.map +1 -0
  174. package/dist/components/LicenseWatermark.js +7 -0
  175. package/dist/components/LicenseWatermark.js.map +1 -0
  176. package/dist/components/NestedBlockItem.d.ts +26 -0
  177. package/dist/components/NestedBlockItem.d.ts.map +1 -0
  178. package/dist/components/NestedBlockItem.js +164 -0
  179. package/dist/components/NestedBlockItem.js.map +1 -0
  180. package/dist/components/NestedInsertSlot.d.ts +18 -0
  181. package/dist/components/NestedInsertSlot.d.ts.map +1 -0
  182. package/dist/components/NestedInsertSlot.js +51 -0
  183. package/dist/components/NestedInsertSlot.js.map +1 -0
  184. package/dist/components/NewPageDialog.d.ts +9 -0
  185. package/dist/components/NewPageDialog.d.ts.map +1 -0
  186. package/dist/components/NewPageDialog.js +12 -0
  187. package/dist/components/NewPageDialog.js.map +1 -0
  188. package/dist/components/PageFrame.d.ts +75 -0
  189. package/dist/components/PageFrame.d.ts.map +1 -0
  190. package/dist/components/PageFrame.js +87 -0
  191. package/dist/components/PageFrame.js.map +1 -0
  192. package/dist/components/PageInspector.d.ts +16 -0
  193. package/dist/components/PageInspector.d.ts.map +1 -0
  194. package/dist/components/PageInspector.js +56 -0
  195. package/dist/components/PageInspector.js.map +1 -0
  196. package/dist/components/PresetSaveDialog.d.ts +8 -0
  197. package/dist/components/PresetSaveDialog.d.ts.map +1 -0
  198. package/dist/components/PresetSaveDialog.js +7 -0
  199. package/dist/components/PresetSaveDialog.js.map +1 -0
  200. package/dist/components/ReferenceChipsEditor.d.ts +23 -0
  201. package/dist/components/ReferenceChipsEditor.d.ts.map +1 -0
  202. package/dist/components/ReferenceChipsEditor.js +68 -0
  203. package/dist/components/ReferenceChipsEditor.js.map +1 -0
  204. package/dist/components/TopBar.d.ts +49 -0
  205. package/dist/components/TopBar.d.ts.map +1 -0
  206. package/dist/components/TopBar.js +41 -0
  207. package/dist/components/TopBar.js.map +1 -0
  208. package/dist/components/canvas/CanvasBoard.d.ts +97 -0
  209. package/dist/components/canvas/CanvasBoard.d.ts.map +1 -0
  210. package/dist/components/canvas/CanvasBoard.js +35 -0
  211. package/dist/components/canvas/CanvasBoard.js.map +1 -0
  212. package/dist/components/canvas/EditableCanvasTitle.d.ts +13 -0
  213. package/dist/components/canvas/EditableCanvasTitle.d.ts.map +1 -0
  214. package/dist/components/canvas/EditableCanvasTitle.js +74 -0
  215. package/dist/components/canvas/EditableCanvasTitle.js.map +1 -0
  216. package/dist/components/canvas/camera.d.ts +9 -0
  217. package/dist/components/canvas/camera.d.ts.map +1 -0
  218. package/dist/components/canvas/camera.js +31 -0
  219. package/dist/components/canvas/camera.js.map +1 -0
  220. package/dist/components/canvas/column-window.d.ts +10 -0
  221. package/dist/components/canvas/column-window.d.ts.map +1 -0
  222. package/dist/components/canvas/column-window.js +46 -0
  223. package/dist/components/canvas/column-window.js.map +1 -0
  224. package/dist/components/canvas/keyboard-nav.d.ts +7 -0
  225. package/dist/components/canvas/keyboard-nav.d.ts.map +1 -0
  226. package/dist/components/canvas/keyboard-nav.js +44 -0
  227. package/dist/components/canvas/keyboard-nav.js.map +1 -0
  228. package/dist/components/canvas/links.d.ts +2 -0
  229. package/dist/components/canvas/links.d.ts.map +1 -0
  230. package/dist/components/canvas/links.js +7 -0
  231. package/dist/components/canvas/links.js.map +1 -0
  232. package/dist/components/editable-text/BindingInlineEditor.d.ts +13 -0
  233. package/dist/components/editable-text/BindingInlineEditor.d.ts.map +1 -0
  234. package/dist/components/editable-text/BindingInlineEditor.js +24 -0
  235. package/dist/components/editable-text/BindingInlineEditor.js.map +1 -0
  236. package/dist/components/editable-text/BindingPicker.d.ts +10 -0
  237. package/dist/components/editable-text/BindingPicker.d.ts.map +1 -0
  238. package/dist/components/editable-text/BindingPicker.js +20 -0
  239. package/dist/components/editable-text/BindingPicker.js.map +1 -0
  240. package/dist/components/editable-text/RichTextToolbar.d.ts +13 -0
  241. package/dist/components/editable-text/RichTextToolbar.d.ts.map +1 -0
  242. package/dist/components/editable-text/RichTextToolbar.js +24 -0
  243. package/dist/components/editable-text/RichTextToolbar.js.map +1 -0
  244. package/dist/components/editable-text/bindingHtml.d.ts +19 -0
  245. package/dist/components/editable-text/bindingHtml.d.ts.map +1 -0
  246. package/dist/components/editable-text/bindingHtml.js +106 -0
  247. package/dist/components/editable-text/bindingHtml.js.map +1 -0
  248. package/dist/components/editable-text/editableTextDom.d.ts +5 -0
  249. package/dist/components/editable-text/editableTextDom.d.ts.map +1 -0
  250. package/dist/components/editable-text/editableTextDom.js +24 -0
  251. package/dist/components/editable-text/editableTextDom.js.map +1 -0
  252. package/dist/components/editable-text/floatingPosition.d.ts +25 -0
  253. package/dist/components/editable-text/floatingPosition.d.ts.map +1 -0
  254. package/dist/components/editable-text/floatingPosition.js +35 -0
  255. package/dist/components/editable-text/floatingPosition.js.map +1 -0
  256. package/dist/components/editable-text/formatting.d.ts +15 -0
  257. package/dist/components/editable-text/formatting.d.ts.map +1 -0
  258. package/dist/components/editable-text/formatting.js +82 -0
  259. package/dist/components/editable-text/formatting.js.map +1 -0
  260. package/dist/components/editable-text/richCommands.d.ts +9 -0
  261. package/dist/components/editable-text/richCommands.d.ts.map +1 -0
  262. package/dist/components/editable-text/richCommands.js +41 -0
  263. package/dist/components/editable-text/richCommands.js.map +1 -0
  264. package/dist/components/editable-text/richHtml.d.ts +5 -0
  265. package/dist/components/editable-text/richHtml.d.ts.map +1 -0
  266. package/dist/components/editable-text/richHtml.js +150 -0
  267. package/dist/components/editable-text/richHtml.js.map +1 -0
  268. package/dist/components/editable-text/selection.d.ts +12 -0
  269. package/dist/components/editable-text/selection.d.ts.map +1 -0
  270. package/dist/components/editable-text/selection.js +119 -0
  271. package/dist/components/editable-text/selection.js.map +1 -0
  272. package/dist/components/editable-text/types.d.ts +32 -0
  273. package/dist/components/editable-text/types.d.ts.map +1 -0
  274. package/dist/components/editable-text/types.js +2 -0
  275. package/dist/components/editable-text/types.js.map +1 -0
  276. package/dist/components/editable-text/useEditableText.d.ts +35 -0
  277. package/dist/components/editable-text/useEditableText.d.ts.map +1 -0
  278. package/dist/components/editable-text/useEditableText.js +395 -0
  279. package/dist/components/editable-text/useEditableText.js.map +1 -0
  280. package/dist/components/image-editor/ImageEditorDialog.d.ts +16 -0
  281. package/dist/components/image-editor/ImageEditorDialog.d.ts.map +1 -0
  282. package/dist/components/image-editor/ImageEditorDialog.js +137 -0
  283. package/dist/components/image-editor/ImageEditorDialog.js.map +1 -0
  284. package/dist/components/image-editor/ImagePreview.d.ts +15 -0
  285. package/dist/components/image-editor/ImagePreview.d.ts.map +1 -0
  286. package/dist/components/image-editor/ImagePreview.js +16 -0
  287. package/dist/components/image-editor/ImagePreview.js.map +1 -0
  288. package/dist/components/image-editor/MediaBrowser.d.ts +22 -0
  289. package/dist/components/image-editor/MediaBrowser.d.ts.map +1 -0
  290. package/dist/components/image-editor/MediaBrowser.js +16 -0
  291. package/dist/components/image-editor/MediaBrowser.js.map +1 -0
  292. package/dist/components/image-editor/UsageSettingsForm.d.ts +10 -0
  293. package/dist/components/image-editor/UsageSettingsForm.d.ts.map +1 -0
  294. package/dist/components/image-editor/UsageSettingsForm.js +29 -0
  295. package/dist/components/image-editor/UsageSettingsForm.js.map +1 -0
  296. package/dist/components/image-editor/preview-style.d.ts +7 -0
  297. package/dist/components/image-editor/preview-style.d.ts.map +1 -0
  298. package/dist/components/image-editor/preview-style.js +47 -0
  299. package/dist/components/image-editor/preview-style.js.map +1 -0
  300. package/dist/components/image-editor/stage.d.ts +14 -0
  301. package/dist/components/image-editor/stage.d.ts.map +1 -0
  302. package/dist/components/image-editor/stage.js +116 -0
  303. package/dist/components/image-editor/stage.js.map +1 -0
  304. package/dist/components/image-editor/types.d.ts +38 -0
  305. package/dist/components/image-editor/types.d.ts.map +1 -0
  306. package/dist/components/image-editor/types.js +10 -0
  307. package/dist/components/image-editor/types.js.map +1 -0
  308. package/dist/components/image-editor/usage-conversion.d.ts +35 -0
  309. package/dist/components/image-editor/usage-conversion.d.ts.map +1 -0
  310. package/dist/components/image-editor/usage-conversion.js +249 -0
  311. package/dist/components/image-editor/usage-conversion.js.map +1 -0
  312. package/dist/components/inspector/CollectionItemFields.d.ts +10 -0
  313. package/dist/components/inspector/CollectionItemFields.d.ts.map +1 -0
  314. package/dist/components/inspector/CollectionItemFields.js +13 -0
  315. package/dist/components/inspector/CollectionItemFields.js.map +1 -0
  316. package/dist/components/inspector/ContentBindingControl.d.ts +14 -0
  317. package/dist/components/inspector/ContentBindingControl.d.ts.map +1 -0
  318. package/dist/components/inspector/ContentBindingControl.js +42 -0
  319. package/dist/components/inspector/ContentBindingControl.js.map +1 -0
  320. package/dist/components/inspector/PinControl.d.ts +10 -0
  321. package/dist/components/inspector/PinControl.d.ts.map +1 -0
  322. package/dist/components/inspector/PinControl.js +14 -0
  323. package/dist/components/inspector/PinControl.js.map +1 -0
  324. package/dist/components/inspector/constants.d.ts +8 -0
  325. package/dist/components/inspector/constants.d.ts.map +1 -0
  326. package/dist/components/inspector/constants.js +12 -0
  327. package/dist/components/inspector/constants.js.map +1 -0
  328. package/dist/components/inspector/content-item-label.d.ts +2 -0
  329. package/dist/components/inspector/content-item-label.d.ts.map +1 -0
  330. package/dist/components/inspector/content-item-label.js +23 -0
  331. package/dist/components/inspector/content-item-label.js.map +1 -0
  332. package/dist/components/page-frame/InsertSlot.d.ts +19 -0
  333. package/dist/components/page-frame/InsertSlot.d.ts.map +1 -0
  334. package/dist/components/page-frame/InsertSlot.js +55 -0
  335. package/dist/components/page-frame/InsertSlot.js.map +1 -0
  336. package/dist/components/page-frame/PageFrameBlockList.d.ts +43 -0
  337. package/dist/components/page-frame/PageFrameBlockList.d.ts.map +1 -0
  338. package/dist/components/page-frame/PageFrameBlockList.js +204 -0
  339. package/dist/components/page-frame/PageFrameBlockList.js.map +1 -0
  340. package/dist/components/page-frame/PageFrameControls.d.ts +23 -0
  341. package/dist/components/page-frame/PageFrameControls.d.ts.map +1 -0
  342. package/dist/components/page-frame/PageFrameControls.js +36 -0
  343. package/dist/components/page-frame/PageFrameControls.js.map +1 -0
  344. package/dist/components/page-frame/PageFramePathEditor.d.ts +33 -0
  345. package/dist/components/page-frame/PageFramePathEditor.d.ts.map +1 -0
  346. package/dist/components/page-frame/PageFramePathEditor.js +5 -0
  347. package/dist/components/page-frame/PageFramePathEditor.js.map +1 -0
  348. package/dist/components/page-frame/viewport.d.ts +26 -0
  349. package/dist/components/page-frame/viewport.d.ts.map +1 -0
  350. package/dist/components/page-frame/viewport.js +37 -0
  351. package/dist/components/page-frame/viewport.js.map +1 -0
  352. package/dist/content-model.d.ts +36 -0
  353. package/dist/content-model.d.ts.map +1 -0
  354. package/dist/content-model.js +15 -0
  355. package/dist/content-model.js.map +1 -0
  356. package/dist/contentModel.d.ts +3 -0
  357. package/dist/contentModel.d.ts.map +1 -0
  358. package/dist/contentModel.js +2 -0
  359. package/dist/contentModel.js.map +1 -0
  360. package/dist/designSettings.d.ts +11 -0
  361. package/dist/designSettings.d.ts.map +1 -0
  362. package/dist/designSettings.js +96 -0
  363. package/dist/designSettings.js.map +1 -0
  364. package/dist/drag-transfer.d.ts +28 -0
  365. package/dist/drag-transfer.d.ts.map +1 -0
  366. package/dist/drag-transfer.js +42 -0
  367. package/dist/drag-transfer.js.map +1 -0
  368. package/dist/editor/app/AppCanvas.d.ts +2 -0
  369. package/dist/editor/app/AppCanvas.d.ts.map +1 -0
  370. package/dist/editor/app/AppCanvas.js +2 -0
  371. package/dist/editor/app/AppCanvas.js.map +1 -0
  372. package/dist/editor/app/AppDialogs.d.ts +2 -0
  373. package/dist/editor/app/AppDialogs.d.ts.map +1 -0
  374. package/dist/editor/app/AppDialogs.js +2 -0
  375. package/dist/editor/app/AppDialogs.js.map +1 -0
  376. package/dist/editor/app/AppInspectorPanel.d.ts +2 -0
  377. package/dist/editor/app/AppInspectorPanel.d.ts.map +1 -0
  378. package/dist/editor/app/AppInspectorPanel.js +2 -0
  379. package/dist/editor/app/AppInspectorPanel.js.map +1 -0
  380. package/dist/editor/app/deriveSelectionState.d.ts +2 -0
  381. package/dist/editor/app/deriveSelectionState.d.ts.map +1 -0
  382. package/dist/editor/app/deriveSelectionState.js +2 -0
  383. package/dist/editor/app/deriveSelectionState.js.map +1 -0
  384. package/dist/editor/app/helpers.d.ts +2 -0
  385. package/dist/editor/app/helpers.d.ts.map +1 -0
  386. package/dist/editor/app/helpers.js +2 -0
  387. package/dist/editor/app/helpers.js.map +1 -0
  388. package/dist/editor/app/useCollectionEditing.d.ts +2 -0
  389. package/dist/editor/app/useCollectionEditing.d.ts.map +1 -0
  390. package/dist/editor/app/useCollectionEditing.js +2 -0
  391. package/dist/editor/app/useCollectionEditing.js.map +1 -0
  392. package/dist/editor/app/useCommitActions.d.ts +2 -0
  393. package/dist/editor/app/useCommitActions.d.ts.map +1 -0
  394. package/dist/editor/app/useCommitActions.js +2 -0
  395. package/dist/editor/app/useCommitActions.js.map +1 -0
  396. package/dist/editor/app/useEditorEffects.d.ts +2 -0
  397. package/dist/editor/app/useEditorEffects.d.ts.map +1 -0
  398. package/dist/editor/app/useEditorEffects.js +2 -0
  399. package/dist/editor/app/useEditorEffects.js.map +1 -0
  400. package/dist/editor/app/useEditorRuntime.d.ts +2 -0
  401. package/dist/editor/app/useEditorRuntime.d.ts.map +1 -0
  402. package/dist/editor/app/useEditorRuntime.js +2 -0
  403. package/dist/editor/app/useEditorRuntime.js.map +1 -0
  404. package/dist/editor/app/useEditorState.d.ts +2 -0
  405. package/dist/editor/app/useEditorState.d.ts.map +1 -0
  406. package/dist/editor/app/useEditorState.js +2 -0
  407. package/dist/editor/app/useEditorState.js.map +1 -0
  408. package/dist/editor/app/usePageOps.d.ts +2 -0
  409. package/dist/editor/app/usePageOps.d.ts.map +1 -0
  410. package/dist/editor/app/usePageOps.js +2 -0
  411. package/dist/editor/app/usePageOps.js.map +1 -0
  412. package/dist/editor/app/usePersistence.d.ts +2 -0
  413. package/dist/editor/app/usePersistence.d.ts.map +1 -0
  414. package/dist/editor/app/usePersistence.js +2 -0
  415. package/dist/editor/app/usePersistence.js.map +1 -0
  416. package/dist/editor/app/usePreviewSession.d.ts +2 -0
  417. package/dist/editor/app/usePreviewSession.d.ts.map +1 -0
  418. package/dist/editor/app/usePreviewSession.js +2 -0
  419. package/dist/editor/app/usePreviewSession.js.map +1 -0
  420. package/dist/editor/app/useWorkspaceDocumentSync.d.ts +2 -0
  421. package/dist/editor/app/useWorkspaceDocumentSync.d.ts.map +1 -0
  422. package/dist/editor/app/useWorkspaceDocumentSync.js +2 -0
  423. package/dist/editor/app/useWorkspaceDocumentSync.js.map +1 -0
  424. package/dist/editor/bindingChips.d.ts +2 -0
  425. package/dist/editor/bindingChips.d.ts.map +1 -0
  426. package/dist/editor/bindingChips.js +2 -0
  427. package/dist/editor/bindingChips.js.map +1 -0
  428. package/dist/editor/blockInteraction.d.ts +2 -0
  429. package/dist/editor/blockInteraction.d.ts.map +1 -0
  430. package/dist/editor/blockInteraction.js +2 -0
  431. package/dist/editor/blockInteraction.js.map +1 -0
  432. package/dist/editor/blockPresets.d.ts +2 -0
  433. package/dist/editor/blockPresets.d.ts.map +1 -0
  434. package/dist/editor/blockPresets.js +2 -0
  435. package/dist/editor/blockPresets.js.map +1 -0
  436. package/dist/editor/collectionItemAddress.d.ts +2 -0
  437. package/dist/editor/collectionItemAddress.d.ts.map +1 -0
  438. package/dist/editor/collectionItemAddress.js +2 -0
  439. package/dist/editor/collectionItemAddress.js.map +1 -0
  440. package/dist/editor/contentModel.d.ts +2 -0
  441. package/dist/editor/contentModel.d.ts.map +1 -0
  442. package/dist/editor/contentModel.js +2 -0
  443. package/dist/editor/contentModel.js.map +1 -0
  444. package/dist/editor/designSettings.d.ts +2 -0
  445. package/dist/editor/designSettings.d.ts.map +1 -0
  446. package/dist/editor/designSettings.js +2 -0
  447. package/dist/editor/designSettings.js.map +1 -0
  448. package/dist/editor/editorClipboard.d.ts +2 -0
  449. package/dist/editor/editorClipboard.d.ts.map +1 -0
  450. package/dist/editor/editorClipboard.js +2 -0
  451. package/dist/editor/editorClipboard.js.map +1 -0
  452. package/dist/editor/formatDate.d.ts +2 -0
  453. package/dist/editor/formatDate.d.ts.map +1 -0
  454. package/dist/editor/formatDate.js +2 -0
  455. package/dist/editor/formatDate.js.map +1 -0
  456. package/dist/editor/iconCatalog.d.ts +2 -0
  457. package/dist/editor/iconCatalog.d.ts.map +1 -0
  458. package/dist/editor/iconCatalog.js +2 -0
  459. package/dist/editor/iconCatalog.js.map +1 -0
  460. package/dist/editor/pageActions.d.ts +2 -0
  461. package/dist/editor/pageActions.d.ts.map +1 -0
  462. package/dist/editor/pageActions.js +2 -0
  463. package/dist/editor/pageActions.js.map +1 -0
  464. package/dist/editor/pagePaths.d.ts +2 -0
  465. package/dist/editor/pagePaths.d.ts.map +1 -0
  466. package/dist/editor/pagePaths.js +2 -0
  467. package/dist/editor/pagePaths.js.map +1 -0
  468. package/dist/editor/pagesActions.d.ts +2 -0
  469. package/dist/editor/pagesActions.d.ts.map +1 -0
  470. package/dist/editor/pagesActions.js +2 -0
  471. package/dist/editor/pagesActions.js.map +1 -0
  472. package/dist/editor/renderActions.d.ts +2 -0
  473. package/dist/editor/renderActions.d.ts.map +1 -0
  474. package/dist/editor/renderActions.js +2 -0
  475. package/dist/editor/renderActions.js.map +1 -0
  476. package/dist/editor/translation.d.ts +2 -0
  477. package/dist/editor/translation.d.ts.map +1 -0
  478. package/dist/editor/translation.js +2 -0
  479. package/dist/editor/translation.js.map +1 -0
  480. package/dist/editor/useCanvasBackStack.d.ts +2 -0
  481. package/dist/editor/useCanvasBackStack.d.ts.map +1 -0
  482. package/dist/editor/useCanvasBackStack.js +2 -0
  483. package/dist/editor/useCanvasBackStack.js.map +1 -0
  484. package/dist/editor/useCanvasCamera.d.ts +2 -0
  485. package/dist/editor/useCanvasCamera.d.ts.map +1 -0
  486. package/dist/editor/useCanvasCamera.js +2 -0
  487. package/dist/editor/useCanvasCamera.js.map +1 -0
  488. package/dist/editor/useCanvasFocus.d.ts +2 -0
  489. package/dist/editor/useCanvasFocus.d.ts.map +1 -0
  490. package/dist/editor/useCanvasFocus.js +2 -0
  491. package/dist/editor/useCanvasFocus.js.map +1 -0
  492. package/dist/editor/useCanvasKeyboardNav.d.ts +2 -0
  493. package/dist/editor/useCanvasKeyboardNav.d.ts.map +1 -0
  494. package/dist/editor/useCanvasKeyboardNav.js +2 -0
  495. package/dist/editor/useCanvasKeyboardNav.js.map +1 -0
  496. package/dist/editor/useClipboardActions.d.ts +2 -0
  497. package/dist/editor/useClipboardActions.d.ts.map +1 -0
  498. package/dist/editor/useClipboardActions.js +2 -0
  499. package/dist/editor/useClipboardActions.js.map +1 -0
  500. package/dist/editor/useColumnWindow.d.ts +2 -0
  501. package/dist/editor/useColumnWindow.d.ts.map +1 -0
  502. package/dist/editor/useColumnWindow.js +2 -0
  503. package/dist/editor/useColumnWindow.js.map +1 -0
  504. package/dist/editor/useEditorHistory.d.ts +2 -0
  505. package/dist/editor/useEditorHistory.d.ts.map +1 -0
  506. package/dist/editor/useEditorHistory.js +2 -0
  507. package/dist/editor/useEditorHistory.js.map +1 -0
  508. package/dist/editor/usePagePathEditor.d.ts +2 -0
  509. package/dist/editor/usePagePathEditor.d.ts.map +1 -0
  510. package/dist/editor/usePagePathEditor.js +2 -0
  511. package/dist/editor/usePagePathEditor.js.map +1 -0
  512. package/dist/editor/usePageTitleEditor.d.ts +2 -0
  513. package/dist/editor/usePageTitleEditor.d.ts.map +1 -0
  514. package/dist/editor/usePageTitleEditor.js +2 -0
  515. package/dist/editor/usePageTitleEditor.js.map +1 -0
  516. package/dist/editor/useTextFocusIntent.d.ts +2 -0
  517. package/dist/editor/useTextFocusIntent.d.ts.map +1 -0
  518. package/dist/editor/useTextFocusIntent.js +2 -0
  519. package/dist/editor/useTextFocusIntent.js.map +1 -0
  520. package/dist/editorClipboard.d.ts +23 -0
  521. package/dist/editorClipboard.d.ts.map +1 -0
  522. package/dist/editorClipboard.js +46 -0
  523. package/dist/editorClipboard.js.map +1 -0
  524. package/dist/fields-bridge.d.ts +26 -0
  525. package/dist/fields-bridge.d.ts.map +1 -0
  526. package/dist/fields-bridge.js +217 -0
  527. package/dist/fields-bridge.js.map +1 -0
  528. package/dist/formatDate.d.ts +8 -0
  529. package/dist/formatDate.d.ts.map +1 -0
  530. package/dist/formatDate.js +34 -0
  531. package/dist/formatDate.js.map +1 -0
  532. package/dist/grid-state.d.ts +29 -0
  533. package/dist/grid-state.d.ts.map +1 -0
  534. package/dist/grid-state.js +207 -0
  535. package/dist/grid-state.js.map +1 -0
  536. package/dist/history/commands.d.ts +29 -0
  537. package/dist/history/commands.d.ts.map +1 -0
  538. package/dist/history/commands.js +63 -0
  539. package/dist/history/commands.js.map +1 -0
  540. package/dist/history/diff.d.ts +22 -0
  541. package/dist/history/diff.d.ts.map +1 -0
  542. package/dist/history/diff.js +259 -0
  543. package/dist/history/diff.js.map +1 -0
  544. package/dist/history/transforms.d.ts +19 -0
  545. package/dist/history/transforms.d.ts.map +1 -0
  546. package/dist/history/transforms.js +69 -0
  547. package/dist/history/transforms.js.map +1 -0
  548. package/dist/history/types.d.ts +23 -0
  549. package/dist/history/types.d.ts.map +1 -0
  550. package/dist/history/types.js +11 -0
  551. package/dist/history/types.js.map +1 -0
  552. package/dist/host-services.d.ts +57 -0
  553. package/dist/host-services.d.ts.map +1 -0
  554. package/dist/host-services.js +2 -0
  555. package/dist/host-services.js.map +1 -0
  556. package/dist/iconCatalog.d.ts +16 -0
  557. package/dist/iconCatalog.d.ts.map +1 -0
  558. package/dist/iconCatalog.js +32 -0
  559. package/dist/iconCatalog.js.map +1 -0
  560. package/dist/index.d.ts +33 -0
  561. package/dist/index.d.ts.map +1 -0
  562. package/dist/index.js +26 -0
  563. package/dist/index.js.map +1 -0
  564. package/dist/insert-menu.d.ts +17 -0
  565. package/dist/insert-menu.d.ts.map +1 -0
  566. package/dist/insert-menu.js +35 -0
  567. package/dist/insert-menu.js.map +1 -0
  568. package/dist/model/bind-map.d.ts +6 -0
  569. package/dist/model/bind-map.d.ts.map +1 -0
  570. package/dist/model/bind-map.js +6 -0
  571. package/dist/model/bind-map.js.map +1 -0
  572. package/dist/model/layout-columns.d.ts +51 -0
  573. package/dist/model/layout-columns.d.ts.map +1 -0
  574. package/dist/model/layout-columns.js +74 -0
  575. package/dist/model/layout-columns.js.map +1 -0
  576. package/dist/model/page-topology.d.ts +20 -0
  577. package/dist/model/page-topology.d.ts.map +1 -0
  578. package/dist/model/page-topology.js +94 -0
  579. package/dist/model/page-topology.js.map +1 -0
  580. package/dist/model/page-tree-bridge.d.ts +81 -0
  581. package/dist/model/page-tree-bridge.d.ts.map +1 -0
  582. package/dist/model/page-tree-bridge.js +234 -0
  583. package/dist/model/page-tree-bridge.js.map +1 -0
  584. package/dist/model/prop-access.d.ts +69 -0
  585. package/dist/model/prop-access.d.ts.map +1 -0
  586. package/dist/model/prop-access.js +94 -0
  587. package/dist/model/prop-access.js.map +1 -0
  588. package/dist/mount.d.ts +25 -0
  589. package/dist/mount.d.ts.map +1 -0
  590. package/dist/mount.js +26 -0
  591. package/dist/mount.js.map +1 -0
  592. package/dist/page-actions.d.ts +26 -0
  593. package/dist/page-actions.d.ts.map +1 -0
  594. package/dist/page-actions.js +118 -0
  595. package/dist/page-actions.js.map +1 -0
  596. package/dist/pageActions.d.ts +4 -0
  597. package/dist/pageActions.d.ts.map +1 -0
  598. package/dist/pageActions.js +4 -0
  599. package/dist/pageActions.js.map +1 -0
  600. package/dist/pagePaths.d.ts +30 -0
  601. package/dist/pagePaths.d.ts.map +1 -0
  602. package/dist/pagePaths.js +102 -0
  603. package/dist/pagePaths.js.map +1 -0
  604. package/dist/pagesActions.d.ts +60 -0
  605. package/dist/pagesActions.d.ts.map +1 -0
  606. package/dist/pagesActions.js +216 -0
  607. package/dist/pagesActions.js.map +1 -0
  608. package/dist/preview-auth.d.ts +29 -0
  609. package/dist/preview-auth.d.ts.map +1 -0
  610. package/dist/preview-auth.js +18 -0
  611. package/dist/preview-auth.js.map +1 -0
  612. package/dist/renderActions.d.ts +30 -0
  613. package/dist/renderActions.d.ts.map +1 -0
  614. package/dist/renderActions.js +2 -0
  615. package/dist/renderActions.js.map +1 -0
  616. package/dist/translation.d.ts +78 -0
  617. package/dist/translation.d.ts.map +1 -0
  618. package/dist/translation.js +64 -0
  619. package/dist/translation.js.map +1 -0
  620. package/dist/types.d.ts +128 -0
  621. package/dist/types.d.ts.map +1 -0
  622. package/dist/types.js +2 -0
  623. package/dist/types.js.map +1 -0
  624. package/dist/useCanvasBackStack.d.ts +19 -0
  625. package/dist/useCanvasBackStack.d.ts.map +1 -0
  626. package/dist/useCanvasBackStack.js +49 -0
  627. package/dist/useCanvasBackStack.js.map +1 -0
  628. package/dist/useCanvasCamera.d.ts +37 -0
  629. package/dist/useCanvasCamera.d.ts.map +1 -0
  630. package/dist/useCanvasCamera.js +247 -0
  631. package/dist/useCanvasCamera.js.map +1 -0
  632. package/dist/useCanvasFocus.d.ts +32 -0
  633. package/dist/useCanvasFocus.d.ts.map +1 -0
  634. package/dist/useCanvasFocus.js +114 -0
  635. package/dist/useCanvasFocus.js.map +1 -0
  636. package/dist/useCanvasKeyboardNav.d.ts +32 -0
  637. package/dist/useCanvasKeyboardNav.d.ts.map +1 -0
  638. package/dist/useCanvasKeyboardNav.js +185 -0
  639. package/dist/useCanvasKeyboardNav.js.map +1 -0
  640. package/dist/useClipboardActions.d.ts +37 -0
  641. package/dist/useClipboardActions.d.ts.map +1 -0
  642. package/dist/useClipboardActions.js +126 -0
  643. package/dist/useClipboardActions.js.map +1 -0
  644. package/dist/useColumnWindow.d.ts +29 -0
  645. package/dist/useColumnWindow.d.ts.map +1 -0
  646. package/dist/useColumnWindow.js +80 -0
  647. package/dist/useColumnWindow.js.map +1 -0
  648. package/dist/useEditorHistory.d.ts +18 -0
  649. package/dist/useEditorHistory.d.ts.map +1 -0
  650. package/dist/useEditorHistory.js +91 -0
  651. package/dist/useEditorHistory.js.map +1 -0
  652. package/dist/usePagePathEditor.d.ts +36 -0
  653. package/dist/usePagePathEditor.d.ts.map +1 -0
  654. package/dist/usePagePathEditor.js +163 -0
  655. package/dist/usePagePathEditor.js.map +1 -0
  656. package/dist/usePageTitleEditor.d.ts +17 -0
  657. package/dist/usePageTitleEditor.d.ts.map +1 -0
  658. package/dist/usePageTitleEditor.js +101 -0
  659. package/dist/usePageTitleEditor.js.map +1 -0
  660. package/dist/useTextFocusIntent.d.ts +13 -0
  661. package/dist/useTextFocusIntent.d.ts.map +1 -0
  662. package/dist/useTextFocusIntent.js +70 -0
  663. package/dist/useTextFocusIntent.js.map +1 -0
  664. package/package.json +58 -0
  665. package/styles/index.css +196 -0
  666. package/styles/preview-auth.css +17 -0
@@ -0,0 +1,53 @@
1
+ export const EDITOR_APPEARANCE_COLOR_NAMES = [
2
+ "accent",
3
+ "accentStrong",
4
+ "accentSoft",
5
+ "background",
6
+ "border",
7
+ "borderSubtle",
8
+ "ink",
9
+ "muted",
10
+ "mutedDisabled",
11
+ "panel",
12
+ "panelStrong",
13
+ "selection",
14
+ ];
15
+ const HEX_COLOR = /^#[0-9a-fA-F]{6}$/;
16
+ const cssNames = {
17
+ accent: "accent",
18
+ accentStrong: "accent-strong",
19
+ accentSoft: "accent-soft",
20
+ background: "bg",
21
+ border: "border",
22
+ borderSubtle: "border-subtle",
23
+ ink: "ink",
24
+ muted: "muted",
25
+ mutedDisabled: "muted-disabled",
26
+ panel: "panel",
27
+ panelStrong: "panel-strong",
28
+ selection: "selection",
29
+ };
30
+ export function editorAppearanceCssVariables(appearance) {
31
+ if (!appearance)
32
+ return {};
33
+ const variables = {};
34
+ for (const name of EDITOR_APPEARANCE_COLOR_NAMES) {
35
+ const value = appearance[name];
36
+ if (value === undefined)
37
+ continue;
38
+ if (!HEX_COLOR.test(value)) {
39
+ throw new Error(`Canvas editor appearance ${name} must be a #rrggbb color.`);
40
+ }
41
+ const normalized = value.toLowerCase();
42
+ const cssName = cssNames[name];
43
+ variables[`--be-editor-${cssName}`] = normalized;
44
+ if (name !== "selection")
45
+ variables[`--${cssName}`] = normalized;
46
+ if (name === "accent" || name === "accentStrong") {
47
+ const rgb = [1, 3, 5].map((offset) => Number.parseInt(normalized.slice(offset, offset + 2), 16)).join(", ");
48
+ variables[`--${cssName}-rgb`] = rgb;
49
+ }
50
+ }
51
+ return variables;
52
+ }
53
+ //# sourceMappingURL=appearance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"appearance.js","sourceRoot":"","sources":["../src/appearance.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,6BAA6B,GAAG;IAC3C,QAAQ;IACR,cAAc;IACd,YAAY;IACZ,YAAY;IACZ,QAAQ;IACR,cAAc;IACd,KAAK;IACL,OAAO;IACP,eAAe;IACf,OAAO;IACP,aAAa;IACb,WAAW;CACH,CAAC;AAOX,MAAM,SAAS,GAAG,mBAAmB,CAAC;AAEtC,MAAM,QAAQ,GAA8C;IAC1D,MAAM,EAAE,QAAQ;IAChB,YAAY,EAAE,eAAe;IAC7B,UAAU,EAAE,aAAa;IACzB,UAAU,EAAE,IAAI;IAChB,MAAM,EAAE,QAAQ;IAChB,YAAY,EAAE,eAAe;IAC7B,GAAG,EAAE,KAAK;IACV,KAAK,EAAE,OAAO;IACd,aAAa,EAAE,gBAAgB;IAC/B,KAAK,EAAE,OAAO;IACd,WAAW,EAAE,cAAc;IAC3B,SAAS,EAAE,WAAW;CACvB,CAAC;AAEF,MAAM,UAAU,4BAA4B,CAC1C,UAA6C;IAE7C,IAAI,CAAC,UAAU;QAAE,OAAO,EAAE,CAAC;IAC3B,MAAM,SAAS,GAA2B,EAAE,CAAC;IAC7C,KAAK,MAAM,IAAI,IAAI,6BAA6B,EAAE,CAAC;QACjD,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,KAAK,KAAK,SAAS;YAAE,SAAS;QAClC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,4BAA4B,IAAI,2BAA2B,CAAC,CAAC;QAC/E,CAAC;QACD,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;QACvC,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC/B,SAAS,CAAC,eAAe,OAAO,EAAE,CAAC,GAAG,UAAU,CAAC;QACjD,IAAI,IAAI,KAAK,WAAW;YAAE,SAAS,CAAC,KAAK,OAAO,EAAE,CAAC,GAAG,UAAU,CAAC;QACjE,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,cAAc,EAAE,CAAC;YACjD,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC5G,SAAS,CAAC,KAAK,OAAO,MAAM,CAAC,GAAG,GAAG,CAAC;QACtC,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -0,0 +1,28 @@
1
+ import type { CollectionItem } from "./types";
2
+ export declare const BINDING_CHIP_ATTR = "data-be-binding";
3
+ /** A host-owned CMS field name. It is intentionally not a fixed union: each
4
+ * content type can expose its own schema fields to the inline `@` picker. */
5
+ export type BindingField = string;
6
+ /** The contextual content item a field belongs to. `undefined` is reserved for
7
+ * legacy tokens written before binding scopes were introduced. */
8
+ export type BindingScope = "local" | "columnBlock" | "page";
9
+ export type BindingToken = {
10
+ kind: "content-field";
11
+ field: BindingField;
12
+ contentType?: string;
13
+ entryRef?: string;
14
+ scope?: BindingScope;
15
+ };
16
+ export type BindingEntry = {
17
+ key: string;
18
+ label: string;
19
+ field: BindingField;
20
+ token: BindingToken;
21
+ };
22
+ export declare function bindingEntriesForItem(collection: string, item: CollectionItem, scope?: BindingScope): BindingEntry[];
23
+ export declare function itemValue(item: CollectionItem, field: BindingField): string;
24
+ export declare function encodeBindingToken(token: BindingToken): string;
25
+ export declare function decodeBindingToken(raw: string | null | undefined): BindingToken | null;
26
+ export declare function bindingChipLabel(token: BindingToken): string;
27
+ export declare function bindingNotation(token: Pick<BindingToken, "field" | "scope">): string;
28
+ //# sourceMappingURL=bindingChips.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bindingChips.d.ts","sourceRoot":"","sources":["../src/bindingChips.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C,eAAO,MAAM,iBAAiB,oBAAoB,CAAC;AAEnD;6EAC6E;AAC7E,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC;AAElC;kEACkE;AAClE,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,aAAa,GAAG,MAAM,CAAC;AAE5D,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,eAAe,CAAC;IACtB,KAAK,EAAE,YAAY,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,YAAY,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,YAAY,CAAC;IACpB,KAAK,EAAE,YAAY,CAAC;CACrB,CAAC;AAOF,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,cAAc,EACpB,KAAK,GAAE,YAAsB,GAC5B,YAAY,EAAE,CAmBhB;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,YAAY,GAAG,MAAM,CAQ3E;AAOD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CAE9D;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,YAAY,GAAG,IAAI,CAgBtF;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CAE5D;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,OAAO,GAAG,OAAO,CAAC,GAAG,MAAM,CAIpF"}
@@ -0,0 +1,93 @@
1
+ export const BINDING_CHIP_ATTR = "data-be-binding";
2
+ const FIELD_ORDER = ["title", "date", "category", "meta", "excerpt", "body"];
3
+ const RESERVED_FIELDS = new Set([
4
+ "id", "documentId", "createdAt", "updatedAt", "publishedAt", "createdBy", "updatedBy", "locale", "localizations",
5
+ ]);
6
+ export function bindingEntriesForItem(collection, item, scope = "local") {
7
+ const fields = [...new Set([
8
+ ...FIELD_ORDER.filter((field) => field in item),
9
+ ...Object.keys(item).filter((field) => !RESERVED_FIELDS.has(field)),
10
+ ])];
11
+ return fields.map((field) => {
12
+ const token = {
13
+ kind: "content-field",
14
+ field,
15
+ contentType: collection,
16
+ scope,
17
+ };
18
+ return {
19
+ key: `${scope}:${collection}:${item.id}:${field}`,
20
+ label: bindingNotation(token).slice(1),
21
+ field,
22
+ token,
23
+ };
24
+ });
25
+ }
26
+ export function itemValue(item, field) {
27
+ if (field === "title")
28
+ return item.title ?? "";
29
+ if (field === "date")
30
+ return item.date ?? "";
31
+ if (field === "category")
32
+ return item.category ?? "";
33
+ if (field === "meta")
34
+ return item.meta?.join(" - ") ?? "";
35
+ if (field === "excerpt")
36
+ return item.excerpt ?? "";
37
+ if (field === "body")
38
+ return textFromParagraphValue(item.body);
39
+ return displayBindingValue(item[field]);
40
+ }
41
+ function textFromParagraphValue(value) {
42
+ if (Array.isArray(value))
43
+ return value.filter((entry) => typeof entry === "string").join("\n\n");
44
+ return typeof value === "string" ? value : "";
45
+ }
46
+ export function encodeBindingToken(token) {
47
+ return encodeURIComponent(JSON.stringify(token));
48
+ }
49
+ export function decodeBindingToken(raw) {
50
+ if (!raw)
51
+ return null;
52
+ try {
53
+ const parsed = JSON.parse(decodeURIComponent(raw));
54
+ if (parsed.kind !== "content-field")
55
+ return null;
56
+ if (!isBindingField(parsed.field))
57
+ return null;
58
+ return {
59
+ kind: "content-field",
60
+ field: parsed.field,
61
+ contentType: typeof parsed.contentType === "string" ? parsed.contentType : undefined,
62
+ entryRef: typeof parsed.entryRef === "string" ? parsed.entryRef : undefined,
63
+ scope: isBindingScope(parsed.scope) ? parsed.scope : undefined,
64
+ };
65
+ }
66
+ catch {
67
+ return null;
68
+ }
69
+ }
70
+ export function bindingChipLabel(token) {
71
+ return bindingNotation(token);
72
+ }
73
+ export function bindingNotation(token) {
74
+ return token.scope && token.scope !== "local"
75
+ ? `@${token.scope}.${token.field}`
76
+ : `@${token.field}`;
77
+ }
78
+ function isBindingScope(value) {
79
+ return value === "local" || value === "columnBlock" || value === "page";
80
+ }
81
+ function isBindingField(value) {
82
+ return typeof value === "string" && value.trim().length > 0;
83
+ }
84
+ function displayBindingValue(value) {
85
+ if (typeof value === "string")
86
+ return value;
87
+ if (typeof value === "number" || typeof value === "boolean")
88
+ return String(value);
89
+ if (Array.isArray(value))
90
+ return value.map(displayBindingValue).filter(Boolean).join(", ");
91
+ return "";
92
+ }
93
+ //# sourceMappingURL=bindingChips.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bindingChips.js","sourceRoot":"","sources":["../src/bindingChips.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import type { BlockNode, PageNode } from "@batterai/bind-core";
2
+ import type { BlockDefinition, BlockPreset, SharedBlock } from "./types";
3
+ export declare function freshBlock(block: BlockNode): BlockNode;
4
+ export declare function freshBlocks(blocks: readonly PageNode[]): BlockNode[];
5
+ export declare function blockNode(id: string, type: string, props: Record<string, unknown>): BlockNode;
6
+ export declare function makeSharedFromBlock(block: BlockNode, label: string): {
7
+ entry: SharedBlock;
8
+ ref: BlockNode;
9
+ };
10
+ export declare function createSharedRefBlock(sharedId: string): BlockNode;
11
+ export declare function createBlockFromDefinition(definition: BlockDefinition): BlockNode;
12
+ export declare function createBlockFromPreset(preset: BlockPreset): BlockNode;
13
+ export declare function createBlocksFromPreset(preset: BlockPreset): BlockNode[];
14
+ export declare function presetContainsType(preset: BlockPreset, type: string): boolean;
15
+ export type MakeSelectionPresetCopy = {
16
+ singleBlockDescription?: string;
17
+ multipleBlocksDescription?: (count: number) => string;
18
+ fallbackLabel?: string;
19
+ };
20
+ export declare function makeSelectionPreset(label: string, blocks: readonly PageNode[], copy?: MakeSelectionPresetCopy): BlockPreset;
21
+ //# sourceMappingURL=block-factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"block-factory.d.ts","sourceRoot":"","sources":["../src/block-factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAE/D,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAMzE,wBAAgB,UAAU,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,CAQtD;AAMD,wBAAgB,WAAW,CAAC,MAAM,EAAE,SAAS,QAAQ,EAAE,GAAG,SAAS,EAAE,CAIpE;AAED,wBAAgB,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAE7F;AAED,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,SAAS,EAChB,KAAK,EAAE,MAAM,GACZ;IAAE,KAAK,EAAE,WAAW,CAAC;IAAC,GAAG,EAAE,SAAS,CAAA;CAAE,CAUxC;AAED,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAEhE;AAED,wBAAgB,yBAAyB,CAAC,UAAU,EAAE,eAAe,GAAG,SAAS,CAEhF;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,WAAW,GAAG,SAAS,CAMpE;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,WAAW,GAAG,SAAS,EAAE,CAMvE;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,WAGnE;AAMD,MAAM,MAAM,uBAAuB,GAAG;IACpC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,yBAAyB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACtD,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,SAAS,QAAQ,EAAE,EAC3B,IAAI,GAAE,uBAA4B,GACjC,WAAW,CAYb"}
@@ -0,0 +1,78 @@
1
+ import { literalProps } from "./model/prop-access.js";
2
+ function nextBlockId(type) {
3
+ return `${type.replace(/[^a-z0-9]+/gi, "-")}-${Math.random().toString(36).slice(2, 8)}`;
4
+ }
5
+ export function freshBlock(block) {
6
+ const children = block.children?.map(freshNode);
7
+ const copy = {
8
+ ...block,
9
+ id: nextBlockId(block.blockType),
10
+ props: structuredClone(block.props),
11
+ };
12
+ return children ? { ...copy, children } : copy;
13
+ }
14
+ function freshNode(node) {
15
+ return node.kind === "block" ? freshBlock(node) : node;
16
+ }
17
+ export function freshBlocks(blocks) {
18
+ return blocks
19
+ .filter((node) => node.kind === "block")
20
+ .map((block) => freshBlock(block));
21
+ }
22
+ export function blockNode(id, type, props) {
23
+ return { id, kind: "block", blockType: type, props: literalProps(props) };
24
+ }
25
+ export function makeSharedFromBlock(block, label) {
26
+ const [inner] = freshBlocks([block]);
27
+ if (!inner)
28
+ throw new Error("Cannot create a shared block from an empty block list.");
29
+ const entry = {
30
+ id: `shared-${nextBlockId(block.blockType)}`,
31
+ label,
32
+ block: inner,
33
+ };
34
+ const ref = blockNode(nextBlockId("shared-ref"), "shared.ref", { sharedId: entry.id });
35
+ return { entry, ref };
36
+ }
37
+ export function createSharedRefBlock(sharedId) {
38
+ return blockNode(nextBlockId("shared-ref"), "shared.ref", { sharedId });
39
+ }
40
+ export function createBlockFromDefinition(definition) {
41
+ return freshBlock(blockNode(definition.type, definition.type, structuredClone(definition.defaultProps)));
42
+ }
43
+ export function createBlockFromPreset(preset) {
44
+ const block = createBlocksFromPreset(preset)[0];
45
+ if (!block) {
46
+ throw new Error(`Preset ${preset.id} does not contain a valid block.`);
47
+ }
48
+ return block;
49
+ }
50
+ export function createBlocksFromPreset(preset) {
51
+ if (Array.isArray(preset.blocks)) {
52
+ return freshBlocks(preset.blocks);
53
+ }
54
+ if (!preset.blockType || !preset.props)
55
+ return [];
56
+ return [freshBlock(blockNode(preset.blockType, preset.blockType, structuredClone(preset.props)))];
57
+ }
58
+ export function presetContainsType(preset, type) {
59
+ if (preset.blockType === type)
60
+ return true;
61
+ return preset.blocks?.some((block) => block.kind === "block" && block.blockType === type) ?? false;
62
+ }
63
+ function cloneBlocks(blocks) {
64
+ return structuredClone(blocks);
65
+ }
66
+ export function makeSelectionPreset(label, blocks, copy = {}) {
67
+ const cleanLabel = label.trim() || (copy.fallbackLabel ?? "New preset");
68
+ return {
69
+ id: `preset-${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 6)}`,
70
+ label: cleanLabel,
71
+ description: blocks.length === 1
72
+ ? (copy.singleBlockDescription ?? "Saved content and design for 1 block.")
73
+ : (copy.multipleBlocksDescription?.(blocks.length) ??
74
+ `Saved content and design for ${blocks.length} connected blocks.`),
75
+ blocks: cloneBlocks(blocks),
76
+ };
77
+ }
78
+ //# sourceMappingURL=block-factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"block-factory.js","sourceRoot":"","sources":["../src/block-factory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import { type ReactNode } from "react";
2
+ import type { BlockNode } from "@batterai/bind-core";
3
+ import type { BlockPackage } from "@batterai/contract";
4
+ import type { BlockLayoutAuthoring } from "@batterai/block-react-runtime";
5
+ import type { AnyEditorContentModel } from "./content-model";
6
+ import type { EditorShellContent } from "./types";
7
+ import type { RendererActions } from "./renderActions";
8
+ import type { EditorRuntime } from "./translation";
9
+ export type RenderBlockFn<Content extends EditorShellContent = EditorShellContent, ContentModel extends AnyEditorContentModel = AnyEditorContentModel> = (block: BlockNode, content: Content, runtime: EditorRuntime, contentModel: ContentModel, actions?: RendererActions<Content>, options?: BlockHostRenderOptions) => ReactNode;
10
+ export type BlockHostRenderOptions = {
11
+ readonly layoutAuthoring?: BlockLayoutAuthoring;
12
+ };
13
+ type BlockPackageContextValue = {
14
+ renderBlock: RenderBlockFn;
15
+ };
16
+ export declare function BlockPackageProvider<Content extends EditorShellContent, ContentModel extends AnyEditorContentModel>({ children, packages, }: {
17
+ children: ReactNode;
18
+ packages: readonly BlockPackage[];
19
+ }): import("react").JSX.Element;
20
+ export declare function useBlockHost(): BlockPackageContextValue;
21
+ export {};
22
+ //# sourceMappingURL=blockHost.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blockHost.d.ts","sourceRoot":"","sources":["../src/blockHost.tsx"],"names":[],"mappings":"AAAA,OAAO,EAQL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAGrD,OAAO,KAAK,EAGV,YAAY,EAEb,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAE1E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAMnD,MAAM,MAAM,aAAa,CACvB,OAAO,SAAS,kBAAkB,GAAG,kBAAkB,EACvD,YAAY,SAAS,qBAAqB,GAAG,qBAAqB,IAChE,CACF,KAAK,EAAE,SAAS,EAChB,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,aAAa,EACtB,YAAY,EAAE,YAAY,EAC1B,OAAO,CAAC,EAAE,eAAe,CAAC,OAAO,CAAC,EAClC,OAAO,CAAC,EAAE,sBAAsB,KAC7B,SAAS,CAAC;AAEf,MAAM,MAAM,sBAAsB,GAAG;IACnC,QAAQ,CAAC,eAAe,CAAC,EAAE,oBAAoB,CAAC;CACjD,CAAC;AAEF,KAAK,wBAAwB,GAAG;IAAE,WAAW,EAAE,aAAa,CAAA;CAAE,CAAC;AAyE/D,wBAAgB,oBAAoB,CAClC,OAAO,SAAS,kBAAkB,EAClC,YAAY,SAAS,qBAAqB,EAC1C,EACA,QAAQ,EACR,QAAQ,GACT,EAAE;IACD,QAAQ,EAAE,SAAS,CAAC;IACpB,QAAQ,EAAE,SAAS,YAAY,EAAE,CAAC;CACnC,+BAsEA;AAED,wBAAgB,YAAY,IAAI,wBAAwB,CAOvD"}
@@ -0,0 +1,103 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { createContext, createElement, useContext, useEffect, useInsertionEffect, useMemo, useRef, } from "react";
3
+ import { locale as bindLocale } from "@batterai/bind-core";
4
+ import { tagFor } from "@batterai/block-sdk";
5
+ import { createBlockPackageRegistry } from "@batterai/block-source/registry";
6
+ import { rawProps } from "./model/prop-access.js";
7
+ import { EditableDate } from "./components/EditableDate.js";
8
+ import { EditableText } from "./components/EditableText.js";
9
+ import { ReferenceChipsEditor } from "./components/ReferenceChipsEditor.js";
10
+ const BlockPackageContext = createContext(null);
11
+ function BlockElementHost({ pkg, config }) {
12
+ const ref = useRef(null);
13
+ const tag = tagFor(pkg.manifest.type, pkg.manifest.version);
14
+ useEffect(() => {
15
+ pkg.defineElement();
16
+ if (ref.current)
17
+ ref.current.config = config;
18
+ }, [pkg, config]);
19
+ return createElement(tag, { ref, className: "canvas-block-element" });
20
+ }
21
+ function dataFor(pkg, block, content, runtime, contentModel, actions, renderChild, options) {
22
+ const resources = {};
23
+ const collections = {};
24
+ for (const need of pkg.manifest.dataNeeds ?? []) {
25
+ if (need === "routes" || need === "media")
26
+ continue;
27
+ const value = content[need];
28
+ resources[need] = value;
29
+ if (Array.isArray(value))
30
+ collections[need] = value;
31
+ }
32
+ resources.__blockRuntime = {
33
+ block,
34
+ content,
35
+ runtime,
36
+ contentModel,
37
+ actions,
38
+ renderChild,
39
+ authoring: { EditableText, EditableDate, ReferenceChipsEditor },
40
+ layoutAuthoring: options?.layoutAuthoring,
41
+ };
42
+ const boundCollection = actions.pageContentBinding?.contentType;
43
+ const instanceId = boundCollection
44
+ ? (actions.pageContentBinding?.entryRef ??
45
+ actions.collectionPreviewItems?.[boundCollection])
46
+ : undefined;
47
+ return {
48
+ routes: (pkg.manifest.dataNeeds ?? []).includes("routes")
49
+ ? content.routes
50
+ : undefined,
51
+ media: (pkg.manifest.dataNeeds ?? []).includes("media")
52
+ ? content.media
53
+ : undefined,
54
+ collections: Object.keys(collections).length ? collections : undefined,
55
+ resources,
56
+ instanceId,
57
+ };
58
+ }
59
+ export function BlockPackageProvider({ children, packages, }) {
60
+ useInsertionEffect(() => {
61
+ const loaded = new Set(Array.from(document.head.querySelectorAll("link[data-battery-block-stylesheet]")).map((link) => link.href));
62
+ for (const href of packages.flatMap((pkg) => pkg.stylesheets)) {
63
+ const absolute = new URL(href, document.baseURI).href;
64
+ if (loaded.has(absolute))
65
+ continue;
66
+ const link = document.createElement("link");
67
+ link.rel = "stylesheet";
68
+ link.href = absolute;
69
+ link.dataset.batteryBlockStylesheet = "";
70
+ document.head.append(link);
71
+ loaded.add(absolute);
72
+ }
73
+ }, [packages]);
74
+ const value = useMemo(() => {
75
+ const byType = createBlockPackageRegistry(packages);
76
+ const renderBlock = (block, content, runtime, contentModel, actions = {}, options) => {
77
+ const pkg = byType.get(block.blockType);
78
+ if (!pkg)
79
+ return (_jsx("section", { className: "unknown-block", role: "alert", children: _jsx("strong", { children: block.blockType }) }));
80
+ const renderChild = (child) => renderBlock(child, content, runtime, contentModel, actions);
81
+ const config = {
82
+ props: rawProps(block),
83
+ data: dataFor(pkg, block, content, runtime, contentModel, actions, renderChild, options),
84
+ context: {
85
+ editMode: runtime.editMode,
86
+ locale: bindLocale(runtime.activeLocale),
87
+ currentPath: runtime.currentPath,
88
+ blockId: block.id,
89
+ },
90
+ };
91
+ return _jsx(BlockElementHost, { pkg: pkg, config: config });
92
+ };
93
+ return { renderBlock: renderBlock };
94
+ }, [packages]);
95
+ return (_jsx(BlockPackageContext.Provider, { value: value, children: children }));
96
+ }
97
+ export function useBlockHost() {
98
+ const value = useContext(BlockPackageContext);
99
+ if (!value)
100
+ throw new Error("BlockPackageProvider is required before rendering editor blocks");
101
+ return value;
102
+ }
103
+ //# sourceMappingURL=blockHost.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blockHost.js","sourceRoot":"","sources":["../src/blockHost.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { BlockNode } from "@batterai/bind-core";
2
+ import type { BlockDefinition, CmsContent } from "./types";
3
+ /**
4
+ * Resolve the navigation target of a block whose whole surface is a single
5
+ * interaction (see `BlockDefinition.coverInteraction`). Returns the route path
6
+ * the block links to, or null when the block has no cover interaction or its
7
+ * route is unset/unknown — callers use null to decide whether to render the
8
+ * corner navigate icon.
9
+ */
10
+ export declare function coverInteractionPath(block: BlockNode, definition: BlockDefinition | null, content: CmsContent): string | null;
11
+ //# sourceMappingURL=blockInteraction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blockInteraction.d.ts","sourceRoot":"","sources":["../src/blockInteraction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAErD,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE3D;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,SAAS,EAChB,UAAU,EAAE,eAAe,GAAG,IAAI,EAClC,OAAO,EAAE,UAAU,GAClB,MAAM,GAAG,IAAI,CAKf"}
@@ -0,0 +1,16 @@
1
+ import { readProp } from "./model/bind-map.js";
2
+ /**
3
+ * Resolve the navigation target of a block whose whole surface is a single
4
+ * interaction (see `BlockDefinition.coverInteraction`). Returns the route path
5
+ * the block links to, or null when the block has no cover interaction or its
6
+ * route is unset/unknown — callers use null to decide whether to render the
7
+ * corner navigate icon.
8
+ */
9
+ export function coverInteractionPath(block, definition, content) {
10
+ const routeProp = definition?.coverInteraction?.routeProp;
11
+ if (!routeProp)
12
+ return null;
13
+ const routeId = readProp(block, routeProp);
14
+ return content.routes.find((route) => route.id === routeId)?.path ?? null;
15
+ }
16
+ //# sourceMappingURL=blockInteraction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blockInteraction.js","sourceRoot":"","sources":["../src/blockInteraction.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAG5C;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAClC,KAAgB,EAChB,UAAkC,EAClC,OAAmB;IAEnB,MAAM,SAAS,GAAG,UAAU,EAAE,gBAAgB,EAAE,SAAS,CAAC;IAC1D,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC;IAC5B,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAC3C,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE,IAAI,IAAI,IAAI,CAAC;AAC5E,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { presetContainsType } from "./block-factory";
2
+ import type { PageNode } from "@batterai/bind-core";
3
+ export declare function makeSelectionPreset(label: string, blocks: readonly PageNode[]): import("@batterai/canvas").BlockPreset;
4
+ //# sourceMappingURL=blockPresets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blockPresets.d.ts","sourceRoot":"","sources":["../src/blockPresets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAKrD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AASpD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,QAAQ,EAAE,0CAE7E"}
@@ -0,0 +1,11 @@
1
+ export { presetContainsType } from "./block-factory.js";
2
+ import { makeSelectionPreset as makeShellSelectionPreset, } from "./block-factory.js";
3
+ const PRESET_COPY = {
4
+ fallbackLabel: "New preset",
5
+ singleBlockDescription: "Saved content and design from 1 block.",
6
+ multipleBlocksDescription: (count) => `Saved content and design from ${count} connected blocks.`,
7
+ };
8
+ export function makeSelectionPreset(label, blocks) {
9
+ return makeShellSelectionPreset(label, blocks, PRESET_COPY);
10
+ }
11
+ //# sourceMappingURL=blockPresets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blockPresets.js","sourceRoot":"","sources":["../src/blockPresets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EACL,mBAAmB,IAAI,wBAAwB,GAEhD,MAAM,iBAAiB,CAAC;AAGzB,MAAM,WAAW,GAA4B;IAC3C,aAAa,EAAE,YAAY;IAC3B,sBAAsB,EAAE,wCAAwC;IAChE,yBAAyB,EAAE,CAAC,KAAK,EAAE,EAAE,CACnC,iCAAiC,KAAK,oBAAoB;CAC7D,CAAC;AAEF,MAAM,UAAU,mBAAmB,CAAC,KAAa,EAAE,MAA2B;IAC5E,OAAO,wBAAwB,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;AAC9D,CAAC"}
@@ -0,0 +1,41 @@
1
+ import type { HeldLock, PresenceUpdateFrame, RosterEntry } from "@batterai/collab-protocol";
2
+ export declare function collaboratorIdentity(displayName: string, color: string): string;
3
+ export type EditorCollaborationConfig = {
4
+ readonly baseUrl: string;
5
+ readonly tokenProvider: () => string | Promise<string>;
6
+ readonly headers?: HeadersInit | (() => HeadersInit | Promise<HeadersInit>);
7
+ readonly fetch?: typeof fetch;
8
+ readonly eventPollMs?: number;
9
+ readonly autosaveDelayMs?: number;
10
+ readonly autosaveMaxDelayMs?: number;
11
+ readonly auditProvider?: (pageId: string) => Promise<readonly EditorCollaborationAuditEvent[]>;
12
+ };
13
+ export type EditorCollaborationAuditEvent = {
14
+ readonly eventId: string;
15
+ readonly roomSeq: number;
16
+ readonly operationKind: string;
17
+ readonly actor: {
18
+ readonly userId: string;
19
+ readonly displayName: string;
20
+ };
21
+ readonly target: {
22
+ readonly kind: string;
23
+ readonly blockId?: string;
24
+ readonly field?: string;
25
+ };
26
+ readonly acceptedAt: string;
27
+ readonly persistedAt?: string;
28
+ readonly releaseId?: string;
29
+ };
30
+ export type EditorCollaborationView = {
31
+ readonly status: "disabled" | "connecting" | "connected" | "disconnected" | "error";
32
+ /** The current browser session. Presence and UI chrome never render it as a collaborator. */
33
+ readonly sessionId?: string;
34
+ readonly roster: readonly RosterEntry[];
35
+ readonly presence: readonly PresenceUpdateFrame[];
36
+ readonly locks: readonly HeldLock[];
37
+ readonly error?: string;
38
+ readonly persistence: "idle" | "saving" | "saved" | "error";
39
+ readonly persistedAt?: string;
40
+ };
41
+ //# sourceMappingURL=collaboration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collaboration.d.ts","sourceRoot":"","sources":["../src/collaboration.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAE5F,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAE/E;AAED,MAAM,MAAM,yBAAyB,GAAG;IACtC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,aAAa,EAAE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACvD,QAAQ,CAAC,OAAO,CAAC,EAAE,WAAW,GAAG,CAAC,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;IAC5E,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IAC9B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,6BAA6B,EAAE,CAAC,CAAC;CAChG,CAAC;AAEF,MAAM,MAAM,6BAA6B,GAAG;IAC1C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1E,QAAQ,CAAC,MAAM,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/F,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,QAAQ,CAAC,MAAM,EAAE,UAAU,GAAG,YAAY,GAAG,WAAW,GAAG,cAAc,GAAG,OAAO,CAAC;IACpF,6FAA6F;IAC7F,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,SAAS,WAAW,EAAE,CAAC;IACxC,QAAQ,CAAC,QAAQ,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAClD,QAAQ,CAAC,KAAK,EAAE,SAAS,QAAQ,EAAE,CAAC;IACpC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,CAAC;IAC5D,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B,CAAC"}
@@ -0,0 +1,4 @@
1
+ export function collaboratorIdentity(displayName, color) {
2
+ return `${displayName.trim()}\u0000${color.toLowerCase()}`;
3
+ }
4
+ //# sourceMappingURL=collaboration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collaboration.js","sourceRoot":"","sources":["../src/collaboration.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,oBAAoB,CAAC,WAAmB,EAAE,KAAa;IACrE,OAAO,GAAG,WAAW,CAAC,IAAI,EAAE,SAAS,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;AAC7D,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Synthetic EditableText/runtime address for a CMS collection item's field —
3
+ * the same (blockId, field) channel block texts use, but writes route to the
4
+ * collection item instead of block.props (see App's onEditBaseText). The EN
5
+ * translation overlay works unchanged: it is keyed by the same string.
6
+ */
7
+ export declare function collectionItemBlockId(collection: string, itemId: string): string;
8
+ export declare function parseCollectionItemBlockId(blockId: string): {
9
+ collection: string;
10
+ itemId: string;
11
+ } | null;
12
+ //# sourceMappingURL=collectionItemAddress.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collectionItemAddress.d.ts","sourceRoot":"","sources":["../src/collectionItemAddress.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,UAEvE;AAED,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,MAAM,GACd;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAM/C"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Synthetic EditableText/runtime address for a CMS collection item's field —
3
+ * the same (blockId, field) channel block texts use, but writes route to the
4
+ * collection item instead of block.props (see App's onEditBaseText). The EN
5
+ * translation overlay works unchanged: it is keyed by the same string.
6
+ */
7
+ export function collectionItemBlockId(collection, itemId) {
8
+ return `item:${collection}:${itemId}`;
9
+ }
10
+ export function parseCollectionItemBlockId(blockId) {
11
+ if (!blockId.startsWith("item:"))
12
+ return null;
13
+ const [collection, ...rest] = blockId.slice("item:".length).split(":");
14
+ const itemId = rest.join(":");
15
+ if (!collection || !itemId)
16
+ return null;
17
+ return { collection, itemId };
18
+ }
19
+ //# sourceMappingURL=collectionItemAddress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collectionItemAddress.js","sourceRoot":"","sources":["../src/collectionItemAddress.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,UAAkB,EAAE,MAAc;IACtE,OAAO,QAAQ,UAAU,IAAI,MAAM,EAAE,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,OAAe;IAEf,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC;IAC9C,MAAM,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACvE,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC9B,IAAI,CAAC,UAAU,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACxC,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;AAChC,CAAC"}
@@ -0,0 +1,15 @@
1
+ type AddCollectionItemControlProps = {
2
+ collection: string;
3
+ label: string;
4
+ onAdd: (collection: string) => void;
5
+ };
6
+ /**
7
+ * The "+ add item" affordance handed to a collection-list block via
8
+ * RendererActions.addItemControl. The shell owns this control so every list
9
+ * gets the same look and behavior; the block only decides where to drop it.
10
+ * Clicking it creates a fresh item with default content and opens the
11
+ * collection's detail template on it.
12
+ */
13
+ export declare function AddCollectionItemControl({ collection, label, onAdd, }: AddCollectionItemControlProps): import("react").JSX.Element;
14
+ export {};
15
+ //# sourceMappingURL=AddCollectionItemControl.d.ts.map