@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
@@ -1,5 +1,5 @@
1
- import type { DiagramDocument } from '../core/model.js';
2
- import type { DiagramGlobalErrorKind, DiagramInteractionPermissions, DiagramPortRuntimeState, DiagramRuntimeState, DiagramSelection, DiagramViewState } from '../core/state.js';
1
+ import type { DiagramDocument, PortDynamicMode } from '../core/model.js';
2
+ import type { DiagramGlobalErrorKind, DiagramInteractionPermissions, DiagramPortRuntimeState, DiagramRuntimeState, DiagramSelection, DiagramSnapshot, DiagramViewState } from '../core/state.js';
3
3
  import { EventEmitter } from './event-emitter.js';
4
4
  import type { DiagramEvents, ContextCommand, DiagramLoadOptions, DiagramFullscreenLabels, DiagramGridSettings, DiagramNodeBounds, DiagramPoint, DiagramOptions, DiagramScreenshotOptions, DiagramThemeOptions, LinkValidationResult, LinkValidator, NodeErrorKind, NodeErrorOptions } from './api.js';
5
5
  import { DiagramNode, Link, Port, type PortDirection, type PortUpdate } from './types.js';
@@ -21,7 +21,6 @@ export declare class StockSharpDiagram extends EventEmitter<DiagramEvents> {
21
21
  private fullscreen;
22
22
  private fullscreenButtonVisible;
23
23
  private fullscreenLabels;
24
- private linkValidator;
25
24
  private readonly contextActions;
26
25
  constructor(options: DiagramOptions);
27
26
  setLinkValidator(validator: LinkValidator | null): void;
@@ -33,16 +32,20 @@ export declare class StockSharpDiagram extends EventEmitter<DiagramEvents> {
33
32
  getPortPosition(nodeId: string, direction: PortDirection, portId: string): DiagramPoint | null;
34
33
  worldToView(x: number, y: number): DiagramPoint;
35
34
  setGridSnap(enabled: boolean, size?: number): void;
36
- getGridSnap(): DiagramGridSettings;
35
+ getGridSnap(): DiagramSnapshot<DiagramGridSettings>;
37
36
  nudgeSelection(dx: number, dy: number): boolean;
38
37
  addLink(link: Link): boolean;
39
38
  validateLink(link: Link, excludeLinkId?: string): LinkValidationResult;
40
39
  relink(linkId: string, link: Link): LinkValidationResult;
41
40
  removeLink(link: Link): void;
42
- addPort(nodeId: string, direction: PortDirection, port: Port): void;
43
- removePort(nodeId: string, direction: PortDirection, portId: string): void;
44
- updatePortType(nodeId: string, direction: PortDirection, portId: string, type: string): void;
41
+ /** False when nothing changed: no such node or port, or the edit was a no-op. */
42
+ addPort(nodeId: string, direction: PortDirection, port: Port): boolean;
43
+ /** False when nothing changed: no such node or port, or the edit was a no-op. */
44
+ removePort(nodeId: string, direction: PortDirection, portId: string): boolean;
45
+ /** False when nothing changed: no such node or port, or the edit was a no-op. */
46
+ updatePortType(nodeId: string, direction: PortDirection, portId: string, type: string): boolean;
45
47
  updatePort(nodeId: string, direction: PortDirection, portId: string, patch: PortUpdate): boolean;
48
+ /** False when nothing changed: no such node or port, or the edit was a no-op. */
46
49
  setNodePorts(nodeId: string, inPorts: ReadonlyArray<{
47
50
  key: string;
48
51
  name: string;
@@ -51,7 +54,7 @@ export declare class StockSharpDiagram extends EventEmitter<DiagramEvents> {
51
54
  maxLinks: number;
52
55
  availableTypes?: string[];
53
56
  isDynamic?: boolean;
54
- dynamicMode?: string;
57
+ dynamicMode?: PortDynamicMode;
55
58
  }>, outPorts: ReadonlyArray<{
56
59
  key: string;
57
60
  name: string;
@@ -60,45 +63,49 @@ export declare class StockSharpDiagram extends EventEmitter<DiagramEvents> {
60
63
  maxLinks: number;
61
64
  availableTypes?: string[];
62
65
  isDynamic?: boolean;
63
- dynamicMode?: string;
64
- }>): void;
66
+ dynamicMode?: PortDynamicMode;
67
+ }>): boolean;
68
+ /** False when nothing changed: no such node or port, or the edit was a no-op. */
65
69
  updateNode(nodeId: string, patch: {
66
70
  name?: string;
67
71
  description?: string;
68
72
  color?: string;
69
73
  border?: string;
70
- }): void;
71
- setNodeMessage(nodeId: string, message: string): void;
74
+ }): boolean;
75
+ /** False when nothing changed: no such node or port, or the edit was a no-op. */
76
+ setNodeMessage(nodeId: string, message: string): boolean;
72
77
  setNodeError(nodeId: string, message: string, options?: NodeErrorOptions): boolean;
73
78
  clearNodeError(nodeId: string, kind?: NodeErrorKind): boolean;
74
- getRuntimeState(): DiagramRuntimeState;
75
- setRuntimeState(state: DiagramRuntimeState): void;
79
+ getRuntimeState(): DiagramSnapshot<DiagramRuntimeState>;
80
+ setRuntimeState(state: DiagramSnapshot<DiagramRuntimeState>): void;
76
81
  clearRuntimeState(): void;
77
82
  setActiveNode(nodeId: string | null): boolean;
78
83
  setPortRuntimeState(nodeId: string, direction: PortDirection, portId: string, patch: Partial<DiagramPortRuntimeState>): boolean;
79
84
  setGlobalError(message: string | null, kind?: DiagramGlobalErrorKind): void;
80
- setNodeParamValue(nodeId: string, paramName: string, value: string | undefined): void;
81
- setNodeName(nodeId: string, value: string): void;
85
+ /** False when nothing changed: no such node or port, or the edit was a no-op. */
86
+ setNodeParamValue(nodeId: string, paramName: string, value: string | undefined): boolean;
87
+ /** False when nothing changed: no such node or port, or the edit was a no-op. */
88
+ setNodeName(nodeId: string, value: string): boolean;
82
89
  /** Groups host-driven document edits into one undo/redo operation. */
83
90
  transaction<T>(label: string, action: () => T): T;
84
91
  setShowNodeMessages(show: boolean): void;
85
92
  setReadOnly(readonly: boolean): void;
86
- getInteractionPermissions(): DiagramInteractionPermissions;
93
+ getInteractionPermissions(): DiagramSnapshot<DiagramInteractionPermissions>;
87
94
  setInteractionPermissions(patch: Partial<DiagramInteractionPermissions>): void;
88
95
  applySocketTheme(): void;
89
96
  applyOverviewTheme(): void;
90
97
  setOverviewVisible(visible: boolean): void;
91
98
  zoomToFit(): void;
92
99
  setZoom(scale: number): void;
93
- getViewState(): DiagramViewState;
94
- setViewState(state: DiagramViewState): void;
100
+ getViewState(): DiagramSnapshot<DiagramViewState>;
101
+ setViewState(state: DiagramSnapshot<DiagramViewState>): void;
95
102
  /** Serializes only viewport preferences; strategy data stays in saveDocument(). */
96
103
  saveViewState(space?: number): string;
97
104
  /** Restores a versioned viewport snapshot produced by saveViewState(). */
98
105
  loadViewState(source: string | unknown): void;
99
106
  /** Detached PNG-ready canvas; use scope: 'content' for the complete scheme. */
100
107
  takeScreenshot(options?: DiagramScreenshotOptions): HTMLCanvasElement;
101
- getSelection(): DiagramSelection;
108
+ getSelection(): DiagramSnapshot<DiagramSelection>;
102
109
  selectNodes(nodeIds: readonly string[]): void;
103
110
  selectLink(linkId: string | null): void;
104
111
  selectPort(nodeId: string, direction: PortDirection, portId: string): void;
@@ -107,8 +114,8 @@ export declare class StockSharpDiagram extends EventEmitter<DiagramEvents> {
107
114
  setFullscreenButtonVisible(visible: boolean): void;
108
115
  isFullscreenButtonVisible(): boolean;
109
116
  /** Text of the fullscreen button, for a host that renders in another language. */
110
- setFullscreenLabels(labels: DiagramFullscreenLabels): void;
111
- getFullscreenLabels(): DiagramFullscreenLabels;
117
+ setFullscreenLabels(labels: DiagramSnapshot<DiagramFullscreenLabels>): void;
118
+ getFullscreenLabels(): DiagramSnapshot<DiagramFullscreenLabels>;
112
119
  /** Updates only the control's state after the host changed its own layout. */
113
120
  setFullscreenState(fullscreen: boolean): void;
114
121
  setTheme(options: DiagramThemeOptions): void;
@@ -1 +1 @@
1
- {"version":3,"file":"stocksharp-diagram.d.ts","sourceRoot":"","sources":["../../../src/diagram/stocksharp-diagram.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stocksharp-diagram.d.ts","sourceRoot":"","sources":["../../../src/diagram/stocksharp-diagram.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { JsonObject } from '../core/model.js';
1
+ import type { JsonObject, PortDynamicMode } from '../core/model.js';
2
2
  export interface PortTypeInit {
3
3
  name: string;
4
4
  color: string;
@@ -16,7 +16,7 @@ export interface PortInit {
16
16
  maxLinks?: number;
17
17
  availableTypes?: string[];
18
18
  isDynamic?: boolean;
19
- dynamicMode?: string;
19
+ dynamicMode?: PortDynamicMode;
20
20
  isSibling?: boolean;
21
21
  }
22
22
  /** Mutable port properties. Port identity and direction remain stable. */
@@ -29,7 +29,7 @@ export declare class Port {
29
29
  maxLinks: number;
30
30
  availableTypes: string[];
31
31
  isDynamic: boolean;
32
- dynamicMode: string;
32
+ dynamicMode: PortDynamicMode;
33
33
  isSibling: boolean;
34
34
  constructor(init: PortInit);
35
35
  clone(): Port;
@@ -124,7 +124,7 @@ export interface PortData {
124
124
  direction: PortDirection;
125
125
  availableTypes?: string[];
126
126
  isDynamic?: boolean;
127
- dynamicMode?: string;
127
+ dynamicMode?: PortDynamicMode;
128
128
  isSibling?: boolean;
129
129
  }
130
130
  export interface NodeData {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/diagram/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/diagram/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"embed.d.ts","sourceRoot":"","sources":["../../src/embed.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAGpE,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AA0BnE,MAAM,WAAW,sBAAsB;IAAG,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;CAAE;AAC3G,MAAM,WAAW,sBAAsB;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;CAAE;AACvG,MAAM,WAAW,kBAAkB;IAClC,KAAK,EAAE,sBAAsB,EAAE,CAAC;IAChC,KAAK,EAAE,sBAAsB,EAAE,CAAC;CAChC;AAED,MAAM,WAAW,kBAAkB;IAClC,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;IACpC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,OAAO,IAAI,IAAI,CAAC;CAChB;AAED,MAAM,WAAW,mBAAmB;IACnC,qBAAqB,CAAC,EAAE,CACvB,OAAO,EAAE,0BAA0B,EACnC,MAAM,EAAE,kBAAkB,KACtB,IAAI,CAAC;IACV,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,kBAAkB,KAAK,IAAI,CAAC;CACnD;AAmKD,wBAAsB,YAAY,CACjC,GAAG,EAAE,WAAW,EAChB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,kBAAkB,EAC1B,OAAO,GAAE,mBAAwB,GAC/B,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAEpC;AAwJD,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAGhE;AAyCD,wBAAsB,gBAAgB,CACrC,GAAG,EAAE,WAAW,EAChB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,mBAAwB,GAC/B,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CA4BpC;AAKD,wBAAsB,gBAAgB,CACrC,GAAG,EAAE,WAAW,EAChB,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,mBAAwB,GAC/B,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAyBpC;AAKD,wBAAgB,SAAS,CAAC,IAAI,GAAE,UAAqB,EAAE,OAAO,GAAE,mBAAwB,GAAG,IAAI,CAkB9F"}
1
+ {"version":3,"file":"embed.d.ts","sourceRoot":"","sources":["../../src/embed.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAGpE,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AA4BnE,MAAM,WAAW,sBAAsB;IAAG,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;CAAE;AAC3G,MAAM,WAAW,sBAAsB;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;CAAE;AACvG,MAAM,WAAW,kBAAkB;IAClC,KAAK,EAAE,sBAAsB,EAAE,CAAC;IAChC,KAAK,EAAE,sBAAsB,EAAE,CAAC;CAChC;AAED,MAAM,WAAW,kBAAkB;IAClC,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;IACpC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,OAAO,IAAI,IAAI,CAAC;CAChB;AAED,MAAM,WAAW,mBAAmB;IACnC,qBAAqB,CAAC,EAAE,CACvB,OAAO,EAAE,0BAA0B,EACnC,MAAM,EAAE,kBAAkB,KACtB,IAAI,CAAC;IACV,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,kBAAkB,KAAK,IAAI,CAAC;CACnD;AAgPD,wBAAsB,YAAY,CACjC,GAAG,EAAE,WAAW,EAChB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,kBAAkB,EAC1B,OAAO,GAAE,mBAAwB,GAC/B,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAEpC;AA6JD,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAGhE;AA4DD,wBAAsB,gBAAgB,CACrC,GAAG,EAAE,WAAW,EAChB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,mBAAwB,GAC/B,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CA2BpC;AAKD,wBAAsB,gBAAgB,CACrC,GAAG,EAAE,WAAW,EAChB,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,mBAAwB,GAC/B,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAwBpC;AAKD,wBAAgB,SAAS,CAAC,IAAI,GAAE,UAAqB,EAAE,OAAO,GAAE,mBAAwB,GAAG,IAAI,CAkB9F"}
@@ -4,11 +4,11 @@ export type { DiagramAction, DiagramActionState, } from './core/action-registry.
4
4
  export { DiagramCommandHistory } from './core/history.js';
5
5
  export type { DiagramCommand, DiagramHistoryListener, DiagramHistoryState, } from './core/history.js';
6
6
  export { DIAGRAM_DOCUMENT_VERSION } from './core/model.js';
7
- export type { DiagramDocument, DiagramDocumentEndpoint, DiagramDocumentInput, DiagramDocumentLink, DiagramDocumentLinkInput, DiagramDocumentNode, DiagramDocumentNodeInput, DiagramDocumentPort, DiagramDocumentPortInput, DiagramDocumentVersion, DiagramParameterSchema, JsonObject, JsonPrimitive, JsonValue, } from './core/model.js';
8
- export { createEditableDiagramPermissions, createDiagramNodeRuntimeState, createDiagramPortRuntimeState, createDiagramRuntimeState, cloneDiagramRuntimeState, createDiagramSelection, createDiagramViewState, createReadOnlyDiagramPermissions, } from './core/state.js';
7
+ export type { DiagramDocument, DiagramDocumentEndpoint, DiagramDocumentInput, DiagramDocumentLink, DiagramDocumentLinkInput, DiagramDocumentNode, DiagramDocumentNodeInput, DiagramDocumentPort, DiagramDocumentPortInput, DiagramDocumentVersion, DiagramParameterSchema, JsonObject, JsonPrimitive, JsonValue, PortDynamicMode, } from './core/model.js';
8
+ export { createEditableDiagramPermissions, createDiagramNodeRuntimeState, createDiagramPortRuntimeState, createDiagramRuntimeState, cloneDiagramNodeErrors, cloneDiagramRuntimeState, createDiagramSelection, createDiagramViewState, createReadOnlyDiagramPermissions, } from './core/state.js';
9
9
  export { DIAGRAM_VIEW_STATE_VERSION, DiagramViewStateError, createDiagramViewStateDocument, parseDiagramViewState, serializeDiagramViewState, } from './core/view-state.js';
10
10
  export type { DiagramViewStateDocument } from './core/view-state.js';
11
- export type { DiagramErrorState, DiagramGlobalErrorKind, DiagramInteractionPermissions, DiagramNodeErrorKind, DiagramNodePortRuntimeState, DiagramNodeRuntimeState, DiagramPortDirection, DiagramPortRuntimeState, DiagramRuntimeState, DiagramSelectedPort, DiagramSelection, DiagramViewState, } from './core/state.js';
11
+ export type { DiagramErrorState, DiagramGlobalErrorKind, DiagramInteractionPermissions, DiagramNodeErrorKind, DiagramNodeErrors, DiagramNodePortRuntimeState, DiagramNodeRuntimeState, DiagramPortDirection, DiagramPortRuntimeState, DiagramRuntimeState, DiagramSelectedPort, DiagramSelection, DiagramSnapshot, DiagramViewState, } from './core/state.js';
12
12
  export { StockSharpDiagram, } from './diagram/stocksharp-diagram.js';
13
13
  export type { ContextCommand, ContextCommandPayload, ContextCommandState, ContextMenuRequestedPayload, DiagramEvents, DiagramClipboard, DiagramGridSettings, DiagramLoadOptions, DiagramNodeBounds, DiagramOptions, DiagramPoint, DiagramScreenshotOptions, DiagramScreenshotScope, DiagramThemeOptions, DocumentLoadFailedPayload, LinkChangePayload, LinkHoverPayload, LinkRelinkedPayload, LinkSelectedPayload, LinkValidationPayload, LinkValidationReason, LinkValidationResult, LinkValidator, LinkValidatorArgs, LoadFinishedPayload, NodeChangePayload, NodeErrorKind, NodeErrorOptions, NodeHoverPayload, NodeMovedPayload, NodeSelectedPayload, PortHoverPayload, PortClickAction, PortClickedPayload, PortSelectedPayload, } from './diagram/api.js';
14
14
  export { StockSharpCatalog } from './diagram/catalog.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stocksharp/diagram",
3
- "version": "0.2.3",
3
+ "version": "0.4.0",
4
4
  "description": "Browser strategy-diagram editor for StockSharp with typed ports, palette, canvas rendering, persistence, and a TypeScript API.",
5
5
  "license": "SEE LICENSE IN LICENSE",
6
6
  "author": {
@@ -107,7 +107,7 @@
107
107
  "scripts": {
108
108
  "build": "node build.mjs",
109
109
  "prepack": "npm run build",
110
- "typecheck": "tsc --noEmit -p tsconfig.json",
110
+ "typecheck": "tsc --noEmit -p tsconfig.json && tsc --noEmit -p tsconfig.demo.json && tsc --noEmit -p tsconfig.test.json",
111
111
  "api:check": "node tools/check-public-api.mjs",
112
112
  "api:update": "node tools/check-public-api.mjs --update",
113
113
  "serve": "node serve.mjs",
@@ -6,11 +6,16 @@
6
6
 
7
7
  import { createDiagramDocument, parseDiagramDocument } from './core/document.js';
8
8
  import { DiagramCommandHistory } from './core/history.js';
9
+ import { setJsonKey } from './core/json.js';
10
+ import { toPortDynamicMode } from './core/model.js';
9
11
  import type {
12
+ DiagramDocumentZone,
13
+ DiagramLinkStyle,
10
14
  DiagramDocument,
11
15
  DiagramParameterSchema,
12
16
  JsonObject,
13
17
  JsonValue,
18
+ PortDynamicMode,
14
19
  } from './core/model.js';
15
20
  import type {
16
21
  DiagramGlobalErrorKind,
@@ -40,7 +45,7 @@ export interface PortInit {
40
45
  maxLinks?: number;
41
46
  availableTypes?: string[];
42
47
  isDynamic?: boolean;
43
- dynamicMode?: string;
48
+ dynamicMode?: PortDynamicMode;
44
49
  isSibling?: boolean;
45
50
  metadata?: JsonObject;
46
51
  }
@@ -80,6 +85,8 @@ export interface LinkInit {
80
85
  fromPort: string;
81
86
  to: string;
82
87
  toPort: string;
88
+ /** Solid unless the link is one that may not be there - see DiagramLinkStyle. */
89
+ style?: DiagramLinkStyle;
83
90
  metadata?: JsonObject;
84
91
  }
85
92
 
@@ -98,6 +105,8 @@ export interface DiagramOptions {
98
105
  gridColor?: string;
99
106
  /** Snap dragged nodes to a world-space grid. Defaults to false for the low-level renderer. */
100
107
  gridSnap?: boolean;
108
+ /** Tint for a zone that names no colour of its own. */
109
+ zoneColor?: string;
101
110
  /** Positive world-space grid step. Defaults to 28. */
102
111
  gridSize?: number;
103
112
  /** Optional explicit socket-type → colour map; unknown types hash to a hue. */
@@ -258,7 +267,7 @@ function copyJsonValue(value: JsonValue): JsonValue {
258
267
  function copyJsonObject(value: JsonObject | undefined): JsonObject {
259
268
  if (value === undefined) return {};
260
269
  const result: JsonObject = {};
261
- for (const [key, item] of Object.entries(value)) result[key] = copyJsonValue(item);
270
+ for (const [key, item] of Object.entries(value)) setJsonKey(result, key, copyJsonValue(item));
262
271
  return result;
263
272
  }
264
273
 
@@ -298,7 +307,7 @@ export class PortModel {
298
307
  maxLinks: number;
299
308
  availableTypes: string[];
300
309
  isDynamic: boolean;
301
- dynamicMode: string;
310
+ dynamicMode: PortDynamicMode;
302
311
  isSibling: boolean;
303
312
  metadata: JsonObject;
304
313
  // layout cache (world coords), filled at draw time
@@ -313,7 +322,7 @@ export class PortModel {
313
322
  this.maxLinks = typeof init.maxLinks === 'number' ? init.maxLinks : 0;
314
323
  this.availableTypes = [...(init.availableTypes ?? [])];
315
324
  this.isDynamic = init.isDynamic ?? false;
316
- this.dynamicMode = init.dynamicMode ?? '';
325
+ this.dynamicMode = toPortDynamicMode(init.dynamicMode);
317
326
  this.isSibling = init.isSibling ?? false;
318
327
  this.metadata = copyJsonObject(init.metadata);
319
328
  }
@@ -421,6 +430,7 @@ export class LinkModel {
421
430
  public toPort: string,
422
431
  id: string = '',
423
432
  metadata?: JsonObject,
433
+ public style: DiagramLinkStyle = 'solid',
424
434
  ) {
425
435
  this.id = id;
426
436
  this.metadata = copyJsonObject(metadata);
@@ -434,15 +444,14 @@ export class LinkModel {
434
444
  fromPort: this.fromPort,
435
445
  to: this.to,
436
446
  toPort: this.toPort,
447
+ style: this.style,
437
448
  metadata: copyJsonObject(this.metadata),
438
449
  };
439
450
  }
440
451
  }
441
452
 
442
- const HEADER_H = 22;
443
453
  const PORT_R = 6;
444
454
  const PORT_ROW_H = 20;
445
- const NODE_PAD = 10;
446
455
  const RELINK_HANDLE_PX = 8; // WPF relink adornment is an 8x8 diamond
447
456
  const RELINK_DRAG_THRESHOLD_PX = 4;
448
457
  const PORT_SQ = 9; // socket square size — sits outside the node
@@ -503,6 +512,7 @@ export class Diagram {
503
512
 
504
513
  private nodes: NodeModel[] = [];
505
514
  private links: LinkModel[] = [];
515
+ private zones: DiagramDocumentZone[] = [];
506
516
  private idSeq = 1;
507
517
  private linkSeq = 1;
508
518
  private documentMetadata: JsonObject = {};
@@ -530,8 +540,6 @@ export class Diagram {
530
540
  private dragNode: NodeModel | null = null;
531
541
  private dragStart: Array<{ n: NodeModel; x: number; y: number }> = []; // group-drag origin
532
542
  private dragAnchor = { wx: 0, wy: 0 };
533
- private dragDX = 0;
534
- private dragDY = 0;
535
543
  private panning = false;
536
544
  private panX = 0;
537
545
  private panY = 0;
@@ -828,7 +836,7 @@ export class Diagram {
828
836
  this.emit('linkValidation', { fromNode: fn, from: fp, toNode: tn, to: tp, ...validation });
829
837
  if (!validation.allowed) return false;
830
838
  }
831
- const link = new LinkModel(init.from, init.fromPort, init.to, init.toPort, init.id ?? this.nextLinkId(), init.metadata);
839
+ const link = new LinkModel(init.from, init.fromPort, init.to, init.toPort, init.id ?? this.nextLinkId(), init.metadata, init.style ?? 'solid');
832
840
  if (this.links.some((l) => l.id === link.id)) return false;
833
841
  this.links.splice(clamp(Math.trunc(index), 0, this.links.length), 0, link);
834
842
  this.emit('linkAdded', { link });
@@ -1121,7 +1129,7 @@ export class Diagram {
1121
1129
  setNodeParamValue(nodeId: string, name: string, value: string | undefined): boolean {
1122
1130
  return this.updateNodeState(nodeId, 'set node parameter', (node) => {
1123
1131
  if (value === undefined) delete node.paramValues[name];
1124
- else node.paramValues[name] = value;
1132
+ else setJsonKey(node.paramValues, name, value);
1125
1133
  });
1126
1134
  }
1127
1135
 
@@ -1201,13 +1209,13 @@ export class Diagram {
1201
1209
  if (this.links.some((existing) => existing.id === id)) {
1202
1210
  throw new Error(`ssdiagram: duplicate link id "${id}"`);
1203
1211
  }
1204
- const model = new LinkModel(link.from, link.fromPort, link.to, link.toPort, id, link.metadata);
1212
+ const model = new LinkModel(link.from, link.fromPort, link.to, link.toPort, id, link.metadata, link.style ?? 'solid');
1205
1213
  if (!this.links.some((existing) => existing.key() === model.key())) this.links.push(model);
1206
1214
  }
1207
1215
  for (const node of this.nodes) {
1208
1216
  if (node.loadError.length === 0) continue;
1209
1217
  const state = createDiagramNodeRuntimeState();
1210
- state.error = { kind: 'load', message: node.loadError, pulse: ++this.runtimePulse };
1218
+ state.errors.load = { kind: 'load', message: node.loadError, pulse: ++this.runtimePulse };
1211
1219
  this.runtimeState.nodes[node.id] = state;
1212
1220
  }
1213
1221
  if (Object.keys(this.runtimeState.nodes).length > 0) this.emitRuntimeStateChanged();
@@ -1233,9 +1241,11 @@ export class Diagram {
1233
1241
  fromPort: link.from.portId,
1234
1242
  to: link.to.nodeId,
1235
1243
  toPort: link.to.portId,
1244
+ style: link.style,
1236
1245
  metadata: link.metadata,
1237
1246
  })),
1238
1247
  );
1248
+ this.zones = document.zones.map((zone) => ({ ...zone, metadata: copyJsonObject(zone.metadata) }));
1239
1249
  this.documentMetadata = copyJsonObject(document.metadata);
1240
1250
  }
1241
1251
 
@@ -1246,8 +1256,10 @@ export class Diagram {
1246
1256
  id: link.id,
1247
1257
  from: { nodeId: link.from, portId: link.fromPort },
1248
1258
  to: { nodeId: link.to, portId: link.toPort },
1259
+ style: link.style,
1249
1260
  metadata: link.metadata,
1250
1261
  })),
1262
+ zones: this.zones.map((zone) => ({ ...zone, metadata: copyJsonObject(zone.metadata) })),
1251
1263
  metadata: this.documentMetadata,
1252
1264
  });
1253
1265
  }
@@ -1418,15 +1430,17 @@ export class Diagram {
1418
1430
  this.runtimePulse = Math.max(
1419
1431
  this.runtimePulse,
1420
1432
  this.runtimeState.globalError?.pulse ?? 0,
1421
- ...Object.values(this.runtimeState.nodes).map((node) => node.error?.pulse ?? 0),
1433
+ ...Object.values(this.runtimeState.nodes)
1434
+ .flatMap((node) => [node.errors.runtime?.pulse ?? 0, node.errors.load?.pulse ?? 0]),
1422
1435
  );
1423
1436
  for (const node of this.nodes) {
1424
- const error = this.runtimeState.nodes[node.id]?.error ?? null;
1425
- const previousError = previous.nodes[node.id]?.error ?? null;
1426
- node.runtimeError = error?.kind === 'runtime' ? error.message : '';
1427
- node.loadError = error?.kind === 'load' ? error.message : '';
1428
- if (error?.kind === 'runtime') {
1429
- if (previousError?.kind !== 'runtime' || previousError.pulse !== error.pulse) {
1437
+ const errors = this.runtimeState.nodes[node.id]?.errors;
1438
+ const previousRuntime = previous.nodes[node.id]?.errors.runtime;
1439
+ const runtimeError = errors?.runtime;
1440
+ node.runtimeError = runtimeError?.message ?? '';
1441
+ node.loadError = errors?.load?.message ?? '';
1442
+ if (runtimeError !== undefined) {
1443
+ if (previousRuntime === undefined || previousRuntime.pulse !== runtimeError.pulse) {
1430
1444
  node.errorFlashStart = performance.now();
1431
1445
  }
1432
1446
  } else {
@@ -1486,7 +1500,11 @@ export class Diagram {
1486
1500
  const state = this.getRuntimeState();
1487
1501
  const nodeState = state.nodes[id] ?? createDiagramNodeRuntimeState();
1488
1502
  state.nodes[id] = nodeState;
1489
- nodeState.error = message.length === 0 ? null : { kind, message, pulse: ++this.runtimePulse };
1503
+ // Only this kind's slot is written, so an error of the other kind that is
1504
+ // already on the node survives.
1505
+ if (message.length === 0) delete nodeState.errors[kind];
1506
+ else if (kind === 'load') nodeState.errors.load = { kind, message, pulse: ++this.runtimePulse };
1507
+ else nodeState.errors.runtime = { kind, message, pulse: ++this.runtimePulse };
1490
1508
  this.runtimeState = state;
1491
1509
  this.emitRuntimeStateChanged();
1492
1510
  return true;
@@ -1501,12 +1519,9 @@ export class Diagram {
1501
1519
  if (kind === undefined || kind === 'load') node.loadError = '';
1502
1520
  const state = this.getRuntimeState();
1503
1521
  const nodeState = state.nodes[id];
1504
- if (nodeState !== undefined && (kind === undefined || nodeState.error?.kind === kind)) {
1505
- nodeState.error = node.runtimeError.length > 0
1506
- ? { kind: 'runtime', message: node.runtimeError, pulse: ++this.runtimePulse }
1507
- : node.loadError.length > 0
1508
- ? { kind: 'load', message: node.loadError, pulse: ++this.runtimePulse }
1509
- : null;
1522
+ if (nodeState !== undefined) {
1523
+ if (kind === undefined || kind === 'runtime') delete nodeState.errors.runtime;
1524
+ if (kind === undefined || kind === 'load') delete nodeState.errors.load;
1510
1525
  }
1511
1526
  this.runtimeState = state;
1512
1527
  this.emitRuntimeStateChanged();
@@ -2505,7 +2520,10 @@ export class Diagram {
2505
2520
  if (options.grid) this.drawGrid();
2506
2521
  ctx.setTransform(this.dpr * this.scale, 0, 0, this.dpr * this.scale,
2507
2522
  this.dpr * this.offX, this.dpr * (this.offY + introDy));
2508
- // Links first. Each link jumps over the verticals of the links
2523
+ // Zones sit under everything: they say where things are, and a place that painted over
2524
+ // its occupants would be worse than no place at all.
2525
+ this.drawZones();
2526
+ // Links next. Each link jumps over the verticals of the links
2509
2527
  // drawn before it (deterministic bridge — Link.JumpOver parity).
2510
2528
  const prior: Seg[] = []; // segments of links already drawn
2511
2529
  const hoveredNode = this.hoverPort?.node ?? this.hoverNode;
@@ -2526,7 +2544,7 @@ export class Diagram {
2526
2544
  const color = state === 'sel' ? this.selectionColor() : state === 'hov' ? this.linkHoverColor() : baseColor;
2527
2545
  const width = state === 'sel' ? 3 : state === 'hov' ? 2.6 : 2;
2528
2546
  const pts = this.routeLink(a, b, new Set([l.from, l.to]));
2529
- this.strokeRoute(pts, color, width, prior);
2547
+ this.strokeRoute(pts, color, width, prior, l.style);
2530
2548
  this.drawArrow(pts, color);
2531
2549
  for (let k = 1; k < pts.length; k += 1) {
2532
2550
  const [x1, y1] = pts[k - 1];
@@ -2669,6 +2687,40 @@ export class Diagram {
2669
2687
  }
2670
2688
  return lines.length > 0 ? lines : [''];
2671
2689
  }
2690
+ private drawZones(): void {
2691
+ if (this.zones.length === 0) return;
2692
+
2693
+ const ctx = this.ctx;
2694
+
2695
+ for (const zone of this.zones) {
2696
+ const tint = zone.color.length > 0 ? zone.color : (this.opts.zoneColor ?? '#8a8f98');
2697
+ ctx.save();
2698
+ roundRect(ctx, zone.x, zone.y, zone.width, zone.height, 10);
2699
+ ctx.globalAlpha = 0.12;
2700
+ ctx.fillStyle = tint;
2701
+ ctx.fill();
2702
+ ctx.globalAlpha = 0.5;
2703
+ ctx.setLineDash([10, 6]);
2704
+ ctx.lineWidth = 1.5;
2705
+ ctx.strokeStyle = tint;
2706
+ ctx.stroke();
2707
+ ctx.restore();
2708
+
2709
+ if (zone.name.length === 0) continue;
2710
+
2711
+ ctx.save();
2712
+ ctx.globalAlpha = 0.75;
2713
+ ctx.fillStyle = tint;
2714
+ ctx.font = '600 12px Segoe UI, Tahoma, sans-serif';
2715
+ ctx.textAlign = 'left';
2716
+ ctx.textBaseline = 'top';
2717
+ // Inside the top-left corner: a caption outside the box would collide with whatever
2718
+ // sits above it, and the corner is the one spot a rectangle always has to spare.
2719
+ ctx.fillText(zone.name, zone.x + 12, zone.y + 9, Math.max(0, zone.width - 24));
2720
+ ctx.restore();
2721
+ }
2722
+ }
2723
+
2672
2724
  private drawGrid(): void {
2673
2725
  const ctx = this.ctx;
2674
2726
  const step = this.gridSize * this.scale;
@@ -2794,10 +2846,12 @@ export class Diagram {
2794
2846
  // Symmetric jump-over: any segment of THIS link hops the perpendicular
2795
2847
  // segments of links drawn before it (H over earlier V, V over earlier
2796
2848
  // H). Exactly one bridge per real crossing, consistent everywhere.
2797
- private strokeRoute(pts: number[][], color: string, width: number, prior: Seg[]): void {
2849
+ private strokeRoute(pts: number[][], color: string, width: number, prior: Seg[], style: DiagramLinkStyle = 'solid'): void {
2798
2850
  const ctx = this.ctx;
2799
2851
  ctx.strokeStyle = color;
2800
2852
  ctx.lineWidth = width;
2853
+ // The dash is measured in world units, so it keeps its rhythm as the canvas is zoomed.
2854
+ if (style === 'dashed') ctx.setLineDash([9, 6]);
2801
2855
  ctx.lineJoin = 'miter';
2802
2856
  ctx.lineCap = 'butt';
2803
2857
  ctx.beginPath();
@@ -2850,6 +2904,7 @@ export class Diagram {
2850
2904
  }
2851
2905
  }
2852
2906
  ctx.stroke();
2907
+ ctx.setLineDash([]);
2853
2908
  }
2854
2909
  private drawArrow(pts: number[][], color: string): void {
2855
2910
  const n = pts.length;
@@ -22,6 +22,31 @@ export class DiagramActionRegistry<TId extends string, TContext> {
22
22
  };
23
23
  }
24
24
 
25
+ /**
26
+ * Registers one action per id from a table keyed by TId, in key order.
27
+ * Because the table is a total Record, adding a member to TId without adding
28
+ * its action stops compiling instead of producing a command that silently
29
+ * does nothing.
30
+ */
31
+ registerAll(actions: Record<TId, Omit<DiagramAction<TId, TContext>, 'id'>>): () => void {
32
+ // Object.keys is typed string[] because a value can carry keys beyond the
33
+ // ones its type names. This parameter is a total Record over TId, so its
34
+ // keys are exactly TId.
35
+ const ids = Object.keys(actions) as TId[];
36
+ // Delegating rather than spreading: a spread would copy own fields and
37
+ // drop the prototype, so a class-based action would register cleanly and
38
+ // then throw on its first call.
39
+ const disposers = ids.map((id) => {
40
+ const action = actions[id];
41
+ return this.register({
42
+ id,
43
+ canExecute: (context) => action.canExecute(context),
44
+ execute: (context) => action.execute(context),
45
+ });
46
+ });
47
+ return () => disposers.forEach((dispose) => dispose());
48
+ }
49
+
25
50
  get(id: TId): DiagramAction<TId, TContext> | null {
26
51
  return this.actions.get(id) ?? null;
27
52
  }