@ngroznykh/papirus 0.6.4 → 0.7.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.
- package/README.md +13 -2
- package/README.ru.md +13 -2
- package/dist/core/ClipboardManager.d.ts +25 -0
- package/dist/core/ClipboardManager.d.ts.map +1 -0
- package/dist/core/ConnectionManager.d.ts +8 -3
- package/dist/core/ConnectionManager.d.ts.map +1 -1
- package/dist/core/DiagramRenderer.d.ts +20 -29
- package/dist/core/DiagramRenderer.d.ts.map +1 -1
- package/dist/core/DiagramSurface.d.ts +63 -0
- package/dist/core/DiagramSurface.d.ts.map +1 -0
- package/dist/core/DragManager.d.ts +2 -2
- package/dist/core/DragManager.d.ts.map +1 -1
- package/dist/core/EdgeEndpointUpdater.d.ts +25 -0
- package/dist/core/EdgeEndpointUpdater.d.ts.map +1 -0
- package/dist/core/HistoryManager.d.ts +0 -1
- package/dist/core/HistoryManager.d.ts.map +1 -1
- package/dist/core/InteractionManager.d.ts +4 -10
- package/dist/core/InteractionManager.d.ts.map +1 -1
- package/dist/core/NavigationManager.d.ts +2 -2
- package/dist/core/NavigationManager.d.ts.map +1 -1
- package/dist/core/PropertyChangeBatcher.d.ts +21 -0
- package/dist/core/PropertyChangeBatcher.d.ts.map +1 -0
- package/dist/core/ResizeManager.d.ts +2 -2
- package/dist/core/ResizeManager.d.ts.map +1 -1
- package/dist/core/ScrollbarController.d.ts +50 -0
- package/dist/core/ScrollbarController.d.ts.map +1 -0
- package/dist/core/SearchManager.d.ts.map +1 -1
- package/dist/core/SelectionManager.d.ts +2 -2
- package/dist/core/SelectionManager.d.ts.map +1 -1
- package/dist/core/overlays/MiniMap.d.ts +4 -7
- package/dist/core/overlays/MiniMap.d.ts.map +1 -1
- package/dist/elements/Edge.d.ts +20 -20
- package/dist/elements/Edge.d.ts.map +1 -1
- package/dist/elements/Element.d.ts +1 -0
- package/dist/elements/Element.d.ts.map +1 -1
- package/dist/elements/Node.d.ts.map +1 -1
- package/dist/elements/NodeImage.d.ts.map +1 -1
- package/dist/elements/Port.d.ts +1 -0
- package/dist/elements/Port.d.ts.map +1 -1
- package/dist/elements/TextLabel.d.ts +0 -1
- package/dist/elements/TextLabel.d.ts.map +1 -1
- package/dist/elements/composite/CComponent.d.ts +3 -2
- package/dist/elements/composite/CComponent.d.ts.map +1 -1
- package/dist/elements/composite/CContainer.d.ts +2 -3
- package/dist/elements/composite/CContainer.d.ts.map +1 -1
- package/dist/elements/composite/CDivider.d.ts +3 -8
- package/dist/elements/composite/CDivider.d.ts.map +1 -1
- package/dist/elements/composite/CIcon.d.ts +4 -10
- package/dist/elements/composite/CIcon.d.ts.map +1 -1
- package/dist/elements/composite/CShape.d.ts +4 -5
- package/dist/elements/composite/CShape.d.ts.map +1 -1
- package/dist/elements/composite/CText.d.ts +3 -8
- package/dist/elements/composite/CText.d.ts.map +1 -1
- package/dist/elements/composite/CompositeComponentBase.d.ts +25 -0
- package/dist/elements/composite/CompositeComponentBase.d.ts.map +1 -0
- package/dist/elements/edge/EdgeLabelRenderer.d.ts +17 -0
- package/dist/elements/edge/EdgeLabelRenderer.d.ts.map +1 -0
- package/dist/elements/edge/EdgeMarkerRenderer.d.ts +11 -0
- package/dist/elements/edge/EdgeMarkerRenderer.d.ts.map +1 -0
- package/dist/index.d.ts +15 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/papirus.js +1875 -1776
- package/dist/papirus.js.map +1 -1
- package/dist/types.d.ts +15 -3
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/AutoRouting.d.ts.map +1 -1
- package/dist/utils/Serializer.d.ts.map +1 -1
- package/dist/utils/SvgExporter.d.ts +0 -8
- package/dist/utils/SvgExporter.d.ts.map +1 -1
- package/dist/utils/direction.d.ts +4 -0
- package/dist/utils/direction.d.ts.map +1 -1
- package/dist/utils/edgePath.d.ts +21 -0
- package/dist/utils/edgePath.d.ts.map +1 -0
- package/dist/utils/iconLayout.d.ts +34 -0
- package/dist/utils/iconLayout.d.ts.map +1 -0
- package/dist/utils/keymap.d.ts +11 -0
- package/dist/utils/keymap.d.ts.map +1 -0
- package/dist/utils/svgAssetLoader.d.ts +23 -0
- package/dist/utils/svgAssetLoader.d.ts.map +1 -0
- package/dist/utils/textMeasurer.d.ts +13 -0
- package/dist/utils/textMeasurer.d.ts.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -59,8 +59,12 @@ renderer.enableInteractions();
|
|
|
59
59
|
|
|
60
60
|
- [Docs Index](./docs/README.md)
|
|
61
61
|
- [API Overview](./docs/api.md)
|
|
62
|
+
- [CompositeNode](./docs/composite.md)
|
|
62
63
|
- [Elements](./docs/elements.md)
|
|
64
|
+
- [Renderer](./docs/renderer.md)
|
|
63
65
|
- [Interactions](./docs/interactions.md)
|
|
66
|
+
- [Input](./docs/input.md)
|
|
67
|
+
- [Search](./docs/search.md)
|
|
64
68
|
- [Overlays](./docs/overlays.md)
|
|
65
69
|
- [Utils](./docs/utils.md)
|
|
66
70
|
- [Changelog](./CHANGELOG.md)
|
|
@@ -175,7 +179,7 @@ const composite = new CompositeNode({
|
|
|
175
179
|
padding: 10,
|
|
176
180
|
gap: 6,
|
|
177
181
|
children: [
|
|
178
|
-
text({ id: 'name', text: 'Service API',
|
|
182
|
+
text({ id: 'name', text: 'Service API', bindToProperty: '__name__', style: { alignSelf: 'center' } }),
|
|
179
183
|
divider({}),
|
|
180
184
|
container({
|
|
181
185
|
direction: 'row',
|
|
@@ -217,7 +221,12 @@ Built-in themes: `DEFAULT_THEME`, `DARK_THEME`.
|
|
|
217
221
|
import { Serializer } from '@ngroznykh/papirus';
|
|
218
222
|
|
|
219
223
|
const serializer = new Serializer(renderer, {
|
|
220
|
-
nodeFactory: (data) =>
|
|
224
|
+
nodeFactory: (data) => {
|
|
225
|
+
if (data.type === 'composite') {
|
|
226
|
+
/* see docs/utils.md — deserializeCComponent + CompositeNode */
|
|
227
|
+
}
|
|
228
|
+
return new RectangleNode(data);
|
|
229
|
+
},
|
|
221
230
|
edgeFactory: (data) => new Edge(data),
|
|
222
231
|
});
|
|
223
232
|
|
|
@@ -225,6 +234,8 @@ const json = serializer.toJSON(true);
|
|
|
225
234
|
serializer.fromJSON(json);
|
|
226
235
|
```
|
|
227
236
|
|
|
237
|
+
See [Utils](./docs/utils.md) for multi-type and composite `nodeFactory` examples.
|
|
238
|
+
|
|
228
239
|
### Export
|
|
229
240
|
|
|
230
241
|
```ts
|
package/README.ru.md
CHANGED
|
@@ -59,8 +59,12 @@ renderer.enableInteractions();
|
|
|
59
59
|
|
|
60
60
|
- [Индекс документации](./docs/README.md)
|
|
61
61
|
- [Обзор API](./docs/api.md)
|
|
62
|
+
- [CompositeNode](./docs/composite.md)
|
|
62
63
|
- [Элементы](./docs/elements.md)
|
|
64
|
+
- [Рендерер](./docs/renderer.md)
|
|
63
65
|
- [Интерактивность](./docs/interactions.md)
|
|
66
|
+
- [Ввод](./docs/input.md)
|
|
67
|
+
- [Поиск](./docs/search.md)
|
|
64
68
|
- [Оверлеи](./docs/overlays.md)
|
|
65
69
|
- [Утилиты](./docs/utils.md)
|
|
66
70
|
- [Changelog](./CHANGELOG.ru.md)
|
|
@@ -176,7 +180,7 @@ const composite = new CompositeNode({
|
|
|
176
180
|
padding: 10,
|
|
177
181
|
gap: 6,
|
|
178
182
|
children: [
|
|
179
|
-
text({ id: 'name', text: 'Service API',
|
|
183
|
+
text({ id: 'name', text: 'Service API', bindToProperty: '__name__', style: { alignSelf: 'center' } }),
|
|
180
184
|
divider({}),
|
|
181
185
|
container({
|
|
182
186
|
direction: 'row',
|
|
@@ -218,7 +222,12 @@ renderer.setStyleManager(styles);
|
|
|
218
222
|
import { Serializer } from '@ngroznykh/papirus';
|
|
219
223
|
|
|
220
224
|
const serializer = new Serializer(renderer, {
|
|
221
|
-
nodeFactory: (data) =>
|
|
225
|
+
nodeFactory: (data) => {
|
|
226
|
+
if (data.type === 'composite') {
|
|
227
|
+
/* см. docs/utils.md — deserializeCComponent + CompositeNode */
|
|
228
|
+
}
|
|
229
|
+
return new RectangleNode(data);
|
|
230
|
+
},
|
|
222
231
|
edgeFactory: (data) => new Edge(data),
|
|
223
232
|
});
|
|
224
233
|
|
|
@@ -226,6 +235,8 @@ const json = serializer.toJSON(true);
|
|
|
226
235
|
serializer.fromJSON(json);
|
|
227
236
|
```
|
|
228
237
|
|
|
238
|
+
Примеры для нескольких типов узлов и composite: [Утилиты](./docs/utils.md).
|
|
239
|
+
|
|
229
240
|
### Экспорт
|
|
230
241
|
|
|
231
242
|
```ts
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { Edge } from '../elements/Edge';
|
|
2
|
+
import { Node } from '../elements/Node';
|
|
3
|
+
import { SerializedEdge, SerializedNode } from '../types';
|
|
4
|
+
import { DiagramSurface } from './DiagramSurface';
|
|
5
|
+
import { HistoryManager } from './HistoryManager';
|
|
6
|
+
import { SelectionManager } from './SelectionManager';
|
|
7
|
+
export interface ClipboardManagerOptions {
|
|
8
|
+
renderer: DiagramSurface;
|
|
9
|
+
selectionManager: SelectionManager;
|
|
10
|
+
historyManager: HistoryManager;
|
|
11
|
+
nodeFactory?: (data: SerializedNode) => Node;
|
|
12
|
+
edgeFactory?: (data: SerializedEdge) => Edge;
|
|
13
|
+
}
|
|
14
|
+
export declare class ClipboardManager {
|
|
15
|
+
private readonly renderer;
|
|
16
|
+
private readonly selectionManager;
|
|
17
|
+
private readonly historyManager;
|
|
18
|
+
private readonly nodeFactory?;
|
|
19
|
+
private readonly edgeFactory?;
|
|
20
|
+
private clipboard;
|
|
21
|
+
constructor(options: ClipboardManagerOptions);
|
|
22
|
+
copySelection(): void;
|
|
23
|
+
pasteSelection(): void;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=ClipboardManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClipboardManager.d.ts","sourceRoot":"","sources":["../../src/core/ClipboardManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,EAAS,cAAc,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACrE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,cAAc,CAAC;IACzB,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,cAAc,EAAE,cAAc,CAAC;IAC/B,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,IAAI,CAAC;IAC7C,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,IAAI,CAAC;CAC9C;AAOD,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAiB;IAC1C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAmB;IACpD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiB;IAChD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAiC;IAC9D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAiC;IAC9D,OAAO,CAAC,SAAS,CAAkC;gBAEvC,OAAO,EAAE,uBAAuB;IAQ5C,aAAa,IAAI,IAAI;IAgErB,cAAc,IAAI,IAAI;CAkEvB"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { EventEmitter } from '../events/EventEmitter';
|
|
2
|
-
import {
|
|
2
|
+
import { DiagramSurface } from './DiagramSurface';
|
|
3
3
|
import { InputEvent } from '../events/InputHandler';
|
|
4
4
|
import { Node } from '../elements/Node';
|
|
5
5
|
import { Edge } from '../elements/Edge';
|
|
@@ -20,7 +20,7 @@ export interface ConnectionEvents {
|
|
|
20
20
|
export type ConnectionValidator = (sourceNodeId: string, targetNodeId: string) => boolean;
|
|
21
21
|
export type ConnectionPreviewPathType = 'straight' | 'bezier';
|
|
22
22
|
export interface ConnectionManagerOptions {
|
|
23
|
-
renderer:
|
|
23
|
+
renderer: DiagramSurface;
|
|
24
24
|
createEdge: (from: EdgeEndpoint, to: EdgeEndpoint) => Edge;
|
|
25
25
|
addEdge?: (edge: Edge) => void;
|
|
26
26
|
snapToGrid?: boolean;
|
|
@@ -51,6 +51,8 @@ export declare class ConnectionManager extends EventEmitter<ConnectionEvents> {
|
|
|
51
51
|
private sourceOutlineParam;
|
|
52
52
|
private previewTargetOutlineParam;
|
|
53
53
|
private previewTargetNodeId;
|
|
54
|
+
private previewTargetEdgeId;
|
|
55
|
+
private previewTargetPathParam;
|
|
54
56
|
private isReconnecting;
|
|
55
57
|
private reconnectingEdge;
|
|
56
58
|
private reconnectingEndpoint;
|
|
@@ -124,7 +126,6 @@ export declare class ConnectionManager extends EventEmitter<ConnectionEvents> {
|
|
|
124
126
|
private updateReconnectingEdge;
|
|
125
127
|
private getTargetPointForReconnect;
|
|
126
128
|
private getTargetDirForReconnect;
|
|
127
|
-
private getDirectionFromOutlineParam;
|
|
128
129
|
/**
|
|
129
130
|
* For editable polyline: return the nearest bend point for axis alignment.
|
|
130
131
|
* When reconnecting 'end', use last control point (or start). When reconnecting 'start', use first control point (or end).
|
|
@@ -165,6 +166,10 @@ export declare class ConnectionManager extends EventEmitter<ConnectionEvents> {
|
|
|
165
166
|
private drawBezierPreview;
|
|
166
167
|
private setCursor;
|
|
167
168
|
private reset;
|
|
169
|
+
/**
|
|
170
|
+
* Find the nearest edge under the cursor for junction / note→relation drops.
|
|
171
|
+
*/
|
|
172
|
+
private findEdgeDropTarget;
|
|
168
173
|
private resetReconnection;
|
|
169
174
|
/**
|
|
170
175
|
* Render anchors when hovering a node (not connecting)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConnectionManager.d.ts","sourceRoot":"","sources":["../../src/core/ConnectionManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"ConnectionManager.d.ts","sourceRoot":"","sources":["../../src/core/ConnectionManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,8 @@ import { DiagramOptions, Point, ViewportState } from '../types';
|
|
|
7
7
|
import { InteractionManager, InteractionManagerOptions } from './InteractionManager';
|
|
8
8
|
import { AnimationManager } from './AnimationManager';
|
|
9
9
|
import { ContextMenuManager } from './ContextMenuManager';
|
|
10
|
+
import { ScrollbarAxis } from './ScrollbarController';
|
|
11
|
+
import { DiagramSurface, OverlayDragSession } from './DiagramSurface';
|
|
10
12
|
/**
|
|
11
13
|
* Events emitted by DiagramRenderer
|
|
12
14
|
*/
|
|
@@ -20,32 +22,26 @@ export interface DiagramEvents {
|
|
|
20
22
|
edgeAdd: [edge: Edge];
|
|
21
23
|
edgeRemove: [edge: Edge];
|
|
22
24
|
nodeBadgeClick: [nodeId: string, badgeId: string];
|
|
23
|
-
componentClick: [
|
|
25
|
+
componentClick: [
|
|
26
|
+
nodeId: string,
|
|
27
|
+
component: import('../elements/composite/CComponent').CComponent,
|
|
28
|
+
point: Point
|
|
29
|
+
];
|
|
24
30
|
}
|
|
25
31
|
export interface DiagramPlugin {
|
|
26
32
|
name?: string;
|
|
27
33
|
install(renderer: DiagramRenderer): void;
|
|
28
34
|
destroy?(renderer: DiagramRenderer): void;
|
|
29
35
|
}
|
|
30
|
-
|
|
31
|
-
beginOverlayDrag?(renderer: DiagramRenderer, screenX: number, screenY: number): unknown;
|
|
32
|
-
updateOverlayDrag?(renderer: DiagramRenderer, screenX: number, screenY: number, payload: unknown): boolean;
|
|
33
|
-
endOverlayDrag?(renderer: DiagramRenderer, payload: unknown): void;
|
|
34
|
-
}
|
|
35
|
-
export interface OverlayDragSession {
|
|
36
|
-
plugin: OverlayDragPlugin;
|
|
37
|
-
payload: unknown;
|
|
38
|
-
}
|
|
39
|
-
type ScrollbarAxis = 'horizontal' | 'vertical';
|
|
36
|
+
export type { OverlayDragSession } from './DiagramSurface';
|
|
40
37
|
/**
|
|
41
38
|
* Main diagram renderer class
|
|
42
39
|
* Manages canvas, coordinate system, and render loop
|
|
43
40
|
*/
|
|
44
|
-
export declare class DiagramRenderer extends EventEmitter<DiagramEvents> {
|
|
41
|
+
export declare class DiagramRenderer extends EventEmitter<DiagramEvents> implements DiagramSurface {
|
|
45
42
|
private readonly canvas;
|
|
46
43
|
private readonly ctx;
|
|
47
44
|
private readonly options;
|
|
48
|
-
private readonly scrollbar;
|
|
49
45
|
private plugins;
|
|
50
46
|
private styleManager?;
|
|
51
47
|
private underlayRenderers;
|
|
@@ -55,16 +51,16 @@ export declare class DiagramRenderer extends EventEmitter<DiagramEvents> {
|
|
|
55
51
|
private interactionManager;
|
|
56
52
|
private contextMenuManager;
|
|
57
53
|
private readonly animationManager;
|
|
54
|
+
private readonly scrollbarController;
|
|
55
|
+
private readonly edgeEndpointUpdater;
|
|
58
56
|
private frameTime;
|
|
59
|
-
private scrollbarHoveredAxis;
|
|
60
|
-
private scrollbarActiveAxis;
|
|
61
|
-
private scrollbarLastInteractionAt;
|
|
62
|
-
private lastScrollbarAlpha;
|
|
63
57
|
private _zoom;
|
|
64
58
|
private _offsetX;
|
|
65
59
|
private _offsetY;
|
|
66
60
|
private _dirty;
|
|
67
61
|
private _styleDirty;
|
|
62
|
+
/** Node/edge layout changed — edge endpoints must be resynced before paint. */
|
|
63
|
+
private _contentDirty;
|
|
68
64
|
private _destroyed;
|
|
69
65
|
private _canvasRect;
|
|
70
66
|
private _nodeObstaclesCache;
|
|
@@ -257,9 +253,15 @@ export declare class DiagramRenderer extends EventEmitter<DiagramEvents> {
|
|
|
257
253
|
*/
|
|
258
254
|
updateBadgeHover(worldPoint: Point): void;
|
|
259
255
|
/**
|
|
260
|
-
* Mark the diagram as needing re-render
|
|
256
|
+
* Mark the diagram as needing re-render (viewport / cosmetics).
|
|
257
|
+
* Does not resync edge endpoints — use {@link markContentDirty} after layout changes.
|
|
261
258
|
*/
|
|
262
259
|
markDirty(): void;
|
|
260
|
+
/**
|
|
261
|
+
* Mark that node/edge layout changed and edge endpoints must be recalculated.
|
|
262
|
+
* Pan/zoom should call {@link markDirty} only so path routing is not redone every frame.
|
|
263
|
+
*/
|
|
264
|
+
markContentDirty(): void;
|
|
263
265
|
/**
|
|
264
266
|
* Force an immediate render
|
|
265
267
|
*/
|
|
@@ -283,12 +285,8 @@ export declare class DiagramRenderer extends EventEmitter<DiagramEvents> {
|
|
|
283
285
|
* Called during drag to keep control points in sync
|
|
284
286
|
*/
|
|
285
287
|
updateEdgeEndpointsForDrag(): void;
|
|
286
|
-
private updateEdgeEndpoints;
|
|
287
288
|
private getNodeObstacles;
|
|
288
|
-
private getDirectionFromOutlineParam;
|
|
289
|
-
private renderScrollbars;
|
|
290
289
|
private getContentBounds;
|
|
291
|
-
private getViewportBounds;
|
|
292
290
|
notifyScrollbarInteraction(): void;
|
|
293
291
|
setScrollbarActiveAxis(axis: ScrollbarAxis | null): void;
|
|
294
292
|
updateScrollbarHover(screenX: number, screenY: number): boolean;
|
|
@@ -310,12 +308,5 @@ export declare class DiagramRenderer extends EventEmitter<DiagramEvents> {
|
|
|
310
308
|
updateOverlayDrag(session: OverlayDragSession, screenX: number, screenY: number): boolean;
|
|
311
309
|
endOverlayDrag(session: OverlayDragSession): void;
|
|
312
310
|
screenToCanvas(screenX: number, screenY: number): Point | null;
|
|
313
|
-
private getScrollbarMetrics;
|
|
314
|
-
private resolveScrollbarOptions;
|
|
315
|
-
private resolveScrollbarColors;
|
|
316
|
-
private getScrollbarAlpha;
|
|
317
|
-
private hitTestScrollbarArea;
|
|
318
|
-
private getScrollState;
|
|
319
311
|
}
|
|
320
|
-
export {};
|
|
321
312
|
//# sourceMappingURL=DiagramRenderer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DiagramRenderer.d.ts","sourceRoot":"","sources":["../../src/core/DiagramRenderer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,KAAK,EAAU,cAAc,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"DiagramRenderer.d.ts","sourceRoot":"","sources":["../../src/core/DiagramRenderer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,KAAK,EAAU,cAAc,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAGtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAE3E;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,EAAE,CAAC;IACX,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACrB,GAAG,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IACxC,MAAM,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;IAC/B,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACtB,UAAU,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACzB,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACtB,UAAU,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACzB,cAAc,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAClD,cAAc,EAAE;QACd,MAAM,EAAE,MAAM;QACd,SAAS,EAAE,OAAO,iCAAiC,EAAE,UAAU;QAC/D,KAAK,EAAE,KAAK;KACb,CAAC;CACH;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI,CAAC;IACzC,OAAO,CAAC,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI,CAAC;CAC3C;AAqCD,YAAY,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAE3D;;;GAGG;AACH,qBAAa,eAAgB,SAAQ,YAAY,CAAC,aAAa,CAAE,YAAW,cAAc;IACxF,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoB;IAC3C,OAAO,CAAC,QAAQ,CAAC,GAAG,CAA2B;IAC/C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA8C;IACtE,OAAO,CAAC,OAAO,CAAuB;IACtC,OAAO,CAAC,YAAY,CAAC,CAAe;IACpC,OAAO,CAAC,iBAAiB,CAAsD;IAC/E,OAAO,CAAC,gBAAgB,CAAsD;IAC9E,kIAAkI;IAClI,OAAO,CAAC,mBAAmB,CAAsD;IACjF,OAAO,CAAC,kBAAkB,CAAmC;IAC7D,OAAO,CAAC,kBAAkB,CAAmC;IAC7D,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAmB;IACpD,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAsB;IAC1D,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAsB;IAC1D,OAAO,CAAC,SAAS,CAAK;IAEtB,OAAO,CAAC,KAAK,CAAK;IAClB,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,WAAW,CAAQ;IAC3B,+EAA+E;IAC/E,OAAO,CAAC,aAAa,CAAQ;IAC7B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,WAAW,CAAgC;IACnD,OAAO,CAAC,mBAAmB,CAA+B;IAE1D,OAAO,CAAC,gBAAgB,CAAuB;IAC/C,OAAO,CAAC,gBAAgB,CAAS;IAEjC,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,gBAAgB,CAAS;IACjC,8DAA8D;IAC9D,OAAO,CAAC,cAAc,CAAkC;IAExD,iFAAiF;IACjF,IAAI,eAAe,IAAI,OAAO,CAE7B;IAED,IAAI,eAAe,CAAC,KAAK,EAAE,OAAO,EAKjC;gBAEW,MAAM,EAAE,iBAAiB,GAAG,MAAM,EAAE,OAAO,GAAE,cAAmB;IA6C5E;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,IAAI,CAAC,KAAK,EAAE,MAAM,EAQrB;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,IAAI,OAAO,CAAC,KAAK,EAAE,MAAM,EAOxB;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,IAAI,OAAO,CAAC,KAAK,EAAE,MAAM,EAOxB;IAED;;OAEG;IACH,IAAI,QAAQ,IAAI,aAAa,CAM5B;IAED;;OAEG;IACH,IAAI,QAAQ,CAAC,KAAK,EAAE,aAAa,EAOhC;IAED;;OAEG;IACH,IAAI,KAAK,IAAI,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAErC;IAED;;OAEG;IACH,IAAI,KAAK,IAAI,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAErC;IAED;;OAEG;IACH,IAAI,MAAM,IAAI,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,CAEvC;IAED;;OAEG;IACH,IAAI,KAAK,IAAI,MAAM,CAElB;IAED;;OAEG;IACH,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED;;OAEG;IACH,IAAI,UAAU,IAAI,OAAO,CAExB;IAED;;OAEG;IACH,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED;;OAEG;IACH,SAAS,IAAI,iBAAiB;IAI9B;;OAEG;IACH,UAAU,IAAI,wBAAwB;IAItC;;OAEG;IACH,eAAe,CAAC,YAAY,EAAE,YAAY,GAAG,SAAS,GAAG,IAAI;IAM7D;;OAEG;IACH,eAAe,IAAI,YAAY,GAAG,SAAS;IAI3C;;OAEG;IACH,cAAc,IAAI,IAAI;IAItB;;OAEG;IACH,mBAAmB,IAAI,gBAAgB;IAIvC;;OAEG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAQ3C;;OAEG;IACH,GAAG,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI;IAKhC;;OAEG;IACH,kBAAkB,CAChB,OAAO,GAAE,IAAI,CAAC,yBAAyB,EAAE,UAAU,CAAM,GACxD,kBAAkB;IAQrB;;OAEG;IACH,mBAAmB,IAAI,IAAI;IAK3B;;OAEG;IACH,iBAAiB,CACf,OAAO,EAAE,qBAAqB,CAAC,OAAO,kBAAkB,CAAC,CAAC,CAAC,CAAC,GAC3D,kBAAkB;IAMrB;;OAEG;IACH,kBAAkB,IAAI,IAAI;IAK1B;;OAEG;IACH,mBAAmB,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,wBAAwB,KAAK,IAAI,GAAG,MAAM,IAAI;IASlF;;OAEG;IACH,kBAAkB,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,wBAAwB,KAAK,IAAI,GAAG,MAAM,IAAI;IASjF;;;OAGG;IACH,qBAAqB,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,wBAAwB,KAAK,IAAI,GAAG,MAAM,IAAI;IASpF;;OAEG;IACH,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,KAAK;IAWtD;;OAEG;IACH,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,KAAK;IASpD;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IASzB;;OAEG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IA4BnC;;OAEG;IACH,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS;IAIzC;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAazB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAgBxB;;OAEG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAiBnC,OAAO,CAAC,mBAAmB;IA2B3B,OAAO,CAAC,mBAAmB;IA8B3B;;OAEG;IACH,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS;IAIzC;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAM5B;;OAEG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAWrC;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS;IAI5C;;OAEG;IACH,iBAAiB,CAAC,UAAU,EAAE,KAAK,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,SAAS;IAiCrE;;;OAGG;IACH,6BAA6B,CAC3B,UAAU,EAAE,KAAK,EACjB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACd,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,SAAS;IAOlC;;;OAGG;IACH,gBAAgB,CAAC,UAAU,EAAE,KAAK,GAAG,IAAI;IAqBzC;;;OAGG;IACH,SAAS,IAAI,IAAI;IAIjB;;;OAGG;IACH,gBAAgB,IAAI,IAAI;IAMxB;;OAEG;IACH,MAAM,IAAI,IAAI;IAId;;OAEG;IACH,OAAO,IAAI,IAAI;IA4Bf;;OAEG;IACH,KAAK,IAAI,IAAI;IAiBb,OAAO,CAAC,WAAW;IAmBnB,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,aAAa;IAarB,OAAO,CAAC,eAAe;IA+BvB,OAAO,CAAC,WAAW;IAqFnB,OAAO,CAAC,0BAA0B;IAmClC;;;OAGG;IACH,0BAA0B,IAAI,IAAI;IAIlC,OAAO,CAAC,gBAAgB;IAgBxB,OAAO,CAAC,gBAAgB;IAQxB,0BAA0B,IAAI,IAAI;IAIlC,sBAAsB,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI,GAAG,IAAI;IAIxD,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO;IAI/D,mBAAmB,IAAI,IAAI;IAI3B,qBAAqB,CACnB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACd;QAAE,IAAI,EAAE,aAAa,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAIxD,kBAAkB,CAChB,IAAI,EAAE,aAAa,EACnB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,MAAM,GACpB,OAAO;IAIV,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO;IAI9D,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO;IAI7D,qBAAqB,IAAI,OAAO;IAIhC,mBAAmB,IAAI,OAAO;IAI9B,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI;IAc7E;;OAEG;IACH,4BAA4B,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO;IAUvE,iBAAiB,CAAC,OAAO,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO;IAKzF,cAAc,CAAC,OAAO,EAAE,kBAAkB,GAAG,IAAI;IAKjD,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,KAAK,GAAG,IAAI;CAa/D"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { Edge } from '../elements/Edge';
|
|
2
|
+
import { Group } from '../elements/Group';
|
|
3
|
+
import { Node } from '../elements/Node';
|
|
4
|
+
import { CComponent } from '../elements/composite/CComponent';
|
|
5
|
+
import { Point } from '../types';
|
|
6
|
+
export interface OverlayDragSession {
|
|
7
|
+
plugin: unknown;
|
|
8
|
+
payload: unknown;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Rendering surface required by the interaction subsystem.
|
|
12
|
+
* Keeping this structural contract separate prevents interaction managers from
|
|
13
|
+
* depending on the concrete DiagramRenderer implementation.
|
|
14
|
+
*/
|
|
15
|
+
export interface DiagramSurface {
|
|
16
|
+
zoom: number;
|
|
17
|
+
offsetX: number;
|
|
18
|
+
offsetY: number;
|
|
19
|
+
attachToOutline: boolean;
|
|
20
|
+
readonly width: number;
|
|
21
|
+
readonly height: number;
|
|
22
|
+
readonly snapToGrid: boolean;
|
|
23
|
+
readonly nodes: ReadonlyMap<string, Node>;
|
|
24
|
+
readonly edges: ReadonlyMap<string, Edge>;
|
|
25
|
+
readonly groups: ReadonlyMap<string, Group>;
|
|
26
|
+
getCanvas(): HTMLCanvasElement;
|
|
27
|
+
getContext(): CanvasRenderingContext2D;
|
|
28
|
+
getNode(id: string): Node | undefined;
|
|
29
|
+
getEdge(id: string): Edge | undefined;
|
|
30
|
+
getGroup(id: string): Group | undefined;
|
|
31
|
+
addNode(node: Node): void;
|
|
32
|
+
addEdge(edge: Edge): void;
|
|
33
|
+
removeNode(id: string): boolean;
|
|
34
|
+
removeEdge(id: string): boolean;
|
|
35
|
+
markDirty(): void;
|
|
36
|
+
markStyleDirty(): void;
|
|
37
|
+
screenToWorld(screenX: number, screenY: number): Point;
|
|
38
|
+
worldToScreen(worldX: number, worldY: number): Point;
|
|
39
|
+
getInteractableElementAtPoint(worldPoint: Point, screenX: number, screenY: number): Node | Edge | Group | undefined;
|
|
40
|
+
updateBadgeHover(worldPoint: Point): void;
|
|
41
|
+
blocksDiagramPointerAtScreen(screenX: number, screenY: number): boolean;
|
|
42
|
+
addOverlayRenderer(renderer: (ctx: CanvasRenderingContext2D) => void): () => void;
|
|
43
|
+
beginOverlayDrag(screenX: number, screenY: number): OverlayDragSession | null;
|
|
44
|
+
updateOverlayDrag(session: OverlayDragSession, screenX: number, screenY: number): boolean;
|
|
45
|
+
endOverlayDrag(session: OverlayDragSession): void;
|
|
46
|
+
notifyScrollbarInteraction(): void;
|
|
47
|
+
setScrollbarActiveAxis(axis: 'horizontal' | 'vertical' | null): void;
|
|
48
|
+
updateScrollbarHover(screenX: number, screenY: number): boolean;
|
|
49
|
+
clearScrollbarHover(): void;
|
|
50
|
+
hitTestScrollbarThumb(screenX: number, screenY: number): {
|
|
51
|
+
axis: 'horizontal' | 'vertical';
|
|
52
|
+
pointerOffset: number;
|
|
53
|
+
} | null;
|
|
54
|
+
dragScrollbarThumb(axis: 'horizontal' | 'vertical', screenX: number, screenY: number, pointerOffset: number): boolean;
|
|
55
|
+
clickScrollbarTrack(screenX: number, screenY: number): boolean;
|
|
56
|
+
scrollViewportBy(screenDx: number, screenDy: number): boolean;
|
|
57
|
+
scrollViewportToStart(): boolean;
|
|
58
|
+
scrollViewportToEnd(): boolean;
|
|
59
|
+
emit(event: 'select', elementIds: string[]): void;
|
|
60
|
+
emit(event: 'nodeBadgeClick', nodeId: string, badgeId: string): void;
|
|
61
|
+
emit(event: 'componentClick', nodeId: string, component: CComponent, point: Point): void;
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=DiagramSurface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DiagramSurface.d.ts","sourceRoot":"","sources":["../../src/core/DiagramSurface.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { EventEmitter } from '../events/EventEmitter';
|
|
2
|
-
import {
|
|
2
|
+
import { DiagramSurface } from './DiagramSurface';
|
|
3
3
|
import { SelectionManager } from './SelectionManager';
|
|
4
4
|
import { InputEvent } from '../events/InputHandler';
|
|
5
5
|
import { Point } from '../types';
|
|
@@ -12,7 +12,7 @@ export interface DragEvents {
|
|
|
12
12
|
dragend: [nodeIds: string[], endPoint: Point];
|
|
13
13
|
}
|
|
14
14
|
export interface DragManagerOptions {
|
|
15
|
-
renderer:
|
|
15
|
+
renderer: DiagramSurface;
|
|
16
16
|
selectionManager: SelectionManager;
|
|
17
17
|
snapToGrid?: boolean;
|
|
18
18
|
gridSize?: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DragManager.d.ts","sourceRoot":"","sources":["../../src/core/DragManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"DragManager.d.ts","sourceRoot":"","sources":["../../src/core/DragManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAExD,OAAO,KAAK,EAAU,KAAK,EAAE,MAAM,SAAS,CAAC;AAe7C;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;IAClD,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IAC7D,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;CAC/C;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,cAAc,CAAC;IACzB,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,iGAAiG;IACjG,wBAAwB,CAAC,EAAE,MAAM,CAAC;CACnC;AAED;;GAEG;AACH,qBAAa,WAAY,SAAQ,YAAY,CAAC,UAAU,CAAC;IACvD,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,UAAU,CAAU;IAC5B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,YAAY,CAAU;IAC9B,OAAO,CAAC,wBAAwB,CAAS;IAEzC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,YAAY,CAAc;IAClC,OAAO,CAAC,cAAc,CAAsB;IAC5C,OAAO,CAAC,aAAa,CAAsB;IAC3C,OAAO,CAAC,gBAAgB,CAA4B;IACpD,OAAO,CAAC,kBAAkB,CAGtB;IACJ,oGAAoG;IACpG,OAAO,CAAC,mCAAmC,CAAqB;IAChE,kEAAkE;IAClE,OAAO,CAAC,qCAAqC,CAA8B;IAC3E,OAAO,CAAC,eAAe,CAAwB;IAC/C,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,qBAAqB,CAAS;gBAE1B,OAAO,EAAE,kBAAkB;IAUvC;;OAEG;IACH,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED;;OAEG;IACH,IAAI,gBAAgB,IAAI,OAAO,CAE9B;IAED,qBAAqB,CAAC,GAAG,EAAE,wBAAwB,GAAG,IAAI;IA0B1D;;OAEG;IACH,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI;IAOxD;;OAEG;IACH,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAQ3C;;OAEG;IACH,eAAe,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO;IAkG3C;;OAEG;IACH,eAAe,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO;IAoF3C;;OAEG;IACH,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO;IA6BzC;;OAEG;IACH,UAAU,IAAI,IAAI;IAwBlB,OAAO,CAAC,cAAc;IAQtB,OAAO,CAAC,KAAK;IAeb,OAAO,CAAC,+BAA+B;IA4EvC,OAAO,CAAC,yBAAyB;IA6BjC;;;OAGG;IACH,OAAO,CAAC,wCAAwC;IAiBhD,OAAO,CAAC,qBAAqB;IAuI7B,OAAO,CAAC,gBAAgB;CAczB"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { Edge } from '../elements/Edge';
|
|
2
|
+
import { Node } from '../elements/Node';
|
|
3
|
+
import { PathObstacle } from '../elements/paths';
|
|
4
|
+
export interface EdgeEndpointUpdaterHost {
|
|
5
|
+
getNodes(): ReadonlyMap<string, Node>;
|
|
6
|
+
getEdges(): ReadonlyMap<string, Edge>;
|
|
7
|
+
getNodeObstacles(): PathObstacle[];
|
|
8
|
+
}
|
|
9
|
+
export declare class EdgeEndpointUpdater {
|
|
10
|
+
private readonly host;
|
|
11
|
+
constructor(host: EdgeEndpointUpdaterHost);
|
|
12
|
+
updateForDrag(): void;
|
|
13
|
+
updateAll(): void;
|
|
14
|
+
private update;
|
|
15
|
+
private updateNodeNodeEdge;
|
|
16
|
+
/**
|
|
17
|
+
* @returns true when the resolved geometry changed enough to warrant another pass
|
|
18
|
+
*/
|
|
19
|
+
private updateEdgeAttachedEdge;
|
|
20
|
+
private resolveAnyEndpoint;
|
|
21
|
+
private resolveEdgeEndpoint;
|
|
22
|
+
private lockAnchors;
|
|
23
|
+
private resolveNodeEndpoint;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=EdgeEndpointUpdater.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EdgeEndpointUpdater.d.ts","sourceRoot":"","sources":["../../src/core/EdgeEndpointUpdater.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAMrD,MAAM,WAAW,uBAAuB;IACtC,QAAQ,IAAI,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACtC,QAAQ,IAAI,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACtC,gBAAgB,IAAI,YAAY,EAAE,CAAC;CACpC;AAMD,qBAAa,mBAAmB;IAClB,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,uBAAuB;IAE1D,aAAa,IAAI,IAAI;IAIrB,SAAS,IAAI,IAAI;IAIjB,OAAO,CAAC,MAAM;IA+Bd,OAAO,CAAC,kBAAkB;IAyB1B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAgC9B,OAAO,CAAC,kBAAkB;IAgB1B,OAAO,CAAC,mBAAmB;IAe3B,OAAO,CAAC,WAAW;IAqBnB,OAAO,CAAC,mBAAmB;CAc5B"}
|
|
@@ -53,7 +53,6 @@ export declare class HistoryManager extends EventEmitter<HistoryEvents> {
|
|
|
53
53
|
clear(): void;
|
|
54
54
|
/**
|
|
55
55
|
* Handle keyboard shortcuts.
|
|
56
|
-
* Uses event.code for letter keys to work with any keyboard layout (e.g. Russian).
|
|
57
56
|
*/
|
|
58
57
|
handleKeyDown(event: KeyboardEvent): boolean;
|
|
59
58
|
private emitChange;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HistoryManager.d.ts","sourceRoot":"","sources":["../../src/core/HistoryManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"HistoryManager.d.ts","sourceRoot":"","sources":["../../src/core/HistoryManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAGvC;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC7C,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACzB,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;CAC1B;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,qBAAa,cAAe,SAAQ,YAAY,CAAC,aAAa,CAAC;IAC7D,OAAO,CAAC,SAAS,CAAiB;IAClC,OAAO,CAAC,SAAS,CAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAErB,OAAO,GAAE,qBAA0B;IAK/C;;OAEG;IACH,IAAI,OAAO,IAAI,OAAO,CAErB;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,OAAO,CAErB;IAED;;OAEG;IACH,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED;;OAEG;IACH,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED;;OAEG;IACH,OAAO,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAe/B;;OAEG;IACH,IAAI,IAAI,OAAO;IAcf;;OAEG;IACH,IAAI,IAAI,OAAO;IAcf;;OAEG;IACH,KAAK,IAAI,IAAI;IAMb;;OAEG;IACH,aAAa,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO;IAc5C,OAAO,CAAC,UAAU;CAGnB;AAED,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,0CAA0C,EAC1C,2BAA2B,EAC3B,2BAA2B,EAC3B,4BAA4B,EAC5B,2BAA2B,EAC3B,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,oBAAoB,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { DiagramSurface } from './DiagramSurface';
|
|
2
2
|
import { SelectionManager } from './SelectionManager';
|
|
3
3
|
import { DragManager } from './DragManager';
|
|
4
4
|
import { ResizeManager } from './ResizeManager';
|
|
@@ -17,7 +17,7 @@ export interface InteractionKeymap {
|
|
|
17
17
|
redoKey: string;
|
|
18
18
|
}
|
|
19
19
|
export interface InteractionManagerOptions {
|
|
20
|
-
renderer:
|
|
20
|
+
renderer: DiagramSurface;
|
|
21
21
|
createEdge?: (from: EdgeEndpoint, to: EdgeEndpoint) => Edge;
|
|
22
22
|
nodeFactory?: (data: SerializedNode) => Node;
|
|
23
23
|
edgeFactory?: (data: SerializedEdge) => Edge;
|
|
@@ -43,15 +43,14 @@ export declare class InteractionManager {
|
|
|
43
43
|
private readonly navigationManager;
|
|
44
44
|
private readonly connectionManager;
|
|
45
45
|
private readonly historyManager;
|
|
46
|
+
private readonly clipboardManager;
|
|
47
|
+
private readonly propertyChangeBatcher;
|
|
46
48
|
private readonly navigationOnly;
|
|
47
49
|
private keymap;
|
|
48
50
|
private overlayCleanup;
|
|
49
51
|
private dragStartPositions;
|
|
50
52
|
private dragStartEditablePolylinePoints;
|
|
51
53
|
private reconnectOrigins;
|
|
52
|
-
private clipboard;
|
|
53
|
-
private pendingPropertyChanges;
|
|
54
|
-
private propertyChangeDebounceMs;
|
|
55
54
|
private labelEditor;
|
|
56
55
|
private scrollbarDragState;
|
|
57
56
|
private handledScrollbarMouseDown;
|
|
@@ -98,13 +97,8 @@ export declare class InteractionManager {
|
|
|
98
97
|
private startCompositeNameEdit;
|
|
99
98
|
private findNameComponent;
|
|
100
99
|
private handleLabelCommit;
|
|
101
|
-
private queuePropertyChange;
|
|
102
|
-
private flushPendingPropertyChanges;
|
|
103
|
-
private flushPendingPropertyChange;
|
|
104
100
|
private deleteSelection;
|
|
105
101
|
private buildDeleteCommand;
|
|
106
|
-
private copySelection;
|
|
107
|
-
private pasteSelection;
|
|
108
102
|
private endpointsEqual;
|
|
109
103
|
private getSelectionBounds;
|
|
110
104
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InteractionManager.d.ts","sourceRoot":"","sources":["../../src/core/InteractionManager.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"InteractionManager.d.ts","sourceRoot":"","sources":["../../src/core/InteractionManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { EventEmitter } from '../events/EventEmitter';
|
|
2
|
-
import {
|
|
2
|
+
import { DiagramSurface } from './DiagramSurface';
|
|
3
3
|
import { InputEvent, WheelInputEvent, PanInputEvent, PinchInputEvent } from '../events/InputHandler';
|
|
4
4
|
import { Bounds, Point } from '../types';
|
|
5
5
|
/**
|
|
@@ -12,7 +12,7 @@ export interface NavigationEvents {
|
|
|
12
12
|
zoomChange: [zoom: number, center: Point];
|
|
13
13
|
}
|
|
14
14
|
export interface NavigationManagerOptions {
|
|
15
|
-
renderer:
|
|
15
|
+
renderer: DiagramSurface;
|
|
16
16
|
zoomSensitivity?: number;
|
|
17
17
|
panButton?: number;
|
|
18
18
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NavigationManager.d.ts","sourceRoot":"","sources":["../../src/core/NavigationManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"NavigationManager.d.ts","sourceRoot":"","sources":["../../src/core/NavigationManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,EACV,UAAU,EACV,eAAe,EACf,aAAa,EACb,eAAe,EAChB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAG7C;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,EAAE,CAAC;IACb,GAAG,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IACxC,MAAM,EAAE,EAAE,CAAC;IACX,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;CAC3C;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,cAAc,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,YAAY,CAAC,gBAAgB,CAAC;IACnE,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;IACzC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IAEnC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,QAAQ,CAAsB;IACtC,OAAO,CAAC,YAAY,CAAS;gBAEjB,OAAO,EAAE,wBAAwB;IAO7C;;OAEG;IACH,IAAI,OAAO,IAAI,OAAO,CAErB;IAED;;OAEG;IACH,WAAW,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI;IAuBzC;;OAEG;IACH,gBAAgB,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAM5C;;OAEG;IACH,WAAW,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI;IAiBzC;;OAEG;IACH,eAAe,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO;IAS3C;;OAEG;IACH,eAAe,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO;IAiB3C;;OAEG;IACH,aAAa,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO;IAS1C;;OAEG;IACH,aAAa,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAMzC;;OAEG;IACH,WAAW,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IASvC;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,KAAK,GAAG,IAAI;IAwB3C;;OAEG;IACH,SAAS,CAAC,OAAO,SAAK,GAAG,IAAI;IAY7B;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,SAAK,GAAG,IAAI;IAoB5C;;OAEG;IACH,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,SAAK,GAAG,IAAI;IAInD;;OAEG;IACH,SAAS,IAAI,IAAI;IAOjB,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAMjC,OAAO,CAAC,MAAM;CAKf"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { DiagramSurface } from './DiagramSurface';
|
|
2
|
+
import { HistoryManager } from './HistoryManager';
|
|
3
|
+
import { EdgeSnapshot, GroupSnapshot, NodeSnapshot } from './history/commands';
|
|
4
|
+
export type PropertyChangeKind = 'node' | 'edge' | 'group';
|
|
5
|
+
export type PropertySnapshot = NodeSnapshot | EdgeSnapshot | GroupSnapshot;
|
|
6
|
+
export interface PropertyChangeBatcherOptions {
|
|
7
|
+
renderer: DiagramSurface;
|
|
8
|
+
historyManager: HistoryManager;
|
|
9
|
+
debounceMs?: number;
|
|
10
|
+
}
|
|
11
|
+
export declare class PropertyChangeBatcher {
|
|
12
|
+
private readonly renderer;
|
|
13
|
+
private readonly historyManager;
|
|
14
|
+
private readonly debounceMs;
|
|
15
|
+
private readonly pendingChanges;
|
|
16
|
+
constructor(options: PropertyChangeBatcherOptions);
|
|
17
|
+
queue(kind: PropertyChangeKind, id: string, before: PropertySnapshot, after: PropertySnapshot): void;
|
|
18
|
+
flush(): void;
|
|
19
|
+
private flushOne;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=PropertyChangeBatcher.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PropertyChangeBatcher.d.ts","sourceRoot":"","sources":["../../src/core/PropertyChangeBatcher.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAMvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEpF,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAC3D,MAAM,MAAM,gBAAgB,GAAG,YAAY,GAAG,YAAY,GAAG,aAAa,CAAC;AAE3E,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,EAAE,cAAc,CAAC;IACzB,cAAc,EAAE,cAAc,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAUD,qBAAa,qBAAqB;IAChC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAiB;IAC1C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiB;IAChD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA4C;gBAE/D,OAAO,EAAE,4BAA4B;IAMjD,KAAK,CACH,IAAI,EAAE,kBAAkB,EACxB,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,gBAAgB,EACxB,KAAK,EAAE,gBAAgB,GACtB,IAAI;IAcP,KAAK,IAAI,IAAI;IAMb,OAAO,CAAC,QAAQ;CA6CjB"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { EventEmitter } from '../events/EventEmitter';
|
|
2
|
-
import {
|
|
2
|
+
import { DiagramSurface } from './DiagramSurface';
|
|
3
3
|
import { SelectionManager } from './SelectionManager';
|
|
4
4
|
import { InputEvent } from '../events/InputHandler';
|
|
5
5
|
import { Bounds, Point } from '../types';
|
|
@@ -13,7 +13,7 @@ export interface ResizeEvents {
|
|
|
13
13
|
resizeEnd: [nodeId: string, bounds: Bounds];
|
|
14
14
|
}
|
|
15
15
|
export interface ResizeManagerOptions {
|
|
16
|
-
renderer:
|
|
16
|
+
renderer: DiagramSurface;
|
|
17
17
|
selectionManager: SelectionManager;
|
|
18
18
|
snapToGrid?: boolean;
|
|
19
19
|
gridSize?: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ResizeManager.d.ts","sourceRoot":"","sources":["../../src/core/ResizeManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"ResizeManager.d.ts","sourceRoot":"","sources":["../../src/core/ResizeManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAGpD;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;IACzE,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IACvD,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;CAC7C;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,cAAc,CAAC;IACzB,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,qBAAa,aAAc,SAAQ,YAAY,CAAC,YAAY,CAAC;IAC3D,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,UAAU,CAAU;IAC5B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,SAAS,CAAS;IAE1B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,aAAa,CAAuB;IAC5C,OAAO,CAAC,MAAM,CAA6B;IAC3C,OAAO,CAAC,UAAU,CAAsB;IACxC,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,iBAAiB,CAAS;gBAEtB,OAAO,EAAE,oBAAoB;IAWzC;;OAEG;IACH,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED;;OAEG;IACH,IAAI,gBAAgB,IAAI,OAAO,CAE9B;IAED;;OAEG;IACH,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI;IAOxD;;OAEG;IACH,eAAe,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO;IAiC3C;;OAEG;IACH,eAAe,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO;IAqC3C;;OAEG;IACH,aAAa,IAAI,OAAO;IAiBxB;;OAEG;IACH,YAAY,IAAI,IAAI;IAgBpB,OAAO,CAAC,eAAe;IAsDvB,OAAO,CAAC,YAAY;IAyBpB,OAAO,CAAC,KAAK;CASd"}
|