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.
Files changed (54) hide show
  1. package/components/children/children.component.d.ts +6 -1
  2. package/components/descendant/descendant.component.d.ts +35 -0
  3. package/components/editable/editable.component.d.ts +5 -15
  4. package/components/leaf/leaf.component.d.ts +16 -0
  5. package/components/leaves/leaves.component.d.ts +14 -1
  6. package/components/string/default-string.component.d.ts +1 -1
  7. package/components/string/string.component.d.ts +0 -8
  8. package/esm2022/components/block-card/block-card.component.mjs +2 -2
  9. package/esm2022/components/children/children.component.mjs +33 -5
  10. package/esm2022/components/descendant/descendant.component.mjs +186 -0
  11. package/esm2022/components/editable/editable.component.mjs +38 -115
  12. package/esm2022/components/element/default-element.component.mjs +3 -3
  13. package/esm2022/components/element/element.component.mjs +3 -3
  14. package/esm2022/components/leaf/leaf.component.mjs +38 -0
  15. package/esm2022/components/leaves/leaves.component.mjs +50 -5
  16. package/esm2022/components/string/default-string.component.mjs +1 -1
  17. package/esm2022/components/string/string.component.mjs +6 -16
  18. package/esm2022/components/text/default-text.component.mjs +3 -3
  19. package/esm2022/components/text/void-text.component.mjs +3 -3
  20. package/esm2022/module.mjs +22 -7
  21. package/esm2022/plugins/angular-editor.mjs +6 -7
  22. package/esm2022/plugins/with-angular.mjs +4 -4
  23. package/esm2022/public-api.mjs +2 -3
  24. package/esm2022/utils/index.mjs +1 -2
  25. package/esm2022/view/base.mjs +17 -51
  26. package/esm2022/view/before-context-change.mjs +7 -0
  27. package/esm2022/view/container.mjs +82 -2
  28. package/esm2022/view/context.mjs +1 -1
  29. package/fesm2022/slate-angular.mjs +747 -1004
  30. package/fesm2022/slate-angular.mjs.map +1 -1
  31. package/module.d.ts +8 -7
  32. package/package.json +5 -5
  33. package/plugins/angular-editor.d.ts +1 -1
  34. package/public-api.d.ts +1 -2
  35. package/utils/index.d.ts +0 -1
  36. package/view/base.d.ts +4 -15
  37. package/view/{context-change.d.ts → before-context-change.d.ts} +0 -4
  38. package/view/container.d.ts +7 -3
  39. package/view/context.d.ts +1 -6
  40. package/components/children/children-outlet.component.d.ts +0 -9
  41. package/components/leaf/token.d.ts +0 -4
  42. package/components/text/token.d.ts +0 -5
  43. package/esm2022/components/children/children-outlet.component.mjs +0 -22
  44. package/esm2022/components/leaf/token.mjs +0 -3
  45. package/esm2022/components/text/token.mjs +0 -4
  46. package/esm2022/utils/throttle.mjs +0 -18
  47. package/esm2022/view/context-change.mjs +0 -13
  48. package/esm2022/view/render/leaves-render.mjs +0 -107
  49. package/esm2022/view/render/list-render.mjs +0 -253
  50. package/esm2022/view/render/utils.mjs +0 -117
  51. package/utils/throttle.d.ts +0 -2
  52. package/view/render/leaves-render.d.ts +0 -21
  53. package/view/render/list-render.d.ts +0 -32
  54. 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/children/children.component";
11
- import * as i10 from "./components/block-card/block-card.component";
12
- import * as i11 from "./components/leaves/leaves.component";
13
- import * as i12 from "./components/leaf/default-leaf.component";
14
- import * as i13 from "./components/string/default-string.component";
15
- import * as i14 from "./components/children/children-outlet.component";
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.SlateChildren, typeof i10.SlateBlockCard, typeof i11.SlateLeaves, typeof i12.SlateDefaultLeaf, typeof i13.SlateDefaultString, typeof i14.SlateChildrenOutlet], [typeof i2.SlateEditable, typeof i9.SlateChildren, typeof i14.SlateChildrenOutlet, typeof i4.SlateElement, typeof i11.SlateLeaves, typeof i7.SlateString, typeof i13.SlateDefaultString]>;
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": "16.1.0-next.8",
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.101.5",
18
- "slate-history": "^0.100.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": "^3.1.0",
22
- "tslib": "^2.6.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
@@ -7,4 +7,3 @@ export * from './key';
7
7
  export * from './range-list';
8
8
  export * from './block-card';
9
9
  export * from './global-normalize';
10
- export * from './throttle';
package/view/base.d.ts CHANGED
@@ -1,11 +1,8 @@
1
- import { ChangeDetectorRef, ElementRef, OnDestroy, OnInit, ViewContainerRef } from '@angular/core';
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
- viewContainerRef: ViewContainerRef;
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
- viewContainerRef: ViewContainerRef;
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;
@@ -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 { ComponentType, ViewType } from '../types/view';
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,4 +0,0 @@
1
- import { InjectionToken } from '@angular/core';
2
- import { ComponentType } from '../../types/view';
3
- import { BaseLeafComponent } from '../../view/base';
4
- export declare const SLATE_DEFAULT_LEAF_COMPONENT_TOKEN: InjectionToken<ComponentType<BaseLeafComponent>>;
@@ -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==