@umbraci/jsmind 0.10.14 → 0.10.15

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 (69) hide show
  1. package/LICENSE +24 -24
  2. package/README.md +116 -116
  3. package/dist/jsmind.copy-paste.js +9 -0
  4. package/dist/jsmind.copy-paste.js.map +1 -0
  5. package/dist/jsmind.draggable-node.js +1 -1
  6. package/dist/jsmind.draggable-node.js.map +1 -1
  7. package/dist/jsmind.history.js +1 -1
  8. package/dist/jsmind.history.js.map +1 -1
  9. package/dist/jsmind.js +1 -1
  10. package/dist/jsmind.js.map +1 -1
  11. package/dist/jsmind.multi-select.js +1 -1
  12. package/dist/jsmind.multi-select.js.map +1 -1
  13. package/dist/jsmind.multiline-text.js +1 -1
  14. package/dist/jsmind.multiline-text.js.map +1 -1
  15. package/dist/jsmind.screenshot.js +1 -1
  16. package/dist/jsmind.screenshot.js.map +1 -1
  17. package/es/jsmind.copy-paste.js +9 -0
  18. package/es/jsmind.copy-paste.js.map +1 -0
  19. package/es/jsmind.draggable-node.js +1 -1
  20. package/es/jsmind.draggable-node.js.map +1 -1
  21. package/es/jsmind.history.js +1 -1
  22. package/es/jsmind.history.js.map +1 -1
  23. package/es/jsmind.js +1 -1
  24. package/es/jsmind.js.map +1 -1
  25. package/es/jsmind.multi-select.js +1 -1
  26. package/es/jsmind.multi-select.js.map +1 -1
  27. package/es/jsmind.multiline-text.js +1 -1
  28. package/es/jsmind.multiline-text.js.map +1 -1
  29. package/es/jsmind.screenshot.js +1 -1
  30. package/es/jsmind.screenshot.js.map +1 -1
  31. package/lib/jsmind.copy-paste.js +9 -0
  32. package/lib/jsmind.copy-paste.js.map +1 -0
  33. package/lib/jsmind.draggable-node.js +1 -1
  34. package/lib/jsmind.draggable-node.js.map +1 -1
  35. package/lib/jsmind.history.js +1 -1
  36. package/lib/jsmind.history.js.map +1 -1
  37. package/lib/jsmind.js +1 -1
  38. package/lib/jsmind.js.map +1 -1
  39. package/lib/jsmind.multi-select.js +1 -1
  40. package/lib/jsmind.multi-select.js.map +1 -1
  41. package/lib/jsmind.multiline-text.js +1 -1
  42. package/lib/jsmind.multiline-text.js.map +1 -1
  43. package/lib/jsmind.screenshot.js +1 -1
  44. package/lib/jsmind.screenshot.js.map +1 -1
  45. package/package.json +115 -115
  46. package/style/jsmind.css +408 -408
  47. package/types/generated/index.d.ts +8 -0
  48. package/types/generated/jsmind.common.d.ts +68 -0
  49. package/types/generated/jsmind.d.ts +632 -0
  50. package/types/generated/jsmind.data_provider.d.ts +56 -0
  51. package/types/generated/jsmind.dom.d.ts +59 -0
  52. package/types/generated/jsmind.enhanced-plugin.d.ts +103 -0
  53. package/types/generated/jsmind.format.d.ts +113 -0
  54. package/types/generated/jsmind.graph.d.ts +180 -0
  55. package/types/generated/jsmind.layout_provider.d.ts +182 -0
  56. package/types/generated/jsmind.mind.d.ts +129 -0
  57. package/types/generated/jsmind.node.d.ts +69 -0
  58. package/types/generated/jsmind.option.d.ts +78 -0
  59. package/types/generated/jsmind.plugin.d.ts +21 -0
  60. package/types/generated/jsmind.shortcut_provider.d.ts +52 -0
  61. package/types/generated/jsmind.util.d.ts +26 -0
  62. package/types/generated/jsmind.view_provider.d.ts +374 -0
  63. package/types/generated/plugins/history/history-diff.d.ts +310 -0
  64. package/types/generated/plugins/history/jsmind.history.d.ts +87 -0
  65. package/types/generated/plugins/jsmind.draggable-node.d.ts +262 -0
  66. package/types/generated/plugins/jsmind.multiline-text-v2.d.ts +58 -0
  67. package/types/generated/plugins/jsmind.multiline-text.d.ts +43 -0
  68. package/types/generated/plugins/jsmind.screenshot.d.ts +83 -0
  69. package/types/tsconfig.declaration.json +19 -19
@@ -0,0 +1,87 @@
1
+ export default HistoryPlugin;
2
+ export type JsMind = import("../../jsmind.js").default;
3
+ export type DiffResult = import("./history-diff.js").DiffResult;
4
+ export type DiffOptions = import("./history-diff.js").DiffOptions;
5
+ /**
6
+ * HistoryPlugin skeleton (Task 1)
7
+ */
8
+ export class HistoryPlugin extends EnhancedPlugin {
9
+ /**
10
+ * @param {{ jm: JsMind, pluginOpt?: any }} params
11
+ */
12
+ constructor({ jm, pluginOpt }: {
13
+ jm: JsMind;
14
+ pluginOpt?: any;
15
+ });
16
+ options: any;
17
+ _mounted: boolean;
18
+ _core: HistoryCore;
19
+ /**
20
+ * Lifecycle hook: called when jsMind instance is destroyed
21
+ */
22
+ beforePluginDestroy(): void;
23
+ /** Default: call beforePluginRemove on destroy */
24
+ beforePluginDestroy(): void;
25
+ /** Initialize HistoryCore and wire API methods */
26
+ _initCore(): void;
27
+ _listener: (type: any, payload: any) => void;
28
+ /**
29
+ * Inject shortcut options so provider can register mapping in its init phase
30
+ * @param {{ enable?: boolean, handles: Record<string,Function>, mapping: Record<string, number|number[]> }} sc
31
+ * @param {boolean} redoUsesY
32
+ */
33
+ _injectShortcuts(sc: {
34
+ enable?: boolean;
35
+ handles: Record<string, Function>;
36
+ mapping: Record<string, number | number[]>;
37
+ }, redoUsesY: boolean): void;
38
+ /** Mount public API on jm.history (placeholder defaults) */
39
+ _mountAPI(): void;
40
+ }
41
+ import { EnhancedPlugin } from '../../jsmind.enhanced-plugin.js';
42
+ declare class HistoryCore {
43
+ /** @param {JsMind} jm @param {any} options */
44
+ constructor(jm: JsMind, options: any);
45
+ jm: import("../../jsmind.js").default;
46
+ options: any;
47
+ enabled: boolean;
48
+ maxHistory: number;
49
+ throttleMs: number;
50
+ storageMode: any;
51
+ autoSwitchThreshold: number;
52
+ _history: any[];
53
+ _idx: number;
54
+ _paused: boolean;
55
+ _lastAddAt: number;
56
+ _timer: number;
57
+ _pending: boolean;
58
+ _pendingMeta: any;
59
+ _lastSig: any;
60
+ _lastRootId: any;
61
+ add(reason: string, meta: any): void;
62
+ pause(): void;
63
+ resume(flush?: boolean): void;
64
+ clear(): void;
65
+ canBack(): boolean;
66
+ canForward(): boolean;
67
+ back(steps?: number): boolean;
68
+ forward(steps?: number): boolean;
69
+ length(): number;
70
+ index(): number;
71
+ setMax(count: any): void;
72
+ setThrottle(ms: any): void;
73
+ exportSnapshot(): any;
74
+ importSnapshot(data: any, applyOptions: any): boolean;
75
+ getStackMeta(): {
76
+ items: any[];
77
+ index: number;
78
+ };
79
+ _notifyChange(): void;
80
+ _addNow(_reason: any, _meta: any): void;
81
+ _applyIndex(): boolean;
82
+ _takeSnapshot(): any;
83
+ _applySnapshot(data: any, applyOptions: any): boolean;
84
+ _countNodes(snapshot: any): number;
85
+ _deepFreeze(obj: any): any;
86
+ _cloneSnapshot(obj: any): any;
87
+ }
@@ -0,0 +1,262 @@
1
+ /**
2
+ * Draggable node plugin for jsMind.
3
+ */
4
+ export class DraggableNode {
5
+ /**
6
+ * Create draggable node plugin instance.
7
+ * @param {import('../jsmind.js').default} jm - jsMind instance
8
+ * @param {Partial<DraggableNodeOptions>} options - Plugin options
9
+ */
10
+ constructor(jm: import("../jsmind.js").default, options: Partial<DraggableNodeOptions>);
11
+ version: string;
12
+ /** @type {import('../jsmind.js').default} */
13
+ jm: import("../jsmind.js").default;
14
+ /** @type {DraggableNodeOptions} */
15
+ options: DraggableNodeOptions;
16
+ /** @type {boolean} */
17
+ is_svg_engine: boolean;
18
+ /** @type {HTMLCanvasElement|SVGSVGElement|null} */
19
+ e_canvas: HTMLCanvasElement | SVGSVGElement | null;
20
+ /** @type {CanvasRenderingContext2D|null} */
21
+ canvas_ctx: CanvasRenderingContext2D | null;
22
+ /** @type {SVGPathElement|null} */
23
+ helper_line: SVGPathElement | null;
24
+ /** @type {HTMLElement|null} */
25
+ shadow: HTMLElement | null;
26
+ /** @type {number} */
27
+ shadow_p_x: number;
28
+ /** @type {number} */
29
+ shadow_p_y: number;
30
+ /** @type {number} */
31
+ shadow_w: number;
32
+ /** @type {number} */
33
+ shadow_h: number;
34
+ /** @type {import('../jsmind.node.js').Node|null} */
35
+ active_node: import("../jsmind.node.js").Node | null;
36
+ /** @type {import('../jsmind.node.js').Node|null} */
37
+ target_node: import("../jsmind.node.js").Node | null;
38
+ /** @type {number|null} */
39
+ target_direct: number | null;
40
+ /** @type {number} */
41
+ client_w: number;
42
+ /** @type {number} */
43
+ client_h: number;
44
+ /** @type {number} */
45
+ offset_x: number;
46
+ /** @type {number} */
47
+ offset_y: number;
48
+ /** @type {number} */
49
+ hlookup_delay: number;
50
+ /** @type {number} */
51
+ hlookup_timer: number;
52
+ /** @type {boolean} */
53
+ capture: boolean;
54
+ /** @type {boolean} */
55
+ moved: boolean;
56
+ /** @type {boolean} */
57
+ canvas_draggable: boolean;
58
+ /** @type {HTMLElement} */
59
+ view_panel: HTMLElement;
60
+ /** @type {DOMRect|null} */
61
+ view_panel_rect: DOMRect | null;
62
+ /** Initialize the draggable node plugin. */
63
+ init(): void;
64
+ /** Resize canvas/SVG and shadow elements. */
65
+ resize(): void;
66
+ /** Create canvas or SVG for drawing drag lines. */
67
+ create_canvas(): void;
68
+ /**
69
+ * Create SVG element with proper namespace.
70
+ * @param {string} tag - SVG tag name
71
+ * @returns {SVGElement}
72
+ * @private
73
+ */
74
+ private _create_svg_element;
75
+ create_shadow(): void;
76
+ /**
77
+ * Reset shadow element style and cache its size.
78
+ * @param {HTMLElement} el - The node element to mirror as shadow
79
+ */
80
+ reset_shadow(el: HTMLElement): void;
81
+ /** Show the shadow element. */
82
+ show_shadow(): void;
83
+ /** Hide the shadow element. */
84
+ hide_shadow(): void;
85
+ /**
86
+ * Draw a helper line between the shadow and target node.
87
+ * @param {{x:number,y:number}} shadow_p - Shadow anchor point
88
+ * @param {{x:number,y:number}} node_p - Target node anchor point
89
+ * @param {boolean} invalid - Whether current target is invalid
90
+ */
91
+ magnet_shadow(shadow_p: {
92
+ x: number;
93
+ y: number;
94
+ }, node_p: {
95
+ x: number;
96
+ y: number;
97
+ }, invalid: boolean): void;
98
+ /** Clear helper lines from canvas or SVG. */
99
+ clear_lines(): void;
100
+ /**
101
+ * Draw a straight helper line on canvas.
102
+ * @param {number} x1
103
+ * @param {number} y1
104
+ * @param {number} x2
105
+ * @param {number} y2
106
+ */
107
+ canvas_lineto(x1: number, y1: number, x2: number, y2: number): void;
108
+ /**
109
+ * Draw a helper line on SVG using bezier curve.
110
+ * Reuses the line drawing logic from SvgGraph.
111
+ * @param {number} x1 - Start x coordinate
112
+ * @param {number} y1 - Start y coordinate
113
+ * @param {number} x2 - End x coordinate
114
+ * @param {number} y2 - End y coordinate
115
+ * @param {string} color - Line color
116
+ */
117
+ svg_draw_line(x1: number, y1: number, x2: number, y2: number, color: string): void;
118
+ /**
119
+ * Draw bezier curve to SVG path element.
120
+ * Reuses logic from SvgGraph._bezier_to.
121
+ * @param {SVGPathElement} path - SVG path element
122
+ * @param {number} x1 - Start x coordinate
123
+ * @param {number} y1 - Start y coordinate
124
+ * @param {number} x2 - End x coordinate
125
+ * @param {number} y2 - End y coordinate
126
+ * @private
127
+ */
128
+ private _svg_bezier_to;
129
+ /** Bind mouse/touch events for dragging. */
130
+ event_bind(): void;
131
+ /**
132
+ * Begin dragging interaction.
133
+ * @param {MouseEvent|TouchEvent} e - Pointer down event
134
+ */
135
+ dragstart(e: MouseEvent | TouchEvent): void;
136
+ view_draggable: boolean;
137
+ client_hw: number;
138
+ client_hh: number;
139
+ /**
140
+ * Drag handler to move shadow and auto-scroll container.
141
+ * @param {MouseEvent|TouchEvent} e - Pointer move event
142
+ */
143
+ drag(e: MouseEvent | TouchEvent): void;
144
+ /**
145
+ * Finish dragging, move the node if applicable.
146
+ * @param {MouseEvent|TouchEvent} e - Pointer up event
147
+ */
148
+ dragend(e: MouseEvent | TouchEvent): void;
149
+ /**
150
+ * Find the closest node element from an event target.
151
+ * @param {HTMLElement} el - Current DOM element
152
+ * @returns {HTMLElement|null} Matched node element or null
153
+ */
154
+ find_node_element(el: HTMLElement): HTMLElement | null;
155
+ /** Recompute target node under the shadow and draw helper. */
156
+ lookup_target_node(): void;
157
+ /**
158
+ * Get X coordinate of root node center.
159
+ * @returns {number}
160
+ */
161
+ get_root_x(): number;
162
+ /**
163
+ * Lookup overlapping node's parent near the shadow position.
164
+ * @param {number} direction - Direction constant
165
+ * @returns {import('../jsmind.node.js').Node|null}
166
+ */
167
+ lookup_overlapping_node_parent(direction: number): import("../jsmind.node.js").Node | null;
168
+ /**
169
+ * Find node's parent by a screen location.
170
+ * @param {number} x - Client X
171
+ * @param {number} y - Client Y
172
+ * @returns {import('../jsmind.node.js').Node|null}
173
+ */
174
+ lookup_node_parent_by_location(x: number, y: number): import("../jsmind.node.js").Node | null;
175
+ /**
176
+ * Lookup the closest node along a direction.
177
+ * @param {number} direction
178
+ * @returns {import('../jsmind.node.js').Node}
179
+ */
180
+ lookup_close_node(direction: number): import("../jsmind.node.js").Node;
181
+ /**
182
+ * Check if shadow is on the target side of a node.
183
+ * @param {import('../jsmind.node.js').Node} node
184
+ * @param {number} dir
185
+ * @returns {boolean}
186
+ */
187
+ shadow_on_target_side(node: import("../jsmind.node.js").Node, dir: number): boolean;
188
+ /**
189
+ * Distance from shadow to the right side of a node.
190
+ * @param {import('../jsmind.node.js').Node} node
191
+ * @returns {number}
192
+ */
193
+ shadow_to_right_of_node(node: import("../jsmind.node.js").Node): number;
194
+ /**
195
+ * Distance from shadow to the left side of a node.
196
+ * @param {import('../jsmind.node.js').Node} node
197
+ * @returns {number}
198
+ */
199
+ shadow_to_left_of_node(node: import("../jsmind.node.js").Node): number;
200
+ /**
201
+ * Vertical distance between shadow centerline and node centerline.
202
+ * @param {import('../jsmind.node.js').Node} node
203
+ * @returns {number}
204
+ */
205
+ shadow_to_base_line_of_node(node: import("../jsmind.node.js").Node): number;
206
+ /**
207
+ * Manhattan distance to a node along a direction.
208
+ * @param {import('../jsmind.node.js').Node} node
209
+ * @param {number} dir
210
+ * @returns {number}
211
+ */
212
+ shadow_to_node(node: import("../jsmind.node.js").Node, dir: number): number;
213
+ /**
214
+ * Calculate connection points of a node and the shadow.
215
+ * @param {import('../jsmind.node.js').Node} node
216
+ * @param {number} dir
217
+ * @returns {{sp:{x:number,y:number}, np:{x:number,y:number}}}
218
+ */
219
+ calc_point_of_node(node: import("../jsmind.node.js").Node, dir: number): {
220
+ sp: {
221
+ x: number;
222
+ y: number;
223
+ };
224
+ np: {
225
+ x: number;
226
+ y: number;
227
+ };
228
+ };
229
+ /**
230
+ * Move a node to a new parent/position.
231
+ * @param {import('../jsmind.node.js').Node} src_node
232
+ * @param {import('../jsmind.node.js').Node|null} target_node
233
+ * @param {number|null} target_direct
234
+ */
235
+ move_node(src_node: import("../jsmind.node.js").Node, target_node: import("../jsmind.node.js").Node | null, target_direct: number | null): void;
236
+ /**
237
+ * Handle jsMind events.
238
+ * @param {number|string} type - Event type
239
+ * @param {object} [data] - Event data
240
+ */
241
+ jm_event_handle(type: number | string, data?: object): void;
242
+ }
243
+ /**
244
+ * Draggable node plugin registration.
245
+ * @type {import('../jsmind.plugin.js').Plugin<Partial<DraggableNodeOptions>>}
246
+ */
247
+ export const draggable_plugin: import("../jsmind.plugin.js").Plugin<Partial<DraggableNodeOptions>>;
248
+ export default DraggableNode;
249
+ /**
250
+ * Default options for draggable node plugin.
251
+ */
252
+ export type DraggableNodeOptions = {
253
+ line_width?: number;
254
+ line_color?: string;
255
+ line_color_invalid?: string;
256
+ lookup_delay?: number;
257
+ lookup_interval?: number;
258
+ scrolling_trigger_width?: number;
259
+ scrolling_step_length?: number;
260
+ shadow_node_class_name?: string;
261
+ validate_drag?: (draggedNode: import("../jsmind.node.js").Node, targetNode: import("../jsmind.node.js").Node | null) => boolean;
262
+ };
@@ -0,0 +1,58 @@
1
+ export default MultilineTextV2;
2
+ /**
3
+ * MultilineTextV2 Plugin
4
+ * Enhanced multiline text plugin using the new plugin system
5
+ */
6
+ declare class MultilineTextV2 extends EnhancedPlugin {
7
+ /**
8
+ * @param {{ jm: import('../jsmind.js').default, pluginOpt: object }} params
9
+ */
10
+ constructor({ jm, pluginOpt }: {
11
+ jm: import("../jsmind.js").default;
12
+ pluginOpt: object;
13
+ });
14
+ options: any;
15
+ editing_node: import("../jsmind.node.js").Node;
16
+ multiline_editor: HTMLElement;
17
+ _original_custom_render: Function | ((jm: import("../jsmind.js").default, ele: HTMLElement, node: import("../jsmind.node.js").Node) => void);
18
+ _original_edit_node_begin: any;
19
+ _original_edit_node_end: any;
20
+ /**
21
+ * Setup custom rendering in options (for preload plugins)
22
+ */
23
+ setupCustomRenderInOptions(): void;
24
+ /**
25
+ * Setup custom rendering for multiline text (for normal plugins)
26
+ */
27
+ setupCustomRender(): void;
28
+ /**
29
+ * Setup edit handlers (common for both preload and normal plugins)
30
+ */
31
+ setupEditHandlers(): void;
32
+ /**
33
+ * Re-render all nodes to apply multiline styles and recalculate sizes.
34
+ * This is necessary because node sizes are calculated before custom styles are applied.
35
+ * @private
36
+ */
37
+ private _rerender_all_nodes;
38
+ /**
39
+ * Begin editing a node
40
+ * @param {import('../jsmind.node.js').Node} node
41
+ */
42
+ edit_node_begin(node: import("../jsmind.node.js").Node): void;
43
+ /**
44
+ * End editing and save changes.
45
+ */
46
+ edit_node_end(): void;
47
+ /**
48
+ * Cancel editing without saving changes.
49
+ */
50
+ cancel_editing(): void;
51
+ /**
52
+ * Clean up editor and reset state.
53
+ * @private
54
+ */
55
+ private _cleanup_editor;
56
+ }
57
+ import { EnhancedPlugin } from '../jsmind.enhanced-plugin.js';
58
+ import jsMind from '../jsmind.js';
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Create a custom node render function for multiline text
3
+ * @param {MultilineTextOptions} [options={}] - Plugin options
4
+ * @param {number} [options.text_width=200] - Maximum width for multiline text nodes
5
+ * @param {string} [options.line_height='1.5'] - Line height for text
6
+ * @returns {function(jsMind, HTMLElement, Node): boolean} Custom render function
7
+ * @example
8
+ * const options = {
9
+ * view: {
10
+ * custom_node_render: createMultilineRender({
11
+ * text_width: 250,
12
+ * line_height: '1.6',
13
+ * })
14
+ * }
15
+ * };
16
+ */
17
+ export function createMultilineRender(options?: MultilineTextOptions): (arg0: jsMind, arg1: HTMLElement, arg2: Node) => boolean;
18
+ declare namespace _default {
19
+ export let name: string;
20
+ export { init };
21
+ export { createMultilineRender };
22
+ }
23
+ export default _default;
24
+ /**
25
+ * Default plugin options
26
+ */
27
+ export type MultilineTextOptions = {
28
+ /**
29
+ * - Maximum width for multiline text nodes (default: 200)
30
+ */
31
+ text_width: number;
32
+ /**
33
+ * - Line height for text (default: '1.5')
34
+ */
35
+ line_height: string;
36
+ };
37
+ /**
38
+ * Plugin initialization function
39
+ * @param {import('../jsmind.js').default} jm - jsMind instance
40
+ * @param {MultilineTextOptions} options - Plugin options
41
+ * @private
42
+ */
43
+ declare function init(jm: import("../jsmind.js").default, options: MultilineTextOptions): void;
@@ -0,0 +1,83 @@
1
+ /**
2
+ * Screenshot plugin for jsMind.
3
+ */
4
+ export class JmScreenshot {
5
+ /**
6
+ * Create screenshot plugin instance.
7
+ * @param {import('../jsmind.js').default} jm - jsMind instance
8
+ * @param {Partial<ScreenshotOptions>} options - Plugin options
9
+ */
10
+ constructor(jm: import("../jsmind.js").default, options: Partial<ScreenshotOptions>);
11
+ version: string;
12
+ /** @type {import('../jsmind.js').default} */
13
+ jm: import("../jsmind.js").default;
14
+ /** @type {ScreenshotOptions} */
15
+ options: ScreenshotOptions;
16
+ /** @type {number} */
17
+ dpr: number;
18
+ /** Take a screenshot of the mind map. */
19
+ shoot(): void;
20
+ /**
21
+ * Create canvas for screenshot.
22
+ * @returns {HTMLCanvasElement} Canvas element
23
+ */
24
+ create_canvas(): HTMLCanvasElement;
25
+ /**
26
+ * Clean up canvas element.
27
+ * @param {HTMLCanvasElement} c - Canvas to remove
28
+ */
29
+ clear(c: HTMLCanvasElement): void;
30
+ /**
31
+ * Draw background on canvas.
32
+ * @param {CanvasRenderingContext2D} ctx - Canvas context
33
+ * @returns {Promise<CanvasRenderingContext2D>} Promise resolving to context
34
+ */
35
+ draw_background(ctx: CanvasRenderingContext2D): Promise<CanvasRenderingContext2D>;
36
+ /**
37
+ * Draw connection lines on canvas by copying from view graph.
38
+ * @param {CanvasRenderingContext2D} ctx
39
+ * @returns {Promise<CanvasRenderingContext2D>}
40
+ */
41
+ draw_lines(ctx: CanvasRenderingContext2D): Promise<CanvasRenderingContext2D>;
42
+ /**
43
+ * Draw node DOM into canvas via SVG snapshot.
44
+ * @param {CanvasRenderingContext2D} ctx
45
+ * @returns {Promise<CanvasRenderingContext2D>}
46
+ */
47
+ draw_nodes(ctx: CanvasRenderingContext2D): Promise<CanvasRenderingContext2D>;
48
+ /**
49
+ * Draw watermark text on canvas.
50
+ * @param {HTMLCanvasElement} c
51
+ * @param {CanvasRenderingContext2D} ctx
52
+ * @returns {CanvasRenderingContext2D}
53
+ */
54
+ draw_watermark(c: HTMLCanvasElement, ctx: CanvasRenderingContext2D): CanvasRenderingContext2D;
55
+ /**
56
+ * Load image from URL and resolve img element.
57
+ * @param {string} url
58
+ * @returns {Promise<HTMLImageElement>}
59
+ */
60
+ load_image(url: string): Promise<HTMLImageElement>;
61
+ /**
62
+ * Trigger download of canvas content as PNG.
63
+ * @param {HTMLCanvasElement} c
64
+ */
65
+ download(c: HTMLCanvasElement): void;
66
+ }
67
+ /**
68
+ * Screenshot plugin registration.
69
+ * @type {import('../jsmind.plugin.js').Plugin<Partial<ScreenshotOptions>>}
70
+ */
71
+ export const screenshot_plugin: import("../jsmind.plugin.js").Plugin<Partial<ScreenshotOptions>>;
72
+ export default JmScreenshot;
73
+ /**
74
+ * Default options for screenshot plugin.
75
+ */
76
+ export type ScreenshotOptions = {
77
+ filename?: string | null;
78
+ watermark?: {
79
+ left?: string | Location;
80
+ right?: string;
81
+ };
82
+ background?: string;
83
+ };
@@ -1,19 +1,19 @@
1
- {
2
- "compilerOptions": {
3
- "target": "ES2020",
4
- "module": "ESNext",
5
- "moduleResolution": "node",
6
- "strict": false,
7
- "esModuleInterop": true,
8
- "skipLibCheck": true,
9
- "declaration": true,
10
- "emitDeclarationOnly": true,
11
- "stripInternal": true,
12
- "allowJs": true,
13
- "checkJs": false,
14
- "rootDirs": ["../src"],
15
- "outDir": "./generated",
16
- "baseUrl": "."
17
- },
18
- "include" : ["../src/**/*.ts", "../src/**/*.js"]
19
- }
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ES2020",
4
+ "module": "ESNext",
5
+ "moduleResolution": "node",
6
+ "strict": false,
7
+ "esModuleInterop": true,
8
+ "skipLibCheck": true,
9
+ "declaration": true,
10
+ "emitDeclarationOnly": true,
11
+ "stripInternal": true,
12
+ "allowJs": true,
13
+ "checkJs": false,
14
+ "rootDirs": ["../src"],
15
+ "outDir": "./generated",
16
+ "baseUrl": "."
17
+ },
18
+ "include" : ["../src/**/*.ts", "../src/**/*.js"]
19
+ }