imm-element-ui 0.0.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.
- package/README.md +24 -0
- package/esm2022/imm-element-ui.mjs +5 -0
- package/esm2022/lib/am/am.component.mjs +502 -0
- package/esm2022/lib/crumb-action/crumb-action.component.mjs +127 -0
- package/esm2022/lib/form/form/form.component.mjs +217 -0
- package/esm2022/lib/form/form-field/field-control.mjs +19 -0
- package/esm2022/lib/form/form-field/field-utils.mjs +227 -0
- package/esm2022/lib/form/form-field/form-field.mjs +129 -0
- package/esm2022/lib/form/form-field/form-type.mjs +123 -0
- package/esm2022/lib/form/form-field/label.directive.mjs +62 -0
- package/esm2022/lib/form/form-type/autocomplete.type.mjs +200 -0
- package/esm2022/lib/form/form-type/codemirror.type.mjs +167 -0
- package/esm2022/lib/form/form-type/datepicker.type.mjs +212 -0
- package/esm2022/lib/form/form-type/image.type.mjs +225 -0
- package/esm2022/lib/form/form-type/inputnumber.type.mjs +144 -0
- package/esm2022/lib/form/form-type/inputtext.type.mjs +69 -0
- package/esm2022/lib/form/form-type/multiselect.type.mjs +219 -0
- package/esm2022/lib/form/form-type/radio.type.mjs +167 -0
- package/esm2022/lib/form/form-type/select.type.mjs +196 -0
- package/esm2022/lib/form/form-type/textarea.type.mjs +75 -0
- package/esm2022/lib/form/form-type/treeselect.type.mjs +174 -0
- package/esm2022/lib/form/form-type/upload.type.mjs +228 -0
- package/esm2022/lib/grid/actions/actions.component.mjs +30 -0
- package/esm2022/lib/grid/cell-edit/cell-edit-autoComplete.component.mjs +89 -0
- package/esm2022/lib/grid/cell-edit/cell-edit-datePicker.compoent.mjs +182 -0
- package/esm2022/lib/grid/cell-edit/cell-edit-inputNumber.component.mjs +107 -0
- package/esm2022/lib/grid/cell-edit/cell-edit-inputText.compoent.mjs +46 -0
- package/esm2022/lib/grid/cell-edit/cell-edit-select.component.mjs +148 -0
- package/esm2022/lib/grid/cell-edit/index.mjs +7 -0
- package/esm2022/lib/grid/cell-render/async-renderer.mjs +29 -0
- package/esm2022/lib/grid/cell-render/link-render.mjs +42 -0
- package/esm2022/lib/grid/grid/grid.component.mjs +373 -0
- package/esm2022/lib/grid/grid-utils.mjs +103 -0
- package/esm2022/lib/grid/mock-data.mjs +14 -0
- package/esm2022/lib/grid/pager/pager.component.mjs +19 -0
- package/esm2022/lib/head/head.component.mjs +43 -0
- package/esm2022/lib/import/import.component.mjs +68 -0
- package/esm2022/lib/log/log.component.mjs +37 -0
- package/esm2022/lib/page-form/page-form.component.mjs +167 -0
- package/esm2022/lib/page-form/page-form.interface.mjs +2 -0
- package/esm2022/lib/page-grid-list/page-grid-list.component.mjs +60 -0
- package/esm2022/lib/row-selector/row-selector.component.mjs +58 -0
- package/esm2022/lib/search/mock-data.mjs +40 -0
- package/esm2022/lib/search/pop-date/pop-date.component.mjs +106 -0
- package/esm2022/lib/search/pop-list/pop-list.component.mjs +32 -0
- package/esm2022/lib/search/pop-panel/pop-panel.component.mjs +44 -0
- package/esm2022/lib/search/pop-select/pop-select.component.mjs +45 -0
- package/esm2022/lib/search/pop-self/pop-self.component.mjs +132 -0
- package/esm2022/lib/search/pop-tree/pop-tree.component.mjs +50 -0
- package/esm2022/lib/search/search/search.component.mjs +138 -0
- package/esm2022/lib/search/search-tip/search-tip.component.mjs +54 -0
- package/esm2022/lib/search/search-utils.mjs +165 -0
- package/esm2022/lib/search/text-panel/text-panel.component.mjs +41 -0
- package/esm2022/lib/service/action.service.mjs +115 -0
- package/esm2022/lib/service/i18n.service.mjs +79 -0
- package/esm2022/lib/service/themeConfig.service.mjs +82 -0
- package/esm2022/lib/service/userHistory.service.mjs +106 -0
- package/esm2022/lib/share/utils.mjs +150 -0
- package/esm2022/lib/steps/steps.component.mjs +31 -0
- package/esm2022/lib/theme-config/theme-config-panel.compoent.mjs +141 -0
- package/esm2022/lib/theme-config/theme-config.compoent.mjs +45 -0
- package/esm2022/public-api.mjs +26 -0
- package/fesm2022/imm-element-ui.mjs +6382 -0
- package/fesm2022/imm-element-ui.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/am/am.component.d.ts +191 -0
- package/lib/crumb-action/crumb-action.component.d.ts +40 -0
- package/lib/form/form/form.component.d.ts +53 -0
- package/lib/form/form-field/field-control.d.ts +13 -0
- package/lib/form/form-field/field-utils.d.ts +12 -0
- package/lib/form/form-field/form-field.d.ts +86 -0
- package/lib/form/form-field/form-type.d.ts +22 -0
- package/lib/form/form-field/label.directive.d.ts +14 -0
- package/lib/form/form-type/autocomplete.type.d.ts +77 -0
- package/lib/form/form-type/codemirror.type.d.ts +31 -0
- package/lib/form/form-type/datepicker.type.d.ts +83 -0
- package/lib/form/form-type/image.type.d.ts +49 -0
- package/lib/form/form-type/inputnumber.type.d.ts +49 -0
- package/lib/form/form-type/inputtext.type.d.ts +17 -0
- package/lib/form/form-type/multiselect.type.d.ts +85 -0
- package/lib/form/form-type/radio.type.d.ts +31 -0
- package/lib/form/form-type/select.type.d.ts +73 -0
- package/lib/form/form-type/textarea.type.d.ts +19 -0
- package/lib/form/form-type/treeselect.type.d.ts +62 -0
- package/lib/form/form-type/upload.type.d.ts +51 -0
- package/lib/grid/actions/actions.component.d.ts +14 -0
- package/lib/grid/cell-edit/cell-edit-autoComplete.component.d.ts +18 -0
- package/lib/grid/cell-edit/cell-edit-datePicker.compoent.d.ts +16 -0
- package/lib/grid/cell-edit/cell-edit-inputNumber.component.d.ts +15 -0
- package/lib/grid/cell-edit/cell-edit-inputText.compoent.d.ts +16 -0
- package/lib/grid/cell-edit/cell-edit-select.component.d.ts +12 -0
- package/lib/grid/cell-edit/index.d.ts +6 -0
- package/lib/grid/cell-render/async-renderer.d.ts +10 -0
- package/lib/grid/cell-render/link-render.d.ts +14 -0
- package/lib/grid/grid/grid.component.d.ts +272 -0
- package/lib/grid/grid-utils.d.ts +751 -0
- package/lib/grid/mock-data.d.ts +12 -0
- package/lib/grid/pager/pager.component.d.ts +15 -0
- package/lib/head/head.component.d.ts +17 -0
- package/lib/import/import.component.d.ts +22 -0
- package/lib/log/log.component.d.ts +14 -0
- package/lib/page-form/page-form.component.d.ts +46 -0
- package/lib/page-form/page-form.interface.d.ts +27 -0
- package/lib/page-grid-list/page-grid-list.component.d.ts +18 -0
- package/lib/row-selector/row-selector.component.d.ts +21 -0
- package/lib/search/mock-data.d.ts +20 -0
- package/lib/search/pop-date/pop-date.component.d.ts +26 -0
- package/lib/search/pop-list/pop-list.component.d.ts +12 -0
- package/lib/search/pop-panel/pop-panel.component.d.ts +15 -0
- package/lib/search/pop-select/pop-select.component.d.ts +13 -0
- package/lib/search/pop-self/pop-self.component.d.ts +31 -0
- package/lib/search/pop-tree/pop-tree.component.d.ts +22 -0
- package/lib/search/search/search.component.d.ts +60 -0
- package/lib/search/search-tip/search-tip.component.d.ts +22 -0
- package/lib/search/search-utils.d.ts +10 -0
- package/lib/search/text-panel/text-panel.component.d.ts +21 -0
- package/lib/service/action.service.d.ts +54 -0
- package/lib/service/i18n.service.d.ts +93 -0
- package/lib/service/themeConfig.service.d.ts +24 -0
- package/lib/service/userHistory.service.d.ts +26 -0
- package/lib/share/utils.d.ts +16 -0
- package/lib/steps/steps.component.d.ts +16 -0
- package/lib/theme-config/theme-config-panel.compoent.d.ts +78 -0
- package/lib/theme-config/theme-config.compoent.d.ts +6 -0
- package/package.json +28 -0
- package/public-api.d.ts +20 -0
- package/src/lib/crumb-action/crumb-action.component.scss +51 -0
- package/src/lib/form/form/form.component.scss +0 -0
- package/src/lib/grid/actions/actions.component.scss +0 -0
- package/src/lib/grid/grid/grid.component.scss +0 -0
- package/src/lib/grid/pager/pager.component.scss +13 -0
- package/src/lib/head/head.component.scss +3 -0
- package/src/lib/import/import.component.scss +10 -0
- package/src/lib/log/log.component.scss +21 -0
- package/src/lib/page-form/page-form.component.scss +14 -0
- package/src/lib/page-grid-list/page-grid-list.component.scss +14 -0
- package/src/lib/row-selector/row-selector.component.scss +1 -0
- package/src/lib/search/dynamic-search/dynamic-search.component.scss +70 -0
- package/src/lib/search/pop-date/pop-date.component.scss +47 -0
- package/src/lib/search/pop-list/pop-list.component.scss +23 -0
- package/src/lib/search/pop-panel/pop-panel.component.scss +49 -0
- package/src/lib/search/pop-select/pop-select.component.scss +29 -0
- package/src/lib/search/pop-self/pop-self.component.scss +60 -0
- package/src/lib/search/pop-tree/pop-tree.component.scss +34 -0
- package/src/lib/search/search/search.component.scss +70 -0
- package/src/lib/search/search-tip/search-tip.component.scss +47 -0
- package/src/lib/search/text-panel/text-panel.component.scss +16 -0
- package/src/lib/steps/steps.component.scss +52 -0
- package/src/lib/styles/styles.scss +232 -0
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
import { Component, input, effect, ViewChild, ElementRef } from '@angular/core';
|
|
2
|
+
import { ReactiveFormsModule } from '@angular/forms';
|
|
3
|
+
import { AutoComplete } from 'primeng/autocomplete';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "../../service/action.service";
|
|
6
|
+
import * as i2 from "@angular/forms";
|
|
7
|
+
export class AutoCompleteComponent {
|
|
8
|
+
constructor(action, renderer) {
|
|
9
|
+
this.action = action;
|
|
10
|
+
this.renderer = renderer;
|
|
11
|
+
this.field = input();
|
|
12
|
+
this.props = {};
|
|
13
|
+
effect(() => {
|
|
14
|
+
if (this.field()) {
|
|
15
|
+
this.props = this.field().autoCompleteProps;
|
|
16
|
+
this.handleDisabled();
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
effect(() => {
|
|
20
|
+
const labelAction = this.action.getFieldLabelAction();
|
|
21
|
+
if (!labelAction || labelAction?.key != this.field()?.uuid) {
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
if (labelAction.type == 'mouseenter') {
|
|
25
|
+
this.renderer.addClass(this.autoCompleteRef.nativeElement, 'ng-hovered');
|
|
26
|
+
}
|
|
27
|
+
else if (labelAction.type == 'mouseleave') {
|
|
28
|
+
this.renderer.removeClass(this.autoCompleteRef.nativeElement, 'ng-hovered');
|
|
29
|
+
}
|
|
30
|
+
else if (labelAction.type == 'click') {
|
|
31
|
+
this.autoCompleteRef.nativeElement.querySelector('input')?.focus();
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
handleDisabled() {
|
|
36
|
+
if (this.props?.disabled) {
|
|
37
|
+
this.field().fieldControl.disable({ emitEvent: false });
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AutoCompleteComponent, deps: [{ token: i1.ActionService }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
41
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.13", type: AutoCompleteComponent, isStandalone: true, selector: "form-autocomplete", inputs: { field: { classPropertyName: "field", publicName: "field", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "autoCompleteRef", first: true, predicate: AutoComplete, descendants: true, read: ElementRef }], ngImport: i0, template: `<p-autocomplete
|
|
42
|
+
[id]="field()?.uuid"
|
|
43
|
+
[inputId]="field()?.uuid"
|
|
44
|
+
[minLength]="props.minLength ?? 1"
|
|
45
|
+
[delay]="props.delay ?? 300"
|
|
46
|
+
[panelStyle]="props.panelStyle"
|
|
47
|
+
[panelStyleClass]="props.panelStyleClass"
|
|
48
|
+
[styleClass]="props.styleClass"
|
|
49
|
+
[inputStyle]="props.inputStyle"
|
|
50
|
+
[inputStyleClass]="props.inputStyleClass"
|
|
51
|
+
[placeholder]="props.placeholder"
|
|
52
|
+
[readonly]="props.readonly"
|
|
53
|
+
[scrollHeight]="props.scrollHeight ?? '200px'"
|
|
54
|
+
[lazy]="props.lazy"
|
|
55
|
+
[virtualScroll]="props.virtualScroll"
|
|
56
|
+
[virtualScrollItemSize]="props.virtualScrollItemSize"
|
|
57
|
+
[virtualScrollOptions]="props.virtualScrollOptions"
|
|
58
|
+
[maxlength]="props.maxlength"
|
|
59
|
+
[name]="props.name"
|
|
60
|
+
[size]="props.size"
|
|
61
|
+
[appendTo]="props.appendTo"
|
|
62
|
+
[autoHighlight]="props.autoHighlight"
|
|
63
|
+
[forceSelection]="props.forceSelection"
|
|
64
|
+
[type]="props.type ?? 'text'"
|
|
65
|
+
[autoZIndex]="props.autoZIndex ?? true"
|
|
66
|
+
[baseZIndex]="props.baseZIndex ?? 0"
|
|
67
|
+
[ariaLabel]="props.ariaLabel"
|
|
68
|
+
[ariaLabelledBy]="props.ariaLabelledBy"
|
|
69
|
+
[dropdownAriaLabel]="props.dropdownAriaLabel"
|
|
70
|
+
[dropdownIcon]="props.dropdownIcon"
|
|
71
|
+
[unique]="props.unique ?? true"
|
|
72
|
+
[group]="props.group"
|
|
73
|
+
[completeOnFocus]="props.completeOnFocus"
|
|
74
|
+
[showClear]="props.showClear"
|
|
75
|
+
[dropdown]="props.dropdown"
|
|
76
|
+
[showEmptyMessage]="props.showEmptyMessage ?? true"
|
|
77
|
+
[dropdownMode]="props.dropdownMode ?? 'blank'"
|
|
78
|
+
[multiple]="props.multiple"
|
|
79
|
+
[tabindex]="props.tabindex"
|
|
80
|
+
[dataKey]="props.dataKey"
|
|
81
|
+
[emptyMessage]="props.emptyMessage"
|
|
82
|
+
[showTransitionOptions]="props.showTransitionOptions ?? '.12s cubic-bezier(0, 0, 0.2, 1)'"
|
|
83
|
+
[hideTransitionOptions]="props.hideTransitionOptions ?? '.1s linear'"
|
|
84
|
+
[autofocus]="props.autofocus"
|
|
85
|
+
[autocomplete]="props.autocomplete ?? 'off'"
|
|
86
|
+
[optionGroupChildren]="props.optionGroupChildren ?? 'items'"
|
|
87
|
+
[optionGroupLabel]="props.optionGroupLabel ?? 'label'"
|
|
88
|
+
[overlayOptions]="props.overlayOptions"
|
|
89
|
+
[suggestions]="props.suggestions ?? []"
|
|
90
|
+
[optionLabel]="props.optionLabel"
|
|
91
|
+
[optionValue]="props.optionValue"
|
|
92
|
+
[searchMessage]="props.searchMessage ?? '{0} results are available'"
|
|
93
|
+
[emptySelectionMessage]="props.emptySelectionMessage ?? 'No selected item'"
|
|
94
|
+
[selectionMessage]="props.selectionMessage ?? '{0} items selected'"
|
|
95
|
+
[autoOptionFocus]="props.autoOptionFocus"
|
|
96
|
+
[selectOnFocus]="props.selectOnFocus"
|
|
97
|
+
[searchLocale]="props.searchLocale"
|
|
98
|
+
[optionDisabled]="props.optionDisabled"
|
|
99
|
+
[focusOnHover]="props.focusOnHover ?? true"
|
|
100
|
+
[typeahead]="props.typeahead ?? true"
|
|
101
|
+
[variant]="props.variant"
|
|
102
|
+
[fluid]="props.fluid ?? true"
|
|
103
|
+
[class]="props.class"
|
|
104
|
+
[style]="props.style"
|
|
105
|
+
(completeMethod)="props.completeMethod?.(field()!, $event)"
|
|
106
|
+
(onSelect)="props.onSelect?.(field()!, $event)"
|
|
107
|
+
(onUnselect)="props.onUnselect?.(field()!, $event)"
|
|
108
|
+
(onFocus)="props.onFocus?.(field()!, $event)"
|
|
109
|
+
(onBlur)="props.onBlur?.(field()!, $event)"
|
|
110
|
+
(onDropdownClick)="props.onDropdownClick?.(field()!, $event)"
|
|
111
|
+
(onClear)="props.onClear?.(field()!, $event)"
|
|
112
|
+
(onKeyUp)="props.onKeyUp?.(field()!, $event)"
|
|
113
|
+
(onShow)="props.onShow?.(field()!, $event)"
|
|
114
|
+
(onHide)="props.onHide?.(field()!, $event)"
|
|
115
|
+
(onLazyLoad)="props.onLazyLoad?.(field()!, $event)"
|
|
116
|
+
[formControl]="field()!.fieldControl!" />`, isInline: true, styles: [":host ::ng-deep .p-disabled,:host ::ng-deep .p-component:disabled{opacity:1}:host ::ng-deep .p-inputtext{border-width:0;border-radius:0;box-shadow:none;background:#fff;padding:0}:host ::ng-deep .p-inputtext:not(.ng-valid).ng-dirty{background:var(--p-red-200)!important;border-bottom:1px solid var(--p-red-500)!important}:host ::ng-deep .p-inputtext:not(:disabled):hover{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-inputtext:not(:disabled).ng-hovered{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-inputtext:focus{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .ng-hovered .p-autocomplete-input:not(.p-disabled){border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-select-label{padding:0}:host ::ng-deep .p-select{border-width:0;border-radius:0;box-shadow:none;background:#fff}:host ::ng-deep .p-select .p-select-dropdown{display:none}:host ::ng-deep .p-select .p-select-clear-icon{display:none}:host ::ng-deep .p-select:not(.ng-valid).ng-dirty{background:var(--p-red-200)!important;border-bottom:1px solid var(--p-red-500)!important}:host ::ng-deep .p-select-open{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-select-open .p-select-dropdown{display:flex}:host ::ng-deep .p-select-open .p-select-clear-icon{display:flex}:host ::ng-deep .p-select:hover{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-select:hover .p-select-dropdown{display:flex}:host ::ng-deep .p-select:hover .p-select-clear-icon{display:flex}:host ::ng-deep .p-select.ng-hovered{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-select.ng-hovered .p-select-dropdown{display:flex}:host ::ng-deep .p-select.ng-hovered .p-select-clear-icon{display:flex}:host ::ng-deep .p-multiselect-label{padding:0}:host ::ng-deep .p-multiselect{border-width:0;border-radius:0;background:#fff;box-shadow:none}:host ::ng-deep .p-multiselect .p-multiselect-dropdown{display:none}:host ::ng-deep .p-multiselect:not(.ng-valid).ng-dirty{background:var(--p-red-200)!important;border-bottom:1px solid var(--p-red-500)!important}:host ::ng-deep .p-multiselect-open{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-multiselect-open .p-multiselect-dropdown{display:flex}:host ::ng-deep .p-multiselect:not(.p-disabled).p-focus{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-multiselect:not(.p-disabled).p-focus .p-multiselect-dropdown{display:flex}:host ::ng-deep .p-multiselect:not(.p-disabled):hover{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-multiselect:not(.p-disabled):hover .p-multiselect-dropdown{display:flex}:host ::ng-deep .p-multiselect:not(.p-disabled).ng-hovered{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-multiselect:not(.p-disabled).ng-hovered .p-multiselect-dropdown{display:flex}:host ::ng-deep .p-textarea{border-radius:0;box-shadow:none;padding:0;background:#fff;resize:none}:host ::ng-deep .p-textarea:not(.ng-valid).ng-dirty{background:var(--p-red-200)!important;border:1px solid var(--p-red-500)!important}:host ::ng-deep .p-textarea:not(:disabled):hover{border:1px solid var(--p-primary-color);resize:vertical}:host ::ng-deep .p-textarea:not(:disabled).ng-hovered{border:1px solid var(--p-primary-color);resize:vertical}:host ::ng-deep .p-textarea:focus{border:1px solid var(--p-primary-color);resize:vertical}:host ::ng-deep .p-treeselect-label{padding:0}:host ::ng-deep .p-treeselect{border-width:0;border-radius:0;box-shadow:none;background:#fff}:host ::ng-deep .p-treeselect .p-treeselect-dropdown{display:none}:host ::ng-deep .ng-invalid.ng-dirty>.p-treeselect{background:var(--p-red-200)!important;border-bottom:1px solid var(--p-red-500)!important}:host ::ng-deep .p-treeselect-open{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-treeselect-open .p-treeselect-dropdown{display:flex}:host ::ng-deep .p-treeselect:not(.p-disabled).p-focus{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-treeselect:not(.p-disabled).p-focus .p-treeselect-dropdown{display:flex}:host ::ng-deep .p-treeselect:not(.p-disabled):hover{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-treeselect:not(.p-disabled):hover .p-treeselect-dropdown{display:flex}:host ::ng-deep .ng-hovered>.p-treeselect:not(.p-disabled){border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .ng-hovered>.p-treeselect:not(.p-disabled) .p-treeselect-dropdown{display:flex}:host ::ng-deep .p-menubar{border-width:0;padding:0}:host ::ng-deep .p-menubar-submenu{z-index:3}:host ::ng-deep .p-fileupload-advanced{border-width:0;border-radius:0;background-color:#fff}:host ::ng-deep .p-fileupload-header{padding:0}:host ::ng-deep .p-fileupload-content{padding:0;display:block;border-width:0}:host ::ng-deep .p-inputnumber:not(.ng-valid).ng-dirty>.p-inputtext{background:var(--p-red-200)!important;border-bottom:1px solid var(--p-red-500)!important}:host ::ng-deep .p-inputnumber.ng-hovered:not(.p-disabled)>.p-inputtext{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .ng-hovered>.p-datepicker:not(.p-disabled) .p-inputtext{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .cm-editor{border:1px solid #cbd5e1}:host ::ng-deep .cm-editor.cm-focused{outline:none!important;border:1px solid var(--p-primary-color)}:host ::ng-deep .cm-editor:hover{border:1px solid var(--p-primary-color)}:host ::ng-deep .cm-editor.ng-hovered{border:1px solid var(--p-primary-color)}:host ::ng-deep .cm-gutters{background-color:#fff;border:\"none\"}:host ::ng-deep .cm-activeLineGutter{background-color:#fff}\n"], dependencies: [{ kind: "component", type: AutoComplete, selector: "p-autoComplete, p-autocomplete, p-auto-complete", inputs: ["minLength", "delay", "style", "panelStyle", "styleClass", "panelStyleClass", "inputStyle", "inputId", "inputStyleClass", "placeholder", "readonly", "disabled", "scrollHeight", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "maxlength", "name", "required", "size", "appendTo", "autoHighlight", "forceSelection", "type", "autoZIndex", "baseZIndex", "ariaLabel", "dropdownAriaLabel", "ariaLabelledBy", "dropdownIcon", "unique", "group", "completeOnFocus", "showClear", "field", "dropdown", "showEmptyMessage", "dropdownMode", "multiple", "tabindex", "dataKey", "emptyMessage", "showTransitionOptions", "hideTransitionOptions", "autofocus", "autocomplete", "optionGroupChildren", "optionGroupLabel", "overlayOptions", "suggestions", "itemSize", "optionLabel", "optionValue", "id", "searchMessage", "emptySelectionMessage", "selectionMessage", "autoOptionFocus", "selectOnFocus", "searchLocale", "optionDisabled", "focusOnHover", "typeahead", "variant", "fluid"], outputs: ["completeMethod", "onSelect", "onUnselect", "onFocus", "onBlur", "onDropdownClick", "onClear", "onKeyUp", "onShow", "onHide", "onLazyLoad"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] }); }
|
|
117
|
+
}
|
|
118
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AutoCompleteComponent, decorators: [{
|
|
119
|
+
type: Component,
|
|
120
|
+
args: [{ selector: 'form-autocomplete', standalone: true, imports: [AutoComplete, ReactiveFormsModule], template: `<p-autocomplete
|
|
121
|
+
[id]="field()?.uuid"
|
|
122
|
+
[inputId]="field()?.uuid"
|
|
123
|
+
[minLength]="props.minLength ?? 1"
|
|
124
|
+
[delay]="props.delay ?? 300"
|
|
125
|
+
[panelStyle]="props.panelStyle"
|
|
126
|
+
[panelStyleClass]="props.panelStyleClass"
|
|
127
|
+
[styleClass]="props.styleClass"
|
|
128
|
+
[inputStyle]="props.inputStyle"
|
|
129
|
+
[inputStyleClass]="props.inputStyleClass"
|
|
130
|
+
[placeholder]="props.placeholder"
|
|
131
|
+
[readonly]="props.readonly"
|
|
132
|
+
[scrollHeight]="props.scrollHeight ?? '200px'"
|
|
133
|
+
[lazy]="props.lazy"
|
|
134
|
+
[virtualScroll]="props.virtualScroll"
|
|
135
|
+
[virtualScrollItemSize]="props.virtualScrollItemSize"
|
|
136
|
+
[virtualScrollOptions]="props.virtualScrollOptions"
|
|
137
|
+
[maxlength]="props.maxlength"
|
|
138
|
+
[name]="props.name"
|
|
139
|
+
[size]="props.size"
|
|
140
|
+
[appendTo]="props.appendTo"
|
|
141
|
+
[autoHighlight]="props.autoHighlight"
|
|
142
|
+
[forceSelection]="props.forceSelection"
|
|
143
|
+
[type]="props.type ?? 'text'"
|
|
144
|
+
[autoZIndex]="props.autoZIndex ?? true"
|
|
145
|
+
[baseZIndex]="props.baseZIndex ?? 0"
|
|
146
|
+
[ariaLabel]="props.ariaLabel"
|
|
147
|
+
[ariaLabelledBy]="props.ariaLabelledBy"
|
|
148
|
+
[dropdownAriaLabel]="props.dropdownAriaLabel"
|
|
149
|
+
[dropdownIcon]="props.dropdownIcon"
|
|
150
|
+
[unique]="props.unique ?? true"
|
|
151
|
+
[group]="props.group"
|
|
152
|
+
[completeOnFocus]="props.completeOnFocus"
|
|
153
|
+
[showClear]="props.showClear"
|
|
154
|
+
[dropdown]="props.dropdown"
|
|
155
|
+
[showEmptyMessage]="props.showEmptyMessage ?? true"
|
|
156
|
+
[dropdownMode]="props.dropdownMode ?? 'blank'"
|
|
157
|
+
[multiple]="props.multiple"
|
|
158
|
+
[tabindex]="props.tabindex"
|
|
159
|
+
[dataKey]="props.dataKey"
|
|
160
|
+
[emptyMessage]="props.emptyMessage"
|
|
161
|
+
[showTransitionOptions]="props.showTransitionOptions ?? '.12s cubic-bezier(0, 0, 0.2, 1)'"
|
|
162
|
+
[hideTransitionOptions]="props.hideTransitionOptions ?? '.1s linear'"
|
|
163
|
+
[autofocus]="props.autofocus"
|
|
164
|
+
[autocomplete]="props.autocomplete ?? 'off'"
|
|
165
|
+
[optionGroupChildren]="props.optionGroupChildren ?? 'items'"
|
|
166
|
+
[optionGroupLabel]="props.optionGroupLabel ?? 'label'"
|
|
167
|
+
[overlayOptions]="props.overlayOptions"
|
|
168
|
+
[suggestions]="props.suggestions ?? []"
|
|
169
|
+
[optionLabel]="props.optionLabel"
|
|
170
|
+
[optionValue]="props.optionValue"
|
|
171
|
+
[searchMessage]="props.searchMessage ?? '{0} results are available'"
|
|
172
|
+
[emptySelectionMessage]="props.emptySelectionMessage ?? 'No selected item'"
|
|
173
|
+
[selectionMessage]="props.selectionMessage ?? '{0} items selected'"
|
|
174
|
+
[autoOptionFocus]="props.autoOptionFocus"
|
|
175
|
+
[selectOnFocus]="props.selectOnFocus"
|
|
176
|
+
[searchLocale]="props.searchLocale"
|
|
177
|
+
[optionDisabled]="props.optionDisabled"
|
|
178
|
+
[focusOnHover]="props.focusOnHover ?? true"
|
|
179
|
+
[typeahead]="props.typeahead ?? true"
|
|
180
|
+
[variant]="props.variant"
|
|
181
|
+
[fluid]="props.fluid ?? true"
|
|
182
|
+
[class]="props.class"
|
|
183
|
+
[style]="props.style"
|
|
184
|
+
(completeMethod)="props.completeMethod?.(field()!, $event)"
|
|
185
|
+
(onSelect)="props.onSelect?.(field()!, $event)"
|
|
186
|
+
(onUnselect)="props.onUnselect?.(field()!, $event)"
|
|
187
|
+
(onFocus)="props.onFocus?.(field()!, $event)"
|
|
188
|
+
(onBlur)="props.onBlur?.(field()!, $event)"
|
|
189
|
+
(onDropdownClick)="props.onDropdownClick?.(field()!, $event)"
|
|
190
|
+
(onClear)="props.onClear?.(field()!, $event)"
|
|
191
|
+
(onKeyUp)="props.onKeyUp?.(field()!, $event)"
|
|
192
|
+
(onShow)="props.onShow?.(field()!, $event)"
|
|
193
|
+
(onHide)="props.onHide?.(field()!, $event)"
|
|
194
|
+
(onLazyLoad)="props.onLazyLoad?.(field()!, $event)"
|
|
195
|
+
[formControl]="field()!.fieldControl!" />`, styles: [":host ::ng-deep .p-disabled,:host ::ng-deep .p-component:disabled{opacity:1}:host ::ng-deep .p-inputtext{border-width:0;border-radius:0;box-shadow:none;background:#fff;padding:0}:host ::ng-deep .p-inputtext:not(.ng-valid).ng-dirty{background:var(--p-red-200)!important;border-bottom:1px solid var(--p-red-500)!important}:host ::ng-deep .p-inputtext:not(:disabled):hover{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-inputtext:not(:disabled).ng-hovered{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-inputtext:focus{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .ng-hovered .p-autocomplete-input:not(.p-disabled){border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-select-label{padding:0}:host ::ng-deep .p-select{border-width:0;border-radius:0;box-shadow:none;background:#fff}:host ::ng-deep .p-select .p-select-dropdown{display:none}:host ::ng-deep .p-select .p-select-clear-icon{display:none}:host ::ng-deep .p-select:not(.ng-valid).ng-dirty{background:var(--p-red-200)!important;border-bottom:1px solid var(--p-red-500)!important}:host ::ng-deep .p-select-open{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-select-open .p-select-dropdown{display:flex}:host ::ng-deep .p-select-open .p-select-clear-icon{display:flex}:host ::ng-deep .p-select:hover{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-select:hover .p-select-dropdown{display:flex}:host ::ng-deep .p-select:hover .p-select-clear-icon{display:flex}:host ::ng-deep .p-select.ng-hovered{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-select.ng-hovered .p-select-dropdown{display:flex}:host ::ng-deep .p-select.ng-hovered .p-select-clear-icon{display:flex}:host ::ng-deep .p-multiselect-label{padding:0}:host ::ng-deep .p-multiselect{border-width:0;border-radius:0;background:#fff;box-shadow:none}:host ::ng-deep .p-multiselect .p-multiselect-dropdown{display:none}:host ::ng-deep .p-multiselect:not(.ng-valid).ng-dirty{background:var(--p-red-200)!important;border-bottom:1px solid var(--p-red-500)!important}:host ::ng-deep .p-multiselect-open{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-multiselect-open .p-multiselect-dropdown{display:flex}:host ::ng-deep .p-multiselect:not(.p-disabled).p-focus{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-multiselect:not(.p-disabled).p-focus .p-multiselect-dropdown{display:flex}:host ::ng-deep .p-multiselect:not(.p-disabled):hover{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-multiselect:not(.p-disabled):hover .p-multiselect-dropdown{display:flex}:host ::ng-deep .p-multiselect:not(.p-disabled).ng-hovered{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-multiselect:not(.p-disabled).ng-hovered .p-multiselect-dropdown{display:flex}:host ::ng-deep .p-textarea{border-radius:0;box-shadow:none;padding:0;background:#fff;resize:none}:host ::ng-deep .p-textarea:not(.ng-valid).ng-dirty{background:var(--p-red-200)!important;border:1px solid var(--p-red-500)!important}:host ::ng-deep .p-textarea:not(:disabled):hover{border:1px solid var(--p-primary-color);resize:vertical}:host ::ng-deep .p-textarea:not(:disabled).ng-hovered{border:1px solid var(--p-primary-color);resize:vertical}:host ::ng-deep .p-textarea:focus{border:1px solid var(--p-primary-color);resize:vertical}:host ::ng-deep .p-treeselect-label{padding:0}:host ::ng-deep .p-treeselect{border-width:0;border-radius:0;box-shadow:none;background:#fff}:host ::ng-deep .p-treeselect .p-treeselect-dropdown{display:none}:host ::ng-deep .ng-invalid.ng-dirty>.p-treeselect{background:var(--p-red-200)!important;border-bottom:1px solid var(--p-red-500)!important}:host ::ng-deep .p-treeselect-open{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-treeselect-open .p-treeselect-dropdown{display:flex}:host ::ng-deep .p-treeselect:not(.p-disabled).p-focus{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-treeselect:not(.p-disabled).p-focus .p-treeselect-dropdown{display:flex}:host ::ng-deep .p-treeselect:not(.p-disabled):hover{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-treeselect:not(.p-disabled):hover .p-treeselect-dropdown{display:flex}:host ::ng-deep .ng-hovered>.p-treeselect:not(.p-disabled){border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .ng-hovered>.p-treeselect:not(.p-disabled) .p-treeselect-dropdown{display:flex}:host ::ng-deep .p-menubar{border-width:0;padding:0}:host ::ng-deep .p-menubar-submenu{z-index:3}:host ::ng-deep .p-fileupload-advanced{border-width:0;border-radius:0;background-color:#fff}:host ::ng-deep .p-fileupload-header{padding:0}:host ::ng-deep .p-fileupload-content{padding:0;display:block;border-width:0}:host ::ng-deep .p-inputnumber:not(.ng-valid).ng-dirty>.p-inputtext{background:var(--p-red-200)!important;border-bottom:1px solid var(--p-red-500)!important}:host ::ng-deep .p-inputnumber.ng-hovered:not(.p-disabled)>.p-inputtext{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .ng-hovered>.p-datepicker:not(.p-disabled) .p-inputtext{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .cm-editor{border:1px solid #cbd5e1}:host ::ng-deep .cm-editor.cm-focused{outline:none!important;border:1px solid var(--p-primary-color)}:host ::ng-deep .cm-editor:hover{border:1px solid var(--p-primary-color)}:host ::ng-deep .cm-editor.ng-hovered{border:1px solid var(--p-primary-color)}:host ::ng-deep .cm-gutters{background-color:#fff;border:\"none\"}:host ::ng-deep .cm-activeLineGutter{background-color:#fff}\n"] }]
|
|
196
|
+
}], ctorParameters: () => [{ type: i1.ActionService }, { type: i0.Renderer2 }], propDecorators: { autoCompleteRef: [{
|
|
197
|
+
type: ViewChild,
|
|
198
|
+
args: [AutoComplete, { read: ElementRef, static: false }]
|
|
199
|
+
}] } });
|
|
200
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLnR5cGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbW0tdWkvc3JjL2xpYi9mb3JtL2Zvcm0tdHlwZS9hdXRvY29tcGxldGUudHlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUMzRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7QUFzSnBELE1BQU0sT0FBTyxxQkFBcUI7SUFJakMsWUFDUyxNQUFxQixFQUNyQixRQUFtQjtRQURuQixXQUFNLEdBQU4sTUFBTSxDQUFlO1FBQ3JCLGFBQVEsR0FBUixRQUFRLENBQVc7UUFKNUIsVUFBSyxHQUFHLEtBQUssRUFBYSxDQUFDO1FBQzNCLFVBQUssR0FBc0IsRUFBRSxDQUFDO1FBSzdCLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDWCxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDO2dCQUNsQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUcsQ0FBQyxpQkFBa0IsQ0FBQztnQkFDOUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3ZCLENBQUM7UUFDRixDQUFDLENBQUMsQ0FBQztRQUNILE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDWCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLG1CQUFtQixFQUFFLENBQUM7WUFDdEQsSUFBSSxDQUFDLFdBQVcsSUFBSSxXQUFXLEVBQUUsR0FBRyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQztnQkFDNUQsT0FBTztZQUNSLENBQUM7WUFDRCxJQUFJLFdBQVcsQ0FBQyxJQUFJLElBQUksWUFBWSxFQUFFLENBQUM7Z0JBQ3RDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxFQUFFLFlBQVksQ0FBQyxDQUFDO1lBQzFFLENBQUM7aUJBQU0sSUFBSSxXQUFXLENBQUMsSUFBSSxJQUFJLFlBQVksRUFBRSxDQUFDO2dCQUM3QyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLGFBQWEsRUFBRSxZQUFZLENBQUMsQ0FBQztZQUM3RSxDQUFDO2lCQUFNLElBQUksV0FBVyxDQUFDLElBQUksSUFBSSxPQUFPLEVBQUUsQ0FBQztnQkFDeEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDO1lBQ3BFLENBQUM7UUFDRixDQUFDLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFRCxjQUFjO1FBQ2IsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyxLQUFLLEVBQUcsQ0FBQyxZQUFhLENBQUMsT0FBTyxDQUFDLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDM0QsQ0FBQztJQUNGLENBQUM7K0dBakNXLHFCQUFxQjttR0FBckIscUJBQXFCLGtRQUN0QixZQUFZLDJCQUFVLFVBQVUsNkJBL0VqQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzRDQTJFaUMsd2lMQTVFakMsWUFBWSxzdENBQUUsbUJBQW1COzs0RkErRS9CLHFCQUFxQjtrQkFsRmpDLFNBQVM7K0JBQ0MsbUJBQW1CLGNBQ2pCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxtQkFBbUIsQ0FBQyxZQUNsQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzRDQTJFaUM7MEdBSW1CLGVBQWU7c0JBQTVFLFNBQVM7dUJBQUMsWUFBWSxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBpbnB1dCwgZWZmZWN0LCBWaWV3Q2hpbGQsIEVsZW1lbnRSZWYsIFJlbmRlcmVyMiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBGb3JtRmllbGQsIEZpZWxkUHJvcHMsIEF0dHJpYnV0ZUV2ZW50IH0gZnJvbSAnLi4vZm9ybS1maWVsZC9mb3JtLWZpZWxkJztcclxuaW1wb3J0IHsgQXV0b0NvbXBsZXRlIH0gZnJvbSAncHJpbWVuZy9hdXRvY29tcGxldGUnO1xyXG5pbXBvcnQgeyBTY3JvbGxlck9wdGlvbnMsIE92ZXJsYXlPcHRpb25zIH0gZnJvbSAncHJpbWVuZy9hcGknO1xyXG5pbXBvcnQgeyBBY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZS9hY3Rpb24uc2VydmljZSc7XHJcblxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBBdXRvQ29tcGxldGVQcm9wcyBleHRlbmRzIEZpZWxkUHJvcHMge1xyXG5cdHNjcm9sbEhlaWdodD86IHN0cmluZztcclxuXHRtaW5MZW5ndGg/OiBudW1iZXI7XHJcblx0ZGVsYXk/OiBudW1iZXI7XHJcblx0cGFuZWxTdHlsZT86IGFueTtcclxuXHRwYW5lbFN0eWxlQ2xhc3M/OiBzdHJpbmc7XHJcblx0YXV0b0hpZ2hsaWdodD86IGJvb2xlYW47XHJcblx0Zm9yY2VTZWxlY3Rpb24/OiBib29sZWFuO1xyXG5cdHR5cGU/OiBzdHJpbmc7XHJcblx0YXV0b1pJbmRleD86IGJvb2xlYW47XHJcblx0YmFzZVpJbmRleD86IG51bWJlcjtcclxuXHRkcm9wZG93bkFyaWFMYWJlbD86IHN0cmluZztcclxuXHR1bmlxdWU/OiBib29sZWFuO1xyXG5cdGNvbXBsZXRlT25Gb2N1cz86IGJvb2xlYW47XHJcblx0ZHJvcGRvd24/OiBib29sZWFuO1xyXG5cdHNob3dFbXB0eU1lc3NhZ2U/OiBib29sZWFuO1xyXG5cdGRyb3Bkb3duTW9kZT86IHN0cmluZztcclxuXHRtdWx0aXBsZT86IGJvb2xlYW47XHJcblx0c2hvd1RyYW5zaXRpb25PcHRpb25zPzogc3RyaW5nO1xyXG5cdGhpZGVUcmFuc2l0aW9uT3B0aW9ucz86IHN0cmluZztcclxuXHRhdXRvY29tcGxldGU/OiBzdHJpbmc7XHJcblx0b3B0aW9uR3JvdXBDaGlsZHJlbj86IHN0cmluZztcclxuXHRvcHRpb25Hcm91cExhYmVsPzogc3RyaW5nO1xyXG5cdHN1Z2dlc3Rpb25zPzogYW55W107XHJcblx0b3B0aW9uTGFiZWw/OiBzdHJpbmcgfCAoKGl0ZW06IGFueSkgPT4gc3RyaW5nKTtcclxuXHRvcHRpb25WYWx1ZT86IHN0cmluZyB8ICgoaXRlbTogYW55KSA9PiBzdHJpbmcpO1xyXG5cdHNlYXJjaE1lc3NhZ2U/OiBzdHJpbmc7XHJcblx0ZW1wdHlTZWxlY3Rpb25NZXNzYWdlPzogc3RyaW5nO1xyXG5cdHNlbGVjdGlvbk1lc3NhZ2U/OiBzdHJpbmc7XHJcblx0YXV0b09wdGlvbkZvY3VzPzogYm9vbGVhbjtcclxuXHRzZWxlY3RPbkZvY3VzPzogYm9vbGVhbjtcclxuXHRzZWFyY2hMb2NhbGU/OiBib29sZWFuO1xyXG5cdG9wdGlvbkRpc2FibGVkPzogc3RyaW5nO1xyXG5cdGZvY3VzT25Ib3Zlcj86IGJvb2xlYW47XHJcblx0dHlwZWFoZWFkPzogYm9vbGVhbjtcclxuXHRyZWFkb25seT86IGJvb2xlYW47XHJcblx0YXBwZW5kVG8/OiBhbnk7XHJcblx0dGFiaW5kZXg/OiBudW1iZXI7XHJcblx0ZGF0YUtleT86IHN0cmluZztcclxuXHRkcm9wZG93bkljb24/OiBzdHJpbmc7XHJcblx0Z3JvdXA/OiBib29sZWFuO1xyXG5cdHNob3dDbGVhcj86IGJvb2xlYW47XHJcblx0ZW1wdHlNZXNzYWdlPzogYW55O1xyXG5cdGxhenk/OiBib29sZWFuO1xyXG5cdHZpcnR1YWxTY3JvbGw/OiBib29sZWFuO1xyXG5cdHZpcnR1YWxTY3JvbGxJdGVtU2l6ZT86IG51bWJlcjtcclxuXHR2aXJ0dWFsU2Nyb2xsT3B0aW9ucz86IFNjcm9sbGVyT3B0aW9ucztcclxuXHRvdmVybGF5T3B0aW9ucz86IE92ZXJsYXlPcHRpb25zO1xyXG5cdG1heGxlbmd0aD86IGFueTtcclxuXHJcblx0Y29tcGxldGVNZXRob2Q/OiBBdHRyaWJ1dGVFdmVudDtcclxuXHRvblNlbGVjdD86IEF0dHJpYnV0ZUV2ZW50O1xyXG5cdG9uVW5zZWxlY3Q/OiBBdHRyaWJ1dGVFdmVudDtcclxuXHRvbkZvY3VzPzogQXR0cmlidXRlRXZlbnQ7XHJcblx0b25CbHVyPzogQXR0cmlidXRlRXZlbnQ7XHJcblx0b25Ecm9wZG93bkNsaWNrPzogQXR0cmlidXRlRXZlbnQ7XHJcblx0b25DbGVhcj86IEF0dHJpYnV0ZUV2ZW50O1xyXG5cdG9uS2V5VXA/OiBBdHRyaWJ1dGVFdmVudDtcclxuXHRvblNob3c/OiBBdHRyaWJ1dGVFdmVudDtcclxuXHRvbkhpZGU/OiBBdHRyaWJ1dGVFdmVudDtcclxuXHRvbkxhenlMb2FkPzogQXR0cmlidXRlRXZlbnQ7XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHNlbGVjdG9yOiAnZm9ybS1hdXRvY29tcGxldGUnLFxyXG5cdHN0YW5kYWxvbmU6IHRydWUsXHJcblx0aW1wb3J0czogW0F1dG9Db21wbGV0ZSwgUmVhY3RpdmVGb3Jtc01vZHVsZV0sXHJcblx0dGVtcGxhdGU6IGA8cC1hdXRvY29tcGxldGVcclxuXHRcdFtpZF09XCJmaWVsZCgpPy51dWlkXCJcclxuXHRcdFtpbnB1dElkXT1cImZpZWxkKCk/LnV1aWRcIlxyXG5cdFx0W21pbkxlbmd0aF09XCJwcm9wcy5taW5MZW5ndGggPz8gMVwiXHJcblx0XHRbZGVsYXldPVwicHJvcHMuZGVsYXkgPz8gMzAwXCJcclxuXHRcdFtwYW5lbFN0eWxlXT1cInByb3BzLnBhbmVsU3R5bGVcIlxyXG5cdFx0W3BhbmVsU3R5bGVDbGFzc109XCJwcm9wcy5wYW5lbFN0eWxlQ2xhc3NcIlxyXG5cdFx0W3N0eWxlQ2xhc3NdPVwicHJvcHMuc3R5bGVDbGFzc1wiXHJcblx0XHRbaW5wdXRTdHlsZV09XCJwcm9wcy5pbnB1dFN0eWxlXCJcclxuXHRcdFtpbnB1dFN0eWxlQ2xhc3NdPVwicHJvcHMuaW5wdXRTdHlsZUNsYXNzXCJcclxuXHRcdFtwbGFjZWhvbGRlcl09XCJwcm9wcy5wbGFjZWhvbGRlclwiXHJcblx0XHRbcmVhZG9ubHldPVwicHJvcHMucmVhZG9ubHlcIlxyXG5cdFx0W3Njcm9sbEhlaWdodF09XCJwcm9wcy5zY3JvbGxIZWlnaHQgPz8gJzIwMHB4J1wiXHJcblx0XHRbbGF6eV09XCJwcm9wcy5sYXp5XCJcclxuXHRcdFt2aXJ0dWFsU2Nyb2xsXT1cInByb3BzLnZpcnR1YWxTY3JvbGxcIlxyXG5cdFx0W3ZpcnR1YWxTY3JvbGxJdGVtU2l6ZV09XCJwcm9wcy52aXJ0dWFsU2Nyb2xsSXRlbVNpemVcIlxyXG5cdFx0W3ZpcnR1YWxTY3JvbGxPcHRpb25zXT1cInByb3BzLnZpcnR1YWxTY3JvbGxPcHRpb25zXCJcclxuXHRcdFttYXhsZW5ndGhdPVwicHJvcHMubWF4bGVuZ3RoXCJcclxuXHRcdFtuYW1lXT1cInByb3BzLm5hbWVcIlxyXG5cdFx0W3NpemVdPVwicHJvcHMuc2l6ZVwiXHJcblx0XHRbYXBwZW5kVG9dPVwicHJvcHMuYXBwZW5kVG9cIlxyXG5cdFx0W2F1dG9IaWdobGlnaHRdPVwicHJvcHMuYXV0b0hpZ2hsaWdodFwiXHJcblx0XHRbZm9yY2VTZWxlY3Rpb25dPVwicHJvcHMuZm9yY2VTZWxlY3Rpb25cIlxyXG5cdFx0W3R5cGVdPVwicHJvcHMudHlwZSA/PyAndGV4dCdcIlxyXG5cdFx0W2F1dG9aSW5kZXhdPVwicHJvcHMuYXV0b1pJbmRleCA/PyB0cnVlXCJcclxuXHRcdFtiYXNlWkluZGV4XT1cInByb3BzLmJhc2VaSW5kZXggPz8gMFwiXHJcblx0XHRbYXJpYUxhYmVsXT1cInByb3BzLmFyaWFMYWJlbFwiXHJcblx0XHRbYXJpYUxhYmVsbGVkQnldPVwicHJvcHMuYXJpYUxhYmVsbGVkQnlcIlxyXG5cdFx0W2Ryb3Bkb3duQXJpYUxhYmVsXT1cInByb3BzLmRyb3Bkb3duQXJpYUxhYmVsXCJcclxuXHRcdFtkcm9wZG93bkljb25dPVwicHJvcHMuZHJvcGRvd25JY29uXCJcclxuXHRcdFt1bmlxdWVdPVwicHJvcHMudW5pcXVlID8/IHRydWVcIlxyXG5cdFx0W2dyb3VwXT1cInByb3BzLmdyb3VwXCJcclxuXHRcdFtjb21wbGV0ZU9uRm9jdXNdPVwicHJvcHMuY29tcGxldGVPbkZvY3VzXCJcclxuXHRcdFtzaG93Q2xlYXJdPVwicHJvcHMuc2hvd0NsZWFyXCJcclxuXHRcdFtkcm9wZG93bl09XCJwcm9wcy5kcm9wZG93blwiXHJcblx0XHRbc2hvd0VtcHR5TWVzc2FnZV09XCJwcm9wcy5zaG93RW1wdHlNZXNzYWdlID8/IHRydWVcIlxyXG5cdFx0W2Ryb3Bkb3duTW9kZV09XCJwcm9wcy5kcm9wZG93bk1vZGUgPz8gJ2JsYW5rJ1wiXHJcblx0XHRbbXVsdGlwbGVdPVwicHJvcHMubXVsdGlwbGVcIlxyXG5cdFx0W3RhYmluZGV4XT1cInByb3BzLnRhYmluZGV4XCJcclxuXHRcdFtkYXRhS2V5XT1cInByb3BzLmRhdGFLZXlcIlxyXG5cdFx0W2VtcHR5TWVzc2FnZV09XCJwcm9wcy5lbXB0eU1lc3NhZ2VcIlxyXG5cdFx0W3Nob3dUcmFuc2l0aW9uT3B0aW9uc109XCJwcm9wcy5zaG93VHJhbnNpdGlvbk9wdGlvbnMgPz8gJy4xMnMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSknXCJcclxuXHRcdFtoaWRlVHJhbnNpdGlvbk9wdGlvbnNdPVwicHJvcHMuaGlkZVRyYW5zaXRpb25PcHRpb25zID8/ICcuMXMgbGluZWFyJ1wiXHJcblx0XHRbYXV0b2ZvY3VzXT1cInByb3BzLmF1dG9mb2N1c1wiXHJcblx0XHRbYXV0b2NvbXBsZXRlXT1cInByb3BzLmF1dG9jb21wbGV0ZSA/PyAnb2ZmJ1wiXHJcblx0XHRbb3B0aW9uR3JvdXBDaGlsZHJlbl09XCJwcm9wcy5vcHRpb25Hcm91cENoaWxkcmVuID8/ICdpdGVtcydcIlxyXG5cdFx0W29wdGlvbkdyb3VwTGFiZWxdPVwicHJvcHMub3B0aW9uR3JvdXBMYWJlbCA/PyAnbGFiZWwnXCJcclxuXHRcdFtvdmVybGF5T3B0aW9uc109XCJwcm9wcy5vdmVybGF5T3B0aW9uc1wiXHJcblx0XHRbc3VnZ2VzdGlvbnNdPVwicHJvcHMuc3VnZ2VzdGlvbnMgPz8gW11cIlxyXG5cdFx0W29wdGlvbkxhYmVsXT1cInByb3BzLm9wdGlvbkxhYmVsXCJcclxuXHRcdFtvcHRpb25WYWx1ZV09XCJwcm9wcy5vcHRpb25WYWx1ZVwiXHJcblx0XHRbc2VhcmNoTWVzc2FnZV09XCJwcm9wcy5zZWFyY2hNZXNzYWdlID8/ICd7MH0gcmVzdWx0cyBhcmUgYXZhaWxhYmxlJ1wiXHJcblx0XHRbZW1wdHlTZWxlY3Rpb25NZXNzYWdlXT1cInByb3BzLmVtcHR5U2VsZWN0aW9uTWVzc2FnZSA/PyAnTm8gc2VsZWN0ZWQgaXRlbSdcIlxyXG5cdFx0W3NlbGVjdGlvbk1lc3NhZ2VdPVwicHJvcHMuc2VsZWN0aW9uTWVzc2FnZSA/PyAnezB9IGl0ZW1zIHNlbGVjdGVkJ1wiXHJcblx0XHRbYXV0b09wdGlvbkZvY3VzXT1cInByb3BzLmF1dG9PcHRpb25Gb2N1c1wiXHJcblx0XHRbc2VsZWN0T25Gb2N1c109XCJwcm9wcy5zZWxlY3RPbkZvY3VzXCJcclxuXHRcdFtzZWFyY2hMb2NhbGVdPVwicHJvcHMuc2VhcmNoTG9jYWxlXCJcclxuXHRcdFtvcHRpb25EaXNhYmxlZF09XCJwcm9wcy5vcHRpb25EaXNhYmxlZFwiXHJcblx0XHRbZm9jdXNPbkhvdmVyXT1cInByb3BzLmZvY3VzT25Ib3ZlciA/PyB0cnVlXCJcclxuXHRcdFt0eXBlYWhlYWRdPVwicHJvcHMudHlwZWFoZWFkID8/IHRydWVcIlxyXG5cdFx0W3ZhcmlhbnRdPVwicHJvcHMudmFyaWFudFwiXHJcblx0XHRbZmx1aWRdPVwicHJvcHMuZmx1aWQgPz8gdHJ1ZVwiXHJcblx0XHRbY2xhc3NdPVwicHJvcHMuY2xhc3NcIlxyXG5cdFx0W3N0eWxlXT1cInByb3BzLnN0eWxlXCJcclxuXHRcdChjb21wbGV0ZU1ldGhvZCk9XCJwcm9wcy5jb21wbGV0ZU1ldGhvZD8uKGZpZWxkKCkhLCAkZXZlbnQpXCJcclxuXHRcdChvblNlbGVjdCk9XCJwcm9wcy5vblNlbGVjdD8uKGZpZWxkKCkhLCAkZXZlbnQpXCJcclxuXHRcdChvblVuc2VsZWN0KT1cInByb3BzLm9uVW5zZWxlY3Q/LihmaWVsZCgpISwgJGV2ZW50KVwiXHJcblx0XHQob25Gb2N1cyk9XCJwcm9wcy5vbkZvY3VzPy4oZmllbGQoKSEsICRldmVudClcIlxyXG5cdFx0KG9uQmx1cik9XCJwcm9wcy5vbkJsdXI/LihmaWVsZCgpISwgJGV2ZW50KVwiXHJcblx0XHQob25Ecm9wZG93bkNsaWNrKT1cInByb3BzLm9uRHJvcGRvd25DbGljaz8uKGZpZWxkKCkhLCAkZXZlbnQpXCJcclxuXHRcdChvbkNsZWFyKT1cInByb3BzLm9uQ2xlYXI/LihmaWVsZCgpISwgJGV2ZW50KVwiXHJcblx0XHQob25LZXlVcCk9XCJwcm9wcy5vbktleVVwPy4oZmllbGQoKSEsICRldmVudClcIlxyXG5cdFx0KG9uU2hvdyk9XCJwcm9wcy5vblNob3c/LihmaWVsZCgpISwgJGV2ZW50KVwiXHJcblx0XHQob25IaWRlKT1cInByb3BzLm9uSGlkZT8uKGZpZWxkKCkhLCAkZXZlbnQpXCJcclxuXHRcdChvbkxhenlMb2FkKT1cInByb3BzLm9uTGF6eUxvYWQ/LihmaWVsZCgpISwgJGV2ZW50KVwiXHJcblx0XHRbZm9ybUNvbnRyb2xdPVwiZmllbGQoKSEuZmllbGRDb250cm9sIVwiIC8+YCxcclxuXHRzdHlsZVVybDogJy4uLy4uL3N0eWxlcy9zdHlsZXMuc2NzcycsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBdXRvQ29tcGxldGVDb21wb25lbnQge1xyXG5cdEBWaWV3Q2hpbGQoQXV0b0NvbXBsZXRlLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogZmFsc2UgfSkgYXV0b0NvbXBsZXRlUmVmITogRWxlbWVudFJlZjtcclxuXHRmaWVsZCA9IGlucHV0PEZvcm1GaWVsZD4oKTtcclxuXHRwcm9wczogQXV0b0NvbXBsZXRlUHJvcHMgPSB7fTtcclxuXHRjb25zdHJ1Y3RvcihcclxuXHRcdHByaXZhdGUgYWN0aW9uOiBBY3Rpb25TZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxyXG5cdCkge1xyXG5cdFx0ZWZmZWN0KCgpID0+IHtcclxuXHRcdFx0aWYgKHRoaXMuZmllbGQoKSkge1xyXG5cdFx0XHRcdHRoaXMucHJvcHMgPSB0aGlzLmZpZWxkKCkhLmF1dG9Db21wbGV0ZVByb3BzITtcclxuXHRcdFx0XHR0aGlzLmhhbmRsZURpc2FibGVkKCk7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cdFx0ZWZmZWN0KCgpID0+IHtcclxuXHRcdFx0Y29uc3QgbGFiZWxBY3Rpb24gPSB0aGlzLmFjdGlvbi5nZXRGaWVsZExhYmVsQWN0aW9uKCk7XHJcblx0XHRcdGlmICghbGFiZWxBY3Rpb24gfHwgbGFiZWxBY3Rpb24/LmtleSAhPSB0aGlzLmZpZWxkKCk/LnV1aWQpIHtcclxuXHRcdFx0XHRyZXR1cm47XHJcblx0XHRcdH1cclxuXHRcdFx0aWYgKGxhYmVsQWN0aW9uLnR5cGUgPT0gJ21vdXNlZW50ZXInKSB7XHJcblx0XHRcdFx0dGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLmF1dG9Db21wbGV0ZVJlZi5uYXRpdmVFbGVtZW50LCAnbmctaG92ZXJlZCcpO1xyXG5cdFx0XHR9IGVsc2UgaWYgKGxhYmVsQWN0aW9uLnR5cGUgPT0gJ21vdXNlbGVhdmUnKSB7XHJcblx0XHRcdFx0dGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLmF1dG9Db21wbGV0ZVJlZi5uYXRpdmVFbGVtZW50LCAnbmctaG92ZXJlZCcpO1xyXG5cdFx0XHR9IGVsc2UgaWYgKGxhYmVsQWN0aW9uLnR5cGUgPT0gJ2NsaWNrJykge1xyXG5cdFx0XHRcdHRoaXMuYXV0b0NvbXBsZXRlUmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignaW5wdXQnKT8uZm9jdXMoKTtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHRoYW5kbGVEaXNhYmxlZCgpIHtcclxuXHRcdGlmICh0aGlzLnByb3BzPy5kaXNhYmxlZCkge1xyXG5cdFx0XHR0aGlzLmZpZWxkKCkhLmZpZWxkQ29udHJvbCEuZGlzYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcblx0XHR9XHJcblx0fVxyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
import { Component, ViewChild, input, effect } from '@angular/core';
|
|
2
|
+
import { ReactiveFormsModule } from '@angular/forms';
|
|
3
|
+
import { javascript } from '@codemirror/lang-javascript';
|
|
4
|
+
import { html } from '@codemirror/lang-html';
|
|
5
|
+
import { json } from '@codemirror/lang-json';
|
|
6
|
+
import { EditorState, StateEffect } from '@codemirror/state';
|
|
7
|
+
import { EditorView, keymap, highlightSpecialChars, drawSelection, dropCursor, rectangularSelection, crosshairCursor, lineNumbers, highlightActiveLineGutter, placeholder, } from '@codemirror/view';
|
|
8
|
+
import { defaultHighlightStyle, syntaxHighlighting, indentOnInput, bracketMatching, foldGutter, foldKeymap } from '@codemirror/language';
|
|
9
|
+
import { defaultKeymap, history, historyKeymap } from '@codemirror/commands';
|
|
10
|
+
import { searchKeymap, highlightSelectionMatches } from '@codemirror/search';
|
|
11
|
+
import { autocompletion, completionKeymap, closeBrackets, closeBracketsKeymap } from '@codemirror/autocomplete';
|
|
12
|
+
import { lintKeymap } from '@codemirror/lint';
|
|
13
|
+
import * as i0 from "@angular/core";
|
|
14
|
+
import * as i1 from "../../service/action.service";
|
|
15
|
+
export class CodeMirrorComponent {
|
|
16
|
+
constructor(action, renderer) {
|
|
17
|
+
this.action = action;
|
|
18
|
+
this.renderer = renderer;
|
|
19
|
+
this.field = input();
|
|
20
|
+
this.props = {};
|
|
21
|
+
this.templateIndex = 0;
|
|
22
|
+
effect(() => {
|
|
23
|
+
if (this.field()) {
|
|
24
|
+
this.props = this.field().codeMirrorProps;
|
|
25
|
+
this.handleModelChange();
|
|
26
|
+
this.handleExtensions();
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
effect(() => {
|
|
30
|
+
const labelAction = this.action.getFieldLabelAction();
|
|
31
|
+
if (!labelAction || labelAction?.key != this.field()?.uuid) {
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
if (labelAction.type == 'mouseenter') {
|
|
35
|
+
this.renderer.addClass(this.cmEditor, 'ng-hovered');
|
|
36
|
+
}
|
|
37
|
+
else if (labelAction.type == 'mouseleave') {
|
|
38
|
+
this.renderer.removeClass(this.cmEditor, 'ng-hovered');
|
|
39
|
+
}
|
|
40
|
+
else if (labelAction.type == 'click') {
|
|
41
|
+
this.editorView.focus();
|
|
42
|
+
}
|
|
43
|
+
else if (labelAction.type == 'dblclick') {
|
|
44
|
+
if (!this.props.templates || !this.props.templates.length)
|
|
45
|
+
return;
|
|
46
|
+
this.field()?.fieldControl?.setValue(this.props.templates[((this.templateIndex % this.props.templates.length) + this.props.templates.length) % this.props.templates.length], { emitEvent: true }, true);
|
|
47
|
+
this.templateIndex++;
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
ngAfterViewInit() {
|
|
52
|
+
this.editorView = new EditorView({
|
|
53
|
+
state: EditorState.create({
|
|
54
|
+
doc: this.field()?.fieldControl?.value,
|
|
55
|
+
}),
|
|
56
|
+
parent: this.codeContainer.nativeElement,
|
|
57
|
+
});
|
|
58
|
+
this.cmEditor = this.codeContainer.nativeElement.querySelector('.cm-editor');
|
|
59
|
+
}
|
|
60
|
+
ngOnDestroy() {
|
|
61
|
+
this.editorView.destroy();
|
|
62
|
+
}
|
|
63
|
+
handleExtensions() {
|
|
64
|
+
const extendsions = [
|
|
65
|
+
lineNumbers(),
|
|
66
|
+
foldGutter(),
|
|
67
|
+
highlightSpecialChars(),
|
|
68
|
+
history(),
|
|
69
|
+
drawSelection(),
|
|
70
|
+
dropCursor(),
|
|
71
|
+
EditorState.allowMultipleSelections.of(true),
|
|
72
|
+
indentOnInput(),
|
|
73
|
+
syntaxHighlighting(defaultHighlightStyle),
|
|
74
|
+
bracketMatching(),
|
|
75
|
+
closeBrackets(),
|
|
76
|
+
autocompletion(),
|
|
77
|
+
rectangularSelection(),
|
|
78
|
+
crosshairCursor(),
|
|
79
|
+
highlightActiveLineGutter(),
|
|
80
|
+
highlightSelectionMatches(),
|
|
81
|
+
keymap.of([
|
|
82
|
+
...closeBracketsKeymap,
|
|
83
|
+
...defaultKeymap,
|
|
84
|
+
...searchKeymap,
|
|
85
|
+
...historyKeymap,
|
|
86
|
+
...foldKeymap,
|
|
87
|
+
...completionKeymap,
|
|
88
|
+
...lintKeymap,
|
|
89
|
+
]),
|
|
90
|
+
EditorView.theme({
|
|
91
|
+
'.cm-gutters': {
|
|
92
|
+
backgroundColor: 'transparent',
|
|
93
|
+
border: 'none',
|
|
94
|
+
},
|
|
95
|
+
'.cm-activeLineGutter': {
|
|
96
|
+
backgroundColor: 'transparent',
|
|
97
|
+
},
|
|
98
|
+
'&': { minHeight: this.props.minHeight ?? '88px', maxHeight: this.props.maxHeight || '150px' },
|
|
99
|
+
'.cm-scroller': { overflow: 'auto', minHeight: this.props.minHeight ?? '88px' },
|
|
100
|
+
}),
|
|
101
|
+
this.getLanguageExtension(),
|
|
102
|
+
EditorView.updateListener.of((update) => {
|
|
103
|
+
// if (update.transactions.some((tr) => tr.isUserEvent('input'))) { }
|
|
104
|
+
if (update.docChanged) {
|
|
105
|
+
this.field()?.fieldControl?.setValue(update.state.doc.toString());
|
|
106
|
+
}
|
|
107
|
+
}),
|
|
108
|
+
];
|
|
109
|
+
if (this.props.placeholder) {
|
|
110
|
+
extendsions.unshift(placeholder(this.props.placeholder));
|
|
111
|
+
}
|
|
112
|
+
if (this.props.disabled) {
|
|
113
|
+
extendsions.push(EditorView.editable.of(false));
|
|
114
|
+
}
|
|
115
|
+
this.editorView.dispatch({
|
|
116
|
+
effects: StateEffect.reconfigure.of(extendsions),
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
handleModelChange() {
|
|
120
|
+
this.field()?.fieldControl?.modelChange.subscribe((value) => {
|
|
121
|
+
if (!this.editorView.state.doc.length && value == null) {
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
const transaction = this.editorView.state.update({
|
|
125
|
+
changes: { from: 0, to: this.editorView.state.doc.length, insert: value },
|
|
126
|
+
});
|
|
127
|
+
this.editorView.dispatch(transaction);
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
getLanguageExtension() {
|
|
131
|
+
switch (this.props.language) {
|
|
132
|
+
case 'html':
|
|
133
|
+
return html();
|
|
134
|
+
case 'javascript':
|
|
135
|
+
return javascript();
|
|
136
|
+
case 'json':
|
|
137
|
+
return json();
|
|
138
|
+
default:
|
|
139
|
+
return javascript();
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
minLines(min) {
|
|
143
|
+
return EditorView.updateListener.of((v) => {
|
|
144
|
+
const doc = v.state.doc;
|
|
145
|
+
const lineCount = doc.lines;
|
|
146
|
+
if (lineCount < min) {
|
|
147
|
+
const newLines = Array(min + 1 - lineCount)
|
|
148
|
+
.fill('')
|
|
149
|
+
.join('\n');
|
|
150
|
+
const transaction = v.state.update({
|
|
151
|
+
changes: { from: doc.length, insert: newLines },
|
|
152
|
+
});
|
|
153
|
+
v.view.dispatch(transaction);
|
|
154
|
+
}
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CodeMirrorComponent, deps: [{ token: i1.ActionService }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
158
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.13", type: CodeMirrorComponent, isStandalone: true, selector: "form-codemirror", inputs: { field: { classPropertyName: "field", publicName: "field", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "codeContainer", first: true, predicate: ["codeContainer"], descendants: true }], ngImport: i0, template: `<div #codeContainer></div>`, isInline: true, styles: [":host ::ng-deep .p-disabled,:host ::ng-deep .p-component:disabled{opacity:1}:host ::ng-deep .p-inputtext{border-width:0;border-radius:0;box-shadow:none;background:#fff;padding:0}:host ::ng-deep .p-inputtext:not(.ng-valid).ng-dirty{background:var(--p-red-200)!important;border-bottom:1px solid var(--p-red-500)!important}:host ::ng-deep .p-inputtext:not(:disabled):hover{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-inputtext:not(:disabled).ng-hovered{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-inputtext:focus{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .ng-hovered .p-autocomplete-input:not(.p-disabled){border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-select-label{padding:0}:host ::ng-deep .p-select{border-width:0;border-radius:0;box-shadow:none;background:#fff}:host ::ng-deep .p-select .p-select-dropdown{display:none}:host ::ng-deep .p-select .p-select-clear-icon{display:none}:host ::ng-deep .p-select:not(.ng-valid).ng-dirty{background:var(--p-red-200)!important;border-bottom:1px solid var(--p-red-500)!important}:host ::ng-deep .p-select-open{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-select-open .p-select-dropdown{display:flex}:host ::ng-deep .p-select-open .p-select-clear-icon{display:flex}:host ::ng-deep .p-select:hover{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-select:hover .p-select-dropdown{display:flex}:host ::ng-deep .p-select:hover .p-select-clear-icon{display:flex}:host ::ng-deep .p-select.ng-hovered{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-select.ng-hovered .p-select-dropdown{display:flex}:host ::ng-deep .p-select.ng-hovered .p-select-clear-icon{display:flex}:host ::ng-deep .p-multiselect-label{padding:0}:host ::ng-deep .p-multiselect{border-width:0;border-radius:0;background:#fff;box-shadow:none}:host ::ng-deep .p-multiselect .p-multiselect-dropdown{display:none}:host ::ng-deep .p-multiselect:not(.ng-valid).ng-dirty{background:var(--p-red-200)!important;border-bottom:1px solid var(--p-red-500)!important}:host ::ng-deep .p-multiselect-open{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-multiselect-open .p-multiselect-dropdown{display:flex}:host ::ng-deep .p-multiselect:not(.p-disabled).p-focus{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-multiselect:not(.p-disabled).p-focus .p-multiselect-dropdown{display:flex}:host ::ng-deep .p-multiselect:not(.p-disabled):hover{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-multiselect:not(.p-disabled):hover .p-multiselect-dropdown{display:flex}:host ::ng-deep .p-multiselect:not(.p-disabled).ng-hovered{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-multiselect:not(.p-disabled).ng-hovered .p-multiselect-dropdown{display:flex}:host ::ng-deep .p-textarea{border-radius:0;box-shadow:none;padding:0;background:#fff;resize:none}:host ::ng-deep .p-textarea:not(.ng-valid).ng-dirty{background:var(--p-red-200)!important;border:1px solid var(--p-red-500)!important}:host ::ng-deep .p-textarea:not(:disabled):hover{border:1px solid var(--p-primary-color);resize:vertical}:host ::ng-deep .p-textarea:not(:disabled).ng-hovered{border:1px solid var(--p-primary-color);resize:vertical}:host ::ng-deep .p-textarea:focus{border:1px solid var(--p-primary-color);resize:vertical}:host ::ng-deep .p-treeselect-label{padding:0}:host ::ng-deep .p-treeselect{border-width:0;border-radius:0;box-shadow:none;background:#fff}:host ::ng-deep .p-treeselect .p-treeselect-dropdown{display:none}:host ::ng-deep .ng-invalid.ng-dirty>.p-treeselect{background:var(--p-red-200)!important;border-bottom:1px solid var(--p-red-500)!important}:host ::ng-deep .p-treeselect-open{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-treeselect-open .p-treeselect-dropdown{display:flex}:host ::ng-deep .p-treeselect:not(.p-disabled).p-focus{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-treeselect:not(.p-disabled).p-focus .p-treeselect-dropdown{display:flex}:host ::ng-deep .p-treeselect:not(.p-disabled):hover{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-treeselect:not(.p-disabled):hover .p-treeselect-dropdown{display:flex}:host ::ng-deep .ng-hovered>.p-treeselect:not(.p-disabled){border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .ng-hovered>.p-treeselect:not(.p-disabled) .p-treeselect-dropdown{display:flex}:host ::ng-deep .p-menubar{border-width:0;padding:0}:host ::ng-deep .p-menubar-submenu{z-index:3}:host ::ng-deep .p-fileupload-advanced{border-width:0;border-radius:0;background-color:#fff}:host ::ng-deep .p-fileupload-header{padding:0}:host ::ng-deep .p-fileupload-content{padding:0;display:block;border-width:0}:host ::ng-deep .p-inputnumber:not(.ng-valid).ng-dirty>.p-inputtext{background:var(--p-red-200)!important;border-bottom:1px solid var(--p-red-500)!important}:host ::ng-deep .p-inputnumber.ng-hovered:not(.p-disabled)>.p-inputtext{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .ng-hovered>.p-datepicker:not(.p-disabled) .p-inputtext{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .cm-editor{border:1px solid #cbd5e1}:host ::ng-deep .cm-editor.cm-focused{outline:none!important;border:1px solid var(--p-primary-color)}:host ::ng-deep .cm-editor:hover{border:1px solid var(--p-primary-color)}:host ::ng-deep .cm-editor.ng-hovered{border:1px solid var(--p-primary-color)}:host ::ng-deep .cm-gutters{background-color:#fff;border:\"none\"}:host ::ng-deep .cm-activeLineGutter{background-color:#fff}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }] }); }
|
|
159
|
+
}
|
|
160
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CodeMirrorComponent, decorators: [{
|
|
161
|
+
type: Component,
|
|
162
|
+
args: [{ selector: 'form-codemirror', standalone: true, imports: [ReactiveFormsModule], template: `<div #codeContainer></div>`, styles: [":host ::ng-deep .p-disabled,:host ::ng-deep .p-component:disabled{opacity:1}:host ::ng-deep .p-inputtext{border-width:0;border-radius:0;box-shadow:none;background:#fff;padding:0}:host ::ng-deep .p-inputtext:not(.ng-valid).ng-dirty{background:var(--p-red-200)!important;border-bottom:1px solid var(--p-red-500)!important}:host ::ng-deep .p-inputtext:not(:disabled):hover{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-inputtext:not(:disabled).ng-hovered{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-inputtext:focus{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .ng-hovered .p-autocomplete-input:not(.p-disabled){border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-select-label{padding:0}:host ::ng-deep .p-select{border-width:0;border-radius:0;box-shadow:none;background:#fff}:host ::ng-deep .p-select .p-select-dropdown{display:none}:host ::ng-deep .p-select .p-select-clear-icon{display:none}:host ::ng-deep .p-select:not(.ng-valid).ng-dirty{background:var(--p-red-200)!important;border-bottom:1px solid var(--p-red-500)!important}:host ::ng-deep .p-select-open{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-select-open .p-select-dropdown{display:flex}:host ::ng-deep .p-select-open .p-select-clear-icon{display:flex}:host ::ng-deep .p-select:hover{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-select:hover .p-select-dropdown{display:flex}:host ::ng-deep .p-select:hover .p-select-clear-icon{display:flex}:host ::ng-deep .p-select.ng-hovered{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-select.ng-hovered .p-select-dropdown{display:flex}:host ::ng-deep .p-select.ng-hovered .p-select-clear-icon{display:flex}:host ::ng-deep .p-multiselect-label{padding:0}:host ::ng-deep .p-multiselect{border-width:0;border-radius:0;background:#fff;box-shadow:none}:host ::ng-deep .p-multiselect .p-multiselect-dropdown{display:none}:host ::ng-deep .p-multiselect:not(.ng-valid).ng-dirty{background:var(--p-red-200)!important;border-bottom:1px solid var(--p-red-500)!important}:host ::ng-deep .p-multiselect-open{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-multiselect-open .p-multiselect-dropdown{display:flex}:host ::ng-deep .p-multiselect:not(.p-disabled).p-focus{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-multiselect:not(.p-disabled).p-focus .p-multiselect-dropdown{display:flex}:host ::ng-deep .p-multiselect:not(.p-disabled):hover{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-multiselect:not(.p-disabled):hover .p-multiselect-dropdown{display:flex}:host ::ng-deep .p-multiselect:not(.p-disabled).ng-hovered{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-multiselect:not(.p-disabled).ng-hovered .p-multiselect-dropdown{display:flex}:host ::ng-deep .p-textarea{border-radius:0;box-shadow:none;padding:0;background:#fff;resize:none}:host ::ng-deep .p-textarea:not(.ng-valid).ng-dirty{background:var(--p-red-200)!important;border:1px solid var(--p-red-500)!important}:host ::ng-deep .p-textarea:not(:disabled):hover{border:1px solid var(--p-primary-color);resize:vertical}:host ::ng-deep .p-textarea:not(:disabled).ng-hovered{border:1px solid var(--p-primary-color);resize:vertical}:host ::ng-deep .p-textarea:focus{border:1px solid var(--p-primary-color);resize:vertical}:host ::ng-deep .p-treeselect-label{padding:0}:host ::ng-deep .p-treeselect{border-width:0;border-radius:0;box-shadow:none;background:#fff}:host ::ng-deep .p-treeselect .p-treeselect-dropdown{display:none}:host ::ng-deep .ng-invalid.ng-dirty>.p-treeselect{background:var(--p-red-200)!important;border-bottom:1px solid var(--p-red-500)!important}:host ::ng-deep .p-treeselect-open{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-treeselect-open .p-treeselect-dropdown{display:flex}:host ::ng-deep .p-treeselect:not(.p-disabled).p-focus{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-treeselect:not(.p-disabled).p-focus .p-treeselect-dropdown{display:flex}:host ::ng-deep .p-treeselect:not(.p-disabled):hover{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-treeselect:not(.p-disabled):hover .p-treeselect-dropdown{display:flex}:host ::ng-deep .ng-hovered>.p-treeselect:not(.p-disabled){border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .ng-hovered>.p-treeselect:not(.p-disabled) .p-treeselect-dropdown{display:flex}:host ::ng-deep .p-menubar{border-width:0;padding:0}:host ::ng-deep .p-menubar-submenu{z-index:3}:host ::ng-deep .p-fileupload-advanced{border-width:0;border-radius:0;background-color:#fff}:host ::ng-deep .p-fileupload-header{padding:0}:host ::ng-deep .p-fileupload-content{padding:0;display:block;border-width:0}:host ::ng-deep .p-inputnumber:not(.ng-valid).ng-dirty>.p-inputtext{background:var(--p-red-200)!important;border-bottom:1px solid var(--p-red-500)!important}:host ::ng-deep .p-inputnumber.ng-hovered:not(.p-disabled)>.p-inputtext{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .ng-hovered>.p-datepicker:not(.p-disabled) .p-inputtext{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .cm-editor{border:1px solid #cbd5e1}:host ::ng-deep .cm-editor.cm-focused{outline:none!important;border:1px solid var(--p-primary-color)}:host ::ng-deep .cm-editor:hover{border:1px solid var(--p-primary-color)}:host ::ng-deep .cm-editor.ng-hovered{border:1px solid var(--p-primary-color)}:host ::ng-deep .cm-gutters{background-color:#fff;border:\"none\"}:host ::ng-deep .cm-activeLineGutter{background-color:#fff}\n"] }]
|
|
163
|
+
}], ctorParameters: () => [{ type: i1.ActionService }, { type: i0.Renderer2 }], propDecorators: { codeContainer: [{
|
|
164
|
+
type: ViewChild,
|
|
165
|
+
args: ['codeContainer', { static: false }]
|
|
166
|
+
}] } });
|
|
167
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZW1pcnJvci50eXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW1tLXVpL3NyYy9saWIvZm9ybS9mb3JtLXR5cGUvY29kZW1pcnJvci50eXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDM0YsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFckQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM3QyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM3RCxPQUFPLEVBQ04sVUFBVSxFQUNWLE1BQU0sRUFDTixxQkFBcUIsRUFDckIsYUFBYSxFQUNiLFVBQVUsRUFDVixvQkFBb0IsRUFDcEIsZUFBZSxFQUNmLFdBQVcsRUFDWCx5QkFBeUIsRUFDekIsV0FBVyxHQUNYLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLGtCQUFrQixFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pJLE9BQU8sRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzdFLE9BQU8sRUFBRSxZQUFZLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM3RSxPQUFPLEVBQUUsY0FBYyxFQUFFLGdCQUFnQixFQUFFLGFBQWEsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFD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QUFPLEVBQUUsRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFO2lCQUMvQyxDQUFDLENBQUM7Z0JBQ0gsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDOUIsQ0FBQztRQUNGLENBQUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQzsrR0ExSlcsbUJBQW1CO21HQUFuQixtQkFBbUIsK1RBSHJCLDRCQUE0Qix1aUxBRDVCLG1CQUFtQjs7NEZBSWpCLG1CQUFtQjtrQkFQL0IsU0FBUzsrQkFDQyxpQkFBaUIsY0FDZixJQUFJLFdBQ1AsQ0FBQyxtQkFBbUIsQ0FBQyxZQUNwQiw0QkFBNEI7MEdBSVMsYUFBYTtzQkFBM0QsU0FBUzt1QkFBQyxlQUFlLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBWaWV3Q2hpbGQsIGlucHV0LCBlZmZlY3QsIFJlbmRlcmVyMiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBGb3JtRmllbGQsIEZpZWxkUHJvcHMgfSBmcm9tICcuLi9mb3JtLWZpZWxkL2Zvcm0tZmllbGQnO1xyXG5pbXBvcnQgeyBqYXZhc2NyaXB0IH0gZnJvbSAnQGNvZGVtaXJyb3IvbGFuZy1qYXZhc2NyaXB0JztcclxuaW1wb3J0IHsgaHRtbCB9IGZyb20gJ0Bjb2RlbWlycm9yL2xhbmctaHRtbCc7XHJcbmltcG9ydCB7IGpzb24gfSBmcm9tICdAY29kZW1pcnJvci9sYW5nLWpzb24nO1xyXG5pbXBvcnQgeyBFZGl0b3JTdGF0ZSwgU3RhdGVFZmZlY3QgfSBmcm9tICdAY29kZW1pcnJvci9zdGF0ZSc7XHJcbmltcG9ydCB7XHJcblx0RWRpdG9yVmlldyxcclxuXHRrZXltYXAsXHJcblx0aGlnaGxpZ2h0U3BlY2lhbENoYXJzLFxyXG5cdGRyYXdTZWxlY3Rpb24sXHJcblx0ZHJvcEN1cnNvcixcclxuXHRyZWN0YW5ndWxhclNlbGVjdGlvbixcclxuXHRjcm9zc2hhaXJDdXJzb3IsXHJcblx0bGluZU51bWJlcnMsXHJcblx0aGlnaGxpZ2h0QWN0aXZlTGluZUd1dHRlcixcclxuXHRwbGFjZWhvbGRlcixcclxufSBmcm9tICdAY29kZW1pcnJvci92aWV3JztcclxuaW1wb3J0IHsgZGVmYXVsdEhpZ2hsaWdodFN0eWxlLCBzeW50YXhIaWdobGlnaHRpbmcsIGluZGVudE9uSW5wdXQsIGJyYWNrZXRNYXRjaGluZywgZm9sZEd1dHRlciwgZm9sZEtleW1hcCB9IGZyb20gJ0Bjb2RlbWlycm9yL2xhbmd1YWdlJztcclxuaW1wb3J0IHsgZGVmYXVsdEtleW1hcCwgaGlzdG9yeSwgaGlzdG9yeUtleW1hcCB9IGZyb20gJ0Bjb2RlbWlycm9yL2NvbW1hbmRzJztcclxuaW1wb3J0IHsgc2VhcmNoS2V5bWFwLCBoaWdobGlnaHRTZWxlY3Rpb25NYXRjaGVzIH0gZnJvbSAnQGNvZGVtaXJyb3Ivc2VhcmNoJztcclxuaW1wb3J0IHsgYXV0b2NvbXBsZXRpb24sIGNvbXBsZXRpb25LZXltYXAsIGNsb3NlQnJhY2tldHMsIGNsb3NlQnJhY2tldHNLZXltYXAgfSBmcm9tICdAY29kZW1pcnJvci9hdXRvY29tcGxldGUnO1xyXG5pbXBvcnQgeyBBY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZS9hY3Rpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IGxpbnRLZXltYXAgfSBmcm9tICdAY29kZW1pcnJvci9saW50JztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ29kZU1pcnJvclByb3BzIGV4dGVuZHMgRmllbGRQcm9wcyB7XHJcblx0bGFuZ3VhZ2U/OiAnaHRtbCcgfCAnamF2YXNjcmlwdCcgfCAnanNvbic7XHJcblx0bWF4SGVpZ2h0Pzogc3RyaW5nO1xyXG5cdG1pbkhlaWdodD86IHN0cmluZztcclxuXHRwbGFjZWhvbGRlcj86IHN0cmluZztcclxuXHR0ZW1wbGF0ZXM/OiBzdHJpbmdbXTtcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcblx0c2VsZWN0b3I6ICdmb3JtLWNvZGVtaXJyb3InLFxyXG5cdHN0YW5kYWxvbmU6IHRydWUsXHJcblx0aW1wb3J0czogW1JlYWN0aXZlRm9ybXNNb2R1bGVdLFxyXG5cdHRlbXBsYXRlOiBgPGRpdiAjY29kZUNvbnRhaW5lcj48L2Rpdj5gLFxyXG5cdHN0eWxlVXJsOiAnLi4vLi4vc3R5bGVzL3N0eWxlcy5zY3NzJyxcclxufSlcclxuZXhwb3J0IGNsYXNzIENvZGVNaXJyb3JDb21wb25lbnQge1xyXG5cdEBWaWV3Q2hpbGQoJ2NvZGVDb250YWluZXInLCB7IHN0YXRpYzogZmFsc2UgfSkgY29kZUNvbnRhaW5lciE6IEVsZW1lbnRSZWY7XHJcblx0Y21FZGl0b3IhOiBFbGVtZW50UmVmO1xyXG5cdGZpZWxkID0gaW5wdXQ8Rm9ybUZpZWxkPigpO1xyXG5cdHByb3BzOiBDb2RlTWlycm9yUHJvcHMgPSB7fTtcclxuXHRlZGl0b3JWaWV3ITogRWRpdG9yVmlldztcclxuXHR0ZW1wbGF0ZUluZGV4ID0gMDtcclxuXHJcblx0Y29uc3RydWN0b3IoXHJcblx0XHRwcml2YXRlIGFjdGlvbjogQWN0aW9uU2VydmljZSxcclxuXHRcdHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcclxuXHQpIHtcclxuXHRcdGVmZmVjdCgoKSA9PiB7XHJcblx0XHRcdGlmICh0aGlzLmZpZWxkKCkpIHtcclxuXHRcdFx0XHR0aGlzLnByb3BzID0gdGhpcy5maWVsZCgpIS5jb2RlTWlycm9yUHJvcHMhO1xyXG5cdFx0XHRcdHRoaXMuaGFuZGxlTW9kZWxDaGFuZ2UoKTtcclxuXHRcdFx0XHR0aGlzLmhhbmRsZUV4dGVuc2lvbnMoKTtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0XHRlZmZlY3QoKCkgPT4ge1xyXG5cdFx0XHRjb25zdCBsYWJlbEFjdGlvbiA9IHRoaXMuYWN0aW9uLmdldEZpZWxkTGFiZWxBY3Rpb24oKTtcclxuXHRcdFx0aWYgKCFsYWJlbEFjdGlvbiB8fCBsYWJlbEFjdGlvbj8ua2V5ICE9IHRoaXMuZmllbGQoKT8udXVpZCkge1xyXG5cdFx0XHRcdHJldHVybjtcclxuXHRcdFx0fVxyXG5cdFx0XHRpZiAobGFiZWxBY3Rpb24udHlwZSA9PSAnbW91c2VlbnRlcicpIHtcclxuXHRcdFx0XHR0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuY21FZGl0b3IsICduZy1ob3ZlcmVkJyk7XHJcblx0XHRcdH0gZWxzZSBpZiAobGFiZWxBY3Rpb24udHlwZSA9PSAnbW91c2VsZWF2ZScpIHtcclxuXHRcdFx0XHR0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKHRoaXMuY21FZGl0b3IsICduZy1ob3ZlcmVkJyk7XHJcblx0XHRcdH0gZWxzZSBpZiAobGFiZWxBY3Rpb24udHlwZSA9PSAnY2xpY2snKSB7XHJcblx0XHRcdFx0dGhpcy5lZGl0b3JWaWV3LmZvY3VzKCk7XHJcblx0XHRcdH0gZWxzZSBpZiAobGFiZWxBY3Rpb24udHlwZSA9PSAnZGJsY2xpY2snKSB7XHJcblx0XHRcdFx0aWYgKCF0aGlzLnByb3BzLnRlbXBsYXRlcyB8fCAhdGhpcy5wcm9wcy50ZW1wbGF0ZXMubGVuZ3RoKSByZXR1cm47XHJcblx0XHRcdFx0dGhpcy5maWVsZCgpPy5maWVsZENvbnRyb2w/LnNldFZhbHVlKFxyXG5cdFx0XHRcdFx0dGhpcy5wcm9wcy50ZW1wbGF0ZXNbXHJcblx0XHRcdFx0XHRcdCgodGhpcy50ZW1wbGF0ZUluZGV4ICUgdGhpcy5wcm9wcy50ZW1wbGF0ZXMubGVuZ3RoKSArIHRoaXMucHJvcHMudGVtcGxhdGVzLmxlbmd0aCkgJSB0aGlzLnByb3BzLnRlbXBsYXRlcy5sZW5ndGhcclxuXHRcdFx0XHRcdF0sXHJcblx0XHRcdFx0XHR7IGVtaXRFdmVudDogdHJ1ZSB9LFxyXG5cdFx0XHRcdFx0dHJ1ZSxcclxuXHRcdFx0XHQpO1xyXG5cdFx0XHRcdHRoaXMudGVtcGxhdGVJbmRleCsrO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuXHRcdHRoaXMuZWRpdG9yVmlldyA9IG5ldyBFZGl0b3JWaWV3KHtcclxuXHRcdFx0c3RhdGU6IEVkaXRvclN0YXRlLmNyZWF0ZSh7XHJcblx0XHRcdFx0ZG9jOiB0aGlzLmZpZWxkKCk/LmZpZWxkQ29udHJvbD8udmFsdWUsXHJcblx0XHRcdH0pLFxyXG5cdFx0XHRwYXJlbnQ6IHRoaXMuY29kZUNvbnRhaW5lci5uYXRpdmVFbGVtZW50LFxyXG5cdFx0fSk7XHJcblx0XHR0aGlzLmNtRWRpdG9yID0gdGhpcy5jb2RlQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLmNtLWVkaXRvcicpO1xyXG5cdH1cclxuXHJcblx0bmdPbkRlc3Ryb3koKSB7XHJcblx0XHR0aGlzLmVkaXRvclZpZXcuZGVzdHJveSgpO1xyXG5cdH1cclxuXHJcblx0aGFuZGxlRXh0ZW5zaW9ucygpIHtcclxuXHRcdGNvbnN0IGV4dGVuZHNpb25zID0gW1xyXG5cdFx0XHRsaW5lTnVtYmVycygpLFxyXG5cdFx0XHRmb2xkR3V0dGVyKCksXHJcblx0XHRcdGhpZ2hsaWdodFNwZWNpYWxDaGFycygpLFxyXG5cdFx0XHRoaXN0b3J5KCksXHJcblx0XHRcdGRyYXdTZWxlY3Rpb24oKSxcclxuXHRcdFx0ZHJvcEN1cnNvcigpLFxyXG5cdFx0XHRFZGl0b3JTdGF0ZS5hbGxvd011bHRpcGxlU2VsZWN0aW9ucy5vZih0cnVlKSxcclxuXHRcdFx0aW5kZW50T25JbnB1dCgpLFxyXG5cdFx0XHRzeW50YXhIaWdobGlnaHRpbmcoZGVmYXVsdEhpZ2hsaWdodFN0eWxlKSxcclxuXHRcdFx0YnJhY2tldE1hdGNoaW5nKCksXHJcblx0XHRcdGNsb3NlQnJhY2tldHMoKSxcclxuXHRcdFx0YXV0b2NvbXBsZXRpb24oKSxcclxuXHRcdFx0cmVjdGFuZ3VsYXJTZWxlY3Rpb24oKSxcclxuXHRcdFx0Y3Jvc3NoYWlyQ3Vyc29yKCksXHJcblx0XHRcdGhpZ2hsaWdodEFjdGl2ZUxpbmVHdXR0ZXIoKSxcclxuXHRcdFx0aGlnaGxpZ2h0U2VsZWN0aW9uTWF0Y2hlcygpLFxyXG5cdFx0XHRrZXltYXAub2YoW1xyXG5cdFx0XHRcdC4uLmNsb3NlQnJhY2tldHNLZXltYXAsXHJcblx0XHRcdFx0Li4uZGVmYXVsdEtleW1hcCxcclxuXHRcdFx0XHQuLi5zZWFyY2hLZXltYXAsXHJcblx0XHRcdFx0Li4uaGlzdG9yeUtleW1hcCxcclxuXHRcdFx0XHQuLi5mb2xkS2V5bWFwLFxyXG5cdFx0XHRcdC4uLmNvbXBsZXRpb25LZXltYXAsXHJcblx0XHRcdFx0Li4ubGludEtleW1hcCxcclxuXHRcdFx0XSksXHJcblx0XHRcdEVkaXRvclZpZXcudGhlbWUoe1xyXG5cdFx0XHRcdCcuY20tZ3V0dGVycyc6IHtcclxuXHRcdFx0XHRcdGJhY2tncm91bmRDb2xvcjogJ3RyYW5zcGFyZW50JyxcclxuXHRcdFx0XHRcdGJvcmRlcjogJ25vbmUnLFxyXG5cdFx0XHRcdH0sXHJcblx0XHRcdFx0Jy5jbS1hY3RpdmVMaW5lR3V0dGVyJzoge1xyXG5cdFx0XHRcdFx0YmFja2dyb3VuZENvbG9yOiAndHJhbnNwYXJlbnQnLFxyXG5cdFx0XHRcdH0sXHJcblx0XHRcdFx0JyYnOiB7IG1pbkhlaWdodDogdGhpcy5wcm9wcy5taW5IZWlnaHQgPz8gJzg4cHgnLCBtYXhIZWlnaHQ6IHRoaXMucHJvcHMubWF4SGVpZ2h0IHx8ICcxNTBweCcgfSxcclxuXHRcdFx0XHQnLmNtLXNjcm9sbGVyJzogeyBvdmVyZmxvdzogJ2F1dG8nLCBtaW5IZWlnaHQ6IHRoaXMucHJvcHMubWluSGVpZ2h0ID8/ICc4OHB4JyB9LFxyXG5cdFx0XHR9KSxcclxuXHRcdFx0dGhpcy5nZXRMYW5ndWFnZUV4dGVuc2lvbigpLFxyXG5cdFx0XHRFZGl0b3JWaWV3LnVwZGF0ZUxpc3RlbmVyLm9mKCh1cGRhdGUpID0+IHtcclxuXHRcdFx0XHQvLyBpZiAodXBkYXRlLnRyYW5zYWN0aW9ucy5zb21lKCh0cikgPT4gdHIuaXNVc2VyRXZlbnQoJ2lucHV0JykpKSB7XHR9XHJcblx0XHRcdFx0aWYgKHVwZGF0ZS5kb2NDaGFuZ2VkKSB7XHJcblx0XHRcdFx0XHR0aGlzLmZpZWxkKCk/LmZpZWxkQ29udHJvbD8uc2V0VmFsdWUodXBkYXRlLnN0YXRlLmRvYy50b1N0cmluZygpKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0pLFxyXG5cdFx0XTtcclxuXHRcdGlmICh0aGlzLnByb3BzLnBsYWNlaG9sZGVyKSB7XHJcblx0XHRcdGV4dGVuZHNpb25zLnVuc2hpZnQocGxhY2Vob2xkZXIodGhpcy5wcm9wcy5wbGFjZWhvbGRlcikpO1xyXG5cdFx0fVxyXG5cdFx0aWYgKHRoaXMucHJvcHMuZGlzYWJsZWQpIHtcclxuXHRcdFx0ZXh0ZW5kc2lvbnMucHVzaChFZGl0b3JWaWV3LmVkaXRhYmxlLm9mKGZhbHNlKSk7XHJcblx0XHR9XHJcblx0XHR0aGlzLmVkaXRvclZpZXcuZGlzcGF0Y2goe1xyXG5cdFx0XHRlZmZlY3RzOiBTdGF0ZUVmZmVjdC5yZWNvbmZpZ3VyZS5vZihleHRlbmRzaW9ucyksXHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdGhhbmRsZU1vZGVsQ2hhbmdlKCkge1xyXG5cdFx0dGhpcy5maWVsZCgpPy5maWVsZENvbnRyb2w/Lm1vZGVsQ2hhbmdlLnN1YnNjcmliZSgodmFsdWUpID0+IHtcclxuXHRcdFx0aWYgKCF0aGlzLmVkaXRvclZpZXcuc3RhdGUuZG9jLmxlbmd0aCAmJiB2YWx1ZSA9PSBudWxsKSB7XHJcblx0XHRcdFx0cmV0dXJuO1xyXG5cdFx0XHR9XHJcblx0XHRcdGNvbnN0IHRyYW5zYWN0aW9uID0gdGhpcy5lZGl0b3JWaWV3LnN0YXRlLnVwZGF0ZSh7XHJcblx0XHRcdFx0Y2hhbmdlczogeyBmcm9tOiAwLCB0bzogdGhpcy5lZGl0b3JWaWV3LnN0YXRlLmRvYy5sZW5ndGgsIGluc2VydDogdmFsdWUgfSxcclxuXHRcdFx0fSk7XHJcblx0XHRcdHRoaXMuZWRpdG9yVmlldy5kaXNwYXRjaCh0cmFuc2FjdGlvbik7XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdGdldExhbmd1YWdlRXh0ZW5zaW9uKCkge1xyXG5cdFx0c3dpdGNoICh0aGlzLnByb3BzLmxhbmd1YWdlKSB7XHJcblx0XHRcdGNhc2UgJ2h0bWwnOlxyXG5cdFx0XHRcdHJldHVybiBodG1sKCk7XHJcblx0XHRcdGNhc2UgJ2phdmFzY3JpcHQnOlxyXG5cdFx0XHRcdHJldHVybiBqYXZhc2NyaXB0KCk7XHJcblx0XHRcdGNhc2UgJ2pzb24nOlxyXG5cdFx0XHRcdHJldHVybiBqc29uKCk7XHJcblx0XHRcdGRlZmF1bHQ6XHJcblx0XHRcdFx0cmV0dXJuIGphdmFzY3JpcHQoKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdG1pbkxpbmVzKG1pbjogbnVtYmVyKSB7XHJcblx0XHRyZXR1cm4gRWRpdG9yVmlldy51cGRhdGVMaXN0ZW5lci5vZigodikgPT4ge1xyXG5cdFx0XHRjb25zdCBkb2MgPSB2LnN0YXRlLmRvYztcclxuXHRcdFx0Y29uc3QgbGluZUNvdW50ID0gZG9jLmxpbmVzO1xyXG5cdFx0XHRpZiAobGluZUNvdW50IDwgbWluKSB7XHJcblx0XHRcdFx0Y29uc3QgbmV3TGluZXMgPSBBcnJheShtaW4gKyAxIC0gbGluZUNvdW50KVxyXG5cdFx0XHRcdFx0LmZpbGwoJycpXHJcblx0XHRcdFx0XHQuam9pbignXFxuJyk7XHJcblx0XHRcdFx0Y29uc3QgdHJhbnNhY3Rpb24gPSB2LnN0YXRlLnVwZGF0ZSh7XHJcblx0XHRcdFx0XHRjaGFuZ2VzOiB7IGZyb206IGRvYy5sZW5ndGgsIGluc2VydDogbmV3TGluZXMgfSxcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0XHR2LnZpZXcuZGlzcGF0Y2godHJhbnNhY3Rpb24pO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHR9XHJcbn1cclxuIl19
|