@acrodata/gui 2.8.0 → 2.9.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.
Files changed (44) hide show
  1. package/button-toggle/button-toggle.scss +1 -1
  2. package/codearea/codearea-dialog.scss +1 -1
  3. package/codearea/codearea.scss +2 -2
  4. package/combobox/combobox.scss +1 -1
  5. package/fesm2022/acrodata-gui.mjs +119 -119
  6. package/fesm2022/acrodata-gui.mjs.map +1 -1
  7. package/field-group/field-group.scss +1 -1
  8. package/file-uploader/file-uploader.scss +1 -1
  9. package/fill/fill-picker.d.ts +1 -1
  10. package/fill/fill-picker.scss +7 -7
  11. package/fill/fill.scss +4 -4
  12. package/gui-form.scss +5 -5
  13. package/image-select/image-select.scss +8 -1
  14. package/inline-group/inline-group.scss +1 -1
  15. package/package.json +1 -3
  16. package/select/select.scss +1 -1
  17. package/esm2022/acrodata-gui.mjs +0 -5
  18. package/esm2022/button-toggle/button-toggle.mjs +0 -69
  19. package/esm2022/button-toggle/icon.mjs +0 -33
  20. package/esm2022/codearea/codearea-config.mjs +0 -20
  21. package/esm2022/codearea/codearea-dialog.mjs +0 -67
  22. package/esm2022/codearea/codearea.mjs +0 -148
  23. package/esm2022/combobox/combobox.mjs +0 -82
  24. package/esm2022/field-group/field-group.mjs +0 -30
  25. package/esm2022/field-label/field-label.mjs +0 -31
  26. package/esm2022/file-uploader/file-uploader-config.mjs +0 -42
  27. package/esm2022/file-uploader/file-uploader.mjs +0 -142
  28. package/esm2022/fill/fill-picker.mjs +0 -166
  29. package/esm2022/fill/fill.mjs +0 -85
  30. package/esm2022/gui-form.mjs +0 -305
  31. package/esm2022/gui-icons.mjs +0 -95
  32. package/esm2022/gui-module.mjs +0 -201
  33. package/esm2022/gui-utils.mjs +0 -128
  34. package/esm2022/icon-button-wrapper/icon-button-wrapper.mjs +0 -13
  35. package/esm2022/image-select/image-select.mjs +0 -79
  36. package/esm2022/inline-group/inline-group.mjs +0 -19
  37. package/esm2022/input-number/input-number.mjs +0 -58
  38. package/esm2022/input-text/input-text.mjs +0 -59
  39. package/esm2022/interface.mjs +0 -2
  40. package/esm2022/public-api.mjs +0 -30
  41. package/esm2022/select/select.mjs +0 -69
  42. package/esm2022/slider/slider.mjs +0 -85
  43. package/esm2022/switch/switch.mjs +0 -59
  44. package/esm2022/textarea/textarea.mjs +0 -59
@@ -22,7 +22,7 @@
22
22
  .mat-mdc-form-field-hint-wrapper {
23
23
  position: relative;
24
24
  padding: 0 0.5rem;
25
- border-radius: var(--mdc-filled-text-field-container-shape);
25
+ border-radius: var(--mdc-filled-text-field-container-shape, var(--mat-sys-corner-extra-small));
26
26
 
27
27
  [dir='rtl'] & {
28
28
  padding: 0 0.5rem;
@@ -15,7 +15,7 @@
15
15
  height: 7.5rem;
16
16
  margin: 0.25rem 0 0;
17
17
  padding: 0.25rem;
18
- background-color: var(--mdc-filled-text-field-container-color);
18
+ background-color: var(--mdc-filled-text-field-container-color, var(--mat-sys-surface-variant));
19
19
  border: 1px solid transparent;
20
20
  border-radius: 0.25rem;
21
21
 
@@ -26,7 +26,7 @@ export declare class GuiFillPicker implements ControlValueAccessor, OnChanges {
26
26
  registerOnChange(fn: (value: string) => void): void;
27
27
  registerOnTouched(fn: () => void): void;
28
28
  setDisabledState(isDisabled: boolean): void;
29
- getColorFormat(): "rgb" | "hex" | "hsl" | "hsv";
29
+ getColorFormat(): "hex" | "rgb" | "hsl" | "hsv";
30
30
  getTypeFromModel(value: string): void;
31
31
  getValueFromModel(value: string): void;
32
32
  onTypeChange(): void;
@@ -2,8 +2,8 @@
2
2
  display: block;
3
3
  width: 15rem;
4
4
  border-radius: 0.5rem;
5
- background-color: var(--mat-expansion-container-background-color);
6
- color: var(--mat-expansion-container-text-color);
5
+ background-color: var(--mat-expansion-container-background-color, var(--mat-sys-surface));
6
+ color: var(--mat-expansion-container-text-color, var(--mat-sys-on-surface));
7
7
  box-shadow:
8
8
  inset 0 0 1px 0 rgba(255, 255, 255, 0.64),
9
9
  0 2px 4px 0 rgba(0, 0, 0, 0.16),
@@ -72,8 +72,8 @@
72
72
  input {
73
73
  background-color: transparent;
74
74
  box-shadow: none !important;
75
- color: var(--mdc-outlined-text-field-input-text-color) !important;
76
- border: 1px solid var(--mdc-outlined-text-field-outline-color) !important;
75
+ color: var(--mdc-outlined-text-field-input-text-color, var(--mat-sys-on-surface)) !important;
76
+ border: 1px solid var(--mdc-outlined-text-field-outline-color, var(--mat-sys-outline)) !important;
77
77
  }
78
78
  }
79
79
 
@@ -103,7 +103,7 @@
103
103
  }
104
104
 
105
105
  path {
106
- fill: var(--mdc-icon-button-icon-color);
106
+ fill: var(--mdc-icon-button-icon-color, var(--mat-sys-on-surface-variant));
107
107
  }
108
108
  }
109
109
  }
@@ -115,8 +115,8 @@
115
115
  --gp-container-shape: 0;
116
116
  --gp-container-elevation-shadow: none;
117
117
  --gp-container-background-color: transparent;
118
- --gp-container-text-color: var(--mdc-filled-text-field-input-text-color);
119
- --gp-input-background-color: var(--mdc-filled-text-field-container-color);
118
+ --gp-container-text-color: var(--mdc-filled-text-field-input-text-color, var(--mat-sys-on-surface));
119
+ --gp-input-background-color: var(--mdc-filled-text-field-container-color, var(--mat-sys-surface-variant));
120
120
  }
121
121
  }
122
122
 
package/fill/fill.scss CHANGED
@@ -20,15 +20,15 @@
20
20
  height: 100%;
21
21
  box-sizing: border-box;
22
22
  border: 1px solid currentColor;
23
- border-top-left-radius: var(--mdc-filled-text-field-container-shape);
24
- border-bottom-left-radius: var(--mdc-filled-text-field-container-shape);
23
+ border-top-left-radius: var(--mdc-filled-text-field-container-shape, var(--mat-sys-corner-extra-small));
24
+ border-bottom-left-radius: var(--mdc-filled-text-field-container-shape, var(--mat-sys-corner-extra-small));
25
25
  opacity: 0.24;
26
26
  content: '';
27
27
 
28
28
  [dir='rtl'] & {
29
29
  border-radius: 0;
30
- border-top-right-radius: var(--mdc-filled-text-field-container-shape);
31
- border-bottom-right-radius: var(--mdc-filled-text-field-container-shape);
30
+ border-top-right-radius: var(--mdc-filled-text-field-container-shape, var(--mat-sys-corner-extra-small));
31
+ border-bottom-right-radius: var(--mdc-filled-text-field-container-shape, var(--mat-sys-corner-extra-small));
32
32
  }
33
33
  }
34
34
  }
package/gui-form.scss CHANGED
@@ -9,7 +9,7 @@
9
9
  display: block;
10
10
  font-size: 0.75rem;
11
11
 
12
- .mat-expansion-panel:not([class*="mat-elevation-z"]) {
12
+ .mat-expansion-panel:not([class*='mat-elevation-z']) {
13
13
  box-shadow: none;
14
14
  }
15
15
 
@@ -71,14 +71,14 @@
71
71
  position: relative;
72
72
  padding: 0 0.75rem;
73
73
  line-height: 1.5rem;
74
- border-bottom: var(--mat-tab-header-divider-height) solid transparent;
74
+ border-bottom: var(--mat-tab-header-divider-height, 1px) solid transparent;
75
75
 
76
76
  &::before {
77
77
  position: absolute;
78
78
  left: 0;
79
79
  width: 0.125rem;
80
80
  height: 1rem;
81
- background-color: var(--mat-expansion-header-text-color);
81
+ background-color: var(--mat-expansion-header-text-color, var(--mat-sys-on-surface));
82
82
  content: '';
83
83
 
84
84
  [dir='rtl'] & {
@@ -111,7 +111,7 @@
111
111
  --mdc-tab-indicator-active-indicator-shape: 0.25rem;
112
112
 
113
113
  padding: 0.25rem;
114
- background-color: var(--mdc-filled-text-field-container-color);
114
+ background-color: var(--mdc-filled-text-field-container-color, var(--mat-sys-surface-variant));
115
115
 
116
116
  .mdc-tab__ripple::before {
117
117
  border-radius: var(--mdc-tab-indicator-active-indicator-shape);
@@ -124,7 +124,7 @@
124
124
 
125
125
  .mdc-tab-indicator .mdc-tab-indicator__content {
126
126
  height: 100%;
127
- background-color: var(--mdc-tab-indicator-active-indicator-color);
127
+ background-color: var(--mdc-tab-indicator-active-indicator-color, var(--mat-sys-primary));
128
128
  }
129
129
 
130
130
  .mdc-tab-indicator--active .mdc-tab-indicator__content {
@@ -3,7 +3,14 @@
3
3
  max-width: 7.5rem;
4
4
  object-fit: contain;
5
5
  border-radius: 0.25rem;
6
- background-color: var(--mat-option-hover-state-layer-color);
6
+ background-color: var(
7
+ --mat-option-hover-state-layer-color,
8
+ color-mix(
9
+ in srgb,
10
+ var(--mat-sys-on-surface) calc(var(--mat-sys-hover-state-layer-opacity) * 100%),
11
+ transparent
12
+ )
13
+ );
7
14
  }
8
15
 
9
16
  .gui-image-select {
@@ -4,7 +4,7 @@
4
4
 
5
5
  mat-hint {
6
6
  width: 100%;
7
- line-height: var(--mat-form-field-subscript-text-line-height);
7
+ line-height: var(--mat-form-field-subscript-text-line-height, var(--mat-sys-body-small-line-height));
8
8
  -webkit-font-smoothing: antialiased;
9
9
  }
10
10
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@acrodata/gui",
3
- "version": "2.8.0",
3
+ "version": "2.9.0",
4
4
  "description": "JSON powered GUI for configurable panels.",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -24,8 +24,6 @@
24
24
  ".": {
25
25
  "sass": "./_index.scss",
26
26
  "types": "./index.d.ts",
27
- "esm2022": "./esm2022/acrodata-gui.mjs",
28
- "esm": "./esm2022/acrodata-gui.mjs",
29
27
  "default": "./fesm2022/acrodata-gui.mjs"
30
28
  },
31
29
  "./package.json": {
@@ -4,7 +4,7 @@
4
4
  --mat-option-label-text-size: 0.75rem;
5
5
 
6
6
  .mat-mdc-option {
7
- min-height: var(--mat-option-label-text-line-height);
7
+ min-height: var(--mat-option-label-text-line-height, var(--mat-sys-label-large-line-height));
8
8
  padding: 0 0.5rem;
9
9
 
10
10
  .mat-pseudo-checkbox-full {
@@ -1,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './public-api';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNyb2RhdGEtZ3VpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcHJvamVjdHMvZ3VpL2Fjcm9kYXRhLWd1aS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpYy1hcGknO1xuIl19
@@ -1,69 +0,0 @@
1
- import { ChangeDetectionStrategy, ChangeDetectorRef, Component, forwardRef, inject, Input, ViewEncapsulation, } from '@angular/core';
2
- import { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';
3
- import { MatButtonToggle, MatButtonToggleGroup } from '@angular/material/button-toggle';
4
- import { MatHint } from '@angular/material/form-field';
5
- import { GuiFieldLabel } from '../field-label/field-label';
6
- import { GuiFlexDirective } from '../gui-utils';
7
- import { GuiIcon } from './icon';
8
- import * as i0 from "@angular/core";
9
- import * as i1 from "@angular/forms";
10
- export class GuiButtonToggle {
11
- constructor() {
12
- this.cdr = inject(ChangeDetectorRef);
13
- this.config = {};
14
- this.disabled = false;
15
- this.value = '';
16
- this.onChange = () => { };
17
- this.onTouched = () => { };
18
- }
19
- writeValue(value) {
20
- this.value = value;
21
- this.cdr.markForCheck();
22
- }
23
- registerOnChange(fn) {
24
- this.onChange = fn;
25
- }
26
- registerOnTouched(fn) {
27
- this.onTouched = fn;
28
- }
29
- setDisabledState(isDisabled) {
30
- this.disabled = isDisabled;
31
- this.cdr.markForCheck();
32
- }
33
- onValueChange() {
34
- this.onChange(this.value);
35
- }
36
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GuiButtonToggle, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
37
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: GuiButtonToggle, isStandalone: true, selector: "gui-button-toggle", inputs: { config: "config", disabled: "disabled" }, host: { classAttribute: "gui-field gui-button-toggle" }, providers: [
38
- {
39
- provide: NG_VALUE_ACCESSOR,
40
- useExisting: forwardRef(() => GuiButtonToggle),
41
- multi: true,
42
- },
43
- ], ngImport: i0, template: "<mat-button-toggle-group\n [(ngModel)]=\"value\"\n [disabled]=\"disabled\"\n [multiple]=\"config.multiple\"\n (change)=\"onValueChange()\"\n hideSingleSelectionIndicator\n hideMultipleSelectionIndicator\n>\n @for (opt of config.options; track $index) {\n <mat-button-toggle\n disableRipple\n [class.gui-icon-toggle]=\"config.useIcon\"\n [flex]=\"opt.col\"\n [value]=\"opt.value\"\n [disabled]=\"opt.disabled\"\n [title]=\"config.useIcon ? opt.label : ''\"\n >\n @if (config.useIcon) {\n <gui-icon [src]=\"opt.src!\" />\n } @else {\n {{ opt.label }}\n }\n </mat-button-toggle>\n }\n</mat-button-toggle-group>\n@if (config.parentType === 'inline') {\n <mat-hint>\n <gui-field-label [config]=\"config\" />\n </mat-hint>\n}\n", styles: [".gui-button-toggle{--mat-standard-button-toggle-shape: .25rem;--mat-standard-button-toggle-height: 1.5rem;--mat-standard-button-toggle-label-text-size: .75rem;--mat-standard-button-toggle-label-text-weight: 400;--mat-standard-button-toggle-label-text-line-height: var(--mat-standard-button-toggle-height)}.gui-button-toggle .mat-button-toggle-group{flex-wrap:wrap;border-width:0}.gui-button-toggle .mat-button-toggle-group-appearance-standard .mat-button-toggle-appearance-standard+.mat-button-toggle-appearance-standard{border-width:0}.gui-button-toggle .mat-button-toggle-appearance-standard{background-color:var(--mdc-filled-text-field-container-color)}.gui-icon-toggle.mat-button-toggle .mat-button-toggle-label-content{padding:0;line-height:normal}.gui-icon-toggle .mat-button-toggle-button{display:flex}.gui-icon-toggle.mat-button-toggle-checked img{opacity:.64}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled", "disabledInteractive", "hideSingleSelectionIndicator", "hideMultipleSelectionIndicator"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "component", type: MatButtonToggle, selector: "mat-button-toggle", inputs: ["aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "disableRipple", "appearance", "checked", "disabled", "disabledInteractive"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { kind: "directive", type: MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: GuiFlexDirective, selector: "[flex]", inputs: ["flex"] }, { kind: "component", type: GuiIcon, selector: "gui-icon", inputs: ["src"] }, { kind: "component", type: GuiFieldLabel, selector: "gui-field-label", inputs: ["config", "index"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
44
- }
45
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GuiButtonToggle, decorators: [{
46
- type: Component,
47
- args: [{ selector: 'gui-button-toggle', host: {
48
- class: 'gui-field gui-button-toggle',
49
- }, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
50
- {
51
- provide: NG_VALUE_ACCESSOR,
52
- useExisting: forwardRef(() => GuiButtonToggle),
53
- multi: true,
54
- },
55
- ], standalone: true, imports: [
56
- FormsModule,
57
- MatButtonToggleGroup,
58
- MatButtonToggle,
59
- MatHint,
60
- GuiFlexDirective,
61
- GuiIcon,
62
- GuiFieldLabel,
63
- ], template: "<mat-button-toggle-group\n [(ngModel)]=\"value\"\n [disabled]=\"disabled\"\n [multiple]=\"config.multiple\"\n (change)=\"onValueChange()\"\n hideSingleSelectionIndicator\n hideMultipleSelectionIndicator\n>\n @for (opt of config.options; track $index) {\n <mat-button-toggle\n disableRipple\n [class.gui-icon-toggle]=\"config.useIcon\"\n [flex]=\"opt.col\"\n [value]=\"opt.value\"\n [disabled]=\"opt.disabled\"\n [title]=\"config.useIcon ? opt.label : ''\"\n >\n @if (config.useIcon) {\n <gui-icon [src]=\"opt.src!\" />\n } @else {\n {{ opt.label }}\n }\n </mat-button-toggle>\n }\n</mat-button-toggle-group>\n@if (config.parentType === 'inline') {\n <mat-hint>\n <gui-field-label [config]=\"config\" />\n </mat-hint>\n}\n", styles: [".gui-button-toggle{--mat-standard-button-toggle-shape: .25rem;--mat-standard-button-toggle-height: 1.5rem;--mat-standard-button-toggle-label-text-size: .75rem;--mat-standard-button-toggle-label-text-weight: 400;--mat-standard-button-toggle-label-text-line-height: var(--mat-standard-button-toggle-height)}.gui-button-toggle .mat-button-toggle-group{flex-wrap:wrap;border-width:0}.gui-button-toggle .mat-button-toggle-group-appearance-standard .mat-button-toggle-appearance-standard+.mat-button-toggle-appearance-standard{border-width:0}.gui-button-toggle .mat-button-toggle-appearance-standard{background-color:var(--mdc-filled-text-field-container-color)}.gui-icon-toggle.mat-button-toggle .mat-button-toggle-label-content{padding:0;line-height:normal}.gui-icon-toggle .mat-button-toggle-button{display:flex}.gui-icon-toggle.mat-button-toggle-checked img{opacity:.64}\n"] }]
64
- }], propDecorators: { config: [{
65
- type: Input
66
- }], disabled: [{
67
- type: Input
68
- }] } });
69
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLXRvZ2dsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2d1aS9idXR0b24tdG9nZ2xlL2J1dHRvbi10b2dnbGUudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9ndWkvYnV0dG9uLXRvZ2dsZS9idXR0b24tdG9nZ2xlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUNMLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxlQUFlLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN4RixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzNELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUVoRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sUUFBUSxDQUFDOzs7QUE2QmpDLE1BQU0sT0FBTyxlQUFlO0lBM0I1QjtRQTRCVSxRQUFHLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFFL0IsV0FBTSxHQUF3QixFQUFFLENBQUM7UUFDakMsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUUxQixVQUFLLEdBQW9DLEVBQUUsQ0FBQztRQUVwQyxhQUFRLEdBQXFELEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztRQUN0RSxjQUFTLEdBQWUsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO0tBdUIxQztJQXJCQyxVQUFVLENBQUMsS0FBVTtRQUNuQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxFQUFvRDtRQUNuRSxJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQsaUJBQWlCLENBQUMsRUFBYztRQUM5QixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsVUFBbUI7UUFDbEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUM7UUFDM0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsYUFBYTtRQUNYLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVCLENBQUM7K0dBL0JVLGVBQWU7bUdBQWYsZUFBZSw2S0FsQmY7WUFDVDtnQkFDRSxPQUFPLEVBQUUsaUJBQWlCO2dCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGVBQWUsQ0FBQztnQkFDOUMsS0FBSyxFQUFFLElBQUk7YUFDWjtTQUNGLDBCQ2hDSCxveUJBOEJBLCs1QkRLSSxXQUFXLCtWQUNYLG9CQUFvQixrVEFDcEIsZUFBZSw2UUFDZixPQUFPLDhFQUNQLGdCQUFnQixxRUFDaEIsT0FBTyxzRUFDUCxhQUFhOzs0RkFHSixlQUFlO2tCQTNCM0IsU0FBUzsrQkFDRSxtQkFBbUIsUUFHdkI7d0JBQ0osS0FBSyxFQUFFLDZCQUE2QjtxQkFDckMsaUJBQ2MsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSxhQUNwQzt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxnQkFBZ0IsQ0FBQzs0QkFDOUMsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0YsY0FDVyxJQUFJLFdBQ1A7d0JBQ1AsV0FBVzt3QkFDWCxvQkFBb0I7d0JBQ3BCLGVBQWU7d0JBQ2YsT0FBTzt3QkFDUCxnQkFBZ0I7d0JBQ2hCLE9BQU87d0JBQ1AsYUFBYTtxQkFDZDs4QkFLUSxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBmb3J3YXJkUmVmLFxuICBpbmplY3QsXG4gIElucHV0LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybXNNb2R1bGUsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0QnV0dG9uVG9nZ2xlLCBNYXRCdXR0b25Ub2dnbGVHcm91cCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbi10b2dnbGUnO1xuaW1wb3J0IHsgTWF0SGludCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgR3VpRmllbGRMYWJlbCB9IGZyb20gJy4uL2ZpZWxkLWxhYmVsL2ZpZWxkLWxhYmVsJztcbmltcG9ydCB7IEd1aUZsZXhEaXJlY3RpdmUgfSBmcm9tICcuLi9ndWktdXRpbHMnO1xuaW1wb3J0IHsgR3VpQmFzaWNWYWx1ZSwgR3VpQ29udHJvbCB9IGZyb20gJy4uL2ludGVyZmFjZSc7XG5pbXBvcnQgeyBHdWlJY29uIH0gZnJvbSAnLi9pY29uJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZ3VpLWJ1dHRvbi10b2dnbGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vYnV0dG9uLXRvZ2dsZS5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2J1dHRvbi10b2dnbGUuc2NzcycsXG4gIGhvc3Q6IHtcbiAgICBjbGFzczogJ2d1aS1maWVsZCBndWktYnV0dG9uLXRvZ2dsZScsXG4gIH0sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEd1aUJ1dHRvblRvZ2dsZSksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICBdLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgTWF0QnV0dG9uVG9nZ2xlR3JvdXAsXG4gICAgTWF0QnV0dG9uVG9nZ2xlLFxuICAgIE1hdEhpbnQsXG4gICAgR3VpRmxleERpcmVjdGl2ZSxcbiAgICBHdWlJY29uLFxuICAgIEd1aUZpZWxkTGFiZWwsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEd1aUJ1dHRvblRvZ2dsZSBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgcHJpdmF0ZSBjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuXG4gIEBJbnB1dCgpIGNvbmZpZzogUGFydGlhbDxHdWlDb250cm9sPiA9IHt9O1xuICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xuXG4gIHZhbHVlOiBHdWlCYXNpY1ZhbHVlIHwgR3VpQmFzaWNWYWx1ZVtdID0gJyc7XG5cbiAgcHJpdmF0ZSBvbkNoYW5nZTogKHZhbHVlOiBHdWlCYXNpY1ZhbHVlIHwgR3VpQmFzaWNWYWx1ZVtdKSA9PiB2b2lkID0gKCkgPT4ge307XG4gIHByaXZhdGUgb25Ub3VjaGVkOiAoKSA9PiB2b2lkID0gKCkgPT4ge307XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBHdWlCYXNpY1ZhbHVlIHwgR3VpQmFzaWNWYWx1ZVtdKSA9PiB2b2lkKSB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKSB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBvblZhbHVlQ2hhbmdlKCkge1xuICAgIHRoaXMub25DaGFuZ2UodGhpcy52YWx1ZSk7XG4gIH1cbn1cbiIsIjxtYXQtYnV0dG9uLXRvZ2dsZS1ncm91cFxuICBbKG5nTW9kZWwpXT1cInZhbHVlXCJcbiAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgW211bHRpcGxlXT1cImNvbmZpZy5tdWx0aXBsZVwiXG4gIChjaGFuZ2UpPVwib25WYWx1ZUNoYW5nZSgpXCJcbiAgaGlkZVNpbmdsZVNlbGVjdGlvbkluZGljYXRvclxuICBoaWRlTXVsdGlwbGVTZWxlY3Rpb25JbmRpY2F0b3Jcbj5cbiAgQGZvciAob3B0IG9mIGNvbmZpZy5vcHRpb25zOyB0cmFjayAkaW5kZXgpIHtcbiAgICA8bWF0LWJ1dHRvbi10b2dnbGVcbiAgICAgIGRpc2FibGVSaXBwbGVcbiAgICAgIFtjbGFzcy5ndWktaWNvbi10b2dnbGVdPVwiY29uZmlnLnVzZUljb25cIlxuICAgICAgW2ZsZXhdPVwib3B0LmNvbFwiXG4gICAgICBbdmFsdWVdPVwib3B0LnZhbHVlXCJcbiAgICAgIFtkaXNhYmxlZF09XCJvcHQuZGlzYWJsZWRcIlxuICAgICAgW3RpdGxlXT1cImNvbmZpZy51c2VJY29uID8gb3B0LmxhYmVsIDogJydcIlxuICAgID5cbiAgICAgIEBpZiAoY29uZmlnLnVzZUljb24pIHtcbiAgICAgICAgPGd1aS1pY29uIFtzcmNdPVwib3B0LnNyYyFcIiAvPlxuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIHt7IG9wdC5sYWJlbCB9fVxuICAgICAgfVxuICAgIDwvbWF0LWJ1dHRvbi10b2dnbGU+XG4gIH1cbjwvbWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXA+XG5AaWYgKGNvbmZpZy5wYXJlbnRUeXBlID09PSAnaW5saW5lJykge1xuICA8bWF0LWhpbnQ+XG4gICAgPGd1aS1maWVsZC1sYWJlbCBbY29uZmlnXT1cImNvbmZpZ1wiIC8+XG4gIDwvbWF0LWhpbnQ+XG59XG4iXX0=
@@ -1,33 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class GuiIcon {
4
- constructor() {
5
- this.src = '';
6
- }
7
- get isUrl() {
8
- return /^(https?:\/\/|\.?\/|data:)\w+/.test(this.src);
9
- }
10
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GuiIcon, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
11
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: GuiIcon, isStandalone: true, selector: "gui-icon", inputs: { src: "src" }, host: { classAttribute: "gui-icon" }, ngImport: i0, template: `
12
- @if (isUrl) {
13
- <img [src]="src" alt="" />
14
- } @else {
15
- <i [class]="src"></i>
16
- }
17
- `, isInline: true, styles: [".gui-icon{display:inline-flex}.gui-icon img,.gui-icon i{display:block;width:var(--mat-standard-button-toggle-height);height:var(--mat-standard-button-toggle-height);line-height:var(--mat-standard-button-toggle-height)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
18
- }
19
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GuiIcon, decorators: [{
20
- type: Component,
21
- args: [{ selector: 'gui-icon', template: `
22
- @if (isUrl) {
23
- <img [src]="src" alt="" />
24
- } @else {
25
- <i [class]="src"></i>
26
- }
27
- `, host: {
28
- class: 'gui-icon',
29
- }, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, styles: [".gui-icon{display:inline-flex}.gui-icon img,.gui-icon i{display:block;width:var(--mat-standard-button-toggle-height);height:var(--mat-standard-button-toggle-height);line-height:var(--mat-standard-button-toggle-height)}\n"] }]
30
- }], propDecorators: { src: [{
31
- type: Input
32
- }] } });
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2d1aS9idXR0b24tdG9nZ2xlL2ljb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBbUI3RixNQUFNLE9BQU8sT0FBTztJQWpCcEI7UUFrQlcsUUFBRyxHQUFHLEVBQUUsQ0FBQztLQUtuQjtJQUhDLElBQUksS0FBSztRQUNQLE9BQU8sK0JBQStCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN4RCxDQUFDOytHQUxVLE9BQU87bUdBQVAsT0FBTyxrSUFmUjs7Ozs7O0dBTVQ7OzRGQVNVLE9BQU87a0JBakJuQixTQUFTOytCQUNFLFVBQVUsWUFDVjs7Ozs7O0dBTVQsUUFFSzt3QkFDSixLQUFLLEVBQUUsVUFBVTtxQkFDbEIsaUJBQ2MsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJOzhCQUdQLEdBQUc7c0JBQVgsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIElucHV0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdndWktaWNvbicsXG4gIHRlbXBsYXRlOiBgXG4gICAgQGlmIChpc1VybCkge1xuICAgICAgPGltZyBbc3JjXT1cInNyY1wiIGFsdD1cIlwiIC8+XG4gICAgfSBAZWxzZSB7XG4gICAgICA8aSBbY2xhc3NdPVwic3JjXCI+PC9pPlxuICAgIH1cbiAgYCxcbiAgc3R5bGVVcmw6ICcuL2ljb24uc2NzcycsXG4gIGhvc3Q6IHtcbiAgICBjbGFzczogJ2d1aS1pY29uJyxcbiAgfSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIEd1aUljb24ge1xuICBASW5wdXQoKSBzcmMgPSAnJztcblxuICBnZXQgaXNVcmwoKSB7XG4gICAgcmV0dXJuIC9eKGh0dHBzPzpcXC9cXC98XFwuP1xcL3xkYXRhOilcXHcrLy50ZXN0KHRoaXMuc3JjKTtcbiAgfVxufVxuIl19
@@ -1,20 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import { Subject } from 'rxjs';
3
- import * as i0 from "@angular/core";
4
- export class GuiCodeareaConfig {
5
- constructor() {
6
- this.changes = new Subject();
7
- this.theme = 'light';
8
- this.languages = [];
9
- this.extensions = [];
10
- }
11
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GuiCodeareaConfig, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
12
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GuiCodeareaConfig, providedIn: 'root' }); }
13
- }
14
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GuiCodeareaConfig, decorators: [{
15
- type: Injectable,
16
- args: [{
17
- providedIn: 'root',
18
- }]
19
- }] });
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZWFyZWEtY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvZ3VpL2NvZGVhcmVhL2NvZGVhcmVhLWNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzNDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBTS9CLE1BQU0sT0FBTyxpQkFBaUI7SUFIOUI7UUFJVyxZQUFPLEdBQWtCLElBQUksT0FBTyxFQUFRLENBQUM7UUFFdEQsVUFBSyxHQUFVLE9BQU8sQ0FBQztRQUV2QixjQUFTLEdBQTBCLEVBQUUsQ0FBQztRQUV0QyxlQUFVLEdBQWlFLEVBQUUsQ0FBQztLQUMvRTsrR0FSWSxpQkFBaUI7bUhBQWpCLGlCQUFpQixjQUZoQixNQUFNOzs0RkFFUCxpQkFBaUI7a0JBSDdCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGhlbWUgfSBmcm9tICdAYWNyb2RhdGEvY29kZS1lZGl0b3InO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTGFuZ3VhZ2VEZXNjcmlwdGlvbiB9IGZyb20gJ0Bjb2RlbWlycm9yL2xhbmd1YWdlJztcbmltcG9ydCB7IEV4dGVuc2lvbiB9IGZyb20gJ0Bjb2RlbWlycm9yL3N0YXRlJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEd1aUNvZGVhcmVhRGlhbG9nRGF0YSB9IGZyb20gJy4vY29kZWFyZWEtZGlhbG9nJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEd1aUNvZGVhcmVhQ29uZmlnIHtcbiAgcmVhZG9ubHkgY2hhbmdlczogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgdGhlbWU6IFRoZW1lID0gJ2xpZ2h0JztcblxuICBsYW5ndWFnZXM6IExhbmd1YWdlRGVzY3JpcHRpb25bXSA9IFtdO1xuXG4gIGV4dGVuc2lvbnM6IEV4dGVuc2lvbltdIHwgKChkYXRhOiBHdWlDb2RlYXJlYURpYWxvZ0RhdGEpID0+IEV4dGVuc2lvbltdKSA9IFtdO1xufVxuIl19
@@ -1,67 +0,0 @@
1
- import { CodeEditor } from '@acrodata/code-editor';
2
- import { RndDialogDragHandle } from '@acrodata/rnd-dialog';
3
- import { DIALOG_DATA, DialogRef } from '@angular/cdk/dialog';
4
- import { ChangeDetectionStrategy, ChangeDetectorRef, Component, DestroyRef, ViewEncapsulation, inject, } from '@angular/core';
5
- import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
6
- import { FormsModule } from '@angular/forms';
7
- import { MatButton, MatIconButton } from '@angular/material/button';
8
- import { MatIcon } from '@angular/material/icon';
9
- import { GuiIconsRegistry } from '../gui-icons';
10
- import { GuiIconButtonWrapper } from '../icon-button-wrapper/icon-button-wrapper';
11
- import { GuiCodeareaConfig } from './codearea-config';
12
- import * as i0 from "@angular/core";
13
- import * as i1 from "@angular/forms";
14
- export class GuiCodeareaDialog {
15
- get languages() {
16
- return this.codeareaCfg.languages;
17
- }
18
- get theme() {
19
- return this.codeareaCfg.theme;
20
- }
21
- get extensions() {
22
- return typeof this.codeareaCfg.extensions === 'function'
23
- ? this.codeareaCfg.extensions(this.data)
24
- : this.codeareaCfg.extensions;
25
- }
26
- constructor() {
27
- this.dialogRef = inject(DialogRef);
28
- this.data = inject(DIALOG_DATA);
29
- this.cdr = inject(ChangeDetectorRef);
30
- this.destroyRef = inject(DestroyRef);
31
- this.codeareaCfg = inject(GuiCodeareaConfig);
32
- this.langDesc = this.codeareaCfg.languages.find(lang => this.data.language && lang.alias.includes(this.data.language.toLowerCase()));
33
- this.title = `${this.data.title || ''} (${this.langDesc?.name || 'Plain Text'})`;
34
- this.lineWrapping = false;
35
- const iconsRegistry = inject(GuiIconsRegistry);
36
- iconsRegistry.add('wrap');
37
- this.codeareaCfg.changes.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {
38
- this.cdr.markForCheck();
39
- });
40
- }
41
- toggleLineWrapping() {
42
- this.lineWrapping = !this.lineWrapping;
43
- }
44
- save() {
45
- this.dialogRef.close(this.data.value);
46
- }
47
- close() {
48
- this.dialogRef.close();
49
- }
50
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GuiCodeareaDialog, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
51
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: GuiCodeareaDialog, isStandalone: true, selector: "gui-codearea-dialog", host: { classAttribute: "gui-codearea-dialog" }, ngImport: i0, template: "<div\n class=\"gui-codearea-dialog-header\"\n [class.dragging]=\"dragHandle.isDragging\"\n rndDialogDragHandle\n #dragHandle=\"rndDialogDragHandle\"\n>\n <span class=\"gui-codearea-dialog-title\" [title]=\"title\">{{ title }}</span>\n\n <span class=\"gui-codearea-dialog-spacer\"></span>\n\n <button mat-stroked-button (click)=\"close()\">Close</button>\n <button mat-flat-button (click)=\"save()\">Save</button>\n</div>\n\n<div class=\"gui-codearea-dialog-content\">\n <code-editor\n [(ngModel)]=\"data.value\"\n [disabled]=\"data.disabled || false\"\n [readonly]=\"data.readonly || false\"\n [language]=\"data.language || ''\"\n [languages]=\"languages\"\n [theme]=\"theme\"\n [extensions]=\"extensions\"\n [lineWrapping]=\"lineWrapping\"\n indentWithTab\n />\n\n <div class=\"gui-codearea-btns\">\n <gui-icon-button-wrapper>\n <button mat-icon-button type=\"button\" (click)=\"toggleLineWrapping()\">\n <mat-icon svgIcon=\"wrap\" />\n </button>\n </gui-icon-button-wrapper>\n </div>\n</div>\n", styles: [".gui-codearea-dialog-panel{--rnd-dialog-container-color: var(--mdc-dialog-container-color)}.gui-codearea-dialog{--mdc-outlined-button-label-text-size: .75rem;--mdc-outlined-button-container-height: 1.5rem;--mat-outlined-button-horizontal-padding: .75rem;--mat-outlined-button-touch-target-display: none;--mdc-filled-button-label-text-size: .75rem;--mdc-filled-button-container-height: 1.5rem;--mat-filled-button-horizontal-padding: .75rem;--mat-filled-button-touch-target-display: none;display:flex;flex-direction:column;height:100%;overflow:hidden;border-radius:inherit;font-size:.75rem}.gui-codearea-dialog-header{display:flex;gap:.5rem;align-items:center;padding:.5rem;cursor:grab;border-bottom:1px solid rgba(0,0,0,.24);box-shadow:0 1px #ffffff3d}.gui-codearea-dialog-header.dragging{cursor:grabbing}.gui-codearea-dialog-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gui-codearea-dialog-spacer{flex:1}.gui-codearea-dialog-content{position:relative;flex:1;overflow:auto}.gui-codearea-dialog-content .code-editor{height:100%;overflow:auto;border:1px solid transparent}.gui-codearea-dialog-content:hover .gui-codearea-btns{display:block}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: RndDialogDragHandle, selector: "[rnd-dialog-drag-handle], [rndDialogDragHandle]", exportAs: ["rndDialogDragHandle"] }, { kind: "component", type: CodeEditor, selector: "code-editor", inputs: ["root", "autoFocus", "value", "disabled", "readonly", "theme", "placeholder", "indentWithTab", "indentUnit", "lineWrapping", "highlightWhitespace", "languages", "language", "setup", "extensions"], outputs: ["change", "focus", "blur"] }, { kind: "component", type: GuiIconButtonWrapper, selector: "gui-icon-button-wrapper" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
52
- }
53
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GuiCodeareaDialog, decorators: [{
54
- type: Component,
55
- args: [{ selector: 'gui-codearea-dialog', standalone: true, imports: [
56
- FormsModule,
57
- MatButton,
58
- MatIconButton,
59
- MatIcon,
60
- RndDialogDragHandle,
61
- CodeEditor,
62
- GuiIconButtonWrapper,
63
- ], host: {
64
- class: 'gui-codearea-dialog',
65
- }, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"gui-codearea-dialog-header\"\n [class.dragging]=\"dragHandle.isDragging\"\n rndDialogDragHandle\n #dragHandle=\"rndDialogDragHandle\"\n>\n <span class=\"gui-codearea-dialog-title\" [title]=\"title\">{{ title }}</span>\n\n <span class=\"gui-codearea-dialog-spacer\"></span>\n\n <button mat-stroked-button (click)=\"close()\">Close</button>\n <button mat-flat-button (click)=\"save()\">Save</button>\n</div>\n\n<div class=\"gui-codearea-dialog-content\">\n <code-editor\n [(ngModel)]=\"data.value\"\n [disabled]=\"data.disabled || false\"\n [readonly]=\"data.readonly || false\"\n [language]=\"data.language || ''\"\n [languages]=\"languages\"\n [theme]=\"theme\"\n [extensions]=\"extensions\"\n [lineWrapping]=\"lineWrapping\"\n indentWithTab\n />\n\n <div class=\"gui-codearea-btns\">\n <gui-icon-button-wrapper>\n <button mat-icon-button type=\"button\" (click)=\"toggleLineWrapping()\">\n <mat-icon svgIcon=\"wrap\" />\n </button>\n </gui-icon-button-wrapper>\n </div>\n</div>\n", styles: [".gui-codearea-dialog-panel{--rnd-dialog-container-color: var(--mdc-dialog-container-color)}.gui-codearea-dialog{--mdc-outlined-button-label-text-size: .75rem;--mdc-outlined-button-container-height: 1.5rem;--mat-outlined-button-horizontal-padding: .75rem;--mat-outlined-button-touch-target-display: none;--mdc-filled-button-label-text-size: .75rem;--mdc-filled-button-container-height: 1.5rem;--mat-filled-button-horizontal-padding: .75rem;--mat-filled-button-touch-target-display: none;display:flex;flex-direction:column;height:100%;overflow:hidden;border-radius:inherit;font-size:.75rem}.gui-codearea-dialog-header{display:flex;gap:.5rem;align-items:center;padding:.5rem;cursor:grab;border-bottom:1px solid rgba(0,0,0,.24);box-shadow:0 1px #ffffff3d}.gui-codearea-dialog-header.dragging{cursor:grabbing}.gui-codearea-dialog-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gui-codearea-dialog-spacer{flex:1}.gui-codearea-dialog-content{position:relative;flex:1;overflow:auto}.gui-codearea-dialog-content .code-editor{height:100%;overflow:auto;border:1px solid transparent}.gui-codearea-dialog-content:hover .gui-codearea-btns{display:block}\n"] }]
66
- }], ctorParameters: () => [] });
67
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZWFyZWEtZGlhbG9nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvZ3VpL2NvZGVhcmVhL2NvZGVhcmVhLWRpYWxvZy50cyIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL2d1aS9jb2RlYXJlYS9jb2RlYXJlYS1kaWFsb2cuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbkQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM3RCxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLGlCQUFpQixFQUNqQixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDcEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2pELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNoRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNsRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7O0FBOEJ0RCxNQUFNLE9BQU8saUJBQWlCO0lBTzVCLElBQUksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUM7SUFDcEMsQ0FBQztJQUVELElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUM7SUFDaEMsQ0FBQztJQUVELElBQUksVUFBVTtRQUNaLE9BQU8sT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsS0FBSyxVQUFVO1lBQ3RELENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQ3hDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQztJQUNsQyxDQUFDO0lBVUQ7UUE1QlEsY0FBUyxHQUFHLE1BQU0sQ0FBdUMsU0FBUyxDQUFDLENBQUM7UUFDNUUsU0FBSSxHQUFHLE1BQU0sQ0FBd0IsV0FBVyxDQUFDLENBQUM7UUFDMUMsUUFBRyxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ2hDLGVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDaEMsZ0JBQVcsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQWdCaEQsYUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLElBQUksQ0FDeEMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUNwRixDQUFDO1FBRUYsVUFBSyxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksRUFBRSxLQUFLLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxJQUFJLFlBQVksR0FBRyxDQUFDO1FBRTVFLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBR25CLE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQy9DLGFBQWEsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFMUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDaEYsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUMxQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDekMsQ0FBQztJQUVELElBQUk7UUFDRixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN6QixDQUFDOytHQWhEVSxpQkFBaUI7bUdBQWpCLGlCQUFpQixnSUMvQzlCLG1pQ0FtQ0EsZ3NDREpJLFdBQVcsK1ZBQ1gsU0FBUyxpTEFDVCxhQUFhLDZGQUNiLE9BQU8sMklBQ1AsbUJBQW1CLCtIQUNuQixVQUFVLDRTQUNWLG9CQUFvQjs7NEZBVVgsaUJBQWlCO2tCQXBCN0IsU0FBUzsrQkFDRSxxQkFBcUIsY0FDbkIsSUFBSSxXQUNQO3dCQUNQLFdBQVc7d0JBQ1gsU0FBUzt3QkFDVCxhQUFhO3dCQUNiLE9BQU87d0JBQ1AsbUJBQW1CO3dCQUNuQixVQUFVO3dCQUNWLG9CQUFvQjtxQkFDckIsUUFHSzt3QkFDSixLQUFLLEVBQUUscUJBQXFCO3FCQUM3QixpQkFDYyxpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29kZUVkaXRvciB9IGZyb20gJ0BhY3JvZGF0YS9jb2RlLWVkaXRvcic7XG5pbXBvcnQgeyBSbmREaWFsb2dEcmFnSGFuZGxlIH0gZnJvbSAnQGFjcm9kYXRhL3JuZC1kaWFsb2cnO1xuaW1wb3J0IHsgRElBTE9HX0RBVEEsIERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kaWFsb2cnO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIERlc3Ryb3lSZWYsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBpbmplY3QsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRCdXR0b24sIE1hdEljb25CdXR0b24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0SWNvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgR3VpSWNvbnNSZWdpc3RyeSB9IGZyb20gJy4uL2d1aS1pY29ucyc7XG5pbXBvcnQgeyBHdWlJY29uQnV0dG9uV3JhcHBlciB9IGZyb20gJy4uL2ljb24tYnV0dG9uLXdyYXBwZXIvaWNvbi1idXR0b24td3JhcHBlcic7XG5pbXBvcnQgeyBHdWlDb2RlYXJlYUNvbmZpZyB9IGZyb20gJy4vY29kZWFyZWEtY29uZmlnJztcblxuZXhwb3J0IGludGVyZmFjZSBHdWlDb2RlYXJlYURpYWxvZ0RhdGEge1xuICB2YWx1ZTogc3RyaW5nO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIHJlYWRvbmx5PzogYm9vbGVhbjtcbiAgbGFuZ3VhZ2U/OiBzdHJpbmc7XG4gIHRpdGxlPzogc3RyaW5nO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdndWktY29kZWFyZWEtZGlhbG9nJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIEZvcm1zTW9kdWxlLFxuICAgIE1hdEJ1dHRvbixcbiAgICBNYXRJY29uQnV0dG9uLFxuICAgIE1hdEljb24sXG4gICAgUm5kRGlhbG9nRHJhZ0hhbmRsZSxcbiAgICBDb2RlRWRpdG9yLFxuICAgIEd1aUljb25CdXR0b25XcmFwcGVyLFxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vY29kZWFyZWEtZGlhbG9nLmh0bWwnLFxuICBzdHlsZVVybDogJy4vY29kZWFyZWEtZGlhbG9nLnNjc3MnLFxuICBob3N0OiB7XG4gICAgY2xhc3M6ICdndWktY29kZWFyZWEtZGlhbG9nJyxcbiAgfSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEd1aUNvZGVhcmVhRGlhbG9nIHtcbiAgcHJpdmF0ZSBkaWFsb2dSZWYgPSBpbmplY3Q8RGlhbG9nUmVmPHN0cmluZywgR3VpQ29kZWFyZWFEaWFsb2c+PihEaWFsb2dSZWYpO1xuICBkYXRhID0gaW5qZWN0PEd1aUNvZGVhcmVhRGlhbG9nRGF0YT4oRElBTE9HX0RBVEEpO1xuICBwcml2YXRlIGNkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG4gIHByaXZhdGUgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcbiAgcHJpdmF0ZSBjb2RlYXJlYUNmZyA9IGluamVjdChHdWlDb2RlYXJlYUNvbmZpZyk7XG5cbiAgZ2V0IGxhbmd1YWdlcygpIHtcbiAgICByZXR1cm4gdGhpcy5jb2RlYXJlYUNmZy5sYW5ndWFnZXM7XG4gIH1cblxuICBnZXQgdGhlbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29kZWFyZWFDZmcudGhlbWU7XG4gIH1cblxuICBnZXQgZXh0ZW5zaW9ucygpIHtcbiAgICByZXR1cm4gdHlwZW9mIHRoaXMuY29kZWFyZWFDZmcuZXh0ZW5zaW9ucyA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgPyB0aGlzLmNvZGVhcmVhQ2ZnLmV4dGVuc2lvbnModGhpcy5kYXRhKVxuICAgICAgOiB0aGlzLmNvZGVhcmVhQ2ZnLmV4dGVuc2lvbnM7XG4gIH1cblxuICBsYW5nRGVzYyA9IHRoaXMuY29kZWFyZWFDZmcubGFuZ3VhZ2VzLmZpbmQoXG4gICAgbGFuZyA9PiB0aGlzLmRhdGEubGFuZ3VhZ2UgJiYgbGFuZy5hbGlhcy5pbmNsdWRlcyh0aGlzLmRhdGEubGFuZ3VhZ2UudG9Mb3dlckNhc2UoKSlcbiAgKTtcblxuICB0aXRsZSA9IGAke3RoaXMuZGF0YS50aXRsZSB8fCAnJ30gKCR7dGhpcy5sYW5nRGVzYz8ubmFtZSB8fCAnUGxhaW4gVGV4dCd9KWA7XG5cbiAgbGluZVdyYXBwaW5nID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgY29uc3QgaWNvbnNSZWdpc3RyeSA9IGluamVjdChHdWlJY29uc1JlZ2lzdHJ5KTtcbiAgICBpY29uc1JlZ2lzdHJ5LmFkZCgnd3JhcCcpO1xuXG4gICAgdGhpcy5jb2RlYXJlYUNmZy5jaGFuZ2VzLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9KTtcbiAgfVxuXG4gIHRvZ2dsZUxpbmVXcmFwcGluZygpIHtcbiAgICB0aGlzLmxpbmVXcmFwcGluZyA9ICF0aGlzLmxpbmVXcmFwcGluZztcbiAgfVxuXG4gIHNhdmUoKSB7XG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UodGhpcy5kYXRhLnZhbHVlKTtcbiAgfVxuXG4gIGNsb3NlKCkge1xuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJndWktY29kZWFyZWEtZGlhbG9nLWhlYWRlclwiXG4gIFtjbGFzcy5kcmFnZ2luZ109XCJkcmFnSGFuZGxlLmlzRHJhZ2dpbmdcIlxuICBybmREaWFsb2dEcmFnSGFuZGxlXG4gICNkcmFnSGFuZGxlPVwicm5kRGlhbG9nRHJhZ0hhbmRsZVwiXG4+XG4gIDxzcGFuIGNsYXNzPVwiZ3VpLWNvZGVhcmVhLWRpYWxvZy10aXRsZVwiIFt0aXRsZV09XCJ0aXRsZVwiPnt7IHRpdGxlIH19PC9zcGFuPlxuXG4gIDxzcGFuIGNsYXNzPVwiZ3VpLWNvZGVhcmVhLWRpYWxvZy1zcGFjZXJcIj48L3NwYW4+XG5cbiAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gKGNsaWNrKT1cImNsb3NlKClcIj5DbG9zZTwvYnV0dG9uPlxuICA8YnV0dG9uIG1hdC1mbGF0LWJ1dHRvbiAoY2xpY2spPVwic2F2ZSgpXCI+U2F2ZTwvYnV0dG9uPlxuPC9kaXY+XG5cbjxkaXYgY2xhc3M9XCJndWktY29kZWFyZWEtZGlhbG9nLWNvbnRlbnRcIj5cbiAgPGNvZGUtZWRpdG9yXG4gICAgWyhuZ01vZGVsKV09XCJkYXRhLnZhbHVlXCJcbiAgICBbZGlzYWJsZWRdPVwiZGF0YS5kaXNhYmxlZCB8fCBmYWxzZVwiXG4gICAgW3JlYWRvbmx5XT1cImRhdGEucmVhZG9ubHkgfHwgZmFsc2VcIlxuICAgIFtsYW5ndWFnZV09XCJkYXRhLmxhbmd1YWdlIHx8ICcnXCJcbiAgICBbbGFuZ3VhZ2VzXT1cImxhbmd1YWdlc1wiXG4gICAgW3RoZW1lXT1cInRoZW1lXCJcbiAgICBbZXh0ZW5zaW9uc109XCJleHRlbnNpb25zXCJcbiAgICBbbGluZVdyYXBwaW5nXT1cImxpbmVXcmFwcGluZ1wiXG4gICAgaW5kZW50V2l0aFRhYlxuICAvPlxuXG4gIDxkaXYgY2xhc3M9XCJndWktY29kZWFyZWEtYnRuc1wiPlxuICAgIDxndWktaWNvbi1idXR0b24td3JhcHBlcj5cbiAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwidG9nZ2xlTGluZVdyYXBwaW5nKClcIj5cbiAgICAgICAgPG1hdC1pY29uIHN2Z0ljb249XCJ3cmFwXCIgLz5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZ3VpLWljb24tYnV0dG9uLXdyYXBwZXI+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -1,148 +0,0 @@
1
- import { CodeEditor } from '@acrodata/code-editor';
2
- import { RndDialog } from '@acrodata/rnd-dialog';
3
- import { coerceCssPixelValue } from '@angular/cdk/coercion';
4
- import { ChangeDetectionStrategy, ChangeDetectorRef, Component, DestroyRef, forwardRef, inject, Input, ViewEncapsulation, } from '@angular/core';
5
- import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
6
- import { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';
7
- import { MatIconButton } from '@angular/material/button';
8
- import { MatHint } from '@angular/material/form-field';
9
- import { MatIcon } from '@angular/material/icon';
10
- import { GuiFieldLabel } from '../field-label/field-label';
11
- import { GuiIconsRegistry } from '../gui-icons';
12
- import { GuiIconButtonWrapper } from '../icon-button-wrapper/icon-button-wrapper';
13
- import { GuiCodeareaConfig } from './codearea-config';
14
- import { GuiCodeareaDialog } from './codearea-dialog';
15
- import * as i0 from "@angular/core";
16
- import * as i1 from "@angular/forms";
17
- export class GuiCodearea {
18
- get height() {
19
- return coerceCssPixelValue(this.config.height || this._height);
20
- }
21
- set height(value) {
22
- this._height = value;
23
- }
24
- get language() {
25
- return this.config.language || this._language;
26
- }
27
- set language(value) {
28
- this._language = value;
29
- }
30
- get languages() {
31
- return this.codeareaCfg.languages;
32
- }
33
- get theme() {
34
- return this.codeareaCfg.theme;
35
- }
36
- get dialogData() {
37
- return {
38
- value: this.value,
39
- disabled: this.disabled,
40
- language: this.language,
41
- };
42
- }
43
- get extensions() {
44
- return typeof this.codeareaCfg.extensions === 'function'
45
- ? this.codeareaCfg.extensions(this.dialogData)
46
- : this.codeareaCfg.extensions;
47
- }
48
- constructor() {
49
- this.rndDialog = inject(RndDialog);
50
- this.cdr = inject(ChangeDetectorRef);
51
- this.destroyRef = inject(DestroyRef);
52
- this.codeareaCfg = inject(GuiCodeareaConfig);
53
- this.config = {};
54
- this.disabled = false;
55
- this.setup = 'minimal';
56
- this._height = 120;
57
- this._language = '';
58
- this.value = '';
59
- this.oldValue = '';
60
- this.onChange = () => { };
61
- this.onTouched = () => { };
62
- const iconsRegistry = inject(GuiIconsRegistry);
63
- iconsRegistry.add('expand');
64
- this.codeareaCfg.changes.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {
65
- this.cdr.markForCheck();
66
- });
67
- }
68
- writeValue(value) {
69
- if (typeof value === 'string' || value == null) {
70
- this.value = value || '';
71
- }
72
- else {
73
- this.value = value.toString();
74
- }
75
- this.oldValue = this.value;
76
- this.cdr.markForCheck();
77
- }
78
- registerOnChange(fn) {
79
- this.onChange = fn;
80
- }
81
- registerOnTouched(fn) {
82
- this.onTouched = fn;
83
- }
84
- setDisabledState(isDisabled) {
85
- this.disabled = isDisabled;
86
- this.cdr.markForCheck();
87
- }
88
- onValueChange() {
89
- if (this.value !== this.oldValue) {
90
- this.onChange(this.value);
91
- this.oldValue = this.value;
92
- }
93
- }
94
- onExpand() {
95
- const dialogRef = this.rndDialog.open(GuiCodeareaDialog, {
96
- panelClass: 'gui-codearea-dialog-panel',
97
- hasBackdrop: false,
98
- width: '600px',
99
- data: this.dialogData,
100
- });
101
- dialogRef.closed.subscribe(newValue => {
102
- if (newValue) {
103
- this.value = newValue;
104
- this.cdr.detectChanges();
105
- this.onValueChange();
106
- }
107
- });
108
- }
109
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GuiCodearea, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
110
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: GuiCodearea, isStandalone: true, selector: "gui-codearea", inputs: { config: "config", disabled: "disabled", setup: "setup", height: "height", language: "language" }, host: { classAttribute: "gui-field gui-codearea" }, providers: [
111
- {
112
- provide: NG_VALUE_ACCESSOR,
113
- useExisting: forwardRef(() => GuiCodearea),
114
- multi: true,
115
- },
116
- ], ngImport: i0, template: "<code-editor\n [style.height]=\"height\"\n [(ngModel)]=\"value\"\n [disabled]=\"disabled\"\n [language]=\"language\"\n [languages]=\"languages\"\n [theme]=\"theme\"\n [setup]=\"setup\"\n [extensions]=\"extensions\"\n (blur)=\"onValueChange()\"\n/>\n\n<div class=\"gui-codearea-btns\">\n <gui-icon-button-wrapper>\n <button mat-icon-button type=\"button\" (click)=\"onExpand()\">\n <mat-icon svgIcon=\"expand\" />\n </button>\n </gui-icon-button-wrapper>\n</div>\n\n@if (config.parentType === 'inline') {\n <mat-hint>\n <gui-field-label [config]=\"config\" />\n </mat-hint>\n}\n", styles: [".gui-codearea{position:relative;overflow:auto;border:1px solid var(--mdc-outlined-text-field-outline-color);border-radius:var(--mdc-outlined-text-field-container-shape)}.gui-codearea .code-editor{width:100%;min-height:1.5rem;overflow:auto;resize:vertical}.gui-codearea:hover .gui-codearea-btns{display:block}.gui-codearea-btns{position:absolute;top:0;right:0;display:none;margin:2px}[dir=rtl] .gui-codearea-btns{left:0;right:auto}.gui-codearea-btns .gui-icon-button-wrapper .mat-mdc-icon-button,.gui-codearea-btns .gui-icon-button-wrapper .mat-icon{width:1.25rem;height:1.25rem}.gui-codearea-btns .mat-mdc-icon-button{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:.25rem}.gui-codearea-btns .mat-mdc-icon-button .mat-mdc-button-persistent-ripple{border-radius:inherit}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "directive", type: MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "component", type: CodeEditor, selector: "code-editor", inputs: ["root", "autoFocus", "value", "disabled", "readonly", "theme", "placeholder", "indentWithTab", "indentUnit", "lineWrapping", "highlightWhitespace", "languages", "language", "setup", "extensions"], outputs: ["change", "focus", "blur"] }, { kind: "component", type: GuiFieldLabel, selector: "gui-field-label", inputs: ["config", "index"] }, { kind: "component", type: GuiIconButtonWrapper, selector: "gui-icon-button-wrapper" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
117
- }
118
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GuiCodearea, decorators: [{
119
- type: Component,
120
- args: [{ selector: 'gui-codearea', host: {
121
- class: 'gui-field gui-codearea',
122
- }, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
123
- {
124
- provide: NG_VALUE_ACCESSOR,
125
- useExisting: forwardRef(() => GuiCodearea),
126
- multi: true,
127
- },
128
- ], standalone: true, imports: [
129
- FormsModule,
130
- MatIcon,
131
- MatIconButton,
132
- MatHint,
133
- CodeEditor,
134
- GuiFieldLabel,
135
- GuiIconButtonWrapper,
136
- ], template: "<code-editor\n [style.height]=\"height\"\n [(ngModel)]=\"value\"\n [disabled]=\"disabled\"\n [language]=\"language\"\n [languages]=\"languages\"\n [theme]=\"theme\"\n [setup]=\"setup\"\n [extensions]=\"extensions\"\n (blur)=\"onValueChange()\"\n/>\n\n<div class=\"gui-codearea-btns\">\n <gui-icon-button-wrapper>\n <button mat-icon-button type=\"button\" (click)=\"onExpand()\">\n <mat-icon svgIcon=\"expand\" />\n </button>\n </gui-icon-button-wrapper>\n</div>\n\n@if (config.parentType === 'inline') {\n <mat-hint>\n <gui-field-label [config]=\"config\" />\n </mat-hint>\n}\n", styles: [".gui-codearea{position:relative;overflow:auto;border:1px solid var(--mdc-outlined-text-field-outline-color);border-radius:var(--mdc-outlined-text-field-container-shape)}.gui-codearea .code-editor{width:100%;min-height:1.5rem;overflow:auto;resize:vertical}.gui-codearea:hover .gui-codearea-btns{display:block}.gui-codearea-btns{position:absolute;top:0;right:0;display:none;margin:2px}[dir=rtl] .gui-codearea-btns{left:0;right:auto}.gui-codearea-btns .gui-icon-button-wrapper .mat-mdc-icon-button,.gui-codearea-btns .gui-icon-button-wrapper .mat-icon{width:1.25rem;height:1.25rem}.gui-codearea-btns .mat-mdc-icon-button{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:.25rem}.gui-codearea-btns .mat-mdc-icon-button .mat-mdc-button-persistent-ripple{border-radius:inherit}\n"] }]
137
- }], ctorParameters: () => [], propDecorators: { config: [{
138
- type: Input
139
- }], disabled: [{
140
- type: Input
141
- }], setup: [{
142
- type: Input
143
- }], height: [{
144
- type: Input
145
- }], language: [{
146
- type: Input
147
- }] } });
148
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZWFyZWEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9ndWkvY29kZWFyZWEvY29kZWFyZWEudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9ndWkvY29kZWFyZWEvY29kZWFyZWEuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFTLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzVELE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBQ0wsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBd0IsV0FBVyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzNELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNoRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUVsRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsaUJBQWlCLEVBQXlCLE1BQU0sbUJBQW1CLENBQUM7OztBQTZCN0UsTUFBTSxP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RSxPQUFPLEVBQUUsaUJBQWlCO2dCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQztnQkFDMUMsS0FBSyxFQUFFLElBQUk7YUFDWjtTQUNGLDBCQ3hDSCw4bEJBeUJBLHMxQkRrQkksV0FBVywrVkFDWCxPQUFPLDJJQUNQLGFBQWEsNkZBQ2IsT0FBTyw4RUFDUCxVQUFVLDRTQUNWLGFBQWEseUZBQ2Isb0JBQW9COzs0RkFHWCxXQUFXO2tCQTNCdkIsU0FBUzsrQkFDRSxjQUFjLFFBR2xCO3dCQUNKLEtBQUssRUFBRSx3QkFBd0I7cUJBQ2hDLGlCQUNjLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0sYUFDcEM7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsWUFBWSxDQUFDOzRCQUMxQyxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRixjQUNXLElBQUksV0FDUDt3QkFDUCxXQUFXO3dCQUNYLE9BQU87d0JBQ1AsYUFBYTt3QkFDYixPQUFPO3dCQUNQLFVBQVU7d0JBQ1YsYUFBYTt3QkFDYixvQkFBb0I7cUJBQ3JCO3dEQVFRLE1BQU07c0JBQWQsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVHLEtBQUs7c0JBQWIsS0FBSztnQkFHRixNQUFNO3NCQURULEtBQUs7Z0JBVUYsUUFBUTtzQkFEWCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29kZUVkaXRvciwgU2V0dXAgfSBmcm9tICdAYWNyb2RhdGEvY29kZS1lZGl0b3InO1xuaW1wb3J0IHsgUm5kRGlhbG9nIH0gZnJvbSAnQGFjcm9kYXRhL3JuZC1kaWFsb2cnO1xuaW1wb3J0IHsgY29lcmNlQ3NzUGl4ZWxWYWx1ZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRGVzdHJveVJlZixcbiAgZm9yd2FyZFJlZixcbiAgaW5qZWN0LFxuICBJbnB1dCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1zTW9kdWxlLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdEljb25CdXR0b24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0SGludCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgTWF0SWNvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgR3VpRmllbGRMYWJlbCB9IGZyb20gJy4uL2ZpZWxkLWxhYmVsL2ZpZWxkLWxhYmVsJztcbmltcG9ydCB7IEd1aUljb25zUmVnaXN0cnkgfSBmcm9tICcuLi9ndWktaWNvbnMnO1xuaW1wb3J0IHsgR3VpSWNvbkJ1dHRvbldyYXBwZXIgfSBmcm9tICcuLi9pY29uLWJ1dHRvbi13cmFwcGVyL2ljb24tYnV0dG9uLXdyYXBwZXInO1xuaW1wb3J0IHsgR3VpQ29udHJvbCB9IGZyb20gJy4uL2ludGVyZmFjZSc7XG5pbXBvcnQgeyBHdWlDb2RlYXJlYUNvbmZpZyB9IGZyb20gJy4vY29kZWFyZWEtY29uZmlnJztcbmltcG9ydCB7IEd1aUNvZGVhcmVhRGlhbG9nLCBHdWlDb2RlYXJlYURpYWxvZ0RhdGEgfSBmcm9tICcuL2NvZGVhcmVhLWRpYWxvZyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2d1aS1jb2RlYXJlYScsXG4gIHRlbXBsYXRlVXJsOiAnLi9jb2RlYXJlYS5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2NvZGVhcmVhLnNjc3MnLFxuICBob3N0OiB7XG4gICAgY2xhc3M6ICdndWktZmllbGQgZ3VpLWNvZGVhcmVhJyxcbiAgfSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gR3VpQ29kZWFyZWEpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIEZvcm1zTW9kdWxlLFxuICAgIE1hdEljb24sXG4gICAgTWF0SWNvbkJ1dHRvbixcbiAgICBNYXRIaW50LFxuICAgIENvZGVFZGl0b3IsXG4gICAgR3VpRmllbGRMYWJlbCxcbiAgICBHdWlJY29uQnV0dG9uV3JhcHBlcixcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgR3VpQ29kZWFyZWEgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gIHByaXZhdGUgcm5kRGlhbG9nID0gaW5qZWN0KFJuZERpYWxvZyk7XG4gIHByaXZhdGUgY2RyID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcbiAgcHJpdmF0ZSBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuICBwcml2YXRlIGNvZGVhcmVhQ2ZnID0gaW5qZWN0KEd1aUNvZGVhcmVhQ29uZmlnKTtcblxuICBASW5wdXQoKSBjb25maWc6IFBhcnRpYWw8R3VpQ29udHJvbD4gPSB7fTtcbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcblxuICBASW5wdXQoKSBzZXR1cDogU2V0dXAgPSAnbWluaW1hbCc7XG5cbiAgQElucHV0KClcbiAgZ2V0IGhlaWdodCgpIHtcbiAgICByZXR1cm4gY29lcmNlQ3NzUGl4ZWxWYWx1ZSh0aGlzLmNvbmZpZy5oZWlnaHQgfHwgdGhpcy5faGVpZ2h0KTtcbiAgfVxuICBzZXQgaGVpZ2h0KHZhbHVlOiBzdHJpbmcgfCBudW1iZXIpIHtcbiAgICB0aGlzLl9oZWlnaHQgPSB2YWx1ZTtcbiAgfVxuICBwcml2YXRlIF9oZWlnaHQ6IHN0cmluZyB8IG51bWJlciA9IDEyMDtcblxuICBASW5wdXQoKVxuICBnZXQgbGFuZ3VhZ2UoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLmxhbmd1YWdlIHx8IHRoaXMuX2xhbmd1YWdlO1xuICB9XG4gIHNldCBsYW5ndWFnZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fbGFuZ3VhZ2UgPSB2YWx1ZTtcbiAgfVxuICBwcml2YXRlIF9sYW5ndWFnZSA9ICcnO1xuXG4gIGdldCBsYW5ndWFnZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29kZWFyZWFDZmcubGFuZ3VhZ2VzO1xuICB9XG5cbiAgZ2V0IHRoZW1lKCkge1xuICAgIHJldHVybiB0aGlzLmNvZGVhcmVhQ2ZnLnRoZW1lO1xuICB9XG5cbiAgZ2V0IGRpYWxvZ0RhdGEoKTogR3VpQ29kZWFyZWFEaWFsb2dEYXRhIHtcbiAgICByZXR1cm4ge1xuICAgICAgdmFsdWU6IHRoaXMudmFsdWUsXG4gICAgICBkaXNhYmxlZDogdGhpcy5kaXNhYmxlZCxcbiAgICAgIGxhbmd1YWdlOiB0aGlzLmxhbmd1YWdlLFxuICAgIH07XG4gIH1cblxuICBnZXQgZXh0ZW5zaW9ucygpIHtcbiAgICByZXR1cm4gdHlwZW9mIHRoaXMuY29kZWFyZWFDZmcuZXh0ZW5zaW9ucyA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgPyB0aGlzLmNvZGVhcmVhQ2ZnLmV4dGVuc2lvbnModGhpcy5kaWFsb2dEYXRhKVxuICAgICAgOiB0aGlzLmNvZGVhcmVhQ2ZnLmV4dGVuc2lvbnM7XG4gIH1cblxuICB2YWx1ZSA9ICcnO1xuICBwcml2YXRlIG9sZFZhbHVlID0gJyc7XG5cbiAgcHJpdmF0ZSBvbkNoYW5nZTogKHZhbHVlOiBzdHJpbmcpID0+IHZvaWQgPSAoKSA9PiB7fTtcbiAgcHJpdmF0ZSBvblRvdWNoZWQ6ICgpID0+IHZvaWQgPSAoKSA9PiB7fTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBjb25zdCBpY29uc1JlZ2lzdHJ5ID0gaW5qZWN0KEd1aUljb25zUmVnaXN0cnkpO1xuICAgIGljb25zUmVnaXN0cnkuYWRkKCdleHBhbmQnKTtcblxuICAgIHRoaXMuY29kZWFyZWFDZmcuY2hhbmdlcy5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfSk7XG4gIH1cblxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyB8fCB2YWx1ZSA9PSBudWxsKSB7XG4gICAgICB0aGlzLnZhbHVlID0gdmFsdWUgfHwgJyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZS50b1N0cmluZygpO1xuICAgIH1cbiAgICB0aGlzLm9sZFZhbHVlID0gdGhpcy52YWx1ZTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkKSB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKSB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBvblZhbHVlQ2hhbmdlKCkge1xuICAgIGlmICh0aGlzLnZhbHVlICE9PSB0aGlzLm9sZFZhbHVlKSB7XG4gICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMudmFsdWUpO1xuICAgICAgdGhpcy5vbGRWYWx1ZSA9IHRoaXMudmFsdWU7XG4gICAgfVxuICB9XG5cbiAgb25FeHBhbmQoKSB7XG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5ybmREaWFsb2cub3BlbjxzdHJpbmcsIEd1aUNvZGVhcmVhRGlhbG9nRGF0YSwgR3VpQ29kZWFyZWFEaWFsb2c+KFxuICAgICAgR3VpQ29kZWFyZWFEaWFsb2csXG4gICAgICB7XG4gICAgICAgIHBhbmVsQ2xhc3M6ICdndWktY29kZWFyZWEtZGlhbG9nLXBhbmVsJyxcbiAgICAgICAgaGFzQmFja2Ryb3A6IGZhbHNlLFxuICAgICAgICB3aWR0aDogJzYwMHB4JyxcbiAgICAgICAgZGF0YTogdGhpcy5kaWFsb2dEYXRhLFxuICAgICAgfVxuICAgICk7XG5cbiAgICBkaWFsb2dSZWYuY2xvc2VkLnN1YnNjcmliZShuZXdWYWx1ZSA9PiB7XG4gICAgICBpZiAobmV3VmFsdWUpIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IG5ld1ZhbHVlO1xuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIHRoaXMub25WYWx1ZUNoYW5nZSgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG4iLCI8Y29kZS1lZGl0b3JcbiAgW3N0eWxlLmhlaWdodF09XCJoZWlnaHRcIlxuICBbKG5nTW9kZWwpXT1cInZhbHVlXCJcbiAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgW2xhbmd1YWdlXT1cImxhbmd1YWdlXCJcbiAgW2xhbmd1YWdlc109XCJsYW5ndWFnZXNcIlxuICBbdGhlbWVdPVwidGhlbWVcIlxuICBbc2V0dXBdPVwic2V0dXBcIlxuICBbZXh0ZW5zaW9uc109XCJleHRlbnNpb25zXCJcbiAgKGJsdXIpPVwib25WYWx1ZUNoYW5nZSgpXCJcbi8+XG5cbjxkaXYgY2xhc3M9XCJndWktY29kZWFyZWEtYnRuc1wiPlxuICA8Z3VpLWljb24tYnV0dG9uLXdyYXBwZXI+XG4gICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJvbkV4cGFuZCgpXCI+XG4gICAgICA8bWF0LWljb24gc3ZnSWNvbj1cImV4cGFuZFwiIC8+XG4gICAgPC9idXR0b24+XG4gIDwvZ3VpLWljb24tYnV0dG9uLXdyYXBwZXI+XG48L2Rpdj5cblxuQGlmIChjb25maWcucGFyZW50VHlwZSA9PT0gJ2lubGluZScpIHtcbiAgPG1hdC1oaW50PlxuICAgIDxndWktZmllbGQtbGFiZWwgW2NvbmZpZ109XCJjb25maWdcIiAvPlxuICA8L21hdC1oaW50PlxufVxuIl19