@worktile/theia 14.0.3 → 14.0.5
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/editor.module.d.ts +1 -1
- package/esm2020/plugins/code/code.component.mjs +83 -26
- package/esm2020/plugins/hr/hr.editor.mjs +9 -1
- package/esm2020/plugins/image/image.component.mjs +20 -16
- package/esm2020/plugins/table/components/td/td.component.mjs +2 -2
- package/esm2020/plugins/table/components/toolbar/table-toolbar.component.mjs +3 -3
- package/esm2020/plugins/table/table.service.mjs +2 -2
- package/fesm2015/worktile-theia.mjs +91 -24
- package/fesm2015/worktile-theia.mjs.map +1 -1
- package/fesm2020/worktile-theia.mjs +88 -23
- package/fesm2020/worktile-theia.mjs.map +1 -1
- package/package.json +1 -1
- package/plugins/code/code.component.d.ts +18 -7
- package/plugins/code/code.component.scss +0 -19
- package/plugins/hr/hr.editor.d.ts +1 -0
- package/plugins/image/image.component.d.ts +8 -8
- package/plugins/table/table.service.d.ts +4 -4
- package/styles/editor.scss +2 -3
package/editor.module.d.ts
CHANGED
|
@@ -92,7 +92,7 @@ import * as i61 from "ngx-tethys/divider";
|
|
|
92
92
|
import * as i62 from "ngx-tethys/dropdown";
|
|
93
93
|
import * as i63 from "ng-codemirror";
|
|
94
94
|
import * as i64 from "./components/column-resize/column-resize.module";
|
|
95
|
-
export declare const COMPONENTS: (typeof TheToolbarGroupComponent | typeof TheColorSelectComponent | typeof
|
|
95
|
+
export declare const COMPONENTS: (typeof TheToolbarGroupComponent | typeof TheColorSelectComponent | typeof TheContextMenuComponent | typeof TheTableOptionsComponent | typeof TheTextComponent | typeof TheDefaultElementComponent | typeof TheToolbarItemComponent | typeof TheToolbarDropdownComponent | typeof TheToolbarComponent | typeof TheQuickToolbarComponent | typeof TheQuickInsertComponent | typeof TheConversionHintComponent | typeof TheTableSelectComponent | typeof TheTableToolbarItemComponent | typeof TheVerticalToolbarItemComponent | typeof TheColorToolbarItemComponent | typeof TheInsertMarkComponent | typeof TheInlineToolbarComponent)[];
|
|
96
96
|
export declare const PLUGIN_COMPONENTS: (typeof TheTableToolbarComponent | typeof TheTableComponent | typeof TheTemplateComponent | typeof TheImageComponent | typeof TheTodoItemComponent | typeof TheBlockquoteComponent | typeof TheCodeComponent | typeof TheLinkHoverComponent | typeof TheLinkEditComponent | typeof TheLinkComponent | typeof TheTdComponent)[];
|
|
97
97
|
export declare class TheEditorModule {
|
|
98
98
|
static ɵfac: i0.ɵɵFactoryDeclaration<TheEditorModule, never>;
|
|
@@ -1,30 +1,33 @@
|
|
|
1
|
-
import { Component,
|
|
1
|
+
import { ChangeDetectionStrategy, Component, Inject, TemplateRef, ViewChild } from '@angular/core';
|
|
2
|
+
import { CodeMirrorComponent } from 'ng-codemirror';
|
|
3
|
+
import { fromEvent, Subject } from 'rxjs';
|
|
4
|
+
import { delay, take, takeUntil } from 'rxjs/operators';
|
|
2
5
|
import { Transforms } from 'slate';
|
|
3
6
|
import { AngularEditor, IS_SAFARI } from 'slate-angular';
|
|
4
|
-
import {
|
|
7
|
+
import { TheToolbarDropdownComponent } from '../../components/toolbar-dropdown/toolbar-dropdown.component';
|
|
5
8
|
import { CODEMIRROR_PADDING_TOP, CODE_MODES, DropdownMode, ToolbarItemMode } from '../../constants';
|
|
6
9
|
import { TheBaseElementComponent, TheMode, THE_MODE_TOKEN } from '../../interfaces';
|
|
7
|
-
import
|
|
10
|
+
import * as TheQueries from '../../queries';
|
|
8
11
|
import * as TheTransforms from '../../transforms';
|
|
9
|
-
import {
|
|
10
|
-
import { fromEvent, Subject } from 'rxjs';
|
|
11
|
-
import { TheToolbarDropdownComponent } from '../../components/toolbar-dropdown/toolbar-dropdown.component';
|
|
12
|
+
import { CodeEditor } from './code.editor';
|
|
12
13
|
import * as i0 from "@angular/core";
|
|
13
14
|
import * as i1 from "ngx-tethys/notify";
|
|
14
15
|
import * as i2 from "../../services/context.service";
|
|
15
|
-
import * as i3 from "
|
|
16
|
-
import * as i4 from "
|
|
17
|
-
import * as i5 from "@angular/
|
|
18
|
-
import * as i6 from "
|
|
19
|
-
import * as i7 from "
|
|
20
|
-
import * as i8 from "ngx-tethys/
|
|
21
|
-
import * as i9 from "ngx-tethys/
|
|
22
|
-
import * as i10 from "ngx-tethys/
|
|
23
|
-
import * as i11 from "
|
|
24
|
-
import * as i12 from "
|
|
25
|
-
import * as i13 from "
|
|
16
|
+
import * as i3 from "ngx-tethys/popover";
|
|
17
|
+
import * as i4 from "@angular/cdk/overlay";
|
|
18
|
+
import * as i5 from "@angular/common";
|
|
19
|
+
import * as i6 from "slate-angular";
|
|
20
|
+
import * as i7 from "@angular/forms";
|
|
21
|
+
import * as i8 from "ngx-tethys/tooltip";
|
|
22
|
+
import * as i9 from "ngx-tethys/resizable";
|
|
23
|
+
import * as i10 from "ngx-tethys/switch";
|
|
24
|
+
import * as i11 from "ngx-tethys/action";
|
|
25
|
+
import * as i12 from "ngx-tethys/divider";
|
|
26
|
+
import * as i13 from "ng-codemirror";
|
|
27
|
+
import * as i14 from "../../components/toolbar-dropdown/toolbar-dropdown.component";
|
|
28
|
+
import * as i15 from "../../interfaces";
|
|
26
29
|
export class TheCodeComponent extends TheBaseElementComponent {
|
|
27
|
-
constructor(elementRef, cdr, thyNotifyService, contextService, ngZone, config) {
|
|
30
|
+
constructor(elementRef, cdr, thyNotifyService, contextService, ngZone, config, thyPopover, viewContainerRef, overlay) {
|
|
28
31
|
super(elementRef, cdr);
|
|
29
32
|
this.elementRef = elementRef;
|
|
30
33
|
this.cdr = cdr;
|
|
@@ -32,6 +35,9 @@ export class TheCodeComponent extends TheBaseElementComponent {
|
|
|
32
35
|
this.contextService = contextService;
|
|
33
36
|
this.ngZone = ngZone;
|
|
34
37
|
this.config = config;
|
|
38
|
+
this.thyPopover = thyPopover;
|
|
39
|
+
this.viewContainerRef = viewContainerRef;
|
|
40
|
+
this.overlay = overlay;
|
|
35
41
|
this.startRenderCodemirror = false;
|
|
36
42
|
this.dropdownMode = DropdownMode;
|
|
37
43
|
this.maxHeight = this.config.mode === TheMode.print ? 0 : 350 - CODEMIRROR_PADDING_TOP * 2;
|
|
@@ -62,8 +68,17 @@ export class TheCodeComponent extends TheBaseElementComponent {
|
|
|
62
68
|
get code() {
|
|
63
69
|
return this.element.content;
|
|
64
70
|
}
|
|
71
|
+
get isToolbarOpen() {
|
|
72
|
+
return this.toolbarPopoverRef && this.toolbarPopoverRef.getOverlayRef() && this.toolbarPopoverRef.getOverlayRef().hasAttached();
|
|
73
|
+
}
|
|
65
74
|
onContextChange() {
|
|
66
75
|
super.onContextChange();
|
|
76
|
+
if (this.isCollapsedAndNonReadonly) {
|
|
77
|
+
this.openToolbar();
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
this.closeToolbar();
|
|
81
|
+
}
|
|
67
82
|
if (this.initialized) {
|
|
68
83
|
if (this.options.readOnly !== this.readonly) {
|
|
69
84
|
this.useReadonly();
|
|
@@ -87,8 +102,8 @@ export class TheCodeComponent extends TheBaseElementComponent {
|
|
|
87
102
|
.subscribe(event => {
|
|
88
103
|
event.stopPropagation();
|
|
89
104
|
const isBlockOperation = this.isCollapsedAndNonReadonly &&
|
|
90
|
-
this.nativeElement.querySelector('.the-code-block-operation')
|
|
91
|
-
const isCodemirror = this.nativeElement.querySelector('.ng-codemirror')
|
|
105
|
+
this.nativeElement.querySelector('.the-code-block-operation')?.contains(event.target);
|
|
106
|
+
const isCodemirror = this.nativeElement.querySelector('.ng-codemirror')?.contains(event.target);
|
|
92
107
|
this.isHightLight = !isCodemirror && !isBlockOperation;
|
|
93
108
|
});
|
|
94
109
|
});
|
|
@@ -113,6 +128,45 @@ export class TheCodeComponent extends TheBaseElementComponent {
|
|
|
113
128
|
});
|
|
114
129
|
}
|
|
115
130
|
}
|
|
131
|
+
openToolbar() {
|
|
132
|
+
if (!TheQueries.isGlobalCollapsed(this.editor) || this.isToolbarOpen) {
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
this.toolbarPopoverRef = this.thyPopover.open(this.toolbar, {
|
|
136
|
+
origin: this.elementRef.nativeElement,
|
|
137
|
+
viewContainerRef: this.viewContainerRef,
|
|
138
|
+
panelClass: 'the-plugin-toolbar-popover',
|
|
139
|
+
minWidth: 0,
|
|
140
|
+
manualClosure: true,
|
|
141
|
+
hasBackdrop: false,
|
|
142
|
+
insideClosable: false,
|
|
143
|
+
outsideClosable: false,
|
|
144
|
+
scrollStrategy: this.overlay.scrollStrategies.reposition()
|
|
145
|
+
});
|
|
146
|
+
this.toolbarPopoverRef?.getOverlayRef().updatePositionStrategy(this.createPositionStrategy());
|
|
147
|
+
}
|
|
148
|
+
closeToolbar() {
|
|
149
|
+
if (this.isToolbarOpen) {
|
|
150
|
+
this.toolbarPopoverRef.close();
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
createPositionStrategy() {
|
|
154
|
+
const topLeftPosition = {
|
|
155
|
+
originX: 'start',
|
|
156
|
+
originY: 'top',
|
|
157
|
+
overlayX: 'start',
|
|
158
|
+
overlayY: 'bottom',
|
|
159
|
+
offsetX: 0,
|
|
160
|
+
offsetY: -4
|
|
161
|
+
};
|
|
162
|
+
return this.overlay
|
|
163
|
+
.position()
|
|
164
|
+
.flexibleConnectedTo(this.elementRef.nativeElement)
|
|
165
|
+
.withFlexibleDimensions(false)
|
|
166
|
+
.withGrowAfterOpen(false)
|
|
167
|
+
.withPush(false)
|
|
168
|
+
.withPositions([topLeftPosition]);
|
|
169
|
+
}
|
|
116
170
|
renderCodemirror() {
|
|
117
171
|
this.startRenderCodemirror = true;
|
|
118
172
|
this.useReadonly();
|
|
@@ -227,19 +281,22 @@ export class TheCodeComponent extends TheBaseElementComponent {
|
|
|
227
281
|
this.destroy$.complete();
|
|
228
282
|
}
|
|
229
283
|
}
|
|
230
|
-
TheCodeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: TheCodeComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.ThyNotifyService }, { token: i2.TheContextService }, { token: i0.NgZone }, { token: THE_MODE_TOKEN }], target: i0.ɵɵFactoryTarget.Component });
|
|
231
|
-
TheCodeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: TheCodeComponent, selector: "div[theCode]", viewQueries: [{ propertyName: "codemirror", first: true, predicate: ["codemirror"], descendants: true, read: CodeMirrorComponent }, { propertyName: "toolbarDropdownComponent", first: true, predicate: TheToolbarDropdownComponent, descendants: true, read: TheToolbarDropdownComponent }], usesInheritance: true, ngImport: i0, template: "<
|
|
284
|
+
TheCodeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: TheCodeComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.ThyNotifyService }, { token: i2.TheContextService }, { token: i0.NgZone }, { token: THE_MODE_TOKEN }, { token: i3.ThyPopover }, { token: i0.ViewContainerRef }, { token: i4.Overlay }], target: i0.ɵɵFactoryTarget.Component });
|
|
285
|
+
TheCodeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: TheCodeComponent, selector: "div[theCode]", viewQueries: [{ propertyName: "toolbar", first: true, predicate: ["toolbar"], descendants: true, read: TemplateRef, static: true }, { propertyName: "codemirror", first: true, predicate: ["codemirror"], descendants: true, read: CodeMirrorComponent }, { propertyName: "toolbarDropdownComponent", first: true, predicate: TheToolbarDropdownComponent, descendants: true, read: TheToolbarDropdownComponent }], usesInheritance: true, ngImport: i0, template: "<slate-children [children]=\"children\" [context]=\"childrenContext\" [viewContext]=\"viewContext\"></slate-children>\n\n<!-- \u53EA\u8BFB\u6A21\u5F0F\u4E0BCodeMirror-sizer\u9AD8\u5EA6\u6BD4\u7F16\u8F91\u6A21\u5F0F\u4E0B\u591A2px\uFF0C\u8BBE\u7F6EthyMinHeight\u4E3A46px\u9632\u6B62\u62D6\u62FD\u5230\u6700\u5C0F\u9AD8\u5EA6\u65F6\u53EA\u8BFB\u6A21\u5F0F\u4E0B\u51FA\u73B0\u6EDA\u52A8\u6761 -->\n<div\n thyResizable\n [thyMinHeight]=\"46\"\n [thyBounds]=\"resizeBounds\"\n [style.height.px]=\"resizeHeight\"\n (thyResize)=\"onResize($event)\"\n (thyResizeEnd)=\"onEndResize()\"\n class=\"resize-code-container\"\n [ngClass]=\"{ focus: isCollapsedAndNonReadonly, readonly: options.readOnly, active: isHightLight && isCollapsedAndNonReadonly }\"\n>\n <ng-codemirror\n *ngIf=\"startRenderCodemirror\"\n #codemirror\n contenteditable=\"false\"\n class=\"ng-codemirror-wrapper\"\n [ngStyle]=\"{ maxHeight: maxHeight > 0 ? maxHeight + 'px' : 'auto' }\"\n [options]=\"options\"\n [ngModel]=\"code\"\n [delayRefreshTime]=\"300\"\n (ngModelChange)=\"codeChange($event)\"\n (focusChange)=\"focusChange($event)\"\n [autoMaxHeight]=\"maxHeight\"\n >\n </ng-codemirror>\n <thy-resize-handle thyDirection=\"bottom\" class=\"code-resize-icon\" *ngIf=\"isCollapsedAndNonReadonly\"></thy-resize-handle>\n</div>\n\n<ng-template #toolbar>\n <thy-actions thySize=\"xxs\">\n <the-toolbar-dropdown\n [menus]=\"menus\"\n [toolbarItem]=\"activeLanguage\"\n [dropdownItemKey]=\"activeLanguage?.key\"\n [itemMousedownHandle]=\"onChangeLanguage\"\n >\n </the-toolbar-dropdown>\n <span class=\"auto-wrap d-flex align-items-center px-2 text-secondary\">\n <span>\u81EA\u52A8\u6362\u884C</span>\n <thy-switch\n class=\"auto-wrap-btn d-flex ml-1\"\n [(ngModel)]=\"options.lineWrapping\"\n (ngModelChange)=\"onChangeWrap($event)\"\n thySize=\"sm\"\n ></thy-switch>\n </span>\n <a href=\"javascript:;\" thyAction thyActionIcon=\"copy\" thyTooltip=\"\u590D\u5236\" thyTooltipPlacement=\"top\" (mousedown)=\"onCopy($event)\"></a>\n <thy-divider class=\"mr-2 ml-1 align-self-center\" [thyVertical]=\"true\"></thy-divider>\n <a\n href=\"javascript:;\"\n thyAction\n thyType=\"danger\"\n thyActionIcon=\"trash\"\n thyTooltip=\"\u5220\u9664\"\n thyTooltipPlacement=\"top\"\n (mousedown)=\"onDelete($event)\"\n ></a>\n </thy-actions>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i6.SlateChildrenComponent, selector: "slate-children", inputs: ["children", "context", "viewContext"] }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i8.ThyTooltipDirective, selector: "[thyTooltip],[thy-tooltip]", inputs: ["thyTooltip", "thyTooltipPlacement", "thyTooltipClass", "thyTooltipShowDelay", "thyTooltipHideDelay", "thyTooltipTrigger", "thyTooltipDisabled", "thyTooltipTemplateContext", "thyTooltipOffset", "thyTooltipPin"], exportAs: ["thyTooltip"] }, { kind: "directive", type: i9.ThyResizableDirective, selector: "[thyResizable]", inputs: ["thyBounds", "thyMaxHeight", "thyMaxWidth", "thyMinHeight", "thyMinWidth", "thyGridColumnCount", "thyMaxColumn", "thyMinColumn", "thyLockAspectRatio", "thyPreview", "thyDisabled"], outputs: ["thyResize", "thyResizeEnd", "thyResizeStart"] }, { kind: "component", type: i9.ThyResizeHandleComponent, selector: "thy-resize-handle, [thy-resize-handle]", inputs: ["thyDirection"], outputs: ["thyMouseDown"], exportAs: ["thyResizeHandle"] }, { kind: "component", type: i10.ThySwitchComponent, selector: "thy-switch", inputs: ["thyType", "thySize", "thyDisabled"], outputs: ["thyChange"] }, { kind: "component", type: i11.ThyActionComponent, selector: "thy-action, [thyAction]", inputs: ["thyType", "thyIcon", "thyActionIcon", "thyActive", "thyActionActive", "thyTheme", "thyHoverIcon", "thyDisabled"] }, { kind: "component", type: i11.ThyActionsComponent, selector: "thy-actions", inputs: ["thySize"] }, { kind: "component", type: i12.ThyDividerComponent, selector: "thy-divider", inputs: ["thyVertical", "thyStyle", "thyColor", "thyText", "thyTextDirection", "thyDeeper"] }, { kind: "component", type: i13.CodeMirrorComponent, selector: "ng-codemirror, [ngCodeMirror]", inputs: ["autoMaxHeight", "options", "delayRefreshTime"], outputs: ["focusChange"] }, { kind: "component", type: i14.TheToolbarDropdownComponent, selector: "the-toolbar-dropdown", inputs: ["itemMousedownHandle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
232
286
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: TheCodeComponent, decorators: [{
|
|
233
287
|
type: Component,
|
|
234
|
-
args: [{ selector: 'div[theCode]', changeDetection: ChangeDetectionStrategy.OnPush, template: "<
|
|
235
|
-
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.ThyNotifyService }, { type: i2.TheContextService }, { type: i0.NgZone }, { type:
|
|
288
|
+
args: [{ selector: 'div[theCode]', changeDetection: ChangeDetectionStrategy.OnPush, template: "<slate-children [children]=\"children\" [context]=\"childrenContext\" [viewContext]=\"viewContext\"></slate-children>\n\n<!-- \u53EA\u8BFB\u6A21\u5F0F\u4E0BCodeMirror-sizer\u9AD8\u5EA6\u6BD4\u7F16\u8F91\u6A21\u5F0F\u4E0B\u591A2px\uFF0C\u8BBE\u7F6EthyMinHeight\u4E3A46px\u9632\u6B62\u62D6\u62FD\u5230\u6700\u5C0F\u9AD8\u5EA6\u65F6\u53EA\u8BFB\u6A21\u5F0F\u4E0B\u51FA\u73B0\u6EDA\u52A8\u6761 -->\n<div\n thyResizable\n [thyMinHeight]=\"46\"\n [thyBounds]=\"resizeBounds\"\n [style.height.px]=\"resizeHeight\"\n (thyResize)=\"onResize($event)\"\n (thyResizeEnd)=\"onEndResize()\"\n class=\"resize-code-container\"\n [ngClass]=\"{ focus: isCollapsedAndNonReadonly, readonly: options.readOnly, active: isHightLight && isCollapsedAndNonReadonly }\"\n>\n <ng-codemirror\n *ngIf=\"startRenderCodemirror\"\n #codemirror\n contenteditable=\"false\"\n class=\"ng-codemirror-wrapper\"\n [ngStyle]=\"{ maxHeight: maxHeight > 0 ? maxHeight + 'px' : 'auto' }\"\n [options]=\"options\"\n [ngModel]=\"code\"\n [delayRefreshTime]=\"300\"\n (ngModelChange)=\"codeChange($event)\"\n (focusChange)=\"focusChange($event)\"\n [autoMaxHeight]=\"maxHeight\"\n >\n </ng-codemirror>\n <thy-resize-handle thyDirection=\"bottom\" class=\"code-resize-icon\" *ngIf=\"isCollapsedAndNonReadonly\"></thy-resize-handle>\n</div>\n\n<ng-template #toolbar>\n <thy-actions thySize=\"xxs\">\n <the-toolbar-dropdown\n [menus]=\"menus\"\n [toolbarItem]=\"activeLanguage\"\n [dropdownItemKey]=\"activeLanguage?.key\"\n [itemMousedownHandle]=\"onChangeLanguage\"\n >\n </the-toolbar-dropdown>\n <span class=\"auto-wrap d-flex align-items-center px-2 text-secondary\">\n <span>\u81EA\u52A8\u6362\u884C</span>\n <thy-switch\n class=\"auto-wrap-btn d-flex ml-1\"\n [(ngModel)]=\"options.lineWrapping\"\n (ngModelChange)=\"onChangeWrap($event)\"\n thySize=\"sm\"\n ></thy-switch>\n </span>\n <a href=\"javascript:;\" thyAction thyActionIcon=\"copy\" thyTooltip=\"\u590D\u5236\" thyTooltipPlacement=\"top\" (mousedown)=\"onCopy($event)\"></a>\n <thy-divider class=\"mr-2 ml-1 align-self-center\" [thyVertical]=\"true\"></thy-divider>\n <a\n href=\"javascript:;\"\n thyAction\n thyType=\"danger\"\n thyActionIcon=\"trash\"\n thyTooltip=\"\u5220\u9664\"\n thyTooltipPlacement=\"top\"\n (mousedown)=\"onDelete($event)\"\n ></a>\n </thy-actions>\n</ng-template>\n" }]
|
|
289
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.ThyNotifyService }, { type: i2.TheContextService }, { type: i0.NgZone }, { type: i15.TheModeConfig, decorators: [{
|
|
236
290
|
type: Inject,
|
|
237
291
|
args: [THE_MODE_TOKEN]
|
|
238
|
-
}] }]; }, propDecorators: {
|
|
292
|
+
}] }, { type: i3.ThyPopover }, { type: i0.ViewContainerRef }, { type: i4.Overlay }]; }, propDecorators: { toolbar: [{
|
|
293
|
+
type: ViewChild,
|
|
294
|
+
args: ['toolbar', { read: TemplateRef, static: true }]
|
|
295
|
+
}], codemirror: [{
|
|
239
296
|
type: ViewChild,
|
|
240
297
|
args: ['codemirror', { read: CodeMirrorComponent, static: false }]
|
|
241
298
|
}], toolbarDropdownComponent: [{
|
|
242
299
|
type: ViewChild,
|
|
243
300
|
args: [TheToolbarDropdownComponent, { read: TheToolbarDropdownComponent, static: false }]
|
|
244
301
|
}] } });
|
|
245
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvcGx1Z2lucy9jb2RlL2NvZGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3JjL3BsdWdpbnMvY29kZS9jb2RlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBR1QsdUJBQXVCLEVBRXZCLFNBQVMsRUFHVCxNQUFNLEVBRVQsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFVLFVBQVUsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUMzQyxPQUFPLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEcsT0FBTyxFQUFzQix1QkFBdUIsRUFBRSxPQUFPLEVBQWlCLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRXZILE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxLQUFLLGFBQWEsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUd4RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSw4REFBOEQsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7O0FBTzNHLE1BQU0sT0FBTyxnQkFBaUIsU0FBUSx1QkFBNEM7SUFzRDlFLFlBQ1csVUFBc0IsRUFDdEIsR0FBc0IsRUFDckIsZ0JBQWtDLEVBQ2xD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cnQge1xuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIE9uSW5pdCxcbiAgICBWaWV3Q2hpbGQsXG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBOZ1pvbmUsXG4gICAgSW5qZWN0LFxuICAgIE9uRGVzdHJveVxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRoeU5vdGlmeVNlcnZpY2UgfSBmcm9tICduZ3gtdGV0aHlzL25vdGlmeSc7XG5pbXBvcnQgeyBFZGl0b3IsIFRyYW5zZm9ybXMgfSBmcm9tICdzbGF0ZSc7XG5pbXBvcnQgeyBBbmd1bGFyRWRpdG9yLCBJU19TQUZBUkkgfSBmcm9tICdzbGF0ZS1hbmd1bGFyJztcbmltcG9ydCB7IENvZGVNaXJyb3JDb21wb25lbnQgfSBmcm9tICduZy1jb2RlbWlycm9yJztcbmltcG9ydCB7IENPREVNSVJST1JfUEFERElOR19UT1AsIENPREVfTU9ERVMsIERyb3Bkb3duTW9kZSwgVG9vbGJhckl0ZW1Nb2RlIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IERlZmF1bHRUb29sYmFySXRlbSwgVGhlQmFzZUVsZW1lbnRDb21wb25lbnQsIFRoZU1vZGUsIFRoZU1vZGVDb25maWcsIFRIRV9NT0RFX1RPS0VOIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBDb2RlRWxlbWVudCB9IGZyb20gJy4uLy4uL2N1c3RvbS10eXBlcyc7XG5pbXBvcnQgeyBDb2RlRWRpdG9yIH0gZnJvbSAnLi9jb2RlLmVkaXRvcic7XG5pbXBvcnQgKiBhcyBUaGVUcmFuc2Zvcm1zIGZyb20gJy4uLy4uL3RyYW5zZm9ybXMnO1xuaW1wb3J0IHsgZGVsYXksIHRha2UsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFRoeVJlc2l6ZUV2ZW50IH0gZnJvbSAnbmd4LXRldGh5cy9yZXNpemFibGUnO1xuaW1wb3J0IHsgVGhlQ29udGV4dFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jb250ZXh0LnNlcnZpY2UnO1xuaW1wb3J0IHsgZnJvbUV2ZW50LCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBUaGVUb29sYmFyRHJvcGRvd25Db21wb25lbnQgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL3Rvb2xiYXItZHJvcGRvd24vdG9vbGJhci1kcm9wZG93bi5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2Rpdlt0aGVDb2RlXScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NvZGUuY29tcG9uZW50Lmh0bWwnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFRoZUNvZGVDb21wb25lbnQgZXh0ZW5kcyBUaGVCYXNlRWxlbWVudENvbXBvbmVudDxDb2RlRWxlbWVudCwgRWRpdG9yPiBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgICBzdGFydFJlbmRlckNvZGVtaXJyb3IgPSBmYWxzZTtcbiAgICBkcm9wZG93bk1vZGUgPSBEcm9wZG93bk1vZGU7XG4gICAgbWF4SGVpZ2h0ID0gdGhpcy5jb25maWcubW9kZSA9PT0gVGhlTW9kZS5wcmludCA/IDAgOiAzNTAgLSBDT0RFTUlSUk9SX1BBRERJTkdfVE9QICogMjtcbiAgICBtZW51cyA9IENPREVfTU9ERVMubWFwKGl0ZW0gPT4ge1xuICAgICAgICByZXR1cm4geyBrZXk6IGl0ZW0udmFsdWUsIG5hbWU6IGl0ZW0uc2hvd05hbWUgfTtcbiAgICB9KTtcbiAgICBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICAgVG9vbGJhckl0ZW1Nb2RlID0gVG9vbGJhckl0ZW1Nb2RlO1xuICAgIGlzSGlnaHRMaWdodCA9IGZhbHNlO1xuICAgIHJlc2l6ZUhlaWdodDogbnVtYmVyID0gbnVsbDtcblxuICAgIG9wdGlvbnMgPSB7XG4gICAgICAgIG1vZGU6IHRoaXMubWVudXNbMF0ua2V5LFxuICAgICAgICBsaW5lTnVtYmVyczogZmFsc2UsXG4gICAgICAgIHJlYWRPbmx5OiBmYWxzZSxcbiAgICAgICAgYXV0b2ZvY3VzOiBmYWxzZSxcbiAgICAgICAgbGluZVdpc2VDb3B5Q3V0OiB0cnVlLFxuICAgICAgICBsaW5lV3JhcHBpbmc6IHRoaXMuY29uZmlnLm1vZGUgPT09IFRoZU1vZGUucHJpbnQsXG4gICAgICAgIGN1cnNvckJsaW5rUmF0ZTogNTAwXG4gICAgfTtcblxuICAgIGFjdGl2ZUxhbmd1YWdlOiBEZWZhdWx0VG9vbGJhckl0ZW0gPSB0aGlzLm1lbnVzWzBdO1xuXG4gICAgcmVzaXplQm91bmRzID0gbnVsbDtcblxuICAgIEBWaWV3Q2hpbGQoJ2NvZGVtaXJyb3InLCB7IHJlYWQ6IENvZGVNaXJyb3JDb21wb25lbnQsIHN0YXRpYzogZmFsc2UgfSlcbiAgICBjb2RlbWlycm9yOiBDb2RlTWlycm9yQ29tcG9uZW50O1xuXG4gICAgQFZpZXdDaGlsZChUaGVUb29sYmFyRHJvcGRvd25Db21wb25lbnQsIHsgcmVhZDogVGhlVG9vbGJhckRyb3Bkb3duQ29tcG9uZW50LCBzdGF0aWM6IGZhbHNlIH0pXG4gICAgdG9vbGJhckRyb3Bkb3duQ29tcG9uZW50OiBUaGVUb29sYmFyRHJvcGRvd25Db21wb25lbnQ7XG5cbiAgICBnZXQgY29kZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudC5jb250ZW50O1xuICAgIH1cblxuICAgIG9uQ29udGV4dENoYW5nZSgpIHtcbiAgICAgICAgc3VwZXIub25Db250ZXh0Q2hhbmdlKCk7XG4gICAgICAgIGlmICh0aGlzLmluaXRpYWxpemVkKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLnJlYWRPbmx5ICE9PSB0aGlzLnJlYWRvbmx5KSB7XG4gICAgICAgICAgICAgICAgdGhpcy51c2VSZWFkb25seSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5tb2RlICE9PSB0aGlzLmVsZW1lbnQubGFuZ3VhZ2UpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVzZU1vZGUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMubGluZVdyYXBwaW5nICE9PSB0aGlzLmVsZW1lbnQuYXV0b1dyYXApIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVzZUF1dG9XcmFwKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5yZXNpemVIZWlnaHQgIT09IHRoaXMuZWxlbWVudC5oZWlnaHQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVzZUhlaWdodCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBwdWJsaWMgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJpdmF0ZSB0aHlOb3RpZnlTZXJ2aWNlOiBUaHlOb3RpZnlTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGNvbnRleHRTZXJ2aWNlOiBUaGVDb250ZXh0U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcbiAgICAgICAgQEluamVjdChUSEVfTU9ERV9UT0tFTilcbiAgICAgICAgcHJpdmF0ZSBjb25maWc6IFRoZU1vZGVDb25maWdcbiAgICApIHtcbiAgICAgICAgc3VwZXIoZWxlbWVudFJlZiwgY2RyKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICAgICAgZnJvbUV2ZW50KHRoaXMubmF0aXZlRWxlbWVudCwgJ21vdXNlZG93bicpXG4gICAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoZXZlbnQgPT4ge1xuICAgICAgICAgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNCbG9ja09wZXJhdGlvbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlzQ29sbGFwc2VkQW5kTm9uUmVhZG9ubHkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcudGhlLWNvZGUtYmxvY2stb3BlcmF0aW9uJykuY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNDb2RlbWlycm9yID0gdGhpcy5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5uZy1jb2RlbWlycm9yJykuY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0hpZ2h0TGlnaHQgPSAhaXNDb2RlbWlycm9yICYmICFpc0Jsb2NrT3BlcmF0aW9uO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmFkZCgndGhlLWNvZGUtY29udGFpbmVyJyk7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICBpZiAodGhpcy5yZWFkb25seSkge1xuICAgICAgICAgICAgLy8gZGVsYXkgMjBtc1xuICAgICAgICAgICAgLy8gY2NvZGVtaXJyb3IgaXMgdG9vIHNsb3dcbiAgICAgICAgICAgIHRoaXMubmdab25lLm9uU3RhYmxlLnBpcGUodGFrZSgxKSwgZGVsYXkoMjApKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyQ29kZW1pcnJvcigpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBlZGl0IG1vZGUgY2FuIG5vdCBkZWxheVxuICAgICAgICAgICAgdGhpcy5uZ1pvbmUub25TdGFibGUucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyQ29kZW1pcnJvcigpO1xuICAgICAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZUNvZGVtaXJyb3JGb2N1cygpO1xuICAgICAgICAgICAgICAgIHRoaXMucmVzaXplQm91bmRzID0ge1xuICAgICAgICAgICAgICAgICAgICBuYXRpdmVFbGVtZW50OiB0aGlzLmNvbnRleHRTZXJ2aWNlLmdldEVkaXRhYmxlRWxlbWVudCgpXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmVuZGVyQ29kZW1pcnJvcigpIHtcbiAgICAgICAgdGhpcy5zdGFydFJlbmRlckNvZGVtaXJyb3IgPSB0cnVlO1xuICAgICAgICB0aGlzLnVzZVJlYWRvbmx5KCk7XG4gICAgICAgIHRoaXMudXNlTW9kZSgpO1xuICAgICAgICB0aGlzLnVzZUF1dG9XcmFwKCk7XG4gICAgICAgIHRoaXMudXNlSGVpZ2h0KCk7XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBpbml0aWFsaXplQ29kZW1pcnJvckZvY3VzKCkge1xuICAgICAgICBpZiAodGhpcy5pc0NvbGxhcHNlZEFuZE5vblJlYWRvbmx5KSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc0NvbGxhcHNlZEFuZE5vblJlYWRvbmx5ICYmIHRoaXMuY29kZW1pcnJvciAmJiB0aGlzLmNvZGVtaXJyb3IuZWRpdG9yICYmICF0aGlzLmNvZGVtaXJyb3IuZWRpdG9yLmhhc0ZvY3VzKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgQW5ndWxhckVkaXRvci5ibHVyKHRoaXMuZWRpdG9yKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb2RlbWlycm9yLmVkaXRvci5mb2N1cygpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvZGVtaXJyb3IuZWRpdG9yLnJlZnJlc2goKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCAyMDApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY29kZUNoYW5nZSgkZXZlbnQpIHtcbiAgICAgICAgdGhpcy5pc0hpZ2h0TGlnaHQgPSBmYWxzZTtcbiAgICAgICAgQ29kZUVkaXRvci5zZXRDb2RlQXR0cmlidXRlKHRoaXMuZWRpdG9yLCB0aGlzLmVsZW1lbnQsIHsgY29udGVudDogJGV2ZW50IH0pO1xuICAgIH1cblxuICAgIG9uRGVsZXRlKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIFRoZVRyYW5zZm9ybXMuZGVsZXRlRWxlbWVudCh0aGlzLmVkaXRvciwgdGhpcy5lbGVtZW50KTtcbiAgICB9XG5cbiAgICBvbkNvcHkoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIC8vIHJlbW92ZSBjb2RlbW9ycmlyIHNlbGVjdGlvblxuICAgICAgICBjb25zdCBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG4gICAgICAgIGlmIChzZWxlY3Rpb24ucmFuZ2VDb3VudCA+IDApIHtcbiAgICAgICAgICAgIHNlbGVjdGlvbi5yZW1vdmVBbGxSYW5nZXMoKTtcbiAgICAgICAgfVxuICAgICAgICBBbmd1bGFyRWRpdG9yLmZvY3VzKHRoaXMuZWRpdG9yKTtcbiAgICAgICAgVHJhbnNmb3Jtcy5zZWxlY3QodGhpcy5lZGl0b3IsIEFuZ3VsYXJFZGl0b3IuZmluZFBhdGgodGhpcy5lZGl0b3IsIHRoaXMuZWxlbWVudCkpO1xuXG4gICAgICAgIGlmIChJU19TQUZBUkkpIHtcbiAgICAgICAgICAgIHRoaXMuc2FmYXJpQ29weSgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ2NvcHknKSA/IHRoaXMudGh5Tm90aWZ5U2VydmljZS5zdWNjZXNzKCflpI3liLbmiJDlip8nKSA6IHRoaXMudGh5Tm90aWZ5U2VydmljZS5lcnJvcign5aSN5Yi25aSx6LSlJyk7XG4gICAgICAgIEFuZ3VsYXJFZGl0b3IuZGVzZWxlY3QodGhpcy5lZGl0b3IpO1xuICAgIH1cblxuICAgIHNhZmFyaUNvcHkoKSB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRFbGVtZW50ID0gQW5ndWxhckVkaXRvci50b0RPTU5vZGUodGhpcy5lZGl0b3IsIHRoaXMuZWxlbWVudCk7XG4gICAgICAgIGNvbnN0IGJsb2NrQ2FyZCA9IGN1cnJlbnRFbGVtZW50LmNsb3Nlc3QoJy5zbGF0ZS1ibG9jay1jYXJkJyk7XG4gICAgICAgIGNvbnN0IHNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdwcmUnKTtcblxuICAgICAgICBzcGFuLmFwcGVuZENoaWxkKGJsb2NrQ2FyZC5jbG9uZU5vZGUodHJ1ZSkpO1xuICAgICAgICBzcGFuLnRleHRDb250ZW50ID0gdGhpcy5lbGVtZW50LmNvbnRlbnQ7XG4gICAgICAgIGlmICh0aGlzLmVsZW1lbnQubGFuZ3VhZ2UpIHtcbiAgICAgICAgICAgIHNwYW4uc2V0QXR0cmlidXRlKCdkYXRhLWxhbmd1YWdlJywgdGhpcy5lbGVtZW50Lmxhbmd1YWdlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5lbGVtZW50LmF1dG9XcmFwKSB7XG4gICAgICAgICAgICBzcGFuLnNldEF0dHJpYnV0ZSgnZGF0YS1hdXRvLXdyYXAnLCBTdHJpbmcodGhpcy5lbGVtZW50LmF1dG9XcmFwKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuZWxlbWVudC5oZWlnaHQpIHtcbiAgICAgICAgICAgIHNwYW4uc2V0QXR0cmlidXRlKCdkYXRhLWhlaWdodCcsIFN0cmluZyh0aGlzLmVsZW1lbnQuaGVpZ2h0KSk7XG4gICAgICAgIH1cbiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChzcGFuKTtcblxuICAgICAgICBjb25zdCBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG4gICAgICAgIGNvbnN0IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTtcbiAgICAgICAgaWYgKHNlbGVjdGlvbikge1xuICAgICAgICAgICAgc2VsZWN0aW9uLnJlbW92ZUFsbFJhbmdlcygpO1xuICAgICAgICAgICAgcmFuZ2Uuc2VsZWN0Tm9kZShzcGFuKTtcbiAgICAgICAgICAgIHNlbGVjdGlvbi5hZGRSYW5nZShyYW5nZSk7XG5cbiAgICAgICAgICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCdjb3B5JykgPyB0aGlzLnRoeU5vdGlmeVNlcnZpY2Uuc3VjY2Vzcygn5aSN5Yi25oiQ5YqfJykgOiB0aGlzLnRoeU5vdGlmeVNlcnZpY2UuZXJyb3IoJ+WkjeWItuWksei0pScpO1xuICAgICAgICAgICAgc2VsZWN0aW9uLnJlbW92ZUFsbFJhbmdlcygpO1xuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChzcGFuKTtcbiAgICAgICAgICAgIEFuZ3VsYXJFZGl0b3IuZGVzZWxlY3QodGhpcy5lZGl0b3IpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZm9jdXNDaGFuZ2UoY29kZU1pcnJvckZvY3VzZWQ6IGJvb2xlYW4pIHtcbiAgICAgICAgaWYgKGNvZGVNaXJyb3JGb2N1c2VkKSB7XG4gICAgICAgICAgICB0aGlzLmlzSGlnaHRMaWdodCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25DaGFuZ2VMYW5ndWFnZSA9IGl0ZW0gPT4ge1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSB7IC4uLnRoaXMub3B0aW9ucywgbW9kZTogaXRlbS5rZXkgfTtcbiAgICAgICAgdGhpcy5hY3RpdmVMYW5ndWFnZSA9IGl0ZW07XG4gICAgICAgIENvZGVFZGl0b3Iuc2V0Q29kZUF0dHJpYnV0ZSh0aGlzLmVkaXRvciwgdGhpcy5lbGVtZW50LCB7IGxhbmd1YWdlOiBpdGVtLmtleSB9KTtcbiAgICB9O1xuXG4gICAgdXNlTW9kZSgpIHtcbiAgICAgICAgdGhpcy5vcHRpb25zID0geyAuLi50aGlzLm9wdGlvbnMsIG1vZGU6IHRoaXMuZWxlbWVudC5sYW5ndWFnZSB9O1xuICAgICAgICBjb25zdCBtZW51SXRlbSA9IHRoaXMubWVudXMuZmluZChpID0+IGkua2V5ID09PSB0aGlzLmVsZW1lbnQubGFuZ3VhZ2UpO1xuICAgICAgICBpZiAobWVudUl0ZW0pIHtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlTGFuZ3VhZ2UgPSBtZW51SXRlbTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVzZUF1dG9XcmFwKCkge1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSB7IC4uLnRoaXMub3B0aW9ucywgbGluZVdyYXBwaW5nOiB0aGlzLmVsZW1lbnQuYXV0b1dyYXAgfHwgZmFsc2UgfTtcbiAgICB9XG5cbiAgICB1c2VIZWlnaHQoKSB7XG4gICAgICAgIGlmICh0aGlzLmVsZW1lbnQuaGVpZ2h0ICYmIHRoaXMuY29uZmlnLm1vZGUgIT09IFRoZU1vZGUucHJpbnQpIHtcbiAgICAgICAgICAgIHRoaXMucmVzaXplSGVpZ2h0ID0gdGhpcy5lbGVtZW50LmhlaWdodDtcbiAgICAgICAgICAgIHRoaXMubWF4SGVpZ2h0ID0gdGhpcy5lbGVtZW50LmhlaWdodDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVzZVJlYWRvbmx5KCkge1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSB7IC4uLnRoaXMub3B0aW9ucywgcmVhZE9ubHk6IHRoaXMucmVhZG9ubHksIGN1cnNvckJsaW5rUmF0ZTogdGhpcy5yZWFkb25seSA/IC0xIDogNTAwIH07XG4gICAgfVxuXG4gICAgb25SZXNpemUoeyBoZWlnaHQgfTogVGh5UmVzaXplRXZlbnQpIHtcbiAgICAgICAgdGhpcy5yZXNpemVIZWlnaHQgPSBoZWlnaHQ7XG4gICAgICAgIHRoaXMubWF4SGVpZ2h0ID0gaGVpZ2h0O1xuICAgIH1cblxuICAgIG9uRW5kUmVzaXplKCkge1xuICAgICAgICBUcmFuc2Zvcm1zLnNlbGVjdCh0aGlzLmVkaXRvciwgQW5ndWxhckVkaXRvci5maW5kUGF0aCh0aGlzLmVkaXRvciwgdGhpcy5lbGVtZW50KSk7XG4gICAgICAgIENvZGVFZGl0b3Iuc2V0Q29kZUF0dHJpYnV0ZSh0aGlzLmVkaXRvciwgdGhpcy5lbGVtZW50LCB7IGhlaWdodDogdGhpcy5yZXNpemVIZWlnaHQgfSk7XG4gICAgfVxuXG4gICAgb25DaGFuZ2VXcmFwKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuaXNIaWdodExpZ2h0ID0gZmFsc2U7XG4gICAgICAgIHRoaXMub3B0aW9ucyA9IHsgLi4udGhpcy5vcHRpb25zLCBsaW5lV3JhcHBpbmc6IHZhbHVlIHx8IGZhbHNlIH07XG4gICAgICAgIENvZGVFZGl0b3Iuc2V0Q29kZUF0dHJpYnV0ZSh0aGlzLmVkaXRvciwgdGhpcy5lbGVtZW50LCB7IGF1dG9XcmFwOiB2YWx1ZSA/IHZhbHVlIDogbnVsbCB9KTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgICB9XG59XG4iLCI8dGh5LWFjdGlvbnNcbiAgICAqbmdJZj1cIihpc0NvbGxhcHNlZEFuZE5vblJlYWRvbmx5ICYmIGNvZGVtaXJyb3IpIHx8IHRvb2xiYXJEcm9wZG93bkNvbXBvbmVudD8uaXNPcGVuXCJcbiAgICBjb250ZW50ZWRpdGFibGU9XCJmYWxzZVwiXG4gICAgY2xhc3M9XCJ0aGUtY29kZS1ibG9jay1vcGVyYXRpb25cIlxuICAgIHRoeVNpemU9XCJ4eHNcIlxuPlxuICAgIDx0aGUtdG9vbGJhci1kcm9wZG93blxuICAgICAgICBbbWVudXNdPVwibWVudXNcIlxuICAgICAgICBbdG9vbGJhckl0ZW1dPVwiYWN0aXZlTGFuZ3VhZ2VcIlxuICAgICAgICBbZHJvcGRvd25JdGVtS2V5XT1cImFjdGl2ZUxhbmd1YWdlPy5rZXlcIlxuICAgICAgICBbaXRlbU1vdXNlZG93bkhhbmRsZV09XCJvbkNoYW5nZUxhbmd1YWdlXCJcbiAgICA+XG4gICAgPC90aGUtdG9vbGJhci1kcm9wZG93bj5cbiAgICA8c3BhbiBjbGFzcz1cImF1dG8td3JhcCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIHB4LTIgdGV4dC1zZWNvbmRhcnlcIj5cbiAgICAgICAgPHNwYW4+6Ieq5Yqo5o2i6KGMPC9zcGFuPlxuICAgICAgICA8dGh5LXN3aXRjaFxuICAgICAgICAgICAgY2xhc3M9XCJhdXRvLXdyYXAtYnRuIGQtZmxleCBtbC0xXCJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwib3B0aW9ucy5saW5lV3JhcHBpbmdcIlxuICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25DaGFuZ2VXcmFwKCRldmVudClcIlxuICAgICAgICAgICAgdGh5U2l6ZT1cInNtXCJcbiAgICAgICAgPjwvdGh5LXN3aXRjaD5cbiAgICA8L3NwYW4+XG4gICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6O1wiIHRoeUFjdGlvbiB0aHlBY3Rpb25JY29uPVwiY29weVwiIHRoeVRvb2x0aXA9XCLlpI3liLZcIiB0aHlUb29sdGlwUGxhY2VtZW50PVwidG9wXCIgKG1vdXNlZG93bik9XCJvbkNvcHkoJGV2ZW50KVwiPjwvYT5cbiAgICA8dGh5LWRpdmlkZXIgY2xhc3M9XCJteC0yIGFsaWduLXNlbGYtY2VudGVyXCIgW3RoeVZlcnRpY2FsXT1cInRydWVcIj48L3RoeS1kaXZpZGVyPlxuICAgIDxhXG4gICAgICAgIGhyZWY9XCJqYXZhc2NyaXB0OjtcIlxuICAgICAgICB0aHlBY3Rpb25cbiAgICAgICAgdGh5VHlwZT1cImRhbmdlclwiXG4gICAgICAgIHRoeUFjdGlvbkljb249XCJ0cmFzaFwiXG4gICAgICAgIHRoeVRvb2x0aXA9XCLliKDpmaRcIlxuICAgICAgICB0aHlUb29sdGlwUGxhY2VtZW50PVwidG9wXCJcbiAgICAgICAgKG1vdXNlZG93bik9XCJvbkRlbGV0ZSgkZXZlbnQpXCJcbiAgICA+PC9hPlxuPC90aHktYWN0aW9ucz5cblxuPHNsYXRlLWNoaWxkcmVuIFtjaGlsZHJlbl09XCJjaGlsZHJlblwiIFtjb250ZXh0XT1cImNoaWxkcmVuQ29udGV4dFwiIFt2aWV3Q29udGV4dF09XCJ2aWV3Q29udGV4dFwiPjwvc2xhdGUtY2hpbGRyZW4+XG5cbjwhLS0g5Y+q6K+75qih5byP5LiLQ29kZU1pcnJvci1zaXplcumrmOW6puavlOe8lui+keaooeW8j+S4i+WkmjJweO+8jOiuvue9rnRoeU1pbkhlaWdodOS4ujQ2cHjpmLLmraLmi5bmi73liLDmnIDlsI/pq5jluqbml7blj6ror7vmqKHlvI/kuIvlh7rnjrDmu5rliqjmnaEgIC0tPlxuPGRpdlxuICAgIHRoeVJlc2l6YWJsZVxuICAgIFt0aHlNaW5IZWlnaHRdPVwiNDZcIlxuICAgIFt0aHlCb3VuZHNdPVwicmVzaXplQm91bmRzXCJcbiAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cInJlc2l6ZUhlaWdodFwiXG4gICAgKHRoeVJlc2l6ZSk9XCJvblJlc2l6ZSgkZXZlbnQpXCJcbiAgICAodGh5UmVzaXplRW5kKT1cIm9uRW5kUmVzaXplKClcIlxuICAgIGNsYXNzPVwicmVzaXplLWNvZGUtY29udGFpbmVyXCJcbiAgICBbbmdDbGFzc109XCJ7IGZvY3VzOiBpc0NvbGxhcHNlZEFuZE5vblJlYWRvbmx5LCByZWFkb25seTogb3B0aW9ucy5yZWFkT25seSwgYWN0aXZlOiBpc0hpZ2h0TGlnaHQgJiYgaXNDb2xsYXBzZWRBbmROb25SZWFkb25seSB9XCJcbj5cbiAgICA8bmctY29kZW1pcnJvclxuICAgICAgICAqbmdJZj1cInN0YXJ0UmVuZGVyQ29kZW1pcnJvclwiXG4gICAgICAgICNjb2RlbWlycm9yXG4gICAgICAgIGNvbnRlbnRlZGl0YWJsZT1cImZhbHNlXCJcbiAgICAgICAgY2xhc3M9XCJuZy1jb2RlbWlycm9yLXdyYXBwZXJcIlxuICAgICAgICBbbmdTdHlsZV09XCJ7IG1heEhlaWdodDogbWF4SGVpZ2h0ID4gMCA/IG1heEhlaWdodCArICdweCcgOiAnYXV0bycgfVwiXG4gICAgICAgIFtvcHRpb25zXT1cIm9wdGlvbnNcIlxuICAgICAgICBbbmdNb2RlbF09XCJjb2RlXCJcbiAgICAgICAgW2RlbGF5UmVmcmVzaFRpbWVdPVwiMzAwXCJcbiAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiY29kZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgKGZvY3VzQ2hhbmdlKT1cImZvY3VzQ2hhbmdlKCRldmVudClcIlxuICAgICAgICBbYXV0b01heEhlaWdodF09XCJtYXhIZWlnaHRcIlxuICAgID5cbiAgICA8L25nLWNvZGVtaXJyb3I+XG4gICAgPHRoeS1yZXNpemUtaGFuZGxlIHRoeURpcmVjdGlvbj1cImJvdHRvbVwiIGNsYXNzPVwiY29kZS1yZXNpemUtaWNvblwiICpuZ0lmPVwiaXNDb2xsYXBzZWRBbmROb25SZWFkb25seVwiPjwvdGh5LXJlc2l6ZS1oYW5kbGU+XG48L2Rpdj5cbiJdfQ==
|
|
302
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvcGx1Z2lucy9jb2RlL2NvZGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3JjL3BsdWdpbnMvY29kZS9jb2RlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFFSCx1QkFBdUIsRUFFdkIsU0FBUyxFQUVULE1BQU0sRUFJTixXQUFXLEVBQ1gsU0FBUyxFQUVaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUlwRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQyxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RCxPQUFPLEVBQVUsVUFBVSxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQzNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDhEQUE4RCxDQUFDO0FBQzNHLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXBHLE9BQU8sRUFBc0IsdUJBQXVCLEVBQUUsT0FBTyxFQUFpQixjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN2SCxPQUFPLEtBQUssVUFBVSxNQUFNLGVBQWUsQ0FBQztBQUU1QyxPQUFPLEtBQUssYUFBYSxNQUFNLGtCQUFrQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBTzNDLE1BQU0sT0FBTyxnQkFBaUIsU0FBUSx1QkFBNEM7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QUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQy9GLENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzdCLENBQUM7OzZHQW5UUSxnQkFBZ0Isb0tBMERiLGNBQWM7aUdBMURqQixnQkFBZ0IsbUlBbUNLLFdBQVcsaUhBR1IsbUJBQW1CLHdFQUd6QywyQkFBMkIsMkJBQVUsMkJBQTJCLG9EQzlFL0UscXBGQTZEQTsyRkR4QmEsZ0JBQWdCO2tCQUw1QixTQUFTOytCQUNJLGNBQWMsbUJBRVAsdUJBQXVCLENBQUMsTUFBTTs7MEJBNEQxQyxNQUFNOzJCQUFDLGNBQWM7MEhBdEIxQixPQUFPO3NCQUROLFNBQVM7dUJBQUMsU0FBUyxFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUl6RCxVQUFVO3NCQURULFNBQVM7dUJBQUMsWUFBWSxFQUFFLEVBQUUsSUFBSSxFQUFFLG1CQUFtQixFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBSXJFLHdCQUF3QjtzQkFEdkIsU0FBUzt1QkFBQywyQkFBMkIsRUFBRSxFQUFFLElBQUksRUFBRSwyQkFBMkIsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29ubmVjdGVkUG9zaXRpb24sIE92ZXJsYXkgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgSW5qZWN0LFxuICAgIE5nWm9uZSxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3Q29udGFpbmVyUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29kZU1pcnJvckNvbXBvbmVudCB9IGZyb20gJ25nLWNvZGVtaXJyb3InO1xuaW1wb3J0IHsgVGh5Tm90aWZ5U2VydmljZSB9IGZyb20gJ25neC10ZXRoeXMvbm90aWZ5JztcbmltcG9ydCB7IFRoeVBvcG92ZXIsIFRoeVBvcG92ZXJSZWYgfSBmcm9tICduZ3gtdGV0aHlzL3BvcG92ZXInO1xuaW1wb3J0IHsgVGh5UmVzaXplRXZlbnQgfSBmcm9tICduZ3gtdGV0aHlzL3Jlc2l6YWJsZSc7XG5pbXBvcnQgeyBmcm9tRXZlbnQsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlbGF5LCB0YWtlLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBFZGl0b3IsIFRyYW5zZm9ybXMgfSBmcm9tICdzbGF0ZSc7XG5pbXBvcnQgeyBBbmd1bGFyRWRpdG9yLCBJU19TQUZBUkkgfSBmcm9tICdzbGF0ZS1hbmd1bGFyJztcbmltcG9ydCB7IFRoZVRvb2xiYXJEcm9wZG93bkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvdG9vbGJhci1kcm9wZG93bi90b29sYmFyLWRyb3Bkb3duLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDT0RFTUlSUk9SX1BBRERJTkdfVE9QLCBDT0RFX01PREVTLCBEcm9wZG93bk1vZGUsIFRvb2xiYXJJdGVtTW9kZSB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBDb2RlRWxlbWVudCB9IGZyb20gJy4uLy4uL2N1c3RvbS10eXBlcyc7XG5pbXBvcnQgeyBEZWZhdWx0VG9vbGJhckl0ZW0sIFRoZUJhc2VFbGVtZW50Q29tcG9uZW50LCBUaGVNb2RlLCBUaGVNb2RlQ29uZmlnLCBUSEVfTU9ERV9UT0tFTiB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0ICogYXMgVGhlUXVlcmllcyBmcm9tICcuLi8uLi9xdWVyaWVzJztcbmltcG9ydCB7IFRoZUNvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY29udGV4dC5zZXJ2aWNlJztcbmltcG9ydCAqIGFzIFRoZVRyYW5zZm9ybXMgZnJvbSAnLi4vLi4vdHJhbnNmb3Jtcyc7XG5pbXBvcnQgeyBDb2RlRWRpdG9yIH0gZnJvbSAnLi9jb2RlLmVkaXRvcic7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZGl2W3RoZUNvZGVdJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY29kZS5jb21wb25lbnQuaHRtbCcsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgVGhlQ29kZUNvbXBvbmVudCBleHRlbmRzIFRoZUJhc2VFbGVtZW50Q29tcG9uZW50PENvZGVFbGVtZW50LCBFZGl0b3I+IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICAgIHN0YXJ0UmVuZGVyQ29kZW1pcnJvciA9IGZhbHNlO1xuXG4gICAgZHJvcGRvd25Nb2RlID0gRHJvcGRvd25Nb2RlO1xuXG4gICAgbWF4SGVpZ2h0ID0gdGhpcy5jb25maWcubW9kZSA9PT0gVGhlTW9kZS5wcmludCA/IDAgOiAzNTAgLSBDT0RFTUlSUk9SX1BBRERJTkdfVE9QICogMjtcblxuICAgIG1lbnVzID0gQ09ERV9NT0RFUy5tYXAoaXRlbSA9PiB7XG4gICAgICAgIHJldHVybiB7IGtleTogaXRlbS52YWx1ZSwgbmFtZTogaXRlbS5zaG93TmFtZSB9O1xuICAgIH0pO1xuXG4gICAgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgVG9vbGJhckl0ZW1Nb2RlID0gVG9vbGJhckl0ZW1Nb2RlO1xuXG4gICAgaXNIaWdodExpZ2h0ID0gZmFsc2U7XG5cbiAgICByZXNpemVIZWlnaHQ6IG51bWJlciA9IG51bGw7XG5cbiAgICBvcHRpb25zID0ge1xuICAgICAgICBtb2RlOiB0aGlzLm1lbnVzWzBdLmtleSxcbiAgICAgICAgbGluZU51bWJlcnM6IGZhbHNlLFxuICAgICAgICByZWFkT25seTogZmFsc2UsXG4gICAgICAgIGF1dG9mb2N1czogZmFsc2UsXG4gICAgICAgIGxpbmVXaXNlQ29weUN1dDogdHJ1ZSxcbiAgICAgICAgbGluZVdyYXBwaW5nOiB0aGlzLmNvbmZpZy5tb2RlID09PSBUaGVNb2RlLnByaW50LFxuICAgICAgICBjdXJzb3JCbGlua1JhdGU6IDUwMFxuICAgIH07XG5cbiAgICBhY3RpdmVMYW5ndWFnZTogRGVmYXVsdFRvb2xiYXJJdGVtID0gdGhpcy5tZW51c1swXTtcblxuICAgIHJlc2l6ZUJvdW5kcyA9IG51bGw7XG5cbiAgICB0b29sYmFyUG9wb3ZlclJlZjogVGh5UG9wb3ZlclJlZjxhbnk+O1xuXG4gICAgQFZpZXdDaGlsZCgndG9vbGJhcicsIHsgcmVhZDogVGVtcGxhdGVSZWYsIHN0YXRpYzogdHJ1ZSB9KVxuICAgIHRvb2xiYXI6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBAVmlld0NoaWxkKCdjb2RlbWlycm9yJywgeyByZWFkOiBDb2RlTWlycm9yQ29tcG9uZW50LCBzdGF0aWM6IGZhbHNlIH0pXG4gICAgY29kZW1pcnJvcjogQ29kZU1pcnJvckNvbXBvbmVudDtcblxuICAgIEBWaWV3Q2hpbGQoVGhlVG9vbGJhckRyb3Bkb3duQ29tcG9uZW50LCB7IHJlYWQ6IFRoZVRvb2xiYXJEcm9wZG93bkNvbXBvbmVudCwgc3RhdGljOiBmYWxzZSB9KVxuICAgIHRvb2xiYXJEcm9wZG93bkNvbXBvbmVudDogVGhlVG9vbGJhckRyb3Bkb3duQ29tcG9uZW50O1xuXG4gICAgZ2V0IGNvZGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnQuY29udGVudDtcbiAgICB9XG5cbiAgICBnZXQgaXNUb29sYmFyT3BlbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudG9vbGJhclBvcG92ZXJSZWYgJiYgdGhpcy50b29sYmFyUG9wb3ZlclJlZi5nZXRPdmVybGF5UmVmKCkgJiYgdGhpcy50b29sYmFyUG9wb3ZlclJlZi5nZXRPdmVybGF5UmVmKCkuaGFzQXR0YWNoZWQoKTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIHB1YmxpYyBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIHRoeU5vdGlmeVNlcnZpY2U6IFRoeU5vdGlmeVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgY29udGV4dFNlcnZpY2U6IFRoZUNvbnRleHRTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIG5nWm9uZTogTmdab25lLFxuICAgICAgICBASW5qZWN0KFRIRV9NT0RFX1RPS0VOKVxuICAgICAgICBwcml2YXRlIGNvbmZpZzogVGhlTW9kZUNvbmZpZyxcbiAgICAgICAgcHJpdmF0ZSB0aHlQb3BvdmVyOiBUaHlQb3BvdmVyLFxuICAgICAgICBwcml2YXRlIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgICAgIHByaXZhdGUgb3ZlcmxheTogT3ZlcmxheVxuICAgICkge1xuICAgICAgICBzdXBlcihlbGVtZW50UmVmLCBjZHIpO1xuICAgIH1cblxuICAgIG9uQ29udGV4dENoYW5nZSgpIHtcbiAgICAgICAgc3VwZXIub25Db250ZXh0Q2hhbmdlKCk7XG5cbiAgICAgICAgaWYgKHRoaXMuaXNDb2xsYXBzZWRBbmROb25SZWFkb25seSkge1xuICAgICAgICAgICAgdGhpcy5vcGVuVG9vbGJhcigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jbG9zZVRvb2xiYXIoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmluaXRpYWxpemVkKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLnJlYWRPbmx5ICE9PSB0aGlzLnJlYWRvbmx5KSB7XG4gICAgICAgICAgICAgICAgdGhpcy51c2VSZWFkb25seSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5tb2RlICE9PSB0aGlzLmVsZW1lbnQubGFuZ3VhZ2UpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVzZU1vZGUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMubGluZVdyYXBwaW5nICE9PSB0aGlzLmVsZW1lbnQuYXV0b1dyYXApIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVzZUF1dG9XcmFwKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5yZXNpemVIZWlnaHQgIT09IHRoaXMuZWxlbWVudC5oZWlnaHQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVzZUhlaWdodCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgICAgIGZyb21FdmVudCh0aGlzLm5hdGl2ZUVsZW1lbnQsICdtb3VzZWRvd24nKVxuICAgICAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKGV2ZW50ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzQmxvY2tPcGVyYXRpb24gPVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0NvbGxhcHNlZEFuZE5vblJlYWRvbmx5ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLnRoZS1jb2RlLWJsb2NrLW9wZXJhdGlvbicpPy5jb250YWlucyhldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpc0NvZGVtaXJyb3IgPSB0aGlzLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLm5nLWNvZGVtaXJyb3InKT8uY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0hpZ2h0TGlnaHQgPSAhaXNDb2RlbWlycm9yICYmICFpc0Jsb2NrT3BlcmF0aW9uO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmFkZCgndGhlLWNvZGUtY29udGFpbmVyJyk7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICBpZiAodGhpcy5yZWFkb25seSkge1xuICAgICAgICAgICAgLy8gZGVsYXkgMjBtc1xuICAgICAgICAgICAgLy8gY2NvZGVtaXJyb3IgaXMgdG9vIHNsb3dcbiAgICAgICAgICAgIHRoaXMubmdab25lLm9uU3RhYmxlLnBpcGUodGFrZSgxKSwgZGVsYXkoMjApKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyQ29kZW1pcnJvcigpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBlZGl0IG1vZGUgY2FuIG5vdCBkZWxheVxuICAgICAgICAgICAgdGhpcy5uZ1pvbmUub25TdGFibGUucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyQ29kZW1pcnJvcigpO1xuICAgICAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZUNvZGVtaXJyb3JGb2N1cygpO1xuICAgICAgICAgICAgICAgIHRoaXMucmVzaXplQm91bmRzID0ge1xuICAgICAgICAgICAgICAgICAgICBuYXRpdmVFbGVtZW50OiB0aGlzLmNvbnRleHRTZXJ2aWNlLmdldEVkaXRhYmxlRWxlbWVudCgpXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb3BlblRvb2xiYXIoKSB7XG4gICAgICAgIGlmICghVGhlUXVlcmllcy5pc0dsb2JhbENvbGxhcHNlZCh0aGlzLmVkaXRvcikgfHwgdGhpcy5pc1Rvb2xiYXJPcGVuKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy50b29sYmFyUG9wb3ZlclJlZiA9IHRoaXMudGh5UG9wb3Zlci5vcGVuKHRoaXMudG9vbGJhciwge1xuICAgICAgICAgICAgb3JpZ2luOiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgIHZpZXdDb250YWluZXJSZWY6IHRoaXMudmlld0NvbnRhaW5lclJlZixcbiAgICAgICAgICAgIHBhbmVsQ2xhc3M6ICd0aGUtcGx1Z2luLXRvb2xiYXItcG9wb3ZlcicsXG4gICAgICAgICAgICBtaW5XaWR0aDogMCxcbiAgICAgICAgICAgIG1hbnVhbENsb3N1cmU6IHRydWUsXG4gICAgICAgICAgICBoYXNCYWNrZHJvcDogZmFsc2UsXG4gICAgICAgICAgICBpbnNpZGVDbG9zYWJsZTogZmFsc2UsXG4gICAgICAgICAgICBvdXRzaWRlQ2xvc2FibGU6IGZhbHNlLFxuICAgICAgICAgICAgc2Nyb2xsU3RyYXRlZ3k6IHRoaXMub3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLnJlcG9zaXRpb24oKVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy50b29sYmFyUG9wb3ZlclJlZj8uZ2V0T3ZlcmxheVJlZigpLnVwZGF0ZVBvc2l0aW9uU3RyYXRlZ3kodGhpcy5jcmVhdGVQb3NpdGlvblN0cmF0ZWd5KCkpO1xuICAgIH1cblxuICAgIGNsb3NlVG9vbGJhcigpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNUb29sYmFyT3Blbikge1xuICAgICAgICAgICAgdGhpcy50b29sYmFyUG9wb3ZlclJlZi5jbG9zZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY3JlYXRlUG9zaXRpb25TdHJhdGVneSgpIHtcbiAgICAgICAgY29uc3QgdG9wTGVmdFBvc2l0aW9uOiBDb25uZWN0ZWRQb3NpdGlvbiA9IHtcbiAgICAgICAgICAgIG9yaWdpblg6ICdzdGFydCcsXG4gICAgICAgICAgICBvcmlnaW5ZOiAndG9wJyxcbiAgICAgICAgICAgIG92ZXJsYXlYOiAnc3RhcnQnLFxuICAgICAgICAgICAgb3ZlcmxheVk6ICdib3R0b20nLFxuICAgICAgICAgICAgb2Zmc2V0WDogMCxcbiAgICAgICAgICAgIG9mZnNldFk6IC00XG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiB0aGlzLm92ZXJsYXlcbiAgICAgICAgICAgIC5wb3NpdGlvbigpXG4gICAgICAgICAgICAuZmxleGlibGVDb25uZWN0ZWRUbyh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudClcbiAgICAgICAgICAgIC53aXRoRmxleGlibGVEaW1lbnNpb25zKGZhbHNlKVxuICAgICAgICAgICAgLndpdGhHcm93QWZ0ZXJPcGVuKGZhbHNlKVxuICAgICAgICAgICAgLndpdGhQdXNoKGZhbHNlKVxuICAgICAgICAgICAgLndpdGhQb3NpdGlvbnMoW3RvcExlZnRQb3NpdGlvbl0pO1xuICAgIH1cblxuICAgIHJlbmRlckNvZGVtaXJyb3IoKSB7XG4gICAgICAgIHRoaXMuc3RhcnRSZW5kZXJDb2RlbWlycm9yID0gdHJ1ZTtcbiAgICAgICAgdGhpcy51c2VSZWFkb25seSgpO1xuICAgICAgICB0aGlzLnVzZU1vZGUoKTtcbiAgICAgICAgdGhpcy51c2VBdXRvV3JhcCgpO1xuICAgICAgICB0aGlzLnVzZUhlaWdodCgpO1xuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgaW5pdGlhbGl6ZUNvZGVtaXJyb3JGb2N1cygpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNDb2xsYXBzZWRBbmROb25SZWFkb25seSkge1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNDb2xsYXBzZWRBbmROb25SZWFkb25seSAmJiB0aGlzLmNvZGVtaXJyb3IgJiYgdGhpcy5jb2RlbWlycm9yLmVkaXRvciAmJiAhdGhpcy5jb2RlbWlycm9yLmVkaXRvci5oYXNGb2N1cygpKSB7XG4gICAgICAgICAgICAgICAgICAgIEFuZ3VsYXJFZGl0b3IuYmx1cih0aGlzLmVkaXRvcik7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29kZW1pcnJvci5lZGl0b3IuZm9jdXMoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb2RlbWlycm9yLmVkaXRvci5yZWZyZXNoKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwgMjAwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvZGVDaGFuZ2UoJGV2ZW50KSB7XG4gICAgICAgIHRoaXMuaXNIaWdodExpZ2h0ID0gZmFsc2U7XG4gICAgICAgIENvZGVFZGl0b3Iuc2V0Q29kZUF0dHJpYnV0ZSh0aGlzLmVkaXRvciwgdGhpcy5lbGVtZW50LCB7IGNvbnRlbnQ6ICRldmVudCB9KTtcbiAgICB9XG5cbiAgICBvbkRlbGV0ZShldmVudDogTW91c2VFdmVudCkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBUaGVUcmFuc2Zvcm1zLmRlbGV0ZUVsZW1lbnQodGhpcy5lZGl0b3IsIHRoaXMuZWxlbWVudCk7XG4gICAgfVxuXG4gICAgb25Db3B5KGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAvLyByZW1vdmUgY29kZW1vcnJpciBzZWxlY3Rpb25cbiAgICAgICAgY29uc3Qgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpO1xuICAgICAgICBpZiAoc2VsZWN0aW9uLnJhbmdlQ291bnQgPiAwKSB7XG4gICAgICAgICAgICBzZWxlY3Rpb24ucmVtb3ZlQWxsUmFuZ2VzKCk7XG4gICAgICAgIH1cbiAgICAgICAgQW5ndWxhckVkaXRvci5mb2N1cyh0aGlzLmVkaXRvcik7XG4gICAgICAgIFRyYW5zZm9ybXMuc2VsZWN0KHRoaXMuZWRpdG9yLCBBbmd1bGFyRWRpdG9yLmZpbmRQYXRoKHRoaXMuZWRpdG9yLCB0aGlzLmVsZW1lbnQpKTtcblxuICAgICAgICBpZiAoSVNfU0FGQVJJKSB7XG4gICAgICAgICAgICB0aGlzLnNhZmFyaUNvcHkoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCdjb3B5JykgPyB0aGlzLnRoeU5vdGlmeVNlcnZpY2Uuc3VjY2Vzcygn5aSN5Yi25oiQ5YqfJykgOiB0aGlzLnRoeU5vdGlmeVNlcnZpY2UuZXJyb3IoJ+WkjeWItuWksei0pScpO1xuICAgICAgICBBbmd1bGFyRWRpdG9yLmRlc2VsZWN0KHRoaXMuZWRpdG9yKTtcbiAgICB9XG5cbiAgICBzYWZhcmlDb3B5KCkge1xuICAgICAgICBjb25zdCBjdXJyZW50RWxlbWVudCA9IEFuZ3VsYXJFZGl0b3IudG9ET01Ob2RlKHRoaXMuZWRpdG9yLCB0aGlzLmVsZW1lbnQpO1xuICAgICAgICBjb25zdCBibG9ja0NhcmQgPSBjdXJyZW50RWxlbWVudC5jbG9zZXN0KCcuc2xhdGUtYmxvY2stY2FyZCcpO1xuICAgICAgICBjb25zdCBzcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgncHJlJyk7XG5cbiAgICAgICAgc3Bhbi5hcHBlbmRDaGlsZChibG9ja0NhcmQuY2xvbmVOb2RlKHRydWUpKTtcbiAgICAgICAgc3Bhbi50ZXh0Q29udGVudCA9IHRoaXMuZWxlbWVudC5jb250ZW50O1xuICAgICAgICBpZiAodGhpcy5lbGVtZW50Lmxhbmd1YWdlKSB7XG4gICAgICAgICAgICBzcGFuLnNldEF0dHJpYnV0ZSgnZGF0YS1sYW5ndWFnZScsIHRoaXMuZWxlbWVudC5sYW5ndWFnZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuZWxlbWVudC5hdXRvV3JhcCkge1xuICAgICAgICAgICAgc3Bhbi5zZXRBdHRyaWJ1dGUoJ2RhdGEtYXV0by13cmFwJywgU3RyaW5nKHRoaXMuZWxlbWVudC5hdXRvV3JhcCkpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmVsZW1lbnQuaGVpZ2h0KSB7XG4gICAgICAgICAgICBzcGFuLnNldEF0dHJpYnV0ZSgnZGF0YS1oZWlnaHQnLCBTdHJpbmcodGhpcy5lbGVtZW50LmhlaWdodCkpO1xuICAgICAgICB9XG4gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoc3Bhbik7XG5cbiAgICAgICAgY29uc3Qgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpO1xuICAgICAgICBjb25zdCByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7XG4gICAgICAgIGlmIChzZWxlY3Rpb24pIHtcbiAgICAgICAgICAgIHNlbGVjdGlvbi5yZW1vdmVBbGxSYW5nZXMoKTtcbiAgICAgICAgICAgIHJhbmdlLnNlbGVjdE5vZGUoc3Bhbik7XG4gICAgICAgICAgICBzZWxlY3Rpb24uYWRkUmFuZ2UocmFuZ2UpO1xuXG4gICAgICAgICAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgnY29weScpID8gdGhpcy50aHlOb3RpZnlTZXJ2aWNlLnN1Y2Nlc3MoJ+WkjeWItuaIkOWKnycpIDogdGhpcy50aHlOb3RpZnlTZXJ2aWNlLmVycm9yKCflpI3liLblpLHotKUnKTtcbiAgICAgICAgICAgIHNlbGVjdGlvbi5yZW1vdmVBbGxSYW5nZXMoKTtcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoc3Bhbik7XG4gICAgICAgICAgICBBbmd1bGFyRWRpdG9yLmRlc2VsZWN0KHRoaXMuZWRpdG9yKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZvY3VzQ2hhbmdlKGNvZGVNaXJyb3JGb2N1c2VkOiBib29sZWFuKSB7XG4gICAgICAgIGlmIChjb2RlTWlycm9yRm9jdXNlZCkge1xuICAgICAgICAgICAgdGhpcy5pc0hpZ2h0TGlnaHQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uQ2hhbmdlTGFuZ3VhZ2UgPSBpdGVtID0+IHtcbiAgICAgICAgdGhpcy5vcHRpb25zID0geyAuLi50aGlzLm9wdGlvbnMsIG1vZGU6IGl0ZW0ua2V5IH07XG4gICAgICAgIHRoaXMuYWN0aXZlTGFuZ3VhZ2UgPSBpdGVtO1xuICAgICAgICBDb2RlRWRpdG9yLnNldENvZGVBdHRyaWJ1dGUodGhpcy5lZGl0b3IsIHRoaXMuZWxlbWVudCwgeyBsYW5ndWFnZTogaXRlbS5rZXkgfSk7XG4gICAgfTtcblxuICAgIHVzZU1vZGUoKSB7XG4gICAgICAgIHRoaXMub3B0aW9ucyA9IHsgLi4udGhpcy5vcHRpb25zLCBtb2RlOiB0aGlzLmVsZW1lbnQubGFuZ3VhZ2UgfTtcbiAgICAgICAgY29uc3QgbWVudUl0ZW0gPSB0aGlzLm1lbnVzLmZpbmQoaSA9PiBpLmtleSA9PT0gdGhpcy5lbGVtZW50Lmxhbmd1YWdlKTtcbiAgICAgICAgaWYgKG1lbnVJdGVtKSB7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZUxhbmd1YWdlID0gbWVudUl0ZW07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB1c2VBdXRvV3JhcCgpIHtcbiAgICAgICAgdGhpcy5vcHRpb25zID0geyAuLi50aGlzLm9wdGlvbnMsIGxpbmVXcmFwcGluZzogdGhpcy5lbGVtZW50LmF1dG9XcmFwIHx8IGZhbHNlIH07XG4gICAgfVxuXG4gICAgdXNlSGVpZ2h0KCkge1xuICAgICAgICBpZiAodGhpcy5lbGVtZW50LmhlaWdodCAmJiB0aGlzLmNvbmZpZy5tb2RlICE9PSBUaGVNb2RlLnByaW50KSB7XG4gICAgICAgICAgICB0aGlzLnJlc2l6ZUhlaWdodCA9IHRoaXMuZWxlbWVudC5oZWlnaHQ7XG4gICAgICAgICAgICB0aGlzLm1heEhlaWdodCA9IHRoaXMuZWxlbWVudC5oZWlnaHQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB1c2VSZWFkb25seSgpIHtcbiAgICAgICAgdGhpcy5vcHRpb25zID0geyAuLi50aGlzLm9wdGlvbnMsIHJlYWRPbmx5OiB0aGlzLnJlYWRvbmx5LCBjdXJzb3JCbGlua1JhdGU6IHRoaXMucmVhZG9ubHkgPyAtMSA6IDUwMCB9O1xuICAgIH1cblxuICAgIG9uUmVzaXplKHsgaGVpZ2h0IH06IFRoeVJlc2l6ZUV2ZW50KSB7XG4gICAgICAgIHRoaXMucmVzaXplSGVpZ2h0ID0gaGVpZ2h0O1xuICAgICAgICB0aGlzLm1heEhlaWdodCA9IGhlaWdodDtcbiAgICB9XG5cbiAgICBvbkVuZFJlc2l6ZSgpIHtcbiAgICAgICAgVHJhbnNmb3Jtcy5zZWxlY3QodGhpcy5lZGl0b3IsIEFuZ3VsYXJFZGl0b3IuZmluZFBhdGgodGhpcy5lZGl0b3IsIHRoaXMuZWxlbWVudCkpO1xuICAgICAgICBDb2RlRWRpdG9yLnNldENvZGVBdHRyaWJ1dGUodGhpcy5lZGl0b3IsIHRoaXMuZWxlbWVudCwgeyBoZWlnaHQ6IHRoaXMucmVzaXplSGVpZ2h0IH0pO1xuICAgIH1cblxuICAgIG9uQ2hhbmdlV3JhcCh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLmlzSGlnaHRMaWdodCA9IGZhbHNlO1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSB7IC4uLnRoaXMub3B0aW9ucywgbGluZVdyYXBwaW5nOiB2YWx1ZSB8fCBmYWxzZSB9O1xuICAgICAgICBDb2RlRWRpdG9yLnNldENvZGVBdHRyaWJ1dGUodGhpcy5lZGl0b3IsIHRoaXMuZWxlbWVudCwgeyBhdXRvV3JhcDogdmFsdWUgPyB2YWx1ZSA6IG51bGwgfSk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgfVxufVxuIiwiPHNsYXRlLWNoaWxkcmVuIFtjaGlsZHJlbl09XCJjaGlsZHJlblwiIFtjb250ZXh0XT1cImNoaWxkcmVuQ29udGV4dFwiIFt2aWV3Q29udGV4dF09XCJ2aWV3Q29udGV4dFwiPjwvc2xhdGUtY2hpbGRyZW4+XG5cbjwhLS0g5Y+q6K+75qih5byP5LiLQ29kZU1pcnJvci1zaXplcumrmOW6puavlOe8lui+keaooeW8j+S4i+WkmjJweO+8jOiuvue9rnRoeU1pbkhlaWdodOS4ujQ2cHjpmLLmraLmi5bmi73liLDmnIDlsI/pq5jluqbml7blj6ror7vmqKHlvI/kuIvlh7rnjrDmu5rliqjmnaEgIC0tPlxuPGRpdlxuICAgIHRoeVJlc2l6YWJsZVxuICAgIFt0aHlNaW5IZWlnaHRdPVwiNDZcIlxuICAgIFt0aHlCb3VuZHNdPVwicmVzaXplQm91bmRzXCJcbiAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cInJlc2l6ZUhlaWdodFwiXG4gICAgKHRoeVJlc2l6ZSk9XCJvblJlc2l6ZSgkZXZlbnQpXCJcbiAgICAodGh5UmVzaXplRW5kKT1cIm9uRW5kUmVzaXplKClcIlxuICAgIGNsYXNzPVwicmVzaXplLWNvZGUtY29udGFpbmVyXCJcbiAgICBbbmdDbGFzc109XCJ7IGZvY3VzOiBpc0NvbGxhcHNlZEFuZE5vblJlYWRvbmx5LCByZWFkb25seTogb3B0aW9ucy5yZWFkT25seSwgYWN0aXZlOiBpc0hpZ2h0TGlnaHQgJiYgaXNDb2xsYXBzZWRBbmROb25SZWFkb25seSB9XCJcbj5cbiAgICA8bmctY29kZW1pcnJvclxuICAgICAgICAqbmdJZj1cInN0YXJ0UmVuZGVyQ29kZW1pcnJvclwiXG4gICAgICAgICNjb2RlbWlycm9yXG4gICAgICAgIGNvbnRlbnRlZGl0YWJsZT1cImZhbHNlXCJcbiAgICAgICAgY2xhc3M9XCJuZy1jb2RlbWlycm9yLXdyYXBwZXJcIlxuICAgICAgICBbbmdTdHlsZV09XCJ7IG1heEhlaWdodDogbWF4SGVpZ2h0ID4gMCA/IG1heEhlaWdodCArICdweCcgOiAnYXV0bycgfVwiXG4gICAgICAgIFtvcHRpb25zXT1cIm9wdGlvbnNcIlxuICAgICAgICBbbmdNb2RlbF09XCJjb2RlXCJcbiAgICAgICAgW2RlbGF5UmVmcmVzaFRpbWVdPVwiMzAwXCJcbiAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiY29kZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgKGZvY3VzQ2hhbmdlKT1cImZvY3VzQ2hhbmdlKCRldmVudClcIlxuICAgICAgICBbYXV0b01heEhlaWdodF09XCJtYXhIZWlnaHRcIlxuICAgID5cbiAgICA8L25nLWNvZGVtaXJyb3I+XG4gICAgPHRoeS1yZXNpemUtaGFuZGxlIHRoeURpcmVjdGlvbj1cImJvdHRvbVwiIGNsYXNzPVwiY29kZS1yZXNpemUtaWNvblwiICpuZ0lmPVwiaXNDb2xsYXBzZWRBbmROb25SZWFkb25seVwiPjwvdGh5LXJlc2l6ZS1oYW5kbGU+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICN0b29sYmFyPlxuICAgIDx0aHktYWN0aW9ucyB0aHlTaXplPVwieHhzXCI+XG4gICAgICAgIDx0aGUtdG9vbGJhci1kcm9wZG93blxuICAgICAgICAgICAgW21lbnVzXT1cIm1lbnVzXCJcbiAgICAgICAgICAgIFt0b29sYmFySXRlbV09XCJhY3RpdmVMYW5ndWFnZVwiXG4gICAgICAgICAgICBbZHJvcGRvd25JdGVtS2V5XT1cImFjdGl2ZUxhbmd1YWdlPy5rZXlcIlxuICAgICAgICAgICAgW2l0ZW1Nb3VzZWRvd25IYW5kbGVdPVwib25DaGFuZ2VMYW5ndWFnZVwiXG4gICAgICAgID5cbiAgICAgICAgPC90aGUtdG9vbGJhci1kcm9wZG93bj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJhdXRvLXdyYXAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBweC0yIHRleHQtc2Vjb25kYXJ5XCI+XG4gICAgICAgICAgICA8c3Bhbj7oh6rliqjmjaLooYw8L3NwYW4+XG4gICAgICAgICAgICA8dGh5LXN3aXRjaFxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYXV0by13cmFwLWJ0biBkLWZsZXggbWwtMVwiXG4gICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJvcHRpb25zLmxpbmVXcmFwcGluZ1wiXG4gICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25DaGFuZ2VXcmFwKCRldmVudClcIlxuICAgICAgICAgICAgICAgIHRoeVNpemU9XCJzbVwiXG4gICAgICAgICAgICA+PC90aHktc3dpdGNoPlxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OjtcIiB0aHlBY3Rpb24gdGh5QWN0aW9uSWNvbj1cImNvcHlcIiB0aHlUb29sdGlwPVwi5aSN5Yi2XCIgdGh5VG9vbHRpcFBsYWNlbWVudD1cInRvcFwiIChtb3VzZWRvd24pPVwib25Db3B5KCRldmVudClcIj48L2E+XG4gICAgICAgIDx0aHktZGl2aWRlciBjbGFzcz1cIm1yLTIgbWwtMSBhbGlnbi1zZWxmLWNlbnRlclwiIFt0aHlWZXJ0aWNhbF09XCJ0cnVlXCI+PC90aHktZGl2aWRlcj5cbiAgICAgICAgPGFcbiAgICAgICAgICAgIGhyZWY9XCJqYXZhc2NyaXB0OjtcIlxuICAgICAgICAgICAgdGh5QWN0aW9uXG4gICAgICAgICAgICB0aHlUeXBlPVwiZGFuZ2VyXCJcbiAgICAgICAgICAgIHRoeUFjdGlvbkljb249XCJ0cmFzaFwiXG4gICAgICAgICAgICB0aHlUb29sdGlwPVwi5Yig6ZmkXCJcbiAgICAgICAgICAgIHRoeVRvb2x0aXBQbGFjZW1lbnQ9XCJ0b3BcIlxuICAgICAgICAgICAgKG1vdXNlZG93bik9XCJvbkRlbGV0ZSgkZXZlbnQpXCJcbiAgICAgICAgPjwvYT5cbiAgICA8L3RoeS1hY3Rpb25zPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
@@ -1,8 +1,16 @@
|
|
|
1
|
+
import { Editor, Element } from 'slate';
|
|
1
2
|
import { ElementKinds } from '../../constants/node-types';
|
|
2
3
|
import * as TheTransforms from '../../transforms';
|
|
3
4
|
export const HrEditor = {
|
|
4
5
|
insertHr(editor) {
|
|
5
6
|
TheTransforms.insertElements(editor, { type: ElementKinds.hr, children: [{ text: '' }] });
|
|
7
|
+
},
|
|
8
|
+
isHrActive(editor) {
|
|
9
|
+
const [match] = Editor.nodes(editor, {
|
|
10
|
+
match: n => Element.isElement(n) && n.type === ElementKinds.hr,
|
|
11
|
+
universal: true
|
|
12
|
+
});
|
|
13
|
+
return !!match;
|
|
6
14
|
}
|
|
7
15
|
};
|
|
8
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHIuZWRpdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3JjL3BsdWdpbnMvaHIvaHIuZWRpdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRCxPQUFPLEtBQUssYUFBYSxNQUFNLGtCQUFrQixDQUFDO0FBRWxELE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRztJQUNwQixRQUFRLENBQUMsTUFBYztRQUNuQixhQUFhLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxZQUFZLENBQUMsRUFBRSxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzlGLENBQUM7SUFDRCxVQUFVLENBQUMsTUFBYztRQUNyQixNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUU7WUFDakMsS0FBSyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxLQUFLLFlBQVksQ0FBQyxFQUFFO1lBQzlELFNBQVMsRUFBRSxJQUFJO1NBQ2xCLENBQUMsQ0FBQztRQUNILE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUNuQixDQUFDO0NBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVkaXRvciwgRWxlbWVudCB9IGZyb20gJ3NsYXRlJztcbmltcG9ydCB7IEVsZW1lbnRLaW5kcyB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9ub2RlLXR5cGVzJztcbmltcG9ydCAqIGFzIFRoZVRyYW5zZm9ybXMgZnJvbSAnLi4vLi4vdHJhbnNmb3Jtcyc7XG5cbmV4cG9ydCBjb25zdCBIckVkaXRvciA9IHtcbiAgICBpbnNlcnRIcihlZGl0b3I6IEVkaXRvcikge1xuICAgICAgICBUaGVUcmFuc2Zvcm1zLmluc2VydEVsZW1lbnRzKGVkaXRvciwgeyB0eXBlOiBFbGVtZW50S2luZHMuaHIsIGNoaWxkcmVuOiBbeyB0ZXh0OiAnJyB9XSB9KTtcbiAgICB9LFxuICAgIGlzSHJBY3RpdmUoZWRpdG9yOiBFZGl0b3IpIHtcbiAgICAgICAgY29uc3QgW21hdGNoXSA9IEVkaXRvci5ub2RlcyhlZGl0b3IsIHtcbiAgICAgICAgICAgIG1hdGNoOiBuID0+IEVsZW1lbnQuaXNFbGVtZW50KG4pICYmIG4udHlwZSA9PT0gRWxlbWVudEtpbmRzLmhyLFxuICAgICAgICAgICAgdW5pdmVyc2FsOiB0cnVlXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gISFtYXRjaDtcbiAgICB9XG59O1xuIl19
|