@acrodata/gui 3.5.0 → 3.5.1

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.
@@ -425,7 +425,7 @@ class GuiCodeareaDialog {
425
425
  this.dialogRef.close();
426
426
  }
427
427
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: GuiCodeareaDialog, deps: [], target: i0.ɵɵFactoryTarget.Component });
428
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.14", 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]=\"data.extensions || []\"\n [lineWrapping]=\"lineWrapping\"\n indentWithTab\n />\n\n <gui-codearea-toolbar>\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 </gui-codearea-toolbar>\n</div>\n", styles: [".gui-codearea-dialog-panel{--rnd-dialog-container-color: var(--mat-dialog-container-color, var(--mat-sys-surface, white))}.gui-codearea-dialog{--mat-button-outlined-label-text-size: .75rem;--mat-button-outlined-container-height: 1.5rem;--mat-button-outlined-horizontal-padding: .75rem;--mat-button-outlined-touch-target-display: none;--mat-button-filled-label-text-size: .75rem;--mat-button-filled-container-height: 1.5rem;--mat-button-filled-horizontal-padding: .75rem;--mat-button-filled-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 .gui-codearea-toolbar{display:none}.gui-codearea-dialog-content:hover .gui-codearea-toolbar{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[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { 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" }, { kind: "component", type: GuiCodeareaToolbar, selector: "gui-codearea-toolbar" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
428
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.14", 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 type=\"button\" (click)=\"close()\">Close</button>\n <button mat-flat-button type=\"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]=\"data.extensions || []\"\n [lineWrapping]=\"lineWrapping\"\n indentWithTab\n />\n\n <gui-codearea-toolbar>\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 </gui-codearea-toolbar>\n</div>\n", styles: [".gui-codearea-dialog-panel{--rnd-dialog-container-color: var(--mat-dialog-container-color, var(--mat-sys-surface, white))}.gui-codearea-dialog{--mat-button-outlined-label-text-size: .75rem;--mat-button-outlined-container-height: 1.5rem;--mat-button-outlined-horizontal-padding: .75rem;--mat-button-outlined-touch-target-display: none;--mat-button-filled-label-text-size: .75rem;--mat-button-filled-container-height: 1.5rem;--mat-button-filled-horizontal-padding: .75rem;--mat-button-filled-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 .gui-codearea-toolbar{display:none}.gui-codearea-dialog-content:hover .gui-codearea-toolbar{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[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { 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" }, { kind: "component", type: GuiCodeareaToolbar, selector: "gui-codearea-toolbar" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
429
429
  }
430
430
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: GuiCodeareaDialog, decorators: [{
431
431
  type: Component,
@@ -440,7 +440,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
440
440
  GuiCodeareaToolbar,
441
441
  ], host: {
442
442
  class: 'gui-codearea-dialog',
443
- }, 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]=\"data.extensions || []\"\n [lineWrapping]=\"lineWrapping\"\n indentWithTab\n />\n\n <gui-codearea-toolbar>\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 </gui-codearea-toolbar>\n</div>\n", styles: [".gui-codearea-dialog-panel{--rnd-dialog-container-color: var(--mat-dialog-container-color, var(--mat-sys-surface, white))}.gui-codearea-dialog{--mat-button-outlined-label-text-size: .75rem;--mat-button-outlined-container-height: 1.5rem;--mat-button-outlined-horizontal-padding: .75rem;--mat-button-outlined-touch-target-display: none;--mat-button-filled-label-text-size: .75rem;--mat-button-filled-container-height: 1.5rem;--mat-button-filled-horizontal-padding: .75rem;--mat-button-filled-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 .gui-codearea-toolbar{display:none}.gui-codearea-dialog-content:hover .gui-codearea-toolbar{display:block}\n"] }]
443
+ }, 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 type=\"button\" (click)=\"close()\">Close</button>\n <button mat-flat-button type=\"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]=\"data.extensions || []\"\n [lineWrapping]=\"lineWrapping\"\n indentWithTab\n />\n\n <gui-codearea-toolbar>\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 </gui-codearea-toolbar>\n</div>\n", styles: [".gui-codearea-dialog-panel{--rnd-dialog-container-color: var(--mat-dialog-container-color, var(--mat-sys-surface, white))}.gui-codearea-dialog{--mat-button-outlined-label-text-size: .75rem;--mat-button-outlined-container-height: 1.5rem;--mat-button-outlined-horizontal-padding: .75rem;--mat-button-outlined-touch-target-display: none;--mat-button-filled-label-text-size: .75rem;--mat-button-filled-container-height: 1.5rem;--mat-button-filled-horizontal-padding: .75rem;--mat-button-filled-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 .gui-codearea-toolbar{display:none}.gui-codearea-dialog-content:hover .gui-codearea-toolbar{display:block}\n"] }]
444
444
  }], ctorParameters: () => [] });
445
445
 
446
446
  class GuiCodearea {
@@ -1066,7 +1066,7 @@ class GuiFill {
1066
1066
  useExisting: forwardRef(() => GuiFill),
1067
1067
  multi: true,
1068
1068
  },
1069
- ], viewQueries: [{ propertyName: "colorpicker", first: true, predicate: MtxColorpicker, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<mat-form-field>\n <ng-container matPrefix>\n <button class=\"gui-color-block\" (click)=\"openColorPicker($event)\">\n <span\n class=\"gui-color-block-bg\"\n [style.background]=\"value + ' center / contain no-repeat'\"\n ></span>\n </button>\n </ng-container>\n\n <input\n matInput\n [(ngModel)]=\"value\"\n [disabled]=\"disabled\"\n [placeholder]=\"config.placeholder || ''\"\n [mtxColorpicker]=\"cp\"\n (colorChange)=\"onValueChange()\"\n />\n\n <mtx-colorpicker #cp [content]=\"customPickerContent\" />\n\n @if (config.parentType === 'inline') {\n <mat-hint>\n <gui-field-label [config]=\"config\" />\n </mat-hint>\n }\n</mat-form-field>\n\n<ng-template #customPickerContent>\n <gui-fill-picker [type]=\"type\" [(ngModel)]=\"value\" (valueChangeComplete)=\"cp.select($event)\" />\n</ng-template>\n", styles: [".gui-color-block{position:relative;display:inline-block;width:1.5rem;height:1.5rem;padding:0;border:none;background-color:#fff;background-image:conic-gradient(transparent 25%,#ccc 25% 50%,transparent 50% 75%,#ccc 75%);background-size:.5rem .5rem;outline:none;cursor:pointer}.gui-color-block:hover .gui-color-block-bg:after,.gui-color-block:focus .gui-color-block-bg:after{opacity:.4}.gui-color-block-bg{display:inline-block;width:100%;height:100%}.gui-color-block-bg:after{content:\"\";display:inline-block;width:100%;height:100%;box-sizing:border-box;border:1px solid #fff;border-top-left-radius:var(--mat-form-field-filled-container-shape, var(--mat-sys-corner-extra-small));border-bottom-left-radius:var(--mat-form-field-filled-container-shape, var(--mat-sys-corner-extra-small));mix-blend-mode:difference;opacity:.2}[dir=rtl] .gui-color-block-bg:after{border-radius:0;border-top-right-radius:var(--mat-form-field-filled-container-shape, var(--mat-sys-corner-extra-small));border-bottom-right-radius:var(--mat-form-field-filled-container-shape, var(--mat-sys-corner-extra-small))}.gui-fill .mat-mdc-icon-button{display:inline-flex;justify-content:center;align-items:center}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { 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: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "directive", type: MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: MtxColorpickerInput, selector: "input[mtxColorpicker]", inputs: ["mtxColorpicker", "disabled", "value", "format"], outputs: ["colorChange", "colorInput"], exportAs: ["mtxColorpickerInput"] }, { kind: "component", type: MtxColorpicker, selector: "mtx-colorpicker", inputs: ["content", "disabled", "xPosition", "yPosition", "restoreFocus", "opened", "color", "format"], outputs: ["opened", "closed"], exportAs: ["mtxColorpicker"] }, { kind: "component", type: GuiFieldLabel, selector: "gui-field-label", inputs: ["config", "index"] }, { kind: "component", type: GuiFillPicker, selector: "gui-fill-picker", inputs: ["disabled", "type"], outputs: ["valueChangeComplete"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
1069
+ ], viewQueries: [{ propertyName: "colorpicker", first: true, predicate: MtxColorpicker, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<mat-form-field>\n <ng-container matPrefix>\n <button class=\"gui-color-block\" type=\"button\" (click)=\"openColorPicker($event)\">\n <span\n class=\"gui-color-block-bg\"\n [style.background]=\"value + ' center / contain no-repeat'\"\n ></span>\n </button>\n </ng-container>\n\n <input\n matInput\n [(ngModel)]=\"value\"\n [disabled]=\"disabled\"\n [placeholder]=\"config.placeholder || ''\"\n [mtxColorpicker]=\"cp\"\n (colorChange)=\"onValueChange()\"\n />\n\n <mtx-colorpicker #cp [content]=\"customPickerContent\" />\n\n @if (config.parentType === 'inline') {\n <mat-hint>\n <gui-field-label [config]=\"config\" />\n </mat-hint>\n }\n</mat-form-field>\n\n<ng-template #customPickerContent>\n <gui-fill-picker [type]=\"type\" [(ngModel)]=\"value\" (valueChangeComplete)=\"cp.select($event)\" />\n</ng-template>\n", styles: [".gui-color-block{position:relative;display:inline-block;width:1.5rem;height:1.5rem;padding:0;border:none;background-color:#fff;background-image:conic-gradient(transparent 25%,#ccc 25% 50%,transparent 50% 75%,#ccc 75%);background-size:.5rem .5rem;outline:none;cursor:pointer}.gui-color-block:hover .gui-color-block-bg:after,.gui-color-block:focus .gui-color-block-bg:after{opacity:.4}.gui-color-block-bg{display:inline-block;width:100%;height:100%}.gui-color-block-bg:after{content:\"\";display:inline-block;width:100%;height:100%;box-sizing:border-box;border:1px solid #fff;border-top-left-radius:var(--mat-form-field-filled-container-shape, var(--mat-sys-corner-extra-small));border-bottom-left-radius:var(--mat-form-field-filled-container-shape, var(--mat-sys-corner-extra-small));mix-blend-mode:difference;opacity:.2}[dir=rtl] .gui-color-block-bg:after{border-radius:0;border-top-right-radius:var(--mat-form-field-filled-container-shape, var(--mat-sys-corner-extra-small));border-bottom-right-radius:var(--mat-form-field-filled-container-shape, var(--mat-sys-corner-extra-small))}.gui-fill .mat-mdc-icon-button{display:inline-flex;justify-content:center;align-items:center}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { 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: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "directive", type: MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: MtxColorpickerInput, selector: "input[mtxColorpicker]", inputs: ["mtxColorpicker", "disabled", "value", "format"], outputs: ["colorChange", "colorInput"], exportAs: ["mtxColorpickerInput"] }, { kind: "component", type: MtxColorpicker, selector: "mtx-colorpicker", inputs: ["content", "disabled", "xPosition", "yPosition", "restoreFocus", "opened", "color", "format"], outputs: ["opened", "closed"], exportAs: ["mtxColorpicker"] }, { kind: "component", type: GuiFieldLabel, selector: "gui-field-label", inputs: ["config", "index"] }, { kind: "component", type: GuiFillPicker, selector: "gui-fill-picker", inputs: ["disabled", "type"], outputs: ["valueChangeComplete"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
1070
1070
  }
1071
1071
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: GuiFill, decorators: [{
1072
1072
  type: Component,
@@ -1088,7 +1088,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
1088
1088
  MtxColorpicker,
1089
1089
  GuiFieldLabel,
1090
1090
  GuiFillPicker,
1091
- ], template: "<mat-form-field>\n <ng-container matPrefix>\n <button class=\"gui-color-block\" (click)=\"openColorPicker($event)\">\n <span\n class=\"gui-color-block-bg\"\n [style.background]=\"value + ' center / contain no-repeat'\"\n ></span>\n </button>\n </ng-container>\n\n <input\n matInput\n [(ngModel)]=\"value\"\n [disabled]=\"disabled\"\n [placeholder]=\"config.placeholder || ''\"\n [mtxColorpicker]=\"cp\"\n (colorChange)=\"onValueChange()\"\n />\n\n <mtx-colorpicker #cp [content]=\"customPickerContent\" />\n\n @if (config.parentType === 'inline') {\n <mat-hint>\n <gui-field-label [config]=\"config\" />\n </mat-hint>\n }\n</mat-form-field>\n\n<ng-template #customPickerContent>\n <gui-fill-picker [type]=\"type\" [(ngModel)]=\"value\" (valueChangeComplete)=\"cp.select($event)\" />\n</ng-template>\n", styles: [".gui-color-block{position:relative;display:inline-block;width:1.5rem;height:1.5rem;padding:0;border:none;background-color:#fff;background-image:conic-gradient(transparent 25%,#ccc 25% 50%,transparent 50% 75%,#ccc 75%);background-size:.5rem .5rem;outline:none;cursor:pointer}.gui-color-block:hover .gui-color-block-bg:after,.gui-color-block:focus .gui-color-block-bg:after{opacity:.4}.gui-color-block-bg{display:inline-block;width:100%;height:100%}.gui-color-block-bg:after{content:\"\";display:inline-block;width:100%;height:100%;box-sizing:border-box;border:1px solid #fff;border-top-left-radius:var(--mat-form-field-filled-container-shape, var(--mat-sys-corner-extra-small));border-bottom-left-radius:var(--mat-form-field-filled-container-shape, var(--mat-sys-corner-extra-small));mix-blend-mode:difference;opacity:.2}[dir=rtl] .gui-color-block-bg:after{border-radius:0;border-top-right-radius:var(--mat-form-field-filled-container-shape, var(--mat-sys-corner-extra-small));border-bottom-right-radius:var(--mat-form-field-filled-container-shape, var(--mat-sys-corner-extra-small))}.gui-fill .mat-mdc-icon-button{display:inline-flex;justify-content:center;align-items:center}\n"] }]
1091
+ ], template: "<mat-form-field>\n <ng-container matPrefix>\n <button class=\"gui-color-block\" type=\"button\" (click)=\"openColorPicker($event)\">\n <span\n class=\"gui-color-block-bg\"\n [style.background]=\"value + ' center / contain no-repeat'\"\n ></span>\n </button>\n </ng-container>\n\n <input\n matInput\n [(ngModel)]=\"value\"\n [disabled]=\"disabled\"\n [placeholder]=\"config.placeholder || ''\"\n [mtxColorpicker]=\"cp\"\n (colorChange)=\"onValueChange()\"\n />\n\n <mtx-colorpicker #cp [content]=\"customPickerContent\" />\n\n @if (config.parentType === 'inline') {\n <mat-hint>\n <gui-field-label [config]=\"config\" />\n </mat-hint>\n }\n</mat-form-field>\n\n<ng-template #customPickerContent>\n <gui-fill-picker [type]=\"type\" [(ngModel)]=\"value\" (valueChangeComplete)=\"cp.select($event)\" />\n</ng-template>\n", styles: [".gui-color-block{position:relative;display:inline-block;width:1.5rem;height:1.5rem;padding:0;border:none;background-color:#fff;background-image:conic-gradient(transparent 25%,#ccc 25% 50%,transparent 50% 75%,#ccc 75%);background-size:.5rem .5rem;outline:none;cursor:pointer}.gui-color-block:hover .gui-color-block-bg:after,.gui-color-block:focus .gui-color-block-bg:after{opacity:.4}.gui-color-block-bg{display:inline-block;width:100%;height:100%}.gui-color-block-bg:after{content:\"\";display:inline-block;width:100%;height:100%;box-sizing:border-box;border:1px solid #fff;border-top-left-radius:var(--mat-form-field-filled-container-shape, var(--mat-sys-corner-extra-small));border-bottom-left-radius:var(--mat-form-field-filled-container-shape, var(--mat-sys-corner-extra-small));mix-blend-mode:difference;opacity:.2}[dir=rtl] .gui-color-block-bg:after{border-radius:0;border-top-right-radius:var(--mat-form-field-filled-container-shape, var(--mat-sys-corner-extra-small));border-bottom-right-radius:var(--mat-form-field-filled-container-shape, var(--mat-sys-corner-extra-small))}.gui-fill .mat-mdc-icon-button{display:inline-flex;justify-content:center;align-items:center}\n"] }]
1092
1092
  }], propDecorators: { colorpicker: [{
1093
1093
  type: ViewChild,
1094
1094
  args: [MtxColorpicker]
@@ -1 +1 @@
1
- {"version":3,"file":"acrodata-gui.mjs","sources":["../../../projects/gui/gui-utils.ts","../../../projects/gui/field-label/field-label.ts","../../../projects/gui/field-label/field-label.html","../../../projects/gui/button-toggle/icon.ts","../../../projects/gui/button-toggle/button-toggle.ts","../../../projects/gui/button-toggle/button-toggle.html","../../../projects/gui/gui-icons.ts","../../../projects/gui/icon-button-wrapper/icon-button-wrapper.ts","../../../projects/gui/icon-button-wrapper/icon-button-wrapper.html","../../../projects/gui/codearea/codearea-config.ts","../../../projects/gui/codearea/codearea-toolbar.ts","../../../projects/gui/codearea/codearea-dialog.ts","../../../projects/gui/codearea/codearea-dialog.html","../../../projects/gui/codearea/codearea.ts","../../../projects/gui/codearea/codearea.html","../../../projects/gui/combobox/combobox.ts","../../../projects/gui/combobox/combobox.html","../../../projects/gui/field-group/field-group.ts","../../../projects/gui/field-group/field-group.html","../../../projects/gui/file-uploader/file-uploader-config.ts","../../../projects/gui/file-uploader/file-uploader.ts","../../../projects/gui/file-uploader/file-uploader.html","../../../projects/gui/fill/fill-picker.ts","../../../projects/gui/fill/fill-picker.html","../../../projects/gui/fill/fill.ts","../../../projects/gui/fill/fill.html","../../../projects/gui/image-select/image-select.ts","../../../projects/gui/image-select/image-select.html","../../../projects/gui/inline-group/inline-group.ts","../../../projects/gui/inline-group/inline-group.html","../../../projects/gui/input-number/input-number.ts","../../../projects/gui/input-number/input-number.html","../../../projects/gui/input-text/input-text.ts","../../../projects/gui/input-text/input-text.html","../../../projects/gui/select/select.ts","../../../projects/gui/select/select.html","../../../projects/gui/slider/slider.ts","../../../projects/gui/slider/slider.html","../../../projects/gui/switch/switch.ts","../../../projects/gui/switch/switch.html","../../../projects/gui/textarea/textarea.ts","../../../projects/gui/textarea/textarea.html","../../../projects/gui/gui-form.ts","../../../projects/gui/gui-form.html","../../../projects/gui/gui-module.ts","../../../projects/gui/public-api.ts","../../../projects/gui/acrodata-gui.ts"],"sourcesContent":["import { Directive, ElementRef, Input, OnInit, Pipe, PipeTransform, inject } from '@angular/core';\nimport { GuiDefaultValue, GuiFields, GuiOperator } from './interface';\n\n/**\n * Lightweight EJS template engine\n *\n * @param str template string\n * @param data data passed to the template\n * @returns\n *\n * ### Example\n *\n * ```ts\n * const people = ['geddy', 'neil', 'alex'];\n * const res = ejsTmpl('<%= people.join(\", \") %>', {people: people});\n * console.log(res);\n * // => 'geddy, neil, alex'\n * ```\n *\n */\nexport function ejsTmpl(str: string, data: any) {\n const fn = new Function(\n 'obj',\n 'var p=[],print=function(){p.push.apply(p,arguments);};' +\n // Introduce the data as local variables using with(){}\n 'with(obj){p.push(\"' +\n // Convert the template into pure JavaScript\n str\n .replace(/[\\r\\t\\n]/g, ' ')\n .split('<%')\n .join('\\t')\n .replace(/((^|%>)[^\\t]*)'/g, '$1\\r')\n .replace(/\\t=(.*?)%>/g, '\",$1,\"')\n .split('\\t')\n .join('\");')\n .split('%>')\n .join('p.push(\"')\n .split('\\r')\n .join('\"') +\n '\");}return p.join(\"\");'\n );\n\n // Provide some basic currying to the user\n return data ? fn(data) : fn;\n}\n\n@Pipe({\n name: 'ejs',\n})\nexport class GuiEjsPipe implements PipeTransform {\n transform(value: string, data = {}): string {\n return ejsTmpl(value, data);\n }\n}\n\n@Directive({\n selector: '[flex]',\n})\nexport class GuiFlexDirective implements OnInit {\n private el = inject(ElementRef);\n\n @Input() flex: number | undefined = 100;\n\n ngOnInit(): void {\n this.el.nativeElement.style.flex = `1 1 ${this.flex}%`;\n this.el.nativeElement.style.maxWidth = `${this.flex}%`;\n }\n}\n\nexport function compareValues(a: GuiDefaultValue, b: GuiDefaultValue, operator: GuiOperator) {\n switch (operator) {\n case '$eq':\n return a === b;\n case '$ne':\n return a !== b;\n case '$gt':\n return (a ?? 0) > (b ?? 0);\n case '$lt':\n return (a ?? 0) < (b ?? 0);\n case '$gte':\n return (a ?? 0) >= (b ?? 0);\n case '$lte':\n return (a ?? 0) <= (b ?? 0);\n case '$in':\n return Array.isArray(b) && b.includes(a);\n case '$nin':\n return Array.isArray(b) && !b.includes(a);\n default:\n return false;\n }\n}\n\nexport function getValueByPath(obj: Record<string, any>, path: string) {\n return path.split('.').reduce((acc: Record<string, any> | undefined, key) => {\n return acc?.['children']?.[key] ? acc['children'][key] : acc?.[key];\n }, obj);\n}\n\nexport function getModelFromConfig(config: GuiFields = {}, model: Record<string, any> = {}) {\n for (const [key, fieldCfg] of Object.entries(config)) {\n if (model[key] != null) {\n continue;\n }\n if (fieldCfg.default != null) {\n model[key] = fieldCfg.default;\n } else {\n if (\n fieldCfg.type === 'group' ||\n fieldCfg.type === 'inline' ||\n fieldCfg.type === 'menu' ||\n fieldCfg.type === 'menuItem'\n ) {\n model[key] = getModelFromConfig(fieldCfg.children as GuiFields, {});\n } else if (fieldCfg.type === 'tabs') {\n model[key] = [];\n } else {\n model[key] = null;\n }\n }\n }\n return model;\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n OnChanges,\n ViewEncapsulation,\n} from '@angular/core';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { ejsTmpl } from '../gui-utils';\nimport { GuiControl } from '../interface';\n\n@Component({\n selector: 'gui-field-label',\n templateUrl: './field-label.html',\n styleUrl: './field-label.scss',\n host: {\n '[class.gui-field-label]': '!styless',\n '[title]': 'title',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [MatTooltip],\n})\nexport class GuiFieldLabel implements OnChanges {\n @Input() config: Partial<GuiControl> = {};\n\n @Input() index?: number;\n\n title = '';\n\n styless = false;\n\n ngOnChanges(): void {\n const { index, name, parentType, type } = this.config;\n this.title = index != null && !isNaN(index) ? ejsTmpl(name || '', { i: index }) : name;\n this.styless =\n (parentType === 'inline' && type !== 'inline') || type === 'group' || type === 'tabs';\n }\n}\n","@if (!config.description) {\n <span>{{ title }}</span>\n} @else {\n <span\n [class.gui-field-label-with-description]=\"config.description\"\n [matTooltip]=\"config.description\"\n matTooltipPosition=\"above\"\n matTooltipShowDelay=\"1000\"\n matTooltipClass=\"gui-field-label-tooltip\"\n >\n {{ title }}\n </span>\n}\n","import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'gui-icon',\n template: `\n @if (isUrl) {\n <img [src]=\"src\" alt=\"\" />\n } @else {\n <i [class]=\"src\"></i>\n }\n `,\n styleUrl: './icon.scss',\n host: {\n class: 'gui-icon',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class GuiIcon {\n @Input() src = '';\n\n get isUrl() {\n return /^(https?:\\/\\/|\\.?\\/|data:)\\w+/.test(this.src);\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n forwardRef,\n inject,\n Input,\n ViewEncapsulation,\n} from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MatButtonToggle, MatButtonToggleGroup } from '@angular/material/button-toggle';\nimport { MatHint } from '@angular/material/form-field';\nimport { GuiFieldLabel } from '../field-label/field-label';\nimport { GuiFlexDirective } from '../gui-utils';\nimport { GuiBasicValue, GuiControl } from '../interface';\nimport { GuiIcon } from './icon';\n\n@Component({\n selector: 'gui-button-toggle',\n templateUrl: './button-toggle.html',\n styleUrl: './button-toggle.scss',\n host: {\n class: 'gui-field gui-button-toggle',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => GuiButtonToggle),\n multi: true,\n },\n ],\n imports: [\n FormsModule,\n MatButtonToggleGroup,\n MatButtonToggle,\n MatHint,\n GuiFlexDirective,\n GuiIcon,\n GuiFieldLabel,\n ],\n})\nexport class GuiButtonToggle implements ControlValueAccessor {\n private cdr = inject(ChangeDetectorRef);\n\n @Input() config: Partial<GuiControl> = {};\n @Input() disabled = false;\n\n value: GuiBasicValue | GuiBasicValue[] = '';\n\n private onChange: (value: GuiBasicValue | GuiBasicValue[]) => void = () => {};\n private onTouched: () => void = () => {};\n\n writeValue(value: any) {\n this.value = value;\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: (value: GuiBasicValue | GuiBasicValue[]) => void) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void) {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n\n onValueChange() {\n this.onChange(this.value);\n }\n}\n","<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","import { Injectable, InjectionToken, inject } from '@angular/core';\nimport { MatIconRegistry } from '@angular/material/icon';\nimport { DomSanitizer } from '@angular/platform-browser';\n\nexport const svgIcons = {\n horizontal: `\n <svg viewBox=\"0 0 24 24\">\n <path d=\"M16,12A2,2 0 0,1 18,10A2,2 0 0,1 20,12A2,2 0 0,1 18,14A2,2 0 0,1 16,12M10,12A2,2 0 0,1 12,10A2,2 0 0,1 14,12A2,2 0 0,1 12,14A2,2 0 0,1 10,12M4,12A2,2 0 0,1 6,10A2,2 0 0,1 8,12A2,2 0 0,1 6,14A2,2 0 0,1 4,12Z\"></path>\n </svg>\n `,\n vertical: `\n <svg viewBox=\"0 0 24 24\">\n <path d=\"M12,16A2,2 0 0,1 14,18A2,2 0 0,1 12,20A2,2 0 0,1 10,18A2,2 0 0,1 12,16M12,10A2,2 0 0,1 14,12A2,2 0 0,1 12,14A2,2 0 0,1 10,12A2,2 0 0,1 12,10M12,4A2,2 0 0,1 14,6A2,2 0 0,1 12,8A2,2 0 0,1 10,6A2,2 0 0,1 12,4Z\"></path>\n </svg>\n `,\n add: `\n <svg viewBox=\"0 0 24 24\">\n <path d=\"M19,13H13V19H11V13H5V11H11V5H13V11H19V13Z\"></path>\n </svg>\n `,\n delete: `\n <svg viewBox=\"0 0 24 24\">\n <path d=\"M9,3V4H4V6H5V19A2,2 0 0,0 7,21H17A2,2 0 0,0 19,19V6H20V4H15V3H9M7,6H17V19H7V6M9,8V17H11V8H9M13,8V17H15V8H13Z\"></path>\n </svg>\n `,\n copy: `\n <svg viewBox=\"0 0 24 24\">\n <path fill=\"currentColor\" d=\"M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z\"></path>\n </svg>\n `,\n link: `\n <svg viewBox=\"0 0 24 24\">\n <path d=\"M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1zM8 13h8v-2H8v2zm9-6h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76 0 5-2.24 5-5s-2.24-5-5-5z\"></path>\n </svg>\n `,\n clear: `\n <svg viewBox=\"0 0 24 24\">\n <path d=\"M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z\"></path>\n </svg>\n `,\n file: `\n <svg viewBox=\"0 0 24 24\">\n <path d=\"M14,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2M18,20H6V4H13V9H18V20Z\"></path>\n </svg>\n `,\n upload: `\n <svg viewBox=\"0 0 24 24\">\n <path d=\"M2 12H4V17H20V12H22V17C22 18.11 21.11 19 20 19H4C2.9 19 2 18.11 2 17V12M12 2L6.46 7.46L7.88 8.88L11 5.75V15H13V5.75L16.13 8.88L17.55 7.45L12 2Z\"></path>\n </svg>\n `,\n expand: `\n <svg viewBox=\"0 0 24 24\">\n <path fill=\"currentColor\" d=\"M10,21V19H6.41L10.91,14.5L9.5,13.09L5,17.59V14H3V21H10M14.5,10.91L19,6.41V10H21V3H14V5H17.59L13.09,9.5L14.5,10.91Z\"></path>\n </svg>`,\n wrap: `\n <svg viewBox=\"0 0 24 24\">\n <path fill=\"currentColor\" d=\"M21,5H3V7H21V5M3,19H10V17H3V19M3,13H18C19,13 20,13.43 20,15C20,16.57 19,17 18,17H16V15L12,18L16,21V19H18C20.95,19 22,17.73 22,15C22,12.28 21,11 18,11H3V13Z\"></path>\n </svg>`,\n solid: `\n <svg viewBox=\"0 0 24 24\">\n <path fill=\"currentColor\" fill-rule=\"evenodd\" d=\"M9 9h6v6H9z\"></path>\n <path fill=\"currentColor\" fill-rule=\"evenodd\" d=\"M8 7h8a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H8a1 1 0 0 1-1-1V8a1 1 0 0 1 1-1M6 8a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2zm3 7V9h6v6zM8 8.5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 .5.5v7a.5.5 0 0 1-.5.5h-7a.5.5 0 0 1-.5-.5z\"></path>\n </svg>`,\n gradient: `\n <svg viewBox=\"0 0 24 24\">\n <path fill=\"currentColor\" fill-rule=\"evenodd\" d=\"M8 7h8a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H8a1 1 0 0 1-1-1V8a1 1 0 0 1 1-1M6 8a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2zm3.75.875a.875.875 0 1 1-1.75 0 .875.875 0 0 1 1.75 0m3.791.625a.625.625 0 1 0 0-1.25.625.625 0 0 0 0 1.25m-1.458.875a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0m0 3.12a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0m1.458 2.245a.625.625 0 1 0 0-1.25.625.625 0 0 0 0 1.25m.625-3.865a.625.625 0 1 1-1.25 0 .625.625 0 0 1 1.25 0M8.875 15.99a.875.875 0 1 0 0-1.75.875.875 0 0 0 0 1.75m.875-4.115a.875.875 0 1 1-1.75 0 .875.875 0 0 1 1.75 0m5.75-1a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1m.5 2.623a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0\"></path>\n </svg>`,\n image: `\n <svg viewBox=\"0 0 24 24\">\n <path fill=\"currentColor\" fill-rule=\"evenodd\" d=\"M16 7H8a1 1 0 0 0-1 1v5.668l2.521-2.522a.5.5 0 0 1 .708 0l5.85 5.85A1 1 0 0 0 17 16V8a1 1 0 0 0-1-1M6 14.875V16a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2H8a2 2 0 0 0-2 2zM8 17h6.668l-4.793-4.793L7 15.082V16a1 1 0 0 0 1 1m7-7a1 1 0 1 1-2 0 1 1 0 0 1 2 0m1 0a2 2 0 1 1-4 0 2 2 0 0 1 4 0\"></path>\n </svg>\n `,\n};\n\nexport type GuiIconType = keyof typeof svgIcons;\n\nexport type GuiIconsConfig = Record<GuiIconType, string>;\n\n/** Injection token that can be used to provide the default icons. */\nexport const GUI_ICONS_CONFIG = new InjectionToken<GuiIconsConfig>('gui-icons-config');\n\n@Injectable({ providedIn: 'root' })\nexport class GuiIconsRegistry {\n private _iconRegistry = inject(MatIconRegistry);\n private _sanitizer = inject(DomSanitizer);\n private _defaultIcons = inject<GuiIconsConfig>(GUI_ICONS_CONFIG, { optional: true });\n\n add(...iconNames: GuiIconType[]) {\n const icons = Object.assign(svgIcons, this._defaultIcons);\n iconNames.forEach(k => {\n this._iconRegistry.addSvgIconLiteral(k, this._sanitizer.bypassSecurityTrustHtml(icons[k]));\n });\n }\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'gui-icon-button-wrapper',\n templateUrl: './icon-button-wrapper.html',\n styleUrl: './icon-button-wrapper.scss',\n host: {\n class: 'gui-icon-button-wrapper',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class GuiIconButtonWrapper {}\n","<ng-content />\n","import { Theme } from '@acrodata/code-editor';\nimport { Injectable } from '@angular/core';\nimport { LanguageDescription } from '@codemirror/language';\nimport { Extension } from '@codemirror/state';\nimport { Subject } from 'rxjs';\nimport { GuiCodeareaDialogData } from './codearea-dialog';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class GuiCodeareaConfig {\n readonly changes: Subject<void> = new Subject<void>();\n\n theme: Theme = 'light';\n\n languages: LanguageDescription[] = [];\n\n extensions: Extension[] | ((data: GuiCodeareaDialogData) => Extension[]) = [];\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'gui-codearea-toolbar',\n template: `\n <ng-content />\n `,\n styleUrl: './codearea-toolbar.scss',\n host: {\n class: 'gui-codearea-toolbar',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class GuiCodeareaToolbar {}\n","import { CodeEditor } from '@acrodata/code-editor';\nimport { RndDialogDragHandle } from '@acrodata/rnd-dialog';\nimport { DIALOG_DATA, DialogRef } from '@angular/cdk/dialog';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n ViewEncapsulation,\n inject,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormsModule } from '@angular/forms';\nimport { MatButton, MatIconButton } from '@angular/material/button';\nimport { MatIcon } from '@angular/material/icon';\nimport { Extension } from '@codemirror/state';\nimport { GuiIconsRegistry } from '../gui-icons';\nimport { GuiIconButtonWrapper } from '../icon-button-wrapper/icon-button-wrapper';\nimport { GuiCodeareaConfig } from './codearea-config';\nimport { GuiCodeareaToolbar } from './codearea-toolbar';\n\nexport interface GuiCodeareaDialogData {\n value: string;\n disabled?: boolean;\n readonly?: boolean;\n language?: string;\n title?: string;\n extensions?: Extension[];\n}\n\n@Component({\n selector: 'gui-codearea-dialog',\n imports: [\n FormsModule,\n MatButton,\n MatIconButton,\n MatIcon,\n RndDialogDragHandle,\n CodeEditor,\n GuiIconButtonWrapper,\n GuiCodeareaToolbar,\n ],\n templateUrl: './codearea-dialog.html',\n styleUrl: './codearea-dialog.scss',\n host: {\n class: 'gui-codearea-dialog',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class GuiCodeareaDialog {\n private dialogRef = inject<DialogRef<string, GuiCodeareaDialog>>(DialogRef);\n data = inject<GuiCodeareaDialogData>(DIALOG_DATA);\n private cdr = inject(ChangeDetectorRef);\n private destroyRef = inject(DestroyRef);\n private codeareaCfg = inject(GuiCodeareaConfig);\n\n get languages() {\n return this.codeareaCfg.languages;\n }\n\n get theme() {\n return this.codeareaCfg.theme;\n }\n\n langDesc = this.codeareaCfg.languages.find(\n lang => this.data.language && lang.alias.includes(this.data.language.toLowerCase())\n );\n\n title = `${this.data.title || ''} (${this.langDesc?.name || 'Plain Text'})`;\n\n lineWrapping = false;\n\n constructor() {\n const iconsRegistry = inject(GuiIconsRegistry);\n iconsRegistry.add('wrap');\n\n this.codeareaCfg.changes.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n this.cdr.markForCheck();\n });\n }\n\n toggleLineWrapping() {\n this.lineWrapping = !this.lineWrapping;\n }\n\n save() {\n this.dialogRef.close(this.data.value);\n }\n\n close() {\n this.dialogRef.close();\n }\n}\n","<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]=\"data.extensions || []\"\n [lineWrapping]=\"lineWrapping\"\n indentWithTab\n />\n\n <gui-codearea-toolbar>\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 </gui-codearea-toolbar>\n</div>\n","import { CodeEditor, Setup } from '@acrodata/code-editor';\nimport { RndDialog } from '@acrodata/rnd-dialog';\nimport { coerceCssPixelValue } from '@angular/cdk/coercion';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n forwardRef,\n inject,\n Input,\n ViewEncapsulation,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MatIconButton } from '@angular/material/button';\nimport { MatHint } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { Extension } from '@codemirror/state';\nimport { GuiFieldLabel } from '../field-label/field-label';\nimport { GuiIconsRegistry } from '../gui-icons';\nimport { GuiIconButtonWrapper } from '../icon-button-wrapper/icon-button-wrapper';\nimport { GuiControl } from '../interface';\nimport { GuiCodeareaConfig } from './codearea-config';\nimport { GuiCodeareaDialog, GuiCodeareaDialogData } from './codearea-dialog';\nimport { GuiCodeareaToolbar } from './codearea-toolbar';\n\n@Component({\n selector: 'gui-codearea',\n templateUrl: './codearea.html',\n styleUrl: './codearea.scss',\n host: {\n class: 'gui-field gui-codearea',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => GuiCodearea),\n multi: true,\n },\n ],\n imports: [\n FormsModule,\n MatIcon,\n MatIconButton,\n MatHint,\n CodeEditor,\n GuiFieldLabel,\n GuiIconButtonWrapper,\n GuiCodeareaToolbar,\n ],\n})\nexport class GuiCodearea implements ControlValueAccessor {\n private rndDialog = inject(RndDialog);\n private cdr = inject(ChangeDetectorRef);\n private destroyRef = inject(DestroyRef);\n private codeareaCfg = inject(GuiCodeareaConfig);\n\n @Input() config: Partial<GuiControl> = {};\n @Input() disabled = false;\n\n @Input() setup: Setup = 'minimal';\n\n @Input()\n get height() {\n return coerceCssPixelValue(this.config.height || this._height);\n }\n set height(value: string | number) {\n this._height = value;\n }\n private _height: string | number = 120;\n\n @Input()\n get language() {\n return this.config.language || this._language;\n }\n set language(value: string) {\n this._language = value;\n }\n private _language = '';\n\n @Input()\n get extensions() {\n const globalExtensions =\n typeof this.codeareaCfg.extensions === 'function'\n ? this.codeareaCfg.extensions({ value: this.value, language: this.language })\n : this.codeareaCfg.extensions;\n return [...globalExtensions, this._extensions];\n }\n set extensions(value: Extension[]) {\n this._extensions = value;\n }\n private _extensions: Extension[] = [];\n\n get languages() {\n return this.codeareaCfg.languages;\n }\n\n get theme() {\n return this.codeareaCfg.theme;\n }\n\n get dialogData(): GuiCodeareaDialogData {\n return {\n value: this.value,\n disabled: this.disabled,\n language: this.language,\n extensions: this.extensions,\n };\n }\n\n value = '';\n private oldValue = '';\n\n lineWrapping = false;\n\n private onChange: (value: string) => void = () => {};\n private onTouched: () => void = () => {};\n\n constructor() {\n const iconsRegistry = inject(GuiIconsRegistry);\n iconsRegistry.add('expand');\n iconsRegistry.add('wrap');\n\n this.codeareaCfg.changes.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n this.cdr.markForCheck();\n });\n }\n\n writeValue(value: any) {\n if (typeof value === 'string' || value == null) {\n this.value = value || '';\n } else {\n this.value = value.toString();\n }\n this.oldValue = this.value;\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: (value: string) => void) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void) {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n\n onValueChange() {\n if (this.value !== this.oldValue) {\n this.onChange(this.value);\n this.oldValue = this.value;\n }\n }\n\n onExpand() {\n const dialogRef = this.rndDialog.open<string, GuiCodeareaDialogData, GuiCodeareaDialog>(\n GuiCodeareaDialog,\n {\n panelClass: 'gui-codearea-dialog-panel',\n hasBackdrop: false,\n width: '600px',\n data: this.dialogData,\n }\n );\n\n dialogRef.closed.subscribe(newValue => {\n if (newValue) {\n this.value = newValue;\n this.cdr.detectChanges();\n this.onValueChange();\n }\n });\n }\n\n toggleLineWrapping() {\n this.lineWrapping = !this.lineWrapping;\n }\n}\n","<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 [lineWrapping]=\"lineWrapping\"\n (blur)=\"onValueChange()\"\n/>\n\n<gui-codearea-toolbar>\n <gui-icon-button-wrapper>\n <button mat-icon-button type=\"button\" (click)=\"onExpand()\">\n <mat-icon svgIcon=\"expand\" />\n </button>\n <button mat-icon-button type=\"button\" (click)=\"toggleLineWrapping()\">\n <mat-icon svgIcon=\"wrap\" />\n </button>\n </gui-icon-button-wrapper>\n</gui-codearea-toolbar>\n\n@if (config.parentType === 'inline') {\n <mat-hint>\n <gui-field-label [config]=\"config\" />\n </mat-hint>\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n forwardRef,\n inject,\n Input,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MatFormField, MatHint, MatPrefix, MatSuffix } from '@angular/material/form-field';\nimport { MtxSelect, MtxSelectOptionTemplate } from '@ng-matero/extensions/select';\nimport { GuiFieldLabel } from '../field-label/field-label';\nimport { GuiBasicValue, GuiControl } from '../interface';\n\n@Component({\n selector: 'gui-combobox',\n templateUrl: './combobox.html',\n styleUrl: './combobox.scss',\n host: {\n class: 'gui-field gui-combobox',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => GuiCombobox),\n multi: true,\n },\n ],\n imports: [\n FormsModule,\n MatFormField,\n MatPrefix,\n MatSuffix,\n MatHint,\n MtxSelect,\n MtxSelectOptionTemplate,\n GuiFieldLabel,\n ],\n})\nexport class GuiCombobox implements ControlValueAccessor {\n private cdr = inject(ChangeDetectorRef);\n\n @ViewChild(MtxSelect) mtxSelect!: MtxSelect;\n\n @Input() config: Partial<GuiControl> = {};\n @Input() disabled = false;\n @Input() appendTo = 'body';\n\n value: GuiBasicValue | GuiBasicValue[] = '';\n\n private onChange: (value: GuiBasicValue | GuiBasicValue[]) => void = () => {};\n private onTouched: () => void = () => {};\n\n writeValue(value: any) {\n this.value = value;\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: (value: GuiBasicValue | GuiBasicValue[]) => void) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void) {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n\n onValueChange() {\n this.onChange(this.value);\n }\n\n addTagFn(label: string) {\n return { label, value: label };\n }\n}\n","<mat-form-field>\n @if (config.prefix) {\n <span matPrefix>{{ config.prefix }}</span>\n }\n <mtx-select\n panelClass=\"gui-combobox\"\n [(ngModel)]=\"value\"\n [disabled]=\"disabled\"\n [placeholder]=\"config.placeholder || ''\"\n [appendTo]=\"appendTo\"\n [items]=\"config.options || []\"\n bindLabel=\"label\"\n bindValue=\"value\"\n [multiple]=\"config.multiple || false\"\n [addTag]=\"addTagFn\"\n [closeOnSelect]=\"!config.multiple\"\n [deselectOnClick]=\"true\"\n (change)=\"onValueChange()\"\n >\n <ng-template ng-option-tmp let-item=\"item\">\n <div class=\"ng-option-label\" [style.font-family]=\"config.useFont ? item.value : ''\">\n {{ item.label }}\n </div>\n </ng-template>\n </mtx-select>\n @if (config.suffix) {\n <span matSuffix>{{ config.suffix }}</span>\n }\n @if (config.parentType === 'inline') {\n <mat-hint>\n <gui-field-label [config]=\"config\" />\n </mat-hint>\n }\n</mat-form-field>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DoCheck,\n Input,\n KeyValueDiffer,\n KeyValueDiffers,\n OnInit,\n ViewEncapsulation,\n inject,\n} from '@angular/core';\nimport { GuiFieldLabel } from '../field-label/field-label';\nimport { GuiControl } from '../interface';\n\n@Component({\n selector: 'gui-field-group',\n templateUrl: './field-group.html',\n styleUrl: './field-group.scss',\n host: {\n class: 'gui-field-group',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [GuiFieldLabel],\n})\nexport class GuiFieldGroup implements OnInit, DoCheck {\n private differs = inject(KeyValueDiffers);\n private cdr = inject(ChangeDetectorRef);\n\n @Input() config: Partial<GuiControl> = {};\n\n private configDiffer?: KeyValueDiffer<string, any>;\n\n ngOnInit(): void {\n this.configDiffer = this.differs.find(this.config).create();\n }\n\n ngDoCheck(): void {\n const changes = this.configDiffer?.diff(this.config);\n changes?.forEachChangedItem(record => {\n this.cdr.markForCheck();\n });\n }\n}\n","@if (config.parentType !== 'inline' && config.name) {\n <gui-field-label [config]=\"config\" [index]=\"config.index\" />\n}\n<ng-content />\n","import { HttpClient, HttpResponse } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { map } from 'rxjs';\nimport { GuiControl } from '../interface';\n\nexport interface FileUploadResponseBody {\n bytes: number;\n mime: string;\n url: string;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class GuiFileUploaderConfig {\n protected http = inject(HttpClient);\n\n /**\n * The file upload URL\n */\n url = '';\n\n /**\n * The File upload API\n *\n * @param formData The FormData with file binary\n * @param config The custom upload config that passed from component input\n * @returns The uploaded file url stream\n */\n upload(formData: FormData, config: Partial<GuiControl>) {\n return this.http\n .post<FileUploadResponseBody>(this.url, formData, {\n reportProgress: true,\n observe: 'events',\n })\n .pipe(\n map(res => {\n if (res instanceof HttpResponse && res.body) {\n return res.body.url;\n }\n return null;\n })\n );\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n Output,\n SimpleChanges,\n ViewChild,\n ViewEncapsulation,\n forwardRef,\n inject,\n} from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MatIconButton } from '@angular/material/button';\nimport { MatFormField, MatHint, MatPrefix, MatSuffix } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatInput } from '@angular/material/input';\nimport { finalize } from 'rxjs';\n\nimport { GuiFieldLabel } from '../field-label/field-label';\nimport { GuiIconsRegistry } from '../gui-icons';\nimport { GuiIconButtonWrapper } from '../icon-button-wrapper/icon-button-wrapper';\nimport { GuiControl } from '../interface';\nimport { GuiFileUploaderConfig } from './file-uploader-config';\n\nexport type FileUploadType = 'image' | 'video' | 'audio' | '*';\n\nexport interface FileUploadContent {\n data: File;\n progress: number;\n inProgress: boolean;\n}\n\n@Component({\n selector: 'gui-file-uploader',\n templateUrl: './file-uploader.html',\n styleUrl: './file-uploader.scss',\n host: {\n class: 'gui-field gui-file-uploader',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => GuiFileUploader),\n multi: true,\n },\n ],\n imports: [\n FormsModule,\n MatFormField,\n MatIcon,\n MatPrefix,\n MatInput,\n MatIconButton,\n MatSuffix,\n MatHint,\n GuiFieldLabel,\n GuiIconButtonWrapper,\n ],\n})\nexport class GuiFileUploader implements ControlValueAccessor, OnChanges {\n private fileUploaderCfg = inject(GuiFileUploaderConfig);\n private cdr = inject(ChangeDetectorRef);\n\n @ViewChild('fileInput') fileInput!: ElementRef<HTMLInputElement>;\n\n @Input() config: Partial<GuiControl> = {};\n @Input() disabled = false;\n @Input() type: FileUploadType = '*';\n @Input() name = '';\n @Input() accept = '';\n\n @Output() fileChange = new EventEmitter<string>();\n\n // file url that returned from the server\n url = '';\n\n // file to upload\n fileUpload!: FileUploadContent;\n\n lastPasteFileMeta = { size: 0, type: '' };\n\n private onChange: (value: string) => void = () => {};\n private onTouched: () => void = () => {};\n\n constructor() {\n const iconsRegistry = inject(GuiIconsRegistry);\n iconsRegistry.add('link', 'clear', 'file', 'upload');\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['config'] || changes['accept'] || changes['type']) {\n this.accept = this.config.accept || this.accept || this.type + '/*';\n }\n }\n\n writeValue(value: any) {\n if (typeof value === 'string') {\n this.url = value.trim();\n }\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: (value: string) => void) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void) {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n\n upload(fileUpload: FileUploadContent) {\n const formData = new FormData();\n formData.append('file', fileUpload.data);\n\n fileUpload.inProgress = true;\n\n this.fileUploaderCfg\n .upload(formData, this.config)\n .pipe(\n finalize(() => {\n fileUpload.inProgress = false;\n })\n )\n .subscribe(result => {\n if (result) {\n this.url = result;\n this.cdr.detectChanges();\n\n this.onChange(this.url);\n this.onTouched();\n\n this.fileChange.emit(this.url);\n }\n });\n }\n\n onUrlChange(e: Event) {\n this.url = (e.target as HTMLInputElement).value.trim();\n\n this.onChange(this.url);\n\n this.fileChange.emit(this.url);\n }\n\n onFileChange(e: Event) {\n this.fileUpload = {\n data: (e.target as HTMLInputElement).files![0],\n inProgress: false,\n progress: 0,\n };\n\n this.upload(this.fileUpload);\n\n // reset input value\n (e.target as HTMLInputElement).value = '';\n }\n\n onBlur() {\n this.onTouched();\n }\n\n onClear() {\n this.url = '';\n\n this.onChange(this.url);\n this.onTouched();\n\n this.fileChange.emit(this.url);\n }\n\n onPaste(e: ClipboardEvent) {\n const clipboardData = e.clipboardData;\n if (!clipboardData) return;\n\n let imageFile = null;\n\n for (const item of clipboardData.items) {\n if (item.type.includes('image')) {\n imageFile = item.getAsFile();\n break;\n }\n }\n\n if (imageFile) {\n e.preventDefault();\n\n // Avoid uploading duplicate images\n if (\n imageFile.size === this.lastPasteFileMeta.size &&\n imageFile.type === this.lastPasteFileMeta.type\n ) {\n return;\n }\n this.lastPasteFileMeta = { size: imageFile.size, type: imageFile.type };\n\n this.fileUpload = { data: imageFile, inProgress: false, progress: 0 };\n this.upload(this.fileUpload);\n }\n }\n}\n","<mat-form-field>\n <gui-icon-button-wrapper matPrefix>\n <mat-icon svgIcon=\"link\" />\n </gui-icon-button-wrapper>\n\n <input\n matInput\n type=\"text\"\n [ngModel]=\"url\"\n [disabled]=\"disabled\"\n [placeholder]=\"config.placeholder || ''\"\n (change)=\"onUrlChange($event)\"\n (blur)=\"onBlur()\"\n (paste)=\"onPaste($event)\"\n />\n\n @if (url) {\n <gui-icon-button-wrapper matSuffix>\n <button mat-icon-button type=\"button\" color=\"warn\" [disabled]=\"disabled\" (click)=\"onClear()\">\n <mat-icon svgIcon=\"clear\" />\n </button>\n </gui-icon-button-wrapper>\n }\n</mat-form-field>\n\n<figure class=\"gui-file-content\">\n @if (url) {\n @switch (type) {\n @case ('image') {\n <img [src]=\"url\" alt=\"\" />\n }\n @case ('video') {\n <video [src]=\"url\"></video>\n }\n @case ('audio') {\n <audio [src]=\"url\" controls></audio>\n }\n @default {\n <mat-icon svgIcon=\"file\" />\n }\n }\n } @else {\n <div class=\"gui-file-placeholder\">\n <mat-icon svgIcon=\"upload\" />\n </div>\n }\n\n <input\n #fileInput\n type=\"file\"\n [accept]=\"accept\"\n [name]=\"name\"\n [disabled]=\"disabled\"\n (change)=\"onFileChange($event)\"\n />\n</figure>\n\n@if (config.parentType === 'inline') {\n <mat-hint>\n <gui-field-label [config]=\"config\" />\n </mat-hint>\n}\n","import { ColorPicker } from '@acrodata/color-picker';\nimport { GradientPicker } from '@acrodata/gradient-picker';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n forwardRef,\n inject,\n Input,\n OnChanges,\n Output,\n SimpleChanges,\n ViewEncapsulation,\n} from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MatButtonToggle, MatButtonToggleGroup } from '@angular/material/button-toggle';\nimport { MatIcon } from '@angular/material/icon';\nimport { GuiFileUploader } from '../file-uploader/file-uploader';\nimport { GuiIconsRegistry } from '../gui-icons';\nimport { GuiFillMode } from '../interface';\n\n@Component({\n selector: 'gui-fill-picker',\n templateUrl: './fill-picker.html',\n styleUrl: './fill-picker.scss',\n host: {\n class: 'gui-fill-picker',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => GuiFillPicker),\n multi: true,\n },\n ],\n imports: [\n FormsModule,\n MatButtonToggleGroup,\n MatButtonToggle,\n MatIcon,\n ColorPicker,\n GradientPicker,\n GuiFileUploader,\n ],\n})\nexport class GuiFillPicker implements ControlValueAccessor, OnChanges {\n private cdr = inject(ChangeDetectorRef);\n\n @Input() disabled = false;\n @Input() type: GuiFillMode = 'all';\n\n @Output() valueChangeComplete = new EventEmitter<string>();\n\n types = [\n { label: 'Solid', value: 'solid' },\n { label: 'Gradient', value: 'gradient' },\n { label: 'Image', value: 'image' },\n ];\n\n selectedType: Exclude<GuiFillMode, 'all'> = 'solid';\n\n fillValue = {\n solid: '#000',\n gradient: 'linear-gradient(transparent, #000)',\n image: '',\n };\n\n private onChange: (value: string) => void = () => {};\n private onTouched: () => void = () => {};\n\n constructor() {\n const iconsRegistry = inject(GuiIconsRegistry);\n iconsRegistry.add('solid', 'gradient', 'image');\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['type']) {\n if (this.type === 'gradient') {\n this.selectedType = 'gradient';\n } else if (this.type === 'image') {\n this.selectedType = 'image';\n } else {\n this.selectedType = 'solid';\n }\n }\n }\n\n writeValue(value: any) {\n if (typeof value === 'string') {\n value = value.trim();\n if (this.type === 'all') {\n this.getTypeFromModel(value);\n }\n if (value) {\n this.getValueFromModel(value);\n }\n this.cdr.markForCheck();\n }\n }\n\n registerOnChange(fn: (value: string) => void) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void) {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n\n getTypeFromModel(value: string) {\n if (value.includes('linear') || value.includes('radial') || value.includes('conic')) {\n this.selectedType = 'gradient';\n } else if (value.startsWith('url')) {\n this.selectedType = 'image';\n } else {\n this.selectedType = 'solid';\n }\n }\n\n getValueFromModel(value: string) {\n if (this.selectedType === 'solid') {\n this.fillValue.solid = value;\n } else if (this.selectedType === 'gradient') {\n this.fillValue.gradient = value;\n } else if (this.selectedType === 'image') {\n const regex = /url\\((?:'|\")?([^'\"]+?)(?:'|\")?\\)/;\n this.fillValue.image = value.match(regex)?.[1] || '';\n }\n }\n\n onTypeChange() {\n if (this.selectedType === 'solid') {\n this.onSolidChange();\n this.onSolidChangeComplete();\n } else if (this.selectedType === 'gradient') {\n this.onGradientChange();\n this.onGradientChangeComplete();\n } else if (this.selectedType === 'image') {\n this.onImageChange();\n }\n }\n\n onSolidChange() {\n this.onChange(this.fillValue.solid);\n }\n\n onSolidChangeComplete() {\n this.valueChangeComplete.emit(this.fillValue.solid);\n }\n\n onGradientChange() {\n this.onChange(this.fillValue.gradient);\n }\n\n onGradientChangeComplete() {\n this.valueChangeComplete.emit(this.fillValue.gradient);\n }\n\n onImageChange() {\n const bgImg = `url(\"${this.fillValue.image}\")`;\n this.onChange(bgImg);\n this.valueChangeComplete.emit(bgImg);\n }\n}\n","@if (type === 'all') {\n <div class=\"gui-fill-picker-header\">\n <mat-button-toggle-group\n hideSingleSelectionIndicator\n [(ngModel)]=\"selectedType\"\n (ngModelChange)=\"onTypeChange()\"\n >\n @for (t of types; track $index) {\n <mat-button-toggle [value]=\"t.value\" [title]=\"t.label\">\n <mat-icon [svgIcon]=\"t.value\" />\n </mat-button-toggle>\n }\n </mat-button-toggle-group>\n </div>\n}\n\n<div class=\"gui-fill-picker-body\">\n @if (selectedType === 'solid') {\n <color-picker\n [(ngModel)]=\"fillValue.solid\"\n (ngModelChange)=\"onSolidChange()\"\n (valueChangeComplete)=\"onSolidChangeComplete()\"\n />\n } @else if (selectedType === 'gradient') {\n <gradient-picker\n [(ngModel)]=\"fillValue.gradient\"\n (ngModelChange)=\"onGradientChange()\"\n (valueChangeComplete)=\"onGradientChangeComplete()\"\n />\n } @else if (selectedType === 'image') {\n <gui-file-uploader\n type=\"image\"\n [(ngModel)]=\"fillValue.image\"\n (ngModelChange)=\"onImageChange()\"\n />\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n forwardRef,\n inject,\n Input,\n OnChanges,\n SimpleChanges,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MatFormField, MatHint, MatPrefix } from '@angular/material/form-field';\nimport { MatInput } from '@angular/material/input';\nimport { MtxColorpicker, MtxColorpickerInput } from '@ng-matero/extensions/colorpicker';\nimport { GuiFieldLabel } from '../field-label/field-label';\nimport { GuiControl, GuiFillMode } from '../interface';\nimport { GuiFillPicker } from './fill-picker';\n\n@Component({\n selector: 'gui-fill',\n templateUrl: './fill.html',\n styleUrl: './fill.scss',\n host: {\n class: 'gui-field gui-fill',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => GuiFill),\n multi: true,\n },\n ],\n imports: [\n FormsModule,\n MatFormField,\n MatPrefix,\n MatInput,\n MatHint,\n MtxColorpickerInput,\n MtxColorpicker,\n GuiFieldLabel,\n GuiFillPicker,\n ],\n})\nexport class GuiFill implements ControlValueAccessor, OnChanges {\n private cdr = inject(ChangeDetectorRef);\n\n @ViewChild(MtxColorpicker) colorpicker?: MtxColorpicker;\n\n @Input() config: Partial<GuiControl> = {};\n @Input() disabled = false;\n @Input() type: GuiFillMode = 'all';\n\n value = '';\n\n private onChange: (value: string) => void = () => {};\n private onTouched: () => void = () => {};\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['config']) {\n this.type = (this.config.mode || 'all') as GuiFillMode;\n }\n }\n\n writeValue(value: any) {\n if (typeof value === 'string') {\n this.value = value;\n this.cdr.markForCheck();\n }\n }\n\n registerOnChange(fn: (value: string) => void) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void) {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n\n onValueChange() {\n this.onChange(this.value);\n }\n\n openColorPicker(e: PointerEvent) {\n e.stopPropagation();\n this.colorpicker?.open();\n }\n}\n","<mat-form-field>\n <ng-container matPrefix>\n <button class=\"gui-color-block\" (click)=\"openColorPicker($event)\">\n <span\n class=\"gui-color-block-bg\"\n [style.background]=\"value + ' center / contain no-repeat'\"\n ></span>\n </button>\n </ng-container>\n\n <input\n matInput\n [(ngModel)]=\"value\"\n [disabled]=\"disabled\"\n [placeholder]=\"config.placeholder || ''\"\n [mtxColorpicker]=\"cp\"\n (colorChange)=\"onValueChange()\"\n />\n\n <mtx-colorpicker #cp [content]=\"customPickerContent\" />\n\n @if (config.parentType === 'inline') {\n <mat-hint>\n <gui-field-label [config]=\"config\" />\n </mat-hint>\n }\n</mat-form-field>\n\n<ng-template #customPickerContent>\n <gui-fill-picker [type]=\"type\" [(ngModel)]=\"value\" (valueChangeComplete)=\"cp.select($event)\" />\n</ng-template>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n forwardRef,\n inject,\n Input,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MatFormField, MatHint, MatPrefix, MatSuffix } from '@angular/material/form-field';\nimport {\n MtxSelect,\n MtxSelectLabelTemplate,\n MtxSelectOptionTemplate,\n} from '@ng-matero/extensions/select';\nimport { GuiFieldLabel } from '../field-label/field-label';\nimport { GuiControl } from '../interface';\n\n@Component({\n selector: 'gui-image-select',\n templateUrl: './image-select.html',\n styleUrl: './image-select.scss',\n host: {\n class: 'gui-field gui-image-select',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => GuiImageSelect),\n multi: true,\n },\n ],\n imports: [\n FormsModule,\n MatFormField,\n MatPrefix,\n MatSuffix,\n MatHint,\n MtxSelect,\n MtxSelectLabelTemplate,\n MtxSelectOptionTemplate,\n GuiFieldLabel,\n ],\n})\nexport class GuiImageSelect implements ControlValueAccessor {\n private cdr = inject(ChangeDetectorRef);\n\n @ViewChild(MtxSelect) mtxSelect!: MtxSelect;\n\n @Input() config: Partial<GuiControl> = {};\n @Input() disabled = false;\n @Input() appendTo = 'body';\n\n value: any;\n\n private onChange: (value: any) => void = () => {};\n private onTouched: () => void = () => {};\n\n writeValue(value: any) {\n this.value = value;\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: (value: any) => void) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void) {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n\n onValueChange() {\n this.onChange(this.value);\n }\n}\n","<mat-form-field>\n @if (config.prefix) {\n <span matPrefix>{{ config.prefix }}</span>\n }\n <mtx-select\n panelClass=\"gui-image-select\"\n [items]=\"config.options || []\"\n [appendTo]=\"appendTo\"\n bindValue=\"value\"\n [(ngModel)]=\"value\"\n [disabled]=\"disabled\"\n [placeholder]=\"config.placeholder || ''\"\n (change)=\"onValueChange()\"\n >\n <ng-template ng-label-tmp let-opt=\"item\">\n <img [src]=\"opt.src\" [alt]=\"opt.label\" />\n <span>{{ opt.label }}</span>\n </ng-template>\n <ng-template ng-option-tmp let-opt=\"item\" let-index=\"index\" let-search=\"searchTerm\">\n <img [src]=\"opt.src\" [alt]=\"opt.label\" />\n <span>{{ opt.label }}</span>\n </ng-template>\n </mtx-select>\n @if (config.suffix) {\n <span matSuffix>{{ config.suffix }}</span>\n }\n @if (config.parentType === 'inline') {\n <mat-hint>\n <gui-field-label [config]=\"config\" />\n </mat-hint>\n }\n</mat-form-field>\n","import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';\nimport { GuiFieldLabel } from '../field-label/field-label';\nimport { GuiControl } from '../interface';\n\n@Component({\n selector: 'gui-inline-group',\n templateUrl: './inline-group.html',\n styleUrl: './inline-group.scss',\n host: {\n class: 'gui-inline-group',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [GuiFieldLabel],\n})\nexport class GuiInlineGroup {\n @Input() config: Partial<GuiControl> = {};\n}\n","@if (config.name) {\n <gui-field-label [config]=\"config\" />\n}\n<div class=\"gui-inline-group-content\">\n <ng-content />\n</div>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n forwardRef,\n inject,\n Input,\n ViewEncapsulation,\n} from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MatFormField, MatHint, MatPrefix, MatSuffix } from '@angular/material/form-field';\nimport { MatInput } from '@angular/material/input';\nimport { GuiFieldLabel } from '../field-label/field-label';\nimport { GuiControl } from '../interface';\n\n@Component({\n selector: 'gui-input-number',\n templateUrl: './input-number.html',\n styleUrl: './input-number.scss',\n host: {\n class: 'gui-field gui-input-number',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => GuiInputNumber),\n multi: true,\n },\n ],\n imports: [FormsModule, MatFormField, MatPrefix, MatInput, MatSuffix, MatHint, GuiFieldLabel],\n})\nexport class GuiInputNumber implements ControlValueAccessor {\n private cdr = inject(ChangeDetectorRef);\n\n @Input() config: Partial<GuiControl> = {};\n @Input() disabled = false;\n\n value!: number;\n\n private onChange: (value: number) => void = () => {};\n private onTouched: () => void = () => {};\n\n writeValue(value: any) {\n this.value = value;\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: (value: number) => void) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void) {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n\n onValueChange() {\n this.onChange(this.value);\n }\n}\n","<mat-form-field>\n @if (config.prefix) {\n <span matPrefix>{{ config.prefix }}</span>\n }\n <input\n matInput\n type=\"number\"\n [(ngModel)]=\"value\"\n [disabled]=\"disabled\"\n [placeholder]=\"config.placeholder || ''\"\n [step]=\"config.step\"\n [min]=\"config.min!\"\n [max]=\"config.max!\"\n (change)=\"onValueChange()\"\n />\n @if (config.suffix) {\n <span matSuffix>{{ config.suffix }}</span>\n }\n @if (config.parentType === 'inline') {\n <mat-hint>\n <gui-field-label [config]=\"config\" />\n </mat-hint>\n }\n</mat-form-field>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n forwardRef,\n inject,\n Input,\n ViewEncapsulation,\n} from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MatFormField, MatHint, MatPrefix, MatSuffix } from '@angular/material/form-field';\nimport { MatInput } from '@angular/material/input';\nimport { GuiFieldLabel } from '../field-label/field-label';\nimport { GuiControl } from '../interface';\n\n@Component({\n selector: 'gui-input-text',\n templateUrl: './input-text.html',\n styleUrl: './input-text.scss',\n host: {\n class: 'gui-field gui-input-text',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => GuiInputText),\n multi: true,\n },\n ],\n imports: [FormsModule, MatFormField, MatPrefix, MatInput, MatSuffix, MatHint, GuiFieldLabel],\n})\nexport class GuiInputText implements ControlValueAccessor {\n private cdr = inject(ChangeDetectorRef);\n\n @Input() config: Partial<GuiControl> = {};\n @Input() disabled = false;\n\n value = '';\n\n private onChange: (value: string) => void = () => {};\n private onTouched: () => void = () => {};\n\n writeValue(value: any) {\n this.value = value;\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: (value: string) => void) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void) {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n\n onValueChange() {\n this.onChange(this.value);\n }\n}\n","<mat-form-field>\n @if (config.prefix) {\n <span matPrefix>{{ config.prefix }}</span>\n }\n <input\n matInput\n type=\"text\"\n [(ngModel)]=\"value\"\n [disabled]=\"disabled\"\n [placeholder]=\"config.placeholder || ''\"\n (change)=\"onValueChange()\"\n />\n @if (config.suffix) {\n <span matSuffix>{{ config.suffix }}</span>\n }\n @if (config.parentType === 'inline') {\n <mat-hint>\n <gui-field-label [config]=\"config\" />\n </mat-hint>\n }\n</mat-form-field>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n forwardRef,\n inject,\n Input,\n ViewEncapsulation,\n} from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MatOption } from '@angular/material/core';\nimport { MatFormField, MatHint, MatPrefix, MatSuffix } from '@angular/material/form-field';\nimport { MatSelect } from '@angular/material/select';\nimport { GuiFieldLabel } from '../field-label/field-label';\nimport { GuiBasicValue, GuiControl } from '../interface';\n\n@Component({\n selector: 'gui-select',\n templateUrl: './select.html',\n styleUrl: './select.scss',\n host: {\n class: 'gui-field gui-select',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => GuiSelect),\n multi: true,\n },\n ],\n imports: [\n FormsModule,\n MatFormField,\n MatPrefix,\n MatSelect,\n MatOption,\n MatSuffix,\n MatHint,\n GuiFieldLabel,\n ],\n})\nexport class GuiSelect implements ControlValueAccessor {\n private cdr = inject(ChangeDetectorRef);\n\n @Input() config: Partial<GuiControl> = {};\n @Input() disabled = false;\n\n value: GuiBasicValue | GuiBasicValue[] = '';\n\n private onChange: (value: GuiBasicValue | GuiBasicValue[]) => void = () => {};\n private onTouched: () => void = () => {};\n\n writeValue(value: any) {\n this.value = value;\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: (value: GuiBasicValue | GuiBasicValue[]) => void) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void) {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n\n onValueChange() {\n this.onChange(this.value);\n }\n}\n","<mat-form-field>\n @if (config.prefix) {\n <span matPrefix>{{ config.prefix }}</span>\n }\n <mat-select\n panelClass=\"gui-select\"\n hideSingleSelectionIndicator\n disableRipple\n [(ngModel)]=\"value\"\n [disabled]=\"disabled\"\n [placeholder]=\"config.placeholder || ''\"\n [multiple]=\"config.multiple || false\"\n (selectionChange)=\"onValueChange()\"\n >\n @for (opt of config.options; track $index) {\n <mat-option [value]=\"opt.value\" [disabled]=\"opt.disabled\">\n <span [style.font-family]=\"config.useFont ? opt.value : ''\">{{ opt.label }}</span>\n </mat-option>\n }\n </mat-select>\n @if (config.suffix) {\n <span matSuffix>{{ config.suffix }}</span>\n }\n @if (config.parentType === 'inline') {\n <mat-hint>\n <gui-field-label [config]=\"config\" />\n </mat-hint>\n }\n</mat-form-field>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n forwardRef,\n inject,\n Input,\n ViewEncapsulation,\n} from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MatFormField, MatHint, MatPrefix, MatSuffix } from '@angular/material/form-field';\nimport { MatInput } from '@angular/material/input';\nimport { MatSlider, MatSliderRangeThumb, MatSliderThumb } from '@angular/material/slider';\nimport { GuiFieldLabel } from '../field-label/field-label';\nimport { GuiControl } from '../interface';\n\n@Component({\n selector: 'gui-slider',\n templateUrl: './slider.html',\n styleUrl: './slider.scss',\n host: {\n class: 'gui-field gui-slider',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => GuiSlider),\n multi: true,\n },\n ],\n imports: [\n FormsModule,\n MatSlider,\n MatSliderThumb,\n MatFormField,\n MatPrefix,\n MatInput,\n MatSuffix,\n MatSliderRangeThumb,\n MatHint,\n GuiFieldLabel,\n ],\n})\nexport class GuiSlider implements ControlValueAccessor {\n private cdr = inject(ChangeDetectorRef);\n\n @Input() config: Partial<GuiControl> = {};\n @Input() disabled = false;\n\n value!: number | number[];\n\n // The input binding value for range slider\n minValue!: number;\n maxValue!: number;\n\n private onChange: (value: number | number[]) => void = () => {};\n private onTouched: () => void = () => {};\n\n writeValue(value: any) {\n this.value = value;\n this.setInputValue();\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: (value: number | number[]) => void) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void) {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n\n onValueChange() {\n this.onChange(this.value);\n }\n\n onRangeSliderChange() {\n this.setInputValue();\n this.onValueChange();\n }\n\n onRangeInputChange() {\n this.value = [this.minValue, this.maxValue];\n this.onValueChange();\n }\n\n setInputValue() {\n if (Array.isArray(this.value)) {\n this.minValue = this.value[0];\n this.maxValue = this.value[1];\n }\n }\n}\n","@if (config.mode !== 'range') {\n <!-- normal slider -->\n <mat-slider [disabled]=\"disabled\" [step]=\"config.step\" [min]=\"config.min\" [max]=\"config.max\">\n <input matSliderThumb [(ngModel)]=\"value\" (valueChange)=\"onValueChange()\" />\n </mat-slider>\n <mat-form-field>\n @if (config.prefix) {\n <span matPrefix>{{ config.prefix }}</span>\n }\n <input\n matInput\n type=\"number\"\n [(ngModel)]=\"value\"\n [disabled]=\"disabled\"\n [placeholder]=\"config.placeholder || ''\"\n [step]=\"config.step\"\n [min]=\"config.min!\"\n [max]=\"config.max!\"\n (change)=\"onValueChange()\"\n />\n @if (config.suffix) {\n <span matSuffix>{{ config.suffix }}</span>\n }\n </mat-form-field>\n} @else {\n <!-- range slider -->\n <mat-slider [disabled]=\"disabled\" [step]=\"config.step\" [min]=\"config.min\" [max]=\"config.max\">\n <input matSliderStartThumb [(ngModel)]=\"minValue\" (valueChange)=\"onRangeInputChange()\" />\n <input matSliderEndThumb [(ngModel)]=\"maxValue\" (valueChange)=\"onRangeInputChange()\" />\n </mat-slider>\n <mat-form-field>\n @if (config.prefix) {\n <span matPrefix>{{ config.prefix }}</span>\n }\n <input\n matInput\n type=\"number\"\n [(ngModel)]=\"minValue\"\n [disabled]=\"disabled\"\n [placeholder]=\"config.placeholder || ''\"\n [step]=\"config.step\"\n [min]=\"config.min!\"\n [max]=\"config.max!\"\n (change)=\"onRangeInputChange()\"\n />\n @if (config.suffix) {\n <span matSuffix>{{ config.suffix }}</span>\n }\n </mat-form-field>\n <mat-form-field>\n @if (config.prefix) {\n <span matPrefix>{{ config.prefix }}</span>\n }\n <input\n matInput\n type=\"number\"\n [(ngModel)]=\"maxValue\"\n [disabled]=\"disabled\"\n [placeholder]=\"config.placeholder || ''\"\n [step]=\"config.step\"\n [min]=\"config.min!\"\n [max]=\"config.max!\"\n (change)=\"onRangeInputChange()\"\n />\n @if (config.suffix) {\n <span matSuffix>{{ config.suffix }}</span>\n }\n </mat-form-field>\n}\n\n@if (config.parentType === 'inline') {\n <mat-hint>\n <gui-field-label [config]=\"config\" />\n </mat-hint>\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n forwardRef,\n inject,\n Input,\n ViewEncapsulation,\n} from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MatHint } from '@angular/material/form-field';\nimport { MatSlideToggle } from '@angular/material/slide-toggle';\nimport { GuiFieldLabel } from '../field-label/field-label';\nimport { GuiControl } from '../interface';\n\n@Component({\n selector: 'gui-switch',\n templateUrl: './switch.html',\n styleUrl: './switch.scss',\n host: {\n class: 'gui-field gui-switch',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => GuiSwitch),\n multi: true,\n },\n ],\n imports: [FormsModule, MatSlideToggle, MatHint, GuiFieldLabel],\n})\nexport class GuiSwitch implements ControlValueAccessor {\n private cdr = inject(ChangeDetectorRef);\n\n @Input() config: Partial<GuiControl> = {};\n @Input() disabled = false;\n\n value = false;\n\n private onChange: (value: boolean) => void = () => {};\n private onTouched: () => void = () => {};\n\n writeValue(value: any) {\n this.value = value;\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: (value: boolean) => void) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void) {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n\n onValueChange() {\n this.onChange(this.value);\n }\n}\n","<mat-slide-toggle [(ngModel)]=\"value\" [disabled]=\"disabled\" hideIcon (change)=\"onValueChange()\" />\n@if (config.parentType === 'inline') {\n <mat-hint>\n <gui-field-label [config]=\"config\" />\n </mat-hint>\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n forwardRef,\n inject,\n Input,\n ViewEncapsulation,\n} from '@angular/core';\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MatFormField, MatHint, MatPrefix, MatSuffix } from '@angular/material/form-field';\nimport { MatInput } from '@angular/material/input';\nimport { GuiFieldLabel } from '../field-label/field-label';\nimport { GuiControl } from '../interface';\n\n@Component({\n selector: 'gui-textarea',\n templateUrl: './textarea.html',\n styleUrl: './textarea.scss',\n host: {\n class: 'gui-field gui-textarea',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => GuiTextarea),\n multi: true,\n },\n ],\n imports: [FormsModule, MatFormField, MatPrefix, MatInput, MatSuffix, MatHint, GuiFieldLabel],\n})\nexport class GuiTextarea {\n private cdr = inject(ChangeDetectorRef);\n\n @Input() config: Partial<GuiControl> = {};\n @Input() disabled = false;\n\n value = '';\n\n private onChange: (value: string) => void = () => {};\n private onTouched: () => void = () => {};\n\n writeValue(value: any) {\n this.value = value;\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: (value: string) => void) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void) {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n\n onValueChange() {\n this.onChange(this.value);\n }\n}\n","<mat-form-field>\n @if (config.prefix) {\n <span matPrefix>{{ config.prefix }}</span>\n }\n <textarea\n matInput\n [(ngModel)]=\"value\"\n [disabled]=\"disabled\"\n [placeholder]=\"config.placeholder || ''\"\n [rows]=\"config.rows\"\n (change)=\"onValueChange()\"\n ></textarea>\n @if (config.suffix) {\n <span matSuffix>{{ config.suffix }}</span>\n }\n @if (config.parentType === 'inline') {\n <mat-hint>\n <gui-field-label [config]=\"config\" />\n </mat-hint>\n }\n</mat-form-field>\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChanges,\n ViewEncapsulation,\n inject,\n} from '@angular/core';\nimport { FormArray, FormControl, FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { MatIconButton } from '@angular/material/button';\nimport {\n MatExpansionPanel,\n MatExpansionPanelContent,\n MatExpansionPanelHeader,\n} from '@angular/material/expansion';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatTab, MatTabContent, MatTabGroup, MatTabLabel } from '@angular/material/tabs';\nimport { Subscription, mergeWith, of } from 'rxjs';\n\nimport { GuiButtonToggle } from './button-toggle/button-toggle';\nimport { GuiCodearea } from './codearea/codearea';\nimport { GuiCombobox } from './combobox/combobox';\nimport { GuiFieldGroup } from './field-group/field-group';\nimport { GuiFieldLabel } from './field-label/field-label';\nimport { GuiFileUploader } from './file-uploader/file-uploader';\nimport { GuiFill } from './fill/fill';\nimport {\n GuiEjsPipe,\n GuiFlexDirective,\n compareValues,\n getModelFromConfig,\n getValueByPath,\n} from './gui-utils';\nimport { GuiIconButtonWrapper } from './icon-button-wrapper/icon-button-wrapper';\nimport { GuiImageSelect } from './image-select/image-select';\nimport { GuiInlineGroup } from './inline-group/inline-group';\nimport { GuiInputNumber } from './input-number/input-number';\nimport { GuiInputText } from './input-text/input-text';\nimport { GuiCondition, GuiControl, GuiFieldType, GuiFields, GuiTabsMode } from './interface';\nimport { GuiSelect } from './select/select';\nimport { GuiSlider } from './slider/slider';\nimport { GuiSwitch } from './switch/switch';\nimport { GuiTextarea } from './textarea/textarea';\n\nimport { GuiIconsRegistry } from './gui-icons';\n\nlet nextUniqueId = 0;\n\n@Component({\n selector: 'gui-form',\n templateUrl: './gui-form.html',\n styleUrl: './gui-form.scss',\n host: {\n '[attr.id]': 'uid',\n 'class': 'gui-form',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n ReactiveFormsModule,\n NgTemplateOutlet,\n MatExpansionPanel,\n MatExpansionPanelHeader,\n MatExpansionPanelContent,\n MatIconButton,\n MatIcon,\n MatTabGroup,\n MatTab,\n MatTabLabel,\n MatTabContent,\n GuiFieldGroup,\n GuiFlexDirective,\n GuiInputText,\n GuiInputNumber,\n GuiSelect,\n GuiSwitch,\n GuiSlider,\n GuiButtonToggle,\n GuiFill,\n GuiFileUploader,\n GuiImageSelect,\n GuiTextarea,\n GuiInlineGroup,\n GuiFieldLabel,\n GuiIconButtonWrapper,\n GuiEjsPipe,\n GuiCombobox,\n GuiCodearea,\n ],\n})\nexport class GuiForm implements OnChanges, OnInit, OnDestroy {\n /**\n * The form instance which allow to track model value and validation status.\n */\n @Input() form = new FormGroup<any>({});\n\n /**\n * The field configurations for building the form.\n */\n @Input() config: GuiFields = {};\n\n /**\n * The model to be represented by the form.\n */\n @Input() model: Record<string, any> = {};\n\n /**\n * Fired on model value change\n */\n @Output() modelChange = new EventEmitter();\n\n formFields: GuiControl[] = [];\n\n formSubscription = Subscription.EMPTY;\n\n controlSubscriptions: Subscription[] = [];\n\n // Unique id for this form\n uid = `gui-form-${nextUniqueId++}`;\n\n constructor() {\n const iconsRegistry = inject(GuiIconsRegistry);\n iconsRegistry.add('horizontal', 'vertical', 'copy', 'add', 'delete');\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['config']) {\n getModelFromConfig(this.config, this.model);\n this.form.controls = {}; // reset controls\n this.formFields = this.getFormFieldArray(this.form, this.config, this.model);\n }\n\n if (changes['model'] && this.model && Object.keys(this.model).length > 0) {\n this.form.patchValue(this.model);\n }\n }\n\n ngOnInit(): void {\n this.formSubscription = this.form.valueChanges.subscribe(value => {\n Object.assign(this.model, value);\n this.modelChange.emit(value);\n });\n }\n\n ngOnDestroy(): void {\n this.formSubscription.unsubscribe();\n this.controlSubscriptions.forEach(s => s.unsubscribe());\n }\n\n /**\n * Convert the object config to array config and register into the reactive form.\n *\n * @param form The reactive form instance\n * @param config The config of the form fields\n * @param model The value of the form control\n * @param defaultValue The default value of the form field\n * @param parentType The type of the form field parent\n * @returns\n */\n getFormFieldArray(\n form: FormGroup | FormArray,\n config: GuiFields | GuiControl[] = {},\n model: Record<string, any> = {},\n defaultValue: any = null,\n parentType: GuiFieldType = 'group'\n ) {\n const tempArr = [];\n\n for (const key of Object.keys(config)) {\n // Inferring the form type by the data type of `children`\n // 1. `undefined` => FormControl\n // 2. `array` => FormArray\n // 3. `object` => FormGroup\n const _children = (config as any)[key].template ? [] : (config as any)[key].children;\n const _type = !_children ? 'control' : Array.isArray(_children) ? 'array' : 'group';\n\n const item: GuiControl = {\n ...(config as any)[key],\n _type,\n key,\n parentType,\n model: model[key],\n default: defaultValue?.[key] ?? (config as any)[key].default,\n index: Number(key), // the string key will be `NaN`\n show: true,\n };\n\n // The `group` type generally have no `default`, so we should\n // set the default value manually\n if (item.children && model[key] == null && item.default == null) {\n item.model = model[key] = item._type === 'array' ? [] : {};\n }\n\n // Generate model by the `default` key of the field config\n if (typeof model === 'object' && model[key] == null) {\n model[key] = item.default;\n }\n\n // Special judgment on `tabs` type, the `children` key will be ignored if\n // there has a `template` key\n if (item.template) {\n // If the model is an array, the default value of the form field\n // will use the model's value\n if (Array.isArray(item.model)) {\n item.default = item.model;\n }\n if (item.default?.length) {\n item.children = item.default.map((value: any) => {\n return {\n default: value,\n ...item.template,\n };\n });\n } else {\n item.children = [];\n }\n }\n\n // Parse the `showIf` conditions\n if (item.showIf) {\n const setVisibility = (compareWith: (condition: GuiCondition) => boolean) => {\n if (item.showIf!.logicalType === '$or') {\n item.show = item.showIf!.conditions.some(c => compareWith(c));\n } else {\n item.show = item.showIf!.conditions.every(c => compareWith(c));\n }\n };\n\n // Set the init visibility of the field\n setVisibility(c => {\n const cfg = getValueByPath(config, c[0]) ?? getValueByPath(this.config, c[0]);\n const val = getValueByPath(model, c[0]) ?? getValueByPath(this.model, c[0]);\n return compareValues(val ?? cfg?.['default'], c[2], c[1]);\n });\n\n // Delay the subscription to make sure all the form controls have been created\n setTimeout(() => {\n const getControl = (path: string) => form.get(path) || this.form.get(path);\n\n const controls = item.showIf!.conditions.map(c => getControl(c[0]));\n const valueChanges$ = controls.map(control => control?.valueChanges || of());\n const subscription = of()\n .pipe(mergeWith(...valueChanges$))\n .subscribe(() => {\n setVisibility(c => compareValues(getControl(c[0])?.value, c[2], c[1]));\n });\n\n this.controlSubscriptions.push(subscription);\n });\n }\n\n if (item._type === 'control') {\n const formState = { value: item.default, disabled: item.disabled };\n if (form instanceof FormGroup) {\n form.registerControl(item.key, new FormControl(formState));\n } else if (form instanceof FormArray) {\n form.insert(item.index || form.length, new FormControl(formState), { emitEvent: false });\n }\n } else if (item._type === 'array') {\n let formArray = new FormArray<any>([]);\n if (form instanceof FormGroup) {\n formArray = form.registerControl(item.key, new FormArray([])) as FormArray;\n } else if (form instanceof FormArray) {\n form.insert(item.index || form.length, formArray, { emitEvent: false });\n }\n\n item.children = this.getFormFieldArray(\n formArray,\n item.children,\n item.model,\n item.default,\n item.type\n );\n\n item.selectedIndex = 0;\n } else if (item._type === 'group') {\n let formGroup = new FormGroup({});\n if (form instanceof FormGroup) {\n formGroup = form.registerControl(item.key, new FormGroup({})) as FormGroup;\n } else if (form instanceof FormArray) {\n form.insert(item.index || form.length, formGroup, { emitEvent: false });\n }\n\n item.children = this.getFormFieldArray(\n formGroup,\n item.children,\n item.model,\n item.default,\n item.type\n );\n }\n\n tempArr.push(item);\n }\n\n return tempArr;\n }\n\n /**\n * Add a tab item.\n *\n * @param e The mouse event\n * @param formArray The reactive form instance\n * @param tabs The config of the tabs field\n * @param copy Whether to copy the current tab\n * @param index The index of the tabs array\n */\n addTab(e: MouseEvent, formArray: FormArray, tabs: GuiControl, copy?: boolean, index?: number) {\n e.stopPropagation();\n const insertIndex =\n index !== void 0 ? index + 1 : copy ? tabs.selectedIndex! + 1 : tabs.children!.length;\n // Save the index of the insertion in the config\n tabs.template!.index = insertIndex;\n // The key in the object and the index in the array should be the same\n tabs.children!.forEach((child, index) => {\n if (index >= insertIndex) {\n child.index! += 1;\n child.key = child.index + ''; // convert to string\n }\n });\n\n const formValue = formArray.get(insertIndex - 1 + '')?.value;\n // The constructed object looks like this `[{ key: 'tab', children: template }]`\n // The key should preferably be `null`\n const newTab = this.getFormFieldArray(\n formArray,\n { [insertIndex]: tabs.template } as GuiFields,\n copy ? { [insertIndex]: formValue } : {},\n copy ? { [insertIndex]: formValue } : null,\n 'tabs'\n );\n tabs.children!.splice(insertIndex, 0, newTab[0]);\n\n // update the form model\n formArray.patchValue(formArray.value);\n }\n\n /**\n * Remove a tab item.\n *\n * @param e The mouse event\n * @param formArray The reactive form instance\n * @param tabs The config of the tabs field\n * @param index The index of the tabs array\n */\n removeTab(e: MouseEvent, formArray: FormArray, tabs: GuiControl, index?: number) {\n e.stopPropagation();\n const removeIndex = index === void 0 ? tabs.selectedIndex! : index;\n tabs.children!.forEach((child, index) => {\n if (index > removeIndex) {\n child.index! -= 1;\n child.key = child.index + ''; // convert to string\n }\n });\n tabs.children!.splice(removeIndex, 1);\n formArray.removeAt(removeIndex);\n }\n\n /**\n * Change the display mode of tabs.\n *\n * @param e The mouse event\n * @param tabs The config of the tabs field\n * @param mode The display mode of tabs\n */\n changeTabsMode(e: MouseEvent, tabs: GuiControl, mode?: GuiTabsMode) {\n e.stopPropagation();\n tabs.mode = mode;\n }\n}\n","<form [formGroup]=\"form\">\n @for (item of formFields; track item) {\n <div>\n <ng-template [ngTemplateOutlet]=\"controlType\"\n [ngTemplateOutletContext]=\"{$implicit: item, formGroup: form}\" />\n </div>\n }\n</form>\n\n<ng-template #controlType let-item let-parent=\"parent\" let-form=\"formGroup\">\n @if (item.show) {\n <ng-container [formGroup]=\"form\">\n @switch (item.type) {\n @case ('text') {\n <gui-field-group [config]=\"item\" [flex]=\"item.col\">\n <gui-input-text [formControlName]=\"item.key\" [config]=\"item\" />\n </gui-field-group>\n }\n @case ('number') {\n <gui-field-group [config]=\"item\" [flex]=\"item.col\">\n <gui-input-number [formControlName]=\"item.key\" [config]=\"item\" />\n </gui-field-group>\n }\n @case ('select') {\n <gui-field-group [config]=\"item\" [flex]=\"item.col\">\n <gui-select [formControlName]=\"item.key\" [config]=\"item\" />\n </gui-field-group>\n }\n @case ('switch') {\n <gui-field-group [config]=\"item\" [flex]=\"item.col\">\n <gui-switch [formControlName]=\"item.key\" [config]=\"item\" />\n </gui-field-group>\n }\n @case ('slider') {\n <gui-field-group [config]=\"item\" [flex]=\"item.col\">\n <gui-slider [formControlName]=\"item.key\" [config]=\"item\" />\n </gui-field-group>\n }\n @case ('buttonToggle') {\n <gui-field-group [config]=\"item\" [flex]=\"item.col\">\n <gui-button-toggle [formControlName]=\"item.key\" [config]=\"item\" />\n </gui-field-group>\n }\n @case ('fill') {\n <gui-field-group [config]=\"item\" [flex]=\"item.col\">\n <gui-fill [formControlName]=\"item.key\" [config]=\"item\" />\n </gui-field-group>\n }\n @case ('file') {\n <gui-field-group [config]=\"item\" [flex]=\"item.col\">\n <gui-file-uploader [formControlName]=\"item.key\" [config]=\"item\" />\n </gui-field-group>\n }\n @case ('image') {\n <gui-field-group [config]=\"item\" [flex]=\"item.col\">\n <gui-file-uploader type=\"image\" [formControlName]=\"item.key\" [config]=\"item\" />\n </gui-field-group>\n }\n @case ('video') {\n <gui-field-group [config]=\"item\" [flex]=\"item.col\">\n <gui-file-uploader type=\"video\" [formControlName]=\"item.key\" [config]=\"item\" />\n </gui-field-group>\n }\n @case ('audio') {\n <gui-field-group [config]=\"item\" [flex]=\"item.col\">\n <gui-file-uploader type=\"audio\" [formControlName]=\"item.key\" [config]=\"item\" />\n </gui-field-group>\n }\n @case ('imageSelect') {\n <gui-field-group [config]=\"item\" [flex]=\"item.col\">\n <gui-image-select [formControlName]=\"item.key\" [config]=\"item\" [appendTo]=\"'#'+uid\" />\n </gui-field-group>\n }\n @case ('combobox') {\n <gui-field-group [config]=\"item\" [flex]=\"item.col\">\n <gui-combobox [formControlName]=\"item.key\" [config]=\"item\" [appendTo]=\"'#'+uid\" />\n </gui-field-group>\n }\n @case ('textarea') {\n <gui-field-group [config]=\"item\" [flex]=\"item.col\">\n <gui-textarea [formControlName]=\"item.key\" [config]=\"item\" />\n </gui-field-group>\n }\n @case ('codearea') {\n <gui-field-group [config]=\"item\" [flex]=\"item.col\">\n <gui-codearea [formControlName]=\"item.key\" [config]=\"item\" />\n </gui-field-group>\n }\n @case ('hidden') {\n <input type=\"hidden\" [formControlName]=\"item.key\">\n }\n @case ('inline') {\n <gui-inline-group [config]=\"item\" [formGroupName]=\"item.key\">\n @for (child of item.children; track child) {\n <ng-template [ngTemplateOutlet]=\"controlType\"\n [ngTemplateOutletContext]=\"{\n $implicit: child, parent: item, formGroup: form.get(item.key)\n }\" />\n }\n </gui-inline-group>\n }\n @case ('group') {\n <mat-expansion-panel [formGroupName]=\"item.key\"\n [(expanded)]=\"item.expanded\" [disabled]=\"item.disabled\">\n <mat-expansion-panel-header>\n <gui-field-label [config]=\"item\" />\n </mat-expansion-panel-header>\n <!-- Lazy rendering -->\n <ng-template matExpansionPanelContent>\n @for (child of item.children; track child) {\n <div>\n <ng-template [ngTemplateOutlet]=\"controlType\"\n [ngTemplateOutletContext]=\"{\n $implicit: child, parent: item, formGroup: form.get(item.key)\n }\" />\n </div>\n }\n </ng-template>\n </mat-expansion-panel>\n }\n @case ('tabs') {\n <mat-expansion-panel [formArrayName]=\"item.key\"\n [(expanded)]=\"item.expanded\" [disabled]=\"item.disabled\">\n <mat-expansion-panel-header>\n <gui-field-label [config]=\"item\" />\n <!-- Show operation buttons when panel opened -->\n @if (item.expanded) {\n <gui-icon-button-wrapper>\n <button mat-icon-button type=\"button\" [color]=\"item.mode!=='list'?'primary':''\"\n (click)=\"changeTabsMode($event, item, 'normal')\">\n <mat-icon svgIcon=\"horizontal\" />\n </button>\n <button mat-icon-button type=\"button\" [color]=\"item.mode==='list'?'primary':''\"\n (click)=\"changeTabsMode($event, item, 'list')\">\n <mat-icon svgIcon=\"vertical\" />\n </button>\n @if (item.template && (item.addable || item.addable===undefined)) {\n <button mat-icon-button type=\"button\" [disabled]=\"item.disabled\"\n (click)=\"addTab($event, form.get(item.key), item, true)\">\n <mat-icon svgIcon=\"copy\" />\n </button>\n <button mat-icon-button type=\"button\" [disabled]=\"item.disabled\"\n (click)=\"addTab($event, form.get(item.key), item)\">\n <mat-icon svgIcon=\"add\" />\n </button>\n <button mat-icon-button type=\"button\" [disabled]=\"item.disabled\"\n (click)=\"removeTab($event, form.get(item.key), item)\">\n <mat-icon svgIcon=\"delete\" />\n </button>\n }\n </gui-icon-button-wrapper>\n }\n </mat-expansion-panel-header>\n <!-- Lazy rendering -->\n <ng-template matExpansionPanelContent>\n @if (item.mode!=='list') {\n <!-- Horizontal mode -->\n <mat-tab-group class=\"gui-tabs\" disableRipple\n [mat-stretch-tabs]=\"false\" [(selectedIndex)]=\"item.selectedIndex\">\n @for (tab of item.children; track tab; let i = $index) {\n <mat-tab [disabled]=\"tab.disabled\">\n <ng-template mat-tab-label>\n <div>{{tab.name | ejs:{i} }}</div>\n </ng-template>\n <!-- FormControl & FormArray -->\n @if (!tab.children || tab.children.length===0 || tab.type==='tabs') {\n <ng-template [ngTemplateOutlet]=\"controlType\"\n [ngTemplateOutletContext]=\"{\n $implicit: tab, parent: item, formGroup: form.get([item.key])\n }\" />\n }\n <!-- FormGroup -->\n @if (tab.children?.length>0 && tab.type!=='tabs') {\n @for (child of tab.children; track child) {\n <div>\n <ng-template [ngTemplateOutlet]=\"controlType\"\n [ngTemplateOutletContext]=\"{\n $implicit: child, parent: item, formGroup: form.get([item.key, i])\n }\" />\n </div>\n }\n }\n </mat-tab>\n }\n </mat-tab-group>\n } @else {\n <!-- Vertical mode -->\n <div class=\"gui-list\">\n @for (tab of item.children; track tab; let i = $index) {\n <div class=\"gui-list-item\"\n [class.gui-list-item-active]=\"item.selectedIndex===i\">\n <div class=\"gui-list-item-heading\">\n <button class=\"gui-list-item-title\" type=\"button\"\n (click)=\"item.selectedIndex=i\">{{tab.name | ejs:{i} }}</button>\n @if (item.template && (item.addable || item.addable===undefined)) {\n <gui-icon-button-wrapper>\n <button mat-icon-button type=\"button\" [disabled]=\"item.disabled\"\n (click)=\"addTab($event, form.get(item.key), item, true, i)\">\n <mat-icon svgIcon=\"copy\" />\n </button>\n <button mat-icon-button type=\"button\" [disabled]=\"item.disabled\"\n (click)=\"addTab($event, form.get(item.key), item, false, i)\">\n <mat-icon svgIcon=\"add\" />\n </button>\n <button mat-icon-button type=\"button\" [disabled]=\"item.disabled\"\n (click)=\"removeTab($event, form.get(item.key), item, i)\">\n <mat-icon svgIcon=\"delete\" />\n </button>\n </gui-icon-button-wrapper>\n }\n </div>\n <div class=\"gui-list-item-content\">\n <!-- FormControl & FormArray -->\n @if (!tab.children || tab.children.length===0 || tab.type==='tabs') {\n <ng-template [ngTemplateOutlet]=\"controlType\"\n [ngTemplateOutletContext]=\"{\n $implicit: tab, parent: item, formGroup: form.get([item.key])\n }\" />\n }\n <!-- FormGroup -->\n @if (tab.children?.length>0 && tab.type!=='tabs') {\n @for (child of tab.children; track child) {\n <div>\n <ng-template [ngTemplateOutlet]=\"controlType\"\n [ngTemplateOutletContext]=\"{\n $implicit: child, parent: item, formGroup: form.get([item.key, i])\n }\" />\n </div>\n }\n }\n </div>\n </div>\n }\n </div>\n }\n </ng-template>\n </mat-expansion-panel>\n }\n @case ('menu') {\n <mat-tab-group class=\"gui-menu\" [formGroupName]=\"item.key\" disableRipple>\n @for (menuChild of item.children; track menuChild) {\n <mat-tab [label]=\"menuChild.name\"\n [disabled]=\"menuChild.disabled\">\n <ng-template matTabContent>\n @if (menuChild.type==='menuItem') {\n <!-- Must wrap with div -->\n @for (controlItem of menuChild.children; track controlItem) {\n <div [formGroupName]=\"menuChild.key\">\n <ng-template [ngTemplateOutlet]=\"controlType\"\n [ngTemplateOutletContext]=\"{\n $implicit: controlItem, formGroup: form.get([item.key, menuChild.key])\n }\" />\n </div>\n }\n }\n <!-- Support for unlimited nesting -->\n @if (menuChild.type==='menu') {\n <ng-template [ngTemplateOutlet]=\"controlType\"\n [ngTemplateOutletContext]=\"{\n $implicit: menuChild, formGroup: form.get(item.key)\n }\" />\n }\n </ng-template>\n </mat-tab>\n }\n </mat-tab-group>\n }\n }\n </ng-container>\n }\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\n\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatSliderModule } from '@angular/material/slider';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MtxColorpickerModule } from '@ng-matero/extensions/colorpicker';\nimport { MtxSelectModule } from '@ng-matero/extensions/select';\n\nimport { GuiForm } from './gui-form';\nimport { GuiFieldGroup } from './field-group/field-group';\nimport { GuiFieldLabel } from './field-label/field-label';\nimport { GuiInlineGroup } from './inline-group/inline-group';\nimport { GuiInputText } from './input-text/input-text';\nimport { GuiInputNumber } from './input-number/input-number';\nimport { GuiSelect } from './select/select';\nimport { GuiSwitch } from './switch/switch';\nimport { GuiSlider } from './slider/slider';\nimport { GuiIcon } from './button-toggle/icon';\nimport { GuiButtonToggle } from './button-toggle/button-toggle';\nimport { GuiFill } from './fill/fill';\nimport { GuiFillPicker } from './fill/fill-picker';\nimport { GuiImageSelect } from './image-select/image-select';\nimport { GuiCombobox } from './combobox/combobox';\nimport { GuiTextarea } from './textarea/textarea';\nimport { GuiCodearea } from './codearea/codearea';\nimport { GuiCodeareaDialog } from './codearea/codearea-dialog';\nimport { GuiCodeareaToolbar } from './codearea/codearea-toolbar';\nimport { GuiFileUploader } from './file-uploader/file-uploader';\nimport { GuiIconButtonWrapper } from './icon-button-wrapper/icon-button-wrapper';\nimport { GuiEjsPipe, GuiFlexDirective } from './gui-utils';\n\n@NgModule({\n imports: [\n CommonModule,\n ReactiveFormsModule,\n FormsModule,\n MatFormFieldModule,\n MatInputModule,\n MatSelectModule,\n MatSliderModule,\n MatSlideToggleModule,\n MatButtonToggleModule,\n MatIconModule,\n MatButtonModule,\n MatTabsModule,\n MatExpansionModule,\n MatTooltipModule,\n MtxColorpickerModule,\n MtxSelectModule,\n GuiForm,\n GuiInputText,\n GuiInputNumber,\n GuiSelect,\n GuiSwitch,\n GuiSlider,\n GuiIcon,\n GuiButtonToggle,\n GuiFill,\n GuiFillPicker,\n GuiFieldGroup,\n GuiFieldLabel,\n GuiInlineGroup,\n GuiImageSelect,\n GuiCombobox,\n GuiTextarea,\n GuiCodearea,\n GuiCodeareaDialog,\n GuiCodeareaToolbar,\n GuiFileUploader,\n GuiIconButtonWrapper,\n GuiEjsPipe,\n GuiFlexDirective,\n ],\n exports: [\n GuiForm,\n GuiInputText,\n GuiInputNumber,\n GuiSelect,\n GuiSwitch,\n GuiSlider,\n GuiIcon,\n GuiButtonToggle,\n GuiFill,\n GuiFillPicker,\n GuiFieldGroup,\n GuiFieldLabel,\n GuiInlineGroup,\n GuiImageSelect,\n GuiCombobox,\n GuiTextarea,\n GuiCodearea,\n GuiCodeareaDialog,\n GuiCodeareaToolbar,\n GuiFileUploader,\n GuiIconButtonWrapper,\n GuiEjsPipe,\n GuiFlexDirective,\n ],\n})\nexport class GuiModule {}\n","/*\n * Public API Surface of gui\n */\n\nexport * from './gui-module';\nexport * from './gui-form';\nexport * from './button-toggle/button-toggle';\nexport * from './button-toggle/icon';\nexport * from './codearea/codearea';\nexport * from './codearea/codearea-dialog';\nexport * from './codearea/codearea-toolbar';\nexport * from './codearea/codearea-config';\nexport * from './combobox/combobox';\nexport * from './field-group/field-group';\nexport * from './field-label/field-label';\nexport * from './file-uploader/file-uploader';\nexport * from './file-uploader/file-uploader-config';\nexport * from './fill/fill';\nexport * from './fill/fill-picker';\nexport * from './icon-button-wrapper/icon-button-wrapper';\nexport * from './image-select/image-select';\nexport * from './inline-group/inline-group';\nexport * from './input-number/input-number';\nexport * from './input-text/input-text';\nexport * from './select/select';\nexport * from './slider/slider';\nexport * from './switch/switch';\nexport * from './textarea/textarea';\nexport * from './gui-utils';\nexport * from './gui-icons';\nexport * from './interface';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acrodata-gui.mjs","sources":["../../../projects/gui/gui-utils.ts","../../../projects/gui/field-label/field-label.ts","../../../projects/gui/field-label/field-label.html","../../../projects/gui/button-toggle/icon.ts","../../../projects/gui/button-toggle/button-toggle.ts","../../../projects/gui/button-toggle/button-toggle.html","../../../projects/gui/gui-icons.ts","../../../projects/gui/icon-button-wrapper/icon-button-wrapper.ts","../../../projects/gui/icon-button-wrapper/icon-button-wrapper.html","../../../projects/gui/codearea/codearea-config.ts","../../../projects/gui/codearea/codearea-toolbar.ts","../../../projects/gui/codearea/codearea-dialog.ts","../../../projects/gui/codearea/codearea-dialog.html","../../../projects/gui/codearea/codearea.ts","../../../projects/gui/codearea/codearea.html","../../../projects/gui/combobox/combobox.ts","../../../projects/gui/combobox/combobox.html","../../../projects/gui/field-group/field-group.ts","../../../projects/gui/field-group/field-group.html","../../../projects/gui/file-uploader/file-uploader-config.ts","../../../projects/gui/file-uploader/file-uploader.ts","../../../projects/gui/file-uploader/file-uploader.html","../../../projects/gui/fill/fill-picker.ts","../../../projects/gui/fill/fill-picker.html","../../../projects/gui/fill/fill.ts","../../../projects/gui/fill/fill.html","../../../projects/gui/image-select/image-select.ts","../../../projects/gui/image-select/image-select.html","../../../projects/gui/inline-group/inline-group.ts","../../../projects/gui/inline-group/inline-group.html","../../../projects/gui/input-number/input-number.ts","../../../projects/gui/input-number/input-number.html","../../../projects/gui/input-text/input-text.ts","../../../projects/gui/input-text/input-text.html","../../../projects/gui/select/select.ts","../../../projects/gui/select/select.html","../../../projects/gui/slider/slider.ts","../../../projects/gui/slider/slider.html","../../../projects/gui/switch/switch.ts","../../../projects/gui/switch/switch.html","../../../projects/gui/textarea/textarea.ts","../../../projects/gui/textarea/textarea.html","../../../projects/gui/gui-form.ts","../../../projects/gui/gui-form.html","../../../projects/gui/gui-module.ts","../../../projects/gui/public-api.ts","../../../projects/gui/acrodata-gui.ts"],"sourcesContent":["import { Directive, ElementRef, Input, OnInit, Pipe, PipeTransform, inject } from '@angular/core';\nimport { GuiDefaultValue, GuiFields, GuiOperator } from './interface';\n\n/**\n * Lightweight EJS template engine\n *\n * @param str template string\n * @param data data passed to the template\n * @returns\n *\n * ### Example\n *\n * ```ts\n * const people = ['geddy', 'neil', 'alex'];\n * const res = ejsTmpl('<%= people.join(\", \") %>', {people: people});\n * console.log(res);\n * // => 'geddy, neil, alex'\n * ```\n *\n */\nexport function ejsTmpl(str: string, data: any) {\n const fn = new Function(\n 'obj',\n 'var p=[],print=function(){p.push.apply(p,arguments);};' +\n // Introduce the data as local variables using with(){}\n 'with(obj){p.push(\"' +\n // Convert the template into pure JavaScript\n str\n .replace(/[\\r\\t\\n]/g, ' ')\n .split('<%')\n .join('\\t')\n .replace(/((^|%>)[^\\t]*)'/g, '$1\\r')\n .replace(/\\t=(.*?)%>/g, '\",$1,\"')\n .split('\\t')\n .join('\");')\n .split('%>')\n .join('p.push(\"')\n .split('\\r')\n .join('\"') +\n '\");}return p.join(\"\");'\n );\n\n // Provide some basic currying to the user\n return data ? fn(data) : fn;\n}\n\n@Pipe({\n name: 'ejs',\n})\nexport class GuiEjsPipe implements PipeTransform {\n transform(value: string, data = {}): string {\n return ejsTmpl(value, data);\n }\n}\n\n@Directive({\n selector: '[flex]',\n})\nexport class GuiFlexDirective implements OnInit {\n private el = inject(ElementRef);\n\n @Input() flex: number | undefined = 100;\n\n ngOnInit(): void {\n this.el.nativeElement.style.flex = `1 1 ${this.flex}%`;\n this.el.nativeElement.style.maxWidth = `${this.flex}%`;\n }\n}\n\nexport function compareValues(a: GuiDefaultValue, b: GuiDefaultValue, operator: GuiOperator) {\n switch (operator) {\n case '$eq':\n return a === b;\n case '$ne':\n return a !== b;\n case '$gt':\n return (a ?? 0) > (b ?? 0);\n case '$lt':\n return (a ?? 0) < (b ?? 0);\n case '$gte':\n return (a ?? 0) >= (b ?? 0);\n case '$lte':\n return (a ?? 0) <= (b ?? 0);\n case '$in':\n return Array.isArray(b) && b.includes(a);\n case '$nin':\n return Array.isArray(b) && !b.includes(a);\n default:\n return false;\n }\n}\n\nexport function getValueByPath(obj: Record<string, any>, path: string) {\n return path.split('.').reduce((acc: Record<string, any> | undefined, key) => {\n return acc?.['children']?.[key] ? acc['children'][key] : acc?.[key];\n }, obj);\n}\n\nexport function getModelFromConfig(config: GuiFields = {}, model: Record<string, any> = {}) {\n for (const [key, fieldCfg] of Object.entries(config)) {\n if (model[key] != null) {\n continue;\n }\n if (fieldCfg.default != null) {\n model[key] = fieldCfg.default;\n } else {\n if (\n fieldCfg.type === 'group' ||\n fieldCfg.type === 'inline' ||\n fieldCfg.type === 'menu' ||\n fieldCfg.type === 'menuItem'\n ) {\n model[key] = getModelFromConfig(fieldCfg.children as GuiFields, {});\n } else if (fieldCfg.type === 'tabs') {\n model[key] = [];\n } else {\n model[key] = null;\n }\n }\n }\n return model;\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n OnChanges,\n ViewEncapsulation,\n} from '@angular/core';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { ejsTmpl } from '../gui-utils';\nimport { GuiControl } from '../interface';\n\n@Component({\n selector: 'gui-field-label',\n templateUrl: './field-label.html',\n styleUrl: './field-label.scss',\n host: {\n '[class.gui-field-label]': '!styless',\n '[title]': 'title',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [MatTooltip],\n})\nexport class GuiFieldLabel implements OnChanges {\n @Input() config: Partial<GuiControl> = {};\n\n @Input() index?: number;\n\n title = '';\n\n styless = false;\n\n ngOnChanges(): void {\n const { index, name, parentType, type } = this.config;\n this.title = index != null && !isNaN(index) ? ejsTmpl(name || '', { i: index }) : name;\n this.styless =\n (parentType === 'inline' && type !== 'inline') || type === 'group' || type === 'tabs';\n }\n}\n","@if (!config.description) {\n <span>{{ title }}</span>\n} @else {\n <span\n [class.gui-field-label-with-description]=\"config.description\"\n [matTooltip]=\"config.description\"\n matTooltipPosition=\"above\"\n matTooltipShowDelay=\"1000\"\n matTooltipClass=\"gui-field-label-tooltip\"\n >\n {{ title }}\n </span>\n}\n","import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'gui-icon',\n template: `\n @if (isUrl) {\n <img [src]=\"src\" alt=\"\" />\n } @else {\n <i [class]=\"src\"></i>\n }\n `,\n styleUrl: './icon.scss',\n host: {\n class: 'gui-icon',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class GuiIcon {\n @Input() src = '';\n\n get isUrl() {\n return /^(https?:\\/\\/|\\.?\\/|data:)\\w+/.test(this.src);\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n forwardRef,\n inject,\n Input,\n ViewEncapsulation,\n} from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MatButtonToggle, MatButtonToggleGroup } from '@angular/material/button-toggle';\nimport { MatHint } from '@angular/material/form-field';\nimport { GuiFieldLabel } from '../field-label/field-label';\nimport { GuiFlexDirective } from '../gui-utils';\nimport { GuiBasicValue, GuiControl } from '../interface';\nimport { GuiIcon } from './icon';\n\n@Component({\n selector: 'gui-button-toggle',\n templateUrl: './button-toggle.html',\n styleUrl: './button-toggle.scss',\n host: {\n class: 'gui-field gui-button-toggle',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => GuiButtonToggle),\n multi: true,\n },\n ],\n imports: [\n FormsModule,\n MatButtonToggleGroup,\n MatButtonToggle,\n MatHint,\n GuiFlexDirective,\n GuiIcon,\n GuiFieldLabel,\n ],\n})\nexport class GuiButtonToggle implements ControlValueAccessor {\n private cdr = inject(ChangeDetectorRef);\n\n @Input() config: Partial<GuiControl> = {};\n @Input() disabled = false;\n\n value: GuiBasicValue | GuiBasicValue[] = '';\n\n private onChange: (value: GuiBasicValue | GuiBasicValue[]) => void = () => {};\n private onTouched: () => void = () => {};\n\n writeValue(value: any) {\n this.value = value;\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: (value: GuiBasicValue | GuiBasicValue[]) => void) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void) {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n\n onValueChange() {\n this.onChange(this.value);\n }\n}\n","<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","import { Injectable, InjectionToken, inject } from '@angular/core';\nimport { MatIconRegistry } from '@angular/material/icon';\nimport { DomSanitizer } from '@angular/platform-browser';\n\nexport const svgIcons = {\n horizontal: `\n <svg viewBox=\"0 0 24 24\">\n <path d=\"M16,12A2,2 0 0,1 18,10A2,2 0 0,1 20,12A2,2 0 0,1 18,14A2,2 0 0,1 16,12M10,12A2,2 0 0,1 12,10A2,2 0 0,1 14,12A2,2 0 0,1 12,14A2,2 0 0,1 10,12M4,12A2,2 0 0,1 6,10A2,2 0 0,1 8,12A2,2 0 0,1 6,14A2,2 0 0,1 4,12Z\"></path>\n </svg>\n `,\n vertical: `\n <svg viewBox=\"0 0 24 24\">\n <path d=\"M12,16A2,2 0 0,1 14,18A2,2 0 0,1 12,20A2,2 0 0,1 10,18A2,2 0 0,1 12,16M12,10A2,2 0 0,1 14,12A2,2 0 0,1 12,14A2,2 0 0,1 10,12A2,2 0 0,1 12,10M12,4A2,2 0 0,1 14,6A2,2 0 0,1 12,8A2,2 0 0,1 10,6A2,2 0 0,1 12,4Z\"></path>\n </svg>\n `,\n add: `\n <svg viewBox=\"0 0 24 24\">\n <path d=\"M19,13H13V19H11V13H5V11H11V5H13V11H19V13Z\"></path>\n </svg>\n `,\n delete: `\n <svg viewBox=\"0 0 24 24\">\n <path d=\"M9,3V4H4V6H5V19A2,2 0 0,0 7,21H17A2,2 0 0,0 19,19V6H20V4H15V3H9M7,6H17V19H7V6M9,8V17H11V8H9M13,8V17H15V8H13Z\"></path>\n </svg>\n `,\n copy: `\n <svg viewBox=\"0 0 24 24\">\n <path fill=\"currentColor\" d=\"M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z\"></path>\n </svg>\n `,\n link: `\n <svg viewBox=\"0 0 24 24\">\n <path d=\"M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1zM8 13h8v-2H8v2zm9-6h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76 0 5-2.24 5-5s-2.24-5-5-5z\"></path>\n </svg>\n `,\n clear: `\n <svg viewBox=\"0 0 24 24\">\n <path d=\"M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z\"></path>\n </svg>\n `,\n file: `\n <svg viewBox=\"0 0 24 24\">\n <path d=\"M14,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2M18,20H6V4H13V9H18V20Z\"></path>\n </svg>\n `,\n upload: `\n <svg viewBox=\"0 0 24 24\">\n <path d=\"M2 12H4V17H20V12H22V17C22 18.11 21.11 19 20 19H4C2.9 19 2 18.11 2 17V12M12 2L6.46 7.46L7.88 8.88L11 5.75V15H13V5.75L16.13 8.88L17.55 7.45L12 2Z\"></path>\n </svg>\n `,\n expand: `\n <svg viewBox=\"0 0 24 24\">\n <path fill=\"currentColor\" d=\"M10,21V19H6.41L10.91,14.5L9.5,13.09L5,17.59V14H3V21H10M14.5,10.91L19,6.41V10H21V3H14V5H17.59L13.09,9.5L14.5,10.91Z\"></path>\n </svg>`,\n wrap: `\n <svg viewBox=\"0 0 24 24\">\n <path fill=\"currentColor\" d=\"M21,5H3V7H21V5M3,19H10V17H3V19M3,13H18C19,13 20,13.43 20,15C20,16.57 19,17 18,17H16V15L12,18L16,21V19H18C20.95,19 22,17.73 22,15C22,12.28 21,11 18,11H3V13Z\"></path>\n </svg>`,\n solid: `\n <svg viewBox=\"0 0 24 24\">\n <path fill=\"currentColor\" fill-rule=\"evenodd\" d=\"M9 9h6v6H9z\"></path>\n <path fill=\"currentColor\" fill-rule=\"evenodd\" d=\"M8 7h8a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H8a1 1 0 0 1-1-1V8a1 1 0 0 1 1-1M6 8a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2zm3 7V9h6v6zM8 8.5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 .5.5v7a.5.5 0 0 1-.5.5h-7a.5.5 0 0 1-.5-.5z\"></path>\n </svg>`,\n gradient: `\n <svg viewBox=\"0 0 24 24\">\n <path fill=\"currentColor\" fill-rule=\"evenodd\" d=\"M8 7h8a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H8a1 1 0 0 1-1-1V8a1 1 0 0 1 1-1M6 8a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2zm3.75.875a.875.875 0 1 1-1.75 0 .875.875 0 0 1 1.75 0m3.791.625a.625.625 0 1 0 0-1.25.625.625 0 0 0 0 1.25m-1.458.875a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0m0 3.12a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0m1.458 2.245a.625.625 0 1 0 0-1.25.625.625 0 0 0 0 1.25m.625-3.865a.625.625 0 1 1-1.25 0 .625.625 0 0 1 1.25 0M8.875 15.99a.875.875 0 1 0 0-1.75.875.875 0 0 0 0 1.75m.875-4.115a.875.875 0 1 1-1.75 0 .875.875 0 0 1 1.75 0m5.75-1a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1m.5 2.623a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0\"></path>\n </svg>`,\n image: `\n <svg viewBox=\"0 0 24 24\">\n <path fill=\"currentColor\" fill-rule=\"evenodd\" d=\"M16 7H8a1 1 0 0 0-1 1v5.668l2.521-2.522a.5.5 0 0 1 .708 0l5.85 5.85A1 1 0 0 0 17 16V8a1 1 0 0 0-1-1M6 14.875V16a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2H8a2 2 0 0 0-2 2zM8 17h6.668l-4.793-4.793L7 15.082V16a1 1 0 0 0 1 1m7-7a1 1 0 1 1-2 0 1 1 0 0 1 2 0m1 0a2 2 0 1 1-4 0 2 2 0 0 1 4 0\"></path>\n </svg>\n `,\n};\n\nexport type GuiIconType = keyof typeof svgIcons;\n\nexport type GuiIconsConfig = Record<GuiIconType, string>;\n\n/** Injection token that can be used to provide the default icons. */\nexport const GUI_ICONS_CONFIG = new InjectionToken<GuiIconsConfig>('gui-icons-config');\n\n@Injectable({ providedIn: 'root' })\nexport class GuiIconsRegistry {\n private _iconRegistry = inject(MatIconRegistry);\n private _sanitizer = inject(DomSanitizer);\n private _defaultIcons = inject<GuiIconsConfig>(GUI_ICONS_CONFIG, { optional: true });\n\n add(...iconNames: GuiIconType[]) {\n const icons = Object.assign(svgIcons, this._defaultIcons);\n iconNames.forEach(k => {\n this._iconRegistry.addSvgIconLiteral(k, this._sanitizer.bypassSecurityTrustHtml(icons[k]));\n });\n }\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'gui-icon-button-wrapper',\n templateUrl: './icon-button-wrapper.html',\n styleUrl: './icon-button-wrapper.scss',\n host: {\n class: 'gui-icon-button-wrapper',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class GuiIconButtonWrapper {}\n","<ng-content />\n","import { Theme } from '@acrodata/code-editor';\nimport { Injectable } from '@angular/core';\nimport { LanguageDescription } from '@codemirror/language';\nimport { Extension } from '@codemirror/state';\nimport { Subject } from 'rxjs';\nimport { GuiCodeareaDialogData } from './codearea-dialog';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class GuiCodeareaConfig {\n readonly changes: Subject<void> = new Subject<void>();\n\n theme: Theme = 'light';\n\n languages: LanguageDescription[] = [];\n\n extensions: Extension[] | ((data: GuiCodeareaDialogData) => Extension[]) = [];\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'gui-codearea-toolbar',\n template: `\n <ng-content />\n `,\n styleUrl: './codearea-toolbar.scss',\n host: {\n class: 'gui-codearea-toolbar',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class GuiCodeareaToolbar {}\n","import { CodeEditor } from '@acrodata/code-editor';\nimport { RndDialogDragHandle } from '@acrodata/rnd-dialog';\nimport { DIALOG_DATA, DialogRef } from '@angular/cdk/dialog';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n ViewEncapsulation,\n inject,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormsModule } from '@angular/forms';\nimport { MatButton, MatIconButton } from '@angular/material/button';\nimport { MatIcon } from '@angular/material/icon';\nimport { Extension } from '@codemirror/state';\nimport { GuiIconsRegistry } from '../gui-icons';\nimport { GuiIconButtonWrapper } from '../icon-button-wrapper/icon-button-wrapper';\nimport { GuiCodeareaConfig } from './codearea-config';\nimport { GuiCodeareaToolbar } from './codearea-toolbar';\n\nexport interface GuiCodeareaDialogData {\n value: string;\n disabled?: boolean;\n readonly?: boolean;\n language?: string;\n title?: string;\n extensions?: Extension[];\n}\n\n@Component({\n selector: 'gui-codearea-dialog',\n imports: [\n FormsModule,\n MatButton,\n MatIconButton,\n MatIcon,\n RndDialogDragHandle,\n CodeEditor,\n GuiIconButtonWrapper,\n GuiCodeareaToolbar,\n ],\n templateUrl: './codearea-dialog.html',\n styleUrl: './codearea-dialog.scss',\n host: {\n class: 'gui-codearea-dialog',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class GuiCodeareaDialog {\n private dialogRef = inject<DialogRef<string, GuiCodeareaDialog>>(DialogRef);\n data = inject<GuiCodeareaDialogData>(DIALOG_DATA);\n private cdr = inject(ChangeDetectorRef);\n private destroyRef = inject(DestroyRef);\n private codeareaCfg = inject(GuiCodeareaConfig);\n\n get languages() {\n return this.codeareaCfg.languages;\n }\n\n get theme() {\n return this.codeareaCfg.theme;\n }\n\n langDesc = this.codeareaCfg.languages.find(\n lang => this.data.language && lang.alias.includes(this.data.language.toLowerCase())\n );\n\n title = `${this.data.title || ''} (${this.langDesc?.name || 'Plain Text'})`;\n\n lineWrapping = false;\n\n constructor() {\n const iconsRegistry = inject(GuiIconsRegistry);\n iconsRegistry.add('wrap');\n\n this.codeareaCfg.changes.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n this.cdr.markForCheck();\n });\n }\n\n toggleLineWrapping() {\n this.lineWrapping = !this.lineWrapping;\n }\n\n save() {\n this.dialogRef.close(this.data.value);\n }\n\n close() {\n this.dialogRef.close();\n }\n}\n","<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 type=\"button\" (click)=\"close()\">Close</button>\n <button mat-flat-button type=\"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]=\"data.extensions || []\"\n [lineWrapping]=\"lineWrapping\"\n indentWithTab\n />\n\n <gui-codearea-toolbar>\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 </gui-codearea-toolbar>\n</div>\n","import { CodeEditor, Setup } from '@acrodata/code-editor';\nimport { RndDialog } from '@acrodata/rnd-dialog';\nimport { coerceCssPixelValue } from '@angular/cdk/coercion';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n forwardRef,\n inject,\n Input,\n ViewEncapsulation,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MatIconButton } from '@angular/material/button';\nimport { MatHint } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { Extension } from '@codemirror/state';\nimport { GuiFieldLabel } from '../field-label/field-label';\nimport { GuiIconsRegistry } from '../gui-icons';\nimport { GuiIconButtonWrapper } from '../icon-button-wrapper/icon-button-wrapper';\nimport { GuiControl } from '../interface';\nimport { GuiCodeareaConfig } from './codearea-config';\nimport { GuiCodeareaDialog, GuiCodeareaDialogData } from './codearea-dialog';\nimport { GuiCodeareaToolbar } from './codearea-toolbar';\n\n@Component({\n selector: 'gui-codearea',\n templateUrl: './codearea.html',\n styleUrl: './codearea.scss',\n host: {\n class: 'gui-field gui-codearea',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => GuiCodearea),\n multi: true,\n },\n ],\n imports: [\n FormsModule,\n MatIcon,\n MatIconButton,\n MatHint,\n CodeEditor,\n GuiFieldLabel,\n GuiIconButtonWrapper,\n GuiCodeareaToolbar,\n ],\n})\nexport class GuiCodearea implements ControlValueAccessor {\n private rndDialog = inject(RndDialog);\n private cdr = inject(ChangeDetectorRef);\n private destroyRef = inject(DestroyRef);\n private codeareaCfg = inject(GuiCodeareaConfig);\n\n @Input() config: Partial<GuiControl> = {};\n @Input() disabled = false;\n\n @Input() setup: Setup = 'minimal';\n\n @Input()\n get height() {\n return coerceCssPixelValue(this.config.height || this._height);\n }\n set height(value: string | number) {\n this._height = value;\n }\n private _height: string | number = 120;\n\n @Input()\n get language() {\n return this.config.language || this._language;\n }\n set language(value: string) {\n this._language = value;\n }\n private _language = '';\n\n @Input()\n get extensions() {\n const globalExtensions =\n typeof this.codeareaCfg.extensions === 'function'\n ? this.codeareaCfg.extensions({ value: this.value, language: this.language })\n : this.codeareaCfg.extensions;\n return [...globalExtensions, this._extensions];\n }\n set extensions(value: Extension[]) {\n this._extensions = value;\n }\n private _extensions: Extension[] = [];\n\n get languages() {\n return this.codeareaCfg.languages;\n }\n\n get theme() {\n return this.codeareaCfg.theme;\n }\n\n get dialogData(): GuiCodeareaDialogData {\n return {\n value: this.value,\n disabled: this.disabled,\n language: this.language,\n extensions: this.extensions,\n };\n }\n\n value = '';\n private oldValue = '';\n\n lineWrapping = false;\n\n private onChange: (value: string) => void = () => {};\n private onTouched: () => void = () => {};\n\n constructor() {\n const iconsRegistry = inject(GuiIconsRegistry);\n iconsRegistry.add('expand');\n iconsRegistry.add('wrap');\n\n this.codeareaCfg.changes.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n this.cdr.markForCheck();\n });\n }\n\n writeValue(value: any) {\n if (typeof value === 'string' || value == null) {\n this.value = value || '';\n } else {\n this.value = value.toString();\n }\n this.oldValue = this.value;\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: (value: string) => void) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void) {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n\n onValueChange() {\n if (this.value !== this.oldValue) {\n this.onChange(this.value);\n this.oldValue = this.value;\n }\n }\n\n onExpand() {\n const dialogRef = this.rndDialog.open<string, GuiCodeareaDialogData, GuiCodeareaDialog>(\n GuiCodeareaDialog,\n {\n panelClass: 'gui-codearea-dialog-panel',\n hasBackdrop: false,\n width: '600px',\n data: this.dialogData,\n }\n );\n\n dialogRef.closed.subscribe(newValue => {\n if (newValue) {\n this.value = newValue;\n this.cdr.detectChanges();\n this.onValueChange();\n }\n });\n }\n\n toggleLineWrapping() {\n this.lineWrapping = !this.lineWrapping;\n }\n}\n","<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 [lineWrapping]=\"lineWrapping\"\n (blur)=\"onValueChange()\"\n/>\n\n<gui-codearea-toolbar>\n <gui-icon-button-wrapper>\n <button mat-icon-button type=\"button\" (click)=\"onExpand()\">\n <mat-icon svgIcon=\"expand\" />\n </button>\n <button mat-icon-button type=\"button\" (click)=\"toggleLineWrapping()\">\n <mat-icon svgIcon=\"wrap\" />\n </button>\n </gui-icon-button-wrapper>\n</gui-codearea-toolbar>\n\n@if (config.parentType === 'inline') {\n <mat-hint>\n <gui-field-label [config]=\"config\" />\n </mat-hint>\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n forwardRef,\n inject,\n Input,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MatFormField, MatHint, MatPrefix, MatSuffix } from '@angular/material/form-field';\nimport { MtxSelect, MtxSelectOptionTemplate } from '@ng-matero/extensions/select';\nimport { GuiFieldLabel } from '../field-label/field-label';\nimport { GuiBasicValue, GuiControl } from '../interface';\n\n@Component({\n selector: 'gui-combobox',\n templateUrl: './combobox.html',\n styleUrl: './combobox.scss',\n host: {\n class: 'gui-field gui-combobox',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => GuiCombobox),\n multi: true,\n },\n ],\n imports: [\n FormsModule,\n MatFormField,\n MatPrefix,\n MatSuffix,\n MatHint,\n MtxSelect,\n MtxSelectOptionTemplate,\n GuiFieldLabel,\n ],\n})\nexport class GuiCombobox implements ControlValueAccessor {\n private cdr = inject(ChangeDetectorRef);\n\n @ViewChild(MtxSelect) mtxSelect!: MtxSelect;\n\n @Input() config: Partial<GuiControl> = {};\n @Input() disabled = false;\n @Input() appendTo = 'body';\n\n value: GuiBasicValue | GuiBasicValue[] = '';\n\n private onChange: (value: GuiBasicValue | GuiBasicValue[]) => void = () => {};\n private onTouched: () => void = () => {};\n\n writeValue(value: any) {\n this.value = value;\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: (value: GuiBasicValue | GuiBasicValue[]) => void) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void) {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n\n onValueChange() {\n this.onChange(this.value);\n }\n\n addTagFn(label: string) {\n return { label, value: label };\n }\n}\n","<mat-form-field>\n @if (config.prefix) {\n <span matPrefix>{{ config.prefix }}</span>\n }\n <mtx-select\n panelClass=\"gui-combobox\"\n [(ngModel)]=\"value\"\n [disabled]=\"disabled\"\n [placeholder]=\"config.placeholder || ''\"\n [appendTo]=\"appendTo\"\n [items]=\"config.options || []\"\n bindLabel=\"label\"\n bindValue=\"value\"\n [multiple]=\"config.multiple || false\"\n [addTag]=\"addTagFn\"\n [closeOnSelect]=\"!config.multiple\"\n [deselectOnClick]=\"true\"\n (change)=\"onValueChange()\"\n >\n <ng-template ng-option-tmp let-item=\"item\">\n <div class=\"ng-option-label\" [style.font-family]=\"config.useFont ? item.value : ''\">\n {{ item.label }}\n </div>\n </ng-template>\n </mtx-select>\n @if (config.suffix) {\n <span matSuffix>{{ config.suffix }}</span>\n }\n @if (config.parentType === 'inline') {\n <mat-hint>\n <gui-field-label [config]=\"config\" />\n </mat-hint>\n }\n</mat-form-field>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DoCheck,\n Input,\n KeyValueDiffer,\n KeyValueDiffers,\n OnInit,\n ViewEncapsulation,\n inject,\n} from '@angular/core';\nimport { GuiFieldLabel } from '../field-label/field-label';\nimport { GuiControl } from '../interface';\n\n@Component({\n selector: 'gui-field-group',\n templateUrl: './field-group.html',\n styleUrl: './field-group.scss',\n host: {\n class: 'gui-field-group',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [GuiFieldLabel],\n})\nexport class GuiFieldGroup implements OnInit, DoCheck {\n private differs = inject(KeyValueDiffers);\n private cdr = inject(ChangeDetectorRef);\n\n @Input() config: Partial<GuiControl> = {};\n\n private configDiffer?: KeyValueDiffer<string, any>;\n\n ngOnInit(): void {\n this.configDiffer = this.differs.find(this.config).create();\n }\n\n ngDoCheck(): void {\n const changes = this.configDiffer?.diff(this.config);\n changes?.forEachChangedItem(record => {\n this.cdr.markForCheck();\n });\n }\n}\n","@if (config.parentType !== 'inline' && config.name) {\n <gui-field-label [config]=\"config\" [index]=\"config.index\" />\n}\n<ng-content />\n","import { HttpClient, HttpResponse } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { map } from 'rxjs';\nimport { GuiControl } from '../interface';\n\nexport interface FileUploadResponseBody {\n bytes: number;\n mime: string;\n url: string;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class GuiFileUploaderConfig {\n protected http = inject(HttpClient);\n\n /**\n * The file upload URL\n */\n url = '';\n\n /**\n * The File upload API\n *\n * @param formData The FormData with file binary\n * @param config The custom upload config that passed from component input\n * @returns The uploaded file url stream\n */\n upload(formData: FormData, config: Partial<GuiControl>) {\n return this.http\n .post<FileUploadResponseBody>(this.url, formData, {\n reportProgress: true,\n observe: 'events',\n })\n .pipe(\n map(res => {\n if (res instanceof HttpResponse && res.body) {\n return res.body.url;\n }\n return null;\n })\n );\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n Output,\n SimpleChanges,\n ViewChild,\n ViewEncapsulation,\n forwardRef,\n inject,\n} from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MatIconButton } from '@angular/material/button';\nimport { MatFormField, MatHint, MatPrefix, MatSuffix } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatInput } from '@angular/material/input';\nimport { finalize } from 'rxjs';\n\nimport { GuiFieldLabel } from '../field-label/field-label';\nimport { GuiIconsRegistry } from '../gui-icons';\nimport { GuiIconButtonWrapper } from '../icon-button-wrapper/icon-button-wrapper';\nimport { GuiControl } from '../interface';\nimport { GuiFileUploaderConfig } from './file-uploader-config';\n\nexport type FileUploadType = 'image' | 'video' | 'audio' | '*';\n\nexport interface FileUploadContent {\n data: File;\n progress: number;\n inProgress: boolean;\n}\n\n@Component({\n selector: 'gui-file-uploader',\n templateUrl: './file-uploader.html',\n styleUrl: './file-uploader.scss',\n host: {\n class: 'gui-field gui-file-uploader',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => GuiFileUploader),\n multi: true,\n },\n ],\n imports: [\n FormsModule,\n MatFormField,\n MatIcon,\n MatPrefix,\n MatInput,\n MatIconButton,\n MatSuffix,\n MatHint,\n GuiFieldLabel,\n GuiIconButtonWrapper,\n ],\n})\nexport class GuiFileUploader implements ControlValueAccessor, OnChanges {\n private fileUploaderCfg = inject(GuiFileUploaderConfig);\n private cdr = inject(ChangeDetectorRef);\n\n @ViewChild('fileInput') fileInput!: ElementRef<HTMLInputElement>;\n\n @Input() config: Partial<GuiControl> = {};\n @Input() disabled = false;\n @Input() type: FileUploadType = '*';\n @Input() name = '';\n @Input() accept = '';\n\n @Output() fileChange = new EventEmitter<string>();\n\n // file url that returned from the server\n url = '';\n\n // file to upload\n fileUpload!: FileUploadContent;\n\n lastPasteFileMeta = { size: 0, type: '' };\n\n private onChange: (value: string) => void = () => {};\n private onTouched: () => void = () => {};\n\n constructor() {\n const iconsRegistry = inject(GuiIconsRegistry);\n iconsRegistry.add('link', 'clear', 'file', 'upload');\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['config'] || changes['accept'] || changes['type']) {\n this.accept = this.config.accept || this.accept || this.type + '/*';\n }\n }\n\n writeValue(value: any) {\n if (typeof value === 'string') {\n this.url = value.trim();\n }\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: (value: string) => void) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void) {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n\n upload(fileUpload: FileUploadContent) {\n const formData = new FormData();\n formData.append('file', fileUpload.data);\n\n fileUpload.inProgress = true;\n\n this.fileUploaderCfg\n .upload(formData, this.config)\n .pipe(\n finalize(() => {\n fileUpload.inProgress = false;\n })\n )\n .subscribe(result => {\n if (result) {\n this.url = result;\n this.cdr.detectChanges();\n\n this.onChange(this.url);\n this.onTouched();\n\n this.fileChange.emit(this.url);\n }\n });\n }\n\n onUrlChange(e: Event) {\n this.url = (e.target as HTMLInputElement).value.trim();\n\n this.onChange(this.url);\n\n this.fileChange.emit(this.url);\n }\n\n onFileChange(e: Event) {\n this.fileUpload = {\n data: (e.target as HTMLInputElement).files![0],\n inProgress: false,\n progress: 0,\n };\n\n this.upload(this.fileUpload);\n\n // reset input value\n (e.target as HTMLInputElement).value = '';\n }\n\n onBlur() {\n this.onTouched();\n }\n\n onClear() {\n this.url = '';\n\n this.onChange(this.url);\n this.onTouched();\n\n this.fileChange.emit(this.url);\n }\n\n onPaste(e: ClipboardEvent) {\n const clipboardData = e.clipboardData;\n if (!clipboardData) return;\n\n let imageFile = null;\n\n for (const item of clipboardData.items) {\n if (item.type.includes('image')) {\n imageFile = item.getAsFile();\n break;\n }\n }\n\n if (imageFile) {\n e.preventDefault();\n\n // Avoid uploading duplicate images\n if (\n imageFile.size === this.lastPasteFileMeta.size &&\n imageFile.type === this.lastPasteFileMeta.type\n ) {\n return;\n }\n this.lastPasteFileMeta = { size: imageFile.size, type: imageFile.type };\n\n this.fileUpload = { data: imageFile, inProgress: false, progress: 0 };\n this.upload(this.fileUpload);\n }\n }\n}\n","<mat-form-field>\n <gui-icon-button-wrapper matPrefix>\n <mat-icon svgIcon=\"link\" />\n </gui-icon-button-wrapper>\n\n <input\n matInput\n type=\"text\"\n [ngModel]=\"url\"\n [disabled]=\"disabled\"\n [placeholder]=\"config.placeholder || ''\"\n (change)=\"onUrlChange($event)\"\n (blur)=\"onBlur()\"\n (paste)=\"onPaste($event)\"\n />\n\n @if (url) {\n <gui-icon-button-wrapper matSuffix>\n <button mat-icon-button type=\"button\" color=\"warn\" [disabled]=\"disabled\" (click)=\"onClear()\">\n <mat-icon svgIcon=\"clear\" />\n </button>\n </gui-icon-button-wrapper>\n }\n</mat-form-field>\n\n<figure class=\"gui-file-content\">\n @if (url) {\n @switch (type) {\n @case ('image') {\n <img [src]=\"url\" alt=\"\" />\n }\n @case ('video') {\n <video [src]=\"url\"></video>\n }\n @case ('audio') {\n <audio [src]=\"url\" controls></audio>\n }\n @default {\n <mat-icon svgIcon=\"file\" />\n }\n }\n } @else {\n <div class=\"gui-file-placeholder\">\n <mat-icon svgIcon=\"upload\" />\n </div>\n }\n\n <input\n #fileInput\n type=\"file\"\n [accept]=\"accept\"\n [name]=\"name\"\n [disabled]=\"disabled\"\n (change)=\"onFileChange($event)\"\n />\n</figure>\n\n@if (config.parentType === 'inline') {\n <mat-hint>\n <gui-field-label [config]=\"config\" />\n </mat-hint>\n}\n","import { ColorPicker } from '@acrodata/color-picker';\nimport { GradientPicker } from '@acrodata/gradient-picker';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n forwardRef,\n inject,\n Input,\n OnChanges,\n Output,\n SimpleChanges,\n ViewEncapsulation,\n} from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MatButtonToggle, MatButtonToggleGroup } from '@angular/material/button-toggle';\nimport { MatIcon } from '@angular/material/icon';\nimport { GuiFileUploader } from '../file-uploader/file-uploader';\nimport { GuiIconsRegistry } from '../gui-icons';\nimport { GuiFillMode } from '../interface';\n\n@Component({\n selector: 'gui-fill-picker',\n templateUrl: './fill-picker.html',\n styleUrl: './fill-picker.scss',\n host: {\n class: 'gui-fill-picker',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => GuiFillPicker),\n multi: true,\n },\n ],\n imports: [\n FormsModule,\n MatButtonToggleGroup,\n MatButtonToggle,\n MatIcon,\n ColorPicker,\n GradientPicker,\n GuiFileUploader,\n ],\n})\nexport class GuiFillPicker implements ControlValueAccessor, OnChanges {\n private cdr = inject(ChangeDetectorRef);\n\n @Input() disabled = false;\n @Input() type: GuiFillMode = 'all';\n\n @Output() valueChangeComplete = new EventEmitter<string>();\n\n types = [\n { label: 'Solid', value: 'solid' },\n { label: 'Gradient', value: 'gradient' },\n { label: 'Image', value: 'image' },\n ];\n\n selectedType: Exclude<GuiFillMode, 'all'> = 'solid';\n\n fillValue = {\n solid: '#000',\n gradient: 'linear-gradient(transparent, #000)',\n image: '',\n };\n\n private onChange: (value: string) => void = () => {};\n private onTouched: () => void = () => {};\n\n constructor() {\n const iconsRegistry = inject(GuiIconsRegistry);\n iconsRegistry.add('solid', 'gradient', 'image');\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['type']) {\n if (this.type === 'gradient') {\n this.selectedType = 'gradient';\n } else if (this.type === 'image') {\n this.selectedType = 'image';\n } else {\n this.selectedType = 'solid';\n }\n }\n }\n\n writeValue(value: any) {\n if (typeof value === 'string') {\n value = value.trim();\n if (this.type === 'all') {\n this.getTypeFromModel(value);\n }\n if (value) {\n this.getValueFromModel(value);\n }\n this.cdr.markForCheck();\n }\n }\n\n registerOnChange(fn: (value: string) => void) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void) {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n\n getTypeFromModel(value: string) {\n if (value.includes('linear') || value.includes('radial') || value.includes('conic')) {\n this.selectedType = 'gradient';\n } else if (value.startsWith('url')) {\n this.selectedType = 'image';\n } else {\n this.selectedType = 'solid';\n }\n }\n\n getValueFromModel(value: string) {\n if (this.selectedType === 'solid') {\n this.fillValue.solid = value;\n } else if (this.selectedType === 'gradient') {\n this.fillValue.gradient = value;\n } else if (this.selectedType === 'image') {\n const regex = /url\\((?:'|\")?([^'\"]+?)(?:'|\")?\\)/;\n this.fillValue.image = value.match(regex)?.[1] || '';\n }\n }\n\n onTypeChange() {\n if (this.selectedType === 'solid') {\n this.onSolidChange();\n this.onSolidChangeComplete();\n } else if (this.selectedType === 'gradient') {\n this.onGradientChange();\n this.onGradientChangeComplete();\n } else if (this.selectedType === 'image') {\n this.onImageChange();\n }\n }\n\n onSolidChange() {\n this.onChange(this.fillValue.solid);\n }\n\n onSolidChangeComplete() {\n this.valueChangeComplete.emit(this.fillValue.solid);\n }\n\n onGradientChange() {\n this.onChange(this.fillValue.gradient);\n }\n\n onGradientChangeComplete() {\n this.valueChangeComplete.emit(this.fillValue.gradient);\n }\n\n onImageChange() {\n const bgImg = `url(\"${this.fillValue.image}\")`;\n this.onChange(bgImg);\n this.valueChangeComplete.emit(bgImg);\n }\n}\n","@if (type === 'all') {\n <div class=\"gui-fill-picker-header\">\n <mat-button-toggle-group\n hideSingleSelectionIndicator\n [(ngModel)]=\"selectedType\"\n (ngModelChange)=\"onTypeChange()\"\n >\n @for (t of types; track $index) {\n <mat-button-toggle [value]=\"t.value\" [title]=\"t.label\">\n <mat-icon [svgIcon]=\"t.value\" />\n </mat-button-toggle>\n }\n </mat-button-toggle-group>\n </div>\n}\n\n<div class=\"gui-fill-picker-body\">\n @if (selectedType === 'solid') {\n <color-picker\n [(ngModel)]=\"fillValue.solid\"\n (ngModelChange)=\"onSolidChange()\"\n (valueChangeComplete)=\"onSolidChangeComplete()\"\n />\n } @else if (selectedType === 'gradient') {\n <gradient-picker\n [(ngModel)]=\"fillValue.gradient\"\n (ngModelChange)=\"onGradientChange()\"\n (valueChangeComplete)=\"onGradientChangeComplete()\"\n />\n } @else if (selectedType === 'image') {\n <gui-file-uploader\n type=\"image\"\n [(ngModel)]=\"fillValue.image\"\n (ngModelChange)=\"onImageChange()\"\n />\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n forwardRef,\n inject,\n Input,\n OnChanges,\n SimpleChanges,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MatFormField, MatHint, MatPrefix } from '@angular/material/form-field';\nimport { MatInput } from '@angular/material/input';\nimport { MtxColorpicker, MtxColorpickerInput } from '@ng-matero/extensions/colorpicker';\nimport { GuiFieldLabel } from '../field-label/field-label';\nimport { GuiControl, GuiFillMode } from '../interface';\nimport { GuiFillPicker } from './fill-picker';\n\n@Component({\n selector: 'gui-fill',\n templateUrl: './fill.html',\n styleUrl: './fill.scss',\n host: {\n class: 'gui-field gui-fill',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => GuiFill),\n multi: true,\n },\n ],\n imports: [\n FormsModule,\n MatFormField,\n MatPrefix,\n MatInput,\n MatHint,\n MtxColorpickerInput,\n MtxColorpicker,\n GuiFieldLabel,\n GuiFillPicker,\n ],\n})\nexport class GuiFill implements ControlValueAccessor, OnChanges {\n private cdr = inject(ChangeDetectorRef);\n\n @ViewChild(MtxColorpicker) colorpicker?: MtxColorpicker;\n\n @Input() config: Partial<GuiControl> = {};\n @Input() disabled = false;\n @Input() type: GuiFillMode = 'all';\n\n value = '';\n\n private onChange: (value: string) => void = () => {};\n private onTouched: () => void = () => {};\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['config']) {\n this.type = (this.config.mode || 'all') as GuiFillMode;\n }\n }\n\n writeValue(value: any) {\n if (typeof value === 'string') {\n this.value = value;\n this.cdr.markForCheck();\n }\n }\n\n registerOnChange(fn: (value: string) => void) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void) {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n\n onValueChange() {\n this.onChange(this.value);\n }\n\n openColorPicker(e: PointerEvent) {\n e.stopPropagation();\n this.colorpicker?.open();\n }\n}\n","<mat-form-field>\n <ng-container matPrefix>\n <button class=\"gui-color-block\" type=\"button\" (click)=\"openColorPicker($event)\">\n <span\n class=\"gui-color-block-bg\"\n [style.background]=\"value + ' center / contain no-repeat'\"\n ></span>\n </button>\n </ng-container>\n\n <input\n matInput\n [(ngModel)]=\"value\"\n [disabled]=\"disabled\"\n [placeholder]=\"config.placeholder || ''\"\n [mtxColorpicker]=\"cp\"\n (colorChange)=\"onValueChange()\"\n />\n\n <mtx-colorpicker #cp [content]=\"customPickerContent\" />\n\n @if (config.parentType === 'inline') {\n <mat-hint>\n <gui-field-label [config]=\"config\" />\n </mat-hint>\n }\n</mat-form-field>\n\n<ng-template #customPickerContent>\n <gui-fill-picker [type]=\"type\" [(ngModel)]=\"value\" (valueChangeComplete)=\"cp.select($event)\" />\n</ng-template>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n forwardRef,\n inject,\n Input,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MatFormField, MatHint, MatPrefix, MatSuffix } from '@angular/material/form-field';\nimport {\n MtxSelect,\n MtxSelectLabelTemplate,\n MtxSelectOptionTemplate,\n} from '@ng-matero/extensions/select';\nimport { GuiFieldLabel } from '../field-label/field-label';\nimport { GuiControl } from '../interface';\n\n@Component({\n selector: 'gui-image-select',\n templateUrl: './image-select.html',\n styleUrl: './image-select.scss',\n host: {\n class: 'gui-field gui-image-select',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => GuiImageSelect),\n multi: true,\n },\n ],\n imports: [\n FormsModule,\n MatFormField,\n MatPrefix,\n MatSuffix,\n MatHint,\n MtxSelect,\n MtxSelectLabelTemplate,\n MtxSelectOptionTemplate,\n GuiFieldLabel,\n ],\n})\nexport class GuiImageSelect implements ControlValueAccessor {\n private cdr = inject(ChangeDetectorRef);\n\n @ViewChild(MtxSelect) mtxSelect!: MtxSelect;\n\n @Input() config: Partial<GuiControl> = {};\n @Input() disabled = false;\n @Input() appendTo = 'body';\n\n value: any;\n\n private onChange: (value: any) => void = () => {};\n private onTouched: () => void = () => {};\n\n writeValue(value: any) {\n this.value = value;\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: (value: any) => void) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void) {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n\n onValueChange() {\n this.onChange(this.value);\n }\n}\n","<mat-form-field>\n @if (config.prefix) {\n <span matPrefix>{{ config.prefix }}</span>\n }\n <mtx-select\n panelClass=\"gui-image-select\"\n [items]=\"config.options || []\"\n [appendTo]=\"appendTo\"\n bindValue=\"value\"\n [(ngModel)]=\"value\"\n [disabled]=\"disabled\"\n [placeholder]=\"config.placeholder || ''\"\n (change)=\"onValueChange()\"\n >\n <ng-template ng-label-tmp let-opt=\"item\">\n <img [src]=\"opt.src\" [alt]=\"opt.label\" />\n <span>{{ opt.label }}</span>\n </ng-template>\n <ng-template ng-option-tmp let-opt=\"item\" let-index=\"index\" let-search=\"searchTerm\">\n <img [src]=\"opt.src\" [alt]=\"opt.label\" />\n <span>{{ opt.label }}</span>\n </ng-template>\n </mtx-select>\n @if (config.suffix) {\n <span matSuffix>{{ config.suffix }}</span>\n }\n @if (config.parentType === 'inline') {\n <mat-hint>\n <gui-field-label [config]=\"config\" />\n </mat-hint>\n }\n</mat-form-field>\n","import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';\nimport { GuiFieldLabel } from '../field-label/field-label';\nimport { GuiControl } from '../interface';\n\n@Component({\n selector: 'gui-inline-group',\n templateUrl: './inline-group.html',\n styleUrl: './inline-group.scss',\n host: {\n class: 'gui-inline-group',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [GuiFieldLabel],\n})\nexport class GuiInlineGroup {\n @Input() config: Partial<GuiControl> = {};\n}\n","@if (config.name) {\n <gui-field-label [config]=\"config\" />\n}\n<div class=\"gui-inline-group-content\">\n <ng-content />\n</div>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n forwardRef,\n inject,\n Input,\n ViewEncapsulation,\n} from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MatFormField, MatHint, MatPrefix, MatSuffix } from '@angular/material/form-field';\nimport { MatInput } from '@angular/material/input';\nimport { GuiFieldLabel } from '../field-label/field-label';\nimport { GuiControl } from '../interface';\n\n@Component({\n selector: 'gui-input-number',\n templateUrl: './input-number.html',\n styleUrl: './input-number.scss',\n host: {\n class: 'gui-field gui-input-number',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => GuiInputNumber),\n multi: true,\n },\n ],\n imports: [FormsModule, MatFormField, MatPrefix, MatInput, MatSuffix, MatHint, GuiFieldLabel],\n})\nexport class GuiInputNumber implements ControlValueAccessor {\n private cdr = inject(ChangeDetectorRef);\n\n @Input() config: Partial<GuiControl> = {};\n @Input() disabled = false;\n\n value!: number;\n\n private onChange: (value: number) => void = () => {};\n private onTouched: () => void = () => {};\n\n writeValue(value: any) {\n this.value = value;\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: (value: number) => void) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void) {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n\n onValueChange() {\n this.onChange(this.value);\n }\n}\n","<mat-form-field>\n @if (config.prefix) {\n <span matPrefix>{{ config.prefix }}</span>\n }\n <input\n matInput\n type=\"number\"\n [(ngModel)]=\"value\"\n [disabled]=\"disabled\"\n [placeholder]=\"config.placeholder || ''\"\n [step]=\"config.step\"\n [min]=\"config.min!\"\n [max]=\"config.max!\"\n (change)=\"onValueChange()\"\n />\n @if (config.suffix) {\n <span matSuffix>{{ config.suffix }}</span>\n }\n @if (config.parentType === 'inline') {\n <mat-hint>\n <gui-field-label [config]=\"config\" />\n </mat-hint>\n }\n</mat-form-field>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n forwardRef,\n inject,\n Input,\n ViewEncapsulation,\n} from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MatFormField, MatHint, MatPrefix, MatSuffix } from '@angular/material/form-field';\nimport { MatInput } from '@angular/material/input';\nimport { GuiFieldLabel } from '../field-label/field-label';\nimport { GuiControl } from '../interface';\n\n@Component({\n selector: 'gui-input-text',\n templateUrl: './input-text.html',\n styleUrl: './input-text.scss',\n host: {\n class: 'gui-field gui-input-text',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => GuiInputText),\n multi: true,\n },\n ],\n imports: [FormsModule, MatFormField, MatPrefix, MatInput, MatSuffix, MatHint, GuiFieldLabel],\n})\nexport class GuiInputText implements ControlValueAccessor {\n private cdr = inject(ChangeDetectorRef);\n\n @Input() config: Partial<GuiControl> = {};\n @Input() disabled = false;\n\n value = '';\n\n private onChange: (value: string) => void = () => {};\n private onTouched: () => void = () => {};\n\n writeValue(value: any) {\n this.value = value;\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: (value: string) => void) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void) {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n\n onValueChange() {\n this.onChange(this.value);\n }\n}\n","<mat-form-field>\n @if (config.prefix) {\n <span matPrefix>{{ config.prefix }}</span>\n }\n <input\n matInput\n type=\"text\"\n [(ngModel)]=\"value\"\n [disabled]=\"disabled\"\n [placeholder]=\"config.placeholder || ''\"\n (change)=\"onValueChange()\"\n />\n @if (config.suffix) {\n <span matSuffix>{{ config.suffix }}</span>\n }\n @if (config.parentType === 'inline') {\n <mat-hint>\n <gui-field-label [config]=\"config\" />\n </mat-hint>\n }\n</mat-form-field>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n forwardRef,\n inject,\n Input,\n ViewEncapsulation,\n} from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MatOption } from '@angular/material/core';\nimport { MatFormField, MatHint, MatPrefix, MatSuffix } from '@angular/material/form-field';\nimport { MatSelect } from '@angular/material/select';\nimport { GuiFieldLabel } from '../field-label/field-label';\nimport { GuiBasicValue, GuiControl } from '../interface';\n\n@Component({\n selector: 'gui-select',\n templateUrl: './select.html',\n styleUrl: './select.scss',\n host: {\n class: 'gui-field gui-select',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => GuiSelect),\n multi: true,\n },\n ],\n imports: [\n FormsModule,\n MatFormField,\n MatPrefix,\n MatSelect,\n MatOption,\n MatSuffix,\n MatHint,\n GuiFieldLabel,\n ],\n})\nexport class GuiSelect implements ControlValueAccessor {\n private cdr = inject(ChangeDetectorRef);\n\n @Input() config: Partial<GuiControl> = {};\n @Input() disabled = false;\n\n value: GuiBasicValue | GuiBasicValue[] = '';\n\n private onChange: (value: GuiBasicValue | GuiBasicValue[]) => void = () => {};\n private onTouched: () => void = () => {};\n\n writeValue(value: any) {\n this.value = value;\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: (value: GuiBasicValue | GuiBasicValue[]) => void) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void) {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n\n onValueChange() {\n this.onChange(this.value);\n }\n}\n","<mat-form-field>\n @if (config.prefix) {\n <span matPrefix>{{ config.prefix }}</span>\n }\n <mat-select\n panelClass=\"gui-select\"\n hideSingleSelectionIndicator\n disableRipple\n [(ngModel)]=\"value\"\n [disabled]=\"disabled\"\n [placeholder]=\"config.placeholder || ''\"\n [multiple]=\"config.multiple || false\"\n (selectionChange)=\"onValueChange()\"\n >\n @for (opt of config.options; track $index) {\n <mat-option [value]=\"opt.value\" [disabled]=\"opt.disabled\">\n <span [style.font-family]=\"config.useFont ? opt.value : ''\">{{ opt.label }}</span>\n </mat-option>\n }\n </mat-select>\n @if (config.suffix) {\n <span matSuffix>{{ config.suffix }}</span>\n }\n @if (config.parentType === 'inline') {\n <mat-hint>\n <gui-field-label [config]=\"config\" />\n </mat-hint>\n }\n</mat-form-field>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n forwardRef,\n inject,\n Input,\n ViewEncapsulation,\n} from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MatFormField, MatHint, MatPrefix, MatSuffix } from '@angular/material/form-field';\nimport { MatInput } from '@angular/material/input';\nimport { MatSlider, MatSliderRangeThumb, MatSliderThumb } from '@angular/material/slider';\nimport { GuiFieldLabel } from '../field-label/field-label';\nimport { GuiControl } from '../interface';\n\n@Component({\n selector: 'gui-slider',\n templateUrl: './slider.html',\n styleUrl: './slider.scss',\n host: {\n class: 'gui-field gui-slider',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => GuiSlider),\n multi: true,\n },\n ],\n imports: [\n FormsModule,\n MatSlider,\n MatSliderThumb,\n MatFormField,\n MatPrefix,\n MatInput,\n MatSuffix,\n MatSliderRangeThumb,\n MatHint,\n GuiFieldLabel,\n ],\n})\nexport class GuiSlider implements ControlValueAccessor {\n private cdr = inject(ChangeDetectorRef);\n\n @Input() config: Partial<GuiControl> = {};\n @Input() disabled = false;\n\n value!: number | number[];\n\n // The input binding value for range slider\n minValue!: number;\n maxValue!: number;\n\n private onChange: (value: number | number[]) => void = () => {};\n private onTouched: () => void = () => {};\n\n writeValue(value: any) {\n this.value = value;\n this.setInputValue();\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: (value: number | number[]) => void) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void) {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n\n onValueChange() {\n this.onChange(this.value);\n }\n\n onRangeSliderChange() {\n this.setInputValue();\n this.onValueChange();\n }\n\n onRangeInputChange() {\n this.value = [this.minValue, this.maxValue];\n this.onValueChange();\n }\n\n setInputValue() {\n if (Array.isArray(this.value)) {\n this.minValue = this.value[0];\n this.maxValue = this.value[1];\n }\n }\n}\n","@if (config.mode !== 'range') {\n <!-- normal slider -->\n <mat-slider [disabled]=\"disabled\" [step]=\"config.step\" [min]=\"config.min\" [max]=\"config.max\">\n <input matSliderThumb [(ngModel)]=\"value\" (valueChange)=\"onValueChange()\" />\n </mat-slider>\n <mat-form-field>\n @if (config.prefix) {\n <span matPrefix>{{ config.prefix }}</span>\n }\n <input\n matInput\n type=\"number\"\n [(ngModel)]=\"value\"\n [disabled]=\"disabled\"\n [placeholder]=\"config.placeholder || ''\"\n [step]=\"config.step\"\n [min]=\"config.min!\"\n [max]=\"config.max!\"\n (change)=\"onValueChange()\"\n />\n @if (config.suffix) {\n <span matSuffix>{{ config.suffix }}</span>\n }\n </mat-form-field>\n} @else {\n <!-- range slider -->\n <mat-slider [disabled]=\"disabled\" [step]=\"config.step\" [min]=\"config.min\" [max]=\"config.max\">\n <input matSliderStartThumb [(ngModel)]=\"minValue\" (valueChange)=\"onRangeInputChange()\" />\n <input matSliderEndThumb [(ngModel)]=\"maxValue\" (valueChange)=\"onRangeInputChange()\" />\n </mat-slider>\n <mat-form-field>\n @if (config.prefix) {\n <span matPrefix>{{ config.prefix }}</span>\n }\n <input\n matInput\n type=\"number\"\n [(ngModel)]=\"minValue\"\n [disabled]=\"disabled\"\n [placeholder]=\"config.placeholder || ''\"\n [step]=\"config.step\"\n [min]=\"config.min!\"\n [max]=\"config.max!\"\n (change)=\"onRangeInputChange()\"\n />\n @if (config.suffix) {\n <span matSuffix>{{ config.suffix }}</span>\n }\n </mat-form-field>\n <mat-form-field>\n @if (config.prefix) {\n <span matPrefix>{{ config.prefix }}</span>\n }\n <input\n matInput\n type=\"number\"\n [(ngModel)]=\"maxValue\"\n [disabled]=\"disabled\"\n [placeholder]=\"config.placeholder || ''\"\n [step]=\"config.step\"\n [min]=\"config.min!\"\n [max]=\"config.max!\"\n (change)=\"onRangeInputChange()\"\n />\n @if (config.suffix) {\n <span matSuffix>{{ config.suffix }}</span>\n }\n </mat-form-field>\n}\n\n@if (config.parentType === 'inline') {\n <mat-hint>\n <gui-field-label [config]=\"config\" />\n </mat-hint>\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n forwardRef,\n inject,\n Input,\n ViewEncapsulation,\n} from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MatHint } from '@angular/material/form-field';\nimport { MatSlideToggle } from '@angular/material/slide-toggle';\nimport { GuiFieldLabel } from '../field-label/field-label';\nimport { GuiControl } from '../interface';\n\n@Component({\n selector: 'gui-switch',\n templateUrl: './switch.html',\n styleUrl: './switch.scss',\n host: {\n class: 'gui-field gui-switch',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => GuiSwitch),\n multi: true,\n },\n ],\n imports: [FormsModule, MatSlideToggle, MatHint, GuiFieldLabel],\n})\nexport class GuiSwitch implements ControlValueAccessor {\n private cdr = inject(ChangeDetectorRef);\n\n @Input() config: Partial<GuiControl> = {};\n @Input() disabled = false;\n\n value = false;\n\n private onChange: (value: boolean) => void = () => {};\n private onTouched: () => void = () => {};\n\n writeValue(value: any) {\n this.value = value;\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: (value: boolean) => void) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void) {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n\n onValueChange() {\n this.onChange(this.value);\n }\n}\n","<mat-slide-toggle [(ngModel)]=\"value\" [disabled]=\"disabled\" hideIcon (change)=\"onValueChange()\" />\n@if (config.parentType === 'inline') {\n <mat-hint>\n <gui-field-label [config]=\"config\" />\n </mat-hint>\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n forwardRef,\n inject,\n Input,\n ViewEncapsulation,\n} from '@angular/core';\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MatFormField, MatHint, MatPrefix, MatSuffix } from '@angular/material/form-field';\nimport { MatInput } from '@angular/material/input';\nimport { GuiFieldLabel } from '../field-label/field-label';\nimport { GuiControl } from '../interface';\n\n@Component({\n selector: 'gui-textarea',\n templateUrl: './textarea.html',\n styleUrl: './textarea.scss',\n host: {\n class: 'gui-field gui-textarea',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => GuiTextarea),\n multi: true,\n },\n ],\n imports: [FormsModule, MatFormField, MatPrefix, MatInput, MatSuffix, MatHint, GuiFieldLabel],\n})\nexport class GuiTextarea {\n private cdr = inject(ChangeDetectorRef);\n\n @Input() config: Partial<GuiControl> = {};\n @Input() disabled = false;\n\n value = '';\n\n private onChange: (value: string) => void = () => {};\n private onTouched: () => void = () => {};\n\n writeValue(value: any) {\n this.value = value;\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: (value: string) => void) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void) {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n\n onValueChange() {\n this.onChange(this.value);\n }\n}\n","<mat-form-field>\n @if (config.prefix) {\n <span matPrefix>{{ config.prefix }}</span>\n }\n <textarea\n matInput\n [(ngModel)]=\"value\"\n [disabled]=\"disabled\"\n [placeholder]=\"config.placeholder || ''\"\n [rows]=\"config.rows\"\n (change)=\"onValueChange()\"\n ></textarea>\n @if (config.suffix) {\n <span matSuffix>{{ config.suffix }}</span>\n }\n @if (config.parentType === 'inline') {\n <mat-hint>\n <gui-field-label [config]=\"config\" />\n </mat-hint>\n }\n</mat-form-field>\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChanges,\n ViewEncapsulation,\n inject,\n} from '@angular/core';\nimport { FormArray, FormControl, FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { MatIconButton } from '@angular/material/button';\nimport {\n MatExpansionPanel,\n MatExpansionPanelContent,\n MatExpansionPanelHeader,\n} from '@angular/material/expansion';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatTab, MatTabContent, MatTabGroup, MatTabLabel } from '@angular/material/tabs';\nimport { Subscription, mergeWith, of } from 'rxjs';\n\nimport { GuiButtonToggle } from './button-toggle/button-toggle';\nimport { GuiCodearea } from './codearea/codearea';\nimport { GuiCombobox } from './combobox/combobox';\nimport { GuiFieldGroup } from './field-group/field-group';\nimport { GuiFieldLabel } from './field-label/field-label';\nimport { GuiFileUploader } from './file-uploader/file-uploader';\nimport { GuiFill } from './fill/fill';\nimport {\n GuiEjsPipe,\n GuiFlexDirective,\n compareValues,\n getModelFromConfig,\n getValueByPath,\n} from './gui-utils';\nimport { GuiIconButtonWrapper } from './icon-button-wrapper/icon-button-wrapper';\nimport { GuiImageSelect } from './image-select/image-select';\nimport { GuiInlineGroup } from './inline-group/inline-group';\nimport { GuiInputNumber } from './input-number/input-number';\nimport { GuiInputText } from './input-text/input-text';\nimport { GuiCondition, GuiControl, GuiFieldType, GuiFields, GuiTabsMode } from './interface';\nimport { GuiSelect } from './select/select';\nimport { GuiSlider } from './slider/slider';\nimport { GuiSwitch } from './switch/switch';\nimport { GuiTextarea } from './textarea/textarea';\n\nimport { GuiIconsRegistry } from './gui-icons';\n\nlet nextUniqueId = 0;\n\n@Component({\n selector: 'gui-form',\n templateUrl: './gui-form.html',\n styleUrl: './gui-form.scss',\n host: {\n '[attr.id]': 'uid',\n 'class': 'gui-form',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n ReactiveFormsModule,\n NgTemplateOutlet,\n MatExpansionPanel,\n MatExpansionPanelHeader,\n MatExpansionPanelContent,\n MatIconButton,\n MatIcon,\n MatTabGroup,\n MatTab,\n MatTabLabel,\n MatTabContent,\n GuiFieldGroup,\n GuiFlexDirective,\n GuiInputText,\n GuiInputNumber,\n GuiSelect,\n GuiSwitch,\n GuiSlider,\n GuiButtonToggle,\n GuiFill,\n GuiFileUploader,\n GuiImageSelect,\n GuiTextarea,\n GuiInlineGroup,\n GuiFieldLabel,\n GuiIconButtonWrapper,\n GuiEjsPipe,\n GuiCombobox,\n GuiCodearea,\n ],\n})\nexport class GuiForm implements OnChanges, OnInit, OnDestroy {\n /**\n * The form instance which allow to track model value and validation status.\n */\n @Input() form = new FormGroup<any>({});\n\n /**\n * The field configurations for building the form.\n */\n @Input() config: GuiFields = {};\n\n /**\n * The model to be represented by the form.\n */\n @Input() model: Record<string, any> = {};\n\n /**\n * Fired on model value change\n */\n @Output() modelChange = new EventEmitter();\n\n formFields: GuiControl[] = [];\n\n formSubscription = Subscription.EMPTY;\n\n controlSubscriptions: Subscription[] = [];\n\n // Unique id for this form\n uid = `gui-form-${nextUniqueId++}`;\n\n constructor() {\n const iconsRegistry = inject(GuiIconsRegistry);\n iconsRegistry.add('horizontal', 'vertical', 'copy', 'add', 'delete');\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['config']) {\n getModelFromConfig(this.config, this.model);\n this.form.controls = {}; // reset controls\n this.formFields = this.getFormFieldArray(this.form, this.config, this.model);\n }\n\n if (changes['model'] && this.model && Object.keys(this.model).length > 0) {\n this.form.patchValue(this.model);\n }\n }\n\n ngOnInit(): void {\n this.formSubscription = this.form.valueChanges.subscribe(value => {\n Object.assign(this.model, value);\n this.modelChange.emit(value);\n });\n }\n\n ngOnDestroy(): void {\n this.formSubscription.unsubscribe();\n this.controlSubscriptions.forEach(s => s.unsubscribe());\n }\n\n /**\n * Convert the object config to array config and register into the reactive form.\n *\n * @param form The reactive form instance\n * @param config The config of the form fields\n * @param model The value of the form control\n * @param defaultValue The default value of the form field\n * @param parentType The type of the form field parent\n * @returns\n */\n getFormFieldArray(\n form: FormGroup | FormArray,\n config: GuiFields | GuiControl[] = {},\n model: Record<string, any> = {},\n defaultValue: any = null,\n parentType: GuiFieldType = 'group'\n ) {\n const tempArr = [];\n\n for (const key of Object.keys(config)) {\n // Inferring the form type by the data type of `children`\n // 1. `undefined` => FormControl\n // 2. `array` => FormArray\n // 3. `object` => FormGroup\n const _children = (config as any)[key].template ? [] : (config as any)[key].children;\n const _type = !_children ? 'control' : Array.isArray(_children) ? 'array' : 'group';\n\n const item: GuiControl = {\n ...(config as any)[key],\n _type,\n key,\n parentType,\n model: model[key],\n default: defaultValue?.[key] ?? (config as any)[key].default,\n index: Number(key), // the string key will be `NaN`\n show: true,\n };\n\n // The `group` type generally have no `default`, so we should\n // set the default value manually\n if (item.children && model[key] == null && item.default == null) {\n item.model = model[key] = item._type === 'array' ? [] : {};\n }\n\n // Generate model by the `default` key of the field config\n if (typeof model === 'object' && model[key] == null) {\n model[key] = item.default;\n }\n\n // Special judgment on `tabs` type, the `children` key will be ignored if\n // there has a `template` key\n if (item.template) {\n // If the model is an array, the default value of the form field\n // will use the model's value\n if (Array.isArray(item.model)) {\n item.default = item.model;\n }\n if (item.default?.length) {\n item.children = item.default.map((value: any) => {\n return {\n default: value,\n ...item.template,\n };\n });\n } else {\n item.children = [];\n }\n }\n\n // Parse the `showIf` conditions\n if (item.showIf) {\n const setVisibility = (compareWith: (condition: GuiCondition) => boolean) => {\n if (item.showIf!.logicalType === '$or') {\n item.show = item.showIf!.conditions.some(c => compareWith(c));\n } else {\n item.show = item.showIf!.conditions.every(c => compareWith(c));\n }\n };\n\n // Set the init visibility of the field\n setVisibility(c => {\n const cfg = getValueByPath(config, c[0]) ?? getValueByPath(this.config, c[0]);\n const val = getValueByPath(model, c[0]) ?? getValueByPath(this.model, c[0]);\n return compareValues(val ?? cfg?.['default'], c[2], c[1]);\n });\n\n // Delay the subscription to make sure all the form controls have been created\n setTimeout(() => {\n const getControl = (path: string) => form.get(path) || this.form.get(path);\n\n const controls = item.showIf!.conditions.map(c => getControl(c[0]));\n const valueChanges$ = controls.map(control => control?.valueChanges || of());\n const subscription = of()\n .pipe(mergeWith(...valueChanges$))\n .subscribe(() => {\n setVisibility(c => compareValues(getControl(c[0])?.value, c[2], c[1]));\n });\n\n this.controlSubscriptions.push(subscription);\n });\n }\n\n if (item._type === 'control') {\n const formState = { value: item.default, disabled: item.disabled };\n if (form instanceof FormGroup) {\n form.registerControl(item.key, new FormControl(formState));\n } else if (form instanceof FormArray) {\n form.insert(item.index || form.length, new FormControl(formState), { emitEvent: false });\n }\n } else if (item._type === 'array') {\n let formArray = new FormArray<any>([]);\n if (form instanceof FormGroup) {\n formArray = form.registerControl(item.key, new FormArray([])) as FormArray;\n } else if (form instanceof FormArray) {\n form.insert(item.index || form.length, formArray, { emitEvent: false });\n }\n\n item.children = this.getFormFieldArray(\n formArray,\n item.children,\n item.model,\n item.default,\n item.type\n );\n\n item.selectedIndex = 0;\n } else if (item._type === 'group') {\n let formGroup = new FormGroup({});\n if (form instanceof FormGroup) {\n formGroup = form.registerControl(item.key, new FormGroup({})) as FormGroup;\n } else if (form instanceof FormArray) {\n form.insert(item.index || form.length, formGroup, { emitEvent: false });\n }\n\n item.children = this.getFormFieldArray(\n formGroup,\n item.children,\n item.model,\n item.default,\n item.type\n );\n }\n\n tempArr.push(item);\n }\n\n return tempArr;\n }\n\n /**\n * Add a tab item.\n *\n * @param e The mouse event\n * @param formArray The reactive form instance\n * @param tabs The config of the tabs field\n * @param copy Whether to copy the current tab\n * @param index The index of the tabs array\n */\n addTab(e: MouseEvent, formArray: FormArray, tabs: GuiControl, copy?: boolean, index?: number) {\n e.stopPropagation();\n const insertIndex =\n index !== void 0 ? index + 1 : copy ? tabs.selectedIndex! + 1 : tabs.children!.length;\n // Save the index of the insertion in the config\n tabs.template!.index = insertIndex;\n // The key in the object and the index in the array should be the same\n tabs.children!.forEach((child, index) => {\n if (index >= insertIndex) {\n child.index! += 1;\n child.key = child.index + ''; // convert to string\n }\n });\n\n const formValue = formArray.get(insertIndex - 1 + '')?.value;\n // The constructed object looks like this `[{ key: 'tab', children: template }]`\n // The key should preferably be `null`\n const newTab = this.getFormFieldArray(\n formArray,\n { [insertIndex]: tabs.template } as GuiFields,\n copy ? { [insertIndex]: formValue } : {},\n copy ? { [insertIndex]: formValue } : null,\n 'tabs'\n );\n tabs.children!.splice(insertIndex, 0, newTab[0]);\n\n // update the form model\n formArray.patchValue(formArray.value);\n }\n\n /**\n * Remove a tab item.\n *\n * @param e The mouse event\n * @param formArray The reactive form instance\n * @param tabs The config of the tabs field\n * @param index The index of the tabs array\n */\n removeTab(e: MouseEvent, formArray: FormArray, tabs: GuiControl, index?: number) {\n e.stopPropagation();\n const removeIndex = index === void 0 ? tabs.selectedIndex! : index;\n tabs.children!.forEach((child, index) => {\n if (index > removeIndex) {\n child.index! -= 1;\n child.key = child.index + ''; // convert to string\n }\n });\n tabs.children!.splice(removeIndex, 1);\n formArray.removeAt(removeIndex);\n }\n\n /**\n * Change the display mode of tabs.\n *\n * @param e The mouse event\n * @param tabs The config of the tabs field\n * @param mode The display mode of tabs\n */\n changeTabsMode(e: MouseEvent, tabs: GuiControl, mode?: GuiTabsMode) {\n e.stopPropagation();\n tabs.mode = mode;\n }\n}\n","<form [formGroup]=\"form\">\n @for (item of formFields; track item) {\n <div>\n <ng-template [ngTemplateOutlet]=\"controlType\"\n [ngTemplateOutletContext]=\"{$implicit: item, formGroup: form}\" />\n </div>\n }\n</form>\n\n<ng-template #controlType let-item let-parent=\"parent\" let-form=\"formGroup\">\n @if (item.show) {\n <ng-container [formGroup]=\"form\">\n @switch (item.type) {\n @case ('text') {\n <gui-field-group [config]=\"item\" [flex]=\"item.col\">\n <gui-input-text [formControlName]=\"item.key\" [config]=\"item\" />\n </gui-field-group>\n }\n @case ('number') {\n <gui-field-group [config]=\"item\" [flex]=\"item.col\">\n <gui-input-number [formControlName]=\"item.key\" [config]=\"item\" />\n </gui-field-group>\n }\n @case ('select') {\n <gui-field-group [config]=\"item\" [flex]=\"item.col\">\n <gui-select [formControlName]=\"item.key\" [config]=\"item\" />\n </gui-field-group>\n }\n @case ('switch') {\n <gui-field-group [config]=\"item\" [flex]=\"item.col\">\n <gui-switch [formControlName]=\"item.key\" [config]=\"item\" />\n </gui-field-group>\n }\n @case ('slider') {\n <gui-field-group [config]=\"item\" [flex]=\"item.col\">\n <gui-slider [formControlName]=\"item.key\" [config]=\"item\" />\n </gui-field-group>\n }\n @case ('buttonToggle') {\n <gui-field-group [config]=\"item\" [flex]=\"item.col\">\n <gui-button-toggle [formControlName]=\"item.key\" [config]=\"item\" />\n </gui-field-group>\n }\n @case ('fill') {\n <gui-field-group [config]=\"item\" [flex]=\"item.col\">\n <gui-fill [formControlName]=\"item.key\" [config]=\"item\" />\n </gui-field-group>\n }\n @case ('file') {\n <gui-field-group [config]=\"item\" [flex]=\"item.col\">\n <gui-file-uploader [formControlName]=\"item.key\" [config]=\"item\" />\n </gui-field-group>\n }\n @case ('image') {\n <gui-field-group [config]=\"item\" [flex]=\"item.col\">\n <gui-file-uploader type=\"image\" [formControlName]=\"item.key\" [config]=\"item\" />\n </gui-field-group>\n }\n @case ('video') {\n <gui-field-group [config]=\"item\" [flex]=\"item.col\">\n <gui-file-uploader type=\"video\" [formControlName]=\"item.key\" [config]=\"item\" />\n </gui-field-group>\n }\n @case ('audio') {\n <gui-field-group [config]=\"item\" [flex]=\"item.col\">\n <gui-file-uploader type=\"audio\" [formControlName]=\"item.key\" [config]=\"item\" />\n </gui-field-group>\n }\n @case ('imageSelect') {\n <gui-field-group [config]=\"item\" [flex]=\"item.col\">\n <gui-image-select [formControlName]=\"item.key\" [config]=\"item\" [appendTo]=\"'#'+uid\" />\n </gui-field-group>\n }\n @case ('combobox') {\n <gui-field-group [config]=\"item\" [flex]=\"item.col\">\n <gui-combobox [formControlName]=\"item.key\" [config]=\"item\" [appendTo]=\"'#'+uid\" />\n </gui-field-group>\n }\n @case ('textarea') {\n <gui-field-group [config]=\"item\" [flex]=\"item.col\">\n <gui-textarea [formControlName]=\"item.key\" [config]=\"item\" />\n </gui-field-group>\n }\n @case ('codearea') {\n <gui-field-group [config]=\"item\" [flex]=\"item.col\">\n <gui-codearea [formControlName]=\"item.key\" [config]=\"item\" />\n </gui-field-group>\n }\n @case ('hidden') {\n <input type=\"hidden\" [formControlName]=\"item.key\">\n }\n @case ('inline') {\n <gui-inline-group [config]=\"item\" [formGroupName]=\"item.key\">\n @for (child of item.children; track child) {\n <ng-template [ngTemplateOutlet]=\"controlType\"\n [ngTemplateOutletContext]=\"{\n $implicit: child, parent: item, formGroup: form.get(item.key)\n }\" />\n }\n </gui-inline-group>\n }\n @case ('group') {\n <mat-expansion-panel [formGroupName]=\"item.key\"\n [(expanded)]=\"item.expanded\" [disabled]=\"item.disabled\">\n <mat-expansion-panel-header>\n <gui-field-label [config]=\"item\" />\n </mat-expansion-panel-header>\n <!-- Lazy rendering -->\n <ng-template matExpansionPanelContent>\n @for (child of item.children; track child) {\n <div>\n <ng-template [ngTemplateOutlet]=\"controlType\"\n [ngTemplateOutletContext]=\"{\n $implicit: child, parent: item, formGroup: form.get(item.key)\n }\" />\n </div>\n }\n </ng-template>\n </mat-expansion-panel>\n }\n @case ('tabs') {\n <mat-expansion-panel [formArrayName]=\"item.key\"\n [(expanded)]=\"item.expanded\" [disabled]=\"item.disabled\">\n <mat-expansion-panel-header>\n <gui-field-label [config]=\"item\" />\n <!-- Show operation buttons when panel opened -->\n @if (item.expanded) {\n <gui-icon-button-wrapper>\n <button mat-icon-button type=\"button\" [color]=\"item.mode!=='list'?'primary':''\"\n (click)=\"changeTabsMode($event, item, 'normal')\">\n <mat-icon svgIcon=\"horizontal\" />\n </button>\n <button mat-icon-button type=\"button\" [color]=\"item.mode==='list'?'primary':''\"\n (click)=\"changeTabsMode($event, item, 'list')\">\n <mat-icon svgIcon=\"vertical\" />\n </button>\n @if (item.template && (item.addable || item.addable===undefined)) {\n <button mat-icon-button type=\"button\" [disabled]=\"item.disabled\"\n (click)=\"addTab($event, form.get(item.key), item, true)\">\n <mat-icon svgIcon=\"copy\" />\n </button>\n <button mat-icon-button type=\"button\" [disabled]=\"item.disabled\"\n (click)=\"addTab($event, form.get(item.key), item)\">\n <mat-icon svgIcon=\"add\" />\n </button>\n <button mat-icon-button type=\"button\" [disabled]=\"item.disabled\"\n (click)=\"removeTab($event, form.get(item.key), item)\">\n <mat-icon svgIcon=\"delete\" />\n </button>\n }\n </gui-icon-button-wrapper>\n }\n </mat-expansion-panel-header>\n <!-- Lazy rendering -->\n <ng-template matExpansionPanelContent>\n @if (item.mode!=='list') {\n <!-- Horizontal mode -->\n <mat-tab-group class=\"gui-tabs\" disableRipple\n [mat-stretch-tabs]=\"false\" [(selectedIndex)]=\"item.selectedIndex\">\n @for (tab of item.children; track tab; let i = $index) {\n <mat-tab [disabled]=\"tab.disabled\">\n <ng-template mat-tab-label>\n <div>{{tab.name | ejs:{i} }}</div>\n </ng-template>\n <!-- FormControl & FormArray -->\n @if (!tab.children || tab.children.length===0 || tab.type==='tabs') {\n <ng-template [ngTemplateOutlet]=\"controlType\"\n [ngTemplateOutletContext]=\"{\n $implicit: tab, parent: item, formGroup: form.get([item.key])\n }\" />\n }\n <!-- FormGroup -->\n @if (tab.children?.length>0 && tab.type!=='tabs') {\n @for (child of tab.children; track child) {\n <div>\n <ng-template [ngTemplateOutlet]=\"controlType\"\n [ngTemplateOutletContext]=\"{\n $implicit: child, parent: item, formGroup: form.get([item.key, i])\n }\" />\n </div>\n }\n }\n </mat-tab>\n }\n </mat-tab-group>\n } @else {\n <!-- Vertical mode -->\n <div class=\"gui-list\">\n @for (tab of item.children; track tab; let i = $index) {\n <div class=\"gui-list-item\"\n [class.gui-list-item-active]=\"item.selectedIndex===i\">\n <div class=\"gui-list-item-heading\">\n <button class=\"gui-list-item-title\" type=\"button\"\n (click)=\"item.selectedIndex=i\">{{tab.name | ejs:{i} }}</button>\n @if (item.template && (item.addable || item.addable===undefined)) {\n <gui-icon-button-wrapper>\n <button mat-icon-button type=\"button\" [disabled]=\"item.disabled\"\n (click)=\"addTab($event, form.get(item.key), item, true, i)\">\n <mat-icon svgIcon=\"copy\" />\n </button>\n <button mat-icon-button type=\"button\" [disabled]=\"item.disabled\"\n (click)=\"addTab($event, form.get(item.key), item, false, i)\">\n <mat-icon svgIcon=\"add\" />\n </button>\n <button mat-icon-button type=\"button\" [disabled]=\"item.disabled\"\n (click)=\"removeTab($event, form.get(item.key), item, i)\">\n <mat-icon svgIcon=\"delete\" />\n </button>\n </gui-icon-button-wrapper>\n }\n </div>\n <div class=\"gui-list-item-content\">\n <!-- FormControl & FormArray -->\n @if (!tab.children || tab.children.length===0 || tab.type==='tabs') {\n <ng-template [ngTemplateOutlet]=\"controlType\"\n [ngTemplateOutletContext]=\"{\n $implicit: tab, parent: item, formGroup: form.get([item.key])\n }\" />\n }\n <!-- FormGroup -->\n @if (tab.children?.length>0 && tab.type!=='tabs') {\n @for (child of tab.children; track child) {\n <div>\n <ng-template [ngTemplateOutlet]=\"controlType\"\n [ngTemplateOutletContext]=\"{\n $implicit: child, parent: item, formGroup: form.get([item.key, i])\n }\" />\n </div>\n }\n }\n </div>\n </div>\n }\n </div>\n }\n </ng-template>\n </mat-expansion-panel>\n }\n @case ('menu') {\n <mat-tab-group class=\"gui-menu\" [formGroupName]=\"item.key\" disableRipple>\n @for (menuChild of item.children; track menuChild) {\n <mat-tab [label]=\"menuChild.name\"\n [disabled]=\"menuChild.disabled\">\n <ng-template matTabContent>\n @if (menuChild.type==='menuItem') {\n <!-- Must wrap with div -->\n @for (controlItem of menuChild.children; track controlItem) {\n <div [formGroupName]=\"menuChild.key\">\n <ng-template [ngTemplateOutlet]=\"controlType\"\n [ngTemplateOutletContext]=\"{\n $implicit: controlItem, formGroup: form.get([item.key, menuChild.key])\n }\" />\n </div>\n }\n }\n <!-- Support for unlimited nesting -->\n @if (menuChild.type==='menu') {\n <ng-template [ngTemplateOutlet]=\"controlType\"\n [ngTemplateOutletContext]=\"{\n $implicit: menuChild, formGroup: form.get(item.key)\n }\" />\n }\n </ng-template>\n </mat-tab>\n }\n </mat-tab-group>\n }\n }\n </ng-container>\n }\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\n\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatSliderModule } from '@angular/material/slider';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MtxColorpickerModule } from '@ng-matero/extensions/colorpicker';\nimport { MtxSelectModule } from '@ng-matero/extensions/select';\n\nimport { GuiForm } from './gui-form';\nimport { GuiFieldGroup } from './field-group/field-group';\nimport { GuiFieldLabel } from './field-label/field-label';\nimport { GuiInlineGroup } from './inline-group/inline-group';\nimport { GuiInputText } from './input-text/input-text';\nimport { GuiInputNumber } from './input-number/input-number';\nimport { GuiSelect } from './select/select';\nimport { GuiSwitch } from './switch/switch';\nimport { GuiSlider } from './slider/slider';\nimport { GuiIcon } from './button-toggle/icon';\nimport { GuiButtonToggle } from './button-toggle/button-toggle';\nimport { GuiFill } from './fill/fill';\nimport { GuiFillPicker } from './fill/fill-picker';\nimport { GuiImageSelect } from './image-select/image-select';\nimport { GuiCombobox } from './combobox/combobox';\nimport { GuiTextarea } from './textarea/textarea';\nimport { GuiCodearea } from './codearea/codearea';\nimport { GuiCodeareaDialog } from './codearea/codearea-dialog';\nimport { GuiCodeareaToolbar } from './codearea/codearea-toolbar';\nimport { GuiFileUploader } from './file-uploader/file-uploader';\nimport { GuiIconButtonWrapper } from './icon-button-wrapper/icon-button-wrapper';\nimport { GuiEjsPipe, GuiFlexDirective } from './gui-utils';\n\n@NgModule({\n imports: [\n CommonModule,\n ReactiveFormsModule,\n FormsModule,\n MatFormFieldModule,\n MatInputModule,\n MatSelectModule,\n MatSliderModule,\n MatSlideToggleModule,\n MatButtonToggleModule,\n MatIconModule,\n MatButtonModule,\n MatTabsModule,\n MatExpansionModule,\n MatTooltipModule,\n MtxColorpickerModule,\n MtxSelectModule,\n GuiForm,\n GuiInputText,\n GuiInputNumber,\n GuiSelect,\n GuiSwitch,\n GuiSlider,\n GuiIcon,\n GuiButtonToggle,\n GuiFill,\n GuiFillPicker,\n GuiFieldGroup,\n GuiFieldLabel,\n GuiInlineGroup,\n GuiImageSelect,\n GuiCombobox,\n GuiTextarea,\n GuiCodearea,\n GuiCodeareaDialog,\n GuiCodeareaToolbar,\n GuiFileUploader,\n GuiIconButtonWrapper,\n GuiEjsPipe,\n GuiFlexDirective,\n ],\n exports: [\n GuiForm,\n GuiInputText,\n GuiInputNumber,\n GuiSelect,\n GuiSwitch,\n GuiSlider,\n GuiIcon,\n GuiButtonToggle,\n GuiFill,\n GuiFillPicker,\n GuiFieldGroup,\n GuiFieldLabel,\n GuiInlineGroup,\n GuiImageSelect,\n GuiCombobox,\n GuiTextarea,\n GuiCodearea,\n GuiCodeareaDialog,\n GuiCodeareaToolbar,\n GuiFileUploader,\n GuiIconButtonWrapper,\n GuiEjsPipe,\n GuiFlexDirective,\n ],\n})\nexport class GuiModule {}\n","/*\n * Public API Surface of gui\n */\n\nexport * from './gui-module';\nexport * from './gui-form';\nexport * from './button-toggle/button-toggle';\nexport * from './button-toggle/icon';\nexport * from './codearea/codearea';\nexport * from './codearea/codearea-dialog';\nexport * from './codearea/codearea-toolbar';\nexport * from './codearea/codearea-config';\nexport * from './combobox/combobox';\nexport * from './field-group/field-group';\nexport * from './field-label/field-label';\nexport * from './file-uploader/file-uploader';\nexport * from './file-uploader/file-uploader-config';\nexport * from './fill/fill';\nexport * from './fill/fill-picker';\nexport * from './icon-button-wrapper/icon-button-wrapper';\nexport * from './image-select/image-select';\nexport * from './inline-group/inline-group';\nexport * from './input-number/input-number';\nexport * from './input-text/input-text';\nexport * from './select/select';\nexport * from './slider/slider';\nexport * from './switch/switch';\nexport * from './textarea/textarea';\nexport * from './gui-utils';\nexport * from './gui-icons';\nexport * from './interface';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@acrodata/gui",
3
- "version": "3.5.0",
3
+ "version": "3.5.1",
4
4
  "description": "JSON powered GUI for configurable panels.",
5
5
  "publishConfig": {
6
6
  "access": "public"