@miragon/team-topologies-renderer 0.10.0 → 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
@@ -1 +1 @@
1
- {"version":3,"file":"TtExporter.d.ts","sourceRoot":"","sources":["../../src/io/TtExporter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,MAAM,MAAM,4BAA4B,CAAC;AACrD,OAAO,KAAK,eAAe,MAAM,qCAAqC,CAAC;AAGvE,OAAO,KAAK,EAKV,UAAU,EACX,MAAM,uCAAuC,CAAC;AAW/C,MAAM,CAAC,OAAO,OAAO,UAAU;IAI3B,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,UAAU;CAuErB"}
1
+ {"version":3,"file":"TtExporter.d.ts","sourceRoot":"","sources":["../../src/io/TtExporter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,MAAM,MAAM,4BAA4B,CAAC;AACrD,OAAO,KAAK,eAAe,MAAM,qCAAqC,CAAC;AAWvE,OAAO,KAAK,EAKV,UAAU,EACX,MAAM,uCAAuC,CAAC;AAW/C,MAAM,CAAC,OAAO,OAAO,UAAU;IAI3B,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,UAAU;CAmGrB"}
@@ -16,7 +16,10 @@ export default class TtImporter {
16
16
  static $inject: string[];
17
17
  constructor(canvas: Canvas, elementFactory: ElementFactory, factory: TtElementFactory, eventBus: EventBus, elementRegistry: ElementRegistry, connectionDocking: ConnectionDocking);
18
18
  import(doc: TtDocument): ImportWarning[];
19
- /** Removes every element (for re-import). */
19
+ /**
20
+ * Removes every element (for re-import). Roots stay: besides the diagram's own root, diagram-js
21
+ * creates an implicit one when something asks for a root before the first import.
22
+ */
20
23
  clear(): void;
21
24
  }
22
25
  //# sourceMappingURL=TtImporter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"TtImporter.d.ts","sourceRoot":"","sources":["../../src/io/TtImporter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,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;AACzD,OAAO,KAAK,iBAAiB,MAAM,yCAAyC,CAAC;AAE7E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uCAAuC,CAAC;AAExE,OAAO,KAAK,gBAAgB,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAW,KAAK,aAAa,EAA2B,MAAM,YAAY,CAAC;AAIlF,MAAM,CAAC,OAAO,OAAO,UAAU;IAW3B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAfpC,MAAM,CAAC,OAAO,WAOZ;gBAGiB,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,cAAc,EAC9B,OAAO,EAAE,gBAAgB,EACzB,QAAQ,EAAE,QAAQ,EAClB,eAAe,EAAE,eAAe,EAChC,iBAAiB,EAAE,iBAAiB;IAGvD,MAAM,CAAC,GAAG,EAAE,UAAU,GAAG,aAAa,EAAE;IAoDxC,6CAA6C;IAC7C,KAAK,IAAI,IAAI;CAad"}
1
+ {"version":3,"file":"TtImporter.d.ts","sourceRoot":"","sources":["../../src/io/TtImporter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,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;AACzD,OAAO,KAAK,iBAAiB,MAAM,yCAAyC,CAAC;AAE7E,OAAO,EAGL,KAAK,UAAU,EAChB,MAAM,uCAAuC,CAAC;AAE/C,OAAO,KAAK,gBAAgB,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAW,KAAK,aAAa,EAA2B,MAAM,YAAY,CAAC;AAIlF,MAAM,CAAC,OAAO,OAAO,UAAU;IAW3B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAfpC,MAAM,CAAC,OAAO,WAOZ;gBAGiB,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,cAAc,EAC9B,OAAO,EAAE,gBAAgB,EACzB,QAAQ,EAAE,QAAQ,EAClB,eAAe,EAAE,eAAe,EAChC,iBAAiB,EAAE,iBAAiB;IAGvD,MAAM,CAAC,GAAG,EAAE,UAAU,GAAG,aAAa,EAAE;IAqDxC;;;OAGG;IACH,KAAK,IAAI,IAAI;CAad"}
@@ -0,0 +1,19 @@
1
+ import { default as Canvas } from 'diagram-js/lib/core/Canvas';
2
+ import { default as ElementRegistry } from 'diagram-js/lib/core/ElementRegistry';
3
+ export default class TtViewport {
4
+ private readonly canvas;
5
+ private readonly elementRegistry;
6
+ static $inject: string[];
7
+ constructor(canvas: Canvas, elementRegistry: ElementRegistry);
8
+ /** Fit every element into view, zooming in no further than 100 %. */
9
+ fit(): void;
10
+ /**
11
+ * On a narrow (portrait) canvas the content is centred in the free band below the palette: the
12
+ * band is tall, and a diagram pinned to its top would slide under the top chrome on the first
13
+ * zoom step around the viewport centre. Wider hosts keep it at the top, because their lower left
14
+ * corner tends to hold an overlay of their own, such as a legend.
15
+ */
16
+ private viewboxTop;
17
+ private contentBounds;
18
+ }
19
+ //# sourceMappingURL=TtViewport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TtViewport.d.ts","sourceRoot":"","sources":["../../src/io/TtViewport.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,MAAM,MAAM,4BAA4B,CAAC;AACrD,OAAO,KAAK,eAAe,MAAM,qCAAqC,CAAC;AAmBvE,MAAM,CAAC,OAAO,OAAO,UAAU;IAI3B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,eAAe;IAJlC,MAAM,CAAC,OAAO,WAAiC;gBAG5B,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,eAAe;IAGnD,qEAAqE;IACrE,GAAG,IAAI,IAAI;IAkCX;;;;;OAKG;IACH,OAAO,CAAC,UAAU;IAclB,OAAO,CAAC,aAAa;CAsBtB"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Geist inside an exported SVG. An SVG drawn as an image (the usual way to rasterise it into a PNG)
3
+ * is an isolated document: it can't use the host page's @font-face rules, so its labels would fall
4
+ * back to a system font. The host passes the font files as data URLs, because it owns them (for
5
+ * example from `@fontsource-variable/geist`); the library ships no font.
6
+ */
7
+ /** The latin subsets of `@fontsource-variable/geist`, with the unicode ranges it publishes. */
8
+ export declare const GEIST_UNICODE_RANGES: {
9
+ readonly latin: "U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD";
10
+ readonly latinExt: "U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF";
11
+ };
12
+ /** A `data:` URL of each latin Geist variable-weight WOFF2 file. */
13
+ export type GeistFontDataUrls = Record<keyof typeof GEIST_UNICODE_RANGES, string>;
14
+ /** @font-face rules for the family the canvas labels ask for ('Geist Variable'). */
15
+ export declare function geistFontFaceCss(fonts: GeistFontDataUrls): string;
16
+ /** Puts `css` into a <style> at the top of a standalone SVG; returns the SVG unchanged if unparsable. */
17
+ export declare function embedSvgStyles(svg: string, css: string): string;
18
+ //# sourceMappingURL=fontEmbedding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fontEmbedding.d.ts","sourceRoot":"","sources":["../../src/io/fontEmbedding.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,+FAA+F;AAC/F,eAAO,MAAM,oBAAoB;;;CAKvB,CAAC;AAEX,oEAAoE;AACpE,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,OAAO,oBAAoB,EAAE,MAAM,CAAC,CAAC;AAElF,oFAAoF;AACpF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,iBAAiB,GAAG,MAAM,CAWjE;AAED,yGAAyG;AACzG,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAU/D"}
@@ -1,9 +1,12 @@
1
1
  import { ModuleDeclaration } from 'didi';
2
- /** Document <-> diagram-js bridge (import / export). */
2
+ /** Document <-> diagram-js bridge (import / export) and the palette-aware fit. */
3
3
  export declare const ioModule: ModuleDeclaration;
4
4
  export { default as TtImporter } from './TtImporter.js';
5
5
  export { default as TtExporter } from './TtExporter.js';
6
+ export { default as TtViewport } from './TtViewport.js';
6
7
  export { saveSVG } from './saveSvg.js';
8
+ export { GEIST_UNICODE_RANGES, embedSvgStyles, geistFontFaceCss } from './fontEmbedding.js';
9
+ export type { GeistFontDataUrls } from './fontEmbedding.js';
7
10
  export { ROOT_ID } from './types.js';
8
11
  export type { ImportWarning, RootBusinessObject } from './types.js';
9
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +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,wDAAwD;AACxD,eAAO,MAAM,QAAQ,EAAE,iBAGtB,CAAC;AAEF,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACxD,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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/io/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAC;AAK9C,kFAAkF;AAClF,eAAO,MAAM,QAAQ,EAAE,iBAItB,CAAC;AAEF,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC5F,YAAY,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,YAAY,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"saveSvg.d.ts","sourceRoot":"","sources":["../../src/io/saveSvg.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,MAAM,MAAM,4BAA4B,CAAC;AACrD,OAAO,KAAK,eAAe,MAAM,qCAAqC,CAAC;AAKvE,wBAAgB,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,eAAe,GAAG;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,CA0CzF"}
1
+ {"version":3,"file":"saveSvg.d.ts","sourceRoot":"","sources":["../../src/io/saveSvg.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,MAAM,MAAM,4BAA4B,CAAC;AACrD,OAAO,KAAK,eAAe,MAAM,qCAAqC,CAAC;AAqBvE,wBAAgB,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,eAAe,GAAG;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,CAyDzF"}
@@ -1,3 +1,4 @@
1
+ import { ForeignFields } from '@miragon/team-topologies-schema-model';
1
2
  /** ID of the diagram-js root element holding the Team Topologies diagram. */
2
3
  export declare const ROOT_ID = "tt-root";
3
4
  export interface ImportWarning {
@@ -7,5 +8,7 @@ export interface ImportWarning {
7
8
  /** Diagram-level metadata stashed on the root element. */
8
9
  export interface RootBusinessObject {
9
10
  title: string;
11
+ /** Document fields the modeler does not know, written back on export. */
12
+ foreign?: ForeignFields;
10
13
  }
11
14
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/io/types.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,eAAO,MAAM,OAAO,YAAY,CAAC;AAEjC,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,0DAA0D;AAC1D,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;CACf"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/io/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAE5F,6EAA6E;AAC7E,eAAO,MAAM,OAAO,YAAkB,CAAC;AAEvC,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,0DAA0D;AAC1D,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,yEAAyE;IACzE,OAAO,CAAC,EAAE,aAAa,CAAC;CACzB"}
@@ -6,8 +6,16 @@ import { default as Selection } from 'diagram-js/lib/features/selection/Selectio
6
6
  import { default as Modeling } from 'diagram-js/lib/features/modeling/Modeling';
7
7
  import { default as CopyPaste } from 'diagram-js/lib/features/copy-paste/CopyPaste';
8
8
  import { default as Rules } from 'diagram-js/lib/features/rules/Rules';
9
+ import { Injector } from 'didi';
10
+ export interface TtKeyboardConfig {
11
+ /**
12
+ * Bind Cmd/Ctrl+Z, Cmd/Ctrl+Shift+Z and Cmd/Ctrl+Y to the canvas command stack (default true).
13
+ * A host that owns the history (the VS Code document) passes false so the keys reach it.
14
+ */
15
+ undoRedoKeys?: boolean | undefined;
16
+ }
9
17
  export default class TtKeyboard {
10
18
  static $inject: string[];
11
- constructor(eventBus: EventBus, canvas: Canvas, elementRegistry: ElementRegistry, commandStack: CommandStack, selection: Selection, modeling: Modeling, copyPaste: CopyPaste, rules: Rules);
19
+ constructor(config: TtKeyboardConfig | undefined, eventBus: EventBus, canvas: Canvas, elementRegistry: ElementRegistry, commandStack: CommandStack, selection: Selection, modeling: Modeling, copyPaste: CopyPaste, rules: Rules, injector: Injector);
12
20
  }
13
21
  //# sourceMappingURL=TtKeyboard.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"TtKeyboard.d.ts","sourceRoot":"","sources":["../../src/keyboard/TtKeyboard.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,MAAM,MAAM,4BAA4B,CAAC;AACrD,OAAO,KAAK,QAAQ,MAAM,8BAA8B,CAAC;AACzD,OAAO,KAAK,eAAe,MAAM,qCAAqC,CAAC;AACvE,OAAO,KAAK,YAAY,MAAM,qCAAqC,CAAC;AACpE,OAAO,KAAK,SAAS,MAAM,6CAA6C,CAAC;AACzE,OAAO,KAAK,QAAQ,MAAM,2CAA2C,CAAC;AACtE,OAAO,KAAK,SAAS,MAAM,8CAA8C,CAAC;AAC1E,OAAO,KAAK,KAAK,MAAM,qCAAqC,CAAC;AA4B7D,MAAM,CAAC,OAAO,OAAO,UAAU;IAC7B,MAAM,CAAC,OAAO,WASZ;gBAGA,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,eAAe,EAChC,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,KAAK;CA8Cf"}
1
+ {"version":3,"file":"TtKeyboard.d.ts","sourceRoot":"","sources":["../../src/keyboard/TtKeyboard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,MAAM,MAAM,4BAA4B,CAAC;AACrD,OAAO,KAAK,QAAQ,MAAM,8BAA8B,CAAC;AACzD,OAAO,KAAK,eAAe,MAAM,qCAAqC,CAAC;AACvE,OAAO,KAAK,YAAY,MAAM,qCAAqC,CAAC;AACpE,OAAO,KAAK,SAAS,MAAM,6CAA6C,CAAC;AACzE,OAAO,KAAK,QAAQ,MAAM,2CAA2C,CAAC;AACtE,OAAO,KAAK,SAAS,MAAM,8CAA8C,CAAC;AAE1E,OAAO,KAAK,KAAK,MAAM,qCAAqC,CAAC;AAC7D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAgBrC,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACpC;AA+BD,MAAM,CAAC,OAAO,OAAO,UAAU;IAC7B,MAAM,CAAC,OAAO,WAWZ;gBAGA,MAAM,EAAE,gBAAgB,GAAG,SAAS,EACpC,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,eAAe,EAChC,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ;CAoErB"}
@@ -1,5 +1,6 @@
1
1
  import { ModuleDeclaration } from 'didi';
2
- /** Undo/redo + delete-selection on the canvas container. */
2
+ /** Canvas shortcuts: history, selection, clipboard and nudging (see TtKeyboard). */
3
3
  export declare const ttKeyboardModule: ModuleDeclaration;
4
4
  export { default as TtKeyboard } from './TtKeyboard.js';
5
+ export type { TtKeyboardConfig } from './TtKeyboard.js';
5
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +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,4DAA4D;AAC5D,eAAO,MAAM,gBAAgB,EAAE,iBAG9B,CAAC;AAEF,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,iBAAiB,CAAC"}
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,oFAAoF;AACpF,eAAO,MAAM,gBAAgB,EAAE,iBAG9B,CAAC;AAEF,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACxD,YAAY,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC"}
@@ -1,14 +1,45 @@
1
1
  import { default as Canvas } from 'diagram-js/lib/core/Canvas';
2
+ import { default as ElementRegistry } from 'diagram-js/lib/core/ElementRegistry';
2
3
  import { default as EventBus } from 'diagram-js/lib/core/EventBus';
3
4
  import { TtElement } from '../model/di-types.js';
4
5
  import { default as TtModeling } from '../modeling/TtModeling.js';
6
+ interface SuspendedEdit {
7
+ elementId: string;
8
+ value: string;
9
+ selectionStart: number;
10
+ selectionEnd: number;
11
+ }
5
12
  export default class TtLabelEditing {
6
13
  private readonly canvas;
7
14
  private readonly modeling;
15
+ private readonly elementRegistry;
8
16
  static $inject: string[];
9
17
  private active;
10
- constructor(eventBus: EventBus, canvas: Canvas, modeling: TtModeling);
11
- activate(element: TtElement): void;
18
+ private suspended;
19
+ private resumeTimer;
20
+ private readonly readOnly;
21
+ constructor(eventBus: EventBus, canvas: Canvas, modeling: TtModeling, elementRegistry: ElementRegistry, injector: {
22
+ get<T>(name: string, strict?: boolean): T | null;
23
+ });
24
+ /**
25
+ * Takes an open edit down WITHOUT committing it, for an import that replaces the diagram: its
26
+ * element is about to go, so a commit would land on a removed shape. `resumeAfterImport` brings
27
+ * the editor back with the typed text.
28
+ */
29
+ suspend(): void;
30
+ /**
31
+ * Reopens a suspended edit on the element with the same id, if the imported diagram still has
32
+ * it. Deferred to the next task, after the host restored its viewbox around the import (a
33
+ * viewbox change commits an open editor).
34
+ */
35
+ resumeAfterImport(): void;
36
+ /** The edit open right now (its element and the uncommitted text), for hosts and tests. */
37
+ openEdit(): {
38
+ elementId: string;
39
+ value: string;
40
+ } | undefined;
41
+ activate(element: TtElement, resumed?: SuspendedEdit): void;
12
42
  cancel(): void;
13
43
  }
44
+ export {};
14
45
  //# sourceMappingURL=TtLabelEditing.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"TtLabelEditing.d.ts","sourceRoot":"","sources":["../../src/label-editing/TtLabelEditing.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,MAAM,MAAM,4BAA4B,CAAC;AACrD,OAAO,KAAK,QAAQ,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAA+B,KAAK,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACnF,OAAO,KAAK,UAAU,MAAM,2BAA2B,CAAC;AAexD,MAAM,CAAC,OAAO,OAAO,cAAc;IAO/B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAP3B,MAAM,CAAC,OAAO,WAAwC;IAEtD,OAAO,CAAC,MAAM,CAA2B;gBAGvC,QAAQ,EAAE,QAAQ,EACD,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,UAAU;IAavC,QAAQ,CAAC,OAAO,EAAE,SAAS,GAAG,IAAI;IA+ElC,MAAM,IAAI,IAAI;CAGf"}
1
+ {"version":3,"file":"TtLabelEditing.d.ts","sourceRoot":"","sources":["../../src/label-editing/TtLabelEditing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,MAAM,MAAM,4BAA4B,CAAC;AACrD,OAAO,KAAK,eAAe,MAAM,qCAAqC,CAAC;AACvE,OAAO,KAAK,QAAQ,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAKL,KAAK,SAAS,EACf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,UAAU,MAAM,2BAA2B,CAAC;AAyBxD,UAAU,aAAa;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,CAAC,OAAO,OAAO,cAAc;IAU/B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,eAAe;IAXlC,MAAM,CAAC,OAAO,WAAuE;IAErF,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,SAAS,CAA8B;IAC/C,OAAO,CAAC,WAAW,CAA4C;IAC/D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoB;gBAG3C,QAAQ,EAAE,QAAQ,EACD,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,UAAU,EACpB,eAAe,EAAE,eAAe,EACjD,QAAQ,EAAE;QAAE,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,CAAC,GAAG,IAAI,CAAA;KAAE;IAwBhE;;;;OAIG;IACH,OAAO,IAAI,IAAI;IAOf;;;;OAIG;IACH,iBAAiB,IAAI,IAAI;IAazB,2FAA2F;IAC3F,QAAQ,IAAI;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS;IAM5D,QAAQ,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,IAAI;IA8F3D,MAAM,IAAI,IAAI;CAGf"}
@@ -5,6 +5,8 @@ export default class TtElementFactory {
5
5
  private readonly elementFactory;
6
6
  static $inject: string[];
7
7
  constructor(elementFactory: ElementFactory);
8
+ /** A field the modeler does not know rides along on the shape, so the export writes it back. */
9
+ private foreign;
8
10
  createTeam(node: TeamNode): TtTeam;
9
11
  createInteraction(shape: InteractionShape): TtInteraction;
10
12
  createFlow(shape: FlowShape): TtFlow;
@@ -1 +1 @@
1
- {"version":3,"file":"TtElementFactory.d.ts","sourceRoot":"","sources":["../../src/model/TtElementFactory.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,cAAc,MAAM,oCAAoC,CAAC;AASrE,OAAO,KAAK,EACV,SAAS,EACT,eAAe,EACf,gBAAgB,EAChB,QAAQ,EACR,QAAQ,EACR,cAAc,EACf,MAAM,uCAAuC,CAAC;AAC/C,OAAO,KAAK,EACV,YAAY,EACZ,aAAa,EACb,SAAS,EACT,MAAM,EACN,aAAa,EACb,MAAM,EACP,MAAM,eAAe,CAAC;AAEvB,MAAM,CAAC,OAAO,OAAO,gBAAgB;IAGvB,OAAO,CAAC,QAAQ,CAAC,cAAc;IAF3C,MAAM,CAAC,OAAO,WAAsB;gBAEP,cAAc,EAAE,cAAc;IAI3D,UAAU,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM;IAgBlC,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,GAAG,aAAa;IAezD,UAAU,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM;IAYpC,gBAAgB,CAAC,UAAU,EAAE,cAAc,GAAG,YAAY;IAY1D;;;;OAIG;IACH,iBAAiB,CAAC,UAAU,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,GAAG,aAAa;IAmB7E,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM;IAYrD,oBAAoB,CAAC,IAAI,EAAE,eAAe,GAAG,aAAa;IAW1D,aAAa,IAAI,MAAM;IAUvB,mBAAmB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,YAAY;IAUhD,6EAA6E;IAC7E,oBAAoB,IAAI,aAAa;CAMtC"}
1
+ {"version":3,"file":"TtElementFactory.d.ts","sourceRoot":"","sources":["../../src/model/TtElementFactory.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,cAAc,MAAM,oCAAoC,CAAC;AAerE,OAAO,KAAK,EACV,SAAS,EACT,eAAe,EACf,gBAAgB,EAChB,QAAQ,EACR,QAAQ,EACR,cAAc,EACf,MAAM,uCAAuC,CAAC;AAC/C,OAAO,KAAK,EACV,YAAY,EACZ,aAAa,EACb,SAAS,EACT,MAAM,EACN,aAAa,EACb,MAAM,EACP,MAAM,eAAe,CAAC;AAEvB,MAAM,CAAC,OAAO,OAAO,gBAAgB;IAGvB,OAAO,CAAC,QAAQ,CAAC,cAAc;IAF3C,MAAM,CAAC,OAAO,WAAsB;gBAEP,cAAc,EAAE,cAAc;IAE3D,gGAAgG;IAChG,OAAO,CAAC,OAAO;IAOf,UAAU,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM;IAiBlC,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,GAAG,aAAa;IAgBzD,UAAU,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM;IAapC,gBAAgB,CAAC,UAAU,EAAE,cAAc,GAAG,YAAY;IAa1D;;;;OAIG;IACH,iBAAiB,CAAC,UAAU,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,GAAG,aAAa;IAmB7E,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM;IAYrD,oBAAoB,CAAC,IAAI,EAAE,eAAe,GAAG,aAAa;IAW1D,aAAa,IAAI,MAAM;IAUvB,mBAAmB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,YAAY;IAUhD,6EAA6E;IAC7E,oBAAoB,IAAI,aAAa;CAMtC"}
@@ -1,7 +1,12 @@
1
1
  import { Connection, Shape } from 'diagram-js/lib/model/Types';
2
- import { InteractionMode, TeamType } from '@miragon/team-topologies-schema-model';
2
+ import { ForeignFields, InteractionMode, TeamType } from '@miragon/team-topologies-schema-model';
3
3
  export type TtKind = "team" | "interaction" | "flow" | "annotation";
4
- export interface TtTeam extends Shape {
4
+ /** What every Team Topologies shape carries beyond its geometry. */
5
+ interface TtShape extends Shape {
6
+ /** Fields of the document element the modeler does not know, written back on export. */
7
+ ttForeign?: ForeignFields;
8
+ }
9
+ export interface TtTeam extends TtShape {
5
10
  ttKind: "team";
6
11
  teamType: TeamType;
7
12
  /** Display name (separate from diagram-js `label`). */
@@ -10,18 +15,18 @@ export interface TtTeam extends Shape {
10
15
  fill?: string;
11
16
  stroke?: string;
12
17
  }
13
- export interface TtInteraction extends Shape {
18
+ export interface TtInteraction extends TtShape {
14
19
  ttKind: "interaction";
15
20
  mode: InteractionMode;
16
21
  ttLabel?: string;
17
22
  fill?: string;
18
23
  stroke?: string;
19
24
  }
20
- export interface TtFlow extends Shape {
25
+ export interface TtFlow extends TtShape {
21
26
  ttKind: "flow";
22
27
  ttLabel?: string;
23
28
  }
24
- export interface TtAnnotation extends Shape {
29
+ export interface TtAnnotation extends TtShape {
25
30
  ttKind: "annotation";
26
31
  /** The annotation text (may contain line breaks). */
27
32
  ttLabel?: string;
@@ -36,4 +41,5 @@ export declare function isTtInteraction(el: unknown): el is TtInteraction;
36
41
  export declare function isTtFlow(el: unknown): el is TtFlow;
37
42
  export declare function isTtAnnotation(el: unknown): el is TtAnnotation;
38
43
  export declare function isTtAssociation(el: unknown): el is TtAssociation;
44
+ export {};
39
45
  //# sourceMappingURL=di-types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"di-types.d.ts","sourceRoot":"","sources":["../../src/model/di-types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,KAAK,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,uCAAuC,CAAC;AAEvF,MAAM,MAAM,MAAM,GAAG,MAAM,GAAG,aAAa,GAAG,MAAM,GAAG,YAAY,CAAC;AAEpE,MAAM,WAAW,MAAO,SAAQ,KAAK;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,QAAQ,CAAC;IACnB,uDAAuD;IACvD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,aAAc,SAAQ,KAAK;IAC1C,MAAM,EAAE,aAAa,CAAC;IACtB,IAAI,EAAE,eAAe,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,MAAO,SAAQ,KAAK;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,YAAa,SAAQ,KAAK;IACzC,MAAM,EAAE,YAAY,CAAC;IACrB,qDAAqD;IACrD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,aAAc,SAAQ,UAAU;IAC/C,MAAM,EAAE,aAAa,CAAC;CACvB;AAED,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,aAAa,GAAG,MAAM,GAAG,YAAY,CAAC;AAevE,wBAAgB,WAAW,CAAC,EAAE,EAAE,OAAO,GAAG,EAAE,IAAI,SAAS,CAGxD;AAED,wBAAgB,QAAQ,CAAC,EAAE,EAAE,OAAO,GAAG,EAAE,IAAI,MAAM,CAElD;AAED,wBAAgB,eAAe,CAAC,EAAE,EAAE,OAAO,GAAG,EAAE,IAAI,aAAa,CAEhE;AAED,wBAAgB,QAAQ,CAAC,EAAE,EAAE,OAAO,GAAG,EAAE,IAAI,MAAM,CAElD;AAED,wBAAgB,cAAc,CAAC,EAAE,EAAE,OAAO,GAAG,EAAE,IAAI,YAAY,CAE9D;AAED,wBAAgB,eAAe,CAAC,EAAE,EAAE,OAAO,GAAG,EAAE,IAAI,aAAa,CAEhE"}
1
+ {"version":3,"file":"di-types.d.ts","sourceRoot":"","sources":["../../src/model/di-types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,KAAK,EACV,aAAa,EACb,eAAe,EACf,QAAQ,EACT,MAAM,uCAAuC,CAAC;AAE/C,MAAM,MAAM,MAAM,GAAG,MAAM,GAAG,aAAa,GAAG,MAAM,GAAG,YAAY,CAAC;AAEpE,oEAAoE;AACpE,UAAU,OAAQ,SAAQ,KAAK;IAC7B,wFAAwF;IACxF,SAAS,CAAC,EAAE,aAAa,CAAC;CAC3B;AAED,MAAM,WAAW,MAAO,SAAQ,OAAO;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,QAAQ,CAAC;IACnB,uDAAuD;IACvD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,aAAc,SAAQ,OAAO;IAC5C,MAAM,EAAE,aAAa,CAAC;IACtB,IAAI,EAAE,eAAe,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,MAAO,SAAQ,OAAO;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,YAAa,SAAQ,OAAO;IAC3C,MAAM,EAAE,YAAY,CAAC;IACrB,qDAAqD;IACrD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,aAAc,SAAQ,UAAU;IAC/C,MAAM,EAAE,aAAa,CAAC;CACvB;AAED,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,aAAa,GAAG,MAAM,GAAG,YAAY,CAAC;AAevE,wBAAgB,WAAW,CAAC,EAAE,EAAE,OAAO,GAAG,EAAE,IAAI,SAAS,CAGxD;AAED,wBAAgB,QAAQ,CAAC,EAAE,EAAE,OAAO,GAAG,EAAE,IAAI,MAAM,CAElD;AAED,wBAAgB,eAAe,CAAC,EAAE,EAAE,OAAO,GAAG,EAAE,IAAI,aAAa,CAEhE;AAED,wBAAgB,QAAQ,CAAC,EAAE,EAAE,OAAO,GAAG,EAAE,IAAI,MAAM,CAElD;AAED,wBAAgB,cAAc,CAAC,EAAE,EAAE,OAAO,GAAG,EAAE,IAAI,YAAY,CAE9D;AAED,wBAAgB,eAAe,CAAC,EAAE,EAAE,OAAO,GAAG,EAAE,IAAI,aAAa,CAEhE"}
@@ -11,6 +11,8 @@ export default class TtModeling {
11
11
  private readonly canvas;
12
12
  static $inject: string[];
13
13
  constructor(commandStack: CommandStack, modeling: Modeling, factory: TtElementFactory, canvas: Canvas);
14
+ /** Renames the diagram, as one undo step. */
15
+ setTitle(title: string): void;
14
16
  updateProperties(element: TtElement, properties: Record<string, unknown>): void;
15
17
  /** Rename / relabel any element. */
16
18
  updateLabel(element: TtElement, label: string): void;
@@ -1 +1 @@
1
- {"version":3,"file":"TtModeling.d.ts","sourceRoot":"","sources":["../../src/modeling/TtModeling.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,YAAY,MAAM,qCAAqC,CAAC;AACpE,OAAO,KAAK,MAAM,MAAM,4BAA4B,CAAC;AACrD,OAAO,KAAK,QAAQ,MAAM,2CAA2C,CAAC;AAEtE,OAAO,KAAK,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,uCAAuC,CAAC;AACvF,OAAO,EAEL,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,aAAa,EAClB,KAAK,MAAM,EACZ,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,gBAAgB,MAAM,8BAA8B,CAAC;AAQjE,MAAM,CAAC,OAAO,OAAO,UAAU;IAI3B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM;IANzB,MAAM,CAAC,OAAO,WAA8D;gBAGzD,YAAY,EAAE,YAAY,EAC1B,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,gBAAgB,EACzB,MAAM,EAAE,MAAM;IAKjC,gBAAgB,CAAC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAI/E,oCAAoC;IACpC,WAAW,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAIpD,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAInD,kBAAkB,CAAC,WAAW,EAAE,aAAa,EAAE,IAAI,EAAE,eAAe,GAAG,IAAI;IAI3E,kFAAkF;IAClF,SAAS,CACP,OAAO,EAAE,MAAM,GAAG,aAAa,EAC/B,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,MAAM,EAAE,MAAM,GAAG,SAAS,GACzB,IAAI;IAIP,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAInE,iGAAiG;IACjG,gBAAgB,CAAC,OAAO,EAAE,SAAS,GAAG,YAAY;IAelD,uEAAuE;IACvE,gBAAgB,CAAC,UAAU,EAAE,YAAY,GAAG,IAAI;CAIjD"}
1
+ {"version":3,"file":"TtModeling.d.ts","sourceRoot":"","sources":["../../src/modeling/TtModeling.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,YAAY,MAAM,qCAAqC,CAAC;AACpE,OAAO,KAAK,MAAM,MAAM,4BAA4B,CAAC;AACrD,OAAO,KAAK,QAAQ,MAAM,2CAA2C,CAAC;AAEtE,OAAO,KAAK,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,uCAAuC,CAAC;AACvF,OAAO,EAEL,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,aAAa,EAClB,KAAK,MAAM,EACZ,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,gBAAgB,MAAM,8BAA8B,CAAC;AAUjE,MAAM,CAAC,OAAO,OAAO,UAAU;IAI3B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM;IANzB,MAAM,CAAC,OAAO,WAA8D;gBAGzD,YAAY,EAAE,YAAY,EAC1B,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,gBAAgB,EACzB,MAAM,EAAE,MAAM;IAMjC,6CAA6C;IAC7C,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAI7B,gBAAgB,CAAC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAI/E,oCAAoC;IACpC,WAAW,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAIpD,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAInD,kBAAkB,CAAC,WAAW,EAAE,aAAa,EAAE,IAAI,EAAE,eAAe,GAAG,IAAI;IAI3E,kFAAkF;IAClF,SAAS,CACP,OAAO,EAAE,MAAM,GAAG,aAAa,EAC/B,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,MAAM,EAAE,MAAM,GAAG,SAAS,GACzB,IAAI;IAIP,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAInE,iGAAiG;IACjG,gBAAgB,CAAC,OAAO,EAAE,SAAS,GAAG,YAAY;IAelD,uEAAuE;IACvE,gBAAgB,CAAC,UAAU,EAAE,YAAY,GAAG,IAAI;CAIjD"}
@@ -0,0 +1,16 @@
1
+ import { default as Canvas } from 'diagram-js/lib/core/Canvas';
2
+ import { default as CommandHandler } from 'diagram-js/lib/command/CommandHandler';
3
+ import { ElementLike } from 'diagram-js/lib/core/Types';
4
+ export interface UpdateTitleContext {
5
+ title: string;
6
+ /** set internally by the handler (for revert). */
7
+ oldTitle?: string;
8
+ }
9
+ export default class UpdateTitleHandler implements CommandHandler {
10
+ private readonly canvas;
11
+ static $inject: string[];
12
+ constructor(canvas: Canvas);
13
+ execute(context: UpdateTitleContext): ElementLike[];
14
+ revert(context: UpdateTitleContext): ElementLike[];
15
+ }
16
+ //# sourceMappingURL=UpdateTitleHandler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UpdateTitleHandler.d.ts","sourceRoot":"","sources":["../../../src/modeling/cmd/UpdateTitleHandler.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,MAAM,MAAM,4BAA4B,CAAC;AACrD,OAAO,KAAK,cAAc,MAAM,uCAAuC,CAAC;AACxE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAM7D,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,kDAAkD;IAClD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAID,MAAM,CAAC,OAAO,OAAO,kBAAmB,YAAW,cAAc;IAGnD,OAAO,CAAC,QAAQ,CAAC,MAAM;IAFnC,MAAM,CAAC,OAAO,WAAc;gBAEC,MAAM,EAAE,MAAM;IAE3C,OAAO,CAAC,OAAO,EAAE,kBAAkB,GAAG,WAAW,EAAE;IAQnD,MAAM,CAAC,OAAO,EAAE,kBAAkB,GAAG,WAAW,EAAE;CAMnD"}
@@ -1,14 +1,41 @@
1
+ import { default as Canvas } from 'diagram-js/lib/core/Canvas';
2
+ import { default as ElementRegistry } from 'diagram-js/lib/core/ElementRegistry';
1
3
  import { default as Palette } from 'diagram-js/lib/features/palette/Palette';
2
4
  import { default as Create } from 'diagram-js/lib/features/create/Create';
3
5
  import { default as LassoTool } from 'diagram-js/lib/features/lasso-tool/LassoTool';
6
+ import { default as Modeling } from 'diagram-js/lib/features/modeling/Modeling';
7
+ import { default as Selection } from 'diagram-js/lib/features/selection/Selection';
4
8
  import { PaletteEntries, default as PaletteProvider } from 'diagram-js/lib/features/palette/PaletteProvider';
9
+ import { Injector } from 'didi';
5
10
  import { default as TtElementFactory } from '../model/TtElementFactory.js';
11
+ export interface Point {
12
+ x: number;
13
+ y: number;
14
+ }
15
+ export interface TtPaletteConfig {
16
+ /**
17
+ * The centre of the part of the canvas no chrome covers, in diagram coordinates (the modeler
18
+ * shell's `viewport.freeRectCenter()`). Without it, the centre of the visible canvas.
19
+ */
20
+ freeRectCenter?: (() => Point | undefined) | undefined;
21
+ }
6
22
  export default class TtPaletteProvider implements PaletteProvider {
23
+ private readonly config;
7
24
  private readonly create;
8
25
  private readonly factory;
9
26
  private readonly lassoTool;
27
+ private readonly canvas;
28
+ private readonly modeling;
29
+ private readonly selection;
30
+ private readonly elementRegistry;
10
31
  static $inject: string[];
11
- constructor(palette: Palette, create: Create, factory: TtElementFactory, lassoTool: LassoTool);
32
+ private readonly readOnly;
33
+ private readonly labelEditing;
34
+ constructor(config: TtPaletteConfig | undefined, palette: Palette, create: Create, factory: TtElementFactory, lassoTool: LassoTool, canvas: Canvas, modeling: Modeling, selection: Selection, elementRegistry: ElementRegistry, injector: Injector);
12
35
  getPaletteEntries(): PaletteEntries;
36
+ private createEntry;
37
+ /** The centre of the free rectangle, stepped diagonally past elements already centred there. */
38
+ private freePlace;
39
+ private placeInFreeRect;
13
40
  }
14
41
  //# sourceMappingURL=TtPaletteProvider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"TtPaletteProvider.d.ts","sourceRoot":"","sources":["../../src/palette/TtPaletteProvider.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,OAAO,MAAM,yCAAyC,CAAC;AACnE,OAAO,KAAK,MAAM,MAAM,uCAAuC,CAAC;AAChE,OAAO,KAAK,SAAS,MAAM,8CAA8C,CAAC;AAC1E,OAAO,KAAK,EACV,cAAc,EACd,OAAO,IAAI,eAAe,EAC3B,MAAM,iDAAiD,CAAC;AAezD,OAAO,KAAK,gBAAgB,MAAM,8BAA8B,CAAC;AAYjE,MAAM,CAAC,OAAO,OAAO,iBAAkB,YAAW,eAAe;IAK7D,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAN5B,MAAM,CAAC,OAAO,WAA0D;gBAGtE,OAAO,EAAE,OAAO,EACC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,gBAAgB,EACzB,SAAS,EAAE,SAAS;IAKvC,iBAAiB,IAAI,cAAc;CA+DpC"}
1
+ {"version":3,"file":"TtPaletteProvider.d.ts","sourceRoot":"","sources":["../../src/palette/TtPaletteProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,MAAM,MAAM,4BAA4B,CAAC;AACrD,OAAO,KAAK,eAAe,MAAM,qCAAqC,CAAC;AACvE,OAAO,KAAK,OAAO,MAAM,yCAAyC,CAAC;AACnE,OAAO,KAAK,MAAM,MAAM,uCAAuC,CAAC;AAChE,OAAO,KAAK,SAAS,MAAM,8CAA8C,CAAC;AAC1E,OAAO,KAAK,QAAQ,MAAM,2CAA2C,CAAC;AACtE,OAAO,KAAK,SAAS,MAAM,6CAA6C,CAAC;AACzE,OAAO,KAAK,EACV,cAAc,EAEd,OAAO,IAAI,eAAe,EAC3B,MAAM,iDAAiD,CAAC;AAEzD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAgBrC,OAAO,KAAK,gBAAgB,MAAM,8BAA8B,CAAC;AAYjE,MAAM,WAAW,KAAK;IACpB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAED,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,cAAc,CAAC,EAAE,CAAC,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,SAAS,CAAC;CACxD;AAeD,MAAM,CAAC,OAAO,OAAO,iBAAkB,YAAW,eAAe;IAkB7D,OAAO,CAAC,QAAQ,CAAC,MAAM;IAEvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,eAAe;IAzBlC,MAAM,CAAC,OAAO,WAWZ;IAEF,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAyB;IAClD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA6B;gBAGvC,MAAM,EAAE,eAAe,GAAG,SAAS,EACpD,OAAO,EAAE,OAAO,EACC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,gBAAgB,EACzB,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,SAAS,EACpB,eAAe,EAAE,eAAe,EACjD,QAAQ,EAAE,QAAQ;IAOpB,iBAAiB,IAAI,cAAc;IA+CnC,OAAO,CAAC,WAAW;IAkBnB,gGAAgG;IAChG,OAAO,CAAC,SAAS;IAmBjB,OAAO,CAAC,eAAe;CAWxB"}
@@ -0,0 +1,14 @@
1
+ import { default as RuleProvider } from 'diagram-js/lib/features/rules/RuleProvider';
2
+ import { default as EventBus } from 'diagram-js/lib/core/EventBus';
3
+ /** Fired with `{ readOnly }` whenever the lock changes. */
4
+ export declare const READ_ONLY_CHANGED_EVENT = "tt.readOnly.changed";
5
+ export default class TtReadOnly extends RuleProvider {
6
+ private readonly bus;
7
+ static $inject: string[];
8
+ private readOnly;
9
+ constructor(bus: EventBus);
10
+ init(): void;
11
+ isReadOnly(): boolean;
12
+ setReadOnly(readOnly: boolean): void;
13
+ }
14
+ //# sourceMappingURL=TtReadOnly.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TtReadOnly.d.ts","sourceRoot":"","sources":["../../src/read-only/TtReadOnly.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,YAAY,MAAM,4CAA4C,CAAC;AACtE,OAAO,KAAK,QAAQ,MAAM,8BAA8B,CAAC;AAEzD,2DAA2D;AAC3D,eAAO,MAAM,uBAAuB,wBAAwB,CAAC;AAmB7D,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,YAAY;IAKtC,OAAO,CAAC,QAAQ,CAAC,GAAG;IAJhC,OAAgB,OAAO,WAAgB;IAEvC,OAAO,CAAC,QAAQ,CAAS;gBAEI,GAAG,EAAE,QAAQ;IAIjC,IAAI,IAAI,IAAI;IAIrB,UAAU,IAAI,OAAO;IAIrB,WAAW,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI;CAKrC"}
@@ -0,0 +1,5 @@
1
+ import { ModuleDeclaration } from 'didi';
2
+ /** The canvas edit lock (an invalid file in an IDE host). */
3
+ export declare const ttReadOnlyModule: ModuleDeclaration;
4
+ export { default as TtReadOnly, READ_ONLY_CHANGED_EVENT } from './TtReadOnly.js';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/read-only/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAC;AAI9C,6DAA6D;AAC7D,eAAO,MAAM,gBAAgB,EAAE,iBAI9B,CAAC;AAEF,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC"}
@@ -1,2 +1,2 @@
1
- .bio-theme-parent{--bio-surface:#fff;--bio-surface-overlay:#fff;--bio-surface-subtle:#f7f7f8;--bio-surface-medium:#f1f2f4;--bio-surface-inverted:#383838;--bio-surface-inverted-subtle:#505562;--bio-text:#22242a;--bio-text-subtle:#505562;--bio-text-subtlest:#818798;--bio-text-on-inverted:#fff;--bio-border:#b9bcc6;--bio-border-disabled:#e3e4e8;--bio-primary:#07c;--bio-primary-surface:#e6f4ff;--bio-danger:#e60000;--bio-danger-surface-subtle:#fff0f0;--bio-selected-surface:var(--bio-surface-medium);--bio-selected-text:var(--bio-text);--bio-focus:#07c;--bio-focus-surface:#e6f4ff;--bio-canvas-accent:#07c;--bio-canvas-accent-subtle:#80caff;--bio-shadow:#0000004d;--bio-shadow-subtle:#0000001a;--bio-radius-sm:2px;--bio-radius-md:3px;--bio-radius-lg:4px}.djs-parent{--button-border-radius:var(--bio-radius-md);--input-border-radius:var(--bio-radius-sm);--surface-border-radius:var(--bio-radius-lg);--canvas-fill-color:var(--bio-surface);--accent-color:var(--bio-canvas-accent);--bendpoint-fill-color:var(--bio-canvas-accent);--bendpoint-stroke-color:var(--canvas-fill-color);--context-pad-entry-background-color:var(--bio-surface);--context-pad-entry-hover-background-color:var(--bio-surface-medium);--element-dragger-color:var(--accent-color);--element-selected-outline-stroke-color:var(--accent-color);--element-selected-outline-secondary-stroke-color:var(--bio-canvas-accent-subtle);--lasso-fill-color:color-mix(in srgb, var(--bio-canvas-accent) 15%, transparent);--lasso-stroke-color:var(--element-selected-outline-stroke-color);--palette-entry-color:var(--bio-text);--palette-entry-hover-color:var(--bio-primary);--palette-entry-selected-color:var(--bio-primary);--palette-separator-color:var(--bio-border);--palette-toggle-hover-background-color:var(--bio-surface-medium);--palette-background-color:var(--bio-surface-subtle);--palette-border-color:var(--bio-border);--popup-font-family:"IBM Plex Sans", sans-serif;--popup-font-size:14px;--popup-secondary-font-size:.9em;--popup-header-entry-selected-color:var(--bio-primary);--popup-header-font-weight:bolder;--popup-header-group-divider-color:var(--bio-border);--popup-background-color:var(--bio-surface-overlay);--popup-border-color:transparent;--popup-shadow-color:var(--bio-shadow);--popup-scrollbar-thumb-color:#0003;--popup-button-background-color:var(--bio-surface-overlay);--popup-button-hover-background-color:var(--bio-surface-medium);--popup-disabled-color:var(--bio-text-subtle);--popup-description-color:var(--bio-text-subtle);--popup-no-results-color:var(--bio-text-subtlest);--popup-entry-title-color:var(--bio-text-subtlest);--popup-entry-selected-background-color:var(--bio-selected-surface);--popup-entry-selected-color:var(--bio-selected-text);--popup-search-border-color:var(--bio-border);--popup-search-focus-border-color:var(--bio-focus);--popup-search-focus-background-color:var(--bio-focus-surface);--popup-tab-color:var(--bio-text-subtlest);--popup-tab-hover-color:var(--bio-text);--popup-tab-active-color:var(--bio-text);--popup-tab-active-border-color:var(--bio-primary);--popup-tab-strip-border-color:var(--bio-border-disabled);--popup-tab-focus-border-color:var(--bio-focus);--resizer-fill-color:var(--bio-canvas-accent);--resizer-stroke-color:var(--canvas-fill-color);--search-font-family:"IBM Plex Sans", sans-serif;--search-font-size:14px;--search-container-background-color:var(--bio-surface-overlay);--search-shadow-color:var(--bio-shadow);--search-input-border-color:var(--bio-border);--search-input-focus-border-color:var(--bio-focus);--search-input-focus-background-color:var(--bio-primary-surface);--search-result-hover-background-color:var(--bio-surface-medium);--search-result-secondary-color:var(--bio-text-subtlest);--search-preselected-background-color:color-mix(in srgb, var(--bio-canvas-accent) 15%, transparent);--shape-attach-allowed-stroke-color:var(--accent-color);--shape-connect-allowed-fill-color:var(--bio-surface-subtle);--shape-drop-allowed-fill-color:var(--bio-surface-subtle);--shape-drop-not-allowed-fill-color:var(--bio-danger-surface-subtle);--shape-resize-preview-stroke-color:var(--accent-color);--snap-line-stroke-color:color-mix(in srgb, var(--bio-canvas-accent) 30%, transparent);--space-tool-crosshair-stroke-color:var(--bio-text);--tooltip-error-background-color:var(--bio-danger-surface-subtle);--tooltip-error-border-color:var(--bio-danger);--tooltip-error-color:var(--bio-danger);--hover-tooltip-font-family:"IBM Plex Sans", sans-serif;--hover-tooltip-font-size:12px;--hover-tooltip-secondary-font-size:11px;--hover-tooltip-background-color:var(--bio-surface-inverted);--hover-tooltip-color:var(--bio-text-on-inverted);--hover-tooltip-shadow-color:var(--bio-shadow-subtle);--palette-tooltip-shortcut-background-color:var(--bio-surface-inverted-subtle)}.djs-container svg.drop-not-ok{background:var(--shape-drop-not-allowed-fill-color)!important}.djs-container svg.new-parent{background:var(--shape-drop-allowed-fill-color)!important}.djs-container svg:focus{outline-offset:-1px}.djs-outline,.djs-selection-outline{fill:none;shape-rendering:geometricprecision;stroke-width:2px}.djs-outline{visibility:hidden}.djs-selection-outline{stroke:var(--element-selected-outline-stroke-color)}.djs-element.selected .djs-outline{visibility:visible;stroke:var(--element-selected-outline-stroke-color)}.djs-connection.selected .djs-outline{display:none}.djs-multi-select .djs-element.selected .djs-outline,.djs-dragging-active-lasso .djs-element.selected .djs-outline{stroke:var(--element-selected-outline-secondary-stroke-color);display:block}.djs-outline-hidden .djs-outline{display:none!important}.djs-shape.connect-ok .djs-visual>:first-child{fill:var(--shape-connect-allowed-fill-color)!important}.djs-shape.connect-not-ok .djs-visual>:first-child,.djs-shape.drop-not-ok .djs-visual>:first-child{fill:var(--shape-drop-not-allowed-fill-color)!important}.djs-shape.new-parent .djs-visual>:first-child{fill:var(--shape-drop-allowed-fill-color)!important}.drop-not-ok,.connect-not-ok,.drop-not-ok *,.connect-not-ok *{cursor:not-allowed!important}.drop-ok,.connect-ok,.drop-ok *,.connect-ok *{cursor:default!important}.djs-element.attach-ok .djs-visual>:first-child{stroke-width:5px!important;stroke:var(--shape-attach-allowed-stroke-color)!important}.djs-frame.connect-not-ok .djs-visual>:first-child,.djs-frame.drop-not-ok .djs-visual>:first-child{stroke-width:3px!important;stroke:var(--shape-drop-not-allowed-fill-color)!important;fill:none!important}.djs-lasso-overlay{fill:var(--lasso-fill-color);stroke:var(--lasso-stroke-color);stroke-width:2px;shape-rendering:geometricprecision;pointer-events:none}.djs-resize-overlay{fill:none;stroke-dasharray:5 1 3 1;stroke:var(--shape-resize-preview-stroke-color);pointer-events:none}.djs-resizer-hit{fill:none;pointer-events:all}.djs-resizer-visual{fill:var(--resizer-fill-color);stroke-width:1px;stroke:var(--resizer-stroke-color);shape-rendering:geometricprecision}.djs-resizer:hover .djs-resizer-visual{stroke:var(--resizer-stroke-color);stroke-opacity:1}.djs-cursor-resize-ns,.djs-resizer-n,.djs-resizer-s{cursor:ns-resize}.djs-cursor-resize-ew,.djs-resizer-e,.djs-resizer-w{cursor:ew-resize}.djs-cursor-resize-nwse,.djs-resizer-nw,.djs-resizer-se{cursor:nwse-resize}.djs-cursor-resize-nesw,.djs-resizer-ne,.djs-resizer-sw{cursor:nesw-resize}.djs-shape.djs-resizing>.djs-outline{visibility:hidden!important}.djs-shape.djs-resizing>.djs-resizer,.djs-dragger>.djs-resizer{visibility:hidden}.djs-dragger *{fill:none!important;stroke:var(--element-dragger-color)!important}.djs-dragger tspan,.djs-dragger text,.djs-dragger marker circle,.djs-dragger marker path,.djs-dragger marker polygon,.djs-dragger marker polyline,.djs-dragger marker rect{fill:var(--element-dragger-color)!important;stroke:none!important}.djs-dragger marker text,.djs-dragger marker tspan{fill:none!important;stroke:var(--element-dragger-color)!important}.djs-dragging,.djs-dragging>*{opacity:.3!important;pointer-events:none!important}.djs-visual,.djs-outline{pointer-events:none}.djs-element.attach-ok .djs-hit{stroke-width:60px!important}.djs-element>.djs-hit-all,.djs-element>.djs-hit-no-move{pointer-events:all}.djs-element>.djs-hit-stroke,.djs-element>.djs-hit-click-stroke{pointer-events:stroke}.djs-connection .djs-visual{stroke-width:2px;fill:none}.djs-cursor-grab{cursor:-webkit-grab;cursor:-moz-grab;cursor:grab}.djs-cursor-grabbing{cursor:-webkit-grabbing;cursor:-moz-grabbing;cursor:grabbing}.djs-cursor-crosshair{cursor:crosshair}.djs-cursor-move{cursor:move}.djs-cursor-resize-ns{cursor:ns-resize}.djs-cursor-resize-ew{cursor:ew-resize}.djs-snap-line{stroke:var(--snap-line-stroke-color);stroke-linecap:round;stroke-width:2px;pointer-events:none}.djs-crosshair{stroke:var(--space-tool-crosshair-stroke-color);stroke-linecap:round;stroke-width:1px;pointer-events:none;shape-rendering:geometricprecision;stroke-dasharray:5 5}.djs-palette{box-sizing:border-box;width:48px;position:absolute;top:20px;left:20px}.djs-palette .separator{border:none;border-bottom:solid 1px var(--palette-separator-color);clear:both;margin:5px;padding-top:5px}.djs-palette .entry:before{vertical-align:initial}.djs-palette .djs-palette-toggle{cursor:pointer}.djs-palette .entry,.djs-palette .djs-palette-toggle{color:var(--palette-entry-color);text-align:center;font-size:30px}.djs-palette .entry{float:left}.djs-palette .entry img{max-width:100%}.djs-palette .djs-palette-entries:after{content:"";clear:both;display:table}.djs-palette .djs-palette-toggle:hover{background:var(--palette-toggle-hover-background-color)}.djs-palette .entry:hover{color:var(--palette-entry-hover-color)}.djs-palette .highlighted-entry{color:var(--palette-entry-selected-color)!important}.djs-palette .entry,.djs-palette .djs-palette-toggle{cursor:default;width:46px;height:46px;line-height:46px}.djs-palette.two-column.open{width:94px}.djs-palette:not(.open) .djs-palette-entries{display:none}.djs-palette:not(.open){overflow:hidden}.djs-palette.open .djs-palette-toggle{display:none}.djs-hover-tooltip{z-index:1000;border-radius:var(--surface-border-radius);background-color:var(--hover-tooltip-background-color);color:var(--hover-tooltip-color);font-family:var(--hover-tooltip-font-family);font-size:var(--hover-tooltip-font-size);white-space:nowrap;pointer-events:none;box-shadow:0 1px 4px var(--hover-tooltip-shadow-color);align-items:center;gap:6px;padding:6px 10px;line-height:1.2;display:flex;position:fixed}.djs-hover-tooltip--right{transform:translateY(-50%)}.djs-hover-tooltip--top{transform:translate(-50%,-100%)}.djs-palette-tooltip-shortcut{border-radius:var(--button-border-radius);background-color:var(--palette-tooltip-shortcut-background-color);font-family:monospace;font-size:var(--hover-tooltip-secondary-font-size);padding:1px 5px;line-height:1.2}.djs-context-pad{pointer-events:none;z-index:100;width:72px;line-height:1;display:none;position:absolute}.djs-context-pad .entry{text-align:center;cursor:default;background-color:var(--context-pad-entry-background-color);width:22px;height:22px;box-shadow:0 0 2px 1px var(--context-pad-entry-background-color);pointer-events:all;vertical-align:middle;border-radius:3px;margin:0 2px 2px 0;font-size:22px;display:inline-block}.djs-context-pad .entry:hover{background:var(--context-pad-entry-hover-background-color)}.djs-context-pad.open{display:block}.djs-popup{box-sizing:border-box;background:var(--popup-background-color);z-index:200;box-shadow:0px 2px 6px var(--popup-shadow-color);border:solid 1px var(--popup-border-color);min-width:120px;max-width:300px;line-height:1;font-size:var(--popup-font-size);font-family:var(--popup-font-family);outline:none;position:fixed;overflow:hidden}.djs-popup-search input{box-sizing:border-box;width:100%;font-size:var(--popup-font-size);border-radius:var(--input-border-radius);border:solid 1px var(--popup-search-border-color);padding:3px 6px 3px 28px;line-height:21px}.djs-popup-search input:focus{background-color:var(--popup-search-focus-background-color);border:solid 1px var(--popup-search-focus-border-color);outline:none}.djs-popup-header{align-items:stretch;margin:10px 12px;line-height:20px;display:flex}.djs-popup-header .entry{border-radius:2px}.djs-popup button.entry{background:0 0;border:0;padding:0}.djs-popup-header .entry.active{color:var(--popup-header-entry-selected-color)}.djs-popup-header .entry.disabled{color:inherit}.djs-popup-header-group{flex-direction:row;align-items:center;margin:0;padding:0;list-style:none;display:flex}.djs-popup-header-group .entry{flex-direction:row;align-items:center;display:flex}.djs-popup-header-group+.djs-popup-header-group:before{content:"";background:var(--popup-header-group-divider-color);width:1px;height:20px;margin:0 5px}.djs-popup-search{width:auto;margin:10px 12px;position:relative}.djs-popup-tabs-container{border-bottom:solid 1px var(--popup-tab-strip-border-color);position:relative}.djs-popup-tabs-scroll{appearance:none;width:28px;color:var(--popup-tab-color);cursor:pointer;border:none;border-radius:0;align-items:center;padding:0;display:flex;position:absolute;top:0;bottom:1px}.djs-popup-tabs-scroll:hover{color:var(--popup-tab-hover-color)}.djs-popup-tabs-scroll-start{background:linear-gradient(to left, transparent, var(--popup-background-color) 60%);justify-content:flex-start;left:0}.djs-popup-tabs-scroll-end{background:linear-gradient(to right, transparent, var(--popup-background-color) 60%);justify-content:flex-end;right:0}.djs-popup-tabs-scroll-start svg{transform:rotate(180deg)}.djs-popup-tabs{scrollbar-width:none;flex-wrap:nowrap;gap:2px;padding:0 12px;scroll-padding:0 28px;display:flex;overflow:auto hidden}.djs-popup-tabs::-webkit-scrollbar{display:none}.djs-popup-tab{appearance:none;font:inherit;font-size:var(--popup-font-size);color:var(--popup-tab-color);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-bottom:2px solid #0000;border-radius:0;flex:none;padding:6px 10px}.djs-popup-tab:hover{color:var(--popup-tab-hover-color)}.djs-popup-tab:focus-visible{outline:solid 1px var(--popup-tab-focus-border-color);outline-offset:-2px}.djs-popup-tab[aria-selected=true]{color:var(--popup-tab-active-color);border-bottom-color:var(--popup-tab-active-border-color);font-weight:var(--popup-header-font-weight)}.djs-popup-title{font-size:var(--popup-font-size);font-weight:var(--popup-header-font-weight);flex:1;margin:0}.djs-popup-breadcrumbs{margin:10px 12px;line-height:20px;display:flex}.djs-popup-breadcrumbs-item{appearance:none;min-width:0;color:var(--popup-description-color);font:inherit;cursor:pointer;text-overflow:ellipsis;white-space:nowrap;background:0 0;border:0;outline:none;margin:0;padding:0;display:inline-flex;overflow:hidden}.djs-popup-breadcrumbs-item--separator:before{content:"/";color:var(--popup-description-color);margin:0 4px;display:inline-block}.djs-popup-breadcrumbs-item:hover{color:inherit;text-decoration:underline}.djs-popup-breadcrumbs-item:focus-visible{outline:1px solid var(--popup-search-focus-border-color);outline-offset:2px}.djs-popup-breadcrumbs-item--back{border:1px solid var(--popup-search-border-color);border-radius:4px;flex-shrink:0;justify-content:center;align-items:center;margin-right:6px;padding:2px 3px}.djs-popup-breadcrumbs-item--back:hover{background:var(--popup-button-hover-background-color)}.djs-popup-breadcrumbs-item--current{font-weight:var(--popup-header-font-weight);color:inherit;cursor:default}.djs-popup-breadcrumbs-item--current:hover{text-decoration:none}.djs-popup-entry-actions{flex-shrink:0;align-items:center;gap:6px;margin-left:6px;display:flex}.djs-popup-entry-chevron{color:var(--popup-description-color);align-items:center;display:flex}.djs-popup-search-icon{position:absolute;top:7px;left:8px}.djs-popup-search-count{font-size:var(--popup-secondary-font-size);color:var(--popup-description-color);margin:0 12px}.djs-popup-results{max-height:280px;margin:7px 3px 7px 12px;padding-right:9px;list-style:none;overflow:auto}.djs-popup-results:focus{outline:none}.djs-popup-group{width:100%;margin:0;padding:0}.djs-popup-body .entry,.djs-popup-body .entry-header{cursor:default;border-radius:4px;padding:5px 7px}.djs-popup-body .entry-header{font-weight:var(--popup-header-font-weight);color:var(--popup-entry-title-color);padding-left:0}.djs-popup [class*=icon] .djs-popup-label,.djs-popup-label:not(:first-child){margin-left:.5em}.djs-popup [class*=icon]:before,.djs-popup-entry-icon{vertical-align:middle;width:1em;height:1em;font-size:1.4em;display:inline-block}.djs-popup-body .entry-header:not(:first-child){margin-top:8px;margin-bottom:2px}.djs-popup-body .entry{flex-direction:row;align-items:stretch;height:min-content;display:flex}.djs-popup .entry.selected{color:var(--popup-entry-selected-color);background-color:var(--popup-entry-selected-background-color)}.djs-popup .entry.disabled{color:var(--popup-disabled-color);cursor:not-allowed}.djs-popup-body .entry:not(:first-child){margin-top:2px}.djs-popup-entry-content{flex-direction:column;flex:1;display:flex}.djs-popup-entry-description{font-size:var(--popup-secondary-font-size);color:var(--popup-description-color);margin-top:.25em}.djs-popup-label,.djs-popup-entry-description{line-height:1.4em}.djs-popup .entry,.djs-popup .entry-header{margin:1px}.djs-popup-body{flex-direction:column;width:auto}.djs-popup ::-webkit-scrollbar{width:6px}.djs-popup ::-webkit-scrollbar-thumb{background-color:var(--popup-scrollbar-thumb-color);border-radius:3px}.djs-popup ::-webkit-scrollbar-track{box-shadow:none;background:0 0;margin:0;padding:5px}.djs-popup-no-results{color:var(--popup-no-results-color);padding:0 12px 12px}.djs-popup-footer{border-top:solid 1px var(--popup-border-color);padding:5px 12px 7px;display:flex}.djs-popup--pointer .djs-popup-footer{display:none}.djs-popup-entry-docs{visibility:hidden;color:var(--popup-description-color);background:var(--popup-button-background-color);border:1px solid var(--popup-search-border-color);cursor:pointer;border-radius:4px;flex-shrink:0;justify-content:center;align-items:center;padding:2px 3px;transition:background-color .12s,border-color .12s,color .12s;display:flex}.djs-popup--pointer .djs-popup-body .entry:hover .djs-popup-entry-docs{visibility:visible}.djs-popup-body .entry .djs-popup-entry-docs:hover{background:var(--popup-button-hover-background-color)}.djs-popup-entry-docs svg{vertical-align:middle}.djs-popup-footer-docs{font-size:var(--popup-secondary-font-size);color:var(--popup-description-color);align-items:center;gap:3px;text-decoration:none;display:inline-flex}.djs-popup-footer-docs:hover{text-decoration:underline}.djs-popup-footer-docs svg{vertical-align:middle;margin:2px}.djs-palette{background:var(--palette-background-color);border:solid 1px var(--palette-border-color);border-radius:var(--surface-border-radius)}.djs-segment-dragger,.djs-bendpoint{display:none}.djs-segment-dragger .djs-visual{fill:var(--bendpoint-fill-color);stroke:var(--bendpoint-stroke-color);stroke-width:1px;stroke-opacity:1;display:none}.djs-segment-dragger:hover .djs-visual{display:block}.djs-bendpoint .djs-visual{fill:var(--bendpoint-fill-color);stroke:var(--bendpoint-stroke-color);stroke-width:1px}.djs-segment-dragger:hover,.djs-bendpoints.hover .djs-segment-dragger,.djs-bendpoints.selected .djs-segment-dragger,.djs-bendpoint:hover,.djs-bendpoints.hover .djs-bendpoint,.djs-bendpoints.selected .djs-bendpoint{display:block}.djs-drag-active .djs-bendpoints *,.djs-bendpoints:not(.hover) .floating,.djs-bendpoint.floating:not(.positioned){display:none}.djs-segment-dragger:hover .djs-visual,.djs-segment-dragger.djs-dragging .djs-visual,.djs-bendpoint:hover .djs-visual,.djs-bendpoint.floating .djs-visual{fill:var(--bendpoint-fill-color);stroke:var(--bendpoint-stroke-color);stroke-opacity:1}.djs-bendpoint.floating .djs-hit{pointer-events:none}.djs-segment-dragger .djs-hit,.djs-bendpoint .djs-hit{fill:none;pointer-events:all}.djs-segment-dragger.horizontal .djs-hit{cursor:ns-resize}.djs-segment-dragger.vertical .djs-hit{cursor:ew-resize}.djs-segment-dragger.djs-dragging .djs-hit{pointer-events:none}.djs-updating,.djs-updating>*{pointer-events:none!important}.djs-updating .djs-context-pad,.djs-updating .djs-outline,.djs-updating .djs-bendpoint,.djs-multi-select .djs-bendpoint,.djs-multi-select .djs-segment-dragger,.connect-ok .djs-bendpoint,.connect-not-ok .djs-bendpoint,.drop-ok .djs-bendpoint,.drop-not-ok .djs-bendpoint{display:none!important}.djs-segment-dragger.djs-dragging,.djs-bendpoint.djs-dragging{opacity:1;display:block}.djs-tooltip-error{background:var(--tooltip-error-background-color);border:solid 1px var(--tooltip-error-border-color);border-radius:var(--surface-border-radius);width:160px;color:var(--tooltip-error-color);opacity:.75;padding:6px;font-size:12px;line-height:16px}.djs-tooltip-error:hover{opacity:1}.djs-search-open .djs-context-pad{display:none}.djs-search-open .djs-connection.selected .djs-outline{display:block}.djs-search-container{z-index:10;width:25%;min-width:300px;max-width:400px;font-family:var(--search-font-family);font-size:var(--search-font-size);border-radius:var(--surface-border-radius);box-shadow:0px 2px 6px var(--search-shadow-color);margin-left:auto;margin-right:auto;position:absolute;top:20px;left:0;right:0}.djs-search-container:not(.open){display:none}.djs-search-input{position:relative}.djs-search-input svg{position:absolute;top:7px;left:8px}.djs-search-input input{font-size:var(--search-font-size);border:1px solid var(--search-input-border-color);border-radius:var(--input-border-radius);box-sizing:border-box;width:100%;padding:3px 6px 3px 28px;line-height:21px}.djs-search-input input:focus{background-color:var(--search-input-focus-background-color);border:solid 1px var(--search-input-focus-border-color);outline:none}.djs-search-results{background:var(--search-container-background-color);max-height:200px;position:relative;overflow-y:auto}.djs-search-result{padding:6px 8px}.djs-search-result-primary{text-overflow:ellipsis;white-space:nowrap;margin:0 0 3px;overflow:hidden}.djs-search-result-secondary{text-overflow:ellipsis;white-space:nowrap;color:var(--search-result-secondary-color);margin:0;font-family:monospace;overflow:hidden}.djs-search-result:hover,.djs-search-result-selected,.djs-search-result-selected:hover{background:var(--search-result-hover-background-color)}.djs-search-open .djs-element .djs-outline{fill:var(--search-preselected-background-color)!important}.djs-element-hidden,.djs-element-hidden .djs-hit,.djs-element-hidden .djs-outline,.djs-label-hidden .djs-label{display:none!important}.djs-element .djs-hit-stroke,.djs-element .djs-hit-click-stroke,.djs-element .djs-hit-all{cursor:move}:root{--cd-blau:#335de5;--cd-gruen:#00e676;--cd-grau:#f9f7f7;--cd-schwarz:#1d1d1d;--cd-weiss:#fff;--cd-blau-link:#2b50d4;--cd-blau-hell:#6b8aff;--cd-success:#0b7a55;--cd-success-soft:#0b7a551f;--cd-warning:#92610a;--cd-warning-soft:#92610a1f;--cd-danger:#c92a2a;--cd-danger-soft:#c92a2a1f;--cd-info:#2b50d4;--cd-info-soft:#2b50d41f;--cd-gradient-brand:linear-gradient(120deg, #335de5 30%, #00e676);--cd-gradient-format:linear-gradient(135deg, #335de5 0%, #00e676 140%);--cd-space-1:4px;--cd-space-2:8px;--cd-space-3:16px;--cd-space-4:24px;--cd-space-5:32px;--cd-space-6:48px;--cd-space-7:64px;--cd-space-8:96px;--cd-radius-sm:6px;--cd-radius-md:12px;--cd-radius-lg:16px;--cd-radius-pill:999px;--cd-shadow-1:0 1px 2px #1d1d1d0f, 0 1px 3px #1d1d1d1a;--cd-shadow-2:0 4px 12px #1d1d1d1a;--cd-shadow-3:0 12px 32px #1d1d1d29;--cd-motion-fast:.15s;--cd-motion-base:.25s;--cd-motion-slow:.4s;--cd-ease:cubic-bezier(.4, 0, .2, 1);--cd-ease-out:cubic-bezier(0, 0, .2, 1)}.tt-djs-container{--tt-accent:var(--cd-blau);--tt-accent-soft:#335de51f;--tt-line:#e6e2e2;--tt-ink:var(--cd-schwarz);--element-selected-outline-stroke-color:var(--tt-accent);--element-selected-outline-secondary-stroke-color:#335de580;--lasso-fill-color:var(--tt-accent-soft);--lasso-stroke-color:var(--tt-accent);--palette-entry-selected-color:var(--tt-accent);background-color:var(--cd-grau);background-image:radial-gradient(#1d1d1d0f .6px,#0000 .6px);background-size:22px 22px;width:100%;height:100%;font-family:Geist Variable,Geist,ui-sans-serif,system-ui,-apple-system,Segoe UI,sans-serif;position:relative;overflow:hidden}.tt-djs-container:focus,.tt-djs-container:focus-visible,.tt-djs-container svg:focus{outline:none}.tt-djs-container .djs-element text{-webkit-user-select:none;user-select:none}.tt-djs-container .djs-element.hover .djs-visual>:first-child:not(text),.tt-djs-container .djs-element.selected .djs-visual>:first-child:not(text){stroke:var(--tt-accent)!important}.tt-djs-container .djs-outline{stroke:var(--tt-accent);stroke-dasharray:3 3}.tt-djs-container .djs-selection-outline,.tt-djs-container .djs-lasso-overlay{stroke-width:1.5px;stroke-dasharray:5 4}.tt-djs-container .djs-resizer-visual{fill:var(--cd-weiss);stroke:var(--tt-accent)}.tt-djs-container .djs-resizer-hit{fill:none}.djs-palette{background:var(--cd-weiss);border:1px solid var(--tt-line);border-radius:var(--cd-radius-md);width:auto;box-shadow:var(--cd-shadow-2);align-items:center;padding:5px 6px;display:flex;top:12px;left:50%;transform:translate(-50%)}.djs-palette .djs-palette-entries,.djs-palette .group{flex-direction:row;align-items:center;gap:2px;display:flex}.djs-palette .entry{float:none;border-radius:var(--cd-radius-sm);width:40px;height:40px;color:var(--tt-ink);line-height:normal;transition:background .12s,color .12s,box-shadow .12s;position:relative}.djs-palette .entry:hover{background:var(--tt-accent-soft);color:var(--tt-accent)}.djs-palette .group+.group{margin-left:9px;padding-left:9px;position:relative}.djs-palette .group+.group:before{content:"";background:var(--tt-line);width:1px;position:absolute;top:6px;bottom:6px;left:0}.tt-palette-entry{justify-content:center;align-items:center;width:100%;min-width:24px;height:100%;min-height:24px;line-height:1;display:flex}.tt-palette-svg{pointer-events:none;display:block}.tt-mode-entry.is-active,.djs-palette .entry.highlighted-entry{background:var(--tt-accent-soft);box-shadow:inset 0 0 0 1.5px var(--tt-accent)}.tt-djs-container .tt-cp-entry{width:100%;min-width:22px;height:100%;min-height:22px;color:var(--tt-ink);justify-content:center;align-items:center;display:flex}.tt-djs-container .djs-context-pad .entry{border-radius:var(--cd-radius-sm);box-shadow:var(--cd-shadow-1);background:var(--cd-weiss);transition:background .12s,color .12s}.tt-djs-container .djs-context-pad .entry:hover{background:var(--tt-accent-soft);color:var(--tt-accent)}.tt-djs-container .tt-label-editor{z-index:100;box-sizing:border-box;resize:none;white-space:pre-wrap;overflow-wrap:break-word;caret-color:var(--tt-accent);background:0 0;border:0;outline:none;margin:0;padding:0;position:absolute;overflow:hidden}.tt-djs-container .djs-element.tt-label-editing .djs-visual>text{visibility:hidden}
1
+ :root{--cd-blau:#335de5;--cd-gruen:#00e676;--cd-grau:#f9f7f7;--cd-schwarz:#1d1d1d;--cd-weiss:#fff;--cd-blau-link:#2b50d4;--cd-blau-hell:#6b8aff;--cd-success:#00e676;--cd-success-soft:#dafbeb;--cd-success-hell:#00e676;--cd-warning:#ffb000;--cd-warning-soft:#fff1d2;--cd-warning-hell:#ffb000;--cd-danger:#cd1839;--cd-danger-soft:#fbeef0;--cd-danger-hell:#fb6d73;--cd-info:#335de5;--cd-info-soft:#eef1fd;--cd-info-hell:#6b8aff;--cd-linie:#e6e2e2;--cd-kontur:#8f8a8a;--cd-text-leise:#6b6666;--cd-gradient-brand:linear-gradient(120deg, #335de5 30%, #00e676);--cd-gradient-format:linear-gradient(135deg, #335de5 0%, #00e676 140%);--cd-space-1:4px;--cd-space-2:8px;--cd-space-3:16px;--cd-space-4:24px;--cd-space-5:32px;--cd-space-6:48px;--cd-space-7:64px;--cd-space-8:96px;--cd-radius-sm:6px;--cd-radius-md:12px;--cd-radius-lg:16px;--cd-radius-pill:999px;--cd-shadow-1:0 1px 2px #1d1d1d0f, 0 1px 3px #1d1d1d1a;--cd-shadow-2:0 4px 12px #1d1d1d1a;--cd-shadow-3:0 12px 32px #1d1d1d29;--cd-motion-fast:.15s;--cd-motion-base:.25s;--cd-motion-slow:.4s;--cd-ease:cubic-bezier(.4, 0, .2, 1);--cd-ease-out:cubic-bezier(0, 0, .2, 1);--cd-shell-rand:12px;--cd-shell-luecke:8px;--cd-shell-zeile:40px;--cd-shell-ziel:32px;--cd-shell-eintrag:36px;--cd-shell-frei:64px;--cd-shell-menue-breite:248px;--cd-shell-inspector-breite:288px;--cd-shell-einpassen-oben:88px;--cd-shell-einpassen-oben-schmal:140px;--cd-shell-einpassen-seite:24px;--cd-shell-einpassen-unten:64px;--cd-shell-einpassen-unten-web:92px;--cd-shell-schmal:760px;--cd-shell-sehr-schmal:440px;--cd-shell-niedrig:820px;--cd-shell-ebene-inseln:20;--cd-shell-ebene-inspector:25;--cd-shell-ebene-reihe:30;--cd-shell-ebene-aufklapper:40;--cd-shell-ebene-dialog:50;--cd-shell-ebene-toast:60;--cd-ui-grund:#f9f7f7;--cd-ui-flaeche:#fff;--cd-ui-flaeche-hoch:#fff;--cd-ui-hover:#eef1fd;--cd-ui-plot:#fff;--cd-ui-seite:#fff;--cd-ui-abschnitt:#f9f7f7;--cd-ui-linie:#e6e2e2;--cd-ui-kontur:#8f8a8a;--cd-ui-text:#1d1d1d;--cd-ui-text-leise:#6b6666;--cd-ui-link:#2b50d4;--cd-ui-icon-akzent:#335de5;--cd-ui-fokus:#2b50d4;--cd-ui-interaktion:#335de5;--cd-ui-success:#00e676;--cd-ui-warning:#ffb000;--cd-ui-danger:#cd1839;--cd-ui-info:#335de5;--cd-ui-success-flaeche:#dafbeb;--cd-ui-warning-flaeche:#fff1d2;--cd-ui-danger-flaeche:#fbeef0;--cd-ui-info-flaeche:#eef1fd;--cd-ui-wortmarke:#00e676;--cd-ui-backdrop:#1d1d1d6b;--cd-ui-chrome-deckkraft:84%}[data-cd-theme=light],[data-cd-theme=system]{--cd-ui-grund:#f9f7f7;--cd-ui-flaeche:#fff;--cd-ui-flaeche-hoch:#fff;--cd-ui-hover:#eef1fd;--cd-ui-plot:#fff;--cd-ui-seite:#fff;--cd-ui-abschnitt:#f9f7f7;--cd-ui-linie:#e6e2e2;--cd-ui-kontur:#8f8a8a;--cd-ui-text:#1d1d1d;--cd-ui-text-leise:#6b6666;--cd-ui-link:#2b50d4;--cd-ui-icon-akzent:#335de5;--cd-ui-fokus:#2b50d4;--cd-ui-interaktion:#335de5;--cd-ui-success:#00e676;--cd-ui-warning:#ffb000;--cd-ui-danger:#cd1839;--cd-ui-info:#335de5;--cd-ui-success-flaeche:#dafbeb;--cd-ui-warning-flaeche:#fff1d2;--cd-ui-danger-flaeche:#fbeef0;--cd-ui-info-flaeche:#eef1fd;--cd-ui-wortmarke:#00e676;--cd-ui-backdrop:#1d1d1d6b;--cd-ui-chrome-deckkraft:84%;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media screen{[data-cd-theme=dark]{--cd-ui-grund:#1d1d1d;--cd-ui-flaeche:#282828;--cd-ui-flaeche-hoch:#2f2f2f;--cd-ui-hover:#383838;--cd-ui-plot:#1d1d1d;--cd-ui-seite:#1d1d1d;--cd-ui-abschnitt:#282828;--cd-ui-linie:#464646;--cd-ui-kontur:#8f8a8a;--cd-ui-text:#fff;--cd-ui-text-leise:#bbb;--cd-ui-link:#00e676;--cd-ui-icon-akzent:#00e676;--cd-ui-fokus:#6b8aff;--cd-ui-interaktion:#6b8aff;--cd-ui-success:#00e676;--cd-ui-warning:#ffb000;--cd-ui-danger:#fb6d73;--cd-ui-info:#6b8aff;--cd-ui-success-flaeche:#282828;--cd-ui-warning-flaeche:#282828;--cd-ui-danger-flaeche:#282828;--cd-ui-info-flaeche:#282828;--cd-ui-wortmarke:#fff;--cd-ui-backdrop:#1d1d1d99;--cd-ui-chrome-deckkraft:100%;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}[data-cd-theme=dark] ::selection{color:#fff;background-color:#383838}}@media screen and (prefers-color-scheme:dark){[data-cd-theme=system]{--cd-ui-grund:#1d1d1d;--cd-ui-flaeche:#282828;--cd-ui-flaeche-hoch:#2f2f2f;--cd-ui-hover:#383838;--cd-ui-plot:#1d1d1d;--cd-ui-seite:#1d1d1d;--cd-ui-abschnitt:#282828;--cd-ui-linie:#464646;--cd-ui-kontur:#8f8a8a;--cd-ui-text:#fff;--cd-ui-text-leise:#bbb;--cd-ui-link:#00e676;--cd-ui-icon-akzent:#00e676;--cd-ui-fokus:#6b8aff;--cd-ui-interaktion:#6b8aff;--cd-ui-success:#00e676;--cd-ui-warning:#ffb000;--cd-ui-danger:#fb6d73;--cd-ui-info:#6b8aff;--cd-ui-success-flaeche:#282828;--cd-ui-warning-flaeche:#282828;--cd-ui-danger-flaeche:#282828;--cd-ui-info-flaeche:#282828;--cd-ui-wortmarke:#fff;--cd-ui-backdrop:#1d1d1d99;--cd-ui-chrome-deckkraft:100%;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}[data-cd-theme=system] ::selection{color:#fff;background-color:#383838}}:root:not([data-cd-theme=dark]):not([data-cd-theme=system]) .cd-nur-dunkel{display:none!important}@media print{:root .cd-nur-dunkel{display:none!important}}@media (prefers-color-scheme:light){:root[data-cd-theme=system] .cd-nur-dunkel{display:none!important}}@media screen{:root[data-cd-theme=dark] .cd-nur-hell{display:none!important}}@media screen and (prefers-color-scheme:dark){:root[data-cd-theme=system] .cd-nur-hell{display:none!important}}[data-cd-kontrast=hoch]{--cd-ui-linie:#8f8a8a;--cd-ui-kontur:#1d1d1d;--cd-ui-text-leise:#1d1d1d;--cd-ui-chrome-deckkraft:100%}@media screen{[data-cd-theme=dark][data-cd-kontrast=hoch]{--cd-ui-linie:#8f8a8a;--cd-ui-kontur:#fff;--cd-ui-text-leise:#fff;--cd-ui-chrome-deckkraft:100%}}@media screen and (prefers-color-scheme:dark){[data-cd-theme=system][data-cd-kontrast=hoch]{--cd-ui-linie:#8f8a8a;--cd-ui-kontur:#fff;--cd-ui-text-leise:#fff;--cd-ui-chrome-deckkraft:100%}}@media (forced-colors:active){[data-cd-theme],[data-cd-theme][data-cd-kontrast=hoch]{--cd-ui-grund:Canvas;--cd-ui-flaeche:Canvas;--cd-ui-flaeche-hoch:Canvas;--cd-ui-hover:Canvas;--cd-ui-plot:Canvas;--cd-ui-seite:Canvas;--cd-ui-abschnitt:Canvas;--cd-ui-linie:CanvasText;--cd-ui-kontur:CanvasText;--cd-ui-text:CanvasText;--cd-ui-text-leise:CanvasText;--cd-ui-link:LinkText;--cd-ui-icon-akzent:CanvasText;--cd-ui-fokus:Highlight;--cd-ui-interaktion:Highlight;--cd-ui-success:CanvasText;--cd-ui-warning:CanvasText;--cd-ui-danger:CanvasText;--cd-ui-info:CanvasText;--cd-ui-success-flaeche:Canvas;--cd-ui-warning-flaeche:Canvas;--cd-ui-danger-flaeche:Canvas;--cd-ui-info-flaeche:Canvas;--cd-ui-wortmarke:CanvasText;--cd-ui-chrome-deckkraft:100%}}.bio-theme-parent{--bio-surface:#fff;--bio-surface-overlay:#fff;--bio-surface-subtle:#f7f7f8;--bio-surface-medium:#f1f2f4;--bio-surface-inverted:#383838;--bio-surface-inverted-subtle:#505562;--bio-text:#22242a;--bio-text-subtle:#505562;--bio-text-subtlest:#818798;--bio-text-on-inverted:#fff;--bio-border:#b9bcc6;--bio-border-disabled:#e3e4e8;--bio-primary:#07c;--bio-primary-surface:#e6f4ff;--bio-danger:#e60000;--bio-danger-surface-subtle:#fff0f0;--bio-selected-surface:var(--bio-surface-medium);--bio-selected-text:var(--bio-text);--bio-focus:#07c;--bio-focus-surface:#e6f4ff;--bio-canvas-accent:#07c;--bio-canvas-accent-subtle:#80caff;--bio-shadow:#0000004d;--bio-shadow-subtle:#0000001a;--bio-radius-sm:2px;--bio-radius-md:3px;--bio-radius-lg:4px}.djs-parent{--button-border-radius:var(--bio-radius-md);--input-border-radius:var(--bio-radius-sm);--surface-border-radius:var(--bio-radius-lg);--canvas-fill-color:var(--bio-surface);--accent-color:var(--bio-canvas-accent);--bendpoint-fill-color:var(--bio-canvas-accent);--bendpoint-stroke-color:var(--canvas-fill-color);--context-pad-entry-background-color:var(--bio-surface);--context-pad-entry-hover-background-color:var(--bio-surface-medium);--element-dragger-color:var(--accent-color);--element-selected-outline-stroke-color:var(--accent-color);--element-selected-outline-secondary-stroke-color:var(--bio-canvas-accent-subtle);--lasso-fill-color:color-mix(in srgb, var(--bio-canvas-accent) 15%, transparent);--lasso-stroke-color:var(--element-selected-outline-stroke-color);--palette-entry-color:var(--bio-text);--palette-entry-hover-color:var(--bio-primary);--palette-entry-selected-color:var(--bio-primary);--palette-separator-color:var(--bio-border);--palette-toggle-hover-background-color:var(--bio-surface-medium);--palette-background-color:var(--bio-surface-subtle);--palette-border-color:var(--bio-border);--popup-font-family:"IBM Plex Sans", sans-serif;--popup-font-size:14px;--popup-secondary-font-size:.9em;--popup-header-entry-selected-color:var(--bio-primary);--popup-header-font-weight:bolder;--popup-header-group-divider-color:var(--bio-border);--popup-background-color:var(--bio-surface-overlay);--popup-border-color:transparent;--popup-shadow-color:var(--bio-shadow);--popup-scrollbar-thumb-color:#0003;--popup-button-background-color:var(--bio-surface-overlay);--popup-button-hover-background-color:var(--bio-surface-medium);--popup-disabled-color:var(--bio-text-subtle);--popup-description-color:var(--bio-text-subtle);--popup-no-results-color:var(--bio-text-subtlest);--popup-entry-title-color:var(--bio-text-subtlest);--popup-entry-selected-background-color:var(--bio-selected-surface);--popup-entry-selected-color:var(--bio-selected-text);--popup-search-border-color:var(--bio-border);--popup-search-focus-border-color:var(--bio-focus);--popup-search-focus-background-color:var(--bio-focus-surface);--popup-tab-color:var(--bio-text-subtlest);--popup-tab-hover-color:var(--bio-text);--popup-tab-active-color:var(--bio-text);--popup-tab-active-border-color:var(--bio-primary);--popup-tab-strip-border-color:var(--bio-border-disabled);--popup-tab-focus-border-color:var(--bio-focus);--resizer-fill-color:var(--bio-canvas-accent);--resizer-stroke-color:var(--canvas-fill-color);--search-font-family:"IBM Plex Sans", sans-serif;--search-font-size:14px;--search-container-background-color:var(--bio-surface-overlay);--search-shadow-color:var(--bio-shadow);--search-input-border-color:var(--bio-border);--search-input-focus-border-color:var(--bio-focus);--search-input-focus-background-color:var(--bio-primary-surface);--search-result-hover-background-color:var(--bio-surface-medium);--search-result-secondary-color:var(--bio-text-subtlest);--search-preselected-background-color:color-mix(in srgb, var(--bio-canvas-accent) 15%, transparent);--shape-attach-allowed-stroke-color:var(--accent-color);--shape-connect-allowed-fill-color:var(--bio-surface-subtle);--shape-drop-allowed-fill-color:var(--bio-surface-subtle);--shape-drop-not-allowed-fill-color:var(--bio-danger-surface-subtle);--shape-resize-preview-stroke-color:var(--accent-color);--snap-line-stroke-color:color-mix(in srgb, var(--bio-canvas-accent) 30%, transparent);--space-tool-crosshair-stroke-color:var(--bio-text);--tooltip-error-background-color:var(--bio-danger-surface-subtle);--tooltip-error-border-color:var(--bio-danger);--tooltip-error-color:var(--bio-danger);--hover-tooltip-font-family:"IBM Plex Sans", sans-serif;--hover-tooltip-font-size:12px;--hover-tooltip-secondary-font-size:11px;--hover-tooltip-background-color:var(--bio-surface-inverted);--hover-tooltip-color:var(--bio-text-on-inverted);--hover-tooltip-shadow-color:var(--bio-shadow-subtle);--palette-tooltip-shortcut-background-color:var(--bio-surface-inverted-subtle)}.djs-container svg.drop-not-ok{background:var(--shape-drop-not-allowed-fill-color)!important}.djs-container svg.new-parent{background:var(--shape-drop-allowed-fill-color)!important}.djs-container svg:focus{outline-offset:-1px}.djs-outline,.djs-selection-outline{fill:none;shape-rendering:geometricprecision;stroke-width:2px}.djs-outline{visibility:hidden}.djs-selection-outline{stroke:var(--element-selected-outline-stroke-color)}.djs-element.selected .djs-outline{visibility:visible;stroke:var(--element-selected-outline-stroke-color)}.djs-connection.selected .djs-outline{display:none}.djs-multi-select .djs-element.selected .djs-outline,.djs-dragging-active-lasso .djs-element.selected .djs-outline{stroke:var(--element-selected-outline-secondary-stroke-color);display:block}.djs-outline-hidden .djs-outline{display:none!important}.djs-shape.connect-ok .djs-visual>:first-child{fill:var(--shape-connect-allowed-fill-color)!important}.djs-shape.connect-not-ok .djs-visual>:first-child,.djs-shape.drop-not-ok .djs-visual>:first-child{fill:var(--shape-drop-not-allowed-fill-color)!important}.djs-shape.new-parent .djs-visual>:first-child{fill:var(--shape-drop-allowed-fill-color)!important}.drop-not-ok,.connect-not-ok,.drop-not-ok *,.connect-not-ok *{cursor:not-allowed!important}.drop-ok,.connect-ok,.drop-ok *,.connect-ok *{cursor:default!important}.djs-element.attach-ok .djs-visual>:first-child{stroke-width:5px!important;stroke:var(--shape-attach-allowed-stroke-color)!important}.djs-frame.connect-not-ok .djs-visual>:first-child,.djs-frame.drop-not-ok .djs-visual>:first-child{stroke-width:3px!important;stroke:var(--shape-drop-not-allowed-fill-color)!important;fill:none!important}.djs-lasso-overlay{fill:var(--lasso-fill-color);stroke:var(--lasso-stroke-color);stroke-width:2px;shape-rendering:geometricprecision;pointer-events:none}.djs-resize-overlay{fill:none;stroke-dasharray:5 1 3 1;stroke:var(--shape-resize-preview-stroke-color);pointer-events:none}.djs-resizer-hit{fill:none;pointer-events:all}.djs-resizer-visual{fill:var(--resizer-fill-color);stroke-width:1px;stroke:var(--resizer-stroke-color);shape-rendering:geometricprecision}.djs-resizer:hover .djs-resizer-visual{stroke:var(--resizer-stroke-color);stroke-opacity:1}.djs-cursor-resize-ns,.djs-resizer-n,.djs-resizer-s{cursor:ns-resize}.djs-cursor-resize-ew,.djs-resizer-e,.djs-resizer-w{cursor:ew-resize}.djs-cursor-resize-nwse,.djs-resizer-nw,.djs-resizer-se{cursor:nwse-resize}.djs-cursor-resize-nesw,.djs-resizer-ne,.djs-resizer-sw{cursor:nesw-resize}.djs-shape.djs-resizing>.djs-outline{visibility:hidden!important}.djs-shape.djs-resizing>.djs-resizer,.djs-dragger>.djs-resizer{visibility:hidden}.djs-dragger *{fill:none!important;stroke:var(--element-dragger-color)!important}.djs-dragger tspan,.djs-dragger text,.djs-dragger marker circle,.djs-dragger marker path,.djs-dragger marker polygon,.djs-dragger marker polyline,.djs-dragger marker rect{fill:var(--element-dragger-color)!important;stroke:none!important}.djs-dragger marker text,.djs-dragger marker tspan{fill:none!important;stroke:var(--element-dragger-color)!important}.djs-dragging,.djs-dragging>*{opacity:.3!important;pointer-events:none!important}.djs-visual,.djs-outline{pointer-events:none}.djs-element.attach-ok .djs-hit{stroke-width:60px!important}.djs-element>.djs-hit-all,.djs-element>.djs-hit-no-move{pointer-events:all}.djs-element>.djs-hit-stroke,.djs-element>.djs-hit-click-stroke{pointer-events:stroke}.djs-connection .djs-visual{stroke-width:2px;fill:none}.djs-cursor-grab{cursor:-webkit-grab;cursor:-moz-grab;cursor:grab}.djs-cursor-grabbing{cursor:-webkit-grabbing;cursor:-moz-grabbing;cursor:grabbing}.djs-cursor-crosshair{cursor:crosshair}.djs-cursor-move{cursor:move}.djs-cursor-resize-ns{cursor:ns-resize}.djs-cursor-resize-ew{cursor:ew-resize}.djs-snap-line{stroke:var(--snap-line-stroke-color);stroke-linecap:round;stroke-width:2px;pointer-events:none}.djs-crosshair{stroke:var(--space-tool-crosshair-stroke-color);stroke-linecap:round;stroke-width:1px;pointer-events:none;shape-rendering:geometricprecision;stroke-dasharray:5 5}.djs-palette{box-sizing:border-box;width:48px;position:absolute;top:20px;left:20px}.djs-palette .separator{border:none;border-bottom:solid 1px var(--palette-separator-color);clear:both;margin:5px;padding-top:5px}.djs-palette .entry:before{vertical-align:initial}.djs-palette .djs-palette-toggle{cursor:pointer}.djs-palette .entry,.djs-palette .djs-palette-toggle{color:var(--palette-entry-color);text-align:center;font-size:30px}.djs-palette .entry{float:left}.djs-palette .entry img{max-width:100%}.djs-palette .djs-palette-entries:after{content:"";clear:both;display:table}.djs-palette .djs-palette-toggle:hover{background:var(--palette-toggle-hover-background-color)}.djs-palette .entry:hover{color:var(--palette-entry-hover-color)}.djs-palette .highlighted-entry{color:var(--palette-entry-selected-color)!important}.djs-palette .entry,.djs-palette .djs-palette-toggle{cursor:default;width:46px;height:46px;line-height:46px}.djs-palette.two-column.open{width:94px}.djs-palette:not(.open) .djs-palette-entries{display:none}.djs-palette:not(.open){overflow:hidden}.djs-palette.open .djs-palette-toggle{display:none}.djs-hover-tooltip{z-index:1000;border-radius:var(--surface-border-radius);background-color:var(--hover-tooltip-background-color);color:var(--hover-tooltip-color);font-family:var(--hover-tooltip-font-family);font-size:var(--hover-tooltip-font-size);white-space:nowrap;pointer-events:none;box-shadow:0 1px 4px var(--hover-tooltip-shadow-color);align-items:center;gap:6px;padding:6px 10px;line-height:1.2;display:flex;position:fixed}.djs-hover-tooltip--right{transform:translateY(-50%)}.djs-hover-tooltip--top{transform:translate(-50%,-100%)}.djs-palette-tooltip-shortcut{border-radius:var(--button-border-radius);background-color:var(--palette-tooltip-shortcut-background-color);font-family:monospace;font-size:var(--hover-tooltip-secondary-font-size);padding:1px 5px;line-height:1.2}.djs-context-pad{pointer-events:none;z-index:100;width:72px;line-height:1;display:none;position:absolute}.djs-context-pad .entry{text-align:center;cursor:default;background-color:var(--context-pad-entry-background-color);width:22px;height:22px;box-shadow:0 0 2px 1px var(--context-pad-entry-background-color);pointer-events:all;vertical-align:middle;border-radius:3px;margin:0 2px 2px 0;font-size:22px;display:inline-block}.djs-context-pad .entry:hover{background:var(--context-pad-entry-hover-background-color)}.djs-context-pad.open{display:block}.djs-popup{box-sizing:border-box;background:var(--popup-background-color);z-index:200;box-shadow:0px 2px 6px var(--popup-shadow-color);border:solid 1px var(--popup-border-color);min-width:120px;max-width:300px;line-height:1;font-size:var(--popup-font-size);font-family:var(--popup-font-family);outline:none;position:fixed;overflow:hidden}.djs-popup-search input{box-sizing:border-box;width:100%;font-size:var(--popup-font-size);border-radius:var(--input-border-radius);border:solid 1px var(--popup-search-border-color);padding:3px 6px 3px 28px;line-height:21px}.djs-popup-search input:focus{background-color:var(--popup-search-focus-background-color);border:solid 1px var(--popup-search-focus-border-color);outline:none}.djs-popup-header{align-items:stretch;margin:10px 12px;line-height:20px;display:flex}.djs-popup-header .entry{border-radius:2px}.djs-popup button.entry{background:0 0;border:0;padding:0}.djs-popup-header .entry.active{color:var(--popup-header-entry-selected-color)}.djs-popup-header .entry.disabled{color:inherit}.djs-popup-header-group{flex-direction:row;align-items:center;margin:0;padding:0;list-style:none;display:flex}.djs-popup-header-group .entry{flex-direction:row;align-items:center;display:flex}.djs-popup-header-group+.djs-popup-header-group:before{content:"";background:var(--popup-header-group-divider-color);width:1px;height:20px;margin:0 5px}.djs-popup-search{width:auto;margin:10px 12px;position:relative}.djs-popup-tabs-container{border-bottom:solid 1px var(--popup-tab-strip-border-color);position:relative}.djs-popup-tabs-scroll{appearance:none;width:28px;color:var(--popup-tab-color);cursor:pointer;border:none;border-radius:0;align-items:center;padding:0;display:flex;position:absolute;top:0;bottom:1px}.djs-popup-tabs-scroll:hover{color:var(--popup-tab-hover-color)}.djs-popup-tabs-scroll-start{background:linear-gradient(to left, transparent, var(--popup-background-color) 60%);justify-content:flex-start;left:0}.djs-popup-tabs-scroll-end{background:linear-gradient(to right, transparent, var(--popup-background-color) 60%);justify-content:flex-end;right:0}.djs-popup-tabs-scroll-start svg{transform:rotate(180deg)}.djs-popup-tabs{scrollbar-width:none;flex-wrap:nowrap;gap:2px;padding:0 12px;scroll-padding:0 28px;display:flex;overflow:auto hidden}.djs-popup-tabs::-webkit-scrollbar{display:none}.djs-popup-tab{appearance:none;font:inherit;font-size:var(--popup-font-size);color:var(--popup-tab-color);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-bottom:2px solid #0000;border-radius:0;flex:none;padding:6px 10px}.djs-popup-tab:hover{color:var(--popup-tab-hover-color)}.djs-popup-tab:focus-visible{outline:solid 1px var(--popup-tab-focus-border-color);outline-offset:-2px}.djs-popup-tab[aria-selected=true]{color:var(--popup-tab-active-color);border-bottom-color:var(--popup-tab-active-border-color);font-weight:var(--popup-header-font-weight)}.djs-popup-title{font-size:var(--popup-font-size);font-weight:var(--popup-header-font-weight);flex:1;margin:0}.djs-popup-breadcrumbs{margin:10px 12px;line-height:20px;display:flex}.djs-popup-breadcrumbs-item{appearance:none;min-width:0;color:var(--popup-description-color);font:inherit;cursor:pointer;text-overflow:ellipsis;white-space:nowrap;background:0 0;border:0;outline:none;margin:0;padding:0;display:inline-flex;overflow:hidden}.djs-popup-breadcrumbs-item--separator:before{content:"/";color:var(--popup-description-color);margin:0 4px;display:inline-block}.djs-popup-breadcrumbs-item:hover{color:inherit;text-decoration:underline}.djs-popup-breadcrumbs-item:focus-visible{outline:1px solid var(--popup-search-focus-border-color);outline-offset:2px}.djs-popup-breadcrumbs-item--back{border:1px solid var(--popup-search-border-color);border-radius:4px;flex-shrink:0;justify-content:center;align-items:center;margin-right:6px;padding:2px 3px}.djs-popup-breadcrumbs-item--back:hover{background:var(--popup-button-hover-background-color)}.djs-popup-breadcrumbs-item--current{font-weight:var(--popup-header-font-weight);color:inherit;cursor:default}.djs-popup-breadcrumbs-item--current:hover{text-decoration:none}.djs-popup-entry-actions{flex-shrink:0;align-items:center;gap:6px;margin-left:6px;display:flex}.djs-popup-entry-chevron{color:var(--popup-description-color);align-items:center;display:flex}.djs-popup-search-icon{position:absolute;top:7px;left:8px}.djs-popup-search-count{font-size:var(--popup-secondary-font-size);color:var(--popup-description-color);margin:0 12px}.djs-popup-results{max-height:280px;margin:7px 3px 7px 12px;padding-right:9px;list-style:none;overflow:auto}.djs-popup-results:focus{outline:none}.djs-popup-group{width:100%;margin:0;padding:0}.djs-popup-body .entry,.djs-popup-body .entry-header{cursor:default;border-radius:4px;padding:5px 7px}.djs-popup-body .entry-header{font-weight:var(--popup-header-font-weight);color:var(--popup-entry-title-color);padding-left:0}.djs-popup [class*=icon] .djs-popup-label,.djs-popup-label:not(:first-child){margin-left:.5em}.djs-popup [class*=icon]:before,.djs-popup-entry-icon{vertical-align:middle;width:1em;height:1em;font-size:1.4em;display:inline-block}.djs-popup-body .entry-header:not(:first-child){margin-top:8px;margin-bottom:2px}.djs-popup-body .entry{flex-direction:row;align-items:stretch;height:min-content;display:flex}.djs-popup .entry.selected{color:var(--popup-entry-selected-color);background-color:var(--popup-entry-selected-background-color)}.djs-popup .entry.disabled{color:var(--popup-disabled-color);cursor:not-allowed}.djs-popup-body .entry:not(:first-child){margin-top:2px}.djs-popup-entry-content{flex-direction:column;flex:1;display:flex}.djs-popup-entry-description{font-size:var(--popup-secondary-font-size);color:var(--popup-description-color);margin-top:.25em}.djs-popup-label,.djs-popup-entry-description{line-height:1.4em}.djs-popup .entry,.djs-popup .entry-header{margin:1px}.djs-popup-body{flex-direction:column;width:auto}.djs-popup ::-webkit-scrollbar{width:6px}.djs-popup ::-webkit-scrollbar-thumb{background-color:var(--popup-scrollbar-thumb-color);border-radius:3px}.djs-popup ::-webkit-scrollbar-track{box-shadow:none;background:0 0;margin:0;padding:5px}.djs-popup-no-results{color:var(--popup-no-results-color);padding:0 12px 12px}.djs-popup-footer{border-top:solid 1px var(--popup-border-color);padding:5px 12px 7px;display:flex}.djs-popup--pointer .djs-popup-footer{display:none}.djs-popup-entry-docs{visibility:hidden;color:var(--popup-description-color);background:var(--popup-button-background-color);border:1px solid var(--popup-search-border-color);cursor:pointer;border-radius:4px;flex-shrink:0;justify-content:center;align-items:center;padding:2px 3px;transition:background-color .12s,border-color .12s,color .12s;display:flex}.djs-popup--pointer .djs-popup-body .entry:hover .djs-popup-entry-docs{visibility:visible}.djs-popup-body .entry .djs-popup-entry-docs:hover{background:var(--popup-button-hover-background-color)}.djs-popup-entry-docs svg{vertical-align:middle}.djs-popup-footer-docs{font-size:var(--popup-secondary-font-size);color:var(--popup-description-color);align-items:center;gap:3px;text-decoration:none;display:inline-flex}.djs-popup-footer-docs:hover{text-decoration:underline}.djs-popup-footer-docs svg{vertical-align:middle;margin:2px}.djs-palette{background:var(--palette-background-color);border:solid 1px var(--palette-border-color);border-radius:var(--surface-border-radius)}.djs-segment-dragger,.djs-bendpoint{display:none}.djs-segment-dragger .djs-visual{fill:var(--bendpoint-fill-color);stroke:var(--bendpoint-stroke-color);stroke-width:1px;stroke-opacity:1;display:none}.djs-segment-dragger:hover .djs-visual{display:block}.djs-bendpoint .djs-visual{fill:var(--bendpoint-fill-color);stroke:var(--bendpoint-stroke-color);stroke-width:1px}.djs-segment-dragger:hover,.djs-bendpoints.hover .djs-segment-dragger,.djs-bendpoints.selected .djs-segment-dragger,.djs-bendpoint:hover,.djs-bendpoints.hover .djs-bendpoint,.djs-bendpoints.selected .djs-bendpoint{display:block}.djs-drag-active .djs-bendpoints *,.djs-bendpoints:not(.hover) .floating,.djs-bendpoint.floating:not(.positioned){display:none}.djs-segment-dragger:hover .djs-visual,.djs-segment-dragger.djs-dragging .djs-visual,.djs-bendpoint:hover .djs-visual,.djs-bendpoint.floating .djs-visual{fill:var(--bendpoint-fill-color);stroke:var(--bendpoint-stroke-color);stroke-opacity:1}.djs-bendpoint.floating .djs-hit{pointer-events:none}.djs-segment-dragger .djs-hit,.djs-bendpoint .djs-hit{fill:none;pointer-events:all}.djs-segment-dragger.horizontal .djs-hit{cursor:ns-resize}.djs-segment-dragger.vertical .djs-hit{cursor:ew-resize}.djs-segment-dragger.djs-dragging .djs-hit{pointer-events:none}.djs-updating,.djs-updating>*{pointer-events:none!important}.djs-updating .djs-context-pad,.djs-updating .djs-outline,.djs-updating .djs-bendpoint,.djs-multi-select .djs-bendpoint,.djs-multi-select .djs-segment-dragger,.connect-ok .djs-bendpoint,.connect-not-ok .djs-bendpoint,.drop-ok .djs-bendpoint,.drop-not-ok .djs-bendpoint{display:none!important}.djs-segment-dragger.djs-dragging,.djs-bendpoint.djs-dragging{opacity:1;display:block}.djs-tooltip-error{background:var(--tooltip-error-background-color);border:solid 1px var(--tooltip-error-border-color);border-radius:var(--surface-border-radius);width:160px;color:var(--tooltip-error-color);opacity:.75;padding:6px;font-size:12px;line-height:16px}.djs-tooltip-error:hover{opacity:1}.djs-search-open .djs-context-pad{display:none}.djs-search-open .djs-connection.selected .djs-outline{display:block}.djs-search-container{z-index:10;width:25%;min-width:300px;max-width:400px;font-family:var(--search-font-family);font-size:var(--search-font-size);border-radius:var(--surface-border-radius);box-shadow:0px 2px 6px var(--search-shadow-color);margin-left:auto;margin-right:auto;position:absolute;top:20px;left:0;right:0}.djs-search-container:not(.open){display:none}.djs-search-input{position:relative}.djs-search-input svg{position:absolute;top:7px;left:8px}.djs-search-input input{font-size:var(--search-font-size);border:1px solid var(--search-input-border-color);border-radius:var(--input-border-radius);box-sizing:border-box;width:100%;padding:3px 6px 3px 28px;line-height:21px}.djs-search-input input:focus{background-color:var(--search-input-focus-background-color);border:solid 1px var(--search-input-focus-border-color);outline:none}.djs-search-results{background:var(--search-container-background-color);max-height:200px;position:relative;overflow-y:auto}.djs-search-result{padding:6px 8px}.djs-search-result-primary{text-overflow:ellipsis;white-space:nowrap;margin:0 0 3px;overflow:hidden}.djs-search-result-secondary{text-overflow:ellipsis;white-space:nowrap;color:var(--search-result-secondary-color);margin:0;font-family:monospace;overflow:hidden}.djs-search-result:hover,.djs-search-result-selected,.djs-search-result-selected:hover{background:var(--search-result-hover-background-color)}.djs-search-open .djs-element .djs-outline{fill:var(--search-preselected-background-color)!important}.djs-element-hidden,.djs-element-hidden .djs-hit,.djs-element-hidden .djs-outline,.djs-label-hidden .djs-label{display:none!important}.djs-element .djs-hit-stroke,.djs-element .djs-hit-click-stroke,.djs-element .djs-hit-all{cursor:move}.cd-c-fill-grund{fill:var(--cd-ui-grund)!important}.cd-c-fill-plot{fill:var(--cd-ui-plot)!important}.cd-c-stroke-plot{stroke:var(--cd-ui-plot)!important}.cd-c-stroke-grund{stroke:var(--cd-ui-grund)!important}.cd-c-fill-flaeche-hoch{fill:var(--cd-ui-flaeche-hoch)!important}.cd-c-stroke-text{stroke:var(--cd-ui-text)!important}.cd-c-fill-text{fill:var(--cd-ui-text)!important}.cd-c-fill-text-leise{fill:var(--cd-ui-text-leise)!important}.cd-c-stroke-kontur{stroke:var(--cd-ui-kontur)!important}.cd-c-stroke-linie{stroke:var(--cd-ui-linie)!important}.cd-c-fill-linie{fill:var(--cd-ui-linie)!important}.cd-c-stroke-interaktion{stroke:var(--cd-ui-interaktion)!important}.cd-c-stroke-danger{stroke:var(--cd-ui-danger)!important}.cd-c-fill-danger{fill:var(--cd-ui-danger)!important}.cd-c-stroke-info{stroke:var(--cd-ui-info)!important}@media screen{[data-cd-theme=dark] .cd-c-bereich{fill:none!important}[data-cd-theme=dark] .cd-c-bereich-success{stroke:var(--cd-ui-success)!important}[data-cd-theme=dark] .cd-c-bereich-warning{stroke:var(--cd-ui-warning)!important}[data-cd-theme=dark] .cd-c-bereich-info{stroke:var(--cd-ui-info)!important}[data-cd-theme=dark] .cd-c-unterleger{stroke:var(--cd-ui-kontur)!important}}@media screen and (prefers-color-scheme:dark){[data-cd-theme=system] .cd-c-bereich{fill:none!important}[data-cd-theme=system] .cd-c-bereich-success{stroke:var(--cd-ui-success)!important}[data-cd-theme=system] .cd-c-bereich-warning{stroke:var(--cd-ui-warning)!important}[data-cd-theme=system] .cd-c-bereich-info{stroke:var(--cd-ui-info)!important}[data-cd-theme=system] .cd-c-unterleger{stroke:var(--cd-ui-kontur)!important}}:root,[data-cd-theme],.bio-theme-parent.bio-theme-parent{--bio-surface:var(--cd-ui-flaeche-hoch);--bio-surface-overlay:var(--cd-ui-flaeche-hoch);--bio-surface-subtle:var(--cd-ui-flaeche-hoch);--bio-surface-medium:var(--cd-ui-hover);--bio-surface-inverted:var(--cd-ui-flaeche-hoch);--bio-surface-inverted-subtle:var(--cd-ui-hover);--bio-text:var(--cd-ui-text);--bio-text-subtle:var(--cd-ui-text-leise);--bio-text-subtlest:var(--cd-ui-text-leise);--bio-text-on-inverted:var(--cd-ui-text);--bio-border:var(--cd-ui-linie);--bio-border-disabled:var(--cd-ui-linie);--bio-primary:var(--cd-ui-interaktion);--bio-primary-surface:var(--cd-ui-hover);--bio-text-on-primary:var(--cd-weiss);--bio-danger:var(--cd-ui-danger);--bio-danger-surface-subtle:var(--cd-ui-danger-flaeche);--bio-selected-surface:var(--cd-ui-hover);--bio-selected-text:var(--cd-ui-text);--bio-focus:var(--cd-ui-fokus);--bio-focus-surface:var(--cd-ui-hover);--bio-canvas-accent:var(--cd-ui-interaktion);--bio-canvas-accent-subtle:var(--cd-ui-interaktion);--bio-shadow:color-mix(in srgb, var(--cd-schwarz) 30%, transparent);--bio-shadow-subtle:color-mix(in srgb, var(--cd-schwarz) 10%, transparent);--bio-radius-sm:var(--cd-radius-sm);--bio-radius-md:var(--cd-radius-md);--bio-radius-lg:var(--cd-radius-lg)}.djs-parent.djs-parent{--canvas-fill-color:var(--cd-ui-grund);--lasso-fill-color:transparent;--search-preselected-background-color:var(--cd-ui-hover);--snap-line-stroke-color:var(--cd-ui-kontur);--resizer-fill-color:var(--cd-ui-plot);--resizer-stroke-color:var(--cd-ui-interaktion);--bendpoint-fill-color:var(--cd-ui-plot);--bendpoint-stroke-color:var(--cd-ui-interaktion);--shape-connect-allowed-fill-color:var(--cd-ui-hover);--shape-drop-allowed-fill-color:var(--cd-ui-hover);--popup-border-color:var(--cd-ui-linie);--popup-scrollbar-thumb-color:var(--cd-ui-linie);--popup-font-family:"Geist Variable", "Geist", ui-sans-serif, system-ui, sans-serif;--search-font-family:var(--popup-font-family);--hover-tooltip-font-family:var(--popup-font-family)}.djs-parent.djs-parent .djs-shape.drop-not-ok .djs-visual>:first-child,.djs-parent.djs-parent .djs-shape.connect-not-ok .djs-visual>:first-child{stroke:var(--cd-ui-danger)!important;stroke-dasharray:6 4!important}.djs-parent.djs-parent svg.drop-not-ok{outline:2px dashed var(--cd-ui-danger);outline-offset:-2px}.djs-parent.djs-parent .djs-tooltip-error{opacity:1}.bjs-container.bjs-container{--accent-color:var(--cd-ui-interaktion);--breadcrumbs-item-color:var(--cd-ui-link);--breadcrumbs-background-color:var(--cd-ui-flaeche-hoch);--breadcrumbs-border-color:var(--cd-ui-linie);--drilldown-background-color:var(--cd-blau);--drilldown-fill-color:var(--cd-weiss)}.tt-djs-container{isolation:isolate;background-color:var(--cd-ui-grund);background-image:radial-gradient(var(--cd-ui-linie) 1px, transparent 1px);background-size:22px 22px;width:100%;height:100%;font-family:Geist Variable,Geist,ui-sans-serif,system-ui,-apple-system,Segoe UI,sans-serif;position:relative;overflow:hidden}.tt-djs-container:focus,.tt-djs-container:focus-visible,.tt-djs-container svg:focus{outline:none}.tt-djs-container .djs-container>svg.tt-canvas-keyboard-focus{outline:2px solid var(--cd-ui-fokus);outline-offset:-2px}.tt-djs-container .djs-element text{-webkit-user-select:none;user-select:none}.tt-djs-container .djs-shape.hover:not(.selected)>.djs-outline{visibility:visible;stroke:color-mix(in srgb, var(--cd-ui-interaktion) 45%, transparent)}.tt-djs-container .djs-connection.hover .djs-visual>path,.tt-djs-container .djs-connection.selected .djs-visual>path{stroke:var(--cd-ui-interaktion)!important}.tt-djs-container .djs-selection-outline,.tt-djs-container .djs-lasso-overlay{stroke-width:1.5px;stroke-dasharray:5 4}.djs-palette:not([data-chrome=palette]){background:var(--cd-ui-flaeche-hoch);border:1px solid var(--cd-ui-linie);border-radius:var(--cd-radius-md);width:auto;box-shadow:var(--cd-shadow-1);align-items:center;padding:3px;display:flex;top:12px;left:50%;transform:translate(-50%)}.djs-palette:not([data-chrome=palette]).two-column.open{width:auto}.tt-djs-container .djs-palette:not([data-chrome=palette]){z-index:110}.djs-palette:not([data-chrome=palette]) .djs-palette-entries,.djs-palette:not([data-chrome=palette]) .group{flex-direction:row;align-items:center;gap:2px;display:flex}.djs-palette:not([data-chrome=palette]) .entry{float:none;box-sizing:border-box;width:32px;height:32px;font:inherit;appearance:none;border-radius:var(--cd-radius-sm);color:var(--cd-ui-text);transition:background-color var(--cd-motion-fast) var(--cd-ease), color var(--cd-motion-fast) var(--cd-ease), box-shadow var(--cd-motion-fast) var(--cd-ease);background:0 0;border:0;flex:none;justify-content:center;align-items:center;margin:0;padding:0;line-height:1;display:flex;position:relative}.djs-palette:not([data-chrome=palette]) .entry:hover{background:var(--cd-ui-hover);color:var(--cd-ui-interaktion)}.djs-palette:not([data-chrome=palette]) .entry:focus{outline:none}.djs-palette:not([data-chrome=palette]) .entry:focus-visible{outline:2px solid var(--cd-ui-fokus);outline-offset:2px}.djs-palette:not([data-chrome=palette]) .entry.highlighted-entry{background:var(--cd-ui-hover);box-shadow:inset 0 0 0 2px var(--cd-ui-interaktion)}.djs-palette:not([data-chrome=palette]) .group+.group{margin-left:8px;padding-left:8px;position:relative}.djs-palette:not([data-chrome=palette]) .group+.group:before{content:"";background:var(--cd-ui-linie);width:1px;position:absolute;top:4px;bottom:4px;left:0}.tt-palette-svg{pointer-events:none;display:block}.tt-djs-container .djs-hover-tooltip{white-space:normal;border:1px solid var(--cd-ui-linie);width:max-content;max-width:280px;box-shadow:var(--cd-shadow-2);padding:4px 8px;line-height:1.5}.tt-djs-container .djs-hover-tooltip--right{transform:translate(calc(-50% - 24px),28px)}.tt-djs-container .djs-hover-tooltip--bottom{transform:translate(-50%)}.tt-djs-container .djs-palette-tooltip-shortcut{font-family:inherit}@media (max-width:760px){.djs-palette:not([data-chrome=palette]){overscroll-behavior-x:contain;scrollbar-width:none;max-width:calc(100% - 24px);scroll-padding-inline:4px;top:64px;overflow-x:auto}.djs-palette:not([data-chrome=palette])::-webkit-scrollbar{display:none}.djs-palette:not([data-chrome=palette]) .entry:focus-visible{outline-offset:-2px}.tt-djs-container .djs-hover-tooltip--right,.tt-djs-container .djs-hover-tooltip--bottom{max-width:min(280px,100vw - 24px);left:50%!important}.tt-djs-container .djs-hover-tooltip--right{transform:translate(-50%,28px)}}.tt-djs-container .djs-context-pad{width:auto}.tt-djs-container .djs-context-pad .group{background:var(--cd-ui-flaeche-hoch);border:1px solid var(--cd-ui-linie);border-radius:var(--cd-radius-md);width:max-content;box-shadow:var(--cd-shadow-2);pointer-events:auto;flex-direction:column;gap:2px;padding:3px;display:flex}.tt-djs-container .djs-context-pad .group+.group{margin-top:4px}.tt-djs-container .djs-context-pad .entry{box-sizing:border-box;width:28px;height:28px;font:inherit;appearance:none;border-radius:var(--cd-radius-sm);box-shadow:none;color:var(--cd-ui-text);transition:background-color var(--cd-motion-fast) var(--cd-ease), color var(--cd-motion-fast) var(--cd-ease);background:0 0;border:0;justify-content:center;align-items:center;margin:0;padding:0;display:flex}.tt-djs-container .djs-context-pad .entry:hover{background:var(--cd-ui-hover);color:var(--cd-ui-interaktion)}.tt-djs-container .djs-context-pad .entry[data-action=delete]:hover{background:var(--cd-ui-danger-flaeche);color:var(--cd-ui-danger)}.tt-djs-container .djs-context-pad .entry:focus{outline:none}.tt-djs-container .djs-context-pad .entry:focus-visible{outline:2px solid var(--cd-ui-fokus);outline-offset:2px}.tt-djs-container .djs-context-pad .entry svg{display:block}.tt-djs-container .tt-label-editor{z-index:100;box-sizing:border-box;resize:none;white-space:pre-wrap;overflow-wrap:break-word;caret-color:var(--cd-ui-interaktion);background:0 0;border:0;outline:none;margin:0;padding:0;position:absolute;overflow:hidden}.tt-djs-container .tt-label-editor:focus{outline:2px solid var(--cd-ui-fokus);outline-offset:2px;border-radius:var(--cd-radius-sm)}.tt-djs-container .djs-element.tt-label-editing .djs-visual>text{visibility:hidden}[data-cd-kontrast=hoch] .tt-djs-container .djs-context-pad .group,[data-cd-kontrast=hoch] .djs-palette:not([data-chrome=palette]){box-shadow:none}[data-cd-kontrast=hoch] .tt-djs-container .djs-context-pad .entry:focus-visible,[data-cd-kontrast=hoch] .tt-djs-container .tt-label-editor:focus{outline-width:3px}@media (prefers-reduced-motion:reduce){.tt-djs-container *,.tt-djs-container :before,.tt-djs-container :after{transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}}
2
2
  /*$vite$:1*/