@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,94 @@
1
+ /** Reserved portable block prop for Canvas design settings. */
2
+ export const DESIGN_PROP = "design";
3
+ function isPropValue(value) {
4
+ if (!value || typeof value !== "object")
5
+ return false;
6
+ const kind = value.kind;
7
+ return kind === "literal" || kind === "binding" || kind === "rich";
8
+ }
9
+ /**
10
+ * Unwrap a stored prop to its plain value. Mirrors proof's `propDisplayValue`
11
+ * (apps/proof/src/editor-app.ts): a literal yields its value; a rich value
12
+ * yields its plain text; a binding yields "" (unresolved at the editor edge —
13
+ * live resolution happens through the resolver, never here). A raw value is
14
+ * returned verbatim. This is a DATA accessor, not a renderer: it never escapes
15
+ * or sanitizes — the single escaping boundary stays at the render sink
16
+ * (EditableText display / bind-core `escape.ts`), preserving invariant S1.
17
+ */
18
+ export function unwrapProp(stored) {
19
+ if (!isPropValue(stored))
20
+ return stored;
21
+ if (stored.kind === "literal")
22
+ return stored.value;
23
+ if (stored.kind === "rich") {
24
+ return stored.rich.doc
25
+ .map((node) => (node.t === "text" ? node.text : ""))
26
+ .join("");
27
+ }
28
+ return "";
29
+ }
30
+ /** Wrap a plain value as a `{kind:"literal"}` PropValue (ingest direction). */
31
+ export function literal(value) {
32
+ return { kind: "literal", value };
33
+ }
34
+ /** Wrap a whole raw prop record as `{kind:"literal"}` PropValues — the
35
+ * canonical props for a `BlockNode` built from a raw source (block definition
36
+ * defaults, a preset, a wire block). */
37
+ export function literalProps(raw) {
38
+ const props = {};
39
+ for (const [key, value] of Object.entries(raw))
40
+ props[key] = literal(value);
41
+ return props;
42
+ }
43
+ /**
44
+ * Unwrap a `BlockNode`'s whole prop record to plain values — the multi-key
45
+ * form of `readProp`, for the few consumers that need a raw props object
46
+ * (`@batterai/block-sdk`'s `BlockConfig.props`, the login-copy reader, the
47
+ * unknown-block JSON dump, the collection-list config reader).
48
+ */
49
+ export function rawProps(block) {
50
+ const out = {};
51
+ for (const [key, value] of Object.entries(block.props))
52
+ out[key] = unwrapProp(value);
53
+ return out;
54
+ }
55
+ /**
56
+ * Read a block prop by key — the ONE read accessor. Returns the plain value
57
+ * (unwrapped from a `PropValue`, or a raw value verbatim), exactly as the
58
+ * pre-convergence `block.props[key]` did, so every downstream guard
59
+ * (`asString`, `typeof x === "string"`, `Array.isArray`, …) keeps working
60
+ * unchanged.
61
+ */
62
+ export function readProp(block, key) {
63
+ if (!block)
64
+ return undefined;
65
+ return unwrapProp(block.props[key]);
66
+ }
67
+ /**
68
+ * Write a block prop by key — the ONE write accessor. Returns a NEW `BlockNode`
69
+ * with `props[key]` set to a `{kind:"literal"}` PropValue (immutable update;
70
+ * the input is not mutated). `undefined` deletes the key.
71
+ */
72
+ export function writeProp(block, key, value) {
73
+ return writeProps(block, { [key]: value });
74
+ }
75
+ /** Merge a patch of plain values in one immutable write — the multi-key form of
76
+ * `writeProp`, used by the inspector's props-patch path. Each value is wrapped
77
+ * as a literal `PropValue`; `undefined` deletes the key. */
78
+ export function writeProps(block, patch) {
79
+ const props = { ...block.props };
80
+ for (const [key, value] of Object.entries(patch)) {
81
+ if (value === undefined)
82
+ delete props[key];
83
+ else
84
+ props[key] = literal(value);
85
+ }
86
+ return { ...block, props };
87
+ }
88
+ /** Whether a block carries a value for `key` (presence, not truthiness) —
89
+ * routes the `"key" in block.props` / `hasOwnProperty` checks through the
90
+ * accessor without collapsing a stored empty string to "absent". */
91
+ export function hasProp(block, key) {
92
+ return Object.prototype.hasOwnProperty.call(block.props, key);
93
+ }
94
+ //# sourceMappingURL=prop-access.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prop-access.js","sourceRoot":"","sources":["../../src/model/prop-access.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import { type ReactElement } from "react";
2
+ import type { BlockPackage } from "@batterai/contract";
3
+ import type { AnyEditorContentModel } from "./content-model";
4
+ import type { AnyEditorShellHostServices } from "./host-services";
5
+ import type { EditorPreviewAuthConfig } from "./preview-auth";
6
+ import type { EditorShellLicenseState } from "./types";
7
+ import type { EditorShellAppearance } from "./appearance";
8
+ import type { EditorCollaborationConfig } from "./collaboration";
9
+ export type MountEditorConfig<HostServices extends AnyEditorShellHostServices = AnyEditorShellHostServices, ContentModel extends AnyEditorContentModel = AnyEditorContentModel> = {
10
+ hostServices: HostServices;
11
+ contentModel: ContentModel;
12
+ defaultPageId?: string;
13
+ license?: EditorShellLicenseState;
14
+ previewAuth?: EditorPreviewAuthConfig;
15
+ blockPackages: readonly BlockPackage[];
16
+ appearance?: EditorShellAppearance;
17
+ collaboration?: EditorCollaborationConfig;
18
+ strictMode?: boolean;
19
+ };
20
+ export type MountedEditor = {
21
+ unmount: () => void;
22
+ };
23
+ export declare function createEditorElement<HostServices extends AnyEditorShellHostServices, ContentModel extends AnyEditorContentModel>(config: MountEditorConfig<HostServices, ContentModel>): ReactElement;
24
+ export declare function mountEditor<HostServices extends AnyEditorShellHostServices, ContentModel extends AnyEditorContentModel>(container: Element | DocumentFragment, config: MountEditorConfig<HostServices, ContentModel>): MountedEditor;
25
+ //# sourceMappingURL=mount.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mount.d.ts","sourceRoot":"","sources":["../src/mount.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6B,KAAK,YAAY,EAAE,MAAM,OAAO,CAAC;AAGrE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAClE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAC;AACvD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAEjE,MAAM,MAAM,iBAAiB,CAC3B,YAAY,SAAS,0BAA0B,GAAG,0BAA0B,EAC5E,YAAY,SAAS,qBAAqB,GAAG,qBAAqB,IAChE;IACF,YAAY,EAAE,YAAY,CAAC;IAC3B,YAAY,EAAE,YAAY,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,uBAAuB,CAAC;IAClC,WAAW,CAAC,EAAE,uBAAuB,CAAC;IACtC,aAAa,EAAE,SAAS,YAAY,EAAE,CAAC;IACvC,UAAU,CAAC,EAAE,qBAAqB,CAAC;IACnC,aAAa,CAAC,EAAE,yBAAyB,CAAC;IAC1C,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CAAC;AAEF,wBAAgB,mBAAmB,CACjC,YAAY,SAAS,0BAA0B,EAC/C,YAAY,SAAS,qBAAqB,EAE1C,MAAM,EAAE,iBAAiB,CAAC,YAAY,EAAE,YAAY,CAAC,GACpD,YAAY,CAYd;AAED,wBAAgB,WAAW,CACzB,YAAY,SAAS,0BAA0B,EAC/C,YAAY,SAAS,qBAAqB,EAE1C,SAAS,EAAE,OAAO,GAAG,gBAAgB,EACrC,MAAM,EAAE,iBAAiB,CAAC,YAAY,EAAE,YAAY,CAAC,GACpD,aAAa,CAQf"}
package/dist/mount.js ADDED
@@ -0,0 +1,26 @@
1
+ import { StrictMode, createElement } from "react";
2
+ import { createRoot } from "react-dom/client";
3
+ import { App } from "./App.js";
4
+ export function createEditorElement(config) {
5
+ const editor = createElement(App, {
6
+ contentModel: config.contentModel,
7
+ defaultPageId: config.defaultPageId,
8
+ hostServices: config.hostServices,
9
+ license: config.license,
10
+ previewAuth: config.previewAuth,
11
+ blockPackages: config.blockPackages,
12
+ appearance: config.appearance,
13
+ collaboration: config.collaboration,
14
+ });
15
+ return config.strictMode === false ? editor : createElement(StrictMode, null, editor);
16
+ }
17
+ export function mountEditor(container, config) {
18
+ const root = createRoot(container);
19
+ root.render(createEditorElement(config));
20
+ return {
21
+ unmount() {
22
+ root.unmount();
23
+ },
24
+ };
25
+ }
26
+ //# sourceMappingURL=mount.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mount.js","sourceRoot":"","sources":["../src/mount.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,aAAa,EAAqB,MAAM,OAAO,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AA4B5B,MAAM,UAAU,mBAAmB,CAIjC,MAAqD;IAErD,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,EAAE;QAChC,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,aAAa,EAAE,MAAM,CAAC,aAAa;KACpC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC,UAAU,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AACxF,CAAC;AAED,MAAM,UAAU,WAAW,CAIzB,SAAqC,EACrC,MAAqD;IAErD,MAAM,IAAI,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;IACnC,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC;IACzC,OAAO;QACL,OAAO;YACL,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,26 @@
1
+ import type { BlockNode, PageNode } from "@batterai/bind-core";
2
+ import { type LayoutColumnView } from "./model/layout-columns";
3
+ import type { BlockDesignSettings, CanvasPage } from "./types";
4
+ export declare const LAYOUT_BLOCK_TYPE = "layout.columns";
5
+ export declare function layoutItems(block: BlockNode): LayoutColumnView[];
6
+ export declare function findBlock(page: CanvasPage, blockId: string | null): BlockNode | null;
7
+ export declare function updateBlockProp(page: CanvasPage, blockId: string, propName: string, value: unknown): CanvasPage;
8
+ export declare function updateBlockProps(page: CanvasPage, blockId: string, props: Record<string, unknown>): CanvasPage;
9
+ export declare function updateBlockDesign(page: CanvasPage, blockId: string, design: BlockDesignSettings): CanvasPage;
10
+ export declare function appendBlock(page: CanvasPage, block: BlockNode): CanvasPage;
11
+ export declare function appendBlocks(page: CanvasPage, blocks: PageNode[]): CanvasPage;
12
+ export declare function insertBlock(page: CanvasPage, index: number, block: BlockNode): CanvasPage;
13
+ export declare function insertBlocks(page: CanvasPage, index: number, inserted: PageNode[]): CanvasPage;
14
+ export declare function insertBlocksAfter(page: CanvasPage, anchorId: string | null, inserted: PageNode[]): CanvasPage;
15
+ export declare function appendBlockToColumn(page: CanvasPage, columnId: string, block: BlockNode): CanvasPage;
16
+ export declare function appendBlocksToColumn(page: CanvasPage, columnId: string, blocks: PageNode[]): CanvasPage;
17
+ export declare function insertBlocksToColumn(page: CanvasPage, columnId: string, index: number, inserted: PageNode[]): CanvasPage;
18
+ export declare function removeBlock(page: CanvasPage, blockId: string): CanvasPage;
19
+ export declare function replaceBlock(page: CanvasPage, blockId: string, replacement: BlockNode): CanvasPage;
20
+ export declare function duplicateBlock(page: CanvasPage, blockId: string): CanvasPage;
21
+ export declare function connectedSiblingSelection(page: CanvasPage, anchorId: string | null, targetId: string): string[];
22
+ export declare function blocksById(page: CanvasPage, ids: string[]): BlockNode[];
23
+ export declare function moveBlock(page: CanvasPage, blockId: string, direction: -1 | 1): CanvasPage;
24
+ export declare function moveBlockToTopLevel(page: CanvasPage, blockId: string, index: number): CanvasPage;
25
+ export declare function moveBlockToColumn(page: CanvasPage, blockId: string, columnId: string, index: number): CanvasPage;
26
+ //# sourceMappingURL=page-actions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page-actions.d.ts","sourceRoot":"","sources":["../src/page-actions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,118 @@
1
+ import { freshBlock as mintFreshBlock } from "./block-factory.js";
2
+ import { columnsView, isLayoutColumnsNode } from "./model/layout-columns.js";
3
+ import { childIdsOf, collectBlockIds, dropIndexToInsertIndex, duplicateNode, findNode, insertNodesAfter, insertNodesAt, moveNodeTo, parentIdOf, patchNodeProps, removeNode, replaceNode as replaceNodeInPage, setLayoutColumns, } from "./model/page-tree-bridge.js";
4
+ export const LAYOUT_BLOCK_TYPE = "layout.columns";
5
+ const LAYOUT_ITEMS_PROP = "items";
6
+ export function layoutItems(block) {
7
+ return isLayoutColumnsNode(block) ? columnsView(block) : [];
8
+ }
9
+ export function findBlock(page, blockId) {
10
+ return findNode(page, blockId);
11
+ }
12
+ export function updateBlockProp(page, blockId, propName, value) {
13
+ if (propName === LAYOUT_ITEMS_PROP) {
14
+ return setLayoutColumns(page, blockId, value);
15
+ }
16
+ return patchNodeProps(page, blockId, { [propName]: value });
17
+ }
18
+ export function updateBlockProps(page, blockId, props) {
19
+ if (LAYOUT_ITEMS_PROP in props) {
20
+ const { [LAYOUT_ITEMS_PROP]: items, ...rest } = props;
21
+ const withItems = setLayoutColumns(page, blockId, items);
22
+ return Object.keys(rest).length ? patchNodeProps(withItems, blockId, rest) : withItems;
23
+ }
24
+ return patchNodeProps(page, blockId, props);
25
+ }
26
+ export function updateBlockDesign(page, blockId, design) {
27
+ return patchNodeProps(page, blockId, { design });
28
+ }
29
+ export function appendBlock(page, block) {
30
+ return appendBlocks(page, [block]);
31
+ }
32
+ export function appendBlocks(page, blocks) {
33
+ return insertNodesAt(page, null, page.root.length, blocks);
34
+ }
35
+ export function insertBlock(page, index, block) {
36
+ return insertNodesAt(page, null, index, [block]);
37
+ }
38
+ export function insertBlocks(page, index, inserted) {
39
+ return insertNodesAt(page, null, index, inserted);
40
+ }
41
+ export function insertBlocksAfter(page, anchorId, inserted) {
42
+ const nested = anchorId ? findParentId(page, anchorId) !== null : false;
43
+ const placeable = nested ? inserted.filter((block) => blockType(block) !== LAYOUT_BLOCK_TYPE) : inserted;
44
+ return insertNodesAfter(page, anchorId, placeable);
45
+ }
46
+ export function appendBlockToColumn(page, columnId, block) {
47
+ return appendBlocksToColumn(page, columnId, [block]);
48
+ }
49
+ export function appendBlocksToColumn(page, columnId, blocks) {
50
+ return insertNodesAt(page, columnId, columnChildCount(page, columnId), blocks);
51
+ }
52
+ export function insertBlocksToColumn(page, columnId, index, inserted) {
53
+ return insertNodesAt(page, columnId, index, inserted);
54
+ }
55
+ export function removeBlock(page, blockId) {
56
+ return removeNode(page, blockId);
57
+ }
58
+ export function replaceBlock(page, blockId, replacement) {
59
+ return replaceNodeInPage(page, blockId, replacement);
60
+ }
61
+ export function duplicateBlock(page, blockId) {
62
+ return duplicateNode(page, blockId, mintFreshBlock);
63
+ }
64
+ export function connectedSiblingSelection(page, anchorId, targetId) {
65
+ if (!anchorId)
66
+ return [targetId];
67
+ const root = page.root;
68
+ const anchorParent = parentIdOf(root, anchorId);
69
+ const targetParent = parentIdOf(root, targetId);
70
+ if (anchorParent === undefined || anchorParent !== targetParent)
71
+ return [targetId];
72
+ const siblings = childIdsOf(root, anchorParent);
73
+ const from = siblings.indexOf(anchorId);
74
+ const to = siblings.indexOf(targetId);
75
+ if (from < 0 || to < 0)
76
+ return [targetId];
77
+ const [start, end] = from < to ? [from, to] : [to, from];
78
+ return siblings.slice(start, end + 1);
79
+ }
80
+ export function blocksById(page, ids) {
81
+ const wanted = new Set(ids);
82
+ return collectBlockIds(page.root)
83
+ .filter((id) => wanted.has(id))
84
+ .map((id) => findNode(page, id))
85
+ .filter((block) => block !== null);
86
+ }
87
+ export function moveBlock(page, blockId, direction) {
88
+ const root = page.root;
89
+ const parentId = parentIdOf(root, blockId);
90
+ if (parentId === undefined)
91
+ return page;
92
+ const siblings = childIdsOf(root, parentId);
93
+ const index = siblings.indexOf(blockId);
94
+ const nextIndex = index + direction;
95
+ if (index < 0 || nextIndex < 0 || nextIndex >= siblings.length)
96
+ return page;
97
+ return moveNodeTo(page, blockId, parentId, nextIndex);
98
+ }
99
+ export function moveBlockToTopLevel(page, blockId, index) {
100
+ return moveNodeTo(page, blockId, null, dropIndexToInsertIndex(page, blockId, null, index));
101
+ }
102
+ export function moveBlockToColumn(page, blockId, columnId, index) {
103
+ const block = findNode(page, blockId);
104
+ if (!block || block.blockType === LAYOUT_BLOCK_TYPE)
105
+ return page;
106
+ return moveNodeTo(page, blockId, columnId, dropIndexToInsertIndex(page, blockId, columnId, index));
107
+ }
108
+ function blockType(node) {
109
+ return node.kind === "block" ? node.blockType : "";
110
+ }
111
+ function findParentId(page, blockId) {
112
+ const parent = parentIdOf(page.root, blockId);
113
+ return parent ?? null;
114
+ }
115
+ function columnChildCount(page, columnId) {
116
+ return childIdsOf(page.root, columnId).length;
117
+ }
118
+ //# sourceMappingURL=page-actions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page-actions.js","sourceRoot":"","sources":["../src/page-actions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export { appendBlock, appendBlocks, appendBlocksToColumn, appendBlockToColumn, blocksById, connectedSiblingSelection, duplicateBlock, findBlock, insertBlock, insertBlocks, insertBlocksAfter, insertBlocksToColumn, layoutItems, LAYOUT_BLOCK_TYPE, moveBlock, moveBlockToColumn, moveBlockToTopLevel, removeBlock, replaceBlock, updateBlockDesign, updateBlockProp, updateBlockProps, } from "./page-actions";
2
+ export { createBlockFromDefinition, createBlockFromPreset, createBlocksFromPreset, freshBlock, freshBlocks, makeSharedFromBlock, } from "./block-factory";
3
+ export { createPage, joinPagePath, normalizePagePath, slugifyPathSegment, splitPagePath, uniquePagePath, } from "./pagePaths";
4
+ //# sourceMappingURL=pageActions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pageActions.d.ts","sourceRoot":"","sources":["../src/pageActions.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,YAAY,EACZ,oBAAoB,EACpB,mBAAmB,EACnB,UAAU,EACV,yBAAyB,EACzB,cAAc,EACd,SAAS,EACT,WAAW,EACX,YAAY,EACZ,iBAAiB,EACjB,oBAAoB,EACpB,WAAW,EACX,iBAAiB,EACjB,SAAS,EACT,iBAAiB,EACjB,mBAAmB,EACnB,WAAW,EACX,YAAY,EACZ,iBAAiB,EACjB,eAAe,EACf,gBAAgB,GACjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,yBAAyB,EACzB,qBAAqB,EACrB,sBAAsB,EACtB,UAAU,EACV,WAAW,EACX,mBAAmB,GACpB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,UAAU,EACV,YAAY,EACZ,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,EACb,cAAc,GACf,MAAM,aAAa,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { appendBlock, appendBlocks, appendBlocksToColumn, appendBlockToColumn, blocksById, connectedSiblingSelection, duplicateBlock, findBlock, insertBlock, insertBlocks, insertBlocksAfter, insertBlocksToColumn, layoutItems, LAYOUT_BLOCK_TYPE, moveBlock, moveBlockToColumn, moveBlockToTopLevel, removeBlock, replaceBlock, updateBlockDesign, updateBlockProp, updateBlockProps, } from "./page-actions.js";
2
+ export { createBlockFromDefinition, createBlockFromPreset, createBlocksFromPreset, freshBlock, freshBlocks, makeSharedFromBlock, } from "./block-factory.js";
3
+ export { createPage, joinPagePath, normalizePagePath, slugifyPathSegment, splitPagePath, uniquePagePath, } from "./pagePaths.js";
4
+ //# sourceMappingURL=pageActions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pageActions.js","sourceRoot":"","sources":["../src/pageActions.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,YAAY,EACZ,oBAAoB,EACpB,mBAAmB,EACnB,UAAU,EACV,yBAAyB,EACzB,cAAc,EACd,SAAS,EACT,WAAW,EACX,YAAY,EACZ,iBAAiB,EACjB,oBAAoB,EACpB,WAAW,EACX,iBAAiB,EACjB,SAAS,EACT,iBAAiB,EACjB,mBAAmB,EACnB,WAAW,EACX,YAAY,EACZ,iBAAiB,EACjB,eAAe,EACf,gBAAgB,GACjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,yBAAyB,EACzB,qBAAqB,EACrB,sBAAsB,EACtB,UAAU,EACV,WAAW,EACX,mBAAmB,GACpB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,UAAU,EACV,YAAY,EACZ,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,EACb,cAAc,GACf,MAAM,aAAa,CAAC"}
@@ -0,0 +1,30 @@
1
+ import type { CanvasPage } from "./types";
2
+ /**
3
+ * Page path / slug helpers — the URL-shape concern of the multi-page canvas,
4
+ * split out of `pageActions` so each file keeps one responsibility (A6). These
5
+ * are genuinely-app helpers (slug normalization, uniqueness, new-page seeding);
6
+ * they never touch the block tree. `pageActions` re-exports them so existing
7
+ * import sites are unchanged.
8
+ */
9
+ export type ParentPathOption = {
10
+ pageId: string | null;
11
+ path: string;
12
+ label: string;
13
+ };
14
+ export declare function descendantPageIds(pages: readonly CanvasPage[], pageId: string): Set<string>;
15
+ /**
16
+ * The "move this page under…" choices offered in the page-path editor: the root
17
+ * level plus every other page's path, minus the page itself and its own
18
+ * descendants (which would create a cycle). Sorted by path for a stable menu.
19
+ */
20
+ export declare function parentPathOptions(pages: CanvasPage[], page: CanvasPage): ParentPathOption[];
21
+ export declare function slugifyPathSegment(value: string): string;
22
+ export declare function normalizePagePath(value: string | undefined): string;
23
+ export declare function splitPagePath(value: string | undefined): {
24
+ parentPath: string | null;
25
+ segment: string;
26
+ };
27
+ export declare function joinPagePath(parentPath: string | null | undefined, segment: string): string;
28
+ export declare function uniquePagePath(value: string, existing: readonly CanvasPage[], ignorePageIds?: ReadonlySet<string>): string;
29
+ export declare function createPage(title: string, parent: CanvasPage | null, existing: CanvasPage[]): CanvasPage;
30
+ //# sourceMappingURL=pagePaths.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pagePaths.d.ts","sourceRoot":"","sources":["../src/pagePaths.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C;;;;;;GAMG;AAEH,MAAM,MAAM,gBAAgB,GAAG;IAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtF,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,SAAS,UAAU,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAW3F;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,UAAU,GAAG,gBAAgB,EAAE,CAmB3F;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,UAO/C;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CASnE;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG;IAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAQvG;AAED,wBAAgB,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAI3F;AAED,wBAAgB,cAAc,CAC5B,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,SAAS,UAAU,EAAE,EAC/B,aAAa,GAAE,WAAW,CAAC,MAAM,CAAa,GAC7C,MAAM,CAgBR;AAED,wBAAgB,UAAU,CACxB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,UAAU,GAAG,IAAI,EACzB,QAAQ,EAAE,UAAU,EAAE,GACrB,UAAU,CAkBZ"}
@@ -0,0 +1,102 @@
1
+ export function descendantPageIds(pages, pageId) {
2
+ const descendants = new Set();
3
+ const queue = [pageId];
4
+ for (const id of queue) {
5
+ for (const page of pages) {
6
+ if (page.parentId !== id || descendants.has(page.id))
7
+ continue;
8
+ descendants.add(page.id);
9
+ queue.push(page.id);
10
+ }
11
+ }
12
+ return descendants;
13
+ }
14
+ /**
15
+ * The "move this page under…" choices offered in the page-path editor: the root
16
+ * level plus every other page's path, minus the page itself and its own
17
+ * descendants (which would create a cycle). Sorted by path for a stable menu.
18
+ */
19
+ export function parentPathOptions(pages, page) {
20
+ const blockedIds = descendantPageIds(pages, page.id);
21
+ blockedIds.add(page.id);
22
+ return [
23
+ { pageId: null, path: "/", label: "Top level" },
24
+ ...pages
25
+ .filter((candidate) => candidate.path &&
26
+ normalizePagePath(candidate.path) !== "/" &&
27
+ !blockedIds.has(candidate.id))
28
+ .map((candidate) => ({
29
+ pageId: candidate.id,
30
+ path: normalizePagePath(candidate.path),
31
+ label: candidate.title,
32
+ }))
33
+ .sort((a, b) => a.path.localeCompare(b.path)),
34
+ ];
35
+ }
36
+ export function slugifyPathSegment(value) {
37
+ return (value
38
+ .toLowerCase()
39
+ .replace(/[^a-z0-9]+/g, "-")
40
+ .replace(/(^-|-$)/g, "") || "page");
41
+ }
42
+ export function normalizePagePath(value) {
43
+ const raw = (value ?? "/").trim();
44
+ if (!raw || raw === "/")
45
+ return "/";
46
+ const segments = raw
47
+ .split("/")
48
+ .map((segment) => segment.trim())
49
+ .filter(Boolean)
50
+ .map(slugifyPathSegment);
51
+ return segments.length ? `/${segments.join("/")}` : "/";
52
+ }
53
+ export function splitPagePath(value) {
54
+ const path = normalizePagePath(value);
55
+ if (path === "/")
56
+ return { parentPath: null, segment: "" };
57
+ const lastSlash = path.lastIndexOf("/");
58
+ return {
59
+ parentPath: lastSlash === 0 ? "/" : path.slice(0, lastSlash),
60
+ segment: path.slice(lastSlash + 1),
61
+ };
62
+ }
63
+ export function joinPagePath(parentPath, segment) {
64
+ const cleanSegment = slugifyPathSegment(segment);
65
+ const parent = normalizePagePath(parentPath ?? "/");
66
+ return parent === "/" ? `/${cleanSegment}` : `${parent}/${cleanSegment}`;
67
+ }
68
+ export function uniquePagePath(value, existing, ignorePageIds = new Set()) {
69
+ const original = normalizePagePath(value);
70
+ const taken = (candidate) => existing.some((page) => !ignorePageIds.has(page.id) && normalizePagePath(page.path) === candidate);
71
+ if (!taken(original))
72
+ return original;
73
+ const { parentPath, segment } = splitPagePath(original);
74
+ const baseSegment = segment || "page";
75
+ let counter = 2;
76
+ let candidate = joinPagePath(parentPath ?? "/", `${baseSegment}-${counter}`);
77
+ while (taken(candidate)) {
78
+ counter += 1;
79
+ candidate = joinPagePath(parentPath ?? "/", `${baseSegment}-${counter}`);
80
+ }
81
+ return candidate;
82
+ }
83
+ export function createPage(title, parent, existing) {
84
+ const cleanTitle = title.trim() || "New page";
85
+ const base = slugifyPathSegment(cleanTitle);
86
+ let id = base;
87
+ let counter = 2;
88
+ while (existing.some((page) => page.id === id)) {
89
+ id = `${base}-${counter}`;
90
+ counter += 1;
91
+ }
92
+ const parentPath = parent?.path === "/" ? "" : (parent?.path ?? "");
93
+ const path = uniquePagePath(`${parentPath}/${base}`, existing);
94
+ return {
95
+ id,
96
+ title: cleanTitle,
97
+ path,
98
+ parentId: parent?.id ?? null,
99
+ root: [],
100
+ };
101
+ }
102
+ //# sourceMappingURL=pagePaths.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pagePaths.js","sourceRoot":"","sources":["../src/pagePaths.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,60 @@
1
+ import { createPage as createEditorPage, joinPagePath, normalizePagePath, splitPagePath, uniquePagePath } from "./pagePaths";
2
+ import type { BlockNode } from "@batterai/bind-core";
3
+ import type { CanvasPage } from "./types";
4
+ export { descendantPageIds } from "./pagePaths";
5
+ export { createEditorPage as createPage, joinPagePath, normalizePagePath, splitPagePath, uniquePagePath, };
6
+ export type PagePathChange = {
7
+ pageId: string;
8
+ before: string;
9
+ after: string;
10
+ };
11
+ /**
12
+ * Multi-page canvas layer: every page on the board is in memory at once and
13
+ * block/column ids are unique across pages, so operations locate the owning
14
+ * page by id and delegate to the single-page actions in pageActions.ts.
15
+ */
16
+ export declare function pageOfBlock(pages: CanvasPage[], blockId: string | null): CanvasPage | null;
17
+ export declare function pageOfColumn(pages: CanvasPage[], columnId: string): CanvasPage | null;
18
+ export declare function findBlockInPages(pages: CanvasPage[], blockId: string | null): BlockNode | null;
19
+ export declare function updatePage(pages: CanvasPage[], pageId: string, fn: (page: CanvasPage) => CanvasPage): CanvasPage[];
20
+ export declare function canUsePageAsParent(pages: readonly CanvasPage[], pageId: string, parentId: string | null): boolean;
21
+ export declare function updatePagePathCascade(pages: CanvasPage[], pageId: string, parentId: string | null, requestedPath: string): {
22
+ pages: CanvasPage[];
23
+ changes: PagePathChange[];
24
+ };
25
+ /** Apply a single-page action to whichever page owns the block; no-op when
26
+ * the block is not on the board. */
27
+ export declare function updateOwningPage(pages: CanvasPage[], blockId: string, fn: (page: CanvasPage) => CanvasPage): CanvasPage[];
28
+ /** Apply a single-page action to whichever page owns the layout column. */
29
+ export declare function updatePageOwningColumn(pages: CanvasPage[], columnId: string, fn: (page: CanvasPage) => CanvasPage): CanvasPage[];
30
+ /** Move a block to a top-level position, possibly on another page. */
31
+ export declare function moveBlockToPageIndex(pages: CanvasPage[], blockId: string, targetPageId: string, index: number): CanvasPage[];
32
+ /** Is this the id of a top-level (not column-nested) block on any page? */
33
+ export declare function isTopLevelBlock(pages: CanvasPage[], blockId: string): boolean;
34
+ /**
35
+ * Can a placed block be dropped ON TOP of another for the swap/replace choice?
36
+ * The blocks may sit anywhere — top level or inside a column, same or different
37
+ * page. The one hard rule is that a layout block can never live inside a column
38
+ * (layouts don't nest), so a swap/replace that would move a layout block into a
39
+ * column slot is rejected. Same block, or an unknown id, is never valid.
40
+ */
41
+ export declare function canDropBlockOnBlock(pages: CanvasPage[], sourceId: string, targetId: string): boolean;
42
+ /**
43
+ * Swap two blocks' positions (the "Swap" drop choice). Both are kept; each
44
+ * takes the other's slot — top level, inside a column, or on a different page.
45
+ * Each page substitutes whichever of the two ids it owns (block ids are unique
46
+ * across pages), the slot preserved by `page-tree.ts`'s `replacePageNode` — so
47
+ * no index math and no second tree walker.
48
+ */
49
+ export declare function swapBlocks(pages: CanvasPage[], aId: string, bId: string): CanvasPage[];
50
+ /**
51
+ * Replace a block with another (the "Replace" drop choice): the dragged
52
+ * source takes the target's slot and the target is removed. The source is
53
+ * pulled out of its own slot in the same pass. Works at any nesting level and
54
+ * across pages via `page-tree.ts` (remove source, substitute at target).
55
+ */
56
+ export declare function replaceBlock(pages: CanvasPage[], sourceId: string, targetId: string): CanvasPage[];
57
+ /** Move a block into a layout column, possibly on another page. Layout
58
+ * blocks never nest, regardless of the target page. */
59
+ export declare function moveBlockToColumnInPages(pages: CanvasPage[], blockId: string, columnId: string, index: number): CanvasPage[];
60
+ //# sourceMappingURL=pagesActions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pagesActions.d.ts","sourceRoot":"","sources":["../src/pagesActions.ts"],"names":[],"mappings":"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"}