ngx-rs-ant 2.2.5 → 2.2.6
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/esm2020/types/config/mark-item-config-base.mjs +3 -3
- package/esm2020/word/word-designer/mark-config/mark-config.component.mjs +15 -4
- package/esm2020/word/word-designer/word-designer.component.mjs +7 -5
- package/fesm2015/ngx-rs-ant.mjs +21 -8
- package/fesm2015/ngx-rs-ant.mjs.map +1 -1
- package/fesm2020/ngx-rs-ant.mjs +21 -8
- package/fesm2020/ngx-rs-ant.mjs.map +1 -1
- package/package.json +1 -1
- package/types/config/mark-item-config-base.d.ts +2 -2
- package/word/word-designer/mark-config/mark-config.component.d.ts +4 -2
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export class MarkItemConfigBase extends
|
|
1
|
+
import { ConfigBase } from "./config-base";
|
|
2
|
+
export class MarkItemConfigBase extends ConfigBase {
|
|
3
3
|
}
|
|
4
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFyay1pdGVtLWNvbmZpZy1iYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJzLWFudC9zcmMvdHlwZXMvY29uZmlnL21hcmstaXRlbS1jb25maWctYmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxVQUFVO0NBZWpEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb25maWdCYXNlfSBmcm9tIFwiLi9jb25maWctYmFzZVwiO1xyXG5cclxuZXhwb3J0IGNsYXNzIE1hcmtJdGVtQ29uZmlnQmFzZSBleHRlbmRzIENvbmZpZ0Jhc2Uge1xyXG4gIHRlbmFudDogYW55O1xyXG4gIHRlbXBsYXRlQ2xhc3NOYW1lOiBhbnk7XHJcbiAgdGVtcGxhdGVPaWQ6IGFueTtcclxuICBpbnN0YW5jZUNsYXNzTmFtZTogYW55O1xyXG4gIG1hcmshOiB7XHJcbiAgICBuYW1lOiBzdHJpbmcsXHJcbiAgICBkaXNwbGF5OiBzdHJpbmcsXHJcbiAgICB0eXBlOiBzdHJpbmcsXHJcbiAgICBjb25maWc6IGFueSxcclxuICAgIHZhbHVlOiBhbnksXHJcbiAgICBwaWNrZXJDb2RlOiBzdHJpbmcsXHJcbiAgICBnZW5lcmF0b3JDb2RlOiBzdHJpbmdcclxuICB9O1xyXG4gIG1hcmtzOiBhbnk7XHJcbn1cclxuIl19
|
|
@@ -23,9 +23,14 @@ export class MarkConfigComponent {
|
|
|
23
23
|
ngOnInit() {
|
|
24
24
|
this.markTypes = MarkItemFactory.getMarkItems(...this.filterCategories || '');
|
|
25
25
|
}
|
|
26
|
-
loadMarkConfig() {
|
|
26
|
+
loadMarkConfig(clearConfig) {
|
|
27
27
|
setTimeout(() => {
|
|
28
28
|
this.markItemConfigRef.clear();
|
|
29
|
+
if (clearConfig) {
|
|
30
|
+
for (let key in this.mark.config) {
|
|
31
|
+
delete this.mark.config[key];
|
|
32
|
+
}
|
|
33
|
+
}
|
|
29
34
|
let config = MarkItemFactory.getConfig(this.mark.type);
|
|
30
35
|
if (!config) {
|
|
31
36
|
return;
|
|
@@ -38,21 +43,23 @@ export class MarkConfigComponent {
|
|
|
38
43
|
instance.instanceClassName = this.instanceClassName;
|
|
39
44
|
instance.mark = this.mark;
|
|
40
45
|
instance.marks = this.marks;
|
|
46
|
+
instance.tabViewContainerRef = this.tabViewContainerRef;
|
|
41
47
|
});
|
|
42
48
|
}
|
|
43
49
|
changeMarkType() {
|
|
44
50
|
if (this.changeMark) {
|
|
45
51
|
this.changeMark = false;
|
|
52
|
+
this.loadMarkConfig();
|
|
46
53
|
}
|
|
47
54
|
else {
|
|
48
55
|
this.mark.pickerCode = null;
|
|
49
56
|
this.mark.generatorCode = null;
|
|
57
|
+
this.loadMarkConfig(true);
|
|
50
58
|
}
|
|
51
|
-
this.loadMarkConfig();
|
|
52
59
|
}
|
|
53
60
|
}
|
|
54
61
|
MarkConfigComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MarkConfigComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
55
|
-
MarkConfigComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: MarkConfigComponent, selector: "rs-mark-config", inputs: { tenant: "tenant", templateClassName: "templateClassName", templateOid: "templateOid", instanceClassName: "instanceClassName", filterCategories: "filterCategories", mark: "mark", marks: "marks" }, viewQueries: [{ propertyName: "markItemConfigRef", first: true, predicate: ["markItemConfigRef"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: "<div class=\"dx-field\">\n <div class=\"dx-field-label\">\n <span>\u4E66\u7B7E\u6807\u8BC6</span>\n <span class=\"required-mark\"> *</span>\n </div>\n <div class=\"dx-field-value\">\n <dx-text-box [(value)]=\"mark.name\" [readOnly]=\"true\">\n <dx-validator>\n <dxi-validation-rule type=\"required\" message=\"\u503C\u4E0D\u80FD\u4E3A\u7A7A\"></dxi-validation-rule>\n </dx-validator>\n </dx-text-box>\n </div>\n</div>\n<div class=\"dx-field\">\n <div class=\"dx-field-label\">\n <span>\u4E66\u7B7E\u540D\u79F0</span>\n </div>\n <div class=\"dx-field-value\">\n <dx-text-box [(value)]=\"mark.display\"></dx-text-box>\n </div>\n</div>\n<div class=\"dx-field\">\n <div class=\"dx-field-label\">\n <span>\u7EC4\u4EF6\u7C7B\u578B</span>\n <span class=\"required-mark\"> *</span>\n </div>\n <div class=\"dx-field-value\">\n <dx-select-box [dataSource]=\"markTypes\"\n valueExpr=\"name\"\n displayExpr=\"caption\"\n [(value)]=\"mark.type\"\n (onSelectionChanged)=\"changeMarkType()\">\n <dx-validator>\n <dxi-validation-rule type=\"required\" message=\"\u503C\u4E0D\u80FD\u4E3A\u7A7A\"></dxi-validation-rule>\n </dx-validator>\n </dx-select-box>\n </div>\n</div>\n<ng-container #markItemConfigRef></ng-container>\n", styles: [":host .dx-field{margin-bottom:8px;display:flex;flex-flow:row nowrap}:host .dx-field .dx-field-label{flex:0 0 80px}:host .dx-field .dx-field-value{flex:1}\n"], dependencies: [{ kind: "component", type: i1.DxiValidationRuleComponent, selector: "dxi-validation-rule", inputs: ["message", "trim", "type", "ignoreEmptyValue", "max", "min", "reevaluate", "validationCallback", "comparisonTarget", "comparisonType", "pattern"] }, { kind: "component", type: i2.DxSelectBoxComponent, selector: "dx-select-box", inputs: ["acceptCustomValue", "accessKey", "activeStateEnabled", "buttons", "customItemCreateEvent", "dataSource", "deferRendering", "disabled", "displayExpr", "displayValue", "dropDownButtonTemplate", "dropDownOptions", "elementAttr", "fieldTemplate", "focusStateEnabled", "grouped", "groupTemplate", "height", "hint", "hoverStateEnabled", "inputAttr", "isDirty", "isValid", "items", "itemTemplate", "label", "labelMode", "maxLength", "minSearchLength", "name", "noDataText", "opened", "openOnFieldClick", "placeholder", "readOnly", "rtlEnabled", "searchEnabled", "searchExpr", "searchMode", "searchTimeout", "selectedItem", "showClearButton", "showDataBeforeSearch", "showDropDownButton", "showSelectionControls", "spellcheck", "stylingMode", "tabIndex", "text", "useItemTextAsTitle", "validationError", "validationErrors", "validationMessageMode", "validationMessagePosition", "validationStatus", "value", "valueChangeEvent", "valueExpr", "visible", "width", "wrapItemText"], outputs: ["onChange", "onClosed", "onContentReady", "onCopy", "onCustomItemCreating", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onItemClick", "onKeyDown", "onKeyUp", "onOpened", "onOptionChanged", "onPaste", "onSelectionChanged", "onValueChanged", "acceptCustomValueChange", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "customItemCreateEventChange", "dataSourceChange", "deferRenderingChange", "disabledChange", "displayExprChange", "displayValueChange", "dropDownButtonTemplateChange", "dropDownOptionsChange", "elementAttrChange", "fieldTemplateChange", "focusStateEnabledChange", "groupedChange", "groupTemplateChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isDirtyChange", "isValidChange", "itemsChange", "itemTemplateChange", "labelChange", "labelModeChange", "maxLengthChange", "minSearchLengthChange", "nameChange", "noDataTextChange", "openedChange", "openOnFieldClickChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "searchEnabledChange", "searchExprChange", "searchModeChange", "searchTimeoutChange", "selectedItemChange", "showClearButtonChange", "showDataBeforeSearchChange", "showDropDownButtonChange", "showSelectionControlsChange", "spellcheckChange", "stylingModeChange", "tabIndexChange", "textChange", "useItemTextAsTitleChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationMessagePositionChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "valueExprChange", "visibleChange", "widthChange", "wrapItemTextChange", "onBlur"] }, { kind: "component", type: i3.DxTextBoxComponent, selector: "dx-text-box", inputs: ["accessKey", "activeStateEnabled", "buttons", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "inputAttr", "isDirty", "isValid", "label", "labelMode", "mask", "maskChar", "maskInvalidMessage", "maskRules", "maxLength", "mode", "name", "placeholder", "readOnly", "rtlEnabled", "showClearButton", "showMaskMode", "spellcheck", "stylingMode", "tabIndex", "text", "useMaskedValue", "validationError", "validationErrors", "validationMessageMode", "validationMessagePosition", "validationStatus", "value", "valueChangeEvent", "visible", "width"], outputs: ["onChange", "onContentReady", "onCopy", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onKeyDown", "onKeyUp", "onOptionChanged", "onPaste", "onValueChanged", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isDirtyChange", "isValidChange", "labelChange", "labelModeChange", "maskChange", "maskCharChange", "maskInvalidMessageChange", "maskRulesChange", "maxLengthChange", "modeChange", "nameChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "showClearButtonChange", "showMaskModeChange", "spellcheckChange", "stylingModeChange", "tabIndexChange", "textChange", "useMaskedValueChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationMessagePositionChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "visibleChange", "widthChange", "onBlur"] }, { kind: "component", type: i4.DxValidatorComponent, selector: "dx-validator", inputs: ["adapter", "elementAttr", "height", "name", "validationGroup", "validationRules", "width"], outputs: ["onDisposing", "onInitialized", "onOptionChanged", "onValidated", "adapterChange", "elementAttrChange", "heightChange", "nameChange", "validationGroupChange", "validationRulesChange", "widthChange"] }] });
|
|
62
|
+
MarkConfigComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: MarkConfigComponent, selector: "rs-mark-config", inputs: { tenant: "tenant", templateClassName: "templateClassName", templateOid: "templateOid", instanceClassName: "instanceClassName", filterCategories: "filterCategories", mark: "mark", marks: "marks", params: "params", tabViewContainerRef: "tabViewContainerRef" }, viewQueries: [{ propertyName: "markItemConfigRef", first: true, predicate: ["markItemConfigRef"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: "<div class=\"dx-field\">\n <div class=\"dx-field-label\">\n <span>\u4E66\u7B7E\u6807\u8BC6</span>\n <span class=\"required-mark\"> *</span>\n </div>\n <div class=\"dx-field-value\">\n <dx-text-box [(value)]=\"mark.name\" [readOnly]=\"true\">\n <dx-validator>\n <dxi-validation-rule type=\"required\" message=\"\u503C\u4E0D\u80FD\u4E3A\u7A7A\"></dxi-validation-rule>\n </dx-validator>\n </dx-text-box>\n </div>\n</div>\n<div class=\"dx-field\">\n <div class=\"dx-field-label\">\n <span>\u4E66\u7B7E\u540D\u79F0</span>\n </div>\n <div class=\"dx-field-value\">\n <dx-text-box [(value)]=\"mark.display\"></dx-text-box>\n </div>\n</div>\n<div class=\"dx-field\">\n <div class=\"dx-field-label\">\n <span>\u7EC4\u4EF6\u7C7B\u578B</span>\n <span class=\"required-mark\"> *</span>\n </div>\n <div class=\"dx-field-value\">\n <dx-select-box [dataSource]=\"markTypes\"\n valueExpr=\"name\"\n displayExpr=\"caption\"\n [(value)]=\"mark.type\"\n (onSelectionChanged)=\"changeMarkType()\">\n <dx-validator>\n <dxi-validation-rule type=\"required\" message=\"\u503C\u4E0D\u80FD\u4E3A\u7A7A\"></dxi-validation-rule>\n </dx-validator>\n </dx-select-box>\n </div>\n</div>\n<ng-container #markItemConfigRef></ng-container>\n", styles: [":host .dx-field{margin-bottom:8px;display:flex;flex-flow:row nowrap}:host .dx-field .dx-field-label{flex:0 0 80px}:host .dx-field .dx-field-value{flex:1}\n"], dependencies: [{ kind: "component", type: i1.DxiValidationRuleComponent, selector: "dxi-validation-rule", inputs: ["message", "trim", "type", "ignoreEmptyValue", "max", "min", "reevaluate", "validationCallback", "comparisonTarget", "comparisonType", "pattern"] }, { kind: "component", type: i2.DxSelectBoxComponent, selector: "dx-select-box", inputs: ["acceptCustomValue", "accessKey", "activeStateEnabled", "buttons", "customItemCreateEvent", "dataSource", "deferRendering", "disabled", "displayExpr", "displayValue", "dropDownButtonTemplate", "dropDownOptions", "elementAttr", "fieldTemplate", "focusStateEnabled", "grouped", "groupTemplate", "height", "hint", "hoverStateEnabled", "inputAttr", "isDirty", "isValid", "items", "itemTemplate", "label", "labelMode", "maxLength", "minSearchLength", "name", "noDataText", "opened", "openOnFieldClick", "placeholder", "readOnly", "rtlEnabled", "searchEnabled", "searchExpr", "searchMode", "searchTimeout", "selectedItem", "showClearButton", "showDataBeforeSearch", "showDropDownButton", "showSelectionControls", "spellcheck", "stylingMode", "tabIndex", "text", "useItemTextAsTitle", "validationError", "validationErrors", "validationMessageMode", "validationMessagePosition", "validationStatus", "value", "valueChangeEvent", "valueExpr", "visible", "width", "wrapItemText"], outputs: ["onChange", "onClosed", "onContentReady", "onCopy", "onCustomItemCreating", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onItemClick", "onKeyDown", "onKeyUp", "onOpened", "onOptionChanged", "onPaste", "onSelectionChanged", "onValueChanged", "acceptCustomValueChange", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "customItemCreateEventChange", "dataSourceChange", "deferRenderingChange", "disabledChange", "displayExprChange", "displayValueChange", "dropDownButtonTemplateChange", "dropDownOptionsChange", "elementAttrChange", "fieldTemplateChange", "focusStateEnabledChange", "groupedChange", "groupTemplateChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isDirtyChange", "isValidChange", "itemsChange", "itemTemplateChange", "labelChange", "labelModeChange", "maxLengthChange", "minSearchLengthChange", "nameChange", "noDataTextChange", "openedChange", "openOnFieldClickChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "searchEnabledChange", "searchExprChange", "searchModeChange", "searchTimeoutChange", "selectedItemChange", "showClearButtonChange", "showDataBeforeSearchChange", "showDropDownButtonChange", "showSelectionControlsChange", "spellcheckChange", "stylingModeChange", "tabIndexChange", "textChange", "useItemTextAsTitleChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationMessagePositionChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "valueExprChange", "visibleChange", "widthChange", "wrapItemTextChange", "onBlur"] }, { kind: "component", type: i3.DxTextBoxComponent, selector: "dx-text-box", inputs: ["accessKey", "activeStateEnabled", "buttons", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "inputAttr", "isDirty", "isValid", "label", "labelMode", "mask", "maskChar", "maskInvalidMessage", "maskRules", "maxLength", "mode", "name", "placeholder", "readOnly", "rtlEnabled", "showClearButton", "showMaskMode", "spellcheck", "stylingMode", "tabIndex", "text", "useMaskedValue", "validationError", "validationErrors", "validationMessageMode", "validationMessagePosition", "validationStatus", "value", "valueChangeEvent", "visible", "width"], outputs: ["onChange", "onContentReady", "onCopy", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onKeyDown", "onKeyUp", "onOptionChanged", "onPaste", "onValueChanged", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isDirtyChange", "isValidChange", "labelChange", "labelModeChange", "maskChange", "maskCharChange", "maskInvalidMessageChange", "maskRulesChange", "maxLengthChange", "modeChange", "nameChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "showClearButtonChange", "showMaskModeChange", "spellcheckChange", "stylingModeChange", "tabIndexChange", "textChange", "useMaskedValueChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationMessagePositionChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "visibleChange", "widthChange", "onBlur"] }, { kind: "component", type: i4.DxValidatorComponent, selector: "dx-validator", inputs: ["adapter", "elementAttr", "height", "name", "validationGroup", "validationRules", "width"], outputs: ["onDisposing", "onInitialized", "onOptionChanged", "onValidated", "adapterChange", "elementAttrChange", "heightChange", "nameChange", "validationGroupChange", "validationRulesChange", "widthChange"] }] });
|
|
56
63
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MarkConfigComponent, decorators: [{
|
|
57
64
|
type: Component,
|
|
58
65
|
args: [{ selector: 'rs-mark-config', template: "<div class=\"dx-field\">\n <div class=\"dx-field-label\">\n <span>\u4E66\u7B7E\u6807\u8BC6</span>\n <span class=\"required-mark\"> *</span>\n </div>\n <div class=\"dx-field-value\">\n <dx-text-box [(value)]=\"mark.name\" [readOnly]=\"true\">\n <dx-validator>\n <dxi-validation-rule type=\"required\" message=\"\u503C\u4E0D\u80FD\u4E3A\u7A7A\"></dxi-validation-rule>\n </dx-validator>\n </dx-text-box>\n </div>\n</div>\n<div class=\"dx-field\">\n <div class=\"dx-field-label\">\n <span>\u4E66\u7B7E\u540D\u79F0</span>\n </div>\n <div class=\"dx-field-value\">\n <dx-text-box [(value)]=\"mark.display\"></dx-text-box>\n </div>\n</div>\n<div class=\"dx-field\">\n <div class=\"dx-field-label\">\n <span>\u7EC4\u4EF6\u7C7B\u578B</span>\n <span class=\"required-mark\"> *</span>\n </div>\n <div class=\"dx-field-value\">\n <dx-select-box [dataSource]=\"markTypes\"\n valueExpr=\"name\"\n displayExpr=\"caption\"\n [(value)]=\"mark.type\"\n (onSelectionChanged)=\"changeMarkType()\">\n <dx-validator>\n <dxi-validation-rule type=\"required\" message=\"\u503C\u4E0D\u80FD\u4E3A\u7A7A\"></dxi-validation-rule>\n </dx-validator>\n </dx-select-box>\n </div>\n</div>\n<ng-container #markItemConfigRef></ng-container>\n", styles: [":host .dx-field{margin-bottom:8px;display:flex;flex-flow:row nowrap}:host .dx-field .dx-field-label{flex:0 0 80px}:host .dx-field .dx-field-value{flex:1}\n"] }]
|
|
@@ -70,8 +77,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
70
77
|
type: Input
|
|
71
78
|
}], marks: [{
|
|
72
79
|
type: Input
|
|
80
|
+
}], params: [{
|
|
81
|
+
type: Input
|
|
82
|
+
}], tabViewContainerRef: [{
|
|
83
|
+
type: Input
|
|
73
84
|
}], markItemConfigRef: [{
|
|
74
85
|
type: ViewChild,
|
|
75
86
|
args: ['markItemConfigRef', { static: true, read: ViewContainerRef }]
|
|
76
87
|
}] } });
|
|
77
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
88
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFyay1jb25maWcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJzLWFudC9zcmMvd29yZC93b3JkLWRlc2lnbmVyL21hcmstY29uZmlnL21hcmstY29uZmlnLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1ycy1hbnQvc3JjL3dvcmQvd29yZC1kZXNpZ25lci9tYXJrLWNvbmZpZy9tYXJrLWNvbmZpZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDNUUsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHVCQUF1QixDQUFDOzs7Ozs7QUFPdEQsTUFBTSxPQUFPLG1CQUFtQjtJQUxoQztRQXVDVSxlQUFVLEdBQUcsS0FBSyxDQUFDO0tBeUM1QjtJQS9EQyxJQUNJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQUVELElBQUksSUFBSSxDQUFDLElBQVM7UUFDaEIsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNULE9BQU87U0FDUjtRQUNELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBYUQsUUFBUTtRQUNOLElBQUksQ0FBQyxTQUFTLEdBQUcsZUFBZSxDQUFDLFlBQVksQ0FBQyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNoRixDQUFDO0lBRUQsY0FBYyxDQUFDLFdBQXFCO1FBQ2xDLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDL0IsSUFBSSxXQUFXLEVBQUU7Z0JBQ2YsS0FBSyxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRTtvQkFDaEMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztpQkFDOUI7YUFDRjtZQUNELElBQUksTUFBTSxHQUFHLGVBQWUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN2RCxJQUFJLENBQUMsTUFBTSxFQUFFO2dCQUNYLE9BQU87YUFDUjtZQUNELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQzlFLE1BQU0sUUFBUSxHQUFRLFlBQVksQ0FBQyxRQUFRLENBQUM7WUFDNUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQzlCLFFBQVEsQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUM7WUFDcEQsUUFBUSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1lBQ3hDLFFBQVEsQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUM7WUFDcEQsUUFBUSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQzFCLFFBQVEsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztZQUM1QixRQUFRLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDO1FBQzFELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGNBQWM7UUFDWixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDbkIsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7WUFDeEIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1NBQ3ZCO2FBQU07WUFDTCxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7WUFDNUIsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1lBQy9CLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDM0I7SUFDSCxDQUFDOztpSEExRVUsbUJBQW1CO3FHQUFuQixtQkFBbUIscWFBbUN1QixnQkFBZ0IsMkNDM0N2RSx1MUNBdUNBOzRGRC9CYSxtQkFBbUI7a0JBTC9CLFNBQVM7K0JBQ0UsZ0JBQWdCOzhCQU0xQixNQUFNO3NCQURMLEtBQUs7Z0JBR04saUJBQWlCO3NCQURoQixLQUFLO2dCQUdOLFdBQVc7c0JBRFYsS0FBSztnQkFHTixpQkFBaUI7c0JBRGhCLEtBQUs7Z0JBR04sZ0JBQWdCO3NCQURmLEtBQUs7Z0JBSUYsSUFBSTtzQkFEUCxLQUFLO2dCQWdCTixLQUFLO3NCQURKLEtBQUs7Z0JBR04sTUFBTTtzQkFETCxLQUFLO2dCQUdOLG1CQUFtQjtzQkFEbEIsS0FBSztnQkFJa0UsaUJBQWlCO3NCQUF4RixTQUFTO3VCQUFDLG1CQUFtQixFQUFFLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgSW5wdXQsIFZpZXdDaGlsZCwgVmlld0NvbnRhaW5lclJlZn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge01hcmtJdGVtRmFjdG9yeX0gZnJvbSBcImNvYXN0LXBsdWdpbi1yZWdpc3RlclwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdycy1tYXJrLWNvbmZpZycsXG4gIHRlbXBsYXRlVXJsOiAnLi9tYXJrLWNvbmZpZy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL21hcmstY29uZmlnLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgTWFya0NvbmZpZ0NvbXBvbmVudCB7XG4gIEBJbnB1dCgpXG4gIHRlbmFudDogYW55O1xuICBASW5wdXQoKVxuICB0ZW1wbGF0ZUNsYXNzTmFtZTogYW55O1xuICBASW5wdXQoKVxuICB0ZW1wbGF0ZU9pZDogYW55O1xuICBASW5wdXQoKVxuICBpbnN0YW5jZUNsYXNzTmFtZTogYW55O1xuICBASW5wdXQoKVxuICBmaWx0ZXJDYXRlZ29yaWVzPzogc3RyaW5nW107XG5cbiAgQElucHV0KClcbiAgZ2V0IG1hcmsoKSB7XG4gICAgcmV0dXJuIHRoaXMuX21hcms7XG4gIH1cblxuICBzZXQgbWFyayhtYXJrOiBhbnkpIHtcbiAgICBpZiAoIW1hcmspIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fbWFyayA9IG1hcms7XG4gICAgdGhpcy5jaGFuZ2VNYXJrID0gdHJ1ZTtcbiAgICB0aGlzLmxvYWRNYXJrQ29uZmlnKCk7XG4gIH1cblxuICBwcml2YXRlIF9tYXJrOiBhbnk7XG4gIEBJbnB1dCgpXG4gIG1hcmtzOiBhbnk7XG4gIEBJbnB1dCgpXG4gIHBhcmFtcz86IGFueTtcbiAgQElucHV0KClcbiAgdGFiVmlld0NvbnRhaW5lclJlZiE6IGFueTtcbiAgcHJvdGVjdGVkIG1hcmtUeXBlczogYW55O1xuICBwcml2YXRlIGNoYW5nZU1hcmsgPSBmYWxzZTtcbiAgQFZpZXdDaGlsZCgnbWFya0l0ZW1Db25maWdSZWYnLCB7c3RhdGljOiB0cnVlLCByZWFkOiBWaWV3Q29udGFpbmVyUmVmfSkgbWFya0l0ZW1Db25maWdSZWYhOiBWaWV3Q29udGFpbmVyUmVmO1xuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMubWFya1R5cGVzID0gTWFya0l0ZW1GYWN0b3J5LmdldE1hcmtJdGVtcyguLi50aGlzLmZpbHRlckNhdGVnb3JpZXMgfHwgJycpO1xuICB9XG5cbiAgbG9hZE1hcmtDb25maWcoY2xlYXJDb25maWc/OiBib29sZWFuKSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLm1hcmtJdGVtQ29uZmlnUmVmLmNsZWFyKCk7XG4gICAgICBpZiAoY2xlYXJDb25maWcpIHtcbiAgICAgICAgZm9yIChsZXQga2V5IGluIHRoaXMubWFyay5jb25maWcpIHtcbiAgICAgICAgICBkZWxldGUgdGhpcy5tYXJrLmNvbmZpZ1trZXldO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBsZXQgY29uZmlnID0gTWFya0l0ZW1GYWN0b3J5LmdldENvbmZpZyh0aGlzLm1hcmsudHlwZSk7XG4gICAgICBpZiAoIWNvbmZpZykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCBjb21wb25lbnRSZWYgPSB0aGlzLm1hcmtJdGVtQ29uZmlnUmVmLmNyZWF0ZUNvbXBvbmVudChjb25maWcuY29tcG9uZW50KTtcbiAgICAgIGNvbnN0IGluc3RhbmNlOiBhbnkgPSBjb21wb25lbnRSZWYuaW5zdGFuY2U7XG4gICAgICBpbnN0YW5jZS50ZW5hbnQgPSB0aGlzLnRlbmFudDtcbiAgICAgIGluc3RhbmNlLnRlbXBsYXRlQ2xhc3NOYW1lID0gdGhpcy50ZW1wbGF0ZUNsYXNzTmFtZTtcbiAgICAgIGluc3RhbmNlLnRlbXBsYXRlT2lkID0gdGhpcy50ZW1wbGF0ZU9pZDtcbiAgICAgIGluc3RhbmNlLmluc3RhbmNlQ2xhc3NOYW1lID0gdGhpcy5pbnN0YW5jZUNsYXNzTmFtZTtcbiAgICAgIGluc3RhbmNlLm1hcmsgPSB0aGlzLm1hcms7XG4gICAgICBpbnN0YW5jZS5tYXJrcyA9IHRoaXMubWFya3M7XG4gICAgICBpbnN0YW5jZS50YWJWaWV3Q29udGFpbmVyUmVmID0gdGhpcy50YWJWaWV3Q29udGFpbmVyUmVmO1xuICAgIH0pO1xuICB9XG5cbiAgY2hhbmdlTWFya1R5cGUoKSB7XG4gICAgaWYgKHRoaXMuY2hhbmdlTWFyaykge1xuICAgICAgdGhpcy5jaGFuZ2VNYXJrID0gZmFsc2U7XG4gICAgICB0aGlzLmxvYWRNYXJrQ29uZmlnKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubWFyay5waWNrZXJDb2RlID0gbnVsbDtcbiAgICAgIHRoaXMubWFyay5nZW5lcmF0b3JDb2RlID0gbnVsbDtcbiAgICAgIHRoaXMubG9hZE1hcmtDb25maWcodHJ1ZSk7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZHgtZmllbGRcIj5cbiAgPGRpdiBjbGFzcz1cImR4LWZpZWxkLWxhYmVsXCI+XG4gICAgPHNwYW4+5Lmm562+5qCH6K+GPC9zcGFuPlxuICAgIDxzcGFuIGNsYXNzPVwicmVxdWlyZWQtbWFya1wiPiZuYnNwOyo8L3NwYW4+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiZHgtZmllbGQtdmFsdWVcIj5cbiAgICA8ZHgtdGV4dC1ib3ggWyh2YWx1ZSldPVwibWFyay5uYW1lXCIgW3JlYWRPbmx5XT1cInRydWVcIj5cbiAgICAgIDxkeC12YWxpZGF0b3I+XG4gICAgICAgIDxkeGktdmFsaWRhdGlvbi1ydWxlIHR5cGU9XCJyZXF1aXJlZFwiIG1lc3NhZ2U9XCLlgLzkuI3og73kuLrnqbpcIj48L2R4aS12YWxpZGF0aW9uLXJ1bGU+XG4gICAgICA8L2R4LXZhbGlkYXRvcj5cbiAgICA8L2R4LXRleHQtYm94PlxuICA8L2Rpdj5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cImR4LWZpZWxkXCI+XG4gIDxkaXYgY2xhc3M9XCJkeC1maWVsZC1sYWJlbFwiPlxuICAgIDxzcGFuPuS5puetvuWQjeensDwvc3Bhbj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJkeC1maWVsZC12YWx1ZVwiPlxuICAgIDxkeC10ZXh0LWJveCBbKHZhbHVlKV09XCJtYXJrLmRpc3BsYXlcIj48L2R4LXRleHQtYm94PlxuICA8L2Rpdj5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cImR4LWZpZWxkXCI+XG4gIDxkaXYgY2xhc3M9XCJkeC1maWVsZC1sYWJlbFwiPlxuICAgIDxzcGFuPue7hOS7tuexu+Weizwvc3Bhbj5cbiAgICA8c3BhbiBjbGFzcz1cInJlcXVpcmVkLW1hcmtcIj4mbmJzcDsqPC9zcGFuPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImR4LWZpZWxkLXZhbHVlXCI+XG4gICAgPGR4LXNlbGVjdC1ib3ggW2RhdGFTb3VyY2VdPVwibWFya1R5cGVzXCJcbiAgICAgICAgICAgICAgICAgICB2YWx1ZUV4cHI9XCJuYW1lXCJcbiAgICAgICAgICAgICAgICAgICBkaXNwbGF5RXhwcj1cImNhcHRpb25cIlxuICAgICAgICAgICAgICAgICAgIFsodmFsdWUpXT1cIm1hcmsudHlwZVwiXG4gICAgICAgICAgICAgICAgICAgKG9uU2VsZWN0aW9uQ2hhbmdlZCk9XCJjaGFuZ2VNYXJrVHlwZSgpXCI+XG4gICAgICA8ZHgtdmFsaWRhdG9yPlxuICAgICAgICA8ZHhpLXZhbGlkYXRpb24tcnVsZSB0eXBlPVwicmVxdWlyZWRcIiBtZXNzYWdlPVwi5YC85LiN6IO95Li656m6XCI+PC9keGktdmFsaWRhdGlvbi1ydWxlPlxuICAgICAgPC9keC12YWxpZGF0b3I+XG4gICAgPC9keC1zZWxlY3QtYm94PlxuICA8L2Rpdj5cbjwvZGl2PlxuPG5nLWNvbnRhaW5lciAjbWFya0l0ZW1Db25maWdSZWY+PC9uZy1jb250YWluZXI+XG4iXX0=
|
|
@@ -147,8 +147,10 @@ export class WordDesignerComponent {
|
|
|
147
147
|
});
|
|
148
148
|
}
|
|
149
149
|
copyMarkConfig() {
|
|
150
|
-
|
|
151
|
-
|
|
150
|
+
if (this.service.activeMark.type) {
|
|
151
|
+
this.service.copiedMark = deepClone(this.service.activeMark);
|
|
152
|
+
this.pasteMode = true;
|
|
153
|
+
}
|
|
152
154
|
}
|
|
153
155
|
exitPasteMode() {
|
|
154
156
|
this.service.copiedMark = {};
|
|
@@ -170,10 +172,10 @@ export class WordDesignerComponent {
|
|
|
170
172
|
}
|
|
171
173
|
}
|
|
172
174
|
WordDesignerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: WordDesignerComponent, deps: [{ token: i1.SectionService }, { token: i2.WordDesignerService }, { token: i0.ViewContainerRef }, { token: i3.ModalService }], target: i0.ɵɵFactoryTarget.Component });
|
|
173
|
-
WordDesignerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: WordDesignerComponent, selector: "rs-word-designer", inputs: { tenant: "tenant", className: "className", oid: "oid", instanceClassName: "instanceClassName", filterCategories: "filterCategories", params: "params", tabViewContainerRef: "tabViewContainerRef" }, host: { listeners: { "window:keydown": "handleKeyDown($event)" } }, providers: [WordDesignerService], viewQueries: [{ propertyName: "uploadInput", first: true, predicate: ["uploadInput"], descendants: true, static: true }, { propertyName: "replaceFileModalTemplate", first: true, predicate: ["replaceFileModalTemplate"], descendants: true, static: true }, { propertyName: "previewTemplate", first: true, predicate: ["previewTemplate"], descendants: true, static: true }, { propertyName: "previewFooterTemplate", first: true, predicate: ["previewFooterTemplate"], descendants: true, static: true }], ngImport: i0, template: "<dx-load-panel [container]=\"viewContainerRef.element.nativeElement\" [showPane]=\"false\" [visible]=\"loading\">\n <dxo-position [of]=\"viewContainerRef.element.nativeElement\"></dxo-position>\n</dx-load-panel>\n<input #uploadInput type=\"file\" name=\"file\"\n accept=\"application/vnd.openxmlformats-officedocument.wordprocessingml.document\" (change)=\"upload()\"\n style=\"display: none;\"/>\n<div class=\"coast-card\">\n <div class=\"coast-card-content\">\n <div class=\"content-main\" [class.show-upload-btn]=\"needUpload\">\n <ng-container *ngIf=\"needUpload\">\n <dx-button type=\"success\" text=\"\u4E0A\u4F20\u6587\u4EF6\" (onClick)=\"uploadInput.click()\"></dx-button>\n </ng-container>\n <div *ngIf=\"!needUpload\" class=\"left-panel\">\n <div *ngIf=\"pasteMode\" class=\"paste-mode-bar\">\n <span\n class=\"message\">\u5DF2\u8FDB\u5165\u6279\u91CF\u7C98\u8D34\u914D\u7F6E\u6A21\u5F0F\uFF0C\u652F\u6301Ctrl\u3001Shift\u952E\u5FEB\u6377\u9009\u62E9\uFF0C\u6309Ctrl+V\u7EC4\u5408\u952E\u7C98\u8D34\u914D\u7F6E\uFF0C\u6309Esc\u952E\u53D6\u6D88\u64CD\u4F5C\u5E76\u9000\u51FA\u8BE5\u6A21\u5F0F</span>\n <dx-button [width]=\"48\" text=\"\u9000\u51FA\" (onClick)=\"exitPasteMode()\"></dx-button>\n </div>\n <div class=\"content\"\n (mouseenter)=\"mouseInViewer = true;\"\n (mouseleave)=\"mouseInViewer = false;\"\n (mousewheel)=\"scaleByMouse($event)\">\n <div *ngIf=\"!needUpload\" class=\"viewer\">\n <ng-container *ngFor=\"let section of sections\">\n <rs-section [section]=\"section\" [editMode]=\"true\" [pasteMode]=\"pasteMode\"></rs-section>\n </ng-container>\n </div>\n </div>\n </div>\n <div *ngIf=\"!needUpload\" class=\"right-panel\">\n <div class=\"header\">\n <dx-button type=\"default\" text=\"\u66FF\u6362\u6587\u4EF6\" (onClick)=\"openReplaceTemplateFileModal()\"\n [disabled]=\"loading\"></dx-button>\n <dx-button icon=\"coast-icon coast-icon-download\" hint=\"\u4E0B\u8F7D\u6587\u4EF6\"\n (onClick)=\"downloadTemplateFile()\" [disabled]=\"loading\"></dx-button>\n <dx-button icon=\"coast-icon coast-icon-direction-up\" hint=\"\u4E0A\u4E00\u4E2A(Alt + \u2191)\"\n (onClick)=\"service.switchMark(-1)\" [disabled]=\"loading\"></dx-button>\n <dx-button icon=\"coast-icon coast-icon-direction-down\" hint=\"\u4E0B\u4E00\u4E2A(Alt + \u2193)\"\n (onClick)=\"service.switchMark(1)\" [disabled]=\"loading\"></dx-button>\n <dx-button [type]=\"pasteMode ? 'success' : 'default'\" text=\"\u590D\u5236\" hint=\"\u590D\u5236(Ctrl + c)\"\n (onClick)=\"copyMarkConfig()\"></dx-button>\n <dx-button type=\"danger\" text=\"\u7C98\u8D34\" hint=\"\u7C98\u8D34(Ctrl + v)\" (onClick)=\"pasteMarkConfig()\"\n [disabled]=\"loading || !pasteMode\"></dx-button>\n </div>\n <div class=\"config\" *ngIf=\"service.activeMark\">\n <rs-mark-config [tenant]=\"tenant\"\n [templateClassName]=\"className\"\n [templateOid]=\"oid\"\n [instanceClassName]=\"instanceClassName\"\n [filterCategories]=\"filterCategories\"\n [mark]=\"service.activeMark\"\n [marks]=\"service.marks\"></rs-mark-config>\n </div>\n </div>\n </div>\n </div>\n <div *ngIf=\"!needUpload\" class=\"footer\">\n <div class=\"left\">\n <dx-button text=\"\u653E\u5927\" (onClick)=\"scale(0.1)\"></dx-button>\n <dx-button text=\"\u8FD8\u539F\" (onClick)=\"scale(0)\"></dx-button>\n <dx-button text=\"\u7F29\u5C0F\" (onClick)=\"scale(-0.1)\"></dx-button>\n </div>\n <div class=\"right\">\n <dx-button type=\"default\" text=\"\u9884\u89C8\" (onClick)=\"preview()\" [disabled]=\"needUpload || loading\"></dx-button>\n <dx-button type=\"success\" text=\"\u4FDD\u5B58\" (onClick)=\"saveConfig()\" [disabled]=\"needUpload || loading\"></dx-button>\n </div>\n </div>\n</div>\n<ng-template #replaceFileModalTemplate>\n <div class=\"confirm-message\">\n <span>\u66FF\u6362\u6587\u4EF6\u53EF\u4EE5\u6309\u7167\u4E66\u7B7E\u6807\u8BC6\u7EE7\u627F\u5DF2\u4FDD\u5B58\u7684\u4E66\u7B7E\u914D\u7F6E\uFF0C\u8BF7\u9009\u62E9\u64CD\u4F5C\uFF1A</span>\n </div>\n <div class=\"form-buttons\">\n <div class=\"buttons-wrapper\">\n <dx-button type=\"default\" text=\"\u7EE7\u627F\u914D\u7F6E\" (onClick)=\"replaceTemplateFile(true)\"></dx-button>\n <dx-button type=\"danger\" text=\"\u6E05\u9664\u914D\u7F6E\" (onClick)=\"replaceTemplateFile(false)\"></dx-button>\n <dx-button type=\"normal\" text=\"\u53D6\u6D88\" (onClick)=\"replaceFileModal?.hide()\"></dx-button>\n </div>\n </div>\n</ng-template>\n<ng-template #previewTemplate>\n <div class=\"preview-viewer\">\n <div class=\"viewer-container\">\n <div class=\"viewer\">\n <ng-container *ngFor=\"let section of sections\">\n <rs-section [section]=\"section\"></rs-section>\n </ng-container>\n </div>\n </div>\n </div>\n</ng-template>\n<ng-template #previewFooterTemplate>\n <div class=\"form-buttons\">\n <div class=\"buttons-wrapper\">\n <dx-button type=\"normal\" text=\"\u5173\u95ED\" (onClick)=\"previewModal?.hide()\"></dx-button>\n </div>\n </div>\n</ng-template>\n", styles: [":host{flex:1;display:flex;flex-flow:column nowrap}:host .coast-card{flex:1;padding:0}:host .coast-card .content-main{display:flex;flex-flow:row nowrap;padding:16px 0 0 16px;margin:0}:host .coast-card .content-main.show-upload-btn{padding:16px;background-color:var(--coast-empty-color, rgb(229, 229, 229));align-items:center;justify-content:center}:host .coast-card .content-main .left-panel{flex:auto;width:0;overflow-x:auto;background-color:var(--coast-empty-color, rgb(229, 229, 229));display:flex;flex-flow:column nowrap}:host .coast-card .content-main .left-panel .paste-mode-bar{flex:none;padding:8px;background-color:var(--coast-base-bg-color, rgb(255, 255, 255));border:1px solid var(--coast-border-color, rgb(221, 221, 221));display:flex;flex-flow:row nowrap;justify-content:space-between;align-items:center}:host .coast-card .content-main .left-panel .paste-mode-bar .message{font-weight:700}:host .coast-card .content-main .left-panel .content{flex:auto;height:0;overflow-y:auto;padding:8px 16px 0;display:flex;flex-flow:row nowrap}:host .coast-card .content-main .left-panel .content .viewer{margin:auto;display:flex;flex-flow:column nowrap;align-items:center;z-index:0}:host .coast-card .content-main .right-panel{flex:0 0 320px;display:flex;flex-flow:column nowrap;border-left:1px solid var(--coast-border-color, rgb(221, 221, 221))}:host .coast-card .content-main .right-panel .header{flex:none;border-bottom:1px solid var(--coast-border-color, rgb(221, 221, 221));padding:0 16px 16px}:host .coast-card .content-main .right-panel .header>dx-button:not(:last-child){margin-right:8px}:host .coast-card .content-main .right-panel .config{flex:auto;height:0;overflow:auto;padding:24px;display:flex;flex-flow:column nowrap}:host .coast-card .footer{flex:none;border-top:1px solid var(--coast-border-color, rgb(221, 221, 221));padding:12px 24px;display:flex;flex-flow:row nowrap;justify-content:space-between}:host .coast-card .footer dx-button{width:80px}:host .coast-card .footer dx-button:not(:last-child){margin-right:8px}.confirm-message{padding:24px;margin-bottom:12px;border-bottom:1px solid var(--coast-border-color, rgb(221, 221, 221))}.confirm-message span{font-size:14px}.preview-viewer{flex:auto;height:0;overflow-y:auto;margin:0 16px;background-color:var(--coast-empty-color, rgb(229, 229, 229));display:flex;flex-flow:column nowrap}.preview-viewer .viewer-container{flex:auto;height:0;overflow-x:auto;padding:8px 16px 0;display:flex;flex-flow:row nowrap}.preview-viewer .viewer-container .viewer{margin:auto;display:flex;flex-flow:column nowrap;align-items:center;z-index:0}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.DxoPositionComponent, selector: "dxo-position", inputs: ["at", "boundary", "boundaryOffset", "collision", "my", "of", "offset"] }, { kind: "component", type: i6.DxButtonComponent, selector: "dx-button", inputs: ["accessKey", "activeStateEnabled", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "icon", "rtlEnabled", "stylingMode", "tabIndex", "template", "text", "type", "useSubmitBehavior", "validationGroup", "visible", "width"], outputs: ["onClick", "onContentReady", "onDisposing", "onInitialized", "onOptionChanged", "accessKeyChange", "activeStateEnabledChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "iconChange", "rtlEnabledChange", "stylingModeChange", "tabIndexChange", "templateChange", "textChange", "typeChange", "useSubmitBehaviorChange", "validationGroupChange", "visibleChange", "widthChange"] }, { kind: "component", type: i7.DxLoadPanelComponent, selector: "dx-load-panel", inputs: ["animation", "closeOnOutsideClick", "container", "copyRootClassesToWrapper", "deferRendering", "delay", "elementAttr", "focusStateEnabled", "height", "hideOnOutsideClick", "hideOnParentScroll", "hint", "hoverStateEnabled", "indicatorSrc", "maxHeight", "maxWidth", "message", "minHeight", "minWidth", "position", "rtlEnabled", "shading", "shadingColor", "showIndicator", "showPane", "visible", "width", "wrapperAttr"], outputs: ["onContentReady", "onDisposing", "onHidden", "onHiding", "onInitialized", "onOptionChanged", "onShowing", "onShown", "animationChange", "closeOnOutsideClickChange", "containerChange", "copyRootClassesToWrapperChange", "deferRenderingChange", "delayChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hideOnOutsideClickChange", "hideOnParentScrollChange", "hintChange", "hoverStateEnabledChange", "indicatorSrcChange", "maxHeightChange", "maxWidthChange", "messageChange", "minHeightChange", "minWidthChange", "positionChange", "rtlEnabledChange", "shadingChange", "shadingColorChange", "showIndicatorChange", "showPaneChange", "visibleChange", "widthChange", "wrapperAttrChange"] }, { kind: "component", type: i8.SectionComponent, selector: "rs-section", inputs: ["section", "editMode", "pasteMode", "readonly"] }, { kind: "component", type: i9.MarkConfigComponent, selector: "rs-mark-config", inputs: ["tenant", "templateClassName", "templateOid", "instanceClassName", "filterCategories", "mark", "marks"] }] });
|
|
175
|
+
WordDesignerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: WordDesignerComponent, selector: "rs-word-designer", inputs: { tenant: "tenant", className: "className", oid: "oid", instanceClassName: "instanceClassName", filterCategories: "filterCategories", params: "params", tabViewContainerRef: "tabViewContainerRef" }, host: { listeners: { "window:keydown": "handleKeyDown($event)" } }, providers: [WordDesignerService], viewQueries: [{ propertyName: "uploadInput", first: true, predicate: ["uploadInput"], descendants: true, static: true }, { propertyName: "replaceFileModalTemplate", first: true, predicate: ["replaceFileModalTemplate"], descendants: true, static: true }, { propertyName: "previewTemplate", first: true, predicate: ["previewTemplate"], descendants: true, static: true }, { propertyName: "previewFooterTemplate", first: true, predicate: ["previewFooterTemplate"], descendants: true, static: true }], ngImport: i0, template: "<dx-load-panel [container]=\"viewContainerRef.element.nativeElement\" [showPane]=\"false\" [visible]=\"loading\">\n <dxo-position [of]=\"viewContainerRef.element.nativeElement\"></dxo-position>\n</dx-load-panel>\n<input #uploadInput type=\"file\" name=\"file\"\n accept=\"application/vnd.openxmlformats-officedocument.wordprocessingml.document\" (change)=\"upload()\"\n style=\"display: none;\"/>\n<div class=\"coast-card\">\n <div class=\"coast-card-content\">\n <div class=\"content-main\" [class.show-upload-btn]=\"needUpload\">\n <ng-container *ngIf=\"needUpload\">\n <dx-button type=\"success\" text=\"\u4E0A\u4F20\u6587\u4EF6\" (onClick)=\"uploadInput.click()\"></dx-button>\n </ng-container>\n <div *ngIf=\"!needUpload\" class=\"left-panel\">\n <div *ngIf=\"pasteMode\" class=\"paste-mode-bar\">\n <span\n class=\"message\">\u5DF2\u8FDB\u5165\u6279\u91CF\u7C98\u8D34\u914D\u7F6E\u6A21\u5F0F\uFF0C\u652F\u6301Ctrl\u3001Shift\u952E\u5FEB\u6377\u9009\u62E9\uFF0C\u6309Ctrl+V\u7EC4\u5408\u952E\u7C98\u8D34\u914D\u7F6E\uFF0C\u6309Esc\u952E\u53D6\u6D88\u64CD\u4F5C\u5E76\u9000\u51FA\u8BE5\u6A21\u5F0F</span>\n <dx-button [width]=\"48\" text=\"\u9000\u51FA\" (onClick)=\"exitPasteMode()\"></dx-button>\n </div>\n <div class=\"content\"\n (mouseenter)=\"mouseInViewer = true;\"\n (mouseleave)=\"mouseInViewer = false;\"\n (mousewheel)=\"scaleByMouse($event)\">\n <div *ngIf=\"!needUpload\" class=\"viewer\">\n <ng-container *ngFor=\"let section of sections\">\n <rs-section [section]=\"section\" [editMode]=\"true\" [pasteMode]=\"pasteMode\"></rs-section>\n </ng-container>\n </div>\n </div>\n </div>\n <div *ngIf=\"!needUpload\" class=\"right-panel\">\n <div class=\"header\">\n <dx-button type=\"default\" text=\"\u66FF\u6362\u6587\u4EF6\" (onClick)=\"openReplaceTemplateFileModal()\"\n [disabled]=\"loading\"></dx-button>\n <dx-button icon=\"coast-icon coast-icon-download\" hint=\"\u4E0B\u8F7D\u6587\u4EF6\"\n (onClick)=\"downloadTemplateFile()\" [disabled]=\"loading\"></dx-button>\n <dx-button icon=\"coast-icon coast-icon-direction-up\" hint=\"\u4E0A\u4E00\u4E2A(Alt + \u2191)\"\n (onClick)=\"service.switchMark(-1)\" [disabled]=\"loading\"></dx-button>\n <dx-button icon=\"coast-icon coast-icon-direction-down\" hint=\"\u4E0B\u4E00\u4E2A(Alt + \u2193)\"\n (onClick)=\"service.switchMark(1)\" [disabled]=\"loading\"></dx-button>\n <dx-button [type]=\"pasteMode ? 'success' : 'default'\" text=\"\u590D\u5236\" hint=\"\u590D\u5236(Ctrl + c)\"\n (onClick)=\"copyMarkConfig()\"></dx-button>\n <dx-button type=\"danger\" text=\"\u7C98\u8D34\" hint=\"\u7C98\u8D34(Ctrl + v)\" (onClick)=\"pasteMarkConfig()\"\n [disabled]=\"loading || !pasteMode\"></dx-button>\n </div>\n <div class=\"config\" *ngIf=\"service.activeMark\">\n <rs-mark-config [tenant]=\"tenant\"\n [templateClassName]=\"className\"\n [templateOid]=\"oid\"\n [instanceClassName]=\"instanceClassName\"\n [filterCategories]=\"filterCategories\"\n [mark]=\"service.activeMark\"\n [marks]=\"service.marks\"\n [tabViewContainerRef]=\"tabViewContainerRef\"></rs-mark-config>\n </div>\n </div>\n </div>\n </div>\n <div *ngIf=\"!needUpload\" class=\"footer\">\n <div class=\"left\">\n <dx-button text=\"\u653E\u5927\" (onClick)=\"scale(0.1)\"></dx-button>\n <dx-button text=\"\u8FD8\u539F\" (onClick)=\"scale(0)\"></dx-button>\n <dx-button text=\"\u7F29\u5C0F\" (onClick)=\"scale(-0.1)\"></dx-button>\n </div>\n <div class=\"right\">\n <dx-button type=\"default\" text=\"\u9884\u89C8\" (onClick)=\"preview()\" [disabled]=\"needUpload || loading\"></dx-button>\n <dx-button type=\"success\" text=\"\u4FDD\u5B58\" (onClick)=\"saveConfig()\" [disabled]=\"needUpload || loading\"></dx-button>\n </div>\n </div>\n</div>\n<ng-template #replaceFileModalTemplate>\n <div class=\"confirm-message\">\n <span>\u66FF\u6362\u6587\u4EF6\u53EF\u4EE5\u6309\u7167\u4E66\u7B7E\u6807\u8BC6\u7EE7\u627F\u5DF2\u4FDD\u5B58\u7684\u4E66\u7B7E\u914D\u7F6E\uFF0C\u8BF7\u9009\u62E9\u64CD\u4F5C\uFF1A</span>\n </div>\n <div class=\"form-buttons\">\n <div class=\"buttons-wrapper\">\n <dx-button type=\"default\" text=\"\u7EE7\u627F\u914D\u7F6E\" (onClick)=\"replaceTemplateFile(true)\"></dx-button>\n <dx-button type=\"danger\" text=\"\u6E05\u9664\u914D\u7F6E\" (onClick)=\"replaceTemplateFile(false)\"></dx-button>\n <dx-button type=\"normal\" text=\"\u53D6\u6D88\" (onClick)=\"replaceFileModal?.hide()\"></dx-button>\n </div>\n </div>\n</ng-template>\n<ng-template #previewTemplate>\n <div class=\"preview-viewer\">\n <div class=\"viewer-container\">\n <div class=\"viewer\">\n <ng-container *ngFor=\"let section of sections\">\n <rs-section [section]=\"section\"></rs-section>\n </ng-container>\n </div>\n </div>\n </div>\n</ng-template>\n<ng-template #previewFooterTemplate>\n <div class=\"form-buttons\">\n <div class=\"buttons-wrapper\">\n <dx-button type=\"normal\" text=\"\u5173\u95ED\" (onClick)=\"previewModal?.hide()\"></dx-button>\n </div>\n </div>\n</ng-template>\n", styles: [":host{flex:1;display:flex;flex-flow:column nowrap}:host .coast-card{flex:1;padding:0}:host .coast-card .content-main{display:flex;flex-flow:row nowrap;padding:16px 0 0 16px;margin:0}:host .coast-card .content-main.show-upload-btn{padding:16px;background-color:var(--coast-empty-color, rgb(229, 229, 229));align-items:center;justify-content:center}:host .coast-card .content-main .left-panel{flex:auto;width:0;overflow-x:auto;background-color:var(--coast-empty-color, rgb(229, 229, 229));display:flex;flex-flow:column nowrap}:host .coast-card .content-main .left-panel .paste-mode-bar{flex:none;padding:8px;background-color:var(--coast-base-bg-color, rgb(255, 255, 255));border:1px solid var(--coast-border-color, rgb(221, 221, 221));display:flex;flex-flow:row nowrap;justify-content:space-between;align-items:center}:host .coast-card .content-main .left-panel .paste-mode-bar .message{font-weight:700}:host .coast-card .content-main .left-panel .content{flex:auto;height:0;overflow-y:auto;padding:8px 16px 0;display:flex;flex-flow:row nowrap}:host .coast-card .content-main .left-panel .content .viewer{margin:auto;display:flex;flex-flow:column nowrap;align-items:center;z-index:0}:host .coast-card .content-main .right-panel{flex:0 0 320px;display:flex;flex-flow:column nowrap;border-left:1px solid var(--coast-border-color, rgb(221, 221, 221))}:host .coast-card .content-main .right-panel .header{flex:none;border-bottom:1px solid var(--coast-border-color, rgb(221, 221, 221));padding:0 16px 16px}:host .coast-card .content-main .right-panel .header>dx-button:not(:last-child){margin-right:8px}:host .coast-card .content-main .right-panel .config{flex:auto;height:0;overflow:auto;padding:24px;display:flex;flex-flow:column nowrap}:host .coast-card .footer{flex:none;border-top:1px solid var(--coast-border-color, rgb(221, 221, 221));padding:12px 24px;display:flex;flex-flow:row nowrap;justify-content:space-between}:host .coast-card .footer dx-button{width:80px}:host .coast-card .footer dx-button:not(:last-child){margin-right:8px}.confirm-message{padding:24px;margin-bottom:12px;border-bottom:1px solid var(--coast-border-color, rgb(221, 221, 221))}.confirm-message span{font-size:14px}.preview-viewer{flex:auto;height:0;overflow-y:auto;margin:0 16px;background-color:var(--coast-empty-color, rgb(229, 229, 229));display:flex;flex-flow:column nowrap}.preview-viewer .viewer-container{flex:auto;height:0;overflow-x:auto;padding:8px 16px 0;display:flex;flex-flow:row nowrap}.preview-viewer .viewer-container .viewer{margin:auto;display:flex;flex-flow:column nowrap;align-items:center;z-index:0}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.DxoPositionComponent, selector: "dxo-position", inputs: ["at", "boundary", "boundaryOffset", "collision", "my", "of", "offset"] }, { kind: "component", type: i6.DxButtonComponent, selector: "dx-button", inputs: ["accessKey", "activeStateEnabled", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "icon", "rtlEnabled", "stylingMode", "tabIndex", "template", "text", "type", "useSubmitBehavior", "validationGroup", "visible", "width"], outputs: ["onClick", "onContentReady", "onDisposing", "onInitialized", "onOptionChanged", "accessKeyChange", "activeStateEnabledChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "iconChange", "rtlEnabledChange", "stylingModeChange", "tabIndexChange", "templateChange", "textChange", "typeChange", "useSubmitBehaviorChange", "validationGroupChange", "visibleChange", "widthChange"] }, { kind: "component", type: i7.DxLoadPanelComponent, selector: "dx-load-panel", inputs: ["animation", "closeOnOutsideClick", "container", "copyRootClassesToWrapper", "deferRendering", "delay", "elementAttr", "focusStateEnabled", "height", "hideOnOutsideClick", "hideOnParentScroll", "hint", "hoverStateEnabled", "indicatorSrc", "maxHeight", "maxWidth", "message", "minHeight", "minWidth", "position", "rtlEnabled", "shading", "shadingColor", "showIndicator", "showPane", "visible", "width", "wrapperAttr"], outputs: ["onContentReady", "onDisposing", "onHidden", "onHiding", "onInitialized", "onOptionChanged", "onShowing", "onShown", "animationChange", "closeOnOutsideClickChange", "containerChange", "copyRootClassesToWrapperChange", "deferRenderingChange", "delayChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hideOnOutsideClickChange", "hideOnParentScrollChange", "hintChange", "hoverStateEnabledChange", "indicatorSrcChange", "maxHeightChange", "maxWidthChange", "messageChange", "minHeightChange", "minWidthChange", "positionChange", "rtlEnabledChange", "shadingChange", "shadingColorChange", "showIndicatorChange", "showPaneChange", "visibleChange", "widthChange", "wrapperAttrChange"] }, { kind: "component", type: i8.SectionComponent, selector: "rs-section", inputs: ["section", "editMode", "pasteMode", "readonly"] }, { kind: "component", type: i9.MarkConfigComponent, selector: "rs-mark-config", inputs: ["tenant", "templateClassName", "templateOid", "instanceClassName", "filterCategories", "mark", "marks", "params", "tabViewContainerRef"] }] });
|
|
174
176
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: WordDesignerComponent, decorators: [{
|
|
175
177
|
type: Component,
|
|
176
|
-
args: [{ selector: 'rs-word-designer', providers: [WordDesignerService], template: "<dx-load-panel [container]=\"viewContainerRef.element.nativeElement\" [showPane]=\"false\" [visible]=\"loading\">\n <dxo-position [of]=\"viewContainerRef.element.nativeElement\"></dxo-position>\n</dx-load-panel>\n<input #uploadInput type=\"file\" name=\"file\"\n accept=\"application/vnd.openxmlformats-officedocument.wordprocessingml.document\" (change)=\"upload()\"\n style=\"display: none;\"/>\n<div class=\"coast-card\">\n <div class=\"coast-card-content\">\n <div class=\"content-main\" [class.show-upload-btn]=\"needUpload\">\n <ng-container *ngIf=\"needUpload\">\n <dx-button type=\"success\" text=\"\u4E0A\u4F20\u6587\u4EF6\" (onClick)=\"uploadInput.click()\"></dx-button>\n </ng-container>\n <div *ngIf=\"!needUpload\" class=\"left-panel\">\n <div *ngIf=\"pasteMode\" class=\"paste-mode-bar\">\n <span\n class=\"message\">\u5DF2\u8FDB\u5165\u6279\u91CF\u7C98\u8D34\u914D\u7F6E\u6A21\u5F0F\uFF0C\u652F\u6301Ctrl\u3001Shift\u952E\u5FEB\u6377\u9009\u62E9\uFF0C\u6309Ctrl+V\u7EC4\u5408\u952E\u7C98\u8D34\u914D\u7F6E\uFF0C\u6309Esc\u952E\u53D6\u6D88\u64CD\u4F5C\u5E76\u9000\u51FA\u8BE5\u6A21\u5F0F</span>\n <dx-button [width]=\"48\" text=\"\u9000\u51FA\" (onClick)=\"exitPasteMode()\"></dx-button>\n </div>\n <div class=\"content\"\n (mouseenter)=\"mouseInViewer = true;\"\n (mouseleave)=\"mouseInViewer = false;\"\n (mousewheel)=\"scaleByMouse($event)\">\n <div *ngIf=\"!needUpload\" class=\"viewer\">\n <ng-container *ngFor=\"let section of sections\">\n <rs-section [section]=\"section\" [editMode]=\"true\" [pasteMode]=\"pasteMode\"></rs-section>\n </ng-container>\n </div>\n </div>\n </div>\n <div *ngIf=\"!needUpload\" class=\"right-panel\">\n <div class=\"header\">\n <dx-button type=\"default\" text=\"\u66FF\u6362\u6587\u4EF6\" (onClick)=\"openReplaceTemplateFileModal()\"\n [disabled]=\"loading\"></dx-button>\n <dx-button icon=\"coast-icon coast-icon-download\" hint=\"\u4E0B\u8F7D\u6587\u4EF6\"\n (onClick)=\"downloadTemplateFile()\" [disabled]=\"loading\"></dx-button>\n <dx-button icon=\"coast-icon coast-icon-direction-up\" hint=\"\u4E0A\u4E00\u4E2A(Alt + \u2191)\"\n (onClick)=\"service.switchMark(-1)\" [disabled]=\"loading\"></dx-button>\n <dx-button icon=\"coast-icon coast-icon-direction-down\" hint=\"\u4E0B\u4E00\u4E2A(Alt + \u2193)\"\n (onClick)=\"service.switchMark(1)\" [disabled]=\"loading\"></dx-button>\n <dx-button [type]=\"pasteMode ? 'success' : 'default'\" text=\"\u590D\u5236\" hint=\"\u590D\u5236(Ctrl + c)\"\n (onClick)=\"copyMarkConfig()\"></dx-button>\n <dx-button type=\"danger\" text=\"\u7C98\u8D34\" hint=\"\u7C98\u8D34(Ctrl + v)\" (onClick)=\"pasteMarkConfig()\"\n [disabled]=\"loading || !pasteMode\"></dx-button>\n </div>\n <div class=\"config\" *ngIf=\"service.activeMark\">\n <rs-mark-config [tenant]=\"tenant\"\n [templateClassName]=\"className\"\n [templateOid]=\"oid\"\n [instanceClassName]=\"instanceClassName\"\n [filterCategories]=\"filterCategories\"\n [mark]=\"service.activeMark\"\n [marks]=\"service.marks\"></rs-mark-config>\n </div>\n </div>\n </div>\n </div>\n <div *ngIf=\"!needUpload\" class=\"footer\">\n <div class=\"left\">\n <dx-button text=\"\u653E\u5927\" (onClick)=\"scale(0.1)\"></dx-button>\n <dx-button text=\"\u8FD8\u539F\" (onClick)=\"scale(0)\"></dx-button>\n <dx-button text=\"\u7F29\u5C0F\" (onClick)=\"scale(-0.1)\"></dx-button>\n </div>\n <div class=\"right\">\n <dx-button type=\"default\" text=\"\u9884\u89C8\" (onClick)=\"preview()\" [disabled]=\"needUpload || loading\"></dx-button>\n <dx-button type=\"success\" text=\"\u4FDD\u5B58\" (onClick)=\"saveConfig()\" [disabled]=\"needUpload || loading\"></dx-button>\n </div>\n </div>\n</div>\n<ng-template #replaceFileModalTemplate>\n <div class=\"confirm-message\">\n <span>\u66FF\u6362\u6587\u4EF6\u53EF\u4EE5\u6309\u7167\u4E66\u7B7E\u6807\u8BC6\u7EE7\u627F\u5DF2\u4FDD\u5B58\u7684\u4E66\u7B7E\u914D\u7F6E\uFF0C\u8BF7\u9009\u62E9\u64CD\u4F5C\uFF1A</span>\n </div>\n <div class=\"form-buttons\">\n <div class=\"buttons-wrapper\">\n <dx-button type=\"default\" text=\"\u7EE7\u627F\u914D\u7F6E\" (onClick)=\"replaceTemplateFile(true)\"></dx-button>\n <dx-button type=\"danger\" text=\"\u6E05\u9664\u914D\u7F6E\" (onClick)=\"replaceTemplateFile(false)\"></dx-button>\n <dx-button type=\"normal\" text=\"\u53D6\u6D88\" (onClick)=\"replaceFileModal?.hide()\"></dx-button>\n </div>\n </div>\n</ng-template>\n<ng-template #previewTemplate>\n <div class=\"preview-viewer\">\n <div class=\"viewer-container\">\n <div class=\"viewer\">\n <ng-container *ngFor=\"let section of sections\">\n <rs-section [section]=\"section\"></rs-section>\n </ng-container>\n </div>\n </div>\n </div>\n</ng-template>\n<ng-template #previewFooterTemplate>\n <div class=\"form-buttons\">\n <div class=\"buttons-wrapper\">\n <dx-button type=\"normal\" text=\"\u5173\u95ED\" (onClick)=\"previewModal?.hide()\"></dx-button>\n </div>\n </div>\n</ng-template>\n", styles: [":host{flex:1;display:flex;flex-flow:column nowrap}:host .coast-card{flex:1;padding:0}:host .coast-card .content-main{display:flex;flex-flow:row nowrap;padding:16px 0 0 16px;margin:0}:host .coast-card .content-main.show-upload-btn{padding:16px;background-color:var(--coast-empty-color, rgb(229, 229, 229));align-items:center;justify-content:center}:host .coast-card .content-main .left-panel{flex:auto;width:0;overflow-x:auto;background-color:var(--coast-empty-color, rgb(229, 229, 229));display:flex;flex-flow:column nowrap}:host .coast-card .content-main .left-panel .paste-mode-bar{flex:none;padding:8px;background-color:var(--coast-base-bg-color, rgb(255, 255, 255));border:1px solid var(--coast-border-color, rgb(221, 221, 221));display:flex;flex-flow:row nowrap;justify-content:space-between;align-items:center}:host .coast-card .content-main .left-panel .paste-mode-bar .message{font-weight:700}:host .coast-card .content-main .left-panel .content{flex:auto;height:0;overflow-y:auto;padding:8px 16px 0;display:flex;flex-flow:row nowrap}:host .coast-card .content-main .left-panel .content .viewer{margin:auto;display:flex;flex-flow:column nowrap;align-items:center;z-index:0}:host .coast-card .content-main .right-panel{flex:0 0 320px;display:flex;flex-flow:column nowrap;border-left:1px solid var(--coast-border-color, rgb(221, 221, 221))}:host .coast-card .content-main .right-panel .header{flex:none;border-bottom:1px solid var(--coast-border-color, rgb(221, 221, 221));padding:0 16px 16px}:host .coast-card .content-main .right-panel .header>dx-button:not(:last-child){margin-right:8px}:host .coast-card .content-main .right-panel .config{flex:auto;height:0;overflow:auto;padding:24px;display:flex;flex-flow:column nowrap}:host .coast-card .footer{flex:none;border-top:1px solid var(--coast-border-color, rgb(221, 221, 221));padding:12px 24px;display:flex;flex-flow:row nowrap;justify-content:space-between}:host .coast-card .footer dx-button{width:80px}:host .coast-card .footer dx-button:not(:last-child){margin-right:8px}.confirm-message{padding:24px;margin-bottom:12px;border-bottom:1px solid var(--coast-border-color, rgb(221, 221, 221))}.confirm-message span{font-size:14px}.preview-viewer{flex:auto;height:0;overflow-y:auto;margin:0 16px;background-color:var(--coast-empty-color, rgb(229, 229, 229));display:flex;flex-flow:column nowrap}.preview-viewer .viewer-container{flex:auto;height:0;overflow-x:auto;padding:8px 16px 0;display:flex;flex-flow:row nowrap}.preview-viewer .viewer-container .viewer{margin:auto;display:flex;flex-flow:column nowrap;align-items:center;z-index:0}\n"] }]
|
|
178
|
+
args: [{ selector: 'rs-word-designer', providers: [WordDesignerService], template: "<dx-load-panel [container]=\"viewContainerRef.element.nativeElement\" [showPane]=\"false\" [visible]=\"loading\">\n <dxo-position [of]=\"viewContainerRef.element.nativeElement\"></dxo-position>\n</dx-load-panel>\n<input #uploadInput type=\"file\" name=\"file\"\n accept=\"application/vnd.openxmlformats-officedocument.wordprocessingml.document\" (change)=\"upload()\"\n style=\"display: none;\"/>\n<div class=\"coast-card\">\n <div class=\"coast-card-content\">\n <div class=\"content-main\" [class.show-upload-btn]=\"needUpload\">\n <ng-container *ngIf=\"needUpload\">\n <dx-button type=\"success\" text=\"\u4E0A\u4F20\u6587\u4EF6\" (onClick)=\"uploadInput.click()\"></dx-button>\n </ng-container>\n <div *ngIf=\"!needUpload\" class=\"left-panel\">\n <div *ngIf=\"pasteMode\" class=\"paste-mode-bar\">\n <span\n class=\"message\">\u5DF2\u8FDB\u5165\u6279\u91CF\u7C98\u8D34\u914D\u7F6E\u6A21\u5F0F\uFF0C\u652F\u6301Ctrl\u3001Shift\u952E\u5FEB\u6377\u9009\u62E9\uFF0C\u6309Ctrl+V\u7EC4\u5408\u952E\u7C98\u8D34\u914D\u7F6E\uFF0C\u6309Esc\u952E\u53D6\u6D88\u64CD\u4F5C\u5E76\u9000\u51FA\u8BE5\u6A21\u5F0F</span>\n <dx-button [width]=\"48\" text=\"\u9000\u51FA\" (onClick)=\"exitPasteMode()\"></dx-button>\n </div>\n <div class=\"content\"\n (mouseenter)=\"mouseInViewer = true;\"\n (mouseleave)=\"mouseInViewer = false;\"\n (mousewheel)=\"scaleByMouse($event)\">\n <div *ngIf=\"!needUpload\" class=\"viewer\">\n <ng-container *ngFor=\"let section of sections\">\n <rs-section [section]=\"section\" [editMode]=\"true\" [pasteMode]=\"pasteMode\"></rs-section>\n </ng-container>\n </div>\n </div>\n </div>\n <div *ngIf=\"!needUpload\" class=\"right-panel\">\n <div class=\"header\">\n <dx-button type=\"default\" text=\"\u66FF\u6362\u6587\u4EF6\" (onClick)=\"openReplaceTemplateFileModal()\"\n [disabled]=\"loading\"></dx-button>\n <dx-button icon=\"coast-icon coast-icon-download\" hint=\"\u4E0B\u8F7D\u6587\u4EF6\"\n (onClick)=\"downloadTemplateFile()\" [disabled]=\"loading\"></dx-button>\n <dx-button icon=\"coast-icon coast-icon-direction-up\" hint=\"\u4E0A\u4E00\u4E2A(Alt + \u2191)\"\n (onClick)=\"service.switchMark(-1)\" [disabled]=\"loading\"></dx-button>\n <dx-button icon=\"coast-icon coast-icon-direction-down\" hint=\"\u4E0B\u4E00\u4E2A(Alt + \u2193)\"\n (onClick)=\"service.switchMark(1)\" [disabled]=\"loading\"></dx-button>\n <dx-button [type]=\"pasteMode ? 'success' : 'default'\" text=\"\u590D\u5236\" hint=\"\u590D\u5236(Ctrl + c)\"\n (onClick)=\"copyMarkConfig()\"></dx-button>\n <dx-button type=\"danger\" text=\"\u7C98\u8D34\" hint=\"\u7C98\u8D34(Ctrl + v)\" (onClick)=\"pasteMarkConfig()\"\n [disabled]=\"loading || !pasteMode\"></dx-button>\n </div>\n <div class=\"config\" *ngIf=\"service.activeMark\">\n <rs-mark-config [tenant]=\"tenant\"\n [templateClassName]=\"className\"\n [templateOid]=\"oid\"\n [instanceClassName]=\"instanceClassName\"\n [filterCategories]=\"filterCategories\"\n [mark]=\"service.activeMark\"\n [marks]=\"service.marks\"\n [tabViewContainerRef]=\"tabViewContainerRef\"></rs-mark-config>\n </div>\n </div>\n </div>\n </div>\n <div *ngIf=\"!needUpload\" class=\"footer\">\n <div class=\"left\">\n <dx-button text=\"\u653E\u5927\" (onClick)=\"scale(0.1)\"></dx-button>\n <dx-button text=\"\u8FD8\u539F\" (onClick)=\"scale(0)\"></dx-button>\n <dx-button text=\"\u7F29\u5C0F\" (onClick)=\"scale(-0.1)\"></dx-button>\n </div>\n <div class=\"right\">\n <dx-button type=\"default\" text=\"\u9884\u89C8\" (onClick)=\"preview()\" [disabled]=\"needUpload || loading\"></dx-button>\n <dx-button type=\"success\" text=\"\u4FDD\u5B58\" (onClick)=\"saveConfig()\" [disabled]=\"needUpload || loading\"></dx-button>\n </div>\n </div>\n</div>\n<ng-template #replaceFileModalTemplate>\n <div class=\"confirm-message\">\n <span>\u66FF\u6362\u6587\u4EF6\u53EF\u4EE5\u6309\u7167\u4E66\u7B7E\u6807\u8BC6\u7EE7\u627F\u5DF2\u4FDD\u5B58\u7684\u4E66\u7B7E\u914D\u7F6E\uFF0C\u8BF7\u9009\u62E9\u64CD\u4F5C\uFF1A</span>\n </div>\n <div class=\"form-buttons\">\n <div class=\"buttons-wrapper\">\n <dx-button type=\"default\" text=\"\u7EE7\u627F\u914D\u7F6E\" (onClick)=\"replaceTemplateFile(true)\"></dx-button>\n <dx-button type=\"danger\" text=\"\u6E05\u9664\u914D\u7F6E\" (onClick)=\"replaceTemplateFile(false)\"></dx-button>\n <dx-button type=\"normal\" text=\"\u53D6\u6D88\" (onClick)=\"replaceFileModal?.hide()\"></dx-button>\n </div>\n </div>\n</ng-template>\n<ng-template #previewTemplate>\n <div class=\"preview-viewer\">\n <div class=\"viewer-container\">\n <div class=\"viewer\">\n <ng-container *ngFor=\"let section of sections\">\n <rs-section [section]=\"section\"></rs-section>\n </ng-container>\n </div>\n </div>\n </div>\n</ng-template>\n<ng-template #previewFooterTemplate>\n <div class=\"form-buttons\">\n <div class=\"buttons-wrapper\">\n <dx-button type=\"normal\" text=\"\u5173\u95ED\" (onClick)=\"previewModal?.hide()\"></dx-button>\n </div>\n </div>\n</ng-template>\n", styles: [":host{flex:1;display:flex;flex-flow:column nowrap}:host .coast-card{flex:1;padding:0}:host .coast-card .content-main{display:flex;flex-flow:row nowrap;padding:16px 0 0 16px;margin:0}:host .coast-card .content-main.show-upload-btn{padding:16px;background-color:var(--coast-empty-color, rgb(229, 229, 229));align-items:center;justify-content:center}:host .coast-card .content-main .left-panel{flex:auto;width:0;overflow-x:auto;background-color:var(--coast-empty-color, rgb(229, 229, 229));display:flex;flex-flow:column nowrap}:host .coast-card .content-main .left-panel .paste-mode-bar{flex:none;padding:8px;background-color:var(--coast-base-bg-color, rgb(255, 255, 255));border:1px solid var(--coast-border-color, rgb(221, 221, 221));display:flex;flex-flow:row nowrap;justify-content:space-between;align-items:center}:host .coast-card .content-main .left-panel .paste-mode-bar .message{font-weight:700}:host .coast-card .content-main .left-panel .content{flex:auto;height:0;overflow-y:auto;padding:8px 16px 0;display:flex;flex-flow:row nowrap}:host .coast-card .content-main .left-panel .content .viewer{margin:auto;display:flex;flex-flow:column nowrap;align-items:center;z-index:0}:host .coast-card .content-main .right-panel{flex:0 0 320px;display:flex;flex-flow:column nowrap;border-left:1px solid var(--coast-border-color, rgb(221, 221, 221))}:host .coast-card .content-main .right-panel .header{flex:none;border-bottom:1px solid var(--coast-border-color, rgb(221, 221, 221));padding:0 16px 16px}:host .coast-card .content-main .right-panel .header>dx-button:not(:last-child){margin-right:8px}:host .coast-card .content-main .right-panel .config{flex:auto;height:0;overflow:auto;padding:24px;display:flex;flex-flow:column nowrap}:host .coast-card .footer{flex:none;border-top:1px solid var(--coast-border-color, rgb(221, 221, 221));padding:12px 24px;display:flex;flex-flow:row nowrap;justify-content:space-between}:host .coast-card .footer dx-button{width:80px}:host .coast-card .footer dx-button:not(:last-child){margin-right:8px}.confirm-message{padding:24px;margin-bottom:12px;border-bottom:1px solid var(--coast-border-color, rgb(221, 221, 221))}.confirm-message span{font-size:14px}.preview-viewer{flex:auto;height:0;overflow-y:auto;margin:0 16px;background-color:var(--coast-empty-color, rgb(229, 229, 229));display:flex;flex-flow:column nowrap}.preview-viewer .viewer-container{flex:auto;height:0;overflow-x:auto;padding:8px 16px 0;display:flex;flex-flow:row nowrap}.preview-viewer .viewer-container .viewer{margin:auto;display:flex;flex-flow:column nowrap;align-items:center;z-index:0}\n"] }]
|
|
177
179
|
}], ctorParameters: function () { return [{ type: i1.SectionService }, { type: i2.WordDesignerService }, { type: i0.ViewContainerRef }, { type: i3.ModalService }]; }, propDecorators: { tenant: [{
|
|
178
180
|
type: Input
|
|
179
181
|
}], className: [{
|
|
@@ -204,4 +206,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
204
206
|
type: HostListener,
|
|
205
207
|
args: ['window:keydown', ['$event']]
|
|
206
208
|
}] } });
|
|
207
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29yZC1kZXNpZ25lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcnMtYW50L3NyYy93b3JkL3dvcmQtZGVzaWduZXIvd29yZC1kZXNpZ25lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcnMtYW50L3NyYy93b3JkL3dvcmQtZGVzaWduZXIvd29yZC1kZXNpZ25lci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQWUsU0FBUyxFQUFtQixNQUFNLGVBQWUsQ0FBQztBQUVuSCxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUc1RCxPQUFPLEVBQUMsU0FBUyxFQUFFLGFBQWEsRUFBQyxNQUFNLGtCQUFrQixDQUFDOzs7Ozs7Ozs7OztBQVExRCxNQUFNLE9BQU8scUJBQXFCO0lBNkJoQyxhQUFhLENBQUMsTUFBcUI7UUFDakMsUUFBUSxNQUFNLENBQUMsSUFBSSxFQUFFO1lBQ25CLEtBQUssU0FBUztnQkFDWixJQUFJLE1BQU0sQ0FBQyxNQUFNLEVBQUU7b0JBQ2pCLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQzdCO2dCQUNELE1BQU07WUFDUixLQUFLLFdBQVc7Z0JBQ2QsSUFBSSxNQUFNLENBQUMsTUFBTSxFQUFFO29CQUNqQixJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDNUI7Z0JBQ0QsTUFBTTtZQUNSLEtBQUssTUFBTTtnQkFDVCxJQUFJLE1BQU0sQ0FBQyxPQUFPLEVBQUU7b0JBQ2xCLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQztvQkFDeEMsSUFBSSxTQUFTLEVBQUUsUUFBUSxFQUFFLEVBQUU7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QUM7Z0JBQ1EscUJBQXFCO3NCQUF4RSxTQUFTO3VCQUFDLHVCQUF1QixFQUFFLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBQztnQkFHbEQsYUFBYTtzQkFEWixZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEVsZW1lbnRSZWYsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQsIFZpZXdDb250YWluZXJSZWZ9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtNb2RhbENvbXBvbmVudH0gZnJvbSBcIi4uLy4uL21vZGFsL21vZGFsLmNvbXBvbmVudFwiO1xuaW1wb3J0IHtXb3JkRGVzaWduZXJTZXJ2aWNlfSBmcm9tIFwiLi93b3JkLWRlc2lnbmVyLnNlcnZpY2VcIjtcbmltcG9ydCB7TW9kYWxTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vbW9kYWwvbW9kYWwuc2VydmljZVwiO1xuaW1wb3J0IHtTZWN0aW9uU2VydmljZX0gZnJvbSBcIi4uL3NlY3Rpb24vc2VjdGlvbi5zZXJ2aWNlXCI7XG5pbXBvcnQge2RlZXBDbG9uZSwgbm90aWZ5U3VjY2Vzc30gZnJvbSBcIi4uLy4uL3V0aWwvdXRpbHNcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncnMtd29yZC1kZXNpZ25lcicsXG4gIHRlbXBsYXRlVXJsOiAnLi93b3JkLWRlc2lnbmVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vd29yZC1kZXNpZ25lci5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtXb3JkRGVzaWduZXJTZXJ2aWNlXVxufSlcbmV4cG9ydCBjbGFzcyBXb3JkRGVzaWduZXJDb21wb25lbnQge1xuICBASW5wdXQoKVxuICB0ZW5hbnQ6IGFueTtcbiAgQElucHV0KClcbiAgY2xhc3NOYW1lOiBhbnk7XG4gIEBJbnB1dCgpXG4gIG9pZDogYW55O1xuICBASW5wdXQoKVxuICBpbnN0YW5jZUNsYXNzTmFtZTogYW55O1xuICBASW5wdXQoKVxuICBmaWx0ZXJDYXRlZ29yaWVzPzogc3RyaW5nW107XG4gIEBJbnB1dCgpXG4gIHBhcmFtcz86IGFueTtcbiAgQElucHV0KClcbiAgdGFiVmlld0NvbnRhaW5lclJlZiE6IGFueTtcbiAgcHJvdGVjdGVkIHNlY3Rpb25zOiBhbnk7XG4gIHByb3RlY3RlZCBuZWVkVXBsb2FkID0gZmFsc2U7XG4gIHByb3RlY3RlZCBwYXN0ZU1vZGUgPSBmYWxzZTtcbiAgcHJvdGVjdGVkIG1vdXNlSW5WaWV3ZXIgPSBmYWxzZTtcbiAgcHJvdGVjdGVkIGxvYWRpbmcgPSBmYWxzZTtcbiAgcHJvdGVjdGVkIHJlcGxhY2VGaWxlTW9kYWw/OiBNb2RhbENvbXBvbmVudDtcbiAgcHJvdGVjdGVkIHJldGFpbk1hcmtDb25maWcgPSBmYWxzZTtcbiAgcHJvdGVjdGVkIHByZXZpZXdNb2RhbD86IE1vZGFsQ29tcG9uZW50O1xuICBAVmlld0NoaWxkKCd1cGxvYWRJbnB1dCcsIHtzdGF0aWM6IHRydWV9KSB1cGxvYWRJbnB1dCE6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ3JlcGxhY2VGaWxlTW9kYWxUZW1wbGF0ZScsIHtzdGF0aWM6IHRydWV9KSByZXBsYWNlRmlsZU1vZGFsVGVtcGxhdGUhOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBAVmlld0NoaWxkKCdwcmV2aWV3VGVtcGxhdGUnLCB7c3RhdGljOiB0cnVlfSkgcHJldmlld1RlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55PjtcbiAgQFZpZXdDaGlsZCgncHJldmlld0Zvb3RlclRlbXBsYXRlJywge3N0YXRpYzogdHJ1ZX0pIHByZXZpZXdGb290ZXJUZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OmtleWRvd24nLCBbJyRldmVudCddKVxuICBoYW5kbGVLZXlEb3duKCRldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIHN3aXRjaCAoJGV2ZW50LmNvZGUpIHtcbiAgICAgIGNhc2UgJ0Fycm93VXAnOlxuICAgICAgICBpZiAoJGV2ZW50LmFsdEtleSkge1xuICAgICAgICAgIHRoaXMuc2VydmljZS5zd2l0Y2hNYXJrKC0xKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0Fycm93RG93bic6XG4gICAgICAgIGlmICgkZXZlbnQuYWx0S2V5KSB7XG4gICAgICAgICAgdGhpcy5zZXJ2aWNlLnN3aXRjaE1hcmsoMSk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdLZXlDJzpcbiAgICAgICAgaWYgKCRldmVudC5jdHJsS2V5KSB7XG4gICAgICAgICAgY29uc3Qgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpO1xuICAgICAgICAgIGlmIChzZWxlY3Rpb24/LnRvU3RyaW5nKCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5jb3B5TWFya0NvbmZpZygpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnS2V5Vic6XG4gICAgICAgIGlmICgkZXZlbnQuY3RybEtleSkge1xuICAgICAgICAgIHRoaXMucGFzdGVNYXJrQ29uZmlnKCk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdFc2NhcGUnOlxuICAgICAgICB0aGlzLmV4aXRQYXN0ZU1vZGUoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGlmICh0aGlzLm1vdXNlSW5WaWV3ZXIgJiYgJGV2ZW50LmN0cmxLZXkgJiYgJGV2ZW50LmtleSA9PT0gJzAnKSB7XG4gICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHRoaXMuc2NhbGUoMCk7XG4gICAgfVxuICB9XG5cbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIHNlcnZpY2U6IFNlY3Rpb25TZXJ2aWNlLCBwcml2YXRlIHdvcmREZXNpZ25lclNlcnZpY2U6IFdvcmREZXNpZ25lclNlcnZpY2UsXG4gICAgICAgICAgICAgIHByb3RlY3RlZCB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLCBwcml2YXRlIG1vZGFsU2VydmljZTogTW9kYWxTZXJ2aWNlKSB7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnNlcnZpY2UudGVuYW50ID0gdGhpcy50ZW5hbnQ7XG4gICAgdGhpcy5zZXJ2aWNlLnRlbXBsYXRlQ2xhc3NOYW1lID0gdGhpcy5jbGFzc05hbWU7XG4gICAgdGhpcy5zZXJ2aWNlLnRlbXBsYXRlT2lkID0gdGhpcy5vaWQ7XG4gICAgdGhpcy5zZXJ2aWNlLmluc3RhbmNlQ2xhc3NOYW1lID0gdGhpcy5pbnN0YW5jZUNsYXNzTmFtZTtcbiAgICB0aGlzLnNlcnZpY2UucGFyYW1zID0gdGhpcy5wYXJhbXM7XG4gICAgdGhpcy5zZXJ2aWNlLnRhYlZpZXdDb250YWluZXJSZWYgPSB0aGlzLnRhYlZpZXdDb250YWluZXJSZWY7XG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICB0aGlzLndvcmREZXNpZ25lclNlcnZpY2UubG9hZFRlbXBsYXRlKHRoaXMudGVuYW50LCB0aGlzLmNsYXNzTmFtZSwgdGhpcy5vaWQpLnN1YnNjcmliZShyZXNwb25zZSA9PiB7XG4gICAgICB0aGlzLmxvYWRUZW1wbGF0ZUFuZENvbmZpZyhyZXNwb25zZSk7XG4gICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICB9KTtcbiAgfVxuXG4gIGxvYWRUZW1wbGF0ZUFuZENvbmZpZyhyZXNwb25zZTogYW55KSB7XG4gICAgdGhpcy5zZWN0aW9ucyA9IHJlc3BvbnNlLnNlY3Rpb25zIHx8IFtdO1xuICAgIGlmICh0aGlzLnNlY3Rpb25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy5uZWVkVXBsb2FkID0gdHJ1ZTtcbiAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLm5lZWRVcGxvYWQgPSBmYWxzZTtcbiAgICB0aGlzLnNlcnZpY2UubWFya3MgPSByZXNwb25zZS5tYXJrcy5tYXAoKG1hcms6IGFueSkgPT4ge1xuICAgICAgbWFyay5jb25maWcgPSBtYXJrLmNvbmZpZyB8fCB7fTtcbiAgICAgIHJldHVybiBtYXJrO1xuICAgIH0pO1xuICAgIGlmICh0aGlzLnNlcnZpY2UubWFya3MubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5zZXJ2aWNlLmFjdGl2ZU1hcmsgPSB0aGlzLnNlcnZpY2UubWFya3NbMF07XG4gICAgfVxuICB9XG5cbiAgc2NhbGVCeU1vdXNlKCRldmVudDogYW55KSB7XG4gICAgaWYgKCRldmVudC5jdHJsS2V5KSB7XG4gICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHRoaXMuc2NhbGUoJGV2ZW50LmRlbHRhWSA8IDAgPyAwLjEgOiAtMC4xKTtcbiAgICB9XG4gIH1cblxuICBzY2FsZSh0eXBlOiBudW1iZXIpIHtcbiAgICBpZiAodHlwZSA9PT0gMCkge1xuICAgICAgdGhpcy5zZXJ2aWNlLnNjYWxlID0gMTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZXJ2aWNlLnNjYWxlICs9IHR5cGU7XG4gICAgfVxuICB9XG5cbiAgdXBsb2FkKCkge1xuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgdGhpcy53b3JkRGVzaWduZXJTZXJ2aWNlLnVwbG9hZFRlbXBsYXRlRmlsZSh0aGlzLnRlbmFudCwgdGhpcy5jbGFzc05hbWUsIHRoaXMub2lkLCB0aGlzLnJldGFpbk1hcmtDb25maWcsIHRoaXMudXBsb2FkSW5wdXQubmF0aXZlRWxlbWVudC5maWxlc1swXSkuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcbiAgICAgIHRoaXMudXBsb2FkSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xuICAgICAgdGhpcy5sb2FkVGVtcGxhdGVBbmRDb25maWcocmVzcG9uc2UpO1xuICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgfSk7XG4gIH1cblxuICBvcGVuUmVwbGFjZVRlbXBsYXRlRmlsZU1vZGFsKCkge1xuICAgIHRoaXMucmVwbGFjZUZpbGVNb2RhbCA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4odGhpcy50YWJWaWV3Q29udGFpbmVyUmVmLCAn5pu/5o2i5paH5Lu2JywgJ2RlZmF1bHQnLCB0aGlzLnJlcGxhY2VGaWxlTW9kYWxUZW1wbGF0ZSwge30pO1xuICB9XG5cbiAgcmVwbGFjZVRlbXBsYXRlRmlsZShyZXRhaW5NYXJrQ29uZmlnOiBib29sZWFuKSB7XG4gICAgdGhpcy5yZXRhaW5NYXJrQ29uZmlnID0gcmV0YWluTWFya0NvbmZpZztcbiAgICB0aGlzLnVwbG9hZElucHV0Lm5hdGl2ZUVsZW1lbnQuY2xpY2soKTtcbiAgICB0aGlzLnJlcGxhY2VGaWxlTW9kYWw/LmhpZGUoKTtcbiAgfVxuXG4gIGRvd25sb2FkVGVtcGxhdGVGaWxlKCkge1xuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgdGhpcy53b3JkRGVzaWduZXJTZXJ2aWNlLmRvd25sb2FkVGVtcGxhdGVGaWxlKHRoaXMudGVuYW50LCB0aGlzLmNsYXNzTmFtZSwgdGhpcy5vaWQsICgpID0+IHtcbiAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgIH0pO1xuICB9XG5cbiAgcHJldmlldygpIHtcbiAgICBmb3IgKGxldCBtYXJrIG9mIHRoaXMuc2VydmljZS5tYXJrcykge1xuICAgICAgbWFyay52YWx1ZSA9IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgdGhpcy5wcmV2aWV3TW9kYWwgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKHRoaXMudGFiVmlld0NvbnRhaW5lclJlZiwgJ+mihOiniCcsICdmdWxsJyxcbiAgICAgIHRoaXMucHJldmlld1RlbXBsYXRlLCB7fSwgdGhpcy5wcmV2aWV3Rm9vdGVyVGVtcGxhdGUpO1xuICB9XG5cbiAgc2F2ZUNvbmZpZygpIHtcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgIHRoaXMuc2VydmljZS5tYXJrcy5tYXAobWFyayA9PiB7XG4gICAgICBkZWxldGUgbWFyay52YWx1ZTtcbiAgICB9KTtcbiAgICB0aGlzLndvcmREZXNpZ25lclNlcnZpY2Uuc2F2ZSh0aGlzLnRlbmFudCwgdGhpcy5jbGFzc05hbWUsIHRoaXMub2lkLCB7XG4gICAgICB0ZW1wbGF0ZUNvbmZpZzogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICBzZWN0aW9uczogdGhpcy5zZWN0aW9ucyxcbiAgICAgICAgbWFya3M6IHRoaXMuc2VydmljZS5tYXJrc1xuICAgICAgfSlcbiAgICB9KS5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xuICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MpIHtcbiAgICAgICAgbm90aWZ5U3VjY2Vzcygn5L+d5a2Y5oiQ5YqfJyk7XG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgY29weU1hcmtDb25maWcoKSB7XG4gICAgdGhpcy5zZXJ2aWNlLmNvcGllZE1hcmsgPSBkZWVwQ2xvbmUodGhpcy5zZXJ2aWNlLmFjdGl2ZU1hcmspO1xuICAgIHRoaXMucGFzdGVNb2RlID0gdHJ1ZTtcbiAgfVxuXG4gIGV4aXRQYXN0ZU1vZGUoKSB7XG4gICAgdGhpcy5zZXJ2aWNlLmNvcGllZE1hcmsgPSB7fTtcbiAgICB0aGlzLnNlcnZpY2UucmVhZHlQYXN0ZU1hcmtOYW1lcyA9IFtdO1xuICAgIHRoaXMuc2VydmljZS5sYXN0Q2xpY2tUb1Bhc3RlTWFya05hbWUgPSAnJztcbiAgICB0aGlzLnBhc3RlTW9kZSA9IGZhbHNlO1xuICB9XG5cbiAgcGFzdGVNYXJrQ29uZmlnKCkge1xuICAgIGxldCByZWFkeVBhc3RlTWFyaztcbiAgICBmb3IgKGxldCByZWFkeVBhc3RlTWFya05hbWUgb2YgdGhpcy5zZXJ2aWNlLnJlYWR5UGFzdGVNYXJrTmFtZXMpIHtcbiAgICAgIHJlYWR5UGFzdGVNYXJrID0gdGhpcy5zZXJ2aWNlLmdldE1hcmsocmVhZHlQYXN0ZU1hcmtOYW1lKTtcbiAgICAgIGNvbnN0IGRpc3BsYXkgPSByZWFkeVBhc3RlTWFyay5kaXNwbGF5O1xuICAgICAgT2JqZWN0LmFzc2lnbihyZWFkeVBhc3RlTWFyaywgZGVlcENsb25lKHRoaXMuc2VydmljZS5jb3BpZWRNYXJrKSk7XG4gICAgICByZWFkeVBhc3RlTWFyay5uYW1lID0gcmVhZHlQYXN0ZU1hcmtOYW1lO1xuICAgICAgcmVhZHlQYXN0ZU1hcmsuZGlzcGxheSA9IGRpc3BsYXk7XG4gICAgfVxuICAgIHRoaXMuc2VydmljZS5hY3RpdmVNYXJrID0gcmVhZHlQYXN0ZU1hcmsgfHwgdGhpcy5zZXJ2aWNlLmFjdGl2ZU1hcms7XG4gICAgdGhpcy5leGl0UGFzdGVNb2RlKCk7XG4gIH1cbn1cblxuIiwiPGR4LWxvYWQtcGFuZWwgW2NvbnRhaW5lcl09XCJ2aWV3Q29udGFpbmVyUmVmLmVsZW1lbnQubmF0aXZlRWxlbWVudFwiIFtzaG93UGFuZV09XCJmYWxzZVwiIFt2aXNpYmxlXT1cImxvYWRpbmdcIj5cbiAgPGR4by1wb3NpdGlvbiBbb2ZdPVwidmlld0NvbnRhaW5lclJlZi5lbGVtZW50Lm5hdGl2ZUVsZW1lbnRcIj48L2R4by1wb3NpdGlvbj5cbjwvZHgtbG9hZC1wYW5lbD5cbjxpbnB1dCAjdXBsb2FkSW5wdXQgdHlwZT1cImZpbGVcIiBuYW1lPVwiZmlsZVwiXG4gICAgICAgYWNjZXB0PVwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LndvcmRwcm9jZXNzaW5nbWwuZG9jdW1lbnRcIiAoY2hhbmdlKT1cInVwbG9hZCgpXCJcbiAgICAgICBzdHlsZT1cImRpc3BsYXk6IG5vbmU7XCIvPlxuPGRpdiBjbGFzcz1cImNvYXN0LWNhcmRcIj5cbiAgPGRpdiBjbGFzcz1cImNvYXN0LWNhcmQtY29udGVudFwiPlxuICAgIDxkaXYgY2xhc3M9XCJjb250ZW50LW1haW5cIiBbY2xhc3Muc2hvdy11cGxvYWQtYnRuXT1cIm5lZWRVcGxvYWRcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJuZWVkVXBsb2FkXCI+XG4gICAgICAgIDxkeC1idXR0b24gdHlwZT1cInN1Y2Nlc3NcIiB0ZXh0PVwi5LiK5Lyg5paH5Lu2XCIgKG9uQ2xpY2spPVwidXBsb2FkSW5wdXQuY2xpY2soKVwiPjwvZHgtYnV0dG9uPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8ZGl2ICpuZ0lmPVwiIW5lZWRVcGxvYWRcIiBjbGFzcz1cImxlZnQtcGFuZWxcIj5cbiAgICAgICAgPGRpdiAqbmdJZj1cInBhc3RlTW9kZVwiIGNsYXNzPVwicGFzdGUtbW9kZS1iYXJcIj5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgY2xhc3M9XCJtZXNzYWdlXCI+5bey6L+b5YWl5om56YeP57KY6LS06YWN572u5qih5byP77yM5pSv5oyBQ3RybOOAgVNoaWZ06ZSu5b+r5o236YCJ5oup77yM5oyJQ3RybCtW57uE5ZCI6ZSu57KY6LS06YWN572u77yM5oyJRXNj6ZSu5Y+W5raI5pON5L2c5bm26YCA5Ye66K+l5qih5byPPC9zcGFuPlxuICAgICAgICAgIDxkeC1idXR0b24gW3dpZHRoXT1cIjQ4XCIgdGV4dD1cIumAgOWHulwiIChvbkNsaWNrKT1cImV4aXRQYXN0ZU1vZGUoKVwiPjwvZHgtYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnRcIlxuICAgICAgICAgICAgIChtb3VzZWVudGVyKT1cIm1vdXNlSW5WaWV3ZXIgPSB0cnVlO1wiXG4gICAgICAgICAgICAgKG1vdXNlbGVhdmUpPVwibW91c2VJblZpZXdlciA9IGZhbHNlO1wiXG4gICAgICAgICAgICAgKG1vdXNld2hlZWwpPVwic2NhbGVCeU1vdXNlKCRldmVudClcIj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIW5lZWRVcGxvYWRcIiBjbGFzcz1cInZpZXdlclwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc2VjdGlvbiBvZiBzZWN0aW9uc1wiPlxuICAgICAgICAgICAgICA8cnMtc2VjdGlvbiBbc2VjdGlvbl09XCJzZWN0aW9uXCIgW2VkaXRNb2RlXT1cInRydWVcIiBbcGFzdGVNb2RlXT1cInBhc3RlTW9kZVwiPjwvcnMtc2VjdGlvbj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cIiFuZWVkVXBsb2FkXCIgY2xhc3M9XCJyaWdodC1wYW5lbFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyXCI+XG4gICAgICAgICAgPGR4LWJ1dHRvbiB0eXBlPVwiZGVmYXVsdFwiIHRleHQ9XCLmm7/mjaLmlofku7ZcIiAob25DbGljayk9XCJvcGVuUmVwbGFjZVRlbXBsYXRlRmlsZU1vZGFsKClcIlxuICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImxvYWRpbmdcIj48L2R4LWJ1dHRvbj5cbiAgICAgICAgICA8ZHgtYnV0dG9uIGljb249XCJjb2FzdC1pY29uIGNvYXN0LWljb24tZG93bmxvYWRcIiBoaW50PVwi5LiL6L295paH5Lu2XCJcbiAgICAgICAgICAgICAgICAgICAgIChvbkNsaWNrKT1cImRvd25sb2FkVGVtcGxhdGVGaWxlKClcIiBbZGlzYWJsZWRdPVwibG9hZGluZ1wiPjwvZHgtYnV0dG9uPlxuICAgICAgICAgIDxkeC1idXR0b24gaWNvbj1cImNvYXN0LWljb24gY29hc3QtaWNvbi1kaXJlY3Rpb24tdXBcIiBoaW50PVwi5LiK5LiA5LiqKEFsdCArIOKGkSlcIlxuICAgICAgICAgICAgICAgICAgICAgKG9uQ2xpY2spPVwic2VydmljZS5zd2l0Y2hNYXJrKC0xKVwiIFtkaXNhYmxlZF09XCJsb2FkaW5nXCI+PC9keC1idXR0b24+XG4gICAgICAgICAgPGR4LWJ1dHRvbiBpY29uPVwiY29hc3QtaWNvbiBjb2FzdC1pY29uLWRpcmVjdGlvbi1kb3duXCIgaGludD1cIuS4i+S4gOS4qihBbHQgKyDihpMpXCJcbiAgICAgICAgICAgICAgICAgICAgIChvbkNsaWNrKT1cInNlcnZpY2Uuc3dpdGNoTWFyaygxKVwiIFtkaXNhYmxlZF09XCJsb2FkaW5nXCI+PC9keC1idXR0b24+XG4gICAgICAgICAgPGR4LWJ1dHRvbiBbdHlwZV09XCJwYXN0ZU1vZGUgPyAnc3VjY2VzcycgOiAnZGVmYXVsdCdcIiB0ZXh0PVwi5aSN5Yi2XCIgaGludD1cIuWkjeWItihDdHJsICsgYylcIlxuICAgICAgICAgICAgICAgICAgICAgKG9uQ2xpY2spPVwiY29weU1hcmtDb25maWcoKVwiPjwvZHgtYnV0dG9uPlxuICAgICAgICAgIDxkeC1idXR0b24gdHlwZT1cImRhbmdlclwiIHRleHQ9XCLnspjotLRcIiBoaW50PVwi57KY6LS0KEN0cmwgKyB2KVwiIChvbkNsaWNrKT1cInBhc3RlTWFya0NvbmZpZygpXCJcbiAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJsb2FkaW5nIHx8ICFwYXN0ZU1vZGVcIj48L2R4LWJ1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb25maWdcIiAqbmdJZj1cInNlcnZpY2UuYWN0aXZlTWFya1wiPlxuICAgICAgICAgIDxycy1tYXJrLWNvbmZpZyBbdGVuYW50XT1cInRlbmFudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFt0ZW1wbGF0ZUNsYXNzTmFtZV09XCJjbGFzc05hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbdGVtcGxhdGVPaWRdPVwib2lkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2luc3RhbmNlQ2xhc3NOYW1lXT1cImluc3RhbmNlQ2xhc3NOYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2ZpbHRlckNhdGVnb3JpZXNdPVwiZmlsdGVyQ2F0ZWdvcmllc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFttYXJrXT1cInNlcnZpY2UuYWN0aXZlTWFya1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFttYXJrc109XCJzZXJ2aWNlLm1hcmtzXCI+PC9ycy1tYXJrLWNvbmZpZz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgKm5nSWY9XCIhbmVlZFVwbG9hZFwiIGNsYXNzPVwiZm9vdGVyXCI+XG4gICAgPGRpdiBjbGFzcz1cImxlZnRcIj5cbiAgICAgIDxkeC1idXR0b24gdGV4dD1cIuaUvuWkp1wiIChvbkNsaWNrKT1cInNjYWxlKDAuMSlcIj48L2R4LWJ1dHRvbj5cbiAgICAgIDxkeC1idXR0b24gdGV4dD1cIui/mOWOn1wiIChvbkNsaWNrKT1cInNjYWxlKDApXCI+PC9keC1idXR0b24+XG4gICAgICA8ZHgtYnV0dG9uIHRleHQ9XCLnvKnlsI9cIiAob25DbGljayk9XCJzY2FsZSgtMC4xKVwiPjwvZHgtYnV0dG9uPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxuICAgICAgPGR4LWJ1dHRvbiB0eXBlPVwiZGVmYXVsdFwiIHRleHQ9XCLpooTop4hcIiAob25DbGljayk9XCJwcmV2aWV3KClcIiBbZGlzYWJsZWRdPVwibmVlZFVwbG9hZCB8fCBsb2FkaW5nXCI+PC9keC1idXR0b24+XG4gICAgICA8ZHgtYnV0dG9uIHR5cGU9XCJzdWNjZXNzXCIgdGV4dD1cIuS/neWtmFwiIChvbkNsaWNrKT1cInNhdmVDb25maWcoKVwiIFtkaXNhYmxlZF09XCJuZWVkVXBsb2FkIHx8IGxvYWRpbmdcIj48L2R4LWJ1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbjxuZy10ZW1wbGF0ZSAjcmVwbGFjZUZpbGVNb2RhbFRlbXBsYXRlPlxuICA8ZGl2IGNsYXNzPVwiY29uZmlybS1tZXNzYWdlXCI+XG4gICAgPHNwYW4+5pu/5o2i5paH5Lu25Y+v5Lul5oyJ54Wn5Lmm562+5qCH6K+G57un5om/5bey5L+d5a2Y55qE5Lmm562+6YWN572u77yM6K+36YCJ5oup5pON5L2c77yaPC9zcGFuPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImZvcm0tYnV0dG9uc1wiPlxuICAgIDxkaXYgY2xhc3M9XCJidXR0b25zLXdyYXBwZXJcIj5cbiAgICAgIDxkeC1idXR0b24gdHlwZT1cImRlZmF1bHRcIiB0ZXh0PVwi57un5om/6YWN572uXCIgKG9uQ2xpY2spPVwicmVwbGFjZVRlbXBsYXRlRmlsZSh0cnVlKVwiPjwvZHgtYnV0dG9uPlxuICAgICAgPGR4LWJ1dHRvbiB0eXBlPVwiZGFuZ2VyXCIgdGV4dD1cIua4hemZpOmFjee9rlwiIChvbkNsaWNrKT1cInJlcGxhY2VUZW1wbGF0ZUZpbGUoZmFsc2UpXCI+PC9keC1idXR0b24+XG4gICAgICA8ZHgtYnV0dG9uIHR5cGU9XCJub3JtYWxcIiB0ZXh0PVwi5Y+W5raIXCIgKG9uQ2xpY2spPVwicmVwbGFjZUZpbGVNb2RhbD8uaGlkZSgpXCI+PC9keC1idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjcHJldmlld1RlbXBsYXRlPlxuICA8ZGl2IGNsYXNzPVwicHJldmlldy12aWV3ZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwidmlld2VyLWNvbnRhaW5lclwiPlxuICAgICAgPGRpdiBjbGFzcz1cInZpZXdlclwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBzZWN0aW9uIG9mIHNlY3Rpb25zXCI+XG4gICAgICAgICAgPHJzLXNlY3Rpb24gW3NlY3Rpb25dPVwic2VjdGlvblwiPjwvcnMtc2VjdGlvbj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNwcmV2aWV3Rm9vdGVyVGVtcGxhdGU+XG4gIDxkaXYgY2xhc3M9XCJmb3JtLWJ1dHRvbnNcIj5cbiAgICA8ZGl2IGNsYXNzPVwiYnV0dG9ucy13cmFwcGVyXCI+XG4gICAgICA8ZHgtYnV0dG9uIHR5cGU9XCJub3JtYWxcIiB0ZXh0PVwi5YWz6ZetXCIgKG9uQ2xpY2spPVwicHJldmlld01vZGFsPy5oaWRlKClcIj48L2R4LWJ1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
209
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29yZC1kZXNpZ25lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcnMtYW50L3NyYy93b3JkL3dvcmQtZGVzaWduZXIvd29yZC1kZXNpZ25lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcnMtYW50L3NyYy93b3JkL3dvcmQtZGVzaWduZXIvd29yZC1kZXNpZ25lci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQWUsU0FBUyxFQUFtQixNQUFNLGVBQWUsQ0FBQztBQUVuSCxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUc1RCxPQUFPLEVBQUMsU0FBUyxFQUFFLGFBQWEsRUFBQyxNQUFNLGtCQUFrQixDQUFDOzs7Ozs7Ozs7OztBQVExRCxNQUFNLE9BQU8scUJBQXFCO0lBNkJoQyxhQUFhLENBQUMsTUFBcUI7UUFDakMsUUFBUSxNQUFNLENBQUMsSUFBSSxFQUFFO1lBQ25CLEtBQUssU0FBUztnQkFDWixJQUFJLE1BQU0sQ0FBQyxNQUFNLEVBQUU7b0JBQ2pCLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQzdCO2dCQUNELE1BQU07WUFDUixLQUFLLFdBQVc7Z0JBQ2QsSUFBSSxNQUFNLENBQUMsTUFBTSxFQUFFO29CQUNqQixJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDNUI7Z0JBQ0QsTUFBTTtZQUNSLEtBQUssTUFBTTtnQkFDVCxJQUFJLE1BQU0sQ0FBQyxPQUFPLEVBQUU7b0JBQ2xCLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQztvQkFDeEMsSUFBSSxTQUFTLEVBQUUsUUFBUSxFQUFFLEVBQUU7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QUFlO3NCQUE1RCxTQUFTO3VCQUFDLGlCQUFpQixFQUFFLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBQztnQkFDUSxxQkFBcUI7c0JBQXhFLFNBQVM7dUJBQUMsdUJBQXVCLEVBQUUsRUFBQyxNQUFNLEVBQUUsSUFBSSxFQUFDO2dCQUdsRCxhQUFhO3NCQURaLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgRWxlbWVudFJlZiwgSG9zdExpc3RlbmVyLCBJbnB1dCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCwgVmlld0NvbnRhaW5lclJlZn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge01vZGFsQ29tcG9uZW50fSBmcm9tIFwiLi4vLi4vbW9kYWwvbW9kYWwuY29tcG9uZW50XCI7XG5pbXBvcnQge1dvcmREZXNpZ25lclNlcnZpY2V9IGZyb20gXCIuL3dvcmQtZGVzaWduZXIuc2VydmljZVwiO1xuaW1wb3J0IHtNb2RhbFNlcnZpY2V9IGZyb20gXCIuLi8uLi9tb2RhbC9tb2RhbC5zZXJ2aWNlXCI7XG5pbXBvcnQge1NlY3Rpb25TZXJ2aWNlfSBmcm9tIFwiLi4vc2VjdGlvbi9zZWN0aW9uLnNlcnZpY2VcIjtcbmltcG9ydCB7ZGVlcENsb25lLCBub3RpZnlTdWNjZXNzfSBmcm9tIFwiLi4vLi4vdXRpbC91dGlsc1wiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdycy13b3JkLWRlc2lnbmVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3dvcmQtZGVzaWduZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi93b3JkLWRlc2lnbmVyLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1dvcmREZXNpZ25lclNlcnZpY2VdXG59KVxuZXhwb3J0IGNsYXNzIFdvcmREZXNpZ25lckNvbXBvbmVudCB7XG4gIEBJbnB1dCgpXG4gIHRlbmFudDogYW55O1xuICBASW5wdXQoKVxuICBjbGFzc05hbWU6IGFueTtcbiAgQElucHV0KClcbiAgb2lkOiBhbnk7XG4gIEBJbnB1dCgpXG4gIGluc3RhbmNlQ2xhc3NOYW1lOiBhbnk7XG4gIEBJbnB1dCgpXG4gIGZpbHRlckNhdGVnb3JpZXM/OiBzdHJpbmdbXTtcbiAgQElucHV0KClcbiAgcGFyYW1zPzogYW55O1xuICBASW5wdXQoKVxuICB0YWJWaWV3Q29udGFpbmVyUmVmITogYW55O1xuICBwcm90ZWN0ZWQgc2VjdGlvbnM6IGFueTtcbiAgcHJvdGVjdGVkIG5lZWRVcGxvYWQgPSBmYWxzZTtcbiAgcHJvdGVjdGVkIHBhc3RlTW9kZSA9IGZhbHNlO1xuICBwcm90ZWN0ZWQgbW91c2VJblZpZXdlciA9IGZhbHNlO1xuICBwcm90ZWN0ZWQgbG9hZGluZyA9IGZhbHNlO1xuICBwcm90ZWN0ZWQgcmVwbGFjZUZpbGVNb2RhbD86IE1vZGFsQ29tcG9uZW50O1xuICBwcm90ZWN0ZWQgcmV0YWluTWFya0NvbmZpZyA9IGZhbHNlO1xuICBwcm90ZWN0ZWQgcHJldmlld01vZGFsPzogTW9kYWxDb21wb25lbnQ7XG4gIEBWaWV3Q2hpbGQoJ3VwbG9hZElucHV0Jywge3N0YXRpYzogdHJ1ZX0pIHVwbG9hZElucHV0ITogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgncmVwbGFjZUZpbGVNb2RhbFRlbXBsYXRlJywge3N0YXRpYzogdHJ1ZX0pIHJlcGxhY2VGaWxlTW9kYWxUZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPGFueT47XG4gIEBWaWV3Q2hpbGQoJ3ByZXZpZXdUZW1wbGF0ZScsIHtzdGF0aWM6IHRydWV9KSBwcmV2aWV3VGVtcGxhdGUhOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBAVmlld0NoaWxkKCdwcmV2aWV3Rm9vdGVyVGVtcGxhdGUnLCB7c3RhdGljOiB0cnVlfSkgcHJldmlld0Zvb3RlclRlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55PjtcblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6a2V5ZG93bicsIFsnJGV2ZW50J10pXG4gIGhhbmRsZUtleURvd24oJGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgc3dpdGNoICgkZXZlbnQuY29kZSkge1xuICAgICAgY2FzZSAnQXJyb3dVcCc6XG4gICAgICAgIGlmICgkZXZlbnQuYWx0S2V5KSB7XG4gICAgICAgICAgdGhpcy5zZXJ2aWNlLnN3aXRjaE1hcmsoLTEpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnQXJyb3dEb3duJzpcbiAgICAgICAgaWYgKCRldmVudC5hbHRLZXkpIHtcbiAgICAgICAgICB0aGlzLnNlcnZpY2Uuc3dpdGNoTWFyaygxKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0tleUMnOlxuICAgICAgICBpZiAoJGV2ZW50LmN0cmxLZXkpIHtcbiAgICAgICAgICBjb25zdCBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG4gICAgICAgICAgaWYgKHNlbGVjdGlvbj8udG9TdHJpbmcoKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmNvcHlNYXJrQ29uZmlnKCk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdLZXlWJzpcbiAgICAgICAgaWYgKCRldmVudC5jdHJsS2V5KSB7XG4gICAgICAgICAgdGhpcy5wYXN0ZU1hcmtDb25maWcoKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0VzY2FwZSc6XG4gICAgICAgIHRoaXMuZXhpdFBhc3RlTW9kZSgpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgaWYgKHRoaXMubW91c2VJblZpZXdlciAmJiAkZXZlbnQuY3RybEtleSAmJiAkZXZlbnQua2V5ID09PSAnMCcpIHtcbiAgICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgdGhpcy5zY2FsZSgwKTtcbiAgICB9XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgc2VydmljZTogU2VjdGlvblNlcnZpY2UsIHByaXZhdGUgd29yZERlc2lnbmVyU2VydmljZTogV29yZERlc2lnbmVyU2VydmljZSxcbiAgICAgICAgICAgICAgcHJvdGVjdGVkIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsIHByaXZhdGUgbW9kYWxTZXJ2aWNlOiBNb2RhbFNlcnZpY2UpIHtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuc2VydmljZS50ZW5hbnQgPSB0aGlzLnRlbmFudDtcbiAgICB0aGlzLnNlcnZpY2UudGVtcGxhdGVDbGFzc05hbWUgPSB0aGlzLmNsYXNzTmFtZTtcbiAgICB0aGlzLnNlcnZpY2UudGVtcGxhdGVPaWQgPSB0aGlzLm9pZDtcbiAgICB0aGlzLnNlcnZpY2UuaW5zdGFuY2VDbGFzc05hbWUgPSB0aGlzLmluc3RhbmNlQ2xhc3NOYW1lO1xuICAgIHRoaXMuc2VydmljZS5wYXJhbXMgPSB0aGlzLnBhcmFtcztcbiAgICB0aGlzLnNlcnZpY2UudGFiVmlld0NvbnRhaW5lclJlZiA9IHRoaXMudGFiVmlld0NvbnRhaW5lclJlZjtcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgIHRoaXMud29yZERlc2lnbmVyU2VydmljZS5sb2FkVGVtcGxhdGUodGhpcy50ZW5hbnQsIHRoaXMuY2xhc3NOYW1lLCB0aGlzLm9pZCkuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcbiAgICAgIHRoaXMubG9hZFRlbXBsYXRlQW5kQ29uZmlnKHJlc3BvbnNlKTtcbiAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgIH0pO1xuICB9XG5cbiAgbG9hZFRlbXBsYXRlQW5kQ29uZmlnKHJlc3BvbnNlOiBhbnkpIHtcbiAgICB0aGlzLnNlY3Rpb25zID0gcmVzcG9uc2Uuc2VjdGlvbnMgfHwgW107XG4gICAgaWYgKHRoaXMuc2VjdGlvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLm5lZWRVcGxvYWQgPSB0cnVlO1xuICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMubmVlZFVwbG9hZCA9IGZhbHNlO1xuICAgIHRoaXMuc2VydmljZS5tYXJrcyA9IHJlc3BvbnNlLm1hcmtzLm1hcCgobWFyazogYW55KSA9PiB7XG4gICAgICBtYXJrLmNvbmZpZyA9IG1hcmsuY29uZmlnIHx8IHt9O1xuICAgICAgcmV0dXJuIG1hcms7XG4gICAgfSk7XG4gICAgaWYgKHRoaXMuc2VydmljZS5tYXJrcy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnNlcnZpY2UuYWN0aXZlTWFyayA9IHRoaXMuc2VydmljZS5tYXJrc1swXTtcbiAgICB9XG4gIH1cblxuICBzY2FsZUJ5TW91c2UoJGV2ZW50OiBhbnkpIHtcbiAgICBpZiAoJGV2ZW50LmN0cmxLZXkpIHtcbiAgICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgdGhpcy5zY2FsZSgkZXZlbnQuZGVsdGFZIDwgMCA/IDAuMSA6IC0wLjEpO1xuICAgIH1cbiAgfVxuXG4gIHNjYWxlKHR5cGU6IG51bWJlcikge1xuICAgIGlmICh0eXBlID09PSAwKSB7XG4gICAgICB0aGlzLnNlcnZpY2Uuc2NhbGUgPSAxO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlcnZpY2Uuc2NhbGUgKz0gdHlwZTtcbiAgICB9XG4gIH1cblxuICB1cGxvYWQoKSB7XG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICB0aGlzLndvcmREZXNpZ25lclNlcnZpY2UudXBsb2FkVGVtcGxhdGVGaWxlKHRoaXMudGVuYW50LCB0aGlzLmNsYXNzTmFtZSwgdGhpcy5vaWQsIHRoaXMucmV0YWluTWFya0NvbmZpZywgdGhpcy51cGxvYWRJbnB1dC5uYXRpdmVFbGVtZW50LmZpbGVzWzBdKS5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xuICAgICAgdGhpcy51cGxvYWRJbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG4gICAgICB0aGlzLmxvYWRUZW1wbGF0ZUFuZENvbmZpZyhyZXNwb25zZSk7XG4gICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICB9KTtcbiAgfVxuXG4gIG9wZW5SZXBsYWNlVGVtcGxhdGVGaWxlTW9kYWwoKSB7XG4gICAgdGhpcy5yZXBsYWNlRmlsZU1vZGFsID0gdGhpcy5tb2RhbFNlcnZpY2Uub3Blbih0aGlzLnRhYlZpZXdDb250YWluZXJSZWYsICfmm7/mjaLmlofku7YnLCAnZGVmYXVsdCcsIHRoaXMucmVwbGFjZUZpbGVNb2RhbFRlbXBsYXRlLCB7fSk7XG4gIH1cblxuICByZXBsYWNlVGVtcGxhdGVGaWxlKHJldGFpbk1hcmtDb25maWc6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnJldGFpbk1hcmtDb25maWcgPSByZXRhaW5NYXJrQ29uZmlnO1xuICAgIHRoaXMudXBsb2FkSW5wdXQubmF0aXZlRWxlbWVudC5jbGljaygpO1xuICAgIHRoaXMucmVwbGFjZUZpbGVNb2RhbD8uaGlkZSgpO1xuICB9XG5cbiAgZG93bmxvYWRUZW1wbGF0ZUZpbGUoKSB7XG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICB0aGlzLndvcmREZXNpZ25lclNlcnZpY2UuZG93bmxvYWRUZW1wbGF0ZUZpbGUodGhpcy50ZW5hbnQsIHRoaXMuY2xhc3NOYW1lLCB0aGlzLm9pZCwgKCkgPT4ge1xuICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgfSk7XG4gIH1cblxuICBwcmV2aWV3KCkge1xuICAgIGZvciAobGV0IG1hcmsgb2YgdGhpcy5zZXJ2aWNlLm1hcmtzKSB7XG4gICAgICBtYXJrLnZhbHVlID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgICB0aGlzLnByZXZpZXdNb2RhbCA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4odGhpcy50YWJWaWV3Q29udGFpbmVyUmVmLCAn6aKE6KeIJywgJ2Z1bGwnLFxuICAgICAgdGhpcy5wcmV2aWV3VGVtcGxhdGUsIHt9LCB0aGlzLnByZXZpZXdGb290ZXJUZW1wbGF0ZSk7XG4gIH1cblxuICBzYXZlQ29uZmlnKCkge1xuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgdGhpcy5zZXJ2aWNlLm1hcmtzLm1hcChtYXJrID0+IHtcbiAgICAgIGRlbGV0ZSBtYXJrLnZhbHVlO1xuICAgIH0pO1xuICAgIHRoaXMud29yZERlc2lnbmVyU2VydmljZS5zYXZlKHRoaXMudGVuYW50LCB0aGlzLmNsYXNzTmFtZSwgdGhpcy5vaWQsIHtcbiAgICAgIHRlbXBsYXRlQ29uZmlnOiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgIHNlY3Rpb25zOiB0aGlzLnNlY3Rpb25zLFxuICAgICAgICBtYXJrczogdGhpcy5zZXJ2aWNlLm1hcmtzXG4gICAgICB9KVxuICAgIH0pLnN1YnNjcmliZShyZXNwb25zZSA9PiB7XG4gICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xuICAgICAgICBub3RpZnlTdWNjZXNzKCfkv53lrZjmiJDlip8nKTtcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBjb3B5TWFya0NvbmZpZygpIHtcbiAgICBpZiAodGhpcy5zZXJ2aWNlLmFjdGl2ZU1hcmsudHlwZSkge1xuICAgICAgdGhpcy5zZXJ2aWNlLmNvcGllZE1hcmsgPSBkZWVwQ2xvbmUodGhpcy5zZXJ2aWNlLmFjdGl2ZU1hcmspO1xuICAgICAgdGhpcy5wYXN0ZU1vZGUgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIGV4aXRQYXN0ZU1vZGUoKSB7XG4gICAgdGhpcy5zZXJ2aWNlLmNvcGllZE1hcmsgPSB7fTtcbiAgICB0aGlzLnNlcnZpY2UucmVhZHlQYXN0ZU1hcmtOYW1lcyA9IFtdO1xuICAgIHRoaXMuc2VydmljZS5sYXN0Q2xpY2tUb1Bhc3RlTWFya05hbWUgPSAnJztcbiAgICB0aGlzLnBhc3RlTW9kZSA9IGZhbHNlO1xuICB9XG5cbiAgcGFzdGVNYXJrQ29uZmlnKCkge1xuICAgIGxldCByZWFkeVBhc3RlTWFyaztcbiAgICBmb3IgKGxldCByZWFkeVBhc3RlTWFya05hbWUgb2YgdGhpcy5zZXJ2aWNlLnJlYWR5UGFzdGVNYXJrTmFtZXMpIHtcbiAgICAgIHJlYWR5UGFzdGVNYXJrID0gdGhpcy5zZXJ2aWNlLmdldE1hcmsocmVhZHlQYXN0ZU1hcmtOYW1lKTtcbiAgICAgIGNvbnN0IGRpc3BsYXkgPSByZWFkeVBhc3RlTWFyay5kaXNwbGF5O1xuICAgICAgT2JqZWN0LmFzc2lnbihyZWFkeVBhc3RlTWFyaywgZGVlcENsb25lKHRoaXMuc2VydmljZS5jb3BpZWRNYXJrKSk7XG4gICAgICByZWFkeVBhc3RlTWFyay5uYW1lID0gcmVhZHlQYXN0ZU1hcmtOYW1lO1xuICAgICAgcmVhZHlQYXN0ZU1hcmsuZGlzcGxheSA9IGRpc3BsYXk7XG4gICAgfVxuICAgIHRoaXMuc2VydmljZS5hY3RpdmVNYXJrID0gcmVhZHlQYXN0ZU1hcmsgfHwgdGhpcy5zZXJ2aWNlLmFjdGl2ZU1hcms7XG4gICAgdGhpcy5leGl0UGFzdGVNb2RlKCk7XG4gIH1cbn1cbiIsIjxkeC1sb2FkLXBhbmVsIFtjb250YWluZXJdPVwidmlld0NvbnRhaW5lclJlZi5lbGVtZW50Lm5hdGl2ZUVsZW1lbnRcIiBbc2hvd1BhbmVdPVwiZmFsc2VcIiBbdmlzaWJsZV09XCJsb2FkaW5nXCI+XG4gIDxkeG8tcG9zaXRpb24gW29mXT1cInZpZXdDb250YWluZXJSZWYuZWxlbWVudC5uYXRpdmVFbGVtZW50XCI+PC9keG8tcG9zaXRpb24+XG48L2R4LWxvYWQtcGFuZWw+XG48aW5wdXQgI3VwbG9hZElucHV0IHR5cGU9XCJmaWxlXCIgbmFtZT1cImZpbGVcIlxuICAgICAgIGFjY2VwdD1cImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC53b3JkcHJvY2Vzc2luZ21sLmRvY3VtZW50XCIgKGNoYW5nZSk9XCJ1cGxvYWQoKVwiXG4gICAgICAgc3R5bGU9XCJkaXNwbGF5OiBub25lO1wiLz5cbjxkaXYgY2xhc3M9XCJjb2FzdC1jYXJkXCI+XG4gIDxkaXYgY2xhc3M9XCJjb2FzdC1jYXJkLWNvbnRlbnRcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29udGVudC1tYWluXCIgW2NsYXNzLnNob3ctdXBsb2FkLWJ0bl09XCJuZWVkVXBsb2FkXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibmVlZFVwbG9hZFwiPlxuICAgICAgICA8ZHgtYnV0dG9uIHR5cGU9XCJzdWNjZXNzXCIgdGV4dD1cIuS4iuS8oOaWh+S7tlwiIChvbkNsaWNrKT1cInVwbG9hZElucHV0LmNsaWNrKClcIj48L2R4LWJ1dHRvbj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPGRpdiAqbmdJZj1cIiFuZWVkVXBsb2FkXCIgY2xhc3M9XCJsZWZ0LXBhbmVsXCI+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJwYXN0ZU1vZGVcIiBjbGFzcz1cInBhc3RlLW1vZGUtYmFyXCI+XG4gICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIGNsYXNzPVwibWVzc2FnZVwiPuW3sui/m+WFpeaJuemHj+eymOi0tOmFjee9ruaooeW8j++8jOaUr+aMgUN0cmzjgIFTaGlmdOmUruW/q+aNt+mAieaLqe+8jOaMiUN0cmwrVue7hOWQiOmUrueymOi0tOmFjee9ru+8jOaMiUVzY+mUruWPlua2iOaTjeS9nOW5tumAgOWHuuivpeaooeW8jzwvc3Bhbj5cbiAgICAgICAgICA8ZHgtYnV0dG9uIFt3aWR0aF09XCI0OFwiIHRleHQ9XCLpgIDlh7pcIiAob25DbGljayk9XCJleGl0UGFzdGVNb2RlKClcIj48L2R4LWJ1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50XCJcbiAgICAgICAgICAgICAobW91c2VlbnRlcik9XCJtb3VzZUluVmlld2VyID0gdHJ1ZTtcIlxuICAgICAgICAgICAgIChtb3VzZWxlYXZlKT1cIm1vdXNlSW5WaWV3ZXIgPSBmYWxzZTtcIlxuICAgICAgICAgICAgIChtb3VzZXdoZWVsKT1cInNjYWxlQnlNb3VzZSgkZXZlbnQpXCI+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cIiFuZWVkVXBsb2FkXCIgY2xhc3M9XCJ2aWV3ZXJcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHNlY3Rpb24gb2Ygc2VjdGlvbnNcIj5cbiAgICAgICAgICAgICAgPHJzLXNlY3Rpb24gW3NlY3Rpb25dPVwic2VjdGlvblwiIFtlZGl0TW9kZV09XCJ0cnVlXCIgW3Bhc3RlTW9kZV09XCJwYXN0ZU1vZGVcIj48L3JzLXNlY3Rpb24+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgKm5nSWY9XCIhbmVlZFVwbG9hZFwiIGNsYXNzPVwicmlnaHQtcGFuZWxcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRlclwiPlxuICAgICAgICAgIDxkeC1idXR0b24gdHlwZT1cImRlZmF1bHRcIiB0ZXh0PVwi5pu/5o2i5paH5Lu2XCIgKG9uQ2xpY2spPVwib3BlblJlcGxhY2VUZW1wbGF0ZUZpbGVNb2RhbCgpXCJcbiAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJsb2FkaW5nXCI+PC9keC1idXR0b24+XG4gICAgICAgICAgPGR4LWJ1dHRvbiBpY29uPVwiY29hc3QtaWNvbiBjb2FzdC1pY29uLWRvd25sb2FkXCIgaGludD1cIuS4i+i9veaWh+S7tlwiXG4gICAgICAgICAgICAgICAgICAgICAob25DbGljayk9XCJkb3dubG9hZFRlbXBsYXRlRmlsZSgpXCIgW2Rpc2FibGVkXT1cImxvYWRpbmdcIj48L2R4LWJ1dHRvbj5cbiAgICAgICAgICA8ZHgtYnV0dG9uIGljb249XCJjb2FzdC1pY29uIGNvYXN0LWljb24tZGlyZWN0aW9uLXVwXCIgaGludD1cIuS4iuS4gOS4qihBbHQgKyDihpEpXCJcbiAgICAgICAgICAgICAgICAgICAgIChvbkNsaWNrKT1cInNlcnZpY2Uuc3dpdGNoTWFyaygtMSlcIiBbZGlzYWJsZWRdPVwibG9hZGluZ1wiPjwvZHgtYnV0dG9uPlxuICAgICAgICAgIDxkeC1idXR0b24gaWNvbj1cImNvYXN0LWljb24gY29hc3QtaWNvbi1kaXJlY3Rpb24tZG93blwiIGhpbnQ9XCLkuIvkuIDkuKooQWx0ICsg4oaTKVwiXG4gICAgICAgICAgICAgICAgICAgICAob25DbGljayk9XCJzZXJ2aWNlLnN3aXRjaE1hcmsoMSlcIiBbZGlzYWJsZWRdPVwibG9hZGluZ1wiPjwvZHgtYnV0dG9uPlxuICAgICAgICAgIDxkeC1idXR0b24gW3R5cGVdPVwicGFzdGVNb2RlID8gJ3N1Y2Nlc3MnIDogJ2RlZmF1bHQnXCIgdGV4dD1cIuWkjeWItlwiIGhpbnQ9XCLlpI3liLYoQ3RybCArIGMpXCJcbiAgICAgICAgICAgICAgICAgICAgIChvbkNsaWNrKT1cImNvcHlNYXJrQ29uZmlnKClcIj48L2R4LWJ1dHRvbj5cbiAgICAgICAgICA8ZHgtYnV0dG9uIHR5cGU9XCJkYW5nZXJcIiB0ZXh0PVwi57KY6LS0XCIgaGludD1cIueymOi0tChDdHJsICsgdilcIiAob25DbGljayk9XCJwYXN0ZU1hcmtDb25maWcoKVwiXG4gICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwibG9hZGluZyB8fCAhcGFzdGVNb2RlXCI+PC9keC1idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29uZmlnXCIgKm5nSWY9XCJzZXJ2aWNlLmFjdGl2ZU1hcmtcIj5cbiAgICAgICAgICA8cnMtbWFyay1jb25maWcgW3RlbmFudF09XCJ0ZW5hbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbdGVtcGxhdGVDbGFzc05hbWVdPVwiY2xhc3NOYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3RlbXBsYXRlT2lkXT1cIm9pZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtpbnN0YW5jZUNsYXNzTmFtZV09XCJpbnN0YW5jZUNsYXNzTmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtmaWx0ZXJDYXRlZ29yaWVzXT1cImZpbHRlckNhdGVnb3JpZXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbbWFya109XCJzZXJ2aWNlLmFjdGl2ZU1hcmtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbbWFya3NdPVwic2VydmljZS5tYXJrc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFt0YWJWaWV3Q29udGFpbmVyUmVmXT1cInRhYlZpZXdDb250YWluZXJSZWZcIj48L3JzLW1hcmstY29uZmlnPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiAqbmdJZj1cIiFuZWVkVXBsb2FkXCIgY2xhc3M9XCJmb290ZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwibGVmdFwiPlxuICAgICAgPGR4LWJ1dHRvbiB0ZXh0PVwi5pS+5aSnXCIgKG9uQ2xpY2spPVwic2NhbGUoMC4xKVwiPjwvZHgtYnV0dG9uPlxuICAgICAgPGR4LWJ1dHRvbiB0ZXh0PVwi6L+Y5Y6fXCIgKG9uQ2xpY2spPVwic2NhbGUoMClcIj48L2R4LWJ1dHRvbj5cbiAgICAgIDxkeC1idXR0b24gdGV4dD1cIue8qeWwj1wiIChvbkNsaWNrKT1cInNjYWxlKC0wLjEpXCI+PC9keC1idXR0b24+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XG4gICAgICA8ZHgtYnV0dG9uIHR5cGU9XCJkZWZhdWx0XCIgdGV4dD1cIumihOiniFwiIChvbkNsaWNrKT1cInByZXZpZXcoKVwiIFtkaXNhYmxlZF09XCJuZWVkVXBsb2FkIHx8IGxvYWRpbmdcIj48L2R4LWJ1dHRvbj5cbiAgICAgIDxkeC1idXR0b24gdHlwZT1cInN1Y2Nlc3NcIiB0ZXh0PVwi5L+d5a2YXCIgKG9uQ2xpY2spPVwic2F2ZUNvbmZpZygpXCIgW2Rpc2FibGVkXT1cIm5lZWRVcGxvYWQgfHwgbG9hZGluZ1wiPjwvZHgtYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuPG5nLXRlbXBsYXRlICNyZXBsYWNlRmlsZU1vZGFsVGVtcGxhdGU+XG4gIDxkaXYgY2xhc3M9XCJjb25maXJtLW1lc3NhZ2VcIj5cbiAgICA8c3Bhbj7mm7/mjaLmlofku7blj6/ku6XmjInnhafkuabnrb7moIfor4bnu6fmib/lt7Lkv53lrZjnmoTkuabnrb7phY3nva7vvIzor7fpgInmi6nmk43kvZzvvJo8L3NwYW4+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiZm9ybS1idXR0b25zXCI+XG4gICAgPGRpdiBjbGFzcz1cImJ1dHRvbnMtd3JhcHBlclwiPlxuICAgICAgPGR4LWJ1dHRvbiB0eXBlPVwiZGVmYXVsdFwiIHRleHQ9XCLnu6fmib/phY3nva5cIiAob25DbGljayk9XCJyZXBsYWNlVGVtcGxhdGVGaWxlKHRydWUpXCI+PC9keC1idXR0b24+XG4gICAgICA8ZHgtYnV0dG9uIHR5cGU9XCJkYW5nZXJcIiB0ZXh0PVwi5riF6Zmk6YWN572uXCIgKG9uQ2xpY2spPVwicmVwbGFjZVRlbXBsYXRlRmlsZShmYWxzZSlcIj48L2R4LWJ1dHRvbj5cbiAgICAgIDxkeC1idXR0b24gdHlwZT1cIm5vcm1hbFwiIHRleHQ9XCLlj5bmtohcIiAob25DbGljayk9XCJyZXBsYWNlRmlsZU1vZGFsPy5oaWRlKClcIj48L2R4LWJ1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNwcmV2aWV3VGVtcGxhdGU+XG4gIDxkaXYgY2xhc3M9XCJwcmV2aWV3LXZpZXdlclwiPlxuICAgIDxkaXYgY2xhc3M9XCJ2aWV3ZXItY29udGFpbmVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwidmlld2VyXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHNlY3Rpb24gb2Ygc2VjdGlvbnNcIj5cbiAgICAgICAgICA8cnMtc2VjdGlvbiBbc2VjdGlvbl09XCJzZWN0aW9uXCI+PC9ycy1zZWN0aW9uPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI3ByZXZpZXdGb290ZXJUZW1wbGF0ZT5cbiAgPGRpdiBjbGFzcz1cImZvcm0tYnV0dG9uc1wiPlxuICAgIDxkaXYgY2xhc3M9XCJidXR0b25zLXdyYXBwZXJcIj5cbiAgICAgIDxkeC1idXR0b24gdHlwZT1cIm5vcm1hbFwiIHRleHQ9XCLlhbPpl61cIiAob25DbGljayk9XCJwcmV2aWV3TW9kYWw/LmhpZGUoKVwiPjwvZHgtYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|