slate-angular 16.0.0 → 16.1.0-next

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 (37) hide show
  1. package/components/block-card/block-card.component.d.ts +3 -3
  2. package/components/children/children.component.d.ts +5 -5
  3. package/components/descendant/descendant.component.d.ts +3 -3
  4. package/components/editable/editable.component.d.ts +5 -5
  5. package/components/element/default-element.component.d.ts +3 -3
  6. package/components/element/element.component.d.ts +3 -3
  7. package/components/leaf/default-leaf.component.d.ts +3 -3
  8. package/components/leaf/leaf.component.d.ts +3 -3
  9. package/components/leaves/leaves.component.d.ts +5 -5
  10. package/components/string/default-string.component.d.ts +3 -3
  11. package/components/string/string.component.d.ts +5 -5
  12. package/components/string/template.component.d.ts +3 -3
  13. package/components/text/default-text.component.d.ts +3 -3
  14. package/components/text/void-text.component.d.ts +3 -3
  15. package/esm2022/components/block-card/block-card.component.mjs +6 -6
  16. package/esm2022/components/children/children.component.mjs +12 -11
  17. package/esm2022/components/descendant/descendant.component.mjs +13 -12
  18. package/esm2022/components/editable/editable.component.mjs +13 -13
  19. package/esm2022/components/element/default-element.component.mjs +9 -7
  20. package/esm2022/components/element/element.component.mjs +9 -7
  21. package/esm2022/components/leaf/default-leaf.component.mjs +9 -7
  22. package/esm2022/components/leaf/leaf.component.mjs +9 -8
  23. package/esm2022/components/leaves/leaves.component.mjs +12 -11
  24. package/esm2022/components/string/default-string.component.mjs +7 -6
  25. package/esm2022/components/string/string.component.mjs +10 -9
  26. package/esm2022/components/string/template.component.mjs +6 -6
  27. package/esm2022/components/text/default-text.component.mjs +9 -7
  28. package/esm2022/components/text/void-text.component.mjs +9 -7
  29. package/esm2022/module.mjs +59 -58
  30. package/esm2022/view/container-item.mjs +1 -1
  31. package/esm2022/view/context.mjs +1 -1
  32. package/fesm2022/slate-angular.mjs +162 -144
  33. package/fesm2022/slate-angular.mjs.map +1 -1
  34. package/module.d.ts +16 -16
  35. package/package.json +8 -3
  36. package/view/container-item.d.ts +2 -2
  37. package/view/context.d.ts +2 -2
@@ -1,6 +1,6 @@
1
1
  import { ElementRef, OnInit } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
- export declare class SlateBlockCardComponent implements OnInit {
3
+ export declare class SlateBlockCard implements OnInit {
4
4
  private elementRef;
5
5
  centerContianer: ElementRef;
6
6
  centerRootNodes: HTMLElement[];
@@ -10,6 +10,6 @@ export declare class SlateBlockCardComponent implements OnInit {
10
10
  ngOnInit(): void;
11
11
  append(): void;
12
12
  initializeCenter(rootNodes: HTMLElement[]): void;
13
- static ɵfac: i0.ɵɵFactoryDeclaration<SlateBlockCardComponent, never>;
14
- static ɵcmp: i0.ɵɵComponentDeclaration<SlateBlockCardComponent, "slate-block-card, [slateBlockCard]", never, {}, {}, never, never, false, never>;
13
+ static ɵfac: i0.ɵɵFactoryDeclaration<SlateBlockCard, never>;
14
+ static ɵcmp: i0.ɵɵComponentDeclaration<SlateBlockCard, "slate-block-card, [slateBlockCard]", never, {}, {}, never, never, true, never>;
15
15
  }
@@ -1,16 +1,16 @@
1
1
  import { OnInit, QueryList } from '@angular/core';
2
- import { SlateDescendantComponent } from '../descendant/descendant.component';
2
+ import { SlateDescendant } from '../descendant/descendant.component';
3
3
  import { Descendant } from 'slate';
4
4
  import { SlateChildrenContext, SlateViewContext } from '../../view/context';
5
5
  import { ViewContainer } from '../../view/container';
6
6
  import * as i0 from "@angular/core";
7
- export declare class SlateChildrenComponent extends ViewContainer<SlateDescendantComponent> implements OnInit {
7
+ export declare class SlateChildren extends ViewContainer<SlateDescendant> implements OnInit {
8
8
  children: Descendant[];
9
9
  context: SlateChildrenContext;
10
10
  viewContext: SlateViewContext;
11
- childrenComponent: QueryList<SlateDescendantComponent>;
11
+ childrenComponent: QueryList<SlateDescendant>;
12
12
  ngOnInit(): void;
13
13
  trackBy: (index: any, node: any) => any;
14
- static ɵfac: i0.ɵɵFactoryDeclaration<SlateChildrenComponent, never>;
15
- static ɵcmp: i0.ɵɵComponentDeclaration<SlateChildrenComponent, "slate-children", never, { "children": { "alias": "children"; "required": false; }; "context": { "alias": "context"; "required": false; }; "viewContext": { "alias": "viewContext"; "required": false; }; }, {}, never, never, false, never>;
14
+ static ɵfac: i0.ɵɵFactoryDeclaration<SlateChildren, never>;
15
+ static ɵcmp: i0.ɵɵComponentDeclaration<SlateChildren, "slate-children", never, { "children": { "alias": "children"; "required": false; }; "context": { "alias": "context"; "required": false; }; "viewContext": { "alias": "viewContext"; "required": false; }; }, {}, never, never, true, never>;
16
16
  }
@@ -5,7 +5,7 @@ import { SlateChildrenContext, SlateElementContext, SlateTextContext, SlateViewC
5
5
  import { BaseElementComponent, BaseTextComponent } from '../../view/base';
6
6
  import { ComponentType, ViewType } from '../../types/view';
7
7
  import * as i0 from "@angular/core";
8
- export declare class SlateDescendantComponent extends ViewContainerItem<SlateElementContext | SlateTextContext, BaseElementComponent | BaseTextComponent> implements OnInit, OnChanges {
8
+ export declare class SlateDescendant extends ViewContainerItem<SlateElementContext | SlateTextContext, BaseElementComponent | BaseTextComponent> implements OnInit, OnChanges {
9
9
  protected viewContainerRef: ViewContainerRef;
10
10
  defaultElementComponentType: ComponentType<BaseElementComponent>;
11
11
  descendant: Descendant;
@@ -30,6 +30,6 @@ export declare class SlateDescendantComponent extends ViewContainerItem<SlateEle
30
30
  memoizedElementContext(prev: SlateElementContext, next: SlateElementContext): boolean;
31
31
  memoizedTextContext(prev: SlateTextContext, next: SlateTextContext): boolean;
32
32
  memoizedContext(prev: SlateElementContext | SlateTextContext, next: SlateElementContext | SlateTextContext): boolean;
33
- static ɵfac: i0.ɵɵFactoryDeclaration<SlateDescendantComponent, never>;
34
- static ɵcmp: i0.ɵɵComponentDeclaration<SlateDescendantComponent, "slate-descendant", never, { "descendant": { "alias": "descendant"; "required": false; }; "context": { "alias": "context"; "required": false; }; "viewContext": { "alias": "viewContext"; "required": false; }; "index": { "alias": "index"; "required": false; }; }, {}, never, never, false, never>;
33
+ static ɵfac: i0.ɵɵFactoryDeclaration<SlateDescendant, never>;
34
+ static ɵcmp: i0.ɵɵComponentDeclaration<SlateDescendant, "slate-descendant", never, { "descendant": { "alias": "descendant"; "required": false; }; "context": { "alias": "context"; "required": false; }; "viewContext": { "alias": "viewContext"; "required": false; }; "index": { "alias": "index"; "required": false; }; }, {}, never, never, true, never>;
35
35
  }
@@ -2,12 +2,12 @@ import { OnInit, Renderer2, ElementRef, OnDestroy, ChangeDetectorRef, NgZone, In
2
2
  import { Text as SlateText, Element, Editor, Range, NodeEntry } from 'slate';
3
3
  import { AngularEditor } from '../../plugins/angular-editor';
4
4
  import { DOMElement, DOMNode, DOMRange } from '../../utils/dom';
5
- import { SlateStringTemplateComponent } from '../string/template.component';
5
+ import { SlateStringTemplate } from '../string/template.component';
6
6
  import { SlateChildrenContext, SlateViewContext } from '../../view/context';
7
7
  import { ViewType } from '../../types/view';
8
8
  import { SlatePlaceholder } from '../../types/feature';
9
9
  import * as i0 from "@angular/core";
10
- export declare class SlateEditableComponent implements OnInit, OnChanges, OnDestroy, AfterViewChecked, DoCheck {
10
+ export declare class SlateEditable implements OnInit, OnChanges, OnDestroy, AfterViewChecked, DoCheck {
11
11
  elementRef: ElementRef;
12
12
  renderer2: Renderer2;
13
13
  cdr: ChangeDetectorRef;
@@ -57,7 +57,7 @@ export declare class SlateEditableComponent implements OnInit, OnChanges, OnDest
57
57
  dataSlateNode: string;
58
58
  dataGramm: boolean;
59
59
  get hasBeforeInputSupport(): boolean;
60
- templateComponent: SlateStringTemplateComponent;
60
+ templateComponent: SlateStringTemplate;
61
61
  templateElementRef: ElementRef<any>;
62
62
  constructor(elementRef: ElementRef, renderer2: Renderer2, cdr: ChangeDetectorRef, ngZone: NgZone, injector: Injector);
63
63
  ngOnInit(): void;
@@ -96,8 +96,8 @@ export declare class SlateEditableComponent implements OnInit, OnChanges, OnDest
96
96
  private onFallbackBeforeInput;
97
97
  private isDOMEventHandled;
98
98
  ngOnDestroy(): void;
99
- static ɵfac: i0.ɵɵFactoryDeclaration<SlateEditableComponent, never>;
100
- static ɵcmp: i0.ɵɵComponentDeclaration<SlateEditableComponent, "slate-editable", never, { "editor": { "alias": "editor"; "required": false; }; "renderElement": { "alias": "renderElement"; "required": false; }; "renderLeaf": { "alias": "renderLeaf"; "required": false; }; "renderText": { "alias": "renderText"; "required": false; }; "decorate": { "alias": "decorate"; "required": false; }; "placeholderDecorate": { "alias": "placeholderDecorate"; "required": false; }; "scrollSelectionIntoView": { "alias": "scrollSelectionIntoView"; "required": false; }; "isStrictDecorate": { "alias": "isStrictDecorate"; "required": false; }; "trackBy": { "alias": "trackBy"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "beforeInput": { "alias": "beforeInput"; "required": false; }; "blur": { "alias": "blur"; "required": false; }; "click": { "alias": "click"; "required": false; }; "compositionEnd": { "alias": "compositionEnd"; "required": false; }; "compositionUpdate": { "alias": "compositionUpdate"; "required": false; }; "compositionStart": { "alias": "compositionStart"; "required": false; }; "copy": { "alias": "copy"; "required": false; }; "cut": { "alias": "cut"; "required": false; }; "dragOver": { "alias": "dragOver"; "required": false; }; "dragStart": { "alias": "dragStart"; "required": false; }; "dragEnd": { "alias": "dragEnd"; "required": false; }; "drop": { "alias": "drop"; "required": false; }; "focus": { "alias": "focus"; "required": false; }; "keydown": { "alias": "keydown"; "required": false; }; "paste": { "alias": "paste"; "required": false; }; "spellCheck": { "alias": "spellCheck"; "required": false; }; "autoCorrect": { "alias": "autoCorrect"; "required": false; }; "autoCapitalize": { "alias": "autoCapitalize"; "required": false; }; }, {}, never, never, false, never>;
99
+ static ɵfac: i0.ɵɵFactoryDeclaration<SlateEditable, never>;
100
+ static ɵcmp: i0.ɵɵComponentDeclaration<SlateEditable, "slate-editable", never, { "editor": { "alias": "editor"; "required": false; }; "renderElement": { "alias": "renderElement"; "required": false; }; "renderLeaf": { "alias": "renderLeaf"; "required": false; }; "renderText": { "alias": "renderText"; "required": false; }; "decorate": { "alias": "decorate"; "required": false; }; "placeholderDecorate": { "alias": "placeholderDecorate"; "required": false; }; "scrollSelectionIntoView": { "alias": "scrollSelectionIntoView"; "required": false; }; "isStrictDecorate": { "alias": "isStrictDecorate"; "required": false; }; "trackBy": { "alias": "trackBy"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "beforeInput": { "alias": "beforeInput"; "required": false; }; "blur": { "alias": "blur"; "required": false; }; "click": { "alias": "click"; "required": false; }; "compositionEnd": { "alias": "compositionEnd"; "required": false; }; "compositionUpdate": { "alias": "compositionUpdate"; "required": false; }; "compositionStart": { "alias": "compositionStart"; "required": false; }; "copy": { "alias": "copy"; "required": false; }; "cut": { "alias": "cut"; "required": false; }; "dragOver": { "alias": "dragOver"; "required": false; }; "dragStart": { "alias": "dragStart"; "required": false; }; "dragEnd": { "alias": "dragEnd"; "required": false; }; "drop": { "alias": "drop"; "required": false; }; "focus": { "alias": "focus"; "required": false; }; "keydown": { "alias": "keydown"; "required": false; }; "paste": { "alias": "paste"; "required": false; }; "spellCheck": { "alias": "spellCheck"; "required": false; }; "autoCorrect": { "alias": "autoCorrect"; "required": false; }; "autoCapitalize": { "alias": "autoCapitalize"; "required": false; }; }, {}, never, never, true, never>;
101
101
  }
102
102
  export declare const defaultScrollSelectionIntoView: (editor: AngularEditor, domRange: DOMRange) => void;
103
103
  /**
@@ -1,6 +1,6 @@
1
1
  import { BaseElementComponent } from '../../view/base';
2
2
  import * as i0 from "@angular/core";
3
- export declare class SlateDefaultElementComponent extends BaseElementComponent {
4
- static ɵfac: i0.ɵɵFactoryDeclaration<SlateDefaultElementComponent, never>;
5
- static ɵcmp: i0.ɵɵComponentDeclaration<SlateDefaultElementComponent, "div[slateDefaultElement]", never, {}, {}, never, never, false, never>;
3
+ export declare class SlateDefaultElement extends BaseElementComponent {
4
+ static ɵfac: i0.ɵɵFactoryDeclaration<SlateDefaultElement, never>;
5
+ static ɵcmp: i0.ɵɵComponentDeclaration<SlateDefaultElement, "div[slateDefaultElement]", never, {}, {}, never, never, true, never>;
6
6
  }
@@ -1,6 +1,6 @@
1
1
  import { BaseElementComponent } from '../../view/base';
2
2
  import * as i0 from "@angular/core";
3
- export declare class SlateElementComponent extends BaseElementComponent {
4
- static ɵfac: i0.ɵɵFactoryDeclaration<SlateElementComponent, never>;
5
- static ɵcmp: i0.ɵɵComponentDeclaration<SlateElementComponent, "[slateElement]", never, {}, {}, never, ["*"], false, never>;
3
+ export declare class SlateElement extends BaseElementComponent {
4
+ static ɵfac: i0.ɵɵFactoryDeclaration<SlateElement, never>;
5
+ static ɵcmp: i0.ɵɵComponentDeclaration<SlateElement, "[slateElement]", never, {}, {}, never, ["*"], true, never>;
6
6
  }
@@ -1,9 +1,9 @@
1
1
  import { OnDestroy } from '@angular/core';
2
2
  import { BaseLeafComponent } from '../../view/base';
3
3
  import * as i0 from "@angular/core";
4
- export declare class SlateDefaultLeafComponent extends BaseLeafComponent implements OnDestroy {
4
+ export declare class SlateDefaultLeaf extends BaseLeafComponent implements OnDestroy {
5
5
  onContextChange(): void;
6
6
  ngOnDestroy(): void;
7
- static ɵfac: i0.ɵɵFactoryDeclaration<SlateDefaultLeafComponent, never>;
8
- static ɵcmp: i0.ɵɵComponentDeclaration<SlateDefaultLeafComponent, "span[slateDefaultLeaf]", never, {}, {}, never, never, false, never>;
7
+ static ɵfac: i0.ɵɵFactoryDeclaration<SlateDefaultLeaf, never>;
8
+ static ɵcmp: i0.ɵɵComponentDeclaration<SlateDefaultLeaf, "span[slateDefaultLeaf]", never, {}, {}, never, never, true, never>;
9
9
  }
@@ -4,13 +4,13 @@ import { SlateLeafContext } from '../../view/context';
4
4
  import { BaseLeafComponent } from '../../view/base';
5
5
  import { ViewType } from '../../types/view';
6
6
  import * as i0 from "@angular/core";
7
- export declare class SlateLeafComponent extends ViewContainerItem<SlateLeafContext, BaseLeafComponent> implements OnInit, OnChanges {
7
+ export declare class SlateLeaf extends ViewContainerItem<SlateLeafContext, BaseLeafComponent> implements OnInit, OnChanges {
8
8
  context: SlateLeafContext;
9
9
  ngOnInit(): void;
10
10
  getContext(): SlateLeafContext;
11
11
  getViewType(): ViewType;
12
12
  memoizedContext(prev: SlateLeafContext, next: SlateLeafContext): boolean;
13
13
  ngOnChanges(simpleChanges: SimpleChanges): void;
14
- static ɵfac: i0.ɵɵFactoryDeclaration<SlateLeafComponent, never>;
15
- static ɵcmp: i0.ɵɵComponentDeclaration<SlateLeafComponent, "slate-leaf", never, { "context": { "alias": "context"; "required": false; }; }, {}, never, never, false, never>;
14
+ static ɵfac: i0.ɵɵFactoryDeclaration<SlateLeaf, never>;
15
+ static ɵcmp: i0.ɵɵComponentDeclaration<SlateLeaf, "slate-leaf", never, { "context": { "alias": "context"; "required": false; }; }, {}, never, never, true, never>;
16
16
  }
@@ -2,14 +2,14 @@ import { AfterViewInit, OnChanges, OnInit, QueryList, SimpleChanges } from '@ang
2
2
  import { Text } from 'slate';
3
3
  import { SlateLeafContext, SlateTextContext } from '../../view/context';
4
4
  import { ViewContainer } from '../../view/container';
5
- import { SlateLeafComponent } from '../leaf/leaf.component';
5
+ import { SlateLeaf } from '../leaf/leaf.component';
6
6
  import * as i0 from "@angular/core";
7
- export declare class SlateLeavesComponent extends ViewContainer<SlateLeafComponent> implements OnInit, AfterViewInit, OnChanges {
7
+ export declare class SlateLeaves extends ViewContainer<SlateLeaf> implements OnInit, AfterViewInit, OnChanges {
8
8
  initialized: boolean;
9
9
  leafContexts: SlateLeafContext[];
10
10
  leaves: Text[];
11
11
  context: SlateTextContext;
12
- childrenComponent: QueryList<SlateLeafComponent>;
12
+ childrenComponent: QueryList<SlateLeaf>;
13
13
  ngOnInit(): void;
14
14
  getLeafContexts(): {
15
15
  leaf: import("slate").BaseText;
@@ -20,6 +20,6 @@ export declare class SlateLeavesComponent extends ViewContainer<SlateLeafCompone
20
20
  }[];
21
21
  ngOnChanges(simpleChanges: SimpleChanges): void;
22
22
  trackBy(index: any, item: any): any;
23
- static ɵfac: i0.ɵɵFactoryDeclaration<SlateLeavesComponent, never>;
24
- static ɵcmp: i0.ɵɵComponentDeclaration<SlateLeavesComponent, "slate-leaves", never, { "context": { "alias": "context"; "required": false; }; }, {}, never, never, false, never>;
23
+ static ɵfac: i0.ɵɵFactoryDeclaration<SlateLeaves, never>;
24
+ static ɵcmp: i0.ɵɵComponentDeclaration<SlateLeaves, "slate-leaves", never, { "context": { "alias": "context"; "required": false; }; }, {}, never, never, true, never>;
25
25
  }
@@ -4,7 +4,7 @@ import { BaseComponent } from '../../view/base';
4
4
  import { BeforeContextChange } from '../../view/before-context-change';
5
5
  import { DOMElement } from '../../utils/dom';
6
6
  import * as i0 from "@angular/core";
7
- export declare class SlateDefaultStringComponent extends BaseComponent<SlateStringContext> implements OnInit, BeforeContextChange<SlateStringContext> {
7
+ export declare class SlateDefaultString extends BaseComponent<SlateStringContext> implements OnInit, BeforeContextChange<SlateStringContext> {
8
8
  elementRef: ElementRef<any>;
9
9
  cdr: ChangeDetectorRef;
10
10
  textNode?: Text;
@@ -18,6 +18,6 @@ export declare class SlateDefaultStringComponent extends BaseComponent<SlateStri
18
18
  updateStringDOM(): void;
19
19
  removeStringDOM(): void;
20
20
  ngOnInit(): void;
21
- static ɵfac: i0.ɵɵFactoryDeclaration<SlateDefaultStringComponent, never>;
22
- static ɵcmp: i0.ɵɵComponentDeclaration<SlateDefaultStringComponent, "span[slateDefaultString]", never, {}, {}, never, never, false, never>;
21
+ static ɵfac: i0.ɵɵFactoryDeclaration<SlateDefaultString, never>;
22
+ static ɵcmp: i0.ɵɵComponentDeclaration<SlateDefaultString, "span[slateDefaultString]", never, {}, {}, never, never, true, never>;
23
23
  }
@@ -1,9 +1,9 @@
1
1
  import { OnInit, OnChanges, ElementRef, ViewContainerRef, AfterViewInit } from '@angular/core';
2
2
  import { ViewContainerItem } from '../../view/container-item';
3
3
  import { SlateLeafContext, SlateStringContext } from '../../view/context';
4
- import { SlateDefaultStringComponent } from './default-string.component';
4
+ import { SlateDefaultString } from './default-string.component';
5
5
  import * as i0 from "@angular/core";
6
- export declare class SlateStringComponent extends ViewContainerItem<SlateStringContext> implements OnInit, OnChanges, AfterViewInit {
6
+ export declare class SlateString extends ViewContainerItem<SlateStringContext> implements OnInit, OnChanges, AfterViewInit {
7
7
  private elementRef;
8
8
  protected viewContainerRef: ViewContainerRef;
9
9
  context: SlateLeafContext;
@@ -15,10 +15,10 @@ export declare class SlateStringComponent extends ViewContainerItem<SlateStringC
15
15
  isEmptyText(): boolean;
16
16
  isCompatibleString(): boolean;
17
17
  isVoid(): boolean;
18
- getViewType(): import("@angular/core").TemplateRef<any> | typeof SlateDefaultStringComponent;
18
+ getViewType(): import("@angular/core").TemplateRef<any> | typeof SlateDefaultString;
19
19
  getType(): SlateStringContext['type'];
20
20
  getContext(): SlateStringContext;
21
21
  memoizedContext(prev: SlateStringContext, next: SlateStringContext): boolean;
22
- static ɵfac: i0.ɵɵFactoryDeclaration<SlateStringComponent, never>;
23
- static ɵcmp: i0.ɵɵComponentDeclaration<SlateStringComponent, "span[slateString]", never, { "context": { "alias": "context"; "required": false; }; }, {}, never, never, false, never>;
22
+ static ɵfac: i0.ɵɵFactoryDeclaration<SlateString, never>;
23
+ static ɵcmp: i0.ɵɵComponentDeclaration<SlateString, "span[slateString]", never, { "context": { "alias": "context"; "required": false; }; }, {}, never, never, true, never>;
24
24
  }
@@ -1,9 +1,9 @@
1
1
  import { TemplateRef } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
- export declare class SlateStringTemplateComponent {
3
+ export declare class SlateStringTemplate {
4
4
  compatibleStringTemplate: TemplateRef<any>;
5
5
  voidStringTemplate: TemplateRef<any>;
6
6
  emptyTextTemplate: TemplateRef<any>;
7
- static ɵfac: i0.ɵɵFactoryDeclaration<SlateStringTemplateComponent, never>;
8
- static ɵcmp: i0.ɵɵComponentDeclaration<SlateStringTemplateComponent, "slate-string-template", never, {}, {}, never, never, false, never>;
7
+ static ɵfac: i0.ɵɵFactoryDeclaration<SlateStringTemplate, never>;
8
+ static ɵcmp: i0.ɵɵComponentDeclaration<SlateStringTemplate, "slate-string-template", never, {}, {}, never, never, true, never>;
9
9
  }
@@ -1,6 +1,6 @@
1
1
  import { BaseTextComponent } from '../../view/base';
2
2
  import * as i0 from "@angular/core";
3
- export declare class SlateDefaultTextComponent extends BaseTextComponent {
4
- static ɵfac: i0.ɵɵFactoryDeclaration<SlateDefaultTextComponent, never>;
5
- static ɵcmp: i0.ɵɵComponentDeclaration<SlateDefaultTextComponent, "span[slateDefaultText]", never, {}, {}, never, never, false, never>;
3
+ export declare class SlateDefaultText extends BaseTextComponent {
4
+ static ɵfac: i0.ɵɵFactoryDeclaration<SlateDefaultText, never>;
5
+ static ɵcmp: i0.ɵɵComponentDeclaration<SlateDefaultText, "span[slateDefaultText]", never, {}, {}, never, never, true, never>;
6
6
  }
@@ -1,10 +1,10 @@
1
1
  import { OnInit, OnChanges } from '@angular/core';
2
2
  import { BaseTextComponent } from '../../view/base';
3
3
  import * as i0 from "@angular/core";
4
- export declare class SlateVoidTextComponent extends BaseTextComponent implements OnInit, OnChanges {
4
+ export declare class SlateVoidText extends BaseTextComponent implements OnInit, OnChanges {
5
5
  isLeafBlock: boolean;
6
6
  ngOnInit(): void;
7
7
  ngOnChanges(): void;
8
- static ɵfac: i0.ɵɵFactoryDeclaration<SlateVoidTextComponent, never>;
9
- static ɵcmp: i0.ɵɵComponentDeclaration<SlateVoidTextComponent, "span[slateVoidText]", never, {}, {}, never, never, false, never>;
8
+ static ɵfac: i0.ɵɵFactoryDeclaration<SlateVoidText, never>;
9
+ static ɵcmp: i0.ɵɵComponentDeclaration<SlateVoidText, "span[slateVoidText]", never, {}, {}, never, never, true, never>;
10
10
  }
@@ -1,6 +1,6 @@
1
1
  import { Component, ViewChild } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
- export class SlateBlockCardComponent {
3
+ export class SlateBlockCard {
4
4
  get nativeElement() {
5
5
  return this.elementRef.nativeElement;
6
6
  }
@@ -20,14 +20,14 @@ export class SlateBlockCardComponent {
20
20
  initializeCenter(rootNodes) {
21
21
  this.centerRootNodes = rootNodes;
22
22
  }
23
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: SlateBlockCardComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
24
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.1", type: SlateBlockCardComponent, selector: "slate-block-card, [slateBlockCard]", viewQueries: [{ propertyName: "centerContianer", first: true, predicate: ["centerContianer"], descendants: true, static: true }], ngImport: i0, template: "<span card-target=\"card-left\" class=\"card-left\">{{ '\\uFEFF' }}</span>\n<div card-target=\"card-center\" #centerContianer></div>\n<span card-target=\"card-right\" class=\"card-right\">{{ '\\uFEFF' }}</span>\n" }); }
23
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: SlateBlockCard, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
24
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.1", type: SlateBlockCard, isStandalone: true, selector: "slate-block-card, [slateBlockCard]", viewQueries: [{ propertyName: "centerContianer", first: true, predicate: ["centerContianer"], descendants: true, static: true }], ngImport: i0, template: "<span card-target=\"card-left\" class=\"card-left\">{{ '\\uFEFF' }}</span>\n<div card-target=\"card-center\" #centerContianer></div>\n<span card-target=\"card-right\" class=\"card-right\">{{ '\\uFEFF' }}</span>\n" }); }
25
25
  }
26
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: SlateBlockCardComponent, decorators: [{
26
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: SlateBlockCard, decorators: [{
27
27
  type: Component,
28
- args: [{ selector: 'slate-block-card, [slateBlockCard]', template: "<span card-target=\"card-left\" class=\"card-left\">{{ '\\uFEFF' }}</span>\n<div card-target=\"card-center\" #centerContianer></div>\n<span card-target=\"card-right\" class=\"card-right\">{{ '\\uFEFF' }}</span>\n" }]
28
+ args: [{ selector: 'slate-block-card, [slateBlockCard]', standalone: true, template: "<span card-target=\"card-left\" class=\"card-left\">{{ '\\uFEFF' }}</span>\n<div card-target=\"card-center\" #centerContianer></div>\n<span card-target=\"card-right\" class=\"card-right\">{{ '\\uFEFF' }}</span>\n" }]
29
29
  }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { centerContianer: [{
30
30
  type: ViewChild,
31
31
  args: ['centerContianer', { static: true }]
32
32
  }] } });
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2stY2FyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvY29tcG9uZW50cy9ibG9jay1jYXJkL2Jsb2NrLWNhcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcGFja2FnZXMvc3JjL2NvbXBvbmVudHMvYmxvY2stY2FyZC9ibG9jay1jYXJkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXNCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFNekUsTUFBTSxPQUFPLHVCQUF1QjtJQU1oQyxJQUFJLGFBQWE7UUFDYixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDO0lBQ3pDLENBQUM7SUFFRCxJQUFJLHNCQUFzQjtRQUN0QixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBNEIsQ0FBQztJQUM3RCxDQUFDO0lBRUQsWUFBb0IsVUFBc0I7UUFBdEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtJQUFHLENBQUM7SUFFOUMsUUFBUTtRQUNKLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNkLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRCxNQUFNO1FBQ0YsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQ3hCLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQ25ILENBQUM7SUFDTixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsU0FBd0I7UUFDckMsSUFBSSxDQUFDLGVBQWUsR0FBRyxTQUFTLENBQUM7SUFDckMsQ0FBQzs4R0E3QlEsdUJBQXVCO2tHQUF2Qix1QkFBdUIsNE1DTnBDLHNOQUdBOzsyRkRHYSx1QkFBdUI7a0JBSm5DLFNBQVM7K0JBQ0ksb0NBQW9DO2lHQUs5QyxlQUFlO3NCQURkLFNBQVM7dUJBQUMsaUJBQWlCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3NsYXRlLWJsb2NrLWNhcmQsIFtzbGF0ZUJsb2NrQ2FyZF0nLFxuICAgIHRlbXBsYXRlVXJsOiAnYmxvY2stY2FyZC5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgU2xhdGVCbG9ja0NhcmRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBWaWV3Q2hpbGQoJ2NlbnRlckNvbnRpYW5lcicsIHsgc3RhdGljOiB0cnVlIH0pXG4gICAgY2VudGVyQ29udGlhbmVyOiBFbGVtZW50UmVmO1xuXG4gICAgY2VudGVyUm9vdE5vZGVzOiBIVE1MRWxlbWVudFtdO1xuXG4gICAgZ2V0IG5hdGl2ZUVsZW1lbnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICB9XG5cbiAgICBnZXQgY2VudGVyQ29udGFpbmVyRWxlbWVudCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2VudGVyQ29udGlhbmVyLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7fVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuYXBwZW5kKCk7XG4gICAgICAgIHRoaXMubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuYWRkKGBzbGF0ZS1ibG9jay1jYXJkYCk7XG4gICAgfVxuXG4gICAgYXBwZW5kKCkge1xuICAgICAgICB0aGlzLmNlbnRlclJvb3ROb2Rlcy5mb3JFYWNoKFxuICAgICAgICAgICAgcm9vdE5vZGUgPT4gIXRoaXMuY2VudGVyQ29udGFpbmVyRWxlbWVudC5jb250YWlucyhyb290Tm9kZSkgJiYgdGhpcy5jZW50ZXJDb250YWluZXJFbGVtZW50LmFwcGVuZENoaWxkKHJvb3ROb2RlKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGluaXRpYWxpemVDZW50ZXIocm9vdE5vZGVzOiBIVE1MRWxlbWVudFtdKSB7XG4gICAgICAgIHRoaXMuY2VudGVyUm9vdE5vZGVzID0gcm9vdE5vZGVzO1xuICAgIH1cbn1cbiIsIjxzcGFuIGNhcmQtdGFyZ2V0PVwiY2FyZC1sZWZ0XCIgY2xhc3M9XCJjYXJkLWxlZnRcIj57eyAnXFx1RkVGRicgfX08L3NwYW4+XG48ZGl2IGNhcmQtdGFyZ2V0PVwiY2FyZC1jZW50ZXJcIiAjY2VudGVyQ29udGlhbmVyPjwvZGl2PlxuPHNwYW4gY2FyZC10YXJnZXQ9XCJjYXJkLXJpZ2h0XCIgY2xhc3M9XCJjYXJkLXJpZ2h0XCI+e3sgJ1xcdUZFRkYnIH19PC9zcGFuPlxuIl19
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2stY2FyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvY29tcG9uZW50cy9ibG9jay1jYXJkL2Jsb2NrLWNhcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcGFja2FnZXMvc3JjL2NvbXBvbmVudHMvYmxvY2stY2FyZC9ibG9jay1jYXJkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXNCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFPekUsTUFBTSxPQUFPLGNBQWM7SUFNdkIsSUFBSSxhQUFhO1FBQ2IsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQztJQUN6QyxDQUFDO0lBRUQsSUFBSSxzQkFBc0I7UUFDdEIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLGFBQTRCLENBQUM7SUFDN0QsQ0FBQztJQUVELFlBQW9CLFVBQXNCO1FBQXRCLGVBQVUsR0FBVixVQUFVLENBQVk7SUFBRyxDQUFDO0lBRTlDLFFBQVE7UUFDSixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDZCxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQsTUFBTTtRQUNGLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUN4QixRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxJQUFJLENBQUMsc0JBQXNCLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUNuSCxDQUFDO0lBQ04sQ0FBQztJQUVELGdCQUFnQixDQUFDLFNBQXdCO1FBQ3JDLElBQUksQ0FBQyxlQUFlLEdBQUcsU0FBUyxDQUFDO0lBQ3JDLENBQUM7OEdBN0JRLGNBQWM7a0dBQWQsY0FBYyxnT0NQM0Isc05BR0E7OzJGRElhLGNBQWM7a0JBTDFCLFNBQVM7K0JBQ0ksb0NBQW9DLGNBRWxDLElBQUk7aUdBSWhCLGVBQWU7c0JBRGQsU0FBUzt1QkFBQyxpQkFBaUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnc2xhdGUtYmxvY2stY2FyZCwgW3NsYXRlQmxvY2tDYXJkXScsXG4gICAgdGVtcGxhdGVVcmw6ICdibG9jay1jYXJkLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIFNsYXRlQmxvY2tDYXJkIGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBAVmlld0NoaWxkKCdjZW50ZXJDb250aWFuZXInLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICAgIGNlbnRlckNvbnRpYW5lcjogRWxlbWVudFJlZjtcblxuICAgIGNlbnRlclJvb3ROb2RlczogSFRNTEVsZW1lbnRbXTtcblxuICAgIGdldCBuYXRpdmVFbGVtZW50KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgZ2V0IGNlbnRlckNvbnRhaW5lckVsZW1lbnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNlbnRlckNvbnRpYW5lci5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZikge31cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmFwcGVuZCgpO1xuICAgICAgICB0aGlzLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmFkZChgc2xhdGUtYmxvY2stY2FyZGApO1xuICAgIH1cblxuICAgIGFwcGVuZCgpIHtcbiAgICAgICAgdGhpcy5jZW50ZXJSb290Tm9kZXMuZm9yRWFjaChcbiAgICAgICAgICAgIHJvb3ROb2RlID0+ICF0aGlzLmNlbnRlckNvbnRhaW5lckVsZW1lbnQuY29udGFpbnMocm9vdE5vZGUpICYmIHRoaXMuY2VudGVyQ29udGFpbmVyRWxlbWVudC5hcHBlbmRDaGlsZChyb290Tm9kZSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBpbml0aWFsaXplQ2VudGVyKHJvb3ROb2RlczogSFRNTEVsZW1lbnRbXSkge1xuICAgICAgICB0aGlzLmNlbnRlclJvb3ROb2RlcyA9IHJvb3ROb2RlcztcbiAgICB9XG59XG4iLCI8c3BhbiBjYXJkLXRhcmdldD1cImNhcmQtbGVmdFwiIGNsYXNzPVwiY2FyZC1sZWZ0XCI+e3sgJ1xcdUZFRkYnIH19PC9zcGFuPlxuPGRpdiBjYXJkLXRhcmdldD1cImNhcmQtY2VudGVyXCIgI2NlbnRlckNvbnRpYW5lcj48L2Rpdj5cbjxzcGFuIGNhcmQtdGFyZ2V0PVwiY2FyZC1yaWdodFwiIGNsYXNzPVwiY2FyZC1yaWdodFwiPnt7ICdcXHVGRUZGJyB9fTwvc3Bhbj5cbiJdfQ==
@@ -1,11 +1,10 @@
1
1
  import { ChangeDetectionStrategy, Component, Input, ViewChildren } from '@angular/core';
2
- import { SlateDescendantComponent } from '../descendant/descendant.component';
2
+ import { SlateDescendant } from '../descendant/descendant.component';
3
3
  import { AngularEditor } from '../../plugins/angular-editor';
4
4
  import { ViewContainer } from '../../view/container';
5
+ import { NgFor } from '@angular/common';
5
6
  import * as i0 from "@angular/core";
6
- import * as i1 from "@angular/common";
7
- import * as i2 from "../descendant/descendant.component";
8
- export class SlateChildrenComponent extends ViewContainer {
7
+ export class SlateChildren extends ViewContainer {
9
8
  constructor() {
10
9
  super(...arguments);
11
10
  this.trackBy = (index, node) => {
@@ -13,17 +12,17 @@ export class SlateChildrenComponent extends ViewContainer {
13
12
  };
14
13
  }
15
14
  ngOnInit() { }
16
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: SlateChildrenComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
17
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.1", type: SlateChildrenComponent, selector: "slate-children", inputs: { children: "children", context: "context", viewContext: "viewContext" }, viewQueries: [{ propertyName: "childrenComponent", predicate: SlateDescendantComponent, descendants: true, read: SlateDescendantComponent }], usesInheritance: true, ngImport: i0, template: `<slate-descendant
15
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: SlateChildren, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
16
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.1", type: SlateChildren, isStandalone: true, selector: "slate-children", inputs: { children: "children", context: "context", viewContext: "viewContext" }, viewQueries: [{ propertyName: "childrenComponent", predicate: SlateDescendant, descendants: true, read: SlateDescendant }], usesInheritance: true, ngImport: i0, template: `<slate-descendant
18
17
  [descendant]="descendant"
19
18
  [context]="context"
20
19
  [viewContext]="viewContext"
21
20
  [viewContext]="viewContext"
22
21
  [index]="index"
23
22
  *ngFor="let descendant of children; let index = index; trackBy: trackBy"
24
- ></slate-descendant>`, isInline: true, dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i2.SlateDescendantComponent, selector: "slate-descendant", inputs: ["descendant", "context", "viewContext", "index"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
23
+ ></slate-descendant>`, isInline: true, dependencies: [{ kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: SlateDescendant, selector: "slate-descendant", inputs: ["descendant", "context", "viewContext", "index"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
25
24
  }
26
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: SlateChildrenComponent, decorators: [{
25
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: SlateChildren, decorators: [{
27
26
  type: Component,
28
27
  args: [{
29
28
  selector: 'slate-children',
@@ -35,7 +34,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.1", ngImpor
35
34
  [index]="index"
36
35
  *ngFor="let descendant of children; let index = index; trackBy: trackBy"
37
36
  ></slate-descendant>`,
38
- changeDetection: ChangeDetectionStrategy.OnPush
37
+ changeDetection: ChangeDetectionStrategy.OnPush,
38
+ standalone: true,
39
+ imports: [NgFor, SlateDescendant]
39
40
  }]
40
41
  }], propDecorators: { children: [{
41
42
  type: Input
@@ -45,6 +46,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.1", ngImpor
45
46
  type: Input
46
47
  }], childrenComponent: [{
47
48
  type: ViewChildren,
48
- args: [SlateDescendantComponent, { read: SlateDescendantComponent }]
49
+ args: [SlateDescendant, { read: SlateDescendant }]
49
50
  }] } });
50
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hpbGRyZW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvc3JjL2NvbXBvbmVudHMvY2hpbGRyZW4vY2hpbGRyZW4uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFxQixZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0csT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFFOUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRTdELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7OztBQWNyRCxNQUFNLE9BQU8sc0JBQXVCLFNBQVEsYUFBdUM7SUFabkY7O1FBd0JJLFlBQU8sR0FBRyxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsRUFBRTtZQUN0QixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLGFBQWEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDbEcsQ0FBQyxDQUFDO0tBQ0w7SUFMRyxRQUFRLEtBQUksQ0FBQzs4R0FWSixzQkFBc0I7a0dBQXRCLHNCQUFzQiw4S0FPakIsd0JBQXdCLDJCQUFVLHdCQUF3QixvREFqQjlEOzs7Ozs7O3lCQU9XOzsyRkFHWixzQkFBc0I7a0JBWmxDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLGdCQUFnQjtvQkFDMUIsUUFBUSxFQUFFOzs7Ozs7O3lCQU9XO29CQUNyQixlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDbEQ7OEJBRVksUUFBUTtzQkFBaEIsS0FBSztnQkFFRyxPQUFPO3NCQUFmLEtBQUs7Z0JBRUcsV0FBVztzQkFBbkIsS0FBSztnQkFHTixpQkFBaUI7c0JBRGhCLFlBQVk7dUJBQUMsd0JBQXdCLEVBQUUsRUFBRSxJQUFJLEVBQUUsd0JBQXdCLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0LCBRdWVyeUxpc3QsIFZpZXdDaGlsZHJlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2xhdGVEZXNjZW5kYW50Q29tcG9uZW50IH0gZnJvbSAnLi4vZGVzY2VuZGFudC9kZXNjZW5kYW50LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEZXNjZW5kYW50IH0gZnJvbSAnc2xhdGUnO1xuaW1wb3J0IHsgQW5ndWxhckVkaXRvciB9IGZyb20gJy4uLy4uL3BsdWdpbnMvYW5ndWxhci1lZGl0b3InO1xuaW1wb3J0IHsgU2xhdGVDaGlsZHJlbkNvbnRleHQsIFNsYXRlVmlld0NvbnRleHQgfSBmcm9tICcuLi8uLi92aWV3L2NvbnRleHQnO1xuaW1wb3J0IHsgVmlld0NvbnRhaW5lciB9IGZyb20gJy4uLy4uL3ZpZXcvY29udGFpbmVyJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdzbGF0ZS1jaGlsZHJlbicsXG4gICAgdGVtcGxhdGU6IGA8c2xhdGUtZGVzY2VuZGFudFxuICAgICAgICBbZGVzY2VuZGFudF09XCJkZXNjZW5kYW50XCJcbiAgICAgICAgW2NvbnRleHRdPVwiY29udGV4dFwiXG4gICAgICAgIFt2aWV3Q29udGV4dF09XCJ2aWV3Q29udGV4dFwiXG4gICAgICAgIFt2aWV3Q29udGV4dF09XCJ2aWV3Q29udGV4dFwiXG4gICAgICAgIFtpbmRleF09XCJpbmRleFwiXG4gICAgICAgICpuZ0Zvcj1cImxldCBkZXNjZW5kYW50IG9mIGNoaWxkcmVuOyBsZXQgaW5kZXggPSBpbmRleDsgdHJhY2tCeTogdHJhY2tCeVwiXG4gICAgPjwvc2xhdGUtZGVzY2VuZGFudD5gLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFNsYXRlQ2hpbGRyZW5Db21wb25lbnQgZXh0ZW5kcyBWaWV3Q29udGFpbmVyPFNsYXRlRGVzY2VuZGFudENvbXBvbmVudD4gaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBJbnB1dCgpIGNoaWxkcmVuOiBEZXNjZW5kYW50W107XG5cbiAgICBASW5wdXQoKSBjb250ZXh0OiBTbGF0ZUNoaWxkcmVuQ29udGV4dDtcblxuICAgIEBJbnB1dCgpIHZpZXdDb250ZXh0OiBTbGF0ZVZpZXdDb250ZXh0O1xuXG4gICAgQFZpZXdDaGlsZHJlbihTbGF0ZURlc2NlbmRhbnRDb21wb25lbnQsIHsgcmVhZDogU2xhdGVEZXNjZW5kYW50Q29tcG9uZW50IH0pXG4gICAgY2hpbGRyZW5Db21wb25lbnQ6IFF1ZXJ5TGlzdDxTbGF0ZURlc2NlbmRhbnRDb21wb25lbnQ+O1xuXG4gICAgbmdPbkluaXQoKSB7fVxuXG4gICAgdHJhY2tCeSA9IChpbmRleCwgbm9kZSkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy52aWV3Q29udGV4dC50cmFja0J5KG5vZGUpIHx8IEFuZ3VsYXJFZGl0b3IuZmluZEtleSh0aGlzLnZpZXdDb250ZXh0LmVkaXRvciwgbm9kZSk7XG4gICAgfTtcbn1cbiJdfQ==
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hpbGRyZW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvc3JjL2NvbXBvbmVudHMvY2hpbGRyZW4vY2hpbGRyZW4uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFxQixZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0csT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRXJFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUU3RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDckQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQWdCeEMsTUFBTSxPQUFPLGFBQWMsU0FBUSxhQUE4QjtJQWRqRTs7UUEwQkksWUFBTyxHQUFHLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFO1lBQ3RCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksYUFBYSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNsRyxDQUFDLENBQUM7S0FDTDtJQUxHLFFBQVEsS0FBSSxDQUFDOzhHQVZKLGFBQWE7a0dBQWIsYUFBYSxrTUFPUixlQUFlLDJCQUFVLGVBQWUsb0RBbkI1Qzs7Ozs7Ozt5QkFPVyw0REFHWCxLQUFLLG1IQUFFLGVBQWU7OzJGQUV2QixhQUFhO2tCQWR6QixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxnQkFBZ0I7b0JBQzFCLFFBQVEsRUFBRTs7Ozs7Ozt5QkFPVztvQkFDckIsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLFVBQVUsRUFBRSxJQUFJO29CQUNoQixPQUFPLEVBQUUsQ0FBQyxLQUFLLEVBQUUsZUFBZSxDQUFDO2lCQUNwQzs4QkFFWSxRQUFRO3NCQUFoQixLQUFLO2dCQUVHLE9BQU87c0JBQWYsS0FBSztnQkFFRyxXQUFXO3NCQUFuQixLQUFLO2dCQUdOLGlCQUFpQjtzQkFEaEIsWUFBWTt1QkFBQyxlQUFlLEVBQUUsRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCwgUXVlcnlMaXN0LCBWaWV3Q2hpbGRyZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNsYXRlRGVzY2VuZGFudCB9IGZyb20gJy4uL2Rlc2NlbmRhbnQvZGVzY2VuZGFudC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGVzY2VuZGFudCB9IGZyb20gJ3NsYXRlJztcbmltcG9ydCB7IEFuZ3VsYXJFZGl0b3IgfSBmcm9tICcuLi8uLi9wbHVnaW5zL2FuZ3VsYXItZWRpdG9yJztcbmltcG9ydCB7IFNsYXRlQ2hpbGRyZW5Db250ZXh0LCBTbGF0ZVZpZXdDb250ZXh0IH0gZnJvbSAnLi4vLi4vdmlldy9jb250ZXh0JztcbmltcG9ydCB7IFZpZXdDb250YWluZXIgfSBmcm9tICcuLi8uLi92aWV3L2NvbnRhaW5lcic7XG5pbXBvcnQgeyBOZ0ZvciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnc2xhdGUtY2hpbGRyZW4nLFxuICAgIHRlbXBsYXRlOiBgPHNsYXRlLWRlc2NlbmRhbnRcbiAgICAgICAgW2Rlc2NlbmRhbnRdPVwiZGVzY2VuZGFudFwiXG4gICAgICAgIFtjb250ZXh0XT1cImNvbnRleHRcIlxuICAgICAgICBbdmlld0NvbnRleHRdPVwidmlld0NvbnRleHRcIlxuICAgICAgICBbdmlld0NvbnRleHRdPVwidmlld0NvbnRleHRcIlxuICAgICAgICBbaW5kZXhdPVwiaW5kZXhcIlxuICAgICAgICAqbmdGb3I9XCJsZXQgZGVzY2VuZGFudCBvZiBjaGlsZHJlbjsgbGV0IGluZGV4ID0gaW5kZXg7IHRyYWNrQnk6IHRyYWNrQnlcIlxuICAgID48L3NsYXRlLWRlc2NlbmRhbnQ+YCxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtOZ0ZvciwgU2xhdGVEZXNjZW5kYW50XVxufSlcbmV4cG9ydCBjbGFzcyBTbGF0ZUNoaWxkcmVuIGV4dGVuZHMgVmlld0NvbnRhaW5lcjxTbGF0ZURlc2NlbmRhbnQ+IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBASW5wdXQoKSBjaGlsZHJlbjogRGVzY2VuZGFudFtdO1xuXG4gICAgQElucHV0KCkgY29udGV4dDogU2xhdGVDaGlsZHJlbkNvbnRleHQ7XG5cbiAgICBASW5wdXQoKSB2aWV3Q29udGV4dDogU2xhdGVWaWV3Q29udGV4dDtcblxuICAgIEBWaWV3Q2hpbGRyZW4oU2xhdGVEZXNjZW5kYW50LCB7IHJlYWQ6IFNsYXRlRGVzY2VuZGFudCB9KVxuICAgIGNoaWxkcmVuQ29tcG9uZW50OiBRdWVyeUxpc3Q8U2xhdGVEZXNjZW5kYW50PjtcblxuICAgIG5nT25Jbml0KCkge31cblxuICAgIHRyYWNrQnkgPSAoaW5kZXgsIG5vZGUpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmlld0NvbnRleHQudHJhY2tCeShub2RlKSB8fCBBbmd1bGFyRWRpdG9yLmZpbmRLZXkodGhpcy52aWV3Q29udGV4dC5lZGl0b3IsIG5vZGUpO1xuICAgIH07XG59XG4iXX0=
@@ -1,16 +1,16 @@
1
1
  import { ChangeDetectionStrategy, Component, Inject, Input } from '@angular/core';
2
- import { SlateBlockCardComponent } from '../block-card/block-card.component';
2
+ import { SlateBlockCard } from '../block-card/block-card.component';
3
3
  import { ViewContainerItem } from '../../view/container-item';
4
4
  import { Editor, Range, Element } from 'slate';
5
5
  import { AngularEditor } from '../../plugins/angular-editor';
6
6
  import { NODE_TO_INDEX, NODE_TO_PARENT } from '../../utils/weak-maps';
7
- import { SlateDefaultTextComponent } from '../text/default-text.component';
8
- import { SlateVoidTextComponent } from '../text/void-text.component';
7
+ import { SlateDefaultText } from '../text/default-text.component';
8
+ import { SlateVoidText } from '../text/void-text.component';
9
9
  import { isDecoratorRangeListEqual } from '../../utils';
10
10
  import { SlateErrorCode } from '../../types';
11
11
  import { SLATE_DEFAULT_ELEMENT_COMPONENT_TOKEN } from '../element/default-element.component.token';
12
12
  import * as i0 from "@angular/core";
13
- export class SlateDescendantComponent extends ViewContainerItem {
13
+ export class SlateDescendant extends ViewContainerItem {
14
14
  get rootNodes() {
15
15
  if (this.blockCardComponentRef) {
16
16
  return [this.blockCardComponentRef.instance.nativeElement];
@@ -56,7 +56,7 @@ export class SlateDescendantComponent extends ViewContainerItem {
56
56
  }
57
57
  createBlockCard() {
58
58
  const rootNodes = this.rootNodes;
59
- this.blockCardComponentRef = this.viewContainerRef.createComponent(SlateBlockCardComponent);
59
+ this.blockCardComponentRef = this.viewContainerRef.createComponent(SlateBlockCard);
60
60
  this.blockCardComponentRef.instance.initializeCenter(rootNodes);
61
61
  }
62
62
  updateBlockCard() {
@@ -135,8 +135,8 @@ export class SlateDescendantComponent extends ViewContainerItem {
135
135
  else {
136
136
  const isVoid = this.viewContext.editor.isVoid(this.context.parent);
137
137
  return isVoid
138
- ? SlateVoidTextComponent
139
- : (this.viewContext.renderText && this.viewContext.renderText(this.descendant)) || SlateDefaultTextComponent;
138
+ ? SlateVoidText
139
+ : (this.viewContext.renderText && this.viewContext.renderText(this.descendant)) || SlateDefaultText;
140
140
  }
141
141
  }
142
142
  memoizedElementContext(prev, next) {
@@ -160,15 +160,16 @@ export class SlateDescendantComponent extends ViewContainerItem {
160
160
  return this.memoizedTextContext(prev, next);
161
161
  }
162
162
  }
163
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: SlateDescendantComponent, deps: [{ token: i0.ViewContainerRef }, { token: SLATE_DEFAULT_ELEMENT_COMPONENT_TOKEN }], target: i0.ɵɵFactoryTarget.Component }); }
164
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.1", type: SlateDescendantComponent, selector: "slate-descendant", inputs: { descendant: "descendant", context: "context", viewContext: "viewContext", index: "index" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
163
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: SlateDescendant, deps: [{ token: i0.ViewContainerRef }, { token: SLATE_DEFAULT_ELEMENT_COMPONENT_TOKEN }], target: i0.ɵɵFactoryTarget.Component }); }
164
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.1", type: SlateDescendant, isStandalone: true, selector: "slate-descendant", inputs: { descendant: "descendant", context: "context", viewContext: "viewContext", index: "index" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
165
165
  }
166
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: SlateDescendantComponent, decorators: [{
166
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: SlateDescendant, decorators: [{
167
167
  type: Component,
168
168
  args: [{
169
169
  selector: 'slate-descendant',
170
170
  template: '',
171
- changeDetection: ChangeDetectionStrategy.OnPush
171
+ changeDetection: ChangeDetectionStrategy.OnPush,
172
+ standalone: true
172
173
  }]
173
174
  }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: undefined, decorators: [{
174
175
  type: Inject,
@@ -182,4 +183,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.1", ngImpor
182
183
  }], index: [{
183
184
  type: Input
184
185
  }] } });
185
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzY2VuZGFudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvY29tcG9uZW50cy9kZXNjZW5kYW50L2Rlc2NlbmRhbnQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBdUMsTUFBTSxlQUFlLENBQUM7QUFDdkgsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDN0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDOUQsT0FBTyxFQUFjLE1BQU0sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBRTNELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXRFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3JFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUV4RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxxQ0FBcUMsRUFBRSxNQUFNLDRDQUE0QyxDQUFDOztBQU9uRyxNQUFNLE9BQU8sd0JBQ1QsU0FBUSxpQkFBbUc7SUFXM0csSUFBSSxTQUFTO1FBQ1QsSUFBSSxJQUFJLENBQUMscUJBQXFCLEVBQUU7WUFDNUIsT0FBTyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDOUQ7UUFDRCxPQUFPLEtBQUssQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRUQsSUFBSSxXQUFXO1FBQ1gsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRCxZQUNjLGdCQUFrQyxFQUVyQywyQkFBZ0U7UUFFdkUsS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFKZCxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBRXJDLGdDQUEyQixHQUEzQiwyQkFBMkIsQ0FBcUM7SUFHM0UsQ0FBQztJQUVELFFBQVE7UUFDSixhQUFhLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQy9DLGNBQWMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3pELElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNsQixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDbEIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1NBQzFCO0lBQ0wsQ0FBQztJQUVELFdBQVc7UUFDUCxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNuQixPQUFPO1NBQ1Y7UUFDRCxhQUFhLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQy9DLGNBQWMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3pELElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNsQixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDbEIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1NBQzFCO0lBQ0wsQ0FBQztJQUVELGdCQUFnQjtRQUNaLElBQUksSUFBSSxDQUFDLHFCQUFxQixFQUFFO1lBQzVCLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNyQyxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDO1NBQ3JDO0lBQ0wsQ0FBQztJQUVELGVBQWU7UUFDWCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxDQUEwQix1QkFBdUIsQ0FBQyxDQUFDO1FBQ3JILElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVELGVBQWU7UUFDWCxJQUFJLElBQUksQ0FBQyxxQkFBcUIsRUFBRTtZQUM1QixPQUFPO1NBQ1Y7UUFDRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN2QixNQUFNLGFBQWEsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbkMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ2pGLENBQUM7SUFFRCxnQkFBZ0I7UUFDWixNQUFNLElBQUksR0FBRyxhQUFhLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbEYsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbEMsSUFBSTtZQUNBLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDdkQsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLElBQUksS0FBSyxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUN4RixNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN2RCxLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFO2dCQUN4QyxNQUFNLENBQUMsR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDekMsSUFBSSxDQUFDLEVBQUU7b0JBQ0gsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDZDthQUNKO1lBQ0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRSxDQUFDO1NBQzlDO1FBQUMsT0FBTyxLQUFLLEVBQUU7WUFDWixJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUM7Z0JBQzVCLElBQUksRUFBRSxjQUFjLENBQUMsa0JBQWtCO2dCQUN2QyxXQUFXLEVBQUUsS0FBSzthQUNyQixDQUFDLENBQUM7WUFDSCxPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFLENBQUM7U0FDL0M7SUFDTCxDQUFDO0lBRUQsVUFBVTtRQUNOLElBQUksT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDcEMsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDaEQsTUFBTSxHQUFHLEdBQUcsYUFBYSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDNUUsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUNuRSxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQy9ELE1BQU0sY0FBYyxHQUF3QjtnQkFDeEMsT0FBTyxFQUFFLElBQUksQ0FBQyxVQUFVO2dCQUN4QixHQUFHLGVBQWU7Z0JBQ2xCLFVBQVUsRUFBRTtvQkFDUixpQkFBaUIsRUFBRSxTQUFTO29CQUM1QixnQkFBZ0IsRUFBRSxHQUFHLENBQUMsRUFBRTtpQkFDM0I7Z0JBQ0QsUUFBUSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUTtnQkFDL0IsUUFBUSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUTthQUNsQyxDQUFDO1lBQ0YsSUFBSSxRQUFRLEVBQUU7Z0JBQ1YsY0FBYyxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLElBQUksQ0FBQzthQUN6RDtZQUNELElBQUksTUFBTSxFQUFFO2dCQUNSLGNBQWMsQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUMsR0FBRyxJQUFJLENBQUM7Z0JBQ3BELGNBQWMsQ0FBQyxVQUFVLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQzthQUNyRDtZQUNELE9BQU8sY0FBYyxDQUFDO1NBQ3pCO2FBQU07WUFDSCxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUNoRCxNQUFNLFdBQVcsR0FBRyxhQUFhLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDNUYsTUFBTSxXQUFXLEdBQXFCO2dCQUNsQyxXQUFXLEVBQUUsZUFBZSxDQUFDLFdBQVc7Z0JBQ3hDLE1BQU0sRUFBRSxXQUFXLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUM7Z0JBQzdFLE1BQU0sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQWlCO2dCQUN0QyxJQUFJLEVBQUUsSUFBSSxDQUFDLFVBQVU7YUFDeEIsQ0FBQztZQUNGLE9BQU8sV0FBVyxDQUFDO1NBQ3RCO0lBQ0wsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQ3BDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsMkJBQTJCLENBQUM7U0FDbEk7YUFBTTtZQUNILE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQWlCLENBQUMsQ0FBQztZQUM5RSxPQUFPLE1BQU07Z0JBQ1QsQ0FBQyxDQUFDLHNCQUFzQjtnQkFDeEIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUkseUJBQXlCLENBQUM7U0FDcEg7SUFDTCxDQUFDO0lBRUQsc0JBQXNCLENBQUMsSUFBeUIsRUFBRSxJQUF5QjtRQUN2RSxPQUFPLENBQ0gsSUFBSSxDQUFDLE9BQU8sS0FBSyxJQUFJLENBQUMsT0FBTztZQUM3QixDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLElBQUksQ0FBQyxRQUFRLENBQUM7WUFDdkUsSUFBSSxDQUFDLFFBQVEsS0FBSyxJQUFJLENBQUMsUUFBUTtZQUMvQix5QkFBeUIsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUM7WUFDN0QsQ0FBQyxJQUFJLENBQUMsU0FBUyxLQUFLLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FDaEksQ0FBQztJQUNOLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxJQUFzQixFQUFFLElBQXNCO1FBQzlELE9BQU8sQ0FDSCxJQUFJLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxNQUFNO1lBQzNCLElBQUksQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLE1BQU07WUFDM0IsSUFBSSxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsSUFBSTtZQUN2Qix5QkFBeUIsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FDaEUsQ0FBQztJQUNOLENBQUM7SUFFRCxlQUFlLENBQUMsSUFBNEMsRUFBRSxJQUE0QztRQUN0RyxJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQ3BDLE9BQU8sSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQTJCLEVBQUUsSUFBMkIsQ0FBQyxDQUFDO1NBQ2hHO2FBQU07WUFDSCxPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUF3QixFQUFFLElBQXdCLENBQUMsQ0FBQztTQUN2RjtJQUNMLENBQUM7OEdBaExRLHdCQUF3QixrREF5QnJCLHFDQUFxQztrR0F6QnhDLHdCQUF3QiwwTUFIdkIsRUFBRTs7MkZBR0gsd0JBQXdCO2tCQUxwQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxrQkFBa0I7b0JBQzVCLFFBQVEsRUFBRSxFQUFFO29CQUNaLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2lCQUNsRDs7MEJBMEJRLE1BQU07MkJBQUMscUNBQXFDOzRDQXJCeEMsVUFBVTtzQkFBbEIsS0FBSztnQkFFRyxPQUFPO3NCQUFmLEtBQUs7Z0JBRUcsV0FBVztzQkFBbkIsS0FBSztnQkFFRyxLQUFLO3NCQUFiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbmplY3QsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2xhdGVCbG9ja0NhcmRDb21wb25lbnQgfSBmcm9tICcuLi9ibG9jay1jYXJkL2Jsb2NrLWNhcmQuY29tcG9uZW50JztcbmltcG9ydCB7IFZpZXdDb250YWluZXJJdGVtIH0gZnJvbSAnLi4vLi4vdmlldy9jb250YWluZXItaXRlbSc7XG5pbXBvcnQgeyBEZXNjZW5kYW50LCBFZGl0b3IsIFJhbmdlLCBFbGVtZW50IH0gZnJvbSAnc2xhdGUnO1xuaW1wb3J0IHsgU2xhdGVDaGlsZHJlbkNvbnRleHQsIFNsYXRlRWxlbWVudENvbnRleHQsIFNsYXRlVGV4dENvbnRleHQsIFNsYXRlVmlld0NvbnRleHQgfSBmcm9tICcuLi8uLi92aWV3L2NvbnRleHQnO1xuaW1wb3J0IHsgQW5ndWxhckVkaXRvciB9IGZyb20gJy4uLy4uL3BsdWdpbnMvYW5ndWxhci1lZGl0b3InO1xuaW1wb3J0IHsgTk9ERV9UT19JTkRFWCwgTk9ERV9UT19QQVJFTlQgfSBmcm9tICcuLi8uLi91dGlscy93ZWFrLW1hcHMnO1xuaW1wb3J0IHsgQmFzZUVsZW1lbnRDb21wb25lbnQsIEJhc2VUZXh0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vdmlldy9iYXNlJztcbmltcG9ydCB7IFNsYXRlRGVmYXVsdFRleHRDb21wb25lbnQgfSBmcm9tICcuLi90ZXh0L2RlZmF1bHQtdGV4dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2xhdGVWb2lkVGV4dENvbXBvbmVudCB9IGZyb20gJy4uL3RleHQvdm9pZC10ZXh0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBpc0RlY29yYXRvclJhbmdlTGlzdEVxdWFsIH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuaW1wb3J0IHsgQ29tcG9uZW50VHlwZSwgVmlld1R5cGUgfSBmcm9tICcuLi8uLi90eXBlcy92aWV3JztcbmltcG9ydCB7IFNsYXRlRXJyb3JDb2RlIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgU0xBVEVfREVGQVVMVF9FTEVNRU5UX0NPTVBPTkVOVF9UT0tFTiB9IGZyb20gJy4uL2VsZW1lbnQvZGVmYXVsdC1lbGVtZW50LmNvbXBvbmVudC50b2tlbic7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnc2xhdGUtZGVzY2VuZGFudCcsXG4gICAgdGVtcGxhdGU6ICcnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFNsYXRlRGVzY2VuZGFudENvbXBvbmVudFxuICAgIGV4dGVuZHMgVmlld0NvbnRhaW5lckl0ZW08U2xhdGVFbGVtZW50Q29udGV4dCB8IFNsYXRlVGV4dENvbnRleHQsIEJhc2VFbGVtZW50Q29tcG9uZW50IHwgQmFzZVRleHRDb21wb25lbnQ+XG4gICAgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlc1xue1xuICAgIEBJbnB1dCgpIGRlc2NlbmRhbnQ6IERlc2NlbmRhbnQ7XG5cbiAgICBASW5wdXQoKSBjb250ZXh0OiBTbGF0ZUNoaWxkcmVuQ29udGV4dDtcblxuICAgIEBJbnB1dCgpIHZpZXdDb250ZXh0OiBTbGF0ZVZpZXdDb250ZXh0O1xuXG4gICAgQElucHV0KCkgaW5kZXg6IG51bWJlcjtcblxuICAgIGdldCByb290Tm9kZXMoKTogSFRNTEVsZW1lbnRbXSB7XG4gICAgICAgIGlmICh0aGlzLmJsb2NrQ2FyZENvbXBvbmVudFJlZikge1xuICAgICAgICAgICAgcmV0dXJuIFt0aGlzLmJsb2NrQ2FyZENvbXBvbmVudFJlZi5pbnN0YW5jZS5uYXRpdmVFbGVtZW50XTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3VwZXIuZ2V0Um9vdE5vZGVzKCk7XG4gICAgfVxuXG4gICAgZ2V0IGlzQmxvY2tDYXJkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy52aWV3Q29udGV4dC5lZGl0b3IuaXNCbG9ja0NhcmQodGhpcy5kZXNjZW5kYW50KTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJvdGVjdGVkIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgICAgIEBJbmplY3QoU0xBVEVfREVGQVVMVF9FTEVNRU5UX0NPTVBPTkVOVF9UT0tFTilcbiAgICAgICAgcHVibGljIGRlZmF1bHRFbGVtZW50Q29tcG9uZW50VHlwZTogQ29tcG9uZW50VHlwZTxCYXNlRWxlbWVudENvbXBvbmVudD5cbiAgICApIHtcbiAgICAgICAgc3VwZXIodmlld0NvbnRhaW5lclJlZik7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIE5PREVfVE9fSU5ERVguc2V0KHRoaXMuZGVzY2VuZGFudCwgdGhpcy5pbmRleCk7XG4gICAgICAgIE5PREVfVE9fUEFSRU5ULnNldCh0aGlzLmRlc2NlbmRhbnQsIHRoaXMuY29udGV4dC5wYXJlbnQpO1xuICAgICAgICB0aGlzLmNyZWF0ZVZpZXcoKTtcbiAgICAgICAgaWYgKHRoaXMuaXNCbG9ja0NhcmQpIHtcbiAgICAgICAgICAgIHRoaXMuY3JlYXRlQmxvY2tDYXJkKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBkZXN0cm95VmlldygpIHtcbiAgICAgICAgc3VwZXIuZGVzdHJveVZpZXcoKTtcbiAgICAgICAgdGhpcy5kZXN0cm95QmxvY2tDYXJkKCk7XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoKSB7XG4gICAgICAgIGlmICghdGhpcy5pbml0aWFsaXplZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE5PREVfVE9fSU5ERVguc2V0KHRoaXMuZGVzY2VuZGFudCwgdGhpcy5pbmRleCk7XG4gICAgICAgIE5PREVfVE9fUEFSRU5ULnNldCh0aGlzLmRlc2NlbmRhbnQsIHRoaXMuY29udGV4dC5wYXJlbnQpO1xuICAgICAgICB0aGlzLnVwZGF0ZVZpZXcoKTtcbiAgICAgICAgaWYgKHRoaXMuaXNCbG9ja0NhcmQpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlQmxvY2tDYXJkKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBkZXN0cm95QmxvY2tDYXJkKCkge1xuICAgICAgICBpZiAodGhpcy5ibG9ja0NhcmRDb21wb25lbnRSZWYpIHtcbiAgICAgICAgICAgIHRoaXMuYmxvY2tDYXJkQ29tcG9uZW50UmVmLmRlc3Ryb3koKTtcbiAgICAgICAgICAgIHRoaXMuYmxvY2tDYXJkQ29tcG9uZW50UmVmID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNyZWF0ZUJsb2NrQ2FyZCgpIHtcbiAgICAgICAgY29uc3Qgcm9vdE5vZGVzID0gdGhpcy5yb290Tm9kZXM7XG4gICAgICAgIHRoaXMuYmxvY2tDYXJkQ29tcG9uZW50UmVmID0gdGhpcy52aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudDxTbGF0ZUJsb2NrQ2FyZENvbXBvbmVudD4oU2xhdGVCbG9ja0NhcmRDb21wb25lbnQpO1xuICAgICAgICB0aGlzLmJsb2NrQ2FyZENvbXBvbmVudFJlZi5pbnN0YW5jZS5pbml0aWFsaXplQ2VudGVyKHJvb3ROb2Rlcyk7XG4gICAgfVxuXG4gICAgdXBkYXRlQmxvY2tDYXJkKCkge1xuICAgICAgICBpZiAodGhpcy5ibG9ja0NhcmRDb21wb25lbnRSZWYpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByb290Tm9kZXMgPSB0aGlzLnJvb3ROb2RlcztcbiAgICAgICAgdGhpcy5jcmVhdGVCbG9ja0NhcmQoKTtcbiAgICAgICAgY29uc3QgZmlyc3RSb290Tm9kZSA9IHJvb3ROb2Rlc1swXTtcbiAgICAgICAgZmlyc3RSb290Tm9kZS5yZXBsYWNlV2l0aCh0aGlzLmJsb2NrQ2FyZENvbXBvbmVudFJlZi5pbnN0YW5jZS5uYXRpdmVFbGVtZW50KTtcbiAgICB9XG5cbiAgICBnZXRDb21tb25Db250ZXh0KCk6IHsgc2VsZWN0aW9uOiBSYW5nZTsgZGVjb3JhdGlvbnM6IFJhbmdlW10gfSB7XG4gICAgICAgIGNvbnN0IHBhdGggPSBBbmd1bGFyRWRpdG9yLmZpbmRQYXRoKHRoaXMudmlld0NvbnRleHQuZWRpdG9yLCB0aGlzLmNvbnRleHQucGFyZW50KTtcbiAgICAgICAgY29uc3QgcCA9IHBhdGguY29uY2F0KHRoaXMuaW5kZXgpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgcmFuZ2UgPSBFZGl0b3IucmFuZ2UodGhpcy52aWV3Q29udGV4dC5lZGl0b3IsIHApO1xuICAgICAgICAgICAgY29uc3Qgc2VsID0gdGhpcy5jb250ZXh0LnNlbGVjdGlvbiAmJiBSYW5nZS5pbnRlcnNlY3Rpb24ocmFuZ2UsIHRoaXMuY29udGV4dC5zZWxlY3Rpb24pO1xuICAgICAgICAgICAgY29uc3QgZHMgPSB0aGlzLmNvbnRleHQuZGVjb3JhdGUoW3RoaXMuZGVzY2VuZGFudCwgcF0pO1xuICAgICAgICAgICAgZm9yIChjb25zdCBkZWMgb2YgdGhpcy5jb250ZXh0LmRlY29yYXRpb25zKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZCA9IFJhbmdlLmludGVyc2VjdGlvbihkZWMsIHJhbmdlKTtcbiAgICAgICAgICAgICAgICBpZiAoZCkge1xuICAgICAgICAgICAgICAgICAgICBkcy5wdXNoKGQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB7IHNlbGVjdGlvbjogc2VsLCBkZWNvcmF0aW9uczogZHMgfTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIHRoaXMudmlld0NvbnRleHQuZWRpdG9yLm9uRXJyb3Ioe1xuICAgICAgICAgICAgICAgIGNvZGU6IFNsYXRlRXJyb3JDb2RlLkdldFN0YXJ0UG9pbnRFcnJvcixcbiAgICAgICAgICAgICAgICBuYXRpdmVFcnJvcjogZXJyb3JcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIHsgc2VsZWN0aW9uOiBudWxsLCBkZWNvcmF0aW9uczogW10gfTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldENvbnRleHQoKTogU2xhdGVFbGVtZW50Q29udGV4dCB8IFNsYXRlVGV4dENvbnRleHQge1xuICAgICAgICBpZiAoRWxlbWVudC5pc0VsZW1lbnQodGhpcy5kZXNjZW5kYW50KSkge1xuICAgICAgICAgICAgY29uc3QgY29tcHV0ZWRDb250ZXh0ID0gdGhpcy5nZXRDb21tb25Db250ZXh0KCk7XG4gICAgICAgICAgICBjb25zdCBrZXkgPSBBbmd1bGFyRWRpdG9yLmZpbmRLZXkodGhpcy52aWV3Q29udGV4dC5lZGl0b3IsIHRoaXMuZGVzY2VuZGFudCk7XG4gICAgICAgICAgICBjb25zdCBpc0lubGluZSA9IHRoaXMudmlld0NvbnRleHQuZWRpdG9yLmlzSW5saW5lKHRoaXMuZGVzY2VuZGFudCk7XG4gICAgICAgICAgICBjb25zdCBpc1ZvaWQgPSB0aGlzLnZpZXdDb250ZXh0LmVkaXRvci5pc1ZvaWQodGhpcy5kZXNjZW5kYW50KTtcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRDb250ZXh0OiBTbGF0ZUVsZW1lbnRDb250ZXh0ID0ge1xuICAgICAgICAgICAgICAgIGVsZW1lbnQ6IHRoaXMuZGVzY2VuZGFudCxcbiAgICAgICAgICAgICAgICAuLi5jb21wdXRlZENvbnRleHQsXG4gICAgICAgICAgICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICAgICAgICAgICAgICAnZGF0YS1zbGF0ZS1ub2RlJzogJ2VsZW1lbnQnLFxuICAgICAgICAgICAgICAgICAgICAnZGF0YS1zbGF0ZS1rZXknOiBrZXkuaWRcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGRlY29yYXRlOiB0aGlzLmNvbnRleHQuZGVjb3JhdGUsXG4gICAgICAgICAgICAgICAgcmVhZG9ubHk6IHRoaXMuY29udGV4dC5yZWFkb25seVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlmIChpc0lubGluZSkge1xuICAgICAgICAgICAgICAgIGVsZW1lbnRDb250ZXh0LmF0dHJpYnV0ZXNbJ2RhdGEtc2xhdGUtaW5saW5lJ10gPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGlzVm9pZCkge1xuICAgICAgICAgICAgICAgIGVsZW1lbnRDb250ZXh0LmF0dHJpYnV0ZXNbJ2RhdGEtc2xhdGUtdm9pZCddID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBlbGVtZW50Q29udGV4dC5hdHRyaWJ1dGVzLmNvbnRlbnRlZGl0YWJsZSA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnRDb250ZXh0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgY29tcHV0ZWRDb250ZXh0ID0gdGhpcy5nZXRDb21tb25Db250ZXh0KCk7XG4gICAgICAgICAgICBjb25zdCBpc0xlYWZCbG9jayA9IEFuZ3VsYXJFZGl0b3IuaXNMZWFmQmxvY2sodGhpcy52aWV3Q29udGV4dC5lZGl0b3IsIHRoaXMuY29udGV4dC5wYXJlbnQpO1xuICAgICAgICAgICAgY29uc3QgdGV4dENvbnRleHQ6IFNsYXRlVGV4dENvbnRleHQgPSB7XG4gICAgICAgICAgICAgICAgZGVjb3JhdGlvbnM6IGNvbXB1dGVkQ29udGV4dC5kZWNvcmF0aW9ucyxcbiAgICAgICAgICAgICAgICBpc0xhc3Q6IGlzTGVhZkJsb2NrICYmIHRoaXMuaW5kZXggPT09IHRoaXMuY29udGV4dC5wYXJlbnQuY2hpbGRyZW4ubGVuZ3RoIC0gMSxcbiAgICAgICAgICAgICAgICBwYXJlbnQ6IHRoaXMuY29udGV4dC5wYXJlbnQgYXMgRWxlbWVudCxcbiAgICAgICAgICAgICAgICB0ZXh0OiB0aGlzLmRlc2NlbmRhbnRcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICByZXR1cm4gdGV4dENvbnRleHQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRWaWV3VHlwZSgpOiBWaWV3VHlwZSB7XG4gICAgICAgIGlmIChFbGVtZW50LmlzRWxlbWVudCh0aGlzLmRlc2NlbmRhbnQpKSB7XG4gICAgICAgICAgICByZXR1cm4gKHRoaXMudmlld0NvbnRleHQucmVuZGVyRWxlbWVudCAmJiB0aGlzLnZpZXdDb250ZXh0LnJlbmRlckVsZW1lbnQodGhpcy5kZXNjZW5kYW50KSkgfHwgdGhpcy5kZWZhdWx0RWxlbWVudENvbXBvbmVudFR5cGU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBpc1ZvaWQgPSB0aGlzLnZpZXdDb250ZXh0LmVkaXRvci5pc1ZvaWQodGhpcy5jb250ZXh0LnBhcmVudCBhcyBFbGVtZW50KTtcbiAgICAgICAgICAgIHJldHVybiBpc1ZvaWRcbiAgICAgICAgICAgICAgICA/IFNsYXRlVm9pZFRleHRDb21wb25lbnRcbiAgICAgICAgICAgICAgICA6ICh0aGlzLnZpZXdDb250ZXh0LnJlbmRlclRleHQgJiYgdGhpcy52aWV3Q29udGV4dC5yZW5kZXJUZXh0KHRoaXMuZGVzY2VuZGFudCkpIHx8IFNsYXRlRGVmYXVsdFRleHRDb21wb25lbnQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBtZW1vaXplZEVsZW1lbnRDb250ZXh0KHByZXY6IFNsYXRlRWxlbWVudENvbnRleHQsIG5leHQ6IFNsYXRlRWxlbWVudENvbnRleHQpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHByZXYuZWxlbWVudCA9PT0gbmV4dC5lbGVtZW50ICYmXG4gICAgICAgICAgICAoIXRoaXMudmlld0NvbnRleHQuaXNTdHJpY3REZWNvcmF0ZSB8fCBwcmV2LmRlY29yYXRlID09PSBuZXh0LmRlY29yYXRlKSAmJlxuICAgICAgICAgICAgcHJldi5yZWFkb25seSA9PT0gbmV4dC5yZWFkb25seSAmJlxuICAgICAgICAgICAgaXNEZWNvcmF0b3JSYW5nZUxpc3RFcXVhbChwcmV2LmRlY29yYXRpb25zLCBuZXh0LmRlY29yYXRpb25zKSAmJlxuICAgICAgICAgICAgKHByZXYuc2VsZWN0aW9uID09PSBuZXh0LnNlbGVjdGlvbiB8fCAoISFwcmV2LnNlbGVjdGlvbiAmJiAhIW5leHQuc2VsZWN0aW9uICYmIFJhbmdlLmVxdWFscyhwcmV2LnNlbGVjdGlvbiwgbmV4dC5zZWxlY3Rpb24pKSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBtZW1vaXplZFRleHRDb250ZXh0KHByZXY6IFNsYXRlVGV4dENvbnRleHQsIG5leHQ6IFNsYXRlVGV4dENvbnRleHQpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIG5leHQucGFyZW50ID09PSBwcmV2LnBhcmVudCAmJlxuICAgICAgICAgICAgbmV4dC5pc0xhc3QgPT09IHByZXYuaXNMYXN0ICYmXG4gICAgICAgICAgICBuZXh0LnRleHQgPT09IHByZXYudGV4dCAmJlxuICAgICAgICAgICAgaXNEZWNvcmF0b3JSYW5nZUxpc3RFcXVhbChuZXh0LmRlY29yYXRpb25zLCBwcmV2LmRlY29yYXRpb25zKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIG1lbW9pemVkQ29udGV4dChwcmV2OiBTbGF0ZUVsZW1lbnRDb250ZXh0IHwgU2xhdGVUZXh0Q29udGV4dCwgbmV4dDogU2xhdGVFbGVtZW50Q29udGV4dCB8IFNsYXRlVGV4dENvbnRleHQpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKEVsZW1lbnQuaXNFbGVtZW50KHRoaXMuZGVzY2VuZGFudCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm1lbW9pemVkRWxlbWVudENvbnRleHQocHJldiBhcyBTbGF0ZUVsZW1lbnRDb250ZXh0LCBuZXh0IGFzIFNsYXRlRWxlbWVudENvbnRleHQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubWVtb2l6ZWRUZXh0Q29udGV4dChwcmV2IGFzIFNsYXRlVGV4dENvbnRleHQsIG5leHQgYXMgU2xhdGVUZXh0Q29udGV4dCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
186
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzY2VuZGFudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvY29tcG9uZW50cy9kZXNjZW5kYW50L2Rlc2NlbmRhbnQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBdUMsTUFBTSxlQUFlLENBQUM7QUFDdkgsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzlELE9BQU8sRUFBYyxNQUFNLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUUzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUV0RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNsRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDNUQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXhELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDN0MsT0FBTyxFQUFFLHFDQUFxQyxFQUFFLE1BQU0sNENBQTRDLENBQUM7O0FBUW5HLE1BQU0sT0FBTyxlQUNULFNBQVEsaUJBQW1HO0lBVzNHLElBQUksU0FBUztRQUNULElBQUksSUFBSSxDQUFDLHFCQUFxQixFQUFFO1lBQzVCLE9BQU8sQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQzlEO1FBQ0QsT0FBTyxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDaEMsQ0FB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OzBCQTBCUSxNQUFNOzJCQUFDLHFDQUFxQzs0Q0FyQnhDLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUcsT0FBTztzQkFBZixLQUFLO2dCQUVHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBRUcsS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5qZWN0LCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIFZpZXdDb250YWluZXJSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNsYXRlQmxvY2tDYXJkIH0gZnJvbSAnLi4vYmxvY2stY2FyZC9ibG9jay1jYXJkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBWaWV3Q29udGFpbmVySXRlbSB9IGZyb20gJy4uLy4uL3ZpZXcvY29udGFpbmVyLWl0ZW0nO1xuaW1wb3J0IHsgRGVzY2VuZGFudCwgRWRpdG9yLCBSYW5nZSwgRWxlbWVudCB9IGZyb20gJ3NsYXRlJztcbmltcG9ydCB7IFNsYXRlQ2hpbGRyZW5Db250ZXh0LCBTbGF0ZUVsZW1lbnRDb250ZXh0LCBTbGF0ZVRleHRDb250ZXh0LCBTbGF0ZVZpZXdDb250ZXh0IH0gZnJvbSAnLi4vLi4vdmlldy9jb250ZXh0JztcbmltcG9ydCB7IEFuZ3VsYXJFZGl0b3IgfSBmcm9tICcuLi8uLi9wbHVnaW5zL2FuZ3VsYXItZWRpdG9yJztcbmltcG9ydCB7IE5PREVfVE9fSU5ERVgsIE5PREVfVE9fUEFSRU5UIH0gZnJvbSAnLi4vLi4vdXRpbHMvd2Vhay1tYXBzJztcbmltcG9ydCB7IEJhc2VFbGVtZW50Q29tcG9uZW50LCBCYXNlVGV4dENvbXBvbmVudCB9IGZyb20gJy4uLy4uL3ZpZXcvYmFzZSc7XG5pbXBvcnQgeyBTbGF0ZURlZmF1bHRUZXh0IH0gZnJvbSAnLi4vdGV4dC9kZWZhdWx0LXRleHQuY29tcG9uZW50JztcbmltcG9ydCB7IFNsYXRlVm9pZFRleHQgfSBmcm9tICcuLi90ZXh0L3ZvaWQtdGV4dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgaXNEZWNvcmF0b3JSYW5nZUxpc3RFcXVhbCB9IGZyb20gJy4uLy4uL3V0aWxzJztcbmltcG9ydCB7IENvbXBvbmVudFR5cGUsIFZpZXdUeXBlIH0gZnJvbSAnLi4vLi4vdHlwZXMvdmlldyc7XG5pbXBvcnQgeyBTbGF0ZUVycm9yQ29kZSB9IGZyb20gJy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IFNMQVRFX0RFRkFVTFRfRUxFTUVOVF9DT01QT05FTlRfVE9LRU4gfSBmcm9tICcuLi9lbGVtZW50L2RlZmF1bHQtZWxlbWVudC5jb21wb25lbnQudG9rZW4nO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3NsYXRlLWRlc2NlbmRhbnQnLFxuICAgIHRlbXBsYXRlOiAnJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIFNsYXRlRGVzY2VuZGFudFxuICAgIGV4dGVuZHMgVmlld0NvbnRhaW5lckl0ZW08U2xhdGVFbGVtZW50Q29udGV4dCB8IFNsYXRlVGV4dENvbnRleHQsIEJhc2VFbGVtZW50Q29tcG9uZW50IHwgQmFzZVRleHRDb21wb25lbnQ+XG4gICAgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlc1xue1xuICAgIEBJbnB1dCgpIGRlc2NlbmRhbnQ6IERlc2NlbmRhbnQ7XG5cbiAgICBASW5wdXQoKSBjb250ZXh0OiBTbGF0ZUNoaWxkcmVuQ29udGV4dDtcblxuICAgIEBJbnB1dCgpIHZpZXdDb250ZXh0OiBTbGF0ZVZpZXdDb250ZXh0O1xuXG4gICAgQElucHV0KCkgaW5kZXg6IG51bWJlcjtcblxuICAgIGdldCByb290Tm9kZXMoKTogSFRNTEVsZW1lbnRbXSB7XG4gICAgICAgIGlmICh0aGlzLmJsb2NrQ2FyZENvbXBvbmVudFJlZikge1xuICAgICAgICAgICAgcmV0dXJuIFt0aGlzLmJsb2NrQ2FyZENvbXBvbmVudFJlZi5pbnN0YW5jZS5uYXRpdmVFbGVtZW50XTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3VwZXIuZ2V0Um9vdE5vZGVzKCk7XG4gICAgfVxuXG4gICAgZ2V0IGlzQmxvY2tDYXJkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy52aWV3Q29udGV4dC5lZGl0b3IuaXNCbG9ja0NhcmQodGhpcy5kZXNjZW5kYW50KTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJvdGVjdGVkIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgICAgIEBJbmplY3QoU0xBVEVfREVGQVVMVF9FTEVNRU5UX0NPTVBPTkVOVF9UT0tFTilcbiAgICAgICAgcHVibGljIGRlZmF1bHRFbGVtZW50Q29tcG9uZW50VHlwZTogQ29tcG9uZW50VHlwZTxCYXNlRWxlbWVudENvbXBvbmVudD5cbiAgICApIHtcbiAgICAgICAgc3VwZXIodmlld0NvbnRhaW5lclJlZik7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIE5PREVfVE9fSU5ERVguc2V0KHRoaXMuZGVzY2VuZGFudCwgdGhpcy5pbmRleCk7XG4gICAgICAgIE5PREVfVE9fUEFSRU5ULnNldCh0aGlzLmRlc2NlbmRhbnQsIHRoaXMuY29udGV4dC5wYXJlbnQpO1xuICAgICAgICB0aGlzLmNyZWF0ZVZpZXcoKTtcbiAgICAgICAgaWYgKHRoaXMuaXNCbG9ja0NhcmQpIHtcbiAgICAgICAgICAgIHRoaXMuY3JlYXRlQmxvY2tDYXJkKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBkZXN0cm95VmlldygpIHtcbiAgICAgICAgc3VwZXIuZGVzdHJveVZpZXcoKTtcbiAgICAgICAgdGhpcy5kZXN0cm95QmxvY2tDYXJkKCk7XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoKSB7XG4gICAgICAgIGlmICghdGhpcy5pbml0aWFsaXplZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE5PREVfVE9fSU5ERVguc2V0KHRoaXMuZGVzY2VuZGFudCwgdGhpcy5pbmRleCk7XG4gICAgICAgIE5PREVfVE9fUEFSRU5ULnNldCh0aGlzLmRlc2NlbmRhbnQsIHRoaXMuY29udGV4dC5wYXJlbnQpO1xuICAgICAgICB0aGlzLnVwZGF0ZVZpZXcoKTtcbiAgICAgICAgaWYgKHRoaXMuaXNCbG9ja0NhcmQpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlQmxvY2tDYXJkKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBkZXN0cm95QmxvY2tDYXJkKCkge1xuICAgICAgICBpZiAodGhpcy5ibG9ja0NhcmRDb21wb25lbnRSZWYpIHtcbiAgICAgICAgICAgIHRoaXMuYmxvY2tDYXJkQ29tcG9uZW50UmVmLmRlc3Ryb3koKTtcbiAgICAgICAgICAgIHRoaXMuYmxvY2tDYXJkQ29tcG9uZW50UmVmID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNyZWF0ZUJsb2NrQ2FyZCgpIHtcbiAgICAgICAgY29uc3Qgcm9vdE5vZGVzID0gdGhpcy5yb290Tm9kZXM7XG4gICAgICAgIHRoaXMuYmxvY2tDYXJkQ29tcG9uZW50UmVmID0gdGhpcy52aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudDxTbGF0ZUJsb2NrQ2FyZD4oU2xhdGVCbG9ja0NhcmQpO1xuICAgICAgICB0aGlzLmJsb2NrQ2FyZENvbXBvbmVudFJlZi5pbnN0YW5jZS5pbml0aWFsaXplQ2VudGVyKHJvb3ROb2Rlcyk7XG4gICAgfVxuXG4gICAgdXBkYXRlQmxvY2tDYXJkKCkge1xuICAgICAgICBpZiAodGhpcy5ibG9ja0NhcmRDb21wb25lbnRSZWYpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByb290Tm9kZXMgPSB0aGlzLnJvb3ROb2RlcztcbiAgICAgICAgdGhpcy5jcmVhdGVCbG9ja0NhcmQoKTtcbiAgICAgICAgY29uc3QgZmlyc3RSb290Tm9kZSA9IHJvb3ROb2Rlc1swXTtcbiAgICAgICAgZmlyc3RSb290Tm9kZS5yZXBsYWNlV2l0aCh0aGlzLmJsb2NrQ2FyZENvbXBvbmVudFJlZi5pbnN0YW5jZS5uYXRpdmVFbGVtZW50KTtcbiAgICB9XG5cbiAgICBnZXRDb21tb25Db250ZXh0KCk6IHsgc2VsZWN0aW9uOiBSYW5nZTsgZGVjb3JhdGlvbnM6IFJhbmdlW10gfSB7XG4gICAgICAgIGNvbnN0IHBhdGggPSBBbmd1bGFyRWRpdG9yLmZpbmRQYXRoKHRoaXMudmlld0NvbnRleHQuZWRpdG9yLCB0aGlzLmNvbnRleHQucGFyZW50KTtcbiAgICAgICAgY29uc3QgcCA9IHBhdGguY29uY2F0KHRoaXMuaW5kZXgpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgcmFuZ2UgPSBFZGl0b3IucmFuZ2UodGhpcy52aWV3Q29udGV4dC5lZGl0b3IsIHApO1xuICAgICAgICAgICAgY29uc3Qgc2VsID0gdGhpcy5jb250ZXh0LnNlbGVjdGlvbiAmJiBSYW5nZS5pbnRlcnNlY3Rpb24ocmFuZ2UsIHRoaXMuY29udGV4dC5zZWxlY3Rpb24pO1xuICAgICAgICAgICAgY29uc3QgZHMgPSB0aGlzLmNvbnRleHQuZGVjb3JhdGUoW3RoaXMuZGVzY2VuZGFudCwgcF0pO1xuICAgICAgICAgICAgZm9yIChjb25zdCBkZWMgb2YgdGhpcy5jb250ZXh0LmRlY29yYXRpb25zKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZCA9IFJhbmdlLmludGVyc2VjdGlvbihkZWMsIHJhbmdlKTtcbiAgICAgICAgICAgICAgICBpZiAoZCkge1xuICAgICAgICAgICAgICAgICAgICBkcy5wdXNoKGQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB7IHNlbGVjdGlvbjogc2VsLCBkZWNvcmF0aW9uczogZHMgfTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIHRoaXMudmlld0NvbnRleHQuZWRpdG9yLm9uRXJyb3Ioe1xuICAgICAgICAgICAgICAgIGNvZGU6IFNsYXRlRXJyb3JDb2RlLkdldFN0YXJ0UG9pbnRFcnJvcixcbiAgICAgICAgICAgICAgICBuYXRpdmVFcnJvcjogZXJyb3JcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIHsgc2VsZWN0aW9uOiBudWxsLCBkZWNvcmF0aW9uczogW10gfTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldENvbnRleHQoKTogU2xhdGVFbGVtZW50Q29udGV4dCB8IFNsYXRlVGV4dENvbnRleHQge1xuICAgICAgICBpZiAoRWxlbWVudC5pc0VsZW1lbnQodGhpcy5kZXNjZW5kYW50KSkge1xuICAgICAgICAgICAgY29uc3QgY29tcHV0ZWRDb250ZXh0ID0gdGhpcy5nZXRDb21tb25Db250ZXh0KCk7XG4gICAgICAgICAgICBjb25zdCBrZXkgPSBBbmd1bGFyRWRpdG9yLmZpbmRLZXkodGhpcy52aWV3Q29udGV4dC5lZGl0b3IsIHRoaXMuZGVzY2VuZGFudCk7XG4gICAgICAgICAgICBjb25zdCBpc0lubGluZSA9IHRoaXMudmlld0NvbnRleHQuZWRpdG9yLmlzSW5saW5lKHRoaXMuZGVzY2VuZGFudCk7XG4gICAgICAgICAgICBjb25zdCBpc1ZvaWQgPSB0aGlzLnZpZXdDb250ZXh0LmVkaXRvci5pc1ZvaWQodGhpcy5kZXNjZW5kYW50KTtcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRDb250ZXh0OiBTbGF0ZUVsZW1lbnRDb250ZXh0ID0ge1xuICAgICAgICAgICAgICAgIGVsZW1lbnQ6IHRoaXMuZGVzY2VuZGFudCxcbiAgICAgICAgICAgICAgICAuLi5jb21wdXRlZENvbnRleHQsXG4gICAgICAgICAgICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICAgICAgICAgICAgICAnZGF0YS1zbGF0ZS1ub2RlJzogJ2VsZW1lbnQnLFxuICAgICAgICAgICAgICAgICAgICAnZGF0YS1zbGF0ZS1rZXknOiBrZXkuaWRcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGRlY29yYXRlOiB0aGlzLmNvbnRleHQuZGVjb3JhdGUsXG4gICAgICAgICAgICAgICAgcmVhZG9ubHk6IHRoaXMuY29udGV4dC5yZWFkb25seVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlmIChpc0lubGluZSkge1xuICAgICAgICAgICAgICAgIGVsZW1lbnRDb250ZXh0LmF0dHJpYnV0ZXNbJ2RhdGEtc2xhdGUtaW5saW5lJ10gPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGlzVm9pZCkge1xuICAgICAgICAgICAgICAgIGVsZW1lbnRDb250ZXh0LmF0dHJpYnV0ZXNbJ2RhdGEtc2xhdGUtdm9pZCddID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBlbGVtZW50Q29udGV4dC5hdHRyaWJ1dGVzLmNvbnRlbnRlZGl0YWJsZSA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnRDb250ZXh0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgY29tcHV0ZWRDb250ZXh0ID0gdGhpcy5nZXRDb21tb25Db250ZXh0KCk7XG4gICAgICAgICAgICBjb25zdCBpc0xlYWZCbG9jayA9IEFuZ3VsYXJFZGl0b3IuaXNMZWFmQmxvY2sodGhpcy52aWV3Q29udGV4dC5lZGl0b3IsIHRoaXMuY29udGV4dC5wYXJlbnQpO1xuICAgICAgICAgICAgY29uc3QgdGV4dENvbnRleHQ6IFNsYXRlVGV4dENvbnRleHQgPSB7XG4gICAgICAgICAgICAgICAgZGVjb3JhdGlvbnM6IGNvbXB1dGVkQ29udGV4dC5kZWNvcmF0aW9ucyxcbiAgICAgICAgICAgICAgICBpc0xhc3Q6IGlzTGVhZkJsb2NrICYmIHRoaXMuaW5kZXggPT09IHRoaXMuY29udGV4dC5wYXJlbnQuY2hpbGRyZW4ubGVuZ3RoIC0gMSxcbiAgICAgICAgICAgICAgICBwYXJlbnQ6IHRoaXMuY29udGV4dC5wYXJlbnQgYXMgRWxlbWVudCxcbiAgICAgICAgICAgICAgICB0ZXh0OiB0aGlzLmRlc2NlbmRhbnRcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICByZXR1cm4gdGV4dENvbnRleHQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRWaWV3VHlwZSgpOiBWaWV3VHlwZSB7XG4gICAgICAgIGlmIChFbGVtZW50LmlzRWxlbWVudCh0aGlzLmRlc2NlbmRhbnQpKSB7XG4gICAgICAgICAgICByZXR1cm4gKHRoaXMudmlld0NvbnRleHQucmVuZGVyRWxlbWVudCAmJiB0aGlzLnZpZXdDb250ZXh0LnJlbmRlckVsZW1lbnQodGhpcy5kZXNjZW5kYW50KSkgfHwgdGhpcy5kZWZhdWx0RWxlbWVudENvbXBvbmVudFR5cGU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBpc1ZvaWQgPSB0aGlzLnZpZXdDb250ZXh0LmVkaXRvci5pc1ZvaWQodGhpcy5jb250ZXh0LnBhcmVudCBhcyBFbGVtZW50KTtcbiAgICAgICAgICAgIHJldHVybiBpc1ZvaWRcbiAgICAgICAgICAgICAgICA/IFNsYXRlVm9pZFRleHRcbiAgICAgICAgICAgICAgICA6ICh0aGlzLnZpZXdDb250ZXh0LnJlbmRlclRleHQgJiYgdGhpcy52aWV3Q29udGV4dC5yZW5kZXJUZXh0KHRoaXMuZGVzY2VuZGFudCkpIHx8IFNsYXRlRGVmYXVsdFRleHQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBtZW1vaXplZEVsZW1lbnRDb250ZXh0KHByZXY6IFNsYXRlRWxlbWVudENvbnRleHQsIG5leHQ6IFNsYXRlRWxlbWVudENvbnRleHQpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHByZXYuZWxlbWVudCA9PT0gbmV4dC5lbGVtZW50ICYmXG4gICAgICAgICAgICAoIXRoaXMudmlld0NvbnRleHQuaXNTdHJpY3REZWNvcmF0ZSB8fCBwcmV2LmRlY29yYXRlID09PSBuZXh0LmRlY29yYXRlKSAmJlxuICAgICAgICAgICAgcHJldi5yZWFkb25seSA9PT0gbmV4dC5yZWFkb25seSAmJlxuICAgICAgICAgICAgaXNEZWNvcmF0b3JSYW5nZUxpc3RFcXVhbChwcmV2LmRlY29yYXRpb25zLCBuZXh0LmRlY29yYXRpb25zKSAmJlxuICAgICAgICAgICAgKHByZXYuc2VsZWN0aW9uID09PSBuZXh0LnNlbGVjdGlvbiB8fCAoISFwcmV2LnNlbGVjdGlvbiAmJiAhIW5leHQuc2VsZWN0aW9uICYmIFJhbmdlLmVxdWFscyhwcmV2LnNlbGVjdGlvbiwgbmV4dC5zZWxlY3Rpb24pKSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBtZW1vaXplZFRleHRDb250ZXh0KHByZXY6IFNsYXRlVGV4dENvbnRleHQsIG5leHQ6IFNsYXRlVGV4dENvbnRleHQpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIG5leHQucGFyZW50ID09PSBwcmV2LnBhcmVudCAmJlxuICAgICAgICAgICAgbmV4dC5pc0xhc3QgPT09IHByZXYuaXNMYXN0ICYmXG4gICAgICAgICAgICBuZXh0LnRleHQgPT09IHByZXYudGV4dCAmJlxuICAgICAgICAgICAgaXNEZWNvcmF0b3JSYW5nZUxpc3RFcXVhbChuZXh0LmRlY29yYXRpb25zLCBwcmV2LmRlY29yYXRpb25zKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIG1lbW9pemVkQ29udGV4dChwcmV2OiBTbGF0ZUVsZW1lbnRDb250ZXh0IHwgU2xhdGVUZXh0Q29udGV4dCwgbmV4dDogU2xhdGVFbGVtZW50Q29udGV4dCB8IFNsYXRlVGV4dENvbnRleHQpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKEVsZW1lbnQuaXNFbGVtZW50KHRoaXMuZGVzY2VuZGFudCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm1lbW9pemVkRWxlbWVudENvbnRleHQocHJldiBhcyBTbGF0ZUVsZW1lbnRDb250ZXh0LCBuZXh0IGFzIFNsYXRlRWxlbWVudENvbnRleHQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubWVtb2l6ZWRUZXh0Q29udGV4dChwcmV2IGFzIFNsYXRlVGV4dENvbnRleHQsIG5leHQgYXMgU2xhdGVUZXh0Q29udGV4dCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=