@worktile/theia 2.3.0-next.0 → 2.3.0-next.3

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 (36) hide show
  1. package/bundles/worktile-theia.umd.js +142 -477
  2. package/bundles/worktile-theia.umd.js.map +1 -1
  3. package/constants/default.d.ts +0 -2
  4. package/editor.component.d.ts +0 -2
  5. package/editor.module.d.ts +24 -26
  6. package/esm2015/constants/default.js +1 -2
  7. package/esm2015/editor.component.js +17 -14
  8. package/esm2015/editor.module.js +3 -6
  9. package/esm2015/interfaces/editor.js +1 -1
  10. package/esm2015/plugins/align/align.editor.js +6 -2
  11. package/esm2015/plugins/image/image.component.js +13 -8
  12. package/esm2015/utils/dom.js +2 -2
  13. package/esm2015/utils/index.js +3 -1
  14. package/fesm2015/worktile-theia.js +135 -468
  15. package/fesm2015/worktile-theia.js.map +1 -1
  16. package/interfaces/editor.d.ts +1 -6
  17. package/package.json +1 -1
  18. package/plugins/image/image.component.scss +0 -7
  19. package/plugins/table/components/table.component.scss +2 -2
  20. package/styles/editor.scss +160 -133
  21. package/styles/index.scss +1 -2
  22. package/styles/typo.scss +12 -1
  23. package/utils/index.d.ts +2 -0
  24. package/esm2015/plugins/dnd/component/dnd.component.js +0 -260
  25. package/esm2015/plugins/dnd/utils/get-current-target.js +0 -19
  26. package/esm2015/plugins/dnd/utils/get-hover-direction.js +0 -13
  27. package/esm2015/plugins/dnd/utils/is-valid-drag.js +0 -38
  28. package/esm2015/plugins/dnd/utils/move-drag-node.js +0 -30
  29. package/esm2015/plugins/dnd/utils/remove-drop-thumb-line.js +0 -10
  30. package/plugins/dnd/component/dnd.component.d.ts +0 -42
  31. package/plugins/dnd/component/dnd.component.scss +0 -61
  32. package/plugins/dnd/utils/get-current-target.d.ts +0 -2
  33. package/plugins/dnd/utils/get-hover-direction.d.ts +0 -3
  34. package/plugins/dnd/utils/is-valid-drag.d.ts +0 -3
  35. package/plugins/dnd/utils/move-drag-node.d.ts +0 -2
  36. package/plugins/dnd/utils/remove-drop-thumb-line.d.ts +0 -2
@@ -1,260 +0,0 @@
1
- import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
2
- import { fromEvent, merge, Subject } from 'rxjs';
3
- import { filter, takeUntil } from 'rxjs/operators';
4
- import { Editor, Operation } from 'slate';
5
- import { AngularEditor, EDITOR_TO_ELEMENT } from 'slate-angular';
6
- import { DROP_THUMB_LINE } from '../../../constants';
7
- import { TheContextService } from '../../../services/context.service';
8
- import { coercePixelsFromCssValue, findNodeEntryByPoint } from '../../../utils/dom';
9
- import { getCurrentTarget } from '../utils/get-current-target';
10
- import { getHoverDirection } from '../utils/get-hover-direction';
11
- import { moveDragNode } from '../utils/move-drag-node';
12
- import { isValidDrag } from '../utils/is-valid-drag';
13
- import * as i0 from "@angular/core";
14
- import * as i1 from "ngx-tethys/icon";
15
- import * as i2 from "@angular/common";
16
- const SNAPSHOT_PADDING_WIDTH = 5;
17
- const SNAPSHOT_LIMI_HEIGHT = 70;
18
- const DRAG_ICON_SIZE = 24;
19
- const DRAG_ICON_OFFSET = 5;
20
- export class TheDndComponent {
21
- constructor(renderer, elementRef, ngZone, cdr) {
22
- this.renderer = renderer;
23
- this.elementRef = elementRef;
24
- this.ngZone = ngZone;
25
- this.cdr = cdr;
26
- this.isDraging = false;
27
- this.destroy$ = new Subject();
28
- this.dragChange = new EventEmitter();
29
- this.dropThumbLine = document.createElement('div');
30
- this.dropThumbLine.className = DROP_THUMB_LINE;
31
- }
32
- get nativeElement() {
33
- return this.elementRef.nativeElement;
34
- }
35
- get editableElement() {
36
- return this.editor && EDITOR_TO_ELEMENT.get(this.editor);
37
- }
38
- ngAfterViewInit() {
39
- const contextService = this.editor.injector.get(TheContextService);
40
- this.ngZone.runOutsideAngular(() => {
41
- merge(fromEvent(this.editableElement, `mousemove`), fromEvent(this.editableElement, `mouseleave`))
42
- .pipe(takeUntil(this.destroy$), filter(() => {
43
- return !contextService.getOptions().theOptions.readonly && contextService.getOptions().theOptions.dragAndDrop;
44
- }))
45
- .subscribe(e => this.setDragIcon(e));
46
- fromEvent(document, `drop`)
47
- .pipe(takeUntil(this.destroy$), filter(() => {
48
- return !contextService.getOptions().theOptions.readonly && contextService.getOptions().theOptions.dragAndDrop;
49
- }))
50
- .subscribe(e => this.onDrop(e));
51
- fromEvent(document, `dragover`)
52
- .pipe(takeUntil(this.destroy$), filter(() => {
53
- return !contextService.getOptions().theOptions.readonly && contextService.getOptions().theOptions.dragAndDrop;
54
- }))
55
- .subscribe(e => this.onDragover(e));
56
- fromEvent(document, `scroll`)
57
- .pipe(takeUntil(this.destroy$), filter(() => {
58
- return !contextService.getOptions().theOptions.readonly && contextService.getOptions().theOptions.dragAndDrop;
59
- }))
60
- .subscribe(e => {
61
- e.preventDefault();
62
- let scrollPosition = window.scrollY;
63
- if (!this.isScrolling && this.isDraging) {
64
- window.requestAnimationFrame(() => {
65
- if (this.editableTop) {
66
- // 滚动过程中,通过设置父级元素来设置snapshot位置
67
- this.updateDndContainerPosition(null, scrollPosition + this.editableTop + 'px');
68
- }
69
- this.isScrolling = false;
70
- });
71
- this.isScrolling = true;
72
- }
73
- });
74
- });
75
- this.setVisibility(false);
76
- this.valueChangeHandle();
77
- }
78
- valueChangeHandle() {
79
- const { onChange } = this.editor;
80
- this.editor.onChange = () => {
81
- const ops = this.editor.operations;
82
- const skip = ops.length === 1 && Operation.isSelectionOperation(ops[0]);
83
- if (!skip) {
84
- this.setVisibility(false);
85
- }
86
- onChange();
87
- };
88
- }
89
- updateDndContainerPosition(left, top) {
90
- const element = this.elementRef.nativeElement;
91
- const parentElement = element.parentElement;
92
- top && this.renderer.setStyle(parentElement, 'top', top);
93
- left && this.renderer.setStyle(parentElement, 'left', left);
94
- }
95
- getEditableTop(event) {
96
- const offsetHeight = document.documentElement.offsetHeight;
97
- const { height } = this.editableElement.getBoundingClientRect();
98
- if (event.clientY < this.dragElementHeight) {
99
- this.editableTop = -this.editableElement.offsetTop;
100
- return;
101
- }
102
- if (height > event.pageY && event.clientY + this.dragElementHeight >= offsetHeight) {
103
- this.editableTop = event.clientY - this.editableElement.offsetTop;
104
- return;
105
- }
106
- this.editableTop = null;
107
- }
108
- onDragStart(event) {
109
- this.isDraging = true;
110
- this.dragChange.emit(this.isDraging);
111
- this.dragSnapshotContent = document.querySelector('.drag-snapshot-container');
112
- this.dragSnapshotContent.className = 'the-editor-typo drag-snapshot-container';
113
- this.dragSnapshotContent.appendChild(this.dragElement.cloneNode(true));
114
- this.dragElement.style.opacity = '0.3';
115
- }
116
- onDragEnd(event) {
117
- this.dragElement.style.opacity = '';
118
- this.isDraging = false;
119
- this.setVisibility(false);
120
- this.resetDragSnapshotContent();
121
- this.dragChange.emit(this.isDraging);
122
- }
123
- onDrop(event) {
124
- event.preventDefault();
125
- if (this.isDraging) {
126
- moveDragNode(this.editor, this.dragNode, event);
127
- }
128
- }
129
- onDragover(event) {
130
- event.preventDefault();
131
- if (this.isDraging && !this.isScrolling) {
132
- this.getEditableTop(event);
133
- const offsetWidth = document.documentElement.offsetWidth;
134
- const { left: editorLeft, top: editorTop, height } = this.editableElement.getBoundingClientRect();
135
- let top = 0;
136
- let left = 0;
137
- if (editorLeft > 0) {
138
- if (event.clientX + this.dragElementWidth / 2 > offsetWidth) {
139
- left = event.pageX - editorLeft - this.elementRef.nativeElement.offsetWidth;
140
- }
141
- else {
142
- left = Math.max(event.pageX - editorLeft, -editorLeft) + 10;
143
- }
144
- }
145
- let paddingTop = 0; // paddingTop: 编辑器距离顶部的距离
146
- if (editorTop >= 0) {
147
- // 无滚动情况下
148
- top = event.clientY - this.editableElement.offsetTop;
149
- paddingTop = editorTop - this.editableElement.offsetTop;
150
- }
151
- else {
152
- // 有滚动距离
153
- top = Math.abs(editorTop) + event.clientY; // 滚动距离 + 鼠标clientY
154
- paddingTop = event.pageY - this.editableElement.offsetTop - top;
155
- // 防止底部出现滚动条
156
- if (paddingTop < height - top) {
157
- top = top + paddingTop;
158
- }
159
- }
160
- this.updateDndContainerPosition(left + 'px', top + 'px');
161
- this.setSnapshotStyle(event);
162
- this.setDropThumbLine(event);
163
- }
164
- }
165
- setDropThumbLine(event) {
166
- var _a;
167
- let element = getCurrentTarget(this.editor, event);
168
- const direction = getHoverDirection(this.editor, event);
169
- if (element) {
170
- if (direction && direction === 'top') {
171
- element = (_a = element.previousElementSibling) === null || _a === void 0 ? void 0 : _a.querySelector('[data-slate-node="element"]');
172
- }
173
- if (element && isValidDrag(this.editor, this.dragNode.node, element)) {
174
- element.appendChild(this.dropThumbLine);
175
- }
176
- }
177
- }
178
- setDragIcon(event) {
179
- if (!this.isDraging) {
180
- const nodeEntry = findNodeEntryByPoint(this.editor, event.x, event.y, 'highest');
181
- if (nodeEntry && !Editor.isEmpty(this.editor, nodeEntry[0])) {
182
- const rootNode = AngularEditor.toDOMNode(this.editor, nodeEntry[0]);
183
- this.dragNode = {
184
- node: nodeEntry[0],
185
- path: nodeEntry[1]
186
- };
187
- this.dragElement = rootNode;
188
- let lineHeight = coercePixelsFromCssValue(window.getComputedStyle(rootNode)['lineHeight']);
189
- const offsetTop = rootNode.offsetTop + rootNode.offsetParent.offsetTop + (lineHeight - DRAG_ICON_SIZE) / 2;
190
- const offsetLeft = rootNode.offsetLeft + rootNode.offsetParent.offsetLeft;
191
- this.updateDndContainerPosition(offsetLeft - DRAG_ICON_SIZE - DRAG_ICON_OFFSET + 'px', offsetTop + 'px');
192
- this.setVisibility(true);
193
- }
194
- else {
195
- this.setVisibility(false);
196
- }
197
- }
198
- }
199
- setSnapshotStyle(event) {
200
- const { width, height } = this.dragElement.getBoundingClientRect();
201
- this.dragElementHeight = height;
202
- this.dragElementWidth = width;
203
- let dragSnapshotContentStyle = `visibility: visible; width: ${width + SNAPSHOT_PADDING_WIDTH * 2}px;`;
204
- if (height > SNAPSHOT_LIMI_HEIGHT) {
205
- dragSnapshotContentStyle = dragSnapshotContentStyle + 'transform: scale(0.45);';
206
- this.dragElementHeight = this.dragElementHeight * 0.45;
207
- this.dragElementWidth = this.dragElementWidth * 0.45;
208
- }
209
- let snapshotTop = 0;
210
- let snapshotLeft = 0;
211
- // 上下移动:超出屏幕高度,重新设置snapshot的位置
212
- if (event.clientY + this.dragElementHeight > document.documentElement.offsetHeight) {
213
- snapshotTop = this.dragElementHeight;
214
- }
215
- else {
216
- snapshotTop = 0;
217
- }
218
- // 左右移动:超出屏幕宽度,重新设置snapshot的位置
219
- if (event.clientX + this.dragElementWidth / 2 > document.documentElement.offsetWidth) {
220
- snapshotLeft = this.dragElementWidth;
221
- }
222
- else {
223
- snapshotLeft = 0;
224
- }
225
- dragSnapshotContentStyle = dragSnapshotContentStyle + `top: ${-snapshotTop}px; left: ${-snapshotLeft}px;`;
226
- this.dragSnapshotContent.setAttribute('style', dragSnapshotContentStyle);
227
- }
228
- resetDragSnapshotContent() {
229
- this.dragSnapshotContent.className = 'drag-snapshot-container';
230
- this.dragSnapshotContent.setAttribute('style', '');
231
- this.dragSnapshotContent.innerHTML = '';
232
- }
233
- setVisibility(visible = true) {
234
- this.nativeElement.parentNode.style.visibility = visible ? 'visible' : 'hidden';
235
- }
236
- ngOnDestroy() {
237
- this.destroy$.next();
238
- this.destroy$.complete();
239
- }
240
- }
241
- TheDndComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: TheDndComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
242
- TheDndComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.15", type: TheDndComponent, selector: "[theDnd]", inputs: { editor: "editor" }, outputs: { dragChange: "dragChange" }, host: { classAttribute: "the-drag-drop" }, viewQueries: [{ propertyName: "content", first: true, predicate: ["content"], descendants: true }], ngImport: i0, template: "<div\n draggable=\"true\"\n class=\"the-drag-drop-icon\"\n [ngStyle]=\"{ opacity: isDraging ? 0 : '' }\"\n (dragstart)=\"onDragStart($event)\"\n (dragend)=\"onDragEnd($event)\"\n>\n <thy-icon thyIconName=\"drag\"> </thy-icon>\n</div>\n", components: [{ type: i1.ThyIconComponent, selector: "thy-icon", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }], directives: [{ type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
243
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: TheDndComponent, decorators: [{
244
- type: Component,
245
- args: [{
246
- selector: '[theDnd]',
247
- templateUrl: './dnd.component.html',
248
- host: {
249
- class: 'the-drag-drop'
250
- }
251
- }]
252
- }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { editor: [{
253
- type: Input
254
- }], dragChange: [{
255
- type: Output
256
- }], content: [{
257
- type: ViewChild,
258
- args: ['content', { static: false }]
259
- }] } });
260
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG5kLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3NyYy9wbHVnaW5zL2RuZC9jb21wb25lbnQvZG5kLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3NyYy9wbHVnaW5zL2RuZC9jb21wb25lbnQvZG5kLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHSCxTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBRU4sU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqRCxPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQzFDLE9BQU8sRUFBRSxhQUFhLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXJELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3BGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7QUFFckQsTUFBTSxzQkFBc0IsR0FBRyxDQUFDLENBQUM7QUFDakMsTUFBTSxvQkFBb0IsR0FBRyxFQUFFLENBQUM7QUFDaEMsTUFBTSxjQUFjLEdBQUcsRUFBRSxDQUFDO0FBQzFCLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDO0FBUzNCLE1BQU0sT0FBTyxlQUFlO0lBbUN4QixZQUFvQixRQUFtQixFQUFVLFVBQXNCLEVBQVUsTUFBYyxFQUFVLEdBQXNCO1FBQTNHLGFBQVEsR0FBUixRQUFRLENBQVc7UUFBVSxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUFVLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBbEMvSCxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBTVYsYUFBUSxHQUFpQixJQUFJLE9BQU8sRUFBTyxDQUFDO1FBSTFDLGVBQVUsR0FBMEIsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQXlCN0QsSUFBSSxDQUFDLGFBQWEsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25ELElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxHQUFHLGVBQWUsQ0FBQztJQUNuRCxDQUFDO0lBWEQsSUFBSSxhQUFhO1FBQ2IsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQztJQUN6QyxDQUFDO0lBRUQsSUFBSSxlQUFlO1FBQ2YsT0FBTyxJQUFJLENBQUMsTUFBTSxJQUFJLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQU9ELGVBQWU7UUFDWCxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNuRSxJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRTtZQUMvQixLQUFLLENBQUMsU0FBUyxDQUFhLElBQUksQ0FBQyxlQUFlLEVBQUUsV0FBVyxDQUFDLEVBQUUsU0FBUyxDQUFhLElBQUksQ0FBQyxlQUFlLEVBQUUsWUFBWSxDQUFDLENBQUM7aUJBQ3JILElBQUksQ0FDRCxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUN4QixNQUFNLENBQUMsR0FBRyxFQUFFO2dCQUNSLE9BQU8sQ0FBQyxjQUFjLENBQUMsVUFBVSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsSUFBSSxjQUFjLENBQUMsVUFBVSxFQUFFLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQztZQUNsSCxDQUFDLENBQUMsQ0FDTDtpQkFDQSxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDekMsU0FBUyxDQUFhLFFBQVEsRUFBRSxNQUFNLENBQUM7aUJBQ2xDLElBQUksQ0FDRCxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUN4QixNQUFNLENBQUMsR0FBRyxFQUFFO2dCQUNSLE9BQU8sQ0FBQyxjQUFjLENBQUMsVUFBVSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsSUFBSSxjQUFjLENBQUMsVUFBVSxFQUFFLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQztZQUNsSCxDQUFDLENBQUMsQ0FDTDtpQkFDQSxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDcEMsU0FBUyxDQUFhLFFBQVEsRUFBRSxVQUFVLENBQUM7aUJBQ3RDLElBQUksQ0FDRCxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUN4QixNQUFNLENBQUMsR0FBRyxFQUFFO2dCQUNSLE9BQU8sQ0FBQyxjQUFjLENBQUMsVUFBVSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsSUFBSSxjQUFjLENBQUMsVUFBVSxFQUFFLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQztZQUNsSCxDQUFDLENBQUMsQ0FDTDtpQkFDQSxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDeEMsU0FBUyxDQUFhLFFBQVEsRUFBRSxRQUFRLENBQUM7aUJBQ3BDLElBQUksQ0FDRCxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUN4QixNQUFNLENBQUMsR0FBRyxFQUFFO2dCQUNSLE9BQU8sQ0FBQyxjQUFjLENBQUMsVUFBVSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsSUFBSSxjQUFjLENBQUMsVUFBVSxFQUFFLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQztZQUNsSCxDQUFDLENBQUMsQ0FDTDtpQkFDQSxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ1gsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUNuQixJQUFJLGNBQWMsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDO2dCQUNwQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO29CQUNyQyxNQUFNLENBQUMscUJBQXFCLENBQUMsR0FBRyxFQUFFO3dCQUM5QixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7NEJBQ2xCLDhCQUE4Qjs0QkFDOUIsSUFBSSxDQUFDLDBCQUEwQixDQUFDLElBQUksRUFBRSxjQUFjLEdBQUcsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsQ0FBQzt5QkFDbkY7d0JBQ0QsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7b0JBQzdCLENBQUMsQ0FBQyxDQUFDO29CQUNILElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO2lCQUMzQjtZQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ1gsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRCxpQkFBaUI7UUFDYixNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUNqQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsR0FBRyxHQUFHLEVBQUU7WUFDeEIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUM7WUFDbkMsTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksU0FBUyxDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3hFLElBQUksQ0FBQyxJQUFJLEVBQUU7Z0JBQ1AsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUM3QjtZQUNELFFBQVEsRUFBRSxDQUFDO1FBQ2YsQ0FBQyxDQUFDO0lBQ04sQ0FBQztJQUVPLDBCQUEwQixDQUFDLElBQVksRUFBRSxHQUFXO1FBQ3hELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBNEIsQ0FBQztRQUM3RCxNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUMsYUFBYSxDQUFDO1FBQzVDLEdBQUcsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxhQUFhLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3pELElBQUksSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxhQUFhLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRCxjQUFjLENBQUMsS0FBaUI7UUFDNUIsTUFBTSxZQUFZLEdBQUcsUUFBUSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUM7UUFDM0QsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUNoRSxJQUFJLEtBQUssQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixFQUFFO1lBQ3hDLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQztZQUNuRCxPQUFPO1NBQ1Y7UUFDRCxJQUFJLE1BQU0sR0FBRyxLQUFLLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixJQUFJLFlBQVksRUFBRTtZQUNoRixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUM7WUFDbEUsT0FBTztTQUNWO1FBQ0QsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7SUFDNUIsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFnQjtRQUN4QixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUN0QixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDckMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsMEJBQTBCLENBQWdCLENBQUM7UUFDN0YsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsR0FBRyx5Q0FBeUMsQ0FBQztRQUMvRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDdkUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztJQUMzQyxDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQWdCO1FBQ3RCLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDcEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDdkIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMxQixJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztRQUNoQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFpQjtRQUNwQixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkIsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2hCLFlBQVksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDbkQ7SUFDTCxDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQWlCO1FBQ3hCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixJQUFJLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ3JDLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDM0IsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUM7WUFDekQsTUFBTSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLHFCQUFxQixFQUFFLENBQUM7WUFDbEcsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDO1lBQ1osSUFBSSxJQUFJLEdBQUcsQ0FBQyxDQUFDO1lBRWIsSUFBSSxVQUFVLEdBQUcsQ0FBQyxFQUFFO2dCQUNoQixJQUFJLEtBQUssQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixHQUFHLENBQUMsR0FBRyxXQUFXLEVBQUU7b0JBQ3pELElBQUksR0FBRyxLQUFLLENBQUMsS0FBSyxHQUFHLFVBQVUsR0FBSSxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQTZCLENBQUMsV0FBVyxDQUFDO2lCQUNoRztxQkFBTTtvQkFDSCxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLFVBQVUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQztpQkFDL0Q7YUFDSjtZQUVELElBQUksVUFBVSxHQUFHLENBQUMsQ0FBQyxDQUFDLHlCQUF5QjtZQUM3QyxJQUFJLFNBQVMsSUFBSSxDQUFDLEVBQUU7Z0JBQ2hCLFNBQVM7Z0JBQ1QsR0FBRyxHQUFHLEtBQUssQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUM7Z0JBQ3JELFVBQVUsR0FBRyxTQUFTLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUM7YUFDM0Q7aUJBQU07Z0JBQ0gsUUFBUTtnQkFDUixHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsbUJBQW1CO2dCQUM5RCxVQUFVLEdBQUcsS0FBSyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsR0FBRyxHQUFHLENBQUM7Z0JBQ2hFLFlBQVk7Z0JBQ1osSUFBSSxVQUFVLEdBQUcsTUFBTSxHQUFHLEdBQUcsRUFBRTtvQkFDM0IsR0FBRyxHQUFHLEdBQUcsR0FBRyxVQUFVLENBQUM7aUJBQzFCO2FBQ0o7WUFDRCxJQUFJLENBQUMsMEJBQTBCLENBQUMsSUFBSSxHQUFHLElBQUksRUFBRSxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUM7WUFDekQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzdCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNoQztJQUNMLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxLQUFpQjs7UUFDOUIsSUFBSSxPQUFPLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNuRCxNQUFNLFNBQVMsR0FBRyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3hELElBQUksT0FBTyxFQUFFO1lBQ1QsSUFBSSxTQUFTLElBQUksU0FBUyxLQUFLLEtBQUssRUFBRTtnQkFDbEMsT0FBTyxHQUFHLE1BQUEsT0FBTyxDQUFDLHNCQUFzQiwwQ0FBRSxhQUFhLENBQUMsNkJBQTZCLENBQWdCLENBQUM7YUFDekc7WUFDRCxJQUFJLE9BQU8sSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsRUFBRTtnQkFDbEUsT0FBTyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7YUFDM0M7U0FDSjtJQUNMLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBaUI7UUFDekIsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDakIsTUFBTSxTQUFTLEdBQUcsb0JBQW9CLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFDakYsSUFBSSxTQUFTLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ3pELE1BQU0sUUFBUSxHQUFHLGFBQWEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDcEUsSUFBSSxDQUFDLFFBQVEsR0FBRztvQkFDWixJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQztvQkFDbEIsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUM7aUJBQ3JCLENBQUM7Z0JBQ0YsSUFBSSxDQUFDLFdBQVcsR0FBRyxRQUFRLENBQUM7Z0JBQzVCLElBQUksVUFBVSxHQUFHLHdCQUF3QixDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO2dCQUMzRixNQUFNLFNBQVMsR0FBRyxRQUFRLENBQUMsU0FBUyxHQUFJLFFBQVEsQ0FBQyxZQUE0QixDQUFDLFNBQVMsR0FBRyxDQUFDLFVBQVUsR0FBRyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQzVILE1BQU0sVUFBVSxHQUFHLFFBQVEsQ0FBQyxVQUFVLEdBQUksUUFBUSxDQUFDLFlBQTRCLENBQUMsVUFBVSxDQUFDO2dCQUMzRixJQUFJLENBQUMsMEJBQTBCLENBQUMsVUFBVSxHQUFHLGNBQWMsR0FBRyxnQkFBZ0IsR0FBRyxJQUFJLEVBQUUsU0FBUyxHQUFHLElBQUksQ0FBQyxDQUFDO2dCQUN6RyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQzVCO2lCQUFNO2dCQUNILElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDN0I7U0FDSjtJQUNMLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxLQUFpQjtRQUM5QixNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUNuRSxJQUFJLENBQUMsaUJBQWlCLEdBQUcsTUFBTSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFFOUIsSUFBSSx3QkFBd0IsR0FBRywrQkFBK0IsS0FBSyxHQUFHLHNCQUFzQixHQUFHLENBQUMsS0FBSyxDQUFDO1FBQ3RHLElBQUksTUFBTSxHQUFHLG9CQUFvQixFQUFFO1lBQy9CLHdCQUF3QixHQUFHLHdCQUF3QixHQUFHLHlCQUF5QixDQUFDO1lBQ2hGLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO1lBQ3ZELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO1NBQ3hEO1FBQ0QsSUFBSSxXQUFXLEdBQUcsQ0FBQyxDQUFDO1FBQ3BCLElBQUksWUFBWSxHQUFHLENBQUMsQ0FBQztRQUNyQiw4QkFBOEI7UUFDOUIsSUFBSSxLQUFLLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxRQUFRLENBQUMsZUFBZSxDQUFDLFlBQVksRUFBRTtZQUNoRixXQUFXLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDO1NBQ3hDO2FBQU07WUFDSCxXQUFXLEdBQUcsQ0FBQyxDQUFDO1NBQ25CO1FBRUQsOEJBQThCO1FBQzlCLElBQUksS0FBSyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxlQUFlLENBQUMsV0FBVyxFQUFFO1lBQ2xGLFlBQVksR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7U0FDeEM7YUFBTTtZQUNILFlBQVksR0FBRyxDQUFDLENBQUM7U0FDcEI7UUFDRCx3QkFBd0IsR0FBRyx3QkFBd0IsR0FBRyxRQUFRLENBQUMsV0FBVyxhQUFhLENBQUMsWUFBWSxLQUFLLENBQUM7UUFDMUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsd0JBQXdCLENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBRUQsd0JBQXdCO1FBQ3BCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLEdBQUcseUJBQXlCLENBQUM7UUFDL0QsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDbkQsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7SUFDNUMsQ0FBQztJQUVELGFBQWEsQ0FBQyxPQUFPLEdBQUcsSUFBSTtRQUN2QixJQUFJLENBQUMsYUFBYSxDQUFDLFVBQTBCLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO0lBQ3JHLENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzdCLENBQUM7OzZHQXhRUSxlQUFlO2lHQUFmLGVBQWUsb1FDdEM1QiwrUEFTQTs0RkQ2QmEsZUFBZTtrQkFQM0IsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsVUFBVTtvQkFDcEIsV0FBVyxFQUFFLHNCQUFzQjtvQkFDbkMsSUFBSSxFQUFFO3dCQUNGLEtBQUssRUFBRSxlQUFlO3FCQUN6QjtpQkFDSjs4S0FVWSxNQUFNO3NCQUFkLEtBQUs7Z0JBRUksVUFBVTtzQkFBbkIsTUFBTTtnQkFja0MsT0FBTztzQkFBL0MsU0FBUzt1QkFBQyxTQUFTLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbnB1dCxcbiAgICBOZ1pvbmUsXG4gICAgT25EZXN0cm95LFxuICAgIE91dHB1dCxcbiAgICBSZW5kZXJlcjIsXG4gICAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZnJvbUV2ZW50LCBtZXJnZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBFZGl0b3IsIE9wZXJhdGlvbiB9IGZyb20gJ3NsYXRlJztcbmltcG9ydCB7IEFuZ3VsYXJFZGl0b3IsIEVESVRPUl9UT19FTEVNRU5UIH0gZnJvbSAnc2xhdGUtYW5ndWxhcic7XG5pbXBvcnQgeyBEUk9QX1RIVU1CX0xJTkUgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgRHJhZ05vZGUsIEVsZW1lbnRPcHRpb25zSW5mbyB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgVGhlQ29udGV4dFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9jb250ZXh0LnNlcnZpY2UnO1xuaW1wb3J0IHsgY29lcmNlUGl4ZWxzRnJvbUNzc1ZhbHVlLCBmaW5kTm9kZUVudHJ5QnlQb2ludCB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2RvbSc7XG5pbXBvcnQgeyBnZXRDdXJyZW50VGFyZ2V0IH0gZnJvbSAnLi4vdXRpbHMvZ2V0LWN1cnJlbnQtdGFyZ2V0JztcbmltcG9ydCB7IGdldEhvdmVyRGlyZWN0aW9uIH0gZnJvbSAnLi4vdXRpbHMvZ2V0LWhvdmVyLWRpcmVjdGlvbic7XG5pbXBvcnQgeyBtb3ZlRHJhZ05vZGUgfSBmcm9tICcuLi91dGlscy9tb3ZlLWRyYWctbm9kZSc7XG5pbXBvcnQgeyBpc1ZhbGlkRHJhZyB9IGZyb20gJy4uL3V0aWxzL2lzLXZhbGlkLWRyYWcnO1xuXG5jb25zdCBTTkFQU0hPVF9QQURESU5HX1dJRFRIID0gNTtcbmNvbnN0IFNOQVBTSE9UX0xJTUlfSEVJR0hUID0gNzA7XG5jb25zdCBEUkFHX0lDT05fU0laRSA9IDI0O1xuY29uc3QgRFJBR19JQ09OX09GRlNFVCA9IDU7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnW3RoZURuZF0nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9kbmQuY29tcG9uZW50Lmh0bWwnLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICd0aGUtZHJhZy1kcm9wJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgVGhlRG5kQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgICBpc0RyYWdpbmcgPSBmYWxzZTtcblxuICAgIGRyYWdOb2RlOiBEcmFnTm9kZTtcblxuICAgIGRyYWdTbmFwc2hvdENvbnRlbnQ6IEhUTUxFbGVtZW50O1xuXG4gICAgcHJpdmF0ZSBkZXN0cm95JDogU3ViamVjdDxhbnk+ID0gbmV3IFN1YmplY3Q8YW55PigpO1xuXG4gICAgQElucHV0KCkgZWRpdG9yOiBFZGl0b3I7XG5cbiAgICBAT3V0cHV0KCkgZHJhZ0NoYW5nZTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgZHJhZ0VsZW1lbnQ6IEhUTUxFbGVtZW50O1xuXG4gICAgZHJhZ0VsZW1lbnRIZWlnaHQ6IG51bWJlcjtcblxuICAgIGRyYWdFbGVtZW50V2lkdGg6IG51bWJlcjtcblxuICAgIGlzU2Nyb2xsaW5nOiBib29sZWFuO1xuXG4gICAgZHJvcFRodW1iTGluZTogSFRNTEVsZW1lbnQ7XG5cbiAgICBlZGl0YWJsZVRvcDogbnVtYmVyO1xuXG4gICAgQFZpZXdDaGlsZCgnY29udGVudCcsIHsgc3RhdGljOiBmYWxzZSB9KSBjb250ZW50OiBFbGVtZW50UmVmO1xuXG4gICAgZ2V0IG5hdGl2ZUVsZW1lbnQoKTogSFRNTEVsZW1lbnQge1xuICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgZ2V0IGVkaXRhYmxlRWxlbWVudCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWRpdG9yICYmIEVESVRPUl9UT19FTEVNRU5ULmdldCh0aGlzLmVkaXRvcik7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLCBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge1xuICAgICAgICB0aGlzLmRyb3BUaHVtYkxpbmUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgdGhpcy5kcm9wVGh1bWJMaW5lLmNsYXNzTmFtZSA9IERST1BfVEhVTUJfTElORTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGNvbnRleHRTZXJ2aWNlID0gdGhpcy5lZGl0b3IuaW5qZWN0b3IuZ2V0KFRoZUNvbnRleHRTZXJ2aWNlKTtcbiAgICAgICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICAgICAgbWVyZ2UoZnJvbUV2ZW50PE1vdXNlRXZlbnQ+KHRoaXMuZWRpdGFibGVFbGVtZW50LCBgbW91c2Vtb3ZlYCksIGZyb21FdmVudDxNb3VzZUV2ZW50Pih0aGlzLmVkaXRhYmxlRWxlbWVudCwgYG1vdXNlbGVhdmVgKSlcbiAgICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLFxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXIoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICFjb250ZXh0U2VydmljZS5nZXRPcHRpb25zKCkudGhlT3B0aW9ucy5yZWFkb25seSAmJiBjb250ZXh0U2VydmljZS5nZXRPcHRpb25zKCkudGhlT3B0aW9ucy5kcmFnQW5kRHJvcDtcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZShlID0+IHRoaXMuc2V0RHJhZ0ljb24oZSkpO1xuICAgICAgICAgICAgZnJvbUV2ZW50PE1vdXNlRXZlbnQ+KGRvY3VtZW50LCBgZHJvcGApXG4gICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSxcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhY29udGV4dFNlcnZpY2UuZ2V0T3B0aW9ucygpLnRoZU9wdGlvbnMucmVhZG9ubHkgJiYgY29udGV4dFNlcnZpY2UuZ2V0T3B0aW9ucygpLnRoZU9wdGlvbnMuZHJhZ0FuZERyb3A7XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoZSA9PiB0aGlzLm9uRHJvcChlKSk7XG4gICAgICAgICAgICBmcm9tRXZlbnQ8TW91c2VFdmVudD4oZG9jdW1lbnQsIGBkcmFnb3ZlcmApXG4gICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSxcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhY29udGV4dFNlcnZpY2UuZ2V0T3B0aW9ucygpLnRoZU9wdGlvbnMucmVhZG9ubHkgJiYgY29udGV4dFNlcnZpY2UuZ2V0T3B0aW9ucygpLnRoZU9wdGlvbnMuZHJhZ0FuZERyb3A7XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoZSA9PiB0aGlzLm9uRHJhZ292ZXIoZSkpO1xuICAgICAgICAgICAgZnJvbUV2ZW50PE1vdXNlRXZlbnQ+KGRvY3VtZW50LCBgc2Nyb2xsYClcbiAgICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLFxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXIoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICFjb250ZXh0U2VydmljZS5nZXRPcHRpb25zKCkudGhlT3B0aW9ucy5yZWFkb25seSAmJiBjb250ZXh0U2VydmljZS5nZXRPcHRpb25zKCkudGhlT3B0aW9ucy5kcmFnQW5kRHJvcDtcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZShlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICBsZXQgc2Nyb2xsUG9zaXRpb24gPSB3aW5kb3cuc2Nyb2xsWTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLmlzU2Nyb2xsaW5nICYmIHRoaXMuaXNEcmFnaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5lZGl0YWJsZVRvcCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDmu5rliqjov4fnqIvkuK3vvIzpgJrov4forr7nva7niLbnuqflhYPntKDmnaXorr7nva5zbmFwc2hvdOS9jee9rlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZURuZENvbnRhaW5lclBvc2l0aW9uKG51bGwsIHNjcm9sbFBvc2l0aW9uICsgdGhpcy5lZGl0YWJsZVRvcCArICdweCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlzU2Nyb2xsaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXNTY3JvbGxpbmcgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnNldFZpc2liaWxpdHkoZmFsc2UpO1xuICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlSGFuZGxlKCk7XG4gICAgfVxuXG4gICAgdmFsdWVDaGFuZ2VIYW5kbGUoKSB7XG4gICAgICAgIGNvbnN0IHsgb25DaGFuZ2UgfSA9IHRoaXMuZWRpdG9yO1xuICAgICAgICB0aGlzLmVkaXRvci5vbkNoYW5nZSA9ICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG9wcyA9IHRoaXMuZWRpdG9yLm9wZXJhdGlvbnM7XG4gICAgICAgICAgICBjb25zdCBza2lwID0gb3BzLmxlbmd0aCA9PT0gMSAmJiBPcGVyYXRpb24uaXNTZWxlY3Rpb25PcGVyYXRpb24ob3BzWzBdKTtcbiAgICAgICAgICAgIGlmICghc2tpcCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0VmlzaWJpbGl0eShmYWxzZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvbkNoYW5nZSgpO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlRG5kQ29udGFpbmVyUG9zaXRpb24obGVmdDogc3RyaW5nLCB0b3A6IHN0cmluZykge1xuICAgICAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IHBhcmVudEVsZW1lbnQgPSBlbGVtZW50LnBhcmVudEVsZW1lbnQ7XG4gICAgICAgIHRvcCAmJiB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHBhcmVudEVsZW1lbnQsICd0b3AnLCB0b3ApO1xuICAgICAgICBsZWZ0ICYmIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUocGFyZW50RWxlbWVudCwgJ2xlZnQnLCBsZWZ0KTtcbiAgICB9XG5cbiAgICBnZXRFZGl0YWJsZVRvcChldmVudDogTW91c2VFdmVudCkge1xuICAgICAgICBjb25zdCBvZmZzZXRIZWlnaHQgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQub2Zmc2V0SGVpZ2h0O1xuICAgICAgICBjb25zdCB7IGhlaWdodCB9ID0gdGhpcy5lZGl0YWJsZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGlmIChldmVudC5jbGllbnRZIDwgdGhpcy5kcmFnRWxlbWVudEhlaWdodCkge1xuICAgICAgICAgICAgdGhpcy5lZGl0YWJsZVRvcCA9IC10aGlzLmVkaXRhYmxlRWxlbWVudC5vZmZzZXRUb3A7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGhlaWdodCA+IGV2ZW50LnBhZ2VZICYmIGV2ZW50LmNsaWVudFkgKyB0aGlzLmRyYWdFbGVtZW50SGVpZ2h0ID49IG9mZnNldEhlaWdodCkge1xuICAgICAgICAgICAgdGhpcy5lZGl0YWJsZVRvcCA9IGV2ZW50LmNsaWVudFkgLSB0aGlzLmVkaXRhYmxlRWxlbWVudC5vZmZzZXRUb3A7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5lZGl0YWJsZVRvcCA9IG51bGw7XG4gICAgfVxuXG4gICAgb25EcmFnU3RhcnQoZXZlbnQ6IERyYWdFdmVudCkge1xuICAgICAgICB0aGlzLmlzRHJhZ2luZyA9IHRydWU7XG4gICAgICAgIHRoaXMuZHJhZ0NoYW5nZS5lbWl0KHRoaXMuaXNEcmFnaW5nKTtcbiAgICAgICAgdGhpcy5kcmFnU25hcHNob3RDb250ZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmRyYWctc25hcHNob3QtY29udGFpbmVyJykgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIHRoaXMuZHJhZ1NuYXBzaG90Q29udGVudC5jbGFzc05hbWUgPSAndGhlLWVkaXRvci10eXBvIGRyYWctc25hcHNob3QtY29udGFpbmVyJztcbiAgICAgICAgdGhpcy5kcmFnU25hcHNob3RDb250ZW50LmFwcGVuZENoaWxkKHRoaXMuZHJhZ0VsZW1lbnQuY2xvbmVOb2RlKHRydWUpKTtcbiAgICAgICAgdGhpcy5kcmFnRWxlbWVudC5zdHlsZS5vcGFjaXR5ID0gJzAuMyc7XG4gICAgfVxuXG4gICAgb25EcmFnRW5kKGV2ZW50OiBEcmFnRXZlbnQpIHtcbiAgICAgICAgdGhpcy5kcmFnRWxlbWVudC5zdHlsZS5vcGFjaXR5ID0gJyc7XG4gICAgICAgIHRoaXMuaXNEcmFnaW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2V0VmlzaWJpbGl0eShmYWxzZSk7XG4gICAgICAgIHRoaXMucmVzZXREcmFnU25hcHNob3RDb250ZW50KCk7XG4gICAgICAgIHRoaXMuZHJhZ0NoYW5nZS5lbWl0KHRoaXMuaXNEcmFnaW5nKTtcbiAgICB9XG5cbiAgICBvbkRyb3AoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgaWYgKHRoaXMuaXNEcmFnaW5nKSB7XG4gICAgICAgICAgICBtb3ZlRHJhZ05vZGUodGhpcy5lZGl0b3IsIHRoaXMuZHJhZ05vZGUsIGV2ZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uRHJhZ292ZXIoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgaWYgKHRoaXMuaXNEcmFnaW5nICYmICF0aGlzLmlzU2Nyb2xsaW5nKSB7XG4gICAgICAgICAgICB0aGlzLmdldEVkaXRhYmxlVG9wKGV2ZW50KTtcbiAgICAgICAgICAgIGNvbnN0IG9mZnNldFdpZHRoID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50Lm9mZnNldFdpZHRoO1xuICAgICAgICAgICAgY29uc3QgeyBsZWZ0OiBlZGl0b3JMZWZ0LCB0b3A6IGVkaXRvclRvcCwgaGVpZ2h0IH0gPSB0aGlzLmVkaXRhYmxlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgICAgIGxldCB0b3AgPSAwO1xuICAgICAgICAgICAgbGV0IGxlZnQgPSAwO1xuXG4gICAgICAgICAgICBpZiAoZWRpdG9yTGVmdCA+IDApIHtcbiAgICAgICAgICAgICAgICBpZiAoZXZlbnQuY2xpZW50WCArIHRoaXMuZHJhZ0VsZW1lbnRXaWR0aCAvIDIgPiBvZmZzZXRXaWR0aCkge1xuICAgICAgICAgICAgICAgICAgICBsZWZ0ID0gZXZlbnQucGFnZVggLSBlZGl0b3JMZWZ0IC0gKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50KS5vZmZzZXRXaWR0aDtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBsZWZ0ID0gTWF0aC5tYXgoZXZlbnQucGFnZVggLSBlZGl0b3JMZWZ0LCAtZWRpdG9yTGVmdCkgKyAxMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBwYWRkaW5nVG9wID0gMDsgLy8gcGFkZGluZ1RvcDog57yW6L6R5Zmo6Led56a76aG26YOo55qE6Led56a7XG4gICAgICAgICAgICBpZiAoZWRpdG9yVG9wID49IDApIHtcbiAgICAgICAgICAgICAgICAvLyDml6Dmu5rliqjmg4XlhrXkuItcbiAgICAgICAgICAgICAgICB0b3AgPSBldmVudC5jbGllbnRZIC0gdGhpcy5lZGl0YWJsZUVsZW1lbnQub2Zmc2V0VG9wO1xuICAgICAgICAgICAgICAgIHBhZGRpbmdUb3AgPSBlZGl0b3JUb3AgLSB0aGlzLmVkaXRhYmxlRWxlbWVudC5vZmZzZXRUb3A7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIOaciea7muWKqOi3neemu1xuICAgICAgICAgICAgICAgIHRvcCA9IE1hdGguYWJzKGVkaXRvclRvcCkgKyBldmVudC5jbGllbnRZOyAvLyDmu5rliqjot53nprsgKyDpvKDmoIdjbGllbnRZXG4gICAgICAgICAgICAgICAgcGFkZGluZ1RvcCA9IGV2ZW50LnBhZ2VZIC0gdGhpcy5lZGl0YWJsZUVsZW1lbnQub2Zmc2V0VG9wIC0gdG9wO1xuICAgICAgICAgICAgICAgIC8vIOmYsuatouW6lemDqOWHuueOsOa7muWKqOadoVxuICAgICAgICAgICAgICAgIGlmIChwYWRkaW5nVG9wIDwgaGVpZ2h0IC0gdG9wKSB7XG4gICAgICAgICAgICAgICAgICAgIHRvcCA9IHRvcCArIHBhZGRpbmdUb3A7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy51cGRhdGVEbmRDb250YWluZXJQb3NpdGlvbihsZWZ0ICsgJ3B4JywgdG9wICsgJ3B4Jyk7XG4gICAgICAgICAgICB0aGlzLnNldFNuYXBzaG90U3R5bGUoZXZlbnQpO1xuICAgICAgICAgICAgdGhpcy5zZXREcm9wVGh1bWJMaW5lKGV2ZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNldERyb3BUaHVtYkxpbmUoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgbGV0IGVsZW1lbnQgPSBnZXRDdXJyZW50VGFyZ2V0KHRoaXMuZWRpdG9yLCBldmVudCk7XG4gICAgICAgIGNvbnN0IGRpcmVjdGlvbiA9IGdldEhvdmVyRGlyZWN0aW9uKHRoaXMuZWRpdG9yLCBldmVudCk7XG4gICAgICAgIGlmIChlbGVtZW50KSB7XG4gICAgICAgICAgICBpZiAoZGlyZWN0aW9uICYmIGRpcmVjdGlvbiA9PT0gJ3RvcCcpIHtcbiAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5wcmV2aW91c0VsZW1lbnRTaWJsaW5nPy5xdWVyeVNlbGVjdG9yKCdbZGF0YS1zbGF0ZS1ub2RlPVwiZWxlbWVudFwiXScpIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGVsZW1lbnQgJiYgaXNWYWxpZERyYWcodGhpcy5lZGl0b3IsIHRoaXMuZHJhZ05vZGUubm9kZSwgZWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICBlbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuZHJvcFRodW1iTGluZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzZXREcmFnSWNvbihldmVudDogTW91c2VFdmVudCkge1xuICAgICAgICBpZiAoIXRoaXMuaXNEcmFnaW5nKSB7XG4gICAgICAgICAgICBjb25zdCBub2RlRW50cnkgPSBmaW5kTm9kZUVudHJ5QnlQb2ludCh0aGlzLmVkaXRvciwgZXZlbnQueCwgZXZlbnQueSwgJ2hpZ2hlc3QnKTtcbiAgICAgICAgICAgIGlmIChub2RlRW50cnkgJiYgIUVkaXRvci5pc0VtcHR5KHRoaXMuZWRpdG9yLCBub2RlRW50cnlbMF0pKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgcm9vdE5vZGUgPSBBbmd1bGFyRWRpdG9yLnRvRE9NTm9kZSh0aGlzLmVkaXRvciwgbm9kZUVudHJ5WzBdKTtcbiAgICAgICAgICAgICAgICB0aGlzLmRyYWdOb2RlID0ge1xuICAgICAgICAgICAgICAgICAgICBub2RlOiBub2RlRW50cnlbMF0sXG4gICAgICAgICAgICAgICAgICAgIHBhdGg6IG5vZGVFbnRyeVsxXVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgdGhpcy5kcmFnRWxlbWVudCA9IHJvb3ROb2RlO1xuICAgICAgICAgICAgICAgIGxldCBsaW5lSGVpZ2h0ID0gY29lcmNlUGl4ZWxzRnJvbUNzc1ZhbHVlKHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHJvb3ROb2RlKVsnbGluZUhlaWdodCddKTtcbiAgICAgICAgICAgICAgICBjb25zdCBvZmZzZXRUb3AgPSByb290Tm9kZS5vZmZzZXRUb3AgKyAocm9vdE5vZGUub2Zmc2V0UGFyZW50IGFzIEhUTUxFbGVtZW50KS5vZmZzZXRUb3AgKyAobGluZUhlaWdodCAtIERSQUdfSUNPTl9TSVpFKSAvIDI7XG4gICAgICAgICAgICAgICAgY29uc3Qgb2Zmc2V0TGVmdCA9IHJvb3ROb2RlLm9mZnNldExlZnQgKyAocm9vdE5vZGUub2Zmc2V0UGFyZW50IGFzIEhUTUxFbGVtZW50KS5vZmZzZXRMZWZ0O1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlRG5kQ29udGFpbmVyUG9zaXRpb24ob2Zmc2V0TGVmdCAtIERSQUdfSUNPTl9TSVpFIC0gRFJBR19JQ09OX09GRlNFVCArICdweCcsIG9mZnNldFRvcCArICdweCcpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0VmlzaWJpbGl0eSh0cnVlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRWaXNpYmlsaXR5KGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNldFNuYXBzaG90U3R5bGUoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgY29uc3QgeyB3aWR0aCwgaGVpZ2h0IH0gPSB0aGlzLmRyYWdFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICB0aGlzLmRyYWdFbGVtZW50SGVpZ2h0ID0gaGVpZ2h0O1xuICAgICAgICB0aGlzLmRyYWdFbGVtZW50V2lkdGggPSB3aWR0aDtcblxuICAgICAgICBsZXQgZHJhZ1NuYXBzaG90Q29udGVudFN0eWxlID0gYHZpc2liaWxpdHk6IHZpc2libGU7IHdpZHRoOiAke3dpZHRoICsgU05BUFNIT1RfUEFERElOR19XSURUSCAqIDJ9cHg7YDtcbiAgICAgICAgaWYgKGhlaWdodCA+IFNOQVBTSE9UX0xJTUlfSEVJR0hUKSB7XG4gICAgICAgICAgICBkcmFnU25hcHNob3RDb250ZW50U3R5bGUgPSBkcmFnU25hcHNob3RDb250ZW50U3R5bGUgKyAndHJhbnNmb3JtOiBzY2FsZSgwLjQ1KTsnO1xuICAgICAgICAgICAgdGhpcy5kcmFnRWxlbWVudEhlaWdodCA9IHRoaXMuZHJhZ0VsZW1lbnRIZWlnaHQgKiAwLjQ1O1xuICAgICAgICAgICAgdGhpcy5kcmFnRWxlbWVudFdpZHRoID0gdGhpcy5kcmFnRWxlbWVudFdpZHRoICogMC40NTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgc25hcHNob3RUb3AgPSAwO1xuICAgICAgICBsZXQgc25hcHNob3RMZWZ0ID0gMDtcbiAgICAgICAgLy8g5LiK5LiL56e75Yqo77ya6LaF5Ye65bGP5bmV6auY5bqm77yM6YeN5paw6K6+572uc25hcHNob3TnmoTkvY3nva5cbiAgICAgICAgaWYgKGV2ZW50LmNsaWVudFkgKyB0aGlzLmRyYWdFbGVtZW50SGVpZ2h0ID4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50Lm9mZnNldEhlaWdodCkge1xuICAgICAgICAgICAgc25hcHNob3RUb3AgPSB0aGlzLmRyYWdFbGVtZW50SGVpZ2h0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc25hcHNob3RUb3AgPSAwO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8g5bem5Y+z56e75Yqo77ya6LaF5Ye65bGP5bmV5a695bqm77yM6YeN5paw6K6+572uc25hcHNob3TnmoTkvY3nva5cbiAgICAgICAgaWYgKGV2ZW50LmNsaWVudFggKyB0aGlzLmRyYWdFbGVtZW50V2lkdGggLyAyID4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50Lm9mZnNldFdpZHRoKSB7XG4gICAgICAgICAgICBzbmFwc2hvdExlZnQgPSB0aGlzLmRyYWdFbGVtZW50V2lkdGg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzbmFwc2hvdExlZnQgPSAwO1xuICAgICAgICB9XG4gICAgICAgIGRyYWdTbmFwc2hvdENvbnRlbnRTdHlsZSA9IGRyYWdTbmFwc2hvdENvbnRlbnRTdHlsZSArIGB0b3A6ICR7LXNuYXBzaG90VG9wfXB4OyBsZWZ0OiAkey1zbmFwc2hvdExlZnR9cHg7YDtcbiAgICAgICAgdGhpcy5kcmFnU25hcHNob3RDb250ZW50LnNldEF0dHJpYnV0ZSgnc3R5bGUnLCBkcmFnU25hcHNob3RDb250ZW50U3R5bGUpO1xuICAgIH1cblxuICAgIHJlc2V0RHJhZ1NuYXBzaG90Q29udGVudCgpIHtcbiAgICAgICAgdGhpcy5kcmFnU25hcHNob3RDb250ZW50LmNsYXNzTmFtZSA9ICdkcmFnLXNuYXBzaG90LWNvbnRhaW5lcic7XG4gICAgICAgIHRoaXMuZHJhZ1NuYXBzaG90Q29udGVudC5zZXRBdHRyaWJ1dGUoJ3N0eWxlJywgJycpO1xuICAgICAgICB0aGlzLmRyYWdTbmFwc2hvdENvbnRlbnQuaW5uZXJIVE1MID0gJyc7XG4gICAgfVxuXG4gICAgc2V0VmlzaWJpbGl0eSh2aXNpYmxlID0gdHJ1ZSkge1xuICAgICAgICAodGhpcy5uYXRpdmVFbGVtZW50LnBhcmVudE5vZGUgYXMgSFRNTEVsZW1lbnQpLnN0eWxlLnZpc2liaWxpdHkgPSB2aXNpYmxlID8gJ3Zpc2libGUnIDogJ2hpZGRlbic7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgfVxufVxuIiwiPGRpdlxuICAgIGRyYWdnYWJsZT1cInRydWVcIlxuICAgIGNsYXNzPVwidGhlLWRyYWctZHJvcC1pY29uXCJcbiAgICBbbmdTdHlsZV09XCJ7IG9wYWNpdHk6IGlzRHJhZ2luZyA/IDAgOiAnJyB9XCJcbiAgICAoZHJhZ3N0YXJ0KT1cIm9uRHJhZ1N0YXJ0KCRldmVudClcIlxuICAgIChkcmFnZW5kKT1cIm9uRHJhZ0VuZCgkZXZlbnQpXCJcbj5cbiAgICA8dGh5LWljb24gdGh5SWNvbk5hbWU9XCJkcmFnXCI+IDwvdGh5LWljb24+XG48L2Rpdj5cbiJdfQ==
@@ -1,19 +0,0 @@
1
- import { coercePixelsFromCssValue, findNodeEntryByPoint } from '../../../utils/dom';
2
- import { TheEditor } from '../../../interfaces';
3
- import { EDITOR_TO_ELEMENT } from 'slate-angular';
4
- export const getCurrentTarget = (editor, event) => {
5
- const editorElement = EDITOR_TO_ELEMENT.get(editor);
6
- const { left, right } = editorElement.getBoundingClientRect();
7
- let { paddingLeft, paddingRight } = window.getComputedStyle(editorElement, null);
8
- const paddingLeftPixels = coercePixelsFromCssValue(paddingLeft);
9
- const paddingRightPixels = coercePixelsFromCssValue(paddingRight);
10
- let x = event.x;
11
- if (event.x <= left + paddingLeftPixels || event.x >= right - paddingRightPixels) {
12
- x = left + paddingLeftPixels;
13
- }
14
- const nodeEntry = findNodeEntryByPoint(editor, x, event.y);
15
- if (nodeEntry) {
16
- return TheEditor.toDOMNode(editor, nodeEntry[0]);
17
- }
18
- };
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LWN1cnJlbnQtdGFyZ2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3JjL3BsdWdpbnMvZG5kL3V0aWxzL2dldC1jdXJyZW50LXRhcmdldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNwRixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWxELE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLENBQUMsTUFBaUIsRUFBRSxLQUFpQixFQUFlLEVBQUU7SUFDbEYsTUFBTSxhQUFhLEdBQUcsaUJBQWlCLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBZ0IsQ0FBQztJQUNuRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLGFBQWEsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO0lBQzlELElBQUksRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNqRixNQUFNLGlCQUFpQixHQUFHLHdCQUF3QixDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ2hFLE1BQU0sa0JBQWtCLEdBQUcsd0JBQXdCLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDbEUsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNoQixJQUFJLEtBQUssQ0FBQyxDQUFDLElBQUksSUFBSSxHQUFHLGlCQUFpQixJQUFJLEtBQUssQ0FBQyxDQUFDLElBQUksS0FBSyxHQUFHLGtCQUFrQixFQUFFO1FBQzlFLENBQUMsR0FBRyxJQUFJLEdBQUcsaUJBQWlCLENBQUM7S0FDaEM7SUFDRCxNQUFNLFNBQVMsR0FBRyxvQkFBb0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzRCxJQUFJLFNBQVMsRUFBRTtRQUNYLE9BQU8sU0FBUyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDcEQ7QUFDTCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb2VyY2VQaXhlbHNGcm9tQ3NzVmFsdWUsIGZpbmROb2RlRW50cnlCeVBvaW50IH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvZG9tJztcbmltcG9ydCB7IFRoZUVkaXRvciB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgRURJVE9SX1RPX0VMRU1FTlQgfSBmcm9tICdzbGF0ZS1hbmd1bGFyJztcblxuZXhwb3J0IGNvbnN0IGdldEN1cnJlbnRUYXJnZXQgPSAoZWRpdG9yOiBUaGVFZGl0b3IsIGV2ZW50OiBNb3VzZUV2ZW50KTogSFRNTEVsZW1lbnQgPT4ge1xuICAgIGNvbnN0IGVkaXRvckVsZW1lbnQgPSBFRElUT1JfVE9fRUxFTUVOVC5nZXQoZWRpdG9yKSBhcyBIVE1MRWxlbWVudDtcbiAgICBjb25zdCB7IGxlZnQsIHJpZ2h0IH0gPSBlZGl0b3JFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGxldCB7IHBhZGRpbmdMZWZ0LCBwYWRkaW5nUmlnaHQgfSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGVkaXRvckVsZW1lbnQsIG51bGwpO1xuICAgIGNvbnN0IHBhZGRpbmdMZWZ0UGl4ZWxzID0gY29lcmNlUGl4ZWxzRnJvbUNzc1ZhbHVlKHBhZGRpbmdMZWZ0KTtcbiAgICBjb25zdCBwYWRkaW5nUmlnaHRQaXhlbHMgPSBjb2VyY2VQaXhlbHNGcm9tQ3NzVmFsdWUocGFkZGluZ1JpZ2h0KTtcbiAgICBsZXQgeCA9IGV2ZW50Lng7XG4gICAgaWYgKGV2ZW50LnggPD0gbGVmdCArIHBhZGRpbmdMZWZ0UGl4ZWxzIHx8IGV2ZW50LnggPj0gcmlnaHQgLSBwYWRkaW5nUmlnaHRQaXhlbHMpIHtcbiAgICAgICAgeCA9IGxlZnQgKyBwYWRkaW5nTGVmdFBpeGVscztcbiAgICB9XG4gICAgY29uc3Qgbm9kZUVudHJ5ID0gZmluZE5vZGVFbnRyeUJ5UG9pbnQoZWRpdG9yLCB4LCBldmVudC55KTtcbiAgICBpZiAobm9kZUVudHJ5KSB7XG4gICAgICAgIHJldHVybiBUaGVFZGl0b3IudG9ET01Ob2RlKGVkaXRvciwgbm9kZUVudHJ5WzBdKTtcbiAgICB9XG59O1xuIl19
@@ -1,13 +0,0 @@
1
- import { getCurrentTarget } from './get-current-target';
2
- export const getHoverDirection = (editor, event) => {
3
- const rootNode = getCurrentTarget(editor, event);
4
- if (rootNode) {
5
- const { top, bottom } = rootNode.getBoundingClientRect();
6
- const middleHeight = (bottom - top) / 2;
7
- if (top + middleHeight > event.clientY) {
8
- return 'top';
9
- }
10
- return 'bottom';
11
- }
12
- };
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LWhvdmVyLWRpcmVjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3NyYy9wbHVnaW5zL2RuZC91dGlscy9nZXQtaG92ZXItZGlyZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXhELE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLENBQUMsTUFBaUIsRUFBRSxLQUFpQixFQUFpQixFQUFFO0lBQ3JGLE1BQU0sUUFBUSxHQUFHLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNqRCxJQUFJLFFBQVEsRUFBRTtRQUNWLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsUUFBUSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDekQsTUFBTSxZQUFZLEdBQUcsQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3hDLElBQUksR0FBRyxHQUFHLFlBQVksR0FBRyxLQUFLLENBQUMsT0FBTyxFQUFFO1lBQ3BDLE9BQU8sS0FBSyxDQUFDO1NBQ2hCO1FBQ0QsT0FBTyxRQUFRLENBQUM7S0FDbkI7QUFDTCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUaGVFZGl0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IERyb3BEaXJlY3Rpb24gfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgZ2V0Q3VycmVudFRhcmdldCB9IGZyb20gJy4vZ2V0LWN1cnJlbnQtdGFyZ2V0JztcblxuZXhwb3J0IGNvbnN0IGdldEhvdmVyRGlyZWN0aW9uID0gKGVkaXRvcjogVGhlRWRpdG9yLCBldmVudDogTW91c2VFdmVudCk6IERyb3BEaXJlY3Rpb24gPT4ge1xuICAgIGNvbnN0IHJvb3ROb2RlID0gZ2V0Q3VycmVudFRhcmdldChlZGl0b3IsIGV2ZW50KTtcbiAgICBpZiAocm9vdE5vZGUpIHtcbiAgICAgICAgY29uc3QgeyB0b3AsIGJvdHRvbSB9ID0gcm9vdE5vZGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGNvbnN0IG1pZGRsZUhlaWdodCA9IChib3R0b20gLSB0b3ApIC8gMjtcbiAgICAgICAgaWYgKHRvcCArIG1pZGRsZUhlaWdodCA+IGV2ZW50LmNsaWVudFkpIHtcbiAgICAgICAgICAgIHJldHVybiAndG9wJztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gJ2JvdHRvbSc7XG4gICAgfVxufTtcbiJdfQ==
@@ -1,38 +0,0 @@
1
- import { Editor } from 'slate';
2
- import { DefaultElementOptions, TheEditor } from '../../../interfaces';
3
- import { mergeElementOptions } from '../../../utils/merge-element-options';
4
- export const isValidDrag = (editor, dragNode, currentTarget) => {
5
- var _a;
6
- const node = TheEditor.toSlateNode(editor, currentTarget);
7
- const dropPath = TheEditor.findPath(editor, node);
8
- const dragPath = TheEditor.findPath(editor, dragNode);
9
- if (dragPath[0] === dropPath[0] && dropPath.length > 1) {
10
- // 阻止list元素拖入自身
11
- return false;
12
- }
13
- let allElementOptions = DefaultElementOptions;
14
- if ((_a = editor.extraElementOptions) === null || _a === void 0 ? void 0 : _a.length) {
15
- const extraInfo = mergeElementOptions(editor.extraElementOptions);
16
- allElementOptions = Object.values(extraInfo);
17
- }
18
- const types = allElementOptions.map(item => item.type);
19
- if (types.indexOf(node.type) > -1 && allElementOptions[types.indexOf(node.type)].isSecondaryContainer) {
20
- // 阻止向table-celld等二级容器中拖入
21
- return false;
22
- }
23
- let containerParent = Editor.above(editor, {
24
- at: dropPath,
25
- mode: 'lowest',
26
- match: (node) => {
27
- return node && node.type && types.includes(node.type);
28
- }
29
- });
30
- if (containerParent) {
31
- const { inValidChildrenTypes } = allElementOptions.find(item => item.type === containerParent[0].type);
32
- if (inValidChildrenTypes.includes(dragNode.type)) {
33
- return false;
34
- }
35
- }
36
- return true;
37
- };
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXMtdmFsaWQtZHJhZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3NyYy9wbHVnaW5zL2RuZC91dGlscy9pcy12YWxpZC1kcmFnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFFL0IsT0FBTyxFQUFFLHFCQUFxQixFQUFFLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBRTNFLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxDQUFDLE1BQWlCLEVBQUUsUUFBdUIsRUFBRSxhQUEwQixFQUFFLEVBQUU7O0lBQ2xHLE1BQU0sSUFBSSxHQUFHLFNBQVMsQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLGFBQWEsQ0FBa0IsQ0FBQztJQUMzRSxNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNsRCxNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztJQUN0RCxJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7UUFDcEQsZUFBZTtRQUNmLE9BQU8sS0FBSyxDQUFDO0tBQ2hCO0lBQ0QsSUFBSSxpQkFBaUIsR0FBRyxxQkFBcUIsQ0FBQztJQUM5QyxJQUFJLE1BQUEsTUFBTSxDQUFDLG1CQUFtQiwwQ0FBRSxNQUFNLEVBQUU7UUFDcEMsTUFBTSxTQUFTLEdBQUcsbUJBQW1CLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDbEUsaUJBQWlCLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztLQUNoRDtJQUNELE1BQU0sS0FBSyxHQUFHLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN2RCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsb0JBQW9CLEVBQUU7UUFDbkcseUJBQXlCO1FBQ3pCLE9BQU8sS0FBSyxDQUFDO0tBQ2hCO0lBQ0QsSUFBSSxlQUFlLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUU7UUFDdkMsRUFBRSxFQUFFLFFBQVE7UUFDWixJQUFJLEVBQUUsUUFBUTtRQUNkLEtBQUssRUFBRSxDQUFDLElBQW1CLEVBQUUsRUFBRTtZQUMzQixPQUFPLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFELENBQUM7S0FDSixDQUFDLENBQUM7SUFFSCxJQUFJLGVBQWUsRUFBRTtRQUNqQixNQUFNLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2RyxJQUFJLG9CQUFvQixDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDOUMsT0FBTyxLQUFLLENBQUM7U0FDaEI7S0FDSjtJQUNELE9BQU8sSUFBSSxDQUFDO0FBQ2hCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVkaXRvciB9IGZyb20gJ3NsYXRlJztcbmltcG9ydCB7IEN1c3RvbUVsZW1lbnQgfSBmcm9tICcuLi8uLi8uLi9jdXN0b20tdHlwZXMnO1xuaW1wb3J0IHsgRGVmYXVsdEVsZW1lbnRPcHRpb25zLCBUaGVFZGl0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IG1lcmdlRWxlbWVudE9wdGlvbnMgfSBmcm9tICcuLi8uLi8uLi91dGlscy9tZXJnZS1lbGVtZW50LW9wdGlvbnMnO1xuXG5leHBvcnQgY29uc3QgaXNWYWxpZERyYWcgPSAoZWRpdG9yOiBUaGVFZGl0b3IsIGRyYWdOb2RlOiBDdXN0b21FbGVtZW50LCBjdXJyZW50VGFyZ2V0OiBIVE1MRWxlbWVudCkgPT4ge1xuICAgIGNvbnN0IG5vZGUgPSBUaGVFZGl0b3IudG9TbGF0ZU5vZGUoZWRpdG9yLCBjdXJyZW50VGFyZ2V0KSBhcyBDdXN0b21FbGVtZW50O1xuICAgIGNvbnN0IGRyb3BQYXRoID0gVGhlRWRpdG9yLmZpbmRQYXRoKGVkaXRvciwgbm9kZSk7XG4gICAgY29uc3QgZHJhZ1BhdGggPSBUaGVFZGl0b3IuZmluZFBhdGgoZWRpdG9yLCBkcmFnTm9kZSk7XG4gICAgaWYgKGRyYWdQYXRoWzBdID09PSBkcm9wUGF0aFswXSAmJiBkcm9wUGF0aC5sZW5ndGggPiAxKSB7XG4gICAgICAgIC8vIOmYu+atomxpc3TlhYPntKDmi5blhaXoh6rouqtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBsZXQgYWxsRWxlbWVudE9wdGlvbnMgPSBEZWZhdWx0RWxlbWVudE9wdGlvbnM7XG4gICAgaWYgKGVkaXRvci5leHRyYUVsZW1lbnRPcHRpb25zPy5sZW5ndGgpIHtcbiAgICAgICAgY29uc3QgZXh0cmFJbmZvID0gbWVyZ2VFbGVtZW50T3B0aW9ucyhlZGl0b3IuZXh0cmFFbGVtZW50T3B0aW9ucyk7XG4gICAgICAgIGFsbEVsZW1lbnRPcHRpb25zID0gT2JqZWN0LnZhbHVlcyhleHRyYUluZm8pO1xuICAgIH1cbiAgICBjb25zdCB0eXBlcyA9IGFsbEVsZW1lbnRPcHRpb25zLm1hcChpdGVtID0+IGl0ZW0udHlwZSk7XG4gICAgaWYgKHR5cGVzLmluZGV4T2Yobm9kZS50eXBlKSA+IC0xICYmIGFsbEVsZW1lbnRPcHRpb25zW3R5cGVzLmluZGV4T2Yobm9kZS50eXBlKV0uaXNTZWNvbmRhcnlDb250YWluZXIpIHtcbiAgICAgICAgLy8g6Zi75q2i5ZCRdGFibGUtY2VsbGTnrYnkuoznuqflrrnlmajkuK3mi5blhaVcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBsZXQgY29udGFpbmVyUGFyZW50ID0gRWRpdG9yLmFib3ZlKGVkaXRvciwge1xuICAgICAgICBhdDogZHJvcFBhdGgsXG4gICAgICAgIG1vZGU6ICdsb3dlc3QnLFxuICAgICAgICBtYXRjaDogKG5vZGU6IEN1c3RvbUVsZW1lbnQpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBub2RlICYmIG5vZGUudHlwZSAmJiB0eXBlcy5pbmNsdWRlcyhub2RlLnR5cGUpO1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAoY29udGFpbmVyUGFyZW50KSB7XG4gICAgICAgIGNvbnN0IHsgaW5WYWxpZENoaWxkcmVuVHlwZXMgfSA9IGFsbEVsZW1lbnRPcHRpb25zLmZpbmQoaXRlbSA9PiBpdGVtLnR5cGUgPT09IGNvbnRhaW5lclBhcmVudFswXS50eXBlKTtcbiAgICAgICAgaWYgKGluVmFsaWRDaGlsZHJlblR5cGVzLmluY2x1ZGVzKGRyYWdOb2RlLnR5cGUpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG59O1xuIl19
@@ -1,30 +0,0 @@
1
- import { TheEditor } from '../../../interfaces';
2
- import { Path, Editor, Transforms } from 'slate';
3
- import { removeDropThumbLine } from './remove-drop-thumb-line';
4
- import { EDITOR_TO_ELEMENT } from 'slate-angular';
5
- import { DROP_THUMB_LINE } from '../../../constants';
6
- export const moveDragNode = (editor, dragNode, event) => {
7
- event.stopPropagation();
8
- const element = EDITOR_TO_ELEMENT.get(editor);
9
- const dropThumbLine = element.querySelector('.' + DROP_THUMB_LINE);
10
- const parentElement = dropThumbLine && dropThumbLine.parentNode;
11
- if (parentElement) {
12
- const node = TheEditor.toSlateNode(editor, parentElement);
13
- let dropPath = node && TheEditor.findPath(editor, node);
14
- if (dropPath.length) {
15
- const dragPath = dragNode.path;
16
- const before = Path.isBefore(dragPath, dropPath) && Path.isSibling(dragPath, dropPath);
17
- dropPath = before ? dropPath : Path.next(dropPath);
18
- if (dropPath.length) {
19
- Editor.withoutNormalizing(editor, () => {
20
- Transforms.moveNodes(editor, {
21
- at: dragPath,
22
- to: dropPath
23
- });
24
- });
25
- }
26
- }
27
- }
28
- removeDropThumbLine(editor);
29
- };
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW92ZS1kcmFnLW5vZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvcGx1Z2lucy9kbmQvdXRpbHMvbW92ZS1kcmFnLW5vZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFZLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzFELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUNqRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXJELE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxDQUFDLE1BQWlCLEVBQUUsUUFBa0IsRUFBRSxLQUFpQixFQUFFLEVBQUU7SUFDckYsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ3hCLE1BQU0sT0FBTyxHQUFHLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM5QyxNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUMsYUFBYSxDQUFDLEdBQUcsR0FBRyxlQUFlLENBQUMsQ0FBQztJQUNuRSxNQUFNLGFBQWEsR0FBRyxhQUFhLElBQUksYUFBYSxDQUFDLFVBQVUsQ0FBQztJQUNoRSxJQUFJLGFBQWEsRUFBRTtRQUNmLE1BQU0sSUFBSSxHQUFHLFNBQVMsQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQzFELElBQUksUUFBUSxHQUFHLElBQUksSUFBSSxTQUFTLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN4RCxJQUFJLFFBQVEsQ0FBQyxNQUFNLEVBQUU7WUFDakIsTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQztZQUMvQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztZQUN2RixRQUFRLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDbkQsSUFBSSxRQUFRLENBQUMsTUFBTSxFQUFFO2dCQUNqQixNQUFNLENBQUMsa0JBQWtCLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRTtvQkFDbkMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUU7d0JBQ3pCLEVBQUUsRUFBRSxRQUFRO3dCQUNaLEVBQUUsRUFBRSxRQUFRO3FCQUNmLENBQUMsQ0FBQztnQkFDUCxDQUFDLENBQUMsQ0FBQzthQUNOO1NBQ0o7S0FDSjtJQUVELG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ2hDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERyYWdOb2RlLCBUaGVFZGl0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IFBhdGgsIEVkaXRvciwgVHJhbnNmb3JtcyB9IGZyb20gJ3NsYXRlJztcbmltcG9ydCB7IHJlbW92ZURyb3BUaHVtYkxpbmUgfSBmcm9tICcuL3JlbW92ZS1kcm9wLXRodW1iLWxpbmUnO1xuaW1wb3J0IHsgRURJVE9SX1RPX0VMRU1FTlQgfSBmcm9tICdzbGF0ZS1hbmd1bGFyJztcbmltcG9ydCB7IERST1BfVEhVTUJfTElORSB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cyc7XG5cbmV4cG9ydCBjb25zdCBtb3ZlRHJhZ05vZGUgPSAoZWRpdG9yOiBUaGVFZGl0b3IsIGRyYWdOb2RlOiBEcmFnTm9kZSwgZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBjb25zdCBlbGVtZW50ID0gRURJVE9SX1RPX0VMRU1FTlQuZ2V0KGVkaXRvcik7XG4gICAgY29uc3QgZHJvcFRodW1iTGluZSA9IGVsZW1lbnQucXVlcnlTZWxlY3RvcignLicgKyBEUk9QX1RIVU1CX0xJTkUpO1xuICAgIGNvbnN0IHBhcmVudEVsZW1lbnQgPSBkcm9wVGh1bWJMaW5lICYmIGRyb3BUaHVtYkxpbmUucGFyZW50Tm9kZTtcbiAgICBpZiAocGFyZW50RWxlbWVudCkge1xuICAgICAgICBjb25zdCBub2RlID0gVGhlRWRpdG9yLnRvU2xhdGVOb2RlKGVkaXRvciwgcGFyZW50RWxlbWVudCk7XG4gICAgICAgIGxldCBkcm9wUGF0aCA9IG5vZGUgJiYgVGhlRWRpdG9yLmZpbmRQYXRoKGVkaXRvciwgbm9kZSk7XG4gICAgICAgIGlmIChkcm9wUGF0aC5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnN0IGRyYWdQYXRoID0gZHJhZ05vZGUucGF0aDtcbiAgICAgICAgICAgIGNvbnN0IGJlZm9yZSA9IFBhdGguaXNCZWZvcmUoZHJhZ1BhdGgsIGRyb3BQYXRoKSAmJiBQYXRoLmlzU2libGluZyhkcmFnUGF0aCwgZHJvcFBhdGgpO1xuICAgICAgICAgICAgZHJvcFBhdGggPSBiZWZvcmUgPyBkcm9wUGF0aCA6IFBhdGgubmV4dChkcm9wUGF0aCk7XG4gICAgICAgICAgICBpZiAoZHJvcFBhdGgubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgRWRpdG9yLndpdGhvdXROb3JtYWxpemluZyhlZGl0b3IsICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy5tb3ZlTm9kZXMoZWRpdG9yLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhdDogZHJhZ1BhdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICB0bzogZHJvcFBhdGhcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZW1vdmVEcm9wVGh1bWJMaW5lKGVkaXRvcik7XG59O1xuIl19
@@ -1,10 +0,0 @@
1
- import { EDITOR_TO_ELEMENT } from 'slate-angular';
2
- import { DROP_THUMB_LINE } from '../../../constants';
3
- export const removeDropThumbLine = (editor) => {
4
- const element = EDITOR_TO_ELEMENT.get(editor);
5
- const dropThumbLine = element.querySelector('.' + DROP_THUMB_LINE);
6
- if (dropThumbLine) {
7
- dropThumbLine.remove();
8
- }
9
- };
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3ZlLWRyb3AtdGh1bWItbGluZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3NyYy9wbHVnaW5zL2RuZC91dGlscy9yZW1vdmUtZHJvcC10aHVtYi1saW5lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFHckQsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxNQUFpQixFQUFFLEVBQUU7SUFDckQsTUFBTSxPQUFPLEdBQUcsaUJBQWlCLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzlDLE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUMsR0FBRyxHQUFHLGVBQWUsQ0FBQyxDQUFDO0lBQ25FLElBQUksYUFBYSxFQUFFO1FBQ2YsYUFBYSxDQUFDLE1BQU0sRUFBRSxDQUFDO0tBQzFCO0FBQ0wsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRURJVE9SX1RPX0VMRU1FTlQgfSBmcm9tICdzbGF0ZS1hbmd1bGFyJztcbmltcG9ydCB7IERST1BfVEhVTUJfTElORSB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBUaGVFZGl0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzJztcblxuZXhwb3J0IGNvbnN0IHJlbW92ZURyb3BUaHVtYkxpbmUgPSAoZWRpdG9yOiBUaGVFZGl0b3IpID0+IHtcbiAgICBjb25zdCBlbGVtZW50ID0gRURJVE9SX1RPX0VMRU1FTlQuZ2V0KGVkaXRvcik7XG4gICAgY29uc3QgZHJvcFRodW1iTGluZSA9IGVsZW1lbnQucXVlcnlTZWxlY3RvcignLicgKyBEUk9QX1RIVU1CX0xJTkUpO1xuICAgIGlmIChkcm9wVGh1bWJMaW5lKSB7XG4gICAgICAgIGRyb3BUaHVtYkxpbmUucmVtb3ZlKCk7XG4gICAgfVxufTtcbiJdfQ==
@@ -1,42 +0,0 @@
1
- import { AfterViewInit, ChangeDetectorRef, ElementRef, EventEmitter, NgZone, OnDestroy, Renderer2 } from '@angular/core';
2
- import { Editor } from 'slate';
3
- import { DragNode } from '../../../interfaces';
4
- import * as i0 from "@angular/core";
5
- export declare class TheDndComponent implements AfterViewInit, OnDestroy {
6
- private renderer;
7
- private elementRef;
8
- private ngZone;
9
- private cdr;
10
- isDraging: boolean;
11
- dragNode: DragNode;
12
- dragSnapshotContent: HTMLElement;
13
- private destroy$;
14
- editor: Editor;
15
- dragChange: EventEmitter<boolean>;
16
- dragElement: HTMLElement;
17
- dragElementHeight: number;
18
- dragElementWidth: number;
19
- isScrolling: boolean;
20
- dropThumbLine: HTMLElement;
21
- editableTop: number;
22
- content: ElementRef;
23
- get nativeElement(): HTMLElement;
24
- get editableElement(): HTMLElement;
25
- constructor(renderer: Renderer2, elementRef: ElementRef, ngZone: NgZone, cdr: ChangeDetectorRef);
26
- ngAfterViewInit(): void;
27
- valueChangeHandle(): void;
28
- private updateDndContainerPosition;
29
- getEditableTop(event: MouseEvent): void;
30
- onDragStart(event: DragEvent): void;
31
- onDragEnd(event: DragEvent): void;
32
- onDrop(event: MouseEvent): void;
33
- onDragover(event: MouseEvent): void;
34
- setDropThumbLine(event: MouseEvent): void;
35
- setDragIcon(event: MouseEvent): void;
36
- setSnapshotStyle(event: MouseEvent): void;
37
- resetDragSnapshotContent(): void;
38
- setVisibility(visible?: boolean): void;
39
- ngOnDestroy(): void;
40
- static ɵfac: i0.ɵɵFactoryDeclaration<TheDndComponent, never>;
41
- static ɵcmp: i0.ɵɵComponentDeclaration<TheDndComponent, "[theDnd]", never, { "editor": "editor"; }, { "dragChange": "dragChange"; }, never, never>;
42
- }
@@ -1,61 +0,0 @@
1
- .the-drag-drop {
2
- position: absolute;
3
- cursor: grab;
4
- .the-drag-drop-icon {
5
- color: $gray-500;
6
- width: 24px;
7
- height: 24px;
8
- line-height: 24px;
9
- text-align: center;
10
- font-size: $font-size-base;
11
- border-radius: 3px;
12
-
13
- &:hover {
14
- cursor: pointer;
15
- background-color: rgba($primary, 0.15);
16
- color: $primary;
17
- }
18
- }
19
- }
20
- .drag-container{
21
- position: absolute;
22
- top: 0;
23
- left: 0;
24
- }
25
- .drag-snapshot-container {
26
- position: absolute;
27
- transition: all 0.2 linear;
28
- background: $white;
29
- padding: 5px;
30
- top: 0px;
31
- left: 0px;
32
- transform-origin: left top;
33
- box-shadow: 0px 4px 10px 5px rgba($black, 0.07);
34
- border-radius: 4px;
35
- min-height: 0;
36
- z-index: 1800;
37
- visibility: hidden;
38
- pointer-events: none;
39
- user-select: none;
40
- ol, ul, blockquote, .slate-element-table .the-table{
41
- margin: 0;
42
- }
43
- .slate-element-paragraph{
44
- line-height: $line-height-base;
45
- }
46
- }
47
- .drop-thumb-line{
48
- width: 100%;
49
- left: 0px;
50
- right: 0px;
51
- bottom: -2px;
52
- height: 2px;
53
- z-index: -10;
54
- pointer-events: none;
55
- user-select: none;
56
- background: $primary;
57
- position: absolute;
58
- }
59
- .slate-editable-container > *, .slate-element-paragraph, .slate-block{
60
- position: relative;
61
- }
@@ -1,2 +0,0 @@
1
- import { TheEditor } from '../../../interfaces';
2
- export declare const getCurrentTarget: (editor: TheEditor, event: MouseEvent) => HTMLElement;
@@ -1,3 +0,0 @@
1
- import { TheEditor } from '../../../interfaces';
2
- import { DropDirection } from '../../../constants';
3
- export declare const getHoverDirection: (editor: TheEditor, event: MouseEvent) => DropDirection;
@@ -1,3 +0,0 @@
1
- import { CustomElement } from '../../../custom-types';
2
- import { TheEditor } from '../../../interfaces';
3
- export declare const isValidDrag: (editor: TheEditor, dragNode: CustomElement, currentTarget: HTMLElement) => boolean;
@@ -1,2 +0,0 @@
1
- import { DragNode, TheEditor } from '../../../interfaces';
2
- export declare const moveDragNode: (editor: TheEditor, dragNode: DragNode, event: MouseEvent) => void;
@@ -1,2 +0,0 @@
1
- import { TheEditor } from '../../../interfaces';
2
- export declare const removeDropThumbLine: (editor: TheEditor) => void;