@acorex/components 18.5.17 → 18.6.0
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/audio-wave/lib/audio-wave.component.d.ts +5 -0
- package/button-group/lib/button-group.component.d.ts +5 -2
- package/circular-progress/lib/circular-progress.component.d.ts +21 -57
- package/data-pager/lib/data-pager-pagesize-dropdown.component.d.ts +28 -0
- package/data-pager/lib/data-pager-prev-buttons.component.d.ts +20 -0
- package/data-pager/lib/data-pager.component.d.ts +111 -0
- package/data-table/lib/columns/data-text-column.component.d.ts +58 -0
- package/data-table/lib/columns/row-command-column.component.d.ts +83 -0
- package/data-table/lib/columns/row-index-column.component.d.ts +51 -0
- package/data-table/lib/columns/row-select-column.component.d.ts +47 -0
- package/data-table/lib/data-table/data-table.component.d.ts +200 -0
- package/data-table/lib/infinite-scroll-data-table/infinite-scroll-data-table.component.d.ts +185 -0
- package/datetime-box/lib/datetime-box.component.d.ts +59 -1
- package/datetime-input/lib/datetime-input.component.d.ts +133 -0
- package/datetime-picker/lib/datetime-picker.component.d.ts +95 -0
- package/decorators/lib/components/clear-button.component.d.ts +25 -0
- package/decorators/lib/components/close-button.component.d.ts +22 -0
- package/decorators/lib/components/generic-content.component.d.ts +4 -0
- package/decorators/lib/components/icon.component.d.ts +12 -0
- package/dialog/lib/dialog.component.d.ts +20 -0
- package/drawer/lib/drawer-container.component.d.ts +7 -0
- package/drawer/lib/drawer.component.d.ts +104 -0
- package/dropdown/lib/dropdown-box.component.d.ts +66 -0
- package/dropdown/lib/dropdown-panel.component.d.ts +85 -0
- package/dropdown-button/lib/dropdown-button.component.d.ts +38 -0
- package/esm2022/audio-wave/lib/audio-wave.component.mjs +6 -1
- package/esm2022/button-group/lib/button-group.component.mjs +6 -3
- package/esm2022/circular-progress/lib/circular-progress.component.mjs +45 -114
- package/esm2022/data-pager/lib/data-pager-pagesize-dropdown.component.mjs +23 -1
- package/esm2022/data-pager/lib/data-pager-prev-buttons.component.mjs +18 -1
- package/esm2022/data-pager/lib/data-pager.component.mjs +109 -1
- package/esm2022/data-table/lib/columns/data-text-column.component.mjs +32 -1
- package/esm2022/data-table/lib/columns/row-command-column.component.mjs +63 -1
- package/esm2022/data-table/lib/columns/row-index-column.component.mjs +40 -1
- package/esm2022/data-table/lib/columns/row-select-column.component.mjs +39 -1
- package/esm2022/data-table/lib/data-table/data-table.component.mjs +183 -1
- package/esm2022/data-table/lib/infinite-scroll-data-table/infinite-scroll-data-table.component.mjs +159 -1
- package/esm2022/datetime-box/lib/datetime-box.component.mjs +51 -2
- package/esm2022/datetime-input/lib/datetime-input.component.mjs +122 -1
- package/esm2022/datetime-picker/lib/datetime-picker.component.mjs +90 -1
- package/esm2022/decorators/lib/components/clear-button.component.mjs +26 -1
- package/esm2022/decorators/lib/components/close-button.component.mjs +23 -1
- package/esm2022/decorators/lib/components/generic-content.component.mjs +5 -1
- package/esm2022/decorators/lib/components/icon.component.mjs +13 -1
- package/esm2022/dialog/lib/dialog.component.mjs +18 -1
- package/esm2022/drawer/lib/drawer-container.component.mjs +8 -1
- package/esm2022/drawer/lib/drawer.component.mjs +102 -1
- package/esm2022/dropdown/lib/dropdown-box.component.mjs +58 -1
- package/esm2022/dropdown/lib/dropdown-panel.component.mjs +77 -1
- package/esm2022/dropdown-button/lib/dropdown-button.component.mjs +36 -1
- package/esm2022/form/lib/form-field.component.mjs +40 -1
- package/esm2022/form/lib/form.component.mjs +59 -1
- package/esm2022/form/lib/validation-summary.component.mjs +41 -1
- package/esm2022/image/lib/image.component.mjs +47 -1
- package/esm2022/label/lib/label.component.mjs +32 -1
- package/esm2022/list/lib/list.component.mjs +84 -1
- package/esm2022/loading/lib/loading-spinner.component.mjs +17 -1
- package/esm2022/loading/lib/loading.component.mjs +27 -1
- package/esm2022/popup/lib/popup.component.mjs +2 -2
- package/esm2022/progress-bar/lib/progress-bar.component.mjs +1 -1
- package/esm2022/uploader/index.mjs +5 -5
- package/esm2022/uploader/lib/{uploader-dialog-container.component.mjs → uploader-dialog-container/uploader-dialog-container.component.mjs} +2 -2
- package/esm2022/uploader/lib/uploader-drop-zone/uploader-drop-zone.component.mjs +27 -0
- package/esm2022/uploader/lib/uploader-list/uploader-list.component.mjs +26 -0
- package/esm2022/uploader/lib/uploader-zone.directive.mjs +23 -16
- package/esm2022/uploader/lib/uploader.models.mjs +6 -1
- package/esm2022/uploader/lib/uploader.module.mjs +18 -13
- package/esm2022/uploader/lib/uploader.service.mjs +14 -7
- package/esm2022/wysiwyg/lib/wysiwyg/wysiwyg-container/wysiwyg-container.component.mjs +50 -10
- package/esm2022/wysiwyg/lib/wysiwyg/wysiwyg-toolbar/wysiwyg-toolbar.component.mjs +8 -16
- package/fesm2022/acorex-components-audio-wave.mjs +5 -0
- package/fesm2022/acorex-components-audio-wave.mjs.map +1 -1
- package/fesm2022/acorex-components-button-group.mjs +5 -2
- package/fesm2022/acorex-components-button-group.mjs.map +1 -1
- package/fesm2022/acorex-components-circular-progress.mjs +44 -113
- package/fesm2022/acorex-components-circular-progress.mjs.map +1 -1
- package/fesm2022/acorex-components-data-pager.mjs +147 -0
- package/fesm2022/acorex-components-data-pager.mjs.map +1 -1
- package/fesm2022/acorex-components-data-table.mjs +510 -0
- package/fesm2022/acorex-components-data-table.mjs.map +1 -1
- package/fesm2022/acorex-components-datetime-box.mjs +50 -1
- package/fesm2022/acorex-components-datetime-box.mjs.map +1 -1
- package/fesm2022/acorex-components-datetime-input.mjs +121 -0
- package/fesm2022/acorex-components-datetime-input.mjs.map +1 -1
- package/fesm2022/acorex-components-datetime-picker.mjs +89 -0
- package/fesm2022/acorex-components-datetime-picker.mjs.map +1 -1
- package/fesm2022/acorex-components-decorators.mjs +63 -0
- package/fesm2022/acorex-components-decorators.mjs.map +1 -1
- package/fesm2022/acorex-components-dialog.mjs +17 -0
- package/fesm2022/acorex-components-dialog.mjs.map +1 -1
- package/fesm2022/acorex-components-drawer.mjs +108 -0
- package/fesm2022/acorex-components-drawer.mjs.map +1 -1
- package/fesm2022/acorex-components-dropdown-button.mjs +35 -0
- package/fesm2022/acorex-components-dropdown-button.mjs.map +1 -1
- package/fesm2022/acorex-components-dropdown.mjs +133 -0
- package/fesm2022/acorex-components-dropdown.mjs.map +1 -1
- package/fesm2022/acorex-components-form.mjs +137 -0
- package/fesm2022/acorex-components-form.mjs.map +1 -1
- package/fesm2022/acorex-components-image.mjs +46 -0
- package/fesm2022/acorex-components-image.mjs.map +1 -1
- package/fesm2022/acorex-components-label.mjs +31 -0
- package/fesm2022/acorex-components-label.mjs.map +1 -1
- package/fesm2022/acorex-components-list.mjs +83 -0
- package/fesm2022/acorex-components-list.mjs.map +1 -1
- package/fesm2022/acorex-components-loading.mjs +42 -0
- package/fesm2022/acorex-components-loading.mjs.map +1 -1
- package/fesm2022/acorex-components-popup.mjs +1 -1
- package/fesm2022/acorex-components-popup.mjs.map +1 -1
- package/fesm2022/acorex-components-progress-bar.mjs.map +1 -1
- package/fesm2022/acorex-components-uploader.mjs +63 -32
- package/fesm2022/acorex-components-uploader.mjs.map +1 -1
- package/fesm2022/acorex-components-wysiwyg.mjs +55 -25
- package/fesm2022/acorex-components-wysiwyg.mjs.map +1 -1
- package/form/lib/form-field.component.d.ts +45 -0
- package/form/lib/form.component.d.ts +58 -0
- package/form/lib/validation-summary.component.d.ts +49 -0
- package/image/lib/image.component.d.ts +61 -0
- package/label/lib/label.component.d.ts +34 -0
- package/list/lib/list.component.d.ts +98 -0
- package/loading/lib/loading-spinner.component.d.ts +20 -0
- package/loading/lib/loading.component.d.ts +35 -0
- package/package.json +66 -66
- package/progress-bar/lib/progress-bar.component.d.ts +0 -1
- package/uploader/index.d.ts +4 -4
- package/uploader/lib/{uploader-drop-zone.component.d.ts → uploader-drop-zone/uploader-drop-zone.component.d.ts} +3 -1
- package/uploader/lib/{uploader-list.component.d.ts → uploader-list/uploader-list.component.d.ts} +1 -1
- package/uploader/lib/uploader-zone.directive.d.ts +1 -0
- package/uploader/lib/uploader.models.d.ts +5 -0
- package/uploader/lib/uploader.module.d.ts +4 -4
- package/uploader/lib/uploader.service.d.ts +2 -1
- package/wysiwyg/lib/wysiwyg/wysiwyg-container/wysiwyg-container.component.d.ts +16 -3
- package/wysiwyg/lib/wysiwyg/wysiwyg-toolbar/wysiwyg-toolbar.component.d.ts +3 -4
- package/esm2022/uploader/lib/uploader-drop-zone.component.mjs +0 -18
- package/esm2022/uploader/lib/uploader-list.component.mjs +0 -26
- /package/uploader/lib/{uploader-dialog-container.component.d.ts → uploader-dialog-container/uploader-dialog-container.component.d.ts} +0 -0
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Component, ViewEncapsulation, afterNextRender, effect, inject, input, output, signal } from '@angular/core';
|
|
2
|
+
import { AXWysiwygContainerComponent } from '../wysiwyg-container/wysiwyg-container.component';
|
|
2
3
|
import { AXWysiwygService } from '../wysiwyg.service';
|
|
3
4
|
import * as i0 from "@angular/core";
|
|
4
5
|
import * as i1 from "@acorex/components/button";
|
|
@@ -15,6 +16,7 @@ import * as i7 from "@acorex/components/text-box";
|
|
|
15
16
|
export class AXWysiwygToolbarComponent {
|
|
16
17
|
/** @ignore */
|
|
17
18
|
constructor() {
|
|
19
|
+
this.parent = inject(AXWysiwygContainerComponent);
|
|
18
20
|
/**
|
|
19
21
|
* Return user input as HTML.
|
|
20
22
|
* @event
|
|
@@ -58,9 +60,9 @@ export class AXWysiwygToolbarComponent {
|
|
|
58
60
|
/** @ignore */
|
|
59
61
|
this.selectedFont = signal('medium');
|
|
60
62
|
/** @ignore */
|
|
61
|
-
this.selectedColor = signal('rgb(
|
|
63
|
+
this.selectedColor = signal('rgb(151, 148, 148)');
|
|
62
64
|
/** @ignore */
|
|
63
|
-
this.selectedHighlightColor = signal('
|
|
65
|
+
this.selectedHighlightColor = signal('rgba(243, 238, 238,0)');
|
|
64
66
|
/** @ignore */
|
|
65
67
|
this.popoverOption = {
|
|
66
68
|
openOn: 'click',
|
|
@@ -153,7 +155,7 @@ export class AXWysiwygToolbarComponent {
|
|
|
153
155
|
submitLink() {
|
|
154
156
|
this.wysiwyg().addImage(this.textBoxOptions.text);
|
|
155
157
|
}
|
|
156
|
-
|
|
158
|
+
/** @ignore */
|
|
157
159
|
changeColorHandler(e) {
|
|
158
160
|
this.selectedColor.set(e);
|
|
159
161
|
this.wysiwyg().color(e);
|
|
@@ -183,16 +185,6 @@ export class AXWysiwygToolbarComponent {
|
|
|
183
185
|
this.boldState.set(true);
|
|
184
186
|
}
|
|
185
187
|
}
|
|
186
|
-
/**
|
|
187
|
-
* emit html output
|
|
188
|
-
*/
|
|
189
|
-
out() {
|
|
190
|
-
this.outputHTML.emit({
|
|
191
|
-
component: this,
|
|
192
|
-
data: { value: this.wysiwyg().HTMLoutput },
|
|
193
|
-
isUserInteraction: true,
|
|
194
|
-
});
|
|
195
|
-
}
|
|
196
188
|
/** @ignore */
|
|
197
189
|
italic() {
|
|
198
190
|
if (this.italicState()) {
|
|
@@ -266,10 +258,10 @@ export class AXWysiwygToolbarComponent {
|
|
|
266
258
|
this.wysiwyg().background('red');
|
|
267
259
|
}
|
|
268
260
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: AXWysiwygToolbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
269
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.2", type: AXWysiwygToolbarComponent, selector: "ax-wysiwyg-toolbar", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { outputHTML: "outputHTML" }, ngImport: i0, template: "<div class=\"ax-wysiwyg-toolbar-container ax-sm\">\n <ng-content select=\"ax-prefix\"></ng-content>\n\n
|
|
261
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.2", type: AXWysiwygToolbarComponent, selector: "ax-wysiwyg-toolbar", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { outputHTML: "outputHTML" }, ngImport: i0, template: "<div class=\"ax-wysiwyg-toolbar-container ax-sm\">\n <div class=\"ax-wysiwyg-tool-container\">\n <ng-content select=\"ax-prefix\"></ng-content>\n\n @if (config().undo) {\n <ax-button class=\"\" (click)=\"undo()\" look=\"blank\">\n <ax-icon class=\"ax-icon ax-icon-undo\"></ax-icon>\n </ax-button>\n }\n\n @if (config().redo) {\n <ax-button class=\"\" (click)=\"redo()\" look=\"blank\">\n <ax-icon class=\"ax-icon ax-icon-redo\"></ax-icon>\n </ax-button>\n }\n @if (config().bold) {\n <ax-button (click)=\"bold()\" look=\"blank\" [selected]=\"boldState() ? true : false\">\n <ax-icon class=\"ax-icon ax-icon-bold\"></ax-icon>\n </ax-button>\n }\n @if (config().italic) {\n <ax-button (click)=\"italic()\" look=\"blank\" [selected]=\"italicState() ? true : false\">\n <ax-icon class=\"ax-icon ax-icon-italic\"></ax-icon>\n </ax-button>\n }\n @if (config().underLine) {\n <ax-button (click)=\"underLine()\" look=\"blank\" [selected]=\"underLineState() ? true : false\">\n <ax-icon class=\"ax-icon ax-icon-under-line\"></ax-icon>\n </ax-button>\n }\n @if (config().strike) {\n <ax-button (click)=\"strike()\" look=\"blank\" [selected]=\"strikeLineState() ? true : false\">\n <ax-icon class=\"ax-icon ax-icon-strike\"></ax-icon>\n </ax-button>\n }\n @if (config().color) {\n <ax-button #colorBtn look=\"blank\">\n <ax-icon class=\"ax-icon ax-icon-color-palette\"></ax-icon>\n </ax-button>\n <ax-popover\n [openOn]=\"popoverOption.openOn\"\n [closeOn]=\"popoverOption.closeOn\"\n [target]=\"colorBtn\"\n [placement]=\"popoverOption.placement\"\n >\n <div class=\"ax-overlay-pane\">\n <ax-color-palette (ngModelChange)=\"changeColorHandler($event)\" [ngModel]=\"selectedColor()\">\n <ax-color-palette-preview></ax-color-palette-preview>\n <ax-color-palette-picker></ax-color-palette-picker>\n <ax-color-palette-input></ax-color-palette-input>\n </ax-color-palette>\n </div>\n </ax-popover>\n }\n @if (config().highlight) {\n <ax-button #highlightBtn look=\"blank\">\n <ax-icon class=\"ax-icon ax-icon-highlight\"></ax-icon>\n </ax-button>\n <ax-popover\n [openOn]=\"popoverOption.openOn\"\n [closeOn]=\"popoverOption.closeOn\"\n [target]=\"highlightBtn\"\n [placement]=\"popoverOption.placement\"\n >\n <div class=\"ax-overlay-pane\">\n <ax-color-palette (ngModelChange)=\"changeHighlightColorHandler($event)\" [ngModel]=\"selectedHighlightColor()\">\n <ax-color-palette-preview></ax-color-palette-preview>\n <ax-color-palette-picker></ax-color-palette-picker>\n <ax-color-palette-input></ax-color-palette-input>\n </ax-color-palette>\n </div>\n </ax-popover>\n }\n @if (config().fontSize) {\n <ax-select-box\n [look]=\"parent.look\"\n (ngModelChange)=\"fontHandler($event)\"\n [ngModel]=\"selectedFont()\"\n [dataSource]=\"['small', 'medium', 'large', 'huge']\"\n placeholder=\"Choose...\"\n >\n </ax-select-box>\n }\n @if (config().list) {\n <ax-button (click)=\"orderList()\" look=\"blank\" [selected]=\"listState() === 'ordered' ? true : false\">\n <ax-icon class=\"ax-icon ax-icon-order-list\"></ax-icon>\n </ax-button>\n\n <ax-button (click)=\"unOrderList()\" look=\"blank\" [selected]=\"listState() === 'bullet' ? true : false\">\n <ax-icon class=\"ax-icon ax-icon-un-order-list\"></ax-icon>\n </ax-button>\n }\n @if (config().alignment) {\n <ax-button look=\"blank\" #alignPop>\n <ax-icon class=\"ax-icon ax-icon-align-left\"></ax-icon>\n </ax-button>\n <ax-popover\n [openOn]=\"popoverOption.openOn\"\n [closeOn]=\"popoverOption.closeOn\"\n [target]=\"alignPop\"\n [placement]=\"popoverOption.placement\"\n >\n <div class=\"ax-overlay-pane\">\n <ax-button (click)=\"alignStateHandler('left')\" look=\"blank\" [selected]=\"alignState() === 'left' ? true : false\">\n <ax-icon class=\"ax-icon ax-icon-align-left\"></ax-icon>\n </ax-button>\n\n <ax-button (click)=\"alignStateHandler('center')\" look=\"blank\" [selected]=\"alignState() === 'center' ? true : false\">\n <ax-icon class=\"ax-icon ax-icon-align-center\"></ax-icon>\n </ax-button>\n\n <ax-button (click)=\"alignStateHandler('right')\" look=\"blank\" [selected]=\"alignState() === 'right' ? true : false\">\n <ax-icon class=\"ax-icon ax-icon-align-right\"></ax-icon>\n </ax-button>\n </div>\n </ax-popover>\n }\n @if (config().image) {\n <ax-button #linkBtn look=\"blank\">\n <ax-icon class=\"ax-icon ax-icon-image\"></ax-icon>\n </ax-button>\n\n <ax-popover\n [openOn]=\"popoverOption.openOn\"\n [closeOn]=\"popoverOption.closeOn\"\n [target]=\"linkBtn\"\n [placement]=\"popoverOption.placement\"\n >\n <ax-text-box class=\"{{ textBoxOptions.size }}\" [(ngModel)]=\"textBoxOptions.text\" [placeholder]=\"textBoxOptions.placeholder\">\n </ax-text-box>\n <ax-suffix>\n <ax-button (click)=\"submitLink()\" class=\"ax-sm\" color=\"secondary\" text=\"Add\"> </ax-button>\n </ax-suffix>\n </ax-popover>\n }\n\n <ng-content select=\"ax-suffix\"></ng-content>\n </div>\n</div>\n", styles: [".ax-wysiwyg-toolbar-container{padding:.5rem 1rem}.ax-wysiwyg-toolbar-container .ax-icon{font-weight:900;font-size:1rem}.ax-wysiwyg-toolbar-container .ax-wysiwyg-tool-container{overflow:hidden;display:flex;flex-wrap:wrap;justify-content:flex-start}.ax-wysiwyg-toolbar-container .ax-wysiwyg-tool-container ax-button{margin-inline:.1rem}.ax-wysiwyg-toolbar-container .ax-wysiwyg-tool-container ax-select-box{margin-inline:.5rem}.ax-wysiwyg-toolbar-container .ax-wysiwyg-tool-container ax-prefix,.ax-wysiwyg-toolbar-container .ax-wysiwyg-tool-container ax-suffix{margin-inline:.5rem}.ax-wysiwyg-toolbar-container ax-select-box{width:auto!important}\n"], dependencies: [{ kind: "component", type: i1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "type", "responsiveOn", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "responsiveOnChange", "loadingTextChange"] }, { kind: "component", type: i2.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i2.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-sub-title, ax-placeholder, ax-overlay" }, { kind: "component", type: i3.AXSelectBoxComponent, selector: "ax-select-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "minValue", "maxValue", "value", "state", "name", "id", "type", "look", "multiple", "valueField", "textField", "textTemplate", "dataSource", "caption", "itemTemplate", "selectedTemplate", "emptyTemplate", "loadingTemplate", "dropdownWidth"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onOpened", "onClosed"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.AXColorPalleteComponent, selector: "ax-color-palette", inputs: ["disabled", "tabIndex", "readonly", "value", "state", "name", "checked"], outputs: ["onBlur", "onFocus", "valueChange", "stateChange", "onValueChanged", "readonlyChange", "disabledChange"] }, { kind: "component", type: i5.AXColorPalettePreviewComponent, selector: "ax-color-palette-preview" }, { kind: "component", type: i5.AXColorPaletteInputComponent, selector: "ax-color-palette-input" }, { kind: "component", type: i5.AXColorPalettePickerComponent, selector: "ax-color-palette-picker" }, { kind: "component", type: i6.AXPopoverComponent, selector: "ax-popover", inputs: ["offsetX", "offsetY", "target", "placement", "content", "openOn", "closeOn", "hasBackdrop", "openAfter", "closeAfter", "backdropClass", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "component", type: i7.AXTextBoxComponent, selector: "ax-text-box", inputs: ["disabled", "tabIndex", "readonly", "value", "state", "name", "id", "placeholder", "maxLength", "allowNull", "type", "autoComplete", "look", "mask-options", "class"], outputs: ["onBlur", "onFocus", "valueChange", "stateChange", "onValueChanged", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
270
262
|
}
|
|
271
263
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: AXWysiwygToolbarComponent, decorators: [{
|
|
272
264
|
type: Component,
|
|
273
|
-
args: [{ selector: 'ax-wysiwyg-toolbar', encapsulation: ViewEncapsulation.None, template: "<div class=\"ax-wysiwyg-toolbar-container ax-sm\">\n <ng-content select=\"ax-prefix\"></ng-content>\n\n
|
|
265
|
+
args: [{ selector: 'ax-wysiwyg-toolbar', encapsulation: ViewEncapsulation.None, template: "<div class=\"ax-wysiwyg-toolbar-container ax-sm\">\n <div class=\"ax-wysiwyg-tool-container\">\n <ng-content select=\"ax-prefix\"></ng-content>\n\n @if (config().undo) {\n <ax-button class=\"\" (click)=\"undo()\" look=\"blank\">\n <ax-icon class=\"ax-icon ax-icon-undo\"></ax-icon>\n </ax-button>\n }\n\n @if (config().redo) {\n <ax-button class=\"\" (click)=\"redo()\" look=\"blank\">\n <ax-icon class=\"ax-icon ax-icon-redo\"></ax-icon>\n </ax-button>\n }\n @if (config().bold) {\n <ax-button (click)=\"bold()\" look=\"blank\" [selected]=\"boldState() ? true : false\">\n <ax-icon class=\"ax-icon ax-icon-bold\"></ax-icon>\n </ax-button>\n }\n @if (config().italic) {\n <ax-button (click)=\"italic()\" look=\"blank\" [selected]=\"italicState() ? true : false\">\n <ax-icon class=\"ax-icon ax-icon-italic\"></ax-icon>\n </ax-button>\n }\n @if (config().underLine) {\n <ax-button (click)=\"underLine()\" look=\"blank\" [selected]=\"underLineState() ? true : false\">\n <ax-icon class=\"ax-icon ax-icon-under-line\"></ax-icon>\n </ax-button>\n }\n @if (config().strike) {\n <ax-button (click)=\"strike()\" look=\"blank\" [selected]=\"strikeLineState() ? true : false\">\n <ax-icon class=\"ax-icon ax-icon-strike\"></ax-icon>\n </ax-button>\n }\n @if (config().color) {\n <ax-button #colorBtn look=\"blank\">\n <ax-icon class=\"ax-icon ax-icon-color-palette\"></ax-icon>\n </ax-button>\n <ax-popover\n [openOn]=\"popoverOption.openOn\"\n [closeOn]=\"popoverOption.closeOn\"\n [target]=\"colorBtn\"\n [placement]=\"popoverOption.placement\"\n >\n <div class=\"ax-overlay-pane\">\n <ax-color-palette (ngModelChange)=\"changeColorHandler($event)\" [ngModel]=\"selectedColor()\">\n <ax-color-palette-preview></ax-color-palette-preview>\n <ax-color-palette-picker></ax-color-palette-picker>\n <ax-color-palette-input></ax-color-palette-input>\n </ax-color-palette>\n </div>\n </ax-popover>\n }\n @if (config().highlight) {\n <ax-button #highlightBtn look=\"blank\">\n <ax-icon class=\"ax-icon ax-icon-highlight\"></ax-icon>\n </ax-button>\n <ax-popover\n [openOn]=\"popoverOption.openOn\"\n [closeOn]=\"popoverOption.closeOn\"\n [target]=\"highlightBtn\"\n [placement]=\"popoverOption.placement\"\n >\n <div class=\"ax-overlay-pane\">\n <ax-color-palette (ngModelChange)=\"changeHighlightColorHandler($event)\" [ngModel]=\"selectedHighlightColor()\">\n <ax-color-palette-preview></ax-color-palette-preview>\n <ax-color-palette-picker></ax-color-palette-picker>\n <ax-color-palette-input></ax-color-palette-input>\n </ax-color-palette>\n </div>\n </ax-popover>\n }\n @if (config().fontSize) {\n <ax-select-box\n [look]=\"parent.look\"\n (ngModelChange)=\"fontHandler($event)\"\n [ngModel]=\"selectedFont()\"\n [dataSource]=\"['small', 'medium', 'large', 'huge']\"\n placeholder=\"Choose...\"\n >\n </ax-select-box>\n }\n @if (config().list) {\n <ax-button (click)=\"orderList()\" look=\"blank\" [selected]=\"listState() === 'ordered' ? true : false\">\n <ax-icon class=\"ax-icon ax-icon-order-list\"></ax-icon>\n </ax-button>\n\n <ax-button (click)=\"unOrderList()\" look=\"blank\" [selected]=\"listState() === 'bullet' ? true : false\">\n <ax-icon class=\"ax-icon ax-icon-un-order-list\"></ax-icon>\n </ax-button>\n }\n @if (config().alignment) {\n <ax-button look=\"blank\" #alignPop>\n <ax-icon class=\"ax-icon ax-icon-align-left\"></ax-icon>\n </ax-button>\n <ax-popover\n [openOn]=\"popoverOption.openOn\"\n [closeOn]=\"popoverOption.closeOn\"\n [target]=\"alignPop\"\n [placement]=\"popoverOption.placement\"\n >\n <div class=\"ax-overlay-pane\">\n <ax-button (click)=\"alignStateHandler('left')\" look=\"blank\" [selected]=\"alignState() === 'left' ? true : false\">\n <ax-icon class=\"ax-icon ax-icon-align-left\"></ax-icon>\n </ax-button>\n\n <ax-button (click)=\"alignStateHandler('center')\" look=\"blank\" [selected]=\"alignState() === 'center' ? true : false\">\n <ax-icon class=\"ax-icon ax-icon-align-center\"></ax-icon>\n </ax-button>\n\n <ax-button (click)=\"alignStateHandler('right')\" look=\"blank\" [selected]=\"alignState() === 'right' ? true : false\">\n <ax-icon class=\"ax-icon ax-icon-align-right\"></ax-icon>\n </ax-button>\n </div>\n </ax-popover>\n }\n @if (config().image) {\n <ax-button #linkBtn look=\"blank\">\n <ax-icon class=\"ax-icon ax-icon-image\"></ax-icon>\n </ax-button>\n\n <ax-popover\n [openOn]=\"popoverOption.openOn\"\n [closeOn]=\"popoverOption.closeOn\"\n [target]=\"linkBtn\"\n [placement]=\"popoverOption.placement\"\n >\n <ax-text-box class=\"{{ textBoxOptions.size }}\" [(ngModel)]=\"textBoxOptions.text\" [placeholder]=\"textBoxOptions.placeholder\">\n </ax-text-box>\n <ax-suffix>\n <ax-button (click)=\"submitLink()\" class=\"ax-sm\" color=\"secondary\" text=\"Add\"> </ax-button>\n </ax-suffix>\n </ax-popover>\n }\n\n <ng-content select=\"ax-suffix\"></ng-content>\n </div>\n</div>\n", styles: [".ax-wysiwyg-toolbar-container{padding:.5rem 1rem}.ax-wysiwyg-toolbar-container .ax-icon{font-weight:900;font-size:1rem}.ax-wysiwyg-toolbar-container .ax-wysiwyg-tool-container{overflow:hidden;display:flex;flex-wrap:wrap;justify-content:flex-start}.ax-wysiwyg-toolbar-container .ax-wysiwyg-tool-container ax-button{margin-inline:.1rem}.ax-wysiwyg-toolbar-container .ax-wysiwyg-tool-container ax-select-box{margin-inline:.5rem}.ax-wysiwyg-toolbar-container .ax-wysiwyg-tool-container ax-prefix,.ax-wysiwyg-toolbar-container .ax-wysiwyg-tool-container ax-suffix{margin-inline:.5rem}.ax-wysiwyg-toolbar-container ax-select-box{width:auto!important}\n"] }]
|
|
274
266
|
}], ctorParameters: () => [] });
|
|
275
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3lzaXd5Zy10b29sYmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy93eXNpd3lnL3NyYy9saWIvd3lzaXd5Zy93eXNpd3lnLXRvb2xiYXIvd3lzaXd5Zy10b29sYmFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy93eXNpd3lnL3NyYy9saWIvd3lzaXd5Zy93eXNpd3lnLXRvb2xiYXIvd3lzaXd5Zy10b29sYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckgsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7Ozs7Ozs7OztBQWlCdEQ7OztHQUdHO0FBT0gsTUFBTSxPQUFPLHlCQUF5QjtJQW1EcEMsY0FBYztJQUNkO1FBbkRBOzs7V0FHRztRQUNILGVBQVUsR0FBRyxNQUFNLEVBQWdCLENBQUM7UUFFcEMsY0FBYztRQUNkLFlBQU8sR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUVuQzs7OztXQUlHO1FBQ0gsV0FBTSxHQUFHLEtBQUssQ0FBYTtZQUN6QixJQUFJLEVBQUUsSUFBSTtZQUNWLElBQUksRUFBRSxJQUFJO1lBQ1YsSUFBSSxFQUFFLElBQUk7WUFDVixNQUFNLEVBQUUsSUFBSTtZQUNaLFNBQVMsRUFBRSxJQUFJO1lBQ2YsTUFBTSxFQUFFLElBQUk7WUFDWixLQUFLLEVBQUUsSUFBSTtZQUNYLFNBQVMsRUFBRSxJQUFJO1lBQ2YsUUFBUSxFQUFFLElBQUk7WUFDZCxJQUFJLEVBQUUsSUFBSTtZQUNWLFNBQVMsRUFBRSxJQUFJO1lBQ2YsS0FBSyxFQUFFLElBQUk7U0FDWixDQUFDLENBQUM7UUFFSCxjQUFjO1FBQ0osWUFBTyxHQUFHLE1BQU0sQ0FBbUIsSUFBSSxDQUFDLENBQUM7UUFDbkQsY0FBYztRQUNKLGNBQVMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDcEMsY0FBYztRQUNKLGdCQUFXLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RDLGNBQWM7UUFDSixtQkFBYyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6QyxjQUFjO1FBQ0osb0JBQWUsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUMsY0FBYztRQUNKLGNBQVMsR0FBRyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDakMsY0FBYztRQUNKLGVBQVUsR0FBRyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDbEMsY0FBYztRQUNKLGlCQUFZLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzFDLGNBQWM7UUFDSixrQkFBYSxHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ3ZELGNBQWM7UUFDSiwyQkFBc0IsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFrRmxELGNBQWM7UUFDSixrQkFBYSxHQU1uQjtZQUNGLE1BQU0sRUFBRSxPQUFPO1lBQ2YsT0FBTyxFQUFFLFVBQVU7WUFDbkIsU0FBUyxFQUFFLEtBQUs7WUFDaEIsT0FBTyxFQUFFLENBQUM7WUFDVixPQUFPLEVBQUUsQ0FBQztTQUNYLENBQUM7UUFFRixjQUFjO1FBQ2QsbUJBQWMsR0FBRztZQUNmLElBQUksRUFBRSxFQUFFO1lBQ1IsV0FBVyxFQUFFLG1CQUFtQjtZQUNoQyxJQUFJLEVBQUUsT0FBTztTQUNkLENBQUM7UUFsR0EsTUFBTSxDQUNKLEdBQUcsRUFBRTtZQUNILFFBQVEsSUFBSSxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsRUFBRSxFQUFFLENBQUM7Z0JBQy9DLEtBQUssU0FBUztvQkFDWixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO29CQUMvQixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztvQkFDOUIsTUFBTTtnQkFDUixLQUFLLFFBQVE7b0JBQ1gsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztvQkFDOUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7b0JBQzdCLE1BQU07Z0JBQ1I7b0JBQ0UsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztvQkFDeEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDM0IsQ0FBQztZQUVELFFBQVEsSUFBSSxDQUFDLE9BQU8sQ0FBQyx3QkFBd0IsRUFBRSxFQUFFLENBQUM7Z0JBQ2hELEtBQUssY0FBYztvQkFDakIsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQzlCLE1BQU07Z0JBQ1IsS0FBSyxlQUFlO29CQUNsQixJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztvQkFDL0IsTUFBTTtnQkFDUixLQUFLLGVBQWU7b0JBQ2xCLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO29CQUMvQixNQUFNO2dCQUNSO29CQUNFLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3BDLENBQUM7WUFFRCxRQUFRLElBQUksQ0FBQyxPQUFPLENBQUMsd0JBQXdCLEVBQUUsRUFBRSxDQUFDO2dCQUNoRCxLQUFLLGlCQUFpQjtvQkFDcEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7b0JBQzlCLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7b0JBQy9CLE1BQU07Z0JBQ1IsS0FBSyxnQkFBZ0I7b0JBQ25CLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO29CQUM3QixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO29CQUM5QixNQUFNO2dCQUNSO29CQUNFLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUM1QixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ2pDLENBQUM7WUFFRCxJQUFJLENBQUMsT0FBTyxDQUFDLHdCQUF3QixFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7Z0JBQ3ZELFFBQVEsSUFBSSxFQUFFLENBQUM7b0JBQ2IsS0FBSyxHQUFHO3dCQUNOLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7d0JBQy9CLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO3dCQUM5QixNQUFNO29CQUNSLEtBQUssR0FBRzt3QkFDTixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO3dCQUM1QixJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQzt3QkFDL0IsTUFBTTtvQkFDUixLQUFLLElBQUk7d0JBQ1AsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQzt3QkFDNUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7d0JBQzNCLE1BQU07b0JBQ1IsS0FBSyxRQUFRO3dCQUNYLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7d0JBQzFCLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO3dCQUN6QixNQUFNO29CQUVSO3dCQUNFLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTs0QkFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO3dCQUNoRCxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7NEJBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQzt3QkFDcEQsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFOzRCQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7d0JBQ3hELElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRTs0QkFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUM5RCxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLEVBQ0QsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsQ0FDNUIsQ0FBQztRQUNGLGVBQWUsQ0FBQyxHQUFHLEVBQUU7WUFDbkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQzNDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQXdCRCxjQUFjO0lBQ0osVUFBVTtRQUNsQixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVELGlCQUFpQjtJQUNQLGtCQUFrQixDQUFDLENBQVM7UUFDcEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUIsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRUQsY0FBYztJQUNKLDJCQUEyQixDQUFDLENBQVM7UUFDN0MsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRCxjQUFjO0lBQ0osV0FBVyxDQUFDLENBQU07UUFDMUIsSUFBSSxDQUFDLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqQyxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDN0IsQ0FBQztJQUNILENBQUM7SUFFRCxjQUFjO0lBQ0osSUFBSTtRQUNaLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMzQixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1QixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDMUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0IsQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNILEdBQUc7UUFDRCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQztZQUNuQixTQUFTLEVBQUUsSUFBSTtZQUNmLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsVUFBVSxFQUFFO1lBQzFDLGlCQUFpQixFQUFFLElBQUk7U0FDeEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGNBQWM7SUFDSixNQUFNO1FBQ2QsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzdCLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlCLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM1QixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM3QixDQUFDO0lBQ0gsQ0FBQztJQUVELGNBQWM7SUFDSixTQUFTO1FBQ2pCLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNoQyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqQyxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDL0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEMsQ0FBQztJQUNILENBQUM7SUFFRCxjQUFjO0lBQ0osU0FBUztRQUNqQixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUN2RCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQy9CLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2hDLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUN4QixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN6QixDQUFDO0lBQ0gsQ0FBQztJQUVELGNBQWM7SUFDSixXQUFXO1FBQ25CLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3hELElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDOUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDL0IsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3hCLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3pCLENBQUM7SUFDSCxDQUFDO0lBRUQsY0FBYztJQUNKLGlCQUFpQixDQUFDLENBQU07UUFDaEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkIsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRUQsY0FBYztJQUNKLElBQUk7UUFDWixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVELGNBQWM7SUFDSixJQUFJO1FBQ1osSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxjQUFjO0lBQ0osTUFBTTtRQUNkLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM3QixJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNsQyxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDNUIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakMsQ0FBQztJQUNILENBQUM7SUFFRCxjQUFjO0lBQ0osVUFBVTtRQUNsQixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ25DLENBQUM7OEdBblJVLHlCQUF5QjtrR0FBekIseUJBQXlCLHdPQy9CdEMsbzhLQTBJQTs7MkZEM0dhLHlCQUF5QjtrQkFOckMsU0FBUzsrQkFDRSxvQkFBb0IsaUJBR2YsaUJBQWlCLENBQUMsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYV3lzaXd5ZyB9IGZyb20gJ0BhY29yZXgvY2RrL3d5c2l3eWcnO1xuaW1wb3J0IHsgQVhDbGlja0V2ZW50LCBBWFBsYWNlbWVudCB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9jb21tb24nO1xuaW1wb3J0IHsgQVhQb3BvdmVyQ2xvc2VUcmlnZ2VyLCBBWFBvcG92ZXJPcGVuVHJpZ2dlciB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9wb3BvdmVyJztcbmltcG9ydCB7IENvbXBvbmVudCwgVmlld0VuY2Fwc3VsYXRpb24sIGFmdGVyTmV4dFJlbmRlciwgZWZmZWN0LCBpbmplY3QsIGlucHV0LCBvdXRwdXQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhXeXNpd3lnU2VydmljZSB9IGZyb20gJy4uL3d5c2l3eWcuc2VydmljZSc7XG5cbnR5cGUgQ29uZmlnVHlwZSA9IHtcbiAgYm9sZDogYm9vbGVhbjtcbiAgdW5kbzogYm9vbGVhbjtcbiAgcmVkbzogYm9vbGVhbjtcbiAgaXRhbGljOiBib29sZWFuO1xuICB1bmRlckxpbmU6IGJvb2xlYW47XG4gIHN0cmlrZTogYm9vbGVhbjtcbiAgY29sb3I6IGJvb2xlYW47XG4gIGhpZ2hsaWdodDogYm9vbGVhbjtcbiAgZm9udFNpemU6IGJvb2xlYW47XG4gIGxpc3Q6IGJvb2xlYW47XG4gIGFsaWdubWVudDogYm9vbGVhbjtcbiAgaW1hZ2U6IGJvb2xlYW47XG59O1xuXG4vKipcbiAqIEEgdG9vbGJhciBjb21wb25lbnQgZm9yIHRoZSBXWVNJV1lHIGVkaXRvciwgcHJvdmlkaW5nIHZhcmlvdXMgZm9ybWF0dGluZyBvcHRpb25zLlxuICogQGNhdGVnb3J5IENvbXBvbmVudHNcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXgtd3lzaXd5Zy10b29sYmFyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3d5c2l3eWctdG9vbGJhci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi93eXNpd3lnLXRvb2xiYXIuY29tcG9uZW50LnNjc3MnLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBBWFd5c2l3eWdUb29sYmFyQ29tcG9uZW50IHtcbiAgLyoqXG4gICAqICBSZXR1cm4gdXNlciBpbnB1dCBhcyBIVE1MLlxuICAgKiAgQGV2ZW50XG4gICAqL1xuICBvdXRwdXRIVE1MID0gb3V0cHV0PEFYQ2xpY2tFdmVudD4oKTtcblxuICAvKiogQGlnbm9yZSAqL1xuICBzZXJ2aWNlID0gaW5qZWN0KEFYV3lzaXd5Z1NlcnZpY2UpO1xuXG4gIC8qKlxuICAgKiBjb25maWcgd3lzaXd5ZyB0b29sYmFyLlxuICAgKlxuICAgKiBAZGVmYXVsdFZhbHVlICdidXR0b24nXG4gICAqL1xuICBjb25maWcgPSBpbnB1dDxDb25maWdUeXBlPih7XG4gICAgYm9sZDogdHJ1ZSxcbiAgICB1bmRvOiB0cnVlLFxuICAgIHJlZG86IHRydWUsXG4gICAgaXRhbGljOiB0cnVlLFxuICAgIHVuZGVyTGluZTogdHJ1ZSxcbiAgICBzdHJpa2U6IHRydWUsXG4gICAgY29sb3I6IHRydWUsXG4gICAgaGlnaGxpZ2h0OiB0cnVlLFxuICAgIGZvbnRTaXplOiB0cnVlLFxuICAgIGxpc3Q6IHRydWUsXG4gICAgYWxpZ25tZW50OiB0cnVlLFxuICAgIGltYWdlOiB0cnVlLFxuICB9KTtcblxuICAvKiogQGlnbm9yZSAqL1xuICBwcm90ZWN0ZWQgd3lzaXd5ZyA9IHNpZ25hbDxBWFd5c2l3eWcgfCBudWxsPihudWxsKTtcbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJvdGVjdGVkIGJvbGRTdGF0ZSA9IHNpZ25hbChmYWxzZSk7XG4gIC8qKiBAaWdub3JlICovXG4gIHByb3RlY3RlZCBpdGFsaWNTdGF0ZSA9IHNpZ25hbChmYWxzZSk7XG4gIC8qKiBAaWdub3JlICovXG4gIHByb3RlY3RlZCB1bmRlckxpbmVTdGF0ZSA9IHNpZ25hbChmYWxzZSk7XG4gIC8qKiBAaWdub3JlICovXG4gIHByb3RlY3RlZCBzdHJpa2VMaW5lU3RhdGUgPSBzaWduYWwoZmFsc2UpO1xuICAvKiogQGlnbm9yZSAqL1xuICBwcm90ZWN0ZWQgbGlzdFN0YXRlID0gc2lnbmFsKCcnKTtcbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJvdGVjdGVkIGFsaWduU3RhdGUgPSBzaWduYWwoJycpO1xuICAvKiogQGlnbm9yZSAqL1xuICBwcm90ZWN0ZWQgc2VsZWN0ZWRGb250ID0gc2lnbmFsKCdtZWRpdW0nKTtcbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJvdGVjdGVkIHNlbGVjdGVkQ29sb3IgPSBzaWduYWwoJ3JnYigyNDMsIDIzOCwgMjM4KScpO1xuICAvKiogQGlnbm9yZSAqL1xuICBwcm90ZWN0ZWQgc2VsZWN0ZWRIaWdobGlnaHRDb2xvciA9IHNpZ25hbCgnbm9uZScpO1xuXG4gIC8qKiBAaWdub3JlICovXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGVmZmVjdChcbiAgICAgICgpID0+IHtcbiAgICAgICAgc3dpdGNoICh0aGlzLnNlcnZpY2UuY3VycmVudFNlbGVjdGVkRWxlbUxpc3QoKSkge1xuICAgICAgICAgIGNhc2UgJ29yZGVyZWQnOlxuICAgICAgICAgICAgdGhpcy53eXNpd3lnKCkubGlzdCgnb3JkZXJlZCcpO1xuICAgICAgICAgICAgdGhpcy5saXN0U3RhdGUuc2V0KCdvcmRlcmVkJyk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdidWxsZXQnOlxuICAgICAgICAgICAgdGhpcy53eXNpd3lnKCkubGlzdCgnYnVsbGV0Jyk7XG4gICAgICAgICAgICB0aGlzLmxpc3RTdGF0ZS5zZXQoJ2J1bGxldCcpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHRoaXMud3lzaXd5ZygpLmxpc3QoJycpO1xuICAgICAgICAgICAgdGhpcy5saXN0U3RhdGUuc2V0KCcnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHN3aXRjaCAodGhpcy5zZXJ2aWNlLmN1cnJlbnRTZWxlY3RlZEVsZW1DbGFzcygpKSB7XG4gICAgICAgICAgY2FzZSAncWwtc2l6ZS1odWdlJzpcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRGb250LnNldCgnaHVnZScpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAncWwtc2l6ZS1sYXJnZSc6XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRm9udC5zZXQoJ2xhcmdlJyk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdxbC1zaXplLXNtYWxsJzpcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRGb250LnNldCgnc21hbGwnKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRm9udC5zZXQoJ21lZGl1bScpO1xuICAgICAgICB9XG5cbiAgICAgICAgc3dpdGNoICh0aGlzLnNlcnZpY2UuY3VycmVudFNlbGVjdGVkRWxlbUFsaWduKCkpIHtcbiAgICAgICAgICBjYXNlICdxbC1hbGlnbi1jZW50ZXInOlxuICAgICAgICAgICAgdGhpcy5hbGlnblN0YXRlLnNldCgnY2VudGVyJyk7XG4gICAgICAgICAgICB0aGlzLnd5c2l3eWcoKS5hbGlnbignY2VudGVyJyk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdxbC1hbGlnbi1yaWdodCc6XG4gICAgICAgICAgICB0aGlzLmFsaWduU3RhdGUuc2V0KCdyaWdodCcpO1xuICAgICAgICAgICAgdGhpcy53eXNpd3lnKCkuYWxpZ24oJ3JpZ2h0Jyk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgdGhpcy5hbGlnblN0YXRlLnNldCgnbGVmdCcpO1xuICAgICAgICAgICAgdGhpcy53eXNpd3lnKCkuYWxpZ24oJ2xlZnQnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2VydmljZS5jdXJyZW50U2VsZWN0ZWRFbGVtQXJyYXkoKS5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgc3dpdGNoIChpdGVtKSB7XG4gICAgICAgICAgICBjYXNlICdVJzpcbiAgICAgICAgICAgICAgdGhpcy53eXNpd3lnKCkudW5kZXJMaW5lKHRydWUpO1xuICAgICAgICAgICAgICB0aGlzLnVuZGVyTGluZVN0YXRlLnNldCh0cnVlKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdTJzpcbiAgICAgICAgICAgICAgdGhpcy53eXNpd3lnKCkuc3RyaWtlKHRydWUpO1xuICAgICAgICAgICAgICB0aGlzLnN0cmlrZUxpbmVTdGF0ZS5zZXQodHJ1ZSk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnRU0nOlxuICAgICAgICAgICAgICB0aGlzLnd5c2l3eWcoKS5pdGFsaWModHJ1ZSk7XG4gICAgICAgICAgICAgIHRoaXMuaXRhbGljU3RhdGUuc2V0KHRydWUpO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ1NUUk9ORyc6XG4gICAgICAgICAgICAgIHRoaXMud3lzaXd5ZygpLmJvbGQodHJ1ZSk7XG4gICAgICAgICAgICAgIHRoaXMuYm9sZFN0YXRlLnNldCh0cnVlKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgIGlmICh0aGlzLmJvbGRTdGF0ZSgpKSB0aGlzLnd5c2l3eWcoKS5ib2xkKHRydWUpO1xuICAgICAgICAgICAgICBpZiAodGhpcy5pdGFsaWNTdGF0ZSgpKSB0aGlzLnd5c2l3eWcoKS5pdGFsaWModHJ1ZSk7XG4gICAgICAgICAgICAgIGlmICh0aGlzLnN0cmlrZUxpbmVTdGF0ZSgpKSB0aGlzLnd5c2l3eWcoKS5zdHJpa2UodHJ1ZSk7XG4gICAgICAgICAgICAgIGlmICh0aGlzLnVuZGVyTGluZVN0YXRlKCkpIHRoaXMud3lzaXd5ZygpLnVuZGVyTGluZSh0cnVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICAgIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfSxcbiAgICApO1xuICAgIGFmdGVyTmV4dFJlbmRlcigoKSA9PiB7XG4gICAgICB0aGlzLnd5c2l3eWcuc2V0KHRoaXMuc2VydmljZS53eXNpd3lnKCkpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJvdGVjdGVkIHBvcG92ZXJPcHRpb246IHtcbiAgICBvcGVuT246IEFYUG9wb3Zlck9wZW5UcmlnZ2VyO1xuICAgIGNsb3NlT246IEFYUG9wb3ZlckNsb3NlVHJpZ2dlcjtcbiAgICBwbGFjZW1lbnQ6IEFYUGxhY2VtZW50O1xuICAgIG9mZnNldFg6IG51bWJlcjtcbiAgICBvZmZzZXRZOiBudW1iZXI7XG4gIH0gPSB7XG4gICAgb3Blbk9uOiAnY2xpY2snLFxuICAgIGNsb3NlT246ICdjbGlja091dCcsXG4gICAgcGxhY2VtZW50OiAndG9wJyxcbiAgICBvZmZzZXRYOiAwLFxuICAgIG9mZnNldFk6IDAsXG4gIH07XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgdGV4dEJveE9wdGlvbnMgPSB7XG4gICAgdGV4dDogJycsXG4gICAgcGxhY2Vob2xkZXI6ICdFbnRlciB5b3IgdXJsIC4uLicsXG4gICAgc2l6ZTogJ2F4LXNtJyxcbiAgfTtcblxuICAvKiogQGlnbm9yZSAqL1xuICBwcm90ZWN0ZWQgc3VibWl0TGluaygpIHtcbiAgICB0aGlzLnd5c2l3eWcoKS5hZGRJbWFnZSh0aGlzLnRleHRCb3hPcHRpb25zLnRleHQpO1xuICB9XG5cbiAgLy8gLyoqIEBpZ25vcmUgKi9cbiAgcHJvdGVjdGVkIGNoYW5nZUNvbG9ySGFuZGxlcihlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnNlbGVjdGVkQ29sb3Iuc2V0KGUpO1xuICAgIHRoaXMud3lzaXd5ZygpLmNvbG9yKGUpO1xuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJvdGVjdGVkIGNoYW5nZUhpZ2hsaWdodENvbG9ySGFuZGxlcihlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnNlbGVjdGVkSGlnaGxpZ2h0Q29sb3Iuc2V0KGUpO1xuICAgIHRoaXMud3lzaXd5ZygpLmJhY2tncm91bmQoZSk7XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBwcm90ZWN0ZWQgZm9udEhhbmRsZXIoZTogYW55KSB7XG4gICAgaWYgKGUgPT09ICdtZWRpdW0nKSB7XG4gICAgICB0aGlzLnd5c2l3eWcoKS5mb250U2l6ZShmYWxzZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud3lzaXd5ZygpLmZvbnRTaXplKGUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIHByb3RlY3RlZCBib2xkKCkge1xuICAgIGlmICh0aGlzLmJvbGRTdGF0ZSgpKSB7XG4gICAgICB0aGlzLnd5c2l3eWcoKS5ib2xkKGZhbHNlKTtcbiAgICAgIHRoaXMuYm9sZFN0YXRlLnNldChmYWxzZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud3lzaXd5ZygpLmJvbGQodHJ1ZSk7XG4gICAgICB0aGlzLmJvbGRTdGF0ZS5zZXQodHJ1ZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqICBlbWl0IGh0bWwgb3V0cHV0XG4gICAqL1xuICBvdXQoKSB7XG4gICAgdGhpcy5vdXRwdXRIVE1MLmVtaXQoe1xuICAgICAgY29tcG9uZW50OiB0aGlzLFxuICAgICAgZGF0YTogeyB2YWx1ZTogdGhpcy53eXNpd3lnKCkuSFRNTG91dHB1dCB9LFxuICAgICAgaXNVc2VySW50ZXJhY3Rpb246IHRydWUsXG4gICAgfSk7XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBwcm90ZWN0ZWQgaXRhbGljKCkge1xuICAgIGlmICh0aGlzLml0YWxpY1N0YXRlKCkpIHtcbiAgICAgIHRoaXMud3lzaXd5ZygpLml0YWxpYyhmYWxzZSk7XG4gICAgICB0aGlzLml0YWxpY1N0YXRlLnNldChmYWxzZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud3lzaXd5ZygpLml0YWxpYyh0cnVlKTtcbiAgICAgIHRoaXMuaXRhbGljU3RhdGUuc2V0KHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIHByb3RlY3RlZCB1bmRlckxpbmUoKSB7XG4gICAgaWYgKHRoaXMudW5kZXJMaW5lU3RhdGUoKSkge1xuICAgICAgdGhpcy53eXNpd3lnKCkudW5kZXJMaW5lKGZhbHNlKTtcbiAgICAgIHRoaXMudW5kZXJMaW5lU3RhdGUuc2V0KGZhbHNlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy53eXNpd3lnKCkudW5kZXJMaW5lKHRydWUpO1xuICAgICAgdGhpcy51bmRlckxpbmVTdGF0ZS5zZXQodHJ1ZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJvdGVjdGVkIG9yZGVyTGlzdCgpIHtcbiAgICBpZiAoIXRoaXMubGlzdFN0YXRlKCkgfHwgdGhpcy5saXN0U3RhdGUoKSA9PT0gJ2J1bGxldCcpIHtcbiAgICAgIHRoaXMud3lzaXd5ZygpLmxpc3QoJ29yZGVyZWQnKTtcbiAgICAgIHRoaXMubGlzdFN0YXRlLnNldCgnb3JkZXJlZCcpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnd5c2l3eWcoKS5saXN0KCcnKTtcbiAgICAgIHRoaXMubGlzdFN0YXRlLnNldCgnJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJvdGVjdGVkIHVuT3JkZXJMaXN0KCkge1xuICAgIGlmICghdGhpcy5saXN0U3RhdGUoKSB8fCB0aGlzLmxpc3RTdGF0ZSgpID09PSAnb3JkZXJlZCcpIHtcbiAgICAgIHRoaXMud3lzaXd5ZygpLmxpc3QoJ2J1bGxldCcpO1xuICAgICAgdGhpcy5saXN0U3RhdGUuc2V0KCdidWxsZXQnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy53eXNpd3lnKCkubGlzdCgnJyk7XG4gICAgICB0aGlzLmxpc3RTdGF0ZS5zZXQoJycpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIHByb3RlY3RlZCBhbGlnblN0YXRlSGFuZGxlcihlOiBhbnkpIHtcbiAgICB0aGlzLmFsaWduU3RhdGUuc2V0KGUpO1xuICAgIHRoaXMud3lzaXd5ZygpLmFsaWduKGUpO1xuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJvdGVjdGVkIHVuZG8oKSB7XG4gICAgdGhpcy53eXNpd3lnKCkudW5kbygpO1xuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJvdGVjdGVkIHJlZG8oKSB7XG4gICAgdGhpcy53eXNpd3lnKCkucmVkbygpO1xuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJvdGVjdGVkIHN0cmlrZSgpIHtcbiAgICBpZiAodGhpcy5zdHJpa2VMaW5lU3RhdGUoKSkge1xuICAgICAgdGhpcy53eXNpd3lnKCkuc3RyaWtlKGZhbHNlKTtcbiAgICAgIHRoaXMuc3RyaWtlTGluZVN0YXRlLnNldChmYWxzZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud3lzaXd5ZygpLnN0cmlrZSh0cnVlKTtcbiAgICAgIHRoaXMuc3RyaWtlTGluZVN0YXRlLnNldCh0cnVlKTtcbiAgICB9XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBwcm90ZWN0ZWQgYmFja2dyb3VuZCgpIHtcbiAgICB0aGlzLnd5c2l3eWcoKS5iYWNrZ3JvdW5kKCdyZWQnKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImF4LXd5c2l3eWctdG9vbGJhci1jb250YWluZXIgYXgtc21cIj5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiYXgtcHJlZml4XCI+PC9uZy1jb250ZW50PlxuXG4gIDxkaXYgY2xhc3M9XCJheC13eXNpd3lnLXRvb2wtY29udGFpbmVyXCI+XG4gICAgQGlmIChjb25maWcoKS51bmRvKSB7XG4gICAgICA8YXgtYnV0dG9uIGNsYXNzPVwiXCIgKGNsaWNrKT1cInVuZG8oKVwiIGxvb2s9XCJibGFua1wiPlxuICAgICAgICA8YXgtaWNvbiBjbGFzcz1cImF4LWljb24gYXgtaWNvbi11bmRvXCI+PC9heC1pY29uPlxuICAgICAgPC9heC1idXR0b24+XG4gICAgfVxuXG4gICAgQGlmIChjb25maWcoKS5yZWRvKSB7XG4gICAgICA8YXgtYnV0dG9uIGNsYXNzPVwiXCIgKGNsaWNrKT1cInJlZG8oKVwiIGxvb2s9XCJibGFua1wiPlxuICAgICAgICA8YXgtaWNvbiBjbGFzcz1cImF4LWljb24gYXgtaWNvbi1yZWRvXCI+PC9heC1pY29uPlxuICAgICAgPC9heC1idXR0b24+XG4gICAgfVxuICAgIEBpZiAoY29uZmlnKCkuYm9sZCkge1xuICAgICAgPGF4LWJ1dHRvbiAoY2xpY2spPVwiYm9sZCgpXCIgbG9vaz1cImJsYW5rXCIgW3NlbGVjdGVkXT1cImJvbGRTdGF0ZSgpID8gdHJ1ZSA6IGZhbHNlXCI+XG4gICAgICAgIDxheC1pY29uIGNsYXNzPVwiYXgtaWNvbiBheC1pY29uLWJvbGRcIj48L2F4LWljb24+XG4gICAgICA8L2F4LWJ1dHRvbj5cbiAgICB9XG4gICAgQGlmIChjb25maWcoKS5pdGFsaWMpIHtcbiAgICAgIDxheC1idXR0b24gKGNsaWNrKT1cIml0YWxpYygpXCIgbG9vaz1cImJsYW5rXCIgW3NlbGVjdGVkXT1cIml0YWxpY1N0YXRlKCkgPyB0cnVlIDogZmFsc2VcIj5cbiAgICAgICAgPGF4LWljb24gY2xhc3M9XCJheC1pY29uIGF4LWljb24taXRhbGljXCI+PC9heC1pY29uPlxuICAgICAgPC9heC1idXR0b24+XG4gICAgfVxuICAgIEBpZiAoY29uZmlnKCkudW5kZXJMaW5lKSB7XG4gICAgICA8YXgtYnV0dG9uIChjbGljayk9XCJ1bmRlckxpbmUoKVwiIGxvb2s9XCJibGFua1wiIFtzZWxlY3RlZF09XCJ1bmRlckxpbmVTdGF0ZSgpID8gdHJ1ZSA6IGZhbHNlXCI+XG4gICAgICAgIDxheC1pY29uIGNsYXNzPVwiYXgtaWNvbiBheC1pY29uLXVuZGVyLWxpbmVcIj48L2F4LWljb24+XG4gICAgICA8L2F4LWJ1dHRvbj5cbiAgICB9XG4gICAgQGlmIChjb25maWcoKS5zdHJpa2UpIHtcbiAgICAgIDxheC1idXR0b24gKGNsaWNrKT1cInN0cmlrZSgpXCIgbG9vaz1cImJsYW5rXCIgW3NlbGVjdGVkXT1cInN0cmlrZUxpbmVTdGF0ZSgpID8gdHJ1ZSA6IGZhbHNlXCI+XG4gICAgICAgIDxheC1pY29uIGNsYXNzPVwiYXgtaWNvbiBheC1pY29uLXN0cmlrZVwiPjwvYXgtaWNvbj5cbiAgICAgIDwvYXgtYnV0dG9uPlxuICAgIH1cbiAgICBAaWYgKGNvbmZpZygpLmNvbG9yKSB7XG4gICAgICA8YXgtYnV0dG9uICNjb2xvckJ0biBsb29rPVwiYmxhbmtcIj5cbiAgICAgICAgPGF4LWljb24gY2xhc3M9XCJheC1pY29uIGF4LWljb24tY29sb3ItcGFsZXR0ZVwiPjwvYXgtaWNvbj5cbiAgICAgIDwvYXgtYnV0dG9uPlxuICAgICAgPGF4LXBvcG92ZXJcbiAgICAgICAgW29wZW5Pbl09XCJwb3BvdmVyT3B0aW9uLm9wZW5PblwiXG4gICAgICAgIFtjbG9zZU9uXT1cInBvcG92ZXJPcHRpb24uY2xvc2VPblwiXG4gICAgICAgIFt0YXJnZXRdPVwiY29sb3JCdG5cIlxuICAgICAgICBbcGxhY2VtZW50XT1cInBvcG92ZXJPcHRpb24ucGxhY2VtZW50XCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cImF4LW92ZXJsYXktcGFuZVwiPlxuICAgICAgICAgIDxheC1jb2xvci1wYWxldHRlIChuZ01vZGVsQ2hhbmdlKT1cImNoYW5nZUNvbG9ySGFuZGxlcigkZXZlbnQpXCIgW25nTW9kZWxdPVwic2VsZWN0ZWRDb2xvcigpXCI+XG4gICAgICAgICAgICA8YXgtY29sb3ItcGFsZXR0ZS1wcmV2aWV3PjwvYXgtY29sb3ItcGFsZXR0ZS1wcmV2aWV3PlxuICAgICAgICAgICAgPGF4LWNvbG9yLXBhbGV0dGUtcGlja2VyPjwvYXgtY29sb3ItcGFsZXR0ZS1waWNrZXI+XG4gICAgICAgICAgICA8YXgtY29sb3ItcGFsZXR0ZS1pbnB1dD48L2F4LWNvbG9yLXBhbGV0dGUtaW5wdXQ+XG4gICAgICAgICAgPC9heC1jb2xvci1wYWxldHRlPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvYXgtcG9wb3Zlcj5cbiAgICB9XG4gICAgQGlmIChjb25maWcoKS5oaWdobGlnaHQpIHtcbiAgICAgIDxheC1idXR0b24gI2hpZ2hsaWdodEJ0biBsb29rPVwiYmxhbmtcIj5cbiAgICAgICAgPGF4LWljb24gY2xhc3M9XCJheC1pY29uIGF4LWljb24taGlnaGxpZ2h0XCI+PC9heC1pY29uPlxuICAgICAgPC9heC1idXR0b24+XG4gICAgICA8YXgtcG9wb3ZlclxuICAgICAgICBbb3Blbk9uXT1cInBvcG92ZXJPcHRpb24ub3Blbk9uXCJcbiAgICAgICAgW2Nsb3NlT25dPVwicG9wb3Zlck9wdGlvbi5jbG9zZU9uXCJcbiAgICAgICAgW3RhcmdldF09XCJoaWdobGlnaHRCdG5cIlxuICAgICAgICBbcGxhY2VtZW50XT1cInBvcG92ZXJPcHRpb24ucGxhY2VtZW50XCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cImF4LW92ZXJsYXktcGFuZVwiPlxuICAgICAgICAgIDxheC1jb2xvci1wYWxldHRlIChuZ01vZGVsQ2hhbmdlKT1cImNoYW5nZUhpZ2hsaWdodENvbG9ySGFuZGxlcigkZXZlbnQpXCIgW25nTW9kZWxdPVwic2VsZWN0ZWRIaWdobGlnaHRDb2xvcigpXCI+XG4gICAgICAgICAgICA8YXgtY29sb3ItcGFsZXR0ZS1wcmV2aWV3PjwvYXgtY29sb3ItcGFsZXR0ZS1wcmV2aWV3PlxuICAgICAgICAgICAgPGF4LWNvbG9yLXBhbGV0dGUtcGlja2VyPjwvYXgtY29sb3ItcGFsZXR0ZS1waWNrZXI+XG4gICAgICAgICAgICA8YXgtY29sb3ItcGFsZXR0ZS1pbnB1dD48L2F4LWNvbG9yLXBhbGV0dGUtaW5wdXQ+XG4gICAgICAgICAgPC9heC1jb2xvci1wYWxldHRlPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvYXgtcG9wb3Zlcj5cbiAgICB9XG4gICAgQGlmIChjb25maWcoKS5mb250U2l6ZSkge1xuICAgICAgPGF4LXNlbGVjdC1ib3hcbiAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiZm9udEhhbmRsZXIoJGV2ZW50KVwiXG4gICAgICAgIFtuZ01vZGVsXT1cInNlbGVjdGVkRm9udCgpXCJcbiAgICAgICAgW2RhdGFTb3VyY2VdPVwiWydzbWFsbCcsICdtZWRpdW0nLCAnbGFyZ2UnLCAnaHVnZSddXCJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCJDaG9vc2UuLi5cIlxuICAgICAgPlxuICAgICAgPC9heC1zZWxlY3QtYm94PlxuICAgIH1cbiAgICBAaWYgKGNvbmZpZygpLmxpc3QpIHtcbiAgICAgIDxheC1idXR0b24gKGNsaWNrKT1cIm9yZGVyTGlzdCgpXCIgbG9vaz1cImJsYW5rXCIgW3NlbGVjdGVkXT1cImxpc3RTdGF0ZSgpID09PSAnb3JkZXJlZCcgPyB0cnVlIDogZmFsc2VcIj5cbiAgICAgICAgPGF4LWljb24gY2xhc3M9XCJheC1pY29uIGF4LWljb24tb3JkZXItbGlzdFwiPjwvYXgtaWNvbj5cbiAgICAgIDwvYXgtYnV0dG9uPlxuXG4gICAgICA8YXgtYnV0dG9uIChjbGljayk9XCJ1bk9yZGVyTGlzdCgpXCIgbG9vaz1cImJsYW5rXCIgW3NlbGVjdGVkXT1cImxpc3RTdGF0ZSgpID09PSAnYnVsbGV0JyA/IHRydWUgOiBmYWxzZVwiPlxuICAgICAgICA8YXgtaWNvbiBjbGFzcz1cImF4LWljb24gYXgtaWNvbi11bi1vcmRlci1saXN0XCI+PC9heC1pY29uPlxuICAgICAgPC9heC1idXR0b24+XG4gICAgfVxuICAgIEBpZiAoY29uZmlnKCkuYWxpZ25tZW50KSB7XG4gICAgICA8YXgtYnV0dG9uIGxvb2s9XCJibGFua1wiICNhbGlnblBvcD5cbiAgICAgICAgPGF4LWljb24gY2xhc3M9XCJheC1pY29uIGF4LWljb24tYWxpZ24tbGVmdFwiPjwvYXgtaWNvbj5cbiAgICAgIDwvYXgtYnV0dG9uPlxuICAgICAgPGF4LXBvcG92ZXJcbiAgICAgICAgW29wZW5Pbl09XCJwb3BvdmVyT3B0aW9uLm9wZW5PblwiXG4gICAgICAgIFtjbG9zZU9uXT1cInBvcG92ZXJPcHRpb24uY2xvc2VPblwiXG4gICAgICAgIFt0YXJnZXRdPVwiYWxpZ25Qb3BcIlxuICAgICAgICBbcGxhY2VtZW50XT1cInBvcG92ZXJPcHRpb24ucGxhY2VtZW50XCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cImF4LW92ZXJsYXktcGFuZVwiPlxuICAgICAgICAgIDxheC1idXR0b24gKGNsaWNrKT1cImFsaWduU3RhdGVIYW5kbGVyKCdsZWZ0JylcIiBsb29rPVwiYmxhbmtcIiBbc2VsZWN0ZWRdPVwiYWxpZ25TdGF0ZSgpID09PSAnbGVmdCcgPyB0cnVlIDogZmFsc2VcIj5cbiAgICAgICAgICAgIDxheC1pY29uIGNsYXNzPVwiYXgtaWNvbiBheC1pY29uLWFsaWduLWxlZnRcIj48L2F4LWljb24+XG4gICAgICAgICAgPC9heC1idXR0b24+XG5cbiAgICAgICAgICA8YXgtYnV0dG9uIChjbGljayk9XCJhbGlnblN0YXRlSGFuZGxlcignY2VudGVyJylcIiBsb29rPVwiYmxhbmtcIiBbc2VsZWN0ZWRdPVwiYWxpZ25TdGF0ZSgpID09PSAnY2VudGVyJyA/IHRydWUgOiBmYWxzZVwiPlxuICAgICAgICAgICAgPGF4LWljb24gY2xhc3M9XCJheC1pY29uIGF4LWljb24tYWxpZ24tY2VudGVyXCI+PC9heC1pY29uPlxuICAgICAgICAgIDwvYXgtYnV0dG9uPlxuXG4gICAgICAgICAgPGF4LWJ1dHRvbiAoY2xpY2spPVwiYWxpZ25TdGF0ZUhhbmRsZXIoJ3JpZ2h0JylcIiBsb29rPVwiYmxhbmtcIiBbc2VsZWN0ZWRdPVwiYWxpZ25TdGF0ZSgpID09PSAncmlnaHQnID8gdHJ1ZSA6IGZhbHNlXCI+XG4gICAgICAgICAgICA8YXgtaWNvbiBjbGFzcz1cImF4LWljb24gYXgtaWNvbi1hbGlnbi1yaWdodFwiPjwvYXgtaWNvbj5cbiAgICAgICAgICA8L2F4LWJ1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2F4LXBvcG92ZXI+XG4gICAgfVxuICAgIEBpZiAoY29uZmlnKCkuaW1hZ2UpIHtcbiAgICAgIDxheC1idXR0b24gI2xpbmtCdG4gbG9vaz1cImJsYW5rXCI+XG4gICAgICAgIDxheC1pY29uIGNsYXNzPVwiYXgtaWNvbiBheC1pY29uLWltYWdlXCI+PC9heC1pY29uPlxuICAgICAgPC9heC1idXR0b24+XG5cbiAgICAgIDxheC1wb3BvdmVyXG4gICAgICAgIFtvcGVuT25dPVwicG9wb3Zlck9wdGlvbi5vcGVuT25cIlxuICAgICAgICBbY2xvc2VPbl09XCJwb3BvdmVyT3B0aW9uLmNsb3NlT25cIlxuICAgICAgICBbdGFyZ2V0XT1cImxpbmtCdG5cIlxuICAgICAgICBbcGxhY2VtZW50XT1cInBvcG92ZXJPcHRpb24ucGxhY2VtZW50XCJcbiAgICAgID5cbiAgICAgICAgPGF4LXRleHQtYm94IGNsYXNzPVwie3sgdGV4dEJveE9wdGlvbnMuc2l6ZSB9fVwiIFsobmdNb2RlbCldPVwidGV4dEJveE9wdGlvbnMudGV4dFwiIFtwbGFjZWhvbGRlcl09XCJ0ZXh0Qm94T3B0aW9ucy5wbGFjZWhvbGRlclwiPlxuICAgICAgICA8L2F4LXRleHQtYm94PlxuICAgICAgICA8YXgtc3VmZml4PlxuICAgICAgICAgIDxheC1idXR0b24gKGNsaWNrKT1cInN1Ym1pdExpbmsoKVwiIGNsYXNzPVwiYXgtc21cIiBjb2xvcj1cInNlY29uZGFyeVwiIHRleHQ9XCJBZGRcIj4gPC9heC1idXR0b24+XG4gICAgICAgIDwvYXgtc3VmZml4PlxuICAgICAgPC9heC1wb3BvdmVyPlxuICAgIH1cbiAgPC9kaXY+XG5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiYXgtc3VmZml4XCI+PC9uZy1jb250ZW50PlxuPC9kaXY+XG4iXX0=
|
|
267
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3lzaXd5Zy10b29sYmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy93eXNpd3lnL3NyYy9saWIvd3lzaXd5Zy93eXNpd3lnLXRvb2xiYXIvd3lzaXd5Zy10b29sYmFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy93eXNpd3lnL3NyYy9saWIvd3lzaXd5Zy93eXNpd3lnLXRvb2xiYXIvd3lzaXd5Zy10b29sYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckgsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDL0YsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7Ozs7Ozs7OztBQWlCdEQ7OztHQUdHO0FBT0gsTUFBTSxPQUFPLHlCQUF5QjtJQThEcEMsY0FBYztJQUNkO1FBOURBLFdBQU0sR0FBRyxNQUFNLENBQUMsMkJBQTJCLENBQUMsQ0FBQztRQUU3Qzs7O1dBR0c7UUFDSCxlQUFVLEdBQUcsTUFBTSxFQUFnQixDQUFDO1FBRXBDLGNBQWM7UUFDZCxZQUFPLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFFbkM7Ozs7V0FJRztRQUNILFdBQU0sR0FBRyxLQUFLLENBQWE7WUFDekIsSUFBSSxFQUFFLElBQUk7WUFDVixJQUFJLEVBQUUsSUFBSTtZQUNWLElBQUksRUFBRSxJQUFJO1lBQ1YsTUFBTSxFQUFFLElBQUk7WUFDWixTQUFTLEVBQUUsSUFBSTtZQUNmLE1BQU0sRUFBRSxJQUFJO1lBQ1osS0FBSyxF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QUVELGNBQWM7SUFDSixVQUFVO1FBQ2xCLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbkMsQ0FBQzs4R0FuUlUseUJBQXlCO2tHQUF6Qix5QkFBeUIsd09DaEN0Qyx3K0tBMklBOzsyRkQzR2EseUJBQXlCO2tCQU5yQyxTQUFTOytCQUNFLG9CQUFvQixpQkFHZixpQkFBaUIsQ0FBQyxJQUFJIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhXeXNpd3lnIH0gZnJvbSAnQGFjb3JleC9jZGsvd3lzaXd5Zyc7XG5pbXBvcnQgeyBBWENsaWNrRXZlbnQsIEFYUGxhY2VtZW50IH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2NvbW1vbic7XG5pbXBvcnQgeyBBWFBvcG92ZXJDbG9zZVRyaWdnZXIsIEFYUG9wb3Zlck9wZW5UcmlnZ2VyIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3BvcG92ZXInO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBWaWV3RW5jYXBzdWxhdGlvbiwgYWZ0ZXJOZXh0UmVuZGVyLCBlZmZlY3QsIGluamVjdCwgaW5wdXQsIG91dHB1dCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWFd5c2l3eWdDb250YWluZXJDb21wb25lbnQgfSBmcm9tICcuLi93eXNpd3lnLWNvbnRhaW5lci93eXNpd3lnLWNvbnRhaW5lci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQVhXeXNpd3lnU2VydmljZSB9IGZyb20gJy4uL3d5c2l3eWcuc2VydmljZSc7XG5cbnR5cGUgQ29uZmlnVHlwZSA9IHtcbiAgYm9sZDogYm9vbGVhbjtcbiAgdW5kbzogYm9vbGVhbjtcbiAgcmVkbzogYm9vbGVhbjtcbiAgaXRhbGljOiBib29sZWFuO1xuICB1bmRlckxpbmU6IGJvb2xlYW47XG4gIHN0cmlrZTogYm9vbGVhbjtcbiAgY29sb3I6IGJvb2xlYW47XG4gIGhpZ2hsaWdodDogYm9vbGVhbjtcbiAgZm9udFNpemU6IGJvb2xlYW47XG4gIGxpc3Q6IGJvb2xlYW47XG4gIGFsaWdubWVudDogYm9vbGVhbjtcbiAgaW1hZ2U6IGJvb2xlYW47XG59O1xuXG4vKipcbiAqIEEgdG9vbGJhciBjb21wb25lbnQgZm9yIHRoZSBXWVNJV1lHIGVkaXRvciwgcHJvdmlkaW5nIHZhcmlvdXMgZm9ybWF0dGluZyBvcHRpb25zLlxuICogQGNhdGVnb3J5IENvbXBvbmVudHNcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXgtd3lzaXd5Zy10b29sYmFyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3d5c2l3eWctdG9vbGJhci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi93eXNpd3lnLXRvb2xiYXIuY29tcG9uZW50LnNjc3MnLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBBWFd5c2l3eWdUb29sYmFyQ29tcG9uZW50IHtcbiAgcGFyZW50ID0gaW5qZWN0KEFYV3lzaXd5Z0NvbnRhaW5lckNvbXBvbmVudCk7XG5cbiAgLyoqXG4gICAqICBSZXR1cm4gdXNlciBpbnB1dCBhcyBIVE1MLlxuICAgKiAgQGV2ZW50XG4gICAqL1xuICBvdXRwdXRIVE1MID0gb3V0cHV0PEFYQ2xpY2tFdmVudD4oKTtcblxuICAvKiogQGlnbm9yZSAqL1xuICBzZXJ2aWNlID0gaW5qZWN0KEFYV3lzaXd5Z1NlcnZpY2UpO1xuXG4gIC8qKlxuICAgKiBjb25maWcgd3lzaXd5ZyB0b29sYmFyLlxuICAgKlxuICAgKiBAZGVmYXVsdFZhbHVlICdidXR0b24nXG4gICAqL1xuICBjb25maWcgPSBpbnB1dDxDb25maWdUeXBlPih7XG4gICAgYm9sZDogdHJ1ZSxcbiAgICB1bmRvOiB0cnVlLFxuICAgIHJlZG86IHRydWUsXG4gICAgaXRhbGljOiB0cnVlLFxuICAgIHVuZGVyTGluZTogdHJ1ZSxcbiAgICBzdHJpa2U6IHRydWUsXG4gICAgY29sb3I6IHRydWUsXG4gICAgaGlnaGxpZ2h0OiB0cnVlLFxuICAgIGZvbnRTaXplOiB0cnVlLFxuICAgIGxpc3Q6IHRydWUsXG4gICAgYWxpZ25tZW50OiB0cnVlLFxuICAgIGltYWdlOiB0cnVlLFxuICB9KTtcblxuICAvKiogQGlnbm9yZSAqL1xuICBwcm90ZWN0ZWQgd3lzaXd5ZyA9IHNpZ25hbDxBWFd5c2l3eWcgfCBudWxsPihudWxsKTtcblxuICAvKiogQGlnbm9yZSAqL1xuICBwcm90ZWN0ZWQgYm9sZFN0YXRlID0gc2lnbmFsKGZhbHNlKTtcblxuICAvKiogQGlnbm9yZSAqL1xuICBwcm90ZWN0ZWQgaXRhbGljU3RhdGUgPSBzaWduYWwoZmFsc2UpO1xuXG4gIC8qKiBAaWdub3JlICovXG4gIHByb3RlY3RlZCB1bmRlckxpbmVTdGF0ZSA9IHNpZ25hbChmYWxzZSk7XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJvdGVjdGVkIHN0cmlrZUxpbmVTdGF0ZSA9IHNpZ25hbChmYWxzZSk7XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJvdGVjdGVkIGxpc3RTdGF0ZSA9IHNpZ25hbCgnJyk7XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJvdGVjdGVkIGFsaWduU3RhdGUgPSBzaWduYWwoJycpO1xuXG4gIC8qKiBAaWdub3JlICovXG4gIHByb3RlY3RlZCBzZWxlY3RlZEZvbnQgPSBzaWduYWwoJ21lZGl1bScpO1xuXG4gIC8qKiBAaWdub3JlICovXG4gIHByb3RlY3RlZCBzZWxlY3RlZENvbG9yID0gc2lnbmFsKCdyZ2IoMTUxLCAxNDgsIDE0OCknKTtcblxuICAvKiogQGlnbm9yZSAqL1xuICBwcm90ZWN0ZWQgc2VsZWN0ZWRIaWdobGlnaHRDb2xvciA9IHNpZ25hbCgncmdiYSgyNDMsIDIzOCwgMjM4LDApJyk7XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgZWZmZWN0KFxuICAgICAgKCkgPT4ge1xuICAgICAgICBzd2l0Y2ggKHRoaXMuc2VydmljZS5jdXJyZW50U2VsZWN0ZWRFbGVtTGlzdCgpKSB7XG4gICAgICAgICAgY2FzZSAnb3JkZXJlZCc6XG4gICAgICAgICAgICB0aGlzLnd5c2l3eWcoKS5saXN0KCdvcmRlcmVkJyk7XG4gICAgICAgICAgICB0aGlzLmxpc3RTdGF0ZS5zZXQoJ29yZGVyZWQnKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ2J1bGxldCc6XG4gICAgICAgICAgICB0aGlzLnd5c2l3eWcoKS5saXN0KCdidWxsZXQnKTtcbiAgICAgICAgICAgIHRoaXMubGlzdFN0YXRlLnNldCgnYnVsbGV0Jyk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgdGhpcy53eXNpd3lnKCkubGlzdCgnJyk7XG4gICAgICAgICAgICB0aGlzLmxpc3RTdGF0ZS5zZXQoJycpO1xuICAgICAgICB9XG5cbiAgICAgICAgc3dpdGNoICh0aGlzLnNlcnZpY2UuY3VycmVudFNlbGVjdGVkRWxlbUNsYXNzKCkpIHtcbiAgICAgICAgICBjYXNlICdxbC1zaXplLWh1Z2UnOlxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEZvbnQuc2V0KCdodWdlJyk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdxbC1zaXplLWxhcmdlJzpcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRGb250LnNldCgnbGFyZ2UnKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ3FsLXNpemUtc21hbGwnOlxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEZvbnQuc2V0KCdzbWFsbCcpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRGb250LnNldCgnbWVkaXVtJyk7XG4gICAgICAgIH1cblxuICAgICAgICBzd2l0Y2ggKHRoaXMuc2VydmljZS5jdXJyZW50U2VsZWN0ZWRFbGVtQWxpZ24oKSkge1xuICAgICAgICAgIGNhc2UgJ3FsLWFsaWduLWNlbnRlcic6XG4gICAgICAgICAgICB0aGlzLmFsaWduU3RhdGUuc2V0KCdjZW50ZXInKTtcbiAgICAgICAgICAgIHRoaXMud3lzaXd5ZygpLmFsaWduKCdjZW50ZXInKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ3FsLWFsaWduLXJpZ2h0JzpcbiAgICAgICAgICAgIHRoaXMuYWxpZ25TdGF0ZS5zZXQoJ3JpZ2h0Jyk7XG4gICAgICAgICAgICB0aGlzLnd5c2l3eWcoKS5hbGlnbigncmlnaHQnKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICB0aGlzLmFsaWduU3RhdGUuc2V0KCdsZWZ0Jyk7XG4gICAgICAgICAgICB0aGlzLnd5c2l3eWcoKS5hbGlnbignbGVmdCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zZXJ2aWNlLmN1cnJlbnRTZWxlY3RlZEVsZW1BcnJheSgpLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICBzd2l0Y2ggKGl0ZW0pIHtcbiAgICAgICAgICAgIGNhc2UgJ1UnOlxuICAgICAgICAgICAgICB0aGlzLnd5c2l3eWcoKS51bmRlckxpbmUodHJ1ZSk7XG4gICAgICAgICAgICAgIHRoaXMudW5kZXJMaW5lU3RhdGUuc2V0KHRydWUpO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ1MnOlxuICAgICAgICAgICAgICB0aGlzLnd5c2l3eWcoKS5zdHJpa2UodHJ1ZSk7XG4gICAgICAgICAgICAgIHRoaXMuc3RyaWtlTGluZVN0YXRlLnNldCh0cnVlKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdFTSc6XG4gICAgICAgICAgICAgIHRoaXMud3lzaXd5ZygpLml0YWxpYyh0cnVlKTtcbiAgICAgICAgICAgICAgdGhpcy5pdGFsaWNTdGF0ZS5zZXQodHJ1ZSk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnU1RST05HJzpcbiAgICAgICAgICAgICAgdGhpcy53eXNpd3lnKCkuYm9sZCh0cnVlKTtcbiAgICAgICAgICAgICAgdGhpcy5ib2xkU3RhdGUuc2V0KHRydWUpO1xuICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgaWYgKHRoaXMuYm9sZFN0YXRlKCkpIHRoaXMud3lzaXd5ZygpLmJvbGQodHJ1ZSk7XG4gICAgICAgICAgICAgIGlmICh0aGlzLml0YWxpY1N0YXRlKCkpIHRoaXMud3lzaXd5ZygpLml0YWxpYyh0cnVlKTtcbiAgICAgICAgICAgICAgaWYgKHRoaXMuc3RyaWtlTGluZVN0YXRlKCkpIHRoaXMud3lzaXd5ZygpLnN0cmlrZSh0cnVlKTtcbiAgICAgICAgICAgICAgaWYgKHRoaXMudW5kZXJMaW5lU3RhdGUoKSkgdGhpcy53eXNpd3lnKCkudW5kZXJMaW5lKHRydWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgICAgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9LFxuICAgICk7XG4gICAgYWZ0ZXJOZXh0UmVuZGVyKCgpID0+IHtcbiAgICAgIHRoaXMud3lzaXd5Zy5zZXQodGhpcy5zZXJ2aWNlLnd5c2l3eWcoKSk7XG4gICAgfSk7XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBwcm90ZWN0ZWQgcG9wb3Zlck9wdGlvbjoge1xuICAgIG9wZW5PbjogQVhQb3BvdmVyT3BlblRyaWdnZXI7XG4gICAgY2xvc2VPbjogQVhQb3BvdmVyQ2xvc2VUcmlnZ2VyO1xuICAgIHBsYWNlbWVudDogQVhQbGFjZW1lbnQ7XG4gICAgb2Zmc2V0WDogbnVtYmVyO1xuICAgIG9mZnNldFk6IG51bWJlcjtcbiAgfSA9IHtcbiAgICBvcGVuT246ICdjbGljaycsXG4gICAgY2xvc2VPbjogJ2NsaWNrT3V0JyxcbiAgICBwbGFjZW1lbnQ6ICd0b3AnLFxuICAgIG9mZnNldFg6IDAsXG4gICAgb2Zmc2V0WTogMCxcbiAgfTtcblxuICAvKiogQGlnbm9yZSAqL1xuICB0ZXh0Qm94T3B0aW9ucyA9IHtcbiAgICB0ZXh0OiAnJyxcbiAgICBwbGFjZWhvbGRlcjogJ0VudGVyIHlvciB1cmwgLi4uJyxcbiAgICBzaXplOiAnYXgtc20nLFxuICB9O1xuXG4gIC8qKiBAaWdub3JlICovXG4gIHByb3RlY3RlZCBzdWJtaXRMaW5rKCkge1xuICAgIHRoaXMud3lzaXd5ZygpLmFkZEltYWdlKHRoaXMudGV4dEJveE9wdGlvbnMudGV4dCk7XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBwcm90ZWN0ZWQgY2hhbmdlQ29sb3JIYW5kbGVyKGU6IHN0cmluZykge1xuICAgIHRoaXMuc2VsZWN0ZWRDb2xvci5zZXQoZSk7XG4gICAgdGhpcy53eXNpd3lnKCkuY29sb3IoZSk7XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBwcm90ZWN0ZWQgY2hhbmdlSGlnaGxpZ2h0Q29sb3JIYW5kbGVyKGU6IHN0cmluZykge1xuICAgIHRoaXMuc2VsZWN0ZWRIaWdobGlnaHRDb2xvci5zZXQoZSk7XG4gICAgdGhpcy53eXNpd3lnKCkuYmFja2dyb3VuZChlKTtcbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIHByb3RlY3RlZCBmb250SGFuZGxlcihlOiBhbnkpIHtcbiAgICBpZiAoZSA9PT0gJ21lZGl1bScpIHtcbiAgICAgIHRoaXMud3lzaXd5ZygpLmZvbnRTaXplKGZhbHNlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy53eXNpd3lnKCkuZm9udFNpemUoZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJvdGVjdGVkIGJvbGQoKSB7XG4gICAgaWYgKHRoaXMuYm9sZFN0YXRlKCkpIHtcbiAgICAgIHRoaXMud3lzaXd5ZygpLmJvbGQoZmFsc2UpO1xuICAgICAgdGhpcy5ib2xkU3RhdGUuc2V0KGZhbHNlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy53eXNpd3lnKCkuYm9sZCh0cnVlKTtcbiAgICAgIHRoaXMuYm9sZFN0YXRlLnNldCh0cnVlKTtcbiAgICB9XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBwcm90ZWN0ZWQgaXRhbGljKCkge1xuICAgIGlmICh0aGlzLml0YWxpY1N0YXRlKCkpIHtcbiAgICAgIHRoaXMud3lzaXd5ZygpLml0YWxpYyhmYWxzZSk7XG4gICAgICB0aGlzLml0YWxpY1N0YXRlLnNldChmYWxzZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud3lzaXd5ZygpLml0YWxpYyh0cnVlKTtcbiAgICAgIHRoaXMuaXRhbGljU3RhdGUuc2V0KHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIHByb3RlY3RlZCB1bmRlckxpbmUoKSB7XG4gICAgaWYgKHRoaXMudW5kZXJMaW5lU3RhdGUoKSkge1xuICAgICAgdGhpcy53eXNpd3lnKCkudW5kZXJMaW5lKGZhbHNlKTtcbiAgICAgIHRoaXMudW5kZXJMaW5lU3RhdGUuc2V0KGZhbHNlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy53eXNpd3lnKCkudW5kZXJMaW5lKHRydWUpO1xuICAgICAgdGhpcy51bmRlckxpbmVTdGF0ZS5zZXQodHJ1ZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJvdGVjdGVkIG9yZGVyTGlzdCgpIHtcbiAgICBpZiAoIXRoaXMubGlzdFN0YXRlKCkgfHwgdGhpcy5saXN0U3RhdGUoKSA9PT0gJ2J1bGxldCcpIHtcbiAgICAgIHRoaXMud3lzaXd5ZygpLmxpc3QoJ29yZGVyZWQnKTtcbiAgICAgIHRoaXMubGlzdFN0YXRlLnNldCgnb3JkZXJlZCcpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnd5c2l3eWcoKS5saXN0KCcnKTtcbiAgICAgIHRoaXMubGlzdFN0YXRlLnNldCgnJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJvdGVjdGVkIHVuT3JkZXJMaXN0KCkge1xuICAgIGlmICghdGhpcy5saXN0U3RhdGUoKSB8fCB0aGlzLmxpc3RTdGF0ZSgpID09PSAnb3JkZXJlZCcpIHtcbiAgICAgIHRoaXMud3lzaXd5ZygpLmxpc3QoJ2J1bGxldCcpO1xuICAgICAgdGhpcy5saXN0U3RhdGUuc2V0KCdidWxsZXQnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy53eXNpd3lnKCkubGlzdCgnJyk7XG4gICAgICB0aGlzLmxpc3RTdGF0ZS5zZXQoJycpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIHByb3RlY3RlZCBhbGlnblN0YXRlSGFuZGxlcihlOiBhbnkpIHtcbiAgICB0aGlzLmFsaWduU3RhdGUuc2V0KGUpO1xuICAgIHRoaXMud3lzaXd5ZygpLmFsaWduKGUpO1xuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJvdGVjdGVkIHVuZG8oKSB7XG4gICAgdGhpcy53eXNpd3lnKCkudW5kbygpO1xuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJvdGVjdGVkIHJlZG8oKSB7XG4gICAgdGhpcy53eXNpd3lnKCkucmVkbygpO1xuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJvdGVjdGVkIHN0cmlrZSgpIHtcbiAgICBpZiAodGhpcy5zdHJpa2VMaW5lU3RhdGUoKSkge1xuICAgICAgdGhpcy53eXNpd3lnKCkuc3RyaWtlKGZhbHNlKTtcbiAgICAgIHRoaXMuc3RyaWtlTGluZVN0YXRlLnNldChmYWxzZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud3lzaXd5ZygpLnN0cmlrZSh0cnVlKTtcbiAgICAgIHRoaXMuc3RyaWtlTGluZVN0YXRlLnNldCh0cnVlKTtcbiAgICB9XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBwcm90ZWN0ZWQgYmFja2dyb3VuZCgpIHtcbiAgICB0aGlzLnd5c2l3eWcoKS5iYWNrZ3JvdW5kKCdyZWQnKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImF4LXd5c2l3eWctdG9vbGJhci1jb250YWluZXIgYXgtc21cIj5cbiAgPGRpdiBjbGFzcz1cImF4LXd5c2l3eWctdG9vbC1jb250YWluZXJcIj5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJheC1wcmVmaXhcIj48L25nLWNvbnRlbnQ+XG5cbiAgICBAaWYgKGNvbmZpZygpLnVuZG8pIHtcbiAgICAgIDxheC1idXR0b24gY2xhc3M9XCJcIiAoY2xpY2spPVwidW5kbygpXCIgbG9vaz1cImJsYW5rXCI+XG4gICAgICAgIDxheC1pY29uIGNsYXNzPVwiYXgtaWNvbiBheC1pY29uLXVuZG9cIj48L2F4LWljb24+XG4gICAgICA8L2F4LWJ1dHRvbj5cbiAgICB9XG5cbiAgICBAaWYgKGNvbmZpZygpLnJlZG8pIHtcbiAgICAgIDxheC1idXR0b24gY2xhc3M9XCJcIiAoY2xpY2spPVwicmVkbygpXCIgbG9vaz1cImJsYW5rXCI+XG4gICAgICAgIDxheC1pY29uIGNsYXNzPVwiYXgtaWNvbiBheC1pY29uLXJlZG9cIj48L2F4LWljb24+XG4gICAgICA8L2F4LWJ1dHRvbj5cbiAgICB9XG4gICAgQGlmIChjb25maWcoKS5ib2xkKSB7XG4gICAgICA8YXgtYnV0dG9uIChjbGljayk9XCJib2xkKClcIiBsb29rPVwiYmxhbmtcIiBbc2VsZWN0ZWRdPVwiYm9sZFN0YXRlKCkgPyB0cnVlIDogZmFsc2VcIj5cbiAgICAgICAgPGF4LWljb24gY2xhc3M9XCJheC1pY29uIGF4LWljb24tYm9sZFwiPjwvYXgtaWNvbj5cbiAgICAgIDwvYXgtYnV0dG9uPlxuICAgIH1cbiAgICBAaWYgKGNvbmZpZygpLml0YWxpYykge1xuICAgICAgPGF4LWJ1dHRvbiAoY2xpY2spPVwiaXRhbGljKClcIiBsb29rPVwiYmxhbmtcIiBbc2VsZWN0ZWRdPVwiaXRhbGljU3RhdGUoKSA/IHRydWUgOiBmYWxzZVwiPlxuICAgICAgICA8YXgtaWNvbiBjbGFzcz1cImF4LWljb24gYXgtaWNvbi1pdGFsaWNcIj48L2F4LWljb24+XG4gICAgICA8L2F4LWJ1dHRvbj5cbiAgICB9XG4gICAgQGlmIChjb25maWcoKS51bmRlckxpbmUpIHtcbiAgICAgIDxheC1idXR0b24gKGNsaWNrKT1cInVuZGVyTGluZSgpXCIgbG9vaz1cImJsYW5rXCIgW3NlbGVjdGVkXT1cInVuZGVyTGluZVN0YXRlKCkgPyB0cnVlIDogZmFsc2VcIj5cbiAgICAgICAgPGF4LWljb24gY2xhc3M9XCJheC1pY29uIGF4LWljb24tdW5kZXItbGluZVwiPjwvYXgtaWNvbj5cbiAgICAgIDwvYXgtYnV0dG9uPlxuICAgIH1cbiAgICBAaWYgKGNvbmZpZygpLnN0cmlrZSkge1xuICAgICAgPGF4LWJ1dHRvbiAoY2xpY2spPVwic3RyaWtlKClcIiBsb29rPVwiYmxhbmtcIiBbc2VsZWN0ZWRdPVwic3RyaWtlTGluZVN0YXRlKCkgPyB0cnVlIDogZmFsc2VcIj5cbiAgICAgICAgPGF4LWljb24gY2xhc3M9XCJheC1pY29uIGF4LWljb24tc3RyaWtlXCI+PC9heC1pY29uPlxuICAgICAgPC9heC1idXR0b24+XG4gICAgfVxuICAgIEBpZiAoY29uZmlnKCkuY29sb3IpIHtcbiAgICAgIDxheC1idXR0b24gI2NvbG9yQnRuIGxvb2s9XCJibGFua1wiPlxuICAgICAgICA8YXgtaWNvbiBjbGFzcz1cImF4LWljb24gYXgtaWNvbi1jb2xvci1wYWxldHRlXCI+PC9heC1pY29uPlxuICAgICAgPC9heC1idXR0b24+XG4gICAgICA8YXgtcG9wb3ZlclxuICAgICAgICBbb3Blbk9uXT1cInBvcG92ZXJPcHRpb24ub3Blbk9uXCJcbiAgICAgICAgW2Nsb3NlT25dPVwicG9wb3Zlck9wdGlvbi5jbG9zZU9uXCJcbiAgICAgICAgW3RhcmdldF09XCJjb2xvckJ0blwiXG4gICAgICAgIFtwbGFjZW1lbnRdPVwicG9wb3Zlck9wdGlvbi5wbGFjZW1lbnRcIlxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtb3ZlcmxheS1wYW5lXCI+XG4gICAgICAgICAgPGF4LWNvbG9yLXBhbGV0dGUgKG5nTW9kZWxDaGFuZ2UpPVwiY2hhbmdlQ29sb3JIYW5kbGVyKCRldmVudClcIiBbbmdNb2RlbF09XCJzZWxlY3RlZENvbG9yKClcIj5cbiAgICAgICAgICAgIDxheC1jb2xvci1wYWxldHRlLXByZXZpZXc+PC9heC1jb2xvci1wYWxldHRlLXByZXZpZXc+XG4gICAgICAgICAgICA8YXgtY29sb3ItcGFsZXR0ZS1waWNrZXI+PC9heC1jb2xvci1wYWxldHRlLXBpY2tlcj5cbiAgICAgICAgICAgIDxheC1jb2xvci1wYWxldHRlLWlucHV0PjwvYXgtY29sb3ItcGFsZXR0ZS1pbnB1dD5cbiAgICAgICAgICA8L2F4LWNvbG9yLXBhbGV0dGU+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9heC1wb3BvdmVyPlxuICAgIH1cbiAgICBAaWYgKGNvbmZpZygpLmhpZ2hsaWdodCkge1xuICAgICAgPGF4LWJ1dHRvbiAjaGlnaGxpZ2h0QnRuIGxvb2s9XCJibGFua1wiPlxuICAgICAgICA8YXgtaWNvbiBjbGFzcz1cImF4LWljb24gYXgtaWNvbi1oaWdobGlnaHRcIj48L2F4LWljb24+XG4gICAgICA8L2F4LWJ1dHRvbj5cbiAgICAgIDxheC1wb3BvdmVyXG4gICAgICAgIFtvcGVuT25dPVwicG9wb3Zlck9wdGlvbi5vcGVuT25cIlxuICAgICAgICBbY2xvc2VPbl09XCJwb3BvdmVyT3B0aW9uLmNsb3NlT25cIlxuICAgICAgICBbdGFyZ2V0XT1cImhpZ2hsaWdodEJ0blwiXG4gICAgICAgIFtwbGFjZW1lbnRdPVwicG9wb3Zlck9wdGlvbi5wbGFjZW1lbnRcIlxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtb3ZlcmxheS1wYW5lXCI+XG4gICAgICAgICAgPGF4LWNvbG9yLXBhbGV0dGUgKG5nTW9kZWxDaGFuZ2UpPVwiY2hhbmdlSGlnaGxpZ2h0Q29sb3JIYW5kbGVyKCRldmVudClcIiBbbmdNb2RlbF09XCJzZWxlY3RlZEhpZ2hsaWdodENvbG9yKClcIj5cbiAgICAgICAgICAgIDxheC1jb2xvci1wYWxldHRlLXByZXZpZXc+PC9heC1jb2xvci1wYWxldHRlLXByZXZpZXc+XG4gICAgICAgICAgICA8YXgtY29sb3ItcGFsZXR0ZS1waWNrZXI+PC9heC1jb2xvci1wYWxldHRlLXBpY2tlcj5cbiAgICAgICAgICAgIDxheC1jb2xvci1wYWxldHRlLWlucHV0PjwvYXgtY29sb3ItcGFsZXR0ZS1pbnB1dD5cbiAgICAgICAgICA8L2F4LWNvbG9yLXBhbGV0dGU+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9heC1wb3BvdmVyPlxuICAgIH1cbiAgICBAaWYgKGNvbmZpZygpLmZvbnRTaXplKSB7XG4gICAgICA8YXgtc2VsZWN0LWJveFxuICAgICAgICBbbG9va109XCJwYXJlbnQubG9va1wiXG4gICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImZvbnRIYW5kbGVyKCRldmVudClcIlxuICAgICAgICBbbmdNb2RlbF09XCJzZWxlY3RlZEZvbnQoKVwiXG4gICAgICAgIFtkYXRhU291cmNlXT1cIlsnc21hbGwnLCAnbWVkaXVtJywgJ2xhcmdlJywgJ2h1Z2UnXVwiXG4gICAgICAgIHBsYWNlaG9sZGVyPVwiQ2hvb3NlLi4uXCJcbiAgICAgID5cbiAgICAgIDwvYXgtc2VsZWN0LWJveD5cbiAgICB9XG4gICAgQGlmIChjb25maWcoKS5saXN0KSB7XG4gICAgICA8YXgtYnV0dG9uIChjbGljayk9XCJvcmRlckxpc3QoKVwiIGxvb2s9XCJibGFua1wiIFtzZWxlY3RlZF09XCJsaXN0U3RhdGUoKSA9PT0gJ29yZGVyZWQnID8gdHJ1ZSA6IGZhbHNlXCI+XG4gICAgICAgIDxheC1pY29uIGNsYXNzPVwiYXgtaWNvbiBheC1pY29uLW9yZGVyLWxpc3RcIj48L2F4LWljb24+XG4gICAgICA8L2F4LWJ1dHRvbj5cblxuICAgICAgPGF4LWJ1dHRvbiAoY2xpY2spPVwidW5PcmRlckxpc3QoKVwiIGxvb2s9XCJibGFua1wiIFtzZWxlY3RlZF09XCJsaXN0U3RhdGUoKSA9PT0gJ2J1bGxldCcgPyB0cnVlIDogZmFsc2VcIj5cbiAgICAgICAgPGF4LWljb24gY2xhc3M9XCJheC1pY29uIGF4LWljb24tdW4tb3JkZXItbGlzdFwiPjwvYXgtaWNvbj5cbiAgICAgIDwvYXgtYnV0dG9uPlxuICAgIH1cbiAgICBAaWYgKGNvbmZpZygpLmFsaWdubWVudCkge1xuICAgICAgPGF4LWJ1dHRvbiBsb29rPVwiYmxhbmtcIiAjYWxpZ25Qb3A+XG4gICAgICAgIDxheC1pY29uIGNsYXNzPVwiYXgtaWNvbiBheC1pY29uLWFsaWduLWxlZnRcIj48L2F4LWljb24+XG4gICAgICA8L2F4LWJ1dHRvbj5cbiAgICAgIDxheC1wb3BvdmVyXG4gICAgICAgIFtvcGVuT25dPVwicG9wb3Zlck9wdGlvbi5vcGVuT25cIlxuICAgICAgICBbY2xvc2VPbl09XCJwb3BvdmVyT3B0aW9uLmNsb3NlT25cIlxuICAgICAgICBbdGFyZ2V0XT1cImFsaWduUG9wXCJcbiAgICAgICAgW3BsYWNlbWVudF09XCJwb3BvdmVyT3B0aW9uLnBsYWNlbWVudFwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJheC1vdmVybGF5LXBhbmVcIj5cbiAgICAgICAgICA8YXgtYnV0dG9uIChjbGljayk9XCJhbGlnblN0YXRlSGFuZGxlcignbGVmdCcpXCIgbG9vaz1cImJsYW5rXCIgW3NlbGVjdGVkXT1cImFsaWduU3RhdGUoKSA9PT0gJ2xlZnQnID8gdHJ1ZSA6IGZhbHNlXCI+XG4gICAgICAgICAgICA8YXgtaWNvbiBjbGFzcz1cImF4LWljb24gYXgtaWNvbi1hbGlnbi1sZWZ0XCI+PC9heC1pY29uPlxuICAgICAgICAgIDwvYXgtYnV0dG9uPlxuXG4gICAgICAgICAgPGF4LWJ1dHRvbiAoY2xpY2spPVwiYWxpZ25TdGF0ZUhhbmRsZXIoJ2NlbnRlcicpXCIgbG9vaz1cImJsYW5rXCIgW3NlbGVjdGVkXT1cImFsaWduU3RhdGUoKSA9PT0gJ2NlbnRlcicgPyB0cnVlIDogZmFsc2VcIj5cbiAgICAgICAgICAgIDxheC1pY29uIGNsYXNzPVwiYXgtaWNvbiBheC1pY29uLWFsaWduLWNlbnRlclwiPjwvYXgtaWNvbj5cbiAgICAgICAgICA8L2F4LWJ1dHRvbj5cblxuICAgICAgICAgIDxheC1idXR0b24gKGNsaWNrKT1cImFsaWduU3RhdGVIYW5kbGVyKCdyaWdodCcpXCIgbG9vaz1cImJsYW5rXCIgW3NlbGVjdGVkXT1cImFsaWduU3RhdGUoKSA9PT0gJ3JpZ2h0JyA/IHRydWUgOiBmYWxzZVwiPlxuICAgICAgICAgICAgPGF4LWljb24gY2xhc3M9XCJheC1pY29uIGF4LWljb24tYWxpZ24tcmlnaHRcIj48L2F4LWljb24+XG4gICAgICAgICAgPC9heC1idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9heC1wb3BvdmVyPlxuICAgIH1cbiAgICBAaWYgKGNvbmZpZygpLmltYWdlKSB7XG4gICAgICA8YXgtYnV0dG9uICNsaW5rQnRuIGxvb2s9XCJibGFua1wiPlxuICAgICAgICA8YXgtaWNvbiBjbGFzcz1cImF4LWljb24gYXgtaWNvbi1pbWFnZVwiPjwvYXgtaWNvbj5cbiAgICAgIDwvYXgtYnV0dG9uPlxuXG4gICAgICA8YXgtcG9wb3ZlclxuICAgICAgICBbb3Blbk9uXT1cInBvcG92ZXJPcHRpb24ub3Blbk9uXCJcbiAgICAgICAgW2Nsb3NlT25dPVwicG9wb3Zlck9wdGlvbi5jbG9zZU9uXCJcbiAgICAgICAgW3RhcmdldF09XCJsaW5rQnRuXCJcbiAgICAgICAgW3BsYWNlbWVudF09XCJwb3BvdmVyT3B0aW9uLnBsYWNlbWVudFwiXG4gICAgICA+XG4gICAgICAgIDxheC10ZXh0LWJveCBjbGFzcz1cInt7IHRleHRCb3hPcHRpb25zLnNpemUgfX1cIiBbKG5nTW9kZWwpXT1cInRleHRCb3hPcHRpb25zLnRleHRcIiBbcGxhY2Vob2xkZXJdPVwidGV4dEJveE9wdGlvbnMucGxhY2Vob2xkZXJcIj5cbiAgICAgICAgPC9heC10ZXh0LWJveD5cbiAgICAgICAgPGF4LXN1ZmZpeD5cbiAgICAgICAgICA8YXgtYnV0dG9uIChjbGljayk9XCJzdWJtaXRMaW5rKClcIiBjbGFzcz1cImF4LXNtXCIgY29sb3I9XCJzZWNvbmRhcnlcIiB0ZXh0PVwiQWRkXCI+IDwvYXgtYnV0dG9uPlxuICAgICAgICA8L2F4LXN1ZmZpeD5cbiAgICAgIDwvYXgtcG9wb3Zlcj5cbiAgICB9XG5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJheC1zdWZmaXhcIj48L25nLWNvbnRlbnQ+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
@@ -9,6 +9,11 @@ import { AXButtonModule } from '@acorex/components/button';
|
|
|
9
9
|
import { AXDecoratorModule } from '@acorex/components/decorators';
|
|
10
10
|
import { AXSkeletonModule } from '@acorex/components/skeleton';
|
|
11
11
|
|
|
12
|
+
/**
|
|
13
|
+
* Displays and interacts with audio waveform visualization.
|
|
14
|
+
*
|
|
15
|
+
* @category Components
|
|
16
|
+
*/
|
|
12
17
|
class AXAudioWaveComponent {
|
|
13
18
|
/**
|
|
14
19
|
* @ignore
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-components-audio-wave.mjs","sources":["../../../../libs/components/audio-wave/src/lib/audio-wave.component.ts","../../../../libs/components/audio-wave/src/lib/audio-wave.component.html","../../../../libs/components/audio-wave/src/lib/audio-wave.module.ts","../../../../libs/components/audio-wave/src/acorex-components-audio-wave.ts"],"sourcesContent":["import {\n Component,\n ElementRef,\n InputSignal,\n NgZone,\n ViewChild,\n ViewEncapsulation,\n afterNextRender,\n inject,\n input,\n output,\n signal,\n} from '@angular/core';\nimport WaveSurfer from 'wavesurfer.js';\nimport { AXAudioWaveChangeEvent, AXWaveConfig } from './interfaces/audio-wave.interface';\n\n@Component({\n selector: 'ax-audio-wave',\n templateUrl: './audio-wave.component.html',\n styleUrls: ['./audio-wave.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class AXAudioWaveComponent {\n /**\n * @ignore\n */\n @ViewChild('d', { static: false }) protected div: ElementRef<HTMLDivElement>;\n\n /**\n * Configuration settings for the audio wave.\n */\n config: InputSignal<AXWaveConfig> = input<AXWaveConfig>();\n\n /**\n * Emits an event when the status of the audio wave changes.\n *\n * @event\n */\n onStatusChanged = output<AXAudioWaveChangeEvent>();\n\n audioState = signal<'playing' | 'paused' | 'loading' | 'ready' | 'error'>('paused');\n\n errorMessage = signal('');\n\n /**\n * @ignore\n */\n protected audio: WaveSurfer;\n\n /**\n * @ignore\n */\n private ngZone = inject(NgZone);\n\n /**\n * @ignore\n */\n constructor() {\n afterNextRender(() => {\n const primary200 = getComputedStyle(document.body).getPropertyValue('--ax-color-primary-200');\n const primary700 = getComputedStyle(document.body).getPropertyValue('--ax-color-primary-700');\n\n this.audio = WaveSurfer.create({\n container: this.div.nativeElement,\n waveColor: this.config()?.waveColor || `rgba(${primary200})`,\n progressColor: this.config()?.progressColor || `rgba(${primary700})`,\n url: this.config()?.url || '',\n barWidth: this.config()?.barWidth || 2,\n barRadius: this.config()?.barRadius || 2,\n barGap: this.config()?.barGap || 2,\n height: this.config()?.height || 36,\n });\n this.load();\n this.audio?.on('loading', () => {\n this.audioState.set('loading');\n });\n this.audio?.on('ready', () => {\n this.audioState.set('ready');\n });\n this.audio?.on('error', (e) => {\n this.errorMessage.set(e?.message);\n this.audioState.set('error');\n });\n this.bindEvents();\n });\n }\n\n /**\n * Loads the audio from the specified URL.\n *\n * @param url - The URL of the audio to load. Defaults to the URL from the config.\n */\n load(url = this.config().url) {\n this.audio.load(url);\n }\n\n /**\n * Plays the audio.\n *\n */\n play(): Promise<any> {\n return this.audio?.play();\n }\n\n /**\n * Pauses the audio.\n */\n pause(): void {\n this.audio?.pause();\n }\n\n /**\n * Retrieves the duration of the audio.\n *\n */\n getDuration() {\n return this.audio?.getDuration() ?? 0;\n }\n\n /**\n * Retrieves the media element of the audio.\n *\n */\n getMediaElement() {\n return this.audio?.getMediaElement();\n }\n\n /**\n * Sets the playback rate of the audio.\n *\n * @param rate - The playback rate to set.\n */\n setRate(rate: number) {\n this.audio.setPlaybackRate(rate);\n }\n\n /**\n * @ignore\n */\n protected bindEvents() {\n this.handleLoad();\n this.handleLoading();\n this.handleDecode();\n this.handleReady();\n this.handleRedRawComplete();\n this.handlePlay();\n this.handlePause();\n this.handleFinish();\n this.handleTimeUpdate();\n this.handleSeeking();\n this.handleInteraction();\n this.handleClick();\n this.handleDrag();\n this.handleScroll();\n this.handleZoom();\n this.handleDestroy();\n this.handleError();\n }\n /** When audio starts loading */\n protected handleLoad() {\n this.audio?.on('load', (url) => {\n this.ngZone.run(() => {\n this.onStatusChanged.emit({ component: this, data: { url: url }, status: 'load', isUserInteraction: false });\n });\n });\n }\n\n /** During audio loading */\n protected handleLoading() {\n this.audio?.on('loading', (percent) => {\n this.ngZone.run(() => {\n this.onStatusChanged.emit({ component: this, data: { percent: percent }, status: 'loading', isUserInteraction: false });\n });\n });\n }\n\n /** When the audio has been decoded */\n protected handleDecode() {\n this.audio?.on('decode', (duration) => {\n this.ngZone.run(() => {\n this.onStatusChanged.emit({ component: this, data: { duration: duration }, status: 'decode', isUserInteraction: false });\n });\n });\n }\n\n /** When the audio is both decoded and can play */\n protected handleReady() {\n this.audio?.on('ready', (duration) => {\n this.ngZone.run(() => {\n this.onStatusChanged.emit({ component: this, data: { duration: duration }, status: 'ready', isUserInteraction: false });\n });\n });\n }\n\n /** When all audio channel chunks of the waveform have drawn */\n protected handleRedRawComplete() {\n this.audio?.on('redrawcomplete', () => {\n this.ngZone.run(() => {\n this.onStatusChanged.emit({ component: this, data: null, status: 'redrawcomplete', isUserInteraction: false });\n });\n });\n }\n\n /** When the audio starts playing */\n protected handlePlay() {\n this.audio?.on('play', () => {\n this.ngZone.run(() => {\n this.onStatusChanged.emit({ component: this, data: null, status: 'play', isUserInteraction: false });\n });\n });\n }\n\n /** When the audio pauses */\n protected handlePause() {\n this.audio?.on('pause', () => {\n this.ngZone.run(() => {\n this.onStatusChanged.emit({ component: this, data: null, status: 'pause', isUserInteraction: false });\n });\n });\n }\n\n /** When the audio finishes playing */\n protected handleFinish() {\n this.audio?.on('finish', () => {\n this.ngZone.run(() => {\n this.onStatusChanged.emit({ component: this, data: null, status: 'finish', isUserInteraction: false });\n });\n });\n }\n\n /** On audio position change, fires continuously during playback */\n protected handleTimeUpdate() {\n this.audio?.on('timeupdate', (currentTime) => {\n this.ngZone.run(() => {\n this.onStatusChanged.emit({ component: this, data: { currentTime: currentTime }, status: 'timeupdate', isUserInteraction: false });\n });\n });\n }\n\n /** When the user seeks to a new position */\n protected handleSeeking() {\n this.audio?.on('seeking', (currentTime) => {\n this.ngZone.run(() => {\n this.onStatusChanged.emit({ component: this, data: { currentTime: currentTime }, status: 'seeking', isUserInteraction: false });\n });\n });\n }\n\n /** When the user interacts with the waveform (i.g. clicks or drags on it) */\n protected handleInteraction() {\n this.audio?.on('interaction', (newTime) => {\n this.ngZone.run(() => {\n this.onStatusChanged.emit({ component: this, data: { newTime: newTime }, status: 'interaction', isUserInteraction: false });\n });\n });\n }\n\n /** When the user clicks on the waveform */\n protected handleClick() {\n this.audio?.on('click', (relativeX) => {\n this.ngZone.run(() => {\n this.onStatusChanged.emit({ component: this, data: { relativeX: relativeX }, status: 'click', isUserInteraction: false });\n });\n });\n }\n\n /** When the user drags the cursor */\n protected handleDrag() {\n this.audio?.on('drag', (relativeX) => {\n this.ngZone.run(() => {\n this.onStatusChanged.emit({ component: this, data: { relativeX: relativeX }, status: 'drag', isUserInteraction: false });\n });\n });\n }\n\n /** When the waveform is scrolled (panned) */\n protected handleScroll() {\n this.audio?.on('scroll', (visibleStartTime, visibleEndTime) => {\n this.ngZone.run(() => {\n this.onStatusChanged.emit({\n component: this,\n data: { visibleStartTime, visibleEndTime },\n status: 'scroll',\n isUserInteraction: false,\n });\n });\n });\n }\n\n /** When the zoom level changes */\n protected handleZoom() {\n this.audio?.on('zoom', (minPxPerSec) => {\n this.ngZone.run(() => {\n this.onStatusChanged.emit({ component: this, data: { minPxPerSec: minPxPerSec }, status: 'zoom', isUserInteraction: false });\n });\n });\n }\n\n /** Just before the waveform is destroyed so you can clean up your events */\n protected handleDestroy() {\n this.audio?.on('destroy', () => {\n this.ngZone.run(() => {\n this.onStatusChanged.emit({ component: this, data: null, status: 'destroy', isUserInteraction: false });\n });\n });\n }\n /** Just before the waveform is destroyed so you can clean up your events */\n protected handleError() {\n this.audio?.on('error', (e) => {\n this.ngZone.run(() => {\n this.onStatusChanged.emit({ component: this, data: e, status: 'error', isUserInteraction: false });\n });\n });\n }\n}\n","<div class=\"ax-audio-wave\" #d [ngStyle]=\"{'display': audioState() === 'ready' ? 'block' : 'none' }\"></div>\n\n@switch (audioState()) {\n@case ('loading') {\n<div class=\"ax-audio-skeleton\"></div>\n}\n@case ('error') {\n<div class=\"ax-wave-message\">\n {{'error.message' | translate:{ params:{ message: errorMessage() } } | async }}\n</div>\n}\n}","import { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXSkeletonModule } from '@acorex/components/skeleton';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { AXAudioWaveComponent } from './audio-wave.component';\n\n@NgModule({\n declarations: [AXAudioWaveComponent],\n exports: [AXAudioWaveComponent],\n imports: [CommonModule, AXButtonModule, AXDecoratorModule, AXSkeletonModule, AXTranslationModule],\n})\nexport class AXAudioWaveModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;MAsBa,oBAAoB,CAAA;AAgC/B;;AAEG;AACH,IAAA,WAAA,GAAA;AA7BA;;AAEG;QACH,IAAM,CAAA,MAAA,GAA8B,KAAK,EAAgB,CAAC;AAE1D;;;;AAIG;QACH,IAAe,CAAA,eAAA,GAAG,MAAM,EAA0B,CAAC;AAEnD,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAuD,QAAQ,CAAC,CAAC;AAEpF,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;AAO1B;;AAEG;AACK,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;QAM9B,eAAe,CAAC,MAAK;AACnB,YAAA,MAAM,UAAU,GAAG,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,gBAAgB,CAAC,wBAAwB,CAAC,CAAC;AAC9F,YAAA,MAAM,UAAU,GAAG,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,gBAAgB,CAAC,wBAAwB,CAAC,CAAC;AAE9F,YAAA,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC;AAC7B,gBAAA,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,aAAa;gBACjC,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,SAAS,IAAI,CAAQ,KAAA,EAAA,UAAU,CAAG,CAAA,CAAA;gBAC5D,aAAa,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,aAAa,IAAI,CAAQ,KAAA,EAAA,UAAU,CAAG,CAAA,CAAA;gBACpE,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,GAAG,IAAI,EAAE;gBAC7B,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,QAAQ,IAAI,CAAC;gBACtC,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,SAAS,IAAI,CAAC;gBACxC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,MAAM,IAAI,CAAC;gBAClC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,MAAM,IAAI,EAAE;AACpC,aAAA,CAAC,CAAC;YACH,IAAI,CAAC,IAAI,EAAE,CAAC;YACZ,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,SAAS,EAAE,MAAK;AAC7B,gBAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AACjC,aAAC,CAAC,CAAC;YACH,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,EAAE,MAAK;AAC3B,gBAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAC/B,aAAC,CAAC,CAAC;YACH,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,KAAI;gBAC5B,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AAClC,gBAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAC/B,aAAC,CAAC,CAAC;YACH,IAAI,CAAC,UAAU,EAAE,CAAC;AACpB,SAAC,CAAC,CAAC;KACJ;AAED;;;;AAIG;IACH,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,EAAA;AAC1B,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KACtB;AAED;;;AAGG;IACH,IAAI,GAAA;AACF,QAAA,OAAO,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC;KAC3B;AAED;;AAEG;IACH,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC;KACrB;AAED;;;AAGG;IACH,WAAW,GAAA;QACT,OAAO,IAAI,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;KACvC;AAED;;;AAGG;IACH,eAAe,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,KAAK,EAAE,eAAe,EAAE,CAAC;KACtC;AAED;;;;AAIG;AACH,IAAA,OAAO,CAAC,IAAY,EAAA;AAClB,QAAA,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;KAClC;AAED;;AAEG;IACO,UAAU,GAAA;QAClB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,WAAW,EAAE,CAAC;KACpB;;IAES,UAAU,GAAA;QAClB,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,KAAI;AAC7B,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAK;gBACnB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,EAAE,KAAK,EAAE,CAAC,CAAC;AAC/G,aAAC,CAAC,CAAC;AACL,SAAC,CAAC,CAAC;KACJ;;IAGS,aAAa,GAAA;QACrB,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,SAAS,EAAE,CAAC,OAAO,KAAI;AACpC,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAK;gBACnB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,iBAAiB,EAAE,KAAK,EAAE,CAAC,CAAC;AAC1H,aAAC,CAAC,CAAC;AACL,SAAC,CAAC,CAAC;KACJ;;IAGS,YAAY,GAAA;QACpB,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,KAAI;AACpC,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAK;gBACnB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,iBAAiB,EAAE,KAAK,EAAE,CAAC,CAAC;AAC3H,aAAC,CAAC,CAAC;AACL,SAAC,CAAC,CAAC;KACJ;;IAGS,WAAW,GAAA;QACnB,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,EAAE,CAAC,QAAQ,KAAI;AACnC,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAK;gBACnB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,EAAE,KAAK,EAAE,CAAC,CAAC;AAC1H,aAAC,CAAC,CAAC;AACL,SAAC,CAAC,CAAC;KACJ;;IAGS,oBAAoB,GAAA;QAC5B,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,gBAAgB,EAAE,MAAK;AACpC,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAK;gBACnB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,KAAK,EAAE,CAAC,CAAC;AACjH,aAAC,CAAC,CAAC;AACL,SAAC,CAAC,CAAC;KACJ;;IAGS,UAAU,GAAA;QAClB,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,EAAE,MAAK;AAC1B,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAK;gBACnB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,EAAE,KAAK,EAAE,CAAC,CAAC;AACvG,aAAC,CAAC,CAAC;AACL,SAAC,CAAC,CAAC;KACJ;;IAGS,WAAW,GAAA;QACnB,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,EAAE,MAAK;AAC3B,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAK;gBACnB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,EAAE,KAAK,EAAE,CAAC,CAAC;AACxG,aAAC,CAAC,CAAC;AACL,SAAC,CAAC,CAAC;KACJ;;IAGS,YAAY,GAAA;QACpB,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,EAAE,MAAK;AAC5B,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAK;gBACnB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,iBAAiB,EAAE,KAAK,EAAE,CAAC,CAAC;AACzG,aAAC,CAAC,CAAC;AACL,SAAC,CAAC,CAAC;KACJ;;IAGS,gBAAgB,GAAA;QACxB,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,YAAY,EAAE,CAAC,WAAW,KAAI;AAC3C,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAK;gBACnB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,iBAAiB,EAAE,KAAK,EAAE,CAAC,CAAC;AACrI,aAAC,CAAC,CAAC;AACL,SAAC,CAAC,CAAC;KACJ;;IAGS,aAAa,GAAA;QACrB,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,SAAS,EAAE,CAAC,WAAW,KAAI;AACxC,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAK;gBACnB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,iBAAiB,EAAE,KAAK,EAAE,CAAC,CAAC;AAClI,aAAC,CAAC,CAAC;AACL,SAAC,CAAC,CAAC;KACJ;;IAGS,iBAAiB,GAAA;QACzB,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,aAAa,EAAE,CAAC,OAAO,KAAI;AACxC,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAK;gBACnB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,iBAAiB,EAAE,KAAK,EAAE,CAAC,CAAC;AAC9H,aAAC,CAAC,CAAC;AACL,SAAC,CAAC,CAAC;KACJ;;IAGS,WAAW,GAAA;QACnB,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,EAAE,CAAC,SAAS,KAAI;AACpC,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAK;gBACnB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,EAAE,KAAK,EAAE,CAAC,CAAC;AAC5H,aAAC,CAAC,CAAC;AACL,SAAC,CAAC,CAAC;KACJ;;IAGS,UAAU,GAAA;QAClB,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,SAAS,KAAI;AACnC,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAK;gBACnB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,EAAE,KAAK,EAAE,CAAC,CAAC;AAC3H,aAAC,CAAC,CAAC;AACL,SAAC,CAAC,CAAC;KACJ;;IAGS,YAAY,GAAA;AACpB,QAAA,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,EAAE,CAAC,gBAAgB,EAAE,cAAc,KAAI;AAC5D,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAK;AACnB,gBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;AACxB,oBAAA,SAAS,EAAE,IAAI;AACf,oBAAA,IAAI,EAAE,EAAE,gBAAgB,EAAE,cAAc,EAAE;AAC1C,oBAAA,MAAM,EAAE,QAAQ;AAChB,oBAAA,iBAAiB,EAAE,KAAK;AACzB,iBAAA,CAAC,CAAC;AACL,aAAC,CAAC,CAAC;AACL,SAAC,CAAC,CAAC;KACJ;;IAGS,UAAU,GAAA;QAClB,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,WAAW,KAAI;AACrC,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAK;gBACnB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,EAAE,KAAK,EAAE,CAAC,CAAC;AAC/H,aAAC,CAAC,CAAC;AACL,SAAC,CAAC,CAAC;KACJ;;IAGS,aAAa,GAAA;QACrB,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,SAAS,EAAE,MAAK;AAC7B,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAK;gBACnB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,iBAAiB,EAAE,KAAK,EAAE,CAAC,CAAC;AAC1G,aAAC,CAAC,CAAC;AACL,SAAC,CAAC,CAAC;KACJ;;IAES,WAAW,GAAA;QACnB,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,KAAI;AAC5B,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAK;gBACnB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,EAAE,KAAK,EAAE,CAAC,CAAC;AACrG,aAAC,CAAC,CAAC;AACL,SAAC,CAAC,CAAC;KACJ;8GAnSU,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,uUCtBjC,oWAWC,EAAA,MAAA,EAAA,CAAA,2rBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FDWY,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBANhC,SAAS;+BACE,eAAe,EAAA,aAAA,EAGV,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,oWAAA,EAAA,MAAA,EAAA,CAAA,2rBAAA,CAAA,EAAA,CAAA;wDAMQ,GAAG,EAAA,CAAA;sBAA/C,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,GAAG,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;;;MEbtB,iBAAiB,CAAA;8GAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,EAJb,YAAA,EAAA,CAAA,oBAAoB,CAEzB,EAAA,OAAA,EAAA,CAAA,YAAY,EAAE,cAAc,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,mBAAmB,aADtF,oBAAoB,CAAA,EAAA,CAAA,CAAA,EAAA;+GAGnB,iBAAiB,EAAA,OAAA,EAAA,CAFlB,YAAY,EAAE,cAAc,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,mBAAmB,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAErF,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAL7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,oBAAoB,CAAC;oBACpC,OAAO,EAAE,CAAC,oBAAoB,CAAC;oBAC/B,OAAO,EAAE,CAAC,YAAY,EAAE,cAAc,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,mBAAmB,CAAC;AAClG,iBAAA,CAAA;;;ACZD;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"acorex-components-audio-wave.mjs","sources":["../../../../libs/components/audio-wave/src/lib/audio-wave.component.ts","../../../../libs/components/audio-wave/src/lib/audio-wave.component.html","../../../../libs/components/audio-wave/src/lib/audio-wave.module.ts","../../../../libs/components/audio-wave/src/acorex-components-audio-wave.ts"],"sourcesContent":["import {\n Component,\n ElementRef,\n InputSignal,\n NgZone,\n ViewChild,\n ViewEncapsulation,\n afterNextRender,\n inject,\n input,\n output,\n signal,\n} from '@angular/core';\nimport WaveSurfer from 'wavesurfer.js';\nimport { AXAudioWaveChangeEvent, AXWaveConfig } from './interfaces/audio-wave.interface';\n\n\n/**\n * Displays and interacts with audio waveform visualization.\n * \n * @category Components\n */\n@Component({\n selector: 'ax-audio-wave',\n templateUrl: './audio-wave.component.html',\n styleUrls: ['./audio-wave.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class AXAudioWaveComponent {\n /**\n * @ignore\n */\n @ViewChild('d', { static: false }) protected div: ElementRef<HTMLDivElement>;\n\n /**\n * Configuration settings for the audio wave.\n */\n config: InputSignal<AXWaveConfig> = input<AXWaveConfig>();\n\n /**\n * Emits an event when the status of the audio wave changes.\n *\n * @event\n */\n onStatusChanged = output<AXAudioWaveChangeEvent>();\n\n audioState = signal<'playing' | 'paused' | 'loading' | 'ready' | 'error'>('paused');\n\n errorMessage = signal('');\n\n /**\n * @ignore\n */\n protected audio: WaveSurfer;\n\n /**\n * @ignore\n */\n private ngZone = inject(NgZone);\n\n /**\n * @ignore\n */\n constructor() {\n afterNextRender(() => {\n const primary200 = getComputedStyle(document.body).getPropertyValue('--ax-color-primary-200');\n const primary700 = getComputedStyle(document.body).getPropertyValue('--ax-color-primary-700');\n\n this.audio = WaveSurfer.create({\n container: this.div.nativeElement,\n waveColor: this.config()?.waveColor || `rgba(${primary200})`,\n progressColor: this.config()?.progressColor || `rgba(${primary700})`,\n url: this.config()?.url || '',\n barWidth: this.config()?.barWidth || 2,\n barRadius: this.config()?.barRadius || 2,\n barGap: this.config()?.barGap || 2,\n height: this.config()?.height || 36,\n });\n this.load();\n this.audio?.on('loading', () => {\n this.audioState.set('loading');\n });\n this.audio?.on('ready', () => {\n this.audioState.set('ready');\n });\n this.audio?.on('error', (e) => {\n this.errorMessage.set(e?.message);\n this.audioState.set('error');\n });\n this.bindEvents();\n });\n }\n\n /**\n * Loads the audio from the specified URL.\n *\n * @param url - The URL of the audio to load. Defaults to the URL from the config.\n */\n load(url = this.config().url) {\n this.audio.load(url);\n }\n\n /**\n * Plays the audio.\n *\n */\n play(): Promise<any> {\n return this.audio?.play();\n }\n\n /**\n * Pauses the audio.\n */\n pause(): void {\n this.audio?.pause();\n }\n\n /**\n * Retrieves the duration of the audio.\n *\n */\n getDuration() {\n return this.audio?.getDuration() ?? 0;\n }\n\n /**\n * Retrieves the media element of the audio.\n *\n */\n getMediaElement() {\n return this.audio?.getMediaElement();\n }\n\n /**\n * Sets the playback rate of the audio.\n *\n * @param rate - The playback rate to set.\n */\n setRate(rate: number) {\n this.audio.setPlaybackRate(rate);\n }\n\n /**\n * @ignore\n */\n protected bindEvents() {\n this.handleLoad();\n this.handleLoading();\n this.handleDecode();\n this.handleReady();\n this.handleRedRawComplete();\n this.handlePlay();\n this.handlePause();\n this.handleFinish();\n this.handleTimeUpdate();\n this.handleSeeking();\n this.handleInteraction();\n this.handleClick();\n this.handleDrag();\n this.handleScroll();\n this.handleZoom();\n this.handleDestroy();\n this.handleError();\n }\n /** When audio starts loading */\n protected handleLoad() {\n this.audio?.on('load', (url) => {\n this.ngZone.run(() => {\n this.onStatusChanged.emit({ component: this, data: { url: url }, status: 'load', isUserInteraction: false });\n });\n });\n }\n\n /** During audio loading */\n protected handleLoading() {\n this.audio?.on('loading', (percent) => {\n this.ngZone.run(() => {\n this.onStatusChanged.emit({ component: this, data: { percent: percent }, status: 'loading', isUserInteraction: false });\n });\n });\n }\n\n /** When the audio has been decoded */\n protected handleDecode() {\n this.audio?.on('decode', (duration) => {\n this.ngZone.run(() => {\n this.onStatusChanged.emit({ component: this, data: { duration: duration }, status: 'decode', isUserInteraction: false });\n });\n });\n }\n\n /** When the audio is both decoded and can play */\n protected handleReady() {\n this.audio?.on('ready', (duration) => {\n this.ngZone.run(() => {\n this.onStatusChanged.emit({ component: this, data: { duration: duration }, status: 'ready', isUserInteraction: false });\n });\n });\n }\n\n /** When all audio channel chunks of the waveform have drawn */\n protected handleRedRawComplete() {\n this.audio?.on('redrawcomplete', () => {\n this.ngZone.run(() => {\n this.onStatusChanged.emit({ component: this, data: null, status: 'redrawcomplete', isUserInteraction: false });\n });\n });\n }\n\n /** When the audio starts playing */\n protected handlePlay() {\n this.audio?.on('play', () => {\n this.ngZone.run(() => {\n this.onStatusChanged.emit({ component: this, data: null, status: 'play', isUserInteraction: false });\n });\n });\n }\n\n /** When the audio pauses */\n protected handlePause() {\n this.audio?.on('pause', () => {\n this.ngZone.run(() => {\n this.onStatusChanged.emit({ component: this, data: null, status: 'pause', isUserInteraction: false });\n });\n });\n }\n\n /** When the audio finishes playing */\n protected handleFinish() {\n this.audio?.on('finish', () => {\n this.ngZone.run(() => {\n this.onStatusChanged.emit({ component: this, data: null, status: 'finish', isUserInteraction: false });\n });\n });\n }\n\n /** On audio position change, fires continuously during playback */\n protected handleTimeUpdate() {\n this.audio?.on('timeupdate', (currentTime) => {\n this.ngZone.run(() => {\n this.onStatusChanged.emit({ component: this, data: { currentTime: currentTime }, status: 'timeupdate', isUserInteraction: false });\n });\n });\n }\n\n /** When the user seeks to a new position */\n protected handleSeeking() {\n this.audio?.on('seeking', (currentTime) => {\n this.ngZone.run(() => {\n this.onStatusChanged.emit({ component: this, data: { currentTime: currentTime }, status: 'seeking', isUserInteraction: false });\n });\n });\n }\n\n /** When the user interacts with the waveform (i.g. clicks or drags on it) */\n protected handleInteraction() {\n this.audio?.on('interaction', (newTime) => {\n this.ngZone.run(() => {\n this.onStatusChanged.emit({ component: this, data: { newTime: newTime }, status: 'interaction', isUserInteraction: false });\n });\n });\n }\n\n /** When the user clicks on the waveform */\n protected handleClick() {\n this.audio?.on('click', (relativeX) => {\n this.ngZone.run(() => {\n this.onStatusChanged.emit({ component: this, data: { relativeX: relativeX }, status: 'click', isUserInteraction: false });\n });\n });\n }\n\n /** When the user drags the cursor */\n protected handleDrag() {\n this.audio?.on('drag', (relativeX) => {\n this.ngZone.run(() => {\n this.onStatusChanged.emit({ component: this, data: { relativeX: relativeX }, status: 'drag', isUserInteraction: false });\n });\n });\n }\n\n /** When the waveform is scrolled (panned) */\n protected handleScroll() {\n this.audio?.on('scroll', (visibleStartTime, visibleEndTime) => {\n this.ngZone.run(() => {\n this.onStatusChanged.emit({\n component: this,\n data: { visibleStartTime, visibleEndTime },\n status: 'scroll',\n isUserInteraction: false,\n });\n });\n });\n }\n\n /** When the zoom level changes */\n protected handleZoom() {\n this.audio?.on('zoom', (minPxPerSec) => {\n this.ngZone.run(() => {\n this.onStatusChanged.emit({ component: this, data: { minPxPerSec: minPxPerSec }, status: 'zoom', isUserInteraction: false });\n });\n });\n }\n\n /** Just before the waveform is destroyed so you can clean up your events */\n protected handleDestroy() {\n this.audio?.on('destroy', () => {\n this.ngZone.run(() => {\n this.onStatusChanged.emit({ component: this, data: null, status: 'destroy', isUserInteraction: false });\n });\n });\n }\n /** Just before the waveform is destroyed so you can clean up your events */\n protected handleError() {\n this.audio?.on('error', (e) => {\n this.ngZone.run(() => {\n this.onStatusChanged.emit({ component: this, data: e, status: 'error', isUserInteraction: false });\n });\n });\n }\n}\n","<div class=\"ax-audio-wave\" #d [ngStyle]=\"{'display': audioState() === 'ready' ? 'block' : 'none' }\"></div>\n\n@switch (audioState()) {\n@case ('loading') {\n<div class=\"ax-audio-skeleton\"></div>\n}\n@case ('error') {\n<div class=\"ax-wave-message\">\n {{'error.message' | translate:{ params:{ message: errorMessage() } } | async }}\n</div>\n}\n}","import { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXSkeletonModule } from '@acorex/components/skeleton';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { AXAudioWaveComponent } from './audio-wave.component';\n\n@NgModule({\n declarations: [AXAudioWaveComponent],\n exports: [AXAudioWaveComponent],\n imports: [CommonModule, AXButtonModule, AXDecoratorModule, AXSkeletonModule, AXTranslationModule],\n})\nexport class AXAudioWaveModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -28,12 +28,15 @@ class AXButtonGroupComponent extends classes(MXInteractiveComponent, MXColorLook
|
|
|
28
28
|
}
|
|
29
29
|
/**
|
|
30
30
|
* Defines the selection mode for the component.
|
|
31
|
-
*
|
|
32
|
-
* @param value - The selection mode to be set. Possible values include 'single', 'multiple', or 'none'.
|
|
33
31
|
*/
|
|
34
32
|
get selection() {
|
|
35
33
|
return this._selection;
|
|
36
34
|
}
|
|
35
|
+
/**
|
|
36
|
+
* Sets the selection mode for the component.
|
|
37
|
+
*
|
|
38
|
+
* @param value - The selection mode to be set. Possible values include 'single', 'multiple', or 'none'.
|
|
39
|
+
*/
|
|
37
40
|
set selection(value) {
|
|
38
41
|
this.setOption({
|
|
39
42
|
name: 'selection',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-components-button-group.mjs","sources":["../../../../libs/components/button-group/src/lib/button-group.component.ts","../../../../libs/components/button-group/src/lib/button-group.component.html","../../../../libs/components/button-group/src/lib/button-group.module.ts","../../../../libs/components/button-group/src/acorex-components-button-group.ts"],"sourcesContent":["import { AXButtonItemComponent } from '@acorex/components/button';\nimport { AXClickEvent, AXSelectionMode, MXColorLookComponent, MXInteractiveComponent } from '@acorex/components/common';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n EventEmitter,\n HostBinding,\n HostListener,\n Input,\n Output,\n QueryList,\n ViewEncapsulation,\n} from '@angular/core';\nimport { classes } from 'polytype';\n\n/**\n * A component that groups multiple buttons together, allowing for consistent styling and behavior.\n *\n * @category Components\n */\n@Component({\n selector: 'ax-button-group',\n templateUrl: './button-group.component.html',\n styleUrls: ['./button-group.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n inputs: ['disabled', 'color', 'look'],\n outputs: ['onBlur', 'onFocus', 'lookChange', 'colorChange', 'disabledChange'],\n})\nexport class AXButtonGroupComponent extends classes(MXInteractiveComponent, MXColorLookComponent) implements AfterContentInit {\n /**\n * Fires when any button in the group is clicked.\n *\n * @event\n */\n onClick: EventEmitter<AXClickEvent> = new EventEmitter<AXClickEvent>();\n\n /**\n * @ignore\n */\n @ContentChildren(AXButtonItemComponent)\n private _contentButtons: QueryList<AXButtonItemComponent>;\n\n /**\n * Emitted when the selection mode changes.\n *\n * @event\n */\n @Output()\n selectionChange: EventEmitter<AXSelectionMode> = new EventEmitter();\n\n /**\n * @ignore\n */\n private _selection: AXSelectionMode;\n\n /**\n * Defines the selection mode for the component.\n *\n * @param value - The selection mode to be set. Possible values include 'single', 'multiple', or 'none'.\n */\n @Input()\n public get selection(): AXSelectionMode {\n return this._selection;\n }\n public set selection(value: AXSelectionMode) {\n this.setOption({\n name: 'selection',\n value: value,\n afterCallback: (o, n) => {\n if (value == 'none') {\n this.clearSelection();\n }\n },\n });\n }\n\n /**\n * @ignore\n */\n ngAfterContentInit() {\n this._bindEvents();\n this._bindProps();\n this._contentButtons.changes.subscribe(() => {\n this._bindEvents();\n this._bindProps();\n });\n }\n\n /**\n * @ignore\n */\n private _bindEvents() {\n this._contentButtons?.forEach((b: any) => {\n if (!b.onClick.length)\n b.onClick.subscribe((c: any) => {\n this._handleClickEvent(c, b);\n });\n });\n }\n\n /**\n * @ignore\n */\n private _bindProps() {\n this._contentButtons?.forEach((b: any) => {\n if (b['originDisabled'] == null) {\n b['originDisabled'] = b.disabled;\n }\n if (this.look) b.look = this.look;\n if (this.color) b.color = this.color;\n b.disabled = b['originDisabled'] || this.disabled;\n b.toggleable = false;\n });\n }\n\n /**\n * Updates component properties based on internal option changes.\n */\n override internalOptionChanged() {\n this._bindProps();\n }\n\n /**\n * @ignore\n */\n private _handleClickEvent(e: AXClickEvent, button: AXButtonItemComponent) {\n if (this.selection == 'multiple') {\n button.selected = !button.selected;\n } else if (this.selection == 'single') {\n this.clearSelection();\n button.selected = true;\n } else {\n button.selected = false;\n }\n }\n\n /**\n * @ignore\n */\n private clearSelection() {\n this._contentButtons?.forEach((c: AXButtonItemComponent) => {\n c.selected = false;\n });\n }\n\n /**\n * @ignore\n */\n @HostBinding('class')\n private get __hostClass(): { [key: string]: boolean } {\n const cssClasses = {\n 'ax-state-disabled': this.disabled,\n };\n cssClasses[`ax-color-${this.color || 'primary'}`] = true;\n cssClasses[`ax-look-${this.look || 'default'}`] = true;\n return cssClasses;\n }\n /**\n * @ignore\n */\n @HostBinding('attr.role') get role() {\n return 'group';\n }\n\n /**\n * @ignore\n */\n @HostListener('click', ['$event'])\n private __hostClick(e: MouseEvent) {\n if (!this.disabled) {\n this.onClick.emit({\n component: this,\n htmlElement: this.getHostElement(),\n nativeEvent: e,\n });\n }\n }\n}\n","<ng-container>\n <ng-content select=\"ax-button-item\"></ng-content>\n</ng-container>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { AXButtonGroupComponent } from './button-group.component';\n\nconst COMPONENT = [AXButtonGroupComponent];\nconst MODULES = [CommonModule];\n\n@NgModule({\n declarations: [...COMPONENT],\n imports: [...MODULES],\n exports: [...COMPONENT],\n providers: [],\n})\nexport class AXButtonGroupModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"acorex-components-button-group.mjs","sources":["../../../../libs/components/button-group/src/lib/button-group.component.ts","../../../../libs/components/button-group/src/lib/button-group.component.html","../../../../libs/components/button-group/src/lib/button-group.module.ts","../../../../libs/components/button-group/src/acorex-components-button-group.ts"],"sourcesContent":["import { AXButtonItemComponent } from '@acorex/components/button';\nimport { AXClickEvent, AXSelectionMode, MXColorLookComponent, MXInteractiveComponent } from '@acorex/components/common';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n EventEmitter,\n HostBinding,\n HostListener,\n Input,\n Output,\n QueryList,\n ViewEncapsulation,\n} from '@angular/core';\nimport { classes } from 'polytype';\n\n/**\n * A component that groups multiple buttons together, allowing for consistent styling and behavior.\n *\n * @category Components\n */\n@Component({\n selector: 'ax-button-group',\n templateUrl: './button-group.component.html',\n styleUrls: ['./button-group.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n inputs: ['disabled', 'color', 'look'],\n outputs: ['onBlur', 'onFocus', 'lookChange', 'colorChange', 'disabledChange'],\n})\nexport class AXButtonGroupComponent extends classes(MXInteractiveComponent, MXColorLookComponent) implements AfterContentInit {\n /**\n * Fires when any button in the group is clicked.\n *\n * @event\n */\n onClick: EventEmitter<AXClickEvent> = new EventEmitter<AXClickEvent>();\n\n /**\n * @ignore\n */\n @ContentChildren(AXButtonItemComponent)\n private _contentButtons: QueryList<AXButtonItemComponent>;\n\n /**\n * Emitted when the selection mode changes.\n *\n * @event\n */\n @Output()\n selectionChange: EventEmitter<AXSelectionMode> = new EventEmitter();\n\n /**\n * @ignore\n */\n private _selection: AXSelectionMode;\n\n/**\n * Defines the selection mode for the component.\n */\n @Input()\n public get selection(): AXSelectionMode {\n return this._selection;\n }\n\n \n /**\n * Sets the selection mode for the component.\n * \n * @param value - The selection mode to be set. Possible values include 'single', 'multiple', or 'none'.\n */\n public set selection(value: AXSelectionMode) {\n this.setOption({\n name: 'selection',\n value: value,\n afterCallback: (o, n) => {\n if (value == 'none') {\n this.clearSelection();\n }\n },\n });\n }\n\n /**\n * @ignore\n */\n ngAfterContentInit() {\n this._bindEvents();\n this._bindProps();\n this._contentButtons.changes.subscribe(() => {\n this._bindEvents();\n this._bindProps();\n });\n }\n\n /**\n * @ignore\n */\n private _bindEvents() {\n this._contentButtons?.forEach((b: any) => {\n if (!b.onClick.length)\n b.onClick.subscribe((c: any) => {\n this._handleClickEvent(c, b);\n });\n });\n }\n\n /**\n * @ignore\n */\n private _bindProps() {\n this._contentButtons?.forEach((b: any) => {\n if (b['originDisabled'] == null) {\n b['originDisabled'] = b.disabled;\n }\n if (this.look) b.look = this.look;\n if (this.color) b.color = this.color;\n b.disabled = b['originDisabled'] || this.disabled;\n b.toggleable = false;\n });\n }\n\n /**\n * Updates component properties based on internal option changes.\n */\n override internalOptionChanged() {\n this._bindProps();\n }\n\n /**\n * @ignore\n */\n private _handleClickEvent(e: AXClickEvent, button: AXButtonItemComponent) {\n if (this.selection == 'multiple') {\n button.selected = !button.selected;\n } else if (this.selection == 'single') {\n this.clearSelection();\n button.selected = true;\n } else {\n button.selected = false;\n }\n }\n\n /**\n * @ignore\n */\n private clearSelection() {\n this._contentButtons?.forEach((c: AXButtonItemComponent) => {\n c.selected = false;\n });\n }\n\n /**\n * @ignore\n */\n @HostBinding('class')\n private get __hostClass(): { [key: string]: boolean } {\n const cssClasses = {\n 'ax-state-disabled': this.disabled,\n };\n cssClasses[`ax-color-${this.color || 'primary'}`] = true;\n cssClasses[`ax-look-${this.look || 'default'}`] = true;\n return cssClasses;\n }\n /**\n * @ignore\n */\n @HostBinding('attr.role') get role() {\n return 'group';\n }\n\n /**\n * @ignore\n */\n @HostListener('click', ['$event'])\n private __hostClick(e: MouseEvent) {\n if (!this.disabled) {\n this.onClick.emit({\n component: this,\n htmlElement: this.getHostElement(),\n nativeEvent: e,\n });\n }\n }\n}\n","<ng-container>\n <ng-content select=\"ax-button-item\"></ng-content>\n</ng-container>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { AXButtonGroupComponent } from './button-group.component';\n\nconst COMPONENT = [AXButtonGroupComponent];\nconst MODULES = [CommonModule];\n\n@NgModule({\n declarations: [...COMPONENT],\n imports: [...MODULES],\n exports: [...COMPONENT],\n providers: [],\n})\nexport class AXButtonGroupModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|