@worktile/theia 1.2.7 → 1.2.11

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 (84) hide show
  1. package/bundles/worktile-theia.umd.js +802 -162
  2. package/bundles/worktile-theia.umd.js.map +1 -1
  3. package/components/inline-toolbar/inline-toolbar.component.d.ts +24 -0
  4. package/components/inline-toolbar/inline-toolbar.component.scss +18 -0
  5. package/components/nav-split-line/nav-split-line.component.d.ts +6 -1
  6. package/components/toolbar-dropdown/toolbar-dropdown.component.scss +3 -0
  7. package/components/toolbar-item/toolbar-item.component.d.ts +14 -5
  8. package/constants/code.d.ts +7 -7
  9. package/constants/node-types.d.ts +0 -1
  10. package/constants/toolbar.d.ts +6 -2
  11. package/custom-types.d.ts +1 -0
  12. package/editor.component.d.ts +6 -4
  13. package/editor.module.d.ts +59 -52
  14. package/esm2015/components/color-select/color-select.component.js +3 -2
  15. package/esm2015/components/inline-toolbar/inline-toolbar.component.js +136 -0
  16. package/esm2015/components/nav-split-line/nav-split-line.component.js +26 -5
  17. package/esm2015/components/toolbar-base-item/toolbar-base-item.component.js +3 -2
  18. package/esm2015/components/toolbar-item/toolbar-item.component.js +70 -24
  19. package/esm2015/constants/code.js +7 -7
  20. package/esm2015/constants/node-types.js +1 -2
  21. package/esm2015/constants/toolbar.js +37 -5
  22. package/esm2015/custom-types.js +1 -1
  23. package/esm2015/editor.component.js +24 -19
  24. package/esm2015/editor.module.js +20 -8
  25. package/esm2015/interfaces/toolbar.js +1 -1
  26. package/esm2015/plugins/code/code.component.js +13 -8
  27. package/esm2015/plugins/common/auto-insert-data..js +2 -3
  28. package/esm2015/plugins/common/get-fragment.plugin.js +4 -4
  29. package/esm2015/plugins/deserializers/deserialize-html.plugin.js +8 -1
  30. package/esm2015/plugins/image/image.plugin.js +1 -2
  31. package/esm2015/plugins/index.js +8 -4
  32. package/esm2015/plugins/link/link.plugin.js +7 -2
  33. package/esm2015/plugins/list/list.plugin.js +9 -9
  34. package/esm2015/plugins/list/queries/get-start-list-item.js +9 -2
  35. package/esm2015/plugins/list/queries/is-selection-in-same-list-item.js +17 -0
  36. package/esm2015/plugins/node-id/node-id.plugin.js +7 -2
  37. package/esm2015/plugins/paint-format/options.js +54 -0
  38. package/esm2015/plugins/paint-format/paint-format.editor.js +67 -0
  39. package/esm2015/plugins/placeholder/placeholder.component.js +75 -0
  40. package/esm2015/plugins/public-api.js +2 -1
  41. package/esm2015/plugins/quick-insert/components/quick-insert.component.js +76 -0
  42. package/esm2015/plugins/quick-insert/components/quick-toolbar/quick-toolbar.component.js +75 -0
  43. package/esm2015/plugins/quick-insert/quick-insert.editor.js +61 -0
  44. package/esm2015/plugins/quick-insert/quick-insert.plugint.js +37 -0
  45. package/esm2015/plugins/table/components/row/row.component.js +3 -1
  46. package/esm2015/plugins/table/components/table.component.js +6 -3
  47. package/esm2015/plugins/table/components/td/td.component.js +2 -1
  48. package/esm2015/plugins/table/components/toolbar/table-toolbar.component.js +1 -1
  49. package/esm2015/plugins/table/table.plugin.js +3 -3
  50. package/esm2015/plugins/vertical-align/toolbar-item.component.js +11 -6
  51. package/esm2015/public-api.js +2 -1
  52. package/esm2015/services/context.service.js +2 -2
  53. package/esm2015/services/toolbar.service.js +5 -5
  54. package/esm2015/utils/auto-focus.js +2 -2
  55. package/esm2015/utils/fragment.js +3 -3
  56. package/esm2015/utils/is-clean-empty-paragraph.js +32 -0
  57. package/esm2015/utils/weak-maps.js +2 -1
  58. package/fesm2015/worktile-theia.js +778 -160
  59. package/fesm2015/worktile-theia.js.map +1 -1
  60. package/interfaces/toolbar.d.ts +3 -2
  61. package/package.json +1 -1
  62. package/plugins/code/code.component.d.ts +3 -2
  63. package/plugins/list/queries/get-start-list-item.d.ts +8 -2
  64. package/plugins/list/queries/is-selection-in-same-list-item.d.ts +5 -0
  65. package/plugins/paint-format/options.d.ts +2 -0
  66. package/plugins/paint-format/paint-format.editor.d.ts +7 -0
  67. package/{components → plugins}/placeholder/placeholder.component.d.ts +5 -6
  68. package/{components → plugins}/placeholder/placeholder.component.scss +0 -0
  69. package/plugins/public-api.d.ts +1 -0
  70. package/plugins/quick-insert/components/quick-insert.component.d.ts +25 -0
  71. package/plugins/quick-insert/components/quick-insert.component.scss +21 -0
  72. package/plugins/quick-insert/components/quick-toolbar/quick-toolbar.component.d.ts +29 -0
  73. package/plugins/quick-insert/components/quick-toolbar/quick-toolbar.component.scss +21 -0
  74. package/plugins/quick-insert/quick-insert.editor.d.ts +8 -0
  75. package/plugins/quick-insert/quick-insert.plugint.d.ts +2 -0
  76. package/plugins/table/components/table.component.d.ts +1 -0
  77. package/plugins/vertical-align/toolbar-item.component.d.ts +1 -0
  78. package/public-api.d.ts +1 -0
  79. package/services/toolbar.service.d.ts +1 -1
  80. package/styles/editor.scss +41 -15
  81. package/styles/index.scss +5 -2
  82. package/utils/is-clean-empty-paragraph.d.ts +8 -0
  83. package/utils/weak-maps.d.ts +1 -0
  84. package/esm2015/components/placeholder/placeholder.component.js +0 -88
@@ -0,0 +1,24 @@
1
+ import { OnInit, OnDestroy, ChangeDetectorRef, ElementRef, NgZone } from '@angular/core';
2
+ import { ScrollDispatcher } from '@angular/cdk/overlay';
3
+ import { Subject } from 'rxjs';
4
+ import { Editor } from 'slate';
5
+ import { ToolbarItem } from '../../interfaces';
6
+ import { TheToolbarComponent } from '../toolbar/toolbar.component';
7
+ import * as i0 from "@angular/core";
8
+ export declare class TheInlineToolbarComponent implements OnInit, OnDestroy {
9
+ private elementRef;
10
+ private scrollDispatcher;
11
+ private cdr;
12
+ private ngZone;
13
+ editor: Editor;
14
+ toolbarItems: ToolbarItem[];
15
+ inlineToolbar: TheToolbarComponent;
16
+ destroy$: Subject<unknown>;
17
+ constructor(elementRef: ElementRef<any>, scrollDispatcher: ScrollDispatcher, cdr: ChangeDetectorRef, ngZone: NgZone);
18
+ ngOnInit(): void;
19
+ updateInlineToolbar(): void;
20
+ updatePosition(toolbarElement: HTMLElement, range: any): void;
21
+ ngOnDestroy(): void;
22
+ static ɵfac: i0.ɵɵFactoryDeclaration<TheInlineToolbarComponent, never>;
23
+ static ɵcmp: i0.ɵɵComponentDeclaration<TheInlineToolbarComponent, "the-inline-toolbar", never, { "editor": "editor"; "toolbarItems": "toolbarItems"; }, {}, never, never>;
24
+ }
@@ -0,0 +1,18 @@
1
+ .the-inline-toolbar {
2
+ background: $white;
3
+ box-shadow: $box-shadow;
4
+ border-radius: 4px;
5
+ position: fixed;
6
+ z-index: 9;
7
+ top: -10000px;
8
+ left: -10000px;
9
+ margin-top: -6px;
10
+ opacity: 0;
11
+ transition: opacity 0.75s;
12
+
13
+ &.hide {
14
+ display: none;
15
+ }
16
+
17
+ @include thy-icon-nav-disabled();
18
+ }
@@ -1,8 +1,13 @@
1
1
  import { OnInit } from '@angular/core';
2
+ import { ToolbarItemMode } from '../../constants/toolbar';
2
3
  import * as i0 from "@angular/core";
3
4
  export declare class NavSplitLineComponent implements OnInit {
5
+ mode: ToolbarItemMode;
6
+ theNavSplitLine: boolean;
7
+ get horizontal(): boolean;
8
+ get vertical(): boolean;
4
9
  constructor();
5
10
  ngOnInit(): void;
6
11
  static ɵfac: i0.ɵɵFactoryDeclaration<NavSplitLineComponent, never>;
7
- static ɵcmp: i0.ɵɵComponentDeclaration<NavSplitLineComponent, "nav-split-line", never, {}, {}, never, never>;
12
+ static ɵcmp: i0.ɵɵComponentDeclaration<NavSplitLineComponent, "nav-split-line", never, { "mode": "mode"; }, {}, never, never>;
8
13
  }
@@ -36,6 +36,9 @@
36
36
  color: initial;
37
37
  position: relative;
38
38
  }
39
+ .table-down-icon {
40
+ left: 2px;
41
+ }
39
42
  }
40
43
  }
41
44
 
@@ -1,15 +1,24 @@
1
+ import { ComponentFactoryResolver, NgZone, OnInit, ViewContainerRef } from '@angular/core';
1
2
  import { Editor } from 'slate';
2
- import { DefaultToolbarItem } from '../../interfaces';
3
+ import { ToolbarItem } from '../../interfaces';
3
4
  import { CustomEditor } from '../../custom-types';
4
5
  import { TheToolbarBaseItemComponent } from '../toolbar-base-item/toolbar-base-item.component';
6
+ import { ToolbarItemMode } from '../../constants/toolbar';
5
7
  import * as i0 from "@angular/core";
6
- export declare class TheToolbarItemComponent extends TheToolbarBaseItemComponent {
7
- item: DefaultToolbarItem;
8
+ export declare class TheToolbarItemComponent extends TheToolbarBaseItemComponent implements OnInit {
9
+ private ngZone;
10
+ private cfr;
11
+ item: ToolbarItem;
8
12
  editor: CustomEditor;
13
+ itemMode: ToolbarItemMode;
14
+ ToolbarItemMode: typeof ToolbarItemMode;
9
15
  active: string | boolean;
10
- constructor();
16
+ toolbarContainer: ViewContainerRef;
17
+ constructor(ngZone: NgZone, cfr: ComponentFactoryResolver);
18
+ ngOnInit(): void;
11
19
  statusChange(editor: Editor): void;
12
20
  execute(event: MouseEvent): void;
21
+ renderToolbarItem(): void;
13
22
  static ɵfac: i0.ɵɵFactoryDeclaration<TheToolbarItemComponent, never>;
14
- static ɵcmp: i0.ɵɵComponentDeclaration<TheToolbarItemComponent, "the-toolbar-item", never, { "item": "item"; "editor": "editor"; }, {}, never, never>;
23
+ static ɵcmp: i0.ɵɵComponentDeclaration<TheToolbarItemComponent, "the-toolbar-item", never, { "item": "item"; "editor": "editor"; "itemMode": "itemMode"; }, {}, never, never>;
15
24
  }
@@ -7,17 +7,17 @@ export declare const CODE_MODES: {
7
7
  showName: string;
8
8
  value: string;
9
9
  }[];
10
- export declare const EditorMode: {
10
+ export declare const CodeMode: {
11
11
  default: string;
12
12
  print: string;
13
13
  };
14
- export declare type EditorMode = 'default' | 'print';
15
- export declare class TheEditorConfig {
16
- mode: EditorMode;
14
+ export declare type CodeMode = 'default' | 'print';
15
+ export declare class TheCodeMode {
16
+ mode: CodeMode;
17
17
  }
18
- export declare const THE_EDITOR_CONFIG_TOKEN: InjectionToken<TheEditorConfig>;
19
- export declare const THE_EDITOR_CONFIG_PROVIDER: {
20
- provide: InjectionToken<TheEditorConfig>;
18
+ export declare const THE_CODE_MODE_TOKEN: InjectionToken<TheCodeMode>;
19
+ export declare const THE_CODE_MODE_PROVIDER: {
20
+ provide: InjectionToken<TheCodeMode>;
21
21
  useValue: {
22
22
  mode: string;
23
23
  };
@@ -44,7 +44,6 @@ export declare enum MarkTypes {
44
44
  }
45
45
  export declare enum ToolbarActionTypes {
46
46
  split = "split",
47
- save = "save",
48
47
  undo = "undo",
49
48
  redo = "redo",
50
49
  paintformat = "paintformat",
@@ -3,12 +3,16 @@ import { InjectionToken } from '@angular/core';
3
3
  import { ToolbarItem, ToolbarKey } from '../interfaces';
4
4
  import type { TheToolbarGroupComponent } from '../components/toolbar-group/toolbar-group.component';
5
5
  export declare const TheToolbarGroupToken: InjectionToken<ComponentType<TheToolbarGroupComponent>>;
6
- export declare const BLOCK_TOOLBAR_HOTKEY = "/";
6
+ export declare const QUICK_TOOLBAR_HOTKEY = "/";
7
7
  export declare enum DropdownMode {
8
8
  icon = "icon-mode",
9
9
  text = "text-mode"
10
10
  }
11
+ export declare enum ToolbarItemMode {
12
+ horizontal = 0,
13
+ vertical = 1
14
+ }
11
15
  export declare const DefaultGlobalToolbarDefinition: ToolbarKey[];
12
16
  export declare const DefaultInlineToolbarDefinition: ToolbarKey[];
13
- export declare const DefaultBlockToolbarDefinition: ToolbarKey[];
17
+ export declare const DefaultQuickToolbarDefinition: ToolbarKey[];
14
18
  export declare const ToolbarMoreGroup: ToolbarItem;
package/custom-types.d.ts CHANGED
@@ -30,6 +30,7 @@ export interface NumberedListElement extends TheElement {
30
30
  export interface ListItemElement extends TheElement {
31
31
  type: ElementKinds.listItem;
32
32
  start?: number;
33
+ children: Element[];
33
34
  }
34
35
  export interface LinkElement extends TheElement {
35
36
  type: ElementKinds.link;
@@ -2,13 +2,14 @@ import { OnInit, OnDestroy, ViewContainerRef, ElementRef, EventEmitter, OnChange
2
2
  import { MixinBase } from 'ngx-tethys/core';
3
3
  import { Editor, Text, Element, Descendant, Range, NodeEntry } from 'slate';
4
4
  import { SlateError } from 'slate-angular';
5
- import { ThePlugin, TheOptions, ToolbarItem, DomEventDataInfo, TheEditor } from './interfaces';
5
+ import { ThePlugin, TheOptions, DomEventDataInfo, TheEditor, ToolbarEntity } from './interfaces';
6
6
  import { TheTemplateComponent } from './components/template/template.component';
7
7
  import { TheToolbarComponent } from './components/toolbar/toolbar.component';
8
8
  import { TheToolbarService } from './services/toolbar.service';
9
9
  import { TheContextService } from './services/context.service';
10
10
  import { TheTextComponent } from './components/text/text.component';
11
- import { ThePlaceholderComponent } from './components/placeholder/placeholder.component';
11
+ import { TheQuickInsertComponent } from './plugins/quick-insert/components/quick-insert.component';
12
+ import { ThePlaceholderComponent } from './plugins/placeholder/placeholder.component';
12
13
  import * as i0 from "@angular/core";
13
14
  declare const TheEditorComponent_base: import("ngx-tethys/core").Constructor<import("ngx-tethys/core").ThyUnsubscribe> & typeof MixinBase;
14
15
  export declare class TheEditorComponent extends TheEditorComponent_base implements OnInit, OnChanges, OnDestroy {
@@ -30,14 +31,16 @@ export declare class TheEditorComponent extends TheEditorComponent_base implemen
30
31
  theEditorCreated: EventEmitter<Editor>;
31
32
  templateInstance: TheTemplateComponent;
32
33
  globalToolbarInstance: TheToolbarComponent;
34
+ quickInsertInstance: TheQuickInsertComponent;
33
35
  placeholderInstance: ThePlaceholderComponent;
34
36
  _plugins: ThePlugin[];
35
- globalToolbarItems: ToolbarItem[];
37
+ toolbarEntity: ToolbarEntity;
36
38
  editor: TheEditor;
37
39
  editorValue: Descendant[];
38
40
  decorate: (nodeEntry: NodeEntry) => Range[];
39
41
  get theGlobalToolbarInstance(): TheToolbarComponent;
40
42
  get maxHeight(): string;
43
+ get quickToolbarItems(): import("./interfaces").ToolbarItem[];
41
44
  autoScrollView: any;
42
45
  elementToHtml: WeakMap<Element, string>;
43
46
  private onChangeCallback;
@@ -78,7 +81,6 @@ export declare class TheEditorComponent extends TheEditorComponent_base implemen
78
81
  onSlaCompositionEnd: (event: CompositionEvent) => void;
79
82
  onSlaDragStart: (event: DragEvent) => void;
80
83
  onSlaDragOver: (event: DragEvent) => void;
81
- trackBy: (element: Element) => string;
82
84
  getTextAndJSON(data: DataTransfer): {
83
85
  json: any[];
84
86
  text: string;
@@ -9,7 +9,6 @@ import { TheTemplateComponent } from './components/template/template.component';
9
9
  import { TheListItemComponent } from './plugins/list/components/list-item.component';
10
10
  import { TheBulletedListComponent } from './plugins/list/components/bulleted-list.component';
11
11
  import { TheNumberedListComponent } from './plugins/list/components/numbered-list.component';
12
- import { ThePlaceholderComponent } from './components/placeholder/placeholder.component';
13
12
  import { TheColorSelectComponent } from './components/color-select/color-select.component';
14
13
  import { TheColorToolbarItemComponent } from './plugins/color/toolbar-item.component';
15
14
  import { TheCodeComponent } from './plugins/code/code.component';
@@ -24,7 +23,12 @@ import { TheInsertMarkComponent } from './plugins/table/components/insert-mark/i
24
23
  import { TheToolbarGroupComponent } from './components/toolbar-group/toolbar-group.component';
25
24
  import { TheTableSelectComponent } from './components/table-select/table-select.component';
26
25
  import { TheTableToolbarItemComponent } from './plugins/table/toolbar-item.component';
26
+ import { TheConversionHintComponent } from './components/conversion-hint/conversion-hint.component';
27
27
  import { TheVerticalToolbarItemComponent } from './plugins/vertical-align/toolbar-item.component';
28
+ import { TheInlineToolbarComponent } from './components/inline-toolbar/inline-toolbar.component';
29
+ import { TheQuickToolbarComponent } from './plugins/quick-insert/components/quick-toolbar/quick-toolbar.component';
30
+ import { TheQuickInsertComponent } from './plugins/quick-insert/components/quick-insert.component';
31
+ import { ThePlaceholderComponent } from './plugins/placeholder/placeholder.component';
28
32
  import * as i0 from "@angular/core";
29
33
  import * as i1 from "./editor.component";
30
34
  import * as i2 from "./pipes";
@@ -32,58 +36,61 @@ import * as i3 from "./components/toolbar/toolbar.component";
32
36
  import * as i4 from "./components/toolbar-dropdown/toolbar-dropdown.component";
33
37
  import * as i5 from "./components/toolbar-group/toolbar-group.component";
34
38
  import * as i6 from "./components/toolbar-item/toolbar-item.component";
35
- import * as i7 from "./components/nav-split-line/nav-split-line.component";
36
- import * as i8 from "./components/text/text.component";
37
- import * as i9 from "./components/element/element.component";
38
- import * as i10 from "./components/placeholder/placeholder.component";
39
- import * as i11 from "./components/color-select/color-select.component";
40
- import * as i12 from "./plugins/color/toolbar-item.component";
41
- import * as i13 from "./components/contextmenu/contextmenu.component";
42
- import * as i14 from "./plugins/table/components/insert-mark/insert-mark.component";
43
- import * as i15 from "./components/table-select/table-select.component";
44
- import * as i16 from "./plugins/table/toolbar-item.component";
45
- import * as i17 from "./components/conversion-hint/conversion-hint.component";
46
- import * as i18 from "./plugins/vertical-align/toolbar-item.component";
47
- import * as i19 from "./plugins/image/image.component";
48
- import * as i20 from "./components/template/template.component";
49
- import * as i21 from "./plugins/hr/hr.component";
50
- import * as i22 from "./plugins/blockquote/blockquote.component";
51
- import * as i23 from "./plugins/todo-item/todo-item.component";
52
- import * as i24 from "./plugins/list/components/list-item.component";
53
- import * as i25 from "./plugins/list/components/bulleted-list.component";
54
- import * as i26 from "./plugins/list/components/numbered-list.component";
55
- import * as i27 from "./plugins/code/code.component";
56
- import * as i28 from "./plugins/link/link.component";
57
- import * as i29 from "./plugins/link/edit/link-edit.component";
58
- import * as i30 from "./plugins/link/hover/link-hover.component";
59
- import * as i31 from "./plugins/table/components/toolbar/table-toolbar.component";
60
- import * as i32 from "./plugins/table/components/table.component";
61
- import * as i33 from "./plugins/table/components/row/row.component";
62
- import * as i34 from "./plugins/table/components/td/td.component";
63
- import * as i35 from "@angular/common";
64
- import * as i36 from "slate-angular";
65
- import * as i37 from "@angular/forms";
66
- import * as i38 from "ngx-tethys/icon";
67
- import * as i39 from "ngx-tethys/avatar";
68
- import * as i40 from "ngx-tethys/nav";
69
- import * as i41 from "ngx-tethys/form";
70
- import * as i42 from "ngx-tethys/shared";
71
- import * as i43 from "ngx-tethys/list";
72
- import * as i44 from "ngx-tethys/tooltip";
73
- import * as i45 from "ngx-tethys/progress";
74
- import * as i46 from "ngx-tethys/autocomplete";
75
- import * as i47 from "ngx-tethys/action-menu";
76
- import * as i48 from "ngx-tethys/input";
77
- import * as i49 from "ngx-tethys/select";
78
- import * as i50 from "ngx-tethys/button";
79
- import * as i51 from "ngx-tethys/notify";
80
- import * as i52 from "ngx-tethys/alert";
81
- import * as i53 from "ng-codemirror";
82
- import * as i54 from "./components/column-resize/column-resize.module";
83
- export declare const COMPONENTS: (typeof TheColorSelectComponent | typeof TheContextMenuComponent | typeof TheToolbarGroupComponent | typeof TheTextComponent | typeof TheDefaultElementComponent | typeof TheColorToolbarItemComponent | typeof TheTableSelectComponent | typeof TheTableToolbarItemComponent | typeof TheVerticalToolbarItemComponent | typeof TheToolbarItemComponent | typeof NavSplitLineComponent | typeof TheToolbarDropdownComponent | typeof TheToolbarComponent | typeof ThePlaceholderComponent | typeof TheInsertMarkComponent)[];
84
- export declare const PLUGIN_COMPONENTS: (typeof TheTableToolbarComponent | typeof TheTableComponent | typeof TheImageComponent | typeof TheNumberedListComponent | typeof TheBulletedListComponent | typeof TheListItemComponent | typeof TheCodeComponent | typeof TheLinkHoverComponent | typeof TheLinkEditComponent | typeof TheLinkComponent | typeof TheTdComponent | typeof TheTemplateComponent)[];
39
+ import * as i7 from "./components/inline-toolbar/inline-toolbar.component";
40
+ import * as i8 from "./components/nav-split-line/nav-split-line.component";
41
+ import * as i9 from "./components/text/text.component";
42
+ import * as i10 from "./components/element/element.component";
43
+ import * as i11 from "./plugins/quick-insert/components/quick-insert.component";
44
+ import * as i12 from "./plugins/quick-insert/components/quick-toolbar/quick-toolbar.component";
45
+ import * as i13 from "./components/color-select/color-select.component";
46
+ import * as i14 from "./plugins/color/toolbar-item.component";
47
+ import * as i15 from "./components/contextmenu/contextmenu.component";
48
+ import * as i16 from "./plugins/table/components/insert-mark/insert-mark.component";
49
+ import * as i17 from "./components/table-select/table-select.component";
50
+ import * as i18 from "./plugins/table/toolbar-item.component";
51
+ import * as i19 from "./components/conversion-hint/conversion-hint.component";
52
+ import * as i20 from "./plugins/vertical-align/toolbar-item.component";
53
+ import * as i21 from "./plugins/image/image.component";
54
+ import * as i22 from "./components/template/template.component";
55
+ import * as i23 from "./plugins/hr/hr.component";
56
+ import * as i24 from "./plugins/blockquote/blockquote.component";
57
+ import * as i25 from "./plugins/todo-item/todo-item.component";
58
+ import * as i26 from "./plugins/list/components/list-item.component";
59
+ import * as i27 from "./plugins/list/components/bulleted-list.component";
60
+ import * as i28 from "./plugins/list/components/numbered-list.component";
61
+ import * as i29 from "./plugins/code/code.component";
62
+ import * as i30 from "./plugins/link/link.component";
63
+ import * as i31 from "./plugins/link/edit/link-edit.component";
64
+ import * as i32 from "./plugins/link/hover/link-hover.component";
65
+ import * as i33 from "./plugins/table/components/toolbar/table-toolbar.component";
66
+ import * as i34 from "./plugins/table/components/table.component";
67
+ import * as i35 from "./plugins/table/components/row/row.component";
68
+ import * as i36 from "./plugins/table/components/td/td.component";
69
+ import * as i37 from "./plugins/placeholder/placeholder.component";
70
+ import * as i38 from "@angular/common";
71
+ import * as i39 from "slate-angular";
72
+ import * as i40 from "@angular/forms";
73
+ import * as i41 from "ngx-tethys/icon";
74
+ import * as i42 from "ngx-tethys/avatar";
75
+ import * as i43 from "ngx-tethys/nav";
76
+ import * as i44 from "ngx-tethys/form";
77
+ import * as i45 from "ngx-tethys/shared";
78
+ import * as i46 from "ngx-tethys/list";
79
+ import * as i47 from "ngx-tethys/tooltip";
80
+ import * as i48 from "ngx-tethys/progress";
81
+ import * as i49 from "ngx-tethys/autocomplete";
82
+ import * as i50 from "ngx-tethys/action-menu";
83
+ import * as i51 from "ngx-tethys/input";
84
+ import * as i52 from "ngx-tethys/select";
85
+ import * as i53 from "ngx-tethys/button";
86
+ import * as i54 from "ngx-tethys/notify";
87
+ import * as i55 from "ngx-tethys/alert";
88
+ import * as i56 from "ng-codemirror";
89
+ import * as i57 from "./components/column-resize/column-resize.module";
90
+ export declare const COMPONENTS: (typeof TheColorSelectComponent | typeof TheContextMenuComponent | typeof TheToolbarGroupComponent | typeof TheTextComponent | typeof TheDefaultElementComponent | typeof TheConversionHintComponent | typeof TheColorToolbarItemComponent | typeof TheTableSelectComponent | typeof TheTableToolbarItemComponent | typeof TheVerticalToolbarItemComponent | typeof TheQuickToolbarComponent | typeof TheToolbarItemComponent | typeof NavSplitLineComponent | typeof TheToolbarDropdownComponent | typeof TheToolbarComponent | typeof TheQuickInsertComponent | typeof TheInsertMarkComponent | typeof TheInlineToolbarComponent)[];
91
+ export declare const PLUGIN_COMPONENTS: (typeof TheTableToolbarComponent | typeof TheTableComponent | typeof TheImageComponent | typeof TheNumberedListComponent | typeof TheBulletedListComponent | typeof TheListItemComponent | typeof TheCodeComponent | typeof TheLinkHoverComponent | typeof TheLinkEditComponent | typeof TheLinkComponent | typeof TheTdComponent | typeof TheTemplateComponent | typeof ThePlaceholderComponent)[];
85
92
  export declare class TheEditorModule {
86
93
  static ɵfac: i0.ɵɵFactoryDeclaration<TheEditorModule, never>;
87
- static ɵmod: i0.ɵɵNgModuleDeclaration<TheEditorModule, [typeof i1.TheEditorComponent, typeof i2.ElementStylePipe, typeof i2.ElementClassPipe, typeof i3.TheToolbarComponent, typeof i4.TheToolbarDropdownComponent, typeof i5.TheToolbarGroupComponent, typeof i6.TheToolbarItemComponent, typeof i7.NavSplitLineComponent, typeof i8.TheTextComponent, typeof i9.TheDefaultElementComponent, typeof i10.ThePlaceholderComponent, typeof i11.TheColorSelectComponent, typeof i12.TheColorToolbarItemComponent, typeof i13.TheContextMenuComponent, typeof i14.TheInsertMarkComponent, typeof i15.TheTableSelectComponent, typeof i16.TheTableToolbarItemComponent, typeof i17.TheConversionHintComponent, typeof i18.TheVerticalToolbarItemComponent, typeof i19.TheImageComponent, typeof i20.TheTemplateComponent, typeof i21.TheHrComponent, typeof i22.TheBlockquoteComponent, typeof i23.TheTodoItemComponent, typeof i24.TheListItemComponent, typeof i25.TheBulletedListComponent, typeof i26.TheNumberedListComponent, typeof i27.TheCodeComponent, typeof i28.TheLinkComponent, typeof i28.TheReadonlyLinkComponent, typeof i29.TheLinkEditComponent, typeof i30.TheLinkHoverComponent, typeof i31.TheTableToolbarComponent, typeof i32.TheTableComponent, typeof i33.TheTableRowComponent, typeof i34.TheTdComponent], [typeof i35.CommonModule, typeof i36.SlateModule, typeof i37.FormsModule, typeof i38.ThyIconModule, typeof i39.ThyAvatarModule, typeof i40.ThyNavModule, typeof i41.ThyFormModule, typeof i42.ThySharedModule, typeof i43.ThyListModule, typeof i44.ThyTooltipModule, typeof i45.ThyProgressModule, typeof i46.ThyAutocompleteModule, typeof i47.ThyActionMenuModule, typeof i48.ThyInputModule, typeof i49.ThySelectModule, typeof i50.ThyButtonModule, typeof i51.ThyNotifyModule, typeof i52.ThyAlertModule, typeof i53.CodemirrorModule, typeof i54.TheColumnSizeModule], [typeof i1.TheEditorComponent, typeof i3.TheToolbarComponent, typeof i4.TheToolbarDropdownComponent, typeof i6.TheToolbarItemComponent, typeof i9.TheDefaultElementComponent]>;
94
+ static ɵmod: i0.ɵɵNgModuleDeclaration<TheEditorModule, [typeof i1.TheEditorComponent, typeof i2.ElementStylePipe, typeof i2.ElementClassPipe, typeof i3.TheToolbarComponent, typeof i4.TheToolbarDropdownComponent, typeof i5.TheToolbarGroupComponent, typeof i6.TheToolbarItemComponent, typeof i7.TheInlineToolbarComponent, typeof i8.NavSplitLineComponent, typeof i9.TheTextComponent, typeof i10.TheDefaultElementComponent, typeof i11.TheQuickInsertComponent, typeof i12.TheQuickToolbarComponent, typeof i13.TheColorSelectComponent, typeof i14.TheColorToolbarItemComponent, typeof i15.TheContextMenuComponent, typeof i16.TheInsertMarkComponent, typeof i17.TheTableSelectComponent, typeof i18.TheTableToolbarItemComponent, typeof i19.TheConversionHintComponent, typeof i20.TheVerticalToolbarItemComponent, typeof i21.TheImageComponent, typeof i22.TheTemplateComponent, typeof i23.TheHrComponent, typeof i24.TheBlockquoteComponent, typeof i25.TheTodoItemComponent, typeof i26.TheListItemComponent, typeof i27.TheBulletedListComponent, typeof i28.TheNumberedListComponent, typeof i29.TheCodeComponent, typeof i30.TheLinkComponent, typeof i30.TheReadonlyLinkComponent, typeof i31.TheLinkEditComponent, typeof i32.TheLinkHoverComponent, typeof i33.TheTableToolbarComponent, typeof i34.TheTableComponent, typeof i35.TheTableRowComponent, typeof i36.TheTdComponent, typeof i37.ThePlaceholderComponent], [typeof i38.CommonModule, typeof i39.SlateModule, typeof i40.FormsModule, typeof i41.ThyIconModule, typeof i42.ThyAvatarModule, typeof i43.ThyNavModule, typeof i44.ThyFormModule, typeof i45.ThySharedModule, typeof i46.ThyListModule, typeof i47.ThyTooltipModule, typeof i48.ThyProgressModule, typeof i49.ThyAutocompleteModule, typeof i50.ThyActionMenuModule, typeof i51.ThyInputModule, typeof i52.ThySelectModule, typeof i53.ThyButtonModule, typeof i54.ThyNotifyModule, typeof i55.ThyAlertModule, typeof i56.CodemirrorModule, typeof i57.TheColumnSizeModule], [typeof i1.TheEditorComponent, typeof i3.TheToolbarComponent, typeof i4.TheToolbarDropdownComponent, typeof i6.TheToolbarItemComponent, typeof i10.TheDefaultElementComponent]>;
88
95
  static ɵinj: i0.ɵɵInjectorDeclaration<TheEditorModule>;
89
96
  }
@@ -51,6 +51,7 @@ export class TheColorSelectComponent {
51
51
  }
52
52
  }
53
53
  _selectColor(event, color) {
54
+ event.preventDefault();
54
55
  event.stopPropagation();
55
56
  if (this.option.specialColor && color === this.option.specialColor) {
56
57
  color = '';
@@ -81,7 +82,7 @@ export class TheColorSelectComponent {
81
82
  }
82
83
  }
83
84
  TheColorSelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.7", ngImport: i0, type: TheColorSelectComponent, deps: [{ token: i1.ThyPopoverRef }], target: i0.ɵɵFactoryTarget.Component });
84
- TheColorSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.7", type: TheColorSelectComponent, selector: "the-color-select", inputs: { selectedColor: "selectedColor", selectAction: "selectAction", showCustom: "showCustom", colors: "colors", option: "option" }, host: { listeners: { "document: mousedown": "handleDocumentMouseDown($event)", "mousedown": "handleMouseDown($event)", "keydown": "handleKeydown($event)" } }, ngImport: i0, template: "<div class=\"color-container\">\n <div class=\"colors\">\n <div *ngFor=\"let row of selectColors; let rowIndex = index\">\n <span\n class=\"color-item\"\n *ngFor=\"let _color of row.rowValue; let i = index\"\n [ngClass]=\"_color.classMaps\"\n (mousedown)=\"_selectColor($event, _color.value)\"\n >\n <span [ngStyle]=\"{ background: _color.value }\">\n <thy-icon\n thyIconName=\"check\"\n [ngStyle]=\"{ color: row.tickColor }\"\n ></thy-icon>\n </span>\n </span>\n </div>\n </div>\n <div\n *ngIf=\"option.showCustom\"\n class=\"select-color\"\n >\n <span\n class=\"color\"\n [ngStyle]=\"{ background: selectedColor }\"\n ></span>\n #\n <input\n thyInput\n maxlength=\"6\"\n (keydown.enter)=\"customInputColorEnter($event)\"\n onkeyup=\"value=value.replace(/[^0-9A-Fa-f]/g,'')\"\n class=\"value\"\n [(ngModel)]=\"customColor\"\n (ngModelChange)=\"colorChange(false)\"\n />\n </div>\n</div>\n", components: [{ type: i2.ThyIconComponent, selector: "thy-icon", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }], directives: [{ type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i5.ThyInputDirective, selector: "[thyInput]", inputs: ["thySize", "thyAutocomplete"] }, { type: i4.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
85
+ TheColorSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.7", type: TheColorSelectComponent, selector: "the-color-select", inputs: { selectedColor: "selectedColor", selectAction: "selectAction", showCustom: "showCustom", colors: "colors", option: "option" }, host: { listeners: { "document: mousedown": "handleDocumentMouseDown($event)", "mousedown": "handleMouseDown($event)", "keydown": "handleKeydown($event)" } }, ngImport: i0, template: "<div class=\"color-container\">\n <div class=\"colors\">\n <div *ngFor=\"let row of selectColors; let rowIndex = index\">\n <span\n class=\"color-item\"\n *ngFor=\"let _color of row.rowValue; let i = index\"\n [ngClass]=\"_color.classMaps\"\n (mousedown)=\"_selectColor($event, _color.value)\"\n >\n <span [ngStyle]=\"{ background: _color.value }\">\n <thy-icon thyIconName=\"check\" [ngStyle]=\"{ color: row.tickColor }\"></thy-icon>\n </span>\n </span>\n </div>\n </div>\n <div *ngIf=\"option.showCustom\" class=\"select-color\">\n <span class=\"color\" [ngStyle]=\"{ background: selectedColor }\"></span>\n #\n <input\n thyInput\n maxlength=\"6\"\n (keydown.enter)=\"customInputColorEnter($event)\"\n onkeyup=\"value=value.replace(/[^0-9A-Fa-f]/g,'')\"\n class=\"value\"\n [(ngModel)]=\"customColor\"\n (ngModelChange)=\"colorChange(false)\"\n />\n </div>\n</div>\n", components: [{ type: i2.ThyIconComponent, selector: "thy-icon", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }], directives: [{ type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i5.ThyInputDirective, selector: "[thyInput]", inputs: ["thySize", "thyAutocomplete"] }, { type: i4.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
85
86
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.7", ngImport: i0, type: TheColorSelectComponent, decorators: [{
86
87
  type: Component,
87
88
  args: [{
@@ -109,4 +110,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.7", ngImpor
109
110
  type: HostListener,
110
111
  args: ['keydown', ['$event']]
111
112
  }] } });
112
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3Itc2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3NyYy9jb21wb25lbnRzL2NvbG9yLXNlbGVjdC9jb2xvci1zZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3JjL2NvbXBvbmVudHMvY29sb3Itc2VsZWN0L2NvbG9yLXNlbGVjdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSx1QkFBdUIsRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7QUFTaEcsTUFBTSxPQUFPLHVCQUF1QjtJQXdCaEMsWUFBb0IsVUFBa0Q7UUFBbEQsZUFBVSxHQUFWLFVBQVUsQ0FBd0M7UUFuQjdELGVBQVUsR0FBRyxJQUFJLENBQUM7UUFVM0IsaUJBQVksR0FBOEUsRUFBRSxDQUFDO0lBU3BCLENBQUM7SUFOMUUsdUJBQXVCLENBQUMsS0FBaUI7UUFDckMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLE1BQXFCLENBQUMsRUFBRTtZQUNuRixJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQzNCO0lBQ0wsQ0FBQztJQUlELFFBQVE7UUFDSixJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDcEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNsRDtRQUNELElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBR0QsZUFBZSxDQUFDLEtBQWlCO1FBQzdCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBR0QsYUFBYSxDQUFDLEtBQWlCO1FBQzNCLEtBQUssQ0FB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Q0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDM0I7SUFDTCxDQUFDO0lBQ0QscUJBQXFCLENBQUMsS0FBb0I7UUFDdEMsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDNUIsQ0FBQzs7b0hBL0ZRLHVCQUF1Qjt3R0FBdkIsdUJBQXVCLCtWQ1RwQywydkNBc0NBOzJGRDdCYSx1QkFBdUI7a0JBTG5DLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLGtCQUFrQjtvQkFDNUIsV0FBVyxFQUFFLDZCQUE2QjtvQkFDMUMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07aUJBQ2xEO29HQUVZLGFBQWE7c0JBQXJCLEtBQUs7Z0JBRUcsWUFBWTtzQkFBcEIsS0FBSztnQkFFRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVHLE1BQU07c0JBQWQsS0FBSztnQkFFRyxNQUFNO3NCQUFkLEtBQUs7Z0JBU04sdUJBQXVCO3NCQUR0QixZQUFZO3VCQUFDLHFCQUFxQixFQUFFLENBQUMsUUFBUSxDQUFDO2dCQWlCL0MsZUFBZTtzQkFEZCxZQUFZO3VCQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFNckMsYUFBYTtzQkFEWixZQUFZO3VCQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIEhvc3RMaXN0ZW5lciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGh5UG9wb3ZlclJlZiB9IGZyb20gJ25neC10ZXRoeXMvcG9wb3Zlcic7XG5pbXBvcnQgeyBDb2xvclR5cGUsIENvbG9yU2VsZWN0T3B0aW9uIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL2NvbG9yLXNlbGVjdCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndGhlLWNvbG9yLXNlbGVjdCcsXG4gICAgdGVtcGxhdGVVcmw6ICdjb2xvci1zZWxlY3QuY29tcG9uZW50Lmh0bWwnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFRoZUNvbG9yU2VsZWN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBASW5wdXQoKSBzZWxlY3RlZENvbG9yOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBzZWxlY3RBY3Rpb246IChjb2xvcjogQ29sb3JUeXBlKSA9PiB2b2lkO1xuXG4gICAgQElucHV0KCkgc2hvd0N1c3RvbSA9IHRydWU7XG5cbiAgICBASW5wdXQoKSBjb2xvcnM6IHN0cmluZ1tdO1xuXG4gICAgQElucHV0KCkgb3B0aW9uOiBDb2xvclNlbGVjdE9wdGlvbjtcblxuICAgIGNvbG9yOiBzdHJpbmc7XG5cbiAgICBjdXN0b21Db2xvcjogc3RyaW5nO1xuXG4gICAgc2VsZWN0Q29sb3JzOiB7IHJvd1ZhbHVlOiB7IHZhbHVlOiBzdHJpbmc7IGNsYXNzTWFwczogb2JqZWN0IH1bXTsgdGlja0NvbG9yOiBzdHJpbmcgfVtdID0gW107XG5cbiAgICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDogbW91c2Vkb3duJywgWyckZXZlbnQnXSlcbiAgICBoYW5kbGVEb2N1bWVudE1vdXNlRG93bihldmVudDogTW91c2VFdmVudCkge1xuICAgICAgICBpZiAoIWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5jb2xvci1jb250YWluZXInKS5jb250YWlucyhldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpKSB7XG4gICAgICAgICAgICB0aGlzLnBvcG92ZXJSZWYuY2xvc2UoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcG9wb3ZlclJlZjogVGh5UG9wb3ZlclJlZjxUaGVDb2xvclNlbGVjdENvbXBvbmVudD4pIHt9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRDb2xvcikge1xuICAgICAgICAgICAgdGhpcy5jdXN0b21Db2xvciA9IHRoaXMuc2VsZWN0ZWRDb2xvci5zbGljZSgxKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmJ1aWxkQ29sb3JzKCk7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignbW91c2Vkb3duJywgWyckZXZlbnQnXSlcbiAgICBoYW5kbGVNb3VzZURvd24oZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pXG4gICAgaGFuZGxlS2V5ZG93bihldmVudDogTW91c2VFdmVudCkge1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG5cbiAgICBidWlsZENvbG9ycygpIHtcbiAgICAgICAgY29uc3Qgcm93cyA9IHBhcnNlSW50KCh0aGlzLmNvbG9ycy5sZW5ndGggLyB0aGlzLm9wdGlvbi5wZXJSb3dDb2xvck51bWJlcnMpLnRvRml4ZWQoMCksIDEwKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByb3dzOyBpKyspIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0Q29sb3JzLnB1c2goe1xuICAgICAgICAgICAgICAgIHJvd1ZhbHVlOiBbXG4gICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuY29sb3JzLnNsaWNlKGkgKiB0aGlzLm9wdGlvbi5wZXJSb3dDb2xvck51bWJlcnMsIChpICsgMSkgKiB0aGlzLm9wdGlvbi5wZXJSb3dDb2xvck51bWJlcnMpLm1hcChjb2xvciA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBjb2xvcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc01hcHM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQ6IGNvbG9yID09PSB0aGlzLnNlbGVjdGVkQ29sb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaXRlOiBjb2xvciA9PT0gJyNGRkZGRkYnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbXItMCc6IGkgPT09IHRoaXMub3B0aW9uLnBlclJvd0NvbG9yTnVtYmVycyAtIDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtYi0wJzogaSA9PT0gdGhpcy5zZWxlY3RDb2xvcnMubGVuZ3RoIC0gMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NwZWNpYWwtY29sb3InOiBjb2xvciA9PT0gdGhpcy5vcHRpb24uc3BlY2lhbENvbG9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIHRpY2tDb2xvcjogdGhpcy5vcHRpb24ucm93T3B0aW9ucyAmJiB0aGlzLm9wdGlvbi5yb3dPcHRpb25zW2kgKyAxXVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBfc2VsZWN0Q29sb3IoZXZlbnQ6IE1vdXNlRXZlbnQsIGNvbG9yOiBzdHJpbmcpIHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbi5zcGVjaWFsQ29sb3IgJiYgY29sb3IgPT09IHRoaXMub3B0aW9uLnNwZWNpYWxDb2xvcikge1xuICAgICAgICAgICAgY29sb3IgPSAnJztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNlbGVjdGVkQ29sb3IgPSBjb2xvcjtcbiAgICAgICAgdGhpcy5zZWxlY3RBY3Rpb24odGhpcy5zZWxlY3RlZENvbG9yKTtcbiAgICAgICAgdGhpcy5wb3BvdmVyUmVmLmNsb3NlKCk7XG4gICAgfVxuXG4gICAgY29sb3JDaGFuZ2UoaXNFbnRlcjogYm9vbGVhbikge1xuICAgICAgICB0aGlzLmN1c3RvbUNvbG9yID0gdGhpcy5jdXN0b21Db2xvci50b0xvY2FsZVVwcGVyQ2FzZSgpO1xuICAgICAgICB0aGlzLnNlbGVjdGVkQ29sb3IgPSAnIycgKyB0aGlzLmN1c3RvbUNvbG9yO1xuICAgICAgICBpZiAodGhpcy5jdXN0b21Db2xvci5sZW5ndGggPT09IDMpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDb2xvciA9ICcjJyArIHRoaXMuY3VzdG9tQ29sb3IucmVwbGFjZSgvKC4pL2csICckMSQxJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRDb2xvci5sZW5ndGggPT09IDcgJiYgdGhpcy5zZWxlY3RlZENvbG9yICE9PSB0aGlzLm9wdGlvbi5zcGVjaWFsQ29sb3IpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0Q29sb3JzID0gW107XG4gICAgICAgICAgICB0aGlzLmJ1aWxkQ29sb3JzKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzRW50ZXIpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0QWN0aW9uKHRoaXMuc2VsZWN0ZWRDb2xvcik7XG4gICAgICAgICAgICB0aGlzLnBvcG92ZXJSZWYuY2xvc2UoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjdXN0b21JbnB1dENvbG9yRW50ZXIoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIHRoaXMuc2VsZWN0QWN0aW9uKHRoaXMuc2VsZWN0ZWRDb2xvcik7XG4gICAgICAgIHRoaXMucG9wb3ZlclJlZi5jbG9zZSgpO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjb2xvci1jb250YWluZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sb3JzXCI+XG4gICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHJvdyBvZiBzZWxlY3RDb2xvcnM7IGxldCByb3dJbmRleCA9IGluZGV4XCI+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY29sb3ItaXRlbVwiXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IF9jb2xvciBvZiByb3cucm93VmFsdWU7IGxldCBpID0gaW5kZXhcIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIl9jb2xvci5jbGFzc01hcHNcIlxuICAgICAgICAgICAgICAgIChtb3VzZWRvd24pPVwiX3NlbGVjdENvbG9yKCRldmVudCwgX2NvbG9yLnZhbHVlKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHNwYW4gW25nU3R5bGVdPVwieyBiYWNrZ3JvdW5kOiBfY29sb3IudmFsdWUgfVwiPlxuICAgICAgICAgICAgICAgICAgICA8dGh5LWljb25cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoeUljb25OYW1lPVwiY2hlY2tcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwieyBjb2xvcjogcm93LnRpY2tDb2xvciB9XCJcbiAgICAgICAgICAgICAgICAgICAgPjwvdGh5LWljb24+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwib3B0aW9uLnNob3dDdXN0b21cIlxuICAgICAgICBjbGFzcz1cInNlbGVjdC1jb2xvclwiXG4gICAgPlxuICAgICAgICA8c3BhblxuICAgICAgICAgICAgY2xhc3M9XCJjb2xvclwiXG4gICAgICAgICAgICBbbmdTdHlsZV09XCJ7IGJhY2tncm91bmQ6IHNlbGVjdGVkQ29sb3IgfVwiXG4gICAgICAgID48L3NwYW4+XG4gICAgICAgICNcbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgICB0aHlJbnB1dFxuICAgICAgICAgICAgbWF4bGVuZ3RoPVwiNlwiXG4gICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJjdXN0b21JbnB1dENvbG9yRW50ZXIoJGV2ZW50KVwiXG4gICAgICAgICAgICBvbmtleXVwPVwidmFsdWU9dmFsdWUucmVwbGFjZSgvW14wLTlBLUZhLWZdL2csJycpXCJcbiAgICAgICAgICAgIGNsYXNzPVwidmFsdWVcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjdXN0b21Db2xvclwiXG4gICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJjb2xvckNoYW5nZShmYWxzZSlcIlxuICAgICAgICAvPlxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
113
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3Itc2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3NyYy9jb21wb25lbnRzL2NvbG9yLXNlbGVjdC9jb2xvci1zZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3JjL2NvbXBvbmVudHMvY29sb3Itc2VsZWN0L2NvbG9yLXNlbGVjdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSx1QkFBdUIsRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7QUFTaEcsTUFBTSxPQUFPLHVCQUF1QjtJQXdCaEMsWUFBb0IsVUFBa0Q7UUFBbEQsZUFBVSxHQUFWLFVBQVUsQ0FBd0M7UUFuQjdELGVBQVUsR0FBRyxJQUFJLENBQUM7UUFVM0IsaUJBQVksR0FBOEUsRUFBRSxDQUFDO0lBU3BCLENBQUM7SUFOMUUsdUJBQXVCLENBQUMsS0FBaUI7UUFDckMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLE1BQXFCLENBQUMsRUFBRTtZQUNuRixJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQzNCO0lBQ0wsQ0FBQztJQUlELFFBQVE7UUFDSixJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDcEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNsRDtRQUNELElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBR0QsZUFBZSxDQUFDLEtBQWlCO1FBQzdCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBR0QsYUFBYSxDQUFDLEtBQWlCO1FBQzNCLEtBQUssQ0FB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Q0FBQyxhQUFhLENBQUMsQ0FBQztZQUN0QyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQzNCO0lBQ0wsQ0FBQztJQUNELHFCQUFxQixDQUFDLEtBQW9CO1FBQ3RDLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzVCLENBQUM7O29IQWhHUSx1QkFBdUI7d0dBQXZCLHVCQUF1QiwrVkNUcEMsdW5DQTZCQTsyRkRwQmEsdUJBQXVCO2tCQUxuQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxrQkFBa0I7b0JBQzVCLFdBQVcsRUFBRSw2QkFBNkI7b0JBQzFDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2lCQUNsRDtvR0FFWSxhQUFhO3NCQUFyQixLQUFLO2dCQUVHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBRUcsVUFBVTtzQkFBbEIsS0FBSztnQkFFRyxNQUFNO3NCQUFkLEtBQUs7Z0JBRUcsTUFBTTtzQkFBZCxLQUFLO2dCQVNOLHVCQUF1QjtzQkFEdEIsWUFBWTt1QkFBQyxxQkFBcUIsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFpQi9DLGVBQWU7c0JBRGQsWUFBWTt1QkFBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBTXJDLGFBQWE7c0JBRFosWUFBWTt1QkFBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBIb3N0TGlzdGVuZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRoeVBvcG92ZXJSZWYgfSBmcm9tICduZ3gtdGV0aHlzL3BvcG92ZXInO1xuaW1wb3J0IHsgQ29sb3JUeXBlLCBDb2xvclNlbGVjdE9wdGlvbiB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9jb2xvci1zZWxlY3QnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3RoZS1jb2xvci1zZWxlY3QnLFxuICAgIHRlbXBsYXRlVXJsOiAnY29sb3Itc2VsZWN0LmNvbXBvbmVudC5odG1sJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBUaGVDb2xvclNlbGVjdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgQElucHV0KCkgc2VsZWN0ZWRDb2xvcjogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgc2VsZWN0QWN0aW9uOiAoY29sb3I6IENvbG9yVHlwZSkgPT4gdm9pZDtcblxuICAgIEBJbnB1dCgpIHNob3dDdXN0b20gPSB0cnVlO1xuXG4gICAgQElucHV0KCkgY29sb3JzOiBzdHJpbmdbXTtcblxuICAgIEBJbnB1dCgpIG9wdGlvbjogQ29sb3JTZWxlY3RPcHRpb247XG5cbiAgICBjb2xvcjogc3RyaW5nO1xuXG4gICAgY3VzdG9tQ29sb3I6IHN0cmluZztcblxuICAgIHNlbGVjdENvbG9yczogeyByb3dWYWx1ZTogeyB2YWx1ZTogc3RyaW5nOyBjbGFzc01hcHM6IG9iamVjdCB9W107IHRpY2tDb2xvcjogc3RyaW5nIH1bXSA9IFtdO1xuXG4gICAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6IG1vdXNlZG93bicsIFsnJGV2ZW50J10pXG4gICAgaGFuZGxlRG9jdW1lbnRNb3VzZURvd24oZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgaWYgKCFkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuY29sb3ItY29udGFpbmVyJykuY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KSkge1xuICAgICAgICAgICAgdGhpcy5wb3BvdmVyUmVmLmNsb3NlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHBvcG92ZXJSZWY6IFRoeVBvcG92ZXJSZWY8VGhlQ29sb3JTZWxlY3RDb21wb25lbnQ+KSB7fVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkQ29sb3IpIHtcbiAgICAgICAgICAgIHRoaXMuY3VzdG9tQ29sb3IgPSB0aGlzLnNlbGVjdGVkQ29sb3Iuc2xpY2UoMSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5idWlsZENvbG9ycygpO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ21vdXNlZG93bicsIFsnJGV2ZW50J10pXG4gICAgaGFuZGxlTW91c2VEb3duKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nLCBbJyRldmVudCddKVxuICAgIGhhbmRsZUtleWRvd24oZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuXG4gICAgYnVpbGRDb2xvcnMoKSB7XG4gICAgICAgIGNvbnN0IHJvd3MgPSBwYXJzZUludCgodGhpcy5jb2xvcnMubGVuZ3RoIC8gdGhpcy5vcHRpb24ucGVyUm93Q29sb3JOdW1iZXJzKS50b0ZpeGVkKDApLCAxMCk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcm93czsgaSsrKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdENvbG9ycy5wdXNoKHtcbiAgICAgICAgICAgICAgICByb3dWYWx1ZTogW1xuICAgICAgICAgICAgICAgICAgICAuLi50aGlzLmNvbG9ycy5zbGljZShpICogdGhpcy5vcHRpb24ucGVyUm93Q29sb3JOdW1iZXJzLCAoaSArIDEpICogdGhpcy5vcHRpb24ucGVyUm93Q29sb3JOdW1iZXJzKS5tYXAoY29sb3IgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogY29sb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NNYXBzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkOiBjb2xvciA9PT0gdGhpcy5zZWxlY3RlZENvbG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGl0ZTogY29sb3IgPT09ICcjRkZGRkZGJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21yLTAnOiBpID09PSB0aGlzLm9wdGlvbi5wZXJSb3dDb2xvck51bWJlcnMgLSAxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWItMCc6IGkgPT09IHRoaXMuc2VsZWN0Q29sb3JzLmxlbmd0aCAtIDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzcGVjaWFsLWNvbG9yJzogY29sb3IgPT09IHRoaXMub3B0aW9uLnNwZWNpYWxDb2xvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB0aWNrQ29sb3I6IHRoaXMub3B0aW9uLnJvd09wdGlvbnMgJiYgdGhpcy5vcHRpb24ucm93T3B0aW9uc1tpICsgMV1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgX3NlbGVjdENvbG9yKGV2ZW50OiBNb3VzZUV2ZW50LCBjb2xvcjogc3RyaW5nKSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBpZiAodGhpcy5vcHRpb24uc3BlY2lhbENvbG9yICYmIGNvbG9yID09PSB0aGlzLm9wdGlvbi5zcGVjaWFsQ29sb3IpIHtcbiAgICAgICAgICAgIGNvbG9yID0gJyc7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZWxlY3RlZENvbG9yID0gY29sb3I7XG4gICAgICAgIHRoaXMuc2VsZWN0QWN0aW9uKHRoaXMuc2VsZWN0ZWRDb2xvcik7XG4gICAgICAgIHRoaXMucG9wb3ZlclJlZi5jbG9zZSgpO1xuICAgIH1cblxuICAgIGNvbG9yQ2hhbmdlKGlzRW50ZXI6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5jdXN0b21Db2xvciA9IHRoaXMuY3VzdG9tQ29sb3IudG9Mb2NhbGVVcHBlckNhc2UoKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZENvbG9yID0gJyMnICsgdGhpcy5jdXN0b21Db2xvcjtcbiAgICAgICAgaWYgKHRoaXMuY3VzdG9tQ29sb3IubGVuZ3RoID09PSAzKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkQ29sb3IgPSAnIycgKyB0aGlzLmN1c3RvbUNvbG9yLnJlcGxhY2UoLyguKS9nLCAnJDEkMScpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkQ29sb3IubGVuZ3RoID09PSA3ICYmIHRoaXMuc2VsZWN0ZWRDb2xvciAhPT0gdGhpcy5vcHRpb24uc3BlY2lhbENvbG9yKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdENvbG9ycyA9IFtdO1xuICAgICAgICAgICAgdGhpcy5idWlsZENvbG9ycygpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc0VudGVyKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdEFjdGlvbih0aGlzLnNlbGVjdGVkQ29sb3IpO1xuICAgICAgICAgICAgdGhpcy5wb3BvdmVyUmVmLmNsb3NlKCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgY3VzdG9tSW5wdXRDb2xvckVudGVyKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB0aGlzLnNlbGVjdEFjdGlvbih0aGlzLnNlbGVjdGVkQ29sb3IpO1xuICAgICAgICB0aGlzLnBvcG92ZXJSZWYuY2xvc2UoKTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiY29sb3ItY29udGFpbmVyXCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbG9yc1wiPlxuICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCByb3cgb2Ygc2VsZWN0Q29sb3JzOyBsZXQgcm93SW5kZXggPSBpbmRleFwiPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICBjbGFzcz1cImNvbG9yLWl0ZW1cIlxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBfY29sb3Igb2Ygcm93LnJvd1ZhbHVlOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJfY29sb3IuY2xhc3NNYXBzXCJcbiAgICAgICAgICAgICAgICAobW91c2Vkb3duKT1cIl9zZWxlY3RDb2xvcigkZXZlbnQsIF9jb2xvci52YWx1ZSlcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuIFtuZ1N0eWxlXT1cInsgYmFja2dyb3VuZDogX2NvbG9yLnZhbHVlIH1cIj5cbiAgICAgICAgICAgICAgICAgICAgPHRoeS1pY29uIHRoeUljb25OYW1lPVwiY2hlY2tcIiBbbmdTdHlsZV09XCJ7IGNvbG9yOiByb3cudGlja0NvbG9yIH1cIj48L3RoeS1pY29uPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cIm9wdGlvbi5zaG93Q3VzdG9tXCIgY2xhc3M9XCJzZWxlY3QtY29sb3JcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJjb2xvclwiIFtuZ1N0eWxlXT1cInsgYmFja2dyb3VuZDogc2VsZWN0ZWRDb2xvciB9XCI+PC9zcGFuPlxuICAgICAgICAjXG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgdGh5SW5wdXRcbiAgICAgICAgICAgIG1heGxlbmd0aD1cIjZcIlxuICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwiY3VzdG9tSW5wdXRDb2xvckVudGVyKCRldmVudClcIlxuICAgICAgICAgICAgb25rZXl1cD1cInZhbHVlPXZhbHVlLnJlcGxhY2UoL1teMC05QS1GYS1mXS9nLCcnKVwiXG4gICAgICAgICAgICBjbGFzcz1cInZhbHVlXCJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY3VzdG9tQ29sb3JcIlxuICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiY29sb3JDaGFuZ2UoZmFsc2UpXCJcbiAgICAgICAgLz5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -0,0 +1,136 @@
1
+ import { Component, Input, ChangeDetectionStrategy, ViewChild } from '@angular/core';
2
+ import { merge, fromEvent, Subject } from 'rxjs';
3
+ import { takeUntil, filter, debounceTime } from 'rxjs/operators';
4
+ import { Range as slateRange, Editor } from 'slate';
5
+ import { AngularEditor } from 'slate-angular';
6
+ import * as TheQueries from '../../queries';
7
+ import { THE_INLINE_TOOLBAR_TYPES } from '../../constants';
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "@angular/cdk/overlay";
10
+ import * as i2 from "../toolbar/toolbar.component";
11
+ export class TheInlineToolbarComponent {
12
+ constructor(elementRef, scrollDispatcher, cdr, ngZone) {
13
+ this.elementRef = elementRef;
14
+ this.scrollDispatcher = scrollDispatcher;
15
+ this.cdr = cdr;
16
+ this.ngZone = ngZone;
17
+ this.destroy$ = new Subject();
18
+ }
19
+ ngOnInit() {
20
+ this.scrollDispatcher
21
+ .scrolled()
22
+ .pipe(takeUntil(this.destroy$))
23
+ .subscribe(() => {
24
+ this.updateInlineToolbar();
25
+ this.cdr.detectChanges();
26
+ });
27
+ this.ngZone.runOutsideAngular(() => {
28
+ merge(fromEvent(document, 'mouseup').pipe(filter((e) => e.button !== 2)), fromEvent(document, 'keyup').pipe(filter((e) => !e.shiftKey)))
29
+ .pipe(debounceTime(200), takeUntil(this.destroy$))
30
+ .subscribe(() => {
31
+ var _a;
32
+ this.updateInlineToolbar();
33
+ (_a = this.inlineToolbar) === null || _a === void 0 ? void 0 : _a.statusChange(this.editor);
34
+ this.cdr.detectChanges();
35
+ });
36
+ });
37
+ }
38
+ updateInlineToolbar() {
39
+ const inlineToolbar = this.elementRef.nativeElement.firstElementChild;
40
+ if (!this.editor.selection) {
41
+ inlineToolbar.removeAttribute('style');
42
+ return;
43
+ }
44
+ const anchorBlock = TheQueries.anchorBlock(this.editor);
45
+ if (!inlineToolbar || !anchorBlock) {
46
+ return;
47
+ }
48
+ const { editor } = this;
49
+ const { selection } = editor;
50
+ if (!selection ||
51
+ !AngularEditor.isFocused(editor) ||
52
+ slateRange.isCollapsed(selection) ||
53
+ Editor.string(editor, selection) === '') {
54
+ inlineToolbar.removeAttribute('style');
55
+ return;
56
+ }
57
+ if (!THE_INLINE_TOOLBAR_TYPES.includes(anchorBlock.type)) {
58
+ return;
59
+ }
60
+ const native = window.getSelection();
61
+ if (native.type !== 'None') {
62
+ const range = native.getRangeAt(0);
63
+ this.updatePosition(inlineToolbar, range);
64
+ }
65
+ }
66
+ updatePosition(toolbarElement, range) {
67
+ let boundary = range.getBoundingClientRect();
68
+ if (!boundary || (boundary.height === 0 && boundary.width === 0 && range.startContainer === range.endContainer)) {
69
+ if (range.startContainer.nodeType === 1 && range.startContainer.querySelector('img')) {
70
+ boundary = range.startContainer.querySelector('img').getBoundingClientRect();
71
+ }
72
+ else {
73
+ boundary = range.startContainer.getBoundingClientRect();
74
+ }
75
+ }
76
+ const editableRect = document.querySelector('.the-editor-typo').getBoundingClientRect();
77
+ const toolbarHeight = toolbarElement.offsetHeight;
78
+ const toolbarWidth = toolbarElement.offsetWidth;
79
+ const halfOffsetWidth = toolbarWidth / 2;
80
+ const defaultLeft = -halfOffsetWidth;
81
+ const offsetLeft = boundary.left - editableRect.left;
82
+ const isTopLeft = offsetLeft - 30 > halfOffsetWidth; // 30: editable padding left
83
+ const isTopRight = editableRect.width - offsetLeft - boundary.width / 2 < halfOffsetWidth;
84
+ const positions = {};
85
+ positions.top = boundary.top - toolbarHeight;
86
+ positions.right = 'initial';
87
+ positions.left = boundary.left;
88
+ if (isTopLeft) {
89
+ positions.left = boundary.left + boundary.width / 2 + defaultLeft;
90
+ }
91
+ if (isTopRight) {
92
+ positions.left = boundary.right - toolbarWidth;
93
+ }
94
+ for (let key of Object.keys(positions)) {
95
+ toolbarElement.style[key] = positions[key] + (isNaN(positions[key]) ? '' : 'px');
96
+ }
97
+ toolbarElement.style.opacity = '1';
98
+ }
99
+ ngOnDestroy() {
100
+ this.destroy$.next();
101
+ this.destroy$.complete();
102
+ }
103
+ }
104
+ TheInlineToolbarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.7", ngImport: i0, type: TheInlineToolbarComponent, deps: [{ token: i0.ElementRef }, { token: i1.ScrollDispatcher }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
105
+ TheInlineToolbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.7", type: TheInlineToolbarComponent, selector: "the-inline-toolbar", inputs: { editor: "editor", toolbarItems: "toolbarItems" }, host: { properties: { "class.hide": "toolbarItems.length === 0" } }, viewQueries: [{ propertyName: "inlineToolbar", first: true, predicate: ["inlineToolbar"], descendants: true }], ngImport: i0, template: `<the-toolbar
106
+ #inlineToolbar
107
+ class="the-inline-toolbar"
108
+ [editor]="editor"
109
+ [toolbarItems]="toolbarItems"
110
+ [isMore]="false"
111
+ ></the-toolbar> `, isInline: true, components: [{ type: i2.TheToolbarComponent, selector: "the-toolbar", inputs: ["editor", "toolbarItems", "align", "isMore", "afterTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
112
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.7", ngImport: i0, type: TheInlineToolbarComponent, decorators: [{
113
+ type: Component,
114
+ args: [{
115
+ selector: 'the-inline-toolbar',
116
+ template: `<the-toolbar
117
+ #inlineToolbar
118
+ class="the-inline-toolbar"
119
+ [editor]="editor"
120
+ [toolbarItems]="toolbarItems"
121
+ [isMore]="false"
122
+ ></the-toolbar> `,
123
+ host: {
124
+ '[class.hide]': 'toolbarItems.length === 0'
125
+ },
126
+ changeDetection: ChangeDetectionStrategy.OnPush
127
+ }]
128
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.ScrollDispatcher }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }]; }, propDecorators: { editor: [{
129
+ type: Input
130
+ }], toolbarItems: [{
131
+ type: Input
132
+ }], inlineToolbar: [{
133
+ type: ViewChild,
134
+ args: ['inlineToolbar']
135
+ }] } });
136
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5saW5lLXRvb2xiYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3JjL2NvbXBvbmVudHMvaW5saW5lLXRvb2xiYXIvaW5saW5lLXRvb2xiYXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBSVQsS0FBSyxFQUdMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxLQUFLLElBQUksVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUNwRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlDLE9BQU8sS0FBSyxVQUFVLE1BQU0sZUFBZSxDQUFDO0FBQzVDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7O0FBa0IzRCxNQUFNLE9BQU8seUJBQXlCO0lBT2xDLFlBQ1ksVUFBMkIsRUFDM0IsZ0JBQWtDLEVBQ2xDLEdBQXNCLEVBQ3RCLE1BQWM7UUFIZCxlQUFVLEdBQVYsVUFBVSxDQUFpQjtRQUMzQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ3RCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFOMUIsYUFBUSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7SUFPdEIsQ0FBQztJQUVKLFFBQVE7UUFDSixJQUFJLENBQUMsZ0JBQWdCO2FBQ2hCLFFBQVEsRUFBRTthQUNWLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFD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ICAgIE9uSW5pdCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgSW5wdXQsXG4gICAgRWxlbWVudFJlZixcbiAgICBOZ1pvbmUsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2Nyb2xsRGlzcGF0Y2hlciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IG1lcmdlLCBmcm9tRXZlbnQsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCwgZmlsdGVyLCBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBSYW5nZSBhcyBzbGF0ZVJhbmdlLCBFZGl0b3IgfSBmcm9tICdzbGF0ZSc7XG5pbXBvcnQgeyBBbmd1bGFyRWRpdG9yIH0gZnJvbSAnc2xhdGUtYW5ndWxhcic7XG5pbXBvcnQgKiBhcyBUaGVRdWVyaWVzIGZyb20gJy4uLy4uL3F1ZXJpZXMnO1xuaW1wb3J0IHsgVEhFX0lOTElORV9UT09MQkFSX1RZUEVTIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IFRvb2xiYXJJdGVtIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBUaGVUb29sYmFyQ29tcG9uZW50IH0gZnJvbSAnLi4vdG9vbGJhci90b29sYmFyLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndGhlLWlubGluZS10b29sYmFyJyxcbiAgICB0ZW1wbGF0ZTogYDx0aGUtdG9vbGJhclxuICAgICAgICAjaW5saW5lVG9vbGJhclxuICAgICAgICBjbGFzcz1cInRoZS1pbmxpbmUtdG9vbGJhclwiXG4gICAgICAgIFtlZGl0b3JdPVwiZWRpdG9yXCJcbiAgICAgICAgW3Rvb2xiYXJJdGVtc109XCJ0b29sYmFySXRlbXNcIlxuICAgICAgICBbaXNNb3JlXT1cImZhbHNlXCJcbiAgICA+PC90aGUtdG9vbGJhcj4gYCxcbiAgICBob3N0OiB7XG4gICAgICAgICdbY2xhc3MuaGlkZV0nOiAndG9vbGJhckl0ZW1zLmxlbmd0aCA9PT0gMCdcbiAgICB9LFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFRoZUlubGluZVRvb2xiYXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgQElucHV0KCkgZWRpdG9yOiBFZGl0b3I7XG4gICAgQElucHV0KCkgdG9vbGJhckl0ZW1zOiBUb29sYmFySXRlbVtdO1xuICAgIEBWaWV3Q2hpbGQoJ2lubGluZVRvb2xiYXInKSBpbmxpbmVUb29sYmFyOiBUaGVUb29sYmFyQ29tcG9uZW50O1xuXG4gICAgZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZjxhbnk+LFxuICAgICAgICBwcml2YXRlIHNjcm9sbERpc3BhdGNoZXI6IFNjcm9sbERpc3BhdGNoZXIsXG4gICAgICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZVxuICAgICkge31cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLnNjcm9sbERpc3BhdGNoZXJcbiAgICAgICAgICAgIC5zY3JvbGxlZCgpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUlubGluZVRvb2xiYXIoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICAgICAgbWVyZ2UoXG4gICAgICAgICAgICAgICAgZnJvbUV2ZW50KGRvY3VtZW50LCAnbW91c2V1cCcpLnBpcGUoZmlsdGVyKChlOiBNb3VzZUV2ZW50KSA9PiBlLmJ1dHRvbiAhPT0gMikpLFxuICAgICAgICAgICAgICAgIGZyb21FdmVudChkb2N1bWVudCwgJ2tleXVwJykucGlwZShmaWx0ZXIoKGU6IEtleWJvYXJkRXZlbnQpID0+ICFlLnNoaWZ0S2V5KSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAucGlwZShkZWJvdW5jZVRpbWUoMjAwKSwgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUlubGluZVRvb2xiYXIoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmxpbmVUb29sYmFyPy5zdGF0dXNDaGFuZ2UodGhpcy5lZGl0b3IpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHVwZGF0ZUlubGluZVRvb2xiYXIoKSB7XG4gICAgICAgIGNvbnN0IGlubGluZVRvb2xiYXIgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5maXJzdEVsZW1lbnRDaGlsZDtcblxuICAgICAgICBpZiAoIXRoaXMuZWRpdG9yLnNlbGVjdGlvbikge1xuICAgICAgICAgICAgaW5saW5lVG9vbGJhci5yZW1vdmVBdHRyaWJ1dGUoJ3N0eWxlJyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYW5jaG9yQmxvY2sgPSBUaGVRdWVyaWVzLmFuY2hvckJsb2NrKHRoaXMuZWRpdG9yKTtcbiAgICAgICAgaWYgKCFpbmxpbmVUb29sYmFyIHx8ICFhbmNob3JCbG9jaykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHsgZWRpdG9yIH0gPSB0aGlzO1xuICAgICAgICBjb25zdCB7IHNlbGVjdGlvbiB9ID0gZWRpdG9yO1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgICFzZWxlY3Rpb24gfHxcbiAgICAgICAgICAgICFBbmd1bGFyRWRpdG9yLmlzRm9jdXNlZChlZGl0b3IpIHx8XG4gICAgICAgICAgICBzbGF0ZVJhbmdlLmlzQ29sbGFwc2VkKHNlbGVjdGlvbikgfHxcbiAgICAgICAgICAgIEVkaXRvci5zdHJpbmcoZWRpdG9yLCBzZWxlY3Rpb24pID09PSAnJ1xuICAgICAgICApIHtcbiAgICAgICAgICAgIGlubGluZVRvb2xiYXIucmVtb3ZlQXR0cmlidXRlKCdzdHlsZScpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFUSEVfSU5MSU5FX1RPT0xCQVJfVFlQRVMuaW5jbHVkZXMoYW5jaG9yQmxvY2sudHlwZSkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBuYXRpdmUgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG4gICAgICAgIGlmIChuYXRpdmUudHlwZSAhPT0gJ05vbmUnKSB7XG4gICAgICAgICAgICBjb25zdCByYW5nZSA9IG5hdGl2ZS5nZXRSYW5nZUF0KDApO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVQb3NpdGlvbihpbmxpbmVUb29sYmFyLCByYW5nZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB1cGRhdGVQb3NpdGlvbih0b29sYmFyRWxlbWVudDogSFRNTEVsZW1lbnQsIHJhbmdlKSB7XG4gICAgICAgIGxldCBib3VuZGFyeSA9IHJhbmdlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgICAgIGlmICghYm91bmRhcnkgfHwgKGJvdW5kYXJ5LmhlaWdodCA9PT0gMCAmJiBib3VuZGFyeS53aWR0aCA9PT0gMCAmJiByYW5nZS5zdGFydENvbnRhaW5lciA9PT0gcmFuZ2UuZW5kQ29udGFpbmVyKSkge1xuICAgICAgICAgICAgaWYgKHJhbmdlLnN0YXJ0Q29udGFpbmVyLm5vZGVUeXBlID09PSAxICYmIHJhbmdlLnN0YXJ0Q29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoJ2ltZycpKSB7XG4gICAgICAgICAgICAgICAgYm91bmRhcnkgPSByYW5nZS5zdGFydENvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCdpbWcnKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgYm91bmRhcnkgPSByYW5nZS5zdGFydENvbnRhaW5lci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCBlZGl0YWJsZVJlY3QgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcudGhlLWVkaXRvci10eXBvJykuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGNvbnN0IHRvb2xiYXJIZWlnaHQgPSB0b29sYmFyRWxlbWVudC5vZmZzZXRIZWlnaHQ7XG4gICAgICAgIGNvbnN0IHRvb2xiYXJXaWR0aCA9IHRvb2xiYXJFbGVtZW50Lm9mZnNldFdpZHRoO1xuICAgICAgICBjb25zdCBoYWxmT2Zmc2V0V2lkdGggPSB0b29sYmFyV2lkdGggLyAyO1xuICAgICAgICBjb25zdCBkZWZhdWx0TGVmdCA9IC1oYWxmT2Zmc2V0V2lkdGg7XG4gICAgICAgIGNvbnN0IG9mZnNldExlZnQgPSBib3VuZGFyeS5sZWZ0IC0gZWRpdGFibGVSZWN0LmxlZnQ7XG4gICAgICAgIGNvbnN0IGlzVG9wTGVmdCA9IG9mZnNldExlZnQgLSAzMCA+IGhhbGZPZmZzZXRXaWR0aDsgLy8gMzA6IGVkaXRhYmxlIHBhZGRpbmcgbGVmdFxuICAgICAgICBjb25zdCBpc1RvcFJpZ2h0ID0gZWRpdGFibGVSZWN0LndpZHRoIC0gb2Zmc2V0TGVmdCAtIGJvdW5kYXJ5LndpZHRoIC8gMiA8IGhhbGZPZmZzZXRXaWR0aDtcbiAgICAgICAgY29uc3QgcG9zaXRpb25zOiBhbnkgPSB7fTtcblxuICAgICAgICBwb3NpdGlvbnMudG9wID0gYm91bmRhcnkudG9wIC0gdG9vbGJhckhlaWdodDtcbiAgICAgICAgcG9zaXRpb25zLnJpZ2h0ID0gJ2luaXRpYWwnO1xuICAgICAgICBwb3NpdGlvbnMubGVmdCA9IGJvdW5kYXJ5LmxlZnQ7XG5cbiAgICAgICAgaWYgKGlzVG9wTGVmdCkge1xuICAgICAgICAgICAgcG9zaXRpb25zLmxlZnQgPSBib3VuZGFyeS5sZWZ0ICsgYm91bmRhcnkud2lkdGggLyAyICsgZGVmYXVsdExlZnQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNUb3BSaWdodCkge1xuICAgICAgICAgICAgcG9zaXRpb25zLmxlZnQgPSBib3VuZGFyeS5yaWdodCAtIHRvb2xiYXJXaWR0aDtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAobGV0IGtleSBvZiBPYmplY3Qua2V5cyhwb3NpdGlvbnMpKSB7XG4gICAgICAgICAgICB0b29sYmFyRWxlbWVudC5zdHlsZVtrZXldID0gcG9zaXRpb25zW2tleV0gKyAoaXNOYU4ocG9zaXRpb25zW2tleV0pID8gJycgOiAncHgnKTtcbiAgICAgICAgfVxuICAgICAgICB0b29sYmFyRWxlbWVudC5zdHlsZS5vcGFjaXR5ID0gJzEnO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICAgIH1cbn1cbiJdfQ==