@miragon/event-storming-renderer 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (125) hide show
  1. package/README.md +55 -0
  2. package/dist/EventStormingBaseViewer.d.ts +56 -0
  3. package/dist/EventStormingBaseViewer.d.ts.map +1 -0
  4. package/dist/Modeler.d.ts +15 -0
  5. package/dist/Modeler.d.ts.map +1 -0
  6. package/dist/NavigatedViewer.d.ts +10 -0
  7. package/dist/NavigatedViewer.d.ts.map +1 -0
  8. package/dist/Viewer.d.ts +6 -0
  9. package/dist/Viewer.d.ts.map +1 -0
  10. package/dist/append/EventStormingAppendBehavior.d.ts +17 -0
  11. package/dist/append/EventStormingAppendBehavior.d.ts.map +1 -0
  12. package/dist/append/index.d.ts +9 -0
  13. package/dist/append/index.d.ts.map +1 -0
  14. package/dist/attach/EventStormingAttachBehavior.d.ts +17 -0
  15. package/dist/attach/EventStormingAttachBehavior.d.ts.map +1 -0
  16. package/dist/attach/index.d.ts +9 -0
  17. package/dist/attach/index.d.ts.map +1 -0
  18. package/dist/board-bounds/BoardBounds.d.ts +23 -0
  19. package/dist/board-bounds/BoardBounds.d.ts.map +1 -0
  20. package/dist/board-bounds/index.d.ts +6 -0
  21. package/dist/board-bounds/index.d.ts.map +1 -0
  22. package/dist/color-picker/EventStormingColorPicker.d.ts +23 -0
  23. package/dist/color-picker/EventStormingColorPicker.d.ts.map +1 -0
  24. package/dist/color-picker/index.d.ts +5 -0
  25. package/dist/color-picker/index.d.ts.map +1 -0
  26. package/dist/context-pad/EventStormingContextPadProvider.d.ts +26 -0
  27. package/dist/context-pad/EventStormingContextPadProvider.d.ts.map +1 -0
  28. package/dist/context-pad/index.d.ts +5 -0
  29. package/dist/context-pad/index.d.ts.map +1 -0
  30. package/dist/draw/EventStormingRenderer.d.ts +27 -0
  31. package/dist/draw/EventStormingRenderer.d.ts.map +1 -0
  32. package/dist/draw/icons.d.ts +43 -0
  33. package/dist/draw/icons.d.ts.map +1 -0
  34. package/dist/draw/index.d.ts +6 -0
  35. package/dist/draw/index.d.ts.map +1 -0
  36. package/dist/draw/note-markdown.d.ts +26 -0
  37. package/dist/draw/note-markdown.d.ts.map +1 -0
  38. package/dist/draw/palette-icons.d.ts +4 -0
  39. package/dist/draw/palette-icons.d.ts.map +1 -0
  40. package/dist/draw/styles.d.ts +98 -0
  41. package/dist/draw/styles.d.ts.map +1 -0
  42. package/dist/draw-tool/EventStormingDrawTool.d.ts +48 -0
  43. package/dist/draw-tool/EventStormingDrawTool.d.ts.map +1 -0
  44. package/dist/draw-tool/EventStormingDrawingHandles.d.ts +29 -0
  45. package/dist/draw-tool/EventStormingDrawingHandles.d.ts.map +1 -0
  46. package/dist/draw-tool/EventStormingDrawingHitProvider.d.ts +13 -0
  47. package/dist/draw-tool/EventStormingDrawingHitProvider.d.ts.map +1 -0
  48. package/dist/draw-tool/index.d.ts +6 -0
  49. package/dist/draw-tool/index.d.ts.map +1 -0
  50. package/dist/event-storming.css +2 -0
  51. package/dist/index.d.ts +31 -0
  52. package/dist/index.d.ts.map +1 -0
  53. package/dist/index.js +2484 -0
  54. package/dist/index.js.map +1 -0
  55. package/dist/io/EventStormingExporter.d.ts +18 -0
  56. package/dist/io/EventStormingExporter.d.ts.map +1 -0
  57. package/dist/io/EventStormingImporter.d.ts +26 -0
  58. package/dist/io/EventStormingImporter.d.ts.map +1 -0
  59. package/dist/io/index.d.ts +8 -0
  60. package/dist/io/index.d.ts.map +1 -0
  61. package/dist/io/saveSvg.d.ts +17 -0
  62. package/dist/io/saveSvg.d.ts.map +1 -0
  63. package/dist/io/types.d.ts +12 -0
  64. package/dist/io/types.d.ts.map +1 -0
  65. package/dist/keyboard/EventStormingKeyboard.d.ts +20 -0
  66. package/dist/keyboard/EventStormingKeyboard.d.ts.map +1 -0
  67. package/dist/keyboard/index.d.ts +5 -0
  68. package/dist/keyboard/index.d.ts.map +1 -0
  69. package/dist/label-editing/EventStormingLabelEditing.d.ts +43 -0
  70. package/dist/label-editing/EventStormingLabelEditing.d.ts.map +1 -0
  71. package/dist/label-editing/index.d.ts +7 -0
  72. package/dist/label-editing/index.d.ts.map +1 -0
  73. package/dist/label-editing/note-editor-dom.d.ts +57 -0
  74. package/dist/label-editing/note-editor-dom.d.ts.map +1 -0
  75. package/dist/lasso/EventStormingLassoBehavior.d.ts +12 -0
  76. package/dist/lasso/EventStormingLassoBehavior.d.ts.map +1 -0
  77. package/dist/lasso/index.d.ts +5 -0
  78. package/dist/lasso/index.d.ts.map +1 -0
  79. package/dist/model/EventStormingElementFactory.d.ts +51 -0
  80. package/dist/model/EventStormingElementFactory.d.ts.map +1 -0
  81. package/dist/model/di-types.d.ts +62 -0
  82. package/dist/model/di-types.d.ts.map +1 -0
  83. package/dist/model/index.d.ts +6 -0
  84. package/dist/model/index.d.ts.map +1 -0
  85. package/dist/modeling/EventStormingCopyPaste.d.ts +43 -0
  86. package/dist/modeling/EventStormingCopyPaste.d.ts.map +1 -0
  87. package/dist/modeling/EventStormingModeling.d.ts +44 -0
  88. package/dist/modeling/EventStormingModeling.d.ts.map +1 -0
  89. package/dist/modeling/cmd/UpdatePropertiesHandler.d.ts +18 -0
  90. package/dist/modeling/cmd/UpdatePropertiesHandler.d.ts.map +1 -0
  91. package/dist/modeling/index.d.ts +6 -0
  92. package/dist/modeling/index.d.ts.map +1 -0
  93. package/dist/ordering/EventStormingOrderingProvider.d.ts +17 -0
  94. package/dist/ordering/EventStormingOrderingProvider.d.ts.map +1 -0
  95. package/dist/ordering/index.d.ts +5 -0
  96. package/dist/ordering/index.d.ts.map +1 -0
  97. package/dist/palette/EventStormingPaletteProvider.d.ts +19 -0
  98. package/dist/palette/EventStormingPaletteProvider.d.ts.map +1 -0
  99. package/dist/palette/index.d.ts +5 -0
  100. package/dist/palette/index.d.ts.map +1 -0
  101. package/dist/popup/EventStormingElementSettingsProvider.d.ts +17 -0
  102. package/dist/popup/EventStormingElementSettingsProvider.d.ts.map +1 -0
  103. package/dist/popup/index.d.ts +5 -0
  104. package/dist/popup/index.d.ts.map +1 -0
  105. package/dist/resize/EventStormingResizeBehavior.d.ts +12 -0
  106. package/dist/resize/EventStormingResizeBehavior.d.ts.map +1 -0
  107. package/dist/resize/index.d.ts +9 -0
  108. package/dist/resize/index.d.ts.map +1 -0
  109. package/dist/rules/EventStormingRules.d.ts +13 -0
  110. package/dist/rules/EventStormingRules.d.ts.map +1 -0
  111. package/dist/rules/index.d.ts +5 -0
  112. package/dist/rules/index.d.ts.map +1 -0
  113. package/dist/snapping/ElementSnapping.d.ts +15 -0
  114. package/dist/snapping/ElementSnapping.d.ts.map +1 -0
  115. package/dist/snapping/index.d.ts +5 -0
  116. package/dist/snapping/index.d.ts.map +1 -0
  117. package/dist/theme/index.d.ts +2 -0
  118. package/dist/theme/index.d.ts.map +1 -0
  119. package/dist/theme/palette.d.ts +56 -0
  120. package/dist/theme/palette.d.ts.map +1 -0
  121. package/dist/view-options/EventStormingViewOptions.d.ts +20 -0
  122. package/dist/view-options/EventStormingViewOptions.d.ts.map +1 -0
  123. package/dist/view-options/index.d.ts +9 -0
  124. package/dist/view-options/index.d.ts.map +1 -0
  125. package/package.json +53 -0
@@ -0,0 +1,18 @@
1
+ import { default as Canvas } from 'diagram-js/lib/core/Canvas';
2
+ import { default as ElementRegistry } from 'diagram-js/lib/core/ElementRegistry';
3
+ import { EventStormingBoard } from '@miragon/event-storming-schema-model';
4
+ /**
5
+ * Reconstructs an EventStormingBoard from the diagram-js runtime model. The DI properties are
6
+ * the single source of truth — position is the shape CENTER back-calculated from the pixel
7
+ * geometry; the `businessObject` only serves as identity backref and is not consulted for data.
8
+ */
9
+ export default class EventStormingExporter {
10
+ private readonly elementRegistry;
11
+ private readonly canvas;
12
+ static $inject: string[];
13
+ constructor(elementRegistry: ElementRegistry, canvas: Canvas);
14
+ export(): EventStormingBoard;
15
+ /** Builds a BoardElement from the DI properties; position = shape center. */
16
+ private buildElement;
17
+ }
18
+ //# sourceMappingURL=EventStormingExporter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EventStormingExporter.d.ts","sourceRoot":"","sources":["../../src/io/EventStormingExporter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,4BAA4B,CAAC;AACrD,OAAO,KAAK,eAAe,MAAM,qCAAqC,CAAC;AAEvE,OAAO,EAML,KAAK,kBAAkB,EAExB,MAAM,sCAAsC,CAAC;AAS9C;;;;GAIG;AACH,MAAM,CAAC,OAAO,OAAO,qBAAqB;IAItC,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM;IAJzB,MAAM,CAAC,OAAO,WAAiC;gBAG5B,eAAe,EAAE,eAAe,EAChC,MAAM,EAAE,MAAM;IAGjC,MAAM,IAAI,kBAAkB;IAmC5B,6EAA6E;IAC7E,OAAO,CAAC,YAAY;CAoCrB"}
@@ -0,0 +1,26 @@
1
+ import { default as Canvas } from 'diagram-js/lib/core/Canvas';
2
+ import { default as ElementFactory } from 'diagram-js/lib/core/ElementFactory';
3
+ import { default as ElementRegistry } from 'diagram-js/lib/core/ElementRegistry';
4
+ import { default as EventBus } from 'diagram-js/lib/core/EventBus';
5
+ import { EventStormingBoard } from '@miragon/event-storming-schema-model';
6
+ import { default as BoardBounds } from '../board-bounds/BoardBounds.js';
7
+ import { default as EventStormingElementFactory } from '../model/EventStormingElementFactory.js';
8
+ import { ImportWarning } from './types.js';
9
+ /**
10
+ * Bridges the EventStormingBoard model into the diagram-js canvas. Deliberately bypasses the
11
+ * commandStack (import path): no undo, no dirty.
12
+ */
13
+ export default class EventStormingImporter {
14
+ private readonly canvas;
15
+ private readonly elementFactory;
16
+ private readonly factory;
17
+ private readonly boardBounds;
18
+ private readonly eventBus;
19
+ private readonly elementRegistry;
20
+ static $inject: string[];
21
+ constructor(canvas: Canvas, elementFactory: ElementFactory, factory: EventStormingElementFactory, boardBounds: BoardBounds, eventBus: EventBus, elementRegistry: ElementRegistry);
22
+ import(board: EventStormingBoard): ImportWarning[];
23
+ private createShape;
24
+ clear(): void;
25
+ }
26
+ //# sourceMappingURL=EventStormingImporter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EventStormingImporter.d.ts","sourceRoot":"","sources":["../../src/io/EventStormingImporter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,4BAA4B,CAAC;AACrD,OAAO,KAAK,cAAc,MAAM,oCAAoC,CAAC;AACrE,OAAO,KAAK,eAAe,MAAM,qCAAqC,CAAC;AACvE,OAAO,KAAK,QAAQ,MAAM,8BAA8B,CAAC;AAEzD,OAAO,KAAK,EAAgB,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAC7F,OAAO,KAAK,WAAW,MAAM,gCAAgC,CAAC;AAC9D,OAAO,KAAK,2BAA2B,MAAM,yCAAyC,CAAC;AAEvF,OAAO,EAAW,KAAK,aAAa,EAA2B,MAAM,YAAY,CAAC;AAalF;;;GAGG;AACH,MAAM,CAAC,OAAO,OAAO,qBAAqB;IAWtC,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,eAAe;IAflC,MAAM,CAAC,OAAO,WAOZ;gBAGiB,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,cAAc,EAC9B,OAAO,EAAE,2BAA2B,EACpC,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,QAAQ,EAClB,eAAe,EAAE,eAAe;IAGnD,MAAM,CAAC,KAAK,EAAE,kBAAkB,GAAG,aAAa,EAAE;IAmFlD,OAAO,CAAC,WAAW;IAWnB,KAAK,IAAI,IAAI;CAYd"}
@@ -0,0 +1,8 @@
1
+ import { ModuleDeclaration } from 'didi';
2
+ export declare const ioModule: ModuleDeclaration;
3
+ export { default as EventStormingImporter } from './EventStormingImporter.js';
4
+ export { default as EventStormingExporter } from './EventStormingExporter.js';
5
+ export { saveSVG } from './saveSvg.js';
6
+ export { ROOT_ID } from './types.js';
7
+ export type { ImportWarning, RootBusinessObject } from './types.js';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/io/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAC;AAI9C,eAAO,MAAM,QAAQ,EAAE,iBAGtB,CAAC;AAEF,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAC9E,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAC9E,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,YAAY,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { default as Canvas } from 'diagram-js/lib/core/Canvas';
2
+ export interface SvgBounds {
3
+ x: number;
4
+ y: number;
5
+ width: number;
6
+ height: number;
7
+ }
8
+ /**
9
+ * Serializes the current canvas into standalone SVG (snapshot/export).
10
+ * `bounds` is the framing box (typically `BoardBounds.contentBounds()`), so the whole board is
11
+ * exported wherever its stickies sit on the free canvas; if omitted, the empty-board default
12
+ * framing is used. Independent of the current zoom/scroll.
13
+ */
14
+ export declare function saveSVG(canvas: Canvas, bounds?: SvgBounds): {
15
+ svg: string;
16
+ };
17
+ //# sourceMappingURL=saveSvg.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"saveSvg.d.ts","sourceRoot":"","sources":["../../src/io/saveSvg.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,4BAA4B,CAAC;AAGrD,MAAM,WAAW,SAAS;IACxB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,SAAS,GAAG;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,CAoB3E"}
@@ -0,0 +1,12 @@
1
+ import { BoardConfig } from '@miragon/event-storming-schema-model';
2
+ export { ROOT_ID } from '../model/di-types.js';
3
+ export interface ImportWarning {
4
+ readonly message: string;
5
+ readonly elementId?: string;
6
+ }
7
+ /** Board metadata stored on the root element (config + lossless passthrough). */
8
+ export interface RootBusinessObject {
9
+ readonly config: BoardConfig;
10
+ readonly rawPassthrough?: readonly string[];
11
+ }
12
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/io/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AAExE,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAE/C,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,iFAAiF;AACjF,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC7C"}
@@ -0,0 +1,20 @@
1
+ import { default as Canvas } from 'diagram-js/lib/core/Canvas';
2
+ import { default as CommandStack } from 'diagram-js/lib/command/CommandStack';
3
+ import { default as EventBus } from 'diagram-js/lib/core/EventBus';
4
+ import { default as Create } from 'diagram-js/lib/features/create/Create';
5
+ import { default as LassoTool } from 'diagram-js/lib/features/lasso-tool/LassoTool';
6
+ import { default as Mouse } from 'diagram-js/lib/features/mouse/Mouse';
7
+ import { default as Selection } from 'diagram-js/lib/features/selection/Selection';
8
+ import { default as Modeling } from 'diagram-js/lib/features/modeling/Modeling';
9
+ import { default as EventStormingCopyPaste } from '../modeling/EventStormingCopyPaste.js';
10
+ import { default as EventStormingElementFactory } from '../model/EventStormingElementFactory.js';
11
+ /**
12
+ * Minimal keyboard binding on the canvas container: undo/redo, delete, copy/paste/duplicate,
13
+ * arrow-key nudge of the selection, plus the single-key tools E (domain event), C (command) and
14
+ * L (lasso). Deliberately a DOM listener (no diagram-js keyboard-service binding needed).
15
+ */
16
+ export default class EventStormingKeyboard {
17
+ static $inject: string[];
18
+ constructor(canvas: Canvas, commandStack: CommandStack, selection: Selection, modeling: Modeling, copyPaste: EventStormingCopyPaste, factory: EventStormingElementFactory, create: Create, mouse: Mouse, lassoTool: LassoTool, eventBus: EventBus);
19
+ }
20
+ //# sourceMappingURL=EventStormingKeyboard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EventStormingKeyboard.d.ts","sourceRoot":"","sources":["../../src/keyboard/EventStormingKeyboard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,4BAA4B,CAAC;AACrD,OAAO,KAAK,YAAY,MAAM,qCAAqC,CAAC;AACpE,OAAO,KAAK,QAAQ,MAAM,8BAA8B,CAAC;AACzD,OAAO,KAAK,MAAM,MAAM,uCAAuC,CAAC;AAChE,OAAO,KAAK,SAAS,MAAM,8CAA8C,CAAC;AAC1E,OAAO,KAAK,KAAK,MAAM,qCAAqC,CAAC;AAC7D,OAAO,KAAK,SAAS,MAAM,6CAA6C,CAAC;AACzE,OAAO,KAAK,QAAQ,MAAM,2CAA2C,CAAC;AAEtE,OAAO,KAAK,sBAAsB,MAAM,uCAAuC,CAAC;AAChF,OAAO,KAAK,2BAA2B,MAAM,yCAAyC,CAAC;AAcvF;;;;GAIG;AACH,MAAM,CAAC,OAAO,OAAO,qBAAqB;IACxC,MAAM,CAAC,OAAO,WAWZ;gBAGA,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,sBAAsB,EACjC,OAAO,EAAE,2BAA2B,EACpC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,QAAQ;CAiErB"}
@@ -0,0 +1,5 @@
1
+ import { ModuleDeclaration } from 'didi';
2
+ /** Undo/redo/delete via keyboard on the canvas container. */
3
+ export declare const eventStormingKeyboardModule: ModuleDeclaration;
4
+ export { default as EventStormingKeyboard } from './EventStormingKeyboard.js';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/keyboard/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAC;AAG9C,6DAA6D;AAC7D,eAAO,MAAM,2BAA2B,EAAE,iBAGzC,CAAC;AAEF,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,4BAA4B,CAAC"}
@@ -0,0 +1,43 @@
1
+ import { default as Canvas } from 'diagram-js/lib/core/Canvas';
2
+ import { default as EventBus } from 'diagram-js/lib/core/EventBus';
3
+ import { EventStormingConnection, EventStormingShape } from '../model/di-types.js';
4
+ import { default as EventStormingModeling } from '../modeling/EventStormingModeling.js';
5
+ /**
6
+ * Defuses DSL metacharacters in labels: in the `.storm` DSL, names double as references —
7
+ * `->`, `;`, square brackets and comment starters would corrupt arrow/coordinate lines on
8
+ * re-import. The comment defusing mirrors the DSL serializer's `escapeText` exactly (division
9
+ * slash U+2215, `://` URLs exempt), so what the user sees on canvas is byte-identical to what a
10
+ * save/reload produces. Newlines stay: the DSL escapes them (`\n`) for stickies and notes alike.
11
+ */
12
+ export declare function sanitizeLabel(raw: string): string;
13
+ /**
14
+ * Custom inline label editing as an HTML overlay (deliberately not diagram-js direct-editing).
15
+ * Commit goes through `eventStormingModeling` -> commandStack (undo). Sticky text is
16
+ * multi-line, so stickies are edited in a `<textarea>` (Enter = line break, Cmd/Ctrl+Enter or
17
+ * click outside = save); connection labels use a single-line `<input>` (Enter = save). NOTES
18
+ * get the WYSIWYG contenteditable overlay instead (see `activateNote`) — same commit/cancel
19
+ * semantics, plus live bold/italic/bullet formatting and the floating alignment toolbar.
20
+ */
21
+ export default class EventStormingLabelEditing {
22
+ private readonly canvas;
23
+ private readonly modeling;
24
+ static $inject: string[];
25
+ private active;
26
+ constructor(eventBus: EventBus, canvas: Canvas, modeling: EventStormingModeling);
27
+ activate(element: EventStormingShape): void;
28
+ /**
29
+ * WYSIWYG editing for notes: a contenteditable overlay rendering the markdown subset live
30
+ * (bold/italic/bullets) plus the floating format/alignment toolbar. Commit/cancel semantics
31
+ * are identical to the textarea path (click outside / Cmd-Ctrl+Enter save, Escape discards,
32
+ * plain Enter breaks the line); the committed value is the canonical markdown string run
33
+ * through the same `sanitizeLabel`, and label + alignment land in ONE updateProperties.
34
+ */
35
+ private activateNote;
36
+ /**
37
+ * Inline editing for connections: the arrow's `; annotation` text. An empty input clears the
38
+ * field. Undo-safe via updateProperties.
39
+ */
40
+ activateConnection(conn: EventStormingConnection): void;
41
+ cancel(): void;
42
+ }
43
+ //# sourceMappingURL=EventStormingLabelEditing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EventStormingLabelEditing.d.ts","sourceRoot":"","sources":["../../src/label-editing/EventStormingLabelEditing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,4BAA4B,CAAC;AACrD,OAAO,KAAK,QAAQ,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAGL,KAAK,uBAAuB,EAC5B,KAAK,kBAAkB,EACxB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,qBAAqB,MAAM,sCAAsC,CAAC;AA4B9E;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CASjD;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,OAAO,OAAO,yBAAyB;IAO1C,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAP3B,MAAM,CAAC,OAAO,WAAmD;IAEjE,OAAO,CAAC,MAAM,CAA2B;gBAGvC,QAAQ,EAAE,QAAQ,EACD,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,qBAAqB;IAYlD,QAAQ,CAAC,OAAO,EAAE,kBAAkB,GAAG,IAAI;IAuE3C;;;;;;OAMG;IACH,OAAO,CAAC,YAAY;IA2IpB;;;OAGG;IACH,kBAAkB,CAAC,IAAI,EAAE,uBAAuB,GAAG,IAAI;IAyDvD,MAAM,IAAI,IAAI;CAGf"}
@@ -0,0 +1,7 @@
1
+ import { ModuleDeclaration } from 'didi';
2
+ /** Custom inline label editing (HTML overlay). */
3
+ export declare const labelEditingModule: ModuleDeclaration;
4
+ export { default as EventStormingLabelEditing } from './EventStormingLabelEditing.js';
5
+ export { noteMarkdownToDom, domToNoteMarkdown, createNoteToolbar, updateAlignButton, applyAlignPreview, toggleBulletLines, insertPlainText, NOTE_BULLET_CLASS, } from './note-editor-dom.js';
6
+ export type { NoteToolbarAction, NoteAlignState } from './note-editor-dom.js';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/label-editing/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAC;AAG9C,kDAAkD;AAClD,eAAO,MAAM,kBAAkB,EAAE,iBAGhC,CAAC;AAEF,OAAO,EAAE,OAAO,IAAI,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AACtF,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,iBAAiB,GAClB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,57 @@
1
+ import { NoteAlignHorizontal, NoteAlignVertical } from '@miragon/event-storming-schema-model';
2
+ /**
3
+ * DOM half of the WYSIWYG note editor: the model stores a note label as ONE markdown-subset
4
+ * string (see draw/note-markdown.ts), the contenteditable overlay speaks live DOM. This module
5
+ * translates between the two — markdown→DOM on open, DOM→markdown on commit — and hosts the
6
+ * selection/bullet/toolbar helpers that only exist because of contenteditable quirks.
7
+ */
8
+ /** Class on line `<div>`s carrying the `- ` bullet marker (the '•' itself renders via CSS). */
9
+ export declare const NOTE_BULLET_CLASS = "bullet";
10
+ export type NoteToolbarAction = 'note-bold' | 'note-italic' | 'note-bullet' | 'note-align-horizontal' | 'note-align-vertical';
11
+ export interface NoteAlignState {
12
+ horizontal: NoteAlignHorizontal;
13
+ vertical: NoteAlignVertical;
14
+ }
15
+ export declare const HORIZONTAL_CYCLE: readonly NoteAlignHorizontal[];
16
+ export declare const VERTICAL_CYCLE: readonly NoteAlignVertical[];
17
+ export declare function nextInCycle<T>(cycle: readonly T[], value: T): T;
18
+ /** One `<div>` per markdown line: `<b>`/`<i>` for the runs, `.bullet` rows for `- ` lines. */
19
+ export declare function noteMarkdownToDom(root: HTMLElement, label: string): void;
20
+ /**
21
+ * Reads the contenteditable back into the CANONICAL markdown string (via the pinned
22
+ * note-markdown serializer — never hand-emitted markers). Lenient on input: it understands the
23
+ * DOM this module writes AND the browser-flavored structures `execCommand`/typing produce
24
+ * (strong/em, styled spans, bare first-line text, `<br>` breaks, raw '\n' from plain-text
25
+ * paste), so a commit never loses text.
26
+ */
27
+ export declare function domToNoteMarkdown(root: HTMLElement): string;
28
+ /** Mirrors `field.select()` of the textarea path: the editor opens with everything selected. */
29
+ export declare function selectAllContent(el: HTMLElement): void;
30
+ /**
31
+ * Replaces the current selection with PLAIN text — the paste path: foreign HTML must never
32
+ * enter the DOM the commit reads back. `insertText` (where implemented) keeps the browser's
33
+ * native undo stack; the manual Range fallback covers jsdom.
34
+ */
35
+ export declare function insertPlainText(root: HTMLElement, text: string): void;
36
+ /** Line `<div>`s the current selection touches (empty when the selection is elsewhere). */
37
+ export declare function selectedLineDivs(root: HTMLElement): HTMLElement[];
38
+ /**
39
+ * Toggles the bullet marker on every line the selection touches — mixed selections become
40
+ * all-bullet first, a second click removes them (Miro semantics). Root-level inline content
41
+ * (browsers leave the first line bare) is wrapped into line divs first so there is always an
42
+ * element to mark.
43
+ */
44
+ export declare function toggleBulletLines(root: HTMLElement): void;
45
+ /** Wraps stray root-level inline nodes into line `<div>`s (selection survives the move). */
46
+ export declare function ensureLineDivs(root: HTMLElement): void;
47
+ /**
48
+ * The floating formatting toolbar above the note editor. Buttons are addressed via
49
+ * `data-action`; the two align CYCLE buttons start empty — `updateAlignButton` stamps the icon
50
+ * of the CURRENT value (and re-stamps it after every cycle click).
51
+ */
52
+ export declare function createNoteToolbar(doc: Document, onAction: (action: NoteToolbarAction) => void): HTMLElement;
53
+ /** Stamps a cycle button with the icon/tooltip of the CURRENT alignment value. */
54
+ export declare function updateAlignButton(button: HTMLElement, axis: 'horizontal' | 'vertical', value: NoteAlignHorizontal | NoteAlignVertical): void;
55
+ /** Live preview of the note alignment on the contenteditable (flex column mirrors the canvas). */
56
+ export declare function applyAlignPreview(editor: HTMLElement, align: NoteAlignState): void;
57
+ //# sourceMappingURL=note-editor-dom.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"note-editor-dom.d.ts","sourceRoot":"","sources":["../../src/label-editing/note-editor-dom.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AAInG;;;;;GAKG;AAEH,+FAA+F;AAC/F,eAAO,MAAM,iBAAiB,WAAW,CAAC;AAE1C,MAAM,MAAM,iBAAiB,GAC3B,WAAW,GAAG,aAAa,GAAG,aAAa,GAAG,uBAAuB,GAAG,qBAAqB,CAAC;AAEhG,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,mBAAmB,CAAC;IAChC,QAAQ,EAAE,iBAAiB,CAAC;CAC7B;AAED,eAAO,MAAM,gBAAgB,EAAE,SAAS,mBAAmB,EAAgC,CAAC;AAC5F,eAAO,MAAM,cAAc,EAAE,SAAS,iBAAiB,EAAgC,CAAC;AAExF,wBAAgB,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAE/D;AAED,8FAA8F;AAC9F,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAiBxE;AAaD;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,CA4C3D;AA2BD,gGAAgG;AAChG,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI,CAQtD;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAcrE;AAED,2FAA2F;AAC3F,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,WAAW,GAAG,WAAW,EAAE,CAMjE;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,CAMzD;AAED,4FAA4F;AAC5F,wBAAgB,cAAc,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,CActD;AAmBD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,QAAQ,EACb,QAAQ,EAAE,CAAC,MAAM,EAAE,iBAAiB,KAAK,IAAI,GAC5C,WAAW,CAwBb;AAED,kFAAkF;AAClF,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,WAAW,EACnB,IAAI,EAAE,YAAY,GAAG,UAAU,EAC/B,KAAK,EAAE,mBAAmB,GAAG,iBAAiB,GAC7C,IAAI,CAMN;AAED,kGAAkG;AAClG,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,cAAc,GAAG,IAAI,CAIlF"}
@@ -0,0 +1,12 @@
1
+ import { default as EventBus } from 'diagram-js/lib/core/EventBus';
2
+ import { default as Canvas } from 'diagram-js/lib/core/Canvas';
3
+ import { default as LassoTool } from 'diagram-js/lib/features/lasso-tool/LassoTool';
4
+ /**
5
+ * Activates the diagram-js lasso via Shift+drag on the empty canvas.
6
+ * Plain drag stays canvas pan (MoveCanvas); Shift+click on elements stays multi-select.
7
+ */
8
+ export default class EventStormingLassoBehavior {
9
+ static $inject: string[];
10
+ constructor(eventBus: EventBus, canvas: Canvas, lassoTool: LassoTool);
11
+ }
12
+ //# sourceMappingURL=EventStormingLassoBehavior.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EventStormingLassoBehavior.d.ts","sourceRoot":"","sources":["../../src/lasso/EventStormingLassoBehavior.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,8BAA8B,CAAC;AACzD,OAAO,KAAK,MAAM,MAAM,4BAA4B,CAAC;AACrD,OAAO,KAAK,SAAS,MAAM,8CAA8C,CAAC;AAO1E;;;GAGG;AACH,MAAM,CAAC,OAAO,OAAO,0BAA0B;IAC7C,MAAM,CAAC,OAAO,WAAuC;gBAEzC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS;CAgBrE"}
@@ -0,0 +1,5 @@
1
+ import { ModuleDeclaration } from 'didi';
2
+ /** Lasso multi-select: diagram-js lasso-tool plus Shift+drag activation on an empty canvas. */
3
+ export declare const eventStormingLassoModule: ModuleDeclaration;
4
+ export { default as EventStormingLassoBehavior } from './EventStormingLassoBehavior.js';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lasso/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAC;AAI9C,+FAA+F;AAC/F,eAAO,MAAM,wBAAwB,EAAE,iBAItC,CAAC;AAEF,OAAO,EAAE,OAAO,IAAI,0BAA0B,EAAE,MAAM,iCAAiC,CAAC"}
@@ -0,0 +1,51 @@
1
+ import { default as ElementFactory } from 'diagram-js/lib/core/ElementFactory';
2
+ import { default as ElementRegistry } from 'diagram-js/lib/core/ElementRegistry';
3
+ import { BoardEdge, BoardElement, DrawingElement, NoteElement } from '@miragon/event-storming-schema-model';
4
+ import { EventStormingConnection, EventStormingShape, EventStormingShapeType } from './di-types.js';
5
+ /**
6
+ * Creates diagram-js runtime elements with Event Storming markers. Schema positions are element
7
+ * CENTERS in board pixels — converted to diagram-js top-left via the per-kind width/height.
8
+ */
9
+ export default class EventStormingElementFactory {
10
+ private readonly elementFactory;
11
+ private readonly elementRegistry;
12
+ static $inject: string[];
13
+ constructor(elementFactory: ElementFactory, elementRegistry: ElementRegistry);
14
+ /**
15
+ * Returns a unique label: `base`, otherwise `base 2`, `base 3`, … Duplicate labels are legal
16
+ * (the DSL disambiguates via ids) — the numbering is pure UX so consecutive palette creates
17
+ * read "Domain Event 2" instead of piling up identical defaults.
18
+ */
19
+ uniqueLabel(base: string): string;
20
+ /**
21
+ * DSL-style id `<kind-prefix>_<n>` for interactively created elements, collision-checked
22
+ * against the elementRegistry. `reserved` covers ids handed out for the same batch before
23
+ * anything is placed (e.g. a multi-shape paste — the clones are not in the registry yet).
24
+ */
25
+ allocateId(type: EventStormingShapeType, reserved?: ReadonlySet<string>): string;
26
+ /** Builds a fixed-size sticky from a schema element (position = center). */
27
+ createSticky(el: BoardElement): EventStormingShape;
28
+ createNote(el: NoteElement): EventStormingShape;
29
+ createDrawing(el: DrawingElement): EventStormingShape;
30
+ /** Builds a drawing shape from ABSOLUTE canvas points (bbox shape + relative points). */
31
+ drawingFromCanvasPoints(canvasPoints: ReadonlyArray<{
32
+ x: number;
33
+ y: number;
34
+ }>, extra?: {
35
+ id?: string;
36
+ closed?: boolean;
37
+ strokeStyle?: DrawingElement['strokeStyle'];
38
+ color?: string;
39
+ businessObject?: DrawingElement;
40
+ }): EventStormingShape;
41
+ /** Palette/keyboard create: sized per kind, position comes from the drop point. */
42
+ createNew(type: EventStormingShapeType, rawLabel: string): EventStormingShape;
43
+ /**
44
+ * Blank append create: the kind is chosen AFTER placing (change-type popup). The placeholder
45
+ * kind 'event' keeps the model valid; the empty label plus the renderer-only `provisional`
46
+ * DI prop make the sticky render blank until the choice lands (which clears the prop).
47
+ */
48
+ createProvisional(): EventStormingShape;
49
+ createArrow(edge: BoardEdge, source: EventStormingShape, target: EventStormingShape): EventStormingConnection;
50
+ }
51
+ //# sourceMappingURL=EventStormingElementFactory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EventStormingElementFactory.d.ts","sourceRoot":"","sources":["../../src/model/EventStormingElementFactory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,cAAc,MAAM,oCAAoC,CAAC;AACrE,OAAO,KAAK,eAAe,MAAM,qCAAqC,CAAC;AACvE,OAAO,KAAK,EACV,SAAS,EACT,YAAY,EACZ,cAAc,EACd,WAAW,EACZ,MAAM,sCAAsC,CAAC;AAE9C,OAAO,EAEL,KAAK,uBAAuB,EAC5B,KAAK,kBAAkB,EACvB,KAAK,sBAAsB,EAC5B,MAAM,eAAe,CAAC;AAoBvB;;;GAGG;AACH,MAAM,CAAC,OAAO,OAAO,2BAA2B;IAI5C,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,eAAe;IAJlC,MAAM,CAAC,OAAO,WAAyC;gBAGpC,cAAc,EAAE,cAAc,EAC9B,eAAe,EAAE,eAAe;IAGnD;;;;OAIG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAYjC;;;;OAIG;IACH,UAAU,CAAC,IAAI,EAAE,sBAAsB,EAAE,QAAQ,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,MAAM;IAQhF,4EAA4E;IAC5E,YAAY,CAAC,EAAE,EAAE,YAAY,GAAG,kBAAkB;IAmBlD,UAAU,CAAC,EAAE,EAAE,WAAW,GAAG,kBAAkB;IAyB/C,aAAa,CAAC,EAAE,EAAE,cAAc,GAAG,kBAAkB;IAUrD,yFAAyF;IACzF,uBAAuB,CACrB,YAAY,EAAE,aAAa,CAAC;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,EACrD,KAAK,GAAE;QACL,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,WAAW,CAAC,EAAE,cAAc,CAAC,aAAa,CAAC,CAAC;QAC5C,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,cAAc,CAAC,EAAE,cAAc,CAAC;KAC5B,GACL,kBAAkB;IAwBrB,mFAAmF;IACnF,SAAS,CAAC,IAAI,EAAE,sBAAsB,EAAE,QAAQ,EAAE,MAAM,GAAG,kBAAkB;IAc7E;;;;OAIG;IACH,iBAAiB,IAAI,kBAAkB;IAavC,WAAW,CACT,IAAI,EAAE,SAAS,EACf,MAAM,EAAE,kBAAkB,EAC1B,MAAM,EAAE,kBAAkB,GACzB,uBAAuB;CAY3B"}
@@ -0,0 +1,62 @@
1
+ import { Shape, Connection } from 'diagram-js/lib/model/Types';
2
+ import { BoardEdge, BoardElement, DrawingStrokeStyle, NoteAlignHorizontal, NoteAlignVertical } from '@miragon/event-storming-schema-model';
3
+ /**
4
+ * diagram-js runtime model with Event Storming extensions.
5
+ *
6
+ * The positional truth while editing is the diagram-js pixel geometry (`x`/`y`/`width`/`height`)
7
+ * — there is no second coordinate system. `businessObject` is the identity/metadata backref to
8
+ * the original model element; every editable field lives as a flat DI property.
9
+ */
10
+ /** ID of the diagram-js root element of the Event Storming board. */
11
+ export declare const ROOT_ID = "event-storming-root";
12
+ export type EventStormingShapeType = 'event' | 'command' | 'actor' | 'aggregate' | 'policy' | 'readmodel' | 'external' | 'hotspot' | 'note' | 'drawing';
13
+ export type EventStormingConnectionType = 'arrow';
14
+ export interface EventStormingShape extends Shape {
15
+ eventStormingType: EventStormingShapeType;
16
+ /** Display text (separate from diagram-js `label`, which references a label element). */
17
+ eventStormingLabel: string;
18
+ /** drawing only: points in px RELATIVE to the shape's x/y (moving the shape moves them all). */
19
+ drawingPoints?: Array<{
20
+ x: number;
21
+ y: number;
22
+ }>;
23
+ /** drawing only: closed polygon vs. open polyline. */
24
+ closed?: boolean;
25
+ /** drawing only. */
26
+ strokeStyle?: DrawingStrokeStyle;
27
+ /** Optional color override (CSS color/hex from the swatch palette) — any element type. */
28
+ color?: string;
29
+ /** note only: horizontal text alignment, mirrored from `NoteElement.align` — absent = 'left'. */
30
+ alignHorizontal?: NoteAlignHorizontal;
31
+ /** note only: vertical text-block anchoring, mirrored from `NoteElement.align` — absent = 'top'. */
32
+ alignVertical?: NoteAlignVertical;
33
+ /**
34
+ * Blank append sticky awaiting its kind (chosen in the change-type popup after placing).
35
+ * Renderer-only: never exported, never copied, never persisted — cleared by the retype.
36
+ */
37
+ provisional?: boolean;
38
+ businessObject?: BoardElement;
39
+ }
40
+ export interface EventStormingConnection extends Connection {
41
+ eventStormingType: EventStormingConnectionType;
42
+ /** Arrow annotation text after `;` (e.g. "async"). */
43
+ linkLabel?: string;
44
+ businessObject?: BoardEdge;
45
+ }
46
+ /** Shapes and connections both carry `eventStormingType` — only connections have waypoints. */
47
+ export declare function isEventStormingShape(el: unknown): el is EventStormingShape;
48
+ export declare function isEventStormingConnection(el: unknown): el is EventStormingConnection;
49
+ /** The eight sticky kinds — connectable, retypeable, always fixed-size (not note/drawing). */
50
+ export declare const STICKY_KINDS: readonly ["event", "command", "actor", "aggregate", "policy", "readmodel", "external", "hotspot"];
51
+ export type StickyKind = (typeof STICKY_KINDS)[number];
52
+ export declare function isStickyKind(type: string): type is StickyKind;
53
+ export declare function isSticky(el: unknown): el is EventStormingShape;
54
+ /** Pinnable kinds (actor/hotspot/note): can be dropped onto a host sticky and then move with it. */
55
+ export declare function isAttachableKind(type: string): boolean;
56
+ /** Host kinds: can carry pinned attachers. Disjoint from the attachable kinds — no chains. */
57
+ export declare function isHostKind(type: string): boolean;
58
+ export declare function isAttachableSticky(el: unknown): el is EventStormingShape;
59
+ export declare function isHostSticky(el: unknown): el is EventStormingShape;
60
+ export declare function isDrawing(el: unknown): el is EventStormingShape;
61
+ export declare function isNote(el: unknown): el is EventStormingShape;
62
+ //# sourceMappingURL=di-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"di-types.d.ts","sourceRoot":"","sources":["../../src/model/di-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAGL,KAAK,SAAS,EACd,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EACvB,MAAM,sCAAsC,CAAC;AAE9C;;;;;;GAMG;AAEH,qEAAqE;AACrE,eAAO,MAAM,OAAO,wBAAwB,CAAC;AAE7C,MAAM,MAAM,sBAAsB,GAC9B,OAAO,GACP,SAAS,GACT,OAAO,GACP,WAAW,GACX,QAAQ,GACR,WAAW,GACX,UAAU,GACV,SAAS,GACT,MAAM,GACN,SAAS,CAAC;AAEd,MAAM,MAAM,2BAA2B,GAAG,OAAO,CAAC;AAElD,MAAM,WAAW,kBAAmB,SAAQ,KAAK;IAC/C,iBAAiB,EAAE,sBAAsB,CAAC;IAC1C,yFAAyF;IACzF,kBAAkB,EAAE,MAAM,CAAC;IAC3B,gGAAgG;IAChG,aAAa,CAAC,EAAE,KAAK,CAAC;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAChD,sDAAsD;IACtD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,oBAAoB;IACpB,WAAW,CAAC,EAAE,kBAAkB,CAAC;IACjC,0FAA0F;IAC1F,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iGAAiG;IACjG,eAAe,CAAC,EAAE,mBAAmB,CAAC;IACtC,oGAAoG;IACpG,aAAa,CAAC,EAAE,iBAAiB,CAAC;IAClC;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,cAAc,CAAC,EAAE,YAAY,CAAC;CAC/B;AAED,MAAM,WAAW,uBAAwB,SAAQ,UAAU;IACzD,iBAAiB,EAAE,2BAA2B,CAAC;IAC/C,sDAAsD;IACtD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,SAAS,CAAC;CAC5B;AAMD,+FAA+F;AAC/F,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,OAAO,GAAG,EAAE,IAAI,kBAAkB,CAE1E;AAED,wBAAgB,yBAAyB,CAAC,EAAE,EAAE,OAAO,GAAG,EAAE,IAAI,uBAAuB,CAEpF;AAED,8FAA8F;AAC9F,eAAO,MAAM,YAAY,mGASf,CAAC;AAEX,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAEvD,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,IAAI,UAAU,CAE7D;AAED,wBAAgB,QAAQ,CAAC,EAAE,EAAE,OAAO,GAAG,EAAE,IAAI,kBAAkB,CAE9D;AAED,oGAAoG;AACpG,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEtD;AAED,8FAA8F;AAC9F,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEhD;AAED,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,OAAO,GAAG,EAAE,IAAI,kBAAkB,CAExE;AAED,wBAAgB,YAAY,CAAC,EAAE,EAAE,OAAO,GAAG,EAAE,IAAI,kBAAkB,CAElE;AAED,wBAAgB,SAAS,CAAC,EAAE,EAAE,OAAO,GAAG,EAAE,IAAI,kBAAkB,CAE/D;AAED,wBAAgB,MAAM,CAAC,EAAE,EAAE,OAAO,GAAG,EAAE,IAAI,kBAAkB,CAE5D"}
@@ -0,0 +1,6 @@
1
+ import { ModuleDeclaration } from 'didi';
2
+ /** Custom ElementFactory with Event Storming sticky defaults. */
3
+ export declare const eventStormingModelModule: ModuleDeclaration;
4
+ export { default as EventStormingElementFactory } from './EventStormingElementFactory.js';
5
+ export * from './di-types.js';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/model/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAC;AAG9C,iEAAiE;AACjE,eAAO,MAAM,wBAAwB,EAAE,iBAEtC,CAAC;AAEF,OAAO,EAAE,OAAO,IAAI,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAC1F,cAAc,eAAe,CAAC"}
@@ -0,0 +1,43 @@
1
+ import { default as ElementFactory } from 'diagram-js/lib/core/ElementFactory';
2
+ import { default as Canvas } from 'diagram-js/lib/core/Canvas';
3
+ import { default as Create } from 'diagram-js/lib/features/create/Create';
4
+ import { default as Modeling } from 'diagram-js/lib/features/modeling/Modeling';
5
+ import { default as Mouse } from 'diagram-js/lib/features/mouse/Mouse';
6
+ import { default as Selection } from 'diagram-js/lib/features/selection/Selection';
7
+ import { default as EventStormingElementFactory } from '../model/EventStormingElementFactory.js';
8
+ /**
9
+ * Custom copy/paste for Event Storming elements: copies the selection including the connections
10
+ * BETWEEN selected shapes. Clones keep their labels verbatim — duplicate labels are legal, the
11
+ * DSL disambiguates via `(id …)`/`#id` — and get fresh DSL-style ids.
12
+ * Paste attaches the clones to the cursor like palette create (live preview, click places,
13
+ * Escape cancels); duplicate inserts immediately with an offset. Either way the insert is ONE
14
+ * undoable `elements.create` command.
15
+ */
16
+ export default class EventStormingCopyPaste {
17
+ private readonly selection;
18
+ private readonly modeling;
19
+ private readonly elementFactory;
20
+ private readonly esFactory;
21
+ private readonly canvas;
22
+ private readonly create;
23
+ private readonly mouse;
24
+ static $inject: string[];
25
+ private clipboard;
26
+ private pasteCount;
27
+ constructor(selection: Selection, modeling: Modeling, elementFactory: ElementFactory, esFactory: EventStormingElementFactory, canvas: Canvas, create: Create, mouse: Mouse);
28
+ /** Copies the current selection. Returns false if nothing copyable is selected. */
29
+ copy(): boolean;
30
+ /**
31
+ * Paste with placement preview: the clones attach to the cursor exactly like palette create —
32
+ * click places them, Escape cancels. Falls back to an offset insert when the mouse position
33
+ * is unknown (e.g. paste before the pointer ever entered the canvas).
34
+ */
35
+ paste(): boolean;
36
+ /** Copy + immediate offset insert of the selection (Ctrl+D) — no placement step. */
37
+ duplicate(): boolean;
38
+ /** Builds fresh clone elements (fresh ids, labels kept, internal connections rewired). */
39
+ private buildClones;
40
+ /** One `elements.create` command = one undo step; position = group center + offset. */
41
+ private insertWithOffset;
42
+ }
43
+ //# sourceMappingURL=EventStormingCopyPaste.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EventStormingCopyPaste.d.ts","sourceRoot":"","sources":["../../src/modeling/EventStormingCopyPaste.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,cAAc,MAAM,oCAAoC,CAAC;AACrE,OAAO,KAAK,MAAM,MAAM,4BAA4B,CAAC;AACrD,OAAO,KAAK,MAAM,MAAM,uCAAuC,CAAC;AAChE,OAAO,KAAK,QAAQ,MAAM,2CAA2C,CAAC;AACtE,OAAO,KAAK,KAAK,MAAM,qCAAqC,CAAC;AAC7D,OAAO,KAAK,SAAS,MAAM,6CAA6C,CAAC;AASzE,OAAO,KAAK,2BAA2B,MAAM,yCAAyC,CAAC;AA6CvF;;;;;;;GAOG;AACH,MAAM,CAAC,OAAO,OAAO,sBAAsB;IAevC,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,KAAK;IApBxB,MAAM,CAAC,OAAO,WAQZ;IAEF,OAAO,CAAC,SAAS,CAA+E;IAChG,OAAO,CAAC,UAAU,CAAK;gBAGJ,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,QAAQ,EAClB,cAAc,EAAE,cAAc,EAC9B,SAAS,EAAE,2BAA2B,EACtC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,KAAK;IAG/B,mFAAmF;IACnF,IAAI,IAAI,OAAO;IA4Cf;;;;OAIG;IACH,KAAK,IAAI,OAAO;IAWhB,oFAAoF;IACpF,SAAS,IAAI,OAAO;IAKpB,0FAA0F;IAC1F,OAAO,CAAC,WAAW;IAuCnB,uFAAuF;IACvF,OAAO,CAAC,gBAAgB;CAYzB"}
@@ -0,0 +1,44 @@
1
+ import { default as Canvas } from 'diagram-js/lib/core/Canvas';
2
+ import { default as CommandStack } from 'diagram-js/lib/command/CommandStack';
3
+ import { default as ElementRegistry } from 'diagram-js/lib/core/ElementRegistry';
4
+ import { BoardLevel, DrawingStrokeStyle } from '@miragon/event-storming-schema-model';
5
+ import { EventStormingConnection, EventStormingShape, StickyKind } from '../model/di-types.js';
6
+ /**
7
+ * High-level mutations on Event Storming elements that run through the commandStack (undo/redo).
8
+ * Registers the generic UpdatePropertiesHandler at bootstrap.
9
+ */
10
+ export default class EventStormingModeling {
11
+ private readonly commandStack;
12
+ private readonly canvas;
13
+ private readonly elementRegistry;
14
+ static $inject: string[];
15
+ constructor(commandStack: CommandStack, canvas: Canvas, elementRegistry: ElementRegistry);
16
+ updateProperties(element: EventStormingShape | EventStormingConnection, properties: Record<string, unknown>): void;
17
+ updateLabel(element: EventStormingShape, label: string): void;
18
+ /**
19
+ * Retypes a sticky among the eight sticky kinds, keeping id/label/position/color. The box is
20
+ * resized to the new kind's size around the current center; the changed element re-renders.
21
+ * On a provisional (blank append) sticky the SAME single command also clears the provisional
22
+ * marker — picking its placeholder kind again is a real confirmation, not a no-op.
23
+ */
24
+ setStickyKind(element: EventStormingShape, elementType: StickyKind): void;
25
+ /** Sets the element color (CSS color/hex) or removes it (`undefined` = the kind's default). */
26
+ setColor(element: EventStormingShape, color: string | undefined): void;
27
+ /** Sets a drawing's stroke style (`undefined` = solid). */
28
+ setStrokeStyle(element: EventStormingShape, strokeStyle: DrawingStrokeStyle | undefined): void;
29
+ /**
30
+ * Current effective workshop level (root `config.level`; absent means design). Reads via the
31
+ * element registry — NOT `canvas.getRootElement()`, which would CREATE an implicit root as a
32
+ * side effect (the palette asks for the level at bootstrap, before any board is imported, and
33
+ * a stale implicit root crashes the importer's root swap after `clear()`).
34
+ */
35
+ getLevel(): BoardLevel;
36
+ /**
37
+ * Sets the workshop level on the root config — undoable like any element mutation. The
38
+ * businessObject is replaced as a whole (not mutated) so the generic property handler can
39
+ * snapshot/restore it and the exporter picks the change up from the root config.
40
+ */
41
+ setLevel(level: BoardLevel): void;
42
+ private root;
43
+ }
44
+ //# sourceMappingURL=EventStormingModeling.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EventStormingModeling.d.ts","sourceRoot":"","sources":["../../src/modeling/EventStormingModeling.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,4BAA4B,CAAC;AACrD,OAAO,KAAK,YAAY,MAAM,qCAAqC,CAAC;AACpE,OAAO,KAAK,eAAe,MAAM,qCAAqC,CAAC;AAEvE,OAAO,EAEL,KAAK,UAAU,EACf,KAAK,kBAAkB,EACxB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAGL,KAAK,uBAAuB,EAC5B,KAAK,kBAAkB,EACvB,KAAK,UAAU,EAChB,MAAM,sBAAsB,CAAC;AAO9B;;;GAGG;AACH,MAAM,CAAC,OAAO,OAAO,qBAAqB;IAItC,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,eAAe;IALlC,MAAM,CAAC,OAAO,WAAiD;gBAG5C,YAAY,EAAE,YAAY,EAC1B,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,eAAe;IAKnD,gBAAgB,CACd,OAAO,EAAE,kBAAkB,GAAG,uBAAuB,EACrD,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAClC,IAAI;IAIP,WAAW,CAAC,OAAO,EAAE,kBAAkB,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAuB7D;;;;;OAKG;IACH,aAAa,CAAC,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,UAAU,GAAG,IAAI;IAkBzE,+FAA+F;IAC/F,QAAQ,CAAC,OAAO,EAAE,kBAAkB,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAItE,2DAA2D;IAC3D,cAAc,CAAC,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,kBAAkB,GAAG,SAAS,GAAG,IAAI;IAI9F;;;;;OAKG;IACH,QAAQ,IAAI,UAAU;IAMtB;;;;OAIG;IACH,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAUjC,OAAO,CAAC,IAAI;CAKb"}
@@ -0,0 +1,18 @@
1
+ import { ElementLike } from 'diagram-js/lib/core/Types';
2
+ import { default as CommandHandler } from 'diagram-js/lib/command/CommandHandler';
3
+ export interface UpdatePropertiesContext {
4
+ element: ElementLike & Record<string, unknown>;
5
+ properties: Record<string, unknown>;
6
+ /** set internally by the handler (for revert). */
7
+ oldProperties?: Record<string, unknown>;
8
+ }
9
+ /**
10
+ * Generic, undoable command handler for setting arbitrary Event Storming properties
11
+ * (eventStormingLabel, eventStormingType, color, strokeStyle, ...). Returns the changed element
12
+ * -> CommandStack fires `elements.changed` -> re-render.
13
+ */
14
+ export default class UpdatePropertiesHandler implements CommandHandler {
15
+ execute(context: UpdatePropertiesContext): ElementLike[];
16
+ revert(context: UpdatePropertiesContext): ElementLike[];
17
+ }
18
+ //# sourceMappingURL=UpdatePropertiesHandler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UpdatePropertiesHandler.d.ts","sourceRoot":"","sources":["../../../src/modeling/cmd/UpdatePropertiesHandler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,KAAK,cAAc,MAAM,uCAAuC,CAAC;AAExE,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/C,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,kDAAkD;IAClD,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACzC;AAoBD;;;;GAIG;AACH,MAAM,CAAC,OAAO,OAAO,uBAAwB,YAAW,cAAc;IACpE,OAAO,CAAC,OAAO,EAAE,uBAAuB,GAAG,WAAW,EAAE;IAYxD,MAAM,CAAC,OAAO,EAAE,uBAAuB,GAAG,WAAW,EAAE;CAQxD"}
@@ -0,0 +1,6 @@
1
+ import { ModuleDeclaration } from 'didi';
2
+ /** High-level Event Storming mutations + registration of the custom command handlers. */
3
+ export declare const eventStormingModelingModule: ModuleDeclaration;
4
+ export { default as EventStormingModeling } from './EventStormingModeling.js';
5
+ export { default as EventStormingCopyPaste } from './EventStormingCopyPaste.js';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/modeling/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAC;AAM9C,yFAAyF;AACzF,eAAO,MAAM,2BAA2B,EAAE,iBAMzC,CAAC;AAEF,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAC9E,OAAO,EAAE,OAAO,IAAI,sBAAsB,EAAE,MAAM,6BAA6B,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { default as OrderingProvider } from 'diagram-js/lib/features/ordering/OrderingProvider';
2
+ import { default as EventBus } from 'diagram-js/lib/core/EventBus';
3
+ import { ElementLike, ShapeLike } from 'diagram-js/lib/model/Types';
4
+ /**
5
+ * Keeps the z-order stable for INTERACTIVELY created/moved elements, matching the import order:
6
+ * drawings at the back, connections in the middle, stickies/notes on top. Without this,
7
+ * connections drawn in the editor would land above the stickies (unlike imported ones).
8
+ */
9
+ export default class EventStormingOrderingProvider extends OrderingProvider {
10
+ static $inject: string[];
11
+ constructor(eventBus: EventBus);
12
+ getOrdering(element: ElementLike, newParent: ShapeLike): {
13
+ parent: ShapeLike;
14
+ index?: number;
15
+ };
16
+ }
17
+ //# sourceMappingURL=EventStormingOrderingProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EventStormingOrderingProvider.d.ts","sourceRoot":"","sources":["../../src/ordering/EventStormingOrderingProvider.ts"],"names":[],"mappings":"AAAA,OAAO,gBAAgB,MAAM,mDAAmD,CAAC;AACjF,OAAO,KAAK,QAAQ,MAAM,8BAA8B,CAAC;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAGzE;;;;GAIG;AACH,MAAM,CAAC,OAAO,OAAO,6BAA8B,SAAQ,gBAAgB;IACzE,OAAgB,OAAO,WAAgB;gBAE3B,QAAQ,EAAE,QAAQ;IAIrB,WAAW,CAClB,OAAO,EAAE,WAAW,EACpB,SAAS,EAAE,SAAS,GACnB;QAAE,MAAM,EAAE,SAAS,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE;CAsBzC"}
@@ -0,0 +1,5 @@
1
+ import { ModuleDeclaration } from 'didi';
2
+ /** Z-order for interactive edits: drawings -> connections -> stickies (like the import). */
3
+ export declare const eventStormingOrderingModule: ModuleDeclaration;
4
+ export { default as EventStormingOrderingProvider } from './EventStormingOrderingProvider.js';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ordering/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAC;AAG9C,4FAA4F;AAC5F,eAAO,MAAM,2BAA2B,EAAE,iBAGzC,CAAC;AAEF,OAAO,EAAE,OAAO,IAAI,6BAA6B,EAAE,MAAM,oCAAoC,CAAC"}