@worktile/theia 1.2.9 → 1.2.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/worktile-theia.umd.js +731 -133
- package/bundles/worktile-theia.umd.js.map +1 -1
- package/components/inline-toolbar/inline-toolbar.component.d.ts +24 -0
- package/components/inline-toolbar/inline-toolbar.component.scss +18 -0
- package/components/nav-split-line/nav-split-line.component.d.ts +6 -1
- package/components/toolbar-dropdown/toolbar-dropdown.component.scss +3 -0
- package/components/toolbar-item/toolbar-item.component.d.ts +14 -5
- package/constants/node-types.d.ts +0 -1
- package/constants/toolbar.d.ts +6 -2
- package/custom-types.d.ts +1 -0
- package/editor.component.d.ts +6 -4
- package/editor.module.d.ts +59 -52
- package/esm2015/components/color-select/color-select.component.js +3 -2
- package/esm2015/components/inline-toolbar/inline-toolbar.component.js +123 -0
- package/esm2015/components/nav-split-line/nav-split-line.component.js +26 -5
- package/esm2015/components/toolbar-base-item/toolbar-base-item.component.js +3 -2
- package/esm2015/components/toolbar-item/toolbar-item.component.js +70 -24
- package/esm2015/constants/node-types.js +1 -2
- package/esm2015/constants/toolbar.js +37 -5
- package/esm2015/custom-types.js +1 -1
- package/esm2015/editor.component.js +24 -19
- package/esm2015/editor.module.js +15 -6
- package/esm2015/interfaces/toolbar.js +1 -1
- package/esm2015/plugins/deserializers/deserialize-html.plugin.js +8 -1
- package/esm2015/plugins/image/image.plugin.js +1 -2
- package/esm2015/plugins/index.js +8 -4
- package/esm2015/plugins/link/link.plugin.js +7 -2
- package/esm2015/plugins/list/list.plugin.js +7 -7
- package/esm2015/plugins/list/queries/get-start-list-item.js +9 -2
- package/esm2015/plugins/list/queries/is-selection-in-same-list-item.js +17 -0
- package/esm2015/plugins/paint-format/options.js +54 -0
- package/esm2015/plugins/paint-format/paint-format.editor.js +67 -0
- package/esm2015/plugins/placeholder/placeholder.component.js +75 -0
- package/esm2015/plugins/public-api.js +2 -1
- package/esm2015/plugins/quick-insert/components/quick-insert.component.js +76 -0
- package/esm2015/plugins/quick-insert/components/quick-toolbar/quick-toolbar.component.js +75 -0
- package/esm2015/plugins/quick-insert/quick-insert.editor.js +61 -0
- package/esm2015/plugins/quick-insert/quick-insert.plugint.js +37 -0
- package/esm2015/plugins/table/components/row/row.component.js +3 -1
- package/esm2015/plugins/table/components/table.component.js +6 -3
- package/esm2015/plugins/table/components/td/td.component.js +2 -1
- package/esm2015/plugins/table/components/toolbar/table-toolbar.component.js +1 -1
- package/esm2015/public-api.js +2 -1
- package/esm2015/services/context.service.js +2 -2
- package/esm2015/services/toolbar.service.js +5 -5
- package/esm2015/utils/auto-focus.js +2 -2
- package/esm2015/utils/is-clean-empty-paragraph.js +32 -0
- package/esm2015/utils/weak-maps.js +2 -1
- package/fesm2015/worktile-theia.js +726 -136
- package/fesm2015/worktile-theia.js.map +1 -1
- package/interfaces/toolbar.d.ts +3 -2
- package/package.json +1 -1
- package/plugins/list/queries/get-start-list-item.d.ts +8 -2
- package/plugins/list/queries/is-selection-in-same-list-item.d.ts +5 -0
- package/plugins/paint-format/options.d.ts +2 -0
- package/plugins/paint-format/paint-format.editor.d.ts +7 -0
- package/{components → plugins}/placeholder/placeholder.component.d.ts +5 -6
- package/{components → plugins}/placeholder/placeholder.component.scss +0 -0
- package/plugins/public-api.d.ts +1 -0
- package/plugins/quick-insert/components/quick-insert.component.d.ts +25 -0
- package/plugins/quick-insert/components/quick-insert.component.scss +21 -0
- package/plugins/quick-insert/components/quick-toolbar/quick-toolbar.component.d.ts +29 -0
- package/plugins/quick-insert/components/quick-toolbar/quick-toolbar.component.scss +21 -0
- package/plugins/quick-insert/quick-insert.editor.d.ts +8 -0
- package/plugins/quick-insert/quick-insert.plugint.d.ts +2 -0
- package/plugins/table/components/table.component.d.ts +1 -0
- package/public-api.d.ts +1 -0
- package/services/toolbar.service.d.ts +1 -1
- package/styles/editor.scss +31 -9
- package/styles/index.scss +5 -2
- package/utils/is-clean-empty-paragraph.d.ts +8 -0
- package/utils/weak-maps.d.ts +1 -0
- 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: any, 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
|
}
|
|
@@ -1,15 +1,24 @@
|
|
|
1
|
+
import { ComponentFactoryResolver, NgZone, OnInit, ViewContainerRef } from '@angular/core';
|
|
1
2
|
import { Editor } from 'slate';
|
|
2
|
-
import {
|
|
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
|
-
|
|
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
|
-
|
|
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
|
}
|
package/constants/toolbar.d.ts
CHANGED
|
@@ -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
|
|
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
|
|
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;
|
package/editor.component.d.ts
CHANGED
|
@@ -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,
|
|
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 {
|
|
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
|
-
|
|
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;
|
package/editor.module.d.ts
CHANGED
|
@@ -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/
|
|
36
|
-
import * as i8 from "./components/
|
|
37
|
-
import * as i9 from "./components/
|
|
38
|
-
import * as i10 from "./components/
|
|
39
|
-
import * as i11 from "./
|
|
40
|
-
import * as i12 from "./plugins/
|
|
41
|
-
import * as i13 from "./components/
|
|
42
|
-
import * as i14 from "./plugins/
|
|
43
|
-
import * as i15 from "./components/
|
|
44
|
-
import * as i16 from "./plugins/table/
|
|
45
|
-
import * as i17 from "./components/
|
|
46
|
-
import * as i18 from "./plugins/
|
|
47
|
-
import * as i19 from "./
|
|
48
|
-
import * as i20 from "./
|
|
49
|
-
import * as i21 from "./plugins/
|
|
50
|
-
import * as i22 from "./
|
|
51
|
-
import * as i23 from "./plugins/
|
|
52
|
-
import * as i24 from "./plugins/
|
|
53
|
-
import * as i25 from "./plugins/
|
|
54
|
-
import * as i26 from "./plugins/list/components/
|
|
55
|
-
import * as i27 from "./plugins/
|
|
56
|
-
import * as i28 from "./plugins/
|
|
57
|
-
import * as i29 from "./plugins/
|
|
58
|
-
import * as i30 from "./plugins/link/
|
|
59
|
-
import * as i31 from "./plugins/
|
|
60
|
-
import * as i32 from "./plugins/
|
|
61
|
-
import * as i33 from "./plugins/table/components/
|
|
62
|
-
import * as i34 from "./plugins/table/components/
|
|
63
|
-
import * as i35 from "
|
|
64
|
-
import * as i36 from "
|
|
65
|
-
import * as i37 from "
|
|
66
|
-
import * as i38 from "
|
|
67
|
-
import * as i39 from "
|
|
68
|
-
import * as i40 from "
|
|
69
|
-
import * as i41 from "ngx-tethys/
|
|
70
|
-
import * as i42 from "ngx-tethys/
|
|
71
|
-
import * as i43 from "ngx-tethys/
|
|
72
|
-
import * as i44 from "ngx-tethys/
|
|
73
|
-
import * as i45 from "ngx-tethys/
|
|
74
|
-
import * as i46 from "ngx-tethys/
|
|
75
|
-
import * as i47 from "ngx-tethys/
|
|
76
|
-
import * as i48 from "ngx-tethys/
|
|
77
|
-
import * as i49 from "ngx-tethys/
|
|
78
|
-
import * as i50 from "ngx-tethys/
|
|
79
|
-
import * as i51 from "ngx-tethys/
|
|
80
|
-
import * as i52 from "ngx-tethys/
|
|
81
|
-
import * as i53 from "
|
|
82
|
-
import * as i54 from "
|
|
83
|
-
|
|
84
|
-
|
|
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.
|
|
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
|
|
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,123 @@
|
|
|
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, 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 || !AngularEditor.isFocused(editor) || Range.isCollapsed(selection) || Editor.string(editor, selection) === '') {
|
|
51
|
+
inlineToolbar.removeAttribute('style');
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
if (!THE_INLINE_TOOLBAR_TYPES.includes(anchorBlock.type)) {
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
const native = window.getSelection();
|
|
58
|
+
if (native.type !== 'None') {
|
|
59
|
+
const range = native.getRangeAt(0);
|
|
60
|
+
this.updatePosition(inlineToolbar, range);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
updatePosition(toolbarElement, range) {
|
|
64
|
+
let boundary = range.getBoundingClientRect();
|
|
65
|
+
if (!boundary || (boundary.height === 0 && boundary.width === 0 && range.startContainer === range.endContainer)) {
|
|
66
|
+
if (range.startContainer.nodeType === 1 && range.startContainer.querySelector('img')) {
|
|
67
|
+
boundary = range.startContainer.querySelector('img').getBoundingClientRect();
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
boundary = range.startContainer.getBoundingClientRect();
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
const toolbarHeight = toolbarElement.offsetHeight;
|
|
74
|
+
const toolbarWidth = toolbarElement.offsetWidth;
|
|
75
|
+
const halfOffsetWidth = toolbarWidth / 2;
|
|
76
|
+
const defaultLeft = -halfOffsetWidth;
|
|
77
|
+
const positions = {};
|
|
78
|
+
positions.top = boundary.top - toolbarHeight;
|
|
79
|
+
positions.left = boundary.left + boundary.width / 2 + defaultLeft;
|
|
80
|
+
positions.right = 'initial';
|
|
81
|
+
['top', 'left', 'right'].forEach(key => {
|
|
82
|
+
toolbarElement.style[key] = positions[key] + (isNaN(positions[key]) ? '' : 'px');
|
|
83
|
+
});
|
|
84
|
+
toolbarElement.style.opacity = '1';
|
|
85
|
+
}
|
|
86
|
+
ngOnDestroy() {
|
|
87
|
+
this.destroy$.next();
|
|
88
|
+
this.destroy$.complete();
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
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 });
|
|
92
|
+
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
|
|
93
|
+
#inlineToolbar
|
|
94
|
+
class="the-inline-toolbar"
|
|
95
|
+
[editor]="editor"
|
|
96
|
+
[toolbarItems]="toolbarItems"
|
|
97
|
+
[isMore]="false"
|
|
98
|
+
></the-toolbar> `, isInline: true, components: [{ type: i2.TheToolbarComponent, selector: "the-toolbar", inputs: ["editor", "toolbarItems", "align", "isMore", "afterTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
99
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.7", ngImport: i0, type: TheInlineToolbarComponent, decorators: [{
|
|
100
|
+
type: Component,
|
|
101
|
+
args: [{
|
|
102
|
+
selector: 'the-inline-toolbar',
|
|
103
|
+
template: `<the-toolbar
|
|
104
|
+
#inlineToolbar
|
|
105
|
+
class="the-inline-toolbar"
|
|
106
|
+
[editor]="editor"
|
|
107
|
+
[toolbarItems]="toolbarItems"
|
|
108
|
+
[isMore]="false"
|
|
109
|
+
></the-toolbar> `,
|
|
110
|
+
host: {
|
|
111
|
+
'[class.hide]': 'toolbarItems.length === 0'
|
|
112
|
+
},
|
|
113
|
+
changeDetection: ChangeDetectionStrategy.OnPush
|
|
114
|
+
}]
|
|
115
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.ScrollDispatcher }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }]; }, propDecorators: { editor: [{
|
|
116
|
+
type: Input
|
|
117
|
+
}], toolbarItems: [{
|
|
118
|
+
type: Input
|
|
119
|
+
}], inlineToolbar: [{
|
|
120
|
+
type: ViewChild,
|
|
121
|
+
args: ['inlineToolbar']
|
|
122
|
+
}] } });
|
|
123
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5saW5lLXRvb2xiYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3JjL2NvbXBvbmVudHMvaW5saW5lLXRvb2xiYXIvaW5saW5lLXRvb2xiYXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBSVQsS0FBSyxFQUdMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUMsT0FBTyxLQUFLLFVBQVUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7QUFrQjNELE1BQU0sT0FBTyx5QkFBeUI7SUFPbEMsWUFDWSxVQUEyQixFQUMzQixnQkFBa0MsRUFDbEMsR0FBc0IsRUFDdEIsTUFBYztRQUhkLGVBQVUsR0FBVixVQUFVLENBQWlCO1FBQzNCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDdEIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQU4xQixhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQU90QixDQUFDO0lBRUosUUFBUTtRQUNKLElBQUksQ0FBQyxnQkFBZ0I7YUFDaEIsUUFBUSxFQUFFO2FBQ1YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDOUIsU0FB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R0FBRyxHQUFHLENBQUM7SUFDdkMsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDN0IsQ0FBQzs7c0hBN0ZRLHlCQUF5QjswR0FBekIseUJBQXlCLDJTQVp4Qjs7Ozs7O3FCQU1POzJGQU1SLHlCQUF5QjtrQkFkckMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsb0JBQW9CO29CQUM5QixRQUFRLEVBQUU7Ozs7OztxQkFNTztvQkFDakIsSUFBSSxFQUFFO3dCQUNGLGNBQWMsRUFBRSwyQkFBMkI7cUJBQzlDO29CQUNELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2lCQUNsRDtxTEFFWSxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDc0IsYUFBYTtzQkFBeEMsU0FBUzt1QkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgT25Jbml0LFxuICAgIE9uRGVzdHJveSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBJbnB1dCxcbiAgICBFbGVtZW50UmVmLFxuICAgIE5nWm9uZSxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTY3JvbGxEaXNwYXRjaGVyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgbWVyZ2UsIGZyb21FdmVudCwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsLCBmaWx0ZXIsIGRlYm91bmNlVGltZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFJhbmdlLCBFZGl0b3IgfSBmcm9tICdzbGF0ZSc7XG5pbXBvcnQgeyBBbmd1bGFyRWRpdG9yIH0gZnJvbSAnc2xhdGUtYW5ndWxhcic7XG5pbXBvcnQgKiBhcyBUaGVRdWVyaWVzIGZyb20gJy4uLy4uL3F1ZXJpZXMnO1xuaW1wb3J0IHsgVEhFX0lOTElORV9UT09MQkFSX1RZUEVTIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IFRvb2xiYXJJdGVtIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBUaGVUb29sYmFyQ29tcG9uZW50IH0gZnJvbSAnLi4vdG9vbGJhci90b29sYmFyLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndGhlLWlubGluZS10b29sYmFyJyxcbiAgICB0ZW1wbGF0ZTogYDx0aGUtdG9vbGJhclxuICAgICAgICAjaW5saW5lVG9vbGJhclxuICAgICAgICBjbGFzcz1cInRoZS1pbmxpbmUtdG9vbGJhclwiXG4gICAgICAgIFtlZGl0b3JdPVwiZWRpdG9yXCJcbiAgICAgICAgW3Rvb2xiYXJJdGVtc109XCJ0b29sYmFySXRlbXNcIlxuICAgICAgICBbaXNNb3JlXT1cImZhbHNlXCJcbiAgICA+PC90aGUtdG9vbGJhcj4gYCxcbiAgICBob3N0OiB7XG4gICAgICAgICdbY2xhc3MuaGlkZV0nOiAndG9vbGJhckl0ZW1zLmxlbmd0aCA9PT0gMCdcbiAgICB9LFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFRoZUlubGluZVRvb2xiYXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgQElucHV0KCkgZWRpdG9yOiBFZGl0b3I7XG4gICAgQElucHV0KCkgdG9vbGJhckl0ZW1zOiBUb29sYmFySXRlbVtdO1xuICAgIEBWaWV3Q2hpbGQoJ2lubGluZVRvb2xiYXInKSBpbmxpbmVUb29sYmFyOiBUaGVUb29sYmFyQ29tcG9uZW50O1xuXG4gICAgZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZjxhbnk+LFxuICAgICAgICBwcml2YXRlIHNjcm9sbERpc3BhdGNoZXI6IFNjcm9sbERpc3BhdGNoZXIsXG4gICAgICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZVxuICAgICkge31cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLnNjcm9sbERpc3BhdGNoZXJcbiAgICAgICAgICAgIC5zY3JvbGxlZCgpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUlubGluZVRvb2xiYXIoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICAgICAgbWVyZ2UoXG4gICAgICAgICAgICAgICAgZnJvbUV2ZW50KGRvY3VtZW50LCAnbW91c2V1cCcpLnBpcGUoZmlsdGVyKChlOiBNb3VzZUV2ZW50KSA9PiBlLmJ1dHRvbiAhPT0gMikpLFxuICAgICAgICAgICAgICAgIGZyb21FdmVudChkb2N1bWVudCwgJ2tleXVwJykucGlwZShmaWx0ZXIoKGU6IEtleWJvYXJkRXZlbnQpID0+ICFlLnNoaWZ0S2V5KSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAucGlwZShkZWJvdW5jZVRpbWUoMjAwKSwgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUlubGluZVRvb2xiYXIoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmxpbmVUb29sYmFyPy5zdGF0dXNDaGFuZ2UodGhpcy5lZGl0b3IpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHVwZGF0ZUlubGluZVRvb2xiYXIoKSB7XG4gICAgICAgIGNvbnN0IGlubGluZVRvb2xiYXIgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5maXJzdEVsZW1lbnRDaGlsZDtcblxuICAgICAgICBpZiAoIXRoaXMuZWRpdG9yLnNlbGVjdGlvbikge1xuICAgICAgICAgICAgaW5saW5lVG9vbGJhci5yZW1vdmVBdHRyaWJ1dGUoJ3N0eWxlJyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYW5jaG9yQmxvY2sgPSBUaGVRdWVyaWVzLmFuY2hvckJsb2NrKHRoaXMuZWRpdG9yKTtcbiAgICAgICAgaWYgKCFpbmxpbmVUb29sYmFyIHx8ICFhbmNob3JCbG9jaykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHsgZWRpdG9yIH0gPSB0aGlzO1xuICAgICAgICBjb25zdCB7IHNlbGVjdGlvbiB9ID0gZWRpdG9yO1xuXG4gICAgICAgIGlmICghc2VsZWN0aW9uIHx8ICFBbmd1bGFyRWRpdG9yLmlzRm9jdXNlZChlZGl0b3IpIHx8IFJhbmdlLmlzQ29sbGFwc2VkKHNlbGVjdGlvbikgfHwgRWRpdG9yLnN0cmluZyhlZGl0b3IsIHNlbGVjdGlvbikgPT09ICcnKSB7XG4gICAgICAgICAgICBpbmxpbmVUb29sYmFyLnJlbW92ZUF0dHJpYnV0ZSgnc3R5bGUnKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghVEhFX0lOTElORV9UT09MQkFSX1RZUEVTLmluY2x1ZGVzKGFuY2hvckJsb2NrLnR5cGUpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbmF0aXZlID0gd2luZG93LmdldFNlbGVjdGlvbigpO1xuICAgICAgICBpZiAobmF0aXZlLnR5cGUgIT09ICdOb25lJykge1xuICAgICAgICAgICAgY29uc3QgcmFuZ2UgPSBuYXRpdmUuZ2V0UmFuZ2VBdCgwKTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlUG9zaXRpb24oaW5saW5lVG9vbGJhciwgcmFuZ2UpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdXBkYXRlUG9zaXRpb24odG9vbGJhckVsZW1lbnQsIHJhbmdlKSB7XG4gICAgICAgIGxldCBib3VuZGFyeSA9IHJhbmdlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgICAgIGlmICghYm91bmRhcnkgfHwgKGJvdW5kYXJ5LmhlaWdodCA9PT0gMCAmJiBib3VuZGFyeS53aWR0aCA9PT0gMCAmJiByYW5nZS5zdGFydENvbnRhaW5lciA9PT0gcmFuZ2UuZW5kQ29udGFpbmVyKSkge1xuICAgICAgICAgICAgaWYgKHJhbmdlLnN0YXJ0Q29udGFpbmVyLm5vZGVUeXBlID09PSAxICYmIHJhbmdlLnN0YXJ0Q29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoJ2ltZycpKSB7XG4gICAgICAgICAgICAgICAgYm91bmRhcnkgPSByYW5nZS5zdGFydENvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCdpbWcnKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgYm91bmRhcnkgPSByYW5nZS5zdGFydENvbnRhaW5lci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCB0b29sYmFySGVpZ2h0ID0gdG9vbGJhckVsZW1lbnQub2Zmc2V0SGVpZ2h0O1xuICAgICAgICBjb25zdCB0b29sYmFyV2lkdGggPSB0b29sYmFyRWxlbWVudC5vZmZzZXRXaWR0aDtcbiAgICAgICAgY29uc3QgaGFsZk9mZnNldFdpZHRoID0gdG9vbGJhcldpZHRoIC8gMjtcbiAgICAgICAgY29uc3QgZGVmYXVsdExlZnQgPSAtaGFsZk9mZnNldFdpZHRoO1xuICAgICAgICBjb25zdCBwb3NpdGlvbnM6IGFueSA9IHt9O1xuICAgICAgICBwb3NpdGlvbnMudG9wID0gYm91bmRhcnkudG9wIC0gdG9vbGJhckhlaWdodDtcbiAgICAgICAgcG9zaXRpb25zLmxlZnQgPSBib3VuZGFyeS5sZWZ0ICsgYm91bmRhcnkud2lkdGggLyAyICsgZGVmYXVsdExlZnQ7XG4gICAgICAgIHBvc2l0aW9ucy5yaWdodCA9ICdpbml0aWFsJztcblxuICAgICAgICBbJ3RvcCcsICdsZWZ0JywgJ3JpZ2h0J10uZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICAgICAgdG9vbGJhckVsZW1lbnQuc3R5bGVba2V5XSA9IHBvc2l0aW9uc1trZXldICsgKGlzTmFOKHBvc2l0aW9uc1trZXldKSA/ICcnIDogJ3B4Jyk7XG4gICAgICAgIH0pO1xuICAgICAgICB0b29sYmFyRWxlbWVudC5zdHlsZS5vcGFjaXR5ID0gJzEnO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICAgIH1cbn1cbiJdfQ==
|