@stocksharp/diagram 0.2.3 → 0.4.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 (68) hide show
  1. package/dist/esm/canvas-renderer.js +79 -28
  2. package/dist/esm/canvas-renderer.js.map +1 -1
  3. package/dist/esm/core/action-registry.js +24 -0
  4. package/dist/esm/core/action-registry.js.map +1 -1
  5. package/dist/esm/core/document.js +134 -28
  6. package/dist/esm/core/document.js.map +1 -1
  7. package/dist/esm/core/json.js +17 -0
  8. package/dist/esm/core/json.js.map +1 -0
  9. package/dist/esm/core/model.js +8 -0
  10. package/dist/esm/core/model.js.map +1 -1
  11. package/dist/esm/core/state.js +16 -2
  12. package/dist/esm/core/state.js.map +1 -1
  13. package/dist/esm/diagram/catalog.js +17 -5
  14. package/dist/esm/diagram/catalog.js.map +1 -1
  15. package/dist/esm/diagram/event-emitter.js +10 -0
  16. package/dist/esm/diagram/event-emitter.js.map +1 -1
  17. package/dist/esm/diagram/stocksharp-diagram.js +58 -56
  18. package/dist/esm/diagram/stocksharp-diagram.js.map +1 -1
  19. package/dist/esm/diagram/types.js +2 -1
  20. package/dist/esm/diagram/types.js.map +1 -1
  21. package/dist/esm/embed.js +121 -38
  22. package/dist/esm/embed.js.map +1 -1
  23. package/dist/esm/index.js +1 -1
  24. package/dist/esm/index.js.map +1 -1
  25. package/dist/ssdiagram.js +380 -150
  26. package/dist/ssdiagram.js.map +4 -4
  27. package/dist/types/canvas-renderer.d.ts +11 -6
  28. package/dist/types/canvas-renderer.d.ts.map +1 -1
  29. package/dist/types/core/action-registry.d.ts +7 -0
  30. package/dist/types/core/action-registry.d.ts.map +1 -1
  31. package/dist/types/core/document.d.ts +1 -1
  32. package/dist/types/core/document.d.ts.map +1 -1
  33. package/dist/types/core/json.d.ts +11 -0
  34. package/dist/types/core/json.d.ts.map +1 -0
  35. package/dist/types/core/model.d.ts +45 -2
  36. package/dist/types/core/model.d.ts.map +1 -1
  37. package/dist/types/core/state.d.ts +24 -1
  38. package/dist/types/core/state.d.ts.map +1 -1
  39. package/dist/types/diagram/api.d.ts +6 -6
  40. package/dist/types/diagram/api.d.ts.map +1 -1
  41. package/dist/types/diagram/catalog.d.ts +2 -1
  42. package/dist/types/diagram/catalog.d.ts.map +1 -1
  43. package/dist/types/diagram/event-emitter.d.ts +6 -1
  44. package/dist/types/diagram/event-emitter.d.ts.map +1 -1
  45. package/dist/types/diagram/palette.d.ts +1 -1
  46. package/dist/types/diagram/palette.d.ts.map +1 -1
  47. package/dist/types/diagram/stocksharp-diagram.d.ts +29 -22
  48. package/dist/types/diagram/stocksharp-diagram.d.ts.map +1 -1
  49. package/dist/types/diagram/types.d.ts +4 -4
  50. package/dist/types/diagram/types.d.ts.map +1 -1
  51. package/dist/types/embed.d.ts.map +1 -1
  52. package/dist/types/index.d.ts +3 -3
  53. package/dist/types/index.d.ts.map +1 -1
  54. package/package.json +2 -2
  55. package/src/canvas-renderer.ts +84 -29
  56. package/src/core/action-registry.ts +25 -0
  57. package/src/core/document.ts +147 -31
  58. package/src/core/json.ts +16 -0
  59. package/src/core/model.ts +55 -2
  60. package/src/core/state.ts +41 -3
  61. package/src/diagram/api.ts +6 -5
  62. package/src/diagram/catalog.ts +18 -6
  63. package/src/diagram/event-emitter.ts +12 -1
  64. package/src/diagram/palette.ts +1 -1
  65. package/src/diagram/stocksharp-diagram.ts +79 -76
  66. package/src/diagram/types.ts +6 -5
  67. package/src/embed.ts +140 -39
  68. package/src/index.ts +4 -0
@@ -12,6 +12,30 @@ export class DiagramActionRegistry {
12
12
  this.actions.delete(action.id);
13
13
  };
14
14
  }
15
+ /**
16
+ * Registers one action per id from a table keyed by TId, in key order.
17
+ * Because the table is a total Record, adding a member to TId without adding
18
+ * its action stops compiling instead of producing a command that silently
19
+ * does nothing.
20
+ */
21
+ registerAll(actions) {
22
+ // Object.keys is typed string[] because a value can carry keys beyond the
23
+ // ones its type names. This parameter is a total Record over TId, so its
24
+ // keys are exactly TId.
25
+ const ids = Object.keys(actions);
26
+ // Delegating rather than spreading: a spread would copy own fields and
27
+ // drop the prototype, so a class-based action would register cleanly and
28
+ // then throw on its first call.
29
+ const disposers = ids.map((id) => {
30
+ const action = actions[id];
31
+ return this.register({
32
+ id,
33
+ canExecute: (context) => action.canExecute(context),
34
+ execute: (context) => action.execute(context),
35
+ });
36
+ });
37
+ return () => disposers.forEach((dispose) => dispose());
38
+ }
15
39
  get(id) {
16
40
  return this.actions.get(id) ?? null;
17
41
  }
@@ -1 +1 @@
1
- {"version":3,"file":"action-registry.js","sourceRoot":"","sources":["../../../src/core/action-registry.ts"],"names":[],"mappings":"AAWA,MAAM,OAAO,qBAAqB;IAAlC;QACqB,YAAO,GAAG,IAAI,GAAG,EAAqC,CAAC;IAiC5E,CAAC;IA/BG,QAAQ,CAAC,MAAoC;QACzC,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,mBAAmB,MAAM,CAAC,EAAE,0BAA0B,CAAC,CAAC;QAC5E,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QACpC,OAAO,GAAG,EAAE;YACR,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,MAAM;gBAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC/E,CAAC,CAAC;IACN,CAAC;IAED,GAAG,CAAC,EAAO;QACP,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC;IACxC,CAAC;IAED,MAAM,CAAC,OAAiB;QACpB,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YAC/C,EAAE,EAAE,MAAM,CAAC,EAAE;YACb,OAAO,EAAE,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC;SACtC,CAAC,CAAC,CAAC;IACR,CAAC;IAED,UAAU,CAAC,EAAO,EAAE,OAAiB;QACjC,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC;IAC9D,CAAC;IAED,OAAO,CAAC,EAAO,EAAE,OAAiB;QAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACpC,IAAI,MAAM,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC;YAAE,OAAO,KAAK,CAAC;QACtE,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACxB,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ"}
1
+ {"version":3,"file":"action-registry.js","sourceRoot":"","sources":["../../../src/core/action-registry.ts"],"names":[],"mappings":"AAWA,MAAM,OAAO,qBAAqB;IAAlC;QACqB,YAAO,GAAG,IAAI,GAAG,EAAqC,CAAC;IA0D5E,CAAC;IAxDG,QAAQ,CAAC,MAAoC;QACzC,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,mBAAmB,MAAM,CAAC,EAAE,0BAA0B,CAAC,CAAC;QAC5E,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QACpC,OAAO,GAAG,EAAE;YACR,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,MAAM;gBAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC/E,CAAC,CAAC;IACN,CAAC;IAED;;;;;OAKG;IACH,WAAW,CAAC,OAA8D;QACtE,0EAA0E;QAC1E,yEAAyE;QACzE,wBAAwB;QACxB,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAU,CAAC;QAC1C,uEAAuE;QACvE,yEAAyE;QACzE,gCAAgC;QAChC,MAAM,SAAS,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;YAC7B,MAAM,MAAM,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;YAC3B,OAAO,IAAI,CAAC,QAAQ,CAAC;gBACjB,EAAE;gBACF,UAAU,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC;gBACnD,OAAO,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;aAChD,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,OAAO,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED,GAAG,CAAC,EAAO;QACP,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC;IACxC,CAAC;IAED,MAAM,CAAC,OAAiB;QACpB,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YAC/C,EAAE,EAAE,MAAM,CAAC,EAAE;YACb,OAAO,EAAE,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC;SACtC,CAAC,CAAC,CAAC;IACR,CAAC;IAED,UAAU,CAAC,EAAO,EAAE,OAAiB;QACjC,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC;IAC9D,CAAC;IAED,OAAO,CAAC,EAAO,EAAE,OAAiB;QAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACpC,IAAI,MAAM,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC;YAAE,OAAO,KAAK,CAAC;QACtE,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACxB,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ"}
@@ -1,3 +1,5 @@
1
+ import { setJsonKey } from './json.js';
2
+ import { toPortDynamicMode } from './model.js';
1
3
  import { DIAGRAM_DOCUMENT_VERSION, } from './model.js';
2
4
  export { DIAGRAM_DOCUMENT_VERSION } from './model.js';
3
5
  export class DiagramDocumentError extends Error {
@@ -8,33 +10,51 @@ export class DiagramDocumentError extends Error {
8
10
  }
9
11
  }
10
12
  export function createDiagramDocument(input = {}) {
11
- const nodes = (input.nodes ?? []).map((node, index) => normalizeNode(node, `$.nodes[${index}]`));
13
+ // DiagramDocumentInput is a structural interface, so its shape is a claim by
14
+ // the caller, not a guarantee. Elements are checked the same way parsed ones
15
+ // are, otherwise a malformed one surfaces as a TypeError naming no path.
16
+ const rawNodes = mapElements(input.nodes, '$.nodes');
17
+ const rawLinks = mapElements(input.links, '$.links');
18
+ const nodes = rawNodes.map((node, index) => normalizeNode(node, `$.nodes[${index}]`));
12
19
  const usedLinkIds = new Set();
13
- for (let index = 0; index < (input.links ?? []).length; index++) {
14
- const id = input.links?.[index].id;
15
- if (id === undefined)
20
+ for (let index = 0; index < rawLinks.length; index++) {
21
+ const raw = rawLinks[index].id;
22
+ if (raw === undefined)
16
23
  continue;
17
- requireIdentifier(id, `$.links[${index}].id`);
24
+ const id = requireIdentifier(raw, `$.links[${index}].id`);
18
25
  if (usedLinkIds.has(id)) {
19
26
  throw new DiagramDocumentError(`duplicate link id "${id}"`, `$.links[${index}].id`);
20
27
  }
21
28
  usedLinkIds.add(id);
22
29
  }
23
30
  let sequence = 1;
24
- const links = (input.links ?? []).map((link, index) => {
31
+ const links = rawLinks.map((link, index) => {
25
32
  let id = link.id;
26
33
  if (id === undefined) {
34
+ let generated;
27
35
  do
28
- id = `link_${sequence++}`;
29
- while (usedLinkIds.has(id));
30
- usedLinkIds.add(id);
36
+ generated = `link_${sequence++}`;
37
+ while (usedLinkIds.has(generated));
38
+ usedLinkIds.add(generated);
39
+ id = generated;
31
40
  }
32
41
  return normalizeLink({ ...link, id }, `$.links[${index}]`);
33
42
  });
43
+ const rawZones = mapElements(input.zones, '$.zones');
44
+ const usedZoneIds = new Set();
45
+ const zones = rawZones.map((zone, index) => {
46
+ const normalized = normalizeZone(zone, `$.zones[${index}]`);
47
+ if (usedZoneIds.has(normalized.id)) {
48
+ throw new DiagramDocumentError(`duplicate zone id "${normalized.id}"`, `$.zones[${index}].id`);
49
+ }
50
+ usedZoneIds.add(normalized.id);
51
+ return normalized;
52
+ });
34
53
  const document = {
35
54
  version: DIAGRAM_DOCUMENT_VERSION,
36
55
  nodes,
37
56
  links,
57
+ zones,
38
58
  metadata: cloneJsonObject(input.metadata ?? {}, '$.metadata'),
39
59
  };
40
60
  validateDocument(document);
@@ -57,7 +77,7 @@ export function parseDiagramDocument(source) {
57
77
  throw new DiagramDocumentError(reason);
58
78
  }
59
79
  }
60
- const root = requireObject(value, '$');
80
+ const root = requireStructure(value, '$');
61
81
  const version = requireNumber(root.version, '$.version');
62
82
  if (version !== DIAGRAM_DOCUMENT_VERSION) {
63
83
  throw new DiagramDocumentError(`unsupported document version ${version}`, '$.version');
@@ -66,12 +86,18 @@ export function parseDiagramDocument(source) {
66
86
  version: DIAGRAM_DOCUMENT_VERSION,
67
87
  nodes: requireArray(root.nodes, '$.nodes').map((node, index) => parseNode(node, `$.nodes[${index}]`)),
68
88
  links: requireArray(root.links, '$.links').map((link, index) => parseLink(link, `$.links[${index}]`)),
89
+ // Zones arrived after the first documents were written, so their absence is not a fault:
90
+ // an older file simply has none, and reading it must not need a migration step.
91
+ zones: root.zones === undefined || root.zones === null
92
+ ? []
93
+ : requireArray(root.zones, '$.zones').map((zone, index) => normalizeZone(zone, `$.zones[${index}]`)),
69
94
  metadata: cloneJsonObject(root.metadata, '$.metadata'),
70
95
  };
71
96
  validateDocument(document);
72
97
  return document;
73
98
  }
74
- function normalizeNode(input, path) {
99
+ function normalizeNode(value, path) {
100
+ const input = requireStructure(value, path);
75
101
  const id = requireIdentifier(input.id, `${path}.id`);
76
102
  return {
77
103
  id,
@@ -86,28 +112,34 @@ function normalizeNode(input, path) {
86
112
  icon: requireString(input.icon ?? '', `${path}.icon`),
87
113
  message: requireString(input.message ?? '', `${path}.message`),
88
114
  openAction: requireString(input.openAction ?? '', `${path}.openAction`),
89
- inPorts: (input.inPorts ?? []).map((port, index) => normalizePort(port, `${path}.inPorts[${index}]`)),
90
- outPorts: (input.outPorts ?? []).map((port, index) => normalizePort(port, `${path}.outPorts[${index}]`)),
91
- parameters: (input.parameters ?? []).map((parameter, index) => normalizeParameter(parameter, `${path}.parameters[${index}]`)),
115
+ inPorts: mapElements(input.inPorts, `${path}.inPorts`)
116
+ .map((port, index) => normalizePort(port, `${path}.inPorts[${index}]`)),
117
+ outPorts: mapElements(input.outPorts, `${path}.outPorts`)
118
+ .map((port, index) => normalizePort(port, `${path}.outPorts[${index}]`)),
119
+ parameters: mapElements(input.parameters, `${path}.parameters`)
120
+ .map((parameter, index) => normalizeParameter(parameter, `${path}.parameters[${index}]`)),
92
121
  paramValues: cloneStringRecord(input.paramValues ?? {}, `${path}.paramValues`),
93
122
  metadata: cloneJsonObject(input.metadata ?? {}, `${path}.metadata`),
94
123
  };
95
124
  }
96
- function normalizePort(input, path) {
125
+ function normalizePort(value, path) {
126
+ const input = requireStructure(value, path);
97
127
  return {
98
128
  id: requireIdentifier(input.id, `${path}.id`),
99
129
  name: requireString(input.name, `${path}.name`),
100
130
  description: requireString(input.description ?? '', `${path}.description`),
101
131
  type: requireString(input.type ?? '', `${path}.type`),
102
132
  maxLinks: requireNonNegativeInteger(input.maxLinks ?? 0, `${path}.maxLinks`),
103
- availableTypes: (input.availableTypes ?? []).map((type, index) => requireString(type, `${path}.availableTypes[${index}]`)),
133
+ availableTypes: requireArray(input.availableTypes ?? [], `${path}.availableTypes`)
134
+ .map((type, index) => requireString(type, `${path}.availableTypes[${index}]`)),
104
135
  isDynamic: requireBoolean(input.isDynamic ?? false, `${path}.isDynamic`),
105
- dynamicMode: requireString(input.dynamicMode ?? '', `${path}.dynamicMode`),
136
+ dynamicMode: requirePortDynamicMode(input.dynamicMode ?? '', `${path}.dynamicMode`),
106
137
  isSibling: requireBoolean(input.isSibling ?? false, `${path}.isSibling`),
107
138
  metadata: cloneJsonObject(input.metadata ?? {}, `${path}.metadata`),
108
139
  };
109
140
  }
110
- function normalizeParameter(input, path) {
141
+ function normalizeParameter(value, path) {
142
+ const input = requireStructure(value, path);
111
143
  return {
112
144
  name: requireIdentifier(input.name, `${path}.name`),
113
145
  displayName: requireString(input.displayName, `${path}.displayName`),
@@ -123,22 +155,56 @@ function normalizeParameter(input, path) {
123
155
  editorType: requireString(input.editorType, `${path}.editorType`),
124
156
  };
125
157
  }
126
- function normalizeLink(input, path) {
158
+ function normalizeLink(value, path) {
159
+ const input = requireStructure(value, path);
127
160
  return {
128
161
  id: requireIdentifier(input.id, `${path}.id`),
129
162
  from: normalizeEndpoint(input.from, `${path}.from`),
130
163
  to: normalizeEndpoint(input.to, `${path}.to`),
164
+ style: requireLinkStyle(input.style, `${path}.style`),
165
+ metadata: cloneJsonObject(input.metadata ?? {}, `${path}.metadata`),
166
+ };
167
+ }
168
+ // A style the caller misspelled is a drawing that quietly loses its meaning, so it is refused
169
+ // rather than defaulted - unlike an absent one, which simply means a plain line.
170
+ function requireLinkStyle(value, path) {
171
+ if (value === undefined || value === null)
172
+ return 'solid';
173
+ if (value !== 'solid' && value !== 'dashed') {
174
+ throw new DiagramDocumentError(`unknown link style "${String(value)}"`, path);
175
+ }
176
+ return value;
177
+ }
178
+ function normalizeZone(value, path) {
179
+ const input = requireStructure(value, path);
180
+ return {
181
+ id: requireIdentifier(input.id, `${path}.id`),
182
+ name: requireString(input.name, `${path}.name`),
183
+ x: requireNumber(input.x, `${path}.x`),
184
+ y: requireNumber(input.y, `${path}.y`),
185
+ width: requirePositiveSize(input.width, `${path}.width`),
186
+ height: requirePositiveSize(input.height, `${path}.height`),
187
+ color: input.color === undefined || input.color === null ? '' : requireString(input.color, `${path}.color`),
131
188
  metadata: cloneJsonObject(input.metadata ?? {}, `${path}.metadata`),
132
189
  };
133
190
  }
134
- function normalizeEndpoint(input, path) {
191
+ // A zone with no area cannot be pointed at, and a negative one paints outside itself, so the
192
+ // size is refused rather than clamped - a caller that computed it wrong wants to hear about it.
193
+ function requirePositiveSize(value, path) {
194
+ const size = requireNumber(value, path);
195
+ if (!(size > 0))
196
+ throw new DiagramDocumentError('size must be greater than zero', path);
197
+ return size;
198
+ }
199
+ function normalizeEndpoint(value, path) {
200
+ const input = requireStructure(value, path);
135
201
  return {
136
202
  nodeId: requireIdentifier(input.nodeId, `${path}.nodeId`),
137
203
  portId: requireIdentifier(input.portId, `${path}.portId`),
138
204
  };
139
205
  }
140
206
  function parseNode(value, path) {
141
- const node = requireObject(value, path);
207
+ const node = requireStructure(value, path);
142
208
  return normalizeNode({
143
209
  id: requireString(node.id, `${path}.id`),
144
210
  typeId: requireString(node.typeId, `${path}.typeId`),
@@ -160,7 +226,7 @@ function parseNode(value, path) {
160
226
  }, path);
161
227
  }
162
228
  function parsePort(value, path) {
163
- const port = requireObject(value, path);
229
+ const port = requireStructure(value, path);
164
230
  return normalizePort({
165
231
  id: requireString(port.id, `${path}.id`),
166
232
  name: requireString(port.name, `${path}.name`),
@@ -169,13 +235,13 @@ function parsePort(value, path) {
169
235
  maxLinks: requireNumber(port.maxLinks, `${path}.maxLinks`),
170
236
  availableTypes: requireArray(port.availableTypes, `${path}.availableTypes`).map((type, index) => requireString(type, `${path}.availableTypes[${index}]`)),
171
237
  isDynamic: requireBoolean(port.isDynamic, `${path}.isDynamic`),
172
- dynamicMode: requireString(port.dynamicMode, `${path}.dynamicMode`),
238
+ dynamicMode: requirePortDynamicMode(port.dynamicMode, `${path}.dynamicMode`),
173
239
  isSibling: requireBoolean(port.isSibling, `${path}.isSibling`),
174
240
  metadata: cloneJsonObject(port.metadata, `${path}.metadata`),
175
241
  }, path);
176
242
  }
177
243
  function parseParameter(value, path) {
178
- const parameter = requireObject(value, path);
244
+ const parameter = requireStructure(value, path);
179
245
  return normalizeParameter({
180
246
  name: requireString(parameter.name, `${path}.name`),
181
247
  displayName: requireString(parameter.displayName, `${path}.displayName`),
@@ -192,16 +258,17 @@ function parseParameter(value, path) {
192
258
  }, path);
193
259
  }
194
260
  function parseLink(value, path) {
195
- const link = requireObject(value, path);
261
+ const link = requireStructure(value, path);
196
262
  return normalizeLink({
197
263
  id: requireString(link.id, `${path}.id`),
198
264
  from: parseEndpoint(link.from, `${path}.from`),
199
265
  to: parseEndpoint(link.to, `${path}.to`),
266
+ style: link.style === undefined ? undefined : requireLinkStyle(link.style, `${path}.style`),
200
267
  metadata: cloneJsonObject(link.metadata, `${path}.metadata`),
201
268
  }, path);
202
269
  }
203
270
  function parseEndpoint(value, path) {
204
- const endpoint = requireObject(value, path);
271
+ const endpoint = requireStructure(value, path);
205
272
  return {
206
273
  nodeId: requireIdentifier(endpoint.nodeId, `${path}.nodeId`),
207
274
  portId: requireIdentifier(endpoint.portId, `${path}.portId`),
@@ -256,7 +323,7 @@ function cloneStringRecord(value, path) {
256
323
  const object = requireObject(value, path);
257
324
  const result = {};
258
325
  for (const [key, item] of Object.entries(object))
259
- result[key] = requireString(item, `${path}.${key}`);
326
+ setJsonKey(result, key, requireString(item, `${path}.${key}`));
260
327
  return result;
261
328
  }
262
329
  function cloneJsonObject(value, path, ancestors = new WeakSet()) {
@@ -267,7 +334,7 @@ function cloneJsonObject(value, path, ancestors = new WeakSet()) {
267
334
  const result = {};
268
335
  try {
269
336
  for (const [key, item] of Object.entries(object)) {
270
- result[key] = cloneJsonValue(item, `${path}.${key}`, ancestors);
337
+ setJsonKey(result, key, cloneJsonValue(item, `${path}.${key}`, ancestors));
271
338
  }
272
339
  }
273
340
  finally {
@@ -295,6 +362,22 @@ function cloneJsonValue(value, path, ancestors) {
295
362
  return cloneJsonObject(value, path, ancestors);
296
363
  throw new DiagramDocumentError('expected a JSON value', path);
297
364
  }
365
+ /**
366
+ * A container whose fields are read individually. Any object will do, including
367
+ * a class instance: hosts build schemes out of DiagramNode and Port, not object
368
+ * literals, and every field is validated on its own below.
369
+ */
370
+ function requireStructure(value, path) {
371
+ if (typeof value !== 'object' || value === null || Array.isArray(value)) {
372
+ throw new DiagramDocumentError('expected an object', path);
373
+ }
374
+ return value;
375
+ }
376
+ /**
377
+ * A value that has to survive JSON round-tripping unchanged. Stricter than
378
+ * requireStructure on purpose: a Date or any other class instance would
379
+ * serialize to something the parser could not read back.
380
+ */
298
381
  function requireObject(value, path) {
299
382
  if (!isObject(value))
300
383
  throw new DiagramDocumentError('expected an object', path);
@@ -306,6 +389,18 @@ function isObject(value) {
306
389
  const prototype = Object.getPrototypeOf(value);
307
390
  return prototype === Object.prototype || prototype === null;
308
391
  }
392
+ /**
393
+ * Reads an optional array of objects, rejecting a non-array, a hole or a
394
+ * non-object element. null counts as absent, like the `?? []` every other
395
+ * optional field is read through.
396
+ */
397
+ function mapElements(value, path) {
398
+ if (value === undefined || value === null)
399
+ return [];
400
+ // Array.from rather than map: map skips holes, carrying an undefined element
401
+ // into the result instead of reporting it.
402
+ return Array.from(requireArray(value, path), (element, index) => requireStructure(element, `${path}[${index}]`));
403
+ }
309
404
  function requireArray(value, path) {
310
405
  if (!Array.isArray(value))
311
406
  throw new DiagramDocumentError('expected an array', path);
@@ -316,6 +411,17 @@ function requireString(value, path) {
316
411
  throw new DiagramDocumentError('expected a string', path);
317
412
  return value;
318
413
  }
414
+ /**
415
+ * Coerces rather than rejects. The set is closed in the types, which is where a
416
+ * typo gets caught, but a persisted scheme can carry anything a JavaScript host
417
+ * wrote before that -- and refusing to load it would brick the whole document
418
+ * over a field whose every value except 'onConnect' behaves identically. The
419
+ * type must still be a string, so a number or an object is a real error.
420
+ */
421
+ function requirePortDynamicMode(value, path) {
422
+ const mode = requireString(value, path);
423
+ return toPortDynamicMode(mode);
424
+ }
319
425
  function requireIdentifier(value, path) {
320
426
  const id = requireString(value, path);
321
427
  if (id.trim().length === 0)
@@ -1 +1 @@
1
- {"version":3,"file":"document.js","sourceRoot":"","sources":["../../../src/core/document.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"document.js","sourceRoot":"","sources":["../../../src/core/document.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Stores a key that JSON can legitimately carry but plain assignment cannot hold.
3
+ *
4
+ * `JSON.parse` produces `__proto__` as an ordinary own key, yet writing it back
5
+ * with `target[key] = value` hits the inherited `__proto__` setter: the value is
6
+ * dropped and the object's prototype is replaced instead. A document parsed that
7
+ * way loses data and stops satisfying the parser's own "plain object" guard, so
8
+ * anything the parser accepted could no longer be serialized or cloned.
9
+ */
10
+ export function setJsonKey(target, key, value) {
11
+ if (key === '__proto__') {
12
+ Object.defineProperty(target, key, { value, enumerable: true, writable: true, configurable: true });
13
+ return;
14
+ }
15
+ target[key] = value;
16
+ }
17
+ //# sourceMappingURL=json.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json.js","sourceRoot":"","sources":["../../../src/core/json.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,UAAU,UAAU,CAAI,MAAyB,EAAE,GAAW,EAAE,KAAQ;IAC1E,IAAI,GAAG,KAAK,WAAW,EAAE,CAAC;QACtB,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;QACpG,OAAO;IACX,CAAC;IACD,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACxB,CAAC"}
@@ -1,2 +1,10 @@
1
+ /** Narrows an untyped value to the closed set, defaulting to the inert mode. */
2
+ export function toPortDynamicMode(value) {
3
+ return value === 'manual' || value === 'onConnect' ? value : '';
4
+ }
5
+ /** Narrows an untyped value to the closed set, defaulting to a plain line. */
6
+ export function toDiagramLinkStyle(value) {
7
+ return value === 'dashed' ? 'dashed' : 'solid';
8
+ }
1
9
  export const DIAGRAM_DOCUMENT_VERSION = 1;
2
10
  //# sourceMappingURL=model.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"model.js","sourceRoot":"","sources":["../../../src/core/model.ts"],"names":[],"mappings":"AAqEA,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAU,CAAC"}
1
+ {"version":3,"file":"model.js","sourceRoot":"","sources":["../../../src/core/model.ts"],"names":[],"mappings":"AA8BA,gFAAgF;AAChF,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC5C,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;AACpE,CAAC;AAiDD,8EAA8E;AAC9E,MAAM,UAAU,kBAAkB,CAAC,KAAc;IAC7C,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC;AACnD,CAAC;AA6BD,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAU,CAAC"}
@@ -7,7 +7,7 @@ export function cloneDiagramRuntimeState(state) {
7
7
  globalError: state.globalError === null ? null : { ...state.globalError },
8
8
  nodes: Object.fromEntries(Object.entries(state.nodes).map(([nodeId, node]) => [nodeId, {
9
9
  active: node.active,
10
- error: node.error === null ? null : { ...node.error },
10
+ errors: cloneDiagramNodeErrors(node.errors),
11
11
  ports: {
12
12
  in: Object.fromEntries(Object.entries(node.ports.in)
13
13
  .map(([portId, port]) => [portId, { ...port }])),
@@ -66,8 +66,22 @@ export function createReadOnlyDiagramPermissions() {
66
66
  export function createDiagramNodeRuntimeState() {
67
67
  return {
68
68
  active: false,
69
- error: null,
69
+ errors: {},
70
70
  ports: { in: {}, out: {} },
71
71
  };
72
72
  }
73
+ /**
74
+ * Tolerates a missing map: hosts persist runtime snapshots and build them by
75
+ * hand, so a state written before this field existed still has to be readable.
76
+ */
77
+ export function cloneDiagramNodeErrors(errors) {
78
+ const result = {};
79
+ if (errors === undefined || errors === null)
80
+ return result;
81
+ if (errors.runtime !== undefined)
82
+ result.runtime = { ...errors.runtime };
83
+ if (errors.load !== undefined)
84
+ result.load = { ...errors.load };
85
+ return result;
86
+ }
73
87
  //# sourceMappingURL=state.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"state.js","sourceRoot":"","sources":["../../../src/core/state.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"state.js","sourceRoot":"","sources":["../../../src/core/state.ts"],"names":[],"mappings":"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"}
@@ -27,19 +27,31 @@ export class StockSharpCatalog extends EventEmitter {
27
27
  // imported node ("Element type is missing from the palette"). Node.id
28
28
  // keeps its original casing so save/load round-trips unchanged.
29
29
  addNodeType(node) {
30
- const n = node instanceof Node ? node : new Node(node);
30
+ // Copied on the way in as well as on the way out: otherwise the caller
31
+ // keeps a handle on the stored definition and can edit it afterwards.
32
+ // The clone covers the init branch too -- Node's constructor keeps the
33
+ // caller's Port instances and parameters array as they are.
34
+ const n = (node instanceof Node ? node : new Node(node)).clone();
31
35
  this.nodeTypes.set(n.id.toLowerCase(), n);
32
- this.emit('nodeTypesChanged', this.getNodeTypes());
36
+ this.emitNodeTypesChanged();
33
37
  }
34
38
  removeNodeType(id) {
35
39
  this.nodeTypes.delete(id.toLowerCase());
36
- this.emit('nodeTypesChanged', this.getNodeTypes());
40
+ this.emitNodeTypesChanged();
37
41
  }
38
42
  getNodeType(id) {
39
- return this.nodeTypes.get(id.toLowerCase()) ?? null;
43
+ return this.nodeTypes.get(id.toLowerCase())?.clone() ?? null;
40
44
  }
41
45
  getNodeTypes() {
42
- return Array.from(this.nodeTypes.values());
46
+ return Array.from(this.nodeTypes.values(), (node) => node.clone());
47
+ }
48
+ // Node definitions are mutable, so the payload has to be a copy of each one.
49
+ // Building a catalog is a loop of addNodeType calls, which would make that
50
+ // quadratic; skipping it while nobody listens keeps catalog construction --
51
+ // where no subscriber exists yet -- as cheap as it was.
52
+ emitNodeTypesChanged() {
53
+ if (this.hasHandlers('nodeTypesChanged'))
54
+ this.emit('nodeTypesChanged', this.getNodeTypes());
43
55
  }
44
56
  }
45
57
  //# sourceMappingURL=catalog.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../../src/diagram/catalog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,IAAI,EAAY,QAAQ,EAAgB,MAAM,YAAY,CAAC;AAOpE,MAAM,OAAO,iBAAkB,SAAQ,YAA2B;IAAlE;;QACqB,cAAS,GAAG,IAAI,GAAG,EAAoB,CAAC;QACxC,cAAS,GAAG,IAAI,GAAG,EAAgB,CAAC;IA4CzD,CAAC;IA1CG,WAAW,CAAC,QAAiC;QACzC,MAAM,EAAE,GAAG,QAAQ,YAAY,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAC5E,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAChC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,cAAc,CAAC,IAAY;QACvB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC5B,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,WAAW,CAAC,IAAY;QACpB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;IAC5C,CAAC;IAED,YAAY;QACR,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,mEAAmE;IACnE,sEAAsE;IACtE,kEAAkE;IAClE,sEAAsE;IACtE,gEAAgE;IAChE,WAAW,CAAC,IAAqB;QAC7B,MAAM,CAAC,GAAG,IAAI,YAAY,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;QACvD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC;QAC1C,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,cAAc,CAAC,EAAU;QACrB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;QACxC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,WAAW,CAAC,EAAU;QAClB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,IAAI,IAAI,CAAC;IACxD,CAAC;IAED,YAAY;QACR,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;IAC/C,CAAC;CACJ"}
1
+ {"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../../src/diagram/catalog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,IAAI,EAAY,QAAQ,EAAgB,MAAM,YAAY,CAAC;AAOpE,MAAM,OAAO,iBAAkB,SAAQ,YAA2B;IAAlE;;QACqB,cAAS,GAAG,IAAI,GAAG,EAAoB,CAAC;QACxC,cAAS,GAAG,IAAI,GAAG,EAAgB,CAAC;IAwDzD,CAAC;IAtDG,WAAW,CAAC,QAAiC;QACzC,MAAM,EAAE,GAAG,QAAQ,YAAY,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAC5E,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAChC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,cAAc,CAAC,IAAY;QACvB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC5B,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,WAAW,CAAC,IAAY;QACpB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;IAC5C,CAAC;IAED,YAAY;QACR,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,mEAAmE;IACnE,sEAAsE;IACtE,kEAAkE;IAClE,sEAAsE;IACtE,gEAAgE;IAChE,WAAW,CAAC,IAAqB;QAC7B,uEAAuE;QACvE,sEAAsE;QACtE,uEAAuE;QACvE,4DAA4D;QAC5D,MAAM,CAAC,GAAG,CAAC,IAAI,YAAY,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;QACjE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC;QAC1C,IAAI,CAAC,oBAAoB,EAAE,CAAC;IAChC,CAAC;IAED,cAAc,CAAC,EAAU;QACrB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;QACxC,IAAI,CAAC,oBAAoB,EAAE,CAAC;IAChC,CAAC;IAED,WAAW,CAAC,EAAU;QAClB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,IAAI,CAAC;IACjE,CAAC;IAED,YAAY;QACR,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IACvE,CAAC;IAED,6EAA6E;IAC7E,2EAA2E;IAC3E,4EAA4E;IAC5E,wDAAwD;IAChD,oBAAoB;QACxB,IAAI,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC;YAAE,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;IACjG,CAAC;CACJ"}
@@ -1,3 +1,6 @@
1
+ // TEvents is constrained to object rather than Record<string, unknown>: the
2
+ // latter forces every event map to carry a string index signature, which
3
+ // collapses keyof TEvents to string and lets any misspelled name compile.
1
4
  export class EventEmitter {
2
5
  constructor() {
3
6
  this.handlers = new Map();
@@ -35,6 +38,13 @@ export class EventEmitter {
35
38
  }
36
39
  }
37
40
  }
41
+ /**
42
+ * Whether anyone is listening. Lets a subject skip building a payload that
43
+ * is expensive to produce and that nothing would read.
44
+ */
45
+ hasHandlers(event) {
46
+ return (this.handlers.get(event)?.size ?? 0) > 0;
47
+ }
38
48
  clearEventHandlers() {
39
49
  this.handlers.clear();
40
50
  }
@@ -1 +1 @@
1
- {"version":3,"file":"event-emitter.js","sourceRoot":"","sources":["../../../src/diagram/event-emitter.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,YAAY;IAAzB;QACqB,aAAQ,GAAG,IAAI,GAAG,EAA6C,CAAC;IAwCrF,CAAC;IAtCG,EAAE,CAA0B,KAAQ,EAAE,OAAiC;QACnE,IAAI,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACnC,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACpB,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC;YAChB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAClC,CAAC;QACD,GAAG,CAAC,GAAG,CAAC,OAAgC,CAAC,CAAC;QAC1C,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC1C,CAAC;IAED,GAAG,CAA0B,KAAQ,EAAE,OAAiC;QACpE,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACrC,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACpB,OAAO;QACX,CAAC;QACD,GAAG,CAAC,MAAM,CAAC,OAAgC,CAAC,CAAC;QAC7C,IAAI,GAAG,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YACjB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;IACL,CAAC;IAES,IAAI,CAA0B,KAAQ,EAAE,OAAmB;QACjE,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACrC,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACpB,OAAO;QACX,CAAC;QACD,KAAK,MAAM,OAAO,IAAI,GAAG,EAAE,CAAC;YACxB,IAAI,CAAC;gBACA,OAAoC,CAAC,OAAO,CAAC,CAAC;YACnD,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACX,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACvB,CAAC;QACL,CAAC;IACL,CAAC;IAES,kBAAkB;QACxB,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IAC1B,CAAC;CACJ"}
1
+ {"version":3,"file":"event-emitter.js","sourceRoot":"","sources":["../../../src/diagram/event-emitter.ts"],"names":[],"mappings":"AAEA,4EAA4E;AAC5E,yEAAyE;AACzE,0EAA0E;AAC1E,MAAM,OAAO,YAAY;IAAzB;QACqB,aAAQ,GAAG,IAAI,GAAG,EAA6C,CAAC;IAgDrF,CAAC;IA9CG,EAAE,CAA0B,KAAQ,EAAE,OAAiC;QACnE,IAAI,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACnC,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACpB,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC;YAChB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAClC,CAAC;QACD,GAAG,CAAC,GAAG,CAAC,OAAgC,CAAC,CAAC;QAC1C,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC1C,CAAC;IAED,GAAG,CAA0B,KAAQ,EAAE,OAAiC;QACpE,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACrC,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACpB,OAAO;QACX,CAAC;QACD,GAAG,CAAC,MAAM,CAAC,OAAgC,CAAC,CAAC;QAC7C,IAAI,GAAG,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YACjB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;IACL,CAAC;IAES,IAAI,CAA0B,KAAQ,EAAE,OAAmB;QACjE,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACrC,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACpB,OAAO;QACX,CAAC;QACD,KAAK,MAAM,OAAO,IAAI,GAAG,EAAE,CAAC;YACxB,IAAI,CAAC;gBACA,OAAoC,CAAC,OAAO,CAAC,CAAC;YACnD,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACX,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACvB,CAAC;QACL,CAAC;IACL,CAAC;IAED;;;OAGG;IACO,WAAW,CAA0B,KAAQ;QACnD,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IACrD,CAAC;IAES,kBAAkB;QACxB,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IAC1B,CAAC;CACJ"}