@formicoidea/labre-core 0.41.0 → 0.42.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 (252) hide show
  1. package/LICENSE +384 -0
  2. package/dist/_pkgs/affine-block-bookmark/bookmark-block.js +2 -2
  3. package/dist/_pkgs/affine-block-edgeless-text/edgeless-toolbar/config.js +7 -1
  4. package/dist/_pkgs/affine-block-embed/embed-figma-block/embed-figma-block.js +2 -1
  5. package/dist/_pkgs/affine-block-embed/embed-github-block/embed-github-block.js +2 -1
  6. package/dist/_pkgs/affine-block-embed/embed-iframe-block/consts.d.ts +2 -0
  7. package/dist/_pkgs/affine-block-embed/embed-iframe-block/consts.js +5 -0
  8. package/dist/_pkgs/affine-block-embed/embed-iframe-block/embed-iframe-block.d.ts +1 -0
  9. package/dist/_pkgs/affine-block-embed/embed-iframe-block/embed-iframe-block.js +30 -8
  10. package/dist/_pkgs/affine-block-embed/embed-iframe-block/utils.d.ts +8 -0
  11. package/dist/_pkgs/affine-block-embed/embed-iframe-block/utils.js +19 -0
  12. package/dist/_pkgs/affine-block-embed/embed-loom-block/embed-loom-block.js +2 -1
  13. package/dist/_pkgs/affine-block-embed/embed-youtube-block/embed-youtube-block.js +2 -1
  14. package/dist/_pkgs/affine-block-frame/frame-manager.js +1 -1
  15. package/dist/_pkgs/affine-block-frame/frame-tool.js +1 -1
  16. package/dist/_pkgs/affine-block-frame/frame-toolbar.js +6 -1
  17. package/dist/_pkgs/affine-block-list/list-keymap.js +7 -0
  18. package/dist/_pkgs/affine-block-note/note-keymap.js +7 -1
  19. package/dist/_pkgs/affine-block-paragraph/paragraph-keymap.js +7 -1
  20. package/dist/_pkgs/affine-block-root/commands/pivot-commands.js +1 -8
  21. package/dist/_pkgs/affine-block-root/commands/tag-commands.js +1 -8
  22. package/dist/_pkgs/affine-block-root/edgeless/edgeless-keyboard.d.ts +9 -0
  23. package/dist/_pkgs/affine-block-root/edgeless/edgeless-keyboard.js +51 -0
  24. package/dist/_pkgs/affine-block-root/edgeless/edgeless-root-block.d.ts +22 -0
  25. package/dist/_pkgs/affine-block-root/edgeless/edgeless-root-block.js +46 -0
  26. package/dist/_pkgs/affine-block-root/edgeless/utils/pinch-zoom.d.ts +21 -0
  27. package/dist/_pkgs/affine-block-root/edgeless/utils/pinch-zoom.js +24 -0
  28. package/dist/_pkgs/affine-block-root/edgeless/utils/query.js +8 -0
  29. package/dist/_pkgs/affine-block-root/keyboard/keymap.js +1 -16
  30. package/dist/_pkgs/affine-block-surface/element-model/index.d.ts +21 -3
  31. package/dist/_pkgs/affine-block-surface/element-model/index.js +14 -2
  32. package/dist/_pkgs/affine-block-surface/extensions/export-svg/command.d.ts +23 -0
  33. package/dist/_pkgs/affine-block-surface/extensions/export-svg/command.js +89 -0
  34. package/dist/_pkgs/affine-block-surface/extensions/export-svg/index.d.ts +7 -0
  35. package/dist/_pkgs/affine-block-surface/extensions/export-svg/index.js +5 -0
  36. package/dist/_pkgs/affine-block-surface/extensions/export-svg/render.d.ts +41 -0
  37. package/dist/_pkgs/affine-block-surface/extensions/export-svg/render.js +70 -0
  38. package/dist/_pkgs/affine-block-surface/extensions/export-svg/svg-context.d.ts +49 -0
  39. package/dist/_pkgs/affine-block-surface/extensions/export-svg/svg-context.js +257 -0
  40. package/dist/_pkgs/affine-block-surface/extensions/export-svg/tagged-path.d.ts +16 -0
  41. package/dist/_pkgs/affine-block-surface/extensions/export-svg/tagged-path.js +24 -0
  42. package/dist/_pkgs/affine-block-surface/extensions/export-svg/toolbar.d.ts +24 -0
  43. package/dist/_pkgs/affine-block-surface/extensions/export-svg/toolbar.js +66 -0
  44. package/dist/_pkgs/affine-block-surface/extensions/index.d.ts +4 -0
  45. package/dist/_pkgs/affine-block-surface/extensions/index.js +4 -0
  46. package/dist/_pkgs/affine-block-surface/extensions/interchange-import.d.ts +66 -4
  47. package/dist/_pkgs/affine-block-surface/extensions/interchange-import.js +241 -11
  48. package/dist/_pkgs/affine-block-surface/extensions/interchange.d.ts +18 -0
  49. package/dist/_pkgs/affine-block-surface/extensions/legend-toolbar.d.ts +81 -0
  50. package/dist/_pkgs/affine-block-surface/extensions/legend-toolbar.js +81 -0
  51. package/dist/_pkgs/affine-block-surface/extensions/legend.d.ts +136 -0
  52. package/dist/_pkgs/affine-block-surface/extensions/legend.js +439 -0
  53. package/dist/_pkgs/affine-block-surface/extensions/reading-widget.d.ts +17 -3
  54. package/dist/_pkgs/affine-block-surface/extensions/reading-widget.js +35 -13
  55. package/dist/_pkgs/affine-block-surface/extensions/reading.d.ts +61 -1
  56. package/dist/_pkgs/affine-block-surface/extensions/reading.js +85 -39
  57. package/dist/_pkgs/affine-block-surface/extensions/record-action.d.ts +66 -0
  58. package/dist/_pkgs/affine-block-surface/extensions/record-action.js +145 -0
  59. package/dist/_pkgs/affine-block-surface/extensions/validation.d.ts +253 -28
  60. package/dist/_pkgs/affine-block-surface/extensions/validation.js +489 -41
  61. package/dist/_pkgs/affine-block-surface/framework-background/background-view.d.ts +115 -0
  62. package/dist/_pkgs/affine-block-surface/framework-background/background-view.js +185 -0
  63. package/dist/_pkgs/affine-block-surface/framework-background/index.d.ts +1 -0
  64. package/dist/_pkgs/affine-block-surface/framework-background/index.js +1 -0
  65. package/dist/_pkgs/affine-block-surface/framework-background/labels.d.ts +16 -1
  66. package/dist/_pkgs/affine-block-surface/framework-background/labels.js +31 -21
  67. package/dist/_pkgs/affine-block-surface/framework-background/renderer.js +29 -5
  68. package/dist/_pkgs/affine-block-surface/framework-background/stacking.d.ts +6 -4
  69. package/dist/_pkgs/affine-block-surface/framework-background/stacking.js +56 -8
  70. package/dist/_pkgs/affine-block-surface/renderer/canvas-renderer.d.ts +12 -0
  71. package/dist/_pkgs/affine-block-surface/renderer/canvas-renderer.js +15 -0
  72. package/dist/_pkgs/affine-block-surface/view.js +8 -1
  73. package/dist/_pkgs/affine-block-surface-ref/configs/slash-menu.js +1 -1
  74. package/dist/_pkgs/affine-components/color-picker/button.d.ts +56 -1
  75. package/dist/_pkgs/affine-components/color-picker/button.js +168 -23
  76. package/dist/_pkgs/affine-components/color-picker/framework-palette.d.ts +106 -0
  77. package/dist/_pkgs/affine-components/color-picker/framework-palette.js +177 -0
  78. package/dist/_pkgs/affine-components/color-picker/index.d.ts +2 -0
  79. package/dist/_pkgs/affine-components/color-picker/index.js +2 -0
  80. package/dist/_pkgs/affine-components/color-picker/palette-carousel.d.ts +85 -0
  81. package/dist/_pkgs/affine-components/color-picker/palette-carousel.js +440 -0
  82. package/dist/_pkgs/affine-components/edgeless-shape-color-picker/color-picker.d.ts +31 -1
  83. package/dist/_pkgs/affine-components/edgeless-shape-color-picker/color-picker.js +189 -63
  84. package/dist/_pkgs/affine-components/resource/resource.js +29 -16
  85. package/dist/_pkgs/affine-components/translations.d.ts +8 -0
  86. package/dist/_pkgs/affine-components/translations.js +17 -0
  87. package/dist/_pkgs/affine-foundation/view.js +2 -1
  88. package/dist/_pkgs/affine-gfx-brush/element-renderer.js +2 -2
  89. package/dist/_pkgs/affine-gfx-brush/toolbar/configs/brush.js +6 -1
  90. package/dist/_pkgs/affine-gfx-brush/toolbar/configs/highlighter.js +6 -1
  91. package/dist/_pkgs/affine-gfx-connector/connector-manager.d.ts +9 -1
  92. package/dist/_pkgs/affine-gfx-connector/connector-manager.js +61 -0
  93. package/dist/_pkgs/affine-gfx-connector/element-renderer/connector-dom/index.d.ts +7 -1
  94. package/dist/_pkgs/affine-gfx-connector/element-renderer/connector-dom/index.js +87 -17
  95. package/dist/_pkgs/affine-gfx-connector/element-renderer/index.js +78 -17
  96. package/dist/_pkgs/affine-gfx-connector/element-renderer/utils.d.ts +24 -2
  97. package/dist/_pkgs/affine-gfx-connector/element-renderer/utils.js +31 -8
  98. package/dist/_pkgs/affine-gfx-connector/text/edgeless-connector-label-editor.d.ts +124 -3
  99. package/dist/_pkgs/affine-gfx-connector/text/edgeless-connector-label-editor.js +216 -54
  100. package/dist/_pkgs/affine-gfx-connector/text/text.d.ts +13 -4
  101. package/dist/_pkgs/affine-gfx-connector/text/text.js +13 -44
  102. package/dist/_pkgs/affine-gfx-connector/toolbar/config.d.ts +56 -0
  103. package/dist/_pkgs/affine-gfx-connector/toolbar/config.js +72 -4
  104. package/dist/_pkgs/affine-gfx-connector/toolbar/hollow-endpoint-icons.d.ts +8 -0
  105. package/dist/_pkgs/affine-gfx-connector/toolbar/hollow-endpoint-icons.js +118 -0
  106. package/dist/_pkgs/affine-gfx-connector/view/view.d.ts +37 -1
  107. package/dist/_pkgs/affine-gfx-connector/view/view.js +97 -8
  108. package/dist/_pkgs/affine-gfx-group/command/group-api.js +1 -1
  109. package/dist/_pkgs/affine-gfx-group/store.js +0 -2
  110. package/dist/_pkgs/affine-gfx-group/translations.d.ts +9 -10
  111. package/dist/_pkgs/affine-gfx-group/translations.js +9 -13
  112. package/dist/_pkgs/affine-gfx-mindmap/templates/index.js +1 -1
  113. package/dist/_pkgs/affine-gfx-mindmap/toolbar/basket-elements.js +1 -1
  114. package/dist/_pkgs/affine-gfx-mindmap/toolbar/utils/import-mindmap.js +2 -2
  115. package/dist/_pkgs/affine-gfx-mindmap/translations.d.ts +1 -1
  116. package/dist/_pkgs/affine-gfx-mindmap/translations.js +1 -1
  117. package/dist/_pkgs/affine-gfx-shape/element-renderer/highlighter.js +2 -2
  118. package/dist/_pkgs/affine-gfx-shape/overlay/polygon-drawing-overlay.d.ts +6 -0
  119. package/dist/_pkgs/affine-gfx-shape/overlay/polygon-drawing-overlay.js +30 -1
  120. package/dist/_pkgs/affine-gfx-shape/polygon-tool.d.ts +20 -1
  121. package/dist/_pkgs/affine-gfx-shape/polygon-tool.js +9 -1
  122. package/dist/_pkgs/affine-gfx-shape/toolbar/config.js +6 -1
  123. package/dist/_pkgs/affine-gfx-shape/toolbar/palette-color-action.js +11 -1
  124. package/dist/_pkgs/affine-gfx-template/builtin/other.js +1 -1
  125. package/dist/_pkgs/affine-gfx-template/snapshot-from-action.js +32 -119
  126. package/dist/_pkgs/affine-gfx-template/toolbar/template-type.d.ts +1 -1
  127. package/dist/_pkgs/affine-gfx-text/dblclick-add-edgeless-text.d.ts +13 -1
  128. package/dist/_pkgs/affine-gfx-text/dblclick-add-edgeless-text.js +19 -4
  129. package/dist/_pkgs/affine-gfx-text/edgeless-text-editor.d.ts +41 -0
  130. package/dist/_pkgs/affine-gfx-text/edgeless-text-editor.js +57 -2
  131. package/dist/_pkgs/affine-gfx-text/toolbar/actions.d.ts +8 -1
  132. package/dist/_pkgs/affine-gfx-text/toolbar/actions.js +12 -2
  133. package/dist/_pkgs/affine-gfx-text/translations.d.ts +1 -0
  134. package/dist/_pkgs/affine-gfx-text/translations.js +2 -1
  135. package/dist/_pkgs/affine-inline-preset/markdown.js +5 -1
  136. package/dist/_pkgs/affine-model/consts/connector.d.ts +28 -2
  137. package/dist/_pkgs/affine-model/consts/connector.js +26 -0
  138. package/dist/_pkgs/affine-model/elements/bpmn/pool.js +1 -1
  139. package/dist/_pkgs/affine-model/elements/brush/brush.js +1 -1
  140. package/dist/_pkgs/affine-model/elements/c4/board.js +1 -1
  141. package/dist/_pkgs/affine-model/elements/c4/boundary.js +1 -1
  142. package/dist/_pkgs/affine-model/elements/connector/connector.d.ts +135 -0
  143. package/dist/_pkgs/affine-model/elements/connector/connector.js +246 -5
  144. package/dist/_pkgs/affine-model/elements/connector/end-label.d.ts +83 -0
  145. package/dist/_pkgs/affine-model/elements/connector/end-label.js +119 -0
  146. package/dist/_pkgs/affine-model/elements/connector/index.d.ts +1 -0
  147. package/dist/_pkgs/affine-model/elements/connector/index.js +1 -0
  148. package/dist/_pkgs/affine-model/elements/context-map/context-map.js +1 -1
  149. package/dist/_pkgs/affine-model/elements/core-domain/core-domain.d.ts +28 -0
  150. package/dist/_pkgs/affine-model/elements/core-domain/core-domain.js +129 -2
  151. package/dist/_pkgs/affine-model/elements/cynefin/cynefin.d.ts +8 -0
  152. package/dist/_pkgs/affine-model/elements/cynefin/cynefin.js +45 -2
  153. package/dist/_pkgs/affine-model/elements/edgy/board.js +1 -1
  154. package/dist/_pkgs/affine-model/elements/edgy/facets.js +1 -1
  155. package/dist/_pkgs/affine-model/elements/estuarine/estuarine.d.ts +6 -0
  156. package/dist/_pkgs/affine-model/elements/estuarine/estuarine.js +36 -2
  157. package/dist/_pkgs/affine-model/elements/event-storming/event-storming.d.ts +18 -7
  158. package/dist/_pkgs/affine-model/elements/event-storming/event-storming.js +23 -8
  159. package/dist/_pkgs/affine-model/elements/framework-background/background.d.ts +16 -0
  160. package/dist/_pkgs/affine-model/elements/framework-background/background.js +18 -0
  161. package/dist/_pkgs/affine-model/elements/highlighter/highlighter.js +1 -1
  162. package/dist/_pkgs/affine-model/elements/index.d.ts +8 -0
  163. package/dist/_pkgs/affine-model/elements/index.js +1 -0
  164. package/dist/_pkgs/affine-model/elements/shape/shape.js +1 -1
  165. package/dist/_pkgs/affine-model/elements/text/text.js +1 -1
  166. package/dist/_pkgs/affine-model/elements/uml/band.d.ts +39 -0
  167. package/dist/_pkgs/affine-model/elements/uml/band.js +31 -0
  168. package/dist/_pkgs/affine-model/elements/uml/diagram.d.ts +158 -0
  169. package/dist/_pkgs/affine-model/elements/uml/diagram.js +229 -0
  170. package/dist/_pkgs/affine-model/elements/uml/fragment.d.ts +161 -0
  171. package/dist/_pkgs/affine-model/elements/uml/fragment.js +205 -0
  172. package/dist/_pkgs/affine-model/elements/uml/index.d.ts +8 -0
  173. package/dist/_pkgs/affine-model/elements/uml/index.js +8 -0
  174. package/dist/_pkgs/affine-model/elements/uml/lifeline.d.ts +77 -0
  175. package/dist/_pkgs/affine-model/elements/uml/lifeline.js +89 -0
  176. package/dist/_pkgs/affine-model/elements/uml/node.d.ts +142 -0
  177. package/dist/_pkgs/affine-model/elements/uml/node.js +190 -0
  178. package/dist/_pkgs/affine-model/elements/uml/partition.d.ts +106 -0
  179. package/dist/_pkgs/affine-model/elements/uml/partition.js +172 -0
  180. package/dist/_pkgs/affine-model/elements/uml/region.d.ts +75 -0
  181. package/dist/_pkgs/affine-model/elements/uml/region.js +150 -0
  182. package/dist/_pkgs/affine-model/elements/uml/subject.d.ts +37 -0
  183. package/dist/_pkgs/affine-model/elements/uml/subject.js +108 -0
  184. package/dist/_pkgs/affine-model/elements/wardley/wardley.js +1 -1
  185. package/dist/_pkgs/affine-shared/services/embed-iframe/embed-iframe-config.d.ts +1 -0
  186. package/dist/_pkgs/affine-shared/services/font-loader/config.d.ts +7 -0
  187. package/dist/_pkgs/affine-shared/services/font-loader/config.js +43 -0
  188. package/dist/_pkgs/affine-shared/services/pivot-materiality-publisher.js +1 -9
  189. package/dist/_pkgs/affine-shared/services/telemetry-service/document-damage-watcher.d.ts +53 -0
  190. package/dist/_pkgs/affine-shared/services/telemetry-service/document-damage-watcher.js +95 -0
  191. package/dist/_pkgs/affine-shared/services/telemetry-service/index.d.ts +1 -0
  192. package/dist/_pkgs/affine-shared/services/telemetry-service/index.js +1 -0
  193. package/dist/_pkgs/affine-shared/services/telemetry-service/lifecycle.d.ts +26 -1
  194. package/dist/_pkgs/affine-shared/services/telemetry-service/telemetry-service.d.ts +2 -2
  195. package/dist/_pkgs/affine-shared/services/toolbar-service/command-action.d.ts +34 -0
  196. package/dist/_pkgs/affine-shared/services/toolbar-service/command-action.js +63 -0
  197. package/dist/_pkgs/affine-shared/services/toolbar-service/index.d.ts +1 -0
  198. package/dist/_pkgs/affine-shared/services/toolbar-service/index.js +1 -0
  199. package/dist/_pkgs/affine-shared/services/translation-service/chrome.d.ts +77 -7
  200. package/dist/_pkgs/affine-shared/services/translation-service/chrome.js +97 -7
  201. package/dist/_pkgs/affine-shared/styles/index.d.ts +1 -0
  202. package/dist/_pkgs/affine-shared/styles/index.js +1 -0
  203. package/dist/_pkgs/affine-shared/styles/motion.d.ts +14 -0
  204. package/dist/_pkgs/affine-shared/styles/motion.js +38 -0
  205. package/dist/_pkgs/affine-shared/utils/event.d.ts +10 -0
  206. package/dist/_pkgs/affine-shared/utils/event.js +20 -0
  207. package/dist/_pkgs/affine-shared/utils/file/filesys.d.ts +16 -0
  208. package/dist/_pkgs/affine-shared/utils/file/filesys.js +25 -0
  209. package/dist/_pkgs/affine-shared/utils/index.d.ts +1 -0
  210. package/dist/_pkgs/affine-shared/utils/index.js +1 -0
  211. package/dist/_pkgs/affine-shared/utils/link-preview-refresh.d.ts +12 -0
  212. package/dist/_pkgs/affine-shared/utils/link-preview-refresh.js +13 -0
  213. package/dist/_pkgs/affine-widget-edgeless-toolbar/catalogue/artefact-catalogue-widget.d.ts +12 -4
  214. package/dist/_pkgs/affine-widget-edgeless-toolbar/catalogue/artefact-catalogue-widget.js +27 -4
  215. package/dist/_pkgs/affine-widget-edgeless-toolbar/create-popper.js +13 -0
  216. package/dist/_pkgs/affine-widget-edgeless-toolbar/index.d.ts +2 -0
  217. package/dist/_pkgs/affine-widget-edgeless-toolbar/index.js +2 -0
  218. package/dist/_pkgs/affine-widget-edgeless-toolbar/menu/command-menu.d.ts +80 -0
  219. package/dist/_pkgs/affine-widget-edgeless-toolbar/menu/command-menu.js +270 -81
  220. package/dist/_pkgs/affine-widget-edgeless-toolbar/menu/senior-menu-selection.d.ts +15 -0
  221. package/dist/_pkgs/affine-widget-edgeless-toolbar/menu/senior-menu-selection.js +15 -0
  222. package/dist/_pkgs/affine-widget-edgeless-toolbar/panel/font-weight-and-style-panel.js +8 -1
  223. package/dist/_pkgs/affine-widget-edgeless-toolbar/placement/artefact-ghost-overlay.d.ts +42 -0
  224. package/dist/_pkgs/affine-widget-edgeless-toolbar/placement/artefact-ghost-overlay.js +100 -0
  225. package/dist/_pkgs/affine-widget-edgeless-toolbar/placement/artefact-placement-tool.d.ts +100 -0
  226. package/dist/_pkgs/affine-widget-edgeless-toolbar/placement/artefact-placement-tool.js +274 -0
  227. package/dist/_pkgs/affine-widget-edgeless-toolbar/placement/index.d.ts +3 -0
  228. package/dist/_pkgs/affine-widget-edgeless-toolbar/placement/index.js +3 -0
  229. package/dist/_pkgs/affine-widget-edgeless-toolbar/placement/translate-created.d.ts +25 -0
  230. package/dist/_pkgs/affine-widget-edgeless-toolbar/placement/translate-created.js +67 -0
  231. package/dist/_pkgs/affine-widget-edgeless-toolbar/view.js +5 -0
  232. package/dist/_pkgs/global/gfx/xywh.js +7 -0
  233. package/dist/_pkgs/std/extension/command-registry.d.ts +158 -1
  234. package/dist/_pkgs/std/extension/command-registry.js +22 -0
  235. package/dist/_pkgs/std/gfx/index.d.ts +1 -1
  236. package/dist/_pkgs/std/gfx/interactivity/gfx-view-event-handler.d.ts +12 -0
  237. package/dist/_pkgs/std/gfx/interactivity/gfx-view-event-handler.js +20 -1
  238. package/dist/_pkgs/std/gfx/interactivity/manager.d.ts +10 -0
  239. package/dist/_pkgs/std/gfx/interactivity/manager.js +12 -0
  240. package/dist/_pkgs/std/gfx/model/surface/element-model.js +12 -7
  241. package/dist/_pkgs/std/gfx/model/surface/surface-model.d.ts +56 -0
  242. package/dist/_pkgs/std/gfx/model/surface/surface-model.js +84 -3
  243. package/dist/_pkgs/std/gfx/view/view.d.ts +11 -2
  244. package/dist/_pkgs/std/gfx/view/view.js +16 -2
  245. package/dist/commands.d.ts +6 -0
  246. package/dist/commands.js +8 -1
  247. package/dist/frameworks.d.ts +9 -0
  248. package/dist/frameworks.js +19 -0
  249. package/dist/translations.js +16 -0
  250. package/package.json +9 -4
  251. package/dist/_pkgs/affine-gfx-group/group-watcher.d.ts +0 -1
  252. package/dist/_pkgs/affine-gfx-group/group-watcher.js +0 -20
@@ -0,0 +1,190 @@
1
+ var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
2
+ function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
3
+ var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
4
+ var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
5
+ var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
6
+ var _, done = false;
7
+ for (var i = decorators.length - 1; i >= 0; i--) {
8
+ var context = {};
9
+ for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
10
+ for (var p in contextIn.access) context.access[p] = contextIn.access[p];
11
+ context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
12
+ var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
13
+ if (kind === "accessor") {
14
+ if (result === void 0) continue;
15
+ if (result === null || typeof result !== "object") throw new TypeError("Object expected");
16
+ if (_ = accept(result.get)) descriptor.get = _;
17
+ if (_ = accept(result.set)) descriptor.set = _;
18
+ if (_ = accept(result.init)) initializers.unshift(_);
19
+ }
20
+ else if (_ = accept(result)) {
21
+ if (kind === "field") initializers.unshift(_);
22
+ else descriptor[key] = _;
23
+ }
24
+ }
25
+ if (target) Object.defineProperty(target, contextIn.name, descriptor);
26
+ done = true;
27
+ };
28
+ var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
29
+ var useValue = arguments.length > 2;
30
+ for (var i = 0; i < initializers.length; i++) {
31
+ value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
32
+ }
33
+ return useValue ? value : void 0;
34
+ };
35
+ import { Bound, rotatePoint } from '../../../global/gfx/index.js';
36
+ import { field } from '../../../std/gfx/index.js';
37
+ import { ShapeElementModel } from '../shape/index.js';
38
+ import { umlInLifelineHead, umlLifelineHeadRect } from './lifeline.js';
39
+ /**
40
+ * A UML node. Extends {@link ShapeElementModel} (a native shape) so it inherits
41
+ * ALL shape behaviour — editable stroke width / colours, inner text, native
42
+ * resize, the shape context toolbar — for free. `kind` discriminates the
43
+ * artefacts and drives the RENDERING alone; what a node MEANS is the `role`
44
+ * stamped on it at creation (`gfx/uml/src/roles.ts`).
45
+ *
46
+ * Mirrors {@link C4NodeElementModel}.
47
+ */
48
+ let UmlNodeElementModel = (() => {
49
+ let _classSuper = ShapeElementModel;
50
+ let _kind_decorators;
51
+ let _kind_initializers = [];
52
+ let _kind_extraInitializers = [];
53
+ return class UmlNodeElementModel extends _classSuper {
54
+ static {
55
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
56
+ _kind_decorators = [field('class')];
57
+ __esDecorate(this, null, _kind_decorators, { kind: "accessor", name: "kind", static: false, private: false, access: { has: obj => "kind" in obj, get: obj => obj.kind, set: (obj, value) => { obj.kind = value; } }, metadata: _metadata }, _kind_initializers, _kind_extraInitializers);
58
+ if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
59
+ }
60
+ get type() {
61
+ return 'umlNode';
62
+ }
63
+ /**
64
+ * Connector anchors are restricted to the centre, as they are for a C4 node
65
+ * and for a BPMN flow object: a UML relationship attaches to the node centre
66
+ * and clips at the perimeter, so an association between two classifiers
67
+ * points at the classifiers rather than at whichever of their twelve anchors
68
+ * the hand was nearest.
69
+ *
70
+ * ONE kind says otherwise, and the notation is why. A message in a sequence
71
+ * diagram attaches at a HEIGHT on its lifeline's spine — that height is WHEN
72
+ * it happens, and it is the whole of what a sequence diagram says (§17.4.4).
73
+ * Snapping every message to a 600-unit column's centre would stack the entire
74
+ * conversation on one horizontal line. So a `lifeline` keeps its native
75
+ * perimeter anchors, which lie on the column's left and right edges, 8 units
76
+ * either side of the spine: exactly where every UML tool draws them.
77
+ */
78
+ get centerAnchorOnly() {
79
+ return this.kind !== 'lifeline';
80
+ }
81
+ /**
82
+ * A lifeline's bound includes its HEAD; every other kind's is its box.
83
+ *
84
+ * §17.3.4 draws a lifeline as a named rectangle with a dashed line falling
85
+ * out of its bottom, and the element is the COLUMN the line runs down — 16
86
+ * units wide, so that a connector's native anchors land on the spine rather
87
+ * than 80 units off it. The head is 160 wide, so it hangs 72 units off each
88
+ * side of the element the platform knows about.
89
+ *
90
+ * Everything that measures an element measures `elementBound`: the selection
91
+ * rectangle, the marquee, "fit to frame", the group's own box. Without this
92
+ * override all of them would stop at the column, and a user would see a named
93
+ * box with a selection outline drawn down the middle of it.
94
+ *
95
+ * Nothing here is stored — it is derived from the element's own geometry — so
96
+ * it applies to a lifeline drawn before the override existed as well as
97
+ * after.
98
+ */
99
+ get elementBound() {
100
+ if (this.kind !== 'lifeline')
101
+ return super.elementBound;
102
+ const head = umlLifelineHeadRect(this);
103
+ if (!head)
104
+ return super.elementBound;
105
+ const [x, y, w, h] = this.deserializedXYWH;
106
+ // The union, in the element's own frame: the column plus the head that
107
+ // overflows it. The head is flush with the top and centred, so only the two
108
+ // horizontal edges can move.
109
+ const left = Math.min(0, head.x);
110
+ const right = Math.max(w, head.x + head.w);
111
+ const local = [
112
+ [x + left, y],
113
+ [x + right, y],
114
+ [x + right, y + h],
115
+ [x + left, y + h],
116
+ ];
117
+ const rotate = this.rotate ?? 0;
118
+ const points = rotate
119
+ ? local.map(point => rotatePoint(point, [x + w / 2, y + h / 2], rotate))
120
+ : local;
121
+ const xs = points.map(point => point[0]);
122
+ const ys = points.map(point => point[1]);
123
+ const minX = Math.min(...xs);
124
+ const minY = Math.min(...ys);
125
+ return new Bound(minX, minY, Math.max(...xs) - minX, Math.max(...ys) - minY);
126
+ }
127
+ /**
128
+ * A UML node is SOLID whatever its `filled` flag says.
129
+ *
130
+ * `rect.includesPoint` (and `ellipse`'s) skips the interior test for an
131
+ * unfilled shape and falls back to the stroke plus the tight bounding box of
132
+ * the text run — the behaviour that makes a hollow group let clicks through
133
+ * to the work it encloses. Several UML kinds are created unfilled and
134
+ * unstroked on purpose: a `package` is a tabbed folder, a `note` a rectangle
135
+ * with a folded corner, an `actor` a stick figure, none of which a native
136
+ * rect can be, so the GLYPH paints the body and the native shape paints
137
+ * nothing at all.
138
+ *
139
+ * The consequence, the one the PO reported against C4 on 27/08/2026, is that
140
+ * such nodes cannot be double-clicked into their own text editor: the body a
141
+ * user can plainly see is not a hit target, and only the border and the
142
+ * handful of characters of the label are. Pointer events reach an element
143
+ * view through this method (`GfxViewEventHandler`), so selecting, hovering,
144
+ * dragging and `dblclick` are all affected — the last one visibly.
145
+ *
146
+ * Forcing `ignoreTransparent: false` says the one thing that is true of every
147
+ * UML artefact: it is a BOX, and its whole area belongs to it. Nothing here
148
+ * is stored — the override changes hit testing, never the document — so it
149
+ * applies to nodes drawn before it existed as well as after.
150
+ */
151
+ includesPoint(x, y, options) {
152
+ if (super.includesPoint(x, y, {
153
+ ...options,
154
+ ignoreTransparent: false,
155
+ })) {
156
+ return true;
157
+ }
158
+ // …plus the one carve-out the pack keeps: a lifeline's HEAD, which is the
159
+ // part of it a user actually aims at (§17.3.4). The column the element is
160
+ // is 16 units wide — a hair at any realistic zoom — and the named box over
161
+ // its top is 160. Without this the head would be unclickable, which is the
162
+ // same failure the diagram frame's heading band would have had.
163
+ return this.kind === 'lifeline' && umlInLifelineHead(this, x, y);
164
+ }
165
+ #kind_accessor_storage = __runInitializers(this, _kind_initializers, 'class');
166
+ /**
167
+ * The one field a UML node carries, and the whole of its schema.
168
+ *
169
+ * The labels a classifier shows — its name, its attribute compartment, its
170
+ * operation compartment — are deliberately NOT fields here. They are canvas
171
+ * TEXT elements, grouped with the shape, and they are edited in place exactly
172
+ * like any other words on the canvas (R16, and the PO recette of 28/08/2026
173
+ * that settled it for C4's type line and description). A field would have
174
+ * been a second place to write the same sentence, reachable only through a
175
+ * form, and the form is the mechanism the recette rejected: an architect
176
+ * writes on the picture.
177
+ *
178
+ * What that buys the document format is that this model stays exactly what it
179
+ * is — `kind`, on a native shape — however many compartments the component
180
+ * grows.
181
+ */
182
+ get kind() { return this.#kind_accessor_storage; }
183
+ set kind(value) { this.#kind_accessor_storage = value; }
184
+ constructor() {
185
+ super(...arguments);
186
+ __runInitializers(this, _kind_extraInitializers);
187
+ }
188
+ };
189
+ })();
190
+ export { UmlNodeElementModel };
@@ -0,0 +1,106 @@
1
+ import type { SerializedXYWH } from '../../../global/gfx/index.js';
2
+ import type { PointTestOptions } from '../../../std/gfx/index.js';
3
+ import type { FrameworkBackgroundProps } from '../framework-background/index.js';
4
+ import { FrameworkBackgroundElementModel } from '../framework-background/index.js';
5
+ /**
6
+ * Height of a partition's NAME BAND — the strip its name is written in, in
7
+ * model units.
8
+ *
9
+ * Declared HERE, in the model, and re-exported by `@labre/affine-gfx-uml`, for
10
+ * the reason {@link UML_FRAME_BAND_HEIGHT} is: the partition's own hit test
11
+ * reads it (a swimlane is clickable by its header as well as by its border),
12
+ * and `affine-model` cannot reach into `affine-block-surface` where the
13
+ * declaration is resolved. One number, owned by the layer that both the
14
+ * declaration and the hit test can read.
15
+ *
16
+ * It is the band's THICKNESS whichever edge the band is on — the top for a
17
+ * vertical lane, the left for a horizontal one — because §15.6.4 draws one
18
+ * header strip and turns it with the lane rather than resizing it.
19
+ *
20
+ * 36 against the diagram frame's 44: a partition header is a name and not a
21
+ * `<kind> <name>` heading, and it is written inside a lane that already sits on
22
+ * a sheet, so it reads as a subdivision rather than as a second sheet.
23
+ */
24
+ export declare const UML_PARTITION_BAND = 36;
25
+ /**
26
+ * Which way a partition is sliced — the one thing §15.6.4 lets an author choose
27
+ * about a swimlane, and the thing that decides which edge the header is on.
28
+ *
29
+ * `vertical` is a COLUMN: a tall lane with its name across the top, which is how
30
+ * nearly every activity diagram anybody draws is laid out (the flow runs down,
31
+ * the responsibilities run across). `horizontal` is a ROW, name up the left
32
+ * edge, for the diagrams whose flow runs left to right.
33
+ *
34
+ * Two values and no more: §15.6.4 also draws a two-dimensional partition GRID,
35
+ * and that is a phase-3 refinement — a grid is not a third orientation of one
36
+ * lane, it is lanes crossed with lanes.
37
+ */
38
+ export type UmlPartitionOrientation = 'vertical' | 'horizontal';
39
+ export type UmlPartitionProps = FrameworkBackgroundProps & {
40
+ /** The partition name, written in its band — edited inline on dblclick. */
41
+ name?: string;
42
+ /** Which edge the band is on, and therefore which way the lane runs. */
43
+ orientation?: UmlPartitionOrientation;
44
+ };
45
+ /**
46
+ * An activity PARTITION — the swimlane of UML 2.5.1 §15.6.4: the strip drawn
47
+ * across an activity diagram saying who (or what) is responsible for the
48
+ * actions inside it.
49
+ *
50
+ * A framework background, so actions are dropped on it and connectors never
51
+ * snap to it — but a TRANSPARENT one, like {@link UmlSubjectElementModel} and
52
+ * for the same reason: a lane is drawn over an activity diagram that is already
53
+ * there, and an opaque card would hide the very flow it is attributing.
54
+ * Membership, as for every board in the library, is computed from geometry at
55
+ * read time (R11) — an action belongs to the lane its CENTRE is in, and nothing
56
+ * is stored on either element.
57
+ *
58
+ * ## Why a partition is an element and not a field on the frame
59
+ *
60
+ * Because a frame cannot grow a field without an ADR (the document format is a
61
+ * red zone), and because the notation does not put it there either: §15.6.4
62
+ * draws partitions as rectangles ON the diagram, freely positioned, freely
63
+ * resized, and an activity diagram may carry none, one, or a dozen. A `lanes`
64
+ * array on `umlDiagram` would have been a second geometry to keep in step with
65
+ * the one the user drags.
66
+ *
67
+ * What it LOOKS like is declared, not coded: see `UML_PARTITION_FRAME_V` and
68
+ * `UML_PARTITION_FRAME_H` in `@labre/affine-gfx-uml`.
69
+ */
70
+ export declare class UmlPartitionElementModel extends FrameworkBackgroundElementModel<UmlPartitionProps> {
71
+ get type(): string;
72
+ accessor name: string;
73
+ /**
74
+ * Which edge the name band is on — REQUIRED, with `vertical` as the default.
75
+ *
76
+ * Required for the reason `UmlDiagramElementModel.kind` is: it is part of the
77
+ * NOTATION rather than a claim an author may decline to make. A partition with
78
+ * no orientation has no header edge, so there would be nowhere to write its
79
+ * name and nowhere to double-click to change it.
80
+ */
81
+ accessor orientation: UmlPartitionOrientation;
82
+ accessor resizeEnabled: boolean;
83
+ accessor rotate: number;
84
+ /**
85
+ * Tall and narrow: the default is a COLUMN, because the default orientation
86
+ * is vertical and a vertical lane is a strip an activity flows DOWN. Wide
87
+ * enough for an action box (160) with room either side of it, and as tall as
88
+ * the diagram frame it is dropped on.
89
+ */
90
+ accessor xywh: SerializedXYWH;
91
+ /**
92
+ * A partition is picked by its BORDER — and by its NAME BAND, the one
93
+ * carve-out it keeps, on whichever edge its orientation puts it.
94
+ *
95
+ * The same carve-out the diagram frame makes and for the same reason: the band
96
+ * is the only part of the lane that is the LANE rather than the flow drawn in
97
+ * it. Without it the header would be unreachable, a background being picked by
98
+ * its border alone — and a transparent lane's border is a thin line round a
99
+ * region the user thinks of as a column.
100
+ *
101
+ * Nothing below the band is claimed, which matters more here than on the sheet:
102
+ * a partition is drawn OVER actions, so every point that is not its own
103
+ * furniture has to fall through to whatever is under the pointer.
104
+ */
105
+ includesPoint(x: number, y: number, options?: PointTestOptions): boolean;
106
+ }
@@ -0,0 +1,172 @@
1
+ var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
2
+ function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
3
+ var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
4
+ var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
5
+ var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
6
+ var _, done = false;
7
+ for (var i = decorators.length - 1; i >= 0; i--) {
8
+ var context = {};
9
+ for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
10
+ for (var p in contextIn.access) context.access[p] = contextIn.access[p];
11
+ context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
12
+ var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
13
+ if (kind === "accessor") {
14
+ if (result === void 0) continue;
15
+ if (result === null || typeof result !== "object") throw new TypeError("Object expected");
16
+ if (_ = accept(result.get)) descriptor.get = _;
17
+ if (_ = accept(result.set)) descriptor.set = _;
18
+ if (_ = accept(result.init)) initializers.unshift(_);
19
+ }
20
+ else if (_ = accept(result)) {
21
+ if (kind === "field") initializers.unshift(_);
22
+ else descriptor[key] = _;
23
+ }
24
+ }
25
+ if (target) Object.defineProperty(target, contextIn.name, descriptor);
26
+ done = true;
27
+ };
28
+ var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
29
+ var useValue = arguments.length > 2;
30
+ for (var i = 0; i < initializers.length; i++) {
31
+ value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
32
+ }
33
+ return useValue ? value : void 0;
34
+ };
35
+ import { field } from '../../../std/gfx/index.js';
36
+ import { FrameworkBackgroundElementModel } from '../framework-background/index.js';
37
+ import { umlInNameBand } from './band.js';
38
+ /**
39
+ * Height of a partition's NAME BAND — the strip its name is written in, in
40
+ * model units.
41
+ *
42
+ * Declared HERE, in the model, and re-exported by `@labre/affine-gfx-uml`, for
43
+ * the reason {@link UML_FRAME_BAND_HEIGHT} is: the partition's own hit test
44
+ * reads it (a swimlane is clickable by its header as well as by its border),
45
+ * and `affine-model` cannot reach into `affine-block-surface` where the
46
+ * declaration is resolved. One number, owned by the layer that both the
47
+ * declaration and the hit test can read.
48
+ *
49
+ * It is the band's THICKNESS whichever edge the band is on — the top for a
50
+ * vertical lane, the left for a horizontal one — because §15.6.4 draws one
51
+ * header strip and turns it with the lane rather than resizing it.
52
+ *
53
+ * 36 against the diagram frame's 44: a partition header is a name and not a
54
+ * `<kind> <name>` heading, and it is written inside a lane that already sits on
55
+ * a sheet, so it reads as a subdivision rather than as a second sheet.
56
+ */
57
+ export const UML_PARTITION_BAND = 36;
58
+ /**
59
+ * An activity PARTITION — the swimlane of UML 2.5.1 §15.6.4: the strip drawn
60
+ * across an activity diagram saying who (or what) is responsible for the
61
+ * actions inside it.
62
+ *
63
+ * A framework background, so actions are dropped on it and connectors never
64
+ * snap to it — but a TRANSPARENT one, like {@link UmlSubjectElementModel} and
65
+ * for the same reason: a lane is drawn over an activity diagram that is already
66
+ * there, and an opaque card would hide the very flow it is attributing.
67
+ * Membership, as for every board in the library, is computed from geometry at
68
+ * read time (R11) — an action belongs to the lane its CENTRE is in, and nothing
69
+ * is stored on either element.
70
+ *
71
+ * ## Why a partition is an element and not a field on the frame
72
+ *
73
+ * Because a frame cannot grow a field without an ADR (the document format is a
74
+ * red zone), and because the notation does not put it there either: §15.6.4
75
+ * draws partitions as rectangles ON the diagram, freely positioned, freely
76
+ * resized, and an activity diagram may carry none, one, or a dozen. A `lanes`
77
+ * array on `umlDiagram` would have been a second geometry to keep in step with
78
+ * the one the user drags.
79
+ *
80
+ * What it LOOKS like is declared, not coded: see `UML_PARTITION_FRAME_V` and
81
+ * `UML_PARTITION_FRAME_H` in `@labre/affine-gfx-uml`.
82
+ */
83
+ let UmlPartitionElementModel = (() => {
84
+ let _classSuper = FrameworkBackgroundElementModel;
85
+ let _name_decorators;
86
+ let _name_initializers = [];
87
+ let _name_extraInitializers = [];
88
+ let _orientation_decorators;
89
+ let _orientation_initializers = [];
90
+ let _orientation_extraInitializers = [];
91
+ let _resizeEnabled_decorators;
92
+ let _resizeEnabled_initializers = [];
93
+ let _resizeEnabled_extraInitializers = [];
94
+ let _rotate_decorators;
95
+ let _rotate_initializers = [];
96
+ let _rotate_extraInitializers = [];
97
+ let _xywh_decorators;
98
+ let _xywh_initializers = [];
99
+ let _xywh_extraInitializers = [];
100
+ return class UmlPartitionElementModel extends _classSuper {
101
+ static {
102
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
103
+ _name_decorators = [field('Partition')];
104
+ _orientation_decorators = [field('vertical')];
105
+ _resizeEnabled_decorators = [field(true)];
106
+ _rotate_decorators = [field(0)];
107
+ _xywh_decorators = [field()];
108
+ __esDecorate(this, null, _name_decorators, { kind: "accessor", name: "name", static: false, private: false, access: { has: obj => "name" in obj, get: obj => obj.name, set: (obj, value) => { obj.name = value; } }, metadata: _metadata }, _name_initializers, _name_extraInitializers);
109
+ __esDecorate(this, null, _orientation_decorators, { kind: "accessor", name: "orientation", static: false, private: false, access: { has: obj => "orientation" in obj, get: obj => obj.orientation, set: (obj, value) => { obj.orientation = value; } }, metadata: _metadata }, _orientation_initializers, _orientation_extraInitializers);
110
+ __esDecorate(this, null, _resizeEnabled_decorators, { kind: "accessor", name: "resizeEnabled", static: false, private: false, access: { has: obj => "resizeEnabled" in obj, get: obj => obj.resizeEnabled, set: (obj, value) => { obj.resizeEnabled = value; } }, metadata: _metadata }, _resizeEnabled_initializers, _resizeEnabled_extraInitializers);
111
+ __esDecorate(this, null, _rotate_decorators, { kind: "accessor", name: "rotate", static: false, private: false, access: { has: obj => "rotate" in obj, get: obj => obj.rotate, set: (obj, value) => { obj.rotate = value; } }, metadata: _metadata }, _rotate_initializers, _rotate_extraInitializers);
112
+ __esDecorate(this, null, _xywh_decorators, { kind: "accessor", name: "xywh", static: false, private: false, access: { has: obj => "xywh" in obj, get: obj => obj.xywh, set: (obj, value) => { obj.xywh = value; } }, metadata: _metadata }, _xywh_initializers, _xywh_extraInitializers);
113
+ if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
114
+ }
115
+ get type() {
116
+ return 'umlPartition';
117
+ }
118
+ #name_accessor_storage = __runInitializers(this, _name_initializers, 'Partition');
119
+ get name() { return this.#name_accessor_storage; }
120
+ set name(value) { this.#name_accessor_storage = value; }
121
+ #orientation_accessor_storage = (__runInitializers(this, _name_extraInitializers), __runInitializers(this, _orientation_initializers, 'vertical'));
122
+ /**
123
+ * Which edge the name band is on — REQUIRED, with `vertical` as the default.
124
+ *
125
+ * Required for the reason `UmlDiagramElementModel.kind` is: it is part of the
126
+ * NOTATION rather than a claim an author may decline to make. A partition with
127
+ * no orientation has no header edge, so there would be nowhere to write its
128
+ * name and nowhere to double-click to change it.
129
+ */
130
+ get orientation() { return this.#orientation_accessor_storage; }
131
+ set orientation(value) { this.#orientation_accessor_storage = value; }
132
+ #resizeEnabled_accessor_storage = (__runInitializers(this, _orientation_extraInitializers), __runInitializers(this, _resizeEnabled_initializers, true));
133
+ get resizeEnabled() { return this.#resizeEnabled_accessor_storage; }
134
+ set resizeEnabled(value) { this.#resizeEnabled_accessor_storage = value; }
135
+ #rotate_accessor_storage = (__runInitializers(this, _resizeEnabled_extraInitializers), __runInitializers(this, _rotate_initializers, 0));
136
+ get rotate() { return this.#rotate_accessor_storage; }
137
+ set rotate(value) { this.#rotate_accessor_storage = value; }
138
+ #xywh_accessor_storage = (__runInitializers(this, _rotate_extraInitializers), __runInitializers(this, _xywh_initializers, '[0,0,360,900]'));
139
+ /**
140
+ * Tall and narrow: the default is a COLUMN, because the default orientation
141
+ * is vertical and a vertical lane is a strip an activity flows DOWN. Wide
142
+ * enough for an action box (160) with room either side of it, and as tall as
143
+ * the diagram frame it is dropped on.
144
+ */
145
+ get xywh() { return this.#xywh_accessor_storage; }
146
+ set xywh(value) { this.#xywh_accessor_storage = value; }
147
+ /**
148
+ * A partition is picked by its BORDER — and by its NAME BAND, the one
149
+ * carve-out it keeps, on whichever edge its orientation puts it.
150
+ *
151
+ * The same carve-out the diagram frame makes and for the same reason: the band
152
+ * is the only part of the lane that is the LANE rather than the flow drawn in
153
+ * it. Without it the header would be unreachable, a background being picked by
154
+ * its border alone — and a transparent lane's border is a thin line round a
155
+ * region the user thinks of as a column.
156
+ *
157
+ * Nothing below the band is claimed, which matters more here than on the sheet:
158
+ * a partition is drawn OVER actions, so every point that is not its own
159
+ * furniture has to fall through to whatever is under the pointer.
160
+ */
161
+ includesPoint(x, y, options) {
162
+ if (super.includesPoint(x, y, options))
163
+ return true;
164
+ return umlInNameBand(this, this.orientation === 'horizontal' ? 'left' : 'top', UML_PARTITION_BAND, x, y);
165
+ }
166
+ constructor() {
167
+ super(...arguments);
168
+ __runInitializers(this, _xywh_extraInitializers);
169
+ }
170
+ };
171
+ })();
172
+ export { UmlPartitionElementModel };
@@ -0,0 +1,75 @@
1
+ import type { SerializedXYWH } from '../../../global/gfx/index.js';
2
+ import type { PointTestOptions } from '../../../std/gfx/index.js';
3
+ import type { FrameworkBackgroundProps } from '../framework-background/index.js';
4
+ import { FrameworkBackgroundElementModel } from '../framework-background/index.js';
5
+ /**
6
+ * Height of a region's NAME BAND — the strip its name is written in, in model
7
+ * units.
8
+ *
9
+ * Owned by the model for the reason {@link UML_PARTITION_BAND} is: the region's
10
+ * own hit test reads it, and `affine-model` cannot reach into the package where
11
+ * the declaration is resolved. The same 36 the partition uses, and deliberately
12
+ * so — the two are the same piece of furniture, a name written in a strip along
13
+ * the top of a transparent frame, and two numbers would drift.
14
+ */
15
+ export declare const UML_REGION_BAND = 36;
16
+ export type UmlRegionProps = FrameworkBackgroundProps & {
17
+ /** The state name, written in the band — edited inline on dblclick. */
18
+ name?: string;
19
+ };
20
+ /**
21
+ * A COMPOSITE STATE — the region of UML 2.5.1 §14.2.4: the rounded rectangle
22
+ * drawn round the sub-states of a state that has its own state machine inside
23
+ * it.
24
+ *
25
+ * A framework background, transparent like {@link UmlPartitionElementModel}: it
26
+ * is drawn OVER states that are already there, and membership is geometry at
27
+ * read time (R11).
28
+ *
29
+ * ## Why a composite state IS the region, rather than a state with regions in it
30
+ *
31
+ * The metamodel has two objects — a State that `isComposite`, and the Regions it
32
+ * owns — and the notation draws ONE: a rounded rectangle with the state's name
33
+ * at the top and the sub-machine inside (§14.2.4, Figure 14.6). A drawing tool
34
+ * that made the author place a `state` node and then a `umlRegion` inside it
35
+ * would be asking them to draw two things to get one picture, and would leave
36
+ * every rule with two elements to decide which of them the composite state is.
37
+ *
38
+ * So this element IS the composite state: it carries the name, it draws the
39
+ * rounded rectangle, and its sub-states sit inside it by geometry.
40
+ *
41
+ * ## The ceiling, stated out loud
42
+ *
43
+ * ORTHOGONAL regions — a composite state cut into concurrent regions by dashed
44
+ * separators (§14.2.4, Figure 14.8) — are NOT drawn. One region per composite
45
+ * state is what this element is; a second one is a phase-3 refinement, and it
46
+ * will arrive the way the BPMN pool's lanes did (an instance partition on the
47
+ * declaration) rather than as a field added here in a hurry.
48
+ *
49
+ * What it LOOKS like is declared, not coded: see `UML_REGION_FRAME` in
50
+ * `@labre/affine-gfx-uml`.
51
+ */
52
+ export declare class UmlRegionElementModel extends FrameworkBackgroundElementModel<UmlRegionProps> {
53
+ get type(): string;
54
+ /**
55
+ * `State`, not `Region`: this element IS the composite state on the page, and
56
+ * a fresh one that called itself a Region would be naming the metamodel
57
+ * object rather than the thing the author drew (see the header).
58
+ */
59
+ accessor name: string;
60
+ accessor resizeEnabled: boolean;
61
+ accessor rotate: number;
62
+ /** Room for a small sub-machine — an initial, two states and a final. */
63
+ accessor xywh: SerializedXYWH;
64
+ /**
65
+ * Picked by its BORDER and by its NAME BAND — the carve-out the diagram frame
66
+ * and the partition both make, and for the same reason: the band is the only
67
+ * part of the composite state that is the STATE rather than the sub-machine
68
+ * drawn inside it.
69
+ *
70
+ * Always the TOP edge: unlike a partition, a composite state has no
71
+ * orientation to turn — §14.2.4 writes its name across the top and nowhere
72
+ * else.
73
+ */
74
+ includesPoint(x: number, y: number, options?: PointTestOptions): boolean;
75
+ }