@stocksharp/diagram 1.0.1 → 1.2.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.
@@ -11,6 +11,13 @@ export interface DiagramOptions {
11
11
  catalog: import('./catalog.js').StockSharpCatalog;
12
12
  /** Show the built-in top-right fullscreen request button. Defaults to true. */
13
13
  showFullscreenButton?: boolean;
14
+ /**
15
+ * Show a button that asks the host to save the diagram. Defaults to false: the control writes
16
+ * no files, so the button is worth showing only where a host listens for `exportRequested`.
17
+ */
18
+ showDownloadButton?: boolean;
19
+ /** Tooltip/aria text for that button. Defaults to English. */
20
+ downloadLabel?: string;
14
21
  /**
15
22
  * Show the built-in context menu on right-click. Defaults to true, because the control
16
23
  * suppresses the browser's own menu regardless. Turn it off to draw your own from
@@ -1 +1 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../src/diagram/api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../src/diagram/api.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,7 @@ export declare class StockSharpDiagram extends EventEmitter<DiagramEvents> {
7
7
  private readonly div;
8
8
  private readonly catalog;
9
9
  private readonly fullscreenButton;
10
+ private downloadButton;
10
11
  private readonly overviewContainer;
11
12
  private readonly zoomLabel;
12
13
  private readonly canvas;
@@ -20,6 +21,8 @@ export declare class StockSharpDiagram extends EventEmitter<DiagramEvents> {
20
21
  private destroyed;
21
22
  private fullscreen;
22
23
  private fullscreenButtonVisible;
24
+ private downloadButtonVisible;
25
+ private downloadLabel;
23
26
  private fullscreenLabels;
24
27
  private readonly contextActions;
25
28
  private contextMenu;
@@ -114,6 +117,11 @@ export declare class StockSharpDiagram extends EventEmitter<DiagramEvents> {
114
117
  selectPort(nodeId: string, direction: PortDirection, portId: string): void;
115
118
  resize(width: number, height: number): void;
116
119
  isFullscreen(): boolean;
120
+ /** Shows or hides the button that asks the host to save the diagram. */
121
+ setDownloadButtonVisible(visible: boolean): void;
122
+ isDownloadButtonVisible(): boolean;
123
+ /** Text of the download button, for a host that renders in another language. */
124
+ setDownloadLabel(label: string): void;
117
125
  setFullscreenButtonVisible(visible: boolean): void;
118
126
  isFullscreenButtonVisible(): boolean;
119
127
  /** Text of the fullscreen button, for a host that renders in another language. */
@@ -161,6 +169,8 @@ export declare class StockSharpDiagram extends EventEmitter<DiagramEvents> {
161
169
  destroy(): void;
162
170
  private prepareFullscreenButtonHost;
163
171
  private createFullscreenButton;
172
+ private createDownloadButton;
173
+ private updateDownloadButton;
164
174
  private updateFullscreenButton;
165
175
  private bindCanvasEvents;
166
176
  private registerContextActions;
@@ -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,5 +1,5 @@
1
1
  import { StockSharpDiagram } from './diagram/stocksharp-diagram.js';
2
- import type { FullscreenRequestedPayload } from './diagram/api.js';
2
+ import type { ExportRequestedPayload, FullscreenRequestedPayload } from './diagram/api.js';
3
3
  export interface DiagramEmbedSchemeNode {
4
4
  id: string;
5
5
  typeId: string;
@@ -25,6 +25,11 @@ export interface DiagramEmbedHandle {
25
25
  }
26
26
  export interface DiagramEmbedOptions {
27
27
  onFullscreenRequested?: (request: FullscreenRequestedPayload, handle: DiagramEmbedHandle) => void;
28
+ /**
29
+ * Called when the reader asks for the diagram to be saved. The control writes no files; a host that
30
+ * passes this gets the button, and does the saving itself.
31
+ */
32
+ onExportRequested?: (request: ExportRequestedPayload, handle: DiagramEmbedHandle) => void;
28
33
  onDestroyed?: (handle: DiagramEmbedHandle) => void;
29
34
  }
30
35
  export declare function renderScheme(div: HTMLElement, paletteUrl: string, scheme: DiagramEmbedScheme, options?: DiagramEmbedOptions): Promise<DiagramEmbedHandle | null>;
@@ -1 +1 @@
1
- {"version":3,"file":"embed.d.ts","sourceRoot":"","sources":["../../src/embed.ts"],"names":[],"mappings":"AAUA,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;AAiSD,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;AA8JD,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAGhE;AA8DD,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,CA6B9F"}
1
+ {"version":3,"file":"embed.d.ts","sourceRoot":"","sources":["../../src/embed.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAGpE,OAAO,KAAK,EAAE,sBAAsB,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AA4B3F,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;;;OAGG;IACH,iBAAiB,CAAC,EAAE,CACnB,OAAO,EAAE,sBAAsB,EAC/B,MAAM,EAAE,kBAAkB,KACtB,IAAI,CAAC;IACV,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,kBAAkB,KAAK,IAAI,CAAC;CACnD;AAiSD,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;AAyKD,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAGhE;AA8DD,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,CA6B9F"}
@@ -0,0 +1,24 @@
1
+ import { type DiagramScreenshotOptions } from './canvas-renderer.js';
2
+ /**
3
+ * Drawing a diagram where there is no browser -- a server producing a picture for a chat message, an
4
+ * e-mail or a report. The renderer itself never needed one: it draws through a surface, and the SVG
5
+ * surface builds a string. What needed a browser was the control around it, which creates a canvas and
6
+ * listens for pointers; so the few things it reaches for are stood in for here, for the length of one
7
+ * drawing, and taken away again.
8
+ *
9
+ * Text is measured by the SVG surface's own estimate rather than by a real font, so a label's box can sit
10
+ * a pixel or two off where a browser would put it. The alternative is a native canvas dependency on every
11
+ * machine that renders, which is a steep price for that.
12
+ */
13
+ export interface HeadlessRenderOptions extends DiagramScreenshotOptions {
14
+ /** Width of the frame the drawing is laid out in, in CSS pixels. Defaults to 1200. */
15
+ hostWidth?: number;
16
+ /** Height of that frame. Defaults to 800. */
17
+ hostHeight?: number;
18
+ }
19
+ /**
20
+ * Draws a saved diagram and returns the SVG for it. The source is the document as text or as an object;
21
+ * the frame follows the content by default, since a picture made without a viewport has none to crop to.
22
+ */
23
+ export declare function renderDiagramSvg(source: string | unknown, options?: HeadlessRenderOptions): string;
24
+ //# sourceMappingURL=headless.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"headless.d.ts","sourceRoot":"","sources":["../../src/headless.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,KAAK,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAG9E;;;;;;;;;;GAUG;AACH,MAAM,WAAW,qBAAsB,SAAQ,wBAAwB;IACnE,sFAAsF;IACtF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6CAA6C;IAC7C,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AA6FD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,EAAE,OAAO,GAAE,qBAA0B,GAAG,MAAM,CAsBtG"}
@@ -90,6 +90,7 @@ export interface DesignerI18n {
90
90
  ctxHelp?: string;
91
91
  fullscreenEnter?: string;
92
92
  fullscreenExit?: string;
93
+ download?: string;
93
94
  embedErrorLoad?: string;
94
95
  embedErrorEmpty?: string;
95
96
  embedErrorDraw?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../src/i18n.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../src/i18n.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,6 @@
1
1
  export { DiagramDocumentError, cloneDiagramDocument, createDiagramDocument, parseDiagramDocument, serializeDiagramDocument, } from './core/document.js';
2
+ export { renderDiagramSvg } from './headless.js';
3
+ export type { HeadlessRenderOptions } from './headless.js';
2
4
  export { DiagramActionRegistry } from './core/action-registry.js';
3
5
  export type { DiagramAction, DiagramActionState, } from './core/action-registry.js';
4
6
  export { DiagramCommandHistory } from './core/history.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": "1.0.1",
3
+ "version": "1.2.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": {
@@ -18,6 +18,13 @@ export interface DiagramOptions {
18
18
  catalog: import('./catalog.js').StockSharpCatalog;
19
19
  /** Show the built-in top-right fullscreen request button. Defaults to true. */
20
20
  showFullscreenButton?: boolean;
21
+ /**
22
+ * Show a button that asks the host to save the diagram. Defaults to false: the control writes
23
+ * no files, so the button is worth showing only where a host listens for `exportRequested`.
24
+ */
25
+ showDownloadButton?: boolean;
26
+ /** Tooltip/aria text for that button. Defaults to English. */
27
+ downloadLabel?: string;
21
28
  /**
22
29
  * Show the built-in context menu on right-click. Defaults to true, because the control
23
30
  * suppresses the browser's own menu regardless. Turn it off to draw your own from
@@ -95,6 +95,8 @@ export class StockSharpDiagram extends EventEmitter<DiagramEvents> {
95
95
  private readonly div: HTMLElement;
96
96
  private readonly catalog: StockSharpCatalog;
97
97
  private readonly fullscreenButton: HTMLButtonElement;
98
+ // Built only where a host asked for it: a control nobody asked to save gets no button at all.
99
+ private downloadButton: HTMLButtonElement | null = null;
98
100
  private readonly overviewContainer: HTMLElement | null;
99
101
  private readonly zoomLabel: HTMLElement | null;
100
102
  private readonly canvas: CanvasDiagram;
@@ -108,6 +110,8 @@ export class StockSharpDiagram extends EventEmitter<DiagramEvents> {
108
110
  private destroyed = false;
109
111
  private fullscreen = false;
110
112
  private fullscreenButtonVisible = true;
113
+ private downloadButtonVisible = false;
114
+ private downloadLabel: string | null = null;
111
115
  // null means the host never named the button, so its wording comes from the shared bundle.
112
116
  // Keeping the two apart is what lets an explicit label win while an untouched control still
113
117
  // follows the page's language instead of being stuck in English.
@@ -133,6 +137,8 @@ export class StockSharpDiagram extends EventEmitter<DiagramEvents> {
133
137
  this.prepareFullscreenButtonHost();
134
138
  this.fullscreenButton = this.createFullscreenButton();
135
139
  this.updateFullscreenButton();
140
+ this.downloadLabel = options.downloadLabel ?? null;
141
+ this.setDownloadButtonVisible(options.showDownloadButton ?? false);
136
142
  this.setContextMenuEnabled(options.showContextMenu ?? true);
137
143
  // The keyboard is an entry point like the menu and the toolbar, so it goes through the
138
144
  // same undo()/redo() -- which respect enableUndo/enableRedo and emit undoRequested.
@@ -442,6 +448,34 @@ export class StockSharpDiagram extends EventEmitter<DiagramEvents> {
442
448
  return this.fullscreen;
443
449
  }
444
450
 
451
+ /** Shows or hides the button that asks the host to save the diagram. */
452
+ setDownloadButtonVisible(visible: boolean): void {
453
+ this.downloadButtonVisible = visible;
454
+
455
+ if (!visible) {
456
+ if (this.downloadButton === null) return;
457
+
458
+ this.downloadButton.hidden = true;
459
+ this.downloadButton.style.display = 'none';
460
+ return;
461
+ }
462
+
463
+ this.downloadButton ??= this.createDownloadButton();
464
+ this.updateDownloadButton();
465
+ this.downloadButton.hidden = false;
466
+ this.downloadButton.style.display = 'inline-flex';
467
+ }
468
+
469
+ isDownloadButtonVisible(): boolean {
470
+ return this.downloadButtonVisible;
471
+ }
472
+
473
+ /** Text of the download button, for a host that renders in another language. */
474
+ setDownloadLabel(label: string): void {
475
+ this.downloadLabel = label;
476
+ this.updateDownloadButton();
477
+ }
478
+
445
479
  setFullscreenButtonVisible(visible: boolean): void {
446
480
  this.fullscreenButtonVisible = visible;
447
481
  this.fullscreenButton.hidden = !visible;
@@ -742,6 +776,55 @@ export class StockSharpDiagram extends EventEmitter<DiagramEvents> {
742
776
  return button;
743
777
  }
744
778
 
779
+ private createDownloadButton(): HTMLButtonElement {
780
+ const owner = this.div.ownerDocument ?? document;
781
+ const button = owner.createElement('button');
782
+ button.type = 'button';
783
+ button.className = 'ssdiagram-download-button';
784
+ button.setAttribute('data-ssdiagram-download-button', '');
785
+ Object.assign(button.style, {
786
+ position: 'absolute',
787
+ top: '8px',
788
+ right: '46px',
789
+ zIndex: '4',
790
+ display: 'inline-flex',
791
+ alignItems: 'center',
792
+ justifyContent: 'center',
793
+ width: '30px',
794
+ height: '30px',
795
+ padding: '0',
796
+ border: '1px solid var(--ssdiagram-control-border, var(--t-border, #3a4250))',
797
+ borderRadius: '5px',
798
+ background: 'var(--ssdiagram-control-background, var(--t-surface, rgba(18, 21, 28, 0.9)))',
799
+ color: 'var(--ssdiagram-control-color, var(--t-text, #eaecef))',
800
+ boxSizing: 'border-box',
801
+ cursor: 'pointer',
802
+ opacity: '0.9',
803
+ });
804
+ // The control writes no files: it says the diagram was asked for, and the host saves it.
805
+ const click = (): void => {
806
+ this.emit('exportRequested', { format: 'document' });
807
+ };
808
+ button.addEventListener('click', click);
809
+ this.div.appendChild(button);
810
+ this.disposables.push(() => {
811
+ button.removeEventListener('click', click);
812
+ button.remove();
813
+ });
814
+ return button;
815
+ }
816
+
817
+ private updateDownloadButton(): void {
818
+ if (this.downloadButton === null) return;
819
+
820
+ const label = this.downloadLabel ?? t('download', 'Download');
821
+ this.downloadButton.title = label;
822
+ this.downloadButton.setAttribute('aria-label', label);
823
+ this.downloadButton.innerHTML = '<svg viewBox="0 0 24 24" width="16" height="16" aria-hidden="true" '
824
+ + 'fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" '
825
+ + 'stroke-linejoin="round"><path d="M12 4v11M8 11l4 4 4-4M5 19h14"/></svg>';
826
+ }
827
+
745
828
  private updateFullscreenButton(): void {
746
829
  const fullscreen = this.fullscreen;
747
830
  const labels = this.resolveFullscreenLabels();
package/src/embed.ts CHANGED
@@ -11,7 +11,7 @@ import { t } from './i18n.js';
11
11
  import { StockSharpDiagram } from './diagram/stocksharp-diagram.js';
12
12
  import { StockSharpCatalog } from './diagram/catalog.js';
13
13
  import { DiagramNode, Link, Node, Port, PortType } from './diagram/types.js';
14
- import type { FullscreenRequestedPayload } from './diagram/api.js';
14
+ import type { ExportRequestedPayload, FullscreenRequestedPayload } from './diagram/api.js';
15
15
  import { toPortDynamicMode } from './core/model.js';
16
16
  import type { PortDynamicMode } from './core/model.js';
17
17
 
@@ -58,6 +58,14 @@ export interface DiagramEmbedOptions {
58
58
  request: FullscreenRequestedPayload,
59
59
  handle: DiagramEmbedHandle,
60
60
  ) => void;
61
+ /**
62
+ * Called when the reader asks for the diagram to be saved. The control writes no files; a host that
63
+ * passes this gets the button, and does the saving itself.
64
+ */
65
+ onExportRequested?: (
66
+ request: ExportRequestedPayload,
67
+ handle: DiagramEmbedHandle,
68
+ ) => void;
61
69
  onDestroyed?: (handle: DiagramEmbedHandle) => void;
62
70
  }
63
71
 
@@ -382,6 +390,10 @@ async function renderSchemeAtRevision(
382
390
  // The host page passes its wording the same way it passes the error texts: through the dataset,
383
391
  // "enter|exit". Left out, the button keeps its English defaults.
384
392
  const [enterLabel, exitLabel] = (div.dataset.diagramFullscreen ?? '').split('|');
393
+ // The download button appears only where a host listens for the request; its wording comes the same
394
+ // way as the rest, and its absence leaves the button hidden.
395
+ const downloadLabel = div.dataset.diagramDownload;
396
+ const showDownloadButton = options.onExportRequested !== undefined;
385
397
 
386
398
  let diagram: StockSharpDiagram;
387
399
  try {
@@ -389,6 +401,8 @@ async function renderSchemeAtRevision(
389
401
  div,
390
402
  catalog,
391
403
  ...(enterLabel && exitLabel ? { fullscreenLabels: { enter: enterLabel, exit: exitLabel } } : {}),
404
+ ...(showDownloadButton ? { showDownloadButton: true } : {}),
405
+ ...(downloadLabel ? { downloadLabel } : {}),
392
406
  });
393
407
  } catch (error) {
394
408
  div.replaceChildren();
@@ -430,6 +444,11 @@ async function renderSchemeAtRevision(
430
444
  activeRenders.set(div, handle);
431
445
  connectedRenders.add(handle);
432
446
  ensureDisconnectedHostObserver();
447
+ if (options.onExportRequested !== undefined) {
448
+ const notifyHost = options.onExportRequested;
449
+ cleanups.push(diagram.on('exportRequested', (request) => notifyHost(request, handle)));
450
+ }
451
+
433
452
  if (options.onFullscreenRequested !== undefined) {
434
453
  const notifyHost = options.onFullscreenRequested;
435
454
  cleanups.push(diagram.on('fullscreenRequested', (request) => notifyHost(request, handle)));
@@ -0,0 +1,139 @@
1
+ import { Diagram, type DiagramScreenshotOptions } from './canvas-renderer.js';
2
+ import { parseDiagramDocument } from './core/document.js';
3
+
4
+ /**
5
+ * Drawing a diagram where there is no browser -- a server producing a picture for a chat message, an
6
+ * e-mail or a report. The renderer itself never needed one: it draws through a surface, and the SVG
7
+ * surface builds a string. What needed a browser was the control around it, which creates a canvas and
8
+ * listens for pointers; so the few things it reaches for are stood in for here, for the length of one
9
+ * drawing, and taken away again.
10
+ *
11
+ * Text is measured by the SVG surface's own estimate rather than by a real font, so a label's box can sit
12
+ * a pixel or two off where a browser would put it. The alternative is a native canvas dependency on every
13
+ * machine that renders, which is a steep price for that.
14
+ */
15
+ export interface HeadlessRenderOptions extends DiagramScreenshotOptions {
16
+ /** Width of the frame the drawing is laid out in, in CSS pixels. Defaults to 1200. */
17
+ hostWidth?: number;
18
+ /** Height of that frame. Defaults to 800. */
19
+ hostHeight?: number;
20
+ }
21
+
22
+ /** A 2D context that answers every call and remembers nothing: the drawing goes to the SVG surface. */
23
+ function createContext(): CanvasRenderingContext2D {
24
+ const own = {
25
+ globalAlpha: 1,
26
+ measureText: (text: string) => ({ width: text.length * 7 }),
27
+ };
28
+
29
+ return new Proxy(own, {
30
+ get: (target, property) => property in target ? target[property as keyof typeof own] : () => undefined,
31
+ set: (target, property, value) => {
32
+ (target as Record<PropertyKey, unknown>)[property] = value;
33
+ return true;
34
+ },
35
+ }) as unknown as CanvasRenderingContext2D;
36
+ }
37
+
38
+ class StubElement {
39
+ style: Record<string, string> = {};
40
+ className = '';
41
+ tabIndex = 0;
42
+ width = 0;
43
+ height = 0;
44
+ textContent = '';
45
+ readonly children: StubElement[] = [];
46
+ readonly classList = { toggle: () => false, add: () => undefined, remove: () => undefined };
47
+
48
+ private readonly context = createContext();
49
+
50
+ appendChild<T extends StubElement>(child: T): T {
51
+ this.children.push(child);
52
+ return child;
53
+ }
54
+
55
+ removeChild(child: StubElement): StubElement {
56
+ const at = this.children.indexOf(child);
57
+ if (at >= 0) this.children.splice(at, 1);
58
+ return child;
59
+ }
60
+
61
+ remove(): void { /* detached already */ }
62
+ setAttribute(): void { /* nothing reads it here */ }
63
+ focus(): void { /* no focus without a browser */ }
64
+ addEventListener(): void { /* nothing to fire the events */ }
65
+ removeEventListener(): void { /* see above */ }
66
+ getContext(): CanvasRenderingContext2D { return this.context; }
67
+
68
+ getBoundingClientRect(): DOMRect {
69
+ return { left: 0, top: 0, right: this.width, bottom: this.height, width: this.width, height: this.height, x: 0, y: 0, toJSON: () => ({}) } as DOMRect;
70
+ }
71
+
72
+ get clientWidth(): number { return this.width; }
73
+ get clientHeight(): number { return this.height; }
74
+ }
75
+
76
+ const GLOBAL_KEYS = ['window', 'document', 'requestAnimationFrame', 'cancelAnimationFrame', 'Image', 'getComputedStyle', 'performance'] as const;
77
+
78
+ /** Puts the stubs in place, and hands back the function that removes exactly what it added. */
79
+ function installGlobals(): () => void {
80
+ const target = globalThis as Record<string, unknown>;
81
+
82
+ if (target.document !== undefined)
83
+ return () => undefined;
84
+
85
+ const before = new Map<string, unknown>();
86
+ for (const key of GLOBAL_KEYS) before.set(key, target[key]);
87
+
88
+ const stubDocument = Object.assign(new StubElement(), {
89
+ documentElement: new StubElement(),
90
+ createElement: () => new StubElement(),
91
+ });
92
+
93
+ Object.assign(target, {
94
+ window: Object.assign(new StubElement(), { devicePixelRatio: 1 }),
95
+ document: stubDocument,
96
+ requestAnimationFrame: () => 1,
97
+ cancelAnimationFrame: () => undefined,
98
+ Image: class { },
99
+ getComputedStyle: () => ({ getPropertyValue: () => '' }),
100
+ // A host without a browser may have no clock either -- an embedded JS engine has none. The drawing
101
+ // reads it for animation, and a still picture has no animation to advance.
102
+ performance: (globalThis as { performance?: { now(): number } }).performance ?? { now: () => 0 },
103
+ });
104
+
105
+ return () => {
106
+ for (const [key, value] of before) {
107
+ if (value === undefined) delete target[key];
108
+ else target[key] = value;
109
+ }
110
+ };
111
+ }
112
+
113
+ /**
114
+ * Draws a saved diagram and returns the SVG for it. The source is the document as text or as an object;
115
+ * the frame follows the content by default, since a picture made without a viewport has none to crop to.
116
+ */
117
+ export function renderDiagramSvg(source: string | unknown, options: HeadlessRenderOptions = {}): string {
118
+ const { hostWidth = 1200, hostHeight = 800, ...screenshot } = options;
119
+ const restore = installGlobals();
120
+
121
+ try {
122
+ const host = new StubElement();
123
+ host.width = hostWidth;
124
+ host.height = hostHeight;
125
+
126
+ const diagram = new Diagram({ host: host as unknown as HTMLElement });
127
+
128
+ try {
129
+ // Whatever shape it arrived in -- text off the wire, an object already in hand -- the library's
130
+ // own reader decides what a document is.
131
+ diagram.loadDocument(parseDiagramDocument(source));
132
+ return diagram.takeSvg({ scope: 'content', ...screenshot });
133
+ } finally {
134
+ diagram.destroy();
135
+ }
136
+ } finally {
137
+ restore();
138
+ }
139
+ }
package/src/i18n.ts CHANGED
@@ -118,6 +118,7 @@ export interface DesignerI18n {
118
118
  // host -- and that override wins; these are the defaults when none was given.
119
119
  fullscreenEnter?: string;
120
120
  fullscreenExit?: string;
121
+ download?: string;
121
122
  embedErrorLoad?: string;
122
123
  embedErrorEmpty?: string;
123
124
  embedErrorDraw?: string;
package/src/index.ts CHANGED
@@ -6,6 +6,9 @@ export {
6
6
  serializeDiagramDocument,
7
7
  } from './core/document.js';
8
8
 
9
+ export { renderDiagramSvg } from './headless.js';
10
+ export type { HeadlessRenderOptions } from './headless.js';
11
+
9
12
  export { DiagramActionRegistry } from './core/action-registry.js';
10
13
  export type {
11
14
  DiagramAction,