slate-angular 16.1.0-next.8 → 17.0.0-next.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 +2 -2
- package/esm2022/components/children/children.component.mjs +33 -5
- package/esm2022/components/descendant/descendant.component.mjs +186 -0
- package/esm2022/components/editable/editable.component.mjs +38 -115
- package/esm2022/components/element/default-element.component.mjs +3 -3
- package/esm2022/components/element/element.component.mjs +3 -3
- package/esm2022/components/leaf/leaf.component.mjs +38 -0
- package/esm2022/components/leaves/leaves.component.mjs +50 -5
- package/esm2022/components/string/default-string.component.mjs +1 -1
- package/esm2022/components/string/string.component.mjs +6 -16
- package/esm2022/components/text/default-text.component.mjs +3 -3
- package/esm2022/components/text/void-text.component.mjs +3 -3
- package/esm2022/module.mjs +22 -7
- package/esm2022/plugins/angular-editor.mjs +6 -7
- package/esm2022/plugins/with-angular.mjs +4 -4
- package/esm2022/public-api.mjs +2 -3
- package/esm2022/utils/index.mjs +1 -2
- package/esm2022/view/base.mjs +17 -51
- package/esm2022/view/before-context-change.mjs +7 -0
- package/esm2022/view/container.mjs +82 -2
- package/esm2022/view/context.mjs +1 -1
- package/fesm2022/slate-angular.mjs +747 -1004
- package/fesm2022/slate-angular.mjs.map +1 -1
- package/module.d.ts +8 -7
- package/package.json +5 -5
- package/plugins/angular-editor.d.ts +1 -1
- 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 +1 -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/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 -253
- package/esm2022/view/render/utils.mjs +0 -117
- 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
package/module.d.ts
CHANGED
|
@@ -7,14 +7,15 @@ import * as i5 from "./components/text/void-text.component";
|
|
|
7
7
|
import * as i6 from "./components/text/default-text.component";
|
|
8
8
|
import * as i7 from "./components/string/string.component";
|
|
9
9
|
import * as i8 from "./components/string/template.component";
|
|
10
|
-
import * as i9 from "./components/
|
|
11
|
-
import * as i10 from "./components/
|
|
12
|
-
import * as i11 from "./components/
|
|
13
|
-
import * as i12 from "./components/leaf/
|
|
14
|
-
import * as i13 from "./components/
|
|
15
|
-
import * as i14 from "./components/
|
|
10
|
+
import * as i9 from "./components/descendant/descendant.component";
|
|
11
|
+
import * as i10 from "./components/children/children.component";
|
|
12
|
+
import * as i11 from "./components/block-card/block-card.component";
|
|
13
|
+
import * as i12 from "./components/leaf/leaf.component";
|
|
14
|
+
import * as i13 from "./components/leaves/leaves.component";
|
|
15
|
+
import * as i14 from "./components/leaf/default-leaf.component";
|
|
16
|
+
import * as i15 from "./components/string/default-string.component";
|
|
16
17
|
export declare class SlateModule {
|
|
17
18
|
static ɵfac: i0.ɵɵFactoryDeclaration<SlateModule, never>;
|
|
18
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<SlateModule, never, [typeof i1.CommonModule, typeof i2.SlateEditable, typeof i3.SlateDefaultElement, typeof i4.SlateElement, typeof i5.SlateVoidText, typeof i6.SlateDefaultText, typeof i7.SlateString, typeof i8.SlateStringTemplate, typeof i9.
|
|
19
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<SlateModule, never, [typeof i1.CommonModule, typeof i2.SlateEditable, typeof i3.SlateDefaultElement, typeof i4.SlateElement, typeof i5.SlateVoidText, typeof i6.SlateDefaultText, typeof i7.SlateString, typeof i8.SlateStringTemplate, typeof i9.SlateDescendant, typeof i10.SlateChildren, typeof i11.SlateBlockCard, typeof i12.SlateLeaf, typeof i13.SlateLeaves, typeof i14.SlateDefaultLeaf, typeof i15.SlateDefaultString], [typeof i2.SlateEditable, typeof i10.SlateChildren, typeof i4.SlateElement, typeof i13.SlateLeaves, typeof i7.SlateString, typeof i15.SlateDefaultString]>;
|
|
19
20
|
static ɵinj: i0.ɵɵInjectorDeclaration<SlateModule>;
|
|
20
21
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "slate-angular",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "17.0.0-next.0",
|
|
4
4
|
"description": "Angular view layer for Slate",
|
|
5
5
|
"author": "pubuzhixing <pubuzhixing@gmail.com>",
|
|
6
6
|
"homepage": "https://github.com/worktile/slate-angular#readme",
|
|
@@ -14,12 +14,12 @@
|
|
|
14
14
|
"scroll-into-view-if-needed": "^2.2.20"
|
|
15
15
|
},
|
|
16
16
|
"dependencies": {
|
|
17
|
-
"slate": "^0.
|
|
18
|
-
"slate-history": "^0.
|
|
17
|
+
"slate": "^0.72.8",
|
|
18
|
+
"slate-history": "^0.66.0",
|
|
19
19
|
"direction": "^2.0.1",
|
|
20
20
|
"is-hotkey": "^0.2.0",
|
|
21
|
-
"scroll-into-view-if-needed": "^
|
|
22
|
-
"tslib": "^2.
|
|
21
|
+
"scroll-into-view-if-needed": "^2.2.20",
|
|
22
|
+
"tslib": "^2.5.0"
|
|
23
23
|
},
|
|
24
24
|
"exports": {
|
|
25
25
|
".": {
|
|
@@ -132,7 +132,7 @@ export declare const AngularEditor: {
|
|
|
132
132
|
getCardCursorNode(editor: AngularEditor, blockCardNode: Node, options: {
|
|
133
133
|
direction: 'left' | 'right' | 'center';
|
|
134
134
|
}): ChildNode;
|
|
135
|
-
toSlateCardEntry(editor: AngularEditor, node: DOMNode): NodeEntry
|
|
135
|
+
toSlateCardEntry(editor: AngularEditor, node: DOMNode): NodeEntry<Node>;
|
|
136
136
|
/**
|
|
137
137
|
* move native selection to card-left or card-right
|
|
138
138
|
* @param editor
|
package/public-api.d.ts
CHANGED
|
@@ -5,12 +5,11 @@ export * from './components/element/element.component';
|
|
|
5
5
|
export * from './components/string/string.component';
|
|
6
6
|
export * from './components/string/default-string.component';
|
|
7
7
|
export * from './components/children/children.component';
|
|
8
|
-
export * from './components/children/children-outlet.component';
|
|
9
8
|
export * from './components/leaves/leaves.component';
|
|
10
9
|
export * from './module';
|
|
11
10
|
export * from './types/error';
|
|
12
11
|
export * from './view/base';
|
|
13
12
|
export * from './view/context';
|
|
14
|
-
export * from './view/context-change';
|
|
13
|
+
export * from './view/before-context-change';
|
|
15
14
|
export * from './utils';
|
|
16
15
|
export * from './types';
|
package/utils/index.d.ts
CHANGED
package/view/base.d.ts
CHANGED
|
@@ -1,11 +1,8 @@
|
|
|
1
|
-
import { ChangeDetectorRef, ElementRef, OnDestroy, OnInit
|
|
1
|
+
import { ChangeDetectorRef, ElementRef, OnDestroy, OnInit } from '@angular/core';
|
|
2
2
|
import { AngularEditor } from '../plugins/angular-editor';
|
|
3
3
|
import { SlateViewContext, SlateElementContext, SlateTextContext, SlateLeafContext } from './context';
|
|
4
4
|
import { Descendant, Element, Range, Text } from 'slate';
|
|
5
5
|
import { SlateChildrenContext } from './context';
|
|
6
|
-
import { ListRender } from './render/list-render';
|
|
7
|
-
import { LeavesRender } from './render/leaves-render';
|
|
8
|
-
import { SlateChildrenOutlet } from '../components/children/children-outlet.component';
|
|
9
6
|
import * as i0 from "@angular/core";
|
|
10
7
|
/**
|
|
11
8
|
* base class for template
|
|
@@ -20,7 +17,6 @@ export interface BaseEmbeddedView<T, K extends AngularEditor = AngularEditor> {
|
|
|
20
17
|
export declare abstract class BaseComponent<T = SlateTextContext | SlateLeafContext | SlateElementContext, K extends AngularEditor = AngularEditor> {
|
|
21
18
|
elementRef: ElementRef;
|
|
22
19
|
cdr: ChangeDetectorRef;
|
|
23
|
-
initialized: boolean;
|
|
24
20
|
protected _context: T;
|
|
25
21
|
set context(value: T);
|
|
26
22
|
get context(): T;
|
|
@@ -36,6 +32,7 @@ export declare abstract class BaseComponent<T = SlateTextContext | SlateLeafCont
|
|
|
36
32
|
* base class for custom leaf component
|
|
37
33
|
*/
|
|
38
34
|
export declare class BaseLeafComponent extends BaseComponent<SlateLeafContext> implements OnInit {
|
|
35
|
+
initialized: boolean;
|
|
39
36
|
placeholderElement: HTMLSpanElement;
|
|
40
37
|
isSlateLeaf: boolean;
|
|
41
38
|
get text(): Text;
|
|
@@ -53,9 +50,8 @@ export declare class BaseLeafComponent extends BaseComponent<SlateLeafContext> i
|
|
|
53
50
|
* base class for custom element component
|
|
54
51
|
*/
|
|
55
52
|
export declare class BaseElementComponent<T extends Element = Element, K extends AngularEditor = AngularEditor> extends BaseComponent<SlateElementContext<T>, K> implements OnInit, OnDestroy {
|
|
56
|
-
|
|
53
|
+
initialized: boolean;
|
|
57
54
|
childrenContext: SlateChildrenContext;
|
|
58
|
-
childrenOutletInstance?: SlateChildrenOutlet;
|
|
59
55
|
get element(): T;
|
|
60
56
|
get selection(): Range;
|
|
61
57
|
get decorations(): Range[];
|
|
@@ -63,9 +59,6 @@ export declare class BaseElementComponent<T extends Element = Element, K extends
|
|
|
63
59
|
get isCollapsed(): boolean;
|
|
64
60
|
get isCollapsedAndNonReadonly(): boolean;
|
|
65
61
|
get readonly(): boolean;
|
|
66
|
-
getOutletParent: () => any;
|
|
67
|
-
getOutletElement: () => HTMLElement;
|
|
68
|
-
listRender: ListRender;
|
|
69
62
|
ngOnInit(): void;
|
|
70
63
|
updateWeakMap(): void;
|
|
71
64
|
ngOnDestroy(): void;
|
|
@@ -78,12 +71,8 @@ export declare class BaseElementComponent<T extends Element = Element, K extends
|
|
|
78
71
|
* base class for custom text component
|
|
79
72
|
*/
|
|
80
73
|
export declare class BaseTextComponent<T extends Text = Text> extends BaseComponent<SlateTextContext<T>> implements OnInit, OnDestroy {
|
|
81
|
-
|
|
74
|
+
initialized: boolean;
|
|
82
75
|
get text(): T;
|
|
83
|
-
leavesRender: LeavesRender;
|
|
84
|
-
childrenOutletInstance?: SlateChildrenOutlet;
|
|
85
|
-
getOutletParent: () => any;
|
|
86
|
-
getOutletElement: () => HTMLElement;
|
|
87
76
|
ngOnInit(): void;
|
|
88
77
|
updateWeakMap(): void;
|
|
89
78
|
ngOnDestroy(): void;
|
|
@@ -1,8 +1,4 @@
|
|
|
1
1
|
export interface BeforeContextChange<T> {
|
|
2
2
|
beforeContextChange: (value: T) => void;
|
|
3
3
|
}
|
|
4
|
-
export interface AfterContextChange {
|
|
5
|
-
afterContextChange: () => void;
|
|
6
|
-
}
|
|
7
4
|
export declare function hasBeforeContextChange<T>(value: any): value is BeforeContextChange<T>;
|
|
8
|
-
export declare function hasAfterContextChange<T>(value: any): value is AfterContextChange;
|
package/view/container.d.ts
CHANGED
|
@@ -1,18 +1,22 @@
|
|
|
1
|
-
import { ElementRef, IterableDiffers } from '@angular/core';
|
|
1
|
+
import { AfterViewInit, ElementRef, IterableChangeRecord, IterableDiffers, QueryList } from '@angular/core';
|
|
2
2
|
import { SlateViewContext } from './context';
|
|
3
3
|
import { ViewContainerItem } from './container-item';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
/**
|
|
6
|
-
* @deprecated
|
|
7
6
|
* the special container for angular template
|
|
8
7
|
* Add the rootNodes of each child component to the parentElement
|
|
9
8
|
* Remove useless DOM elements, eg: comment...
|
|
10
9
|
*/
|
|
11
|
-
export declare abstract class ViewContainer<T extends ViewContainerItem> {
|
|
10
|
+
export declare abstract class ViewContainer<T extends ViewContainerItem> implements AfterViewInit {
|
|
12
11
|
protected elementRef: ElementRef<any>;
|
|
13
12
|
protected differs: IterableDiffers;
|
|
13
|
+
abstract childrenComponent: QueryList<T>;
|
|
14
14
|
viewContext: SlateViewContext;
|
|
15
15
|
constructor(elementRef: ElementRef<any>, differs: IterableDiffers);
|
|
16
|
+
ngAfterViewInit(): void;
|
|
17
|
+
getPreviousRootNode(currentIndex: any): any;
|
|
18
|
+
createFragment(): DocumentFragment;
|
|
19
|
+
handleContainerItemChange(record: IterableChangeRecord<T>, parentElement: HTMLElement): void;
|
|
16
20
|
static ɵfac: i0.ɵɵFactoryDeclaration<ViewContainer<any>, never>;
|
|
17
21
|
static ɵdir: i0.ɵɵDirectiveDeclaration<ViewContainer<any>, never, never, { "viewContext": { "alias": "viewContext"; "required": false; }; }, {}, never, never, false, never>;
|
|
18
22
|
}
|
package/view/context.d.ts
CHANGED
|
@@ -1,15 +1,10 @@
|
|
|
1
1
|
import { NodeEntry, Range, Element, Ancestor, Text } from 'slate';
|
|
2
2
|
import { SlateStringTemplate } from '../components/string/template.component';
|
|
3
3
|
import { AngularEditor } from '../plugins/angular-editor';
|
|
4
|
-
import {
|
|
5
|
-
import { BaseElementComponent, BaseLeafComponent, BaseTextComponent } from './base';
|
|
4
|
+
import { ViewType } from '../types/view';
|
|
6
5
|
export interface SlateViewContext<T extends AngularEditor = AngularEditor> {
|
|
7
6
|
editor: T;
|
|
8
7
|
templateComponent: SlateStringTemplate;
|
|
9
|
-
defaultElement: ComponentType<BaseElementComponent>;
|
|
10
|
-
defaultText: ComponentType<BaseTextComponent>;
|
|
11
|
-
defaultVoidText: ComponentType<BaseTextComponent>;
|
|
12
|
-
defaultLeaf: ComponentType<BaseLeafComponent>;
|
|
13
8
|
trackBy: (element: Element) => any;
|
|
14
9
|
renderElement?: (element: Element) => ViewType;
|
|
15
10
|
renderLeaf?: (text: Text) => ViewType;
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { ElementRef } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export declare class SlateChildrenOutlet {
|
|
4
|
-
private elementRef;
|
|
5
|
-
constructor(elementRef: ElementRef<HTMLElement>);
|
|
6
|
-
getNativeElement(): HTMLElement;
|
|
7
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<SlateChildrenOutlet, never>;
|
|
8
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<SlateChildrenOutlet, "slate-children-outlet", never, {}, {}, never, never, true, never>;
|
|
9
|
-
}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import { InjectionToken } from '@angular/core';
|
|
2
|
-
import { ComponentType } from '../../types/view';
|
|
3
|
-
import { BaseTextComponent } from '../../view/base';
|
|
4
|
-
export declare const SLATE_DEFAULT_TEXT_COMPONENT_TOKEN: InjectionToken<ComponentType<BaseTextComponent<import("slate").BaseText>>>;
|
|
5
|
-
export declare const SLATE_DEFAULT_VOID_TEXT_COMPONENT_TOKEN: InjectionToken<ComponentType<BaseTextComponent<import("slate").BaseText>>>;
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export class SlateChildrenOutlet {
|
|
4
|
-
constructor(elementRef) {
|
|
5
|
-
this.elementRef = elementRef;
|
|
6
|
-
}
|
|
7
|
-
getNativeElement() {
|
|
8
|
-
return this.elementRef.nativeElement;
|
|
9
|
-
}
|
|
10
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: SlateChildrenOutlet, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
11
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.1", type: SlateChildrenOutlet, isStandalone: true, selector: "slate-children-outlet", ngImport: i0, template: ``, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
12
|
-
}
|
|
13
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: SlateChildrenOutlet, decorators: [{
|
|
14
|
-
type: Component,
|
|
15
|
-
args: [{
|
|
16
|
-
selector: 'slate-children-outlet',
|
|
17
|
-
template: ``,
|
|
18
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
19
|
-
standalone: true
|
|
20
|
-
}]
|
|
21
|
-
}], ctorParameters: function () { return [{ type: i0.ElementRef }]; } });
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hpbGRyZW4tb3V0bGV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL3NyYy9jb21wb25lbnRzL2NoaWxkcmVuL2NoaWxkcmVuLW91dGxldC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBYyxNQUFNLGVBQWUsQ0FBQzs7QUFRL0UsTUFBTSxPQUFPLG1CQUFtQjtJQUM1QixZQUFvQixVQUFtQztRQUFuQyxlQUFVLEdBQVYsVUFBVSxDQUF5QjtJQUFHLENBQUM7SUFDM0QsZ0JBQWdCO1FBQ1osT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQztJQUN6QyxDQUFDOzhHQUpRLG1CQUFtQjtrR0FBbkIsbUJBQW1CLGlGQUpsQixFQUFFOzsyRkFJSCxtQkFBbUI7a0JBTi9CLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLHVCQUF1QjtvQkFDakMsUUFBUSxFQUFFLEVBQUU7b0JBQ1osZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLFVBQVUsRUFBRSxJQUFJO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdzbGF0ZS1jaGlsZHJlbi1vdXRsZXQnLFxuICAgIHRlbXBsYXRlOiBgYCxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIFNsYXRlQ2hpbGRyZW5PdXRsZXQge1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4pIHt9XG4gICAgZ2V0TmF0aXZlRWxlbWVudCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import { InjectionToken } from '@angular/core';
|
|
2
|
-
export const SLATE_DEFAULT_LEAF_COMPONENT_TOKEN = new InjectionToken('slate-default-leaf-token');
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvY29tcG9uZW50cy9sZWFmL3Rva2VuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJL0MsTUFBTSxDQUFDLE1BQU0sa0NBQWtDLEdBQUcsSUFBSSxjQUFjLENBQW1DLDBCQUEwQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tcG9uZW50VHlwZSB9IGZyb20gJy4uLy4uL3R5cGVzL3ZpZXcnO1xuaW1wb3J0IHsgQmFzZUxlYWZDb21wb25lbnQgfSBmcm9tICcuLi8uLi92aWV3L2Jhc2UnO1xuXG5leHBvcnQgY29uc3QgU0xBVEVfREVGQVVMVF9MRUFGX0NPTVBPTkVOVF9UT0tFTiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxDb21wb25lbnRUeXBlPEJhc2VMZWFmQ29tcG9uZW50Pj4oJ3NsYXRlLWRlZmF1bHQtbGVhZi10b2tlbicpO1xuIl19
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import { InjectionToken } from '@angular/core';
|
|
2
|
-
export const SLATE_DEFAULT_TEXT_COMPONENT_TOKEN = new InjectionToken('slate-default-text-token');
|
|
3
|
-
export const SLATE_DEFAULT_VOID_TEXT_COMPONENT_TOKEN = new InjectionToken('slate-default-void-text-token');
|
|
4
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvY29tcG9uZW50cy90ZXh0L3Rva2VuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJL0MsTUFBTSxDQUFDLE1BQU0sa0NBQWtDLEdBQUcsSUFBSSxjQUFjLENBQW1DLDBCQUEwQixDQUFDLENBQUM7QUFFbkksTUFBTSxDQUFDLE1BQU0sdUNBQXVDLEdBQUcsSUFBSSxjQUFjLENBQ3JFLCtCQUErQixDQUNsQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbXBvbmVudFR5cGUgfSBmcm9tICcuLi8uLi90eXBlcy92aWV3JztcbmltcG9ydCB7IEJhc2VUZXh0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vdmlldy9iYXNlJztcblxuZXhwb3J0IGNvbnN0IFNMQVRFX0RFRkFVTFRfVEVYVF9DT01QT05FTlRfVE9LRU4gPSBuZXcgSW5qZWN0aW9uVG9rZW48Q29tcG9uZW50VHlwZTxCYXNlVGV4dENvbXBvbmVudD4+KCdzbGF0ZS1kZWZhdWx0LXRleHQtdG9rZW4nKTtcblxuZXhwb3J0IGNvbnN0IFNMQVRFX0RFRkFVTFRfVk9JRF9URVhUX0NPTVBPTkVOVF9UT0tFTiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxDb21wb25lbnRUeXBlPEJhc2VUZXh0Q29tcG9uZW50Pj4oXG4gICAgJ3NsYXRlLWRlZmF1bHQtdm9pZC10ZXh0LXRva2VuJ1xuKTtcbiJdfQ==
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
export const createThrottleRAF = () => {
|
|
2
|
-
let timerId = null;
|
|
3
|
-
const throttleRAF = (fn) => {
|
|
4
|
-
const scheduleFunc = () => {
|
|
5
|
-
timerId = requestAnimationFrame(() => {
|
|
6
|
-
timerId = null;
|
|
7
|
-
fn();
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
|
-
if (timerId !== null) {
|
|
11
|
-
cancelAnimationFrame(timerId);
|
|
12
|
-
timerId = null;
|
|
13
|
-
}
|
|
14
|
-
scheduleFunc();
|
|
15
|
-
};
|
|
16
|
-
return throttleRAF;
|
|
17
|
-
};
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhyb3R0bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wYWNrYWdlcy9zcmMvdXRpbHMvdGhyb3R0bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsR0FBRyxFQUFFO0lBQ2xDLElBQUksT0FBTyxHQUFrQixJQUFJLENBQUM7SUFDbEMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxFQUFjLEVBQUUsRUFBRTtRQUNuQyxNQUFNLFlBQVksR0FBRyxHQUFHLEVBQUU7WUFDdEIsT0FBTyxHQUFHLHFCQUFxQixDQUFDLEdBQUcsRUFBRTtnQkFDakMsT0FBTyxHQUFHLElBQUksQ0FBQztnQkFDZixFQUFFLEVBQUUsQ0FBQztZQUNULENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDO1FBQ0YsSUFBSSxPQUFPLEtBQUssSUFBSSxFQUFFO1lBQ2xCLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzlCLE9BQU8sR0FBRyxJQUFJLENBQUM7U0FDbEI7UUFDRCxZQUFZLEVBQUUsQ0FBQztJQUNuQixDQUFDLENBQUM7SUFDRixPQUFPLFdBQVcsQ0FBQztBQUN2QixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgY3JlYXRlVGhyb3R0bGVSQUYgPSAoKSA9PiB7XG4gICAgbGV0IHRpbWVySWQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICAgIGNvbnN0IHRocm90dGxlUkFGID0gKGZuOiAoKSA9PiB2b2lkKSA9PiB7XG4gICAgICAgIGNvbnN0IHNjaGVkdWxlRnVuYyA9ICgpID0+IHtcbiAgICAgICAgICAgIHRpbWVySWQgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRpbWVySWQgPSBudWxsO1xuICAgICAgICAgICAgICAgIGZuKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKHRpbWVySWQgIT09IG51bGwpIHtcbiAgICAgICAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHRpbWVySWQpO1xuICAgICAgICAgICAgdGltZXJJZCA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgc2NoZWR1bGVGdW5jKCk7XG4gICAgfTtcbiAgICByZXR1cm4gdGhyb3R0bGVSQUY7XG59O1xuXG5leHBvcnQgdHlwZSBUaHJvdHRsZVJBRiA9IChmbjogKCkgPT4gdm9pZCkgPT4gdm9pZDtcbiJdfQ==
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
export function hasBeforeContextChange(value) {
|
|
2
|
-
if (value.beforeContextChange) {
|
|
3
|
-
return true;
|
|
4
|
-
}
|
|
5
|
-
return false;
|
|
6
|
-
}
|
|
7
|
-
export function hasAfterContextChange(value) {
|
|
8
|
-
if (value.afterContextChange) {
|
|
9
|
-
return true;
|
|
10
|
-
}
|
|
11
|
-
return false;
|
|
12
|
-
}
|
|
13
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1jaGFuZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wYWNrYWdlcy9zcmMvdmlldy9jb250ZXh0LWNoYW5nZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFRQSxNQUFNLFVBQVUsc0JBQXNCLENBQUksS0FBSztJQUMzQyxJQUFJLEtBQUssQ0FBQyxtQkFBbUIsRUFBRTtRQUMzQixPQUFPLElBQUksQ0FBQztLQUNmO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDakIsQ0FBQztBQUVELE1BQU0sVUFBVSxxQkFBcUIsQ0FBSSxLQUFLO0lBQzFDLElBQUksS0FBSyxDQUFDLGtCQUFrQixFQUFFO1FBQzFCLE9BQU8sSUFBSSxDQUFDO0tBQ2Y7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNqQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBCZWZvcmVDb250ZXh0Q2hhbmdlPFQ+IHtcbiAgICBiZWZvcmVDb250ZXh0Q2hhbmdlOiAodmFsdWU6IFQpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWZ0ZXJDb250ZXh0Q2hhbmdlPD4ge1xuICAgIGFmdGVyQ29udGV4dENoYW5nZTogKCkgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhhc0JlZm9yZUNvbnRleHRDaGFuZ2U8VD4odmFsdWUpOiB2YWx1ZSBpcyBCZWZvcmVDb250ZXh0Q2hhbmdlPFQ+IHtcbiAgICBpZiAodmFsdWUuYmVmb3JlQ29udGV4dENoYW5nZSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaGFzQWZ0ZXJDb250ZXh0Q2hhbmdlPFQ+KHZhbHVlKTogdmFsdWUgaXMgQWZ0ZXJDb250ZXh0Q2hhbmdlIHtcbiAgICBpZiAodmFsdWUuYWZ0ZXJDb250ZXh0Q2hhbmdlKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG59XG4iXX0=
|
|
@@ -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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O0FBRUQsTUFBTSxVQUFVLE9BQU8sQ0FBQyxXQUE2QjtJQUNqRCxPQUFPLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFO1FBQ25CLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUMsQ0FBQztBQUNOLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUZXh0IH0gZnJvbSAnc2xhdGUnO1xuaW1wb3J0IHsgQ29tcG9uZW50UmVmLCBFbWJlZGRlZFZpZXdSZWYsIEl0ZXJhYmxlRGlmZmVyLCBJdGVyYWJsZURpZmZlcnMsIFZpZXdDb250YWluZXJSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFZpZXdUeXBlIH0gZnJvbSAnLi4vLi4vdHlwZXMvdmlldyc7XG5pbXBvcnQgeyBTbGF0ZUxlYWZDb250ZXh0LCBTbGF0ZVRleHRDb250ZXh0LCBTbGF0ZVZpZXdDb250ZXh0IH0gZnJvbSAnLi4vY29udGV4dCc7XG5pbXBvcnQgeyBjcmVhdGVFbWJlZGRlZFZpZXdPckNvbXBvbmVudCwgZ2V0Um9vdE5vZGVzLCBtb3VudCwgbW91bnRPbkl0ZW1DaGFuZ2UsIHVwZGF0ZUNvbnRleHQgfSBmcm9tICcuL3V0aWxzJztcblxuZXhwb3J0IGNsYXNzIExlYXZlc1JlbmRlciB7XG4gICAgcHJpdmF0ZSBsZWF2ZXM6IFRleHRbXTtcbiAgICBwcml2YXRlIHZpZXdzOiAoRW1iZWRkZWRWaWV3UmVmPGFueT4gfCBDb21wb25lbnRSZWY8YW55PilbXSA9IFtdO1xuICAgIHByaXZhdGUgY29udGV4dHM6IFNsYXRlTGVhZkNvbnRleHRbXSA9IFtdO1xuICAgIHByaXZhdGUgdmlld1R5cGVzOiBWaWV3VHlwZVtdID0gW107XG4gICAgcHJpdmF0ZSBkaWZmZXI6IEl0ZXJhYmxlRGlmZmVyPGFueT47XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSB2aWV3Q29udGV4dDogU2xhdGVWaWV3Q29udGV4dCxcbiAgICAgICAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgICAgICBwcml2YXRlIGdldE91dGxldFBhcmVudDogKCkgPT4gSFRNTEVsZW1lbnQsXG4gICAgICAgIHByaXZhdGUgZ2V0T3V0bGV0RWxlbWVudDogKCkgPT4gSFRNTEVsZW1lbnRcbiAgICApIHt9XG5cbiAgICBwdWJsaWMgaW5pdGlhbGl6ZShjb250ZXh0OiBTbGF0ZVRleHRDb250ZXh0KSB7XG4gICAgICAgIGNvbnN0IHsgbGVhdmVzLCBjb250ZXh0cyB9ID0gdGhpcy5nZXRMZWF2ZXMoY29udGV4dCk7XG4gICAgICAgIHRoaXMubGVhdmVzID0gbGVhdmVzO1xuICAgICAgICB0aGlzLmNvbnRleHRzID0gY29udGV4dHM7XG4gICAgICAgIHRoaXMubGVhdmVzLmZvckVhY2goKGxlYWYsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjb250ZXh0ID0gZ2V0Q29udGV4dChpbmRleCwgdGhpcy5jb250ZXh0cyk7XG4gICAgICAgICAgICBjb25zdCB2aWV3VHlwZSA9IGdldFZpZXdUeXBlKGNvbnRleHQsIHRoaXMudmlld0NvbnRleHQpO1xuICAgICAgICAgICAgY29uc3QgdmlldyA9IGNyZWF0ZUVtYmVkZGVkVmlld09yQ29tcG9uZW50KHZpZXdUeXBlLCBjb250ZXh0LCB0aGlzLnZpZXdDb250ZXh0LCB0aGlzLnZpZXdDb250YWluZXJSZWYpO1xuICAgICAgICAgICAgdGhpcy52aWV3cy5wdXNoKHZpZXcpO1xuICAgICAgICAgICAgdGhpcy5jb250ZXh0cy5wdXNoKGNvbnRleHQpO1xuICAgICAgICAgICAgdGhpcy52aWV3VHlwZXMucHVzaCh2aWV3VHlwZSk7XG4gICAgICAgIH0pO1xuICAgICAgICBtb3VudCh0aGlzLnZpZXdzLCBudWxsLCB0aGlzLmdldE91dGxldFBhcmVudCgpLCB0aGlzLmdldE91dGxldEVsZW1lbnQoKSk7XG4gICAgICAgIGNvbnN0IG5ld0RpZmZlcnMgPSB0aGlzLnZpZXdDb250YWluZXJSZWYuaW5qZWN0b3IuZ2V0KEl0ZXJhYmxlRGlmZmVycyk7XG4gICAgICAgIHRoaXMuZGlmZmVyID0gbmV3RGlmZmVycy5maW5kKHRoaXMubGVhdmVzKS5jcmVhdGUodHJhY2tCeSh0aGlzLnZpZXdDb250ZXh0KSk7XG4gICAgICAgIHRoaXMuZGlmZmVyLmRpZmYodGhpcy5sZWF2ZXMpO1xuICAgIH1cblxuICAgIHB1YmxpYyB1cGRhdGUoY29udGV4dDogU2xhdGVUZXh0Q29udGV4dCkge1xuICAgICAgICBjb25zdCB7IGxlYXZlcywgY29udGV4dHMgfSA9IHRoaXMuZ2V0TGVhdmVzKGNvbnRleHQpO1xuICAgICAgICBjb25zdCBvdXRsZXRQYXJlbnQgPSB0aGlzLmdldE91dGxldFBhcmVudCgpO1xuICAgICAgICBjb25zdCBkaWZmUmVzdWx0ID0gdGhpcy5kaWZmZXIuZGlmZihsZWF2ZXMpO1xuICAgICAgICBpZiAoZGlmZlJlc3VsdCkge1xuICAgICAgICAgICAgbGV0IGZpcnN0Um9vdE5vZGUgPSBnZXRSb290Tm9kZXModGhpcy52aWV3c1swXSlbMF07XG4gICAgICAgICAgICBjb25zdCBuZXdDb250ZXh0cyA9IFtdO1xuICAgICAgICAgICAgY29uc3QgbmV3Vmlld1R5cGVzID0gW107XG4gICAgICAgICAgICBjb25zdCBuZXdWaWV3cyA9IFtdO1xuICAgICAgICAgICAgZGlmZlJlc3VsdC5mb3JFYWNoSXRlbShyZWNvcmQgPT4ge1xuICAgICAgICAgICAgICAgIGxldCBjb250ZXh0ID0gZ2V0Q29udGV4dChyZWNvcmQuY3VycmVudEluZGV4LCBjb250ZXh0cyk7XG4gICAgICAgICAgICAgICAgY29uc3Qgdmlld1R5cGUgPSBnZXRWaWV3VHlwZShjb250ZXh0LCB0aGlzLnZpZXdDb250ZXh0KTtcbiAgICAgICAgICAgICAgICBuZXdWaWV3VHlwZXMucHVzaCh2aWV3VHlwZSk7XG4gICAgICAgICAgICAgICAgbGV0IHZpZXc6IEVtYmVkZGVkVmlld1JlZjxhbnk+IHwgQ29tcG9uZW50UmVmPGFueT47XG4gICAgICAgICAgICAgICAgaWYgKHJlY29yZC5wcmV2aW91c0luZGV4ID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHZpZXcgPSBjcmVhdGVFbWJlZGRlZFZpZXdPckNvbXBvbmVudCh2aWV3VHlwZSwgY29udGV4dCwgdGhpcy52aWV3Q29udGV4dCwgdGhpcy52aWV3Q29udGFpbmVyUmVmKTtcbiAgICAgICAgICAgICAgICAgICAgbmV3Q29udGV4dHMucHVzaChjb250ZXh0KTtcbiAgICAgICAgICAgICAgICAgICAgbmV3Vmlld3MucHVzaCh2aWV3KTtcbiAgICAgICAgICAgICAgICAgICAgbW91bnRPbkl0ZW1DaGFuZ2UocmVjb3JkLmN1cnJlbnRJbmRleCwgcmVjb3JkLml0ZW0sIG5ld1ZpZXdzLCBudWxsLCBvdXRsZXRQYXJlbnQsIGZpcnN0Um9vdE5vZGUsIHRoaXMudmlld0NvbnRleHQpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHByZXZpb3VzVmlldyA9IHRoaXMudmlld3NbcmVjb3JkLnByZXZpb3VzSW5kZXhdO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwcmV2aW91c1ZpZXdUeXBlID0gdGhpcy52aWV3VHlwZXNbcmVjb3JkLnByZXZpb3VzSW5kZXhdO1xuICAgICAgICAgICAgICAgICAgICBpZiAocHJldmlvdXNWaWV3VHlwZSAhPT0gdmlld1R5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZpZXcgPSBjcmVhdGVFbWJlZGRlZFZpZXdPckNvbXBvbmVudCh2aWV3VHlwZSwgY29udGV4dCwgdGhpcy52aWV3Q29udGV4dCwgdGhpcy52aWV3Q29udGFpbmVyUmVmKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpcnN0Um9vdE5vZGUgPSBnZXRSb290Tm9kZXMocHJldmlvdXNWaWV3LCBudWxsKVswXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ld1Jvb3ROb2RlcyA9IGdldFJvb3ROb2Rlcyh2aWV3LCBudWxsKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0Um9vdE5vZGUucmVwbGFjZVdpdGgoLi4ubmV3Um9vdE5vZGVzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZXZpb3VzVmlldy5kZXN0cm95KCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2aWV3ID0gcHJldmlvdXNWaWV3O1xuICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlQ29udGV4dChwcmV2aW91c1ZpZXcsIGNvbnRleHQsIHRoaXMudmlld0NvbnRleHQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIG5ld0NvbnRleHRzLnB1c2goY29udGV4dCk7XG4gICAgICAgICAgICAgICAgICAgIG5ld1ZpZXdzLnB1c2godmlldyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBkaWZmUmVzdWx0LmZvckVhY2hSZW1vdmVkSXRlbShyZWNvcmQgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHZpZXcgPSB0aGlzLnZpZXdzW3JlY29yZC5wcmV2aW91c0luZGV4XTtcbiAgICAgICAgICAgICAgICB2aWV3LmRlc3Ryb3koKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgZGlmZlJlc3VsdC5mb3JFYWNoTW92ZWRJdGVtKHJlY29yZCA9PiB7XG4gICAgICAgICAgICAgICAgbW91bnRPbkl0ZW1DaGFuZ2UocmVjb3JkLmN1cnJlbnRJbmRleCwgcmVjb3JkLml0ZW0sIG5ld1ZpZXdzLCBudWxsLCBvdXRsZXRQYXJlbnQsIGZpcnN0Um9vdE5vZGUsIHRoaXMudmlld0NvbnRleHQpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLnZpZXdUeXBlcyA9IG5ld1ZpZXdUeXBlcztcbiAgICAgICAgICAgIHRoaXMudmlld3MgPSBuZXdWaWV3cztcbiAgICAgICAgICAgIHRoaXMuY29udGV4dHMgPSBuZXdDb250ZXh0cztcbiAgICAgICAgICAgIHRoaXMubGVhdmVzID0gbGVhdmVzO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRMZWF2ZXMoY29udGV4dDogU2xhdGVUZXh0Q29udGV4dCkge1xuICAgICAgICBjb25zdCBsZWF2ZXMgPSBUZXh0LmRlY29yYXRpb25zKGNvbnRleHQudGV4dCwgY29udGV4dC5kZWNvcmF0aW9ucyk7XG4gICAgICAgIGNvbnN0IGNvbnRleHRzID0gbGVhdmVzLm1hcCgobGVhZiwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgbGVhZixcbiAgICAgICAgICAgICAgICB0ZXh0OiBjb250ZXh0LnRleHQsXG4gICAgICAgICAgICAgICAgcGFyZW50OiBjb250ZXh0LnBhcmVudCxcbiAgICAgICAgICAgICAgICBpbmRleCxcbiAgICAgICAgICAgICAgICBpc0xhc3Q6IGNvbnRleHQuaXNMYXN0ICYmIGluZGV4ID09PSBsZWF2ZXMubGVuZ3RoIC0gMVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB7IGxlYXZlcywgY29udGV4dHMgfTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb250ZXh0KGluZGV4OiBudW1iZXIsIGxlYWZDb250ZXh0czogU2xhdGVMZWFmQ29udGV4dFtdKTogU2xhdGVMZWFmQ29udGV4dCB7XG4gICAgcmV0dXJuIGxlYWZDb250ZXh0c1tpbmRleF07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRWaWV3VHlwZShsZWFmQ29udGV4dDogU2xhdGVMZWFmQ29udGV4dCwgdmlld0NvbnRleHQ6IFNsYXRlVmlld0NvbnRleHQpIHtcbiAgICByZXR1cm4gKHZpZXdDb250ZXh0LnJlbmRlckxlYWYgJiYgdmlld0NvbnRleHQucmVuZGVyTGVhZihsZWFmQ29udGV4dC5sZWFmKSkgfHwgdmlld0NvbnRleHQuZGVmYXVsdExlYWY7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0cmFja0J5KHZpZXdDb250ZXh0OiBTbGF0ZVZpZXdDb250ZXh0KSB7XG4gICAgcmV0dXJuIChpbmRleCwgbm9kZSkgPT4ge1xuICAgICAgICByZXR1cm4gaW5kZXg7XG4gICAgfTtcbn1cbiJdfQ==
|