slate-angular 16.1.0-next.9 → 17.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/children/children.component.d.ts +6 -1
- package/components/descendant/descendant.component.d.ts +35 -0
- package/components/editable/editable.component.d.ts +5 -15
- package/components/leaf/leaf.component.d.ts +16 -0
- package/components/leaves/leaves.component.d.ts +14 -1
- package/components/string/default-string.component.d.ts +1 -1
- package/components/string/string.component.d.ts +0 -8
- package/esm2022/components/block-card/block-card.component.mjs +6 -6
- package/esm2022/components/children/children.component.mjs +35 -7
- package/esm2022/components/descendant/descendant.component.mjs +186 -0
- package/esm2022/components/editable/editable.component.mjs +40 -131
- package/esm2022/components/element/default-element.component.mjs +5 -5
- package/esm2022/components/element/element.component.mjs +5 -5
- package/esm2022/components/leaf/default-leaf.component.mjs +3 -3
- package/esm2022/components/leaf/leaf.component.mjs +38 -0
- package/esm2022/components/leaves/leaves.component.mjs +52 -7
- package/esm2022/components/string/default-string.component.mjs +5 -5
- package/esm2022/components/string/string.component.mjs +10 -20
- package/esm2022/components/string/template.component.mjs +3 -3
- package/esm2022/components/text/default-text.component.mjs +5 -5
- package/esm2022/components/text/void-text.component.mjs +5 -5
- package/esm2022/custom-event/BeforeInputEventPlugin.mjs +1 -1
- package/esm2022/custom-event/FallbackCompositionState.mjs +1 -1
- package/esm2022/module.mjs +26 -11
- package/esm2022/plugins/angular-editor.mjs +7 -28
- package/esm2022/plugins/with-angular.mjs +4 -4
- package/esm2022/public-api.mjs +2 -3
- package/esm2022/utils/dom.mjs +1 -1
- package/esm2022/utils/hotkeys.mjs +1 -1
- package/esm2022/utils/index.mjs +1 -2
- package/esm2022/utils/lines.mjs +1 -1
- package/esm2022/utils/range-list.mjs +1 -1
- package/esm2022/utils/restore-dom.mjs +1 -1
- package/esm2022/view/base.mjs +28 -62
- package/esm2022/view/before-context-change.mjs +7 -0
- package/esm2022/view/container-item.mjs +5 -5
- package/esm2022/view/container.mjs +86 -6
- package/esm2022/view/context.mjs +1 -1
- package/fesm2022/slate-angular.mjs +788 -1079
- package/fesm2022/slate-angular.mjs.map +1 -1
- package/module.d.ts +8 -7
- package/package.json +5 -5
- package/public-api.d.ts +1 -2
- package/utils/index.d.ts +0 -1
- package/view/base.d.ts +4 -15
- package/view/{context-change.d.ts → before-context-change.d.ts} +0 -4
- package/view/container.d.ts +7 -3
- package/view/context.d.ts +2 -6
- package/components/children/children-outlet.component.d.ts +0 -9
- package/components/leaf/token.d.ts +0 -4
- package/components/text/token.d.ts +0 -5
- package/esm2022/components/children/children-outlet.component.mjs +0 -22
- package/esm2022/components/leaf/token.mjs +0 -3
- package/esm2022/components/text/token.mjs +0 -4
- package/esm2022/utils/constants.mjs +0 -2
- package/esm2022/utils/throttle.mjs +0 -18
- package/esm2022/view/context-change.mjs +0 -13
- package/esm2022/view/render/leaves-render.mjs +0 -107
- package/esm2022/view/render/list-render.mjs +0 -252
- package/esm2022/view/render/utils.mjs +0 -117
- package/utils/constants.d.ts +0 -1
- package/utils/throttle.d.ts +0 -2
- package/view/render/leaves-render.d.ts +0 -21
- package/view/render/list-render.d.ts +0 -32
- package/view/render/utils.d.ts +0 -11
|
@@ -1,252 +0,0 @@
|
|
|
1
|
-
import { Range, Editor, Element } from 'slate';
|
|
2
|
-
import { IterableDiffers } from '@angular/core';
|
|
3
|
-
import { AngularEditor } from '../../plugins/angular-editor';
|
|
4
|
-
import { SlateErrorCode } from '../../types/error';
|
|
5
|
-
import { NODE_TO_INDEX, NODE_TO_PARENT } from '../../utils/weak-maps';
|
|
6
|
-
import { isDecoratorRangeListEqual } from '../../utils/range-list';
|
|
7
|
-
import { SlateBlockCard } from '../../components/block-card/block-card.component';
|
|
8
|
-
import { createEmbeddedViewOrComponent, getRootNodes, mount, mountOnItemChange, updateContext } from './utils';
|
|
9
|
-
export class ListRender {
|
|
10
|
-
constructor(viewContext, viewContainerRef, getOutletParent, getOutletElement) {
|
|
11
|
-
this.viewContext = viewContext;
|
|
12
|
-
this.viewContainerRef = viewContainerRef;
|
|
13
|
-
this.getOutletParent = getOutletParent;
|
|
14
|
-
this.getOutletElement = getOutletElement;
|
|
15
|
-
this.views = [];
|
|
16
|
-
this.blockCards = [];
|
|
17
|
-
this.contexts = [];
|
|
18
|
-
this.viewTypes = [];
|
|
19
|
-
this.initialized = false;
|
|
20
|
-
}
|
|
21
|
-
initialize(children, parent, childrenContext) {
|
|
22
|
-
this.initialized = true;
|
|
23
|
-
this.children = children;
|
|
24
|
-
const parentPath = AngularEditor.findPath(this.viewContext.editor, parent);
|
|
25
|
-
children.forEach((descendant, index) => {
|
|
26
|
-
NODE_TO_INDEX.set(descendant, index);
|
|
27
|
-
NODE_TO_PARENT.set(descendant, parent);
|
|
28
|
-
const context = getContext(index, descendant, parentPath, childrenContext, this.viewContext);
|
|
29
|
-
const viewType = getViewType(descendant, parent, this.viewContext);
|
|
30
|
-
const view = createEmbeddedViewOrComponent(viewType, context, this.viewContext, this.viewContainerRef);
|
|
31
|
-
const blockCard = createBlockCard(descendant, view, this.viewContainerRef, this.viewContext);
|
|
32
|
-
this.views.push(view);
|
|
33
|
-
this.contexts.push(context);
|
|
34
|
-
this.viewTypes.push(viewType);
|
|
35
|
-
this.blockCards.push(blockCard);
|
|
36
|
-
});
|
|
37
|
-
mount(this.views, this.blockCards, this.getOutletParent(), this.getOutletElement());
|
|
38
|
-
const newDiffers = this.viewContainerRef.injector.get(IterableDiffers);
|
|
39
|
-
this.differ = newDiffers.find(children).create(trackBy(this.viewContext));
|
|
40
|
-
this.differ.diff(children);
|
|
41
|
-
}
|
|
42
|
-
update(children, parent, childrenContext) {
|
|
43
|
-
if (!this.initialized) {
|
|
44
|
-
this.initialize(children, parent, childrenContext);
|
|
45
|
-
return;
|
|
46
|
-
}
|
|
47
|
-
const outletParent = this.getOutletParent();
|
|
48
|
-
const diffResult = this.differ.diff(children);
|
|
49
|
-
const parentPath = AngularEditor.findPath(this.viewContext.editor, parent);
|
|
50
|
-
if (diffResult) {
|
|
51
|
-
let firstRootNode = getRootNodes(this.views[0], this.blockCards[0])[0];
|
|
52
|
-
const newContexts = [];
|
|
53
|
-
const newViewTypes = [];
|
|
54
|
-
const newViews = [];
|
|
55
|
-
const newBlockCards = [];
|
|
56
|
-
diffResult.forEachItem(record => {
|
|
57
|
-
NODE_TO_INDEX.set(record.item, record.currentIndex);
|
|
58
|
-
NODE_TO_PARENT.set(record.item, parent);
|
|
59
|
-
let context = getContext(record.currentIndex, record.item, parentPath, childrenContext, this.viewContext);
|
|
60
|
-
const viewType = getViewType(record.item, parent, this.viewContext);
|
|
61
|
-
newViewTypes.push(viewType);
|
|
62
|
-
let view;
|
|
63
|
-
let blockCard;
|
|
64
|
-
if (record.previousIndex === null) {
|
|
65
|
-
view = createEmbeddedViewOrComponent(viewType, context, this.viewContext, this.viewContainerRef);
|
|
66
|
-
blockCard = createBlockCard(record.item, view, this.viewContainerRef, this.viewContext);
|
|
67
|
-
newContexts.push(context);
|
|
68
|
-
newViews.push(view);
|
|
69
|
-
newBlockCards.push(blockCard);
|
|
70
|
-
mountOnItemChange(record.currentIndex, record.item, newViews, newBlockCards, outletParent, firstRootNode, this.viewContext);
|
|
71
|
-
}
|
|
72
|
-
else {
|
|
73
|
-
const previousView = this.views[record.previousIndex];
|
|
74
|
-
const previousViewType = this.viewTypes[record.previousIndex];
|
|
75
|
-
const previousContext = this.contexts[record.previousIndex];
|
|
76
|
-
const previousBlockCard = this.blockCards[record.previousIndex];
|
|
77
|
-
if (previousViewType !== viewType) {
|
|
78
|
-
view = createEmbeddedViewOrComponent(viewType, context, this.viewContext, this.viewContainerRef);
|
|
79
|
-
blockCard = createBlockCard(record.item, view, this.viewContainerRef, this.viewContext);
|
|
80
|
-
const firstRootNode = getRootNodes(previousView, previousBlockCard)[0];
|
|
81
|
-
const newRootNodes = getRootNodes(view, blockCard);
|
|
82
|
-
firstRootNode.replaceWith(...newRootNodes);
|
|
83
|
-
previousView.destroy();
|
|
84
|
-
previousBlockCard?.destroy();
|
|
85
|
-
}
|
|
86
|
-
else {
|
|
87
|
-
view = previousView;
|
|
88
|
-
blockCard = previousBlockCard;
|
|
89
|
-
if (memoizedContext(this.viewContext, record.item, previousContext, context)) {
|
|
90
|
-
context = previousContext;
|
|
91
|
-
}
|
|
92
|
-
else {
|
|
93
|
-
updateContext(previousView, context, this.viewContext);
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
newContexts.push(context);
|
|
97
|
-
newViews.push(view);
|
|
98
|
-
newBlockCards.push(blockCard);
|
|
99
|
-
}
|
|
100
|
-
});
|
|
101
|
-
diffResult.forEachOperation(record => {
|
|
102
|
-
// removed
|
|
103
|
-
if (record.currentIndex === null) {
|
|
104
|
-
const view = this.views[record.previousIndex];
|
|
105
|
-
const blockCard = this.blockCards[record.previousIndex];
|
|
106
|
-
view.destroy();
|
|
107
|
-
blockCard?.destroy();
|
|
108
|
-
}
|
|
109
|
-
// moved
|
|
110
|
-
if (record.previousIndex !== null && record.currentIndex !== null) {
|
|
111
|
-
mountOnItemChange(record.currentIndex, record.item, newViews, newBlockCards, outletParent, firstRootNode, this.viewContext);
|
|
112
|
-
// Solve the block-card DOMElement loss when moving nodes
|
|
113
|
-
newBlockCards[record.currentIndex]?.instance.append();
|
|
114
|
-
}
|
|
115
|
-
});
|
|
116
|
-
this.viewTypes = newViewTypes;
|
|
117
|
-
this.views = newViews;
|
|
118
|
-
this.contexts = newContexts;
|
|
119
|
-
this.children = children;
|
|
120
|
-
this.blockCards = newBlockCards;
|
|
121
|
-
}
|
|
122
|
-
else {
|
|
123
|
-
const newContexts = [];
|
|
124
|
-
this.children.forEach((child, index) => {
|
|
125
|
-
let context = getContext(index, child, parentPath, childrenContext, this.viewContext);
|
|
126
|
-
const previousContext = this.contexts[index];
|
|
127
|
-
if (memoizedContext(this.viewContext, child, previousContext, context)) {
|
|
128
|
-
context = previousContext;
|
|
129
|
-
}
|
|
130
|
-
else {
|
|
131
|
-
updateContext(this.views[index], context, this.viewContext);
|
|
132
|
-
}
|
|
133
|
-
newContexts.push(context);
|
|
134
|
-
});
|
|
135
|
-
this.contexts = newContexts;
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
export function getContext(index, item, parentPath, childrenContext, viewContext) {
|
|
140
|
-
if (Element.isElement(item)) {
|
|
141
|
-
const computedContext = getCommonContext(index, item, parentPath, viewContext, childrenContext);
|
|
142
|
-
const key = AngularEditor.findKey(viewContext.editor, item);
|
|
143
|
-
const isInline = viewContext.editor.isInline(item);
|
|
144
|
-
const isVoid = viewContext.editor.isVoid(item);
|
|
145
|
-
const elementContext = {
|
|
146
|
-
element: item,
|
|
147
|
-
...computedContext,
|
|
148
|
-
attributes: {
|
|
149
|
-
'data-slate-node': 'element',
|
|
150
|
-
'data-slate-key': key.id
|
|
151
|
-
},
|
|
152
|
-
decorate: childrenContext.decorate,
|
|
153
|
-
readonly: childrenContext.readonly
|
|
154
|
-
};
|
|
155
|
-
if (isInline) {
|
|
156
|
-
elementContext.attributes['data-slate-inline'] = true;
|
|
157
|
-
}
|
|
158
|
-
if (isVoid) {
|
|
159
|
-
elementContext.attributes['data-slate-void'] = true;
|
|
160
|
-
}
|
|
161
|
-
return elementContext;
|
|
162
|
-
}
|
|
163
|
-
else {
|
|
164
|
-
const computedContext = getCommonContext(index, item, parentPath, viewContext, childrenContext);
|
|
165
|
-
const isLeafBlock = AngularEditor.isLeafBlock(viewContext.editor, childrenContext.parent);
|
|
166
|
-
const textContext = {
|
|
167
|
-
decorations: computedContext.decorations,
|
|
168
|
-
isLast: isLeafBlock && index === childrenContext.parent.children.length - 1,
|
|
169
|
-
parent: childrenContext.parent,
|
|
170
|
-
text: item
|
|
171
|
-
};
|
|
172
|
-
return textContext;
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
export function getCommonContext(index, item, parentPath, viewContext, childrenContext) {
|
|
176
|
-
const p = parentPath.concat(index);
|
|
177
|
-
try {
|
|
178
|
-
const ds = childrenContext.decorate([item, p]);
|
|
179
|
-
// [list-render] performance optimization: reduce the number of calls to the `Editor.range(viewContext.editor, p)` method
|
|
180
|
-
if (childrenContext.selection || childrenContext.decorations.length > 0) {
|
|
181
|
-
const range = Editor.range(viewContext.editor, p);
|
|
182
|
-
const sel = childrenContext.selection && Range.intersection(range, childrenContext.selection);
|
|
183
|
-
for (const dec of childrenContext.decorations) {
|
|
184
|
-
const d = Range.intersection(dec, range);
|
|
185
|
-
if (d) {
|
|
186
|
-
ds.push(d);
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
return { selection: sel, decorations: ds };
|
|
190
|
-
}
|
|
191
|
-
else {
|
|
192
|
-
return { selection: null, decorations: ds };
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
catch (error) {
|
|
196
|
-
this.options.viewContext.editor.onError({
|
|
197
|
-
code: SlateErrorCode.GetStartPointError,
|
|
198
|
-
nativeError: error
|
|
199
|
-
});
|
|
200
|
-
return { selection: null, decorations: [] };
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
export function getViewType(item, parent, viewContext) {
|
|
204
|
-
if (Element.isElement(item)) {
|
|
205
|
-
return (viewContext.renderElement && viewContext.renderElement(item)) || viewContext.defaultElement;
|
|
206
|
-
}
|
|
207
|
-
else {
|
|
208
|
-
const isVoid = viewContext.editor.isVoid(parent);
|
|
209
|
-
return isVoid ? viewContext.defaultVoidText : (viewContext.renderText && viewContext.renderText(item)) || viewContext.defaultText;
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
|
-
export function createBlockCard(item, view, viewContainerRef, viewContext) {
|
|
213
|
-
const isBlockCard = viewContext.editor.isBlockCard(item);
|
|
214
|
-
if (isBlockCard) {
|
|
215
|
-
const rootNodes = getRootNodes(view);
|
|
216
|
-
const blockCardComponentRef = viewContainerRef.createComponent(SlateBlockCard, {
|
|
217
|
-
injector: viewContainerRef.injector
|
|
218
|
-
});
|
|
219
|
-
blockCardComponentRef.instance.initializeCenter(rootNodes);
|
|
220
|
-
return blockCardComponentRef;
|
|
221
|
-
}
|
|
222
|
-
else {
|
|
223
|
-
return null;
|
|
224
|
-
}
|
|
225
|
-
}
|
|
226
|
-
export function trackBy(viewContext) {
|
|
227
|
-
return (index, node) => {
|
|
228
|
-
return viewContext.trackBy(node) || AngularEditor.findKey(viewContext.editor, node);
|
|
229
|
-
};
|
|
230
|
-
}
|
|
231
|
-
export function memoizedContext(viewContext, descendant, prev, next) {
|
|
232
|
-
if (Element.isElement(descendant)) {
|
|
233
|
-
return memoizedElementContext(viewContext, prev, next);
|
|
234
|
-
}
|
|
235
|
-
else {
|
|
236
|
-
return memoizedTextContext(prev, next);
|
|
237
|
-
}
|
|
238
|
-
}
|
|
239
|
-
export function memoizedElementContext(viewContext, prev, next) {
|
|
240
|
-
return (prev.element === next.element &&
|
|
241
|
-
(!viewContext.isStrictDecorate || prev.decorate === next.decorate) &&
|
|
242
|
-
prev.readonly === next.readonly &&
|
|
243
|
-
isDecoratorRangeListEqual(prev.decorations, next.decorations) &&
|
|
244
|
-
(prev.selection === next.selection || (!!prev.selection && !!next.selection && Range.equals(prev.selection, next.selection))));
|
|
245
|
-
}
|
|
246
|
-
export function memoizedTextContext(prev, next) {
|
|
247
|
-
return (next.parent === prev.parent &&
|
|
248
|
-
next.isLast === prev.isLast &&
|
|
249
|
-
next.text === prev.text &&
|
|
250
|
-
isDecoratorRangeListEqual(next.decorations, prev.decorations));
|
|
251
|
-
}
|
|
252
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1yZW5kZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvdmlldy9yZW5kZXIvbGlzdC1yZW5kZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF3QixLQUFLLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBUSxNQUFNLE9BQU8sQ0FBQztBQUMzRSxPQUFPLEVBQWlELGVBQWUsRUFBb0IsTUFBTSxlQUFlLENBQUM7QUFHakgsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzdELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ25FLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUNsRixPQUFPLEVBQUUsNkJBQTZCLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBYyxhQUFhLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFFM0gsTUFBTSxPQUFPLFVBQVU7SUFTbkIsWUFDWSxXQUE2QixFQUM3QixnQkFBa0MsRUFDbEMsZUFBa0MsRUFDbEMsZ0JBQTBDO1FBSDFDLGdCQUFXLEdBQVgsV0FBVyxDQUFrQjtRQUM3QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLG9CQUFlLEdBQWYsZUFBZSxDQUFtQjtRQUNsQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQTBCO1FBWDlDLFVBQUssR0FBaUQsRUFBRSxDQUFDO1FBQ3pELGVBQVUsR0FBNEMsRUFBRSxDQUFDO1FBQ3pELGFBQVEsR0FBK0MsRUFBRSxDQUFDO1FBQzFELGNBQVMsR0FBZSxFQUFFLENBQUM7UUFFNUIsZ0JBQVcsR0FBRyxLQUFLLENBQUM7SUFPeEIsQ0FBQztJ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QUMsQ0FBQztLQUNsRjtBQUNMLENBQUM7QUFFRCxNQUFNLFVBQVUsc0JBQXNCLENBQUMsV0FBNkIsRUFBRSxJQUF5QixFQUFFLElBQXlCO0lBQ3RILE9BQU8sQ0FDSCxJQUFJLENBQUMsT0FBTyxLQUFLLElBQUksQ0FBQyxPQUFPO1FBQzdCLENBQUMsQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQ2xFLElBQUksQ0FBQyxRQUFRLEtBQUssSUFBSSxDQUFDLFFBQVE7UUFDL0IseUJBQXlCLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQzdELENBQUMsSUFBSSxDQUFDLFNBQVMsS0FBSyxJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQ2hJLENBQUM7QUFDTixDQUFDO0FBRUQsTUFBTSxVQUFVLG1CQUFtQixDQUFDLElBQXNCLEVBQUUsSUFBc0I7SUFDOUUsT0FBTyxDQUNILElBQUksQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLE1BQU07UUFDM0IsSUFBSSxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUMsTUFBTTtRQUMzQixJQUFJLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxJQUFJO1FBQ3ZCLHlCQUF5QixDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUNoRSxDQUFDO0FBQ04sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFuY2VzdG9yLCBEZXNjZW5kYW50LCBSYW5nZSwgRWRpdG9yLCBFbGVtZW50LCBQYXRoIH0gZnJvbSAnc2xhdGUnO1xuaW1wb3J0IHsgQ29tcG9uZW50UmVmLCBFbWJlZGRlZFZpZXdSZWYsIEl0ZXJhYmxlRGlmZmVyLCBJdGVyYWJsZURpZmZlcnMsIFZpZXdDb250YWluZXJSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFZpZXdUeXBlIH0gZnJvbSAnLi4vLi4vdHlwZXMvdmlldyc7XG5pbXBvcnQgeyBTbGF0ZUNoaWxkcmVuQ29udGV4dCwgU2xhdGVFbGVtZW50Q29udGV4dCwgU2xhdGVUZXh0Q29udGV4dCwgU2xhdGVWaWV3Q29udGV4dCB9IGZyb20gJy4uL2NvbnRleHQnO1xuaW1wb3J0IHsgQW5ndWxhckVkaXRvciB9IGZyb20gJy4uLy4uL3BsdWdpbnMvYW5ndWxhci1lZGl0b3InO1xuaW1wb3J0IHsgU2xhdGVFcnJvckNvZGUgfSBmcm9tICcuLi8uLi90eXBlcy9lcnJvcic7XG5pbXBvcnQgeyBOT0RFX1RPX0lOREVYLCBOT0RFX1RPX1BBUkVOVCB9IGZyb20gJy4uLy4uL3V0aWxzL3dlYWstbWFwcyc7XG5pbXBvcnQgeyBpc0RlY29yYXRvclJhbmdlTGlzdEVxdWFsIH0gZnJvbSAnLi4vLi4vdXRpbHMvcmFuZ2UtbGlzdCc7XG5pbXBvcnQgeyBTbGF0ZUJsb2NrQ2FyZCB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvYmxvY2stY2FyZC9ibG9jay1jYXJkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBjcmVhdGVFbWJlZGRlZFZpZXdPckNvbXBvbmVudCwgZ2V0Um9vdE5vZGVzLCBtb3VudCwgbW91bnRPbkl0ZW1DaGFuZ2UsIHJlbmRlclZpZXcsIHVwZGF0ZUNvbnRleHQgfSBmcm9tICcuL3V0aWxzJztcblxuZXhwb3J0IGNsYXNzIExpc3RSZW5kZXIge1xuICAgIHByaXZhdGUgY2hpbGRyZW46IERlc2NlbmRhbnRbXTtcbiAgICBwcml2YXRlIHZpZXdzOiAoRW1iZWRkZWRWaWV3UmVmPGFueT4gfCBDb21wb25lbnRSZWY8YW55PilbXSA9IFtdO1xuICAgIHByaXZhdGUgYmxvY2tDYXJkczogKENvbXBvbmVudFJlZjxTbGF0ZUJsb2NrQ2FyZD4gfCBudWxsKVtdID0gW107XG4gICAgcHJpdmF0ZSBjb250ZXh0czogKFNsYXRlVGV4dENvbnRleHQgfCBTbGF0ZUVsZW1lbnRDb250ZXh0KVtdID0gW107XG4gICAgcHJpdmF0ZSB2aWV3VHlwZXM6IFZpZXdUeXBlW10gPSBbXTtcbiAgICBwcml2YXRlIGRpZmZlcjogSXRlcmFibGVEaWZmZXI8YW55PjtcbiAgICBwdWJsaWMgaW5pdGlhbGl6ZWQgPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHZpZXdDb250ZXh0OiBTbGF0ZVZpZXdDb250ZXh0LFxuICAgICAgICBwcml2YXRlIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgICAgIHByaXZhdGUgZ2V0T3V0bGV0UGFyZW50OiAoKSA9PiBIVE1MRWxlbWVudCxcbiAgICAgICAgcHJpdmF0ZSBnZXRPdXRsZXRFbGVtZW50OiAoKSA9PiBIVE1MRWxlbWVudCB8IG51bGxcbiAgICApIHt9XG5cbiAgICBwdWJsaWMgaW5pdGlhbGl6ZShjaGlsZHJlbjogRGVzY2VuZGFudFtdLCBwYXJlbnQ6IEFuY2VzdG9yLCBjaGlsZHJlbkNvbnRleHQ6IFNsYXRlQ2hpbGRyZW5Db250ZXh0KSB7XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLmNoaWxkcmVuID0gY2hpbGRyZW47XG4gICAgICAgIGNvbnN0IHBhcmVudFBhdGggPSBBbmd1bGFyRWRpdG9yLmZpbmRQYXRoKHRoaXMudmlld0NvbnRleHQuZWRpdG9yLCBwYXJlbnQpO1xuICAgICAgICBjaGlsZHJlbi5mb3JFYWNoKChkZXNjZW5kYW50LCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgTk9ERV9UT19JTkRFWC5zZXQoZGVzY2VuZGFudCwgaW5kZXgpO1xuICAgICAgICAgICAgTk9ERV9UT19QQVJFTlQuc2V0KGRlc2NlbmRhbnQsIHBhcmVudCk7XG4gICAgICAgICAgICBjb25zdCBjb250ZXh0ID0gZ2V0Q29udGV4dChpbmRleCwgZGVzY2VuZGFudCwgcGFyZW50UGF0aCwgY2hpbGRyZW5Db250ZXh0LCB0aGlzLnZpZXdDb250ZXh0KTtcbiAgICAgICAgICAgIGNvbnN0IHZpZXdUeXBlID0gZ2V0Vmlld1R5cGUoZGVzY2VuZGFudCwgcGFyZW50LCB0aGlzLnZpZXdDb250ZXh0KTtcbiAgICAgICAgICAgIGNvbnN0IHZpZXcgPSBjcmVhdGVFbWJlZGRlZFZpZXdPckNvbXBvbmVudCh2aWV3VHlwZSwgY29udGV4dCwgdGhpcy52aWV3Q29udGV4dCwgdGhpcy52aWV3Q29udGFpbmVyUmVmKTtcbiAgICAgICAgICAgIGNvbnN0IGJsb2NrQ2FyZCA9IGNyZWF0ZUJsb2NrQ2FyZChkZXNjZW5kYW50LCB2aWV3LCB0aGlzLnZpZXdDb250YWluZXJSZWYsIHRoaXMudmlld0NvbnRleHQpO1xuICAgICAgICAgICAgdGhpcy52aWV3cy5wdXNoKHZpZXcpO1xuICAgICAgICAgICAgdGhpcy5jb250ZXh0cy5wdXNoKGNvbnRleHQpO1xuICAgICAgICAgICAgdGhpcy52aWV3VHlwZXMucHVzaCh2aWV3VHlwZSk7XG4gICAgICAgICAgICB0aGlzLmJsb2NrQ2FyZHMucHVzaChibG9ja0NhcmQpO1xuICAgICAgICB9KTtcbiAgICAgICAgbW91bnQodGhpcy52aWV3cywgdGhpcy5ibG9ja0NhcmRzLCB0aGlzLmdldE91dGxldFBhcmVudCgpLCB0aGlzLmdldE91dGxldEVsZW1lbnQoKSk7XG4gICAgICAgIGNvbnN0IG5ld0RpZmZlcnMgPSB0aGlzLnZpZXdDb250YWluZXJSZWYuaW5qZWN0b3IuZ2V0KEl0ZXJhYmxlRGlmZmVycyk7XG4gICAgICAgIHRoaXMuZGlmZmVyID0gbmV3RGlmZmVycy5maW5kKGNoaWxkcmVuKS5jcmVhdGUodHJhY2tCeSh0aGlzLnZpZXdDb250ZXh0KSk7XG4gICAgICAgIHRoaXMuZGlmZmVyLmRpZmYoY2hpbGRyZW4pO1xuICAgIH1cblxuICAgIHB1YmxpYyB1cGRhdGUoY2hpbGRyZW46IERlc2NlbmRhbnRbXSwgcGFyZW50OiBBbmNlc3RvciwgY2hpbGRyZW5Db250ZXh0OiBTbGF0ZUNoaWxkcmVuQ29udGV4dCkge1xuICAgICAgICBpZiAoIXRoaXMuaW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZShjaGlsZHJlbiwgcGFyZW50LCBjaGlsZHJlbkNvbnRleHQpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG91dGxldFBhcmVudCA9IHRoaXMuZ2V0T3V0bGV0UGFyZW50KCk7XG4gICAgICAgIGNvbnN0IGRpZmZSZXN1bHQgPSB0aGlzLmRpZmZlci5kaWZmKGNoaWxkcmVuKTtcbiAgICAgICAgY29uc3QgcGFyZW50UGF0aCA9IEFuZ3VsYXJFZGl0b3IuZmluZFBhdGgodGhpcy52aWV3Q29udGV4dC5lZGl0b3IsIHBhcmVudCk7XG4gICAgICAgIGlmIChkaWZmUmVzdWx0KSB7XG4gICAgICAgICAgICBsZXQgZmlyc3RSb290Tm9kZSA9IGdldFJvb3ROb2Rlcyh0aGlzLnZpZXdzWzBdLCB0aGlzLmJsb2NrQ2FyZHNbMF0pWzBdO1xuICAgICAgICAgICAgY29uc3QgbmV3Q29udGV4dHMgPSBbXTtcbiAgICAgICAgICAgIGNvbnN0IG5ld1ZpZXdUeXBlcyA9IFtdO1xuICAgICAgICAgICAgY29uc3QgbmV3Vmlld3MgPSBbXTtcbiAgICAgICAgICAgIGNvbnN0IG5ld0Jsb2NrQ2FyZHM6IChDb21wb25lbnRSZWY8U2xhdGVCbG9ja0NhcmQ+IHwgbnVsbClbXSA9IFtdO1xuICAgICAgICAgICAgZGlmZlJlc3VsdC5mb3JFYWNoSXRlbShyZWNvcmQgPT4ge1xuICAgICAgICAgICAgICAgIE5PREVfVE9fSU5ERVguc2V0KHJlY29yZC5pdGVtLCByZWNvcmQuY3VycmVudEluZGV4KTtcbiAgICAgICAgICAgICAgICBOT0RFX1RPX1BBUkVOVC5zZXQocmVjb3JkLml0ZW0sIHBhcmVudCk7XG4gICAgICAgICAgICAgICAgbGV0IGNvbnRleHQgPSBnZXRDb250ZXh0KHJlY29yZC5jdXJyZW50SW5kZXgsIHJlY29yZC5pdGVtLCBwYXJlbnRQYXRoLCBjaGlsZHJlbkNvbnRleHQsIHRoaXMudmlld0NvbnRleHQpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHZpZXdUeXBlID0gZ2V0Vmlld1R5cGUocmVjb3JkLml0ZW0sIHBhcmVudCwgdGhpcy52aWV3Q29udGV4dCk7XG4gICAgICAgICAgICAgICAgbmV3Vmlld1R5cGVzLnB1c2godmlld1R5cGUpO1xuICAgICAgICAgICAgICAgIGxldCB2aWV3OiBFbWJlZGRlZFZpZXdSZWY8YW55PiB8IENvbXBvbmVudFJlZjxhbnk+O1xuICAgICAgICAgICAgICAgIGxldCBibG9ja0NhcmQ6IENvbXBvbmVudFJlZjxTbGF0ZUJsb2NrQ2FyZD4gfCBudWxsO1xuICAgICAgICAgICAgICAgIGlmIChyZWNvcmQucHJldmlvdXNJbmRleCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICB2aWV3ID0gY3JlYXRlRW1iZWRkZWRWaWV3T3JDb21wb25lbnQodmlld1R5cGUsIGNvbnRleHQsIHRoaXMudmlld0NvbnRleHQsIHRoaXMudmlld0NvbnRhaW5lclJlZik7XG4gICAgICAgICAgICAgICAgICAgIGJsb2NrQ2FyZCA9IGNyZWF0ZUJsb2NrQ2FyZChyZWNvcmQuaXRlbSwgdmlldywgdGhpcy52aWV3Q29udGFpbmVyUmVmLCB0aGlzLnZpZXdDb250ZXh0KTtcbiAgICAgICAgICAgICAgICAgICAgbmV3Q29udGV4dHMucHVzaChjb250ZXh0KTtcbiAgICAgICAgICAgICAgICAgICAgbmV3Vmlld3MucHVzaCh2aWV3KTtcbiAgICAgICAgICAgICAgICAgICAgbmV3QmxvY2tDYXJkcy5wdXNoKGJsb2NrQ2FyZCk7XG4gICAgICAgICAgICAgICAgICAgIG1vdW50T25JdGVtQ2hhbmdlKFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3JkLmN1cnJlbnRJbmRleCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlY29yZC5pdGVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3Vmlld3MsXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXdCbG9ja0NhcmRzLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3V0bGV0UGFyZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3RSb290Tm9kZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudmlld0NvbnRleHRcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwcmV2aW91c1ZpZXcgPSB0aGlzLnZpZXdzW3JlY29yZC5wcmV2aW91c0luZGV4XTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJldmlvdXNWaWV3VHlwZSA9IHRoaXMudmlld1R5cGVzW3JlY29yZC5wcmV2aW91c0luZGV4XTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJldmlvdXNDb250ZXh0ID0gdGhpcy5jb250ZXh0c1tyZWNvcmQucHJldmlvdXNJbmRleF07XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHByZXZpb3VzQmxvY2tDYXJkID0gdGhpcy5ibG9ja0NhcmRzW3JlY29yZC5wcmV2aW91c0luZGV4XTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHByZXZpb3VzVmlld1R5cGUgIT09IHZpZXdUeXBlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2aWV3ID0gY3JlYXRlRW1iZWRkZWRWaWV3T3JDb21wb25lbnQodmlld1R5cGUsIGNvbnRleHQsIHRoaXMudmlld0NvbnRleHQsIHRoaXMudmlld0NvbnRhaW5lclJlZik7XG4gICAgICAgICAgICAgICAgICAgICAgICBibG9ja0NhcmQgPSBjcmVhdGVCbG9ja0NhcmQocmVjb3JkLml0ZW0sIHZpZXcsIHRoaXMudmlld0NvbnRhaW5lclJlZiwgdGhpcy52aWV3Q29udGV4dCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmaXJzdFJvb3ROb2RlID0gZ2V0Um9vdE5vZGVzKHByZXZpb3VzVmlldywgcHJldmlvdXNCbG9ja0NhcmQpWzBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV3Um9vdE5vZGVzID0gZ2V0Um9vdE5vZGVzKHZpZXcsIGJsb2NrQ2FyZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaXJzdFJvb3ROb2RlLnJlcGxhY2VXaXRoKC4uLm5ld1Jvb3ROb2Rlcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcmV2aW91c1ZpZXcuZGVzdHJveSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNCbG9ja0NhcmQ/LmRlc3Ryb3koKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZpZXcgPSBwcmV2aW91c1ZpZXc7XG4gICAgICAgICAgICAgICAgICAgICAgICBibG9ja0NhcmQgPSBwcmV2aW91c0Jsb2NrQ2FyZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtZW1vaXplZENvbnRleHQodGhpcy52aWV3Q29udGV4dCwgcmVjb3JkLml0ZW0sIHByZXZpb3VzQ29udGV4dCBhcyBhbnksIGNvbnRleHQgYXMgYW55KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQgPSBwcmV2aW91c0NvbnRleHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZUNvbnRleHQocHJldmlvdXNWaWV3LCBjb250ZXh0LCB0aGlzLnZpZXdDb250ZXh0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBuZXdDb250ZXh0cy5wdXNoKGNvbnRleHQpO1xuICAgICAgICAgICAgICAgICAgICBuZXdWaWV3cy5wdXNoKHZpZXcpO1xuICAgICAgICAgICAgICAgICAgICBuZXdCbG9ja0NhcmRzLnB1c2goYmxvY2tDYXJkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGRpZmZSZXN1bHQuZm9yRWFjaE9wZXJhdGlvbihyZWNvcmQgPT4ge1xuICAgICAgICAgICAgICAgIC8vIHJlbW92ZWRcbiAgICAgICAgICAgICAgICBpZiAocmVjb3JkLmN1cnJlbnRJbmRleCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB2aWV3ID0gdGhpcy52aWV3c1tyZWNvcmQucHJldmlvdXNJbmRleF07XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJsb2NrQ2FyZCA9IHRoaXMuYmxvY2tDYXJkc1tyZWNvcmQucHJldmlvdXNJbmRleF07XG4gICAgICAgICAgICAgICAgICAgIHZpZXcuZGVzdHJveSgpO1xuICAgICAgICAgICAgICAgICAgICBibG9ja0NhcmQ/LmRlc3Ryb3koKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gbW92ZWRcbiAgICAgICAgICAgICAgICBpZiAocmVjb3JkLnByZXZpb3VzSW5kZXggIT09IG51bGwgJiYgcmVjb3JkLmN1cnJlbnRJbmRleCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBtb3VudE9uSXRlbUNoYW5nZShcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlY29yZC5jdXJyZW50SW5kZXgsXG4gICAgICAgICAgICAgICAgICAgICAgICByZWNvcmQuaXRlbSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld1ZpZXdzLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3QmxvY2tDYXJkcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG91dGxldFBhcmVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0Um9vdE5vZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZpZXdDb250ZXh0XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIC8vIFNvbHZlIHRoZSBibG9jay1jYXJkIERPTUVsZW1lbnQgbG9zcyB3aGVuIG1vdmluZyBub2Rlc1xuICAgICAgICAgICAgICAgICAgICBuZXdCbG9ja0NhcmRzW3JlY29yZC5jdXJyZW50SW5kZXhdPy5pbnN0YW5jZS5hcHBlbmQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMudmlld1R5cGVzID0gbmV3Vmlld1R5cGVzO1xuICAgICAgICAgICAgdGhpcy52aWV3cyA9IG5ld1ZpZXdzO1xuICAgICAgICAgICAgdGhpcy5jb250ZXh0cyA9IG5ld0NvbnRleHRzO1xuICAgICAgICAgICAgdGhpcy5jaGlsZHJlbiA9IGNoaWxkcmVuO1xuICAgICAgICAgICAgdGhpcy5ibG9ja0NhcmRzID0gbmV3QmxvY2tDYXJkcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IG5ld0NvbnRleHRzID0gW107XG4gICAgICAgICAgICB0aGlzLmNoaWxkcmVuLmZvckVhY2goKGNoaWxkLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgIGxldCBjb250ZXh0ID0gZ2V0Q29udGV4dChpbmRleCwgY2hpbGQsIHBhcmVudFBhdGgsIGNoaWxkcmVuQ29udGV4dCwgdGhpcy52aWV3Q29udGV4dCk7XG4gICAgICAgICAgICAgICAgY29uc3QgcHJldmlvdXNDb250ZXh0ID0gdGhpcy5jb250ZXh0c1tpbmRleF07XG4gICAgICAgICAgICAgICAgaWYgKG1lbW9pemVkQ29udGV4dCh0aGlzLnZpZXdDb250ZXh0LCBjaGlsZCwgcHJldmlvdXNDb250ZXh0IGFzIGFueSwgY29udGV4dCBhcyBhbnkpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQgPSBwcmV2aW91c0NvbnRleHQ7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlQ29udGV4dCh0aGlzLnZpZXdzW2luZGV4XSwgY29udGV4dCwgdGhpcy52aWV3Q29udGV4dCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG5ld0NvbnRleHRzLnB1c2goY29udGV4dCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuY29udGV4dHMgPSBuZXdDb250ZXh0cztcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldENvbnRleHQoXG4gICAgaW5kZXg6IG51bWJlcixcbiAgICBpdGVtOiBEZXNjZW5kYW50LFxuICAgIHBhcmVudFBhdGg6IFBhdGgsXG4gICAgY2hpbGRyZW5Db250ZXh0OiBTbGF0ZUNoaWxkcmVuQ29udGV4dCxcbiAgICB2aWV3Q29udGV4dDogU2xhdGVWaWV3Q29udGV4dFxuKTogU2xhdGVFbGVtZW50Q29udGV4dCB8IFNsYXRlVGV4dENvbnRleHQge1xuICAgIGlmIChFbGVtZW50LmlzRWxlbWVudChpdGVtKSkge1xuICAgICAgICBjb25zdCBjb21wdXRlZENvbnRleHQgPSBnZXRDb21tb25Db250ZXh0KGluZGV4LCBpdGVtLCBwYXJlbnRQYXRoLCB2aWV3Q29udGV4dCwgY2hpbGRyZW5Db250ZXh0KTtcbiAgICAgICAgY29uc3Qga2V5ID0gQW5ndWxhckVkaXRvci5maW5kS2V5KHZpZXdDb250ZXh0LmVkaXRvciwgaXRlbSk7XG4gICAgICAgIGNvbnN0IGlzSW5saW5lID0gdmlld0NvbnRleHQuZWRpdG9yLmlzSW5saW5lKGl0ZW0pO1xuICAgICAgICBjb25zdCBpc1ZvaWQgPSB2aWV3Q29udGV4dC5lZGl0b3IuaXNWb2lkKGl0ZW0pO1xuICAgICAgICBjb25zdCBlbGVtZW50Q29udGV4dDogU2xhdGVFbGVtZW50Q29udGV4dCA9IHtcbiAgICAgICAgICAgIGVsZW1lbnQ6IGl0ZW0sXG4gICAgICAgICAgICAuLi5jb21wdXRlZENvbnRleHQsXG4gICAgICAgICAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgICAgICAgICAgJ2RhdGEtc2xhdGUtbm9kZSc6ICdlbGVtZW50JyxcbiAgICAgICAgICAgICAgICAnZGF0YS1zbGF0ZS1rZXknOiBrZXkuaWRcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBkZWNvcmF0ZTogY2hpbGRyZW5Db250ZXh0LmRlY29yYXRlLFxuICAgICAgICAgICAgcmVhZG9ubHk6IGNoaWxkcmVuQ29udGV4dC5yZWFkb25seVxuICAgICAgICB9O1xuICAgICAgICBpZiAoaXNJbmxpbmUpIHtcbiAgICAgICAgICAgIGVsZW1lbnRDb250ZXh0LmF0dHJpYnV0ZXNbJ2RhdGEtc2xhdGUtaW5saW5lJ10gPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc1ZvaWQpIHtcbiAgICAgICAgICAgIGVsZW1lbnRDb250ZXh0LmF0dHJpYnV0ZXNbJ2RhdGEtc2xhdGUtdm9pZCddID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZWxlbWVudENvbnRleHQ7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgY29tcHV0ZWRDb250ZXh0ID0gZ2V0Q29tbW9uQ29udGV4dChpbmRleCwgaXRlbSwgcGFyZW50UGF0aCwgdmlld0NvbnRleHQsIGNoaWxkcmVuQ29udGV4dCk7XG4gICAgICAgIGNvbnN0IGlzTGVhZkJsb2NrID0gQW5ndWxhckVkaXRvci5pc0xlYWZCbG9jayh2aWV3Q29udGV4dC5lZGl0b3IsIGNoaWxkcmVuQ29udGV4dC5wYXJlbnQpO1xuICAgICAgICBjb25zdCB0ZXh0Q29udGV4dDogU2xhdGVUZXh0Q29udGV4dCA9IHtcbiAgICAgICAgICAgIGRlY29yYXRpb25zOiBjb21wdXRlZENvbnRleHQuZGVjb3JhdGlvbnMsXG4gICAgICAgICAgICBpc0xhc3Q6IGlzTGVhZkJsb2NrICYmIGluZGV4ID09PSBjaGlsZHJlbkNvbnRleHQucGFyZW50LmNoaWxkcmVuLmxlbmd0aCAtIDEsXG4gICAgICAgICAgICBwYXJlbnQ6IGNoaWxkcmVuQ29udGV4dC5wYXJlbnQgYXMgRWxlbWVudCxcbiAgICAgICAgICAgIHRleHQ6IGl0ZW1cbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIHRleHRDb250ZXh0O1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldENvbW1vbkNvbnRleHQoXG4gICAgaW5kZXg6IG51bWJlcixcbiAgICBpdGVtOiBEZXNjZW5kYW50LFxuICAgIHBhcmVudFBhdGg6IFBhdGgsXG4gICAgdmlld0NvbnRleHQ6IFNsYXRlVmlld0NvbnRleHQsXG4gICAgY2hpbGRyZW5Db250ZXh0OiBTbGF0ZUNoaWxkcmVuQ29udGV4dFxuKTogeyBzZWxlY3Rpb246IFJhbmdlOyBkZWNvcmF0aW9uczogUmFuZ2VbXSB9IHtcbiAgICBjb25zdCBwID0gcGFyZW50UGF0aC5jb25jYXQoaW5kZXgpO1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGRzID0gY2hpbGRyZW5Db250ZXh0LmRlY29yYXRlKFtpdGVtLCBwXSk7XG4gICAgICAgIC8vIFtsaXN0LXJlbmRlcl0gcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uOiByZWR1Y2UgdGhlIG51bWJlciBvZiBjYWxscyB0byB0aGUgYEVkaXRvci5yYW5nZSh2aWV3Q29udGV4dC5lZGl0b3IsIHApYCBtZXRob2RcbiAgICAgICAgaWYgKGNoaWxkcmVuQ29udGV4dC5zZWxlY3Rpb24gfHwgY2hpbGRyZW5Db250ZXh0LmRlY29yYXRpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IHJhbmdlID0gRWRpdG9yLnJhbmdlKHZpZXdDb250ZXh0LmVkaXRvciwgcCk7XG4gICAgICAgICAgICBjb25zdCBzZWwgPSBjaGlsZHJlbkNvbnRleHQuc2VsZWN0aW9uICYmIFJhbmdlLmludGVyc2VjdGlvbihyYW5nZSwgY2hpbGRyZW5Db250ZXh0LnNlbGVjdGlvbik7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGRlYyBvZiBjaGlsZHJlbkNvbnRleHQuZGVjb3JhdGlvbnMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBkID0gUmFuZ2UuaW50ZXJzZWN0aW9uKGRlYywgcmFuZ2UpO1xuICAgICAgICAgICAgICAgIGlmIChkKSB7XG4gICAgICAgICAgICAgICAgICAgIGRzLnB1c2goZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHsgc2VsZWN0aW9uOiBzZWwsIGRlY29yYXRpb25zOiBkcyB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHsgc2VsZWN0aW9uOiBudWxsLCBkZWNvcmF0aW9uczogZHMgfTtcbiAgICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHRoaXMub3B0aW9ucy52aWV3Q29udGV4dC5lZGl0b3Iub25FcnJvcih7XG4gICAgICAgICAgICBjb2RlOiBTbGF0ZUVycm9yQ29kZS5HZXRTdGFydFBvaW50RXJyb3IsXG4gICAgICAgICAgICBuYXRpdmVFcnJvcjogZXJyb3JcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB7IHNlbGVjdGlvbjogbnVsbCwgZGVjb3JhdGlvbnM6IFtdIH07XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Vmlld1R5cGUoaXRlbTogRGVzY2VuZGFudCwgcGFyZW50OiBBbmNlc3Rvciwgdmlld0NvbnRleHQ6IFNsYXRlVmlld0NvbnRleHQpIHtcbiAgICBpZiAoRWxlbWVudC5pc0VsZW1lbnQoaXRlbSkpIHtcbiAgICAgICAgcmV0dXJuICh2aWV3Q29udGV4dC5yZW5kZXJFbGVtZW50ICYmIHZpZXdDb250ZXh0LnJlbmRlckVsZW1lbnQoaXRlbSkpIHx8IHZpZXdDb250ZXh0LmRlZmF1bHRFbGVtZW50O1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGlzVm9pZCA9IHZpZXdDb250ZXh0LmVkaXRvci5pc1ZvaWQocGFyZW50IGFzIEVsZW1lbnQpO1xuICAgICAgICByZXR1cm4gaXNWb2lkID8gdmlld0NvbnRleHQuZGVmYXVsdFZvaWRUZXh0IDogKHZpZXdDb250ZXh0LnJlbmRlclRleHQgJiYgdmlld0NvbnRleHQucmVuZGVyVGV4dChpdGVtKSkgfHwgdmlld0NvbnRleHQuZGVmYXVsdFRleHQ7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQmxvY2tDYXJkKFxuICAgIGl0ZW06IERlc2NlbmRhbnQsXG4gICAgdmlldzogRW1iZWRkZWRWaWV3UmVmPGFueT4gfCBDb21wb25lbnRSZWY8YW55PixcbiAgICB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgIHZpZXdDb250ZXh0OiBTbGF0ZVZpZXdDb250ZXh0XG4pIHtcbiAgICBjb25zdCBpc0Jsb2NrQ2FyZCA9IHZpZXdDb250ZXh0LmVkaXRvci5pc0Jsb2NrQ2FyZChpdGVtKTtcbiAgICBpZiAoaXNCbG9ja0NhcmQpIHtcbiAgICAgICAgY29uc3Qgcm9vdE5vZGVzID0gZ2V0Um9vdE5vZGVzKHZpZXcpO1xuICAgICAgICBjb25zdCBibG9ja0NhcmRDb21wb25lbnRSZWYgPSB2aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudDxTbGF0ZUJsb2NrQ2FyZD4oU2xhdGVCbG9ja0NhcmQsIHtcbiAgICAgICAgICAgIGluamVjdG9yOiB2aWV3Q29udGFpbmVyUmVmLmluamVjdG9yXG4gICAgICAgIH0pO1xuICAgICAgICBibG9ja0NhcmRDb21wb25lbnRSZWYuaW5zdGFuY2UuaW5pdGlhbGl6ZUNlbnRlcihyb290Tm9kZXMpO1xuICAgICAgICByZXR1cm4gYmxvY2tDYXJkQ29tcG9uZW50UmVmO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRyYWNrQnkodmlld0NvbnRleHQ6IFNsYXRlVmlld0NvbnRleHQpIHtcbiAgICByZXR1cm4gKGluZGV4LCBub2RlKSA9PiB7XG4gICAgICAgIHJldHVybiB2aWV3Q29udGV4dC50cmFja0J5KG5vZGUpIHx8IEFuZ3VsYXJFZGl0b3IuZmluZEtleSh2aWV3Q29udGV4dC5lZGl0b3IsIG5vZGUpO1xuICAgIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZW1vaXplZENvbnRleHQoXG4gICAgdmlld0NvbnRleHQ6IFNsYXRlVmlld0NvbnRleHQsXG4gICAgZGVzY2VuZGFudDogRGVzY2VuZGFudCxcbiAgICBwcmV2OiBTbGF0ZUVsZW1lbnRDb250ZXh0IHwgU2xhdGVUZXh0Q29udGV4dCxcbiAgICBuZXh0OiBTbGF0ZUVsZW1lbnRDb250ZXh0IHwgU2xhdGVUZXh0Q29udGV4dFxuKTogYm9vbGVhbiB7XG4gICAgaWYgKEVsZW1lbnQuaXNFbGVtZW50KGRlc2NlbmRhbnQpKSB7XG4gICAgICAgIHJldHVybiBtZW1vaXplZEVsZW1lbnRDb250ZXh0KHZpZXdDb250ZXh0LCBwcmV2IGFzIFNsYXRlRWxlbWVudENvbnRleHQsIG5leHQgYXMgU2xhdGVFbGVtZW50Q29udGV4dCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG1lbW9pemVkVGV4dENvbnRleHQocHJldiBhcyBTbGF0ZVRleHRDb250ZXh0LCBuZXh0IGFzIFNsYXRlVGV4dENvbnRleHQpO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1lbW9pemVkRWxlbWVudENvbnRleHQodmlld0NvbnRleHQ6IFNsYXRlVmlld0NvbnRleHQsIHByZXY6IFNsYXRlRWxlbWVudENvbnRleHQsIG5leHQ6IFNsYXRlRWxlbWVudENvbnRleHQpIHtcbiAgICByZXR1cm4gKFxuICAgICAgICBwcmV2LmVsZW1lbnQgPT09IG5leHQuZWxlbWVudCAmJlxuICAgICAgICAoIXZpZXdDb250ZXh0LmlzU3RyaWN0RGVjb3JhdGUgfHwgcHJldi5kZWNvcmF0ZSA9PT0gbmV4dC5kZWNvcmF0ZSkgJiZcbiAgICAgICAgcHJldi5yZWFkb25seSA9PT0gbmV4dC5yZWFkb25seSAmJlxuICAgICAgICBpc0RlY29yYXRvclJhbmdlTGlzdEVxdWFsKHByZXYuZGVjb3JhdGlvbnMsIG5leHQuZGVjb3JhdGlvbnMpICYmXG4gICAgICAgIChwcmV2LnNlbGVjdGlvbiA9PT0gbmV4dC5zZWxlY3Rpb24gfHwgKCEhcHJldi5zZWxlY3Rpb24gJiYgISFuZXh0LnNlbGVjdGlvbiAmJiBSYW5nZS5lcXVhbHMocHJldi5zZWxlY3Rpb24sIG5leHQuc2VsZWN0aW9uKSkpXG4gICAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1lbW9pemVkVGV4dENvbnRleHQocHJldjogU2xhdGVUZXh0Q29udGV4dCwgbmV4dDogU2xhdGVUZXh0Q29udGV4dCkge1xuICAgIHJldHVybiAoXG4gICAgICAgIG5leHQucGFyZW50ID09PSBwcmV2LnBhcmVudCAmJlxuICAgICAgICBuZXh0LmlzTGFzdCA9PT0gcHJldi5pc0xhc3QgJiZcbiAgICAgICAgbmV4dC50ZXh0ID09PSBwcmV2LnRleHQgJiZcbiAgICAgICAgaXNEZWNvcmF0b3JSYW5nZUxpc3RFcXVhbChuZXh0LmRlY29yYXRpb25zLCBwcmV2LmRlY29yYXRpb25zKVxuICAgICk7XG59XG4iXX0=
|
|
@@ -1,117 +0,0 @@
|
|
|
1
|
-
import { ComponentRef } from '@angular/core';
|
|
2
|
-
import { isComponentType, isTemplateRef } from '../../utils/view';
|
|
3
|
-
export function createEmbeddedViewOrComponent(viewType, context, viewContext, viewContainerRef) {
|
|
4
|
-
if (isTemplateRef(viewType)) {
|
|
5
|
-
const embeddedViewContext = {
|
|
6
|
-
context,
|
|
7
|
-
viewContext
|
|
8
|
-
};
|
|
9
|
-
const embeddedViewRef = viewContainerRef.createEmbeddedView(viewType, embeddedViewContext);
|
|
10
|
-
embeddedViewRef.detectChanges();
|
|
11
|
-
return embeddedViewRef;
|
|
12
|
-
}
|
|
13
|
-
if (isComponentType(viewType)) {
|
|
14
|
-
const componentRef = viewContainerRef.createComponent(viewType, {
|
|
15
|
-
injector: viewContainerRef.injector
|
|
16
|
-
});
|
|
17
|
-
componentRef.instance.viewContext = viewContext;
|
|
18
|
-
componentRef.instance.context = context;
|
|
19
|
-
componentRef.changeDetectorRef.detectChanges();
|
|
20
|
-
return componentRef;
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
export function renderView(view) {
|
|
24
|
-
if (view instanceof ComponentRef) {
|
|
25
|
-
view.changeDetectorRef.detectChanges();
|
|
26
|
-
}
|
|
27
|
-
else {
|
|
28
|
-
view.detectChanges();
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
export function updateContext(view, newContext, viewContext) {
|
|
32
|
-
if (view instanceof ComponentRef) {
|
|
33
|
-
view.instance.context = newContext;
|
|
34
|
-
}
|
|
35
|
-
else {
|
|
36
|
-
const embeddedViewContext = {
|
|
37
|
-
context: newContext,
|
|
38
|
-
viewContext
|
|
39
|
-
};
|
|
40
|
-
view.context = embeddedViewContext;
|
|
41
|
-
view.detectChanges();
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
export function mount(views, blockCards, outletParent, outletElement) {
|
|
45
|
-
if (views.length > 0) {
|
|
46
|
-
const fragment = document.createDocumentFragment();
|
|
47
|
-
views.forEach((view, index) => {
|
|
48
|
-
const blockCard = blockCards ? blockCards[index] : undefined;
|
|
49
|
-
fragment.append(...getRootNodes(view, blockCard));
|
|
50
|
-
});
|
|
51
|
-
if (outletElement) {
|
|
52
|
-
outletParent.insertBefore(fragment, outletElement);
|
|
53
|
-
outletElement.remove();
|
|
54
|
-
}
|
|
55
|
-
else {
|
|
56
|
-
outletParent.prepend(fragment);
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
export function getRootNodes(ref, blockCard) {
|
|
61
|
-
if (blockCard) {
|
|
62
|
-
return [blockCard.instance.nativeElement];
|
|
63
|
-
}
|
|
64
|
-
if (ref instanceof ComponentRef) {
|
|
65
|
-
ref.hostView.rootNodes.forEach(ele => {
|
|
66
|
-
if (!(ele instanceof HTMLElement)) {
|
|
67
|
-
ele.remove();
|
|
68
|
-
}
|
|
69
|
-
});
|
|
70
|
-
return [ref.instance.nativeElement];
|
|
71
|
-
}
|
|
72
|
-
else {
|
|
73
|
-
const result = [];
|
|
74
|
-
ref.rootNodes.forEach(rootNode => {
|
|
75
|
-
const isHTMLElement = rootNode instanceof HTMLElement;
|
|
76
|
-
if (isHTMLElement && result.every(item => !item.contains(rootNode))) {
|
|
77
|
-
result.push(rootNode);
|
|
78
|
-
}
|
|
79
|
-
if (!isHTMLElement) {
|
|
80
|
-
rootNode.remove();
|
|
81
|
-
}
|
|
82
|
-
});
|
|
83
|
-
return result;
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
export function mountOnItemChange(index, item, views, blockCards, outletParent, firstRootNode, viewContext) {
|
|
87
|
-
const view = views[index];
|
|
88
|
-
let rootNodes = getRootNodes(view);
|
|
89
|
-
if (blockCards) {
|
|
90
|
-
const isBlockCard = viewContext.editor.isBlockCard(item);
|
|
91
|
-
if (isBlockCard) {
|
|
92
|
-
const blockCard = blockCards[index];
|
|
93
|
-
rootNodes = [blockCard.instance.nativeElement];
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
if (index === 0) {
|
|
97
|
-
if (firstRootNode) {
|
|
98
|
-
rootNodes.forEach(rootNode => {
|
|
99
|
-
firstRootNode.insertAdjacentElement('beforebegin', rootNode);
|
|
100
|
-
});
|
|
101
|
-
}
|
|
102
|
-
else {
|
|
103
|
-
outletParent.prepend(...rootNodes);
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
else {
|
|
107
|
-
const previousView = views[index - 1];
|
|
108
|
-
const blockCard = blockCards ? blockCards[index - 1] : null;
|
|
109
|
-
const previousRootNodes = getRootNodes(previousView, blockCard);
|
|
110
|
-
let previousRootNode = previousRootNodes[previousRootNodes.length - 1];
|
|
111
|
-
rootNodes.forEach(rootNode => {
|
|
112
|
-
previousRootNode.insertAdjacentElement('afterend', rootNode);
|
|
113
|
-
previousRootNode = rootNode;
|
|
114
|
-
});
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvdmlldy9yZW5kZXIvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFlBQVksRUFBcUMsTUFBTSxlQUFlLENBQUM7QUFFaEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUlsRSxNQUFNLFVBQVUsNkJBQTZCLENBQ3pDLFFBQWtCLEVBQ2xCLE9BQVksRUFDWixXQUE2QixFQUM3QixnQkFBa0M7SUFFbEMsSUFBSSxhQUFhLENBQUMsUUFBUSxDQUFDLEVBQUU7UUFDekIsTUFBTSxtQkFBbUIsR0FBRztZQUN4QixPQUFPO1lBQ1AsV0FBVztTQUNkLENBQUM7UUFDRixNQUFNLGVBQWUsR0FBRyxnQkFBZ0IsQ0FBQyxrQkFBa0IsQ0FBTSxRQUFRLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztRQUNoRyxlQUFlLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDaEMsT0FBTyxlQUFlLENBQUM7S0FDMUI7SUFDRCxJQUFJLGVBQWUsQ0FBQyxRQUFRLENBQUMsRUFBRTtRQUMzQixNQUFNLFlBQVksR0FBRyxnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFO1lBQzVELFFBQVEsRUFBRSxnQkFBZ0IsQ0FBQyxRQUFRO1NBQ3RDLENBQXNCLENBQUM7UUFDeEIsWUFBWSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO1FBQ2hELFlBQVksQ0FBQyxRQUFRLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUN4QyxZQUFZLENBQUMsaUJBQWlCLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDL0MsT0FBTyxZQUFZLENBQUM7S0FDdkI7QUFDTCxDQUFDO0FBRUQsTUFBTSxVQUFVLFVBQVUsQ0FBQyxJQUE4QztJQUNyRSxJQUFJLElBQUksWUFBWSxZQUFZLEVBQUU7UUFDOUIsSUFBSSxDQUFD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Q0FBQyxxQkFBcUIsQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDN0QsZ0JBQWdCLEdBQUcsUUFBUSxDQUFDO1FBQ2hDLENBQUMsQ0FBQyxDQUFDO0tBQ047QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGVzY2VuZGFudCB9IGZyb20gJ3NsYXRlJztcbmltcG9ydCB7IENvbXBvbmVudFJlZiwgRW1iZWRkZWRWaWV3UmVmLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBWaWV3VHlwZSB9IGZyb20gJy4uLy4uL3R5cGVzL3ZpZXcnO1xuaW1wb3J0IHsgaXNDb21wb25lbnRUeXBlLCBpc1RlbXBsYXRlUmVmIH0gZnJvbSAnLi4vLi4vdXRpbHMvdmlldyc7XG5pbXBvcnQgeyBTbGF0ZUVsZW1lbnRDb250ZXh0LCBTbGF0ZUxlYWZDb250ZXh0LCBTbGF0ZVRleHRDb250ZXh0LCBTbGF0ZVZpZXdDb250ZXh0IH0gZnJvbSAnLi4vY29udGV4dCc7XG5pbXBvcnQgeyBTbGF0ZUJsb2NrQ2FyZCB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvYmxvY2stY2FyZC9ibG9jay1jYXJkLmNvbXBvbmVudCc7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVFbWJlZGRlZFZpZXdPckNvbXBvbmVudChcbiAgICB2aWV3VHlwZTogVmlld1R5cGUsXG4gICAgY29udGV4dDogYW55LFxuICAgIHZpZXdDb250ZXh0OiBTbGF0ZVZpZXdDb250ZXh0LFxuICAgIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWZcbikge1xuICAgIGlmIChpc1RlbXBsYXRlUmVmKHZpZXdUeXBlKSkge1xuICAgICAgICBjb25zdCBlbWJlZGRlZFZpZXdDb250ZXh0ID0ge1xuICAgICAgICAgICAgY29udGV4dCxcbiAgICAgICAgICAgIHZpZXdDb250ZXh0XG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGVtYmVkZGVkVmlld1JlZiA9IHZpZXdDb250YWluZXJSZWYuY3JlYXRlRW1iZWRkZWRWaWV3PGFueT4odmlld1R5cGUsIGVtYmVkZGVkVmlld0NvbnRleHQpO1xuICAgICAgICBlbWJlZGRlZFZpZXdSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICByZXR1cm4gZW1iZWRkZWRWaWV3UmVmO1xuICAgIH1cbiAgICBpZiAoaXNDb21wb25lbnRUeXBlKHZpZXdUeXBlKSkge1xuICAgICAgICBjb25zdCBjb21wb25lbnRSZWYgPSB2aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudCh2aWV3VHlwZSwge1xuICAgICAgICAgICAgaW5qZWN0b3I6IHZpZXdDb250YWluZXJSZWYuaW5qZWN0b3JcbiAgICAgICAgfSkgYXMgQ29tcG9uZW50UmVmPGFueT47XG4gICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS52aWV3Q29udGV4dCA9IHZpZXdDb250ZXh0O1xuICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UuY29udGV4dCA9IGNvbnRleHQ7XG4gICAgICAgIGNvbXBvbmVudFJlZi5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIHJldHVybiBjb21wb25lbnRSZWY7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVuZGVyVmlldyh2aWV3OiBFbWJlZGRlZFZpZXdSZWY8YW55PiB8IENvbXBvbmVudFJlZjxhbnk+KSB7XG4gICAgaWYgKHZpZXcgaW5zdGFuY2VvZiBDb21wb25lbnRSZWYpIHtcbiAgICAgICAgdmlldy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdmlldy5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdXBkYXRlQ29udGV4dChcbiAgICB2aWV3OiBFbWJlZGRlZFZpZXdSZWY8YW55PiB8IENvbXBvbmVudFJlZjxhbnk+LFxuICAgIG5ld0NvbnRleHQ6IFNsYXRlRWxlbWVudENvbnRleHQgfCBTbGF0ZVRleHRDb250ZXh0IHwgU2xhdGVMZWFmQ29udGV4dCxcbiAgICB2aWV3Q29udGV4dDogU2xhdGVWaWV3Q29udGV4dFxuKSB7XG4gICAgaWYgKHZpZXcgaW5zdGFuY2VvZiBDb21wb25lbnRSZWYpIHtcbiAgICAgICAgdmlldy5pbnN0YW5jZS5jb250ZXh0ID0gbmV3Q29udGV4dDtcbiAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBlbWJlZGRlZFZpZXdDb250ZXh0ID0ge1xuICAgICAgICAgICAgY29udGV4dDogbmV3Q29udGV4dCxcbiAgICAgICAgICAgIHZpZXdDb250ZXh0XG4gICAgICAgIH07XG4gICAgICAgIHZpZXcuY29udGV4dCA9IGVtYmVkZGVkVmlld0NvbnRleHQ7XG4gICAgICAgIHZpZXcuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1vdW50KFxuICAgIHZpZXdzOiAoRW1iZWRkZWRWaWV3UmVmPGFueT4gfCBDb21wb25lbnRSZWY8YW55PilbXSxcbiAgICBibG9ja0NhcmRzOiAoQ29tcG9uZW50UmVmPFNsYXRlQmxvY2tDYXJkPiB8IG51bGwpW10gfCBudWxsLFxuICAgIG91dGxldFBhcmVudDogSFRNTEVsZW1lbnQsXG4gICAgb3V0bGV0RWxlbWVudDogSFRNTEVsZW1lbnQgfCBudWxsXG4pIHtcbiAgICBpZiAodmlld3MubGVuZ3RoID4gMCkge1xuICAgICAgICBjb25zdCBmcmFnbWVudCA9IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtcbiAgICAgICAgdmlld3MuZm9yRWFjaCgodmlldywgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGJsb2NrQ2FyZCA9IGJsb2NrQ2FyZHMgPyBibG9ja0NhcmRzW2luZGV4XSA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGZyYWdtZW50LmFwcGVuZCguLi5nZXRSb290Tm9kZXModmlldywgYmxvY2tDYXJkKSk7XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAob3V0bGV0RWxlbWVudCkge1xuICAgICAgICAgICAgb3V0bGV0UGFyZW50Lmluc2VydEJlZm9yZShmcmFnbWVudCwgb3V0bGV0RWxlbWVudCk7XG4gICAgICAgICAgICBvdXRsZXRFbGVtZW50LnJlbW92ZSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgb3V0bGV0UGFyZW50LnByZXBlbmQoZnJhZ21lbnQpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Um9vdE5vZGVzKHJlZjogRW1iZWRkZWRWaWV3UmVmPGFueT4gfCBDb21wb25lbnRSZWY8YW55PiwgYmxvY2tDYXJkPzogQ29tcG9uZW50UmVmPFNsYXRlQmxvY2tDYXJkPik6IEhUTUxFbGVtZW50W10ge1xuICAgIGlmIChibG9ja0NhcmQpIHtcbiAgICAgICAgcmV0dXJuIFtibG9ja0NhcmQuaW5zdGFuY2UubmF0aXZlRWxlbWVudF07XG4gICAgfVxuICAgIGlmIChyZWYgaW5zdGFuY2VvZiBDb21wb25lbnRSZWYpIHtcbiAgICAgICAgKChyZWYuaG9zdFZpZXcgYXMgYW55KS5yb290Tm9kZXMgYXMgKEhUTUxFbGVtZW50IHwgYW55KVtdKS5mb3JFYWNoKGVsZSA9PiB7XG4gICAgICAgICAgICBpZiAoIShlbGUgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICBlbGUucmVtb3ZlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gW3JlZi5pbnN0YW5jZS5uYXRpdmVFbGVtZW50XTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCByZXN1bHQ6IEhUTUxFbGVtZW50W10gPSBbXTtcbiAgICAgICAgcmVmLnJvb3ROb2Rlcy5mb3JFYWNoKHJvb3ROb2RlID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGlzSFRNTEVsZW1lbnQgPSByb290Tm9kZSBpbnN0YW5jZW9mIEhUTUxFbGVtZW50O1xuICAgICAgICAgICAgaWYgKGlzSFRNTEVsZW1lbnQgJiYgcmVzdWx0LmV2ZXJ5KGl0ZW0gPT4gIWl0ZW0uY29udGFpbnMocm9vdE5vZGUpKSkge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHJvb3ROb2RlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghaXNIVE1MRWxlbWVudCkge1xuICAgICAgICAgICAgICAgIHJvb3ROb2RlLnJlbW92ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtb3VudE9uSXRlbUNoYW5nZShcbiAgICBpbmRleDogbnVtYmVyLFxuICAgIGl0ZW06IERlc2NlbmRhbnQsXG4gICAgdmlld3M6IChFbWJlZGRlZFZpZXdSZWY8YW55PiB8IENvbXBvbmVudFJlZjxhbnk+KVtdLFxuICAgIGJsb2NrQ2FyZHM6IChDb21wb25lbnRSZWY8U2xhdGVCbG9ja0NhcmQ+IHwgbnVsbClbXSB8IG51bGwsXG4gICAgb3V0bGV0UGFyZW50OiBIVE1MRWxlbWVudCxcbiAgICBmaXJzdFJvb3ROb2RlOiBIVE1MRWxlbWVudCB8IG51bGwsXG4gICAgdmlld0NvbnRleHQ6IFNsYXRlVmlld0NvbnRleHRcbikge1xuICAgIGNvbnN0IHZpZXcgPSB2aWV3c1tpbmRleF07XG4gICAgbGV0IHJvb3ROb2RlcyA9IGdldFJvb3ROb2Rlcyh2aWV3KTtcbiAgICBpZiAoYmxvY2tDYXJkcykge1xuICAgICAgICBjb25zdCBpc0Jsb2NrQ2FyZCA9IHZpZXdDb250ZXh0LmVkaXRvci5pc0Jsb2NrQ2FyZChpdGVtKTtcbiAgICAgICAgaWYgKGlzQmxvY2tDYXJkKSB7XG4gICAgICAgICAgICBjb25zdCBibG9ja0NhcmQgPSBibG9ja0NhcmRzW2luZGV4XTtcbiAgICAgICAgICAgIHJvb3ROb2RlcyA9IFtibG9ja0NhcmQuaW5zdGFuY2UubmF0aXZlRWxlbWVudF07XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKGluZGV4ID09PSAwKSB7XG4gICAgICAgIGlmIChmaXJzdFJvb3ROb2RlKSB7XG4gICAgICAgICAgICByb290Tm9kZXMuZm9yRWFjaChyb290Tm9kZSA9PiB7XG4gICAgICAgICAgICAgICAgZmlyc3RSb290Tm9kZS5pbnNlcnRBZGphY2VudEVsZW1lbnQoJ2JlZm9yZWJlZ2luJywgcm9vdE5vZGUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBvdXRsZXRQYXJlbnQucHJlcGVuZCguLi5yb290Tm9kZXMpO1xuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgcHJldmlvdXNWaWV3ID0gdmlld3NbaW5kZXggLSAxXTtcbiAgICAgICAgY29uc3QgYmxvY2tDYXJkID0gYmxvY2tDYXJkcyA/IGJsb2NrQ2FyZHNbaW5kZXggLSAxXSA6IG51bGw7XG4gICAgICAgIGNvbnN0IHByZXZpb3VzUm9vdE5vZGVzID0gZ2V0Um9vdE5vZGVzKHByZXZpb3VzVmlldywgYmxvY2tDYXJkKTtcbiAgICAgICAgbGV0IHByZXZpb3VzUm9vdE5vZGUgPSBwcmV2aW91c1Jvb3ROb2Rlc1twcmV2aW91c1Jvb3ROb2Rlcy5sZW5ndGggLSAxXTtcbiAgICAgICAgcm9vdE5vZGVzLmZvckVhY2gocm9vdE5vZGUgPT4ge1xuICAgICAgICAgICAgcHJldmlvdXNSb290Tm9kZS5pbnNlcnRBZGphY2VudEVsZW1lbnQoJ2FmdGVyZW5kJywgcm9vdE5vZGUpO1xuICAgICAgICAgICAgcHJldmlvdXNSb290Tm9kZSA9IHJvb3ROb2RlO1xuICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=
|
package/utils/constants.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare const TRIPLE_CLICK = 3;
|
package/utils/throttle.d.ts
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { ViewContainerRef } from '@angular/core';
|
|
2
|
-
import { ViewType } from '../../types/view';
|
|
3
|
-
import { SlateLeafContext, SlateTextContext, SlateViewContext } from '../context';
|
|
4
|
-
export declare class LeavesRender {
|
|
5
|
-
private viewContext;
|
|
6
|
-
private viewContainerRef;
|
|
7
|
-
private getOutletParent;
|
|
8
|
-
private getOutletElement;
|
|
9
|
-
private leaves;
|
|
10
|
-
private views;
|
|
11
|
-
private contexts;
|
|
12
|
-
private viewTypes;
|
|
13
|
-
private differ;
|
|
14
|
-
constructor(viewContext: SlateViewContext, viewContainerRef: ViewContainerRef, getOutletParent: () => HTMLElement, getOutletElement: () => HTMLElement);
|
|
15
|
-
initialize(context: SlateTextContext): void;
|
|
16
|
-
update(context: SlateTextContext): void;
|
|
17
|
-
private getLeaves;
|
|
18
|
-
}
|
|
19
|
-
export declare function getContext(index: number, leafContexts: SlateLeafContext[]): SlateLeafContext;
|
|
20
|
-
export declare function getViewType(leafContext: SlateLeafContext, viewContext: SlateViewContext): ViewType;
|
|
21
|
-
export declare function trackBy(viewContext: SlateViewContext): (index: any, node: any) => any;
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { Ancestor, Descendant, Range, Path } from 'slate';
|
|
2
|
-
import { ComponentRef, EmbeddedViewRef, ViewContainerRef } from '@angular/core';
|
|
3
|
-
import { ViewType } from '../../types/view';
|
|
4
|
-
import { SlateChildrenContext, SlateElementContext, SlateTextContext, SlateViewContext } from '../context';
|
|
5
|
-
import { SlateBlockCard } from '../../components/block-card/block-card.component';
|
|
6
|
-
export declare class ListRender {
|
|
7
|
-
private viewContext;
|
|
8
|
-
private viewContainerRef;
|
|
9
|
-
private getOutletParent;
|
|
10
|
-
private getOutletElement;
|
|
11
|
-
private children;
|
|
12
|
-
private views;
|
|
13
|
-
private blockCards;
|
|
14
|
-
private contexts;
|
|
15
|
-
private viewTypes;
|
|
16
|
-
private differ;
|
|
17
|
-
initialized: boolean;
|
|
18
|
-
constructor(viewContext: SlateViewContext, viewContainerRef: ViewContainerRef, getOutletParent: () => HTMLElement, getOutletElement: () => HTMLElement | null);
|
|
19
|
-
initialize(children: Descendant[], parent: Ancestor, childrenContext: SlateChildrenContext): void;
|
|
20
|
-
update(children: Descendant[], parent: Ancestor, childrenContext: SlateChildrenContext): void;
|
|
21
|
-
}
|
|
22
|
-
export declare function getContext(index: number, item: Descendant, parentPath: Path, childrenContext: SlateChildrenContext, viewContext: SlateViewContext): SlateElementContext | SlateTextContext;
|
|
23
|
-
export declare function getCommonContext(index: number, item: Descendant, parentPath: Path, viewContext: SlateViewContext, childrenContext: SlateChildrenContext): {
|
|
24
|
-
selection: Range;
|
|
25
|
-
decorations: Range[];
|
|
26
|
-
};
|
|
27
|
-
export declare function getViewType(item: Descendant, parent: Ancestor, viewContext: SlateViewContext): ViewType;
|
|
28
|
-
export declare function createBlockCard(item: Descendant, view: EmbeddedViewRef<any> | ComponentRef<any>, viewContainerRef: ViewContainerRef, viewContext: SlateViewContext): ComponentRef<SlateBlockCard>;
|
|
29
|
-
export declare function trackBy(viewContext: SlateViewContext): (index: any, node: any) => any;
|
|
30
|
-
export declare function memoizedContext(viewContext: SlateViewContext, descendant: Descendant, prev: SlateElementContext | SlateTextContext, next: SlateElementContext | SlateTextContext): boolean;
|
|
31
|
-
export declare function memoizedElementContext(viewContext: SlateViewContext, prev: SlateElementContext, next: SlateElementContext): boolean;
|
|
32
|
-
export declare function memoizedTextContext(prev: SlateTextContext, next: SlateTextContext): boolean;
|
package/view/render/utils.d.ts
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { Descendant } from 'slate';
|
|
2
|
-
import { ComponentRef, EmbeddedViewRef, ViewContainerRef } from '@angular/core';
|
|
3
|
-
import { ViewType } from '../../types/view';
|
|
4
|
-
import { SlateElementContext, SlateLeafContext, SlateTextContext, SlateViewContext } from '../context';
|
|
5
|
-
import { SlateBlockCard } from '../../components/block-card/block-card.component';
|
|
6
|
-
export declare function createEmbeddedViewOrComponent(viewType: ViewType, context: any, viewContext: SlateViewContext, viewContainerRef: ViewContainerRef): ComponentRef<any> | EmbeddedViewRef<any>;
|
|
7
|
-
export declare function renderView(view: EmbeddedViewRef<any> | ComponentRef<any>): void;
|
|
8
|
-
export declare function updateContext(view: EmbeddedViewRef<any> | ComponentRef<any>, newContext: SlateElementContext | SlateTextContext | SlateLeafContext, viewContext: SlateViewContext): void;
|
|
9
|
-
export declare function mount(views: (EmbeddedViewRef<any> | ComponentRef<any>)[], blockCards: (ComponentRef<SlateBlockCard> | null)[] | null, outletParent: HTMLElement, outletElement: HTMLElement | null): void;
|
|
10
|
-
export declare function getRootNodes(ref: EmbeddedViewRef<any> | ComponentRef<any>, blockCard?: ComponentRef<SlateBlockCard>): HTMLElement[];
|
|
11
|
-
export declare function mountOnItemChange(index: number, item: Descendant, views: (EmbeddedViewRef<any> | ComponentRef<any>)[], blockCards: (ComponentRef<SlateBlockCard> | null)[] | null, outletParent: HTMLElement, firstRootNode: HTMLElement | null, viewContext: SlateViewContext): void;
|