@plait/core 0.0.2

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 (82) hide show
  1. package/README.md +1 -0
  2. package/board/board.component.d.ts +37 -0
  3. package/core/base/detector.d.ts +7 -0
  4. package/core/element/element.component.d.ts +27 -0
  5. package/esm2020/board/board.component.mjs +211 -0
  6. package/esm2020/core/base/detector.mjs +2 -0
  7. package/esm2020/core/element/element.component.mjs +70 -0
  8. package/esm2020/interfaces/board.mjs +2 -0
  9. package/esm2020/interfaces/cursor.mjs +6 -0
  10. package/esm2020/interfaces/custom-types.mjs +5 -0
  11. package/esm2020/interfaces/element-context.mjs +2 -0
  12. package/esm2020/interfaces/element.mjs +2 -0
  13. package/esm2020/interfaces/graph.mjs +2 -0
  14. package/esm2020/interfaces/index.mjs +14 -0
  15. package/esm2020/interfaces/node.mjs +20 -0
  16. package/esm2020/interfaces/operation.mjs +7 -0
  17. package/esm2020/interfaces/path.mjs +139 -0
  18. package/esm2020/interfaces/plugin.mjs +2 -0
  19. package/esm2020/interfaces/point.mjs +2 -0
  20. package/esm2020/interfaces/selection.mjs +2 -0
  21. package/esm2020/interfaces/viewport.mjs +10 -0
  22. package/esm2020/plait-core.mjs +5 -0
  23. package/esm2020/plait.module.mjs +19 -0
  24. package/esm2020/plugins/create-board.mjs +42 -0
  25. package/esm2020/plugins/with-board.mjs +13 -0
  26. package/esm2020/plugins/with-selection.mjs +39 -0
  27. package/esm2020/public-api.mjs +11 -0
  28. package/esm2020/transfroms/general.mjs +139 -0
  29. package/esm2020/transfroms/index.mjs +11 -0
  30. package/esm2020/transfroms/node.mjs +36 -0
  31. package/esm2020/transfroms/selection.mjs +8 -0
  32. package/esm2020/transfroms/viewport.mjs +8 -0
  33. package/esm2020/utils/board.mjs +25 -0
  34. package/esm2020/utils/dom.mjs +22 -0
  35. package/esm2020/utils/environment.mjs +13 -0
  36. package/esm2020/utils/graph.mjs +11 -0
  37. package/esm2020/utils/helper.mjs +4 -0
  38. package/esm2020/utils/hotkeys.mjs +99 -0
  39. package/esm2020/utils/id-creator.mjs +11 -0
  40. package/esm2020/utils/index.mjs +10 -0
  41. package/esm2020/utils/math.mjs +37 -0
  42. package/esm2020/utils/weak-maps.mjs +6 -0
  43. package/fesm2015/plait-core.mjs +969 -0
  44. package/fesm2015/plait-core.mjs.map +1 -0
  45. package/fesm2020/plait-core.mjs +984 -0
  46. package/fesm2020/plait-core.mjs.map +1 -0
  47. package/interfaces/board.d.ts +32 -0
  48. package/interfaces/cursor.d.ts +5 -0
  49. package/interfaces/custom-types.d.ts +9 -0
  50. package/interfaces/element-context.d.ts +4 -0
  51. package/interfaces/element.d.ts +6 -0
  52. package/interfaces/graph.d.ts +6 -0
  53. package/interfaces/index.d.ts +13 -0
  54. package/interfaces/node.d.ts +13 -0
  55. package/interfaces/operation.d.ts +39 -0
  56. package/interfaces/path.d.ts +32 -0
  57. package/interfaces/plugin.d.ts +2 -0
  58. package/interfaces/point.d.ts +1 -0
  59. package/interfaces/selection.d.ts +5 -0
  60. package/interfaces/viewport.d.ts +13 -0
  61. package/package.json +31 -0
  62. package/plait-core.d.ts +5 -0
  63. package/plait.module.d.ts +9 -0
  64. package/plugins/create-board.d.ts +3 -0
  65. package/plugins/with-board.d.ts +2 -0
  66. package/plugins/with-selection.d.ts +2 -0
  67. package/public-api.d.ts +7 -0
  68. package/transfroms/general.d.ts +6 -0
  69. package/transfroms/index.d.ts +5 -0
  70. package/transfroms/node.d.ts +14 -0
  71. package/transfroms/selection.d.ts +7 -0
  72. package/transfroms/viewport.d.ts +7 -0
  73. package/utils/board.d.ts +10 -0
  74. package/utils/dom.d.ts +6 -0
  75. package/utils/environment.d.ts +7 -0
  76. package/utils/graph.d.ts +3 -0
  77. package/utils/helper.d.ts +1 -0
  78. package/utils/hotkeys.d.ts +32 -0
  79. package/utils/id-creator.d.ts +1 -0
  80. package/utils/index.d.ts +9 -0
  81. package/utils/math.d.ts +2 -0
  82. package/utils/weak-maps.d.ts +6 -0
package/README.md ADDED
@@ -0,0 +1 @@
1
+ # Core/Board
@@ -0,0 +1,37 @@
1
+ import { AfterViewInit, ChangeDetectorRef, ElementRef, EventEmitter, OnDestroy, OnInit, Renderer2 } from '@angular/core';
2
+ import { PlaitBoardChangeEvent, PlaitBoard } from '../interfaces/board';
3
+ import { PlaitElement } from '../interfaces/element';
4
+ import { Subject } from 'rxjs';
5
+ import { PlaitPlugin } from '../interfaces/plugin';
6
+ import { RoughSVG } from 'roughjs/bin/svg';
7
+ import { Viewport } from '../interfaces/viewport';
8
+ import * as i0 from "@angular/core";
9
+ export declare class PlaitBoardComponent implements OnInit, AfterViewInit, OnDestroy {
10
+ private cdr;
11
+ private renderer2;
12
+ zoom: number;
13
+ hostClass: string;
14
+ board: PlaitBoard;
15
+ roughSVG: RoughSVG;
16
+ destroy$: Subject<any>;
17
+ svg: ElementRef;
18
+ get host(): SVGElement;
19
+ plaitValue: PlaitElement[];
20
+ plaitViewport: Viewport;
21
+ plaitPlugins: PlaitPlugin[];
22
+ plaitChange: EventEmitter<PlaitBoardChangeEvent>;
23
+ plaitBoardInitialized: EventEmitter<PlaitBoard>;
24
+ constructor(cdr: ChangeDetectorRef, renderer2: Renderer2);
25
+ ngOnInit(): void;
26
+ ngAfterViewInit(): void;
27
+ initializePlugins(): void;
28
+ initializeEvents(): void;
29
+ updateViewport(): void;
30
+ zoomIn(event: MouseEvent): void;
31
+ zoomOut(event: MouseEvent): void;
32
+ resetZoom(event: MouseEvent): void;
33
+ trackBy: (index: number, element: PlaitElement) => number;
34
+ ngOnDestroy(): void;
35
+ static ɵfac: i0.ɵɵFactoryDeclaration<PlaitBoardComponent, never>;
36
+ static ɵcmp: i0.ɵɵComponentDeclaration<PlaitBoardComponent, "plait-board", never, { "plaitValue": "plaitValue"; "plaitViewport": "plaitViewport"; "plaitPlugins": "plaitPlugins"; }, { "plaitChange": "plaitChange"; "plaitBoardInitialized": "plaitBoardInitialized"; }, never, ["*"]>;
37
+ }
@@ -0,0 +1,7 @@
1
+ import { Point } from '../../interfaces/point';
2
+ import { PlaitElement } from '../../interfaces/element';
3
+ import { Selection } from '../../interfaces/selection';
4
+ export interface BaseDetector {
5
+ contian: (selection: Selection, element: PlaitElement) => boolean;
6
+ hit: (point: Point, element: PlaitElement) => boolean;
7
+ }
@@ -0,0 +1,27 @@
1
+ import { OnChanges, OnDestroy, OnInit, Renderer2, SimpleChanges, ViewContainerRef } from '@angular/core';
2
+ import { PlaitElement } from '../../interfaces/element';
3
+ import { PlaitBoard } from '../../interfaces/board';
4
+ import { Selection } from '../../interfaces/selection';
5
+ import { Viewport } from '../../interfaces/viewport';
6
+ import * as i0 from "@angular/core";
7
+ export declare class PlaitElementComponent implements OnInit, OnChanges, OnDestroy {
8
+ renderer2: Renderer2;
9
+ viewContainerRef: ViewContainerRef;
10
+ initialized: boolean;
11
+ groupG: SVGGElement;
12
+ index: number;
13
+ element: PlaitElement;
14
+ board: PlaitBoard;
15
+ viewport: Viewport;
16
+ selection: Selection | null;
17
+ host: SVGElement;
18
+ constructor(renderer2: Renderer2, viewContainerRef: ViewContainerRef);
19
+ ngOnInit(): void;
20
+ initialize(): void;
21
+ transform(first?: boolean): void;
22
+ drawElement(): void;
23
+ ngOnChanges(changes: SimpleChanges): void;
24
+ ngOnDestroy(): void;
25
+ static ɵfac: i0.ɵɵFactoryDeclaration<PlaitElementComponent, never>;
26
+ static ɵcmp: i0.ɵɵComponentDeclaration<PlaitElementComponent, "plait-element", never, { "index": "index"; "element": "element"; "board": "board"; "viewport": "viewport"; "selection": "selection"; "host": "host"; }, {}, never, never>;
27
+ }
@@ -0,0 +1,211 @@
1
+ import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, Input, Output, ViewChild } from '@angular/core';
2
+ import { BOARD_TO_ON_CHANGE, HOST_TO_ROUGH_SVG, IS_TEXT_EDITABLE } from '../utils/weak-maps';
3
+ import { createBoard } from '../plugins/create-board';
4
+ import { withBoard } from '../plugins/with-board';
5
+ import { fromEvent, Subject } from 'rxjs';
6
+ import { filter, takeUntil } from 'rxjs/operators';
7
+ import rough from 'roughjs/bin/rough';
8
+ import { Transforms } from '../transfroms';
9
+ import { withSelection } from '../plugins/with-selection';
10
+ import { PlaitOperation } from '../interfaces/operation';
11
+ import { getViewBox } from '../utils/board';
12
+ import * as i0 from "@angular/core";
13
+ import * as i1 from "../core/element/element.component";
14
+ import * as i2 from "@angular/common";
15
+ export class PlaitBoardComponent {
16
+ constructor(cdr, renderer2) {
17
+ this.cdr = cdr;
18
+ this.renderer2 = renderer2;
19
+ this.zoom = 100;
20
+ this.hostClass = `plait-board-container`;
21
+ this.destroy$ = new Subject();
22
+ this.plaitValue = [];
23
+ this.plaitPlugins = [];
24
+ this.plaitChange = new EventEmitter();
25
+ this.plaitBoardInitialized = new EventEmitter();
26
+ this.trackBy = (index, element) => {
27
+ return index;
28
+ };
29
+ }
30
+ get host() {
31
+ return this.svg.nativeElement;
32
+ }
33
+ ngOnInit() {
34
+ const roughSVG = rough.svg(this.host, { options: { roughness: 0, strokeWidth: 1 } });
35
+ HOST_TO_ROUGH_SVG.set(this.host, roughSVG);
36
+ this.initializePlugins();
37
+ this.initializeEvents();
38
+ this.updateViewport();
39
+ BOARD_TO_ON_CHANGE.set(this.board, () => {
40
+ this.cdr.detectChanges();
41
+ const changeEvent = {
42
+ children: this.board.children,
43
+ operations: this.board.operations,
44
+ viewport: this.board.viewport,
45
+ selection: this.board.selection
46
+ };
47
+ this.plaitChange.emit(changeEvent);
48
+ // update viewBox
49
+ if (this.board.operations.some(op => PlaitOperation.isSetViewportOperation(op))) {
50
+ this.updateViewport();
51
+ }
52
+ });
53
+ }
54
+ ngAfterViewInit() {
55
+ this.plaitBoardInitialized.emit(this.board);
56
+ }
57
+ initializePlugins() {
58
+ let board = withSelection(withBoard(createBoard(this.host, this.plaitValue)));
59
+ this.plaitPlugins.forEach(plugin => {
60
+ board = plugin(board);
61
+ });
62
+ this.board = board;
63
+ if (this.plaitViewport) {
64
+ this.board.viewport = this.plaitViewport;
65
+ }
66
+ }
67
+ initializeEvents() {
68
+ fromEvent(this.host, 'mousedown')
69
+ .pipe(takeUntil(this.destroy$))
70
+ .subscribe((event) => {
71
+ this.board.mousedown(event);
72
+ });
73
+ fromEvent(this.host, 'mousemove')
74
+ .pipe(takeUntil(this.destroy$))
75
+ .subscribe((event) => {
76
+ this.board.mousemove(event);
77
+ });
78
+ fromEvent(document, 'mouseup')
79
+ .pipe(takeUntil(this.destroy$))
80
+ .subscribe((event) => {
81
+ this.board.mouseup(event);
82
+ });
83
+ fromEvent(this.host, 'dblclick')
84
+ .pipe(takeUntil(this.destroy$))
85
+ .subscribe((event) => {
86
+ this.board.dblclick(event);
87
+ });
88
+ fromEvent(this.host, 'wheel')
89
+ .pipe(takeUntil(this.destroy$))
90
+ .subscribe((event) => {
91
+ event.preventDefault();
92
+ const viewport = this.board.viewport;
93
+ Transforms.setViewport(this.board, {
94
+ ...viewport,
95
+ offsetX: viewport?.offsetX - event.deltaX,
96
+ offsetY: viewport?.offsetY - event.deltaY
97
+ });
98
+ });
99
+ fromEvent(document, 'keydown')
100
+ .pipe(takeUntil(this.destroy$), filter(() => {
101
+ return !IS_TEXT_EDITABLE.get(this.board);
102
+ }))
103
+ .subscribe((event) => {
104
+ this.board?.keydown(event);
105
+ });
106
+ fromEvent(document, 'keyup')
107
+ .pipe(takeUntil(this.destroy$))
108
+ .subscribe((event) => {
109
+ this.board?.keyup(event);
110
+ });
111
+ window.onresize = () => {
112
+ const viewBoxModel = getViewBox(this.board);
113
+ const viewBoxValues = this.host.getAttribute('viewBox')?.split(',');
114
+ this.renderer2.setAttribute(this.host, 'viewBox', `${viewBoxValues[0].trim()}, ${viewBoxValues[1].trim()}, ${viewBoxModel.width}, ${viewBoxModel.height}`);
115
+ };
116
+ }
117
+ updateViewport() {
118
+ this.zoom = Math.floor(this.board.viewport.zoom * 100);
119
+ const viewBox = getViewBox(this.board);
120
+ this.renderer2.setAttribute(this.host, 'viewBox', `${viewBox.minX}, ${viewBox.minY}, ${viewBox.width}, ${viewBox.height}`);
121
+ }
122
+ // 放大
123
+ zoomIn(event) {
124
+ const viewport = this.board?.viewport;
125
+ Transforms.setViewport(this.board, {
126
+ ...viewport,
127
+ zoom: viewport.zoom + 0.1
128
+ });
129
+ }
130
+ // 缩小
131
+ zoomOut(event) {
132
+ const viewport = this.board?.viewport;
133
+ Transforms.setViewport(this.board, {
134
+ ...viewport,
135
+ zoom: viewport.zoom - 0.1
136
+ });
137
+ }
138
+ resetZoom(event) {
139
+ const viewport = this.board?.viewport;
140
+ Transforms.setViewport(this.board, {
141
+ ...viewport,
142
+ zoom: 1
143
+ });
144
+ }
145
+ ngOnDestroy() {
146
+ this.destroy$.next();
147
+ this.destroy$.complete();
148
+ HOST_TO_ROUGH_SVG.delete(this.host);
149
+ }
150
+ }
151
+ PlaitBoardComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: PlaitBoardComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
152
+ PlaitBoardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: PlaitBoardComponent, selector: "plait-board", inputs: { plaitValue: "plaitValue", plaitViewport: "plaitViewport", plaitPlugins: "plaitPlugins" }, outputs: { plaitChange: "plaitChange", plaitBoardInitialized: "plaitBoardInitialized" }, host: { properties: { "class": "this.hostClass" } }, viewQueries: [{ propertyName: "svg", first: true, predicate: ["svg"], descendants: true, static: true }], ngImport: i0, template: `
153
+ <svg #svg width="100%" height="100%"></svg>
154
+ <div class="plait-toolbar island zoom-toolbar">
155
+ <button class="item" (mousedown)="zoomOut($event)">-</button>
156
+ <button class="item zoom-value" (mousedown)="resetZoom($event)">{{ zoom }}%</button>
157
+ <button class="item" (mousedown)="zoomIn($event)">+</button>
158
+ </div>
159
+ <plait-element
160
+ *ngFor="let item of board.children; let index = index; trackBy: trackBy"
161
+ [index]="index"
162
+ [element]="item"
163
+ [board]="board"
164
+ [viewport]="board.viewport"
165
+ [selection]="board.selection"
166
+ [host]="host"
167
+ ></plait-element>
168
+ <ng-content></ng-content>
169
+ `, isInline: true, components: [{ type: i1.PlaitElementComponent, selector: "plait-element", inputs: ["index", "element", "board", "viewport", "selection", "host"] }], directives: [{ type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
170
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: PlaitBoardComponent, decorators: [{
171
+ type: Component,
172
+ args: [{
173
+ selector: 'plait-board',
174
+ template: `
175
+ <svg #svg width="100%" height="100%"></svg>
176
+ <div class="plait-toolbar island zoom-toolbar">
177
+ <button class="item" (mousedown)="zoomOut($event)">-</button>
178
+ <button class="item zoom-value" (mousedown)="resetZoom($event)">{{ zoom }}%</button>
179
+ <button class="item" (mousedown)="zoomIn($event)">+</button>
180
+ </div>
181
+ <plait-element
182
+ *ngFor="let item of board.children; let index = index; trackBy: trackBy"
183
+ [index]="index"
184
+ [element]="item"
185
+ [board]="board"
186
+ [viewport]="board.viewport"
187
+ [selection]="board.selection"
188
+ [host]="host"
189
+ ></plait-element>
190
+ <ng-content></ng-content>
191
+ `,
192
+ changeDetection: ChangeDetectionStrategy.OnPush
193
+ }]
194
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }]; }, propDecorators: { hostClass: [{
195
+ type: HostBinding,
196
+ args: ['class']
197
+ }], svg: [{
198
+ type: ViewChild,
199
+ args: ['svg', { static: true }]
200
+ }], plaitValue: [{
201
+ type: Input
202
+ }], plaitViewport: [{
203
+ type: Input
204
+ }], plaitPlugins: [{
205
+ type: Input
206
+ }], plaitChange: [{
207
+ type: Output
208
+ }], plaitBoardInitialized: [{
209
+ type: Output
210
+ }] } });
211
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9hcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvcGxhaXQvc3JjL2JvYXJkL2JvYXJkLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsdUJBQXVCLEVBRXZCLFNBQVMsRUFFVCxZQUFZLEVBQ1osV0FBVyxFQUNYLEtBQUssRUFHTCxNQUFNLEVBRU4sU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRzdGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUduRCxPQUFPLEtBQUssTUFBTSxtQkFBbUIsQ0FBQztBQUN0QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7O0FBeUI1QyxNQUFNLE9BQU8sbUJBQW1CO0lBNEI1QixZQUFvQixHQUFzQixFQUFVLFNBQW9CO1FBQXBELFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQVUsY0FBUyxHQUFULFNBQVMsQ0FBVztRQTNCeEUsU0FBSSxHQUFHLEdBQUcsQ0FBQztRQUVXLGNBQVMsR0FBRyx1QkFBdUIsQ0FBQztRQU0xRCxhQUFRLEdBQWlCLElBQUks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QyxDQUFDO0lBQ1AsQ0FBQztJQUVELFNBQVMsQ0FBQyxLQUFpQjtRQUN2QixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLFFBQW9CLENBQUM7UUFDbEQsVUFBVSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQy9CLEdBQUcsUUFBUTtZQUNYLElBQUksRUFBRSxDQUFDO1NBQ1YsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQU1ELFdBQVc7UUFDUCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDekIsaUJBQWlCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4QyxDQUFDOztpSEF0S1EsbUJBQW1CO3FHQUFuQixtQkFBbUIsK1lBcEJsQjs7Ozs7Ozs7Ozs7Ozs7Ozs7S0FpQlQ7NEZBR1EsbUJBQW1CO2tCQXRCL0IsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsYUFBYTtvQkFDdkIsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7OztLQWlCVDtvQkFDRCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDbEQ7Z0lBSXlCLFNBQVM7c0JBQTlCLFdBQVc7dUJBQUMsT0FBTztnQkFTcEIsR0FBRztzQkFERixTQUFTO3VCQUFDLEtBQUssRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBT3pCLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUcsYUFBYTtzQkFBckIsS0FBSztnQkFFRyxZQUFZO3NCQUFwQixLQUFLO2dCQUVJLFdBQVc7c0JBQXBCLE1BQU07Z0JBRUcscUJBQXFCO3NCQUE5QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0QmluZGluZyxcbiAgICBJbnB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBSZW5kZXJlcjIsXG4gICAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQk9BUkRfVE9fT05fQ0hBTkdFLCBIT1NUX1RPX1JPVUdIX1NWRywgSVNfVEVYVF9FRElUQUJMRSB9IGZyb20gJy4uL3V0aWxzL3dlYWstbWFwcyc7XG5pbXBvcnQgeyBQbGFpdEJvYXJkQ2hhbmdlRXZlbnQsIFBsYWl0Qm9hcmQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2JvYXJkJztcbmltcG9ydCB7IFBsYWl0RWxlbWVudCB9IGZyb20gJy4uL2ludGVyZmFjZXMvZWxlbWVudCc7XG5pbXBvcnQgeyBjcmVhdGVCb2FyZCB9IGZyb20gJy4uL3BsdWdpbnMvY3JlYXRlLWJvYXJkJztcbmltcG9ydCB7IHdpdGhCb2FyZCB9IGZyb20gJy4uL3BsdWdpbnMvd2l0aC1ib2FyZCc7XG5pbXBvcnQgeyBmcm9tRXZlbnQsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgUGxhaXRQbHVnaW4gfSBmcm9tICcuLi9pbnRlcmZhY2VzL3BsdWdpbic7XG5pbXBvcnQgeyBSb3VnaFNWRyB9IGZyb20gJ3JvdWdoanMvYmluL3N2Zyc7XG5pbXBvcnQgcm91Z2ggZnJvbSAncm91Z2hqcy9iaW4vcm91Z2gnO1xuaW1wb3J0IHsgVHJhbnNmb3JtcyB9IGZyb20gJy4uL3RyYW5zZnJvbXMnO1xuaW1wb3J0IHsgd2l0aFNlbGVjdGlvbiB9IGZyb20gJy4uL3BsdWdpbnMvd2l0aC1zZWxlY3Rpb24nO1xuaW1wb3J0IHsgUGxhaXRPcGVyYXRpb24gfSBmcm9tICcuLi9pbnRlcmZhY2VzL29wZXJhdGlvbic7XG5pbXBvcnQgeyBnZXRWaWV3Qm94IH0gZnJvbSAnLi4vdXRpbHMvYm9hcmQnO1xuaW1wb3J0IHsgVmlld3BvcnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3ZpZXdwb3J0JztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwbGFpdC1ib2FyZCcsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPHN2ZyAjc3ZnIHdpZHRoPVwiMTAwJVwiIGhlaWdodD1cIjEwMCVcIj48L3N2Zz5cbiAgICAgICAgPGRpdiBjbGFzcz1cInBsYWl0LXRvb2xiYXIgaXNsYW5kIHpvb20tdG9vbGJhclwiPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIml0ZW1cIiAobW91c2Vkb3duKT1cInpvb21PdXQoJGV2ZW50KVwiPi08L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJpdGVtIHpvb20tdmFsdWVcIiAobW91c2Vkb3duKT1cInJlc2V0Wm9vbSgkZXZlbnQpXCI+e3sgem9vbSB9fSU8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJpdGVtXCIgKG1vdXNlZG93bik9XCJ6b29tSW4oJGV2ZW50KVwiPis8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxwbGFpdC1lbGVtZW50XG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBib2FyZC5jaGlsZHJlbjsgbGV0IGluZGV4ID0gaW5kZXg7IHRyYWNrQnk6IHRyYWNrQnlcIlxuICAgICAgICAgICAgW2luZGV4XT1cImluZGV4XCJcbiAgICAgICAgICAgIFtlbGVtZW50XT1cIml0ZW1cIlxuICAgICAgICAgICAgW2JvYXJkXT1cImJvYXJkXCJcbiAgICAgICAgICAgIFt2aWV3cG9ydF09XCJib2FyZC52aWV3cG9ydFwiXG4gICAgICAgICAgICBbc2VsZWN0aW9uXT1cImJvYXJkLnNlbGVjdGlvblwiXG4gICAgICAgICAgICBbaG9zdF09XCJob3N0XCJcbiAgICAgICAgPjwvcGxhaXQtZWxlbWVudD5cbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgIGAsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgUGxhaXRCb2FyZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgICB6b29tID0gMTAwO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcycpIGhvc3RDbGFzcyA9IGBwbGFpdC1ib2FyZC1jb250YWluZXJgO1xuXG4gICAgYm9hcmQhOiBQbGFpdEJvYXJkO1xuXG4gICAgcm91Z2hTVkchOiBSb3VnaFNWRztcblxuICAgIGRlc3Ryb3kkOiBTdWJqZWN0PGFueT4gPSBuZXcgU3ViamVjdCgpO1xuXG4gICAgQFZpZXdDaGlsZCgnc3ZnJywgeyBzdGF0aWM6IHRydWUgfSlcbiAgICBzdmchOiBFbGVtZW50UmVmO1xuXG4gICAgZ2V0IGhvc3QoKTogU1ZHRWxlbWVudCB7XG4gICAgICAgIHJldHVybiB0aGlzLnN2Zy5uYXRpdmVFbGVtZW50O1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHBsYWl0VmFsdWU6IFBsYWl0RWxlbWVudFtdID0gW107XG5cbiAgICBASW5wdXQoKSBwbGFpdFZpZXdwb3J0ITogVmlld3BvcnQ7XG5cbiAgICBASW5wdXQoKSBwbGFpdFBsdWdpbnM6IFBsYWl0UGx1Z2luW10gPSBbXTtcblxuICAgIEBPdXRwdXQoKSBwbGFpdENoYW5nZTogRXZlbnRFbWl0dGVyPFBsYWl0Qm9hcmRDaGFuZ2VFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KCkgcGxhaXRCb2FyZEluaXRpYWxpemVkOiBFdmVudEVtaXR0ZXI8UGxhaXRCb2FyZD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsIHByaXZhdGUgcmVuZGVyZXIyOiBSZW5kZXJlcjIpIHt9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgcm91Z2hTVkcgPSByb3VnaC5zdmcodGhpcy5ob3N0IGFzIFNWR1NWR0VsZW1lbnQsIHsgb3B0aW9uczogeyByb3VnaG5lc3M6IDAsIHN0cm9rZVdpZHRoOiAxIH0gfSk7XG4gICAgICAgIEhPU1RfVE9fUk9VR0hfU1ZHLnNldCh0aGlzLmhvc3QsIHJvdWdoU1ZHKTtcbiAgICAgICAgdGhpcy5pbml0aWFsaXplUGx1Z2lucygpO1xuICAgICAgICB0aGlzLmluaXRpYWxpemVFdmVudHMoKTtcbiAgICAgICAgdGhpcy51cGRhdGVWaWV3cG9ydCgpO1xuICAgICAgICBCT0FSRF9UT19PTl9DSEFOR0Uuc2V0KHRoaXMuYm9hcmQsICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgIGNvbnN0IGNoYW5nZUV2ZW50OiBQbGFpdEJvYXJkQ2hhbmdlRXZlbnQgPSB7XG4gICAgICAgICAgICAgICAgY2hpbGRyZW46IHRoaXMuYm9hcmQuY2hpbGRyZW4sXG4gICAgICAgICAgICAgICAgb3BlcmF0aW9uczogdGhpcy5ib2FyZC5vcGVyYXRpb25zLFxuICAgICAgICAgICAgICAgIHZpZXdwb3J0OiB0aGlzLmJvYXJkLnZpZXdwb3J0LFxuICAgICAgICAgICAgICAgIHNlbGVjdGlvbjogdGhpcy5ib2FyZC5zZWxlY3Rpb25cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB0aGlzLnBsYWl0Q2hhbmdlLmVtaXQoY2hhbmdlRXZlbnQpO1xuICAgICAgICAgICAgLy8gdXBkYXRlIHZpZXdCb3hcbiAgICAgICAgICAgIGlmICh0aGlzLmJvYXJkLm9wZXJhdGlvbnMuc29tZShvcCA9PiBQbGFpdE9wZXJhdGlvbi5pc1NldFZpZXdwb3J0T3BlcmF0aW9uKG9wKSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVZpZXdwb3J0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wbGFpdEJvYXJkSW5pdGlhbGl6ZWQuZW1pdCh0aGlzLmJvYXJkKTtcbiAgICB9XG5cbiAgICBpbml0aWFsaXplUGx1Z2lucygpIHtcbiAgICAgICAgbGV0IGJvYXJkID0gd2l0aFNlbGVjdGlvbih3aXRoQm9hcmQoY3JlYXRlQm9hcmQodGhpcy5ob3N0LCB0aGlzLnBsYWl0VmFsdWUpKSk7XG4gICAgICAgIHRoaXMucGxhaXRQbHVnaW5zLmZvckVhY2gocGx1Z2luID0+IHtcbiAgICAgICAgICAgIGJvYXJkID0gcGx1Z2luKGJvYXJkKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuYm9hcmQgPSBib2FyZDtcbiAgICAgICAgaWYgKHRoaXMucGxhaXRWaWV3cG9ydCkge1xuICAgICAgICAgICAgdGhpcy5ib2FyZC52aWV3cG9ydCA9IHRoaXMucGxhaXRWaWV3cG9ydDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGluaXRpYWxpemVFdmVudHMoKSB7XG4gICAgICAgIGZyb21FdmVudDxNb3VzZUV2ZW50Pih0aGlzLmhvc3QsICdtb3VzZWRvd24nKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmJvYXJkLm1vdXNlZG93bihldmVudCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgZnJvbUV2ZW50PE1vdXNlRXZlbnQ+KHRoaXMuaG9zdCwgJ21vdXNlbW92ZScpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuYm9hcmQubW91c2Vtb3ZlKGV2ZW50KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICBmcm9tRXZlbnQ8TW91c2VFdmVudD4oZG9jdW1lbnQsICdtb3VzZXVwJylcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5ib2FyZC5tb3VzZXVwKGV2ZW50KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICBmcm9tRXZlbnQ8TW91c2VFdmVudD4odGhpcy5ob3N0LCAnZGJsY2xpY2snKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmJvYXJkLmRibGNsaWNrKGV2ZW50KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICBmcm9tRXZlbnQ8V2hlZWxFdmVudD4odGhpcy5ob3N0LCAnd2hlZWwnKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IFdoZWVsRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHZpZXdwb3J0ID0gdGhpcy5ib2FyZC52aWV3cG9ydDtcbiAgICAgICAgICAgICAgICBUcmFuc2Zvcm1zLnNldFZpZXdwb3J0KHRoaXMuYm9hcmQsIHtcbiAgICAgICAgICAgICAgICAgICAgLi4udmlld3BvcnQsXG4gICAgICAgICAgICAgICAgICAgIG9mZnNldFg6IHZpZXdwb3J0Py5vZmZzZXRYIC0gZXZlbnQuZGVsdGFYLFxuICAgICAgICAgICAgICAgICAgICBvZmZzZXRZOiB2aWV3cG9ydD8ub2Zmc2V0WSAtIGV2ZW50LmRlbHRhWVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIGZyb21FdmVudDxLZXlib2FyZEV2ZW50Pihkb2N1bWVudCwgJ2tleWRvd24nKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLFxuICAgICAgICAgICAgICAgIGZpbHRlcigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAhSVNfVEVYVF9FRElUQUJMRS5nZXQodGhpcy5ib2FyZCBhcyBQbGFpdEJvYXJkKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmJvYXJkPy5rZXlkb3duKGV2ZW50KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICBmcm9tRXZlbnQ8S2V5Ym9hcmRFdmVudD4oZG9jdW1lbnQsICdrZXl1cCcpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuYm9hcmQ/LmtleXVwKGV2ZW50KTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIHdpbmRvdy5vbnJlc2l6ZSA9ICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHZpZXdCb3hNb2RlbCA9IGdldFZpZXdCb3godGhpcy5ib2FyZCk7XG4gICAgICAgICAgICBjb25zdCB2aWV3Qm94VmFsdWVzID0gdGhpcy5ob3N0LmdldEF0dHJpYnV0ZSgndmlld0JveCcpPy5zcGxpdCgnLCcpIGFzIHN0cmluZ1tdO1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlcjIuc2V0QXR0cmlidXRlKFxuICAgICAgICAgICAgICAgIHRoaXMuaG9zdCxcbiAgICAgICAgICAgICAgICAndmlld0JveCcsXG4gICAgICAgICAgICAgICAgYCR7dmlld0JveFZhbHVlc1swXS50cmltKCl9LCAke3ZpZXdCb3hWYWx1ZXNbMV0udHJpbSgpfSwgJHt2aWV3Qm94TW9kZWwud2lkdGh9LCAke3ZpZXdCb3hNb2RlbC5oZWlnaHR9YFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICB1cGRhdGVWaWV3cG9ydCgpIHtcbiAgICAgICAgdGhpcy56b29tID0gTWF0aC5mbG9vcih0aGlzLmJvYXJkLnZpZXdwb3J0Lnpvb20gKiAxMDApO1xuICAgICAgICBjb25zdCB2aWV3Qm94ID0gZ2V0Vmlld0JveCh0aGlzLmJvYXJkKTtcbiAgICAgICAgdGhpcy5yZW5kZXJlcjIuc2V0QXR0cmlidXRlKHRoaXMuaG9zdCwgJ3ZpZXdCb3gnLCBgJHt2aWV3Qm94Lm1pblh9LCAke3ZpZXdCb3gubWluWX0sICR7dmlld0JveC53aWR0aH0sICR7dmlld0JveC5oZWlnaHR9YCk7XG4gICAgfVxuXG4gICAgLy8g5pS+5aSnXG4gICAgem9vbUluKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIGNvbnN0IHZpZXdwb3J0ID0gdGhpcy5ib2FyZD8udmlld3BvcnQgYXMgVmlld3BvcnQ7XG4gICAgICAgIFRyYW5zZm9ybXMuc2V0Vmlld3BvcnQodGhpcy5ib2FyZCwge1xuICAgICAgICAgICAgLi4udmlld3BvcnQsXG4gICAgICAgICAgICB6b29tOiB2aWV3cG9ydC56b29tICsgMC4xXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIOe8qeWwj1xuICAgIHpvb21PdXQoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgY29uc3Qgdmlld3BvcnQgPSB0aGlzLmJvYXJkPy52aWV3cG9ydCBhcyBWaWV3cG9ydDtcbiAgICAgICAgVHJhbnNmb3Jtcy5zZXRWaWV3cG9ydCh0aGlzLmJvYXJkLCB7XG4gICAgICAgICAgICAuLi52aWV3cG9ydCxcbiAgICAgICAgICAgIHpvb206IHZpZXdwb3J0Lnpvb20gLSAwLjFcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmVzZXRab29tKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIGNvbnN0IHZpZXdwb3J0ID0gdGhpcy5ib2FyZD8udmlld3BvcnQgYXMgVmlld3BvcnQ7XG4gICAgICAgIFRyYW5zZm9ybXMuc2V0Vmlld3BvcnQodGhpcy5ib2FyZCwge1xuICAgICAgICAgICAgLi4udmlld3BvcnQsXG4gICAgICAgICAgICB6b29tOiAxXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHRyYWNrQnkgPSAoaW5kZXg6IG51bWJlciwgZWxlbWVudDogUGxhaXRFbGVtZW50KSA9PiB7XG4gICAgICAgIHJldHVybiBpbmRleDtcbiAgICB9O1xuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgICAgIEhPU1RfVE9fUk9VR0hfU1ZHLmRlbGV0ZSh0aGlzLmhvc3QpO1xuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV0ZWN0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wbGFpdC9zcmMvY29yZS9iYXNlL2RldGVjdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQb2ludCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvcG9pbnQnO1xuaW1wb3J0IHsgUGxhaXRFbGVtZW50IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9lbGVtZW50JztcbmltcG9ydCB7IFNlbGVjdGlvbiB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvc2VsZWN0aW9uJztcblxuZXhwb3J0IGludGVyZmFjZSBCYXNlRGV0ZWN0b3Ige1xuICAgIGNvbnRpYW46IChzZWxlY3Rpb246IFNlbGVjdGlvbiwgZWxlbWVudDogUGxhaXRFbGVtZW50KSA9PiBib29sZWFuOyAvLyDmoYbpgIlcbiAgICBoaXQ6IChwb2ludDogUG9pbnQsIGVsZW1lbnQ6IFBsYWl0RWxlbWVudCkgPT4gYm9vbGVhbjtcbn1cbiJdfQ==
@@ -0,0 +1,70 @@
1
+ import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
2
+ import { createG } from '../../utils/dom';
3
+ import * as i0 from "@angular/core";
4
+ export class PlaitElementComponent {
5
+ constructor(renderer2, viewContainerRef) {
6
+ this.renderer2 = renderer2;
7
+ this.viewContainerRef = viewContainerRef;
8
+ this.initialized = false;
9
+ this.selection = null;
10
+ }
11
+ ngOnInit() {
12
+ this.initialize();
13
+ this.transform(true);
14
+ this.drawElement();
15
+ }
16
+ initialize() {
17
+ this.initialized = true;
18
+ this.groupG = createG();
19
+ this.renderer2.setAttribute(this.groupG, 'plait-element-group', this.index.toString());
20
+ this.host.append(this.groupG);
21
+ }
22
+ transform(first = false) {
23
+ if (first && this.viewport.offsetX === 0 && this.viewport.offsetY === 0) {
24
+ return;
25
+ }
26
+ this.renderer2.setAttribute(this.groupG, 'transform', `translate(${this.viewport.offsetX} ${this.viewport.offsetY})`);
27
+ }
28
+ drawElement() {
29
+ const gArray = this.board.drawElement({ elementInstance: this });
30
+ gArray.forEach(g => {
31
+ this.groupG.appendChild(g);
32
+ });
33
+ }
34
+ ngOnChanges(changes) {
35
+ const viewport = changes['viewport'];
36
+ if (this.initialized && viewport) {
37
+ this.transform();
38
+ }
39
+ if (this.initialized) {
40
+ this.board.redrawElement({ elementInstance: this }, changes);
41
+ }
42
+ }
43
+ ngOnDestroy() {
44
+ this.board.destroyElement();
45
+ this.groupG.remove();
46
+ }
47
+ }
48
+ PlaitElementComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: PlaitElementComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component });
49
+ PlaitElementComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: PlaitElementComponent, selector: "plait-element", inputs: { index: "index", element: "element", board: "board", viewport: "viewport", selection: "selection", host: "host" }, usesOnChanges: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
50
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: PlaitElementComponent, decorators: [{
51
+ type: Component,
52
+ args: [{
53
+ selector: 'plait-element',
54
+ template: '',
55
+ changeDetection: ChangeDetectionStrategy.OnPush
56
+ }]
57
+ }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ViewContainerRef }]; }, propDecorators: { index: [{
58
+ type: Input
59
+ }], element: [{
60
+ type: Input
61
+ }], board: [{
62
+ type: Input
63
+ }], viewport: [{
64
+ type: Input
65
+ }], selection: [{
66
+ type: Input
67
+ }], host: [{
68
+ type: Input
69
+ }] } });
70
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wbGFpdC9zcmMvY29yZS9lbGVtZW50L2VsZW1lbnQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULEtBQUssRUFPUixNQUFNLGVBQWUsQ0FBQztBQUl2QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7O0FBUTFDLE1BQU0sT0FBTyxxQkFBcUI7SUFpQjlCLFlBQW1CLFNBQW9CLEVBQVMsZ0JBQWtDO1FBQS9ELGNBQVMsR0FBVCxTQUFTLENBQVc7UUFBUyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBaEJsRixnQkFBVyxHQUFHLEtBQUssQ0FBQztRQVlYLGNBQVMsR0FBcUIsSUFBSSxDQUFDO0lBSXlDLENBQUM7SUFFdEYsUUFBUTtRQUNKLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRUQsVUFBVTtRQUNOLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxNQUFNLEdBQUcsT0FBTyxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxxQkFBcUIsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDdkYsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxTQUFTLENBQUMsS0FBSyxHQUFHLEtBQUs7UUFDbkIsSUFBSSxLQUFLLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxLQUFLLENBQUMsRUFBRTtZQUNyRSxPQUFPO1NBQ1Y7UUFDRCxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFdBQVcsRUFBRSxhQUFhLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQztJQUMxSCxDQUFDO0lBRUQsV0FBVztRQUNQLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsZUFBZSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDakUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNmLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQy9CLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUM5QixNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDckMsSUFBSSxJQUFJLENBQUMsV0FBVyxJQUFJLFFBQVEsRUFBRTtZQUM5QixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7U0FDcEI7UUFDRCxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDbEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsRUFBRSxlQUFlLEVBQUUsSUFBSSxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUM7U0FDaEU7SUFDTCxDQUFDO0lBRUQsV0FBVztRQUNQLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDNUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUN6QixDQUFDOzttSEEzRFEscUJBQXFCO3VHQUFyQixxQkFBcUIsc01BSHBCLEVBQUU7NEZBR0gscUJBQXFCO2tCQUxqQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxlQUFlO29CQUN6QixRQUFRLEVBQUUsRUFBRTtvQkFDWixlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDbEQ7K0hBTVksS0FBSztzQkFBYixLQUFLO2dCQUVHLE9BQU87c0JBQWYsS0FBSztnQkFFRyxLQUFLO3NCQUFiLEtBQUs7Z0JBRUcsUUFBUTtzQkFBaEIsS0FBSztnQkFFRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVHLElBQUk7c0JBQVosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIFJlbmRlcmVyMixcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFZpZXdDb250YWluZXJSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQbGFpdEVsZW1lbnQgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2VsZW1lbnQnO1xuaW1wb3J0IHsgUGxhaXRCb2FyZCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvYm9hcmQnO1xuaW1wb3J0IHsgU2VsZWN0aW9uIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9zZWxlY3Rpb24nO1xuaW1wb3J0IHsgY3JlYXRlRyB9IGZyb20gJy4uLy4uL3V0aWxzL2RvbSc7XG5pbXBvcnQgeyBWaWV3cG9ydCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvdmlld3BvcnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3BsYWl0LWVsZW1lbnQnLFxuICAgIHRlbXBsYXRlOiAnJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBQbGFpdEVsZW1lbnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgICBpbml0aWFsaXplZCA9IGZhbHNlO1xuXG4gICAgZ3JvdXBHITogU1ZHR0VsZW1lbnQ7XG5cbiAgICBASW5wdXQoKSBpbmRleCE6IG51bWJlcjtcblxuICAgIEBJbnB1dCgpIGVsZW1lbnQhOiBQbGFpdEVsZW1lbnQ7XG5cbiAgICBASW5wdXQoKSBib2FyZCE6IFBsYWl0Qm9hcmQ7XG5cbiAgICBASW5wdXQoKSB2aWV3cG9ydCE6IFZpZXdwb3J0O1xuXG4gICAgQElucHV0KCkgc2VsZWN0aW9uOiBTZWxlY3Rpb24gfCBudWxsID0gbnVsbDtcblxuICAgIEBJbnB1dCgpIGhvc3QhOiBTVkdFbGVtZW50O1xuXG4gICAgY29uc3RydWN0b3IocHVibGljIHJlbmRlcmVyMjogUmVuZGVyZXIyLCBwdWJsaWMgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZikge31cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmluaXRpYWxpemUoKTtcbiAgICAgICAgdGhpcy50cmFuc2Zvcm0odHJ1ZSk7XG4gICAgICAgIHRoaXMuZHJhd0VsZW1lbnQoKTtcbiAgICB9XG5cbiAgICBpbml0aWFsaXplKCkge1xuICAgICAgICB0aGlzLmluaXRpYWxpemVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5ncm91cEcgPSBjcmVhdGVHKCk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIyLnNldEF0dHJpYnV0ZSh0aGlzLmdyb3VwRywgJ3BsYWl0LWVsZW1lbnQtZ3JvdXAnLCB0aGlzLmluZGV4LnRvU3RyaW5nKCkpO1xuICAgICAgICB0aGlzLmhvc3QuYXBwZW5kKHRoaXMuZ3JvdXBHKTtcbiAgICB9XG5cbiAgICB0cmFuc2Zvcm0oZmlyc3QgPSBmYWxzZSkge1xuICAgICAgICBpZiAoZmlyc3QgJiYgdGhpcy52aWV3cG9ydC5vZmZzZXRYID09PSAwICYmIHRoaXMudmlld3BvcnQub2Zmc2V0WSA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucmVuZGVyZXIyLnNldEF0dHJpYnV0ZSh0aGlzLmdyb3VwRywgJ3RyYW5zZm9ybScsIGB0cmFuc2xhdGUoJHt0aGlzLnZpZXdwb3J0Lm9mZnNldFh9ICR7dGhpcy52aWV3cG9ydC5vZmZzZXRZfSlgKTtcbiAgICB9XG5cbiAgICBkcmF3RWxlbWVudCgpIHtcbiAgICAgICAgY29uc3QgZ0FycmF5ID0gdGhpcy5ib2FyZC5kcmF3RWxlbWVudCh7IGVsZW1lbnRJbnN0YW5jZTogdGhpcyB9KTtcbiAgICAgICAgZ0FycmF5LmZvckVhY2goZyA9PiB7XG4gICAgICAgICAgICB0aGlzLmdyb3VwRy5hcHBlbmRDaGlsZChnKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBjb25zdCB2aWV3cG9ydCA9IGNoYW5nZXNbJ3ZpZXdwb3J0J107XG4gICAgICAgIGlmICh0aGlzLmluaXRpYWxpemVkICYmIHZpZXdwb3J0KSB7XG4gICAgICAgICAgICB0aGlzLnRyYW5zZm9ybSgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmluaXRpYWxpemVkKSB7XG4gICAgICAgICAgICB0aGlzLmJvYXJkLnJlZHJhd0VsZW1lbnQoeyBlbGVtZW50SW5zdGFuY2U6IHRoaXMgfSwgY2hhbmdlcyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5ib2FyZC5kZXN0cm95RWxlbWVudCgpO1xuICAgICAgICB0aGlzLmdyb3VwRy5yZW1vdmUoKTtcbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9hcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9wbGFpdC9zcmMvaW50ZXJmYWNlcy9ib2FyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ3Vyc29yU3RhdHVzIH0gZnJvbSAnLi9jdXJzb3InO1xuaW1wb3J0IHsgUGxhaXRFbGVtZW50IH0gZnJvbSAnLi9lbGVtZW50JztcbmltcG9ydCB7IFBsYWl0RWxlbWVudENvbnRleHQgfSBmcm9tICcuL2VsZW1lbnQtY29udGV4dCc7XG5pbXBvcnQgeyBQbGFpdE9wZXJhdGlvbiB9IGZyb20gJy4vb3BlcmF0aW9uJztcbmltcG9ydCB7IFNlbGVjdGlvbiB9IGZyb20gJy4vc2VsZWN0aW9uJztcbmltcG9ydCB7IFZpZXdwb3J0IH0gZnJvbSAnLi92aWV3cG9ydCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGxhaXRCb2FyZCB7XG4gICAgaG9zdDogU1ZHRWxlbWVudDtcbiAgICB2aWV3cG9ydDogVmlld3BvcnQ7XG4gICAgY2hpbGRyZW46IFBsYWl0RWxlbWVudFtdO1xuICAgIG9wZXJhdGlvbnM6IFBsYWl0T3BlcmF0aW9uW107XG4gICAgc2VsZWN0aW9uOiBTZWxlY3Rpb24gfCBudWxsO1xuICAgIGN1cnNvcjogQ3Vyc29yU3RhdHVzO1xuICAgIGFwcGx5OiAob3BlcmF0aW9uOiBQbGFpdE9wZXJhdGlvbikgPT4gdm9pZDtcbiAgICBvbkNoYW5nZTogKCkgPT4gdm9pZDtcbiAgICBtb3VzZWRvd246IChldmVudDogTW91c2VFdmVudCkgPT4gdm9pZDtcbiAgICBtb3VzZXVwOiAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHZvaWQ7XG4gICAgbW91c2Vtb3ZlOiAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHZvaWQ7XG4gICAga2V5ZG93bjogKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB2b2lkO1xuICAgIGtleXVwOiAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHZvaWQ7XG4gICAgZGJsY2xpY2s6IChldmVudDogTW91c2VFdmVudCkgPT4gdm9pZDtcbiAgICBkcmF3RWxlbWVudDogKGNvbnRleHQ6IFBsYWl0RWxlbWVudENvbnRleHQpID0+IFNWR0dFbGVtZW50W107XG4gICAgcmVkcmF3RWxlbWVudDogKGNvbnRleHQ6IFBsYWl0RWxlbWVudENvbnRleHQsIGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpID0+IFNWR0dFbGVtZW50W107XG4gICAgZGVzdHJveUVsZW1lbnQ6ICgpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGxhaXRCb2FyZENoYW5nZUV2ZW50IHtcbiAgICBjaGlsZHJlbjogUGxhaXRFbGVtZW50W107XG4gICAgb3BlcmF0aW9uczogUGxhaXRPcGVyYXRpb25bXTtcbiAgICB2aWV3cG9ydDogVmlld3BvcnQ7XG4gICAgc2VsZWN0aW9uOiBTZWxlY3Rpb24gfCBudWxsO1xufSJdfQ==
@@ -0,0 +1,6 @@
1
+ export var BaseCursorStatus;
2
+ (function (BaseCursorStatus) {
3
+ BaseCursorStatus["move"] = "move";
4
+ BaseCursorStatus["select"] = "select";
5
+ })(BaseCursorStatus || (BaseCursorStatus = {}));
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3Vyc29yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvcGxhaXQvc3JjL2ludGVyZmFjZXMvY3Vyc29yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE1BQU0sQ0FBTixJQUFZLGdCQUdYO0FBSEQsV0FBWSxnQkFBZ0I7SUFDeEIsaUNBQWUsQ0FBQTtJQUNmLHFDQUFtQixDQUFBO0FBQ3ZCLENBQUMsRUFIVyxnQkFBZ0IsS0FBaEIsZ0JBQWdCLFFBRzNCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgQ3Vyc29yU3RhdHVzID0gQmFzZUN1cnNvclN0YXR1cyB8IHN0cmluZztcbmV4cG9ydCBlbnVtIEJhc2VDdXJzb3JTdGF0dXMge1xuICAgICdtb3ZlJyA9ICdtb3ZlJyxcbiAgICAnc2VsZWN0JyA9ICdzZWxlY3QnXG59XG4iXX0=
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Extendable Custom Types Interface
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLXR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvcGxhaXQvc3JjL2ludGVyZmFjZXMvY3VzdG9tLXR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBFeHRlbmRhYmxlIEN1c3RvbSBUeXBlcyBJbnRlcmZhY2VcbiAqL1xuXG50eXBlIEV4dGVuZGFibGVUeXBlcyA9ICdWaWV3cG9ydCcgfCAnU2V0Vmlld3BvcnRPcGVyYXRpb24nIHwgJ1NldFNlbGVjdGlvbk9wZXJhdGlvbic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3VzdG9tVHlwZXMge1xuICAgIFtrZXk6IHN0cmluZ106IHVua25vd247XG59XG5cbmV4cG9ydCB0eXBlIEV4dGVuZGVkVHlwZTxLIGV4dGVuZHMgRXh0ZW5kYWJsZVR5cGVzLCBCPiA9IHVua25vd24gZXh0ZW5kcyBDdXN0b21UeXBlc1tLXSA/IEIgOiBDdXN0b21UeXBlc1tLXTtcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudC1jb250ZXh0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvcGxhaXQvc3JjL2ludGVyZmFjZXMvZWxlbWVudC1jb250ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQbGFpdEVsZW1lbnRDb21wb25lbnQgfSBmcm9tICcuLi9jb3JlL2VsZW1lbnQvZWxlbWVudC5jb21wb25lbnQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFBsYWl0RWxlbWVudENvbnRleHQge1xuICAgIGVsZW1lbnRJbnN0YW5jZTogUGxhaXRFbGVtZW50Q29tcG9uZW50O1xufVxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL3BsYWl0L3NyYy9pbnRlcmZhY2VzL2VsZW1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsYWl0Tm9kZSB9IGZyb20gJy4vbm9kZSc7XG5pbXBvcnQgeyBQb2ludCB9IGZyb20gJy4vcG9pbnQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFBsYWl0RWxlbWVudCBleHRlbmRzIFBsYWl0Tm9kZSB7XG4gICAgcG9pbnRzOiBQb2ludFtdO1xuICAgIHR5cGU6IHN0cmluZztcbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhcGguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9wbGFpdC9zcmMvaW50ZXJmYWNlcy9ncmFwaC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBSZWN0YW5nbGVDbGllbnQge1xuICAgIHg6IG51bWJlcjtcbiAgICB5OiBudW1iZXI7XG4gICAgd2lkdGg6IG51bWJlcjtcbiAgICBoZWlnaHQ6IG51bWJlcjtcbn1cbiJdfQ==
@@ -0,0 +1,14 @@
1
+ export * from './board';
2
+ export * from './cursor';
3
+ export * from './element-context';
4
+ export * from './custom-types';
5
+ export * from './element';
6
+ export * from './graph';
7
+ export * from './node';
8
+ export * from './operation';
9
+ export * from './path';
10
+ export * from './plugin';
11
+ export * from './point';
12
+ export * from './selection';
13
+ export * from './viewport';
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9wbGFpdC9zcmMvaW50ZXJmYWNlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLFNBQVMsQ0FBQztBQUN4QixjQUFjLFVBQVUsQ0FBQztBQUN6QixjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxXQUFXLENBQUM7QUFDMUIsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxRQUFRLENBQUM7QUFDdkIsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxRQUFRLENBQUM7QUFDdkIsY0FBYyxVQUFVLENBQUM7QUFDekIsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxZQUFZLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2JvYXJkJztcbmV4cG9ydCAqIGZyb20gJy4vY3Vyc29yJztcbmV4cG9ydCAqIGZyb20gJy4vZWxlbWVudC1jb250ZXh0JztcbmV4cG9ydCAqIGZyb20gJy4vY3VzdG9tLXR5cGVzJztcbmV4cG9ydCAqIGZyb20gJy4vZWxlbWVudCc7XG5leHBvcnQgKiBmcm9tICcuL2dyYXBoJztcbmV4cG9ydCAqIGZyb20gJy4vbm9kZSc7XG5leHBvcnQgKiBmcm9tICcuL29wZXJhdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL3BhdGgnO1xuZXhwb3J0ICogZnJvbSAnLi9wbHVnaW4nO1xuZXhwb3J0ICogZnJvbSAnLi9wb2ludCc7XG5leHBvcnQgKiBmcm9tICcuL3NlbGVjdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL3ZpZXdwb3J0JzsiXX0=
@@ -0,0 +1,20 @@
1
+ import { Path } from './path';
2
+ export const PlaitNode = {
3
+ parent: (board, path) => {
4
+ const parentPath = Path.parent(path);
5
+ const p = PlaitNode.get(board, parentPath);
6
+ return p;
7
+ },
8
+ get(board, path) {
9
+ let node = board;
10
+ for (let i = 0; i < path.length; i++) {
11
+ const p = path[i];
12
+ if (!node || !node.children || !node.children[p]) {
13
+ throw new Error(`Cannot find a descendant at path [${path}]`);
14
+ }
15
+ node = node.children[p];
16
+ }
17
+ return node;
18
+ }
19
+ };
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL3BsYWl0L3NyYy9pbnRlcmZhY2VzL25vZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFFBQVEsQ0FBQztBQWU5QixNQUFNLENBQUMsTUFBTSxTQUFTLEdBQXVCO0lBQ3pDLE1BQU0sRUFBRSxDQUFDLEtBQWlCLEVBQUUsSUFBVSxFQUFFLEVBQUU7UUFDdEMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyQyxNQUFNLENBQUMsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FBQztRQUMzQyxPQUFPLENBQUMsQ0FBQztJQUNiLENBQUM7SUFDRCxHQUFHLENBQUMsS0FBaUIsRUFBRSxJQUFVO1FBQzdCLElBQUksSUFBSSxHQUEyQixLQUFLLENBQUM7UUFFekMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDbEMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRWxCLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDOUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQ0FBcUMsSUFBSSxHQUFHLENBQUMsQ0FBQzthQUNqRTtZQUVELElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzNCO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztDQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQbGFpdEJvYXJkIH0gZnJvbSAnLi9ib2FyZCc7XG5pbXBvcnQgeyBQYXRoIH0gZnJvbSAnLi9wYXRoJztcblxuZXhwb3J0IGludGVyZmFjZSBQbGFpdE5vZGUge1xuICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICBjaGlsZHJlbj86IFBsYWl0Tm9kZVtdO1xuICAgIGlkPzogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBBbmNlc3RvciA9IFBsYWl0Qm9hcmQgfCBQbGFpdE5vZGU7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGxhaXROb2RlSW50ZXJmYWNlIHtcbiAgICBwYXJlbnQ6IChib2FyZDogUGxhaXRCb2FyZCwgcGF0aDogUGF0aCkgPT4gQW5jZXN0b3I7XG4gICAgZ2V0OiAoYm9hcmQ6IFBsYWl0Qm9hcmQsIHBhdGg6IFBhdGgpID0+IFBsYWl0Tm9kZTtcbn1cblxuZXhwb3J0IGNvbnN0IFBsYWl0Tm9kZTogUGxhaXROb2RlSW50ZXJmYWNlID0ge1xuICAgIHBhcmVudDogKGJvYXJkOiBQbGFpdEJvYXJkLCBwYXRoOiBQYXRoKSA9PiB7XG4gICAgICAgIGNvbnN0IHBhcmVudFBhdGggPSBQYXRoLnBhcmVudChwYXRoKTtcbiAgICAgICAgY29uc3QgcCA9IFBsYWl0Tm9kZS5nZXQoYm9hcmQsIHBhcmVudFBhdGgpO1xuICAgICAgICByZXR1cm4gcDtcbiAgICB9LFxuICAgIGdldChib2FyZDogUGxhaXRCb2FyZCwgcGF0aDogUGF0aCk6IEFuY2VzdG9yIHtcbiAgICAgICAgbGV0IG5vZGU6IFBsYWl0Qm9hcmQgfCBQbGFpdE5vZGUgPSBib2FyZDtcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBhdGgubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHAgPSBwYXRoW2ldO1xuXG4gICAgICAgICAgICBpZiAoIW5vZGUgfHwgIW5vZGUuY2hpbGRyZW4gfHwgIW5vZGUuY2hpbGRyZW5bcF0pIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBmaW5kIGEgZGVzY2VuZGFudCBhdCBwYXRoIFske3BhdGh9XWApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBub2RlID0gbm9kZS5jaGlsZHJlbltwXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBub2RlO1xuICAgIH1cbn07XG4iXX0=
@@ -0,0 +1,7 @@
1
+ export const isSetViewportOperation = (value) => {
2
+ return value.type === 'set_viewport';
3
+ };
4
+ export const PlaitOperation = {
5
+ isSetViewportOperation
6
+ };
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlcmF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvcGxhaXQvc3JjL2ludGVyZmFjZXMvb3BlcmF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTJDQSxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxDQUFDLEtBQVUsRUFBaUMsRUFBRTtJQUNoRixPQUFPLEtBQUssQ0FBQyxJQUFJLEtBQUssY0FBYyxDQUFDO0FBQ3pDLENBQUMsQ0FBQztBQUdGLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRztJQUMxQixzQkFBc0I7Q0FDekIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsYWl0Tm9kZSB9IGZyb20gJy4vbm9kZSc7XG5pbXBvcnQgeyBQYXRoIH0gZnJvbSAnLi9wYXRoJztcbmltcG9ydCB7IFNlbGVjdGlvbiB9IGZyb20gJy4vc2VsZWN0aW9uJztcbmltcG9ydCB7IFZpZXdwb3J0IH0gZnJvbSAnLi92aWV3cG9ydCc7XG5cbmV4cG9ydCB0eXBlIEluc2VydE5vZGVPcGVyYXRpb24gPSB7XG4gICAgdHlwZTogJ2luc2VydF9ub2RlJztcbiAgICBwYXRoOiBQYXRoO1xuICAgIG5vZGU6IFBsYWl0Tm9kZTtcbn07XG5cbmV4cG9ydCB0eXBlIFJlbW92ZU5vZGVPcGVyYXRpb24gPSB7XG4gICAgdHlwZTogJ3JlbW92ZV9ub2RlJztcbiAgICBwYXRoOiBQYXRoO1xufTtcblxuZXhwb3J0IHR5cGUgTW92ZU5vZGVPcGVyYXRpb24gPSB7XG4gICAgdHlwZTogJ21vdmVfbm9kZSc7XG4gICAgcGF0aDogUGF0aDtcbiAgICBuZXdQYXRoOiBQYXRoO1xufTtcblxuZXhwb3J0IHR5cGUgU2V0Vmlld3BvcnRPcGVyYXRpb24gPSB7XG4gICAgdHlwZTogJ3NldF92aWV3cG9ydCc7XG4gICAgcHJvcGVydGllczogUGFydGlhbDxWaWV3cG9ydD47XG4gICAgbmV3UHJvcGVydGllczogUGFydGlhbDxWaWV3cG9ydD47XG59O1xuXG5leHBvcnQgdHlwZSBTZXRTZWxlY3Rpb25PcGVyYXRpb24gPSB7XG4gICAgdHlwZTogJ3NldF9zZWxlY3Rpb24nO1xuICAgIHByb3BlcnRpZXM6IFNlbGVjdGlvbiB8IG51bGw7XG4gICAgbmV3UHJvcGVydGllczogU2VsZWN0aW9uIHwgbnVsbDtcbn07XG5cbmV4cG9ydCB0eXBlIFNldE5vZGVPcGVyYXRpb24gPSB7XG4gICAgdHlwZTogJ3NldF9ub2RlJztcbiAgICBwYXRoOiBQYXRoO1xuICAgIHByb3BlcnRpZXM6IFBhcnRpYWw8UGxhaXROb2RlPjtcbiAgICBuZXdQcm9wZXJ0aWVzOiBQYXJ0aWFsPFBsYWl0Tm9kZT47XG59O1xuXG5leHBvcnQgdHlwZSBQbGFpdE9wZXJhdGlvbiA9IEluc2VydE5vZGVPcGVyYXRpb24gfCBTZXRWaWV3cG9ydE9wZXJhdGlvbiB8IFNldFNlbGVjdGlvbk9wZXJhdGlvbiB8IFNldE5vZGVPcGVyYXRpb24gfCBSZW1vdmVOb2RlT3BlcmF0aW9uIHwgTW92ZU5vZGVPcGVyYXRpb247XG5cbmV4cG9ydCBjb25zdCBpc1NldFZpZXdwb3J0T3BlcmF0aW9uID0gKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBTZXRWaWV3cG9ydE9wZXJhdGlvbiA9PiB7XG4gICAgcmV0dXJuIHZhbHVlLnR5cGUgPT09ICdzZXRfdmlld3BvcnQnO1xufTtcblxuXG5leHBvcnQgY29uc3QgUGxhaXRPcGVyYXRpb24gPSB7XG4gICAgaXNTZXRWaWV3cG9ydE9wZXJhdGlvblxufTsiXX0=