@acorex/components 7.8.1 → 7.8.3
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/common/lib/classes/datasource.class.d.ts +2 -2
- package/esm2022/button/lib/button.component.mjs +2 -2
- package/esm2022/common/lib/classes/datasource.class.mjs +13 -12
- package/esm2022/common/lib/components/selection-base.component.class.mjs +3 -2
- package/esm2022/common/lib/components/value-component.class.mjs +2 -3
- package/esm2022/dropdown/lib/dropdown-box.component.mjs +2 -1
- package/esm2022/list/lib/list.component.mjs +14 -11
- package/esm2022/list/lib/list.module.mjs +4 -3
- package/esm2022/otp/lib/otp.component.mjs +2 -2
- package/esm2022/popover/lib/popover.component.mjs +6 -3
- package/esm2022/progress-bar/lib/progress-bar.component.mjs +2 -2
- package/esm2022/range-slider/lib/range-slider.component.mjs +4 -4
- package/esm2022/select-box/lib/select-box.component.mjs +11 -8
- package/esm2022/tabs/lib/tabs.component.mjs +2 -2
- package/fesm2022/acorex-components-button.mjs +2 -2
- package/fesm2022/acorex-components-button.mjs.map +1 -1
- package/fesm2022/acorex-components-common.mjs +15 -15
- package/fesm2022/acorex-components-common.mjs.map +1 -1
- package/fesm2022/acorex-components-dropdown.mjs +1 -0
- package/fesm2022/acorex-components-dropdown.mjs.map +1 -1
- package/fesm2022/acorex-components-list.mjs +16 -12
- package/fesm2022/acorex-components-list.mjs.map +1 -1
- package/fesm2022/acorex-components-otp.mjs +2 -2
- package/fesm2022/acorex-components-otp.mjs.map +1 -1
- package/fesm2022/acorex-components-popover.mjs +5 -2
- package/fesm2022/acorex-components-popover.mjs.map +1 -1
- package/fesm2022/acorex-components-progress-bar.mjs +2 -2
- package/fesm2022/acorex-components-progress-bar.mjs.map +1 -1
- package/fesm2022/acorex-components-range-slider.mjs +3 -3
- package/fesm2022/acorex-components-range-slider.mjs.map +1 -1
- package/fesm2022/acorex-components-select-box.mjs +10 -8
- package/fesm2022/acorex-components-select-box.mjs.map +1 -1
- package/fesm2022/acorex-components-tabs.mjs +2 -2
- package/fesm2022/acorex-components-tabs.mjs.map +1 -1
- package/list/lib/list.component.d.ts +1 -2
- package/list/lib/list.module.d.ts +2 -1
- package/package.json +1 -7
- package/select-box/lib/select-box.component.d.ts +1 -1
- package/esm2022/mixin/acorex-components-mixin.mjs +0 -5
- package/esm2022/mixin/index.mjs +0 -17
- package/esm2022/mixin/lib/base-components.class.mjs +0 -110
- package/esm2022/mixin/lib/base-menu-mixin.class.mjs +0 -137
- package/esm2022/mixin/lib/button-mixin.class.mjs +0 -66
- package/esm2022/mixin/lib/clickable-mixin.class.mjs +0 -24
- package/esm2022/mixin/lib/color-look-mixing.class.mjs +0 -43
- package/esm2022/mixin/lib/constratctor.mjs +0 -2
- package/esm2022/mixin/lib/datalist-component.class.mjs +0 -155
- package/esm2022/mixin/lib/datalist.class.mjs +0 -46
- package/esm2022/mixin/lib/dropdown-mixin.class.mjs +0 -95
- package/esm2022/mixin/lib/interactive-mixin.class.mjs +0 -84
- package/esm2022/mixin/lib/mixin.class.mjs +0 -26
- package/esm2022/mixin/lib/page-component.class.mjs +0 -11
- package/esm2022/mixin/lib/selection-component.class.mjs +0 -180
- package/esm2022/mixin/lib/sizable-mixin.class.mjs +0 -16
- package/esm2022/mixin/lib/textbox-mixin.class.mjs +0 -67
- package/esm2022/mixin/lib/value-mixin.class.mjs +0 -227
- package/fesm2022/acorex-components-mixin.mjs +0 -1268
- package/fesm2022/acorex-components-mixin.mjs.map +0 -1
- package/mixin/README.md +0 -3
- package/mixin/index.d.ts +0 -16
- package/mixin/lib/base-components.class.d.ts +0 -84
- package/mixin/lib/base-menu-mixin.class.d.ts +0 -53
- package/mixin/lib/button-mixin.class.d.ts +0 -53
- package/mixin/lib/clickable-mixin.class.d.ts +0 -36
- package/mixin/lib/color-look-mixing.class.d.ts +0 -42
- package/mixin/lib/constratctor.d.ts +0 -4
- package/mixin/lib/datalist-component.class.d.ts +0 -59
- package/mixin/lib/datalist.class.d.ts +0 -49
- package/mixin/lib/dropdown-mixin.class.d.ts +0 -47
- package/mixin/lib/interactive-mixin.class.d.ts +0 -63
- package/mixin/lib/mixin.class.d.ts +0 -680
- package/mixin/lib/page-component.class.d.ts +0 -28
- package/mixin/lib/selection-component.class.d.ts +0 -61
- package/mixin/lib/sizable-mixin.class.d.ts +0 -34
- package/mixin/lib/textbox-mixin.class.d.ts +0 -66
- package/mixin/lib/value-mixin.class.d.ts +0 -64
@@ -1,11 +0,0 @@
|
|
1
|
-
export function _PageComponenetMixin(Base) {
|
2
|
-
return class extends Base {
|
3
|
-
/**
|
4
|
-
* @ignore
|
5
|
-
*/
|
6
|
-
constructor(...args) {
|
7
|
-
super(...args.slice(0, 2));
|
8
|
-
}
|
9
|
-
};
|
10
|
-
}
|
11
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS1jb21wb25lbnQuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvbWl4aW4vc3JjL2xpYi9wYWdlLWNvbXBvbmVudC5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxNQUFNLFVBQVUsb0JBQW9CLENBQTZDLElBQVc7SUFDMUYsT0FBTyxLQUFNLFNBQVEsSUFBSTtRQUN2Qjs7V0FFRztRQUNILFlBQVksR0FBRyxJQUFXO1lBQ3hCLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDN0IsQ0FBQztLQUNGLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi9iYXNlLWNvbXBvbmVudHMuY2xhc3MnO1xuaW1wb3J0IHsgQ29uc3RydWN0b3IgfSBmcm9tICcuL2NvbnN0cmF0Y3Rvcic7XG5cbmV4cG9ydCBmdW5jdGlvbiBfUGFnZUNvbXBvbmVuZXRNaXhpbjxUQmFzZSBleHRlbmRzIENvbnN0cnVjdG9yPEFYQmFzZUNvbXBvbmVudD4+KEJhc2U6IFRCYXNlKSB7XG4gIHJldHVybiBjbGFzcyBleHRlbmRzIEJhc2Uge1xuICAgIC8qKlxuICAgICAqICBAaWdub3JlXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoLi4uYXJnczogYW55W10pIHtcbiAgICAgIHN1cGVyKC4uLmFyZ3Muc2xpY2UoMCwgMikpO1xuICAgIH1cbiAgfTtcbn1cbiJdfQ==
|
@@ -1,180 +0,0 @@
|
|
1
|
-
import { coerceBooleanProperty } from '@angular/cdk/coercion';
|
2
|
-
import { EventEmitter } from '@angular/core';
|
3
|
-
import { clone } from 'lodash-es';
|
4
|
-
export function _SelectionComponenetMixin(Base) {
|
5
|
-
return class extends Base {
|
6
|
-
/**
|
7
|
-
* Defines the primary text to show inside the button.
|
8
|
-
*/
|
9
|
-
get items() {
|
10
|
-
return [];
|
11
|
-
}
|
12
|
-
get displayItems() {
|
13
|
-
return [];
|
14
|
-
}
|
15
|
-
get flatItems() {
|
16
|
-
return [];
|
17
|
-
}
|
18
|
-
constructor(...args) {
|
19
|
-
super(...args);
|
20
|
-
this.valueField = 'id';
|
21
|
-
this.textField = 'text';
|
22
|
-
this.disabledField = 'disabled';
|
23
|
-
this.multiple = false;
|
24
|
-
this.selectionMode = 'value';
|
25
|
-
this.valueChange = new EventEmitter();
|
26
|
-
this.onValueChanged = new EventEmitter();
|
27
|
-
}
|
28
|
-
_onInternalInit() {
|
29
|
-
super._onInternalInit();
|
30
|
-
}
|
31
|
-
get value() {
|
32
|
-
return this._value;
|
33
|
-
}
|
34
|
-
set value(v) {
|
35
|
-
v = this._internalSetValue(v);
|
36
|
-
if (v !== this._value) {
|
37
|
-
const oldValue = clone(this._value);
|
38
|
-
if (this.multiple) {
|
39
|
-
this._value = Array.isArray(v) ? v : v ? [v] : [];
|
40
|
-
}
|
41
|
-
else {
|
42
|
-
this._value = Array.isArray(v) ? v[0] : v;
|
43
|
-
}
|
44
|
-
this._renderSelection();
|
45
|
-
this.valueChange.emit(this._value);
|
46
|
-
this.onValueChanged.emit({
|
47
|
-
component: this,
|
48
|
-
htmlElement: this._getHostElement(),
|
49
|
-
isUserInteraction: false,
|
50
|
-
oldValue,
|
51
|
-
value: this._value,
|
52
|
-
selectedKeys: this.selectedItems.map((c) => c[this.valueField]),
|
53
|
-
selectedItems: this.selectedItems.slice(),
|
54
|
-
});
|
55
|
-
if (v == null || v == undefined || v == '') {
|
56
|
-
this._setState('clear');
|
57
|
-
}
|
58
|
-
else {
|
59
|
-
if (this._isInited) {
|
60
|
-
this.validate();
|
61
|
-
}
|
62
|
-
}
|
63
|
-
}
|
64
|
-
}
|
65
|
-
get selectedItems() {
|
66
|
-
return this._selectedItems || [];
|
67
|
-
}
|
68
|
-
_renderSelection() {
|
69
|
-
const func = () => {
|
70
|
-
if (this.value == null || this.value == undefined) {
|
71
|
-
return [];
|
72
|
-
}
|
73
|
-
const items = this.flatItems;
|
74
|
-
if (items.length > 0) {
|
75
|
-
return items.filter((i) => {
|
76
|
-
if (Array.isArray(this.value)) {
|
77
|
-
return this.value.some((ii) => {
|
78
|
-
if (typeof ii === 'object') {
|
79
|
-
return i[this.valueField] === ii[this.valueField];
|
80
|
-
}
|
81
|
-
else {
|
82
|
-
return i[this.valueField] === ii;
|
83
|
-
}
|
84
|
-
});
|
85
|
-
}
|
86
|
-
else {
|
87
|
-
if (typeof this.value === 'object') {
|
88
|
-
return i[this.valueField] === this.value[this.valueField];
|
89
|
-
}
|
90
|
-
else {
|
91
|
-
return i[this.valueField] === this.value;
|
92
|
-
}
|
93
|
-
}
|
94
|
-
});
|
95
|
-
}
|
96
|
-
if (Array.isArray(this.value)) {
|
97
|
-
return this.value.map((ii) => {
|
98
|
-
if (typeof ii === 'object') {
|
99
|
-
return ii;
|
100
|
-
}
|
101
|
-
else {
|
102
|
-
const fake = {};
|
103
|
-
fake[this.valueField] = this.value;
|
104
|
-
fake[this.textField] = this.value;
|
105
|
-
return fake;
|
106
|
-
}
|
107
|
-
});
|
108
|
-
}
|
109
|
-
else {
|
110
|
-
if (typeof this.value === 'object') {
|
111
|
-
return [this.value];
|
112
|
-
}
|
113
|
-
else {
|
114
|
-
const fake = {};
|
115
|
-
fake[this.valueField] = this.value;
|
116
|
-
fake[this.textField] = this.value;
|
117
|
-
return [fake];
|
118
|
-
}
|
119
|
-
}
|
120
|
-
};
|
121
|
-
this._selectedItems = func();
|
122
|
-
}
|
123
|
-
_getItemByDataMode(item) {
|
124
|
-
return this.selectionMode === 'item' ? item : item[this.valueField];
|
125
|
-
}
|
126
|
-
_getItemValue(item) {
|
127
|
-
return typeof item === 'object' ? item[this.valueField] : item;
|
128
|
-
}
|
129
|
-
unselectItems(...items) {
|
130
|
-
if (!items || items.length === 0) {
|
131
|
-
this.value = null;
|
132
|
-
}
|
133
|
-
else if (Array.isArray(this.value)) {
|
134
|
-
this.value = this.value.filter((c) => !items.some((d) => this._getItemValue(c) === this._getItemValue(d)));
|
135
|
-
}
|
136
|
-
else {
|
137
|
-
this.value = null;
|
138
|
-
}
|
139
|
-
}
|
140
|
-
selectItems(...items) {
|
141
|
-
if (items && items.length) {
|
142
|
-
if (this.multiple) {
|
143
|
-
this.value = (this.value || []).concat(items.map((c) => this._getItemByDataMode(c)));
|
144
|
-
}
|
145
|
-
else {
|
146
|
-
this.value = this._getItemByDataMode(items[0]);
|
147
|
-
}
|
148
|
-
}
|
149
|
-
}
|
150
|
-
toggleSelect(...items) {
|
151
|
-
if (items && items.length) {
|
152
|
-
items.forEach((item) => {
|
153
|
-
if (this.multiple) {
|
154
|
-
this.isItemSelected(item) ? this.unselectItems(item) : this.selectItems(item);
|
155
|
-
}
|
156
|
-
else {
|
157
|
-
this.selectItems(item);
|
158
|
-
}
|
159
|
-
});
|
160
|
-
}
|
161
|
-
}
|
162
|
-
isItemSelected(item) {
|
163
|
-
return this.selectedItems.some((c) => c[this.valueField] === item[this.valueField]);
|
164
|
-
}
|
165
|
-
isItemDisabled(item) {
|
166
|
-
return (coerceBooleanProperty(item[this.disabledField]) === true ||
|
167
|
-
(this.disabledCallback ? this.disabledCallback({ item, index: -1 }) : false));
|
168
|
-
}
|
169
|
-
};
|
170
|
-
}
|
171
|
-
export const SELECTION_INPUTS = [
|
172
|
-
'valueField',
|
173
|
-
'textField',
|
174
|
-
'disabledField',
|
175
|
-
'disabledCallback',
|
176
|
-
'multiple',
|
177
|
-
'selectionMode',
|
178
|
-
];
|
179
|
-
export const SELECTION_OUTPUT = ['onValueChanged', 'valueChanged'];
|
180
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLWNvbXBvbmVudC5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9taXhpbi9zcmMvbGliL3NlbGVjdGlvbi1jb21wb25lbnQuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3QyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBSWxDLE1BQU0sVUFBVSx5QkFBeUIsQ0FBNkMsSUFBVztJQUMvRixPQUFPLEtBQU0sU0FBUSxJQUFJO1FBUXZCOztXQUVHO1FBQ0gsSUFBSSxLQUFLO1lBQ1AsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDO1FBRUQsSUFBSSxZQUFZO1lBQ2QsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDO1FBRUQsSUFBSSxTQUFTO1lBQ1gsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDO1FBTUQsWUFBWSxHQUFHLElBQVc7WUFDeEIsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7WUEzQmpCLGVBQVUsR0FBVyxJQUFJLENBQUM7WUFDMUIsY0FBUyxHQUFXLE1BQU0sQ0FBQztZQUMzQixrQkFBYSxHQUFXLFVBQVUsQ0FBQztZQUVuQyxhQUFRLEdBQVksS0FBSyxDQUFDO1lBQzFCLGtCQUFhLEdBQXFCLE9BQU8sQ0FBQztZQWlCbkMsZ0JBQVcsR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztZQUN6RCxtQkFBYyxHQUNuQixJQUFJLFlBQVksRUFBZ0MsQ0FBQztRQUluRCxDQUFDO1FBRVEsZUFBZTtZQUN0QixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDMUIsQ0FBQztRQUdELElBQUksS0FBSztZQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUNyQixDQUFD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QUM7UUFDdEYsQ0FBQztRQUVELGNBQWMsQ0FBQyxJQUFTO1lBQ3RCLE9BQU8sQ0FDTCxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLEtBQUssSUFBSTtnQkFDeEQsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FDN0UsQ0FBQztRQUNKLENBQUM7S0FDRixDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHO0lBQzlCLFlBQVk7SUFDWixXQUFXO0lBQ1gsZUFBZTtJQUNmLGtCQUFrQjtJQUNsQixVQUFVO0lBQ1YsZUFBZTtDQUNoQixDQUFDO0FBQ0YsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxjQUFjLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYU2VsZWN0aW9uVmFsdWVDaGFuZ2VkRXZlbnQgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvY29tbW9uJztcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQgeyBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNsb25lIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IEFYQmFzZUNvbXBvbmVudCB9IGZyb20gJy4vYmFzZS1jb21wb25lbnRzLmNsYXNzJztcbmltcG9ydCB7IENvbnN0cnVjdG9yIH0gZnJvbSAnLi9jb25zdHJhdGN0b3InO1xuXG5leHBvcnQgZnVuY3Rpb24gX1NlbGVjdGlvbkNvbXBvbmVuZXRNaXhpbjxUQmFzZSBleHRlbmRzIENvbnN0cnVjdG9yPEFYQmFzZUNvbXBvbmVudD4+KEJhc2U6IFRCYXNlKSB7XG4gIHJldHVybiBjbGFzcyBleHRlbmRzIEJhc2Uge1xuICAgIHZhbHVlRmllbGQ6IHN0cmluZyA9ICdpZCc7XG4gICAgdGV4dEZpZWxkOiBzdHJpbmcgPSAndGV4dCc7XG4gICAgZGlzYWJsZWRGaWVsZDogc3RyaW5nID0gJ2Rpc2FibGVkJztcbiAgICBkaXNhYmxlZENhbGxiYWNrOiAoZTogeyBpdGVtOiBhbnk7IGluZGV4OiBudW1iZXIgfSkgPT4gYm9vbGVhbjtcbiAgICBtdWx0aXBsZTogYm9vbGVhbiA9IGZhbHNlO1xuICAgIHNlbGVjdGlvbk1vZGU6ICd2YWx1ZScgfCAnaXRlbScgPSAndmFsdWUnO1xuXG4gICAgLyoqXG4gICAgICogIERlZmluZXMgdGhlIHByaW1hcnkgdGV4dCB0byBzaG93IGluc2lkZSB0aGUgYnV0dG9uLlxuICAgICAqL1xuICAgIGdldCBpdGVtcygpOiBhbnlbXSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgZ2V0IGRpc3BsYXlJdGVtcygpOiBhbnlbXSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgZ2V0IGZsYXRJdGVtcygpOiBhbnlbXSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgcHVibGljIHZhbHVlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICAgIHB1YmxpYyBvblZhbHVlQ2hhbmdlZDogRXZlbnRFbWl0dGVyPEFYU2VsZWN0aW9uVmFsdWVDaGFuZ2VkRXZlbnQ+ID1cbiAgICAgIG5ldyBFdmVudEVtaXR0ZXI8QVhTZWxlY3Rpb25WYWx1ZUNoYW5nZWRFdmVudD4oKTtcblxuICAgIGNvbnN0cnVjdG9yKC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgICBzdXBlciguLi5hcmdzKTtcbiAgICB9XG5cbiAgICBvdmVycmlkZSBfb25JbnRlcm5hbEluaXQoKSB7XG4gICAgICBzdXBlci5fb25JbnRlcm5hbEluaXQoKTtcbiAgICB9XG5cbiAgICBfdmFsdWU6IGFueSB8IGFueVtdO1xuICAgIGdldCB2YWx1ZSgpOiBhbnkgfCBhbnlbXSB7XG4gICAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gICAgfVxuICAgIHNldCB2YWx1ZSh2OiBhbnkgfCBhbnlbXSkge1xuICAgICAgdiA9ICh0aGlzIGFzIGFueSkuX2ludGVybmFsU2V0VmFsdWUodik7XG4gICAgICBpZiAodiAhPT0gdGhpcy5fdmFsdWUpIHtcbiAgICAgICAgY29uc3Qgb2xkVmFsdWUgPSBjbG9uZSh0aGlzLl92YWx1ZSk7XG4gICAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgICAgdGhpcy5fdmFsdWUgPSBBcnJheS5pc0FycmF5KHYpID8gdiA6IHYgPyBbdl0gOiBbXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLl92YWx1ZSA9IEFycmF5LmlzQXJyYXkodikgPyB2WzBdIDogdjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9yZW5kZXJTZWxlY3Rpb24oKTtcbiAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHRoaXMuX3ZhbHVlKTtcbiAgICAgICAgdGhpcy5vblZhbHVlQ2hhbmdlZC5lbWl0KHtcbiAgICAgICAgICBjb21wb25lbnQ6IHRoaXMsXG4gICAgICAgICAgaHRtbEVsZW1lbnQ6IHRoaXMuX2dldEhvc3RFbGVtZW50KCksXG4gICAgICAgICAgaXNVc2VySW50ZXJhY3Rpb246IGZhbHNlLFxuICAgICAgICAgIG9sZFZhbHVlLFxuICAgICAgICAgIHZhbHVlOiB0aGlzLl92YWx1ZSxcbiAgICAgICAgICBzZWxlY3RlZEtleXM6IHRoaXMuc2VsZWN0ZWRJdGVtcy5tYXAoKGMpID0+IGNbdGhpcy52YWx1ZUZpZWxkXSksXG4gICAgICAgICAgc2VsZWN0ZWRJdGVtczogdGhpcy5zZWxlY3RlZEl0ZW1zLnNsaWNlKCksXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAodiA9PSBudWxsIHx8IHYgPT0gdW5kZWZpbmVkIHx8IHYgPT0gJycpIHtcbiAgICAgICAgICAodGhpcyBhcyBhbnkpLl9zZXRTdGF0ZSgnY2xlYXInKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAodGhpcy5faXNJbml0ZWQpIHtcbiAgICAgICAgICAgICh0aGlzIGFzIGFueSkudmFsaWRhdGUoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBfc2VsZWN0ZWRJdGVtczogYW55W107XG4gICAgZ2V0IHNlbGVjdGVkSXRlbXMoKTogYW55W10ge1xuICAgICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkSXRlbXMgfHwgW107XG4gICAgfVxuXG4gICAgX3JlbmRlclNlbGVjdGlvbigpIHtcbiAgICAgIGNvbnN0IGZ1bmMgPSAoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLnZhbHVlID09IG51bGwgfHwgdGhpcy52YWx1ZSA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaXRlbXMgPSB0aGlzLmZsYXRJdGVtcztcbiAgICAgICAgaWYgKGl0ZW1zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICByZXR1cm4gaXRlbXMuZmlsdGVyKChpKSA9PiB7XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLnZhbHVlKSkge1xuICAgICAgICAgICAgICByZXR1cm4gdGhpcy52YWx1ZS5zb21lKChpaSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgaWkgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gaVt0aGlzLnZhbHVlRmllbGRdID09PSBpaVt0aGlzLnZhbHVlRmllbGRdO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gaVt0aGlzLnZhbHVlRmllbGRdID09PSBpaTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgICAgIHJldHVybiBpW3RoaXMudmFsdWVGaWVsZF0gPT09IHRoaXMudmFsdWVbdGhpcy52YWx1ZUZpZWxkXTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaVt0aGlzLnZhbHVlRmllbGRdID09PSB0aGlzLnZhbHVlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy52YWx1ZSkpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy52YWx1ZS5tYXAoKGlpKSA9PiB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGlpID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgICByZXR1cm4gaWk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBjb25zdCBmYWtlOiBhbnkgPSB7fTtcbiAgICAgICAgICAgICAgZmFrZVt0aGlzLnZhbHVlRmllbGRdID0gdGhpcy52YWx1ZTtcbiAgICAgICAgICAgICAgZmFrZVt0aGlzLnRleHRGaWVsZF0gPSB0aGlzLnZhbHVlO1xuICAgICAgICAgICAgICByZXR1cm4gZmFrZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAodHlwZW9mIHRoaXMudmFsdWUgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICByZXR1cm4gW3RoaXMudmFsdWVdO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBmYWtlOiBhbnkgPSB7fTtcbiAgICAgICAgICAgIGZha2VbdGhpcy52YWx1ZUZpZWxkXSA9IHRoaXMudmFsdWU7XG4gICAgICAgICAgICBmYWtlW3RoaXMudGV4dEZpZWxkXSA9IHRoaXMudmFsdWU7XG4gICAgICAgICAgICByZXR1cm4gW2Zha2VdO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIHRoaXMuX3NlbGVjdGVkSXRlbXMgPSBmdW5jKCk7XG4gICAgfVxuXG4gICAgX2dldEl0ZW1CeURhdGFNb2RlKGl0ZW06IGFueSkge1xuICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9uTW9kZSA9PT0gJ2l0ZW0nID8gaXRlbSA6IGl0ZW1bdGhpcy52YWx1ZUZpZWxkXTtcbiAgICB9XG5cbiAgICBfZ2V0SXRlbVZhbHVlKGl0ZW06IGFueSkge1xuICAgICAgcmV0dXJuIHR5cGVvZiBpdGVtID09PSAnb2JqZWN0JyA/IGl0ZW1bdGhpcy52YWx1ZUZpZWxkXSA6IGl0ZW07XG4gICAgfVxuXG4gICAgdW5zZWxlY3RJdGVtcyguLi5pdGVtczogYW55W10pIHtcbiAgICAgIGlmICghaXRlbXMgfHwgaXRlbXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHRoaXMudmFsdWUgPSBudWxsO1xuICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHRoaXMudmFsdWUpKSB7XG4gICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLnZhbHVlLmZpbHRlcihcbiAgICAgICAgICAoYykgPT4gIWl0ZW1zLnNvbWUoKGQpID0+IHRoaXMuX2dldEl0ZW1WYWx1ZShjKSA9PT0gdGhpcy5fZ2V0SXRlbVZhbHVlKGQpKSxcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMudmFsdWUgPSBudWxsO1xuICAgICAgfVxuICAgIH1cblxuICAgIHNlbGVjdEl0ZW1zKC4uLml0ZW1zOiBhbnlbXSkge1xuICAgICAgaWYgKGl0ZW1zICYmIGl0ZW1zLmxlbmd0aCkge1xuICAgICAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xuICAgICAgICAgIHRoaXMudmFsdWUgPSAodGhpcy52YWx1ZSB8fCBbXSkuY29uY2F0KGl0ZW1zLm1hcCgoYykgPT4gdGhpcy5fZ2V0SXRlbUJ5RGF0YU1vZGUoYykpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy5fZ2V0SXRlbUJ5RGF0YU1vZGUoaXRlbXNbMF0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgdG9nZ2xlU2VsZWN0KC4uLml0ZW1zOiBhbnlbXSkge1xuICAgICAgaWYgKGl0ZW1zICYmIGl0ZW1zLmxlbmd0aCkge1xuICAgICAgICBpdGVtcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcbiAgICAgICAgICAgIHRoaXMuaXNJdGVtU2VsZWN0ZWQoaXRlbSkgPyB0aGlzLnVuc2VsZWN0SXRlbXMoaXRlbSkgOiB0aGlzLnNlbGVjdEl0ZW1zKGl0ZW0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdEl0ZW1zKGl0ZW0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaXNJdGVtU2VsZWN0ZWQoaXRlbTogYW55KTogYm9vbGVhbiB7XG4gICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZEl0ZW1zLnNvbWUoKGMpID0+IGNbdGhpcy52YWx1ZUZpZWxkXSA9PT0gaXRlbVt0aGlzLnZhbHVlRmllbGRdKTtcbiAgICB9XG5cbiAgICBpc0l0ZW1EaXNhYmxlZChpdGVtOiBhbnkpOiBib29sZWFuIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eShpdGVtW3RoaXMuZGlzYWJsZWRGaWVsZF0pID09PSB0cnVlIHx8XG4gICAgICAgICh0aGlzLmRpc2FibGVkQ2FsbGJhY2sgPyB0aGlzLmRpc2FibGVkQ2FsbGJhY2soeyBpdGVtLCBpbmRleDogLTEgfSkgOiBmYWxzZSlcbiAgICAgICk7XG4gICAgfVxuICB9O1xufVxuXG5leHBvcnQgY29uc3QgU0VMRUNUSU9OX0lOUFVUUyA9IFtcbiAgJ3ZhbHVlRmllbGQnLFxuICAndGV4dEZpZWxkJyxcbiAgJ2Rpc2FibGVkRmllbGQnLFxuICAnZGlzYWJsZWRDYWxsYmFjaycsXG4gICdtdWx0aXBsZScsXG4gICdzZWxlY3Rpb25Nb2RlJyxcbl07XG5leHBvcnQgY29uc3QgU0VMRUNUSU9OX09VVFBVVCA9IFsnb25WYWx1ZUNoYW5nZWQnLCAndmFsdWVDaGFuZ2VkJ107XG4iXX0=
|
@@ -1,16 +0,0 @@
|
|
1
|
-
export function _SizableComponenetMixin(Base) {
|
2
|
-
return class extends Base {
|
3
|
-
/**
|
4
|
-
* @ignore
|
5
|
-
*/
|
6
|
-
constructor(...args) {
|
7
|
-
super(...args.slice(0, 2));
|
8
|
-
}
|
9
|
-
_onInternalInit() {
|
10
|
-
super._onInternalInit();
|
11
|
-
}
|
12
|
-
};
|
13
|
-
}
|
14
|
-
export const SIZABLE_INPUTS = ['size'];
|
15
|
-
export const SIZABLE_OUTPUT = [];
|
16
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2l6YWJsZS1taXhpbi5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9taXhpbi9zcmMvbGliL3NpemFibGUtbWl4aW4uY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsTUFBTSxVQUFVLHVCQUF1QixDQUE2QyxJQUFXO0lBQzdGLE9BQU8sS0FBTSxTQUFRLElBQUk7UUFNdkI7O1dBRUc7UUFDSCxZQUFZLEdBQUcsSUFBVztZQUN4QixLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzdCLENBQUM7UUFFUSxlQUFlO1lBQ3RCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUMxQixDQUFDO0tBQ0YsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN2QyxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhCYXNlQ29tcG9uZW50LCBBWEVsZW1lbnRTaXplIH0gZnJvbSAnLi9iYXNlLWNvbXBvbmVudHMuY2xhc3MnO1xuaW1wb3J0IHsgQ29uc3RydWN0b3IgfSBmcm9tICcuL2NvbnN0cmF0Y3Rvcic7XG5cbmV4cG9ydCBmdW5jdGlvbiBfU2l6YWJsZUNvbXBvbmVuZXRNaXhpbjxUQmFzZSBleHRlbmRzIENvbnN0cnVjdG9yPEFYQmFzZUNvbXBvbmVudD4+KEJhc2U6IFRCYXNlKSB7XG4gIHJldHVybiBjbGFzcyBleHRlbmRzIEJhc2Uge1xuICAgIC8qKlxuICAgICAqICBBIHRva2VuIHRoYXQgc3BlY2lmaWVzIHRoZSBzaXplIG9mIGNvbXBvbmVudC5cbiAgICAgKi9cbiAgICBzaXplOiBBWEVsZW1lbnRTaXplO1xuXG4gICAgLyoqXG4gICAgICogIEBpZ25vcmVcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvciguLi5hcmdzOiBhbnlbXSkge1xuICAgICAgc3VwZXIoLi4uYXJncy5zbGljZSgwLCAyKSk7XG4gICAgfVxuXG4gICAgb3ZlcnJpZGUgX29uSW50ZXJuYWxJbml0KCkge1xuICAgICAgc3VwZXIuX29uSW50ZXJuYWxJbml0KCk7XG4gICAgfVxuICB9O1xufVxuXG5leHBvcnQgY29uc3QgU0laQUJMRV9JTlBVVFMgPSBbJ3NpemUnXTtcbmV4cG9ydCBjb25zdCBTSVpBQkxFX09VVFBVVCA9IFtdO1xuIl19
|
@@ -1,67 +0,0 @@
|
|
1
|
-
import { EventEmitter } from '@angular/core';
|
2
|
-
export function _TextboxComponenetMixin(Base) {
|
3
|
-
return class extends Base {
|
4
|
-
_emitOnKeydownEvent(e) {
|
5
|
-
this.onKeyDown.emit({
|
6
|
-
component: this,
|
7
|
-
nativeEvent: e,
|
8
|
-
});
|
9
|
-
this._setUserInteraction();
|
10
|
-
}
|
11
|
-
_emitOnKeyupEvent(e) {
|
12
|
-
this.onKeyUp.emit({
|
13
|
-
component: this,
|
14
|
-
nativeEvent: e,
|
15
|
-
});
|
16
|
-
this._setUserInteraction();
|
17
|
-
}
|
18
|
-
_emitOnKeypressEvent(e) {
|
19
|
-
this.onKeyPress.emit({
|
20
|
-
component: this,
|
21
|
-
nativeEvent: e,
|
22
|
-
});
|
23
|
-
this._setUserInteraction();
|
24
|
-
}
|
25
|
-
/**
|
26
|
-
* @ignore
|
27
|
-
*/
|
28
|
-
constructor(...args) {
|
29
|
-
super(...args.slice(0, 2));
|
30
|
-
/**
|
31
|
-
* A string value that specifies the type of text box.
|
32
|
-
*/
|
33
|
-
this.type = 'text';
|
34
|
-
/**
|
35
|
-
* A string value that specifies the placeholder of text box.
|
36
|
-
*/
|
37
|
-
this.placeholder = '';
|
38
|
-
/**
|
39
|
-
* Fires each time the user press a key.
|
40
|
-
* @event
|
41
|
-
*/
|
42
|
-
this.onKeyDown = new EventEmitter();
|
43
|
-
/**
|
44
|
-
* Fires each time the user press a key.
|
45
|
-
* @event
|
46
|
-
*/
|
47
|
-
this.onKeyUp = new EventEmitter();
|
48
|
-
/**
|
49
|
-
* Fires each time the user press a key.
|
50
|
-
* @event
|
51
|
-
*/
|
52
|
-
this.onKeyPress = new EventEmitter();
|
53
|
-
}
|
54
|
-
};
|
55
|
-
}
|
56
|
-
export const TEXTBOX_INPUTS = [
|
57
|
-
'placeholder',
|
58
|
-
'maxLength',
|
59
|
-
'allowNull',
|
60
|
-
'type',
|
61
|
-
'autoComplete',
|
62
|
-
'readonly',
|
63
|
-
'value',
|
64
|
-
'name',
|
65
|
-
];
|
66
|
-
export const TEXTBOX_OUTPUT = ['valueChange', 'onValueChanged'];
|
67
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dGJveC1taXhpbi5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9taXhpbi9zcmMvbGliL3RleHRib3gtbWl4aW4uY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUk3QyxNQUFNLFVBQVUsdUJBQXVCLENBQTZDLElBQVc7SUFDN0YsT0FBTyxLQUFNLFNBQVEsSUFBSTtRQXVDdkIsbUJBQW1CLENBQUMsQ0FBZ0I7WUFDbEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUM7Z0JBQ2xCLFNBQVMsRUFBRSxJQUFJO2dCQUNmLFdBQVcsRUFBRSxDQUFDO2FBQ2YsQ0FBQyxDQUFDO1lBQ0YsSUFBWSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDdEMsQ0FBQztRQUVELGlCQUFpQixDQUFDLENBQWdCO1lBQ2hDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO2dCQUNoQixTQUFTLEVBQUUsSUFBSTtnQkFDZixXQUFXLEVBQUUsQ0FBQzthQUNmLENBQUMsQ0FBQztZQUNGLElBQVksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQ3RDLENBQUM7UUFFRCxvQkFBb0IsQ0FBQyxDQUFnQjtZQUNuQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQztnQkFDbkIsU0FBUyxFQUFFLElBQUk7Z0JBQ2YsV0FBVyxFQUFFLENBQUM7YUFDZixDQUFDLENBQUM7WUFDRixJQUFZLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUN0QyxDQUFDO1FBRUQ7O1dBRUc7UUFDSCxZQUFZLEdBQUcsSUFBVztZQUN4QixLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBbEU3Qjs7ZUFFRztZQUNILFNBQUksR0FBRyxNQUFNLENBQUM7WUFFZDs7ZUFFRztZQUNILGdCQUFXLEdBQVcsRUFBRSxDQUFDO1lBWXpCOzs7ZUFHRztZQUNILGNBQVMsR0FBNkMsSUFBSSxZQUFZLEVBQThCLENBQUM7WUFFckc7OztlQUdHO1lBQ0gsWUFBTyxHQUE2QyxJQUFJLFlBQVksRUFBOEIsQ0FBQztZQUVuRzs7O2VBR0c7WUFDSCxlQUFVLEdBQTZDLElBQUksWUFBWSxFQUE4QixDQUFDO1FBK0J0RyxDQUFDO0tBQ0YsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUc7SUFDNUIsYUFBYTtJQUNiLFdBQVc7SUFDWCxXQUFXO0lBQ1gsTUFBTTtJQUNOLGNBQWM7SUFDZCxVQUFVO0lBQ1YsT0FBTztJQUNQLE1BQU07Q0FDUCxDQUFDO0FBQ0YsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLENBQUMsYUFBYSxFQUFFLGdCQUFnQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWEh0bWxFdmVudCB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9jb21tb24nO1xuaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWEJhc2VDb21wb25lbnQgfSBmcm9tICcuL2Jhc2UtY29tcG9uZW50cy5jbGFzcyc7XG5pbXBvcnQgeyBDb25zdHJ1Y3RvciB9IGZyb20gJy4vY29uc3RyYXRjdG9yJztcblxuZXhwb3J0IGZ1bmN0aW9uIF9UZXh0Ym94Q29tcG9uZW5ldE1peGluPFRCYXNlIGV4dGVuZHMgQ29uc3RydWN0b3I8QVhCYXNlQ29tcG9uZW50Pj4oQmFzZTogVEJhc2UpIHtcbiAgcmV0dXJuIGNsYXNzIGV4dGVuZHMgQmFzZSB7XG4gICAgLyoqXG4gICAgICogIEEgc3RyaW5nIHZhbHVlIHRoYXQgc3BlY2lmaWVzIHRoZSB0eXBlIG9mIHRleHQgYm94LlxuICAgICAqL1xuICAgIHR5cGUgPSAndGV4dCc7XG5cbiAgICAvKipcbiAgICAgKiAgQSBzdHJpbmcgdmFsdWUgdGhhdCBzcGVjaWZpZXMgdGhlIHBsYWNlaG9sZGVyIG9mIHRleHQgYm94LlxuICAgICAqL1xuICAgIHBsYWNlaG9sZGVyOiBzdHJpbmcgPSAnJztcblxuICAgIC8qKlxuICAgICAqICBBIG51bWJlciB2YWx1ZSB0aGF0IHNwZWNpZmllcyB0aGUgbWF4aW11bSBjaGFyYWN0ZXJzIG9mIHRleHQgYm94LlxuICAgICAqL1xuICAgIG1heExlbmd0aDogbnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICogIFNwZWNpZmllcyB0aGF0IGF1dG9jb21wbGV0ZSBpcyBvbiBvciBvZmYuXG4gICAgICovXG4gICAgYXV0b0NvbXBsZXRlOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiAgRmlyZXMgZWFjaCB0aW1lIHRoZSB1c2VyIHByZXNzIGEga2V5LlxuICAgICAqICBAZXZlbnRcbiAgICAgKi9cbiAgICBvbktleURvd246IEV2ZW50RW1pdHRlcjxBWEh0bWxFdmVudDxLZXlib2FyZEV2ZW50Pj4gPSBuZXcgRXZlbnRFbWl0dGVyPEFYSHRtbEV2ZW50PEtleWJvYXJkRXZlbnQ+PigpO1xuXG4gICAgLyoqXG4gICAgICogIEZpcmVzIGVhY2ggdGltZSB0aGUgdXNlciBwcmVzcyBhIGtleS5cbiAgICAgKiAgQGV2ZW50XG4gICAgICovXG4gICAgb25LZXlVcDogRXZlbnRFbWl0dGVyPEFYSHRtbEV2ZW50PEtleWJvYXJkRXZlbnQ+PiA9IG5ldyBFdmVudEVtaXR0ZXI8QVhIdG1sRXZlbnQ8S2V5Ym9hcmRFdmVudD4+KCk7XG5cbiAgICAvKipcbiAgICAgKiAgRmlyZXMgZWFjaCB0aW1lIHRoZSB1c2VyIHByZXNzIGEga2V5LlxuICAgICAqICBAZXZlbnRcbiAgICAgKi9cbiAgICBvbktleVByZXNzOiBFdmVudEVtaXR0ZXI8QVhIdG1sRXZlbnQ8S2V5Ym9hcmRFdmVudD4+ID0gbmV3IEV2ZW50RW1pdHRlcjxBWEh0bWxFdmVudDxLZXlib2FyZEV2ZW50Pj4oKTtcblxuICAgIF9lbWl0T25LZXlkb3duRXZlbnQoZTogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgdGhpcy5vbktleURvd24uZW1pdCh7XG4gICAgICAgIGNvbXBvbmVudDogdGhpcyxcbiAgICAgICAgbmF0aXZlRXZlbnQ6IGUsXG4gICAgICB9KTtcbiAgICAgICh0aGlzIGFzIGFueSkuX3NldFVzZXJJbnRlcmFjdGlvbigpO1xuICAgIH1cblxuICAgIF9lbWl0T25LZXl1cEV2ZW50KGU6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgIHRoaXMub25LZXlVcC5lbWl0KHtcbiAgICAgICAgY29tcG9uZW50OiB0aGlzLFxuICAgICAgICBuYXRpdmVFdmVudDogZSxcbiAgICAgIH0pO1xuICAgICAgKHRoaXMgYXMgYW55KS5fc2V0VXNlckludGVyYWN0aW9uKCk7XG4gICAgfVxuXG4gICAgX2VtaXRPbktleXByZXNzRXZlbnQoZTogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgdGhpcy5vbktleVByZXNzLmVtaXQoe1xuICAgICAgICBjb21wb25lbnQ6IHRoaXMsXG4gICAgICAgIG5hdGl2ZUV2ZW50OiBlLFxuICAgICAgfSk7XG4gICAgICAodGhpcyBhcyBhbnkpLl9zZXRVc2VySW50ZXJhY3Rpb24oKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiAgQGlnbm9yZVxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgICBzdXBlciguLi5hcmdzLnNsaWNlKDAsIDIpKTtcbiAgICB9XG4gIH07XG59XG5cbmV4cG9ydCBjb25zdCBURVhUQk9YX0lOUFVUUyA9IFtcbiAgJ3BsYWNlaG9sZGVyJyxcbiAgJ21heExlbmd0aCcsXG4gICdhbGxvd051bGwnLFxuICAndHlwZScsXG4gICdhdXRvQ29tcGxldGUnLFxuICAncmVhZG9ubHknLFxuICAndmFsdWUnLFxuICAnbmFtZScsXG5dO1xuZXhwb3J0IGNvbnN0IFRFWFRCT1hfT1VUUFVUID0gWyd2YWx1ZUNoYW5nZScsICdvblZhbHVlQ2hhbmdlZCddO1xuIl19
|
@@ -1,227 +0,0 @@
|
|
1
|
-
import { coerceBooleanProperty } from '@angular/cdk/coercion';
|
2
|
-
import { EventEmitter } from '@angular/core';
|
3
|
-
import { clone } from 'lodash-es';
|
4
|
-
export function _ValueComponenetMixin(Base) {
|
5
|
-
return class extends Base {
|
6
|
-
#readonly;
|
7
|
-
/**
|
8
|
-
* If set to true, user cannot change the value of component.
|
9
|
-
*/
|
10
|
-
get readonly() {
|
11
|
-
return this.#readonly;
|
12
|
-
}
|
13
|
-
set readonly(value) {
|
14
|
-
this.#readonly = coerceBooleanProperty(value);
|
15
|
-
}
|
16
|
-
#allowNull;
|
17
|
-
get allowNull() {
|
18
|
-
return this.#allowNull;
|
19
|
-
}
|
20
|
-
set allowNull(value) {
|
21
|
-
this.#allowNull = coerceBooleanProperty(value);
|
22
|
-
}
|
23
|
-
#name;
|
24
|
-
get name() {
|
25
|
-
return this.#name;
|
26
|
-
}
|
27
|
-
set name(value) {
|
28
|
-
this.#name = value;
|
29
|
-
}
|
30
|
-
#isUserInteraction;
|
31
|
-
get isUserInteraction() {
|
32
|
-
return this.#isUserInteraction;
|
33
|
-
}
|
34
|
-
#value;
|
35
|
-
get value() {
|
36
|
-
return this._internalGetValue();
|
37
|
-
}
|
38
|
-
set value(v) {
|
39
|
-
v = this._internalSetValue(v);
|
40
|
-
//if (!this._isInited ) {
|
41
|
-
const old = clone(this.value);
|
42
|
-
// TODO: check real equality
|
43
|
-
if (v != old) {
|
44
|
-
this.#value = v;
|
45
|
-
this._emitOnValueChangedEvent(old, this.value);
|
46
|
-
this._cdr.markForCheck();
|
47
|
-
if (v == null || v == undefined || v == '' || (Array.isArray(v) && v.length == 0)) {
|
48
|
-
this._setState('clear');
|
49
|
-
}
|
50
|
-
// else {
|
51
|
-
// if (this._isInited) {
|
52
|
-
// this.validate();
|
53
|
-
// }
|
54
|
-
// }
|
55
|
-
}
|
56
|
-
this.#isUserInteraction = false;
|
57
|
-
//}
|
58
|
-
}
|
59
|
-
#state;
|
60
|
-
get state() {
|
61
|
-
return this.#state;
|
62
|
-
}
|
63
|
-
set state(value) {
|
64
|
-
this._setState(value);
|
65
|
-
this.stateChange.emit(value);
|
66
|
-
}
|
67
|
-
_emitOnValueChangedEvent(oldValue, newValue) {
|
68
|
-
this.valueChange.emit(newValue);
|
69
|
-
this.onValueChanged.emit({
|
70
|
-
component: this,
|
71
|
-
value: newValue,
|
72
|
-
oldValue: oldValue,
|
73
|
-
name: this.name,
|
74
|
-
isUserInteraction: this.isUserInteraction,
|
75
|
-
});
|
76
|
-
this._onValueChanged(oldValue, this.#value);
|
77
|
-
this.#isUserInteraction = false;
|
78
|
-
}
|
79
|
-
_internalSetValue(value) {
|
80
|
-
return this._setValue(value);
|
81
|
-
}
|
82
|
-
_internalGetValue() {
|
83
|
-
return this._getValue(this.#value);
|
84
|
-
}
|
85
|
-
_setValue(value) {
|
86
|
-
return value;
|
87
|
-
}
|
88
|
-
_getValue(value) {
|
89
|
-
return value;
|
90
|
-
}
|
91
|
-
_setUserInteraction() {
|
92
|
-
this.#isUserInteraction = true;
|
93
|
-
}
|
94
|
-
setUserInteraction() {
|
95
|
-
this.#isUserInteraction = true;
|
96
|
-
}
|
97
|
-
_onValueChanged(oldValue, newValue) { }
|
98
|
-
_onInternalInit() {
|
99
|
-
this._getHostElement().setAttribute('ax-form-input', 'true');
|
100
|
-
super._onInternalInit();
|
101
|
-
}
|
102
|
-
_onInternalViewInit() {
|
103
|
-
this._checkRequired();
|
104
|
-
super._onInternalViewInit();
|
105
|
-
}
|
106
|
-
_onInternalDestroy() {
|
107
|
-
super.onDestroy();
|
108
|
-
}
|
109
|
-
clear() {
|
110
|
-
this.value = null;
|
111
|
-
}
|
112
|
-
_checkRequired() {
|
113
|
-
const isRequired = Array.from(this._getHostElement().querySelectorAll('ax-validation-rule')).some((c) => c.__axContext__.enabled && c.__axContext__.rule == 'required');
|
114
|
-
//
|
115
|
-
if (isRequired) {
|
116
|
-
const container = this._getHostElement().classList.contains('ax-editor-container')
|
117
|
-
? this._getHostElement()
|
118
|
-
: this._getHostElement().querySelector('.ax-editor-container');
|
119
|
-
const formField = container?.closest('.ax-form-field');
|
120
|
-
const label = formField?.querySelector('ax-label')?.__axContext__;
|
121
|
-
if (label)
|
122
|
-
label.required = true;
|
123
|
-
}
|
124
|
-
}
|
125
|
-
validate() {
|
126
|
-
const rules = Array.from(this._getHostElement().querySelectorAll('ax-validation-rule')).filter((c) => c.__axContext__.enabled);
|
127
|
-
//
|
128
|
-
if (!rules || rules.length === 0) {
|
129
|
-
this._setState('clear');
|
130
|
-
return Promise.resolve({
|
131
|
-
result: true,
|
132
|
-
value: this.value,
|
133
|
-
name: this.name,
|
134
|
-
id: this.id,
|
135
|
-
});
|
136
|
-
}
|
137
|
-
return new Promise((resolve) => {
|
138
|
-
Promise.all(rules
|
139
|
-
.filter((c) => typeof c?.validate === 'function')
|
140
|
-
.map((c) => {
|
141
|
-
return c.validate(this.value);
|
142
|
-
})).then((d) => {
|
143
|
-
const error = d.find((c) => c.result === false);
|
144
|
-
if (error) {
|
145
|
-
this._setState('error', error.message);
|
146
|
-
resolve({
|
147
|
-
result: false,
|
148
|
-
value: this.value,
|
149
|
-
message: error.message,
|
150
|
-
name: this.name,
|
151
|
-
id: this.id,
|
152
|
-
});
|
153
|
-
}
|
154
|
-
else {
|
155
|
-
this._setState('success');
|
156
|
-
resolve({
|
157
|
-
result: true,
|
158
|
-
value: this.value,
|
159
|
-
name: this.name,
|
160
|
-
id: this.id,
|
161
|
-
});
|
162
|
-
}
|
163
|
-
});
|
164
|
-
});
|
165
|
-
}
|
166
|
-
/**
|
167
|
-
* @ignore
|
168
|
-
*/
|
169
|
-
constructor(...args) {
|
170
|
-
super(...args);
|
171
|
-
/**
|
172
|
-
* Fires each time the user press a key.
|
173
|
-
* @event
|
174
|
-
*/
|
175
|
-
this.onValueChanged = new EventEmitter();
|
176
|
-
this.valueChange = new EventEmitter();
|
177
|
-
this.stateChange = new EventEmitter();
|
178
|
-
this.#readonly = false;
|
179
|
-
this.#allowNull = true;
|
180
|
-
this.#isUserInteraction = false;
|
181
|
-
this.#state = 'clear';
|
182
|
-
}
|
183
|
-
_setState(state, ...args) {
|
184
|
-
const container = this._getHostElement().classList.contains('ax-editor-container')
|
185
|
-
? this._getHostElement()
|
186
|
-
: this._getHostElement().querySelector('.ax-editor-container');
|
187
|
-
const formField = container?.closest('.ax-form-field');
|
188
|
-
const label = formField?.querySelector('ax-label') || formField?.querySelector('label');
|
189
|
-
let target = container || this._getInnerElement();
|
190
|
-
if (target?.querySelector('.ax-error-container')) {
|
191
|
-
target = target.querySelector('.ax-error-container');
|
192
|
-
}
|
193
|
-
const parent = target?.parentElement;
|
194
|
-
if (!target || !parent)
|
195
|
-
return;
|
196
|
-
switch (state) {
|
197
|
-
case 'clear':
|
198
|
-
this.#state = 'clear';
|
199
|
-
if (parent.querySelector('span.ax-error-message')) {
|
200
|
-
parent.removeChild(parent.querySelector('span.ax-error-message'));
|
201
|
-
}
|
202
|
-
label?.classList.remove('ax-state-error');
|
203
|
-
target.classList.remove('ax-state-error', 'ax-state-success');
|
204
|
-
break;
|
205
|
-
case 'success':
|
206
|
-
this._setState('clear');
|
207
|
-
target.classList.add('ax-state-success');
|
208
|
-
this.#state = 'success';
|
209
|
-
break;
|
210
|
-
case 'error':
|
211
|
-
this._setState('clear');
|
212
|
-
if (args[0]) {
|
213
|
-
const span = document.createElement('span');
|
214
|
-
span.innerText = args[0];
|
215
|
-
span.classList.add('ax-error-message');
|
216
|
-
parent.appendChild(span);
|
217
|
-
}
|
218
|
-
label?.classList.add('ax-state-error');
|
219
|
-
target.classList.add('ax-state-error');
|
220
|
-
this.#state = 'error';
|
221
|
-
break;
|
222
|
-
}
|
223
|
-
this._cdr.markForCheck();
|
224
|
-
}
|
225
|
-
};
|
226
|
-
}
|
227
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsdWUtbWl4aW4uY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvbWl4aW4vc3JjL2xpYi92YWx1ZS1taXhpbi5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFJbEMsTUFBTSxVQUFVLHFCQUFxQixDQUE2QyxJQUFXO0lBQzNGLE9BQU8sS0FBTSxTQUFRLElBQUk7UUFVdkIsU0FBUyxDQUFrQjtRQUUzQjs7V0FFRztRQUNILElBQUksUUFBUTtZQUNWLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUN4QixDQUFDO1FBQ0QsSUFBSSxRQUFRLENBQUMsS0FBYztZQUN6QixJQUFJLENBQUMsU0FBUyxHQUFHLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hELENBQUM7UUFFRCxVQUFVLENBQWlCO1FBQzNCLElBQUksU0FBUztZQUNYLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztRQUN6QixDQUFDO1FBQ0QsSUFBSSxTQUFTLENBQUMsS0FBYztZQUMxQixJQUFJLENBQUMsVUFBVSxHQUFHLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pELENBQUM7UUFFRCxLQUFLLENBQVM7UUFDZCxJQUFJLElBQUk7WUFDTixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDcEIsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLEtBQWE7WUFDcEIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDckIsQ0FBQztRQUVELGtCQUFrQixDQUFrQjtRQUVwQyxJQUFJLGlCQUFpQjtZQUNuQixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztR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QU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLENBQUM7b0JBQ3pDLElBQUksQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDO29CQUN4QixNQUFNO2dCQUNSLEtBQUssT0FBTztvQkFDVixJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO29CQUN4QixJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRTt3QkFDWCxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO3dCQUM1QyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQzt3QkFDekIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUMsQ0FBQzt3QkFDdkMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztxQkFDMUI7b0JBQ0QsS0FBSyxFQUFFLFNBQVMsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztvQkFDdkMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztvQkFFdkMsSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUM7b0JBQ3RCLE1BQU07YUFDVDtZQUNELElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDM0IsQ0FBQztLQUNGLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhWYWx1ZUNoYW5nZWRFdmVudCB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9jb21tb24nO1xuaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgY2xvbmUgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgQVhCYXNlQ29tcG9uZW50LCBBWENvbXBvbmVudFN0YXRlIH0gZnJvbSAnLi9iYXNlLWNvbXBvbmVudHMuY2xhc3MnO1xuaW1wb3J0IHsgQ29uc3RydWN0b3IgfSBmcm9tICcuL2NvbnN0cmF0Y3Rvcic7XG5cbmV4cG9ydCBmdW5jdGlvbiBfVmFsdWVDb21wb25lbmV0TWl4aW48VEJhc2UgZXh0ZW5kcyBDb25zdHJ1Y3RvcjxBWEJhc2VDb21wb25lbnQ+PihCYXNlOiBUQmFzZSkge1xuICByZXR1cm4gY2xhc3MgZXh0ZW5kcyBCYXNlIHtcbiAgICAvKipcbiAgICAgKiAgRmlyZXMgZWFjaCB0aW1lIHRoZSB1c2VyIHByZXNzIGEga2V5LlxuICAgICAqICBAZXZlbnRcbiAgICAgKi9cbiAgICBvblZhbHVlQ2hhbmdlZDogRXZlbnRFbWl0dGVyPEFYVmFsdWVDaGFuZ2VkRXZlbnQ8YW55Pj4gPSBuZXcgRXZlbnRFbWl0dGVyPEFYVmFsdWVDaGFuZ2VkRXZlbnQ8YW55Pj4oKTtcblxuICAgIHZhbHVlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICAgIHN0YXRlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8QVhDb21wb25lbnRTdGF0ZT4gPSBuZXcgRXZlbnRFbWl0dGVyPEFYQ29tcG9uZW50U3RhdGU+KCk7XG5cbiAgICAjcmVhZG9ubHk6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqICBJZiBzZXQgdG8gdHJ1ZSwgdXNlciBjYW5ub3QgY2hhbmdlIHRoZSB2YWx1ZSBvZiBjb21wb25lbnQuXG4gICAgICovXG4gICAgZ2V0IHJlYWRvbmx5KCkge1xuICAgICAgcmV0dXJuIHRoaXMuI3JlYWRvbmx5O1xuICAgIH1cbiAgICBzZXQgcmVhZG9ubHkodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgIHRoaXMuI3JlYWRvbmx5ID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG5cbiAgICAjYWxsb3dOdWxsOiBib29sZWFuID0gdHJ1ZTtcbiAgICBnZXQgYWxsb3dOdWxsKCkge1xuICAgICAgcmV0dXJuIHRoaXMuI2FsbG93TnVsbDtcbiAgICB9XG4gICAgc2V0IGFsbG93TnVsbCh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgdGhpcy4jYWxsb3dOdWxsID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG5cbiAgICAjbmFtZTogc3RyaW5nO1xuICAgIGdldCBuYW1lKCkge1xuICAgICAgcmV0dXJuIHRoaXMuI25hbWU7XG4gICAgfVxuICAgIHNldCBuYW1lKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgIHRoaXMuI25hbWUgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICAjaXNVc2VySW50ZXJhY3Rpb246IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIGdldCBpc1VzZXJJbnRlcmFjdGlvbigpOiBib29sZWFuIHtcbiAgICAgIHJldHVybiB0aGlzLiNpc1VzZXJJbnRlcmFjdGlvbjtcbiAgICB9XG5cbiAgICAjdmFsdWU6IGFueTtcbiAgICBnZXQgdmFsdWUoKTogYW55IHtcbiAgICAgIHJldHVybiB0aGlzLl9pbnRlcm5hbEdldFZhbHVlKCk7XG4gICAgfVxuICAgIHNldCB2YWx1ZSh2OiBhbnkpIHtcbiAgICAgIHYgPSB0aGlzLl9pbnRlcm5hbFNldFZhbHVlKHYpO1xuICAgICAgLy9pZiAoIXRoaXMuX2lzSW5pdGVkICkge1xuICAgICAgY29uc3Qgb2xkID0gY2xvbmUodGhpcy52YWx1ZSk7XG4gICAgICAvLyBUT0RPOiBjaGVjayByZWFsIGVxdWFsaXR5XG4gICAgICBpZiAodiAhPSBvbGQpIHtcbiAgICAgICAgdGhpcy4jdmFsdWUgPSB2O1xuICAgICAgICB0aGlzLl9lbWl0T25WYWx1ZUNoYW5nZWRFdmVudChvbGQsIHRoaXMudmFsdWUpO1xuICAgICAgICB0aGlzLl9jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIGlmICh2ID09IG51bGwgfHwgdiA9PSB1bmRlZmluZWQgfHwgdiA9PSAnJyB8fCAoQXJyYXkuaXNBcnJheSh2KSAmJiB2Lmxlbmd0aCA9PSAwKSkge1xuICAgICAgICAgIHRoaXMuX3NldFN0YXRlKCdjbGVhcicpO1xuICAgICAgICB9XG4gICAgICAgIC8vIGVsc2Uge1xuICAgICAgICAvLyAgIGlmICh0aGlzLl9pc0luaXRlZCkge1xuICAgICAgICAvLyAgICAgdGhpcy52YWxpZGF0ZSgpO1xuICAgICAgICAvLyAgIH1cbiAgICAgICAgLy8gfVxuICAgICAgfVxuICAgICAgdGhpcy4jaXNVc2VySW50ZXJhY3Rpb24gPSBmYWxzZTtcbiAgICAgIC8vfVxuICAgIH1cblxuICAgICNzdGF0ZTogQVhDb21wb25lbnRTdGF0ZSA9ICdjbGVhcic7XG5cbiAgICBnZXQgc3RhdGUoKTogQVhDb21wb25lbnRTdGF0ZSB7XG4gICAgICByZXR1cm4gdGhpcy4jc3RhdGU7XG4gICAgfVxuXG4gICAgc2V0IHN0YXRlKHZhbHVlOiBBWENvbXBvbmVudFN0YXRlKSB7XG4gICAgICB0aGlzLl9zZXRTdGF0ZSh2YWx1ZSk7XG4gICAgICB0aGlzLnN0YXRlQ2hhbmdlLmVtaXQodmFsdWUpO1xuICAgIH1cblxuICAgIF9lbWl0T25WYWx1ZUNoYW5nZWRFdmVudChvbGRWYWx1ZT86IGFueSwgbmV3VmFsdWU/OiBhbnkpIHtcbiAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdChuZXdWYWx1ZSk7XG4gICAgICB0aGlzLm9uVmFsdWVDaGFuZ2VkLmVtaXQoe1xuICAgICAgICBjb21wb25lbnQ6IHRoaXMsXG4gICAgICAgIHZhbHVlOiBuZXdWYWx1ZSxcbiAgICAgICAgb2xkVmFsdWU6IG9sZFZhbHVlLFxuICAgICAgICBuYW1lOiB0aGlzLm5hbWUsXG4gICAgICAgIGlzVXNlckludGVyYWN0aW9uOiB0aGlzLmlzVXNlckludGVyYWN0aW9uLFxuICAgICAgfSk7XG4gICAgICB0aGlzLl9vblZhbHVlQ2hhbmdlZChvbGRWYWx1ZSwgdGhpcy4jdmFsdWUpO1xuICAgICAgdGhpcy4jaXNVc2VySW50ZXJhY3Rpb24gPSBmYWxzZTtcbiAgICB9XG5cbiAgICBfaW50ZXJuYWxTZXRWYWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgICByZXR1cm4gdGhpcy5fc2V0VmFsdWUodmFsdWUpO1xuICAgIH1cblxuICAgIF9pbnRlcm5hbEdldFZhbHVlKCkge1xuICAgICAgcmV0dXJuIHRoaXMuX2dldFZhbHVlKHRoaXMuI3ZhbHVlKTtcbiAgICB9XG5cbiAgICBfc2V0VmFsdWUodmFsdWU6IGFueSkge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIF9nZXRWYWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgX3NldFVzZXJJbnRlcmFjdGlvbigpIHtcbiAgICAgIHRoaXMuI2lzVXNlckludGVyYWN0aW9uID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBzZXRVc2VySW50ZXJhY3Rpb24oKSB7XG4gICAgICB0aGlzLiNpc1VzZXJJbnRlcmFjdGlvbiA9IHRydWU7XG4gICAgfVxuXG4gICAgX29uVmFsdWVDaGFuZ2VkKG9sZFZhbHVlOiBhbnksIG5ld1ZhbHVlOiBhbnkpOiB2b2lkIHt9XG5cbiAgICBvdmVycmlkZSBfb25JbnRlcm5hbEluaXQoKSB7XG4gICAgICB0aGlzLl9nZXRIb3N0RWxlbWVudCgpLnNldEF0dHJpYnV0ZSgnYXgtZm9ybS1pbnB1dCcsICd0cnVlJyk7XG4gICAgICBzdXBlci5fb25JbnRlcm5hbEluaXQoKTtcbiAgICB9XG5cbiAgICBvdmVycmlkZSBfb25JbnRlcm5hbFZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgdGhpcy5fY2hlY2tSZXF1aXJlZCgpO1xuICAgICAgc3VwZXIuX29uSW50ZXJuYWxWaWV3SW5pdCgpO1xuICAgIH1cblxuICAgIG92ZXJyaWRlIF9vbkludGVybmFsRGVzdHJveSgpIHtcbiAgICAgIHN1cGVyLm9uRGVzdHJveSgpO1xuICAgIH1cblxuICAgIGNsZWFyKCkge1xuICAgICAgdGhpcy52YWx1ZSA9IG51bGw7XG4gICAgfVxuXG4gICAgX2NoZWNrUmVxdWlyZWQoKSB7XG4gICAgICBjb25zdCBpc1JlcXVpcmVkID0gQXJyYXkuZnJvbSh0aGlzLl9nZXRIb3N0RWxlbWVudCgpLnF1ZXJ5U2VsZWN0b3JBbGwoJ2F4LXZhbGlkYXRpb24tcnVsZScpKS5zb21lKFxuICAgICAgICAoYykgPT4gKGMgYXMgYW55KS5fX2F4Q29udGV4dF9fLmVuYWJsZWQgJiYgKGMgYXMgYW55KS5fX2F4Q29udGV4dF9fLnJ1bGUgPT0gJ3JlcXVpcmVkJyxcbiAgICAgICk7XG4gICAgICAvL1xuICAgICAgaWYgKGlzUmVxdWlyZWQpIHtcbiAgICAgICAgY29uc3QgY29udGFpbmVyID0gdGhpcy5fZ2V0SG9zdEVsZW1lbnQoKS5jbGFzc0xpc3QuY29udGFpbnMoJ2F4LWVkaXRvci1jb250YWluZXInKVxuICAgICAgICAgID8gdGhpcy5fZ2V0SG9zdEVsZW1lbnQoKVxuICAgICAgICAgIDogdGhpcy5fZ2V0SG9zdEVsZW1lbnQoKS5xdWVyeVNlbGVjdG9yKCcuYXgtZWRpdG9yLWNvbnRhaW5lcicpO1xuICAgICAgICBjb25zdCBmb3JtRmllbGQgPSBjb250YWluZXI/LmNsb3Nlc3QoJy5heC1mb3JtLWZpZWxkJyk7XG4gICAgICAgIGNvbnN0IGxhYmVsID0gKGZvcm1GaWVsZD8ucXVlcnlTZWxlY3RvcignYXgtbGFiZWwnKSBhcyBhbnkpPy5fX2F4Q29udGV4dF9fO1xuICAgICAgICBpZiAobGFiZWwpIGxhYmVsLnJlcXVpcmVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YWxpZGF0ZSgpOiBQcm9taXNlPGFueT4ge1xuICAgICAgY29uc3QgcnVsZXMgPSBBcnJheS5mcm9tKHRoaXMuX2dldEhvc3RFbGVtZW50KCkucXVlcnlTZWxlY3RvckFsbCgnYXgtdmFsaWRhdGlvbi1ydWxlJykpLmZpbHRlcihcbiAgICAgICAgKGMpID0+IChjIGFzIGFueSkuX19heENvbnRleHRfXy5lbmFibGVkLFxuICAgICAgKTtcbiAgICAgIC8vXG4gICAgICBpZiAoIXJ1bGVzIHx8IHJ1bGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICB0aGlzLl9zZXRTdGF0ZSgnY2xlYXInKTtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7XG4gICAgICAgICAgcmVzdWx0OiB0cnVlLFxuICAgICAgICAgIHZhbHVlOiB0aGlzLnZhbHVlLFxuICAgICAgICAgIG5hbWU6IHRoaXMubmFtZSxcbiAgICAgICAgICBpZDogdGhpcy5pZCxcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZTxhbnk+KChyZXNvbHZlKSA9PiB7XG4gICAgICAgIFByb21pc2UuYWxsKFxuICAgICAgICAgIHJ1bGVzXG4gICAgICAgICAgICAuZmlsdGVyKChjKSA9PiB0eXBlb2YgKGMgYXMgYW55KT8udmFsaWRhdGUgPT09ICdmdW5jdGlvbicpXG4gICAgICAgICAgICAubWFwKChjKSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiAoYyBhcyBhbnkpLnZhbGlkYXRlKHRoaXMudmFsdWUpO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICkudGhlbigoZCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGVycm9yID0gZC5maW5kKChjKSA9PiBjLnJlc3VsdCA9PT0gZmFsc2UpO1xuICAgICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgICAgdGhpcy5fc2V0U3RhdGUoJ2Vycm9yJywgZXJyb3IubWVzc2FnZSk7XG4gICAgICAgICAgICByZXNvbHZlKHtcbiAgICAgICAgICAgICAgcmVzdWx0OiBmYWxzZSxcbiAgICAgICAgICAgICAgdmFsdWU6IHRoaXMudmFsdWUsXG4gICAgICAgICAgICAgIG1lc3NhZ2U6IGVycm9yLm1lc3NhZ2UsXG4gICAgICAgICAgICAgIG5hbWU6IHRoaXMubmFtZSxcbiAgICAgICAgICAgICAgaWQ6IHRoaXMuaWQsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fc2V0U3RhdGUoJ3N1Y2Nlc3MnKTtcbiAgICAgICAgICAgIHJlc29sdmUoe1xuICAgICAgICAgICAgICByZXN1bHQ6IHRydWUsXG4gICAgICAgICAgICAgIHZhbHVlOiB0aGlzLnZhbHVlLFxuICAgICAgICAgICAgICBuYW1lOiB0aGlzLm5hbWUsXG4gICAgICAgICAgICAgIGlkOiB0aGlzLmlkLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqICBAaWdub3JlXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoLi4uYXJnczogYW55W10pIHtcbiAgICAgIHN1cGVyKC4uLmFyZ3MpO1xuICAgIH1cblxuICAgIF9zZXRTdGF0ZShzdGF0ZTogQVhDb21wb25lbnRTdGF0ZSwgLi4uYXJncykge1xuICAgICAgY29uc3QgY29udGFpbmVyID0gdGhpcy5fZ2V0SG9zdEVsZW1lbnQoKS5jbGFzc0xpc3QuY29udGFpbnMoJ2F4LWVkaXRvci1jb250YWluZXInKVxuICAgICAgICA/IHRoaXMuX2dldEhvc3RFbGVtZW50KClcbiAgICAgICAgOiB0aGlzLl9nZXRIb3N0RWxlbWVudCgpLnF1ZXJ5U2VsZWN0b3IoJy5heC1lZGl0b3ItY29udGFpbmVyJyk7XG4gICAgICBjb25zdCBmb3JtRmllbGQgPSBjb250YWluZXI/LmNsb3Nlc3QoJy5heC1mb3JtLWZpZWxkJyk7XG4gICAgICBjb25zdCBsYWJlbCA9IGZvcm1GaWVsZD8ucXVlcnlTZWxlY3RvcignYXgtbGFiZWwnKSB8fCBmb3JtRmllbGQ/LnF1ZXJ5U2VsZWN0b3IoJ2xhYmVsJyk7XG4gICAgICBsZXQgdGFyZ2V0ID0gY29udGFpbmVyIHx8IHRoaXMuX2dldElubmVyRWxlbWVudCgpO1xuICAgICAgaWYgKHRhcmdldD8ucXVlcnlTZWxlY3RvcignLmF4LWVycm9yLWNvbnRhaW5lcicpKSB7XG4gICAgICAgIHRhcmdldCA9IHRhcmdldC5xdWVyeVNlbGVjdG9yKCcuYXgtZXJyb3ItY29udGFpbmVyJyk7XG4gICAgICB9XG4gICAgICBjb25zdCBwYXJlbnQgPSB0YXJnZXQ/LnBhcmVudEVsZW1lbnQ7XG4gICAgICBpZiAoIXRhcmdldCB8fCAhcGFyZW50KSByZXR1cm47XG5cbiAgICAgIHN3aXRjaCAoc3RhdGUpIHtcbiAgICAgICAgY2FzZSAnY2xlYXInOlxuICAgICAgICAgIHRoaXMuI3N0YXRlID0gJ2NsZWFyJztcbiAgICAgICAgICBpZiAocGFyZW50LnF1ZXJ5U2VsZWN0b3IoJ3NwYW4uYXgtZXJyb3ItbWVzc2FnZScpKSB7XG4gICAgICAgICAgICBwYXJlbnQucmVtb3ZlQ2hpbGQocGFyZW50LnF1ZXJ5U2VsZWN0b3IoJ3NwYW4uYXgtZXJyb3ItbWVzc2FnZScpISk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGxhYmVsPy5jbGFzc0xpc3QucmVtb3ZlKCdheC1zdGF0ZS1lcnJvcicpO1xuICAgICAgICAgIHRhcmdldC5jbGFzc0xpc3QucmVtb3ZlKCdheC1zdGF0ZS1lcnJvcicsICdheC1zdGF0ZS1zdWNjZXNzJyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3N1Y2Nlc3MnOlxuICAgICAgICAgIHRoaXMuX3NldFN0YXRlKCdjbGVhcicpO1xuICAgICAgICAgIHRhcmdldC5jbGFzc0xpc3QuYWRkKCdheC1zdGF0ZS1zdWNjZXNzJyk7XG4gICAgICAgICAgdGhpcy4jc3RhdGUgPSAnc3VjY2Vzcyc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2Vycm9yJzpcbiAgICAgICAgICB0aGlzLl9zZXRTdGF0ZSgnY2xlYXInKTtcbiAgICAgICAgICBpZiAoYXJnc1swXSkge1xuICAgICAgICAgICAgY29uc3Qgc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcbiAgICAgICAgICAgIHNwYW4uaW5uZXJUZXh0ID0gYXJnc1swXTtcbiAgICAgICAgICAgIHNwYW4uY2xhc3NMaXN0LmFkZCgnYXgtZXJyb3ItbWVzc2FnZScpO1xuICAgICAgICAgICAgcGFyZW50LmFwcGVuZENoaWxkKHNwYW4pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBsYWJlbD8uY2xhc3NMaXN0LmFkZCgnYXgtc3RhdGUtZXJyb3InKTtcbiAgICAgICAgICB0YXJnZXQuY2xhc3NMaXN0LmFkZCgnYXgtc3RhdGUtZXJyb3InKTtcblxuICAgICAgICAgIHRoaXMuI3N0YXRlID0gJ2Vycm9yJztcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIHRoaXMuX2Nkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH07XG59XG4iXX0=
|