@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,205 @@
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 combined fragment's OPERATOR BAND — the strip across its top the
40
+ * pentagon tag is drawn in, in model units.
41
+ *
42
+ * Owned by the model for the reason {@link UML_FRAME_BAND_HEIGHT} is: the
43
+ * fragment's own hit test reads it (a fragment is clickable by its tag strip as
44
+ * well as by its border), and `affine-model` cannot reach into
45
+ * `affine-block-surface` where the declaration is resolved.
46
+ *
47
+ * The diagram frame's own 44, and deliberately: §17.6.4 draws the operator in
48
+ * the very same cut-corner pentagon Annex A draws a frame heading in — it IS a
49
+ * frame, nested in another one — and two numbers for one piece of furniture
50
+ * would drift.
51
+ */
52
+ export const UML_FRAGMENT_BAND = 44;
53
+ /**
54
+ * A COMBINED FRAGMENT — the rectangle drawn round part of a sequence diagram
55
+ * with an operator in its corner (UML 2.5.1 §17.6.4), and, under the `ref`
56
+ * operator, the InteractionUse of §17.7.4.
57
+ *
58
+ * A framework background, and a TRANSPARENT one, like
59
+ * {@link UmlSubjectElementModel} and {@link UmlPartitionElementModel}: it is
60
+ * drawn OVER lifelines and messages that are already there, and an opaque card
61
+ * would hide the very conversation it is qualifying. Membership — which
62
+ * messages are inside the `alt`, which lifelines it covers — is geometry at
63
+ * read time (R11), never a stored list.
64
+ *
65
+ * ## Why the operator is a field and the operands are not elements
66
+ *
67
+ * The operator IS the fragment: `alt` and `loop` are the same rectangle saying
68
+ * two entirely different things, and nothing in the picture distinguishes them
69
+ * but the word. So it is stored, with `alt` as the default — the fragment an
70
+ * architect reaches for first, and the one §17.6.4 opens with.
71
+ *
72
+ * The operands are bands of that one rectangle, and they follow the BPMN pool's
73
+ * lanes exactly: an optional flat array, `undefined` rather than `[]` until the
74
+ * first one is added, so a fragment with a single operand stays byte-identical
75
+ * to one written before the field existed. The trade the pool's own note
76
+ * states applies here unchanged — two peers reordering the operands at the same
77
+ * moment resolve last-write-wins, one whole list winning over the other — and
78
+ * it is stated so it is reviewed rather than discovered.
79
+ *
80
+ * What it LOOKS like is declared, not coded: see `UML_FRAGMENT_FRAME` in
81
+ * `@labre/affine-gfx-uml`.
82
+ */
83
+ let UmlFragmentElementModel = (() => {
84
+ let _classSuper = FrameworkBackgroundElementModel;
85
+ let _operator_decorators;
86
+ let _operator_initializers = [];
87
+ let _operator_extraInitializers = [];
88
+ let _name_decorators;
89
+ let _name_initializers = [];
90
+ let _name_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
+ let _operands_decorators;
101
+ let _operands_initializers = [];
102
+ let _operands_extraInitializers = [];
103
+ return class UmlFragmentElementModel extends _classSuper {
104
+ static {
105
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
106
+ _operator_decorators = [field('alt')];
107
+ _name_decorators = [field('')];
108
+ _resizeEnabled_decorators = [field(true)];
109
+ _rotate_decorators = [field(0)];
110
+ _xywh_decorators = [field()];
111
+ _operands_decorators = [field()];
112
+ __esDecorate(this, null, _operator_decorators, { kind: "accessor", name: "operator", static: false, private: false, access: { has: obj => "operator" in obj, get: obj => obj.operator, set: (obj, value) => { obj.operator = value; } }, metadata: _metadata }, _operator_initializers, _operator_extraInitializers);
113
+ __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);
114
+ __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);
115
+ __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);
116
+ __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);
117
+ __esDecorate(this, null, _operands_decorators, { kind: "accessor", name: "operands", static: false, private: false, access: { has: obj => "operands" in obj, get: obj => obj.operands, set: (obj, value) => { obj.operands = value; } }, metadata: _metadata }, _operands_initializers, _operands_extraInitializers);
118
+ if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
119
+ }
120
+ get type() {
121
+ return 'umlFragment';
122
+ }
123
+ #operator_accessor_storage = __runInitializers(this, _operator_initializers, 'alt');
124
+ /**
125
+ * The operator — REQUIRED, with `alt` as the default, for the reason
126
+ * `UmlDiagramElementModel.kind` is required: it is part of the NOTATION
127
+ * rather than a claim an author may decline to make. A fragment with no
128
+ * operator has no word to write in its pentagon, and a pentagon with nothing
129
+ * in it is a rectangle with a bitten corner.
130
+ */
131
+ get operator() { return this.#operator_accessor_storage; }
132
+ set operator(value) { this.#operator_accessor_storage = value; }
133
+ #name_accessor_storage = (__runInitializers(this, _operator_extraInitializers), __runInitializers(this, _name_initializers, ''));
134
+ /**
135
+ * The first operand's guard, or — under `ref` — the name of the interaction
136
+ * being referred to.
137
+ *
138
+ * Seeded EMPTY, unlike every other UML frame's name: §17.6.4 draws a guard
139
+ * only where there is one to draw, and `[alt]` with an empty bracket under it
140
+ * would be the notation inventing a condition the author has not written. An
141
+ * empty string keeps the field in the document (the `@field` default is
142
+ * written) without putting words on the page.
143
+ */
144
+ get name() { return this.#name_accessor_storage; }
145
+ set name(value) { this.#name_accessor_storage = value; }
146
+ #resizeEnabled_accessor_storage = (__runInitializers(this, _name_extraInitializers), __runInitializers(this, _resizeEnabled_initializers, true));
147
+ get resizeEnabled() { return this.#resizeEnabled_accessor_storage; }
148
+ set resizeEnabled(value) { this.#resizeEnabled_accessor_storage = value; }
149
+ #rotate_accessor_storage = (__runInitializers(this, _resizeEnabled_extraInitializers), __runInitializers(this, _rotate_initializers, 0));
150
+ get rotate() { return this.#rotate_accessor_storage; }
151
+ set rotate(value) { this.#rotate_accessor_storage = value; }
152
+ #xywh_accessor_storage = (__runInitializers(this, _rotate_extraInitializers), __runInitializers(this, _xywh_initializers, '[0,0,600,260]'));
153
+ /**
154
+ * Wide enough to cover three lifelines at the 200-unit spacing a sequence
155
+ * diagram is laid out on, and tall enough for three or four exchanges — the
156
+ * size an `alt` is actually drawn round.
157
+ */
158
+ get xywh() { return this.#xywh_accessor_storage; }
159
+ set xywh(value) { this.#xywh_accessor_storage = value; }
160
+ #operands_accessor_storage = (__runInitializers(this, _xywh_extraInitializers), __runInitializers(this, _operands_initializers, undefined));
161
+ /**
162
+ * The fragment's partition into operands, top to bottom.
163
+ *
164
+ * `undefined`, not `[]`, and for the three reasons `BpmnPoolElementModel
165
+ * .lanes` states in full: `@field()` writes nothing for an undefined default,
166
+ * so a fragment with a single operand — which is every `opt`, every `loop`
167
+ * and every `ref` — is byte-identical to one created before this field
168
+ * existed; the value is flat JSON because a list of operands is one atomic
169
+ * choice about how one fragment is cut; and it is declared here rather than
170
+ * on the base class because an operand is a subdivision of a combined
171
+ * fragment and of nothing else.
172
+ *
173
+ * What it MEANS is declared, not coded: `UML_FRAGMENT_FRAME.instanceZones`
174
+ * in `@labre/affine-gfx-uml` names this prop, and the framework-background
175
+ * primitive paints the separators and the guards from it.
176
+ */
177
+ get operands() { return this.#operands_accessor_storage; }
178
+ set operands(value) { this.#operands_accessor_storage = value; }
179
+ /**
180
+ * Picked by its BORDER — and by its OPERATOR BAND, the one carve-out it
181
+ * keeps.
182
+ *
183
+ * The same carve-out the diagram frame, the partition and the composite state
184
+ * all make, and for the same reason: the band is the only part of the
185
+ * fragment that is the FRAGMENT rather than the conversation drawn inside it.
186
+ * Without it the pentagon would be unreachable, a background being picked by
187
+ * its border alone — and a transparent fragment's border is a thin line round
188
+ * a region full of other people's messages.
189
+ *
190
+ * Nothing below the band is claimed, which matters here as much as on a
191
+ * partition: a fragment is drawn OVER lifelines, so every point that is not
192
+ * its own furniture has to fall through to whatever is under the pointer.
193
+ */
194
+ includesPoint(x, y, options) {
195
+ if (super.includesPoint(x, y, options))
196
+ return true;
197
+ return umlInNameBand(this, 'top', UML_FRAGMENT_BAND, x, y);
198
+ }
199
+ constructor() {
200
+ super(...arguments);
201
+ __runInitializers(this, _operands_extraInitializers);
202
+ }
203
+ };
204
+ })();
205
+ export { UmlFragmentElementModel };
@@ -0,0 +1,8 @@
1
+ export * from './band.js';
2
+ export * from './diagram.js';
3
+ export * from './fragment.js';
4
+ export * from './lifeline.js';
5
+ export * from './node.js';
6
+ export * from './partition.js';
7
+ export * from './region.js';
8
+ export * from './subject.js';
@@ -0,0 +1,8 @@
1
+ export * from './band.js';
2
+ export * from './diagram.js';
3
+ export * from './fragment.js';
4
+ export * from './lifeline.js';
5
+ export * from './node.js';
6
+ export * from './partition.js';
7
+ export * from './region.js';
8
+ export * from './subject.js';
@@ -0,0 +1,77 @@
1
+ /**
2
+ * The LIFELINE's geometry — the two numbers a lifeline is drawn, selected and
3
+ * hit-tested from (UML 2.5.1 §17.3.4).
4
+ *
5
+ * Declared HERE, in the model, and re-exported by `@labre/affine-gfx-uml`, for
6
+ * the reason {@link UML_FRAME_BAND_HEIGHT} and {@link UML_PARTITION_BAND} are:
7
+ * the element's own `elementBound` and `includesPoint` read them (a lifeline's
8
+ * HEAD overflows the column the element actually is), and `affine-model` cannot
9
+ * reach into the package where the renderer lives. One pair of numbers, owned by
10
+ * the layer that the model, the renderer and the label layout can all read.
11
+ *
12
+ * ## Why a lifeline is a narrow column and not a head-shaped box
13
+ *
14
+ * §17.3.4 draws a lifeline as a named rectangle with a dashed vertical line
15
+ * falling out of its bottom edge, down the whole height of the interaction. The
16
+ * thing a message ATTACHES to is that line, never the rectangle — so the element
17
+ * is the COLUMN (16 wide, {@link UML_LIFELINE_SPINE} tall), whose native
18
+ * perimeter puts every connector anchor on the spine's own x, and the head is
19
+ * painted over its top by the glyph layer.
20
+ *
21
+ * The consequence is the one thing this module exists to fix: the head is 160
22
+ * wide against a 16-wide element, so it hangs 72 units off each side of the box
23
+ * the platform knows about. Selection, hit testing and frame fitting would all
24
+ * stop at the column — a user would see a named box and be unable to click it.
25
+ * {@link umlLifelineHeadRect} is the shared answer, read by the model's two
26
+ * overrides and by the renderer alike.
27
+ */
28
+ export declare const UML_LIFELINE_HEAD: {
29
+ readonly w: 160;
30
+ readonly h: 48;
31
+ };
32
+ /**
33
+ * How tall a fresh lifeline's COLUMN is — the head plus the dashed spine under
34
+ * it, in model units.
35
+ *
36
+ * 600 is a sheet's worth of conversation: at the 40-unit rhythm a sequence
37
+ * diagram's messages are drawn on, it holds a dozen or so exchanges before the
38
+ * author has to drag it longer. Which is the resize a lifeline ever WANTS — the
39
+ * column is only ever wanted taller. It is not the only resize it accepts:
40
+ * nothing constrains the handles, and a wider column simply widens the painted
41
+ * head, which {@link umlLifelineHeadRect} sizes at `max(160, w)`.
42
+ */
43
+ export declare const UML_LIFELINE_SPINE = 600;
44
+ /** What a lifeline geometry question needs of an element: its box. */
45
+ export interface UmlLifelineGeometry {
46
+ deserializedXYWH: readonly number[];
47
+ rotate?: number;
48
+ }
49
+ /** A rectangle in the element's own (unrotated) local frame. */
50
+ export interface UmlLifelineRect {
51
+ x: number;
52
+ y: number;
53
+ w: number;
54
+ h: number;
55
+ }
56
+ /**
57
+ * The head box, in ELEMENT-LOCAL model units — the named rectangle §17.3.4
58
+ * draws at the top of the lifeline, centred on the column and flush with its
59
+ * top.
60
+ *
61
+ * `null` when there is nothing to draw: a column dragged to nothing.
62
+ *
63
+ * Never NARROWER than the column: a lifeline dragged wider than 160 units is a
64
+ * lifeline whose head is the whole of it, which is the only reading that keeps
65
+ * the head a box round the spine rather than a stripe down the middle of one.
66
+ * Clamped in height for the same reason the frame's heading band is — a column
67
+ * shorter than its own head keeps a head, cut down to what there is.
68
+ */
69
+ export declare function umlLifelineHeadRect(model: UmlLifelineGeometry): UmlLifelineRect | null;
70
+ /**
71
+ * Whether a CANVAS point lies in the lifeline's head.
72
+ *
73
+ * The rotation is undone about the element's centre before anything is
74
+ * measured, exactly as {@link umlInNameBand} does it: the head is axis-aligned
75
+ * INSIDE the lifeline, never on the canvas.
76
+ */
77
+ export declare function umlInLifelineHead(model: UmlLifelineGeometry, x: number, y: number): boolean;
@@ -0,0 +1,89 @@
1
+ import { rotatePoint } from '../../../global/gfx/index.js';
2
+ /**
3
+ * The LIFELINE's geometry — the two numbers a lifeline is drawn, selected and
4
+ * hit-tested from (UML 2.5.1 §17.3.4).
5
+ *
6
+ * Declared HERE, in the model, and re-exported by `@labre/affine-gfx-uml`, for
7
+ * the reason {@link UML_FRAME_BAND_HEIGHT} and {@link UML_PARTITION_BAND} are:
8
+ * the element's own `elementBound` and `includesPoint` read them (a lifeline's
9
+ * HEAD overflows the column the element actually is), and `affine-model` cannot
10
+ * reach into the package where the renderer lives. One pair of numbers, owned by
11
+ * the layer that the model, the renderer and the label layout can all read.
12
+ *
13
+ * ## Why a lifeline is a narrow column and not a head-shaped box
14
+ *
15
+ * §17.3.4 draws a lifeline as a named rectangle with a dashed vertical line
16
+ * falling out of its bottom edge, down the whole height of the interaction. The
17
+ * thing a message ATTACHES to is that line, never the rectangle — so the element
18
+ * is the COLUMN (16 wide, {@link UML_LIFELINE_SPINE} tall), whose native
19
+ * perimeter puts every connector anchor on the spine's own x, and the head is
20
+ * painted over its top by the glyph layer.
21
+ *
22
+ * The consequence is the one thing this module exists to fix: the head is 160
23
+ * wide against a 16-wide element, so it hangs 72 units off each side of the box
24
+ * the platform knows about. Selection, hit testing and frame fitting would all
25
+ * stop at the column — a user would see a named box and be unable to click it.
26
+ * {@link umlLifelineHeadRect} is the shared answer, read by the model's two
27
+ * overrides and by the renderer alike.
28
+ */
29
+ export const UML_LIFELINE_HEAD = { w: 160, h: 48 };
30
+ /**
31
+ * How tall a fresh lifeline's COLUMN is — the head plus the dashed spine under
32
+ * it, in model units.
33
+ *
34
+ * 600 is a sheet's worth of conversation: at the 40-unit rhythm a sequence
35
+ * diagram's messages are drawn on, it holds a dozen or so exchanges before the
36
+ * author has to drag it longer. Which is the resize a lifeline ever WANTS — the
37
+ * column is only ever wanted taller. It is not the only resize it accepts:
38
+ * nothing constrains the handles, and a wider column simply widens the painted
39
+ * head, which {@link umlLifelineHeadRect} sizes at `max(160, w)`.
40
+ */
41
+ export const UML_LIFELINE_SPINE = 600;
42
+ /**
43
+ * The head box, in ELEMENT-LOCAL model units — the named rectangle §17.3.4
44
+ * draws at the top of the lifeline, centred on the column and flush with its
45
+ * top.
46
+ *
47
+ * `null` when there is nothing to draw: a column dragged to nothing.
48
+ *
49
+ * Never NARROWER than the column: a lifeline dragged wider than 160 units is a
50
+ * lifeline whose head is the whole of it, which is the only reading that keeps
51
+ * the head a box round the spine rather than a stripe down the middle of one.
52
+ * Clamped in height for the same reason the frame's heading band is — a column
53
+ * shorter than its own head keeps a head, cut down to what there is.
54
+ */
55
+ export function umlLifelineHeadRect(model) {
56
+ const [, , w, h] = model.deserializedXYWH;
57
+ if (!(w > 0) || !(h > 0))
58
+ return null;
59
+ const width = Math.max(UML_LIFELINE_HEAD.w, w);
60
+ const height = Math.min(UML_LIFELINE_HEAD.h, h);
61
+ if (!(width > 0) || !(height > 0))
62
+ return null;
63
+ return { x: (w - width) / 2, y: 0, w: width, h: height };
64
+ }
65
+ /**
66
+ * Whether a CANVAS point lies in the lifeline's head.
67
+ *
68
+ * The rotation is undone about the element's centre before anything is
69
+ * measured, exactly as {@link umlInNameBand} does it: the head is axis-aligned
70
+ * INSIDE the lifeline, never on the canvas.
71
+ */
72
+ export function umlInLifelineHead(model, x, y) {
73
+ const head = umlLifelineHeadRect(model);
74
+ if (!head)
75
+ return false;
76
+ const [ex, ey, w, h] = model.deserializedXYWH;
77
+ let lx = x - ex;
78
+ let ly = y - ey;
79
+ const rotate = model.rotate ?? 0;
80
+ if (rotate) {
81
+ const [ux, uy] = rotatePoint([x, y], [ex + w / 2, ey + h / 2], -rotate);
82
+ lx = ux - ex;
83
+ ly = uy - ey;
84
+ }
85
+ return (lx >= head.x &&
86
+ lx <= head.x + head.w &&
87
+ ly >= head.y &&
88
+ ly <= head.y + head.h);
89
+ }
@@ -0,0 +1,142 @@
1
+ import { Bound } from '../../../global/gfx/index.js';
2
+ import type { PointTestOptions } from '../../../std/gfx/index.js';
3
+ import { ShapeElementModel } from '../shape/index.js';
4
+ /**
5
+ * The UML artefacts the pack draws. Each maps onto a native shape, decorated by
6
+ * a glyph where the notation asks for one:
7
+ *
8
+ * - classifiers — `class`, `interface` and `enumeration`, the compartmented
9
+ * rectangle of UML 2.5.1 §11.4, distinguished by the keyword above the name;
10
+ * - instances — `object`, the same rectangle with an underlined
11
+ * `name : Type` (§11.6);
12
+ * - containers — `package`, the tabbed folder (§12.2);
13
+ * - annotations — `note`, the folded-corner rectangle of Annex A;
14
+ * - use cases — `actor`, the stick figure, and `use-case`, the ellipse
15
+ * (§18.1);
16
+ * - components — `component`, the rectangle with the two-tabbed icon in its
17
+ * corner (§11.6.4), its `port` (§11.3.4), and the two interface glyphs that
18
+ * hang off it: `provided-interface`, the lollipop, and `required-interface`,
19
+ * the socket (§10.4.4);
20
+ * - deployments — `artifact`, the document icon (§19.3.4), and the three
21
+ * cubes: `node`, `device` and `execution-environment` (§19.4.4);
22
+ * - activities — `action`, the round-cornered rectangle of §15.3.4, the five
23
+ * control nodes that route its flow (`initial`, `activity-final`,
24
+ * `flow-final`, `decision`, `fork`), the `object-node` of §15.4.4 and the
25
+ * three signal and event shapes of §16.3.4 / §16.10.4 (`send-signal`,
26
+ * `accept-event`, `time-event`);
27
+ * - state machines — `state` and `final-state` (§14.2.4), and the seven
28
+ * pseudostates that route transitions: `choice`, `junction`,
29
+ * `shallow-history`, `deep-history`, `entry-point`, `exit-point` and
30
+ * `terminate`;
31
+ * - interactions — `lifeline`, the named head over a dashed spine (§17.3.4),
32
+ * the `execution` bar that sits on it (§17.2.4) and the `destruction` X that
33
+ * ends it.
34
+ *
35
+ * ## Compatibility
36
+ *
37
+ * This union is only ever WIDENED — appended to, never reordered — and it is
38
+ * widened with new VALUES of the existing `kind` string field: no new field, no
39
+ * schema change, no migration and no backfill. The same promise `C4NodeKind`
40
+ * and `BpmnNodeKind` make: a diagram drawn today carries one of the values
41
+ * below, loads unchanged on a build that ships more of them, and paints exactly
42
+ * as it always did.
43
+ *
44
+ * What an OLDER build does with a kind it has never heard of is the other half
45
+ * of that promise: the element is a native shape, so it still paints its own
46
+ * box, its own colours and its own words — it simply gets no glyph, because the
47
+ * renderer draws pictures for the kinds it knows and nothing for the rest.
48
+ *
49
+ * The phases that widen it are named in ADR 0017: phase 1 drew the first eight,
50
+ * phase 2 appended the eight structural ones below them and then the nineteen
51
+ * behaviour ones below those, and lifelines come in phase 3.
52
+ */
53
+ export type UmlNodeKind = 'class' | 'interface' | 'enumeration' | 'object' | 'package' | 'note' | 'actor' | 'use-case' | 'component' | 'port' | 'provided-interface' | 'required-interface' | 'artifact' | 'node' | 'device' | 'execution-environment' | 'action' | 'initial' | 'activity-final' | 'flow-final' | 'decision' | 'fork' | 'object-node' | 'send-signal' | 'accept-event' | 'time-event' | 'state' | 'final-state' | 'choice' | 'junction' | 'shallow-history' | 'deep-history' | 'entry-point' | 'exit-point' | 'terminate' | 'lifeline' | 'execution' | 'destruction';
54
+ /**
55
+ * A UML node. Extends {@link ShapeElementModel} (a native shape) so it inherits
56
+ * ALL shape behaviour — editable stroke width / colours, inner text, native
57
+ * resize, the shape context toolbar — for free. `kind` discriminates the
58
+ * artefacts and drives the RENDERING alone; what a node MEANS is the `role`
59
+ * stamped on it at creation (`gfx/uml/src/roles.ts`).
60
+ *
61
+ * Mirrors {@link C4NodeElementModel}.
62
+ */
63
+ export declare class UmlNodeElementModel extends ShapeElementModel {
64
+ get type(): string;
65
+ /**
66
+ * Connector anchors are restricted to the centre, as they are for a C4 node
67
+ * and for a BPMN flow object: a UML relationship attaches to the node centre
68
+ * and clips at the perimeter, so an association between two classifiers
69
+ * points at the classifiers rather than at whichever of their twelve anchors
70
+ * the hand was nearest.
71
+ *
72
+ * ONE kind says otherwise, and the notation is why. A message in a sequence
73
+ * diagram attaches at a HEIGHT on its lifeline's spine — that height is WHEN
74
+ * it happens, and it is the whole of what a sequence diagram says (§17.4.4).
75
+ * Snapping every message to a 600-unit column's centre would stack the entire
76
+ * conversation on one horizontal line. So a `lifeline` keeps its native
77
+ * perimeter anchors, which lie on the column's left and right edges, 8 units
78
+ * either side of the spine: exactly where every UML tool draws them.
79
+ */
80
+ get centerAnchorOnly(): boolean;
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(): Bound;
100
+ /**
101
+ * A UML node is SOLID whatever its `filled` flag says.
102
+ *
103
+ * `rect.includesPoint` (and `ellipse`'s) skips the interior test for an
104
+ * unfilled shape and falls back to the stroke plus the tight bounding box of
105
+ * the text run — the behaviour that makes a hollow group let clicks through
106
+ * to the work it encloses. Several UML kinds are created unfilled and
107
+ * unstroked on purpose: a `package` is a tabbed folder, a `note` a rectangle
108
+ * with a folded corner, an `actor` a stick figure, none of which a native
109
+ * rect can be, so the GLYPH paints the body and the native shape paints
110
+ * nothing at all.
111
+ *
112
+ * The consequence, the one the PO reported against C4 on 27/08/2026, is that
113
+ * such nodes cannot be double-clicked into their own text editor: the body a
114
+ * user can plainly see is not a hit target, and only the border and the
115
+ * handful of characters of the label are. Pointer events reach an element
116
+ * view through this method (`GfxViewEventHandler`), so selecting, hovering,
117
+ * dragging and `dblclick` are all affected — the last one visibly.
118
+ *
119
+ * Forcing `ignoreTransparent: false` says the one thing that is true of every
120
+ * UML artefact: it is a BOX, and its whole area belongs to it. Nothing here
121
+ * is stored — the override changes hit testing, never the document — so it
122
+ * applies to nodes drawn before it existed as well as after.
123
+ */
124
+ includesPoint(x: number, y: number, options: PointTestOptions): boolean;
125
+ /**
126
+ * The one field a UML node carries, and the whole of its schema.
127
+ *
128
+ * The labels a classifier shows — its name, its attribute compartment, its
129
+ * operation compartment — are deliberately NOT fields here. They are canvas
130
+ * TEXT elements, grouped with the shape, and they are edited in place exactly
131
+ * like any other words on the canvas (R16, and the PO recette of 28/08/2026
132
+ * that settled it for C4's type line and description). A field would have
133
+ * been a second place to write the same sentence, reachable only through a
134
+ * form, and the form is the mechanism the recette rejected: an architect
135
+ * writes on the picture.
136
+ *
137
+ * What that buys the document format is that this model stays exactly what it
138
+ * is — `kind`, on a native shape — however many compartments the component
139
+ * grows.
140
+ */
141
+ accessor kind: UmlNodeKind;
142
+ }