slate-angular 18.0.1 → 19.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/fesm2022/slate-angular.mjs +120 -130
- package/fesm2022/slate-angular.mjs.map +1 -1
- package/package.json +1 -3
- package/view/base.d.ts +4 -4
- package/view/container-item.d.ts +1 -1
- package/view/container.d.ts +1 -1
- package/esm2022/components/block-card/block-card.component.mjs +0 -33
- package/esm2022/components/children/children-outlet.component.mjs +0 -22
- package/esm2022/components/children/children.component.mjs +0 -23
- package/esm2022/components/editable/editable.component.mjs +0 -1266
- package/esm2022/components/element/default-element.component.mjs +0 -19
- package/esm2022/components/element/default-element.component.token.mjs +0 -3
- package/esm2022/components/element/element.component.mjs +0 -19
- package/esm2022/components/leaf/default-leaf.component.mjs +0 -30
- package/esm2022/components/leaf/token.mjs +0 -3
- package/esm2022/components/leaves/leaves.component.mjs +0 -25
- package/esm2022/components/string/default-string.component.mjs +0 -75
- package/esm2022/components/string/string.component.mjs +0 -108
- package/esm2022/components/string/template.component.mjs +0 -20
- package/esm2022/components/text/default-text.component.mjs +0 -22
- package/esm2022/components/text/token.mjs +0 -4
- package/esm2022/components/text/void-text.component.mjs +0 -32
- package/esm2022/custom-event/BeforeInputEventPlugin.mjs +0 -251
- package/esm2022/custom-event/DOMTopLevelEventTypes.mjs +0 -13
- package/esm2022/custom-event/FallbackCompositionState.mjs +0 -62
- package/esm2022/custom-event/before-input-polyfill.mjs +0 -13
- package/esm2022/module.mjs +0 -69
- package/esm2022/plugins/angular-editor.mjs +0 -610
- package/esm2022/plugins/with-angular.mjs +0 -217
- package/esm2022/public-api.mjs +0 -20
- package/esm2022/slate-angular.mjs +0 -5
- package/esm2022/types/clipboard.mjs +0 -2
- package/esm2022/types/error.mjs +0 -12
- package/esm2022/types/feature.mjs +0 -2
- package/esm2022/types/index.mjs +0 -5
- package/esm2022/types/view.mjs +0 -2
- package/esm2022/utils/block-card.mjs +0 -25
- package/esm2022/utils/clipboard/clipboard.mjs +0 -78
- package/esm2022/utils/clipboard/common.mjs +0 -42
- package/esm2022/utils/clipboard/data-transfer.mjs +0 -44
- package/esm2022/utils/clipboard/index.mjs +0 -5
- package/esm2022/utils/clipboard/navigator-clipboard.mjs +0 -59
- package/esm2022/utils/constants.mjs +0 -2
- package/esm2022/utils/dom.mjs +0 -165
- package/esm2022/utils/environment.mjs +0 -34
- package/esm2022/utils/global-normalize.mjs +0 -11
- package/esm2022/utils/hotkeys.mjs +0 -99
- package/esm2022/utils/index.mjs +0 -12
- package/esm2022/utils/key.mjs +0 -14
- package/esm2022/utils/lines.mjs +0 -46
- package/esm2022/utils/range-list.mjs +0 -29
- package/esm2022/utils/restore-dom.mjs +0 -33
- package/esm2022/utils/throttle.mjs +0 -18
- package/esm2022/utils/view.mjs +0 -8
- package/esm2022/utils/weak-maps.mjs +0 -40
- package/esm2022/view/base.mjs +0 -273
- package/esm2022/view/container-item.mjs +0 -108
- package/esm2022/view/container.mjs +0 -22
- package/esm2022/view/context-change.mjs +0 -13
- package/esm2022/view/context.mjs +0 -2
- package/esm2022/view/render/leaves-render.mjs +0 -107
- package/esm2022/view/render/list-render.mjs +0 -302
- package/esm2022/view/render/utils.mjs +0 -110
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
import { Text } from 'slate';
|
|
2
|
-
import { IterableDiffers } from '@angular/core';
|
|
3
|
-
import { createEmbeddedViewOrComponent, getRootNodes, mount, mountOnItemChange, updateContext } from './utils';
|
|
4
|
-
export class LeavesRender {
|
|
5
|
-
constructor(viewContext, viewContainerRef, getOutletParent, getOutletElement) {
|
|
6
|
-
this.viewContext = viewContext;
|
|
7
|
-
this.viewContainerRef = viewContainerRef;
|
|
8
|
-
this.getOutletParent = getOutletParent;
|
|
9
|
-
this.getOutletElement = getOutletElement;
|
|
10
|
-
this.views = [];
|
|
11
|
-
this.contexts = [];
|
|
12
|
-
this.viewTypes = [];
|
|
13
|
-
}
|
|
14
|
-
initialize(context) {
|
|
15
|
-
const { leaves, contexts } = this.getLeaves(context);
|
|
16
|
-
this.leaves = leaves;
|
|
17
|
-
this.contexts = contexts;
|
|
18
|
-
this.leaves.forEach((leaf, index) => {
|
|
19
|
-
const context = getContext(index, this.contexts);
|
|
20
|
-
const viewType = getViewType(context, this.viewContext);
|
|
21
|
-
const view = createEmbeddedViewOrComponent(viewType, context, this.viewContext, this.viewContainerRef);
|
|
22
|
-
this.views.push(view);
|
|
23
|
-
this.contexts.push(context);
|
|
24
|
-
this.viewTypes.push(viewType);
|
|
25
|
-
});
|
|
26
|
-
mount(this.views, null, this.getOutletParent(), this.getOutletElement());
|
|
27
|
-
const newDiffers = this.viewContainerRef.injector.get(IterableDiffers);
|
|
28
|
-
this.differ = newDiffers.find(this.leaves).create(trackBy(this.viewContext));
|
|
29
|
-
this.differ.diff(this.leaves);
|
|
30
|
-
}
|
|
31
|
-
update(context) {
|
|
32
|
-
const { leaves, contexts } = this.getLeaves(context);
|
|
33
|
-
const outletParent = this.getOutletParent();
|
|
34
|
-
const diffResult = this.differ.diff(leaves);
|
|
35
|
-
if (diffResult) {
|
|
36
|
-
let firstRootNode = getRootNodes(this.views[0])[0];
|
|
37
|
-
const newContexts = [];
|
|
38
|
-
const newViewTypes = [];
|
|
39
|
-
const newViews = [];
|
|
40
|
-
diffResult.forEachItem(record => {
|
|
41
|
-
let context = getContext(record.currentIndex, contexts);
|
|
42
|
-
const viewType = getViewType(context, this.viewContext);
|
|
43
|
-
newViewTypes.push(viewType);
|
|
44
|
-
let view;
|
|
45
|
-
if (record.previousIndex === null) {
|
|
46
|
-
view = createEmbeddedViewOrComponent(viewType, context, this.viewContext, this.viewContainerRef);
|
|
47
|
-
newContexts.push(context);
|
|
48
|
-
newViews.push(view);
|
|
49
|
-
mountOnItemChange(record.currentIndex, record.item, newViews, null, outletParent, firstRootNode, this.viewContext);
|
|
50
|
-
}
|
|
51
|
-
else {
|
|
52
|
-
const previousView = this.views[record.previousIndex];
|
|
53
|
-
const previousViewType = this.viewTypes[record.previousIndex];
|
|
54
|
-
if (previousViewType !== viewType) {
|
|
55
|
-
view = createEmbeddedViewOrComponent(viewType, context, this.viewContext, this.viewContainerRef);
|
|
56
|
-
const firstRootNode = getRootNodes(previousView, null)[0];
|
|
57
|
-
const newRootNodes = getRootNodes(view, null);
|
|
58
|
-
firstRootNode.replaceWith(...newRootNodes);
|
|
59
|
-
previousView.destroy();
|
|
60
|
-
}
|
|
61
|
-
else {
|
|
62
|
-
view = previousView;
|
|
63
|
-
updateContext(previousView, context, this.viewContext);
|
|
64
|
-
}
|
|
65
|
-
newContexts.push(context);
|
|
66
|
-
newViews.push(view);
|
|
67
|
-
}
|
|
68
|
-
});
|
|
69
|
-
diffResult.forEachRemovedItem(record => {
|
|
70
|
-
const view = this.views[record.previousIndex];
|
|
71
|
-
view.destroy();
|
|
72
|
-
});
|
|
73
|
-
diffResult.forEachMovedItem(record => {
|
|
74
|
-
mountOnItemChange(record.currentIndex, record.item, newViews, null, outletParent, firstRootNode, this.viewContext);
|
|
75
|
-
});
|
|
76
|
-
this.viewTypes = newViewTypes;
|
|
77
|
-
this.views = newViews;
|
|
78
|
-
this.contexts = newContexts;
|
|
79
|
-
this.leaves = leaves;
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
getLeaves(context) {
|
|
83
|
-
const leaves = Text.decorations(context.text, context.decorations);
|
|
84
|
-
const contexts = leaves.map((leaf, index) => {
|
|
85
|
-
return {
|
|
86
|
-
leaf,
|
|
87
|
-
text: context.text,
|
|
88
|
-
parent: context.parent,
|
|
89
|
-
index,
|
|
90
|
-
isLast: context.isLast && index === leaves.length - 1
|
|
91
|
-
};
|
|
92
|
-
});
|
|
93
|
-
return { leaves, contexts };
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
export function getContext(index, leafContexts) {
|
|
97
|
-
return leafContexts[index];
|
|
98
|
-
}
|
|
99
|
-
export function getViewType(leafContext, viewContext) {
|
|
100
|
-
return (viewContext.renderLeaf && viewContext.renderLeaf(leafContext.leaf)) || viewContext.defaultLeaf;
|
|
101
|
-
}
|
|
102
|
-
export function trackBy(viewContext) {
|
|
103
|
-
return (index, node) => {
|
|
104
|
-
return index;
|
|
105
|
-
};
|
|
106
|
-
}
|
|
107
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGVhdmVzLXJlbmRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL3NyYy92aWV3L3JlbmRlci9sZWF2ZXMtcmVuZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDN0IsT0FBTyxFQUFpRCxlQUFlLEVBQW9CLE1BQU0sZUFBZSxDQUFDO0FBR2pILE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLGlCQUFpQixFQUFFLGFBQWEsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUUvRyxNQUFNLE9BQU8sWUFBWTtJQU9yQixZQUNZLFdBQTZCLEVBQzdCLGdCQUFrQyxFQUNsQyxlQUFrQyxFQUNsQyxnQkFBbUM7UUFIbkMsZ0JBQVcsR0FBWCxXQUFXLENBQWtCO1FBQzdCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsb0JBQWUsR0FBZixlQUFlLENBQW1CO1FBQ2xDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBbUI7UUFUdkMsVUFBSyxHQUFpRCxFQUFFLENBQUM7UUFDekQsYUFBUSxHQUF1QixFQUFFLENBQUM7UUFDbEMsY0FBUyxHQUFlLEVBQUUsQ0FBQztJQVFoQyxDQUFDO0lBRUcsVUFBVSxDQUFDLE9BQXlCO1FBQ3ZDLE1BQU0sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNyRCxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUNoQyxNQUFNLE9BQU8sR0FBRyxVQUFVLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FB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SUFBSSxDQUFDLENBQUMsSUFBSSxXQUFXLENBQUMsV0FBVyxDQUFDO0FBQzNHLENBQUM7QUFFRCxNQUFNLFVBQVUsT0FBTyxDQUFDLFdBQTZCO0lBQ2pELE9BQU8sQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUU7UUFDbkIsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQyxDQUFDO0FBQ04sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRleHQgfSBmcm9tICdzbGF0ZSc7XG5pbXBvcnQgeyBDb21wb25lbnRSZWYsIEVtYmVkZGVkVmlld1JlZiwgSXRlcmFibGVEaWZmZXIsIEl0ZXJhYmxlRGlmZmVycywgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVmlld1R5cGUgfSBmcm9tICcuLi8uLi90eXBlcy92aWV3JztcbmltcG9ydCB7IFNsYXRlTGVhZkNvbnRleHQsIFNsYXRlVGV4dENvbnRleHQsIFNsYXRlVmlld0NvbnRleHQgfSBmcm9tICcuLi9jb250ZXh0JztcbmltcG9ydCB7IGNyZWF0ZUVtYmVkZGVkVmlld09yQ29tcG9uZW50LCBnZXRSb290Tm9kZXMsIG1vdW50LCBtb3VudE9uSXRlbUNoYW5nZSwgdXBkYXRlQ29udGV4dCB9IGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgY2xhc3MgTGVhdmVzUmVuZGVyIHtcbiAgICBwcml2YXRlIGxlYXZlczogVGV4dFtdO1xuICAgIHByaXZhdGUgdmlld3M6IChFbWJlZGRlZFZpZXdSZWY8YW55PiB8IENvbXBvbmVudFJlZjxhbnk+KVtdID0gW107XG4gICAgcHJpdmF0ZSBjb250ZXh0czogU2xhdGVMZWFmQ29udGV4dFtdID0gW107XG4gICAgcHJpdmF0ZSB2aWV3VHlwZXM6IFZpZXdUeXBlW10gPSBbXTtcbiAgICBwcml2YXRlIGRpZmZlcjogSXRlcmFibGVEaWZmZXI8YW55PjtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHZpZXdDb250ZXh0OiBTbGF0ZVZpZXdDb250ZXh0LFxuICAgICAgICBwcml2YXRlIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgICAgIHByaXZhdGUgZ2V0T3V0bGV0UGFyZW50OiAoKSA9PiBIVE1MRWxlbWVudCxcbiAgICAgICAgcHJpdmF0ZSBnZXRPdXRsZXRFbGVtZW50OiAoKSA9PiBIVE1MRWxlbWVudFxuICAgICkge31cblxuICAgIHB1YmxpYyBpbml0aWFsaXplKGNvbnRleHQ6IFNsYXRlVGV4dENvbnRleHQpIHtcbiAgICAgICAgY29uc3QgeyBsZWF2ZXMsIGNvbnRleHRzIH0gPSB0aGlzLmdldExlYXZlcyhjb250ZXh0KTtcbiAgICAgICAgdGhpcy5sZWF2ZXMgPSBsZWF2ZXM7XG4gICAgICAgIHRoaXMuY29udGV4dHMgPSBjb250ZXh0cztcbiAgICAgICAgdGhpcy5sZWF2ZXMuZm9yRWFjaCgobGVhZiwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRleHQgPSBnZXRDb250ZXh0KGluZGV4LCB0aGlzLmNvbnRleHRzKTtcbiAgICAgICAgICAgIGNvbnN0IHZpZXdUeXBlID0gZ2V0Vmlld1R5cGUoY29udGV4dCwgdGhpcy52aWV3Q29udGV4dCk7XG4gICAgICAgICAgICBjb25zdCB2aWV3ID0gY3JlYXRlRW1iZWRkZWRWaWV3T3JDb21wb25lbnQodmlld1R5cGUsIGNvbnRleHQsIHRoaXMudmlld0NvbnRleHQsIHRoaXMudmlld0NvbnRhaW5lclJlZik7XG4gICAgICAgICAgICB0aGlzLnZpZXdzLnB1c2godmlldyk7XG4gICAgICAgICAgICB0aGlzLmNvbnRleHRzLnB1c2goY29udGV4dCk7XG4gICAgICAgICAgICB0aGlzLnZpZXdUeXBlcy5wdXNoKHZpZXdUeXBlKTtcbiAgICAgICAgfSk7XG4gICAgICAgIG1vdW50KHRoaXMudmlld3MsIG51bGwsIHRoaXMuZ2V0T3V0bGV0UGFyZW50KCksIHRoaXMuZ2V0T3V0bGV0RWxlbWVudCgpKTtcbiAgICAgICAgY29uc3QgbmV3RGlmZmVycyA9IHRoaXMudmlld0NvbnRhaW5lclJlZi5pbmplY3Rvci5nZXQoSXRlcmFibGVEaWZmZXJzKTtcbiAgICAgICAgdGhpcy5kaWZmZXIgPSBuZXdEaWZmZXJzLmZpbmQodGhpcy5sZWF2ZXMpLmNyZWF0ZSh0cmFja0J5KHRoaXMudmlld0NvbnRleHQpKTtcbiAgICAgICAgdGhpcy5kaWZmZXIuZGlmZih0aGlzLmxlYXZlcyk7XG4gICAgfVxuXG4gICAgcHVibGljIHVwZGF0ZShjb250ZXh0OiBTbGF0ZVRleHRDb250ZXh0KSB7XG4gICAgICAgIGNvbnN0IHsgbGVhdmVzLCBjb250ZXh0cyB9ID0gdGhpcy5nZXRMZWF2ZXMoY29udGV4dCk7XG4gICAgICAgIGNvbnN0IG91dGxldFBhcmVudCA9IHRoaXMuZ2V0T3V0bGV0UGFyZW50KCk7XG4gICAgICAgIGNvbnN0IGRpZmZSZXN1bHQgPSB0aGlzLmRpZmZlci5kaWZmKGxlYXZlcyk7XG4gICAgICAgIGlmIChkaWZmUmVzdWx0KSB7XG4gICAgICAgICAgICBsZXQgZmlyc3RSb290Tm9kZSA9IGdldFJvb3ROb2Rlcyh0aGlzLnZpZXdzWzBdKVswXTtcbiAgICAgICAgICAgIGNvbnN0IG5ld0NvbnRleHRzID0gW107XG4gICAgICAgICAgICBjb25zdCBuZXdWaWV3VHlwZXMgPSBbXTtcbiAgICAgICAgICAgIGNvbnN0IG5ld1ZpZXdzID0gW107XG4gICAgICAgICAgICBkaWZmUmVzdWx0LmZvckVhY2hJdGVtKHJlY29yZCA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IGNvbnRleHQgPSBnZXRDb250ZXh0KHJlY29yZC5jdXJyZW50SW5kZXgsIGNvbnRleHRzKTtcbiAgICAgICAgICAgICAgICBjb25zdCB2aWV3VHlwZSA9IGdldFZpZXdUeXBlKGNvbnRleHQsIHRoaXMudmlld0NvbnRleHQpO1xuICAgICAgICAgICAgICAgIG5ld1ZpZXdUeXBlcy5wdXNoKHZpZXdUeXBlKTtcbiAgICAgICAgICAgICAgICBsZXQgdmlldzogRW1iZWRkZWRWaWV3UmVmPGFueT4gfCBDb21wb25lbnRSZWY8YW55PjtcbiAgICAgICAgICAgICAgICBpZiAocmVjb3JkLnByZXZpb3VzSW5kZXggPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgdmlldyA9IGNyZWF0ZUVtYmVkZGVkVmlld09yQ29tcG9uZW50KHZpZXdUeXBlLCBjb250ZXh0LCB0aGlzLnZpZXdDb250ZXh0LCB0aGlzLnZpZXdDb250YWluZXJSZWYpO1xuICAgICAgICAgICAgICAgICAgICBuZXdDb250ZXh0cy5wdXNoKGNvbnRleHQpO1xuICAgICAgICAgICAgICAgICAgICBuZXdWaWV3cy5wdXNoKHZpZXcpO1xuICAgICAgICAgICAgICAgICAgICBtb3VudE9uSXRlbUNoYW5nZShyZWNvcmQuY3VycmVudEluZGV4LCByZWNvcmQuaXRlbSwgbmV3Vmlld3MsIG51bGwsIG91dGxldFBhcmVudCwgZmlyc3RSb290Tm9kZSwgdGhpcy52aWV3Q29udGV4dCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJldmlvdXNWaWV3ID0gdGhpcy52aWV3c1tyZWNvcmQucHJldmlvdXNJbmRleF07XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHByZXZpb3VzVmlld1R5cGUgPSB0aGlzLnZpZXdUeXBlc1tyZWNvcmQucHJldmlvdXNJbmRleF07XG4gICAgICAgICAgICAgICAgICAgIGlmIChwcmV2aW91c1ZpZXdUeXBlICE9PSB2aWV3VHlwZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmlldyA9IGNyZWF0ZUVtYmVkZGVkVmlld09yQ29tcG9uZW50KHZpZXdUeXBlLCBjb250ZXh0LCB0aGlzLnZpZXdDb250ZXh0LCB0aGlzLnZpZXdDb250YWluZXJSZWYpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZmlyc3RSb290Tm9kZSA9IGdldFJvb3ROb2RlcyhwcmV2aW91c1ZpZXcsIG51bGwpWzBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV3Um9vdE5vZGVzID0gZ2V0Um9vdE5vZGVzKHZpZXcsIG51bGwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3RSb290Tm9kZS5yZXBsYWNlV2l0aCguLi5uZXdSb290Tm9kZXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNWaWV3LmRlc3Ryb3koKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZpZXcgPSBwcmV2aW91c1ZpZXc7XG4gICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVDb250ZXh0KHByZXZpb3VzVmlldywgY29udGV4dCwgdGhpcy52aWV3Q29udGV4dCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgbmV3Q29udGV4dHMucHVzaChjb250ZXh0KTtcbiAgICAgICAgICAgICAgICAgICAgbmV3Vmlld3MucHVzaCh2aWV3KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGRpZmZSZXN1bHQuZm9yRWFjaFJlbW92ZWRJdGVtKHJlY29yZCA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgdmlldyA9IHRoaXMudmlld3NbcmVjb3JkLnByZXZpb3VzSW5kZXhdO1xuICAgICAgICAgICAgICAgIHZpZXcuZGVzdHJveSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBkaWZmUmVzdWx0LmZvckVhY2hNb3ZlZEl0ZW0ocmVjb3JkID0+IHtcbiAgICAgICAgICAgICAgICBtb3VudE9uSXRlbUNoYW5nZShyZWNvcmQuY3VycmVudEluZGV4LCByZWNvcmQuaXRlbSwgbmV3Vmlld3MsIG51bGwsIG91dGxldFBhcmVudCwgZmlyc3RSb290Tm9kZSwgdGhpcy52aWV3Q29udGV4dCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMudmlld1R5cGVzID0gbmV3Vmlld1R5cGVzO1xuICAgICAgICAgICAgdGhpcy52aWV3cyA9IG5ld1ZpZXdzO1xuICAgICAgICAgICAgdGhpcy5jb250ZXh0cyA9IG5ld0NvbnRleHRzO1xuICAgICAgICAgICAgdGhpcy5sZWF2ZXMgPSBsZWF2ZXM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldExlYXZlcyhjb250ZXh0OiBTbGF0ZVRleHRDb250ZXh0KSB7XG4gICAgICAgIGNvbnN0IGxlYXZlcyA9IFRleHQuZGVjb3JhdGlvbnMoY29udGV4dC50ZXh0LCBjb250ZXh0LmRlY29yYXRpb25zKTtcbiAgICAgICAgY29uc3QgY29udGV4dHMgPSBsZWF2ZXMubWFwKChsZWFmLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBsZWFmLFxuICAgICAgICAgICAgICAgIHRleHQ6IGNvbnRleHQudGV4dCxcbiAgICAgICAgICAgICAgICBwYXJlbnQ6IGNvbnRleHQucGFyZW50LFxuICAgICAgICAgICAgICAgIGluZGV4LFxuICAgICAgICAgICAgICAgIGlzTGFzdDogY29udGV4dC5pc0xhc3QgJiYgaW5kZXggPT09IGxlYXZlcy5sZW5ndGggLSAxXG4gICAgICAgICAgICB9O1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHsgbGVhdmVzLCBjb250ZXh0cyB9O1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldENvbnRleHQoaW5kZXg6IG51bWJlciwgbGVhZkNvbnRleHRzOiBTbGF0ZUxlYWZDb250ZXh0W10pOiBTbGF0ZUxlYWZDb250ZXh0IHtcbiAgICByZXR1cm4gbGVhZkNvbnRleHRzW2luZGV4XTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFZpZXdUeXBlKGxlYWZDb250ZXh0OiBTbGF0ZUxlYWZDb250ZXh0LCB2aWV3Q29udGV4dDogU2xhdGVWaWV3Q29udGV4dCkge1xuICAgIHJldHVybiAodmlld0NvbnRleHQucmVuZGVyTGVhZiAmJiB2aWV3Q29udGV4dC5yZW5kZXJMZWFmKGxlYWZDb250ZXh0LmxlYWYpKSB8fCB2aWV3Q29udGV4dC5kZWZhdWx0TGVhZjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRyYWNrQnkodmlld0NvbnRleHQ6IFNsYXRlVmlld0NvbnRleHQpIHtcbiAgICByZXR1cm4gKGluZGV4LCBub2RlKSA9PiB7XG4gICAgICAgIHJldHVybiBpbmRleDtcbiAgICB9O1xufVxuIl19
|
|
@@ -1,302 +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 { EDITOR_TO_AFTER_VIEW_INIT_QUEUE, 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
|
-
// private addedViews: (EmbeddedViewRef<any> | ComponentRef<any>)[] = [];
|
|
17
|
-
this.blockCards = [];
|
|
18
|
-
this.contexts = [];
|
|
19
|
-
this.viewTypes = [];
|
|
20
|
-
this.differ = null;
|
|
21
|
-
this.initialized = false;
|
|
22
|
-
}
|
|
23
|
-
initialize(children, parent, childrenContext) {
|
|
24
|
-
this.initialized = true;
|
|
25
|
-
this.children = children;
|
|
26
|
-
const parentPath = AngularEditor.findPath(this.viewContext.editor, parent);
|
|
27
|
-
children.forEach((descendant, index) => {
|
|
28
|
-
NODE_TO_INDEX.set(descendant, index);
|
|
29
|
-
NODE_TO_PARENT.set(descendant, parent);
|
|
30
|
-
const context = getContext(index, descendant, parentPath, childrenContext, this.viewContext);
|
|
31
|
-
const viewType = getViewType(descendant, parent, this.viewContext);
|
|
32
|
-
const view = createEmbeddedViewOrComponent(viewType, context, this.viewContext, this.viewContainerRef);
|
|
33
|
-
const blockCard = createBlockCard(descendant, view, this.viewContainerRef, this.viewContext);
|
|
34
|
-
this.views.push(view);
|
|
35
|
-
this.contexts.push(context);
|
|
36
|
-
this.viewTypes.push(viewType);
|
|
37
|
-
this.blockCards.push(blockCard);
|
|
38
|
-
});
|
|
39
|
-
mount(this.views, this.blockCards, this.getOutletParent(), this.getOutletElement());
|
|
40
|
-
const newDiffers = this.viewContainerRef.injector.get(IterableDiffers);
|
|
41
|
-
this.differ = newDiffers.find(children).create(trackBy(this.viewContext));
|
|
42
|
-
this.differ.diff(children);
|
|
43
|
-
if (parent === this.viewContext.editor) {
|
|
44
|
-
executeAfterViewInit(this.viewContext.editor);
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
update(children, parent, childrenContext) {
|
|
48
|
-
if (!this.initialized || this.children.length === 0) {
|
|
49
|
-
this.initialize(children, parent, childrenContext);
|
|
50
|
-
return;
|
|
51
|
-
}
|
|
52
|
-
if (!this.differ) {
|
|
53
|
-
throw new Error('Exception: Can not find differ ');
|
|
54
|
-
}
|
|
55
|
-
const outletParent = this.getOutletParent();
|
|
56
|
-
const diffResult = this.differ.diff(children);
|
|
57
|
-
const parentPath = AngularEditor.findPath(this.viewContext.editor, parent);
|
|
58
|
-
if (diffResult) {
|
|
59
|
-
let firstRootNode = getRootNodes(this.views[0], this.blockCards[0])[0];
|
|
60
|
-
const newContexts = [];
|
|
61
|
-
const newViewTypes = [];
|
|
62
|
-
const newViews = [];
|
|
63
|
-
const newBlockCards = [];
|
|
64
|
-
diffResult.forEachItem(record => {
|
|
65
|
-
NODE_TO_INDEX.set(record.item, record.currentIndex);
|
|
66
|
-
NODE_TO_PARENT.set(record.item, parent);
|
|
67
|
-
let context = getContext(record.currentIndex, record.item, parentPath, childrenContext, this.viewContext);
|
|
68
|
-
const viewType = getViewType(record.item, parent, this.viewContext);
|
|
69
|
-
newViewTypes.push(viewType);
|
|
70
|
-
let view;
|
|
71
|
-
let blockCard;
|
|
72
|
-
if (record.previousIndex === null) {
|
|
73
|
-
view = createEmbeddedViewOrComponent(viewType, context, this.viewContext, this.viewContainerRef);
|
|
74
|
-
blockCard = createBlockCard(record.item, view, this.viewContainerRef, this.viewContext);
|
|
75
|
-
newContexts.push(context);
|
|
76
|
-
newViews.push(view);
|
|
77
|
-
newBlockCards.push(blockCard);
|
|
78
|
-
mountOnItemChange(record.currentIndex, record.item, newViews, newBlockCards, outletParent, firstRootNode, this.viewContext);
|
|
79
|
-
}
|
|
80
|
-
else {
|
|
81
|
-
const previousView = this.views[record.previousIndex];
|
|
82
|
-
const previousViewType = this.viewTypes[record.previousIndex];
|
|
83
|
-
const previousContext = this.contexts[record.previousIndex];
|
|
84
|
-
const previousBlockCard = this.blockCards[record.previousIndex];
|
|
85
|
-
if (previousViewType !== viewType) {
|
|
86
|
-
view = createEmbeddedViewOrComponent(viewType, context, this.viewContext, this.viewContainerRef);
|
|
87
|
-
blockCard = createBlockCard(record.item, view, this.viewContainerRef, this.viewContext);
|
|
88
|
-
const firstRootNode = getRootNodes(previousView, previousBlockCard)[0];
|
|
89
|
-
const newRootNodes = getRootNodes(view, blockCard);
|
|
90
|
-
firstRootNode.replaceWith(...newRootNodes);
|
|
91
|
-
previousView.destroy();
|
|
92
|
-
previousBlockCard?.destroy();
|
|
93
|
-
}
|
|
94
|
-
else {
|
|
95
|
-
view = previousView;
|
|
96
|
-
blockCard = previousBlockCard;
|
|
97
|
-
if (memoizedContext(this.viewContext, record.item, previousContext, context)) {
|
|
98
|
-
context = previousContext;
|
|
99
|
-
}
|
|
100
|
-
else {
|
|
101
|
-
updateContext(previousView, context, this.viewContext);
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
newContexts.push(context);
|
|
105
|
-
newViews.push(view);
|
|
106
|
-
newBlockCards.push(blockCard);
|
|
107
|
-
}
|
|
108
|
-
});
|
|
109
|
-
diffResult.forEachOperation(record => {
|
|
110
|
-
// removed
|
|
111
|
-
if (record.currentIndex === null) {
|
|
112
|
-
const view = this.views[record.previousIndex];
|
|
113
|
-
const blockCard = this.blockCards[record.previousIndex];
|
|
114
|
-
view.destroy();
|
|
115
|
-
blockCard?.destroy();
|
|
116
|
-
}
|
|
117
|
-
// moved
|
|
118
|
-
if (record.previousIndex !== null && record.currentIndex !== null) {
|
|
119
|
-
mountOnItemChange(record.currentIndex, record.item, newViews, newBlockCards, outletParent, firstRootNode, this.viewContext);
|
|
120
|
-
// Solve the block-card DOMElement loss when moving nodes
|
|
121
|
-
newBlockCards[record.currentIndex]?.instance.append();
|
|
122
|
-
}
|
|
123
|
-
});
|
|
124
|
-
this.viewTypes = newViewTypes;
|
|
125
|
-
this.views = newViews;
|
|
126
|
-
this.contexts = newContexts;
|
|
127
|
-
this.children = children;
|
|
128
|
-
this.blockCards = newBlockCards;
|
|
129
|
-
if (parent === this.viewContext.editor) {
|
|
130
|
-
executeAfterViewInit(this.viewContext.editor);
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
else {
|
|
134
|
-
const newContexts = [];
|
|
135
|
-
this.children.forEach((child, index) => {
|
|
136
|
-
NODE_TO_INDEX.set(child, index);
|
|
137
|
-
NODE_TO_PARENT.set(child, parent);
|
|
138
|
-
let context = getContext(index, child, parentPath, childrenContext, this.viewContext);
|
|
139
|
-
const previousContext = this.contexts[index];
|
|
140
|
-
if (memoizedContext(this.viewContext, child, previousContext, context)) {
|
|
141
|
-
context = previousContext;
|
|
142
|
-
}
|
|
143
|
-
else {
|
|
144
|
-
updateContext(this.views[index], context, this.viewContext);
|
|
145
|
-
}
|
|
146
|
-
newContexts.push(context);
|
|
147
|
-
});
|
|
148
|
-
this.contexts = newContexts;
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
destroy() {
|
|
152
|
-
this.children.forEach((element, index) => {
|
|
153
|
-
if (this.views[index]) {
|
|
154
|
-
this.views[index].destroy();
|
|
155
|
-
}
|
|
156
|
-
if (this.blockCards[index]) {
|
|
157
|
-
this.blockCards[index].destroy();
|
|
158
|
-
}
|
|
159
|
-
});
|
|
160
|
-
this.views = [];
|
|
161
|
-
this.blockCards = [];
|
|
162
|
-
this.contexts = [];
|
|
163
|
-
this.viewTypes = [];
|
|
164
|
-
this.initialized = false;
|
|
165
|
-
this.differ = null;
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
export function getContext(index, item, parentPath, childrenContext, viewContext) {
|
|
169
|
-
if (Element.isElement(item)) {
|
|
170
|
-
const computedContext = getCommonContext(index, item, parentPath, viewContext, childrenContext);
|
|
171
|
-
const key = AngularEditor.findKey(viewContext.editor, item);
|
|
172
|
-
const isInline = viewContext.editor.isInline(item);
|
|
173
|
-
const isVoid = viewContext.editor.isVoid(item);
|
|
174
|
-
const elementContext = {
|
|
175
|
-
element: item,
|
|
176
|
-
...computedContext,
|
|
177
|
-
attributes: {
|
|
178
|
-
'data-slate-node': 'element',
|
|
179
|
-
'data-slate-key': key.id
|
|
180
|
-
},
|
|
181
|
-
decorate: childrenContext.decorate,
|
|
182
|
-
readonly: childrenContext.readonly
|
|
183
|
-
};
|
|
184
|
-
if (isInline) {
|
|
185
|
-
elementContext.attributes['data-slate-inline'] = true;
|
|
186
|
-
}
|
|
187
|
-
if (isVoid) {
|
|
188
|
-
elementContext.attributes['data-slate-void'] = true;
|
|
189
|
-
}
|
|
190
|
-
// add contentEditable for block element only to avoid chinese input be broken
|
|
191
|
-
if (isVoid && !isInline) {
|
|
192
|
-
elementContext.contentEditable = false;
|
|
193
|
-
}
|
|
194
|
-
return elementContext;
|
|
195
|
-
}
|
|
196
|
-
else {
|
|
197
|
-
const computedContext = getCommonContext(index, item, parentPath, viewContext, childrenContext);
|
|
198
|
-
const isLeafBlock = AngularEditor.isLeafBlock(viewContext.editor, childrenContext.parent);
|
|
199
|
-
const textContext = {
|
|
200
|
-
decorations: computedContext.decorations,
|
|
201
|
-
isLast: isLeafBlock && index === childrenContext.parent.children.length - 1,
|
|
202
|
-
parent: childrenContext.parent,
|
|
203
|
-
text: item
|
|
204
|
-
};
|
|
205
|
-
return textContext;
|
|
206
|
-
}
|
|
207
|
-
}
|
|
208
|
-
export function getCommonContext(index, item, parentPath, viewContext, childrenContext) {
|
|
209
|
-
const p = parentPath.concat(index);
|
|
210
|
-
try {
|
|
211
|
-
const ds = childrenContext.decorate([item, p]);
|
|
212
|
-
// [list-render] performance optimization: reduce the number of calls to the `Editor.range(viewContext.editor, p)` method
|
|
213
|
-
if (childrenContext.selection || childrenContext.decorations.length > 0) {
|
|
214
|
-
const range = Editor.range(viewContext.editor, p);
|
|
215
|
-
const sel = childrenContext.selection && Range.intersection(range, childrenContext.selection);
|
|
216
|
-
for (const dec of childrenContext.decorations) {
|
|
217
|
-
const d = Range.intersection(dec, range);
|
|
218
|
-
if (d) {
|
|
219
|
-
ds.push(d);
|
|
220
|
-
}
|
|
221
|
-
}
|
|
222
|
-
return { selection: sel, decorations: ds };
|
|
223
|
-
}
|
|
224
|
-
else {
|
|
225
|
-
return { selection: null, decorations: ds };
|
|
226
|
-
}
|
|
227
|
-
}
|
|
228
|
-
catch (error) {
|
|
229
|
-
viewContext.editor.onError({
|
|
230
|
-
code: SlateErrorCode.GetStartPointError,
|
|
231
|
-
nativeError: error
|
|
232
|
-
});
|
|
233
|
-
return { selection: null, decorations: [] };
|
|
234
|
-
}
|
|
235
|
-
}
|
|
236
|
-
export function getViewType(item, parent, viewContext) {
|
|
237
|
-
if (Element.isElement(item)) {
|
|
238
|
-
return (viewContext.renderElement && viewContext.renderElement(item)) || viewContext.defaultElement;
|
|
239
|
-
}
|
|
240
|
-
else {
|
|
241
|
-
const isVoid = viewContext.editor.isVoid(parent);
|
|
242
|
-
return isVoid ? viewContext.defaultVoidText : (viewContext.renderText && viewContext.renderText(item)) || viewContext.defaultText;
|
|
243
|
-
}
|
|
244
|
-
}
|
|
245
|
-
export function createBlockCard(item, view, viewContainerRef, viewContext) {
|
|
246
|
-
const isBlockCard = viewContext.editor.isBlockCard(item);
|
|
247
|
-
if (isBlockCard) {
|
|
248
|
-
const rootNodes = getRootNodes(view);
|
|
249
|
-
const blockCardComponentRef = viewContainerRef.createComponent(SlateBlockCard, {
|
|
250
|
-
injector: viewContainerRef.injector
|
|
251
|
-
});
|
|
252
|
-
blockCardComponentRef.instance.initializeCenter(rootNodes);
|
|
253
|
-
blockCardComponentRef.changeDetectorRef.detectChanges();
|
|
254
|
-
return blockCardComponentRef;
|
|
255
|
-
}
|
|
256
|
-
else {
|
|
257
|
-
return null;
|
|
258
|
-
}
|
|
259
|
-
}
|
|
260
|
-
export function trackBy(viewContext) {
|
|
261
|
-
return (index, node) => {
|
|
262
|
-
return viewContext.trackBy(node) || AngularEditor.findKey(viewContext.editor, node);
|
|
263
|
-
};
|
|
264
|
-
}
|
|
265
|
-
export function memoizedContext(viewContext, descendant, prev, next) {
|
|
266
|
-
if (Element.isElement(descendant)) {
|
|
267
|
-
return memoizedElementContext(viewContext, prev, next);
|
|
268
|
-
}
|
|
269
|
-
else {
|
|
270
|
-
return memoizedTextContext(prev, next);
|
|
271
|
-
}
|
|
272
|
-
}
|
|
273
|
-
export function memoizedElementContext(viewContext, prev, next) {
|
|
274
|
-
return (prev.element === next.element &&
|
|
275
|
-
(!viewContext.isStrictDecorate || prev.decorate === next.decorate) &&
|
|
276
|
-
prev.readonly === next.readonly &&
|
|
277
|
-
isDecoratorRangeListEqual(prev.decorations, next.decorations) &&
|
|
278
|
-
(prev.selection === next.selection || (!!prev.selection && !!next.selection && Range.equals(prev.selection, next.selection))));
|
|
279
|
-
}
|
|
280
|
-
export function memoizedTextContext(prev, next) {
|
|
281
|
-
return (next.parent === prev.parent &&
|
|
282
|
-
next.isLast === prev.isLast &&
|
|
283
|
-
next.text === prev.text &&
|
|
284
|
-
isDecoratorRangeListEqual(next.decorations, prev.decorations));
|
|
285
|
-
}
|
|
286
|
-
export function addAfterViewInitQueue(editor, afterViewInitCallback) {
|
|
287
|
-
const queue = getAfterViewInitQueue(editor);
|
|
288
|
-
queue.push(afterViewInitCallback);
|
|
289
|
-
EDITOR_TO_AFTER_VIEW_INIT_QUEUE.set(editor, queue);
|
|
290
|
-
}
|
|
291
|
-
export function getAfterViewInitQueue(editor) {
|
|
292
|
-
return EDITOR_TO_AFTER_VIEW_INIT_QUEUE.get(editor) || [];
|
|
293
|
-
}
|
|
294
|
-
export function clearAfterViewInitQueue(editor) {
|
|
295
|
-
EDITOR_TO_AFTER_VIEW_INIT_QUEUE.set(editor, []);
|
|
296
|
-
}
|
|
297
|
-
export function executeAfterViewInit(editor) {
|
|
298
|
-
const queue = getAfterViewInitQueue(editor);
|
|
299
|
-
queue.forEach(callback => callback());
|
|
300
|
-
clearAfterViewInitQueue(editor);
|
|
301
|
-
}
|
|
302
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1yZW5kZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvdmlldy9yZW5kZXIvbGlzdC1yZW5kZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF3QixLQUFLLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBUSxNQUFNLE9BQU8sQ0FBQztBQUMzRSxPQUFPLEVBQWlELGVBQWUsRUFBb0IsTUFBTSxlQUFlLENBQUM7QUFHakgsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzdELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsK0JBQStCLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3ZHLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ25FLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUNsRixPQUFPLEVBQUUsNkJBQTZCLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxhQUFhLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFFL0csTUFBTSxPQUFPLFVBQVU7SUFVbkIsWUFDWSxXQUE2QixFQUM3QixnQkFBa0MsRUFDbEMsZUFBa0MsRUFDbEMsZ0JBQTBDO1FBSDFDLGdCQUFXLEdBQVgsV0FBVyxDQUFrQjtRQUM3QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLG9CQUFlLEdBQWYsZUFBZSxDQUFtQjtRQUNsQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQTBCO1FBWjlDLFVBQUssR0FBaUQsRUFBRSxDQUFDO1FBQ2pFLHlFQUF5RTtRQUNqRSxlQUFVLEdBQTRDLEVBQUUsQ0FBQztRQUN6RCxhQUFRLEdBQStDLEVBQUUsQ0FBQztRQUMxRCxjQUFTLEdBQWUsRUFBRSxDQUFDO1FBQzNCLFdBQU0sR0FB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O0lBQy9DLE1BQU0sS0FBSyxHQUFHLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzVDLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQ3RDLHVCQUF1QixDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3BDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBbmNlc3RvciwgRGVzY2VuZGFudCwgUmFuZ2UsIEVkaXRvciwgRWxlbWVudCwgUGF0aCB9IGZyb20gJ3NsYXRlJztcbmltcG9ydCB7IENvbXBvbmVudFJlZiwgRW1iZWRkZWRWaWV3UmVmLCBJdGVyYWJsZURpZmZlciwgSXRlcmFibGVEaWZmZXJzLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBWaWV3VHlwZSB9IGZyb20gJy4uLy4uL3R5cGVzL3ZpZXcnO1xuaW1wb3J0IHsgU2xhdGVDaGlsZHJlbkNvbnRleHQsIFNsYXRlRWxlbWVudENvbnRleHQsIFNsYXRlVGV4dENvbnRleHQsIFNsYXRlVmlld0NvbnRleHQgfSBmcm9tICcuLi9jb250ZXh0JztcbmltcG9ydCB7IEFuZ3VsYXJFZGl0b3IgfSBmcm9tICcuLi8uLi9wbHVnaW5zL2FuZ3VsYXItZWRpdG9yJztcbmltcG9ydCB7IFNsYXRlRXJyb3JDb2RlIH0gZnJvbSAnLi4vLi4vdHlwZXMvZXJyb3InO1xuaW1wb3J0IHsgRURJVE9SX1RPX0FGVEVSX1ZJRVdfSU5JVF9RVUVVRSwgTk9ERV9UT19JTkRFWCwgTk9ERV9UT19QQVJFTlQgfSBmcm9tICcuLi8uLi91dGlscy93ZWFrLW1hcHMnO1xuaW1wb3J0IHsgaXNEZWNvcmF0b3JSYW5nZUxpc3RFcXVhbCB9IGZyb20gJy4uLy4uL3V0aWxzL3JhbmdlLWxpc3QnO1xuaW1wb3J0IHsgU2xhdGVCbG9ja0NhcmQgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2Jsb2NrLWNhcmQvYmxvY2stY2FyZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgY3JlYXRlRW1iZWRkZWRWaWV3T3JDb21wb25lbnQsIGdldFJvb3ROb2RlcywgbW91bnQsIG1vdW50T25JdGVtQ2hhbmdlLCB1cGRhdGVDb250ZXh0IH0gZnJvbSAnLi91dGlscyc7XG5cbmV4cG9ydCBjbGFzcyBMaXN0UmVuZGVyIHtcbiAgICBwcml2YXRlIGNoaWxkcmVuOiBEZXNjZW5kYW50W107XG4gICAgcHJpdmF0ZSB2aWV3czogKEVtYmVkZGVkVmlld1JlZjxhbnk+IHwgQ29tcG9uZW50UmVmPGFueT4pW10gPSBbXTtcbiAgICAvLyBwcml2YXRlIGFkZGVkVmlld3M6IChFbWJlZGRlZFZpZXdSZWY8YW55PiB8IENvbXBvbmVudFJlZjxhbnk+KVtdID0gW107XG4gICAgcHJpdmF0ZSBibG9ja0NhcmRzOiAoQ29tcG9uZW50UmVmPFNsYXRlQmxvY2tDYXJkPiB8IG51bGwpW10gPSBbXTtcbiAgICBwcml2YXRlIGNvbnRleHRzOiAoU2xhdGVUZXh0Q29udGV4dCB8IFNsYXRlRWxlbWVudENvbnRleHQpW10gPSBbXTtcbiAgICBwcml2YXRlIHZpZXdUeXBlczogVmlld1R5cGVbXSA9IFtdO1xuICAgIHByaXZhdGUgZGlmZmVyOiBJdGVyYWJsZURpZmZlcjxhbnk+IHwgbnVsbCA9IG51bGw7XG4gICAgcHVibGljIGluaXRpYWxpemVkID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSB2aWV3Q29udGV4dDogU2xhdGVWaWV3Q29udGV4dCxcbiAgICAgICAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgICAgICBwcml2YXRlIGdldE91dGxldFBhcmVudDogKCkgPT4gSFRNTEVsZW1lbnQsXG4gICAgICAgIHByaXZhdGUgZ2V0T3V0bGV0RWxlbWVudDogKCkgPT4gSFRNTEVsZW1lbnQgfCBudWxsXG4gICAgKSB7fVxuXG4gICAgcHVibGljIGluaXRpYWxpemUoY2hpbGRyZW46IERlc2NlbmRhbnRbXSwgcGFyZW50OiBBbmNlc3RvciwgY2hpbGRyZW5Db250ZXh0OiBTbGF0ZUNoaWxkcmVuQ29udGV4dCkge1xuICAgICAgICB0aGlzLmluaXRpYWxpemVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5jaGlsZHJlbiA9IGNoaWxkcmVuO1xuICAgICAgICBjb25zdCBwYXJlbnRQYXRoID0gQW5ndWxhckVkaXRvci5maW5kUGF0aCh0aGlzLnZpZXdDb250ZXh0LmVkaXRvciwgcGFyZW50KTtcbiAgICAgICAgY2hpbGRyZW4uZm9yRWFjaCgoZGVzY2VuZGFudCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIE5PREVfVE9fSU5ERVguc2V0KGRlc2NlbmRhbnQsIGluZGV4KTtcbiAgICAgICAgICAgIE5PREVfVE9fUEFSRU5ULnNldChkZXNjZW5kYW50LCBwYXJlbnQpO1xuICAgICAgICAgICAgY29uc3QgY29udGV4dCA9IGdldENvbnRleHQoaW5kZXgsIGRlc2NlbmRhbnQsIHBhcmVudFBhdGgsIGNoaWxkcmVuQ29udGV4dCwgdGhpcy52aWV3Q29udGV4dCk7XG4gICAgICAgICAgICBjb25zdCB2aWV3VHlwZSA9IGdldFZpZXdUeXBlKGRlc2NlbmRhbnQsIHBhcmVudCwgdGhpcy52aWV3Q29udGV4dCk7XG4gICAgICAgICAgICBjb25zdCB2aWV3ID0gY3JlYXRlRW1iZWRkZWRWaWV3T3JDb21wb25lbnQodmlld1R5cGUsIGNvbnRleHQsIHRoaXMudmlld0NvbnRleHQsIHRoaXMudmlld0NvbnRhaW5lclJlZik7XG4gICAgICAgICAgICBjb25zdCBibG9ja0NhcmQgPSBjcmVhdGVCbG9ja0NhcmQoZGVzY2VuZGFudCwgdmlldywgdGhpcy52aWV3Q29udGFpbmVyUmVmLCB0aGlzLnZpZXdDb250ZXh0KTtcbiAgICAgICAgICAgIHRoaXMudmlld3MucHVzaCh2aWV3KTtcbiAgICAgICAgICAgIHRoaXMuY29udGV4dHMucHVzaChjb250ZXh0KTtcbiAgICAgICAgICAgIHRoaXMudmlld1R5cGVzLnB1c2godmlld1R5cGUpO1xuICAgICAgICAgICAgdGhpcy5ibG9ja0NhcmRzLnB1c2goYmxvY2tDYXJkKTtcbiAgICAgICAgfSk7XG4gICAgICAgIG1vdW50KHRoaXMudmlld3MsIHRoaXMuYmxvY2tDYXJkcywgdGhpcy5nZXRPdXRsZXRQYXJlbnQoKSwgdGhpcy5nZXRPdXRsZXRFbGVtZW50KCkpO1xuICAgICAgICBjb25zdCBuZXdEaWZmZXJzID0gdGhpcy52aWV3Q29udGFpbmVyUmVmLmluamVjdG9yLmdldChJdGVyYWJsZURpZmZlcnMpO1xuICAgICAgICB0aGlzLmRpZmZlciA9IG5ld0RpZmZlcnMuZmluZChjaGlsZHJlbikuY3JlYXRlKHRyYWNrQnkodGhpcy52aWV3Q29udGV4dCkpO1xuICAgICAgICB0aGlzLmRpZmZlci5kaWZmKGNoaWxkcmVuKTtcbiAgICAgICAgaWYgKHBhcmVudCA9PT0gdGhpcy52aWV3Q29udGV4dC5lZGl0b3IpIHtcbiAgICAgICAgICAgIGV4ZWN1dGVBZnRlclZpZXdJbml0KHRoaXMudmlld0NvbnRleHQuZWRpdG9yKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyB1cGRhdGUoY2hpbGRyZW46IERlc2NlbmRhbnRbXSwgcGFyZW50OiBBbmNlc3RvciwgY2hpbGRyZW5Db250ZXh0OiBTbGF0ZUNoaWxkcmVuQ29udGV4dCkge1xuICAgICAgICBpZiAoIXRoaXMuaW5pdGlhbGl6ZWQgfHwgdGhpcy5jaGlsZHJlbi5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZShjaGlsZHJlbiwgcGFyZW50LCBjaGlsZHJlbkNvbnRleHQpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5kaWZmZXIpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRXhjZXB0aW9uOiBDYW4gbm90IGZpbmQgZGlmZmVyICcpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG91dGxldFBhcmVudCA9IHRoaXMuZ2V0T3V0bGV0UGFyZW50KCk7XG4gICAgICAgIGNvbnN0IGRpZmZSZXN1bHQgPSB0aGlzLmRpZmZlci5kaWZmKGNoaWxkcmVuKTtcbiAgICAgICAgY29uc3QgcGFyZW50UGF0aCA9IEFuZ3VsYXJFZGl0b3IuZmluZFBhdGgodGhpcy52aWV3Q29udGV4dC5lZGl0b3IsIHBhcmVudCk7XG4gICAgICAgIGlmIChkaWZmUmVzdWx0KSB7XG4gICAgICAgICAgICBsZXQgZmlyc3RSb290Tm9kZSA9IGdldFJvb3ROb2Rlcyh0aGlzLnZpZXdzWzBdLCB0aGlzLmJsb2NrQ2FyZHNbMF0pWzBdO1xuICAgICAgICAgICAgY29uc3QgbmV3Q29udGV4dHMgPSBbXTtcbiAgICAgICAgICAgIGNvbnN0IG5ld1ZpZXdUeXBlcyA9IFtdO1xuICAgICAgICAgICAgY29uc3QgbmV3Vmlld3MgPSBbXTtcbiAgICAgICAgICAgIGNvbnN0IG5ld0Jsb2NrQ2FyZHM6IChDb21wb25lbnRSZWY8U2xhdGVCbG9ja0NhcmQ+IHwgbnVsbClbXSA9IFtdO1xuICAgICAgICAgICAgZGlmZlJlc3VsdC5mb3JFYWNoSXRlbShyZWNvcmQgPT4ge1xuICAgICAgICAgICAgICAgIE5PREVfVE9fSU5ERVguc2V0KHJlY29yZC5pdGVtLCByZWNvcmQuY3VycmVudEluZGV4KTtcbiAgICAgICAgICAgICAgICBOT0RFX1RPX1BBUkVOVC5zZXQocmVjb3JkLml0ZW0sIHBhcmVudCk7XG4gICAgICAgICAgICAgICAgbGV0IGNvbnRleHQgPSBnZXRDb250ZXh0KHJlY29yZC5jdXJyZW50SW5kZXgsIHJlY29yZC5pdGVtLCBwYXJlbnRQYXRoLCBjaGlsZHJlbkNvbnRleHQsIHRoaXMudmlld0NvbnRleHQpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHZpZXdUeXBlID0gZ2V0Vmlld1R5cGUocmVjb3JkLml0ZW0sIHBhcmVudCwgdGhpcy52aWV3Q29udGV4dCk7XG4gICAgICAgICAgICAgICAgbmV3Vmlld1R5cGVzLnB1c2godmlld1R5cGUpO1xuICAgICAgICAgICAgICAgIGxldCB2aWV3OiBFbWJlZGRlZFZpZXdSZWY8YW55PiB8IENvbXBvbmVudFJlZjxhbnk+O1xuICAgICAgICAgICAgICAgIGxldCBibG9ja0NhcmQ6IENvbXBvbmVudFJlZjxTbGF0ZUJsb2NrQ2FyZD4gfCBudWxsO1xuICAgICAgICAgICAgICAgIGlmIChyZWNvcmQucHJldmlvdXNJbmRleCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICB2aWV3ID0gY3JlYXRlRW1iZWRkZWRWaWV3T3JDb21wb25lbnQodmlld1R5cGUsIGNvbnRleHQsIHRoaXMudmlld0NvbnRleHQsIHRoaXMudmlld0NvbnRhaW5lclJlZik7XG4gICAgICAgICAgICAgICAgICAgIGJsb2NrQ2FyZCA9IGNyZWF0ZUJsb2NrQ2FyZChyZWNvcmQuaXRlbSwgdmlldywgdGhpcy52aWV3Q29udGFpbmVyUmVmLCB0aGlzLnZpZXdDb250ZXh0KTtcbiAgICAgICAgICAgICAgICAgICAgbmV3Q29udGV4dHMucHVzaChjb250ZXh0KTtcbiAgICAgICAgICAgICAgICAgICAgbmV3Vmlld3MucHVzaCh2aWV3KTtcbiAgICAgICAgICAgICAgICAgICAgbmV3QmxvY2tDYXJkcy5wdXNoKGJsb2NrQ2FyZCk7XG4gICAgICAgICAgICAgICAgICAgIG1vdW50T25JdGVtQ2hhbmdlKFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3JkLmN1cnJlbnRJbmRleCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlY29yZC5pdGVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3Vmlld3MsXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXdCbG9ja0NhcmRzLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3V0bGV0UGFyZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3RSb290Tm9kZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudmlld0NvbnRleHRcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwcmV2aW91c1ZpZXcgPSB0aGlzLnZpZXdzW3JlY29yZC5wcmV2aW91c0luZGV4XTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJldmlvdXNWaWV3VHlwZSA9IHRoaXMudmlld1R5cGVzW3JlY29yZC5wcmV2aW91c0luZGV4XTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJldmlvdXNDb250ZXh0ID0gdGhpcy5jb250ZXh0c1tyZWNvcmQucHJldmlvdXNJbmRleF07XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHByZXZpb3VzQmxvY2tDYXJkID0gdGhpcy5ibG9ja0NhcmRzW3JlY29yZC5wcmV2aW91c0luZGV4XTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHByZXZpb3VzVmlld1R5cGUgIT09IHZpZXdUeXBlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2aWV3ID0gY3JlYXRlRW1iZWRkZWRWaWV3T3JDb21wb25lbnQodmlld1R5cGUsIGNvbnRleHQsIHRoaXMudmlld0NvbnRleHQsIHRoaXMudmlld0NvbnRhaW5lclJlZik7XG4gICAgICAgICAgICAgICAgICAgICAgICBibG9ja0NhcmQgPSBjcmVhdGVCbG9ja0NhcmQocmVjb3JkLml0ZW0sIHZpZXcsIHRoaXMudmlld0NvbnRhaW5lclJlZiwgdGhpcy52aWV3Q29udGV4dCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmaXJzdFJvb3ROb2RlID0gZ2V0Um9vdE5vZGVzKHByZXZpb3VzVmlldywgcHJldmlvdXNCbG9ja0NhcmQpWzBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV3Um9vdE5vZGVzID0gZ2V0Um9vdE5vZGVzKHZpZXcsIGJsb2NrQ2FyZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaXJzdFJvb3ROb2RlLnJlcGxhY2VXaXRoKC4uLm5ld1Jvb3ROb2Rlcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcmV2aW91c1ZpZXcuZGVzdHJveSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNCbG9ja0NhcmQ/LmRlc3Ryb3koKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZpZXcgPSBwcmV2aW91c1ZpZXc7XG4gICAgICAgICAgICAgICAgICAgICAgICBibG9ja0NhcmQgPSBwcmV2aW91c0Jsb2NrQ2FyZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtZW1vaXplZENvbnRleHQodGhpcy52aWV3Q29udGV4dCwgcmVjb3JkLml0ZW0sIHByZXZpb3VzQ29udGV4dCBhcyBhbnksIGNvbnRleHQgYXMgYW55KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQgPSBwcmV2aW91c0NvbnRleHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZUNvbnRleHQocHJldmlvdXNWaWV3LCBjb250ZXh0LCB0aGlzLnZpZXdDb250ZXh0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBuZXdDb250ZXh0cy5wdXNoKGNvbnRleHQpO1xuICAgICAgICAgICAgICAgICAgICBuZXdWaWV3cy5wdXNoKHZpZXcpO1xuICAgICAgICAgICAgICAgICAgICBuZXdCbG9ja0NhcmRzLnB1c2goYmxvY2tDYXJkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGRpZmZSZXN1bHQuZm9yRWFjaE9wZXJhdGlvbihyZWNvcmQgPT4ge1xuICAgICAgICAgICAgICAgIC8vIHJlbW92ZWRcbiAgICAgICAgICAgICAgICBpZiAocmVjb3JkLmN1cnJlbnRJbmRleCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB2aWV3ID0gdGhpcy52aWV3c1tyZWNvcmQucHJldmlvdXNJbmRleF07XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJsb2NrQ2FyZCA9IHRoaXMuYmxvY2tDYXJkc1tyZWNvcmQucHJldmlvdXNJbmRleF07XG4gICAgICAgICAgICAgICAgICAgIHZpZXcuZGVzdHJveSgpO1xuICAgICAgICAgICAgICAgICAgICBibG9ja0NhcmQ/LmRlc3Ryb3koKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gbW92ZWRcbiAgICAgICAgICAgICAgICBpZiAocmVjb3JkLnByZXZpb3VzSW5kZXggIT09IG51bGwgJiYgcmVjb3JkLmN1cnJlbnRJbmRleCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBtb3VudE9uSXRlbUNoYW5nZShcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlY29yZC5jdXJyZW50SW5kZXgsXG4gICAgICAgICAgICAgICAgICAgICAgICByZWNvcmQuaXRlbSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld1ZpZXdzLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3QmxvY2tDYXJkcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG91dGxldFBhcmVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0Um9vdE5vZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZpZXdDb250ZXh0XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIC8vIFNvbHZlIHRoZSBibG9jay1jYXJkIERPTUVsZW1lbnQgbG9zcyB3aGVuIG1vdmluZyBub2Rlc1xuICAgICAgICAgICAgICAgICAgICBuZXdCbG9ja0NhcmRzW3JlY29yZC5jdXJyZW50SW5kZXhdPy5pbnN0YW5jZS5hcHBlbmQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMudmlld1R5cGVzID0gbmV3Vmlld1R5cGVzO1xuICAgICAgICAgICAgdGhpcy52aWV3cyA9IG5ld1ZpZXdzO1xuICAgICAgICAgICAgdGhpcy5jb250ZXh0cyA9IG5ld0NvbnRleHRzO1xuICAgICAgICAgICAgdGhpcy5jaGlsZHJlbiA9IGNoaWxkcmVuO1xuICAgICAgICAgICAgdGhpcy5ibG9ja0NhcmRzID0gbmV3QmxvY2tDYXJkcztcbiAgICAgICAgICAgIGlmIChwYXJlbnQgPT09IHRoaXMudmlld0NvbnRleHQuZWRpdG9yKSB7XG4gICAgICAgICAgICAgICAgZXhlY3V0ZUFmdGVyVmlld0luaXQodGhpcy52aWV3Q29udGV4dC5lZGl0b3IpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgbmV3Q29udGV4dHMgPSBbXTtcbiAgICAgICAgICAgIHRoaXMuY2hpbGRyZW4uZm9yRWFjaCgoY2hpbGQsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgTk9ERV9UT19JTkRFWC5zZXQoY2hpbGQsIGluZGV4KTtcbiAgICAgICAgICAgICAgICBOT0RFX1RPX1BBUkVOVC5zZXQoY2hpbGQsIHBhcmVudCk7XG4gICAgICAgICAgICAgICAgbGV0IGNvbnRleHQgPSBnZXRDb250ZXh0KGluZGV4LCBjaGlsZCwgcGFyZW50UGF0aCwgY2hpbGRyZW5Db250ZXh0LCB0aGlzLnZpZXdDb250ZXh0KTtcbiAgICAgICAgICAgICAgICBjb25zdCBwcmV2aW91c0NvbnRleHQgPSB0aGlzLmNvbnRleHRzW2luZGV4XTtcbiAgICAgICAgICAgICAgICBpZiAobWVtb2l6ZWRDb250ZXh0KHRoaXMudmlld0NvbnRleHQsIGNoaWxkLCBwcmV2aW91c0NvbnRleHQgYXMgYW55LCBjb250ZXh0IGFzIGFueSkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dCA9IHByZXZpb3VzQ29udGV4dDtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB1cGRhdGVDb250ZXh0KHRoaXMudmlld3NbaW5kZXhdLCBjb250ZXh0LCB0aGlzLnZpZXdDb250ZXh0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbmV3Q29udGV4dHMucHVzaChjb250ZXh0KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5jb250ZXh0cyA9IG5ld0NvbnRleHRzO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuY2hpbGRyZW4uZm9yRWFjaCgoZWxlbWVudDogRWxlbWVudCwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMudmlld3NbaW5kZXhdKSB7XG4gICAgICAgICAgICAgICAgdGhpcy52aWV3c1tpbmRleF0uZGVzdHJveSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMuYmxvY2tDYXJkc1tpbmRleF0pIHtcbiAgICAgICAgICAgICAgICB0aGlzLmJsb2NrQ2FyZHNbaW5kZXhdLmRlc3Ryb3koKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMudmlld3MgPSBbXTtcbiAgICAgICAgdGhpcy5ibG9ja0NhcmRzID0gW107XG4gICAgICAgIHRoaXMuY29udGV4dHMgPSBbXTtcbiAgICAgICAgdGhpcy52aWV3VHlwZXMgPSBbXTtcbiAgICAgICAgdGhpcy5pbml0aWFsaXplZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmRpZmZlciA9IG51bGw7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29udGV4dChcbiAgICBpbmRleDogbnVtYmVyLFxuICAgIGl0ZW06IERlc2NlbmRhbnQsXG4gICAgcGFyZW50UGF0aDogUGF0aCxcbiAgICBjaGlsZHJlbkNvbnRleHQ6IFNsYXRlQ2hpbGRyZW5Db250ZXh0LFxuICAgIHZpZXdDb250ZXh0OiBTbGF0ZVZpZXdDb250ZXh0XG4pOiBTbGF0ZUVsZW1lbnRDb250ZXh0IHwgU2xhdGVUZXh0Q29udGV4dCB7XG4gICAgaWYgKEVsZW1lbnQuaXNFbGVtZW50KGl0ZW0pKSB7XG4gICAgICAgIGNvbnN0IGNvbXB1dGVkQ29udGV4dCA9IGdldENvbW1vbkNvbnRleHQoaW5kZXgsIGl0ZW0sIHBhcmVudFBhdGgsIHZpZXdDb250ZXh0LCBjaGlsZHJlbkNvbnRleHQpO1xuICAgICAgICBjb25zdCBrZXkgPSBBbmd1bGFyRWRpdG9yLmZpbmRLZXkodmlld0NvbnRleHQuZWRpdG9yLCBpdGVtKTtcbiAgICAgICAgY29uc3QgaXNJbmxpbmUgPSB2aWV3Q29udGV4dC5lZGl0b3IuaXNJbmxpbmUoaXRlbSk7XG4gICAgICAgIGNvbnN0IGlzVm9pZCA9IHZpZXdDb250ZXh0LmVkaXRvci5pc1ZvaWQoaXRlbSk7XG4gICAgICAgIGNvbnN0IGVsZW1lbnRDb250ZXh0OiBTbGF0ZUVsZW1lbnRDb250ZXh0ID0ge1xuICAgICAgICAgICAgZWxlbWVudDogaXRlbSxcbiAgICAgICAgICAgIC4uLmNvbXB1dGVkQ29udGV4dCxcbiAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgICAgICAgICAnZGF0YS1zbGF0ZS1ub2RlJzogJ2VsZW1lbnQnLFxuICAgICAgICAgICAgICAgICdkYXRhLXNsYXRlLWtleSc6IGtleS5pZFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGRlY29yYXRlOiBjaGlsZHJlbkNvbnRleHQuZGVjb3JhdGUsXG4gICAgICAgICAgICByZWFkb25seTogY2hpbGRyZW5Db250ZXh0LnJlYWRvbmx5XG4gICAgICAgIH07XG4gICAgICAgIGlmIChpc0lubGluZSkge1xuICAgICAgICAgICAgZWxlbWVudENvbnRleHQuYXR0cmlidXRlc1snZGF0YS1zbGF0ZS1pbmxpbmUnXSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzVm9pZCkge1xuICAgICAgICAgICAgZWxlbWVudENvbnRleHQuYXR0cmlidXRlc1snZGF0YS1zbGF0ZS12b2lkJ10gPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIC8vIGFkZCBjb250ZW50RWRpdGFibGUgZm9yIGJsb2NrIGVsZW1lbnQgb25seSB0byBhdm9pZCBjaGluZXNlIGlucHV0IGJlIGJyb2tlblxuICAgICAgICBpZiAoaXNWb2lkICYmICFpc0lubGluZSkge1xuICAgICAgICAgICAgZWxlbWVudENvbnRleHQuY29udGVudEVkaXRhYmxlID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGVsZW1lbnRDb250ZXh0O1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGNvbXB1dGVkQ29udGV4dCA9IGdldENvbW1vbkNvbnRleHQoaW5kZXgsIGl0ZW0sIHBhcmVudFBhdGgsIHZpZXdDb250ZXh0LCBjaGlsZHJlbkNvbnRleHQpO1xuICAgICAgICBjb25zdCBpc0xlYWZCbG9jayA9IEFuZ3VsYXJFZGl0b3IuaXNMZWFmQmxvY2sodmlld0NvbnRleHQuZWRpdG9yLCBjaGlsZHJlbkNvbnRleHQucGFyZW50KTtcbiAgICAgICAgY29uc3QgdGV4dENvbnRleHQ6IFNsYXRlVGV4dENvbnRleHQgPSB7XG4gICAgICAgICAgICBkZWNvcmF0aW9uczogY29tcHV0ZWRDb250ZXh0LmRlY29yYXRpb25zLFxuICAgICAgICAgICAgaXNMYXN0OiBpc0xlYWZCbG9jayAmJiBpbmRleCA9PT0gY2hpbGRyZW5Db250ZXh0LnBhcmVudC5jaGlsZHJlbi5sZW5ndGggLSAxLFxuICAgICAgICAgICAgcGFyZW50OiBjaGlsZHJlbkNvbnRleHQucGFyZW50IGFzIEVsZW1lbnQsXG4gICAgICAgICAgICB0ZXh0OiBpdGVtXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiB0ZXh0Q29udGV4dDtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb21tb25Db250ZXh0KFxuICAgIGluZGV4OiBudW1iZXIsXG4gICAgaXRlbTogRGVzY2VuZGFudCxcbiAgICBwYXJlbnRQYXRoOiBQYXRoLFxuICAgIHZpZXdDb250ZXh0OiBTbGF0ZVZpZXdDb250ZXh0LFxuICAgIGNoaWxkcmVuQ29udGV4dDogU2xhdGVDaGlsZHJlbkNvbnRleHRcbik6IHsgc2VsZWN0aW9uOiBSYW5nZTsgZGVjb3JhdGlvbnM6IFJhbmdlW10gfSB7XG4gICAgY29uc3QgcCA9IHBhcmVudFBhdGguY29uY2F0KGluZGV4KTtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCBkcyA9IGNoaWxkcmVuQ29udGV4dC5kZWNvcmF0ZShbaXRlbSwgcF0pO1xuICAgICAgICAvLyBbbGlzdC1yZW5kZXJdIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbjogcmVkdWNlIHRoZSBudW1iZXIgb2YgY2FsbHMgdG8gdGhlIGBFZGl0b3IucmFuZ2Uodmlld0NvbnRleHQuZWRpdG9yLCBwKWAgbWV0aG9kXG4gICAgICAgIGlmIChjaGlsZHJlbkNvbnRleHQuc2VsZWN0aW9uIHx8IGNoaWxkcmVuQ29udGV4dC5kZWNvcmF0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb25zdCByYW5nZSA9IEVkaXRvci5yYW5nZSh2aWV3Q29udGV4dC5lZGl0b3IsIHApO1xuICAgICAgICAgICAgY29uc3Qgc2VsID0gY2hpbGRyZW5Db250ZXh0LnNlbGVjdGlvbiAmJiBSYW5nZS5pbnRlcnNlY3Rpb24ocmFuZ2UsIGNoaWxkcmVuQ29udGV4dC5zZWxlY3Rpb24pO1xuICAgICAgICAgICAgZm9yIChjb25zdCBkZWMgb2YgY2hpbGRyZW5Db250ZXh0LmRlY29yYXRpb25zKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZCA9IFJhbmdlLmludGVyc2VjdGlvbihkZWMsIHJhbmdlKTtcbiAgICAgICAgICAgICAgICBpZiAoZCkge1xuICAgICAgICAgICAgICAgICAgICBkcy5wdXNoKGQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB7IHNlbGVjdGlvbjogc2VsLCBkZWNvcmF0aW9uczogZHMgfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB7IHNlbGVjdGlvbjogbnVsbCwgZGVjb3JhdGlvbnM6IGRzIH07XG4gICAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICB2aWV3Q29udGV4dC5lZGl0b3Iub25FcnJvcih7XG4gICAgICAgICAgICBjb2RlOiBTbGF0ZUVycm9yQ29kZS5HZXRTdGFydFBvaW50RXJyb3IsXG4gICAgICAgICAgICBuYXRpdmVFcnJvcjogZXJyb3JcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB7IHNlbGVjdGlvbjogbnVsbCwgZGVjb3JhdGlvbnM6IFtdIH07XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Vmlld1R5cGUoaXRlbTogRGVzY2VuZGFudCwgcGFyZW50OiBBbmNlc3Rvciwgdmlld0NvbnRleHQ6IFNsYXRlVmlld0NvbnRleHQpIHtcbiAgICBpZiAoRWxlbWVudC5pc0VsZW1lbnQoaXRlbSkpIHtcbiAgICAgICAgcmV0dXJuICh2aWV3Q29udGV4dC5yZW5kZXJFbGVtZW50ICYmIHZpZXdDb250ZXh0LnJlbmRlckVsZW1lbnQoaXRlbSkpIHx8IHZpZXdDb250ZXh0LmRlZmF1bHRFbGVtZW50O1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGlzVm9pZCA9IHZpZXdDb250ZXh0LmVkaXRvci5pc1ZvaWQocGFyZW50IGFzIEVsZW1lbnQpO1xuICAgICAgICByZXR1cm4gaXNWb2lkID8gdmlld0NvbnRleHQuZGVmYXVsdFZvaWRUZXh0IDogKHZpZXdDb250ZXh0LnJlbmRlclRleHQgJiYgdmlld0NvbnRleHQucmVuZGVyVGV4dChpdGVtKSkgfHwgdmlld0NvbnRleHQuZGVmYXVsdFRleHQ7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQmxvY2tDYXJkKFxuICAgIGl0ZW06IERlc2NlbmRhbnQsXG4gICAgdmlldzogRW1iZWRkZWRWaWV3UmVmPGFueT4gfCBDb21wb25lbnRSZWY8YW55PixcbiAgICB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgIHZpZXdDb250ZXh0OiBTbGF0ZVZpZXdDb250ZXh0XG4pIHtcbiAgICBjb25zdCBpc0Jsb2NrQ2FyZCA9IHZpZXdDb250ZXh0LmVkaXRvci5pc0Jsb2NrQ2FyZChpdGVtKTtcbiAgICBpZiAoaXNCbG9ja0NhcmQpIHtcbiAgICAgICAgY29uc3Qgcm9vdE5vZGVzID0gZ2V0Um9vdE5vZGVzKHZpZXcpO1xuICAgICAgICBjb25zdCBibG9ja0NhcmRDb21wb25lbnRSZWYgPSB2aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudDxTbGF0ZUJsb2NrQ2FyZD4oU2xhdGVCbG9ja0NhcmQsIHtcbiAgICAgICAgICAgIGluamVjdG9yOiB2aWV3Q29udGFpbmVyUmVmLmluamVjdG9yXG4gICAgICAgIH0pO1xuICAgICAgICBibG9ja0NhcmRDb21wb25lbnRSZWYuaW5zdGFuY2UuaW5pdGlhbGl6ZUNlbnRlcihyb290Tm9kZXMpO1xuICAgICAgICBibG9ja0NhcmRDb21wb25lbnRSZWYuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICByZXR1cm4gYmxvY2tDYXJkQ29tcG9uZW50UmVmO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRyYWNrQnkodmlld0NvbnRleHQ6IFNsYXRlVmlld0NvbnRleHQpIHtcbiAgICByZXR1cm4gKGluZGV4LCBub2RlKSA9PiB7XG4gICAgICAgIHJldHVybiB2aWV3Q29udGV4dC50cmFja0J5KG5vZGUpIHx8IEFuZ3VsYXJFZGl0b3IuZmluZEtleSh2aWV3Q29udGV4dC5lZGl0b3IsIG5vZGUpO1xuICAgIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZW1vaXplZENvbnRleHQoXG4gICAgdmlld0NvbnRleHQ6IFNsYXRlVmlld0NvbnRleHQsXG4gICAgZGVzY2VuZGFudDogRGVzY2VuZGFudCxcbiAgICBwcmV2OiBTbGF0ZUVsZW1lbnRDb250ZXh0IHwgU2xhdGVUZXh0Q29udGV4dCxcbiAgICBuZXh0OiBTbGF0ZUVsZW1lbnRDb250ZXh0IHwgU2xhdGVUZXh0Q29udGV4dFxuKTogYm9vbGVhbiB7XG4gICAgaWYgKEVsZW1lbnQuaXNFbGVtZW50KGRlc2NlbmRhbnQpKSB7XG4gICAgICAgIHJldHVybiBtZW1vaXplZEVsZW1lbnRDb250ZXh0KHZpZXdDb250ZXh0LCBwcmV2IGFzIFNsYXRlRWxlbWVudENvbnRleHQsIG5leHQgYXMgU2xhdGVFbGVtZW50Q29udGV4dCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG1lbW9pemVkVGV4dENvbnRleHQocHJldiBhcyBTbGF0ZVRleHRDb250ZXh0LCBuZXh0IGFzIFNsYXRlVGV4dENvbnRleHQpO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1lbW9pemVkRWxlbWVudENvbnRleHQodmlld0NvbnRleHQ6IFNsYXRlVmlld0NvbnRleHQsIHByZXY6IFNsYXRlRWxlbWVudENvbnRleHQsIG5leHQ6IFNsYXRlRWxlbWVudENvbnRleHQpIHtcbiAgICByZXR1cm4gKFxuICAgICAgICBwcmV2LmVsZW1lbnQgPT09IG5leHQuZWxlbWVudCAmJlxuICAgICAgICAoIXZpZXdDb250ZXh0LmlzU3RyaWN0RGVjb3JhdGUgfHwgcHJldi5kZWNvcmF0ZSA9PT0gbmV4dC5kZWNvcmF0ZSkgJiZcbiAgICAgICAgcHJldi5yZWFkb25seSA9PT0gbmV4dC5yZWFkb25seSAmJlxuICAgICAgICBpc0RlY29yYXRvclJhbmdlTGlzdEVxdWFsKHByZXYuZGVjb3JhdGlvbnMsIG5leHQuZGVjb3JhdGlvbnMpICYmXG4gICAgICAgIChwcmV2LnNlbGVjdGlvbiA9PT0gbmV4dC5zZWxlY3Rpb24gfHwgKCEhcHJldi5zZWxlY3Rpb24gJiYgISFuZXh0LnNlbGVjdGlvbiAmJiBSYW5nZS5lcXVhbHMocHJldi5zZWxlY3Rpb24sIG5leHQuc2VsZWN0aW9uKSkpXG4gICAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1lbW9pemVkVGV4dENvbnRleHQocHJldjogU2xhdGVUZXh0Q29udGV4dCwgbmV4dDogU2xhdGVUZXh0Q29udGV4dCkge1xuICAgIHJldHVybiAoXG4gICAgICAgIG5leHQucGFyZW50ID09PSBwcmV2LnBhcmVudCAmJlxuICAgICAgICBuZXh0LmlzTGFzdCA9PT0gcHJldi5pc0xhc3QgJiZcbiAgICAgICAgbmV4dC50ZXh0ID09PSBwcmV2LnRleHQgJiZcbiAgICAgICAgaXNEZWNvcmF0b3JSYW5nZUxpc3RFcXVhbChuZXh0LmRlY29yYXRpb25zLCBwcmV2LmRlY29yYXRpb25zKVxuICAgICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhZGRBZnRlclZpZXdJbml0UXVldWUoZWRpdG9yOiBFZGl0b3IsIGFmdGVyVmlld0luaXRDYWxsYmFjazogKCkgPT4gdm9pZCkge1xuICAgIGNvbnN0IHF1ZXVlID0gZ2V0QWZ0ZXJWaWV3SW5pdFF1ZXVlKGVkaXRvcik7XG4gICAgcXVldWUucHVzaChhZnRlclZpZXdJbml0Q2FsbGJhY2spO1xuICAgIEVESVRPUl9UT19BRlRFUl9WSUVXX0lOSVRfUVVFVUUuc2V0KGVkaXRvciwgcXVldWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWZ0ZXJWaWV3SW5pdFF1ZXVlKGVkaXRvcjogRWRpdG9yKSB7XG4gICAgcmV0dXJuIEVESVRPUl9UT19BRlRFUl9WSUVXX0lOSVRfUVVFVUUuZ2V0KGVkaXRvcikgfHwgW107XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjbGVhckFmdGVyVmlld0luaXRRdWV1ZShlZGl0b3I6IEVkaXRvcikge1xuICAgIEVESVRPUl9UT19BRlRFUl9WSUVXX0lOSVRfUVVFVUUuc2V0KGVkaXRvciwgW10pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXhlY3V0ZUFmdGVyVmlld0luaXQoZWRpdG9yOiBFZGl0b3IpIHtcbiAgICBjb25zdCBxdWV1ZSA9IGdldEFmdGVyVmlld0luaXRRdWV1ZShlZGl0b3IpO1xuICAgIHF1ZXVlLmZvckVhY2goY2FsbGJhY2sgPT4gY2FsbGJhY2soKSk7XG4gICAgY2xlYXJBZnRlclZpZXdJbml0UXVldWUoZWRpdG9yKTtcbn1cbiJdfQ==
|
|
@@ -1,110 +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 updateContext(view, newContext, viewContext) {
|
|
24
|
-
if (view instanceof ComponentRef) {
|
|
25
|
-
view.instance.context = newContext;
|
|
26
|
-
}
|
|
27
|
-
else {
|
|
28
|
-
const embeddedViewContext = {
|
|
29
|
-
context: newContext,
|
|
30
|
-
viewContext
|
|
31
|
-
};
|
|
32
|
-
view.context = embeddedViewContext;
|
|
33
|
-
view.detectChanges();
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
export function mount(views, blockCards, outletParent, outletElement) {
|
|
37
|
-
if (views.length > 0) {
|
|
38
|
-
const fragment = document.createDocumentFragment();
|
|
39
|
-
views.forEach((view, index) => {
|
|
40
|
-
const blockCard = blockCards ? blockCards[index] : undefined;
|
|
41
|
-
fragment.append(...getRootNodes(view, blockCard));
|
|
42
|
-
});
|
|
43
|
-
if (outletElement) {
|
|
44
|
-
outletElement.parentElement.insertBefore(fragment, outletElement);
|
|
45
|
-
outletElement.remove();
|
|
46
|
-
}
|
|
47
|
-
else {
|
|
48
|
-
outletParent.prepend(fragment);
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
export function getRootNodes(ref, blockCard) {
|
|
53
|
-
if (blockCard) {
|
|
54
|
-
return [blockCard.instance.nativeElement];
|
|
55
|
-
}
|
|
56
|
-
if (ref instanceof ComponentRef) {
|
|
57
|
-
ref.hostView.rootNodes.forEach(ele => {
|
|
58
|
-
if (!(ele instanceof HTMLElement)) {
|
|
59
|
-
ele.remove();
|
|
60
|
-
}
|
|
61
|
-
});
|
|
62
|
-
return [ref.instance.nativeElement];
|
|
63
|
-
}
|
|
64
|
-
else {
|
|
65
|
-
const result = [];
|
|
66
|
-
ref.rootNodes.forEach(rootNode => {
|
|
67
|
-
const isHTMLElement = rootNode instanceof HTMLElement;
|
|
68
|
-
const isSlateNodeOfLeaf = isHTMLElement && (rootNode.hasAttribute('data-slate-node') || rootNode.hasAttribute('data-slate-leaf'));
|
|
69
|
-
if (isSlateNodeOfLeaf && result.every(item => !item.contains(rootNode))) {
|
|
70
|
-
result.push(rootNode);
|
|
71
|
-
}
|
|
72
|
-
if (!isHTMLElement) {
|
|
73
|
-
rootNode.remove();
|
|
74
|
-
}
|
|
75
|
-
});
|
|
76
|
-
return result;
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
export function mountOnItemChange(index, item, views, blockCards, outletParent, firstRootNode, viewContext) {
|
|
80
|
-
const view = views[index];
|
|
81
|
-
let rootNodes = getRootNodes(view);
|
|
82
|
-
if (blockCards) {
|
|
83
|
-
const isBlockCard = viewContext.editor.isBlockCard(item);
|
|
84
|
-
if (isBlockCard) {
|
|
85
|
-
const blockCard = blockCards[index];
|
|
86
|
-
rootNodes = [blockCard.instance.nativeElement];
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
if (index === 0) {
|
|
90
|
-
if (firstRootNode) {
|
|
91
|
-
rootNodes.forEach(rootNode => {
|
|
92
|
-
firstRootNode.insertAdjacentElement('beforebegin', rootNode);
|
|
93
|
-
});
|
|
94
|
-
}
|
|
95
|
-
else {
|
|
96
|
-
outletParent.prepend(...rootNodes);
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
else {
|
|
100
|
-
const previousView = views[index - 1];
|
|
101
|
-
const blockCard = blockCards ? blockCards[index - 1] : null;
|
|
102
|
-
const previousRootNodes = getRootNodes(previousView, blockCard);
|
|
103
|
-
let previousRootNode = previousRootNodes[previousRootNodes.length - 1];
|
|
104
|
-
rootNodes.forEach(rootNode => {
|
|
105
|
-
previousRootNode.insertAdjacentElement('afterend', rootNode);
|
|
106
|
-
previousRootNode = rootNode;
|
|
107
|
-
});
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvdmlldy9yZW5kZXIvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFlBQVksRUFBcUMsTUFBTSxlQUFlLENBQUM7QUFFaEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUlsRSxNQUFNLFVBQVUsNkJBQTZCLENBQ3pDLFFBQWtCLEVBQ2xCLE9BQVksRUFDWixXQUE2QixFQUM3QixnQkFBa0M7SUFFbEMsSUFBSSxhQUFhLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztRQUMxQixNQUFNLG1CQUFtQixHQUFHO1lBQ3hCLE9BQU87WUFDUCxXQUFXO1NBQ2QsQ0FBQztRQUNGLE1BQU0sZUFBZSxHQUFHLGdCQUFnQixDQUFDLGtCQUFrQixDQUFNLFFBQVEsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO1FBQ2hHLGVBQWUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNoQyxPQUFPLGVBQWUsQ0FBQztJQUMzQixDQUFDO0lBQ0QsSUFBSSxlQUFlLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztRQUM1QixNQUFNLFlBQVksR0FBRyxnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFO1lBQzVELFFBQVEsRUFBRSxnQkFBZ0IsQ0FBQyxRQUFRO1NBQ3RDLENBQXNCLENBQUM7UUFDeEIsWUFBWSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO1FBQ2hELFlBQVksQ0FBQyxRQUFRLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUN4QyxZQUFZLENBQUMsaUJBQWlCLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDL0MsT0FBTyxZQUFZLENBQUM7SUFDeEIsQ0FBQztBQUNMLENBQUM7QUFFRCxNQUFNLFVBQVUsYUFBYSxDQUN6QixJQUE4QyxFQUM5QyxVQUFxRSxFQUNyRSxXQUE2QjtJ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QUFDLFlBQVksRUFBRSxTQUFTLENBQUMsQ0FBQztRQUNoRSxJQUFJLGdCQUFnQixHQUFHLGlCQUFpQixDQUFDLGlCQUFpQixDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztRQUN2RSxTQUFTLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ3pCLGdCQUFnQixDQUFDLHFCQUFxQixDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQztZQUM3RCxnQkFBZ0IsR0FBRyxRQUFRLENBQUM7UUFDaEMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERlc2NlbmRhbnQgfSBmcm9tICdzbGF0ZSc7XG5pbXBvcnQgeyBDb21wb25lbnRSZWYsIEVtYmVkZGVkVmlld1JlZiwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVmlld1R5cGUgfSBmcm9tICcuLi8uLi90eXBlcy92aWV3JztcbmltcG9ydCB7IGlzQ29tcG9uZW50VHlwZSwgaXNUZW1wbGF0ZVJlZiB9IGZyb20gJy4uLy4uL3V0aWxzL3ZpZXcnO1xuaW1wb3J0IHsgU2xhdGVFbGVtZW50Q29udGV4dCwgU2xhdGVMZWFmQ29udGV4dCwgU2xhdGVUZXh0Q29udGV4dCwgU2xhdGVWaWV3Q29udGV4dCB9IGZyb20gJy4uL2NvbnRleHQnO1xuaW1wb3J0IHsgU2xhdGVCbG9ja0NhcmQgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2Jsb2NrLWNhcmQvYmxvY2stY2FyZC5jb21wb25lbnQnO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRW1iZWRkZWRWaWV3T3JDb21wb25lbnQoXG4gICAgdmlld1R5cGU6IFZpZXdUeXBlLFxuICAgIGNvbnRleHQ6IGFueSxcbiAgICB2aWV3Q29udGV4dDogU2xhdGVWaWV3Q29udGV4dCxcbiAgICB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmXG4pIHtcbiAgICBpZiAoaXNUZW1wbGF0ZVJlZih2aWV3VHlwZSkpIHtcbiAgICAgICAgY29uc3QgZW1iZWRkZWRWaWV3Q29udGV4dCA9IHtcbiAgICAgICAgICAgIGNvbnRleHQsXG4gICAgICAgICAgICB2aWV3Q29udGV4dFxuICAgICAgICB9O1xuICAgICAgICBjb25zdCBlbWJlZGRlZFZpZXdSZWYgPSB2aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUVtYmVkZGVkVmlldzxhbnk+KHZpZXdUeXBlLCBlbWJlZGRlZFZpZXdDb250ZXh0KTtcbiAgICAgICAgZW1iZWRkZWRWaWV3UmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgcmV0dXJuIGVtYmVkZGVkVmlld1JlZjtcbiAgICB9XG4gICAgaWYgKGlzQ29tcG9uZW50VHlwZSh2aWV3VHlwZSkpIHtcbiAgICAgICAgY29uc3QgY29tcG9uZW50UmVmID0gdmlld0NvbnRhaW5lclJlZi5jcmVhdGVDb21wb25lbnQodmlld1R5cGUsIHtcbiAgICAgICAgICAgIGluamVjdG9yOiB2aWV3Q29udGFpbmVyUmVmLmluamVjdG9yXG4gICAgICAgIH0pIGFzIENvbXBvbmVudFJlZjxhbnk+O1xuICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2Uudmlld0NvbnRleHQgPSB2aWV3Q29udGV4dDtcbiAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLmNvbnRleHQgPSBjb250ZXh0O1xuICAgICAgICBjb21wb25lbnRSZWYuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICByZXR1cm4gY29tcG9uZW50UmVmO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZUNvbnRleHQoXG4gICAgdmlldzogRW1iZWRkZWRWaWV3UmVmPGFueT4gfCBDb21wb25lbnRSZWY8YW55PixcbiAgICBuZXdDb250ZXh0OiBTbGF0ZUVsZW1lbnRDb250ZXh0IHwgU2xhdGVUZXh0Q29udGV4dCB8IFNsYXRlTGVhZkNvbnRleHQsXG4gICAgdmlld0NvbnRleHQ6IFNsYXRlVmlld0NvbnRleHRcbikge1xuICAgIGlmICh2aWV3IGluc3RhbmNlb2YgQ29tcG9uZW50UmVmKSB7XG4gICAgICAgIHZpZXcuaW5zdGFuY2UuY29udGV4dCA9IG5ld0NvbnRleHQ7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgZW1iZWRkZWRWaWV3Q29udGV4dCA9IHtcbiAgICAgICAgICAgIGNvbnRleHQ6IG5ld0NvbnRleHQsXG4gICAgICAgICAgICB2aWV3Q29udGV4dFxuICAgICAgICB9O1xuICAgICAgICB2aWV3LmNvbnRleHQgPSBlbWJlZGRlZFZpZXdDb250ZXh0O1xuICAgICAgICB2aWV3LmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtb3VudChcbiAgICB2aWV3czogKEVtYmVkZGVkVmlld1JlZjxhbnk+IHwgQ29tcG9uZW50UmVmPGFueT4pW10sXG4gICAgYmxvY2tDYXJkczogKENvbXBvbmVudFJlZjxTbGF0ZUJsb2NrQ2FyZD4gfCBudWxsKVtdIHwgbnVsbCxcbiAgICBvdXRsZXRQYXJlbnQ6IEhUTUxFbGVtZW50LFxuICAgIG91dGxldEVsZW1lbnQ6IEhUTUxFbGVtZW50IHwgbnVsbFxuKSB7XG4gICAgaWYgKHZpZXdzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgY29uc3QgZnJhZ21lbnQgPSBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7XG4gICAgICAgIHZpZXdzLmZvckVhY2goKHZpZXcsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBibG9ja0NhcmQgPSBibG9ja0NhcmRzID8gYmxvY2tDYXJkc1tpbmRleF0gOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICBmcmFnbWVudC5hcHBlbmQoLi4uZ2V0Um9vdE5vZGVzKHZpZXcsIGJsb2NrQ2FyZCkpO1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKG91dGxldEVsZW1lbnQpIHtcbiAgICAgICAgICAgIG91dGxldEVsZW1lbnQucGFyZW50RWxlbWVudC5pbnNlcnRCZWZvcmUoZnJhZ21lbnQsIG91dGxldEVsZW1lbnQpO1xuICAgICAgICAgICAgb3V0bGV0RWxlbWVudC5yZW1vdmUoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG91dGxldFBhcmVudC5wcmVwZW5kKGZyYWdtZW50KTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFJvb3ROb2RlcyhyZWY6IEVtYmVkZGVkVmlld1JlZjxhbnk+IHwgQ29tcG9uZW50UmVmPGFueT4sIGJsb2NrQ2FyZD86IENvbXBvbmVudFJlZjxTbGF0ZUJsb2NrQ2FyZD4pOiBIVE1MRWxlbWVudFtdIHtcbiAgICBpZiAoYmxvY2tDYXJkKSB7XG4gICAgICAgIHJldHVybiBbYmxvY2tDYXJkLmluc3RhbmNlLm5hdGl2ZUVsZW1lbnRdO1xuICAgIH1cbiAgICBpZiAocmVmIGluc3RhbmNlb2YgQ29tcG9uZW50UmVmKSB7XG4gICAgICAgICgocmVmLmhvc3RWaWV3IGFzIGFueSkucm9vdE5vZGVzIGFzIChIVE1MRWxlbWVudCB8IGFueSlbXSkuZm9yRWFjaChlbGUgPT4ge1xuICAgICAgICAgICAgaWYgKCEoZWxlIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgZWxlLnJlbW92ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIFtyZWYuaW5zdGFuY2UubmF0aXZlRWxlbWVudF07XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgcmVzdWx0OiBIVE1MRWxlbWVudFtdID0gW107XG4gICAgICAgIHJlZi5yb290Tm9kZXMuZm9yRWFjaChyb290Tm9kZSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpc0hUTUxFbGVtZW50ID0gcm9vdE5vZGUgaW5zdGFuY2VvZiBIVE1MRWxlbWVudDtcbiAgICAgICAgICAgIGNvbnN0IGlzU2xhdGVOb2RlT2ZMZWFmID1cbiAgICAgICAgICAgICAgICBpc0hUTUxFbGVtZW50ICYmIChyb290Tm9kZS5oYXNBdHRyaWJ1dGUoJ2RhdGEtc2xhdGUtbm9kZScpIHx8IHJvb3ROb2RlLmhhc0F0dHJpYnV0ZSgnZGF0YS1zbGF0ZS1sZWFmJykpO1xuICAgICAgICAgICAgaWYgKGlzU2xhdGVOb2RlT2ZMZWFmICYmIHJlc3VsdC5ldmVyeShpdGVtID0+ICFpdGVtLmNvbnRhaW5zKHJvb3ROb2RlKSkpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaChyb290Tm9kZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWlzSFRNTEVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICByb290Tm9kZS5yZW1vdmUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbW91bnRPbkl0ZW1DaGFuZ2UoXG4gICAgaW5kZXg6IG51bWJlcixcbiAgICBpdGVtOiBEZXNjZW5kYW50LFxuICAgIHZpZXdzOiAoRW1iZWRkZWRWaWV3UmVmPGFueT4gfCBDb21wb25lbnRSZWY8YW55PilbXSxcbiAgICBibG9ja0NhcmRzOiAoQ29tcG9uZW50UmVmPFNsYXRlQmxvY2tDYXJkPiB8IG51bGwpW10gfCBudWxsLFxuICAgIG91dGxldFBhcmVudDogSFRNTEVsZW1lbnQsXG4gICAgZmlyc3RSb290Tm9kZTogSFRNTEVsZW1lbnQgfCBudWxsLFxuICAgIHZpZXdDb250ZXh0OiBTbGF0ZVZpZXdDb250ZXh0XG4pIHtcbiAgICBjb25zdCB2aWV3ID0gdmlld3NbaW5kZXhdO1xuICAgIGxldCByb290Tm9kZXMgPSBnZXRSb290Tm9kZXModmlldyk7XG4gICAgaWYgKGJsb2NrQ2FyZHMpIHtcbiAgICAgICAgY29uc3QgaXNCbG9ja0NhcmQgPSB2aWV3Q29udGV4dC5lZGl0b3IuaXNCbG9ja0NhcmQoaXRlbSk7XG4gICAgICAgIGlmIChpc0Jsb2NrQ2FyZCkge1xuICAgICAgICAgICAgY29uc3QgYmxvY2tDYXJkID0gYmxvY2tDYXJkc1tpbmRleF07XG4gICAgICAgICAgICByb290Tm9kZXMgPSBbYmxvY2tDYXJkLmluc3RhbmNlLm5hdGl2ZUVsZW1lbnRdO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChpbmRleCA9PT0gMCkge1xuICAgICAgICBpZiAoZmlyc3RSb290Tm9kZSkge1xuICAgICAgICAgICAgcm9vdE5vZGVzLmZvckVhY2gocm9vdE5vZGUgPT4ge1xuICAgICAgICAgICAgICAgIGZpcnN0Um9vdE5vZGUuaW5zZXJ0QWRqYWNlbnRFbGVtZW50KCdiZWZvcmViZWdpbicsIHJvb3ROb2RlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgb3V0bGV0UGFyZW50LnByZXBlbmQoLi4ucm9vdE5vZGVzKTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHByZXZpb3VzVmlldyA9IHZpZXdzW2luZGV4IC0gMV07XG4gICAgICAgIGNvbnN0IGJsb2NrQ2FyZCA9IGJsb2NrQ2FyZHMgPyBibG9ja0NhcmRzW2luZGV4IC0gMV0gOiBudWxsO1xuICAgICAgICBjb25zdCBwcmV2aW91c1Jvb3ROb2RlcyA9IGdldFJvb3ROb2RlcyhwcmV2aW91c1ZpZXcsIGJsb2NrQ2FyZCk7XG4gICAgICAgIGxldCBwcmV2aW91c1Jvb3ROb2RlID0gcHJldmlvdXNSb290Tm9kZXNbcHJldmlvdXNSb290Tm9kZXMubGVuZ3RoIC0gMV07XG4gICAgICAgIHJvb3ROb2Rlcy5mb3JFYWNoKHJvb3ROb2RlID0+IHtcbiAgICAgICAgICAgIHByZXZpb3VzUm9vdE5vZGUuaW5zZXJ0QWRqYWNlbnRFbGVtZW50KCdhZnRlcmVuZCcsIHJvb3ROb2RlKTtcbiAgICAgICAgICAgIHByZXZpb3VzUm9vdE5vZGUgPSByb290Tm9kZTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19
|