@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,29 @@
1
+ import type { GridConfig } from "@batterai/canvas";
2
+ import type { GridCell } from "./model/layout-columns";
3
+ export type ColumnPatch = {
4
+ id: string;
5
+ colstart?: number;
6
+ colspan?: number;
7
+ order?: number;
8
+ };
9
+ export type SyntheticSlot = {
10
+ colstart: number;
11
+ colspan: number;
12
+ tooSmall: boolean;
13
+ };
14
+ export declare function positionIndex(items: readonly GridCell[]): Map<number, string>;
15
+ export declare function provisionColumns(count: number, grid: GridConfig): number[];
16
+ export declare function validateResize(items: readonly GridCell[], itemId: string, side: "east" | "west", newColspan: number, grid: GridConfig): {
17
+ colstart: number;
18
+ colspan: number;
19
+ } | null;
20
+ export declare function resizeChanges(items: readonly GridCell[], itemId: string, side: "east" | "west", target: {
21
+ colstart: number;
22
+ colspan: number;
23
+ }, grid: GridConfig): ColumnPatch[];
24
+ export declare function moveChanges(items: readonly GridCell[], itemId: string, newColstart: number, grid: GridConfig): ColumnPatch[];
25
+ export declare function nudgeOrSwap(items: readonly GridCell[], itemId: string, dir: "east" | "west", grid: GridConfig): ColumnPatch[];
26
+ export declare function syntheticSlots(items: readonly GridCell[], grid: GridConfig): SyntheticSlot[];
27
+ export declare function applyPatches<T extends GridCell>(items: readonly T[], patches: ColumnPatch[]): T[];
28
+ export declare function reorder<T extends GridCell>(items: readonly T[]): T[];
29
+ //# sourceMappingURL=grid-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grid-state.d.ts","sourceRoot":"","sources":["../src/grid-state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAEvD,MAAM,MAAM,WAAW,GAAG;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,QAAQ,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAQ7E;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,MAAM,EAAE,CAK1E;AAED,wBAAgB,cAAc,CAC5B,KAAK,EAAE,SAAS,QAAQ,EAAE,EAC1B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,GAAG,MAAM,EACrB,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,UAAU,GACf;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CA8B9C;AAED,wBAAgB,aAAa,CAC3B,KAAK,EAAE,SAAS,QAAQ,EAAE,EAC1B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,GAAG,MAAM,EACrB,MAAM,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,EAC7C,IAAI,EAAE,UAAU,GACf,WAAW,EAAE,CA2Cf;AAED,wBAAgB,WAAW,CACzB,KAAK,EAAE,SAAS,QAAQ,EAAE,EAC1B,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,UAAU,GACf,WAAW,EAAE,CA+Cf;AAED,wBAAgB,WAAW,CACzB,KAAK,EAAE,SAAS,QAAQ,EAAE,EAC1B,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,GAAG,MAAM,EACpB,IAAI,EAAE,UAAU,GACf,WAAW,EAAE,CAuBf;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,SAAS,QAAQ,EAAE,EAAE,IAAI,EAAE,UAAU,GAAG,aAAa,EAAE,CAoB5F;AAED,wBAAgB,YAAY,CAAC,CAAC,SAAS,QAAQ,EAAE,KAAK,EAAE,SAAS,CAAC,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,CAAC,EAAE,CAajG;AAED,wBAAgB,OAAO,CAAC,CAAC,SAAS,QAAQ,EAAE,KAAK,EAAE,SAAS,CAAC,EAAE,GAAG,CAAC,EAAE,CAIpE"}
@@ -0,0 +1,207 @@
1
+ export function positionIndex(items) {
2
+ const index = new Map();
3
+ for (const item of [...items].sort((a, b) => a.order - b.order)) {
4
+ for (let c = item.colstart; c < item.colstart + item.colspan; c++) {
5
+ index.set(c, item.id);
6
+ }
7
+ }
8
+ return index;
9
+ }
10
+ export function provisionColumns(count, grid) {
11
+ const n = Math.max(1, Math.min(count, Math.floor(grid.columns / grid.minSpan)));
12
+ const base = Math.floor(grid.columns / n);
13
+ const remainder = grid.columns - base * n;
14
+ return Array.from({ length: n }, (_, i) => base + (i < remainder ? 1 : 0));
15
+ }
16
+ export function validateResize(items, itemId, side, newColspan, grid) {
17
+ const item = items.find((entry) => entry.id === itemId);
18
+ if (!item)
19
+ return null;
20
+ const delta = newColspan - item.colspan;
21
+ if (delta === 0)
22
+ return { colstart: item.colstart, colspan: item.colspan };
23
+ if (delta < 0) {
24
+ const colspan = Math.max(newColspan, grid.minSpan);
25
+ const applied = colspan - item.colspan;
26
+ const colstart = side === "west" ? item.colstart - applied : item.colstart;
27
+ const maxStart = Math.max(1, grid.columns - colspan + 1);
28
+ return { colspan, colstart: Math.min(Math.max(colstart, 1), maxStart) };
29
+ }
30
+ const index = positionIndex(items);
31
+ const range = side === "east"
32
+ ? { from: item.colstart + item.colspan, to: grid.columns }
33
+ : { from: 1, to: item.colstart - 1 };
34
+ let free = 0;
35
+ for (let c = range.from; c <= range.to; c++) {
36
+ if (!index.has(c))
37
+ free += 1;
38
+ }
39
+ const colspan = Math.max(grid.minSpan, Math.min(newColspan, item.colspan + free));
40
+ const applied = colspan - item.colspan;
41
+ const colstart = side === "west" ? item.colstart - applied : item.colstart;
42
+ const maxStart = Math.max(1, grid.columns - colspan + 1);
43
+ return { colspan, colstart: Math.min(Math.max(colstart, 1), maxStart) };
44
+ }
45
+ export function resizeChanges(items, itemId, side, target, grid) {
46
+ const item = items.find((entry) => entry.id === itemId);
47
+ if (!item)
48
+ return [];
49
+ const patches = [{ id: itemId, ...target }];
50
+ const expanded = Math.max(0, target.colspan - item.colspan);
51
+ if (!expanded)
52
+ return patches;
53
+ const index = positionIndex(items);
54
+ const step = side === "east" ? 1 : -1;
55
+ let col = side === "east" ? item.colstart + item.colspan : item.colstart - 1;
56
+ let shift = expanded;
57
+ let sinceLastEmpty = 0;
58
+ const shiftById = new Map();
59
+ const byId = new Map(items.map((entry) => [entry.id, entry]));
60
+ while (col >= 1 && col <= grid.columns && shift > 0) {
61
+ const id = index.get(col);
62
+ if (!id || id === itemId) {
63
+ sinceLastEmpty += 1;
64
+ col += step;
65
+ continue;
66
+ }
67
+ shift = Math.max(0, shift - sinceLastEmpty);
68
+ sinceLastEmpty = 0;
69
+ if (!shift)
70
+ break;
71
+ const neighbor = byId.get(id);
72
+ if (!neighbor)
73
+ break;
74
+ shiftById.set(id, Math.max(shiftById.get(id) ?? 0, shift));
75
+ col = side === "east" ? neighbor.colstart + neighbor.colspan : neighbor.colstart - 1;
76
+ }
77
+ for (const [id, amount] of shiftById) {
78
+ const neighbor = byId.get(id);
79
+ if (!neighbor)
80
+ continue;
81
+ const colstart = side === "east"
82
+ ? Math.min(grid.columns - neighbor.colspan + 1, neighbor.colstart + amount)
83
+ : Math.max(1, neighbor.colstart - amount);
84
+ patches.push({ id, colstart });
85
+ }
86
+ return patches;
87
+ }
88
+ export function moveChanges(items, itemId, newColstart, grid) {
89
+ const item = items.find((entry) => entry.id === itemId);
90
+ if (!item || newColstart === item.colstart)
91
+ return [];
92
+ if (newColstart < 1 || newColstart + item.colspan - 1 > grid.columns)
93
+ return [];
94
+ const index = positionIndex(items);
95
+ const endCol = newColstart + item.colspan - 1;
96
+ let blocked = false;
97
+ for (let c = newColstart; c <= endCol; c++) {
98
+ const id = index.get(c);
99
+ if (id && id !== itemId)
100
+ blocked = true;
101
+ }
102
+ if (!blocked)
103
+ return [{ id: itemId, colstart: newColstart }];
104
+ const dir = newColstart > item.colstart ? "east" : "west";
105
+ const others = items
106
+ .filter((entry) => entry.id !== itemId)
107
+ .sort((a, b) => (dir === "east" ? a.colstart - b.colstart : b.colstart - a.colstart));
108
+ const patches = [{ id: itemId, colstart: newColstart }];
109
+ if (dir === "east") {
110
+ let neededStart = endCol + 1;
111
+ for (const neighbor of others) {
112
+ const end = neighbor.colstart + neighbor.colspan - 1;
113
+ if (neighbor.colstart < neededStart && end >= newColstart) {
114
+ if (neededStart + neighbor.colspan - 1 > grid.columns)
115
+ return [];
116
+ patches.push({ id: neighbor.id, colstart: neededStart });
117
+ neededStart += neighbor.colspan;
118
+ }
119
+ else {
120
+ neededStart = Math.max(neededStart, end + 1);
121
+ }
122
+ }
123
+ }
124
+ else {
125
+ let neededEnd = newColstart - 1;
126
+ for (const neighbor of others) {
127
+ const end = neighbor.colstart + neighbor.colspan - 1;
128
+ if (end > neededEnd && neighbor.colstart <= endCol) {
129
+ if (neededEnd - neighbor.colspan + 1 < 1)
130
+ return [];
131
+ patches.push({ id: neighbor.id, colstart: neededEnd - neighbor.colspan + 1 });
132
+ neededEnd -= neighbor.colspan;
133
+ }
134
+ else {
135
+ neededEnd = Math.min(neededEnd, neighbor.colstart - 1);
136
+ }
137
+ }
138
+ }
139
+ return patches;
140
+ }
141
+ export function nudgeOrSwap(items, itemId, dir, grid) {
142
+ const item = items.find((entry) => entry.id === itemId);
143
+ if (!item)
144
+ return [];
145
+ const probeCol = dir === "east" ? item.colstart + item.colspan : item.colstart - 1;
146
+ if (probeCol < 1 || probeCol > grid.columns)
147
+ return [];
148
+ const neighborId = positionIndex(items).get(probeCol);
149
+ if (!neighborId) {
150
+ return moveChanges(items, itemId, item.colstart + (dir === "east" ? 1 : -1), grid);
151
+ }
152
+ const neighbor = items.find((entry) => entry.id === neighborId);
153
+ if (!neighbor)
154
+ return [];
155
+ if (dir === "east") {
156
+ return [
157
+ { id: itemId, colstart: item.colstart + neighbor.colspan },
158
+ { id: neighborId, colstart: item.colstart },
159
+ ];
160
+ }
161
+ return [
162
+ { id: itemId, colstart: neighbor.colstart },
163
+ { id: neighborId, colstart: neighbor.colstart + item.colspan },
164
+ ];
165
+ }
166
+ export function syntheticSlots(items, grid) {
167
+ const index = positionIndex(items);
168
+ const slots = [];
169
+ let c = 1;
170
+ while (c <= grid.columns) {
171
+ if (index.has(c)) {
172
+ c += 1;
173
+ continue;
174
+ }
175
+ const start = c;
176
+ while (c <= grid.columns && !index.has(c))
177
+ c += 1;
178
+ let cursor = start;
179
+ while (cursor <= c - 1) {
180
+ const remaining = c - cursor;
181
+ const span = Math.min(grid.defaultSpan, remaining);
182
+ slots.push({ colstart: cursor, colspan: span, tooSmall: remaining < grid.minSpan });
183
+ cursor += span;
184
+ }
185
+ }
186
+ return slots;
187
+ }
188
+ export function applyPatches(items, patches) {
189
+ const byId = new Map(patches.map((patch) => [patch.id, patch]));
190
+ const next = items.map((item) => {
191
+ const patch = byId.get(item.id);
192
+ return patch
193
+ ? {
194
+ ...item,
195
+ colstart: patch.colstart ?? item.colstart,
196
+ colspan: patch.colspan ?? item.colspan,
197
+ }
198
+ : item;
199
+ });
200
+ return reorder(next);
201
+ }
202
+ export function reorder(items) {
203
+ return [...items]
204
+ .sort((a, b) => a.colstart - b.colstart || a.order - b.order)
205
+ .map((item, index) => ({ ...item, order: index }));
206
+ }
207
+ //# sourceMappingURL=grid-state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grid-state.js","sourceRoot":"","sources":["../src/grid-state.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import type { Command, CommandContext, CommandOutcome } from "@batterai/editor-state";
2
+ export declare function clone<T>(value: T): T;
3
+ export declare function ok(): CommandOutcome<void>;
4
+ export declare function errorMessage(error: CommandOutcome<unknown> & {
5
+ ok: false;
6
+ }): string;
7
+ export declare function createLocalCommand<T>(args: {
8
+ kind: string;
9
+ label: string;
10
+ before: T;
11
+ after: T;
12
+ apply: (value: T) => void;
13
+ }): Command<void>;
14
+ export declare function createInsertCommand<T>(args: {
15
+ kind: string;
16
+ label: string;
17
+ value: T;
18
+ doInsert: (value: T) => void;
19
+ undoRemove: () => void;
20
+ }): Command<void>;
21
+ export declare function createRemoveCommand<T>(args: {
22
+ kind: string;
23
+ label: string;
24
+ value: T;
25
+ doRemove: () => void;
26
+ undoInsert: (value: T) => void;
27
+ }): Command<void>;
28
+ export declare function createNoopCommandContext(): CommandContext;
29
+ //# sourceMappingURL=commands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/history/commands.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAEtF,wBAAgB,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAEpC;AAED,wBAAgB,EAAE,IAAI,cAAc,CAAC,IAAI,CAAC,CAEzC;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,GAAG;IAAE,EAAE,EAAE,KAAK,CAAA;CAAE,GAAG,MAAM,CAEnF;AAED,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,IAAI,EAAE;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,CAAC,CAAC;IACV,KAAK,EAAE,CAAC,CAAC;IACT,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;CAC3B,GAAG,OAAO,CAAC,IAAI,CAAC,CAehB;AAED,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,IAAI,EAAE;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,CAAC,CAAC;IACT,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;IAC7B,UAAU,EAAE,MAAM,IAAI,CAAC;CACxB,GAAG,OAAO,CAAC,IAAI,CAAC,CAchB;AAED,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,IAAI,EAAE;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,CAAC,CAAC;IACT,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,UAAU,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;CAChC,GAAG,OAAO,CAAC,IAAI,CAAC,CAchB;AAED,wBAAgB,wBAAwB,IAAI,cAAc,CAMzD"}
@@ -0,0 +1,63 @@
1
+ export function clone(value) {
2
+ return structuredClone(value);
3
+ }
4
+ export function ok() {
5
+ return { ok: true, value: undefined };
6
+ }
7
+ export function errorMessage(error) {
8
+ return error.error.kind === "unauthorized" ? error.error.reason : error.error.detail;
9
+ }
10
+ export function createLocalCommand(args) {
11
+ const before = clone(args.before);
12
+ const after = clone(args.after);
13
+ return {
14
+ kind: args.kind,
15
+ label: args.label,
16
+ async do() {
17
+ args.apply(clone(after));
18
+ return ok();
19
+ },
20
+ async undo() {
21
+ args.apply(clone(before));
22
+ return ok();
23
+ },
24
+ };
25
+ }
26
+ export function createInsertCommand(args) {
27
+ const value = clone(args.value);
28
+ return {
29
+ kind: args.kind,
30
+ label: args.label,
31
+ async do() {
32
+ args.doInsert(clone(value));
33
+ return ok();
34
+ },
35
+ async undo() {
36
+ args.undoRemove();
37
+ return ok();
38
+ },
39
+ };
40
+ }
41
+ export function createRemoveCommand(args) {
42
+ const value = clone(args.value);
43
+ return {
44
+ kind: args.kind,
45
+ label: args.label,
46
+ async do() {
47
+ args.doRemove();
48
+ return ok();
49
+ },
50
+ async undo() {
51
+ args.undoInsert(clone(value));
52
+ return ok();
53
+ },
54
+ };
55
+ }
56
+ export function createNoopCommandContext() {
57
+ let tick = 0;
58
+ return {
59
+ mutate: async () => { },
60
+ now: () => `2026-07-06T00:00:${String(tick++).padStart(2, "0")}.000Z`,
61
+ };
62
+ }
63
+ //# sourceMappingURL=commands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/history/commands.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,KAAK,CAAI,KAAQ;IAC/B,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,EAAE;IAChB,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAA8C;IACzE,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC;AACvF,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAI,IAMrC;IACC,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAClC,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChC,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,KAAK,CAAC,EAAE;YACN,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;YACzB,OAAO,EAAE,EAAE,CAAC;QACd,CAAC;QACD,KAAK,CAAC,IAAI;YACR,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;YAC1B,OAAO,EAAE,EAAE,CAAC;QACd,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAI,IAMtC;IACC,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChC,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,KAAK,CAAC,EAAE;YACN,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;YAC5B,OAAO,EAAE,EAAE,CAAC;QACd,CAAC;QACD,KAAK,CAAC,IAAI;YACR,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,OAAO,EAAE,EAAE,CAAC;QACd,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAI,IAMtC;IACC,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChC,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,KAAK,CAAC,EAAE;YACN,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChB,OAAO,EAAE,EAAE,CAAC;QACd,CAAC;QACD,KAAK,CAAC,IAAI;YACR,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;YAC9B,OAAO,EAAE,EAAE,CAAC;QACd,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,wBAAwB;IACtC,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,OAAO;QACL,MAAM,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC;QACtB,GAAG,EAAE,GAAG,EAAE,CAAC,oBAAoB,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,OAAO;KACtE,CAAC;AACJ,CAAC"}
@@ -0,0 +1,22 @@
1
+ import type { Command } from "@batterai/editor-state";
2
+ import type { CmsContent, CanvasPage } from "../types";
3
+ import type { TranslationStore } from "../translation";
4
+ import type { CollectionRecord, HistoryState } from "./types";
5
+ /**
6
+ * Dependencies the diff/command builders close over. `stateRef` is read lazily
7
+ * inside each command's `do`/`undo`, so the current live state is always used —
8
+ * identical to the original in-hook closures.
9
+ */
10
+ export type DiffDeps = {
11
+ stateRef: {
12
+ current: HistoryState;
13
+ };
14
+ applyPages: (pages: CanvasPage[]) => void;
15
+ applyTranslations: (translations: TranslationStore) => void;
16
+ applyContent: (content: CmsContent) => void;
17
+ };
18
+ export declare function buildPageCommands(deps: DiffDeps, beforePages: readonly CanvasPage[], afterPages: readonly CanvasPage[]): Command<void>[];
19
+ export declare function buildTranslationCommands(deps: DiffDeps, before: TranslationStore, after: TranslationStore): Command<void>[];
20
+ export declare function buildCollectionCommands<K extends keyof CmsContent>(deps: DiffDeps, key: K, beforeItems: readonly CollectionRecord[], afterItems: readonly CollectionRecord[]): Command<void>[];
21
+ export declare function buildContentCommands(deps: DiffDeps, before: CmsContent, after: CmsContent): Command<void>[];
22
+ //# sourceMappingURL=diff.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../src/history/diff.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACvD,OAAO,KAAK,EAAU,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAkB/D,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAG9D;;;;GAIG;AACH,MAAM,MAAM,QAAQ,GAAG;IACrB,QAAQ,EAAE;QAAE,OAAO,EAAE,YAAY,CAAA;KAAE,CAAC;IACpC,UAAU,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,IAAI,CAAC;IAC1C,iBAAiB,EAAE,CAAC,YAAY,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAC5D,YAAY,EAAE,CAAC,OAAO,EAAE,UAAU,KAAK,IAAI,CAAC;CAC7C,CAAC;AAEF,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,QAAQ,EACd,WAAW,EAAE,SAAS,UAAU,EAAE,EAClC,UAAU,EAAE,SAAS,UAAU,EAAE,GAChC,OAAO,CAAC,IAAI,CAAC,EAAE,CAyFjB;AAED,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,QAAQ,EACd,MAAM,EAAE,gBAAgB,EACxB,KAAK,EAAE,gBAAgB,GACtB,OAAO,CAAC,IAAI,CAAC,EAAE,CA2BjB;AAED,wBAAgB,uBAAuB,CAAC,CAAC,SAAS,MAAM,UAAU,EAChE,IAAI,EAAE,QAAQ,EACd,GAAG,EAAE,CAAC,EACN,WAAW,EAAE,SAAS,gBAAgB,EAAE,EACxC,UAAU,EAAE,SAAS,gBAAgB,EAAE,GACtC,OAAO,CAAC,IAAI,CAAC,EAAE,CAiGjB;AAED,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,QAAQ,EACd,MAAM,EAAE,UAAU,EAClB,KAAK,EAAE,UAAU,GAChB,OAAO,CAAC,IAAI,CAAC,EAAE,CAmEjB"}
@@ -0,0 +1,259 @@
1
+ import { createInsertCommand, createLocalCommand, createRemoveCommand, } from "./commands.js";
2
+ import { collectionArray, insertAt, reorderByIds, replaceCollectionItemField, replacePageField, sameValue, setContentKey, setObjectField, setTranslationValue, upsertCollectionItem, } from "./transforms.js";
3
+ import { PAGE_FIELD_KEYS } from "./types.js";
4
+ export function buildPageCommands(deps, beforePages, afterPages) {
5
+ const { stateRef, applyPages } = deps;
6
+ const commands = [];
7
+ const beforeById = new Map(beforePages.map((page) => [page.id, page]));
8
+ const afterById = new Map(afterPages.map((page) => [page.id, page]));
9
+ for (const [pageId, beforePage] of beforeById) {
10
+ if (afterById.has(pageId))
11
+ continue;
12
+ const beforeIndex = beforePages.findIndex((page) => page.id === pageId);
13
+ commands.push(createRemoveCommand({
14
+ kind: "editor-shell-page-delete",
15
+ label: `Deleted page "${beforePage.title}"`,
16
+ value: beforePage,
17
+ doRemove: () => {
18
+ const current = stateRef.current.pages ?? [];
19
+ applyPages(current.filter((page) => page.id !== pageId));
20
+ },
21
+ undoInsert: (page) => {
22
+ const current = stateRef.current.pages ?? [];
23
+ applyPages(insertAt(current.filter((candidate) => candidate.id !== page.id), beforeIndex, page));
24
+ },
25
+ }));
26
+ }
27
+ for (const [pageId, afterPage] of afterById) {
28
+ if (beforeById.has(pageId))
29
+ continue;
30
+ const afterIndex = afterPages.findIndex((page) => page.id === pageId);
31
+ commands.push(createInsertCommand({
32
+ kind: "editor-shell-page-create",
33
+ label: `Created page "${afterPage.title}"`,
34
+ value: afterPage,
35
+ doInsert: (page) => {
36
+ const current = stateRef.current.pages ?? [];
37
+ applyPages(insertAt(current.filter((candidate) => candidate.id !== page.id), afterIndex, page));
38
+ },
39
+ undoRemove: () => {
40
+ const current = stateRef.current.pages ?? [];
41
+ applyPages(current.filter((page) => page.id !== pageId));
42
+ },
43
+ }));
44
+ }
45
+ const beforeOrder = beforePages.map((page) => page.id);
46
+ const afterOrder = afterPages.map((page) => page.id);
47
+ if (beforeOrder.length === afterOrder.length &&
48
+ beforeOrder.every((id) => afterById.has(id)) &&
49
+ afterOrder.every((id) => beforeById.has(id)) &&
50
+ !sameValue(beforeOrder, afterOrder)) {
51
+ commands.push(createLocalCommand({
52
+ kind: "editor-shell-page-order",
53
+ label: "Changed page order",
54
+ before: beforeOrder,
55
+ after: afterOrder,
56
+ apply: (ids) => {
57
+ const current = stateRef.current.pages ?? [];
58
+ applyPages(reorderByIds(current, ids));
59
+ },
60
+ }));
61
+ }
62
+ for (const [pageId, beforePage] of beforeById) {
63
+ const afterPage = afterById.get(pageId);
64
+ if (!afterPage)
65
+ continue;
66
+ for (const field of PAGE_FIELD_KEYS) {
67
+ if (sameValue(beforePage[field], afterPage[field]))
68
+ continue;
69
+ commands.push(createLocalCommand({
70
+ kind: `editor-shell-page-field:${field}`,
71
+ label: field === "root" ? "Changed page blocks" : `Changed page field "${field}"`,
72
+ before: beforePage[field],
73
+ after: afterPage[field],
74
+ apply: (value) => {
75
+ const current = stateRef.current.pages ?? [];
76
+ applyPages(replacePageField(current, pageId, field, value));
77
+ },
78
+ }));
79
+ }
80
+ }
81
+ return commands;
82
+ }
83
+ export function buildTranslationCommands(deps, before, after) {
84
+ const { stateRef, applyTranslations } = deps;
85
+ const commands = [];
86
+ const locales = new Set([...Object.keys(before), ...Object.keys(after)]);
87
+ for (const locale of locales) {
88
+ const beforeValues = before[locale] ?? {};
89
+ const afterValues = after[locale] ?? {};
90
+ const keys = new Set([...Object.keys(beforeValues), ...Object.keys(afterValues)]);
91
+ for (const key of keys) {
92
+ const beforeValue = beforeValues[key];
93
+ const afterValue = afterValues[key];
94
+ if (beforeValue === afterValue)
95
+ continue;
96
+ commands.push(createLocalCommand({
97
+ kind: "editor-shell-translation-field",
98
+ label: `Changed translation "${key}"`,
99
+ before: beforeValue,
100
+ after: afterValue,
101
+ apply: (value) => {
102
+ const current = stateRef.current.translations;
103
+ applyTranslations(setTranslationValue(current, locale, key, value));
104
+ },
105
+ }));
106
+ }
107
+ }
108
+ return commands;
109
+ }
110
+ export function buildCollectionCommands(deps, key, beforeItems, afterItems) {
111
+ const { stateRef, applyContent } = deps;
112
+ const commands = [];
113
+ const beforeById = new Map(beforeItems.map((item) => [item.id, item]));
114
+ const afterById = new Map(afterItems.map((item) => [item.id, item]));
115
+ const applyItems = (items) => {
116
+ const current = stateRef.current.content;
117
+ if (!current)
118
+ return;
119
+ applyContent(setContentKey(current, key, items));
120
+ };
121
+ for (const [itemId, beforeItem] of beforeById) {
122
+ if (afterById.has(itemId))
123
+ continue;
124
+ const beforeIndex = beforeItems.findIndex((item) => item.id === itemId);
125
+ commands.push(createRemoveCommand({
126
+ kind: `editor-shell-content:${String(key)}:delete`,
127
+ label: `Deleted ${String(key)} item`,
128
+ value: beforeItem,
129
+ doRemove: () => {
130
+ const currentItems = collectionArray(stateRef.current.content?.[key]) ?? [];
131
+ applyItems(currentItems.filter((item) => item.id !== itemId));
132
+ },
133
+ undoInsert: (item) => {
134
+ const currentItems = collectionArray(stateRef.current.content?.[key]) ?? [];
135
+ applyItems(upsertCollectionItem(currentItems, item, beforeIndex));
136
+ },
137
+ }));
138
+ }
139
+ for (const [itemId, afterItem] of afterById) {
140
+ if (beforeById.has(itemId))
141
+ continue;
142
+ const afterIndex = afterItems.findIndex((item) => item.id === itemId);
143
+ commands.push(createInsertCommand({
144
+ kind: `editor-shell-content:${String(key)}:create`,
145
+ label: `Created ${String(key)} item`,
146
+ value: afterItem,
147
+ doInsert: (item) => {
148
+ const currentItems = collectionArray(stateRef.current.content?.[key]) ?? [];
149
+ applyItems(upsertCollectionItem(currentItems, item, afterIndex));
150
+ },
151
+ undoRemove: () => {
152
+ const currentItems = collectionArray(stateRef.current.content?.[key]) ?? [];
153
+ applyItems(currentItems.filter((item) => item.id !== itemId));
154
+ },
155
+ }));
156
+ }
157
+ const beforeOrder = beforeItems.map((item) => item.id);
158
+ const afterOrder = afterItems.map((item) => item.id);
159
+ if (beforeOrder.length === afterOrder.length &&
160
+ beforeOrder.every((id) => afterById.has(id)) &&
161
+ afterOrder.every((id) => beforeById.has(id)) &&
162
+ !sameValue(beforeOrder, afterOrder)) {
163
+ commands.push(createLocalCommand({
164
+ kind: `editor-shell-content:${String(key)}:order`,
165
+ label: `Changed ${String(key)} order`,
166
+ before: beforeOrder,
167
+ after: afterOrder,
168
+ apply: (ids) => {
169
+ const currentItems = collectionArray(stateRef.current.content?.[key]) ?? [];
170
+ applyItems(reorderByIds(currentItems, ids));
171
+ },
172
+ }));
173
+ }
174
+ for (const [itemId, beforeItem] of beforeById) {
175
+ const afterItem = afterById.get(itemId);
176
+ if (!afterItem)
177
+ continue;
178
+ const fields = new Set([...Object.keys(beforeItem), ...Object.keys(afterItem)]);
179
+ fields.delete("id");
180
+ for (const field of fields) {
181
+ if (sameValue(beforeItem[field], afterItem[field]))
182
+ continue;
183
+ commands.push(createLocalCommand({
184
+ kind: `editor-shell-content:${String(key)}:field`,
185
+ label: `Changed ${String(key)} field "${field}"`,
186
+ before: beforeItem[field],
187
+ after: afterItem[field],
188
+ apply: (value) => {
189
+ const currentItems = collectionArray(stateRef.current.content?.[key]) ?? [];
190
+ applyItems(replaceCollectionItemField(currentItems, itemId, field, value));
191
+ },
192
+ }));
193
+ }
194
+ }
195
+ return commands;
196
+ }
197
+ export function buildContentCommands(deps, before, after) {
198
+ const { stateRef, applyContent } = deps;
199
+ const commands = [];
200
+ const keys = new Set([...Object.keys(before), ...Object.keys(after)]);
201
+ for (const key of keys) {
202
+ const beforeValue = before[key];
203
+ const afterValue = after[key];
204
+ if (sameValue(beforeValue, afterValue))
205
+ continue;
206
+ const beforeCollection = collectionArray(beforeValue);
207
+ const afterCollection = collectionArray(afterValue);
208
+ const beforeItems = beforeCollection ?? (beforeValue === undefined && afterCollection ? [] : null);
209
+ const afterItems = afterCollection ?? (afterValue === undefined && beforeCollection ? [] : null);
210
+ if (beforeItems && afterItems) {
211
+ commands.push(...buildCollectionCommands(deps, key, beforeItems, afterItems));
212
+ continue;
213
+ }
214
+ if (typeof beforeValue === "object" &&
215
+ beforeValue !== null &&
216
+ !Array.isArray(beforeValue) &&
217
+ typeof afterValue === "object" &&
218
+ afterValue !== null &&
219
+ !Array.isArray(afterValue)) {
220
+ const fields = new Set([...Object.keys(beforeValue), ...Object.keys(afterValue)]);
221
+ for (const field of fields) {
222
+ const beforeField = beforeValue[field];
223
+ const afterField = afterValue[field];
224
+ if (sameValue(beforeField, afterField))
225
+ continue;
226
+ commands.push(createLocalCommand({
227
+ kind: `editor-shell-content:${String(key)}:object-field`,
228
+ label: `Changed ${String(key)} field "${field}"`,
229
+ before: beforeField,
230
+ after: afterField,
231
+ apply: (value) => {
232
+ const current = stateRef.current.content;
233
+ if (!current)
234
+ return;
235
+ const currentObject = typeof current[key] === "object" && current[key] !== null && !Array.isArray(current[key])
236
+ ? current[key]
237
+ : {};
238
+ applyContent(setContentKey(current, key, setObjectField(currentObject, field, value)));
239
+ },
240
+ }));
241
+ }
242
+ continue;
243
+ }
244
+ commands.push(createLocalCommand({
245
+ kind: `editor-shell-content:${String(key)}`,
246
+ label: `Changed ${String(key)}`,
247
+ before: beforeValue,
248
+ after: afterValue,
249
+ apply: (value) => {
250
+ const current = stateRef.current.content;
251
+ if (!current)
252
+ return;
253
+ applyContent(setContentKey(current, key, value));
254
+ },
255
+ }));
256
+ }
257
+ return commands;
258
+ }
259
+ //# sourceMappingURL=diff.js.map