@miragon/team-topologies-renderer 0.10.1 → 0.11.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 (60) hide show
  1. package/README.md +98 -31
  2. package/dist/Modeler.d.ts +2 -1
  3. package/dist/Modeler.d.ts.map +1 -1
  4. package/dist/TtBaseViewer.d.ts +47 -7
  5. package/dist/TtBaseViewer.d.ts.map +1 -1
  6. package/dist/collaborative/CollaborativeTeamTopologies.d.ts +36 -0
  7. package/dist/collaborative/CollaborativeTeamTopologies.d.ts.map +1 -0
  8. package/dist/collaborative/index.d.ts +2 -0
  9. package/dist/collaborative/index.d.ts.map +1 -0
  10. package/dist/context-pad/TtContextPadProvider.d.ts +9 -1
  11. package/dist/context-pad/TtContextPadProvider.d.ts.map +1 -1
  12. package/dist/copy-paste/TtCopyPasteProps.d.ts.map +1 -1
  13. package/dist/draw/icons.d.ts +51 -11
  14. package/dist/draw/icons.d.ts.map +1 -1
  15. package/dist/draw/label-layout.d.ts +5 -0
  16. package/dist/draw/label-layout.d.ts.map +1 -1
  17. package/dist/draw/palette-icons.d.ts +1 -1
  18. package/dist/draw/palette-icons.d.ts.map +1 -1
  19. package/dist/draw/styles.d.ts +4 -5
  20. package/dist/draw/styles.d.ts.map +1 -1
  21. package/dist/index.d.ts +11 -2
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +1019 -497
  24. package/dist/index.js.map +1 -1
  25. package/dist/io/TtExporter.d.ts.map +1 -1
  26. package/dist/io/TtImporter.d.ts +4 -1
  27. package/dist/io/TtImporter.d.ts.map +1 -1
  28. package/dist/io/TtViewport.d.ts +19 -0
  29. package/dist/io/TtViewport.d.ts.map +1 -0
  30. package/dist/io/fontEmbedding.d.ts +18 -0
  31. package/dist/io/fontEmbedding.d.ts.map +1 -0
  32. package/dist/io/index.d.ts +4 -1
  33. package/dist/io/index.d.ts.map +1 -1
  34. package/dist/io/saveSvg.d.ts.map +1 -1
  35. package/dist/io/types.d.ts +3 -0
  36. package/dist/io/types.d.ts.map +1 -1
  37. package/dist/keyboard/TtKeyboard.d.ts +9 -1
  38. package/dist/keyboard/TtKeyboard.d.ts.map +1 -1
  39. package/dist/keyboard/index.d.ts +2 -1
  40. package/dist/keyboard/index.d.ts.map +1 -1
  41. package/dist/label-editing/TtLabelEditing.d.ts +33 -2
  42. package/dist/label-editing/TtLabelEditing.d.ts.map +1 -1
  43. package/dist/model/TtElementFactory.d.ts +2 -0
  44. package/dist/model/TtElementFactory.d.ts.map +1 -1
  45. package/dist/model/di-types.d.ts +11 -5
  46. package/dist/model/di-types.d.ts.map +1 -1
  47. package/dist/modeling/TtModeling.d.ts +2 -0
  48. package/dist/modeling/TtModeling.d.ts.map +1 -1
  49. package/dist/modeling/cmd/UpdateTitleHandler.d.ts +16 -0
  50. package/dist/modeling/cmd/UpdateTitleHandler.d.ts.map +1 -0
  51. package/dist/palette/TtPaletteProvider.d.ts +28 -1
  52. package/dist/palette/TtPaletteProvider.d.ts.map +1 -1
  53. package/dist/read-only/TtReadOnly.d.ts +14 -0
  54. package/dist/read-only/TtReadOnly.d.ts.map +1 -0
  55. package/dist/read-only/index.d.ts +5 -0
  56. package/dist/read-only/index.d.ts.map +1 -0
  57. package/dist/team-topologies.css +1 -1
  58. package/dist/theme/palette.d.ts +29 -9
  59. package/dist/theme/palette.d.ts.map +1 -1
  60. package/package.json +10 -9
package/README.md CHANGED
@@ -11,7 +11,7 @@ It renders the canonical document from
11
11
  [`@miragon/team-topologies-schema-model`](../schema-model) and gives you palette, move, resize,
12
12
  connect-by-overlap, multi-selection (lasso, select all) with group move, text annotations, context
13
13
  pad, in-place label editing and undo/redo — with no UI framework required.
14
- Mount it into any `<div>`; the web app (React) and the VS Code extension both wrap this exact package.
14
+ Mount it into any `<div>`; the web app and the VS Code extension both wrap this exact package.
15
15
 
16
16
  ## Install
17
17
 
@@ -29,16 +29,35 @@ npm install @miragon/team-topologies-renderer @miragon/team-topologies-schema-mo
29
29
 
30
30
  ## Editing gestures (`Modeler`)
31
31
 
32
- | Gesture | Effect |
33
- | ---------------------------------- | ----------------------------------------------------------------------- |
34
- | Double-click an element | Edit its label in place (Enter commits, Shift+Enter breaks, Esc aborts) |
35
- | `Ctrl/Cmd+A` | Select every element |
36
- | Shift+drag on the canvas | Lasso-select (also the first palette tool) |
37
- | Shift+click | Add an element to / remove it from the selection |
38
- | Drag a selected element | Move the whole selection as one undo step |
39
- | Arrow keys (Shift: ×10) | Nudge the selection |
40
- | `Ctrl/Cmd+C` / `V`, Delete | Copy, paste, delete the selection |
41
- | `Ctrl/Cmd+Z`, `Ctrl/Cmd+Shift+Z/Y` | Undo / redo |
32
+ | Gesture | Effect |
33
+ | ------------------------------------ | ----------------------------------------------------------------------- |
34
+ | Double-click an element | Edit its label in place (Enter commits, Shift+Enter breaks, Esc aborts) |
35
+ | `Ctrl/Cmd+A` | Select every element |
36
+ | Shift+drag on the canvas | Lasso-select (also the first palette tool) |
37
+ | Shift+click | Add an element to / remove it from the selection |
38
+ | Drag a selected element | Move the whole selection as one undo step |
39
+ | Arrow keys (Shift: ×10) | Nudge the selection |
40
+ | `Ctrl/Cmd+C` / `V`, Delete | Copy, paste, delete the selection |
41
+ | `Ctrl/Cmd+Z`, `Ctrl/Cmd+Shift+Z/Y` | Undo / redo (off with `undoRedoKeys: false`) |
42
+ | Esc | Clear the selection |
43
+ | Enter / Space on a context-pad entry | Run it (rename, add annotation, delete) |
44
+
45
+ The shortcuts act only while the page itself or the canvas has focus, never inside host chrome,
46
+ form fields, the label editor or an open modal dialog, and never on a key a closer listener already
47
+ handled (`defaultPrevented`). Zoom and fit keys belong to the host's chrome (guide §5.8: only
48
+ Cmd/Ctrl + `+` `-` `0` and Shift+1, each acting exactly once), so the canvas binds none; the
49
+ [`@miragon/modeler-shell`](https://www.npmjs.com/package/@miragon/modeler-shell) chrome provides
50
+ them together with the zoom panel.
51
+
52
+ **Palette from the keyboard.** A host chrome that makes the palette a toolbar (the modeler shell)
53
+ triggers an entry with a click whose `detail` is 0. On a creating entry that click places the
54
+ element in the centre of the free part of the canvas (`freeRectCenter`, else the centre of the
55
+ view), 24px further diagonally while that spot is taken, selects it and opens its label editor.
56
+
57
+ **Read-only lock.** `modeler.get("ttReadOnly").setReadOnly(true)` locks the canvas while the
58
+ document behind it cannot be saved from it (an invalid file in an IDE host): no move, resize,
59
+ create, connect, delete, paste, context pad or label editor; selection, zoom, pan, copy and export
60
+ stay. It fires `READ_ONLY_CHANGED_EVENT` on every change.
42
61
 
43
62
  All three share a common base (`TtBaseViewer`) with the same import/export and lifecycle API.
44
63
 
@@ -51,7 +70,7 @@ import { SAMPLE_DOCUMENT } from "@miragon/team-topologies-schema-model";
51
70
 
52
71
  const modeler = new Modeler({ container: document.querySelector("#canvas")! });
53
72
 
54
- // Load a document (auto-fits the viewport)
73
+ // Load a document (resets the undo history and fits the viewport)
55
74
  const { warnings } = modeler.importDocument(SAMPLE_DOCUMENT);
56
75
 
57
76
  // Read the live canvas back as the canonical model
@@ -66,12 +85,16 @@ modeler.redo();
66
85
  ```
67
86
 
68
87
  > **The CSS is required.** Import `@miragon/team-topologies-renderer/assets/team-topologies.css`
69
- > (it also pulls in `diagram-js`'s own stylesheet and the Miragon `--cd-*` brand tokens) — without it
70
- > the palette, context pad and label editor are unstyled.
88
+ > (it also pulls in the Miragon design tokens, `diagram-js`'s own stylesheet and `cd-canvas.css`, in
89
+ > that order) — without it the palette, context pad and label editor are unstyled. Every colour is a
90
+ > `--cd-ui-*` role of design system 1.13.0, vendored unchanged under `src/theme/`.
71
91
 
72
92
  > **Typeface.** The canvas labels are drawn in the Miragon typeface **Geist**. The library does not
73
93
  > ship the font; self-host it in the host app (e.g. `@fontsource-variable/geist`) so the on-screen
74
- > canvas and exported SVG render in Geist. Without it, text falls back to a system sans.
94
+ > canvas and exported SVG render in Geist. Without it, text falls back to a system sans. An SVG drawn
95
+ > as an image (to rasterise a PNG) can't use the page's fonts, so embed them first:
96
+ > `embedSvgStyles(svg, geistFontFaceCss({ latin, latinExt }))`, with the two latin Geist WOFF2 files
97
+ > as `data:` URLs.
75
98
 
76
99
  ## API
77
100
 
@@ -83,21 +106,47 @@ new Modeler({
83
106
  width?: number | string, // canvas width (default "100%")
84
107
  height?: number | string, // canvas height (default "100%", or "600px" with no container)
85
108
  additionalModules?: ModuleDeclaration[], // extra diagram-js modules
109
+ undoRedoKeys?: boolean, // bind Cmd/Ctrl+Z, Shift+Z, Y (default true; false: the host owns the history)
110
+ freeRectCenter?: () => Point | undefined, // where keyboard creation places an element (diagram coordinates)
86
111
  });
87
112
  ```
88
113
 
114
+ ### The collaborative-modeler contract
115
+
116
+ `createCollaborativeModeler(options?)` and `createCollaborativeViewer(options?)` wrap the editor and
117
+ the `NavigatedViewer` in the contract of [`@miragon/modeler-api`](https://www.npmjs.com/package/@miragon/modeler-api)
118
+ (notation `team-topologies`): `importText` / `exportText` of the canonical document text,
119
+ `onContentChanged`, view state and the `elements` surface (teams, interactions, flows and
120
+ annotations; their label or text as the name). Hosts that embed the modeler (designIQ, the VS Code
121
+ webview) work against it without knowing the renderer. The conformance kit of
122
+ `@miragon/modeler-api` runs in this package's browser tests (`npm run test:browser`).
123
+
124
+ ```ts
125
+ import { createCollaborativeModeler } from "@miragon/team-topologies-renderer";
126
+
127
+ const modeler = createCollaborativeModeler();
128
+ modeler.attachTo(host);
129
+ await modeler.importText(text); // silent, fitted; rejects without a trace for an invalid text
130
+ modeler.onContentChanged(() => save(modeler.exportText()));
131
+ ```
132
+
133
+ Options: `additionalModules`, `undoRedoKeys`, `freeRectCenter` and `fitOnImport` (default true: a
134
+ fit of at most 100 % that keeps the palette's strip free; a host whose chrome fits the diagram
135
+ itself passes false). `modeler.diagram` is the wrapped `Modeler`.
136
+
89
137
  ### Shared methods (`Viewer` / `NavigatedViewer` / `Modeler`)
90
138
 
91
- | Method | Returns | Purpose |
92
- | ---------------------------------- | ------------------------------- | ------------------------------------------------- |
93
- | `importDocument(doc)` | `{ warnings: ImportWarning[] }` | Replace canvas content and auto-fit. |
94
- | `exportDocument()` | `TtDocument` | Rebuild the canonical model from the live canvas. |
95
- | `saveSVG()` | `{ svg: string }` | Self-contained SVG snapshot (fitted viewBox). |
96
- | `setMeta(partial)` / `getMeta()` | — / `RootBusinessObject` | Read/write diagram-level metadata (e.g. `title`). |
97
- | `attachTo(el)` / `detach()` | `void` | Move the canvas in/out of the DOM (keeps state). |
98
- | `clear()` / `destroy()` | `void` | Empty the canvas / tear it down. |
99
- | `on(event, cb)` / `off(event, cb)` | `void` | Subscribe to diagram-js events. |
100
- | `get<T>(name)` | `T` | Resolve a diagram-js service (advanced). |
139
+ | Method | Returns | Purpose |
140
+ | ---------------------------------- | ------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- |
141
+ | `importDocument(doc, { fit? })` | `{ warnings: ImportWarning[] }` | Replace canvas content, reset undo history; fit unless `fit: false`. Throws, before anything changes, for ids that would collide. |
142
+ | `fitToView()` | `void` | Deprecated: fit every element, keeping the strip under the palette free. |
143
+ | `exportDocument()` | `TtDocument` | Rebuild the canonical model from the live canvas. |
144
+ | `saveSVG()` | `{ svg: string }` | Self-contained SVG snapshot (fitted viewBox). |
145
+ | `setMeta(partial)` / `getMeta()` | — / `RootBusinessObject` | Read/write diagram-level metadata (`title`); `setMeta` is deprecated, rename with `get("ttModeling").setTitle(title)` (one undo step). |
146
+ | `attachTo(el)` / `detach()` | `void` | Move the canvas in/out of the DOM (keeps state). |
147
+ | `clear()` / `destroy()` | `void` | Empty the canvas / tear it down. |
148
+ | `on(event, cb)` / `off(event, cb)` | `void` | Subscribe to diagram-js events. |
149
+ | `get<T>(name)` | `T` | Resolve a diagram-js service (advanced). |
101
150
 
102
151
  ### Modeler-only
103
152
 
@@ -110,8 +159,21 @@ new Modeler({
110
159
  - **Runtime element types:** `TtTeam`, `TtInteraction`, `TtFlow`, `TtAnnotation`, `TtElement`, and
111
160
  `TtAssociation` (the connector from an annotation to the element it is attached to).
112
161
  - **Palette icon generators:** `teamIconSvg(type)`, `interactionIconSvg(mode)`, `flowIconSvg()`,
113
- `annotationIconSvg()` — WYSIWYG SVG glyphs matching what the canvas draws.
114
- - **Other:** `TtViewerOptions`, `ImportWarning`, `RootBusinessObject`, `ROOT_ID`, `saveSVG`.
162
+ `annotationIconSvg()` — WYSIWYG SVG glyphs matching what the canvas draws. The annotation glyph
163
+ strokes in `currentColor`.
164
+ - **Functional icons:** `iconMarkup(icon, { size?, strokeWidth?, className? })` returns inline SVG
165
+ markup (Lucide style: 24 × 24 grid, stroke 2.5, `currentColor`) for the bundled `ICON_*` Lucide
166
+ nodes of the canvas chrome (context pad, lasso). `ICON_MENU`, `ICON_PLUS`, `ICON_MINUS`,
167
+ `ICON_MAXIMIZE`, `ICON_DOWNLOAD` and `ICON_X` served host chrome and are deprecated: hosts take
168
+ their chrome and its icons from `@miragon/modeler-shell`.
169
+ - **Design tokens:** `MIRAGON` (the Miragon colours by name) and `CD_TOKENS` (the same values keyed
170
+ by their `--cd-*` CSS name), for host code that paints outside CSS, e.g. a PNG background.
171
+ - **Fonts in exports:** `geistFontFaceCss({ latin, latinExt })` builds the Geist `@font-face` rules
172
+ from two `data:` URLs (`GEIST_UNICODE_RANGES` holds their subsets), and `embedSvgStyles(svg, css)`
173
+ puts CSS at the top of a `saveSVG()` result, so a rasterised PNG keeps the canvas typeface.
174
+ - **Other:** `TtViewerOptions`, `ImportOptions`, `ImportWarning`, `RootBusinessObject`, `ROOT_ID`,
175
+ `saveSVG`, `TtReadOnly` and `READ_ONLY_CHANGED_EVENT` (the lock, DI name `ttReadOnly`), and the
176
+ deprecated `TtViewport` (the palette-aware fit behind `fitToView()`, DI name `ttViewport`).
115
177
 
116
178
  ## How it's built
117
179
 
@@ -123,14 +185,15 @@ viewer via `additionalModules`:
123
185
  | ---------------------- | -------------------------------------------------------------------------------------- |
124
186
  | `ttModelModule` | Element factory with notation defaults (`TtElementFactory`). |
125
187
  | `ttDrawModule` | SVG rendering of teams, interactions, flow and annotations (`TeamTopologiesRenderer`). |
126
- | `ioModule` | Document ↔ canvas bridge (`TtImporter`, `TtExporter`, `saveSVG`). |
188
+ | `ioModule` | Document ↔ canvas bridge (`TtImporter`, `TtExporter`, `saveSVG`, `TtViewport`). |
127
189
  | `ttModelingModule` | High-level mutations — label, type, mode, colours, description, annotations. |
128
190
  | `ttRulesModule` | Editing rules (what can move / resize / be created / be attached). |
129
191
  | `ttBehaviorsModule` | Keeps the model **flat** and annotation connectors cropped, one per annotation. |
130
192
  | `ttPaletteModule` | The lasso tool and the drag-to-create palette. |
131
193
  | `ttContextPadModule` | Per-element actions (rename, add/attach annotation, delete; delete a multi-selection). |
132
194
  | `ttLabelEditingModule` | Double-click in-place label editing. |
133
- | `ttKeyboardModule` | Undo / redo / select all / delete / copy / paste / nudge shortcuts. |
195
+ | `ttKeyboardModule` | Undo / redo / select all / delete / copy / paste / nudge / Esc shortcuts. |
196
+ | `ttReadOnlyModule` | The edit lock for a document the canvas cannot save (`ttReadOnly`). |
134
197
  | `ttZOrderModule` | Fixed stacking order (flow behind, teams, interactions, annotations on top). |
135
198
 
136
199
  ### Rendering
@@ -141,11 +204,15 @@ from the spec in [`@miragon/team-topologies-schema-model`](../schema-model): the
141
204
  interaction glyphs (parallelogram, triangle, circle) drawn dashed and translucent; the flow-of-change
142
205
  as a dashed left-to-right band; an annotation as a BPMN-style open bracket with left-aligned text,
143
206
  tied to its element by a dashed connector. Labels are word-wrapped (explicit line breaks are kept)
144
- and centred. Per-element `fill`/`stroke` overrides win over the spec defaults.
207
+ and centred. Per-element `fill`/`stroke` overrides win over the spec defaults, and stay visible
208
+ while an element is selected or hovered (the selection is a separate blue outline). On a dark custom
209
+ fill, team and interaction labels switch to white.
145
210
 
146
211
  ## Import / export
147
212
 
148
- The package reads and writes the canonical `TtDocument` (JSON) and exports a standalone **SVG**.
213
+ The package reads and writes the canonical `TtDocument` (JSON) and exports a standalone **SVG**. The
214
+ export leaves out selection, hover and resize chrome and puts a white sheet behind the diagram, so
215
+ it looks the same wherever it is opened.
149
216
  PNG export and the embedded-scene round-trip (storing the document inside the exported image) live in
150
217
  the [web app](../../apps/webapp) and the [VS Code extension](../../apps/vscode), which add the canvas
151
218
  rasterisation those formats need.
package/dist/Modeler.d.ts CHANGED
@@ -3,7 +3,8 @@ import { NavigatedViewer } from './NavigatedViewer.js';
3
3
  /**
4
4
  * Full Team Topologies editor: palette/create, multi-selection (lasso, select
5
5
  * all) and group move, resize, annotations with connectors, context pad,
6
- * in-place label editing, undo/redo.
6
+ * in-place label editing, undo/redo, and the edit lock for a document the
7
+ * canvas cannot save (`ttReadOnly`).
7
8
  */
8
9
  export declare class Modeler extends NavigatedViewer {
9
10
  protected _getModules(): ModuleDeclaration[];
@@ -1 +1 @@
1
- {"version":3,"file":"Modeler.d.ts","sourceRoot":"","sources":["../src/Modeler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAC;AAS9C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAWvD;;;;GAIG;AACH,qBAAa,OAAQ,SAAQ,eAAe;cACvB,WAAW,IAAI,iBAAiB,EAAE;IAsBrD,IAAI,IAAI,IAAI;IAIZ,IAAI,IAAI,IAAI;IAIZ,OAAO,IAAI,OAAO;IAIlB,OAAO,IAAI,OAAO;CAGnB"}
1
+ {"version":3,"file":"Modeler.d.ts","sourceRoot":"","sources":["../src/Modeler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAC;AAS9C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAYvD;;;;;GAKG;AACH,qBAAa,OAAQ,SAAQ,eAAe;cACvB,WAAW,IAAI,iBAAiB,EAAE;IAuBrD,IAAI,IAAI,IAAI;IAIZ,IAAI,IAAI,IAAI;IAIZ,OAAO,IAAI,OAAO;IAIlB,OAAO,IAAI,OAAO;CAGnB"}
@@ -1,6 +1,7 @@
1
1
  import { ModuleDeclaration } from 'didi';
2
2
  import { TtDocument } from '@miragon/team-topologies-schema-model';
3
3
  import { ImportWarning, RootBusinessObject } from './io/types.js';
4
+ import { Point } from './palette/TtPaletteProvider.js';
4
5
  export interface TtViewerOptions {
5
6
  /** Host element. When absent, a detached <div> is created (attach later). */
6
7
  container?: HTMLElement;
@@ -8,6 +9,21 @@ export interface TtViewerOptions {
8
9
  height?: number | string;
9
10
  /** Appended to the module list (extension point). */
10
11
  additionalModules?: ModuleDeclaration[];
12
+ /**
13
+ * Bind Cmd/Ctrl+Z, Cmd/Ctrl+Shift+Z and Cmd/Ctrl+Y to the canvas history (default true). Pass
14
+ * false when the host owns the history (the VS Code document), so the keys reach it.
15
+ */
16
+ undoRedoKeys?: boolean | undefined;
17
+ /**
18
+ * Where Enter or Space on a creating palette entry places the element (guide §5.5): the centre
19
+ * of the part of the canvas no chrome covers, in diagram coordinates. Without it, the centre of
20
+ * the visible canvas.
21
+ */
22
+ freeRectCenter?: (() => Point | undefined) | undefined;
23
+ }
24
+ export interface ImportOptions {
25
+ /** Fit the diagram into view after the import (default true); hosts with own chrome fit it. */
26
+ fit?: boolean | undefined;
11
27
  }
12
28
  export type EventCallback<T = unknown> = (event: T) => void;
13
29
  export declare abstract class TtBaseViewer {
@@ -18,28 +34,52 @@ export declare abstract class TtBaseViewer {
18
34
  constructor(options?: TtViewerOptions);
19
35
  private _createContainer;
20
36
  private _ensureDiagram;
37
+ /**
38
+ * Names the canvas. Its role stays the host's to give: the modeler shell makes it an
39
+ * `application`, so screen readers pass the single-key commands through.
40
+ */
41
+ private _describeCanvas;
21
42
  /** Resolve a diagram-js service from the didi injector. */
22
43
  get<T>(name: string): T;
23
44
  on<T = unknown>(event: string, callback: EventCallback<T>, priority?: number): void;
24
45
  off(event: string, callback: EventCallback): void;
25
- /** Load a document into the canvas (replaces existing content). */
26
- importDocument(doc: TtDocument): {
46
+ /**
47
+ * Load a document into the canvas (replaces existing content) and, unless `fit: false`, fit it
48
+ * into view. Clears the undo history without a change event: its commands point at the replaced
49
+ * elements and would bring them back, and an import is no edit.
50
+ *
51
+ * Throws, before anything changes, for a document whose ids would collide on the canvas (see
52
+ * `documentIdProblems`), so a rejected document leaves the previous one in place.
53
+ */
54
+ importDocument(doc: TtDocument, options?: ImportOptions): {
27
55
  warnings: ImportWarning[];
28
56
  };
57
+ /**
58
+ * Fit the whole diagram into the viewport, keeping the strip under the floating palette free
59
+ * (88px at the top, 120px when the container is 760px wide or narrower).
60
+ *
61
+ * @deprecated Host chrome fits the diagram (the modeler shell's viewport, with the insets of the
62
+ * chrome that is open); kept for hosts without it.
63
+ */
64
+ fitToView(): void;
65
+ private _fit;
29
66
  /** Current canvas state as a canonical document. */
30
67
  exportDocument(): TtDocument;
31
- /** Update diagram-level metadata (title / flow-of-change) on the root. */
68
+ /**
69
+ * Update diagram-level metadata (the title) on the root, outside the undo history.
70
+ *
71
+ * @deprecated Rename through `ttModeling.setTitle(title)`: one undo step that hosts see as a
72
+ * change like any other.
73
+ */
32
74
  setMeta(partial: Partial<RootBusinessObject>): void;
33
- /** Read diagram-level metadata (title / flow-of-change) from the root. */
75
+ /** Read diagram-level metadata (the title) from the root. */
34
76
  getMeta(): RootBusinessObject | undefined;
35
77
  /** Standalone, self-contained SVG snapshot. */
36
78
  saveSVG(): {
37
79
  svg: string;
38
80
  };
39
- /** Fit the content into the viewport, leaving room at the top for the palette. */
40
- private _fit;
41
81
  /** Attach the container into `target`. */
42
- attachTo(target: HTMLElement): void;
82
+ attachTo(target: Element): void;
43
83
  /** Detach the container from the DOM, preserving state. */
44
84
  detach(): void;
45
85
  clear(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"TtBaseViewer.d.ts","sourceRoot":"","sources":["../src/TtBaseViewer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAC;AAK9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uCAAuC,CAAC;AAIxE,OAAO,EAAW,KAAK,aAAa,EAAE,KAAK,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAErF,MAAM,WAAW,eAAe;IAC9B,6EAA6E;IAC7E,SAAS,CAAC,EAAE,WAAW,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,qDAAqD;IACrD,iBAAiB,CAAC,EAAE,iBAAiB,EAAE,CAAC;CACzC;AAED,MAAM,MAAM,aAAa,CAAC,CAAC,GAAG,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;AAQ5D,8BAAsB,YAAY;IAChC,SAAS,CAAC,QAAQ,CAAC,WAAW,IAAI,iBAAiB,EAAE;IAErD,OAAO,CAAC,QAAQ,CAAsB;IACtC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAc;IACzC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkB;gBAE/B,OAAO,GAAE,eAAoB;IAKzC,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,cAAc;IAQtB,2DAA2D;IAC3D,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC;IAIvB,EAAE,CAAC,CAAC,GAAG,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,QAAQ,SAAO,GAAG,IAAI;IAIjF,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,GAAG,IAAI;IAIjD,mEAAmE;IACnE,cAAc,CAAC,GAAG,EAAE,UAAU,GAAG;QAAE,QAAQ,EAAE,aAAa,EAAE,CAAA;KAAE;IAW9D,oDAAoD;IACpD,cAAc,IAAI,UAAU;IAI5B,0EAA0E;IAC1E,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,kBAAkB,CAAC,GAAG,IAAI;IAanD,0EAA0E;IAC1E,OAAO,IAAI,kBAAkB,GAAG,SAAS;IASzC,+CAA+C;IAC/C,OAAO,IAAI;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE;IAI1B,kFAAkF;IAClF,OAAO,CAAC,IAAI;IA0CZ,0CAA0C;IAC1C,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI;IAKnC,2DAA2D;IAC3D,MAAM,IAAI,IAAI;IAId,KAAK,IAAI,IAAI;IAIb,OAAO,IAAI,IAAI;IAQf,IAAI,SAAS,IAAI,WAAW,CAE3B;CACF"}
1
+ {"version":3,"file":"TtBaseViewer.d.ts","sourceRoot":"","sources":["../src/TtBaseViewer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAC;AAM9C,OAAO,EAAsB,KAAK,UAAU,EAAE,MAAM,uCAAuC,CAAC;AAK5F,OAAO,EAAW,KAAK,aAAa,EAAE,KAAK,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAErF,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gCAAgC,CAAC;AAQ5D,MAAM,WAAW,eAAe;IAC9B,6EAA6E;IAC7E,SAAS,CAAC,EAAE,WAAW,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,qDAAqD;IACrD,iBAAiB,CAAC,EAAE,iBAAiB,EAAE,CAAC;IACxC;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACnC;;;;OAIG;IACH,cAAc,CAAC,EAAE,CAAC,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,SAAS,CAAC;CACxD;AAED,MAAM,WAAW,aAAa;IAC5B,+FAA+F;IAC/F,GAAG,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAC3B;AAED,MAAM,MAAM,aAAa,CAAC,CAAC,GAAG,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;AAQ5D,8BAAsB,YAAY;IAChC,SAAS,CAAC,QAAQ,CAAC,WAAW,IAAI,iBAAiB,EAAE;IAErD,OAAO,CAAC,QAAQ,CAAsB;IACtC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAc;IACzC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkB;gBAE/B,OAAO,GAAE,eAAoB;IAKzC,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,cAAc;IActB;;;OAGG;IACH,OAAO,CAAC,eAAe;IA2BvB,2DAA2D;IAC3D,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC;IAIvB,EAAE,CAAC,CAAC,GAAG,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,QAAQ,SAAO,GAAG,IAAI;IAIjF,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,GAAG,IAAI;IAIjD;;;;;;;OAOG;IACH,cAAc,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,GAAE,aAAkB,GAAG;QAAE,QAAQ,EAAE,aAAa,EAAE,CAAA;KAAE;IAsB3F;;;;;;OAMG;IACH,SAAS,IAAI,IAAI;IAIjB,OAAO,CAAC,IAAI;IAMZ,oDAAoD;IACpD,cAAc,IAAI,UAAU;IAI5B;;;;;OAKG;IACH,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,kBAAkB,CAAC,GAAG,IAAI;IAanD,6DAA6D;IAC7D,OAAO,IAAI,kBAAkB,GAAG,SAAS;IASzC,+CAA+C;IAC/C,OAAO,IAAI;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE;IAI1B,0CAA0C;IAC1C,QAAQ,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI;IAK/B,2DAA2D;IAC3D,MAAM,IAAI,IAAI;IAId,KAAK,IAAI,IAAI;IAIb,OAAO,IAAI,IAAI;IAQf,IAAI,SAAS,IAAI,WAAW,CAE3B;CACF"}
@@ -0,0 +1,36 @@
1
+ import { CollaborativeModeler, ElementsSurface } from '@miragon/modeler-api';
2
+ import { TtDocument } from '@miragon/team-topologies-schema-model';
3
+ import { ModuleDeclaration } from 'didi';
4
+ import { Modeler } from '../Modeler.js';
5
+ import { NavigatedViewer } from '../NavigatedViewer.js';
6
+ import { Point } from '../palette/TtPaletteProvider.js';
7
+ /** Stable notation id in `meta.notation` of the collaborative-modeler contract. */
8
+ export declare const TEAM_TOPOLOGIES_NOTATION = "team-topologies";
9
+ export interface CollaborativeTeamTopologiesOptions {
10
+ /** Appended to the renderer's own modules (e.g. a host's chrome module). */
11
+ additionalModules?: ModuleDeclaration[] | undefined;
12
+ /** See `TtViewerOptions.undoRedoKeys` (default true). */
13
+ undoRedoKeys?: boolean | undefined;
14
+ /** See `TtViewerOptions.freeRectCenter`. */
15
+ freeRectCenter?: (() => Point | undefined) | undefined;
16
+ /**
17
+ * Fit the diagram into view after every import (default true, contract law L5). A host whose
18
+ * chrome fits the diagram itself (the modeler shell's viewport) passes false.
19
+ */
20
+ fitOnImport?: boolean | undefined;
21
+ }
22
+ /** The contract surface plus the wrapped diagram for host-specific wiring. */
23
+ export interface CollaborativeTeamTopologiesModeler extends CollaborativeModeler {
24
+ readonly elements: ElementsSurface;
25
+ readonly diagram: Modeler | NavigatedViewer;
26
+ }
27
+ /** The editing mount (`meta.editable: true`) of the collaborative-modeler contract. */
28
+ export declare function createCollaborativeModeler(options?: CollaborativeTeamTopologiesOptions): CollaborativeTeamTopologiesModeler;
29
+ /** The read-only mount (`meta.editable: false`): imports, exports and reveals, never edits. */
30
+ export declare function createCollaborativeViewer(options?: Pick<CollaborativeTeamTopologiesOptions, "additionalModules" | "fitOnImport">): CollaborativeTeamTopologiesModeler;
31
+ /**
32
+ * The document text as the contract reads it: blank text is a new, empty diagram (a file just
33
+ * created in an editor), anything else must be a valid document.
34
+ */
35
+ export declare function parseDocumentText(text: string): TtDocument;
36
+ //# sourceMappingURL=CollaborativeTeamTopologies.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CollaborativeTeamTopologies.d.ts","sourceRoot":"","sources":["../../src/collaborative/CollaborativeTeamTopologies.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAEL,KAAK,oBAAoB,EAEzB,KAAK,eAAe,EAGrB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAGL,KAAK,UAAU,EAChB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAC;AAK9C,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iCAAiC,CAAC;AAE7D,mFAAmF;AACnF,eAAO,MAAM,wBAAwB,oBAAoB,CAAC;AAE1D,MAAM,WAAW,kCAAkC;IACjD,4EAA4E;IAC5E,iBAAiB,CAAC,EAAE,iBAAiB,EAAE,GAAG,SAAS,CAAC;IACpD,yDAAyD;IACzD,YAAY,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACnC,4CAA4C;IAC5C,cAAc,CAAC,EAAE,CAAC,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,SAAS,CAAC;IACvD;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACnC;AAED,8EAA8E;AAC9E,MAAM,WAAW,kCAAmC,SAAQ,oBAAoB;IAC9E,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IACnC,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,eAAe,CAAC;CAC7C;AASD,uFAAuF;AACvF,wBAAgB,0BAA0B,CACxC,OAAO,GAAE,kCAAuC,GAC/C,kCAAkC,CAUpC;AAED,+FAA+F;AAC/F,wBAAgB,yBAAyB,CACvC,OAAO,GAAE,IAAI,CAAC,kCAAkC,EAAE,mBAAmB,GAAG,aAAa,CAAM,GAC1F,kCAAkC,CAMpC;AAMD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAI1D"}
@@ -0,0 +1,2 @@
1
+ export { TEAM_TOPOLOGIES_NOTATION, createCollaborativeModeler, createCollaborativeViewer, parseDocumentText, type CollaborativeTeamTopologiesModeler, type CollaborativeTeamTopologiesOptions, } from './CollaborativeTeamTopologies.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/collaborative/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EACxB,0BAA0B,EAC1B,yBAAyB,EACzB,iBAAiB,EACjB,KAAK,kCAAkC,EACvC,KAAK,kCAAkC,GACxC,MAAM,kCAAkC,CAAC"}
@@ -1,3 +1,5 @@
1
+ import { default as Canvas } from 'diagram-js/lib/core/Canvas';
2
+ import { default as EventBus } from 'diagram-js/lib/core/EventBus';
1
3
  import { default as ContextPad } from 'diagram-js/lib/features/context-pad/ContextPad';
2
4
  import { default as Modeling } from 'diagram-js/lib/features/modeling/Modeling';
3
5
  import { default as Connect } from 'diagram-js/lib/features/connect/Connect';
@@ -7,15 +9,21 @@ import { Element } from 'diagram-js/lib/model/Types';
7
9
  import { default as TtLabelEditing } from '../label-editing/TtLabelEditing.js';
8
10
  import { default as TtModeling } from '../modeling/TtModeling.js';
9
11
  export default class TtContextPadProvider implements ContextPadProvider {
12
+ private readonly contextPad;
10
13
  private readonly modeling;
11
14
  private readonly ttModeling;
12
15
  private readonly labelEditing;
13
16
  private readonly connect;
14
17
  private readonly selection;
18
+ private readonly canvas;
15
19
  static $inject: string[];
16
- constructor(contextPad: ContextPad, modeling: Modeling, ttModeling: TtModeling, labelEditing: TtLabelEditing, connect: Connect, selection: Selection);
20
+ private readonly readOnly;
21
+ constructor(contextPad: ContextPad, modeling: Modeling, ttModeling: TtModeling, labelEditing: TtLabelEditing, connect: Connect, selection: Selection, canvas: Canvas, eventBus: EventBus, injector: {
22
+ get<T>(name: string, strict?: boolean): T | null;
23
+ });
17
24
  getContextPadEntries(element: Element): ContextPadEntries;
18
25
  getMultiElementContextPadEntries(elements: Element[]): ContextPadEntries;
26
+ private onEntryKeyDown;
19
27
  private editEntry;
20
28
  private deleteEntry;
21
29
  }
@@ -1 +1 @@
1
- {"version":3,"file":"TtContextPadProvider.d.ts","sourceRoot":"","sources":["../../src/context-pad/TtContextPadProvider.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,UAAU,MAAM,gDAAgD,CAAC;AAC7E,OAAO,KAAK,QAAQ,MAAM,2CAA2C,CAAC;AACtE,OAAO,KAAK,OAAO,MAAM,yCAAyC,CAAC;AACnE,OAAO,KAAK,SAAS,MAAM,6CAA6C,CAAC;AACzE,OAAO,KAAK,EACV,iBAAiB,EAEjB,OAAO,IAAI,kBAAkB,EAC9B,MAAM,wDAAwD,CAAC;AAChE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAE1D,OAAO,KAAK,cAAc,MAAM,oCAAoC,CAAC;AACrE,OAAO,KAAK,UAAU,MAAM,2BAA2B,CAAC;AAOxD,MAAM,CAAC,OAAO,OAAO,oBAAqB,YAAW,kBAAkB;IAYnE,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAf5B,MAAM,CAAC,OAAO,WAOZ;gBAGA,UAAU,EAAE,UAAU,EACL,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,UAAU,EACtB,YAAY,EAAE,cAAc,EAC5B,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,SAAS;IAKvC,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,iBAAiB;IAqCzD,gCAAgC,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,iBAAiB;IAIxE,OAAO,CAAC,SAAS;IASjB,OAAO,CAAC,WAAW;CAQpB"}
1
+ {"version":3,"file":"TtContextPadProvider.d.ts","sourceRoot":"","sources":["../../src/context-pad/TtContextPadProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,MAAM,MAAM,4BAA4B,CAAC;AACrD,OAAO,KAAK,QAAQ,MAAM,8BAA8B,CAAC;AACzD,OAAO,KAAK,UAAU,MAAM,gDAAgD,CAAC;AAC7E,OAAO,KAAK,QAAQ,MAAM,2CAA2C,CAAC;AACtE,OAAO,KAAK,OAAO,MAAM,yCAAyC,CAAC;AACnE,OAAO,KAAK,SAAS,MAAM,6CAA6C,CAAC;AACzE,OAAO,KAAK,EACV,iBAAiB,EAEjB,OAAO,IAAI,kBAAkB,EAC9B,MAAM,wDAAwD,CAAC;AAChE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAS1D,OAAO,KAAK,cAAc,MAAM,oCAAoC,CAAC;AACrE,OAAO,KAAK,UAAU,MAAM,2BAA2B,CAAC;AAuBxD,MAAM,CAAC,OAAO,OAAO,oBAAqB,YAAW,kBAAkB;IAgBnE,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,MAAM;IArBzB,MAAM,CAAC,OAAO,WAUZ;IAEF,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoB;gBAG1B,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,UAAU,EACtB,YAAY,EAAE,cAAc,EAC5B,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,MAAM,EAC/B,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE;QAAE,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,CAAC,GAAG,IAAI,CAAA;KAAE;IAahE,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,iBAAiB;IAqCzD,gCAAgC,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,iBAAiB;IAKxE,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,SAAS;IAWjB,OAAO,CAAC,WAAW;CAcpB"}
@@ -1 +1 @@
1
- {"version":3,"file":"TtCopyPasteProps.d.ts","sourceRoot":"","sources":["../../src/copy-paste/TtCopyPasteProps.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,QAAQ,MAAM,8BAA8B,CAAC;AAczD,MAAM,CAAC,OAAO,OAAO,gBAAgB;IACnC,MAAM,CAAC,OAAO,WAAgB;gBAElB,QAAQ,EAAE,QAAQ;CAa/B"}
1
+ {"version":3,"file":"TtCopyPasteProps.d.ts","sourceRoot":"","sources":["../../src/copy-paste/TtCopyPasteProps.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,QAAQ,MAAM,8BAA8B,CAAC;AAezD,MAAM,CAAC,OAAO,OAAO,gBAAgB;IACnC,MAAM,CAAC,OAAO,WAAgB;gBAElB,QAAQ,EAAE,QAAQ;CAa/B"}
@@ -1,13 +1,53 @@
1
1
  /**
2
- * A handful of Material-style icon paths (Apache-2.0) used by the context pad,
3
- * exposed as HTML markup. Reusable by host chrome too.
4
- */
5
- export declare const ICON_ARROW_FORWARD = "M12 4l-1.41 1.41L16.17 11H4v2h12.17l-5.58 5.59L12 20l8-8z";
6
- export declare const ICON_EDIT = "M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34a.9959.9959 0 0 0-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z";
7
- export declare const ICON_DELETE = "M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z";
8
- export declare const ICON_LINK = "M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1zM8 13h8v-2H8v2zm9-6h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76 0 5-2.24 5-5s-2.24-5-5-5z";
9
- /** An open bracket with text lines — the annotation glyph. */
10
- export declare const ICON_ANNOTATION = "M4 3h5v2H6v14h3v2H4V3zm7 4h9v2h-9V7zm0 4h9v2h-9v-2zm0 4h6v2h-6v-2z";
11
- export declare const ICON_SWAP = "M6.99 11L3 15l3.99 4v-3H14v-2H6.99v-3zM21 9l-3.99-4v3H10v2h7.01v3L21 9z";
12
- export declare function iconMarkup(path: string, size?: number): string;
2
+ * Functional icons for the canvas chrome (context pad, palette tools), returned as inline SVG
3
+ * markup.
4
+ *
5
+ * Lucide icons (ISC licence, © Lucide Icons and Contributors), copied unchanged from
6
+ * lucide-static 1.59.0 and inlined so the published renderer has no icon runtime dependency.
7
+ */
8
+ /** One Lucide icon: its SVG child elements on the 24 × 24 grid. */
9
+ export type IconNode = ReadonlyArray<readonly [string, Readonly<Record<string, string>>]>;
10
+ export interface IconMarkupOptions {
11
+ /** Rendered width and height in px; the viewBox stays on the 24 × 24 grid. */
12
+ size?: number;
13
+ strokeWidth?: number;
14
+ className?: string;
15
+ }
16
+ export declare const ICON_PENCIL: IconNode;
17
+ export declare const ICON_TRASH: IconNode;
18
+ export declare const ICON_LINK: IconNode;
19
+ export declare const ICON_MESSAGE_SQUARE_PLUS: IconNode;
20
+ export declare const ICON_SQUARE_DASHED_MOUSE_POINTER: IconNode;
21
+ /**
22
+ * @deprecated Host chrome only (menu, zoom panel, dialogs); hosts take their chrome and its icons
23
+ * from `@miragon/modeler-shell`. Kept for existing consumers, removed in a later release.
24
+ */
25
+ export declare const ICON_MENU: IconNode;
26
+ /**
27
+ * @deprecated Host chrome only (menu, zoom panel, dialogs); hosts take their chrome and its icons
28
+ * from `@miragon/modeler-shell`. Kept for existing consumers, removed in a later release.
29
+ */
30
+ export declare const ICON_MINUS: IconNode;
31
+ /**
32
+ * @deprecated Host chrome only (menu, zoom panel, dialogs); hosts take their chrome and its icons
33
+ * from `@miragon/modeler-shell`. Kept for existing consumers, removed in a later release.
34
+ */
35
+ export declare const ICON_PLUS: IconNode;
36
+ /**
37
+ * @deprecated Host chrome only (menu, zoom panel, dialogs); hosts take their chrome and its icons
38
+ * from `@miragon/modeler-shell`. Kept for existing consumers, removed in a later release.
39
+ */
40
+ export declare const ICON_MAXIMIZE: IconNode;
41
+ /**
42
+ * @deprecated Host chrome only (menu, zoom panel, dialogs); hosts take their chrome and its icons
43
+ * from `@miragon/modeler-shell`. Kept for existing consumers, removed in a later release.
44
+ */
45
+ export declare const ICON_DOWNLOAD: IconNode;
46
+ /**
47
+ * @deprecated Host chrome only (menu, zoom panel, dialogs); hosts take their chrome and its icons
48
+ * from `@miragon/modeler-shell`. Kept for existing consumers, removed in a later release.
49
+ */
50
+ export declare const ICON_X: IconNode;
51
+ /** Decorative (`aria-hidden`) inline SVG for a Lucide icon; the control around it carries the name. */
52
+ export declare function iconMarkup(icon: IconNode, options?: IconMarkupOptions): string;
13
53
  //# sourceMappingURL=icons.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"icons.d.ts","sourceRoot":"","sources":["../../src/draw/icons.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,eAAO,MAAM,kBAAkB,8DAA8D,CAAC;AAC9F,eAAO,MAAM,SAAS,yJACkI,CAAC;AACzJ,eAAO,MAAM,WAAW,kFACyD,CAAC;AAClF,eAAO,MAAM,SAAS,wNACiM,CAAC;AACxN,8DAA8D;AAC9D,eAAO,MAAM,eAAe,uEAAuE,CAAC;AACpG,eAAO,MAAM,SAAS,4EAA4E,CAAC;AAEnG,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,SAAK,GAAG,MAAM,CAE1D"}
1
+ {"version":3,"file":"icons.d.ts","sourceRoot":"","sources":["../../src/draw/icons.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,mEAAmE;AACnE,MAAM,MAAM,QAAQ,GAAG,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAE1F,MAAM,WAAW,iBAAiB;IAChC,8EAA8E;IAC9E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,WAAW,EAAE,QAQzB,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,QAMxB,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,QAGvB,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,QAStC,CAAC;AAEF,eAAO,MAAM,gCAAgC,EAAE,QAgB9C,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,SAAS,EAAE,QAIvB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,UAAU,EAAE,QAAwC,CAAC;AAElE;;;GAGG;AACH,eAAO,MAAM,SAAS,EAAE,QAGvB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,QAK3B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,QAI3B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,MAAM,EAAE,QAGpB,CAAC;AA0CF,uGAAuG;AACvG,wBAAgB,UAAU,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,GAAE,iBAAsB,GAAG,MAAM,CAsBlF"}
@@ -16,6 +16,11 @@ export interface LabelLayout {
16
16
  letterSpacing?: string;
17
17
  fill: string;
18
18
  }
19
+ /**
20
+ * Label colour for text on a shape filled with `fill` at `opacity` over the white sheet:
21
+ * schwarz while it stays readable (every official notation fill), weiss on dark custom fills.
22
+ */
23
+ export declare function readableTextColour(fill: string, opacity?: number): string;
19
24
  /** Width of the flow arrow's head; the label stays on the shaft. */
20
25
  export declare function flowHeadWidth(width: number, height: number): number;
21
26
  export declare function labelLayout(element: TtElement): LabelLayout;
@@ -1 +1 @@
1
- {"version":3,"file":"label-layout.d.ts","sourceRoot":"","sources":["../../src/draw/label-layout.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAA6C,KAAK,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAMjG,eAAO,MAAM,WAAW,MAAM,CAAC;AAE/B,MAAM,WAAW,QAAQ;IACvB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,mFAAmF;IACnF,GAAG,EAAE,QAAQ,CAAC;IACd,qGAAqG;IACrG,KAAK,EAAE,QAAQ,GAAG,UAAU,CAAC;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,oEAAoE;AACpE,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAEnE;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,SAAS,GAAG,WAAW,CAsC3D;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAqBpF"}
1
+ {"version":3,"file":"label-layout.d.ts","sourceRoot":"","sources":["../../src/draw/label-layout.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAIL,KAAK,SAAS,EAGf,MAAM,sBAAsB,CAAC;AAO9B,eAAO,MAAM,WAAW,MAAM,CAAC;AAE/B,MAAM,WAAW,QAAQ;IACvB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,mFAAmF;IACnF,GAAG,EAAE,QAAQ,CAAC;IACd,qGAAqG;IACrG,KAAK,EAAE,QAAQ,GAAG,UAAU,CAAC;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;CACd;AAsCD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,SAAI,GAAG,MAAM,CASpE;AAWD,oEAAoE;AACpE,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAEnE;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,SAAS,GAAG,WAAW,CAsC3D;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAqBpF"}
@@ -2,7 +2,7 @@ import { InteractionMode, TeamType } from '@miragon/team-topologies-schema-model
2
2
  export declare function teamIconSvg(type: TeamType): string;
3
3
  export declare function flowIconSvg(): string;
4
4
  export declare function annotationIconSvg(): string;
5
- /** Dashed selection frame with a pointer — the lasso (multi-select) tool. */
5
+ /** The lasso (multi-select) tool: Lucide square-dashed-mouse-pointer. */
6
6
  export declare function lassoIconSvg(): string;
7
7
  export declare function interactionIconSvg(mode: InteractionMode): string;
8
8
  //# sourceMappingURL=palette-icons.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"palette-icons.d.ts","sourceRoot":"","sources":["../../src/draw/palette-icons.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,OAAO,KAAK,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,uCAAuC,CAAC;AAOvF,wBAAgB,WAAW,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAgBlD;AAED,wBAAgB,WAAW,IAAI,MAAM,CAKpC;AAED,wBAAgB,iBAAiB,IAAI,MAAM,CAK1C;AAED,6EAA6E;AAC7E,wBAAgB,YAAY,IAAI,MAAM,CAKrC;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM,CAchE"}
1
+ {"version":3,"file":"palette-icons.d.ts","sourceRoot":"","sources":["../../src/draw/palette-icons.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH,OAAO,KAAK,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,uCAAuC,CAAC;AAavF,wBAAgB,WAAW,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAgBlD;AAED,wBAAgB,WAAW,IAAI,MAAM,CAOpC;AAED,wBAAgB,iBAAiB,IAAI,MAAM,CAK1C;AAED,yEAAyE;AACzE,wBAAgB,YAAY,IAAI,MAAM,CAKrC;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM,CAchE"}
@@ -5,10 +5,11 @@
5
5
  */
6
6
  /** BaseRenderer default priority is 1000; 1500 wins the render.shape/connection event. */
7
7
  export declare const TT_RENDER_PRIORITY = 1500;
8
- /** Selection / hover accent (Miragon blue — kept in sync with the app theme via the shared palette). */
9
- export declare const ACCENT: "#335DE5";
10
8
  export declare const INK: "#1D1D1D";
11
- export declare const INK_SOFT = "#5B5B5B";
9
+ /** Secondary canvas text (e.g. the flow-of-change label), ≥ 4.5:1 on the paper surround. */
10
+ export declare const INK_MUTED: "#6B6666";
11
+ /** Structural strokes that recede (annotation bracket, association connector), ≥ 3:1. */
12
+ export declare const STROKE_MUTED: "#8F8A8A";
12
13
  export declare const FONT: {
13
14
  /**
14
15
  * Set directly as the `font-family` attribute on every SVG <text> (canvas
@@ -23,6 +24,4 @@ export declare const FONT: {
23
24
  readonly small: 11;
24
25
  readonly annotation: 12;
25
26
  };
26
- /** Paper colour used for the label halo so text stays legible over lines. */
27
- export declare const PAPER: "#FFFFFF";
28
27
  //# sourceMappingURL=styles.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../src/draw/styles.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,0FAA0F;AAC1F,eAAO,MAAM,kBAAkB,OAAO,CAAC;AAEvC,wGAAwG;AACxG,eAAO,MAAM,MAAM,WAAe,CAAC;AAEnC,eAAO,MAAM,GAAG,WAAkB,CAAC;AACnC,eAAO,MAAM,QAAQ,YAAY,CAAC;AAElC,eAAO,MAAM,IAAI;IACf;;;;;;;OAOG;;;;;CAMK,CAAC;AAEX,6EAA6E;AAC7E,eAAO,MAAM,KAAK,WAAgB,CAAC"}
1
+ {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../src/draw/styles.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,0FAA0F;AAC1F,eAAO,MAAM,kBAAkB,OAAO,CAAC;AAEvC,eAAO,MAAM,GAAG,WAAkB,CAAC;AACnC,4FAA4F;AAC5F,eAAO,MAAM,SAAS,WAAoB,CAAC;AAC3C,yFAAyF;AACzF,eAAO,MAAM,YAAY,WAAiB,CAAC;AAE3C,eAAO,MAAM,IAAI;IACf;;;;;;;OAOG;;;;;CAMK,CAAC"}
package/dist/index.d.ts CHANGED
@@ -2,20 +2,29 @@ export { Viewer } from './Viewer.js';
2
2
  export { NavigatedViewer } from './NavigatedViewer.js';
3
3
  export { Modeler } from './Modeler.js';
4
4
  export { TtBaseViewer } from './TtBaseViewer.js';
5
- export type { TtViewerOptions, EventCallback } from './TtBaseViewer.js';
5
+ export type { TtViewerOptions, ImportOptions, EventCallback } from './TtBaseViewer.js';
6
+ export { TEAM_TOPOLOGIES_NOTATION, createCollaborativeModeler, createCollaborativeViewer, parseDocumentText, } from './collaborative/index.js';
7
+ export type { CollaborativeTeamTopologiesModeler, CollaborativeTeamTopologiesOptions, } from './collaborative/index.js';
6
8
  export { ttModelModule, TtElementFactory } from './model/index.js';
7
9
  export { ttDrawModule, TeamTopologiesRenderer } from './draw/index.js';
8
- export { ioModule, TtImporter, TtExporter, saveSVG, ROOT_ID } from './io/index.js';
10
+ export { ioModule, TtImporter, TtExporter, TtViewport, saveSVG, ROOT_ID } from './io/index.js';
9
11
  export { ttModelingModule, TtModeling, TtLayouter } from './modeling/index.js';
10
12
  export { ttRulesModule, TtRules } from './rules/index.js';
11
13
  export { ttBehaviorsModule, TtFlatModelBehavior, TtAssociationBehavior, } from './behaviors/index.js';
12
14
  export { ttPaletteModule, TtPaletteProvider } from './palette/index.js';
15
+ export type { TtPaletteConfig, Point } from './palette/TtPaletteProvider.js';
13
16
  export { ttContextPadModule, TtContextPadProvider } from './context-pad/index.js';
14
17
  export { ttLabelEditingModule, TtLabelEditing } from './label-editing/index.js';
15
18
  export { ttKeyboardModule, TtKeyboard } from './keyboard/index.js';
19
+ export type { TtKeyboardConfig } from './keyboard/index.js';
20
+ export { ttReadOnlyModule, TtReadOnly, READ_ONLY_CHANGED_EVENT } from './read-only/index.js';
16
21
  export { ttZOrderModule, TtZOrder } from './zorder/index.js';
17
22
  export { isTtElement, isTtTeam, isTtInteraction, isTtFlow, isTtAnnotation, isTtAssociation, } from './model/di-types.js';
18
23
  export type { TtElement, TtTeam, TtInteraction, TtFlow, TtAnnotation, TtAssociation, } from './model/di-types.js';
19
24
  export type { ImportWarning, RootBusinessObject } from './io/index.js';
25
+ export { GEIST_UNICODE_RANGES, embedSvgStyles, geistFontFaceCss } from './io/index.js';
26
+ export type { GeistFontDataUrls } from './io/index.js';
27
+ export { MIRAGON, CD_TOKENS } from './theme/index.js';
28
+ export * from './draw/icons.js';
20
29
  export { teamIconSvg, interactionIconSvg, flowIconSvg, annotationIconSvg, } from './draw/palette-icons.js';
21
30
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,8BAA8B,CAAC;AAGtC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGxE,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACnF,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC/E,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAClF,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAChF,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAG7D,OAAO,EACL,WAAW,EACX,QAAQ,EACR,eAAe,EACf,QAAQ,EACR,cAAc,EACd,eAAe,GAChB,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EACV,SAAS,EACT,MAAM,EACN,aAAa,EACb,MAAM,EACN,YAAY,EACZ,aAAa,GACd,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAGvE,OAAO,EACL,WAAW,EACX,kBAAkB,EAClB,WAAW,EACX,iBAAiB,GAClB,MAAM,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,8BAA8B,CAAC;AAGtC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGvF,OAAO,EACL,wBAAwB,EACxB,0BAA0B,EAC1B,yBAAyB,EACzB,iBAAiB,GAClB,MAAM,0BAA0B,CAAC;AAClC,YAAY,EACV,kCAAkC,EAClC,kCAAkC,GACnC,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC/F,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC/E,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACxE,YAAY,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,gCAAgC,CAAC;AAC7E,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAClF,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAChF,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACnE,YAAY,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC7F,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAG7D,OAAO,EACL,WAAW,EACX,QAAQ,EACR,eAAe,EACf,QAAQ,EACR,cAAc,EACd,eAAe,GAChB,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EACV,SAAS,EACT,MAAM,EACN,aAAa,EACb,MAAM,EACN,YAAY,EACZ,aAAa,GACd,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAGvE,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACvF,YAAY,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAGvD,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAGtD,cAAc,iBAAiB,CAAC;AAGhC,OAAO,EACL,WAAW,EACX,kBAAkB,EAClB,WAAW,EACX,iBAAiB,GAClB,MAAM,yBAAyB,CAAC"}