@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.
- package/README.md +1 -0
- package/board/board.component.d.ts +37 -0
- package/core/base/detector.d.ts +7 -0
- package/core/element/element.component.d.ts +27 -0
- package/esm2020/board/board.component.mjs +211 -0
- package/esm2020/core/base/detector.mjs +2 -0
- package/esm2020/core/element/element.component.mjs +70 -0
- package/esm2020/interfaces/board.mjs +2 -0
- package/esm2020/interfaces/cursor.mjs +6 -0
- package/esm2020/interfaces/custom-types.mjs +5 -0
- package/esm2020/interfaces/element-context.mjs +2 -0
- package/esm2020/interfaces/element.mjs +2 -0
- package/esm2020/interfaces/graph.mjs +2 -0
- package/esm2020/interfaces/index.mjs +14 -0
- package/esm2020/interfaces/node.mjs +20 -0
- package/esm2020/interfaces/operation.mjs +7 -0
- package/esm2020/interfaces/path.mjs +139 -0
- package/esm2020/interfaces/plugin.mjs +2 -0
- package/esm2020/interfaces/point.mjs +2 -0
- package/esm2020/interfaces/selection.mjs +2 -0
- package/esm2020/interfaces/viewport.mjs +10 -0
- package/esm2020/plait-core.mjs +5 -0
- package/esm2020/plait.module.mjs +19 -0
- package/esm2020/plugins/create-board.mjs +42 -0
- package/esm2020/plugins/with-board.mjs +13 -0
- package/esm2020/plugins/with-selection.mjs +39 -0
- package/esm2020/public-api.mjs +11 -0
- package/esm2020/transfroms/general.mjs +139 -0
- package/esm2020/transfroms/index.mjs +11 -0
- package/esm2020/transfroms/node.mjs +36 -0
- package/esm2020/transfroms/selection.mjs +8 -0
- package/esm2020/transfroms/viewport.mjs +8 -0
- package/esm2020/utils/board.mjs +25 -0
- package/esm2020/utils/dom.mjs +22 -0
- package/esm2020/utils/environment.mjs +13 -0
- package/esm2020/utils/graph.mjs +11 -0
- package/esm2020/utils/helper.mjs +4 -0
- package/esm2020/utils/hotkeys.mjs +99 -0
- package/esm2020/utils/id-creator.mjs +11 -0
- package/esm2020/utils/index.mjs +10 -0
- package/esm2020/utils/math.mjs +37 -0
- package/esm2020/utils/weak-maps.mjs +6 -0
- package/fesm2015/plait-core.mjs +969 -0
- package/fesm2015/plait-core.mjs.map +1 -0
- package/fesm2020/plait-core.mjs +984 -0
- package/fesm2020/plait-core.mjs.map +1 -0
- package/interfaces/board.d.ts +32 -0
- package/interfaces/cursor.d.ts +5 -0
- package/interfaces/custom-types.d.ts +9 -0
- package/interfaces/element-context.d.ts +4 -0
- package/interfaces/element.d.ts +6 -0
- package/interfaces/graph.d.ts +6 -0
- package/interfaces/index.d.ts +13 -0
- package/interfaces/node.d.ts +13 -0
- package/interfaces/operation.d.ts +39 -0
- package/interfaces/path.d.ts +32 -0
- package/interfaces/plugin.d.ts +2 -0
- package/interfaces/point.d.ts +1 -0
- package/interfaces/selection.d.ts +5 -0
- package/interfaces/viewport.d.ts +13 -0
- package/package.json +31 -0
- package/plait-core.d.ts +5 -0
- package/plait.module.d.ts +9 -0
- package/plugins/create-board.d.ts +3 -0
- package/plugins/with-board.d.ts +2 -0
- package/plugins/with-selection.d.ts +2 -0
- package/public-api.d.ts +7 -0
- package/transfroms/general.d.ts +6 -0
- package/transfroms/index.d.ts +5 -0
- package/transfroms/node.d.ts +14 -0
- package/transfroms/selection.d.ts +7 -0
- package/transfroms/viewport.d.ts +7 -0
- package/utils/board.d.ts +10 -0
- package/utils/dom.d.ts +6 -0
- package/utils/environment.d.ts +7 -0
- package/utils/graph.d.ts +3 -0
- package/utils/helper.d.ts +1 -0
- package/utils/hotkeys.d.ts +32 -0
- package/utils/id-creator.d.ts +1 -0
- package/utils/index.d.ts +9 -0
- package/utils/math.d.ts +2 -0
- 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=
|