@aglyn/besigner-ui 1.0.0-beta.143

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 (486) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +7 -0
  3. package/package.json +73 -0
  4. package/src/besigner.d.ts +88 -0
  5. package/src/besigner.js +89 -0
  6. package/src/besigner.js.map +1 -0
  7. package/src/index.d.ts +17 -0
  8. package/src/index.js +18 -0
  9. package/src/index.js.map +1 -0
  10. package/src/lib/box-styler/box-styler.d.ts +57 -0
  11. package/src/lib/box-styler/box-styler.js +240 -0
  12. package/src/lib/box-styler/box-styler.js.map +1 -0
  13. package/src/lib/box-styler/components/box-diagram.d.ts +89 -0
  14. package/src/lib/box-styler/components/box-diagram.js +661 -0
  15. package/src/lib/box-styler/components/box-diagram.js.map +1 -0
  16. package/src/lib/box-styler/components/legend.d.ts +56 -0
  17. package/src/lib/box-styler/components/legend.js +130 -0
  18. package/src/lib/box-styler/components/legend.js.map +1 -0
  19. package/src/lib/box-styler/components/spacing-editor.d.ts +55 -0
  20. package/src/lib/box-styler/components/spacing-editor.js +347 -0
  21. package/src/lib/box-styler/components/spacing-editor.js.map +1 -0
  22. package/src/lib/box-styler/constants.d.ts +17 -0
  23. package/src/lib/box-styler/constants.js +30 -0
  24. package/src/lib/box-styler/constants.js.map +1 -0
  25. package/src/lib/box-styler/index.d.ts +2 -0
  26. package/src/lib/box-styler/index.js +4 -0
  27. package/src/lib/box-styler/index.js.map +1 -0
  28. package/src/lib/box-styler/region-fills.d.ts +107 -0
  29. package/src/lib/box-styler/region-fills.js +139 -0
  30. package/src/lib/box-styler/region-fills.js.map +1 -0
  31. package/src/lib/box-styler/spacing-value.d.ts +104 -0
  32. package/src/lib/box-styler/spacing-value.js +223 -0
  33. package/src/lib/box-styler/spacing-value.js.map +1 -0
  34. package/src/lib/box-styler/types.d.ts +29 -0
  35. package/src/lib/box-styler/types.js +18 -0
  36. package/src/lib/box-styler/types.js.map +1 -0
  37. package/src/lib/components/accordion-list.component.d.ts +50 -0
  38. package/src/lib/components/accordion-list.component.js +228 -0
  39. package/src/lib/components/accordion-list.component.js.map +1 -0
  40. package/src/lib/components/add-controls.component.d.ts +22 -0
  41. package/src/lib/components/add-controls.component.js +50 -0
  42. package/src/lib/components/add-controls.component.js.map +1 -0
  43. package/src/lib/components/app-bar-breadcrumbs.component.d.ts +29 -0
  44. package/src/lib/components/app-bar-breadcrumbs.component.js +279 -0
  45. package/src/lib/components/app-bar-breadcrumbs.component.js.map +1 -0
  46. package/src/lib/components/app-bar-primary.component.d.ts +21 -0
  47. package/src/lib/components/app-bar-primary.component.js +108 -0
  48. package/src/lib/components/app-bar-primary.component.js.map +1 -0
  49. package/src/lib/components/app-bar-secondary.component.d.ts +21 -0
  50. package/src/lib/components/app-bar-secondary.component.js +94 -0
  51. package/src/lib/components/app-bar-secondary.component.js.map +1 -0
  52. package/src/lib/components/aside-panel.component.d.ts +23 -0
  53. package/src/lib/components/aside-panel.component.js +505 -0
  54. package/src/lib/components/aside-panel.component.js.map +1 -0
  55. package/src/lib/components/besigner-conflict-alert.component.d.ts +36 -0
  56. package/src/lib/components/besigner-conflict-alert.component.js +51 -0
  57. package/src/lib/components/besigner-conflict-alert.component.js.map +1 -0
  58. package/src/lib/components/besigner-dnd-context.component.d.ts +32 -0
  59. package/src/lib/components/besigner-dnd-context.component.js +75 -0
  60. package/src/lib/components/besigner-dnd-context.component.js.map +1 -0
  61. package/src/lib/components/besigner-draft-alert.component.d.ts +70 -0
  62. package/src/lib/components/besigner-draft-alert.component.js +155 -0
  63. package/src/lib/components/besigner-draft-alert.component.js.map +1 -0
  64. package/src/lib/components/besigner-root-provider.component.d.ts +33 -0
  65. package/src/lib/components/besigner-root-provider.component.js +68 -0
  66. package/src/lib/components/besigner-root-provider.component.js.map +1 -0
  67. package/src/lib/components/binding-preview-controls.component.d.ts +28 -0
  68. package/src/lib/components/binding-preview-controls.component.js +63 -0
  69. package/src/lib/components/binding-preview-controls.component.js.map +1 -0
  70. package/src/lib/components/closeable-drawer.component.d.ts +32 -0
  71. package/src/lib/components/closeable-drawer.component.js +134 -0
  72. package/src/lib/components/closeable-drawer.component.js.map +1 -0
  73. package/src/lib/components/component-accordion-list.d.ts +28 -0
  74. package/src/lib/components/component-accordion-list.js +205 -0
  75. package/src/lib/components/component-accordion-list.js.map +1 -0
  76. package/src/lib/components/component-icon.component.d.ts +32 -0
  77. package/src/lib/components/component-icon.component.js +51 -0
  78. package/src/lib/components/component-icon.component.js.map +1 -0
  79. package/src/lib/components/component-picker.d.ts +27 -0
  80. package/src/lib/components/component-picker.js +368 -0
  81. package/src/lib/components/component-picker.js.map +1 -0
  82. package/src/lib/components/components-grid-list.component.d.ts +31 -0
  83. package/src/lib/components/components-grid-list.component.js +162 -0
  84. package/src/lib/components/components-grid-list.component.js.map +1 -0
  85. package/src/lib/components/custom-css-form.component.d.ts +115 -0
  86. package/src/lib/components/custom-css-form.component.js +699 -0
  87. package/src/lib/components/custom-css-form.component.js.map +1 -0
  88. package/src/lib/components/device-preview-controls.component.d.ts +22 -0
  89. package/src/lib/components/device-preview-controls.component.js +150 -0
  90. package/src/lib/components/device-preview-controls.component.js.map +1 -0
  91. package/src/lib/components/dnd/canvas-drop-indicator.d.ts +20 -0
  92. package/src/lib/components/dnd/canvas-drop-indicator.js +61 -0
  93. package/src/lib/components/dnd/canvas-drop-indicator.js.map +1 -0
  94. package/src/lib/components/dnd/draggable-droppable.d.ts +31 -0
  95. package/src/lib/components/dnd/draggable-droppable.js +383 -0
  96. package/src/lib/components/dnd/draggable-droppable.js.map +1 -0
  97. package/src/lib/components/dnd/draggable.d.ts +42 -0
  98. package/src/lib/components/dnd/draggable.js +66 -0
  99. package/src/lib/components/dnd/draggable.js.map +1 -0
  100. package/src/lib/components/dnd/drop-indicator.d.ts +31 -0
  101. package/src/lib/components/dnd/drop-indicator.js +139 -0
  102. package/src/lib/components/dnd/drop-indicator.js.map +1 -0
  103. package/src/lib/components/dnd/droppable.d.ts +43 -0
  104. package/src/lib/components/dnd/droppable.js +63 -0
  105. package/src/lib/components/dnd/droppable.js.map +1 -0
  106. package/src/lib/components/element-card.component.d.ts +23 -0
  107. package/src/lib/components/element-card.component.js +49 -0
  108. package/src/lib/components/element-card.component.js.map +1 -0
  109. package/src/lib/components/element-classes-field.component.d.ts +41 -0
  110. package/src/lib/components/element-classes-field.component.js +140 -0
  111. package/src/lib/components/element-classes-field.component.js.map +1 -0
  112. package/src/lib/components/element-detail-overlay.component.d.ts +55 -0
  113. package/src/lib/components/element-detail-overlay.component.js +157 -0
  114. package/src/lib/components/element-detail-overlay.component.js.map +1 -0
  115. package/src/lib/components/element-detail.component.d.ts +56 -0
  116. package/src/lib/components/element-detail.component.js +171 -0
  117. package/src/lib/components/element-detail.component.js.map +1 -0
  118. package/src/lib/components/element-info-details.component.d.ts +18 -0
  119. package/src/lib/components/element-info-details.component.js +169 -0
  120. package/src/lib/components/element-info-details.component.js.map +1 -0
  121. package/src/lib/components/element-interactions-form.component.d.ts +21 -0
  122. package/src/lib/components/element-interactions-form.component.js +199 -0
  123. package/src/lib/components/element-interactions-form.component.js.map +1 -0
  124. package/src/lib/components/element-preview.component.d.ts +75 -0
  125. package/src/lib/components/element-preview.component.js +346 -0
  126. package/src/lib/components/element-preview.component.js.map +1 -0
  127. package/src/lib/components/element-props-form.component.d.ts +565 -0
  128. package/src/lib/components/element-props-form.component.js +2392 -0
  129. package/src/lib/components/element-props-form.component.js.map +1 -0
  130. package/src/lib/components/element-styles-form-template.component.d.ts +27 -0
  131. package/src/lib/components/element-styles-form-template.component.js +89 -0
  132. package/src/lib/components/element-styles-form-template.component.js.map +1 -0
  133. package/src/lib/components/element-styles-form.component.d.ts +52 -0
  134. package/src/lib/components/element-styles-form.component.js +1350 -0
  135. package/src/lib/components/element-styles-form.component.js.map +1 -0
  136. package/src/lib/components/empty-document-slot.d.ts +39 -0
  137. package/src/lib/components/empty-document-slot.js +121 -0
  138. package/src/lib/components/empty-document-slot.js.map +1 -0
  139. package/src/lib/components/empty-results.d.ts +22 -0
  140. package/src/lib/components/empty-results.js +131 -0
  141. package/src/lib/components/empty-results.js.map +1 -0
  142. package/src/lib/components/history-controls.component.d.ts +21 -0
  143. package/src/lib/components/history-controls.component.js +67 -0
  144. package/src/lib/components/history-controls.component.js.map +1 -0
  145. package/src/lib/components/inline-markdown-editor.component.d.ts +17 -0
  146. package/src/lib/components/inline-markdown-editor.component.js +220 -0
  147. package/src/lib/components/inline-markdown-editor.component.js.map +1 -0
  148. package/src/lib/components/inline-text-editor.component.d.ts +48 -0
  149. package/src/lib/components/inline-text-editor.component.js +905 -0
  150. package/src/lib/components/inline-text-editor.component.js.map +1 -0
  151. package/src/lib/components/insert-token-menu.component.d.ts +86 -0
  152. package/src/lib/components/insert-token-menu.component.js +232 -0
  153. package/src/lib/components/insert-token-menu.component.js.map +1 -0
  154. package/src/lib/components/instance-attr-overrides.component.d.ts +50 -0
  155. package/src/lib/components/instance-attr-overrides.component.js +298 -0
  156. package/src/lib/components/instance-attr-overrides.component.js.map +1 -0
  157. package/src/lib/components/interact-controls.component.d.ts +22 -0
  158. package/src/lib/components/interact-controls.component.js +74 -0
  159. package/src/lib/components/interact-controls.component.js.map +1 -0
  160. package/src/lib/components/markdown-attribute-field.component.d.ts +40 -0
  161. package/src/lib/components/markdown-attribute-field.component.js +103 -0
  162. package/src/lib/components/markdown-attribute-field.component.js.map +1 -0
  163. package/src/lib/components/node-card.d.ts +24 -0
  164. package/src/lib/components/node-card.js +86 -0
  165. package/src/lib/components/node-card.js.map +1 -0
  166. package/src/lib/components/node-context-menu.d.ts +25 -0
  167. package/src/lib/components/node-context-menu.js +558 -0
  168. package/src/lib/components/node-context-menu.js.map +1 -0
  169. package/src/lib/components/node-leaf.d.ts +39 -0
  170. package/src/lib/components/node-leaf.js +628 -0
  171. package/src/lib/components/node-leaf.js.map +1 -0
  172. package/src/lib/components/node-outline.d.ts +24 -0
  173. package/src/lib/components/node-outline.js +156 -0
  174. package/src/lib/components/node-outline.js.map +1 -0
  175. package/src/lib/components/node-overlay.d.ts +23 -0
  176. package/src/lib/components/node-overlay.js +299 -0
  177. package/src/lib/components/node-overlay.js.map +1 -0
  178. package/src/lib/components/node-quick-actions.d.ts +24 -0
  179. package/src/lib/components/node-quick-actions.js +284 -0
  180. package/src/lib/components/node-quick-actions.js.map +1 -0
  181. package/src/lib/components/node-tree-view.d.ts +106 -0
  182. package/src/lib/components/node-tree-view.js +820 -0
  183. package/src/lib/components/node-tree-view.js.map +1 -0
  184. package/src/lib/components/panel-controls.component.d.ts +22 -0
  185. package/src/lib/components/panel-controls.component.js +76 -0
  186. package/src/lib/components/panel-controls.component.js.map +1 -0
  187. package/src/lib/components/picker-search-field.d.ts +38 -0
  188. package/src/lib/components/picker-search-field.js +79 -0
  189. package/src/lib/components/picker-search-field.js.map +1 -0
  190. package/src/lib/components/plugin-settings-field.component.d.ts +38 -0
  191. package/src/lib/components/plugin-settings-field.component.js +264 -0
  192. package/src/lib/components/plugin-settings-field.component.js.map +1 -0
  193. package/src/lib/components/properties-dialog.component.d.ts +22 -0
  194. package/src/lib/components/properties-dialog.component.js +40 -0
  195. package/src/lib/components/properties-dialog.component.js.map +1 -0
  196. package/src/lib/components/property-binding-field.component.d.ts +142 -0
  197. package/src/lib/components/property-binding-field.component.js +325 -0
  198. package/src/lib/components/property-binding-field.component.js.map +1 -0
  199. package/src/lib/components/property-values-form.component.d.ts +43 -0
  200. package/src/lib/components/property-values-form.component.js +223 -0
  201. package/src/lib/components/property-values-form.component.js.map +1 -0
  202. package/src/lib/components/scheme-preview-controls.component.d.ts +26 -0
  203. package/src/lib/components/scheme-preview-controls.component.js +56 -0
  204. package/src/lib/components/scheme-preview-controls.component.js.map +1 -0
  205. package/src/lib/components/screen-link-field.component.d.ts +118 -0
  206. package/src/lib/components/screen-link-field.component.js +282 -0
  207. package/src/lib/components/screen-link-field.component.js.map +1 -0
  208. package/src/lib/components/site-theme-color-tokens-provider.component.d.ts +33 -0
  209. package/src/lib/components/site-theme-color-tokens-provider.component.js +53 -0
  210. package/src/lib/components/site-theme-color-tokens-provider.component.js.map +1 -0
  211. package/src/lib/components/subtree-json-dialog.component.d.ts +46 -0
  212. package/src/lib/components/subtree-json-dialog.component.js +125 -0
  213. package/src/lib/components/subtree-json-dialog.component.js.map +1 -0
  214. package/src/lib/components/token-pill.component.d.ts +51 -0
  215. package/src/lib/components/token-pill.component.js +164 -0
  216. package/src/lib/components/token-pill.component.js.map +1 -0
  217. package/src/lib/components/token-text-field.component.d.ts +146 -0
  218. package/src/lib/components/token-text-field.component.js +603 -0
  219. package/src/lib/components/token-text-field.component.js.map +1 -0
  220. package/src/lib/components/tree/tree-list.d.ts +6 -0
  221. package/src/lib/components/tree/tree-list.js +108 -0
  222. package/src/lib/components/tree/tree-list.js.map +1 -0
  223. package/src/lib/components/viewport-canvas.component.d.ts +23 -0
  224. package/src/lib/components/viewport-canvas.component.js +128 -0
  225. package/src/lib/components/viewport-canvas.component.js.map +1 -0
  226. package/src/lib/components/viewport-frame.component.d.ts +47 -0
  227. package/src/lib/components/viewport-frame.component.js +332 -0
  228. package/src/lib/components/viewport-frame.component.js.map +1 -0
  229. package/src/lib/components/viewport-root.component.d.ts +22 -0
  230. package/src/lib/components/viewport-root.component.js +112 -0
  231. package/src/lib/components/viewport-root.component.js.map +1 -0
  232. package/src/lib/components/viewport-zoom-controls.d.ts +29 -0
  233. package/src/lib/components/viewport-zoom-controls.js +147 -0
  234. package/src/lib/components/viewport-zoom-controls.js.map +1 -0
  235. package/src/lib/components/workspace-editor.component.d.ts +23 -0
  236. package/src/lib/components/workspace-editor.component.js +191 -0
  237. package/src/lib/components/workspace-editor.component.js.map +1 -0
  238. package/src/lib/components/workspace-panel.component.d.ts +28 -0
  239. package/src/lib/components/workspace-panel.component.js +147 -0
  240. package/src/lib/components/workspace-panel.component.js.map +1 -0
  241. package/src/lib/constants/sample-data.d.ts +18 -0
  242. package/src/lib/constants/sample-data.js +106 -0
  243. package/src/lib/constants/sample-data.js.map +1 -0
  244. package/src/lib/constants/shared.d.ts +17 -0
  245. package/src/lib/constants/shared.js +18 -0
  246. package/src/lib/constants/shared.js.map +1 -0
  247. package/src/lib/contexts/besigner-app-context.d.ts +30 -0
  248. package/src/lib/contexts/besigner-app-context.js +41 -0
  249. package/src/lib/contexts/besigner-app-context.js.map +1 -0
  250. package/src/lib/contexts/binding-picker-context.d.ts +78 -0
  251. package/src/lib/contexts/binding-picker-context.js +21 -0
  252. package/src/lib/contexts/binding-picker-context.js.map +1 -0
  253. package/src/lib/contexts/canvas-host-tokens-context.d.ts +49 -0
  254. package/src/lib/contexts/canvas-host-tokens-context.js +63 -0
  255. package/src/lib/contexts/canvas-host-tokens-context.js.map +1 -0
  256. package/src/lib/contexts/canvas-reveal-context.d.ts +32 -0
  257. package/src/lib/contexts/canvas-reveal-context.js +34 -0
  258. package/src/lib/contexts/canvas-reveal-context.js.map +1 -0
  259. package/src/lib/contexts/component-promotion-context.d.ts +89 -0
  260. package/src/lib/contexts/component-promotion-context.js +21 -0
  261. package/src/lib/contexts/component-promotion-context.js.map +1 -0
  262. package/src/lib/contexts/components-drawer-context.provider.d.ts +32 -0
  263. package/src/lib/contexts/components-drawer-context.provider.js +80 -0
  264. package/src/lib/contexts/components-drawer-context.provider.js.map +1 -0
  265. package/src/lib/contexts/element-drawer-context.d.ts +1005 -0
  266. package/src/lib/contexts/element-drawer-context.js +45 -0
  267. package/src/lib/contexts/element-drawer-context.js.map +1 -0
  268. package/src/lib/contexts/inspected-selection.d.ts +32 -0
  269. package/src/lib/contexts/inspected-selection.js +38 -0
  270. package/src/lib/contexts/inspected-selection.js.map +1 -0
  271. package/src/lib/contexts/inspector-extras-context.d.ts +56 -0
  272. package/src/lib/contexts/inspector-extras-context.js +35 -0
  273. package/src/lib/contexts/inspector-extras-context.js.map +1 -0
  274. package/src/lib/contexts/interactions-context.d.ts +99 -0
  275. package/src/lib/contexts/interactions-context.js +22 -0
  276. package/src/lib/contexts/interactions-context.js.map +1 -0
  277. package/src/lib/contexts/layout-chrome-context.d.ts +37 -0
  278. package/src/lib/contexts/layout-chrome-context.js +75 -0
  279. package/src/lib/contexts/layout-chrome-context.js.map +1 -0
  280. package/src/lib/contexts/media-asset-facts-context.d.ts +74 -0
  281. package/src/lib/contexts/media-asset-facts-context.js +27 -0
  282. package/src/lib/contexts/media-asset-facts-context.js.map +1 -0
  283. package/src/lib/contexts/media-picker-context.d.ts +88 -0
  284. package/src/lib/contexts/media-picker-context.js +21 -0
  285. package/src/lib/contexts/media-picker-context.js.map +1 -0
  286. package/src/lib/contexts/rendered-canvas-elements.d.ts +42 -0
  287. package/src/lib/contexts/rendered-canvas-elements.js +79 -0
  288. package/src/lib/contexts/rendered-canvas-elements.js.map +1 -0
  289. package/src/lib/contexts/repeat-record-context.d.ts +38 -0
  290. package/src/lib/contexts/repeat-record-context.js +21 -0
  291. package/src/lib/contexts/repeat-record-context.js.map +1 -0
  292. package/src/lib/contexts/repeat-rows-context.d.ts +53 -0
  293. package/src/lib/contexts/repeat-rows-context.js +38 -0
  294. package/src/lib/contexts/repeat-rows-context.js.map +1 -0
  295. package/src/lib/contexts/toolbar-extras-context.d.ts +31 -0
  296. package/src/lib/contexts/toolbar-extras-context.js +33 -0
  297. package/src/lib/contexts/toolbar-extras-context.js.map +1 -0
  298. package/src/lib/drafts/besigner-draft-store.d.ts +110 -0
  299. package/src/lib/drafts/besigner-draft-store.js +125 -0
  300. package/src/lib/drafts/besigner-draft-store.js.map +1 -0
  301. package/src/lib/drafts/besigner-server-draft.d.ts +130 -0
  302. package/src/lib/drafts/besigner-server-draft.js +211 -0
  303. package/src/lib/drafts/besigner-server-draft.js.map +1 -0
  304. package/src/lib/form-fields/components/shared/inline-form-control.d.ts +32 -0
  305. package/src/lib/form-fields/components/shared/inline-form-control.js +85 -0
  306. package/src/lib/form-fields/components/shared/inline-form-control.js.map +1 -0
  307. package/src/lib/form-fields/components/shared/toggle-button-form-control.d.ts +33 -0
  308. package/src/lib/form-fields/components/shared/toggle-button-form-control.js +83 -0
  309. package/src/lib/form-fields/components/shared/toggle-button-form-control.js.map +1 -0
  310. package/src/lib/form-fields/form-fields.d.ts +20 -0
  311. package/src/lib/form-fields/form-fields.js +21 -0
  312. package/src/lib/form-fields/form-fields.js.map +1 -0
  313. package/src/lib/form-fields/index.d.ts +1 -0
  314. package/src/lib/form-fields/index.js +3 -0
  315. package/src/lib/form-fields/index.js.map +1 -0
  316. package/src/lib/hooks/use-add-element-drawer-callback.d.ts +28 -0
  317. package/src/lib/hooks/use-add-element-drawer-callback.js +112 -0
  318. package/src/lib/hooks/use-add-element-drawer-callback.js.map +1 -0
  319. package/src/lib/hooks/use-aglyn-besigner-flag.d.ts +23 -0
  320. package/src/lib/hooks/use-aglyn-besigner-flag.js +47 -0
  321. package/src/lib/hooks/use-aglyn-besigner-flag.js.map +1 -0
  322. package/src/lib/hooks/use-aglyn-besigner-panel-value.d.ts +23 -0
  323. package/src/lib/hooks/use-aglyn-besigner-panel-value.js +54 -0
  324. package/src/lib/hooks/use-aglyn-besigner-panel-value.js.map +1 -0
  325. package/src/lib/hooks/use-aglyn-besigner-panel.d.ts +23 -0
  326. package/src/lib/hooks/use-aglyn-besigner-panel.js +47 -0
  327. package/src/lib/hooks/use-aglyn-besigner-panel.js.map +1 -0
  328. package/src/lib/hooks/use-anchored-rect.d.ts +68 -0
  329. package/src/lib/hooks/use-anchored-rect.js +131 -0
  330. package/src/lib/hooks/use-anchored-rect.js.map +1 -0
  331. package/src/lib/hooks/use-besigner-app-context.d.ts +18 -0
  332. package/src/lib/hooks/use-besigner-app-context.js +19 -0
  333. package/src/lib/hooks/use-besigner-app-context.js.map +1 -0
  334. package/src/lib/hooks/use-besigner-document.d.ts +309 -0
  335. package/src/lib/hooks/use-besigner-document.js +500 -0
  336. package/src/lib/hooks/use-besigner-document.js.map +1 -0
  337. package/src/lib/hooks/use-besigner-draft.d.ts +209 -0
  338. package/src/lib/hooks/use-besigner-draft.js +429 -0
  339. package/src/lib/hooks/use-besigner-draft.js.map +1 -0
  340. package/src/lib/hooks/use-clipboard-callbacks.d.ts +29 -0
  341. package/src/lib/hooks/use-clipboard-callbacks.js +82 -0
  342. package/src/lib/hooks/use-clipboard-callbacks.js.map +1 -0
  343. package/src/lib/hooks/use-clipboard-shortcuts.d.ts +52 -0
  344. package/src/lib/hooks/use-clipboard-shortcuts.js +102 -0
  345. package/src/lib/hooks/use-clipboard-shortcuts.js.map +1 -0
  346. package/src/lib/hooks/use-component-propagation-notice.d.ts +96 -0
  347. package/src/lib/hooks/use-component-propagation-notice.js +177 -0
  348. package/src/lib/hooks/use-component-propagation-notice.js.map +1 -0
  349. package/src/lib/hooks/use-debounced-commit.d.ts +43 -0
  350. package/src/lib/hooks/use-debounced-commit.js +88 -0
  351. package/src/lib/hooks/use-debounced-commit.js.map +1 -0
  352. package/src/lib/hooks/use-delete-element-callback.d.ts +24 -0
  353. package/src/lib/hooks/use-delete-element-callback.js +82 -0
  354. package/src/lib/hooks/use-delete-element-callback.js.map +1 -0
  355. package/src/lib/hooks/use-detail-hover-intent.d.ts +76 -0
  356. package/src/lib/hooks/use-detail-hover-intent.js +123 -0
  357. package/src/lib/hooks/use-detail-hover-intent.js.map +1 -0
  358. package/src/lib/hooks/use-document-repair-callbacks.d.ts +50 -0
  359. package/src/lib/hooks/use-document-repair-callbacks.js +237 -0
  360. package/src/lib/hooks/use-document-repair-callbacks.js.map +1 -0
  361. package/src/lib/hooks/use-insert-token-options.d.ts +52 -0
  362. package/src/lib/hooks/use-insert-token-options.js +230 -0
  363. package/src/lib/hooks/use-insert-token-options.js.map +1 -0
  364. package/src/lib/hooks/use-leaf-drag.d.ts +24 -0
  365. package/src/lib/hooks/use-leaf-drag.js +28 -0
  366. package/src/lib/hooks/use-leaf-drag.js.map +1 -0
  367. package/src/lib/hooks/use-leaf-drop.d.ts +31 -0
  368. package/src/lib/hooks/use-leaf-drop.js +43 -0
  369. package/src/lib/hooks/use-leaf-drop.js.map +1 -0
  370. package/src/lib/hooks/use-markdown-media-picker.d.ts +63 -0
  371. package/src/lib/hooks/use-markdown-media-picker.js +110 -0
  372. package/src/lib/hooks/use-markdown-media-picker.js.map +1 -0
  373. package/src/lib/hooks/use-media-asset-facts-overlay.d.ts +43 -0
  374. package/src/lib/hooks/use-media-asset-facts-overlay.js +133 -0
  375. package/src/lib/hooks/use-media-asset-facts-overlay.js.map +1 -0
  376. package/src/lib/hooks/use-move-node-callbacks.d.ts +22 -0
  377. package/src/lib/hooks/use-move-node-callbacks.js +57 -0
  378. package/src/lib/hooks/use-move-node-callbacks.js.map +1 -0
  379. package/src/lib/hooks/use-node-with-host-tokens.d.ts +42 -0
  380. package/src/lib/hooks/use-node-with-host-tokens.js +59 -0
  381. package/src/lib/hooks/use-node-with-host-tokens.js.map +1 -0
  382. package/src/lib/hooks/use-picker-filter.d.ts +61 -0
  383. package/src/lib/hooks/use-picker-filter.js +122 -0
  384. package/src/lib/hooks/use-picker-filter.js.map +1 -0
  385. package/src/lib/hooks/use-repeat-preview.d.ts +64 -0
  386. package/src/lib/hooks/use-repeat-preview.js +214 -0
  387. package/src/lib/hooks/use-repeat-preview.js.map +1 -0
  388. package/src/lib/hooks/use-repeat-sources.d.ts +17 -0
  389. package/src/lib/hooks/use-repeat-sources.js +41 -0
  390. package/src/lib/hooks/use-repeat-sources.js.map +1 -0
  391. package/src/lib/hooks/use-visible-component-categories.d.ts +37 -0
  392. package/src/lib/hooks/use-visible-component-categories.js +79 -0
  393. package/src/lib/hooks/use-visible-component-categories.js.map +1 -0
  394. package/src/lib/utils/active-host-theme.d.ts +28 -0
  395. package/src/lib/utils/active-host-theme.js +77 -0
  396. package/src/lib/utils/active-host-theme.js.map +1 -0
  397. package/src/lib/utils/attr-target.d.ts +170 -0
  398. package/src/lib/utils/attr-target.js +229 -0
  399. package/src/lib/utils/attr-target.js.map +1 -0
  400. package/src/lib/utils/attribute-field-value.d.ts +21 -0
  401. package/src/lib/utils/attribute-field-value.js +28 -0
  402. package/src/lib/utils/attribute-field-value.js.map +1 -0
  403. package/src/lib/utils/canvas-context-menu.d.ts +28 -0
  404. package/src/lib/utils/canvas-context-menu.js +56 -0
  405. package/src/lib/utils/canvas-context-menu.js.map +1 -0
  406. package/src/lib/utils/canvas-reveal.d.ts +115 -0
  407. package/src/lib/utils/canvas-reveal.js +165 -0
  408. package/src/lib/utils/canvas-reveal.js.map +1 -0
  409. package/src/lib/utils/describe-element.d.ts +72 -0
  410. package/src/lib/utils/describe-element.js +159 -0
  411. package/src/lib/utils/describe-element.js.map +1 -0
  412. package/src/lib/utils/device-preview-styles.d.ts +89 -0
  413. package/src/lib/utils/device-preview-styles.js +228 -0
  414. package/src/lib/utils/device-preview-styles.js.map +1 -0
  415. package/src/lib/utils/docs-help.d.ts +22 -0
  416. package/src/lib/utils/docs-help.generated.d.ts +47 -0
  417. package/src/lib/utils/docs-help.generated.js +229 -0
  418. package/src/lib/utils/docs-help.generated.js.map +1 -0
  419. package/src/lib/utils/docs-help.js +37 -0
  420. package/src/lib/utils/docs-help.js.map +1 -0
  421. package/src/lib/utils/held-answers-store.d.ts +59 -0
  422. package/src/lib/utils/held-answers-store.js +94 -0
  423. package/src/lib/utils/held-answers-store.js.map +1 -0
  424. package/src/lib/utils/in-place-edit-surface.d.ts +118 -0
  425. package/src/lib/utils/in-place-edit-surface.js +164 -0
  426. package/src/lib/utils/in-place-edit-surface.js.map +1 -0
  427. package/src/lib/utils/inline-markdown-edit.store.d.ts +71 -0
  428. package/src/lib/utils/inline-markdown-edit.store.js +90 -0
  429. package/src/lib/utils/inline-markdown-edit.store.js.map +1 -0
  430. package/src/lib/utils/inline-text-edit.store.d.ts +85 -0
  431. package/src/lib/utils/inline-text-edit.store.js +78 -0
  432. package/src/lib/utils/inline-text-edit.store.js.map +1 -0
  433. package/src/lib/utils/instance-leaf-hit.d.ts +39 -0
  434. package/src/lib/utils/instance-leaf-hit.js +56 -0
  435. package/src/lib/utils/instance-leaf-hit.js.map +1 -0
  436. package/src/lib/utils/muted-classes.d.ts +76 -0
  437. package/src/lib/utils/muted-classes.js +108 -0
  438. package/src/lib/utils/muted-classes.js.map +1 -0
  439. package/src/lib/utils/muted-styles.d.ts +125 -0
  440. package/src/lib/utils/muted-styles.js +193 -0
  441. package/src/lib/utils/muted-styles.js.map +1 -0
  442. package/src/lib/utils/numeric-text-value.d.ts +42 -0
  443. package/src/lib/utils/numeric-text-value.js +47 -0
  444. package/src/lib/utils/numeric-text-value.js.map +1 -0
  445. package/src/lib/utils/preset-interactions.d.ts +37 -0
  446. package/src/lib/utils/preset-interactions.js +87 -0
  447. package/src/lib/utils/preset-interactions.js.map +1 -0
  448. package/src/lib/utils/publish-failure-message.d.ts +35 -0
  449. package/src/lib/utils/publish-failure-message.js +51 -0
  450. package/src/lib/utils/publish-failure-message.js.map +1 -0
  451. package/src/lib/utils/rank-picker-results.d.ts +45 -0
  452. package/src/lib/utils/rank-picker-results.js +136 -0
  453. package/src/lib/utils/rank-picker-results.js.map +1 -0
  454. package/src/lib/utils/responsive-sx.d.ts +65 -0
  455. package/src/lib/utils/responsive-sx.js +129 -0
  456. package/src/lib/utils/responsive-sx.js.map +1 -0
  457. package/src/lib/utils/rich-text-commands.d.ts +28 -0
  458. package/src/lib/utils/rich-text-commands.js +43 -0
  459. package/src/lib/utils/rich-text-commands.js.map +1 -0
  460. package/src/lib/utils/sanitize-rich-text.d.ts +52 -0
  461. package/src/lib/utils/sanitize-rich-text.js +173 -0
  462. package/src/lib/utils/sanitize-rich-text.js.map +1 -0
  463. package/src/lib/utils/state-sx.d.ts +255 -0
  464. package/src/lib/utils/state-sx.js +338 -0
  465. package/src/lib/utils/state-sx.js.map +1 -0
  466. package/src/lib/utils/style-field-groups.d.ts +136 -0
  467. package/src/lib/utils/style-field-groups.js +874 -0
  468. package/src/lib/utils/style-field-groups.js.map +1 -0
  469. package/src/lib/utils/style-field-search.d.ts +84 -0
  470. package/src/lib/utils/style-field-search.js +505 -0
  471. package/src/lib/utils/style-field-search.js.map +1 -0
  472. package/src/lib/utils/style-target.d.ts +69 -0
  473. package/src/lib/utils/style-target.js +203 -0
  474. package/src/lib/utils/style-target.js.map +1 -0
  475. package/src/lib/utils/theme-scale-options.d.ts +169 -0
  476. package/src/lib/utils/theme-scale-options.js +702 -0
  477. package/src/lib/utils/theme-scale-options.js.map +1 -0
  478. package/src/lib/utils/token-editable-dom.d.ts +82 -0
  479. package/src/lib/utils/token-editable-dom.js +280 -0
  480. package/src/lib/utils/token-editable-dom.js.map +1 -0
  481. package/src/lib/utils/token-segments.d.ts +111 -0
  482. package/src/lib/utils/token-segments.js +246 -0
  483. package/src/lib/utils/token-segments.js.map +1 -0
  484. package/src/lib/utils/visibility-styles.d.ts +38 -0
  485. package/src/lib/utils/visibility-styles.js +54 -0
  486. package/src/lib/utils/visibility-styles.js.map +1 -0
@@ -0,0 +1,123 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Aglyn LLC
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */ import { useCallback, useEffect, useRef, useState } from "react";
17
+ /**
18
+ * How long the panel survives the pointer leaving, in ms.
19
+ *
20
+ * This is the forgiving path from the card to the panel: the two are
21
+ * separated by a gap, so travelling to a link inside the panel means
22
+ * leaving the card first. Dismissing on `mouseleave` is what makes a
23
+ * floating detail impossible to click — the content moves or vanishes on the
24
+ * way to it. Long enough to cross a gap diagonally, short enough that it
25
+ * does not linger once you have moved on.
26
+ */ export const DETAIL_CLOSE_DELAY_MS = 260;
27
+ /**
28
+ * Hover-with-intent for a floating detail panel (AGL-2486).
29
+ *
30
+ * Three behaviours, and every one of them exists because the naive version
31
+ * is unusable:
32
+ *
33
+ * - **A pin beats the pointer.** Once clicked, moving across other cards
34
+ * does not swap the content out from under you. Without this, everything
35
+ * inside the panel — Learn more, the attribute list — is unreachable,
36
+ * because reaching for it changes what it says.
37
+ * - **Closing is delayed.** See {@link DETAIL_CLOSE_DELAY_MS}.
38
+ * - **Only one is ever open**, because there is one piece of state, not one
39
+ * per card.
40
+ */ export function useDetailHoverIntent() {
41
+ const [hovered, setHovered] = useState(null);
42
+ const [pinned, setPinned] = useState(null);
43
+ const [suspended, setSuspended] = useState(false);
44
+ const timer = useRef(null);
45
+ const cancel = useCallback(()=>{
46
+ if (timer.current) {
47
+ clearTimeout(timer.current);
48
+ timer.current = null;
49
+ }
50
+ }, []);
51
+ // A pending close must not fire into an unmounted tree.
52
+ useEffect(()=>cancel, [
53
+ cancel
54
+ ]);
55
+ const open = useCallback((item, anchor)=>{
56
+ if (suspended) return;
57
+ cancel();
58
+ setHovered({
59
+ item,
60
+ anchor
61
+ });
62
+ }, [
63
+ cancel,
64
+ suspended
65
+ ]);
66
+ const scheduleClose = useCallback(()=>{
67
+ cancel();
68
+ timer.current = setTimeout(()=>setHovered(null), DETAIL_CLOSE_DELAY_MS);
69
+ }, [
70
+ cancel
71
+ ]);
72
+ const keepOpen = useCallback(()=>cancel(), [
73
+ cancel
74
+ ]);
75
+ const togglePin = useCallback((item, anchor)=>{
76
+ if (suspended) return;
77
+ cancel();
78
+ setPinned((prev)=>{
79
+ var _prev_item;
80
+ return prev && ((_prev_item = prev.item) == null ? void 0 : _prev_item.$id) === (item == null ? void 0 : item.$id) ? null : {
81
+ item,
82
+ anchor
83
+ };
84
+ });
85
+ setHovered({
86
+ item,
87
+ anchor
88
+ });
89
+ }, [
90
+ cancel,
91
+ suspended
92
+ ]);
93
+ const dismiss = useCallback(()=>{
94
+ cancel();
95
+ setPinned(null);
96
+ setHovered(null);
97
+ }, [
98
+ cancel
99
+ ]);
100
+ const suspend = useCallback(()=>{
101
+ cancel();
102
+ setSuspended(true);
103
+ setPinned(null);
104
+ setHovered(null);
105
+ }, [
106
+ cancel
107
+ ]);
108
+ const resume = useCallback(()=>setSuspended(false), []);
109
+ return {
110
+ active: suspended ? null : pinned != null ? pinned : hovered,
111
+ isPinned: Boolean(pinned),
112
+ open,
113
+ scheduleClose,
114
+ keepOpen,
115
+ togglePin,
116
+ dismiss,
117
+ suspend,
118
+ resume
119
+ };
120
+ }
121
+ export default useDetailHoverIntent;
122
+
123
+ //# sourceMappingURL=use-detail-hover-intent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../../libs/besigner/feature/designer/src/lib/hooks/use-detail-hover-intent.ts"],"sourcesContent":["/**\n * @license\n * Copyright 2026 Aglyn LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useCallback, useEffect, useRef, useState } from 'react'\n\n/**\n * How long the panel survives the pointer leaving, in ms.\n *\n * This is the forgiving path from the card to the panel: the two are\n * separated by a gap, so travelling to a link inside the panel means\n * leaving the card first. Dismissing on `mouseleave` is what makes a\n * floating detail impossible to click — the content moves or vanishes on the\n * way to it. Long enough to cross a gap diagonally, short enough that it\n * does not linger once you have moved on.\n */\nexport const DETAIL_CLOSE_DELAY_MS = 260\n\nexport interface DetailTarget<T> {\n item: T\n anchor: HTMLElement\n}\n\nexport interface HoverIntent<T> {\n /** What the surface should describe: the pin wins over the pointer. */\n active: DetailTarget<T> | null\n /** True while held open by a click rather than by the pointer. */\n isPinned: boolean\n /** Pointer entered a card. */\n open: (item: T, anchor: HTMLElement) => void\n /** Pointer left a card, or left the floating panel. */\n scheduleClose: () => void\n /** Pointer entered the floating panel — cancels a pending close. */\n keepOpen: () => void\n /** Click a card: holds it open, or releases it if it was already held. */\n togglePin: (item: T, anchor: HTMLElement) => void\n /** Dismiss explicitly (close button, Escape, outside click). */\n dismiss: () => void\n /**\n * Dismiss AND stop responding to the pointer until {@link resume}.\n *\n * For a drag: the panel floats over the canvas, which is where the element\n * is being dropped, so it has to leave the drop path the moment the drag\n * starts — not on drop. Suspending rather than just dismissing is the\n * other half: a drag crosses other cards on its way out, and each of those\n * would otherwise re-open it mid-flight.\n */\n suspend: () => void\n resume: () => void\n}\n\n/**\n * Hover-with-intent for a floating detail panel (AGL-2486).\n *\n * Three behaviours, and every one of them exists because the naive version\n * is unusable:\n *\n * - **A pin beats the pointer.** Once clicked, moving across other cards\n * does not swap the content out from under you. Without this, everything\n * inside the panel — Learn more, the attribute list — is unreachable,\n * because reaching for it changes what it says.\n * - **Closing is delayed.** See {@link DETAIL_CLOSE_DELAY_MS}.\n * - **Only one is ever open**, because there is one piece of state, not one\n * per card.\n */\nexport function useDetailHoverIntent<T extends { $id?: string }>(): HoverIntent<T> {\n const [hovered, setHovered] = useState<DetailTarget<T> | null>(null)\n const [pinned, setPinned] = useState<DetailTarget<T> | null>(null)\n const [suspended, setSuspended] = useState(false)\n const timer = useRef<ReturnType<typeof setTimeout> | null>(null)\n\n const cancel = useCallback(() => {\n if (timer.current) {\n clearTimeout(timer.current)\n timer.current = null\n }\n }, [])\n\n // A pending close must not fire into an unmounted tree.\n useEffect(() => cancel, [cancel])\n\n const open = useCallback(\n (item: T, anchor: HTMLElement) => {\n if (suspended) return\n cancel()\n setHovered({ item, anchor })\n },\n [cancel, suspended],\n )\n\n const scheduleClose = useCallback(() => {\n cancel()\n timer.current = setTimeout(() => setHovered(null), DETAIL_CLOSE_DELAY_MS)\n }, [cancel])\n\n const keepOpen = useCallback(() => cancel(), [cancel])\n\n const togglePin = useCallback((item: T, anchor: HTMLElement) => {\n if (suspended) return\n cancel()\n setPinned((prev) => (prev && prev.item?.$id === item?.$id ? null : { item, anchor }))\n setHovered({ item, anchor })\n }, [cancel, suspended])\n\n const dismiss = useCallback(() => {\n cancel()\n setPinned(null)\n setHovered(null)\n }, [cancel])\n\n const suspend = useCallback(() => {\n cancel()\n setSuspended(true)\n setPinned(null)\n setHovered(null)\n }, [cancel])\n\n const resume = useCallback(() => setSuspended(false), [])\n\n return {\n active: suspended ? null : pinned ?? hovered,\n isPinned: Boolean(pinned),\n open,\n scheduleClose,\n keepOpen,\n togglePin,\n dismiss,\n suspend,\n resume,\n }\n}\n\nexport default useDetailHoverIntent\n"],"names":["useCallback","useEffect","useRef","useState","DETAIL_CLOSE_DELAY_MS","useDetailHoverIntent","hovered","setHovered","pinned","setPinned","suspended","setSuspended","timer","cancel","current","clearTimeout","open","item","anchor","scheduleClose","setTimeout","keepOpen","togglePin","prev","$id","dismiss","suspend","resume","active","isPinned","Boolean"],"mappings":"AAAA;;;;;;;;;;;;;;;CAeC,GAED,SAASA,WAAW,EAAEC,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,QAAO;AAEhE;;;;;;;;;CASC,GACD,OAAO,MAAMC,wBAAwB,IAAG;AAmCxC;;;;;;;;;;;;;CAaC,GACD,OAAO,SAASC;IACd,MAAM,CAACC,SAASC,WAAW,GAAGJ,SAAiC;IAC/D,MAAM,CAACK,QAAQC,UAAU,GAAGN,SAAiC;IAC7D,MAAM,CAACO,WAAWC,aAAa,GAAGR,SAAS;IAC3C,MAAMS,QAAQV,OAA6C;IAE3D,MAAMW,SAASb,YAAY;QACzB,IAAIY,MAAME,OAAO,EAAE;YACjBC,aAAaH,MAAME,OAAO;YAC1BF,MAAME,OAAO,GAAG;QAClB;IACF,GAAG,EAAE;IAEL,wDAAwD;IACxDb,UAAU,IAAMY,QAAQ;QAACA;KAAO;IAEhC,MAAMG,OAAOhB,YACX,CAACiB,MAASC;QACR,IAAIR,WAAW;QACfG;QACAN,WAAW;YAAEU;YAAMC;QAAO;IAC5B,GACA;QAACL;QAAQH;KAAU;IAGrB,MAAMS,gBAAgBnB,YAAY;QAChCa;QACAD,MAAME,OAAO,GAAGM,WAAW,IAAMb,WAAW,OAAOH;IACrD,GAAG;QAACS;KAAO;IAEX,MAAMQ,WAAWrB,YAAY,IAAMa,UAAU;QAACA;KAAO;IAErD,MAAMS,YAAYtB,YAAY,CAACiB,MAASC;QACtC,IAAIR,WAAW;QACfG;QACAJ,UAAU,CAACc;gBAAkBA;mBAARA,QAAQA,EAAAA,aAAAA,KAAKN,IAAI,qBAATM,WAAWC,GAAG,OAAKP,wBAAAA,KAAMO,GAAG,IAAG,OAAO;gBAAEP;gBAAMC;YAAO;;QAClFX,WAAW;YAAEU;YAAMC;QAAO;IAC5B,GAAG;QAACL;QAAQH;KAAU;IAEtB,MAAMe,UAAUzB,YAAY;QAC1Ba;QACAJ,UAAU;QACVF,WAAW;IACb,GAAG;QAACM;KAAO;IAEX,MAAMa,UAAU1B,YAAY;QAC1Ba;QACAF,aAAa;QACbF,UAAU;QACVF,WAAW;IACb,GAAG;QAACM;KAAO;IAEX,MAAMc,SAAS3B,YAAY,IAAMW,aAAa,QAAQ,EAAE;IAExD,OAAO;QACLiB,QAAQlB,YAAY,OAAOF,iBAAAA,SAAUF;QACrCuB,UAAUC,QAAQtB;QAClBQ;QACAG;QACAE;QACAC;QACAG;QACAC;QACAC;IACF;AACF;AAEA,eAAetB,qBAAoB"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Aglyn LLC
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+ /**
18
+ * `Edit ▸ Repair page` — strip what the canvas cannot render and keep
19
+ * everything that still works (AGL-2555).
20
+ *
21
+ * ⚠️ Never silent. The repair is computed first and shown to the author as a
22
+ * list of what it would remove, move and relink; nothing is written until
23
+ * they accept it. A quiet repair that deletes content is worse than the
24
+ * corruption it is treating, because the author never learns which of their
25
+ * work is gone.
26
+ *
27
+ * A sound document says so and writes nothing at all — an author who runs
28
+ * this on a hunch should get an answer, not an undo entry.
29
+ */
30
+ export declare function useRepairDocumentCallback(
31
+ /** What this editor edits — 'page' on a screen, 'document' elsewhere. */
32
+ noun?: string): () => Promise<void>;
33
+ /**
34
+ * `Edit ▸ Clear canvas` — empty the document without touching the screen
35
+ * (AGL-2554).
36
+ *
37
+ * The screen record, its SEO fields, the layout binding, the parent and
38
+ * slug, the id and the version history all stay. Deleting the screen and
39
+ * recreating it is what an author had to do instead, and that throws every
40
+ * one of those away — and pushes a fresh screen back through the window
41
+ * where a blank page is briefly live.
42
+ *
43
+ * Works on a document the hierarchy cannot render, which is the case that
44
+ * needs it most: `'Invalid node'` rows are not selectable, so Delete Element
45
+ * cannot reach them, and Add Element only appends.
46
+ */
47
+ export declare function useClearCanvasCallback(
48
+ /** What this editor edits — 'page' on a screen, 'document' elsewhere. */
49
+ noun?: string): () => Promise<void>;
50
+ export default useRepairDocumentCallback;
@@ -0,0 +1,237 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Aglyn LLC
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
17
+ import { canvas, clearCanvasNodes, components, repairCanvasNodes } from "@aglyn/aglyn";
18
+ import * as Besigner from "@aglyn/besigner";
19
+ import { useConfirmationContext } from "@aglyn/shared-ui-jsx";
20
+ import Alert from "@mui/material/Alert";
21
+ import Box from "@mui/material/Box";
22
+ import Typography from "@mui/material/Typography";
23
+ import { useCallback } from "react";
24
+ /**
25
+ * Replaces the whole node map as ONE undoable step, without the foreign-node
26
+ * overlay `applyNodes` carries.
27
+ *
28
+ * That overlay is the interesting part. `applyNodes` re-applies every node a
29
+ * peer has touched (`withForeignNodes(map, 0)`) because the maps IT serves —
30
+ * a raw-JSON paste, a per-browser draft the crash net offers back — were
31
+ * composed without any knowledge of the peer's later work, and publishing
32
+ * them would roll that work back under this session's id (AGL-2486).
33
+ *
34
+ * Neither caller here is composed elsewhere. Both read the LIVE map at click
35
+ * time and hand back a transformation of it, so there is no staleness for
36
+ * the overlay to protect against — and applying it would be actively wrong:
37
+ * a repair would have the peer's copy of the very nodes it just removed put
38
+ * straight back, and a clear would be left holding whatever the peer had
39
+ * touched, parented to elements that no longer exist. Which is the orphan
40
+ * shape AGL-1363 is about.
41
+ *
42
+ * A clear DOES discard a co-editor's work, and nothing here pretends
43
+ * otherwise — {@link useClearCanvasCallback} says so in the dialog when
44
+ * there is a peer to lose.
45
+ */ function replaceDocument(nodes) {
46
+ canvas.saveHistory();
47
+ canvas.setNodes(nodes);
48
+ Besigner.focus.clearFocusStatus();
49
+ }
50
+ /**
51
+ * Whether the component registry is populated enough to be trusted about
52
+ * what an element type IS.
53
+ *
54
+ * An empty registry answers "unknown" for every component in the document,
55
+ * and a repair that believed it would delete all of it — the same shape as a
56
+ * stubbed resolver making every capacity ceiling read zero. So the check is
57
+ * simply not offered until there is something to check against.
58
+ */ function componentResolver() {
59
+ var _components_factories;
60
+ if (!Object.keys((_components_factories = components.factories) != null ? _components_factories : {}).length) return undefined;
61
+ return (componentId)=>Boolean(components.getFactory(componentId));
62
+ }
63
+ /** Groups findings for the preview, most consequential first. */ function summarize(result) {
64
+ const removed = result.findings.filter((f)=>f.action === 'removed');
65
+ const moved = result.findings.filter((f)=>f.action === 'reparented');
66
+ const linked = result.findings.filter((f)=>f.action === 'unlinked' || f.action === 'relisted');
67
+ return {
68
+ removed,
69
+ moved,
70
+ linked
71
+ };
72
+ }
73
+ function FindingList({ title, findings }) {
74
+ if (!findings.length) return null;
75
+ return /*#__PURE__*/ _jsxs(Box, {
76
+ sx: {
77
+ mt: 2
78
+ },
79
+ children: [
80
+ /*#__PURE__*/ _jsx(Typography, {
81
+ variant: "subtitle2",
82
+ children: title
83
+ }),
84
+ /*#__PURE__*/ _jsxs(Box, {
85
+ component: "ul",
86
+ sx: {
87
+ m: 0,
88
+ pl: 3
89
+ },
90
+ children: [
91
+ findings.slice(0, 12).map((finding, index)=>{
92
+ var _finding_label;
93
+ return /*#__PURE__*/ _jsxs(Typography, {
94
+ component: "li",
95
+ variant: "body2",
96
+ children: [
97
+ /*#__PURE__*/ _jsx("strong", {
98
+ children: (_finding_label = finding.label) != null ? _finding_label : finding.nodeId
99
+ }),
100
+ ' — ',
101
+ finding.detail
102
+ ]
103
+ }, `${finding.nodeId}-${index}`);
104
+ }),
105
+ findings.length > 12 ? /*#__PURE__*/ _jsx(Typography, {
106
+ component: "li",
107
+ variant: "body2",
108
+ color: "text.secondary",
109
+ children: `and ${findings.length - 12} more`
110
+ }) : null
111
+ ]
112
+ })
113
+ ]
114
+ });
115
+ }
116
+ /**
117
+ * `Edit ▸ Repair page` — strip what the canvas cannot render and keep
118
+ * everything that still works (AGL-2555).
119
+ *
120
+ * ⚠️ Never silent. The repair is computed first and shown to the author as a
121
+ * list of what it would remove, move and relink; nothing is written until
122
+ * they accept it. A quiet repair that deletes content is worse than the
123
+ * corruption it is treating, because the author never learns which of their
124
+ * work is gone.
125
+ *
126
+ * A sound document says so and writes nothing at all — an author who runs
127
+ * this on a hunch should get an answer, not an undo entry.
128
+ */ export function useRepairDocumentCallback(/** What this editor edits — 'page' on a screen, 'document' elsewhere. */ noun = 'document') {
129
+ const { confirm } = useConfirmationContext();
130
+ return useCallback(async ()=>{
131
+ const current = canvas.toJSON().nodes;
132
+ const result = repairCanvasNodes(current, {
133
+ isKnownComponent: componentResolver()
134
+ });
135
+ if (result.healthy) {
136
+ await confirm({
137
+ title: 'Nothing to repair',
138
+ description: `Every element is intact and connected to the ${noun}. Nothing was changed.`,
139
+ confirmationText: 'Close',
140
+ cancellationButtonProps: {
141
+ sx: {
142
+ display: 'none'
143
+ }
144
+ }
145
+ }).catch(()=>{});
146
+ return;
147
+ }
148
+ const { removed, moved, linked } = summarize(result);
149
+ return confirm({
150
+ title: `Repair ${noun}`,
151
+ description: /*#__PURE__*/ _jsxs(Box, {
152
+ children: [
153
+ /*#__PURE__*/ _jsx(Typography, {
154
+ variant: "body2",
155
+ children: `This ${noun} has ${result.findings.length} problem${result.findings.length === 1 ? '' : 's'}. ${result.kept} element${result.kept === 1 ? '' : 's'} will be kept.`
156
+ }),
157
+ removed.length ? /*#__PURE__*/ _jsx(Alert, {
158
+ severity: "warning",
159
+ sx: {
160
+ mt: 2
161
+ },
162
+ children: `${removed.length} element${removed.length === 1 ? ' will be' : 's will be'} removed. This cannot be recovered after you save, though Undo will step back before it.`
163
+ }) : null,
164
+ /*#__PURE__*/ _jsx(FindingList, {
165
+ title: "Removed",
166
+ findings: removed
167
+ }),
168
+ /*#__PURE__*/ _jsx(FindingList, {
169
+ title: "Moved to the top level",
170
+ findings: moved
171
+ }),
172
+ /*#__PURE__*/ _jsx(FindingList, {
173
+ title: "Reconnected",
174
+ findings: linked
175
+ })
176
+ ]
177
+ }),
178
+ confirmationText: 'Repair',
179
+ confirmationButtonProps: {
180
+ color: removed.length ? 'error' : 'primary'
181
+ }
182
+ }).then(()=>replaceDocument(result.nodes)).catch(()=>{});
183
+ }, [
184
+ confirm,
185
+ noun
186
+ ]);
187
+ }
188
+ /**
189
+ * `Edit ▸ Clear canvas` — empty the document without touching the screen
190
+ * (AGL-2554).
191
+ *
192
+ * The screen record, its SEO fields, the layout binding, the parent and
193
+ * slug, the id and the version history all stay. Deleting the screen and
194
+ * recreating it is what an author had to do instead, and that throws every
195
+ * one of those away — and pushes a fresh screen back through the window
196
+ * where a blank page is briefly live.
197
+ *
198
+ * Works on a document the hierarchy cannot render, which is the case that
199
+ * needs it most: `'Invalid node'` rows are not selectable, so Delete Element
200
+ * cannot reach them, and Add Element only appends.
201
+ */ export function useClearCanvasCallback(/** What this editor edits — 'page' on a screen, 'document' elsewhere. */ noun = 'document') {
202
+ const { confirm } = useConfirmationContext();
203
+ return useCallback(()=>{
204
+ const remote = canvas.hasRemoteEdits;
205
+ return confirm({
206
+ title: 'Clear canvas?',
207
+ description: /*#__PURE__*/ _jsxs(Box, {
208
+ children: [
209
+ /*#__PURE__*/ _jsx(Typography, {
210
+ variant: "body2",
211
+ children: `Every element will be removed. The ${noun} itself — its settings, its address and its version history — is not affected, and Undo steps back.`
212
+ }),
213
+ remote ? /*#__PURE__*/ _jsx(Alert, {
214
+ severity: "warning",
215
+ sx: {
216
+ mt: 2
217
+ },
218
+ children: `Someone else has edited this ${noun} since you opened it. Clearing removes their work too.`
219
+ }) : null
220
+ ]
221
+ }),
222
+ confirmationText: 'Clear canvas',
223
+ confirmationButtonProps: {
224
+ color: 'error'
225
+ }
226
+ }).then(()=>{
227
+ const current = canvas.toJSON().nodes;
228
+ replaceDocument(clearCanvasNodes(current));
229
+ }).catch(()=>{});
230
+ }, [
231
+ confirm,
232
+ noun
233
+ ]);
234
+ }
235
+ export default useRepairDocumentCallback;
236
+
237
+ //# sourceMappingURL=use-document-repair-callbacks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../../libs/besigner/feature/designer/src/lib/hooks/use-document-repair-callbacks.tsx"],"sourcesContent":["/**\n * @license\n * Copyright 2026 Aglyn LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type * as Aglyn from '@aglyn/aglyn'\nimport {\n canvas,\n clearCanvasNodes,\n components,\n repairCanvasNodes,\n} from '@aglyn/aglyn'\nimport * as Besigner from '@aglyn/besigner'\nimport { useConfirmationContext } from '@aglyn/shared-ui-jsx'\nimport Alert from '@mui/material/Alert'\nimport Box from '@mui/material/Box'\nimport Typography from '@mui/material/Typography'\nimport { useCallback } from 'react'\n\n/**\n * Replaces the whole node map as ONE undoable step, without the foreign-node\n * overlay `applyNodes` carries.\n *\n * That overlay is the interesting part. `applyNodes` re-applies every node a\n * peer has touched (`withForeignNodes(map, 0)`) because the maps IT serves —\n * a raw-JSON paste, a per-browser draft the crash net offers back — were\n * composed without any knowledge of the peer's later work, and publishing\n * them would roll that work back under this session's id (AGL-2486).\n *\n * Neither caller here is composed elsewhere. Both read the LIVE map at click\n * time and hand back a transformation of it, so there is no staleness for\n * the overlay to protect against — and applying it would be actively wrong:\n * a repair would have the peer's copy of the very nodes it just removed put\n * straight back, and a clear would be left holding whatever the peer had\n * touched, parented to elements that no longer exist. Which is the orphan\n * shape AGL-1363 is about.\n *\n * A clear DOES discard a co-editor's work, and nothing here pretends\n * otherwise — {@link useClearCanvasCallback} says so in the dialog when\n * there is a peer to lose.\n */\nfunction replaceDocument(nodes: Record<string, any>): void {\n canvas.saveHistory()\n canvas.setNodes(nodes as never)\n Besigner.focus.clearFocusStatus()\n}\n\n/**\n * Whether the component registry is populated enough to be trusted about\n * what an element type IS.\n *\n * An empty registry answers \"unknown\" for every component in the document,\n * and a repair that believed it would delete all of it — the same shape as a\n * stubbed resolver making every capacity ceiling read zero. So the check is\n * simply not offered until there is something to check against.\n */\nfunction componentResolver():\n | ((componentId: string) => boolean)\n | undefined {\n if (!Object.keys(components.factories ?? {}).length) return undefined\n return (componentId: string) =>\n Boolean(components.getFactory(componentId as never))\n}\n\n/** Groups findings for the preview, most consequential first. */\nfunction summarize(result: Aglyn.CanvasRepairResult) {\n const removed = result.findings.filter((f) => f.action === 'removed')\n const moved = result.findings.filter((f) => f.action === 'reparented')\n const linked = result.findings.filter(\n (f) => f.action === 'unlinked' || f.action === 'relisted',\n )\n return { removed, moved, linked }\n}\n\nfunction FindingList({\n title,\n findings,\n}: {\n title: string\n findings: Aglyn.CanvasRepairFinding[]\n}) {\n if (!findings.length) return null\n return (\n <Box sx={{ mt: 2 }}>\n <Typography variant=\"subtitle2\">{title}</Typography>\n <Box component=\"ul\" sx={{ m: 0, pl: 3 }}>\n {/* Capped: a badly damaged document can carry dozens, and a dialog\n the author has to scroll to reach its own buttons is one they\n will dismiss without reading. */}\n {findings.slice(0, 12).map((finding, index) => (\n <Typography\n component=\"li\"\n variant=\"body2\"\n key={`${finding.nodeId}-${index}`}\n >\n <strong>{finding.label ?? finding.nodeId}</strong>\n {' — '}\n {finding.detail}\n </Typography>\n ))}\n {findings.length > 12 ? (\n <Typography component=\"li\" variant=\"body2\" color=\"text.secondary\">\n {`and ${findings.length - 12} more`}\n </Typography>\n ) : null}\n </Box>\n </Box>\n )\n}\n\n/**\n * `Edit ▸ Repair page` — strip what the canvas cannot render and keep\n * everything that still works (AGL-2555).\n *\n * ⚠️ Never silent. The repair is computed first and shown to the author as a\n * list of what it would remove, move and relink; nothing is written until\n * they accept it. A quiet repair that deletes content is worse than the\n * corruption it is treating, because the author never learns which of their\n * work is gone.\n *\n * A sound document says so and writes nothing at all — an author who runs\n * this on a hunch should get an answer, not an undo entry.\n */\nexport function useRepairDocumentCallback(\n /** What this editor edits — 'page' on a screen, 'document' elsewhere. */\n noun = 'document',\n): () => Promise<void> {\n const { confirm } = useConfirmationContext()\n\n return useCallback(async () => {\n const current = canvas.toJSON().nodes as Record<string, any>\n const result = repairCanvasNodes(current, {\n isKnownComponent: componentResolver(),\n })\n\n if (result.healthy) {\n await confirm({\n title: 'Nothing to repair',\n description: `Every element is intact and connected to the ${noun}. Nothing was changed.`,\n confirmationText: 'Close',\n cancellationButtonProps: { sx: { display: 'none' } },\n }).catch(() => {})\n return\n }\n\n const { removed, moved, linked } = summarize(result)\n return confirm({\n title: `Repair ${noun}`,\n description: (\n <Box>\n <Typography variant=\"body2\">\n {`This ${noun} has ${result.findings.length} problem${\n result.findings.length === 1 ? '' : 's'\n }. ${result.kept} element${\n result.kept === 1 ? '' : 's'\n } will be kept.`}\n </Typography>\n {removed.length ? (\n <Alert severity=\"warning\" sx={{ mt: 2 }}>\n {`${removed.length} element${\n removed.length === 1 ? ' will be' : 's will be'\n } removed. This cannot be recovered after you save, though Undo will step back before it.`}\n </Alert>\n ) : null}\n <FindingList title=\"Removed\" findings={removed} />\n <FindingList title=\"Moved to the top level\" findings={moved} />\n <FindingList title=\"Reconnected\" findings={linked} />\n </Box>\n ),\n confirmationText: 'Repair',\n confirmationButtonProps: { color: removed.length ? 'error' : 'primary' },\n })\n .then(() => replaceDocument(result.nodes))\n .catch(() => {})\n }, [confirm, noun])\n}\n\n/**\n * `Edit ▸ Clear canvas` — empty the document without touching the screen\n * (AGL-2554).\n *\n * The screen record, its SEO fields, the layout binding, the parent and\n * slug, the id and the version history all stay. Deleting the screen and\n * recreating it is what an author had to do instead, and that throws every\n * one of those away — and pushes a fresh screen back through the window\n * where a blank page is briefly live.\n *\n * Works on a document the hierarchy cannot render, which is the case that\n * needs it most: `'Invalid node'` rows are not selectable, so Delete Element\n * cannot reach them, and Add Element only appends.\n */\nexport function useClearCanvasCallback(\n /** What this editor edits — 'page' on a screen, 'document' elsewhere. */\n noun = 'document',\n): () => Promise<void> {\n const { confirm } = useConfirmationContext()\n\n return useCallback(() => {\n const remote = canvas.hasRemoteEdits\n return confirm({\n title: 'Clear canvas?',\n description: (\n <Box>\n <Typography variant=\"body2\">\n {`Every element will be removed. The ${noun} itself — its settings, its address and its version history — is not affected, and Undo steps back.`}\n </Typography>\n {remote ? (\n <Alert severity=\"warning\" sx={{ mt: 2 }}>\n {`Someone else has edited this ${noun} since you opened it. Clearing removes their work too.`}\n </Alert>\n ) : null}\n </Box>\n ),\n confirmationText: 'Clear canvas',\n confirmationButtonProps: { color: 'error' },\n })\n .then(() => {\n const current = canvas.toJSON().nodes as Record<string, any>\n replaceDocument(clearCanvasNodes(current))\n })\n .catch(() => {})\n }, [confirm, noun])\n}\n\nexport default useRepairDocumentCallback\n"],"names":["canvas","clearCanvasNodes","components","repairCanvasNodes","Besigner","useConfirmationContext","Alert","Box","Typography","useCallback","replaceDocument","nodes","saveHistory","setNodes","focus","clearFocusStatus","componentResolver","Object","keys","factories","length","undefined","componentId","Boolean","getFactory","summarize","result","removed","findings","filter","f","action","moved","linked","FindingList","title","sx","mt","variant","component","m","pl","slice","map","finding","index","strong","label","nodeId","detail","color","useRepairDocumentCallback","noun","confirm","current","toJSON","isKnownComponent","healthy","description","confirmationText","cancellationButtonProps","display","catch","kept","severity","confirmationButtonProps","then","useClearCanvasCallback","remote","hasRemoteEdits"],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Aglyn LLC
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+ import type * as Aglyn from '@aglyn/aglyn';
18
+ import { type BindingOption } from '../contexts/binding-picker-context';
19
+ import type { TokenLabelContext } from '../utils/token-segments';
20
+ export interface InsertTokenOptionsResult {
21
+ /**
22
+ * The full grouped picker list (AGL-583): host bindings first (AGL-100),
23
+ * then the data-placeholder catalogs. Entry/Collection stay browsable
24
+ * even out of context — with a hint saying where they resolve — while
25
+ * the Dataset item group only appears inside a resolvable repeatable.
26
+ */
27
+ options: BindingOption[];
28
+ /** Display-name resolution inputs for pill rendering (AGL-586). */
29
+ labelContext: TokenLabelContext;
30
+ }
31
+ /**
32
+ * A component's or layout's own declared props as picker options (AGL-1335).
33
+ * A free-text field offers every one; a field with no text box is handed only
34
+ * the properties it can be bound to (see `withPropertyBinding`).
35
+ *
36
+ * Names are filtered by the SAME pattern the graft requires, so a picker can
37
+ * never offer a token that would not substitute.
38
+ */
39
+ export declare function componentPropBindingOptions(componentProps: readonly Aglyn.ReusableComponentProp[] | undefined | null, owner?: 'component' | 'layout'): BindingOption[];
40
+ /** The picker's second line for a property: what a page that sets nothing gets. */
41
+ export declare function componentPropDefaultPreview(prop: Aglyn.ReusableComponentProp): string;
42
+ /**
43
+ * Assembles the insert-picker options for a canvas node from ITS context
44
+ * (AGL-583, extracted for AGL-586 so the attributes panel and the inline
45
+ * text editor share one walk): the ancestor chain is scanned for a
46
+ * repeatable container (dataset-item tokens need its model fields) and for
47
+ * a Collection entries block (entry tokens resolve right there, not only
48
+ * on entry pages). `repeatDataset` persists a dataset id OR a legacy
49
+ * display name — either resolves against the entity picker options.
50
+ */
51
+ export declare function useInsertTokenOptions(node?: Aglyn.NodeSchema<any> | null): InsertTokenOptionsResult;
52
+ export default useInsertTokenOptions;