@wavemaker/app-ng-runtime 12.0.0-next.44005 → 12.0.0-next.45001
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.
- app-ng-runtime/build-task/advanced/custom-widget-container/custom-widget-container.build.d.ts +2 -0
- app-ng-runtime/build-task/advanced/custom-widget-prop/custom-widget-prop.build.d.ts +2 -0
- app-ng-runtime/build-task/advanced/custom-widget-wrapper/custom-widget-wrapper.build.d.ts +2 -0
- app-ng-runtime/build-task/bundles/index.umd.js +477 -404
- app-ng-runtime/build-task/esm2022/advanced/custom-widget-container/custom-widget-container.build.mjs +15 -0
- app-ng-runtime/build-task/esm2022/advanced/custom-widget-prop/custom-widget-prop.build.mjs +10 -0
- app-ng-runtime/build-task/esm2022/advanced/custom-widget-wrapper/custom-widget-wrapper.build.mjs +26 -0
- app-ng-runtime/build-task/esm2022/data/form/form-field/form-field.build.mjs +3 -2
- app-ng-runtime/build-task/esm2022/navigation/menu/menu.build.mjs +14 -2
- app-ng-runtime/build-task/esm2022/public_api.mjs +4 -1
- app-ng-runtime/build-task/fesm2022/index.mjs +479 -405
- app-ng-runtime/build-task/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/build-task/public_api.d.ts +3 -0
- app-ng-runtime/components/advanced/custom/bundles/index.umd.js +275 -0
- app-ng-runtime/components/advanced/custom/custom-widget-container/custom-widget-container.directive.d.ts +14 -0
- app-ng-runtime/components/advanced/custom/custom-widget-container/custom-widget.props.d.ts +1 -0
- app-ng-runtime/components/advanced/custom/custom-widget-container-prop/custom-widget-container-prop.directive.d.ts +20 -0
- app-ng-runtime/components/advanced/custom/custom-widget-prop.d.ts +1 -0
- app-ng-runtime/components/advanced/custom/custom-widget.directive.d.ts +19 -0
- app-ng-runtime/components/advanced/custom/custom-widget.module.d.ts +11 -0
- app-ng-runtime/components/advanced/custom/esm2022/custom-widget-container/custom-widget-container.directive.mjs +73 -0
- app-ng-runtime/components/advanced/custom/esm2022/custom-widget-container/custom-widget.props.mjs +9 -0
- app-ng-runtime/components/advanced/custom/esm2022/custom-widget-container-prop/custom-widget-container-prop.directive.mjs +70 -0
- app-ng-runtime/components/advanced/custom/esm2022/custom-widget-prop.mjs +8 -0
- app-ng-runtime/components/advanced/custom/esm2022/custom-widget.directive.mjs +68 -0
- app-ng-runtime/components/advanced/custom/esm2022/custom-widget.module.mjs +39 -0
- app-ng-runtime/components/advanced/custom/esm2022/index.mjs +5 -0
- app-ng-runtime/components/advanced/custom/esm2022/public_api.mjs +5 -0
- app-ng-runtime/components/advanced/custom/fesm2022/index.mjs +256 -0
- app-ng-runtime/components/advanced/custom/fesm2022/index.mjs.map +1 -0
- app-ng-runtime/components/advanced/custom/index.d.ts +5 -0
- app-ng-runtime/components/advanced/custom/package.json +23 -0
- app-ng-runtime/components/advanced/custom/public_api.d.ts +4 -0
- app-ng-runtime/components/base/bundles/index.umd.js +65 -9
- app-ng-runtime/components/base/components.module.d.ts +12 -11
- app-ng-runtime/components/base/esm2022/components.module.mjs +5 -1
- app-ng-runtime/components/base/esm2022/public_api.mjs +2 -1
- app-ng-runtime/components/base/esm2022/widgets/common/base/base.component.mjs +28 -10
- app-ng-runtime/components/base/esm2022/widgets/common/base/custom-widget-container.directive.mjs +39 -0
- app-ng-runtime/components/base/fesm2022/index.mjs +65 -10
- app-ng-runtime/components/base/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/base/public_api.d.ts +1 -0
- app-ng-runtime/components/base/widgets/common/base/base.component.d.ts +9 -3
- app-ng-runtime/components/base/widgets/common/base/custom-widget-container.directive.d.ts +14 -0
- app-ng-runtime/components/basic/default/audio/audio.component.d.ts +1 -0
- app-ng-runtime/components/basic/default/bundles/index.umd.js +5 -4
- app-ng-runtime/components/basic/default/esm2022/audio/audio.component.mjs +6 -5
- app-ng-runtime/components/basic/default/fesm2022/index.mjs +5 -4
- app-ng-runtime/components/basic/default/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/basic/progress/bundles/index.umd.js +3 -2
- app-ng-runtime/components/basic/progress/esm2022/progress-circle/progress-circle.component.mjs +4 -3
- app-ng-runtime/components/basic/progress/fesm2022/index.mjs +3 -2
- app-ng-runtime/components/basic/progress/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/basic/progress/progress-circle/progress-circle.component.d.ts +1 -0
- app-ng-runtime/components/data/form/bundles/index.umd.js +4 -3
- app-ng-runtime/components/data/form/esm2022/form-field/form-field.directive.mjs +1 -2
- app-ng-runtime/components/data/form/esm2022/live-form/live-form.directive.mjs +5 -3
- app-ng-runtime/components/data/form/fesm2022/index.mjs +4 -3
- app-ng-runtime/components/data/form/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/default/bundles/index.umd.js +46 -53
- app-ng-runtime/components/input/default/esm2022/caption-position.directive.mjs +2 -3
- app-ng-runtime/components/input/default/esm2022/select/select.component.mjs +44 -53
- app-ng-runtime/components/input/default/esm2022/text/base/base-input.mjs +4 -1
- app-ng-runtime/components/input/default/fesm2022/index.mjs +47 -54
- app-ng-runtime/components/input/default/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/default/select/select.component.d.ts +1 -2
- app-ng-runtime/components/input/epoch/bundles/index.umd.js +19 -7
- app-ng-runtime/components/input/epoch/date/date.component.d.ts +1 -0
- app-ng-runtime/components/input/epoch/esm2022/date/date.component.mjs +9 -3
- app-ng-runtime/components/input/epoch/esm2022/date/imaskUtil.mjs +8 -2
- app-ng-runtime/components/input/epoch/esm2022/date-time/date-time.component.mjs +3 -3
- app-ng-runtime/components/input/epoch/esm2022/time/time.component.mjs +3 -3
- app-ng-runtime/components/input/epoch/fesm2022/index.mjs +19 -7
- app-ng-runtime/components/input/epoch/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/core/bundles/index.umd.js +10 -0
- app-ng-runtime/core/enums/enums.d.ts +2 -1
- app-ng-runtime/core/esm2022/enums/enums.mjs +2 -1
- app-ng-runtime/core/esm2022/types/types.mjs +4 -1
- app-ng-runtime/core/esm2022/utils/build-utils.mjs +6 -1
- app-ng-runtime/core/fesm2022/index.mjs +10 -1
- app-ng-runtime/core/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/core/types/types.d.ts +5 -1
- app-ng-runtime/package.json +1 -1
- app-ng-runtime/runtime/base/bundles/index.umd.js +254 -4
- app-ng-runtime/runtime/base/components/base-custom-widget.component.d.ts +71 -0
- app-ng-runtime/runtime/base/esm2022/components/base-custom-widget.component.mjs +253 -0
- app-ng-runtime/runtime/base/esm2022/public_api.mjs +2 -1
- app-ng-runtime/runtime/base/esm2022/runtime-base.module.mjs +6 -1
- app-ng-runtime/runtime/base/esm2022/types/types.mjs +2 -1
- app-ng-runtime/runtime/base/fesm2022/index.mjs +251 -1
- app-ng-runtime/runtime/base/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/runtime/base/public_api.d.ts +1 -0
- app-ng-runtime/runtime/base/runtime-base.module.d.ts +9 -8
- app-ng-runtime/runtime/base/types/types.d.ts +2 -1
- app-ng-runtime/runtime/dynamic/bundles/index.umd.js +26 -9
- app-ng-runtime/runtime/dynamic/esm2022/app/app.module.mjs +5 -2
- app-ng-runtime/runtime/dynamic/esm2022/app/services/component-ref-provider.service.mjs +22 -7
- app-ng-runtime/runtime/dynamic/fesm2022/index.mjs +25 -7
- app-ng-runtime/runtime/dynamic/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/scripts/datatable/datatable.js +1 -0
- app-ng-runtime/transpiler/bundles/index.umd.js +5 -0
- app-ng-runtime/transpiler/esm2022/build.mjs +4 -1
- app-ng-runtime/transpiler/esm2022/imports.mjs +3 -1
- app-ng-runtime/transpiler/fesm2022/index.mjs +5 -0
- app-ng-runtime/transpiler/fesm2022/index.mjs.map +1 -1
|
@@ -1233,6 +1233,9 @@
|
|
|
1233
1233
|
/* WMS-18269 | Update Angular about the required attr value change */
|
|
1234
1234
|
this._onChange(this.datavalue);
|
|
1235
1235
|
}
|
|
1236
|
+
if (key === 'updateon') {
|
|
1237
|
+
this.ngModelOptions.updateOn = nv === 'default' ? 'change' : ov;
|
|
1238
|
+
}
|
|
1236
1239
|
if (key === 'class') {
|
|
1237
1240
|
if (this.inputEl.nativeElement) {
|
|
1238
1241
|
i1$1.switchClass(this.inputEl.nativeElement, nv, ov);
|
|
@@ -2080,51 +2083,45 @@
|
|
|
2080
2083
|
};
|
|
2081
2084
|
|
|
2082
2085
|
const _c0$7 = ["select"];
|
|
2083
|
-
function SelectComponent_option_2_Template(rf, ctx) { if (rf & 1) {
|
|
2084
|
-
i0__namespace.ɵɵelement(0, "option", 4);
|
|
2085
|
-
} if (rf & 2) {
|
|
2086
|
-
const ctx_r1 = i0__namespace.ɵɵnextContext();
|
|
2087
|
-
i0__namespace.ɵɵproperty("textContent", ctx_r1.placeholder)("hidden", !ctx_r1.placeholder);
|
|
2088
|
-
} }
|
|
2089
2086
|
function SelectComponent_ng_container_3_optgroup_1_option_1_Template(rf, ctx) { if (rf & 1) {
|
|
2090
|
-
i0__namespace.ɵɵelement(0, "option",
|
|
2087
|
+
i0__namespace.ɵɵelement(0, "option", 7);
|
|
2091
2088
|
} if (rf & 2) {
|
|
2092
|
-
const
|
|
2093
|
-
i0__namespace.ɵɵproperty("value",
|
|
2089
|
+
const item_r6 = ctx.$implicit;
|
|
2090
|
+
i0__namespace.ɵɵproperty("value", item_r6.key)("selected", item_r6.selected)("textContent", item_r6.label);
|
|
2094
2091
|
} }
|
|
2095
2092
|
function SelectComponent_ng_container_3_optgroup_1_Template(rf, ctx) { if (rf & 1) {
|
|
2096
|
-
i0__namespace.ɵɵelementStart(0, "optgroup",
|
|
2097
|
-
i0__namespace.ɵɵtemplate(1, SelectComponent_ng_container_3_optgroup_1_option_1_Template, 1, 3, "option",
|
|
2093
|
+
i0__namespace.ɵɵelementStart(0, "optgroup", 5);
|
|
2094
|
+
i0__namespace.ɵɵtemplate(1, SelectComponent_ng_container_3_optgroup_1_option_1_Template, 1, 3, "option", 6);
|
|
2098
2095
|
i0__namespace.ɵɵelementEnd();
|
|
2099
2096
|
} if (rf & 2) {
|
|
2100
|
-
const
|
|
2101
|
-
i0__namespace.ɵɵproperty("label",
|
|
2097
|
+
const groupObj_r4 = ctx.$implicit;
|
|
2098
|
+
i0__namespace.ɵɵproperty("label", groupObj_r4.key);
|
|
2102
2099
|
i0__namespace.ɵɵadvance(1);
|
|
2103
|
-
i0__namespace.ɵɵproperty("ngForOf",
|
|
2100
|
+
i0__namespace.ɵɵproperty("ngForOf", groupObj_r4.data);
|
|
2104
2101
|
} }
|
|
2105
2102
|
function SelectComponent_ng_container_3_Template(rf, ctx) { if (rf & 1) {
|
|
2106
2103
|
i0__namespace.ɵɵelementContainerStart(0);
|
|
2107
|
-
i0__namespace.ɵɵtemplate(1, SelectComponent_ng_container_3_optgroup_1_Template, 2, 2, "optgroup",
|
|
2104
|
+
i0__namespace.ɵɵtemplate(1, SelectComponent_ng_container_3_optgroup_1_Template, 2, 2, "optgroup", 4);
|
|
2108
2105
|
i0__namespace.ɵɵelementContainerEnd();
|
|
2109
2106
|
} if (rf & 2) {
|
|
2110
|
-
const
|
|
2107
|
+
const ctx_r1 = i0__namespace.ɵɵnextContext();
|
|
2111
2108
|
i0__namespace.ɵɵadvance(1);
|
|
2112
|
-
i0__namespace.ɵɵproperty("ngForOf",
|
|
2109
|
+
i0__namespace.ɵɵproperty("ngForOf", ctx_r1.groupedData);
|
|
2113
2110
|
} }
|
|
2114
2111
|
function SelectComponent_ng_container_4_option_1_Template(rf, ctx) { if (rf & 1) {
|
|
2115
|
-
i0__namespace.ɵɵelement(0, "option",
|
|
2112
|
+
i0__namespace.ɵɵelement(0, "option", 7);
|
|
2116
2113
|
} if (rf & 2) {
|
|
2117
|
-
const
|
|
2118
|
-
i0__namespace.ɵɵproperty("value",
|
|
2114
|
+
const item_r8 = ctx.$implicit;
|
|
2115
|
+
i0__namespace.ɵɵproperty("value", item_r8.key)("selected", item_r8.selected)("textContent", item_r8.label);
|
|
2119
2116
|
} }
|
|
2120
2117
|
function SelectComponent_ng_container_4_Template(rf, ctx) { if (rf & 1) {
|
|
2121
2118
|
i0__namespace.ɵɵelementContainerStart(0);
|
|
2122
|
-
i0__namespace.ɵɵtemplate(1, SelectComponent_ng_container_4_option_1_Template, 1, 3, "option",
|
|
2119
|
+
i0__namespace.ɵɵtemplate(1, SelectComponent_ng_container_4_option_1_Template, 1, 3, "option", 6);
|
|
2123
2120
|
i0__namespace.ɵɵelementContainerEnd();
|
|
2124
2121
|
} if (rf & 2) {
|
|
2125
|
-
const
|
|
2122
|
+
const ctx_r2 = i0__namespace.ɵɵnextContext();
|
|
2126
2123
|
i0__namespace.ɵɵadvance(1);
|
|
2127
|
-
i0__namespace.ɵɵproperty("ngForOf",
|
|
2124
|
+
i0__namespace.ɵɵproperty("ngForOf", ctx_r2.datasetItems);
|
|
2128
2125
|
} }
|
|
2129
2126
|
const _c1$6 = function (a1) { return ["app-select form-control", a1]; };
|
|
2130
2127
|
const WIDGET_CONFIG$7 = { widgetType: 'wm-select', hostClass: 'app-select-wrapper' };
|
|
@@ -2143,9 +2140,6 @@
|
|
|
2143
2140
|
ngAfterViewInit() {
|
|
2144
2141
|
super.ngAfterViewInit();
|
|
2145
2142
|
i2.styler(this.selectEl.nativeElement, this);
|
|
2146
|
-
setTimeout(() => {
|
|
2147
|
-
this.checkForFloatingLabel(null);
|
|
2148
|
-
}, 10);
|
|
2149
2143
|
}
|
|
2150
2144
|
// Change event is registered from the template, Prevent the framework from registering one more event
|
|
2151
2145
|
handleEvent(node, eventName, eventCallback, locals) {
|
|
@@ -2192,16 +2186,6 @@
|
|
|
2192
2186
|
}
|
|
2193
2187
|
super.onPropertyChange(key, nv, ov);
|
|
2194
2188
|
}
|
|
2195
|
-
isSafariBrowser() {
|
|
2196
|
-
var reg = {
|
|
2197
|
-
MAC: /Mac/i,
|
|
2198
|
-
MACINTEL: /MacIntel/i
|
|
2199
|
-
};
|
|
2200
|
-
return reg.MAC.test(window.navigator.platform) || reg.MACINTEL.test(window.navigator.platform);
|
|
2201
|
-
}
|
|
2202
|
-
isIosPlatform() {
|
|
2203
|
-
return i1$1.isIos() || this.isSafariBrowser();
|
|
2204
|
-
}
|
|
2205
2189
|
/**
|
|
2206
2190
|
* When caption floating is enabled and placeholder is given, do not show placeholder until user focuses on the field
|
|
2207
2191
|
* When focused add the placeholder to the option which is selected
|
|
@@ -2211,23 +2195,33 @@
|
|
|
2211
2195
|
checkForFloatingLabel($event) {
|
|
2212
2196
|
const captionEl = $(this.selectEl.nativeElement).closest('.app-composite-widget.caption-floating');
|
|
2213
2197
|
if (captionEl.length > 0) {
|
|
2214
|
-
if (
|
|
2215
|
-
if (
|
|
2216
|
-
this.
|
|
2198
|
+
if ($event.type === 'focus' && (!this.datavalue || (this.datavalue && $(this.selectEl).find('select option:selected').text() === '' && this.placeholder))) {
|
|
2199
|
+
if (!(this.datavalue || this.placeholder)) {
|
|
2200
|
+
this.removePlaceholderOption();
|
|
2217
2201
|
}
|
|
2218
|
-
|
|
2202
|
+
else {
|
|
2219
2203
|
$(this.selectEl.nativeElement).find('option:first').text(this.placeholder);
|
|
2220
2204
|
}
|
|
2221
2205
|
}
|
|
2222
2206
|
else if (!this.datavalue) {
|
|
2223
|
-
|
|
2224
|
-
|
|
2225
|
-
if (!this.isIosPlatform()) {
|
|
2226
|
-
captionEl.removeClass('float-active');
|
|
2227
|
-
}
|
|
2228
|
-
}
|
|
2207
|
+
$(this.selectEl.nativeElement).find('option:selected').text('');
|
|
2208
|
+
captionEl.removeClass('float-active');
|
|
2229
2209
|
}
|
|
2230
2210
|
}
|
|
2211
|
+
else if (!(this.datavalue || this.placeholder)) {
|
|
2212
|
+
this.removePlaceholderOption();
|
|
2213
|
+
}
|
|
2214
|
+
}
|
|
2215
|
+
/*
|
|
2216
|
+
* Removing the placeholder option if no placeholder is provided.
|
|
2217
|
+
* In html we are hiding the placeholder option using css but in apple devices and safari option is showing.
|
|
2218
|
+
* */
|
|
2219
|
+
removePlaceholderOption() {
|
|
2220
|
+
const hiddenEle = $(this.selectEl.nativeElement).find('#placeholderOption');
|
|
2221
|
+
if (hiddenEle.length) {
|
|
2222
|
+
hiddenEle.remove();
|
|
2223
|
+
this.selectEl.nativeElement.value = '';
|
|
2224
|
+
}
|
|
2231
2225
|
}
|
|
2232
2226
|
static { this.ɵfac = function SelectComponent_Factory(t) { return new (t || SelectComponent)(i0__namespace.ɵɵdirectiveInject(i0__namespace.Injector), i0__namespace.ɵɵdirectiveInject(i1$1__namespace.App)); }; }
|
|
2233
2227
|
static { this.ɵcmp = /*@__PURE__*/ i0__namespace.ɵɵdefineComponent({ type: SelectComponent, selectors: [["wm-select"]], viewQuery: function SelectComponent_Query(rf, ctx) { if (rf & 1) {
|
|
@@ -2239,18 +2233,18 @@
|
|
|
2239
2233
|
i2.provideAs(SelectComponent, i2$1.NG_VALUE_ACCESSOR, true),
|
|
2240
2234
|
i2.provideAs(SelectComponent, i2$1.NG_VALIDATORS, true),
|
|
2241
2235
|
i2.provideAsWidgetRef(SelectComponent)
|
|
2242
|
-
]), i0__namespace.ɵɵInheritDefinitionFeature], decls: 5, vars:
|
|
2236
|
+
]), i0__namespace.ɵɵInheritDefinitionFeature], decls: 5, vars: 16, consts: [["role", "listbox", "aria-haspopup", "true", "aria-expanded", "false", "focus-target", "", 3, "ngClass", "disabled", "required", "tabindex", "ngModel", "multiple", "autofocus", "ngModelChange", "change", "focus", "blur"], ["select", ""], ["selected", "", "value", "undefined", "id", "placeholderOption", 3, "textContent", "hidden"], [4, "ngIf"], [3, "label", 4, "ngFor", "ngForOf"], [3, "label"], ["role", "option", 3, "value", "selected", "textContent", 4, "ngFor", "ngForOf"], ["role", "option", 3, "value", "selected", "textContent"]], template: function SelectComponent_Template(rf, ctx) { if (rf & 1) {
|
|
2243
2237
|
i0__namespace.ɵɵelementStart(0, "select", 0, 1);
|
|
2244
2238
|
i0__namespace.ɵɵlistener("ngModelChange", function SelectComponent_Template_select_ngModelChange_0_listener($event) { return ctx.modelByKey = $event; })("change", function SelectComponent_Template_select_change_0_listener($event) { return ctx.onSelectValueChange($event); })("focus", function SelectComponent_Template_select_focus_0_listener($event) { return ctx.checkForFloatingLabel($event); })("blur", function SelectComponent_Template_select_blur_0_listener($event) { ctx.invokeOnTouched($event); return ctx.checkForFloatingLabel($event); });
|
|
2245
|
-
i0__namespace.ɵɵ
|
|
2239
|
+
i0__namespace.ɵɵelement(2, "option", 2);
|
|
2246
2240
|
i0__namespace.ɵɵtemplate(3, SelectComponent_ng_container_3_Template, 2, 1, "ng-container", 3);
|
|
2247
2241
|
i0__namespace.ɵɵtemplate(4, SelectComponent_ng_container_4_Template, 2, 1, "ng-container", 3);
|
|
2248
2242
|
i0__namespace.ɵɵelementEnd();
|
|
2249
2243
|
} if (rf & 2) {
|
|
2250
|
-
i0__namespace.ɵɵproperty("ngClass", i0__namespace.ɵɵpureFunction1(
|
|
2244
|
+
i0__namespace.ɵɵproperty("ngClass", i0__namespace.ɵɵpureFunction1(14, _c1$6, ctx.class))("disabled", ctx.disabled)("required", ctx.required)("tabindex", ctx.tabindex)("ngModel", ctx.modelByKey)("multiple", ctx.multiple)("autofocus", ctx.autofocus);
|
|
2251
2245
|
i0__namespace.ɵɵattribute("name", ctx.name)("aria-label", ctx.hint)("aria-multiselectable", ctx.multiple);
|
|
2252
2246
|
i0__namespace.ɵɵadvance(2);
|
|
2253
|
-
i0__namespace.ɵɵproperty("
|
|
2247
|
+
i0__namespace.ɵɵproperty("textContent", ctx.placeholder)("hidden", !ctx.placeholder);
|
|
2254
2248
|
i0__namespace.ɵɵadvance(1);
|
|
2255
2249
|
i0__namespace.ɵɵproperty("ngIf", ctx.groupby);
|
|
2256
2250
|
i0__namespace.ɵɵadvance(1);
|
|
@@ -2263,7 +2257,7 @@
|
|
|
2263
2257
|
i2.provideAs(SelectComponent, i2$1.NG_VALUE_ACCESSOR, true),
|
|
2264
2258
|
i2.provideAs(SelectComponent, i2$1.NG_VALIDATORS, true),
|
|
2265
2259
|
i2.provideAsWidgetRef(SelectComponent)
|
|
2266
|
-
], template: "<select role=\"listbox\" aria-haspopup=\"true\" aria-expanded=\"false\" #select\n focus-target\n [ngClass]=\"['app-select form-control', class]\"\n [disabled]=\"disabled\"\n [required]=\"required\"\n [tabindex]=\"tabindex\"\n [(ngModel)]=\"modelByKey\"\n [multiple]=\"multiple\"\n (change)=\"onSelectValueChange($event)\"\n (focus)=\"checkForFloatingLabel($event)\"\n (blur)=\"invokeOnTouched($event); checkForFloatingLabel($event)\"\n [attr.name]=\"name\"\n [attr.aria-label]=\"hint\"\n [attr.aria-multiselectable]=\"multiple\"\n [autofocus]=\"autofocus\"\n
|
|
2260
|
+
], template: "<select role=\"listbox\" aria-haspopup=\"true\" aria-expanded=\"false\" #select\n focus-target\n [ngClass]=\"['app-select form-control', class]\"\n [disabled]=\"disabled\"\n [required]=\"required\"\n [tabindex]=\"tabindex\"\n [(ngModel)]=\"modelByKey\"\n [multiple]=\"multiple\"\n (change)=\"onSelectValueChange($event)\"\n (focus)=\"checkForFloatingLabel($event)\"\n (blur)=\"invokeOnTouched($event); checkForFloatingLabel($event)\"\n [attr.name]=\"name\"\n [attr.aria-label]=\"hint\"\n [attr.aria-multiselectable]=\"multiple\"\n [autofocus]=\"autofocus\">\n\n <option selected\n value=\"undefined\"\n [textContent]=\"placeholder\"\n id=\"placeholderOption\"\n [hidden]=\"!placeholder\"></option>\n\n <ng-container *ngIf=\"groupby\">\n <optgroup *ngFor=\"let groupObj of groupedData\"\n [label]=\"groupObj.key\">\n <option *ngFor=\"let item of groupObj.data;\"\n [value]=\"item.key\"\n [selected]=\"item.selected\"\n [textContent]=\"item.label\"\n role=\"option\"></option>\n </optgroup>\n </ng-container>\n\n <ng-container *ngIf=\"!groupby\">\n <option *ngFor=\"let item of datasetItems\"\n [value]=\"item.key\"\n [selected]=\"item.selected\"\n [textContent]=\"item.label\"\n role=\"option\"></option>\n </ng-container>\n</select>\n" }]
|
|
2267
2261
|
}], function () { return [{ type: i0__namespace.Injector }, { type: i1$1__namespace.App }]; }, { selectEl: [{
|
|
2268
2262
|
type: i0.ViewChild,
|
|
2269
2263
|
args: ['select', { static: true, read: i0.ElementRef }]
|
|
@@ -3149,8 +3143,7 @@
|
|
|
3149
3143
|
// isSelectMultiple is set to true when for select widget, multiple option is enabled
|
|
3150
3144
|
// Checking inputEl focus - when form is represented as dialog and the first field is automatically in focus
|
|
3151
3145
|
const isInputElFocused = this.inputEl && this.inputEl.is(':focus');
|
|
3152
|
-
|
|
3153
|
-
if ((data.isSelect && localName == 'select') || data.displayVal || data.isFocused || data.isSelectMultiple || isInputElFocused) {
|
|
3146
|
+
if (data.displayVal || data.isFocused || data.isSelectMultiple || isInputElFocused) {
|
|
3154
3147
|
data.nativeEl.addClass('float-active');
|
|
3155
3148
|
if (!data.displayVal && isInputElFocused) {
|
|
3156
3149
|
this.inputEl.attr('placeholder', this.placeholder);
|
|
@@ -123,8 +123,7 @@ export class CaptionPositionDirective {
|
|
|
123
123
|
// isSelectMultiple is set to true when for select widget, multiple option is enabled
|
|
124
124
|
// Checking inputEl focus - when form is represented as dialog and the first field is automatically in focus
|
|
125
125
|
const isInputElFocused = this.inputEl && this.inputEl.is(':focus');
|
|
126
|
-
|
|
127
|
-
if ((data.isSelect && localName == 'select') || data.displayVal || data.isFocused || data.isSelectMultiple || isInputElFocused) {
|
|
126
|
+
if (data.displayVal || data.isFocused || data.isSelectMultiple || isInputElFocused) {
|
|
128
127
|
data.nativeEl.addClass('float-active');
|
|
129
128
|
if (!data.displayVal && isInputElFocused) {
|
|
130
129
|
this.inputEl.attr('placeholder', this.placeholder);
|
|
@@ -167,4 +166,4 @@ export class CaptionPositionDirective {
|
|
|
167
166
|
selector: '[wmCaptionPosition]'
|
|
168
167
|
}]
|
|
169
168
|
}], function () { return [{ type: i0.Injector }, { type: i1.App }]; }, null); })();
|
|
170
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FwdGlvbi1wb3NpdGlvbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3dpZGdldHMvaW5wdXQvZGVmYXVsdC9zcmMvY2FwdGlvbi1wb3NpdGlvbi5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQixTQUFTLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBb0IsTUFBTSxlQUFlLENBQUM7QUFDaEcsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLFVBQVUsQ0FBQzs7O0FBTTdCLE1BQU0sT0FBTyx3QkFBd0I7SUFjakMsWUFBWSxHQUFhLEVBQUUsR0FBUTtRQUhuQyxrREFBa0Q7UUFDMUMsNkJBQXdCLEdBQWEsQ0FBQyxVQUFVLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUd4SixJQUFJLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQztRQUM5QyxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztJQUNuQixDQUFDO0lBRU8sUUFBUTtRQUNaLElBQUksY0FBYyxDQUFDO1FBQ25CLHNHQUFzRztRQUN0RyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsRUFBRTtZQUNsRSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRTtnQkFDM0IsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsUUFB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QUksQ0FBQyxhQUFhLENBQUMsQ0FBQzs0QkFDcEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUM7eUJBQzFDO3FCQUNKO2lCQUNKO2FBQ0o7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxJQUFJLENBQUMsMEJBQTBCLEVBQUU7WUFDakMsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7U0FDckM7UUFDRCxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDcEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLEVBQUUsQ0FBQztTQUNuQztJQUNMLENBQUM7eUZBakxRLHdCQUF3QjtvRUFBeEIsd0JBQXdCOzt1RkFBeEIsd0JBQXdCO2NBSHBDLFNBQVM7ZUFBQztnQkFDUCxRQUFRLEVBQUUscUJBQXFCO2FBQ2xDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBZnRlclZpZXdJbml0LCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEluamVjdG9yLCBPbkRlc3Ryb3ksIE9uSW5pdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0FwcH0gZnJvbSAnQHdtL2NvcmUnO1xuXG5kZWNsYXJlIGNvbnN0IF8sICQ7XG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1t3bUNhcHRpb25Qb3NpdGlvbl0nXG59KVxuZXhwb3J0IGNsYXNzIENhcHRpb25Qb3NpdGlvbkRpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY7XG4gICAgcHJpdmF0ZSBpbnB1dEVsO1xuICAgIHByaXZhdGUgbmF0aXZlRWw7XG4gICAgcHJpdmF0ZSBjb21wb3NpdGVFbGU7XG4gICAgcHJpdmF0ZSBhcHA6IEFwcDtcbiAgICBwcml2YXRlIGxhYmVsQW5pbWF0aW9uU3Vic2NyaXB0aW9uO1xuICAgIHByaXZhdGUgcGxhY2Vob2xkZXI7XG4gICAgcHJpdmF0ZSBfYXR0ck9ic2VydmVyO1xuICAgIHByaXZhdGUgX2lzUGxhY2Vob2xkZXJCb3VuZDtcblxuICAgIC8vIHNraXAgZmxvYXRpbmcgY2FwdGlvbiBmb3IgdGhlIGJlbG93IGZvcm0gZmllbGRzXG4gICAgcHJpdmF0ZSBza2lwRmxvYXRQb3NpdGlvbldpZGdldHM6IHN0cmluZ1tdID0gWydyYWRpb3NldCcsICdjaGVja2JveHNldCcsICdyaWNodGV4dCcsICdzd2l0Y2gnLCAnY2hpcHMnLCAnY2hlY2tib3gnLCAnc2xpZGVyJywgJ3JhdGluZycsICd0b2dnbGUnLCAndXBsb2FkJ107XG5cbiAgICBjb25zdHJ1Y3Rvcihpbmo6IEluamVjdG9yLCBhcHA6IEFwcCkge1xuICAgICAgICB0aGlzLmVsZW1lbnRSZWYgPSBpbmouZ2V0KEVsZW1lbnRSZWYpO1xuICAgICAgICB0aGlzLm5hdGl2ZUVsID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIHRoaXMuYXBwID0gYXBwO1xuICAgIH1cblxuICAgIHByaXZhdGUgb25CbHVyQ2IoKSB7IC8vIG9uIGJsdXIsIHJlbW92ZSBhbmltYXRpb24gYW5kIHBsYWNlaG9sZGVyIGlmIHRoZXJlIGlzIG5vIHZhbHVlXG4gICAgICAgIGxldCBtb2JpbGVJbnB1dFZhbDtcbiAgICAgICAgLy8gSW4gY2FzZSBvZiBtb2JpbGUgZGF0ZSAvIHRpbWUgcGlja2VyIGNoZWNrIGZvciBpbnB1dCBlbGVtZW50J3MgdmFsdWUgd2hpY2ggaGFzICdtb2JpbGUtaW5wdXQnIGNsYXNzXG4gICAgICAgIGlmICh0aGlzLmlucHV0RWwubGVuZ3RoID4gMSAmJiB0aGlzLmlucHV0RWwuaGFzQ2xhc3MoJ21vYmlsZS1pbnB1dCcpKSB7XG4gICAgICAgICAgICBfLmZvckVhY2godGhpcy5pbnB1dEVsLCAoZWwpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoJChlbCkuaGFzQ2xhc3MoJ21vYmlsZS1pbnB1dCcpICYmIGVsLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIG1vYmlsZUlucHV0VmFsID0gZWwudmFsdWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLmlucHV0RWwudmFsKCkgJiYgIW1vYmlsZUlucHV0VmFsKSB7XG4gICAgICAgICAgICB0aGlzLmNvbXBvc2l0ZUVsZS5jbGFzc0xpc3QucmVtb3ZlKCdmbG9hdC1hY3RpdmUnKTtcbiAgICAgICAgICAgIHRoaXMuaW5wdXRFbC5yZW1vdmVBdHRyKCdwbGFjZWhvbGRlcicpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvbkZvY3VzQ2IoKSB7IC8vICBvbiBmb2N1cywgYWRkIGFuaW1hdGlvbiBjbGFzcyBhbmQgdGhlIHBsYWNlIGhvbGRlclxuICAgICAgICB0aGlzLmNvbXBvc2l0ZUVsZS5jbGFzc0xpc3QuYWRkKCdmbG9hdC1hY3RpdmUnKTtcbiAgICAgICAgdGhpcy5pbnB1dEVsLmF0dHIoJ3BsYWNlaG9sZGVyJywgdGhpcy5wbGFjZWhvbGRlcik7XG4gICAgfVxuXG4gICAgLy8gRm9yIHNlbGVjdCB3aWRnZXQsIGRpc3BsYXkgcGxhY2Vob2xkZXIgb25seSBvbiBmb2N1cyBlbHNlIHJlbW92ZSB0aGUgdGV4dCBvZiB0aGUgb3B0aW9uIHNlbGVjdGVkLlxuICAgIHByaXZhdGUgY2hlY2tGb3JTZWxlY3RQbGFjZWhvbGRlcigpIHtcbiAgICAgICAgaWYgKCQodGhpcy5uYXRpdmVFbCkuZmluZCgnc2VsZWN0IG9wdGlvbjpzZWxlY3RlZCcpLnRleHQoKSAmJiAhJCh0aGlzLm5hdGl2ZUVsKS5maW5kKCdzZWxlY3QnKS5pcygnOmZvY3VzJykgJiZcbiAgICAgICAgICAgICEkKHRoaXMuaW5wdXRFbC5jbG9zZXN0KCdbd2lkZ2V0LWlkXScpKS5hdHRyKCdkYXRhdmFsdWUnKSkge1xuICAgICAgICAgICAgJCh0aGlzLm5hdGl2ZUVsKS5maW5kKCdzZWxlY3Qgb3B0aW9uOnNlbGVjdGVkJykudGV4dCgnJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNldERlZmF1bHRWYWx1ZUFuaW1hdGlvbigpIHsgLy8gc2V0IGFuaW1hdGlvbiB3aGVuIGRlZmF1bHQgdmFsdWVzIGFyZSBwcmVzZW50XG4gICAgICAgIC8vIHJlbW92ZSBwbGFjZWhvbGRlciB3aGVuIHRoZSBpbnB1dCBlbCBoYXMgcGxhY2Vob2xkZXIgYW5kIHRoZSBwbGFjZWhvbGRlciBpcyBub3QgYm91bmQgdG8gYW55IHZhcmlhYmxlXG4gICAgICAgIGlmICghdGhpcy5faXNQbGFjZWhvbGRlckJvdW5kICYmIHRoaXMuaW5wdXRFbC5hdHRyKCdwbGFjZWhvbGRlcicpKSB7XG4gICAgICAgICAgICB0aGlzLnBsYWNlaG9sZGVyID0gdGhpcy5pbnB1dEVsLmF0dHIoJ3BsYWNlaG9sZGVyJyk7XG4gICAgICAgICAgICB0aGlzLmlucHV0RWwucmVtb3ZlQXR0cigncGxhY2Vob2xkZXInKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIERvIG5vdCBzaG93IHBsYWNlaG9sZGVyIGFzIHNlbGVjdGVkIGJ5IGRlZmF1bHRcbiAgICAgICAgdGhpcy5jaGVja0ZvclNlbGVjdFBsYWNlaG9sZGVyKCk7XG5cbiAgICAgICAgLy8gY2hlY2sgZm9yIGRhdGF2YWx1ZSBhdHRyaWJ1dGUgaW4gY29tcG9zaXRlIGVsZW1lbnQgYW5kIGRlZmF1bHR2YWx1ZSBhdHRyaWJ1dGUgaW4gZm9ybSBmaWVsZCBlbGVtZW50XG4gICAgICAgIC8vIGNoZWNrIGZvciBkYXRhdmFsdWUuYmluZCBhdHRyaWJ1dGUgdG8gc2VlIHdoZXRoZXIgZGVmYXVsdCB2YWx1ZSBpcyBiaW5kZWQgdmlhIGV4cHJlc3Npb24gb3IgYSB2YXJpYWJsZVxuICAgICAgICAvLyBjaGVjayBmb3IgZGlzcGxheWZvcm1hdCBhdHRyaWJ1dGUsIGFzIGluIGZvcm0gZmllbGRzIHVzZXIgY2FuIHNldCBkaXNwbGF5IGZvcm1hdCB0byB0aGUgZmllbGRcbiAgICAgICAgLy8gY2hlY2sgZm9yIGZvcm1kYXRhL2JpbmRmb3JtZGF0YSBhdHRyaWJ1dGUgdG8gc2VlIGlmIGFueSBkZWZhdWx0IHZhbHVlIGlzIGJpbmRlZCB0byB0aGUgZm9ybVxuICAgICAgICAvLyBjaGVjayBmb3Igc2VsZWN0IHRhZyB3aXRoIG11bHRpcGxlIGF0dHJpYnV0ZSBlbmFibGVkXG5cbiAgICAgICAgaWYgKCh0aGlzLmlucHV0RWwudmFsKCkgJiYgIXRoaXMuaW5wdXRFbC5pcygnc2VsZWN0JykpIHx8ICQodGhpcy5pbnB1dEVsLmNsb3Nlc3QoJ1t3aWRnZXQtaWRdJykpLmF0dHIoJ2RhdGF2YWx1ZScpIHx8ICQodGhpcy5pbnB1dEVsLnBhcmVudCgnW3dpZGdldC1pZF0nKSkuYXR0cignZGF0YXZhbHVlLmJpbmQnKSB8fCB0aGlzLm5hdGl2ZUVsLmdldEF0dHJpYnV0ZSgnZGVmYXVsdHZhbHVlJylcbiAgICAgICAgICAgIHx8IHRoaXMubmF0aXZlRWwuZ2V0QXR0cmlidXRlKCdkaXNwbGF5Zm9ybWF0JykgfHwgJCh0aGlzLm5hdGl2ZUVsKS5maW5kKCdzZWxlY3Qgb3B0aW9uOnNlbGVjdGVkJykudGV4dCgpIHx8ICQodGhpcy5uYXRpdmVFbCkuZmluZCgnc2VsZWN0JykuYXR0cignbXVsdGlwbGUnKSkge1xuICAgICAgICAgICAgdGhpcy5jb21wb3NpdGVFbGUuY2xhc3NMaXN0LmFkZCgnZmxvYXQtYWN0aXZlJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBPYnNlcnZpbmcgcGxhY2Vob2xkZXIgYXR0cmlidXRlIGNoYW5nZSBvbiBET00gaW5zdGVhZCBvZiBoYXZpbmcgYSBwcm9wQ2hhbmdlSGFuZGxlciBmblxuICAgICAqIEZvciBjb21wb3NpdGUgd2lkZ2V0cyBwcm9wZXJ0eWNoYW5nZWhhbmRsZXIgZnVuY3Rpb24gaXMgaW52b2tlZCBhdCBpbmRlcGVuZGVudCB3aWRnZXRzIHdoZXJlIGFzIHRoZSBkaXJlY3RpdmUgaXMgYXQgY29tcG9zaXRlIGxldmVsXG4gICAgICovXG4gICAgcHJpdmF0ZSBvYnNlcnZlRm9yUGxhY2Vob2xkZXJBdHRyQ2hhbmdlKCkge1xuICAgICAgICB0aGlzLl9hdHRyT2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcihtdXRhdGlvbnMgPT4ge1xuICAgICAgICAgICAgbXV0YXRpb25zLmZvckVhY2goKG11dGF0aW9uKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKG11dGF0aW9uLmF0dHJpYnV0ZU5hbWUgPT09ICdwbGFjZWhvbGRlcicgJiYgdGhpcy5pbnB1dEVsLmF0dHIoJ3BsYWNlaG9sZGVyJykgJiYgIXRoaXMuY29tcG9zaXRlRWxlLmNsYXNzTGlzdC5jb250YWlucygnZmxvYXQtYWN0aXZlJykpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wbGFjZWhvbGRlciA9IHRoaXMuaW5wdXRFbC5hdHRyKCdwbGFjZWhvbGRlcicpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlucHV0RWwucmVtb3ZlQXR0cigncGxhY2Vob2xkZXInKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IGNvbmZpZyA9IHsgYXR0cmlidXRlczogdHJ1ZSwgY2hpbGRMaXN0OiBmYWxzZSwgY2hhcmFjdGVyRGF0YTogZmFsc2UgfTtcbiAgICAgICAgdGhpcy5fYXR0ck9ic2VydmVyLm9ic2VydmUodGhpcy5pbnB1dEVsWzBdLCBjb25maWcpO1xuICAgIH1cblxuICAgIC8vIHdoZW4gYSBmb3JtIGlzIHJpZ2h0IGFsaWduZWQgYW5kIGhhdmUgaW5wdXQtZ3JvdXAtYnRuJ3MgbGlrZSBkYXRlIHBpY2tlciwgdGltZSBwaWNrZXIgZXRjLiBhZGp1c3QgdGhlIGNzcyB0byBub3Qgb3ZlcmxhcCB0aGUgbGFiZWwgb24gdGhlIGljb25cbiAgICBwcml2YXRlIGNoZWNrRm9yUmlnaHRBbGlnbmVkRm9ybSgpIHtcbiAgICAgICAgY29uc3QgJGNvbXBvc2l0ZUVsZSA9ICQodGhpcy5jb21wb3NpdGVFbGUpO1xuICAgICAgICBpZiAoJGNvbXBvc2l0ZUVsZS5jbG9zZXN0KCcuYWxpZ24tcmlnaHQnKS5sZW5ndGggJiYgJGNvbXBvc2l0ZUVsZS5maW5kKCcuaW5wdXQtZ3JvdXAtYnRuJykubGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25zdCAkbGFiZWwgPSAkY29tcG9zaXRlRWxlLmZpbmQoJ2xhYmVsJyk7XG4gICAgICAgICAgICBpZiAoJGNvbXBvc2l0ZUVsZS5maW5kKCdbd21kYXRldGltZV0nKS5sZW5ndGgpIHsgLy8gZm9yIGRhdGV0aW1lIHBpY2tlciwgYXMgdGhlcmUgd2lsbCBiZSAyIGljb25zIGNzcyBpcyBkaWZmZXJlbnRcbiAgICAgICAgICAgICAgICAkbGFiZWwuYWRkQ2xhc3MoJ2lucHV0LWdycC1kdC1pY29uJyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICRsYWJlbC5hZGRDbGFzcygnaW5wdXQtZ3JwLWljb24nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgdGhpcy5jb21wb3NpdGVFbGUgPSB0aGlzLm5hdGl2ZUVsO1xuICAgICAgICBjb25zdCB3aWRnZXQgPSB0aGlzLm5hdGl2ZUVsLndpZGdldDtcbiAgICAgICAgbGV0IGNhcHRpb25Qb3NpdGlvbjogc3RyaW5nID0gd2lkZ2V0LiRhdHRycy5nZXQoJ2NhcHRpb25wb3NpdGlvbicpO1xuICAgICAgICBpZiAod2lkZ2V0LmZvcm0pIHtcbiAgICAgICAgICAgIGNhcHRpb25Qb3NpdGlvbiA9IHdpZGdldC5mb3JtLiRhdHRycy5nZXQoJ2NhcHRpb25wb3NpdGlvbicpO1xuICAgICAgICAgICAgdGhpcy5jb21wb3NpdGVFbGUgPSB0aGlzLm5hdGl2ZUVsLnF1ZXJ5U2VsZWN0b3IoJy5hcHAtY29tcG9zaXRlLXdpZGdldCcpO1xuICAgICAgICAgICAgdGhpcy5faXNQbGFjZWhvbGRlckJvdW5kID0gdGhpcy5uYXRpdmVFbC5nZXRBdHRyaWJ1dGUoJ3BsYWNlaG9sZGVyLmJpbmQnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2FwdGlvblBvc2l0aW9uID09PSAnZmxvYXRpbmcnKSB7XG4gICAgICAgICAgICBpZiAod2lkZ2V0LmZvcm0pIHsgLy8gZm9yIGZvcm0tZmllbGRzIHJlbW92ZSBjYXB0aW9uLWZsb2F0aW5nIGFuZCByZXBsYWNlIGl0IHdpdGggY2FwdGlvbi1mbG9hdCBvciBjYXB0aW9uLXRvcFxuICAgICAgICAgICAgICAgIGNvbnN0IHdpZGdldFR5cGU6IHN0cmluZyA9IHRoaXMubmF0aXZlRWwuZ2V0QXR0cmlidXRlKCd3aWRnZXR0eXBlJyk7IC8vIGZldGNoZXMgdGhlIGZvcm0gZmllbGQgdHlwZVxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnNraXBGbG9hdFBvc2l0aW9uV2lkZ2V0cy5pbmRleE9mKHdpZGdldFR5cGUpID4gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21wb3NpdGVFbGUuY2xhc3NMaXN0LnJlbW92ZSgnY2FwdGlvbi1mbG9hdGluZycpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbXBvc2l0ZUVsZS5jbGFzc0xpc3QuYWRkKCdjYXB0aW9uLXRvcCcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLmNoZWNrRm9yUmlnaHRBbGlnbmVkRm9ybSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5pbnB1dEVsID0gJCh0aGlzLm5hdGl2ZUVsKS5maW5kKCdpbnB1dCwgc2VsZWN0LCB0ZXh0YXJlYScpO1xuICAgICAgICAgICAgaWYgKCF0aGlzLl9pc1BsYWNlaG9sZGVyQm91bmQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9pc1BsYWNlaG9sZGVyQm91bmQgPSB0aGlzLmlucHV0RWwuY2xvc2VzdCgnW3dpZGdldC1pZF0nKS5hdHRyKCdwbGFjZWhvbGRlci5iaW5kJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBjYWxsIHRoZSBiZWxvdyBmdW5jdGlvbiB0byBhcHBseSBmbG9hdC1hY3RpdmUgY2xhc3Mgd2hlbiB0aGVyZSBhcmUgZGVmYXVsdCB2YWx1ZXMgdG8gdGhlIGZpZWxkc1xuICAgICAgICAgICAgc2V0VGltZW91dCh0aGlzLnNldERlZmF1bHRWYWx1ZUFuaW1hdGlvbi5iaW5kKHRoaXMpLCAwKTtcblxuICAgICAgICAgICAgdGhpcy5pbnB1dEVsLmZvY3VzKHRoaXMub25Gb2N1c0NiLmJpbmQodGhpcykpO1xuICAgICAgICAgICAgdGhpcy5pbnB1dEVsLmJsdXIodGhpcy5vbkJsdXJDYi5iaW5kKHRoaXMpKTtcblxuICAgICAgICAgICAgLy8gb2JzZXJ2ZSBmb3IgcGxhY2Vob2xkZXIgYXR0cmlidXRlIGNoYW5nZSB3aGVuIHBsYWNlaG9sZGVyIGlzIGJvdW5kIHZpYSBkYiB2YXJpYWJsZSBvciBhbiBleHByZXNzaW9uXG4gICAgICAgICAgICBpZiAodGhpcy5faXNQbGFjZWhvbGRlckJvdW5kKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vYnNlcnZlRm9yUGxhY2Vob2xkZXJBdHRyQ2hhbmdlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBjYXB0aW9uUG9zaXRpb25BbmltYXRlIGlzIG9ubHkgbm90aWZpZWQgZm9yIGRhdGUtdGltZSwgdGltZSBhbmQgc2VhcmNoIHdpZGdldHMgYXMgaW5wdXQgZWwgaXMgbm90IHVwZGF0ZWQgd2l0aCB2YWx1ZSBvbiBzZWxlY3Rpb24gb2YgZHJvcGRvd24vcG9wdXBzXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMubGFiZWxBbmltYXRpb25TdWJzY3JpcHRpb24gPSB0aGlzLmFwcC5zdWJzY3JpYmUoJ2NhcHRpb25Qb3NpdGlvbkFuaW1hdGUnLCAoZGF0YSkgPT4ge1xuICAgICAgICAgICAgLy8gZGlzcGxheVZhbCBpcyB0cnVlIHdoZW4gdGhlcmUgaXMgYSB2YWx1ZSBlbnRlcmVkIGluIHRoZSBpbnB1dCBmaWVsZFxuICAgICAgICAgICAgLy8gSW4gY2FzZSBvZiBmb3JtIGZpZWxkcywgd2hlbiB0aGUgZmllbGQgaXMgaW4gZm9jdXMsIGlzRm9jdXNlZCB3aWxsIGJlIHNldCBhcyB0cnVlXG4gICAgICAgICAgICAvLyBpc1NlbGVjdE11bHRpcGxlIGlzIHNldCB0byB0cnVlIHdoZW4gZm9yIHNlbGVjdCB3aWRnZXQsIG11bHRpcGxlIG9wdGlvbiBpcyBlbmFibGVkXG4gICAgICAgICAgICAvLyBDaGVja2luZyBpbnB1dEVsIGZvY3VzIC0gd2hlbiBmb3JtIGlzIHJlcHJlc2VudGVkIGFzIGRpYWxvZyBhbmQgdGhlIGZpcnN0IGZpZWxkIGlzIGF1dG9tYXRpY2FsbHkgaW4gZm9jdXNcbiAgICAgICAgICAgIGNvbnN0IGlzSW5wdXRFbEZvY3VzZWQgPSB0aGlzLmlucHV0RWwgJiYgdGhpcy5pbnB1dEVsLmlzKCc6Zm9jdXMnKTtcbiAgICAgICAgICAgIGNvbnN0IGxvY2FsTmFtZSA9IHRoaXMuaW5wdXRFbCAmJiB0aGlzLmlucHV0RWwubGVuZ3RoICYmIHRoaXMuaW5wdXRFbFswXS5sb2NhbE5hbWU7XG4gICAgICAgICAgICBpZiAoKGRhdGEuaXNTZWxlY3QgJiYgbG9jYWxOYW1lID09ICdzZWxlY3QnKSB8fCBkYXRhLmRpc3BsYXlWYWwgfHwgZGF0YS5pc0ZvY3VzZWQgfHwgZGF0YS5pc1NlbGVjdE11bHRpcGxlIHx8IGlzSW5wdXRFbEZvY3VzZWQpIHtcbiAgICAgICAgICAgICAgICBkYXRhLm5hdGl2ZUVsLmFkZENsYXNzKCdmbG9hdC1hY3RpdmUnKTtcbiAgICAgICAgICAgICAgICBpZiAoIWRhdGEuZGlzcGxheVZhbCAmJiBpc0lucHV0RWxGb2N1c2VkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRFbC5hdHRyKCdwbGFjZWhvbGRlcicsIHRoaXMucGxhY2Vob2xkZXIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZGF0YS5uYXRpdmVFbC5yZW1vdmVDbGFzcygnZmxvYXQtYWN0aXZlJyk7XG4gICAgICAgICAgICAgICAgLy8gUmVtb3ZlIHBsYWNlaG9sZGVyIG9uIHJlbW92aW5nIGZsb2F0LWFjdGl2ZSwgaWYgbm90IHRoZSBsYWJlbCBhbmQgcGxhY2Vob2xkZXIgYXJlIGNvbGxpZGVkXG4gICAgICAgICAgICAgICAgLy8gYmVmb3JlIHBsYWNlaG9sZGVyIGlzIHJlbW92ZWQgYXNzaWduIGl0IHRvIHRoZSBwbGFjZWhvbGRlciB2YXJpYWJsZVxuICAgICAgICAgICAgICAgIC8vIGNoZWNrIGZvciBwbGFjZWhvbGRlciBpbiBpbnB1dGVsIGFuZCBzZWxlY3RlbFxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlucHV0RWwpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0RWwgPSB0aGlzLmlucHV0RWwuZmluZCgnb3B0aW9uOmZpcnN0Jyk7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmlucHV0RWwuYXR0cigncGxhY2Vob2xkZXInKSB8fCBzZWxlY3RFbC50ZXh0KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZWxlY3RFbC5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RFbC50ZXh0KCcnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wbGFjZWhvbGRlciA9IHRoaXMuaW5wdXRFbC5hdHRyKCdwbGFjZWhvbGRlcicpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRFbC5yZW1vdmVBdHRyKCdwbGFjZWhvbGRlcicpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgaWYgKHRoaXMubGFiZWxBbmltYXRpb25TdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICAgIHRoaXMubGFiZWxBbmltYXRpb25TdWJzY3JpcHRpb24oKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5fYXR0ck9ic2VydmVyKSB7XG4gICAgICAgICAgICB0aGlzLl9hdHRyT2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
|
|
169
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FwdGlvbi1wb3NpdGlvbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3dpZGdldHMvaW5wdXQvZGVmYXVsdC9zcmMvY2FwdGlvbi1wb3NpdGlvbi5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQixTQUFTLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBb0IsTUFBTSxlQUFlLENBQUM7QUFDaEcsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLFVBQVUsQ0FBQzs7O0FBTTdCLE1BQU0sT0FBTyx3QkFBd0I7SUFjakMsWUFBWSxHQUFhLEVBQUUsR0FBUTtRQUhuQyxrREFBa0Q7UUFDMUMsNkJBQXdCLEdBQWEsQ0FBQyxVQUFVLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUd4SixJQUFJLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQztRQUM5QyxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztJQUNuQixDQUFDO0lBRU8sUUFBUTtRQUNaLElBQUksY0FBYyxDQUFDO1FBQ25CLHNHQUFzRztRQUN0RyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsRUFBRTtZQUNsRSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRTtnQkFDM0IsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsUUFB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RUFBRTtZQUNqQyxJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztTQUNyQztRQUNELElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUNwQixJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsRUFBRSxDQUFDO1NBQ25DO0lBQ0wsQ0FBQzt5RkFoTFEsd0JBQXdCO29FQUF4Qix3QkFBd0I7O3VGQUF4Qix3QkFBd0I7Y0FIcEMsU0FBUztlQUFDO2dCQUNQLFFBQVEsRUFBRSxxQkFBcUI7YUFDbEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FmdGVyVmlld0luaXQsIERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSW5qZWN0b3IsIE9uRGVzdHJveSwgT25Jbml0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QXBwfSBmcm9tICdAd20vY29yZSc7XG5cbmRlY2xhcmUgY29uc3QgXywgJDtcbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW3dtQ2FwdGlvblBvc2l0aW9uXSdcbn0pXG5leHBvcnQgY2xhc3MgQ2FwdGlvblBvc2l0aW9uRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZjtcbiAgICBwcml2YXRlIGlucHV0RWw7XG4gICAgcHJpdmF0ZSBuYXRpdmVFbDtcbiAgICBwcml2YXRlIGNvbXBvc2l0ZUVsZTtcbiAgICBwcml2YXRlIGFwcDogQXBwO1xuICAgIHByaXZhdGUgbGFiZWxBbmltYXRpb25TdWJzY3JpcHRpb247XG4gICAgcHJpdmF0ZSBwbGFjZWhvbGRlcjtcbiAgICBwcml2YXRlIF9hdHRyT2JzZXJ2ZXI7XG4gICAgcHJpdmF0ZSBfaXNQbGFjZWhvbGRlckJvdW5kO1xuXG4gICAgLy8gc2tpcCBmbG9hdGluZyBjYXB0aW9uIGZvciB0aGUgYmVsb3cgZm9ybSBmaWVsZHNcbiAgICBwcml2YXRlIHNraXBGbG9hdFBvc2l0aW9uV2lkZ2V0czogc3RyaW5nW10gPSBbJ3JhZGlvc2V0JywgJ2NoZWNrYm94c2V0JywgJ3JpY2h0ZXh0JywgJ3N3aXRjaCcsICdjaGlwcycsICdjaGVja2JveCcsICdzbGlkZXInLCAncmF0aW5nJywgJ3RvZ2dsZScsICd1cGxvYWQnXTtcblxuICAgIGNvbnN0cnVjdG9yKGluajogSW5qZWN0b3IsIGFwcDogQXBwKSB7XG4gICAgICAgIHRoaXMuZWxlbWVudFJlZiA9IGluai5nZXQoRWxlbWVudFJlZik7XG4gICAgICAgIHRoaXMubmF0aXZlRWwgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICAgICAgdGhpcy5hcHAgPSBhcHA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvbkJsdXJDYigpIHsgLy8gb24gYmx1ciwgcmVtb3ZlIGFuaW1hdGlvbiBhbmQgcGxhY2Vob2xkZXIgaWYgdGhlcmUgaXMgbm8gdmFsdWVcbiAgICAgICAgbGV0IG1vYmlsZUlucHV0VmFsO1xuICAgICAgICAvLyBJbiBjYXNlIG9mIG1vYmlsZSBkYXRlIC8gdGltZSBwaWNrZXIgY2hlY2sgZm9yIGlucHV0IGVsZW1lbnQncyB2YWx1ZSB3aGljaCBoYXMgJ21vYmlsZS1pbnB1dCcgY2xhc3NcbiAgICAgICAgaWYgKHRoaXMuaW5wdXRFbC5sZW5ndGggPiAxICYmIHRoaXMuaW5wdXRFbC5oYXNDbGFzcygnbW9iaWxlLWlucHV0JykpIHtcbiAgICAgICAgICAgIF8uZm9yRWFjaCh0aGlzLmlucHV0RWwsIChlbCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICgkKGVsKS5oYXNDbGFzcygnbW9iaWxlLWlucHV0JykgJiYgZWwudmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgbW9iaWxlSW5wdXRWYWwgPSBlbC52YWx1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuaW5wdXRFbC52YWwoKSAmJiAhbW9iaWxlSW5wdXRWYWwpIHtcbiAgICAgICAgICAgIHRoaXMuY29tcG9zaXRlRWxlLmNsYXNzTGlzdC5yZW1vdmUoJ2Zsb2F0LWFjdGl2ZScpO1xuICAgICAgICAgICAgdGhpcy5pbnB1dEVsLnJlbW92ZUF0dHIoJ3BsYWNlaG9sZGVyJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIG9uRm9jdXNDYigpIHsgLy8gIG9uIGZvY3VzLCBhZGQgYW5pbWF0aW9uIGNsYXNzIGFuZCB0aGUgcGxhY2UgaG9sZGVyXG4gICAgICAgIHRoaXMuY29tcG9zaXRlRWxlLmNsYXNzTGlzdC5hZGQoJ2Zsb2F0LWFjdGl2ZScpO1xuICAgICAgICB0aGlzLmlucHV0RWwuYXR0cigncGxhY2Vob2xkZXInLCB0aGlzLnBsYWNlaG9sZGVyKTtcbiAgICB9XG5cbiAgICAvLyBGb3Igc2VsZWN0IHdpZGdldCwgZGlzcGxheSBwbGFjZWhvbGRlciBvbmx5IG9uIGZvY3VzIGVsc2UgcmVtb3ZlIHRoZSB0ZXh0IG9mIHRoZSBvcHRpb24gc2VsZWN0ZWQuXG4gICAgcHJpdmF0ZSBjaGVja0ZvclNlbGVjdFBsYWNlaG9sZGVyKCkge1xuICAgICAgICBpZiAoJCh0aGlzLm5hdGl2ZUVsKS5maW5kKCdzZWxlY3Qgb3B0aW9uOnNlbGVjdGVkJykudGV4dCgpICYmICEkKHRoaXMubmF0aXZlRWwpLmZpbmQoJ3NlbGVjdCcpLmlzKCc6Zm9jdXMnKSAmJlxuICAgICAgICAgICAgISQodGhpcy5pbnB1dEVsLmNsb3Nlc3QoJ1t3aWRnZXQtaWRdJykpLmF0dHIoJ2RhdGF2YWx1ZScpKSB7XG4gICAgICAgICAgICAkKHRoaXMubmF0aXZlRWwpLmZpbmQoJ3NlbGVjdCBvcHRpb246c2VsZWN0ZWQnKS50ZXh0KCcnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc2V0RGVmYXVsdFZhbHVlQW5pbWF0aW9uKCkgeyAvLyBzZXQgYW5pbWF0aW9uIHdoZW4gZGVmYXVsdCB2YWx1ZXMgYXJlIHByZXNlbnRcbiAgICAgICAgLy8gcmVtb3ZlIHBsYWNlaG9sZGVyIHdoZW4gdGhlIGlucHV0IGVsIGhhcyBwbGFjZWhvbGRlciBhbmQgdGhlIHBsYWNlaG9sZGVyIGlzIG5vdCBib3VuZCB0byBhbnkgdmFyaWFibGVcbiAgICAgICAgaWYgKCF0aGlzLl9pc1BsYWNlaG9sZGVyQm91bmQgJiYgdGhpcy5pbnB1dEVsLmF0dHIoJ3BsYWNlaG9sZGVyJykpIHtcbiAgICAgICAgICAgIHRoaXMucGxhY2Vob2xkZXIgPSB0aGlzLmlucHV0RWwuYXR0cigncGxhY2Vob2xkZXInKTtcbiAgICAgICAgICAgIHRoaXMuaW5wdXRFbC5yZW1vdmVBdHRyKCdwbGFjZWhvbGRlcicpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRG8gbm90IHNob3cgcGxhY2Vob2xkZXIgYXMgc2VsZWN0ZWQgYnkgZGVmYXVsdFxuICAgICAgICB0aGlzLmNoZWNrRm9yU2VsZWN0UGxhY2Vob2xkZXIoKTtcblxuICAgICAgICAvLyBjaGVjayBmb3IgZGF0YXZhbHVlIGF0dHJpYnV0ZSBpbiBjb21wb3NpdGUgZWxlbWVudCBhbmQgZGVmYXVsdHZhbHVlIGF0dHJpYnV0ZSBpbiBmb3JtIGZpZWxkIGVsZW1lbnRcbiAgICAgICAgLy8gY2hlY2sgZm9yIGRhdGF2YWx1ZS5iaW5kIGF0dHJpYnV0ZSB0byBzZWUgd2hldGhlciBkZWZhdWx0IHZhbHVlIGlzIGJpbmRlZCB2aWEgZXhwcmVzc2lvbiBvciBhIHZhcmlhYmxlXG4gICAgICAgIC8vIGNoZWNrIGZvciBkaXNwbGF5Zm9ybWF0IGF0dHJpYnV0ZSwgYXMgaW4gZm9ybSBmaWVsZHMgdXNlciBjYW4gc2V0IGRpc3BsYXkgZm9ybWF0IHRvIHRoZSBmaWVsZFxuICAgICAgICAvLyBjaGVjayBmb3IgZm9ybWRhdGEvYmluZGZvcm1kYXRhIGF0dHJpYnV0ZSB0byBzZWUgaWYgYW55IGRlZmF1bHQgdmFsdWUgaXMgYmluZGVkIHRvIHRoZSBmb3JtXG4gICAgICAgIC8vIGNoZWNrIGZvciBzZWxlY3QgdGFnIHdpdGggbXVsdGlwbGUgYXR0cmlidXRlIGVuYWJsZWRcblxuICAgICAgICBpZiAoKHRoaXMuaW5wdXRFbC52YWwoKSAmJiAhdGhpcy5pbnB1dEVsLmlzKCdzZWxlY3QnKSkgfHwgJCh0aGlzLmlucHV0RWwuY2xvc2VzdCgnW3dpZGdldC1pZF0nKSkuYXR0cignZGF0YXZhbHVlJykgfHwgJCh0aGlzLmlucHV0RWwucGFyZW50KCdbd2lkZ2V0LWlkXScpKS5hdHRyKCdkYXRhdmFsdWUuYmluZCcpIHx8IHRoaXMubmF0aXZlRWwuZ2V0QXR0cmlidXRlKCdkZWZhdWx0dmFsdWUnKVxuICAgICAgICAgICAgfHwgdGhpcy5uYXRpdmVFbC5nZXRBdHRyaWJ1dGUoJ2Rpc3BsYXlmb3JtYXQnKSB8fCAkKHRoaXMubmF0aXZlRWwpLmZpbmQoJ3NlbGVjdCBvcHRpb246c2VsZWN0ZWQnKS50ZXh0KCkgfHwgJCh0aGlzLm5hdGl2ZUVsKS5maW5kKCdzZWxlY3QnKS5hdHRyKCdtdWx0aXBsZScpKSB7XG4gICAgICAgICAgICB0aGlzLmNvbXBvc2l0ZUVsZS5jbGFzc0xpc3QuYWRkKCdmbG9hdC1hY3RpdmUnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE9ic2VydmluZyBwbGFjZWhvbGRlciBhdHRyaWJ1dGUgY2hhbmdlIG9uIERPTSBpbnN0ZWFkIG9mIGhhdmluZyBhIHByb3BDaGFuZ2VIYW5kbGVyIGZuXG4gICAgICogRm9yIGNvbXBvc2l0ZSB3aWRnZXRzIHByb3BlcnR5Y2hhbmdlaGFuZGxlciBmdW5jdGlvbiBpcyBpbnZva2VkIGF0IGluZGVwZW5kZW50IHdpZGdldHMgd2hlcmUgYXMgdGhlIGRpcmVjdGl2ZSBpcyBhdCBjb21wb3NpdGUgbGV2ZWxcbiAgICAgKi9cbiAgICBwcml2YXRlIG9ic2VydmVGb3JQbGFjZWhvbGRlckF0dHJDaGFuZ2UoKSB7XG4gICAgICAgIHRoaXMuX2F0dHJPYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKG11dGF0aW9ucyA9PiB7XG4gICAgICAgICAgICBtdXRhdGlvbnMuZm9yRWFjaCgobXV0YXRpb24pID0+IHtcbiAgICAgICAgICAgICAgICBpZiAobXV0YXRpb24uYXR0cmlidXRlTmFtZSA9PT0gJ3BsYWNlaG9sZGVyJyAmJiB0aGlzLmlucHV0RWwuYXR0cigncGxhY2Vob2xkZXInKSAmJiAhdGhpcy5jb21wb3NpdGVFbGUuY2xhc3NMaXN0LmNvbnRhaW5zKCdmbG9hdC1hY3RpdmUnKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnBsYWNlaG9sZGVyID0gdGhpcy5pbnB1dEVsLmF0dHIoJ3BsYWNlaG9sZGVyJyk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRFbC5yZW1vdmVBdHRyKCdwbGFjZWhvbGRlcicpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgY29uZmlnID0geyBhdHRyaWJ1dGVzOiB0cnVlLCBjaGlsZExpc3Q6IGZhbHNlLCBjaGFyYWN0ZXJEYXRhOiBmYWxzZSB9O1xuICAgICAgICB0aGlzLl9hdHRyT2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLmlucHV0RWxbMF0sIGNvbmZpZyk7XG4gICAgfVxuXG4gICAgLy8gd2hlbiBhIGZvcm0gaXMgcmlnaHQgYWxpZ25lZCBhbmQgaGF2ZSBpbnB1dC1ncm91cC1idG4ncyBsaWtlIGRhdGUgcGlja2VyLCB0aW1lIHBpY2tlciBldGMuIGFkanVzdCB0aGUgY3NzIHRvIG5vdCBvdmVybGFwIHRoZSBsYWJlbCBvbiB0aGUgaWNvblxuICAgIHByaXZhdGUgY2hlY2tGb3JSaWdodEFsaWduZWRGb3JtKCkge1xuICAgICAgICBjb25zdCAkY29tcG9zaXRlRWxlID0gJCh0aGlzLmNvbXBvc2l0ZUVsZSk7XG4gICAgICAgIGlmICgkY29tcG9zaXRlRWxlLmNsb3Nlc3QoJy5hbGlnbi1yaWdodCcpLmxlbmd0aCAmJiAkY29tcG9zaXRlRWxlLmZpbmQoJy5pbnB1dC1ncm91cC1idG4nKS5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnN0ICRsYWJlbCA9ICRjb21wb3NpdGVFbGUuZmluZCgnbGFiZWwnKTtcbiAgICAgICAgICAgIGlmICgkY29tcG9zaXRlRWxlLmZpbmQoJ1t3bWRhdGV0aW1lXScpLmxlbmd0aCkgeyAvLyBmb3IgZGF0ZXRpbWUgcGlja2VyLCBhcyB0aGVyZSB3aWxsIGJlIDIgaWNvbnMgY3NzIGlzIGRpZmZlcmVudFxuICAgICAgICAgICAgICAgICRsYWJlbC5hZGRDbGFzcygnaW5wdXQtZ3JwLWR0LWljb24nKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgJGxhYmVsLmFkZENsYXNzKCdpbnB1dC1ncnAtaWNvbicpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICB0aGlzLmNvbXBvc2l0ZUVsZSA9IHRoaXMubmF0aXZlRWw7XG4gICAgICAgIGNvbnN0IHdpZGdldCA9IHRoaXMubmF0aXZlRWwud2lkZ2V0O1xuICAgICAgICBsZXQgY2FwdGlvblBvc2l0aW9uOiBzdHJpbmcgPSB3aWRnZXQuJGF0dHJzLmdldCgnY2FwdGlvbnBvc2l0aW9uJyk7XG4gICAgICAgIGlmICh3aWRnZXQuZm9ybSkge1xuICAgICAgICAgICAgY2FwdGlvblBvc2l0aW9uID0gd2lkZ2V0LmZvcm0uJGF0dHJzLmdldCgnY2FwdGlvbnBvc2l0aW9uJyk7XG4gICAgICAgICAgICB0aGlzLmNvbXBvc2l0ZUVsZSA9IHRoaXMubmF0aXZlRWwucXVlcnlTZWxlY3RvcignLmFwcC1jb21wb3NpdGUtd2lkZ2V0Jyk7XG4gICAgICAgICAgICB0aGlzLl9pc1BsYWNlaG9sZGVyQm91bmQgPSB0aGlzLm5hdGl2ZUVsLmdldEF0dHJpYnV0ZSgncGxhY2Vob2xkZXIuYmluZCcpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjYXB0aW9uUG9zaXRpb24gPT09ICdmbG9hdGluZycpIHtcbiAgICAgICAgICAgIGlmICh3aWRnZXQuZm9ybSkgeyAvLyBmb3IgZm9ybS1maWVsZHMgcmVtb3ZlIGNhcHRpb24tZmxvYXRpbmcgYW5kIHJlcGxhY2UgaXQgd2l0aCBjYXB0aW9uLWZsb2F0IG9yIGNhcHRpb24tdG9wXG4gICAgICAgICAgICAgICAgY29uc3Qgd2lkZ2V0VHlwZTogc3RyaW5nID0gdGhpcy5uYXRpdmVFbC5nZXRBdHRyaWJ1dGUoJ3dpZGdldHR5cGUnKTsgLy8gZmV0Y2hlcyB0aGUgZm9ybSBmaWVsZCB0eXBlXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc2tpcEZsb2F0UG9zaXRpb25XaWRnZXRzLmluZGV4T2Yod2lkZ2V0VHlwZSkgPiAtMSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbXBvc2l0ZUVsZS5jbGFzc0xpc3QucmVtb3ZlKCdjYXB0aW9uLWZsb2F0aW5nJyk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29tcG9zaXRlRWxlLmNsYXNzTGlzdC5hZGQoJ2NhcHRpb24tdG9wJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuY2hlY2tGb3JSaWdodEFsaWduZWRGb3JtKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmlucHV0RWwgPSAkKHRoaXMubmF0aXZlRWwpLmZpbmQoJ2lucHV0LCBzZWxlY3QsIHRleHRhcmVhJyk7XG4gICAgICAgICAgICBpZiAoIXRoaXMuX2lzUGxhY2Vob2xkZXJCb3VuZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2lzUGxhY2Vob2xkZXJCb3VuZCA9IHRoaXMuaW5wdXRFbC5jbG9zZXN0KCdbd2lkZ2V0LWlkXScpLmF0dHIoJ3BsYWNlaG9sZGVyLmJpbmQnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGNhbGwgdGhlIGJlbG93IGZ1bmN0aW9uIHRvIGFwcGx5IGZsb2F0LWFjdGl2ZSBjbGFzcyB3aGVuIHRoZXJlIGFyZSBkZWZhdWx0IHZhbHVlcyB0byB0aGUgZmllbGRzXG4gICAgICAgICAgICBzZXRUaW1lb3V0KHRoaXMuc2V0RGVmYXVsdFZhbHVlQW5pbWF0aW9uLmJpbmQodGhpcyksIDApO1xuXG4gICAgICAgICAgICB0aGlzLmlucHV0RWwuZm9jdXModGhpcy5vbkZvY3VzQ2IuYmluZCh0aGlzKSk7XG4gICAgICAgICAgICB0aGlzLmlucHV0RWwuYmx1cih0aGlzLm9uQmx1ckNiLmJpbmQodGhpcykpO1xuXG4gICAgICAgICAgICAvLyBvYnNlcnZlIGZvciBwbGFjZWhvbGRlciBhdHRyaWJ1dGUgY2hhbmdlIHdoZW4gcGxhY2Vob2xkZXIgaXMgYm91bmQgdmlhIGRiIHZhcmlhYmxlIG9yIGFuIGV4cHJlc3Npb25cbiAgICAgICAgICAgIGlmICh0aGlzLl9pc1BsYWNlaG9sZGVyQm91bmQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9ic2VydmVGb3JQbGFjZWhvbGRlckF0dHJDaGFuZ2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIGNhcHRpb25Qb3NpdGlvbkFuaW1hdGUgaXMgb25seSBub3RpZmllZCBmb3IgZGF0ZS10aW1lLCB0aW1lIGFuZCBzZWFyY2ggd2lkZ2V0cyBhcyBpbnB1dCBlbCBpcyBub3QgdXBkYXRlZCB3aXRoIHZhbHVlIG9uIHNlbGVjdGlvbiBvZiBkcm9wZG93bi9wb3B1cHNcbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5sYWJlbEFuaW1hdGlvblN1YnNjcmlwdGlvbiA9IHRoaXMuYXBwLnN1YnNjcmliZSgnY2FwdGlvblBvc2l0aW9uQW5pbWF0ZScsIChkYXRhKSA9PiB7XG4gICAgICAgICAgICAvLyBkaXNwbGF5VmFsIGlzIHRydWUgd2hlbiB0aGVyZSBpcyBhIHZhbHVlIGVudGVyZWQgaW4gdGhlIGlucHV0IGZpZWxkXG4gICAgICAgICAgICAvLyBJbiBjYXNlIG9mIGZvcm0gZmllbGRzLCB3aGVuIHRoZSBmaWVsZCBpcyBpbiBmb2N1cywgaXNGb2N1c2VkIHdpbGwgYmUgc2V0IGFzIHRydWVcbiAgICAgICAgICAgIC8vIGlzU2VsZWN0TXVsdGlwbGUgaXMgc2V0IHRvIHRydWUgd2hlbiBmb3Igc2VsZWN0IHdpZGdldCwgbXVsdGlwbGUgb3B0aW9uIGlzIGVuYWJsZWRcbiAgICAgICAgICAgIC8vIENoZWNraW5nIGlucHV0RWwgZm9jdXMgLSB3aGVuIGZvcm0gaXMgcmVwcmVzZW50ZWQgYXMgZGlhbG9nIGFuZCB0aGUgZmlyc3QgZmllbGQgaXMgYXV0b21hdGljYWxseSBpbiBmb2N1c1xuICAgICAgICAgICAgY29uc3QgaXNJbnB1dEVsRm9jdXNlZCA9IHRoaXMuaW5wdXRFbCAmJiB0aGlzLmlucHV0RWwuaXMoJzpmb2N1cycpO1xuICAgICAgICAgICAgaWYgKGRhdGEuZGlzcGxheVZhbCB8fCBkYXRhLmlzRm9jdXNlZCB8fCBkYXRhLmlzU2VsZWN0TXVsdGlwbGUgfHwgaXNJbnB1dEVsRm9jdXNlZCkge1xuICAgICAgICAgICAgICAgIGRhdGEubmF0aXZlRWwuYWRkQ2xhc3MoJ2Zsb2F0LWFjdGl2ZScpO1xuICAgICAgICAgICAgICAgIGlmICghZGF0YS5kaXNwbGF5VmFsICYmIGlzSW5wdXRFbEZvY3VzZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnB1dEVsLmF0dHIoJ3BsYWNlaG9sZGVyJywgdGhpcy5wbGFjZWhvbGRlcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBkYXRhLm5hdGl2ZUVsLnJlbW92ZUNsYXNzKCdmbG9hdC1hY3RpdmUnKTtcbiAgICAgICAgICAgICAgICAvLyBSZW1vdmUgcGxhY2Vob2xkZXIgb24gcmVtb3ZpbmcgZmxvYXQtYWN0aXZlLCBpZiBub3QgdGhlIGxhYmVsIGFuZCBwbGFjZWhvbGRlciBhcmUgY29sbGlkZWRcbiAgICAgICAgICAgICAgICAvLyBiZWZvcmUgcGxhY2Vob2xkZXIgaXMgcmVtb3ZlZCBhc3NpZ24gaXQgdG8gdGhlIHBsYWNlaG9sZGVyIHZhcmlhYmxlXG4gICAgICAgICAgICAgICAgLy8gY2hlY2sgZm9yIHBsYWNlaG9sZGVyIGluIGlucHV0ZWwgYW5kIHNlbGVjdGVsXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaW5wdXRFbCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RFbCA9IHRoaXMuaW5wdXRFbC5maW5kKCdvcHRpb246Zmlyc3QnKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaW5wdXRFbC5hdHRyKCdwbGFjZWhvbGRlcicpIHx8IHNlbGVjdEVsLnRleHQoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdEVsLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdEVsLnRleHQoJycpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBsYWNlaG9sZGVyID0gdGhpcy5pbnB1dEVsLmF0dHIoJ3BsYWNlaG9sZGVyJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnB1dEVsLnJlbW92ZUF0dHIoJ3BsYWNlaG9sZGVyJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICBpZiAodGhpcy5sYWJlbEFuaW1hdGlvblN1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgdGhpcy5sYWJlbEFuaW1hdGlvblN1YnNjcmlwdGlvbigpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLl9hdHRyT2JzZXJ2ZXIpIHtcbiAgICAgICAgICAgIHRoaXMuX2F0dHJPYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Component, ElementRef, Injector, ViewChild } from '@angular/core';
|
|
2
2
|
import { NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
3
|
-
import { App, DataSource,
|
|
3
|
+
import { App, DataSource, removeAttr, setAttr } from '@wm/core';
|
|
4
4
|
import { provideAs, provideAsWidgetRef, styler } from '@wm/components/base';
|
|
5
5
|
import { DatasetAwareFormComponent } from '../dataset-aware-form.component';
|
|
6
6
|
import { registerProps } from './select.props';
|
|
@@ -10,51 +10,45 @@ import * as i2 from "@angular/common";
|
|
|
10
10
|
import * as i3 from "@angular/forms";
|
|
11
11
|
import * as i4 from "@wm/components/base";
|
|
12
12
|
const _c0 = ["select"];
|
|
13
|
-
function SelectComponent_option_2_Template(rf, ctx) { if (rf & 1) {
|
|
14
|
-
i0.ɵɵelement(0, "option", 4);
|
|
15
|
-
} if (rf & 2) {
|
|
16
|
-
const ctx_r1 = i0.ɵɵnextContext();
|
|
17
|
-
i0.ɵɵproperty("textContent", ctx_r1.placeholder)("hidden", !ctx_r1.placeholder);
|
|
18
|
-
} }
|
|
19
13
|
function SelectComponent_ng_container_3_optgroup_1_option_1_Template(rf, ctx) { if (rf & 1) {
|
|
20
|
-
i0.ɵɵelement(0, "option",
|
|
14
|
+
i0.ɵɵelement(0, "option", 7);
|
|
21
15
|
} if (rf & 2) {
|
|
22
|
-
const
|
|
23
|
-
i0.ɵɵproperty("value",
|
|
16
|
+
const item_r6 = ctx.$implicit;
|
|
17
|
+
i0.ɵɵproperty("value", item_r6.key)("selected", item_r6.selected)("textContent", item_r6.label);
|
|
24
18
|
} }
|
|
25
19
|
function SelectComponent_ng_container_3_optgroup_1_Template(rf, ctx) { if (rf & 1) {
|
|
26
|
-
i0.ɵɵelementStart(0, "optgroup",
|
|
27
|
-
i0.ɵɵtemplate(1, SelectComponent_ng_container_3_optgroup_1_option_1_Template, 1, 3, "option",
|
|
20
|
+
i0.ɵɵelementStart(0, "optgroup", 5);
|
|
21
|
+
i0.ɵɵtemplate(1, SelectComponent_ng_container_3_optgroup_1_option_1_Template, 1, 3, "option", 6);
|
|
28
22
|
i0.ɵɵelementEnd();
|
|
29
23
|
} if (rf & 2) {
|
|
30
|
-
const
|
|
31
|
-
i0.ɵɵproperty("label",
|
|
24
|
+
const groupObj_r4 = ctx.$implicit;
|
|
25
|
+
i0.ɵɵproperty("label", groupObj_r4.key);
|
|
32
26
|
i0.ɵɵadvance(1);
|
|
33
|
-
i0.ɵɵproperty("ngForOf",
|
|
27
|
+
i0.ɵɵproperty("ngForOf", groupObj_r4.data);
|
|
34
28
|
} }
|
|
35
29
|
function SelectComponent_ng_container_3_Template(rf, ctx) { if (rf & 1) {
|
|
36
30
|
i0.ɵɵelementContainerStart(0);
|
|
37
|
-
i0.ɵɵtemplate(1, SelectComponent_ng_container_3_optgroup_1_Template, 2, 2, "optgroup",
|
|
31
|
+
i0.ɵɵtemplate(1, SelectComponent_ng_container_3_optgroup_1_Template, 2, 2, "optgroup", 4);
|
|
38
32
|
i0.ɵɵelementContainerEnd();
|
|
39
33
|
} if (rf & 2) {
|
|
40
|
-
const
|
|
34
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
41
35
|
i0.ɵɵadvance(1);
|
|
42
|
-
i0.ɵɵproperty("ngForOf",
|
|
36
|
+
i0.ɵɵproperty("ngForOf", ctx_r1.groupedData);
|
|
43
37
|
} }
|
|
44
38
|
function SelectComponent_ng_container_4_option_1_Template(rf, ctx) { if (rf & 1) {
|
|
45
|
-
i0.ɵɵelement(0, "option",
|
|
39
|
+
i0.ɵɵelement(0, "option", 7);
|
|
46
40
|
} if (rf & 2) {
|
|
47
|
-
const
|
|
48
|
-
i0.ɵɵproperty("value",
|
|
41
|
+
const item_r8 = ctx.$implicit;
|
|
42
|
+
i0.ɵɵproperty("value", item_r8.key)("selected", item_r8.selected)("textContent", item_r8.label);
|
|
49
43
|
} }
|
|
50
44
|
function SelectComponent_ng_container_4_Template(rf, ctx) { if (rf & 1) {
|
|
51
45
|
i0.ɵɵelementContainerStart(0);
|
|
52
|
-
i0.ɵɵtemplate(1, SelectComponent_ng_container_4_option_1_Template, 1, 3, "option",
|
|
46
|
+
i0.ɵɵtemplate(1, SelectComponent_ng_container_4_option_1_Template, 1, 3, "option", 6);
|
|
53
47
|
i0.ɵɵelementContainerEnd();
|
|
54
48
|
} if (rf & 2) {
|
|
55
|
-
const
|
|
49
|
+
const ctx_r2 = i0.ɵɵnextContext();
|
|
56
50
|
i0.ɵɵadvance(1);
|
|
57
|
-
i0.ɵɵproperty("ngForOf",
|
|
51
|
+
i0.ɵɵproperty("ngForOf", ctx_r2.datasetItems);
|
|
58
52
|
} }
|
|
59
53
|
const _c1 = function (a1) { return ["app-select form-control", a1]; };
|
|
60
54
|
const WIDGET_CONFIG = { widgetType: 'wm-select', hostClass: 'app-select-wrapper' };
|
|
@@ -73,9 +67,6 @@ export class SelectComponent extends DatasetAwareFormComponent {
|
|
|
73
67
|
ngAfterViewInit() {
|
|
74
68
|
super.ngAfterViewInit();
|
|
75
69
|
styler(this.selectEl.nativeElement, this);
|
|
76
|
-
setTimeout(() => {
|
|
77
|
-
this.checkForFloatingLabel(null);
|
|
78
|
-
}, 10);
|
|
79
70
|
}
|
|
80
71
|
// Change event is registered from the template, Prevent the framework from registering one more event
|
|
81
72
|
handleEvent(node, eventName, eventCallback, locals) {
|
|
@@ -122,16 +113,6 @@ export class SelectComponent extends DatasetAwareFormComponent {
|
|
|
122
113
|
}
|
|
123
114
|
super.onPropertyChange(key, nv, ov);
|
|
124
115
|
}
|
|
125
|
-
isSafariBrowser() {
|
|
126
|
-
var reg = {
|
|
127
|
-
MAC: /Mac/i,
|
|
128
|
-
MACINTEL: /MacIntel/i
|
|
129
|
-
};
|
|
130
|
-
return reg.MAC.test(window.navigator.platform) || reg.MACINTEL.test(window.navigator.platform);
|
|
131
|
-
}
|
|
132
|
-
isIosPlatform() {
|
|
133
|
-
return isIos() || this.isSafariBrowser();
|
|
134
|
-
}
|
|
135
116
|
/**
|
|
136
117
|
* When caption floating is enabled and placeholder is given, do not show placeholder until user focuses on the field
|
|
137
118
|
* When focused add the placeholder to the option which is selected
|
|
@@ -141,23 +122,33 @@ export class SelectComponent extends DatasetAwareFormComponent {
|
|
|
141
122
|
checkForFloatingLabel($event) {
|
|
142
123
|
const captionEl = $(this.selectEl.nativeElement).closest('.app-composite-widget.caption-floating');
|
|
143
124
|
if (captionEl.length > 0) {
|
|
144
|
-
if (
|
|
145
|
-
if (
|
|
146
|
-
this.
|
|
125
|
+
if ($event.type === 'focus' && (!this.datavalue || (this.datavalue && $(this.selectEl).find('select option:selected').text() === '' && this.placeholder))) {
|
|
126
|
+
if (!(this.datavalue || this.placeholder)) {
|
|
127
|
+
this.removePlaceholderOption();
|
|
147
128
|
}
|
|
148
|
-
|
|
129
|
+
else {
|
|
149
130
|
$(this.selectEl.nativeElement).find('option:first').text(this.placeholder);
|
|
150
131
|
}
|
|
151
132
|
}
|
|
152
133
|
else if (!this.datavalue) {
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
if (!this.isIosPlatform()) {
|
|
156
|
-
captionEl.removeClass('float-active');
|
|
157
|
-
}
|
|
158
|
-
}
|
|
134
|
+
$(this.selectEl.nativeElement).find('option:selected').text('');
|
|
135
|
+
captionEl.removeClass('float-active');
|
|
159
136
|
}
|
|
160
137
|
}
|
|
138
|
+
else if (!(this.datavalue || this.placeholder)) {
|
|
139
|
+
this.removePlaceholderOption();
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
/*
|
|
143
|
+
* Removing the placeholder option if no placeholder is provided.
|
|
144
|
+
* In html we are hiding the placeholder option using css but in apple devices and safari option is showing.
|
|
145
|
+
* */
|
|
146
|
+
removePlaceholderOption() {
|
|
147
|
+
const hiddenEle = $(this.selectEl.nativeElement).find('#placeholderOption');
|
|
148
|
+
if (hiddenEle.length) {
|
|
149
|
+
hiddenEle.remove();
|
|
150
|
+
this.selectEl.nativeElement.value = '';
|
|
151
|
+
}
|
|
161
152
|
}
|
|
162
153
|
static { this.ɵfac = function SelectComponent_Factory(t) { return new (t || SelectComponent)(i0.ɵɵdirectiveInject(i0.Injector), i0.ɵɵdirectiveInject(i1.App)); }; }
|
|
163
154
|
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SelectComponent, selectors: [["wm-select"]], viewQuery: function SelectComponent_Query(rf, ctx) { if (rf & 1) {
|
|
@@ -169,18 +160,18 @@ export class SelectComponent extends DatasetAwareFormComponent {
|
|
|
169
160
|
provideAs(SelectComponent, NG_VALUE_ACCESSOR, true),
|
|
170
161
|
provideAs(SelectComponent, NG_VALIDATORS, true),
|
|
171
162
|
provideAsWidgetRef(SelectComponent)
|
|
172
|
-
]), i0.ɵɵInheritDefinitionFeature], decls: 5, vars:
|
|
163
|
+
]), i0.ɵɵInheritDefinitionFeature], decls: 5, vars: 16, consts: [["role", "listbox", "aria-haspopup", "true", "aria-expanded", "false", "focus-target", "", 3, "ngClass", "disabled", "required", "tabindex", "ngModel", "multiple", "autofocus", "ngModelChange", "change", "focus", "blur"], ["select", ""], ["selected", "", "value", "undefined", "id", "placeholderOption", 3, "textContent", "hidden"], [4, "ngIf"], [3, "label", 4, "ngFor", "ngForOf"], [3, "label"], ["role", "option", 3, "value", "selected", "textContent", 4, "ngFor", "ngForOf"], ["role", "option", 3, "value", "selected", "textContent"]], template: function SelectComponent_Template(rf, ctx) { if (rf & 1) {
|
|
173
164
|
i0.ɵɵelementStart(0, "select", 0, 1);
|
|
174
165
|
i0.ɵɵlistener("ngModelChange", function SelectComponent_Template_select_ngModelChange_0_listener($event) { return ctx.modelByKey = $event; })("change", function SelectComponent_Template_select_change_0_listener($event) { return ctx.onSelectValueChange($event); })("focus", function SelectComponent_Template_select_focus_0_listener($event) { return ctx.checkForFloatingLabel($event); })("blur", function SelectComponent_Template_select_blur_0_listener($event) { ctx.invokeOnTouched($event); return ctx.checkForFloatingLabel($event); });
|
|
175
|
-
i0.ɵɵ
|
|
166
|
+
i0.ɵɵelement(2, "option", 2);
|
|
176
167
|
i0.ɵɵtemplate(3, SelectComponent_ng_container_3_Template, 2, 1, "ng-container", 3);
|
|
177
168
|
i0.ɵɵtemplate(4, SelectComponent_ng_container_4_Template, 2, 1, "ng-container", 3);
|
|
178
169
|
i0.ɵɵelementEnd();
|
|
179
170
|
} if (rf & 2) {
|
|
180
|
-
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(
|
|
171
|
+
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(14, _c1, ctx.class))("disabled", ctx.disabled)("required", ctx.required)("tabindex", ctx.tabindex)("ngModel", ctx.modelByKey)("multiple", ctx.multiple)("autofocus", ctx.autofocus);
|
|
181
172
|
i0.ɵɵattribute("name", ctx.name)("aria-label", ctx.hint)("aria-multiselectable", ctx.multiple);
|
|
182
173
|
i0.ɵɵadvance(2);
|
|
183
|
-
i0.ɵɵproperty("
|
|
174
|
+
i0.ɵɵproperty("textContent", ctx.placeholder)("hidden", !ctx.placeholder);
|
|
184
175
|
i0.ɵɵadvance(1);
|
|
185
176
|
i0.ɵɵproperty("ngIf", ctx.groupby);
|
|
186
177
|
i0.ɵɵadvance(1);
|
|
@@ -193,9 +184,9 @@ export class SelectComponent extends DatasetAwareFormComponent {
|
|
|
193
184
|
provideAs(SelectComponent, NG_VALUE_ACCESSOR, true),
|
|
194
185
|
provideAs(SelectComponent, NG_VALIDATORS, true),
|
|
195
186
|
provideAsWidgetRef(SelectComponent)
|
|
196
|
-
], template: "<select role=\"listbox\" aria-haspopup=\"true\" aria-expanded=\"false\" #select\n focus-target\n [ngClass]=\"['app-select form-control', class]\"\n [disabled]=\"disabled\"\n [required]=\"required\"\n [tabindex]=\"tabindex\"\n [(ngModel)]=\"modelByKey\"\n [multiple]=\"multiple\"\n (change)=\"onSelectValueChange($event)\"\n (focus)=\"checkForFloatingLabel($event)\"\n (blur)=\"invokeOnTouched($event); checkForFloatingLabel($event)\"\n [attr.name]=\"name\"\n [attr.aria-label]=\"hint\"\n [attr.aria-multiselectable]=\"multiple\"\n [autofocus]=\"autofocus\"\n
|
|
187
|
+
], template: "<select role=\"listbox\" aria-haspopup=\"true\" aria-expanded=\"false\" #select\n focus-target\n [ngClass]=\"['app-select form-control', class]\"\n [disabled]=\"disabled\"\n [required]=\"required\"\n [tabindex]=\"tabindex\"\n [(ngModel)]=\"modelByKey\"\n [multiple]=\"multiple\"\n (change)=\"onSelectValueChange($event)\"\n (focus)=\"checkForFloatingLabel($event)\"\n (blur)=\"invokeOnTouched($event); checkForFloatingLabel($event)\"\n [attr.name]=\"name\"\n [attr.aria-label]=\"hint\"\n [attr.aria-multiselectable]=\"multiple\"\n [autofocus]=\"autofocus\">\n\n <option selected\n value=\"undefined\"\n [textContent]=\"placeholder\"\n id=\"placeholderOption\"\n [hidden]=\"!placeholder\"></option>\n\n <ng-container *ngIf=\"groupby\">\n <optgroup *ngFor=\"let groupObj of groupedData\"\n [label]=\"groupObj.key\">\n <option *ngFor=\"let item of groupObj.data;\"\n [value]=\"item.key\"\n [selected]=\"item.selected\"\n [textContent]=\"item.label\"\n role=\"option\"></option>\n </optgroup>\n </ng-container>\n\n <ng-container *ngIf=\"!groupby\">\n <option *ngFor=\"let item of datasetItems\"\n [value]=\"item.key\"\n [selected]=\"item.selected\"\n [textContent]=\"item.label\"\n role=\"option\"></option>\n </ng-container>\n</select>\n" }]
|
|
197
188
|
}], function () { return [{ type: i0.Injector }, { type: i1.App }]; }, { selectEl: [{
|
|
198
189
|
type: ViewChild,
|
|
199
190
|
args: ['select', { static: true, read: ElementRef }]
|
|
200
191
|
}] }); })();
|
|
201
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvd2lkZ2V0cy9pbnB1dC9kZWZhdWx0L3NyYy9zZWxlY3Qvc2VsZWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvd2lkZ2V0cy9pbnB1dC9kZWZhdWx0L3NyYy9zZWxlY3Qvc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0IsU0FBUyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3hGLE9BQU8sRUFBQyxhQUFhLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUVoRSxPQUFPLEVBQUMsR0FBRyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUNyRSxPQUFPLEVBQUMsU0FBUyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQzFFLE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBRTFFLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7SUNTekMsNEJBSWlDOzs7SUFGakMsZ0RBQTJCLCtCQUFBOzs7SUFPbkIsNEJBSTJCOzs7SUFIdkIsbUNBQWtCLDhCQUFBLDhCQUFBOzs7SUFIMUIsbUNBQzJCO0lBQ3ZCLGdHQUkyQjtJQUMvQixpQkFBVzs7O0lBTlAsdUNBQXNCO0lBQ0csZUFBaUI7SUFBakIsMENBQWlCOzs7SUFIbEQsNkJBQThCO0lBQzFCLHlGQU9XO0lBQ2YsMEJBQWU7OztJQVJvQixlQUFjO0lBQWQsNENBQWM7OztJQVc3Qyw0QkFJMkI7OztJQUh2QixtQ0FBa0IsOEJBQUEs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LEVBQUUsSUFBSSxDQUFDO29CQUMvQyxrQkFBa0IsaUJBQWlCO2lCQUN0Qzs2RUFpQndELFFBQVE7a0JBQWhFLFNBQVM7bUJBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEluamVjdG9yLCBWaWV3Q2hpbGR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtOR19WQUxJREFUT1JTLCBOR19WQUxVRV9BQ0NFU1NPUn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQge0FwcCwgRGF0YVNvdXJjZSwgaXNJb3MsIHJlbW92ZUF0dHIsIHNldEF0dHJ9IGZyb20gJ0B3bS9jb3JlJztcbmltcG9ydCB7cHJvdmlkZUFzLCBwcm92aWRlQXNXaWRnZXRSZWYsIHN0eWxlcn0gZnJvbSAnQHdtL2NvbXBvbmVudHMvYmFzZSc7XG5pbXBvcnQge0RhdGFzZXRBd2FyZUZvcm1Db21wb25lbnR9IGZyb20gJy4uL2RhdGFzZXQtYXdhcmUtZm9ybS5jb21wb25lbnQnO1xuXG5pbXBvcnQge3JlZ2lzdGVyUHJvcHN9IGZyb20gJy4vc2VsZWN0LnByb3BzJztcblxuZGVjbGFyZSBjb25zdCBfO1xuXG5jb25zdCBXSURHRVRfQ09ORklHID0ge3dpZGdldFR5cGU6ICd3bS1zZWxlY3QnLCBob3N0Q2xhc3M6ICdhcHAtc2VsZWN0LXdyYXBwZXInfTtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd3bS1zZWxlY3QnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zZWxlY3QuY29tcG9uZW50Lmh0bWwnLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICBwcm92aWRlQXMoU2VsZWN0Q29tcG9uZW50LCBOR19WQUxVRV9BQ0NFU1NPUiwgdHJ1ZSksXG4gICAgICAgIHByb3ZpZGVBcyhTZWxlY3RDb21wb25lbnQsIE5HX1ZBTElEQVRPUlMsIHRydWUpLFxuICAgICAgICBwcm92aWRlQXNXaWRnZXRSZWYoU2VsZWN0Q29tcG9uZW50KVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgU2VsZWN0Q29tcG9uZW50IGV4dGVuZHMgRGF0YXNldEF3YXJlRm9ybUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICAgIHN0YXRpYyBpbml0aWFsaXplUHJvcHMgPSByZWdpc3RlclByb3BzKCk7XG5cbiAgICBwdWJsaWMgcmVhZG9ubHk6IGJvb2xlYW47XG4gICAgcHVibGljIHBsYWNlaG9sZGVyOiBzdHJpbmc7XG4gICAgcHVibGljIG5hdnNlYXJjaGJhcjogYW55O1xuICAgIHB1YmxpYyBjbGFzczogYW55O1xuICAgIHB1YmxpYyByZXF1aXJlZDogYm9vbGVhbjtcbiAgICBwdWJsaWMgZGlzYWJsZWQ6IGJvb2xlYW47XG4gICAgcHVibGljIHRhYmluZGV4OiBhbnk7XG4gICAgcHVibGljIG5hbWU6IHN0cmluZztcbiAgICBwdWJsaWMgYXV0b2ZvY3VzOiBib29sZWFuO1xuICAgIHB1YmxpYyBoaW50OiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBhcHA6IEFwcDtcblxuICAgIEBWaWV3Q2hpbGQoJ3NlbGVjdCcsIHsgc3RhdGljOiB0cnVlLCByZWFkOiBFbGVtZW50UmVmIH0pIHNlbGVjdEVsOiBFbGVtZW50UmVmO1xuXG4gICAgc2V0IGRhdGFzb3VyY2UoZHMpIHtcbiAgICAgICAgaWYgKGRzICYmIGRzLmV4ZWN1dGUgJiYgZHMuZXhlY3V0ZShEYXRhU291cmNlLk9wZXJhdGlvbi5JU19CT1VORF9UT19MT0NBTEUpKSB7XG4gICAgICAgICAgICB0aGlzLmRhdGF2YWx1ZSA9IGRzLmV4ZWN1dGUoRGF0YVNvdXJjZS5PcGVyYXRpb24uR0VUX0RFRkFVTFRfTE9DQUxFKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGluajogSW5qZWN0b3IsIGFwcDogQXBwKSB7XG4gICAgICAgIHN1cGVyKGluaiwgV0lER0VUX0NPTkZJRyk7XG4gICAgICAgIHRoaXMuYXBwID0gYXBwO1xuICAgICAgICB0aGlzLmFjY2VwdHNBcnJheSA9IHRydWU7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICBzdXBlci5uZ0FmdGVyVmlld0luaXQoKTtcbiAgICAgICAgc3R5bGVyKHRoaXMuc2VsZWN0RWwubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCwgdGhpcyk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jaGVja0ZvckZsb2F0aW5nTGFiZWwobnVsbCk7XG4gICAgICAgIH0sIDEwKVxuXG4gICAgfVxuXG4gICAgLy8gQ2hhbmdlIGV2ZW50IGlzIHJlZ2lzdGVyZWQgZnJvbSB0aGUgdGVtcGxhdGUsIFByZXZlbnQgdGhlIGZyYW1ld29yayBmcm9tIHJlZ2lzdGVyaW5nIG9uZSBtb3JlIGV2ZW50XG4gICAgcHJvdGVjdGVkIGhhbmRsZUV2ZW50KG5vZGU6IEhUTUxFbGVtZW50LCBldmVudE5hbWU6IHN0cmluZywgZXZlbnRDYWxsYmFjazogRnVuY3Rpb24sIGxvY2FsczogYW55KSB7XG4gICAgICAgIGlmICghXy5pbmNsdWRlcyhbJ2JsdXInLCAnY2hhbmdlJ10sIGV2ZW50TmFtZSkpIHtcbiAgICAgICAgICAgIHN1cGVyLmhhbmRsZUV2ZW50KHRoaXMuc2VsZWN0RWwubmF0aXZlRWxlbWVudCwgZXZlbnROYW1lLCBldmVudENhbGxiYWNrLCBsb2NhbHMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25TZWxlY3RWYWx1ZUNoYW5nZSgkZXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMucmVhZG9ubHkpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnBsYWNlaG9sZGVyKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RFbC5uYXRpdmVFbGVtZW50LnZhbHVlID0gdGhpcy5wbGFjZWhvbGRlcjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RFbC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmRhdGF2YWx1ZSA9ICh0aGlzIGFzIGFueSkucHJldkRhdGF2YWx1ZTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmludm9rZU9uVG91Y2hlZCgpO1xuICAgICAgICAvLyBpbnZva2Ugb24gZGF0YXZhbHVlIGNoYW5nZS5cbiAgICAgICAgdGhpcy5pbnZva2VPbkNoYW5nZSh0aGlzLmRhdGF2YWx1ZSwgJGV2ZW50IHx8IHt9LCB0cnVlKTtcbiAgICB9XG5cbiAgICBvblByb3BlcnR5Q2hhbmdlKGtleTogc3RyaW5nLCBudjogYW55LCBvdj86IGFueSkge1xuICAgICAgICBpZiAoa2V5ID09PSAncmVxdWlyZWQnKSAge1xuICAgICAgICAgICAgdGhpcy5fb25DaGFuZ2UodGhpcy5kYXRhdmFsdWUpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChrZXkgPT09ICdjbGFzcycgfHwgIGtleSA9PT0gJ3RhYmluZGV4Jykge1xuICAgICAgICAgICAgaWYoa2V5ID09PSAnY2xhc3MnKSB7XG4gICAgICAgICAgICAgICAgLy8gQWZ0ZXIgTkcxNSB1cGdyYWRlIG5nLWludmFsaWQgY2xhc3MgaXMgYWRkZWQgZXZlbiB0aGUgZmllbGQgaXMgdmFsaWQsIHNvIHdlIGFyZSByZW1vdmluZyB0aGUgbmctaW52YWxpZCBtYW51YWxseVxuICAgICAgICAgICAgICAgIGNvbnN0IGlzTmdVbnRvdWNoZWRWYWxpZCA9IHRoaXMuc2VsZWN0RWwubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoJ25nLXVudG91Y2hlZCcpICYmIHRoaXMuc2VsZWN0RWwubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoJ25nLXZhbGlkJylcbiAgICAgICAgICAgICAgICBpZihpc05nVW50b3VjaGVkVmFsaWQgJiYgbnYuaW5jbHVkZXMoJ25nLXVudG91Y2hlZCcpICYmIG52LmluY2x1ZGVzKCduZy1pbnZhbGlkJykpIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKT0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKHRoaXMuc2VsZWN0RWwubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoJ25nLXVudG91Y2hlZCcpICYmIHRoaXMuc2VsZWN0RWwubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoJ25nLXZhbGlkJykgJiYgdGhpcy5zZWxlY3RFbC5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygnbmctaW52YWxpZCcpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RFbC5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoJ25nLWludmFsaWQnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9IGVsc2UgaWYgKGtleSA9PT0gJ3JlYWRvbmx5Jykge1xuICAgICAgICAgICAgIChudiA9PT0gdHJ1ZSkgPyBzZXRBdHRyKHRoaXMuc2VsZWN0RWwubmF0aXZlRWxlbWVudCwgJ3JlYWRvbmx5JywgJ3JlYWRvbmx5JykgOiByZW1vdmVBdHRyKHRoaXMuc2VsZWN0RWwubmF0aXZlRWxlbWVudCwgJ3JlYWRvbmx5JykgO1xuICAgICAgICB9XG4gICAgICAgIHN1cGVyLm9uUHJvcGVydHlDaGFuZ2Uoa2V5LCBudiwgb3YpO1xuICAgIH1cblxuICAgIGlzU2FmYXJpQnJvd3NlcigpIHtcbiAgICAgICAgdmFyIHJlZyA9IHtcbiAgICAgICAgICAgIE1BQzogL01hYy9pLFxuICAgICAgICAgICAgTUFDSU5URUw6IC9NYWNJbnRlbC9pXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlZy5NQUMudGVzdCh3aW5kb3cubmF2aWdhdG9yLnBsYXRmb3JtKSB8fCByZWcuTUFDSU5URUwudGVzdCh3aW5kb3cubmF2aWdhdG9yLnBsYXRmb3JtKTtcbiAgICB9XG5cbiAgICBpc0lvc1BsYXRmb3JtKCkge1xuICAgICAgICByZXR1cm4gaXNJb3MoKSB8fCB0aGlzLmlzU2FmYXJpQnJvd3NlcigpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBXaGVuIGNhcHRpb24gZmxvYXRpbmcgaXMgZW5hYmxlZCBhbmQgcGxhY2Vob2xkZXIgaXMgZ2l2ZW4sIGRvIG5vdCBzaG93IHBsYWNlaG9sZGVyIHVudGlsIHVzZXIgZm9jdXNlcyBvbiB0aGUgZmllbGRcbiAgICAgKiBXaGVuIGZvY3VzZWQgYWRkIHRoZSBwbGFjZWhvbGRlciB0byB0aGUgb3B0aW9uIHdoaWNoIGlzIHNlbGVjdGVkXG4gICAgICogT24gYmx1ciwgcmVtb3ZlIHRoZSBwbGFjZWhvbGRlciBhbmQgZG8gbm90IGFuaW1hdGUgdGhlIGxhYmVsXG4gICAgICogQHBhcmFtICRldmVudCBldmVudCByZWNlaXZlZCB3aWxsIGJlIGVpdGhlciBhIGJsdXIgb3IgZm9jdXMgZXZlbnRcbiAgICAgKi9cbiAgICBjaGVja0ZvckZsb2F0aW5nTGFiZWwoJGV2ZW50KSB7XG4gICAgICAgIGNvbnN0IGNhcHRpb25FbCA9ICQodGhpcy5zZWxlY3RFbC5uYXRpdmVFbGVtZW50KS5jbG9zZXN0KCcuYXBwLWNvbXBvc2l0ZS13aWRnZXQuY2FwdGlvbi1mbG9hdGluZycpO1xuICAgICAgICBpZiAoY2FwdGlvbkVsLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGlmICgoISRldmVudCB8fCAkZXZlbnQudHlwZSA9PT0gJ2ZvY3VzJykgJiYgKCgkKHRoaXMuc2VsZWN0RWwpLmZpbmQoJ3NlbGVjdCBvcHRpb246c2VsZWN0ZWQnKS50ZXh0KCkgPT09ICcnICYmICh0aGlzLnBsYWNlaG9sZGVyIHx8ICh0aGlzLmRhdGF2YWx1ZSB8fCB0aGlzLmJpbmRkYXRhdmFsdWUpIHx8IHRoaXMuaXNJb3NQbGF0Zm9ybSgpKSkpKSB7XG4gICAgICAgICAgICAgICAgaWYgKCEkZXZlbnQgJiYgKHRoaXMucGxhY2Vob2xkZXIgfHwgdGhpcy5kYXRhdmFsdWUgfHwgdGhpcy5iaW5kZGF0YXZhbHVlIHx8IHRoaXMuaXNJb3NQbGF0Zm9ybSgpKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFwcC5ub3RpZnkoJ2NhcHRpb25Qb3NpdGlvbkFuaW1hdGUnLCB7aXNTZWxlY3Q6IHRydWUsIG5hdGl2ZUVsOiBjYXB0aW9uRWx9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMucGxhY2Vob2xkZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgJCh0aGlzLnNlbGVjdEVsLm5hdGl2ZUVsZW1lbnQpLmZpbmQoJ29wdGlvbjpmaXJzdCcpLnRleHQodGhpcy5wbGFjZWhvbGRlcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmICghdGhpcy5kYXRhdmFsdWUpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMucGxhY2Vob2xkZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gICQodGhpcy5zZWxlY3RFbC5uYXRpdmVFbGVtZW50KS5maW5kKCdvcHRpb246Zmlyc3QnKS50ZXh0KCcnKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLmlzSW9zUGxhdGZvcm0oKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FwdGlvbkVsLnJlbW92ZUNsYXNzKCdmbG9hdC1hY3RpdmUnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIiwiPHNlbGVjdCByb2xlPVwibGlzdGJveFwiIGFyaWEtaGFzcG9wdXA9XCJ0cnVlXCIgYXJpYS1leHBhbmRlZD1cImZhbHNlXCIgI3NlbGVjdFxuICAgICAgICBmb2N1cy10YXJnZXRcbiAgICAgICAgW25nQ2xhc3NdPVwiWydhcHAtc2VsZWN0IGZvcm0tY29udHJvbCcsIGNsYXNzXVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgICAgIFt0YWJpbmRleF09XCJ0YWJpbmRleFwiXG4gICAgICAgIFsobmdNb2RlbCldPVwibW9kZWxCeUtleVwiXG4gICAgICAgIFttdWx0aXBsZV09XCJtdWx0aXBsZVwiXG4gICAgICAgIChjaGFuZ2UpPVwib25TZWxlY3RWYWx1ZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgKGZvY3VzKT1cImNoZWNrRm9yRmxvYXRpbmdMYWJlbCgkZXZlbnQpXCJcbiAgICAgICAgKGJsdXIpPVwiaW52b2tlT25Ub3VjaGVkKCRldmVudCk7IGNoZWNrRm9yRmxvYXRpbmdMYWJlbCgkZXZlbnQpXCJcbiAgICAgICAgW2F0dHIubmFtZV09XCJuYW1lXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJoaW50XCJcbiAgICAgICAgW2F0dHIuYXJpYS1tdWx0aXNlbGVjdGFibGVdPVwibXVsdGlwbGVcIlxuICAgICAgICBbYXV0b2ZvY3VzXT1cImF1dG9mb2N1c1wiXG4+XG4gICAgPG9wdGlvblxuICAgIHZhbHVlPVwidW5kZWZpbmVkXCJcbiAgICBbdGV4dENvbnRlbnRdPVwicGxhY2Vob2xkZXJcIlxuICAgICpuZ0lmPVwiIWlzSW9zUGxhdGZvcm0oKSB8fCAhIXBsYWNlaG9sZGVyXCJcbiAgICBbaGlkZGVuXT1cIiFwbGFjZWhvbGRlclwiPjwvb3B0aW9uPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImdyb3VwYnlcIj5cbiAgICAgICAgPG9wdGdyb3VwICpuZ0Zvcj1cImxldCBncm91cE9iaiBvZiBncm91cGVkRGF0YVwiXG4gICAgICAgICAgICBbbGFiZWxdPVwiZ3JvdXBPYmoua2V5XCI+XG4gICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBpdGVtIG9mIGdyb3VwT2JqLmRhdGE7XCJcbiAgICAgICAgICAgICAgICBbdmFsdWVdPVwiaXRlbS5rZXlcIlxuICAgICAgICAgICAgICAgIFtzZWxlY3RlZF09XCJpdGVtLnNlbGVjdGVkXCJcbiAgICAgICAgICAgICAgICBbdGV4dENvbnRlbnRdPVwiaXRlbS5sYWJlbFwiXG4gICAgICAgICAgICAgICAgcm9sZT1cIm9wdGlvblwiPjwvb3B0aW9uPlxuICAgICAgICA8L29wdGdyb3VwPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFncm91cGJ5XCI+XG4gICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IGl0ZW0gb2YgZGF0YXNldEl0ZW1zXCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJpdGVtLmtleVwiXG4gICAgICAgICAgICBbc2VsZWN0ZWRdPVwiaXRlbS5zZWxlY3RlZFwiXG4gICAgICAgICAgICBbdGV4dENvbnRlbnRdPVwiaXRlbS5sYWJlbFwiXG4gICAgICAgICAgICByb2xlPVwib3B0aW9uXCI+PC9vcHRpb24+XG4gICAgPC9uZy1jb250YWluZXI+XG48L3NlbGVjdD5cbiJdfQ==
|
|
192
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvd2lkZ2V0cy9pbnB1dC9kZWZhdWx0L3NyYy9zZWxlY3Qvc2VsZWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvd2lkZ2V0cy9pbnB1dC9kZWZhdWx0L3NyYy9zZWxlY3Qvc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0IsU0FBUyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3hGLE9BQU8sRUFBQyxhQUFhLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUVoRSxPQUFPLEVBQUMsR0FBRyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQzlELE9BQU8sRUFBQyxTQUFTLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDMUUsT0FBTyxFQUFDLHlCQUF5QixFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFFMUUsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7OztJQ2tCakMsNEJBSTJCOzs7SUFIdkIsbUNBQWtCLDhCQUFBLDhCQUFBOzs7SUFIMUIsbUNBQzJCO0lBQ3ZCLGdHQUkyQjtJQUMvQixpQkFBVzs7O0lBTlAsdUNBQXNCO0lBQ0csZUFBaUI7SUFBakIsMENBQWlCOzs7SUFIbEQsNkJBQThCO0lBQzFCLHlGQU9XO0lBQ2YsMEJBQWU7OztJQVJvQixlQUFjO0lBQWQsNENBQWM7OztJQVc3Qyw0QkFJMkI7OztJQUh2QixtQ0FBa0IsOEJBQUEsOEJBQUE7OztJQUYxQiw2QkFBK0I7SUFDM0IscUZBSTJCO0lBQy9CLDBCQUFl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QUcsRUFBRSxDQUFDO1NBQzFDO0lBQ0wsQ0FBQztnRkFsSFEsZUFBZTtvRUFBZixlQUFlO21DQWVtQixVQUFVOzs7OzhDQXJCMUM7Z0JBQ1AsU0FBUyxDQUFDLGVBQWUsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLENBQUM7Z0JBQ25ELFNBQVMsQ0FBQyxlQUFlLEVBQUUsYUFBYSxFQUFFLElBQUksQ0FBQztnQkFDL0Msa0JBQWtCLENBQUMsZUFBZSxDQUFDO2FBQ3RDO1lDcEJMLG9DQWNnQztZQVJ4Qiw2SUFBd0IsdUZBRWQsK0JBQTJCLElBRmIscUZBR2YsaUNBQTZCLElBSGQsNEVBSWhCLDJCQUF1QixTQUFFLGlDQUE2QixJQUp0QztZQVV4Qiw0QkFJeUM7WUFFN0Msa0ZBU2U7WUFFZixrRkFNZTtZQUNuQixpQkFBUzs7WUF0Q0QsZ0VBQThDLDBCQUFBLDBCQUFBLDBCQUFBLDJCQUFBLDBCQUFBLDRCQUFBO1lBUzlDLGdDQUFrQix3QkFBQSxzQ0FBQTtZQU9WLGVBQTJCO1lBQTNCLDZDQUEyQiw0QkFBQTtZQUl4QixlQUFhO1lBQWIsa0NBQWE7WUFXYixlQUFjO1lBQWQsbUNBQWM7Ozt1RkRYcEIsZUFBZTtjQVQzQixTQUFTOzJCQUNJLFdBQVcsYUFFVjtvQkFDUCxTQUFTLGtCQUFrQixpQkFBaUIsRUFBRSxJQUFJLENBQUM7b0JBQ25ELFNBQVMsa0JBQWtCLGFBQWEsRUFBRSxJQUFJLENBQUM7b0JBQy9DLGtCQUFrQixpQkFBaUI7aUJBQ3RDOzZFQWlCd0QsUUFBUTtrQkFBaEUsU0FBUzttQkFBQyxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5qZWN0b3IsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge05HX1ZBTElEQVRPUlMsIE5HX1ZBTFVFX0FDQ0VTU09SfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7QXBwLCBEYXRhU291cmNlLCByZW1vdmVBdHRyLCBzZXRBdHRyfSBmcm9tICdAd20vY29yZSc7XG5pbXBvcnQge3Byb3ZpZGVBcywgcHJvdmlkZUFzV2lkZ2V0UmVmLCBzdHlsZXJ9IGZyb20gJ0B3bS9jb21wb25lbnRzL2Jhc2UnO1xuaW1wb3J0IHtEYXRhc2V0QXdhcmVGb3JtQ29tcG9uZW50fSBmcm9tICcuLi9kYXRhc2V0LWF3YXJlLWZvcm0uY29tcG9uZW50JztcblxuaW1wb3J0IHtyZWdpc3RlclByb3BzfSBmcm9tICcuL3NlbGVjdC5wcm9wcyc7XG5cbmRlY2xhcmUgY29uc3QgXztcblxuY29uc3QgV0lER0VUX0NPTkZJRyA9IHt3aWRnZXRUeXBlOiAnd20tc2VsZWN0JywgaG9zdENsYXNzOiAnYXBwLXNlbGVjdC13cmFwcGVyJ307XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnd20tc2VsZWN0JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2VsZWN0LmNvbXBvbmVudC5odG1sJyxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgcHJvdmlkZUFzKFNlbGVjdENvbXBvbmVudCwgTkdfVkFMVUVfQUNDRVNTT1IsIHRydWUpLFxuICAgICAgICBwcm92aWRlQXMoU2VsZWN0Q29tcG9uZW50LCBOR19WQUxJREFUT1JTLCB0cnVlKSxcbiAgICAgICAgcHJvdmlkZUFzV2lkZ2V0UmVmKFNlbGVjdENvbXBvbmVudClcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIFNlbGVjdENvbXBvbmVudCBleHRlbmRzIERhdGFzZXRBd2FyZUZvcm1Db21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgICBzdGF0aWMgaW5pdGlhbGl6ZVByb3BzID0gcmVnaXN0ZXJQcm9wcygpO1xuXG4gICAgcHVibGljIHJlYWRvbmx5OiBib29sZWFuO1xuICAgIHB1YmxpYyBwbGFjZWhvbGRlcjogc3RyaW5nO1xuICAgIHB1YmxpYyBuYXZzZWFyY2hiYXI6IGFueTtcbiAgICBwdWJsaWMgY2xhc3M6IGFueTtcbiAgICBwdWJsaWMgcmVxdWlyZWQ6IGJvb2xlYW47XG4gICAgcHVibGljIGRpc2FibGVkOiBib29sZWFuO1xuICAgIHB1YmxpYyB0YWJpbmRleDogYW55O1xuICAgIHB1YmxpYyBuYW1lOiBzdHJpbmc7XG4gICAgcHVibGljIGF1dG9mb2N1czogYm9vbGVhbjtcbiAgICBwdWJsaWMgaGludDogc3RyaW5nO1xuICAgIHByaXZhdGUgYXBwOiBBcHA7XG5cbiAgICBAVmlld0NoaWxkKCdzZWxlY3QnLCB7IHN0YXRpYzogdHJ1ZSwgcmVhZDogRWxlbWVudFJlZiB9KSBzZWxlY3RFbDogRWxlbWVudFJlZjtcblxuICAgIHNldCBkYXRhc291cmNlKGRzKSB7XG4gICAgICAgIGlmIChkcyAmJiBkcy5leGVjdXRlICYmIGRzLmV4ZWN1dGUoRGF0YVNvdXJjZS5PcGVyYXRpb24uSVNfQk9VTkRfVE9fTE9DQUxFKSkge1xuICAgICAgICAgICAgdGhpcy5kYXRhdmFsdWUgPSBkcy5leGVjdXRlKERhdGFTb3VyY2UuT3BlcmF0aW9uLkdFVF9ERUZBVUxUX0xPQ0FMRSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihpbmo6IEluamVjdG9yLCBhcHA6IEFwcCkge1xuICAgICAgICBzdXBlcihpbmosIFdJREdFVF9DT05GSUcpO1xuICAgICAgICB0aGlzLmFwcCA9IGFwcDtcbiAgICAgICAgdGhpcy5hY2NlcHRzQXJyYXkgPSB0cnVlO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgc3VwZXIubmdBZnRlclZpZXdJbml0KCk7XG4gICAgICAgIHN0eWxlcih0aGlzLnNlbGVjdEVsLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQsIHRoaXMpO1xuICAgIH1cblxuICAgIC8vIENoYW5nZSBldmVudCBpcyByZWdpc3RlcmVkIGZyb20gdGhlIHRlbXBsYXRlLCBQcmV2ZW50IHRoZSBmcmFtZXdvcmsgZnJvbSByZWdpc3RlcmluZyBvbmUgbW9yZSBldmVudFxuICAgIHByb3RlY3RlZCBoYW5kbGVFdmVudChub2RlOiBIVE1MRWxlbWVudCwgZXZlbnROYW1lOiBzdHJpbmcsIGV2ZW50Q2FsbGJhY2s6IEZ1bmN0aW9uLCBsb2NhbHM6IGFueSkge1xuICAgICAgICBpZiAoIV8uaW5jbHVkZXMoWydibHVyJywgJ2NoYW5nZSddLCBldmVudE5hbWUpKSB7XG4gICAgICAgICAgICBzdXBlci5oYW5kbGVFdmVudCh0aGlzLnNlbGVjdEVsLm5hdGl2ZUVsZW1lbnQsIGV2ZW50TmFtZSwgZXZlbnRDYWxsYmFjaywgbG9jYWxzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uU2VsZWN0VmFsdWVDaGFuZ2UoJGV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLnJlYWRvbmx5KSB7XG4gICAgICAgICAgICBpZiAodGhpcy5wbGFjZWhvbGRlcikge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0RWwubmF0aXZlRWxlbWVudC52YWx1ZSA9IHRoaXMucGxhY2Vob2xkZXI7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0RWwubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5kYXRhdmFsdWUgPSAodGhpcyBhcyBhbnkpLnByZXZEYXRhdmFsdWU7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pbnZva2VPblRvdWNoZWQoKTtcbiAgICAgICAgLy8gaW52b2tlIG9uIGRhdGF2YWx1ZSBjaGFuZ2UuXG4gICAgICAgIHRoaXMuaW52b2tlT25DaGFuZ2UodGhpcy5kYXRhdmFsdWUsICRldmVudCB8fCB7fSwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgb25Qcm9wZXJ0eUNoYW5nZShrZXk6IHN0cmluZywgbnY6IGFueSwgb3Y/OiBhbnkpIHtcbiAgICAgICAgaWYgKGtleSA9PT0gJ3JlcXVpcmVkJykgIHtcbiAgICAgICAgICAgIHRoaXMuX29uQ2hhbmdlKHRoaXMuZGF0YXZhbHVlKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoa2V5ID09PSAnY2xhc3MnIHx8ICBrZXkgPT09ICd0YWJpbmRleCcpIHtcbiAgICAgICAgICAgIGlmKGtleSA9PT0gJ2NsYXNzJykge1xuICAgICAgICAgICAgICAgIC8vIEFmdGVyIE5HMTUgdXBncmFkZSBuZy1pbnZhbGlkIGNsYXNzIGlzIGFkZGVkIGV2ZW4gdGhlIGZpZWxkIGlzIHZhbGlkLCBzbyB3ZSBhcmUgcmVtb3ZpbmcgdGhlIG5nLWludmFsaWQgbWFudWFsbHlcbiAgICAgICAgICAgICAgICBjb25zdCBpc05nVW50b3VjaGVkVmFsaWQgPSB0aGlzLnNlbGVjdEVsLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCduZy11bnRvdWNoZWQnKSAmJiB0aGlzLnNlbGVjdEVsLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCduZy12YWxpZCcpXG4gICAgICAgICAgICAgICAgaWYoaXNOZ1VudG91Y2hlZFZhbGlkICYmIG52LmluY2x1ZGVzKCduZy11bnRvdWNoZWQnKSAmJiBudi5pbmNsdWRlcygnbmctaW52YWxpZCcpKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCk9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZih0aGlzLnNlbGVjdEVsLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCduZy11bnRvdWNoZWQnKSAmJiB0aGlzLnNlbGVjdEVsLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCduZy12YWxpZCcpICYmIHRoaXMuc2VsZWN0RWwubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoJ25nLWludmFsaWQnKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0RWwubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCduZy1pbnZhbGlkJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSBlbHNlIGlmIChrZXkgPT09ICdyZWFkb25seScpIHtcbiAgICAgICAgICAgICAobnYgPT09IHRydWUpID8gc2V0QXR0cih0aGlzLnNlbGVjdEVsLm5hdGl2ZUVsZW1lbnQsICdyZWFkb25seScsICdyZWFkb25seScpIDogcmVtb3ZlQXR0cih0aGlzLnNlbGVjdEVsLm5hdGl2ZUVsZW1lbnQsICdyZWFkb25seScpIDtcbiAgICAgICAgfVxuICAgICAgICBzdXBlci5vblByb3BlcnR5Q2hhbmdlKGtleSwgbnYsIG92KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBXaGVuIGNhcHRpb24gZmxvYXRpbmcgaXMgZW5hYmxlZCBhbmQgcGxhY2Vob2xkZXIgaXMgZ2l2ZW4sIGRvIG5vdCBzaG93IHBsYWNlaG9sZGVyIHVudGlsIHVzZXIgZm9jdXNlcyBvbiB0aGUgZmllbGRcbiAgICAgKiBXaGVuIGZvY3VzZWQgYWRkIHRoZSBwbGFjZWhvbGRlciB0byB0aGUgb3B0aW9uIHdoaWNoIGlzIHNlbGVjdGVkXG4gICAgICogT24gYmx1ciwgcmVtb3ZlIHRoZSBwbGFjZWhvbGRlciBhbmQgZG8gbm90IGFuaW1hdGUgdGhlIGxhYmVsXG4gICAgICogQHBhcmFtICRldmVudCBldmVudCByZWNlaXZlZCB3aWxsIGJlIGVpdGhlciBhIGJsdXIgb3IgZm9jdXMgZXZlbnRcbiAgICAgKi9cbiAgICBjaGVja0ZvckZsb2F0aW5nTGFiZWwoJGV2ZW50KSB7XG4gICAgICAgIGNvbnN0IGNhcHRpb25FbCA9ICQodGhpcy5zZWxlY3RFbC5uYXRpdmVFbGVtZW50KS5jbG9zZXN0KCcuYXBwLWNvbXBvc2l0ZS13aWRnZXQuY2FwdGlvbi1mbG9hdGluZycpO1xuICAgICAgICBpZiAoY2FwdGlvbkVsLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGlmICgkZXZlbnQudHlwZSA9PT0gJ2ZvY3VzJyAmJiAoIXRoaXMuZGF0YXZhbHVlIHx8ICh0aGlzLmRhdGF2YWx1ZSAmJiAkKHRoaXMuc2VsZWN0RWwpLmZpbmQoJ3NlbGVjdCBvcHRpb246c2VsZWN0ZWQnKS50ZXh0KCkgPT09ICcnICYmIHRoaXMucGxhY2Vob2xkZXIpKSkge1xuICAgICAgICAgICAgICAgIGlmKCEodGhpcy5kYXRhdmFsdWUgfHwgdGhpcy5wbGFjZWhvbGRlcikpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVQbGFjZWhvbGRlck9wdGlvbigpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICQodGhpcy5zZWxlY3RFbC5uYXRpdmVFbGVtZW50KS5maW5kKCdvcHRpb246Zmlyc3QnKS50ZXh0KHRoaXMucGxhY2Vob2xkZXIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIXRoaXMuZGF0YXZhbHVlKSB7XG4gICAgICAgICAgICAgICAgJCh0aGlzLnNlbGVjdEVsLm5hdGl2ZUVsZW1lbnQpLmZpbmQoJ29wdGlvbjpzZWxlY3RlZCcpLnRleHQoJycpO1xuICAgICAgICAgICAgICAgIGNhcHRpb25FbC5yZW1vdmVDbGFzcygnZmxvYXQtYWN0aXZlJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZighKHRoaXMuZGF0YXZhbHVlIHx8IHRoaXMucGxhY2Vob2xkZXIpKSB7XG4gICAgICAgICAgICB0aGlzLnJlbW92ZVBsYWNlaG9sZGVyT3B0aW9uKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKlxuICAgICogUmVtb3ZpbmcgdGhlIHBsYWNlaG9sZGVyIG9wdGlvbiBpZiBubyBwbGFjZWhvbGRlciBpcyBwcm92aWRlZC5cbiAgICAqIEluIGh0bWwgd2UgYXJlIGhpZGluZyB0aGUgcGxhY2Vob2xkZXIgb3B0aW9uIHVzaW5nIGNzcyBidXQgaW4gYXBwbGUgZGV2aWNlcyBhbmQgc2FmYXJpIG9wdGlvbiBpcyBzaG93aW5nLlxuICAgICogKi9cbiAgICBwcml2YXRlIHJlbW92ZVBsYWNlaG9sZGVyT3B0aW9uKCkge1xuICAgICAgICBjb25zdCBoaWRkZW5FbGUgPSAkKHRoaXMuc2VsZWN0RWwubmF0aXZlRWxlbWVudCkuZmluZCgnI3BsYWNlaG9sZGVyT3B0aW9uJyk7XG4gICAgICAgIGlmIChoaWRkZW5FbGUubGVuZ3RoKSB7XG4gICAgICAgICAgICBoaWRkZW5FbGUucmVtb3ZlKCk7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdEVsLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxzZWxlY3Qgcm9sZT1cImxpc3Rib3hcIiBhcmlhLWhhc3BvcHVwPVwidHJ1ZVwiIGFyaWEtZXhwYW5kZWQ9XCJmYWxzZVwiICNzZWxlY3RcbiAgICAgICAgZm9jdXMtdGFyZ2V0XG4gICAgICAgIFtuZ0NsYXNzXT1cIlsnYXBwLXNlbGVjdCBmb3JtLWNvbnRyb2wnLCBjbGFzc11cIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgICAgICBbdGFiaW5kZXhdPVwidGFiaW5kZXhcIlxuICAgICAgICBbKG5nTW9kZWwpXT1cIm1vZGVsQnlLZXlcIlxuICAgICAgICBbbXVsdGlwbGVdPVwibXVsdGlwbGVcIlxuICAgICAgICAoY2hhbmdlKT1cIm9uU2VsZWN0VmFsdWVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgIChmb2N1cyk9XCJjaGVja0ZvckZsb2F0aW5nTGFiZWwoJGV2ZW50KVwiXG4gICAgICAgIChibHVyKT1cImludm9rZU9uVG91Y2hlZCgkZXZlbnQpOyBjaGVja0ZvckZsb2F0aW5nTGFiZWwoJGV2ZW50KVwiXG4gICAgICAgIFthdHRyLm5hbWVdPVwibmFtZVwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiaGludFwiXG4gICAgICAgIFthdHRyLmFyaWEtbXVsdGlzZWxlY3RhYmxlXT1cIm11bHRpcGxlXCJcbiAgICAgICAgW2F1dG9mb2N1c109XCJhdXRvZm9jdXNcIj5cblxuICAgICAgICA8b3B0aW9uIHNlbGVjdGVkXG4gICAgICAgICAgICAgICAgdmFsdWU9XCJ1bmRlZmluZWRcIlxuICAgICAgICAgICAgICAgIFt0ZXh0Q29udGVudF09XCJwbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgICAgaWQ9XCJwbGFjZWhvbGRlck9wdGlvblwiXG4gICAgICAgICAgICAgICAgW2hpZGRlbl09XCIhcGxhY2Vob2xkZXJcIj48L29wdGlvbj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJncm91cGJ5XCI+XG4gICAgICAgIDxvcHRncm91cCAqbmdGb3I9XCJsZXQgZ3JvdXBPYmogb2YgZ3JvdXBlZERhdGFcIlxuICAgICAgICAgICAgW2xhYmVsXT1cImdyb3VwT2JqLmtleVwiPlxuICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBncm91cE9iai5kYXRhO1wiXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cIml0ZW0ua2V5XCJcbiAgICAgICAgICAgICAgICBbc2VsZWN0ZWRdPVwiaXRlbS5zZWxlY3RlZFwiXG4gICAgICAgICAgICAgICAgW3RleHRDb250ZW50XT1cIml0ZW0ubGFiZWxcIlxuICAgICAgICAgICAgICAgIHJvbGU9XCJvcHRpb25cIj48L29wdGlvbj5cbiAgICAgICAgPC9vcHRncm91cD5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZ3JvdXBieVwiPlxuICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBpdGVtIG9mIGRhdGFzZXRJdGVtc1wiXG4gICAgICAgICAgICBbdmFsdWVdPVwiaXRlbS5rZXlcIlxuICAgICAgICAgICAgW3NlbGVjdGVkXT1cIml0ZW0uc2VsZWN0ZWRcIlxuICAgICAgICAgICAgW3RleHRDb250ZW50XT1cIml0ZW0ubGFiZWxcIlxuICAgICAgICAgICAgcm9sZT1cIm9wdGlvblwiPjwvb3B0aW9uPlxuICAgIDwvbmctY29udGFpbmVyPlxuPC9zZWxlY3Q+XG4iXX0=
|