@talrace/ngx-noder 0.0.4 → 0.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +72 -64
- package/esm2022/lib/+shared/add-link-dialog/add-link-dialog.component.mjs +9 -5
- package/esm2022/lib/+shared/confirm-dialog/confirm-dialog.component.mjs +10 -6
- package/esm2022/lib/+shared/editor/core/editor.mjs +7 -14
- package/esm2022/lib/+shared/editor/core/helpers/rendering.helper.mjs +9 -8
- package/esm2022/lib/+shared/editor/core/layers/text.layer.mjs +4 -4
- package/esm2022/lib/+shared/editor/custom-components/image/components/image.component.mjs +4 -3
- package/esm2022/lib/+shared/editor/custom-components/shared/abstract/base.component.mjs +4 -2
- package/esm2022/lib/+shared/editor/custom-components/shared/services/custom-content/custom-content.service.mjs +6 -12
- package/esm2022/lib/+shared/editor/custom-components/tab/tab.component.mjs +3 -2
- package/esm2022/lib/+shared/editor/custom-components/table/components/table-cell.component.mjs +6 -4
- package/esm2022/lib/+shared/editor/custom-components/table/components/table.component.mjs +7 -5
- package/esm2022/lib/+shared/editor/editor.component.mjs +5 -12
- package/esm2022/lib/+shared/editor/editor.module.mjs +1 -4
- package/esm2022/lib/+shared/editor/execution/models/general-properties.model.mjs +1 -1
- package/esm2022/lib/+shared/editor/execution/regulator.service.mjs +15 -5
- package/esm2022/lib/+shared/editor-title/editor-title.component.mjs +83 -0
- package/esm2022/lib/+shared/editor-toolbar/color-picker/color-picker.component.mjs +2 -2
- package/esm2022/lib/+shared/editor-toolbar/editor-toolbar.component.mjs +77 -91
- package/esm2022/lib/+shared/editor-toolbar/editor-toolbar.module.mjs +11 -1
- package/esm2022/lib/+shared/editor-toolbar/font/font.component.mjs +3 -3
- package/esm2022/lib/+shared/editor-toolbar/font-size/font-size.component.mjs +2 -2
- package/esm2022/lib/+shared/editor-toolbar/font-style/font-style.component.mjs +2 -2
- package/esm2022/lib/+shared/editor-toolbar/menu-dropdowns/menu-dropdowns.component.mjs +194 -0
- package/esm2022/lib/+shared/editor-toolbar/numbering/numbering.component.mjs +3 -3
- package/esm2022/lib/+shared/editor-toolbar/print/print.component.mjs +2 -2
- package/esm2022/lib/+shared/editor-toolbar/toolbar-actions/toolbar-actions.component.mjs +126 -0
- package/esm2022/lib/+shared/editor-toolbar/undo-redo/undo-redo.component.mjs +2 -2
- package/esm2022/lib/+shared/helpers/scaling.helper.mjs +9 -0
- package/esm2022/public-api.mjs +2 -2
- package/fesm2022/talrace-ngx-noder.mjs +455 -398
- package/fesm2022/talrace-ngx-noder.mjs.map +1 -1
- package/lib/+shared/add-link-dialog/add-link-dialog.component.d.ts +1 -0
- package/lib/+shared/confirm-dialog/confirm-dialog.component.d.ts +1 -0
- package/lib/+shared/editor/core/editor.d.ts +3 -3
- package/lib/+shared/editor/core/helpers/rendering.helper.d.ts +3 -3
- package/lib/+shared/editor/custom-components/shared/abstract/base.component.d.ts +3 -1
- package/lib/+shared/editor/custom-components/shared/services/custom-content/custom-content.service.d.ts +1 -1
- package/lib/+shared/editor/custom-components/table/components/table-cell.component.d.ts +2 -2
- package/lib/+shared/editor/custom-components/table/components/table.component.d.ts +0 -2
- package/lib/+shared/editor/editor.component.d.ts +1 -5
- package/lib/+shared/editor/editor.module.d.ts +15 -16
- package/lib/+shared/editor/execution/models/general-properties.model.d.ts +1 -0
- package/lib/+shared/editor/execution/regulator.service.d.ts +2 -2
- package/lib/+shared/editor-title/editor-title.component.d.ts +24 -0
- package/lib/+shared/editor-toolbar/editor-toolbar.component.d.ts +31 -30
- package/lib/+shared/editor-toolbar/editor-toolbar.module.d.ts +19 -16
- package/lib/+shared/editor-toolbar/menu-dropdowns/menu-dropdowns.component.d.ts +73 -0
- package/lib/+shared/editor-toolbar/toolbar-actions/toolbar-actions.component.d.ts +49 -0
- package/lib/+shared/helpers/scaling.helper.d.ts +4 -0
- package/package.json +1 -1
- package/public-api.d.ts +1 -1
- package/src/_ngx-noder.theme.scss +10 -8
- package/src/lib/+shared/add-link-dialog/_add-link-dialog.theme.scss +3 -3
- package/src/lib/+shared/confirm-dialog/_theme.scss +6 -6
- package/src/lib/+shared/editor/_editor.theme.scss +84 -15
- package/src/lib/+shared/editor/_theme.scss +0 -2
- package/src/lib/+shared/editor-title/_editor-title.theme.scss +28 -0
- package/src/lib/+shared/editor-toolbar/_editor-toolbar.theme.scss +1 -24
- package/src/lib/+shared/editor-toolbar/_theme.scss +14 -2
- package/src/lib/+shared/editor-toolbar/font-size/_font-size.theme.scss +14 -0
- package/src/lib/+shared/editor-toolbar/font-style/_font-style.theme.scss +21 -0
- package/src/lib/+shared/editor-toolbar/format/_format.theme.scss +21 -0
- package/src/lib/+shared/editor-toolbar/menu-dropdowns/_menu-dropdowns.theme.scss +22 -0
- package/src/lib/+shared/editor-toolbar/numbering/_numbering.theme.scss +52 -11
- package/src/lib/+shared/editor-toolbar/toolbar-actions/_toolbar-actions.theme.scss +21 -0
- package/src/lib/+shared/editor-toolbar/undo-redo/_undo-redo.theme.scss +16 -0
- package/src/lib/+shared/insert-table/_insert-table.theme.scss +9 -6
- package/src/scss/_mixins.scss +2 -37
- package/esm2022/lib/+shared/editor/custom-components/external-element/element-toolbar/element-toolbar.component.mjs +0 -35
- package/esm2022/lib/+shared/editor-header/editor-header.component.mjs +0 -314
- package/lib/+shared/editor/custom-components/external-element/element-toolbar/element-toolbar.component.d.ts +0 -14
- package/lib/+shared/editor-header/editor-header.component.d.ts +0 -101
- package/src/lib/+shared/editor/custom-components/external-element/element-toolbar/_element-toolbar.theme.scss +0 -10
- package/src/lib/+shared/editor-header/_editor-header.theme.scss +0 -106
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import { DEFAULT_FONT_SIZE } from '../../editor/core/constants/editor.const';
|
|
3
|
+
import { ElementDataModel } from '../../editor/custom-components/external-element/models/element-data.model';
|
|
4
|
+
import { EXTERNAL_ELEMENT_SERVICE } from '../../editor/custom-components/external-element/external-elements.const';
|
|
5
|
+
import { NumberingTemplates } from '../constants/numbering-templates.const';
|
|
6
|
+
import { ParagraphStyleModel } from '../../../models/generated/paragraph-style.model';
|
|
7
|
+
import { TextStyleModel } from '../../../models/generated/text-style.model';
|
|
8
|
+
import { ToolbarStylesHelper } from '../helpers/toolbar-styles.helper';
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
import * as i1 from "../../services/custom-icon.service";
|
|
11
|
+
import * as i2 from "@angular/common";
|
|
12
|
+
import * as i3 from "@angular/material/button";
|
|
13
|
+
import * as i4 from "@angular/material/icon";
|
|
14
|
+
import * as i5 from "../font/font.component";
|
|
15
|
+
import * as i6 from "../font-size/font-size.component";
|
|
16
|
+
import * as i7 from "../font-style/font-style.component";
|
|
17
|
+
import * as i8 from "../format/format.component";
|
|
18
|
+
import * as i9 from "../numbering/numbering.component";
|
|
19
|
+
import * as i10 from "../print/print.component";
|
|
20
|
+
import * as i11 from "../undo-redo/undo-redo.component";
|
|
21
|
+
export class ToolbarActionsComponent {
|
|
22
|
+
set historyInfo(value) {
|
|
23
|
+
this.canUndo = value.step !== -1;
|
|
24
|
+
this.canRedo = value.step < value.lastStep;
|
|
25
|
+
}
|
|
26
|
+
set styles(value) {
|
|
27
|
+
this._styles = value;
|
|
28
|
+
this.numberingType = ToolbarStylesHelper.getNumberingType(value.isBulletMarker);
|
|
29
|
+
this.numberingTemplateType = ToolbarStylesHelper.getNumberingTemplateType(value.numberingLevelsStyles);
|
|
30
|
+
}
|
|
31
|
+
get styles() {
|
|
32
|
+
return this._styles;
|
|
33
|
+
}
|
|
34
|
+
constructor(customIconService, injector) {
|
|
35
|
+
this.customIconService = customIconService;
|
|
36
|
+
this.injector = injector;
|
|
37
|
+
this.print = new EventEmitter();
|
|
38
|
+
this.redo = new EventEmitter();
|
|
39
|
+
this.undo = new EventEmitter();
|
|
40
|
+
this.changeParagraphStyle = new EventEmitter();
|
|
41
|
+
this.changeTextStyle = new EventEmitter();
|
|
42
|
+
this.setNumberingTemplateType = new EventEmitter();
|
|
43
|
+
this.removeNumberings = new EventEmitter();
|
|
44
|
+
this.createElement = new EventEmitter();
|
|
45
|
+
this.elements = this.injector.get(EXTERNAL_ELEMENT_SERVICE).elements;
|
|
46
|
+
this.customIconService.register();
|
|
47
|
+
}
|
|
48
|
+
onApplyFontFamily(font) {
|
|
49
|
+
this.checkFontLoadedAndApplyStyle(new TextStyleModel({ fontFamily: font }));
|
|
50
|
+
}
|
|
51
|
+
onApplyFontSize(size) {
|
|
52
|
+
this.checkFontLoadedAndApplyStyle(new TextStyleModel({ fontSize: size }));
|
|
53
|
+
}
|
|
54
|
+
onApplyBold(bold) {
|
|
55
|
+
this.checkFontLoadedAndApplyStyle(new TextStyleModel({ bold }));
|
|
56
|
+
}
|
|
57
|
+
onApplyUnderline(underline) {
|
|
58
|
+
this.changeTextStyle.emit(new TextStyleModel({ underline }));
|
|
59
|
+
}
|
|
60
|
+
onApplyItalic(italic) {
|
|
61
|
+
this.checkFontLoadedAndApplyStyle(new TextStyleModel({ italic }));
|
|
62
|
+
}
|
|
63
|
+
onApplyFontColor(color) {
|
|
64
|
+
this.changeTextStyle.emit(new TextStyleModel({ fontColor: color }));
|
|
65
|
+
}
|
|
66
|
+
onApplyHighlightColor(color) {
|
|
67
|
+
this.changeTextStyle.emit(new TextStyleModel({ highlightColor: color }));
|
|
68
|
+
}
|
|
69
|
+
onApplyAlignment(alignment) {
|
|
70
|
+
this.changeParagraphStyle.emit(new ParagraphStyleModel({ alignment }));
|
|
71
|
+
}
|
|
72
|
+
onSetNumberingTemplateType(templateType) {
|
|
73
|
+
const templateLevels = NumberingTemplates.find(x => x.templateType === templateType).levels;
|
|
74
|
+
this.setNumberingTemplateType.emit(templateLevels);
|
|
75
|
+
}
|
|
76
|
+
async onCreateElement(model) {
|
|
77
|
+
const data = await model.factoryMethod();
|
|
78
|
+
const element = new ElementDataModel(model.type, data.width, data.height, data.guid);
|
|
79
|
+
this.createElement.emit(element);
|
|
80
|
+
}
|
|
81
|
+
checkFontLoadedAndApplyStyle(style) {
|
|
82
|
+
const newStyles = { ...this.styles, ...style };
|
|
83
|
+
const italic = newStyles.italic ? 'italic ' : '';
|
|
84
|
+
const bold = newStyles.bold ? 'bold ' : '';
|
|
85
|
+
const fontStyles = `${italic}${bold}${newStyles.fontSize ?? DEFAULT_FONT_SIZE}pt ${newStyles.fontFamily}`;
|
|
86
|
+
if (document.fonts.check(fontStyles)) {
|
|
87
|
+
this.changeTextStyle.emit(style);
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
document.fonts
|
|
91
|
+
.load(fontStyles)
|
|
92
|
+
.then(() => this.changeTextStyle.emit(style))
|
|
93
|
+
.catch(() => {
|
|
94
|
+
// continue regardless of error
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: ToolbarActionsComponent, deps: [{ token: i1.CustomIconService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
98
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: ToolbarActionsComponent, selector: "app-toolbar-actions", inputs: { isViewOnly: "isViewOnly", historyInfo: "historyInfo", styles: "styles" }, outputs: { print: "print", redo: "redo", undo: "undo", changeParagraphStyle: "changeParagraphStyle", changeTextStyle: "changeTextStyle", setNumberingTemplateType: "setNumberingTemplateType", removeNumberings: "removeNumberings", createElement: "createElement" }, ngImport: i0, template: "<app-undo-redo\n [canUndo]=\"canUndo\"\n [canRedo]=\"canRedo\"\n (undo)=\"undo.emit()\"\n (redo)=\"redo.emit()\" />\n<app-print (print)=\"print.emit()\" />\n<div class=\"separator\"></div>\n<app-font\n [isDisabled]=\"isViewOnly\"\n [styles]=\"styles\"\n (selectFont)=\"onApplyFontFamily($event)\" />\n<div class=\"separator\"></div>\n<app-font-size\n [isDisabled]=\"isViewOnly\"\n [fontSize]=\"styles.fontSize\"\n (selectFontSize)=\"onApplyFontSize($event)\" />\n<div class=\"separator\"></div>\n<app-font-style\n [isDisabled]=\"isViewOnly\"\n [bold]=\"styles.bold\"\n [italic]=\"styles.italic\"\n [underline]=\"styles.underline\"\n [fontColor]=\"styles.fontColor\"\n [highlightColor]=\"styles.highlightColor\"\n (selectFontColor)=\"onApplyFontColor($event)\"\n (toggleBold)=\"onApplyBold($event)\"\n (toggleItalic)=\"onApplyItalic($event)\"\n (toggleUnderline)=\"onApplyUnderline($event)\"\n (selectHighlightColor)=\"onApplyHighlightColor($event)\" />\n<div class=\"separator\"></div>\n<div\n *ngIf=\"elements.length\"\n class=\"custom-elements\">\n <button\n *ngFor=\"let element of elements\"\n mat-button\n [disabled]=\"isViewOnly\"\n (click)=\"onCreateElement(element)\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"{{ element.icon }}\"></mat-icon>\n </button>\n <div class=\"separator\"></div>\n</div>\n<app-format\n [isDisabled]=\"isViewOnly\"\n [alignment]=\"styles.alignment\"\n (selectAlignment)=\"onApplyAlignment($event)\" />\n<div class=\"separator\"></div>\n<app-numbering\n [isDisabled]=\"isViewOnly\"\n [selectedNumberingType]=\"numberingType\"\n [selectedNumberingTemplate]=\"numberingTemplateType\"\n (selectNumberingTemplate)=\"onSetNumberingTemplateType($event)\"\n (removeNumberings)=\"removeNumberings.emit()\" />\n", styles: [":host::ng-deep mat-button-toggle,:host::ng-deep .mat-button-toggle-button{height:32px;width:32px;border-radius:4px}:host::ng-deep mat-button-toggle mat-icon,:host::ng-deep .mat-button-toggle-button mat-icon{font-size:24px;height:24px;width:24px;border-radius:4px}:host::ng-deep mat-button-toggle .mat-button-toggle-label-content,:host::ng-deep .mat-button-toggle-button .mat-button-toggle-label-content{padding:0 2px}.separator{border-left:1px solid;opacity:.1;height:100%;margin:0 8px}.mdc-button{width:28px;height:28px;padding:0}.mat-mdc-button>.mat-icon{margin-right:0}.do-action{padding-right:1px;justify-content:center;display:flex}.custom-elements{display:flex;align-items:center;height:100%}.custom-elements .mdc-button{min-width:32px;min-height:32px;width:32px;height:32px;padding:0}.custom-elements .mdc-button>.mat-icon{margin-right:0;font-size:24px;height:24px;width:24px}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5.FontComponent, selector: "app-font", inputs: ["isDisabled", "styles"], outputs: ["selectFont"] }, { kind: "component", type: i6.FontSizeComponent, selector: "app-font-size", inputs: ["isDisabled", "fontSize"], outputs: ["selectFontSize"] }, { kind: "component", type: i7.FontStyleComponent, selector: "app-font-style", inputs: ["isDisabled", "bold", "italic", "underline", "fontColor", "highlightColor"], outputs: ["toggleBold", "toggleItalic", "toggleUnderline", "selectFontColor", "selectHighlightColor"] }, { kind: "component", type: i8.FormatComponent, selector: "app-format", inputs: ["isDisabled", "alignment"], outputs: ["selectAlignment"] }, { kind: "component", type: i9.NumberingComponent, selector: "app-numbering", inputs: ["isDisabled", "selectedNumberingType", "selectedNumberingTemplate"], outputs: ["selectNumberingTemplate", "removeNumberings"] }, { kind: "component", type: i10.PrintComponent, selector: "app-print", outputs: ["print"] }, { kind: "component", type: i11.UndoRedoComponent, selector: "app-undo-redo", inputs: ["canUndo", "canRedo"], outputs: ["undo", "redo"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
99
|
+
}
|
|
100
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: ToolbarActionsComponent, decorators: [{
|
|
101
|
+
type: Component,
|
|
102
|
+
args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'app-toolbar-actions', template: "<app-undo-redo\n [canUndo]=\"canUndo\"\n [canRedo]=\"canRedo\"\n (undo)=\"undo.emit()\"\n (redo)=\"redo.emit()\" />\n<app-print (print)=\"print.emit()\" />\n<div class=\"separator\"></div>\n<app-font\n [isDisabled]=\"isViewOnly\"\n [styles]=\"styles\"\n (selectFont)=\"onApplyFontFamily($event)\" />\n<div class=\"separator\"></div>\n<app-font-size\n [isDisabled]=\"isViewOnly\"\n [fontSize]=\"styles.fontSize\"\n (selectFontSize)=\"onApplyFontSize($event)\" />\n<div class=\"separator\"></div>\n<app-font-style\n [isDisabled]=\"isViewOnly\"\n [bold]=\"styles.bold\"\n [italic]=\"styles.italic\"\n [underline]=\"styles.underline\"\n [fontColor]=\"styles.fontColor\"\n [highlightColor]=\"styles.highlightColor\"\n (selectFontColor)=\"onApplyFontColor($event)\"\n (toggleBold)=\"onApplyBold($event)\"\n (toggleItalic)=\"onApplyItalic($event)\"\n (toggleUnderline)=\"onApplyUnderline($event)\"\n (selectHighlightColor)=\"onApplyHighlightColor($event)\" />\n<div class=\"separator\"></div>\n<div\n *ngIf=\"elements.length\"\n class=\"custom-elements\">\n <button\n *ngFor=\"let element of elements\"\n mat-button\n [disabled]=\"isViewOnly\"\n (click)=\"onCreateElement(element)\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"{{ element.icon }}\"></mat-icon>\n </button>\n <div class=\"separator\"></div>\n</div>\n<app-format\n [isDisabled]=\"isViewOnly\"\n [alignment]=\"styles.alignment\"\n (selectAlignment)=\"onApplyAlignment($event)\" />\n<div class=\"separator\"></div>\n<app-numbering\n [isDisabled]=\"isViewOnly\"\n [selectedNumberingType]=\"numberingType\"\n [selectedNumberingTemplate]=\"numberingTemplateType\"\n (selectNumberingTemplate)=\"onSetNumberingTemplateType($event)\"\n (removeNumberings)=\"removeNumberings.emit()\" />\n", styles: [":host::ng-deep mat-button-toggle,:host::ng-deep .mat-button-toggle-button{height:32px;width:32px;border-radius:4px}:host::ng-deep mat-button-toggle mat-icon,:host::ng-deep .mat-button-toggle-button mat-icon{font-size:24px;height:24px;width:24px;border-radius:4px}:host::ng-deep mat-button-toggle .mat-button-toggle-label-content,:host::ng-deep .mat-button-toggle-button .mat-button-toggle-label-content{padding:0 2px}.separator{border-left:1px solid;opacity:.1;height:100%;margin:0 8px}.mdc-button{width:28px;height:28px;padding:0}.mat-mdc-button>.mat-icon{margin-right:0}.do-action{padding-right:1px;justify-content:center;display:flex}.custom-elements{display:flex;align-items:center;height:100%}.custom-elements .mdc-button{min-width:32px;min-height:32px;width:32px;height:32px;padding:0}.custom-elements .mdc-button>.mat-icon{margin-right:0;font-size:24px;height:24px;width:24px}\n"] }]
|
|
103
|
+
}], ctorParameters: () => [{ type: i1.CustomIconService }, { type: i0.Injector }], propDecorators: { isViewOnly: [{
|
|
104
|
+
type: Input
|
|
105
|
+
}], historyInfo: [{
|
|
106
|
+
type: Input
|
|
107
|
+
}], styles: [{
|
|
108
|
+
type: Input
|
|
109
|
+
}], print: [{
|
|
110
|
+
type: Output
|
|
111
|
+
}], redo: [{
|
|
112
|
+
type: Output
|
|
113
|
+
}], undo: [{
|
|
114
|
+
type: Output
|
|
115
|
+
}], changeParagraphStyle: [{
|
|
116
|
+
type: Output
|
|
117
|
+
}], changeTextStyle: [{
|
|
118
|
+
type: Output
|
|
119
|
+
}], setNumberingTemplateType: [{
|
|
120
|
+
type: Output
|
|
121
|
+
}], removeNumberings: [{
|
|
122
|
+
type: Output
|
|
123
|
+
}], createElement: [{
|
|
124
|
+
type: Output
|
|
125
|
+
}] } });
|
|
126
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbGJhci1hY3Rpb25zLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1ub2Rlci9zcmMvbGliLytzaGFyZWQvZWRpdG9yLXRvb2xiYXIvdG9vbGJhci1hY3Rpb25zL3Rvb2xiYXItYWN0aW9ucy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbm9kZXIvc3JjL2xpYi8rc2hhcmVkL2VkaXRvci10b29sYmFyL3Rvb2xiYXItYWN0aW9ucy90b29sYmFyLWFjdGlvbnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQVksS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUkxRyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyRUFBMkUsQ0FBQztBQUM3RyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx5RUFBeUUsQ0FBQztBQUluSCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUk1RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUN0RixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDNUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7Ozs7Ozs7Ozs7Ozs7QUFRdkUsTUFBTSxPQUFPLHVCQUF1QjtJQUdoQyxJQUNJLFdBQVcsQ0FBQyxLQUFpQztRQUM3QyxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDakMsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUMsSUFBSSxH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TztTQUNWO1FBRUQsUUFBUSxDQUFDLEtBQUs7YUFDVCxJQUFJLENBQUMsVUFBVSxDQUFDO2FBQ2hCLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUM1QyxLQUFLLENBQUMsR0FBRyxFQUFFO1lBQ1IsK0JBQStCO1FBQ25DLENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQzs4R0EvR1EsdUJBQXVCO2tHQUF2Qix1QkFBdUIsc1pDeEJwQyw2MkRBdURBOzsyRkQvQmEsdUJBQXVCO2tCQU5uQyxTQUFTO3NDQUNXLHVCQUF1QixDQUFDLE1BQU0sWUFDckMscUJBQXFCOzZHQUt0QixVQUFVO3NCQUFsQixLQUFLO2dCQUdGLFdBQVc7c0JBRGQsS0FBSztnQkFPRixNQUFNO3NCQURULEtBQUs7Z0JBV0ksS0FBSztzQkFBZCxNQUFNO2dCQUVHLElBQUk7c0JBQWIsTUFBTTtnQkFFRyxJQUFJO3NCQUFiLE1BQU07Z0JBRUcsb0JBQW9CO3NCQUE3QixNQUFNO2dCQUVHLGVBQWU7c0JBQXhCLE1BQU07Z0JBRUcsd0JBQXdCO3NCQUFqQyxNQUFNO2dCQUVHLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFFRyxhQUFhO3NCQUF0QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbmplY3RvciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBBbGlnbm1lbnQgfSBmcm9tICcuLi9lbnVtcy9hbGlnbm1lbnQuZW51bSc7XG5pbXBvcnQgeyBDdXN0b21JY29uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2N1c3RvbS1pY29uLnNlcnZpY2UnO1xuaW1wb3J0IHsgREVGQVVMVF9GT05UX1NJWkUgfSBmcm9tICcuLi8uLi9lZGl0b3IvY29yZS9jb25zdGFudHMvZWRpdG9yLmNvbnN0JztcbmltcG9ydCB7IEVsZW1lbnREYXRhTW9kZWwgfSBmcm9tICcuLi8uLi9lZGl0b3IvY3VzdG9tLWNvbXBvbmVudHMvZXh0ZXJuYWwtZWxlbWVudC9tb2RlbHMvZWxlbWVudC1kYXRhLm1vZGVsJztcbmltcG9ydCB7IEVYVEVSTkFMX0VMRU1FTlRfU0VSVklDRSB9IGZyb20gJy4uLy4uL2VkaXRvci9jdXN0b20tY29tcG9uZW50cy9leHRlcm5hbC1lbGVtZW50L2V4dGVybmFsLWVsZW1lbnRzLmNvbnN0JztcbmltcG9ydCB7IEV4dGVybmFsRWxlbWVudE1vZGVsIH0gZnJvbSAnLi4vLi4vZWRpdG9yL2N1c3RvbS1jb21wb25lbnRzL2V4dGVybmFsLWVsZW1lbnQvbW9kZWxzL2V4dGVybmFsLWVsZW1lbnQubW9kZWwnO1xuaW1wb3J0IHsgSVRvb2xiYXJTdHlsZXMgfSBmcm9tICcuLi8uLi9lZGl0b3IvY29yZS9pbnRlcmZhY2VzL3Rvb2xiYXItc3R5bGVzLmludGVyZmFjZSc7XG5pbXBvcnQgeyBOdW1iZXJpbmdMZXZlbE1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9udW1iZXJpbmctbGV2ZWwubW9kZWwnO1xuaW1wb3J0IHsgTnVtYmVyaW5nVGVtcGxhdGVzIH0gZnJvbSAnLi4vY29uc3RhbnRzL251bWJlcmluZy10ZW1wbGF0ZXMuY29uc3QnO1xuaW1wb3J0IHsgTnVtYmVyaW5nVGVtcGxhdGVUeXBlIH0gZnJvbSAnLi4vZW51bXMvbnVtYmVyaW5nLXRlbXBsYXRlLXR5cGUuZW51bSc7XG5pbXBvcnQgeyBOdW1iZXJpbmdUeXBlIH0gZnJvbSAnLi4vZW51bXMvbnVtYmVyaW5nLXR5cGUuZW51bSc7XG5pbXBvcnQgeyBPcGVyYXRpb25zSGlzdG9yeUluZm9Nb2RlbCB9IGZyb20gJy4uLy4uL2VkaXRvci9vcGVyYXRpb24taGlzdG9yeS9vcGVyYXRpb25zLWhpc3RvcnktaW5mby5tb2RlbCc7XG5pbXBvcnQgeyBQYXJhZ3JhcGhTdHlsZU1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9wYXJhZ3JhcGgtc3R5bGUubW9kZWwnO1xuaW1wb3J0IHsgVGV4dFN0eWxlTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL3RleHQtc3R5bGUubW9kZWwnO1xuaW1wb3J0IHsgVG9vbGJhclN0eWxlc0hlbHBlciB9IGZyb20gJy4uL2hlbHBlcnMvdG9vbGJhci1zdHlsZXMuaGVscGVyJztcblxuQENvbXBvbmVudCh7XG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgc2VsZWN0b3I6ICdhcHAtdG9vbGJhci1hY3Rpb25zJyxcbiAgICB0ZW1wbGF0ZVVybDogJ3Rvb2xiYXItYWN0aW9ucy5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJ3Rvb2xiYXItYWN0aW9ucy5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFRvb2xiYXJBY3Rpb25zQ29tcG9uZW50IHtcbiAgICBASW5wdXQoKSBpc1ZpZXdPbmx5OiBib29sZWFuO1xuXG4gICAgQElucHV0KClcbiAgICBzZXQgaGlzdG9yeUluZm8odmFsdWU6IE9wZXJhdGlvbnNIaXN0b3J5SW5mb01vZGVsKSB7XG4gICAgICAgIHRoaXMuY2FuVW5kbyA9IHZhbHVlLnN0ZXAgIT09IC0xO1xuICAgICAgICB0aGlzLmNhblJlZG8gPSB2YWx1ZS5zdGVwIDwgdmFsdWUubGFzdFN0ZXA7XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBzZXQgc3R5bGVzKHZhbHVlOiBJVG9vbGJhclN0eWxlcykge1xuICAgICAgICB0aGlzLl9zdHlsZXMgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5udW1iZXJpbmdUeXBlID0gVG9vbGJhclN0eWxlc0hlbHBlci5nZXROdW1iZXJpbmdUeXBlKHZhbHVlLmlzQnVsbGV0TWFya2VyKTtcbiAgICAgICAgdGhpcy5udW1iZXJpbmdUZW1wbGF0ZVR5cGUgPSBUb29sYmFyU3R5bGVzSGVscGVyLmdldE51bWJlcmluZ1RlbXBsYXRlVHlwZSh2YWx1ZS5udW1iZXJpbmdMZXZlbHNTdHlsZXMpO1xuICAgIH1cbiAgICBnZXQgc3R5bGVzKCk6IElUb29sYmFyU3R5bGVzIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3N0eWxlcztcbiAgICB9XG4gICAgcHJpdmF0ZSBfc3R5bGVzOiBJVG9vbGJhclN0eWxlcztcblxuICAgIEBPdXRwdXQoKSBwcmludCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIEBPdXRwdXQoKSByZWRvID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgQE91dHB1dCgpIHVuZG8gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICBAT3V0cHV0KCkgY2hhbmdlUGFyYWdyYXBoU3R5bGUgPSBuZXcgRXZlbnRFbWl0dGVyPFBhcmFncmFwaFN0eWxlTW9kZWw+KCk7XG5cbiAgICBAT3V0cHV0KCkgY2hhbmdlVGV4dFN0eWxlID0gbmV3IEV2ZW50RW1pdHRlcjxUZXh0U3R5bGVNb2RlbD4oKTtcblxuICAgIEBPdXRwdXQoKSBzZXROdW1iZXJpbmdUZW1wbGF0ZVR5cGUgPSBuZXcgRXZlbnRFbWl0dGVyPE51bWJlcmluZ0xldmVsTW9kZWxbXT4oKTtcblxuICAgIEBPdXRwdXQoKSByZW1vdmVOdW1iZXJpbmdzID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgQE91dHB1dCgpIGNyZWF0ZUVsZW1lbnQgPSBuZXcgRXZlbnRFbWl0dGVyPEVsZW1lbnREYXRhTW9kZWw+KCk7XG5cbiAgICBjYW5VbmRvOiBib29sZWFuO1xuXG4gICAgY2FuUmVkbzogYm9vbGVhbjtcblxuICAgIG51bWJlcmluZ1R5cGU6IE51bWJlcmluZ1R5cGUgfCBudWxsO1xuXG4gICAgbnVtYmVyaW5nVGVtcGxhdGVUeXBlOiBOdW1iZXJpbmdUZW1wbGF0ZVR5cGUgfCBudWxsO1xuXG4gICAgZWxlbWVudHM6IEV4dGVybmFsRWxlbWVudE1vZGVsW107XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGN1c3RvbUljb25TZXJ2aWNlOiBDdXN0b21JY29uU2VydmljZSwgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICAgICAgdGhpcy5lbGVtZW50cyA9IHRoaXMuaW5qZWN0b3IuZ2V0KEVYVEVSTkFMX0VMRU1FTlRfU0VSVklDRSkuZWxlbWVudHM7XG4gICAgICAgIHRoaXMuY3VzdG9tSWNvblNlcnZpY2UucmVnaXN0ZXIoKTtcbiAgICB9XG5cbiAgICBvbkFwcGx5Rm9udEZhbWlseShmb250OiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jaGVja0ZvbnRMb2FkZWRBbmRBcHBseVN0eWxlKG5ldyBUZXh0U3R5bGVNb2RlbCh7IGZvbnRGYW1pbHk6IGZvbnQgfSkpO1xuICAgIH1cblxuICAgIG9uQXBwbHlGb250U2l6ZShzaXplOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jaGVja0ZvbnRMb2FkZWRBbmRBcHBseVN0eWxlKG5ldyBUZXh0U3R5bGVNb2RlbCh7IGZvbnRTaXplOiBzaXplIH0pKTtcbiAgICB9XG5cbiAgICBvbkFwcGx5Qm9sZChib2xkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2hlY2tGb250TG9hZGVkQW5kQXBwbHlTdHlsZShuZXcgVGV4dFN0eWxlTW9kZWwoeyBib2xkIH0pKTtcbiAgICB9XG5cbiAgICBvbkFwcGx5VW5kZXJsaW5lKHVuZGVybGluZTogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLmNoYW5nZVRleHRTdHlsZS5lbWl0KG5ldyBUZXh0U3R5bGVNb2RlbCh7IHVuZGVybGluZSB9KSk7XG4gICAgfVxuXG4gICAgb25BcHBseUl0YWxpYyhpdGFsaWM6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jaGVja0ZvbnRMb2FkZWRBbmRBcHBseVN0eWxlKG5ldyBUZXh0U3R5bGVNb2RlbCh7IGl0YWxpYyB9KSk7XG4gICAgfVxuXG4gICAgb25BcHBseUZvbnRDb2xvcihjb2xvcjogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2hhbmdlVGV4dFN0eWxlLmVtaXQobmV3IFRleHRTdHlsZU1vZGVsKHsgZm9udENvbG9yOiBjb2xvciB9KSk7XG4gICAgfVxuXG4gICAgb25BcHBseUhpZ2hsaWdodENvbG9yKGNvbG9yOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jaGFuZ2VUZXh0U3R5bGUuZW1pdChuZXcgVGV4dFN0eWxlTW9kZWwoeyBoaWdobGlnaHRDb2xvcjogY29sb3IgfSkpO1xuICAgIH1cblxuICAgIG9uQXBwbHlBbGlnbm1lbnQoYWxpZ25tZW50OiBBbGlnbm1lbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jaGFuZ2VQYXJhZ3JhcGhTdHlsZS5lbWl0KG5ldyBQYXJhZ3JhcGhTdHlsZU1vZGVsKHsgYWxpZ25tZW50IH0pKTtcbiAgICB9XG5cbiAgICBvblNldE51bWJlcmluZ1RlbXBsYXRlVHlwZSh0ZW1wbGF0ZVR5cGU6IE51bWJlcmluZ1RlbXBsYXRlVHlwZSk6IHZvaWQge1xuICAgICAgICBjb25zdCB0ZW1wbGF0ZUxldmVscyA9IE51bWJlcmluZ1RlbXBsYXRlcy5maW5kKHggPT4geC50ZW1wbGF0ZVR5cGUgPT09IHRlbXBsYXRlVHlwZSkubGV2ZWxzO1xuICAgICAgICB0aGlzLnNldE51bWJlcmluZ1RlbXBsYXRlVHlwZS5lbWl0KHRlbXBsYXRlTGV2ZWxzKTtcbiAgICB9XG5cbiAgICBhc3luYyBvbkNyZWF0ZUVsZW1lbnQobW9kZWw6IEV4dGVybmFsRWxlbWVudE1vZGVsKSB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBtb2RlbC5mYWN0b3J5TWV0aG9kKCk7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSBuZXcgRWxlbWVudERhdGFNb2RlbChtb2RlbC50eXBlLCBkYXRhLndpZHRoLCBkYXRhLmhlaWdodCwgZGF0YS5ndWlkKTtcbiAgICAgICAgdGhpcy5jcmVhdGVFbGVtZW50LmVtaXQoZWxlbWVudCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjaGVja0ZvbnRMb2FkZWRBbmRBcHBseVN0eWxlKHN0eWxlOiBUZXh0U3R5bGVNb2RlbCk6IHZvaWQge1xuICAgICAgICBjb25zdCBuZXdTdHlsZXMgPSB7IC4uLnRoaXMuc3R5bGVzLCAuLi5zdHlsZSB9O1xuICAgICAgICBjb25zdCBpdGFsaWMgPSBuZXdTdHlsZXMuaXRhbGljID8gJ2l0YWxpYyAnIDogJyc7XG4gICAgICAgIGNvbnN0IGJvbGQgPSBuZXdTdHlsZXMuYm9sZCA/ICdib2xkICcgOiAnJztcbiAgICAgICAgY29uc3QgZm9udFN0eWxlcyA9IGAke2l0YWxpY30ke2JvbGR9JHtuZXdTdHlsZXMuZm9udFNpemUgPz8gREVGQVVMVF9GT05UX1NJWkV9cHQgJHtuZXdTdHlsZXMuZm9udEZhbWlseX1gO1xuXG4gICAgICAgIGlmIChkb2N1bWVudC5mb250cy5jaGVjayhmb250U3R5bGVzKSkge1xuICAgICAgICAgICAgdGhpcy5jaGFuZ2VUZXh0U3R5bGUuZW1pdChzdHlsZSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBkb2N1bWVudC5mb250c1xuICAgICAgICAgICAgLmxvYWQoZm9udFN0eWxlcylcbiAgICAgICAgICAgIC50aGVuKCgpID0+IHRoaXMuY2hhbmdlVGV4dFN0eWxlLmVtaXQoc3R5bGUpKVxuICAgICAgICAgICAgLmNhdGNoKCgpID0+IHtcbiAgICAgICAgICAgICAgICAvLyBjb250aW51ZSByZWdhcmRsZXNzIG9mIGVycm9yXG4gICAgICAgICAgICB9KTtcbiAgICB9XG59XG4iLCI8YXBwLXVuZG8tcmVkb1xuICAgIFtjYW5VbmRvXT1cImNhblVuZG9cIlxuICAgIFtjYW5SZWRvXT1cImNhblJlZG9cIlxuICAgICh1bmRvKT1cInVuZG8uZW1pdCgpXCJcbiAgICAocmVkbyk9XCJyZWRvLmVtaXQoKVwiIC8+XG48YXBwLXByaW50IChwcmludCk9XCJwcmludC5lbWl0KClcIiAvPlxuPGRpdiBjbGFzcz1cInNlcGFyYXRvclwiPjwvZGl2PlxuPGFwcC1mb250XG4gICAgW2lzRGlzYWJsZWRdPVwiaXNWaWV3T25seVwiXG4gICAgW3N0eWxlc109XCJzdHlsZXNcIlxuICAgIChzZWxlY3RGb250KT1cIm9uQXBwbHlGb250RmFtaWx5KCRldmVudClcIiAvPlxuPGRpdiBjbGFzcz1cInNlcGFyYXRvclwiPjwvZGl2PlxuPGFwcC1mb250LXNpemVcbiAgICBbaXNEaXNhYmxlZF09XCJpc1ZpZXdPbmx5XCJcbiAgICBbZm9udFNpemVdPVwic3R5bGVzLmZvbnRTaXplXCJcbiAgICAoc2VsZWN0Rm9udFNpemUpPVwib25BcHBseUZvbnRTaXplKCRldmVudClcIiAvPlxuPGRpdiBjbGFzcz1cInNlcGFyYXRvclwiPjwvZGl2PlxuPGFwcC1mb250LXN0eWxlXG4gICAgW2lzRGlzYWJsZWRdPVwiaXNWaWV3T25seVwiXG4gICAgW2JvbGRdPVwic3R5bGVzLmJvbGRcIlxuICAgIFtpdGFsaWNdPVwic3R5bGVzLml0YWxpY1wiXG4gICAgW3VuZGVybGluZV09XCJzdHlsZXMudW5kZXJsaW5lXCJcbiAgICBbZm9udENvbG9yXT1cInN0eWxlcy5mb250Q29sb3JcIlxuICAgIFtoaWdobGlnaHRDb2xvcl09XCJzdHlsZXMuaGlnaGxpZ2h0Q29sb3JcIlxuICAgIChzZWxlY3RGb250Q29sb3IpPVwib25BcHBseUZvbnRDb2xvcigkZXZlbnQpXCJcbiAgICAodG9nZ2xlQm9sZCk9XCJvbkFwcGx5Qm9sZCgkZXZlbnQpXCJcbiAgICAodG9nZ2xlSXRhbGljKT1cIm9uQXBwbHlJdGFsaWMoJGV2ZW50KVwiXG4gICAgKHRvZ2dsZVVuZGVybGluZSk9XCJvbkFwcGx5VW5kZXJsaW5lKCRldmVudClcIlxuICAgIChzZWxlY3RIaWdobGlnaHRDb2xvcik9XCJvbkFwcGx5SGlnaGxpZ2h0Q29sb3IoJGV2ZW50KVwiIC8+XG48ZGl2IGNsYXNzPVwic2VwYXJhdG9yXCI+PC9kaXY+XG48ZGl2XG4gICAgKm5nSWY9XCJlbGVtZW50cy5sZW5ndGhcIlxuICAgIGNsYXNzPVwiY3VzdG9tLWVsZW1lbnRzXCI+XG4gICAgPGJ1dHRvblxuICAgICAgICAqbmdGb3I9XCJsZXQgZWxlbWVudCBvZiBlbGVtZW50c1wiXG4gICAgICAgIG1hdC1idXR0b25cbiAgICAgICAgW2Rpc2FibGVkXT1cImlzVmlld09ubHlcIlxuICAgICAgICAoY2xpY2spPVwib25DcmVhdGVFbGVtZW50KGVsZW1lbnQpXCI+XG4gICAgICAgIDxtYXQtaWNvblxuICAgICAgICAgICAgZm9udFNldD1cIm5jLWljb25cIlxuICAgICAgICAgICAgZm9udEljb249XCJ7eyBlbGVtZW50Lmljb24gfX1cIj48L21hdC1pY29uPlxuICAgIDwvYnV0dG9uPlxuICAgIDxkaXYgY2xhc3M9XCJzZXBhcmF0b3JcIj48L2Rpdj5cbjwvZGl2PlxuPGFwcC1mb3JtYXRcbiAgICBbaXNEaXNhYmxlZF09XCJpc1ZpZXdPbmx5XCJcbiAgICBbYWxpZ25tZW50XT1cInN0eWxlcy5hbGlnbm1lbnRcIlxuICAgIChzZWxlY3RBbGlnbm1lbnQpPVwib25BcHBseUFsaWdubWVudCgkZXZlbnQpXCIgLz5cbjxkaXYgY2xhc3M9XCJzZXBhcmF0b3JcIj48L2Rpdj5cbjxhcHAtbnVtYmVyaW5nXG4gICAgW2lzRGlzYWJsZWRdPVwiaXNWaWV3T25seVwiXG4gICAgW3NlbGVjdGVkTnVtYmVyaW5nVHlwZV09XCJudW1iZXJpbmdUeXBlXCJcbiAgICBbc2VsZWN0ZWROdW1iZXJpbmdUZW1wbGF0ZV09XCJudW1iZXJpbmdUZW1wbGF0ZVR5cGVcIlxuICAgIChzZWxlY3ROdW1iZXJpbmdUZW1wbGF0ZSk9XCJvblNldE51bWJlcmluZ1RlbXBsYXRlVHlwZSgkZXZlbnQpXCJcbiAgICAocmVtb3ZlTnVtYmVyaW5ncyk9XCJyZW1vdmVOdW1iZXJpbmdzLmVtaXQoKVwiIC8+XG4iXX0=
|
|
@@ -10,11 +10,11 @@ export class UndoRedoComponent {
|
|
|
10
10
|
this.redo = new EventEmitter();
|
|
11
11
|
}
|
|
12
12
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: UndoRedoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
13
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: UndoRedoComponent, selector: "app-undo-redo", inputs: { canUndo: "canUndo", canRedo: "canRedo" }, outputs: { undo: "undo", redo: "redo" }, ngImport: i0, template: "<button\n mat-button\n [disabled]=\"!canUndo\"\n (click)=\"undo.emit()\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-undo\"></mat-icon>\n</button>\n<button\n mat-button\n [disabled]=\"!canRedo\"\n (click)=\"redo.emit()\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-redo\"></mat-icon>\n</button>\n", styles: [":host{align-
|
|
13
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: UndoRedoComponent, selector: "app-undo-redo", inputs: { canUndo: "canUndo", canRedo: "canRedo" }, outputs: { undo: "undo", redo: "redo" }, ngImport: i0, template: "<button\n mat-button\n [disabled]=\"!canUndo\"\n (click)=\"undo.emit()\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-undo\"></mat-icon>\n</button>\n<button\n mat-button\n [disabled]=\"!canRedo\"\n (click)=\"redo.emit()\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-redo\"></mat-icon>\n</button>\n", styles: [":host{display:flex;align-items:center}.mdc-button{min-width:28px;min-height:28px;height:28px;padding:0;margin:0 4px}.mdc-button mat-icon{font-size:24px;height:24px;width:24px;margin:0}\n"], dependencies: [{ kind: "component", type: i1.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
14
14
|
}
|
|
15
15
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: UndoRedoComponent, decorators: [{
|
|
16
16
|
type: Component,
|
|
17
|
-
args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'app-undo-redo', template: "<button\n mat-button\n [disabled]=\"!canUndo\"\n (click)=\"undo.emit()\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-undo\"></mat-icon>\n</button>\n<button\n mat-button\n [disabled]=\"!canRedo\"\n (click)=\"redo.emit()\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-redo\"></mat-icon>\n</button>\n", styles: [":host{align-
|
|
17
|
+
args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'app-undo-redo', template: "<button\n mat-button\n [disabled]=\"!canUndo\"\n (click)=\"undo.emit()\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-undo\"></mat-icon>\n</button>\n<button\n mat-button\n [disabled]=\"!canRedo\"\n (click)=\"redo.emit()\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-redo\"></mat-icon>\n</button>\n", styles: [":host{display:flex;align-items:center}.mdc-button{min-width:28px;min-height:28px;height:28px;padding:0;margin:0 4px}.mdc-button mat-icon{font-size:24px;height:24px;width:24px;margin:0}\n"] }]
|
|
18
18
|
}], propDecorators: { canUndo: [{
|
|
19
19
|
type: Input
|
|
20
20
|
}], canRedo: [{
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export class ScalingHelper {
|
|
2
|
+
static getRatio(current, original) {
|
|
3
|
+
return parseFloat((current / original).toFixed(1));
|
|
4
|
+
}
|
|
5
|
+
static scale(initial, scale) {
|
|
6
|
+
return Math.round(initial * scale);
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NhbGluZy5oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbm9kZXIvc3JjL2xpYi8rc2hhcmVkL2hlbHBlcnMvc2NhbGluZy5oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLGFBQWE7SUFDdEIsTUFBTSxDQUFDLFFBQVEsQ0FBQyxPQUFlLEVBQUUsUUFBZ0I7UUFDN0MsT0FBTyxVQUFVLENBQUMsQ0FBQyxPQUFPLEdBQUcsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBZSxFQUFFLEtBQWE7UUFDdkMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUMsQ0FBQztJQUN2QyxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgU2NhbGluZ0hlbHBlciB7XG4gICAgc3RhdGljIGdldFJhdGlvKGN1cnJlbnQ6IG51bWJlciwgb3JpZ2luYWw6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBwYXJzZUZsb2F0KChjdXJyZW50IC8gb3JpZ2luYWwpLnRvRml4ZWQoMSkpO1xuICAgIH1cblxuICAgIHN0YXRpYyBzY2FsZShpbml0aWFsOiBudW1iZXIsIHNjYWxlOiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gTWF0aC5yb3VuZChpbml0aWFsICogc2NhbGUpO1xuICAgIH1cbn1cbiJdfQ==
|
package/esm2022/public-api.mjs
CHANGED
|
@@ -20,7 +20,7 @@ export * from './lib/+shared/editor/operations/enums/command-type.enum';
|
|
|
20
20
|
export * from './lib/+shared/editor/store/editor.actions';
|
|
21
21
|
export * from './lib/+shared/editor/editor.component';
|
|
22
22
|
export * from './lib/+shared/editor/editor.module';
|
|
23
|
-
export * from './lib/+shared/editor-
|
|
23
|
+
export * from './lib/+shared/editor-title/editor-title.component';
|
|
24
24
|
export * from './lib/+shared/editor-search/editor-search-dialog.component';
|
|
25
25
|
export * from './lib/+shared/editor-toolbar/enums/alignment.enum';
|
|
26
26
|
export * from './lib/+shared/editor-toolbar/editor-toolbar.component';
|
|
@@ -43,4 +43,4 @@ export * from './lib/models/generated/operation.model';
|
|
|
43
43
|
export * from './lib/models/generated/paragraph-style.model';
|
|
44
44
|
export * from './lib/models/generated/revision.model';
|
|
45
45
|
export * from './lib/models/generated/text-style.model';
|
|
46
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL25neC1ub2Rlci9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGlEQUFpRCxDQUFDO0FBQ2hFLGNBQWMsK0NBQStDLENBQUM7QUFFOUQsY0FBYyx5REFBeUQsQ0FBQztBQUN4RSxjQUFjLGtEQUFrRCxDQUFDO0FBRWpFLGNBQWMsa0RBQWtELENBQUM7QUFDakUsY0FBYyxnREFBZ0QsQ0FBQztBQUUvRCxjQUFjLDhDQUE4QyxDQUFDO0FBQzdELGNBQWMsdURBQXVELENBQUM7QUFFdEUsY0FBYywrREFBK0QsQ0FBQztBQUU5RSxjQUFjLG1GQUFtRixDQUFDO0FBQ2xHLGNBQWMsdUZBQXVGLENBQUM7QUFDdEcsY0FBYyw0RUFBNEUsQ0FBQztBQUMzRixjQUFjLGtGQUFrRixDQUFDO0FBQ2pHLGNBQWMsb0ZBQW9GLENBQUM7QUFFbkcsY0FBYyx5RUFBeUUsQ0FBQztBQUV4RixjQUFjLHVFQUF1RSxDQUFDO0FBRXRGLGNBQWMsaURBQWlELENBQUM7QUFFaEUsY0FBYyxzRUFBc0UsQ0FBQztBQUVyRixjQUFjLHlEQUF5RCxDQUFDO0FBRXhFLGNBQWMsMkNBQTJDLENBQUM7QUFFMUQsY0FBYyx1Q0FBdUMsQ0FBQztBQUV0RCxjQUFjLG9DQUFvQyxDQUFDO0FBRW5ELGNBQWMsbURBQW1ELENBQUM7QUFFbEUsY0FBYyw0REFBNEQsQ0FBQztBQUUzRSxjQUFjLG1EQUFtRCxDQUFDO0FBQ2xFLGNBQWMsdURBQXVELENBQUM7QUFDdEUsY0FBYyxvREFBb0QsQ0FBQztBQUVuRSxjQUFjLCtCQUErQixDQUFDO0FBRTlDLGNBQWMsdUNBQXVDLENBQUM7QUFFdEQsY0FBYyx1REFBdUQsQ0FBQztBQUN0RSxjQUFjLHlEQUF5RCxDQUFDO0FBRXhFLGNBQWMseUNBQXlDLENBQUM7QUFFeEQsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLDRDQUE0QyxDQUFDO0FBQzNELGNBQWMsdUNBQXVDLENBQUM7QUFDdEQsY0FBYyxtQ0FBbUMsQ0FBQztBQUNsRCxjQUFjLHNDQUFzQyxDQUFDO0FBQ3JELGNBQWMsMENBQTBDLENBQUM7QUFDekQsY0FBYyx5Q0FBeUMsQ0FBQztBQUN4RCxjQUFjLHFEQUFxRCxDQUFDO0FBQ3BFLGNBQWMsOENBQThDLENBQUM7QUFDN0QsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxjQUFjLDhDQUE4QyxDQUFDO0FBQzdELGNBQWMsdUNBQXVDLENBQUM7QUFDdEQsY0FBYyx5Q0FBeUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGliLytzaGFyZWQvY29uc3RhbnRzL2RlZmF1bHQtZmlsZS1uYW1lLmNvbnN0JztcbmV4cG9ydCAqIGZyb20gJy4vbGliLytzaGFyZWQvY29uc3RhbnRzL3BhZ2luYXRvci1zaXplcy5jb25zdCc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliLytzaGFyZWQvZWRpdG9yL2NvcmUvY29uc3RhbnRzL2RvY3VtZW50LWluZm8uY29uc3QnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvK3NoYXJlZC9lZGl0b3IvY29yZS9jb25zdGFudHMvZWRpdG9yLmNvbnN0JztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvK3NoYXJlZC9lZGl0b3IvY29yZS9lbnVtcy9icmVhay10eXBlcy5lbnVtJztcbmV4cG9ydCAqIGZyb20gJy4vbGliLytzaGFyZWQvZWRpdG9yL2NvcmUvZW51bXMvcGFnZS10eXBlLmVudW0nO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi8rc2hhcmVkL2VkaXRvci9jb3JlL2hlbHBlcnMvZG9tLmhlbHBlcic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi8rc2hhcmVkL2VkaXRvci9jb3JlL2hlbHBlcnMvZm9ybWF0LXN0eWxlLmhlbHBlcic7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliLytzaGFyZWQvZWRpdG9yL2NvcmUvaW50ZXJmYWNlcy90b29sYmFyLXN0eWxlcy5pbnRlcmZhY2UnO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi8rc2hhcmVkL2VkaXRvci9jdXN0b20tY29tcG9uZW50cy9leHRlcm5hbC1lbGVtZW50L21vZGVscy9lbGVtZW50LWRhdGEubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvK3NoYXJlZC9lZGl0b3IvY3VzdG9tLWNvbXBvbmVudHMvZXh0ZXJuYWwtZWxlbWVudC9tb2RlbHMvZXh0ZXJuYWwtZWxlbWVudC5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi8rc2hhcmVkL2VkaXRvci9jdXN0b20tY29tcG9uZW50cy9leHRlcm5hbC1lbGVtZW50L2V4dGVybmFsLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi8rc2hhcmVkL2VkaXRvci9jdXN0b20tY29tcG9uZW50cy9leHRlcm5hbC1lbGVtZW50L2V4dGVybmFsLWVsZW1lbnQuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi8rc2hhcmVkL2VkaXRvci9jdXN0b20tY29tcG9uZW50cy9leHRlcm5hbC1lbGVtZW50L2V4dGVybmFsLXNpZGVuYXYuaW50ZXJmYWNlJztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvK3NoYXJlZC9lZGl0b3IvY3VzdG9tLWNvbXBvbmVudHMvaW1hZ2Uvc2VydmljZXMvaW1hZ2UtYXBpLnNlcnZpY2UnO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi8rc2hhcmVkL2VkaXRvci9jdXN0b20tY29tcG9uZW50cy9zaGFyZWQvYWJzdHJhY3QvYmFzZS5jb21wb25lbnQnO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi8rc2hhcmVkL2VkaXRvci9pbnRlcmFjdGlvbi9lZGl0b3Iuc2VydmljZSc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliLytzaGFyZWQvZWRpdG9yL29wZXJhdGlvbi1oaXN0b3J5L29wZXJhdGlvbnMtaGlzdG9yeS1pbmZvLm1vZGVsJztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvK3NoYXJlZC9lZGl0b3Ivb3BlcmF0aW9ucy9lbnVtcy9jb21tYW5kLXR5cGUuZW51bSc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliLytzaGFyZWQvZWRpdG9yL3N0b3JlL2VkaXRvci5hY3Rpb25zJztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvK3NoYXJlZC9lZGl0b3IvZWRpdG9yLmNvbXBvbmVudCc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliLytzaGFyZWQvZWRpdG9yL2VkaXRvci5tb2R1bGUnO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi8rc2hhcmVkL2VkaXRvci10aXRsZS9lZGl0b3ItdGl0bGUuY29tcG9uZW50JztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvK3NoYXJlZC9lZGl0b3Itc2VhcmNoL2VkaXRvci1zZWFyY2gtZGlhbG9nLmNvbXBvbmVudCc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliLytzaGFyZWQvZWRpdG9yLXRvb2xiYXIvZW51bXMvYWxpZ25tZW50LmVudW0nO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvK3NoYXJlZC9lZGl0b3ItdG9vbGJhci9lZGl0b3ItdG9vbGJhci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvK3NoYXJlZC9lZGl0b3ItdG9vbGJhci9lZGl0b3ItdG9vbGJhci5tb2R1bGUnO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi8rc2hhcmVkL2VudW1zL21vZGUuZW51bSc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliLytzaGFyZWQvaGVscGVycy9yZXZpc2lvbi5oZWxwZXInO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi8rc2hhcmVkL2NvbmZpcm0tZGlhbG9nL2NvbmZpcm0tZGlhbG9nLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi8rc2hhcmVkL2FkZC1saW5rLWRpYWxvZy9hZGQtbGluay1kaWFsb2cuY29tcG9uZW50JztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvK3NoYXJlZC9zZXJ2aWNlcy9jb21tYW5kcy5zZXJ2aWNlJztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWxzL2dlbmVyYXRlZC9jb21tYW5kLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVscy9nZW5lcmF0ZWQvZG9jdW1lbnQtbmFtZS5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RlbHMvZ2VuZXJhdGVkL2RvY3VtZW50Lm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVscy9nZW5lcmF0ZWQvZG9jeC5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RlbHMvZ2VuZXJhdGVkL2VsZW1lbnQubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWxzL2dlbmVyYXRlZC9maWxlLXNvdXJjZS5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RlbHMvZ2VuZXJhdGVkL2ltYWdlLWRhdGEubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWxzL2dlbmVyYXRlZC9sYXN0LWRvY3VtZW50LXJldmlzaW9uLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVscy9nZW5lcmF0ZWQvbnVtYmVyaW5nLWxldmVsLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVscy9nZW5lcmF0ZWQvb3BlcmF0aW9uLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVscy9nZW5lcmF0ZWQvcGFyYWdyYXBoLXN0eWxlLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVscy9nZW5lcmF0ZWQvcmV2aXNpb24ubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWxzL2dlbmVyYXRlZC90ZXh0LXN0eWxlLm1vZGVsJztcbiJdfQ==
|