@wavemaker/app-ng-runtime 12.0.0-next.45061 → 12.0.0-next.45064
Sign up to get free protection for your applications and to get access to all the features.
- app-ng-runtime/components/input/rating/bundles/index.umd.js +26 -35
- app-ng-runtime/components/input/rating/esm2022/rating.component.mjs +26 -37
- app-ng-runtime/components/input/rating/esm2022/rating.props.mjs +3 -1
- app-ng-runtime/components/input/rating/fesm2022/index.mjs +27 -36
- app-ng-runtime/components/input/rating/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/rating/rating.component.d.ts +3 -1
- app-ng-runtime/package.json +1 -1
- app-ng-runtime/scripts/custom-widgets-m3/src/checkbox_set/checkbox_set.d.ts +0 -0
- app-ng-runtime/scripts/custom-widgets-m3/src/checkbox_set/checkbox_set.js +0 -38
- app-ng-runtime/scripts/custom-widgets-m3/src/checkbox_set/page.min.d.ts +0 -7
- app-ng-runtime/scripts/custom-widgets-m3/src/checkbox_set/page.min.js +0 -7
- app-ng-runtime/scripts/custom-widgets-m3/src/discrete_slider/discrete_slider.d.ts +0 -10
- app-ng-runtime/scripts/custom-widgets-m3/src/discrete_slider/discrete_slider.js +0 -171
- app-ng-runtime/scripts/custom-widgets-m3/src/discrete_slider/page.min.d.ts +0 -7
- app-ng-runtime/scripts/custom-widgets-m3/src/discrete_slider/page.min.js +0 -7
- app-ng-runtime/scripts/custom-widgets-m3/src/divider/divider.d.ts +0 -0
- app-ng-runtime/scripts/custom-widgets-m3/src/divider/divider.js +0 -28
- app-ng-runtime/scripts/custom-widgets-m3/src/divider/page.min.d.ts +0 -7
- app-ng-runtime/scripts/custom-widgets-m3/src/divider/page.min.js +0 -7
- app-ng-runtime/scripts/custom-widgets-m3/src/icon_button/icon_button.d.ts +0 -0
- app-ng-runtime/scripts/custom-widgets-m3/src/icon_button/icon_button.js +0 -24
- app-ng-runtime/scripts/custom-widgets-m3/src/icon_button/page.min.d.ts +0 -7
- app-ng-runtime/scripts/custom-widgets-m3/src/icon_button/page.min.js +0 -7
- app-ng-runtime/scripts/custom-widgets-m3/src/input_chip/input_chip.d.ts +0 -0
- app-ng-runtime/scripts/custom-widgets-m3/src/input_chip/input_chip.js +0 -34
- app-ng-runtime/scripts/custom-widgets-m3/src/input_chip/input_chip.variables.d.ts +0 -0
- app-ng-runtime/scripts/custom-widgets-m3/src/input_chip/input_chip.variables.js +0 -1
- app-ng-runtime/scripts/custom-widgets-m3/src/input_chip/page.min.d.ts +0 -7
- app-ng-runtime/scripts/custom-widgets-m3/src/input_chip/page.min.js +0 -7
- app-ng-runtime/scripts/custom-widgets-m3/src/payee_list/page.min.d.ts +0 -7
- app-ng-runtime/scripts/custom-widgets-m3/src/payee_list/page.min.js +0 -7
- app-ng-runtime/scripts/custom-widgets-m3/src/payee_list/payee_list.d.ts +0 -0
- app-ng-runtime/scripts/custom-widgets-m3/src/payee_list/payee_list.js +0 -19
- app-ng-runtime/scripts/custom-widgets-m3/src/progressbar/page.min.d.ts +0 -7
- app-ng-runtime/scripts/custom-widgets-m3/src/progressbar/page.min.js +0 -7
- app-ng-runtime/scripts/custom-widgets-m3/src/progressbar/progressbar.d.ts +0 -0
- app-ng-runtime/scripts/custom-widgets-m3/src/progressbar/progressbar.js +0 -52
- app-ng-runtime/scripts/custom-widgets-m3/src/radio_set/page.min.d.ts +0 -7
- app-ng-runtime/scripts/custom-widgets-m3/src/radio_set/page.min.js +0 -7
- app-ng-runtime/scripts/custom-widgets-m3/src/radio_set/radio_set.d.ts +0 -0
- app-ng-runtime/scripts/custom-widgets-m3/src/radio_set/radio_set.js +0 -35
- app-ng-runtime/scripts/custom-widgets-m3/src/slider/page.min.d.ts +0 -7
- app-ng-runtime/scripts/custom-widgets-m3/src/slider/page.min.js +0 -7
- app-ng-runtime/scripts/custom-widgets-m3/src/slider/slider.d.ts +0 -11
- app-ng-runtime/scripts/custom-widgets-m3/src/slider/slider.js +0 -121
- app-ng-runtime/scripts/custom-widgets-m3/src/switch_button/page.min.d.ts +0 -7
- app-ng-runtime/scripts/custom-widgets-m3/src/switch_button/page.min.js +0 -7
- app-ng-runtime/scripts/custom-widgets-m3/src/switch_button/switch_button.d.ts +0 -0
- app-ng-runtime/scripts/custom-widgets-m3/src/switch_button/switch_button.js +0 -33
- app-ng-runtime/scripts/custom-widgets-m3/src/textfield/page.min.d.ts +0 -7
- app-ng-runtime/scripts/custom-widgets-m3/src/textfield/page.min.js +0 -7
- app-ng-runtime/scripts/custom-widgets-m3/src/textfield/textfield.d.ts +0 -4
- app-ng-runtime/scripts/custom-widgets-m3/src/textfield/textfield.js +0 -65
- app-ng-runtime/scripts/custom-widgets-m3/src/widget-registry.d.ts +0 -6
- app-ng-runtime/scripts/custom-widgets-m3/src/widget-registry.js +0 -68
@@ -36,6 +36,8 @@
|
|
36
36
|
['displayexpression', i3.PROP_STRING],
|
37
37
|
['displayfield', i3.PROP_STRING],
|
38
38
|
['iconcolor', i3.PROP_STRING],
|
39
|
+
['activeiconclass', { value: 'wi wi-star', ...i3.PROP_STRING }],
|
40
|
+
['inactiveiconclass', { value: 'wi wi-star-border', ...i3.PROP_STRING }],
|
39
41
|
['iconsize', i3.PROP_STRING],
|
40
42
|
['maxvalue', { value: 5, ...i3.PROP_NUMBER }],
|
41
43
|
['name', i3.PROP_STRING],
|
@@ -54,36 +56,28 @@
|
|
54
56
|
const _c0 = ["ratingInput"];
|
55
57
|
const _c1 = ["wmRating", ""];
|
56
58
|
const _c2 = () => ({ standalone: true });
|
57
|
-
const _c3 = a0 => ({
|
58
|
-
const _c4 = (a0, a1) => ({
|
59
|
-
|
60
|
-
const _c6 = (a0, a1) => ({ "font-size": a0, color: a1 });
|
61
|
-
function RatingComponent_div_1_label_1_Template(rf, ctx) { if (rf & 1) {
|
59
|
+
const _c3 = a0 => ({ active: a0 });
|
60
|
+
const _c4 = (a0, a1) => ({ "font-size": a0, color: a1 });
|
61
|
+
function RatingComponent_label_2_Template(rf, ctx) { if (rf & 1) {
|
62
62
|
const _r1 = i0__namespace.ɵɵgetCurrentView();
|
63
|
-
i0__namespace.ɵɵelementStart(0, "label",
|
64
|
-
i0__namespace.ɵɵlistener("touchstart", function
|
65
|
-
i0__namespace.ɵɵ
|
66
|
-
i0__namespace.ɵɵ
|
63
|
+
i0__namespace.ɵɵelementStart(0, "label", 5);
|
64
|
+
i0__namespace.ɵɵlistener("touchstart", function RatingComponent_label_2_Template_label_touchstart_0_listener($event) { i0__namespace.ɵɵrestoreView(_r1); const ctx_r1 = i0__namespace.ɵɵnextContext(); return i0__namespace.ɵɵresetView(ctx_r1.onTouchStart($event)); })("mouseleave", function RatingComponent_label_2_Template_label_mouseleave_0_listener($event) { const rate_r3 = i0__namespace.ɵɵrestoreView(_r1).$implicit; const ctx_r1 = i0__namespace.ɵɵnextContext(); return i0__namespace.ɵɵresetView(ctx_r1.onMouseleave($event, rate_r3)); })("mouseover", function RatingComponent_label_2_Template_label_mouseover_0_listener($event) { const rate_r3 = i0__namespace.ɵɵrestoreView(_r1).$implicit; const ctx_r1 = i0__namespace.ɵɵnextContext(); return i0__namespace.ɵɵresetView(ctx_r1.onMouseOver($event, rate_r3)); });
|
65
|
+
i0__namespace.ɵɵelement(1, "i", 6);
|
66
|
+
i0__namespace.ɵɵelementStart(2, "input", 7, 0);
|
67
|
+
i0__namespace.ɵɵlistener("click", function RatingComponent_label_2_Template_input_click_2_listener($event) { const rate_r3 = i0__namespace.ɵɵrestoreView(_r1).$implicit; const ctx_r1 = i0__namespace.ɵɵnextContext(); return i0__namespace.ɵɵresetView(ctx_r1.onRatingClick($event, rate_r3)); });
|
67
68
|
i0__namespace.ɵɵelementEnd()();
|
68
69
|
} if (rf & 2) {
|
69
70
|
const rate_r3 = ctx.$implicit;
|
70
|
-
const ctx_r1 = i0__namespace.ɵɵnextContext(
|
71
|
-
i0__namespace.ɵɵproperty("ngClass", i0__namespace.ɵɵpureFunction1(
|
71
|
+
const ctx_r1 = i0__namespace.ɵɵnextContext();
|
72
|
+
i0__namespace.ɵɵproperty("ngClass", i0__namespace.ɵɵpureFunction1(11, _c3, rate_r3.index <= ctx_r1.selectedRatingValue))("ngStyle", i0__namespace.ɵɵpureFunction2(13, _c4, ctx_r1.iconsize, rate_r3.index <= ctx_r1.selectedRatingValue && ctx_r1.iconcolor))("title", rate_r3.label || rate_r3.index)("for", ctx_r1._id + "-" + rate_r3.index);
|
73
|
+
i0__namespace.ɵɵadvance();
|
74
|
+
i0__namespace.ɵɵclassMapInterpolate1("app-icon ", rate_r3.index <= ctx_r1.selectedRatingValue ? ctx_r1.activeiconclass : ctx_r1.inactiveiconclass, "");
|
72
75
|
i0__namespace.ɵɵadvance();
|
73
76
|
i0__namespace.ɵɵproperty("id", ctx_r1._id + "-" + rate_r3.index)("value", rate_r3.key || rate_r3.index);
|
74
77
|
i0__namespace.ɵɵattribute("aria-label", (rate_r3.label || rate_r3.index) + " out of " + ctx_r1.ratingItems.length + " ratings")("aria-checked", rate_r3.label === ctx_r1.datavalue ? "true" : "false");
|
75
78
|
} }
|
76
|
-
function
|
77
|
-
i0__namespace.ɵɵ
|
78
|
-
i0__namespace.ɵɵtemplate(1, RatingComponent_div_1_label_1_Template, 3, 13, "label", 7);
|
79
|
-
i0__namespace.ɵɵelementEnd();
|
80
|
-
} if (rf & 2) {
|
81
|
-
const ctx_r1 = i0__namespace.ɵɵnextContext();
|
82
|
-
i0__namespace.ɵɵadvance();
|
83
|
-
i0__namespace.ɵɵproperty("ngForOf", ctx_r1.ratingItems);
|
84
|
-
} }
|
85
|
-
function RatingComponent_label_4_Template(rf, ctx) { if (rf & 1) {
|
86
|
-
i0__namespace.ɵɵelement(0, "label", 10);
|
79
|
+
function RatingComponent_label_3_Template(rf, ctx) { if (rf & 1) {
|
80
|
+
i0__namespace.ɵɵelement(0, "label", 8);
|
87
81
|
} if (rf & 2) {
|
88
82
|
const ctx_r1 = i0__namespace.ɵɵnextContext();
|
89
83
|
i0__namespace.ɵɵproperty("textContent", ctx_r1.caption);
|
@@ -103,6 +97,8 @@
|
|
103
97
|
}
|
104
98
|
constructor(inj, explicitContext) {
|
105
99
|
super(inj, WIDGET_CONFIG, explicitContext);
|
100
|
+
this.activeiconclass = '';
|
101
|
+
this.inactiveiconclass = '';
|
106
102
|
this._id = core.generateGUId();
|
107
103
|
i3.styler(this.nativeElement, this);
|
108
104
|
// prepare the rating options on dataset ready.
|
@@ -212,7 +208,6 @@
|
|
212
208
|
}
|
213
209
|
calculateRatingsWidth(dataVal) {
|
214
210
|
const selectedRating = parseFloat(this.selectedRatingValue), starWidth = 0.925, maxValue = parseInt(this.maxvalue || this.datasetItems.length, 10) || DEFAULT_RATING;
|
215
|
-
core.setCSS(this.nativeElement.querySelector('.ratings-container'), 'width', (starWidth * maxValue) + 'em');
|
216
211
|
dataVal = dataVal || this.datavalue;
|
217
212
|
if (dataVal === undefined || dataVal === '' || dataVal === null) {
|
218
213
|
this.caption = '';
|
@@ -270,26 +265,22 @@
|
|
270
265
|
} }, features: [i0__namespace.ɵɵProvidersFeature([
|
271
266
|
i3.provideAs(RatingComponent, i2.NG_VALUE_ACCESSOR, true),
|
272
267
|
i3.provideAsWidgetRef(RatingComponent)
|
273
|
-
]), i0__namespace.ɵɵInheritDefinitionFeature], attrs: _c1, decls:
|
268
|
+
]), i0__namespace.ɵɵInheritDefinitionFeature], attrs: _c1, decls: 4, vars: 7, consts: [["ratingInput", ""], ["aria-multiselectable", "true", "ngDefaultControl", "", 1, "ratings-wrapper", 3, "focus", "ngModelChange", "ngModel", "ngModelOptions"], [1, "rating-style"], [3, "ngClass", "ngStyle", "title", "for", "touchstart", "mouseleave", "mouseover", 4, "ngFor", "ngForOf"], ["class", "caption", 3, "textContent", 4, "ngIf"], [3, "touchstart", "mouseleave", "mouseover", "ngClass", "ngStyle", "title", "for"], ["aria-hidden", "true"], ["type", "radio", "role", "radio", "name", "ratings-id", 3, "click", "id", "value"], [1, "caption", 3, "textContent"]], template: function RatingComponent_Template(rf, ctx) { if (rf & 1) {
|
274
269
|
i0__namespace.ɵɵelementStart(0, "div", 1);
|
275
270
|
i0__namespace.ɵɵlistener("focus", function RatingComponent_Template_div_focus_0_listener($event) { return ctx.onFocus($event); });
|
276
271
|
i0__namespace.ɵɵtwoWayListener("ngModelChange", function RatingComponent_Template_div_ngModelChange_0_listener($event) { i0__namespace.ɵɵtwoWayBindingSet(ctx.modelByKey, $event) || (ctx.modelByKey = $event); return $event; });
|
277
|
-
i0__namespace.ɵɵ
|
278
|
-
i0__namespace.ɵɵ
|
279
|
-
i0__namespace.ɵɵelement(3, "div", 4);
|
272
|
+
i0__namespace.ɵɵelementStart(1, "div", 2);
|
273
|
+
i0__namespace.ɵɵtemplate(2, RatingComponent_label_2_Template, 4, 16, "label", 3);
|
280
274
|
i0__namespace.ɵɵelementEnd();
|
281
|
-
i0__namespace.ɵɵtemplate(
|
275
|
+
i0__namespace.ɵɵtemplate(3, RatingComponent_label_3_Template, 1, 1, "label", 4);
|
282
276
|
i0__namespace.ɵɵelementEnd();
|
283
277
|
} if (rf & 2) {
|
284
278
|
i0__namespace.ɵɵtwoWayProperty("ngModel", ctx.modelByKey);
|
285
|
-
i0__namespace.ɵɵproperty("ngModelOptions", i0__namespace.ɵɵpureFunction0(
|
286
|
-
i0__namespace.ɵɵadvance();
|
287
|
-
i0__namespace.ɵɵproperty("ngIf", !ctx.readonly);
|
279
|
+
i0__namespace.ɵɵproperty("ngModelOptions", i0__namespace.ɵɵpureFunction0(6, _c2));
|
288
280
|
i0__namespace.ɵɵadvance();
|
289
|
-
i0__namespace.ɵɵclassProp("
|
290
|
-
i0__namespace.ɵɵproperty("ngStyle", i0__namespace.ɵɵpureFunction1(9, _c3, ctx.iconsize));
|
281
|
+
i0__namespace.ɵɵclassProp("disabled", ctx.readonly);
|
291
282
|
i0__namespace.ɵɵadvance();
|
292
|
-
i0__namespace.ɵɵproperty("
|
283
|
+
i0__namespace.ɵɵproperty("ngForOf", ctx.ratingItems);
|
293
284
|
i0__namespace.ɵɵadvance();
|
294
285
|
i0__namespace.ɵɵproperty("ngIf", ctx.showcaptions);
|
295
286
|
} }, dependencies: [i1__namespace.NgClass, i1__namespace.NgForOf, i1__namespace.NgIf, i1__namespace.NgStyle, i2__namespace.DefaultValueAccessor, i2__namespace.NgControlStatus, i2__namespace.NgModel, i3__namespace.TextContentDirective], encapsulation: 2 }); }
|
@@ -299,7 +290,7 @@
|
|
299
290
|
args: [{ selector: '[wmRating]', providers: [
|
300
291
|
i3.provideAs(RatingComponent, i2.NG_VALUE_ACCESSOR, true),
|
301
292
|
i3.provideAsWidgetRef(RatingComponent)
|
302
|
-
], template: "<div (focus)=\"onFocus($event)\" [(ngModel)]=\"modelByKey\" [ngModelOptions]=\"{standalone: true}\" aria-multiselectable=\"true\"\n class=\"ratings-wrapper\" ngDefaultControl>\n <div
|
293
|
+
], template: "<div (focus)=\"onFocus($event)\" [(ngModel)]=\"modelByKey\" [ngModelOptions]=\"{standalone: true}\" aria-multiselectable=\"true\"\n class=\"ratings-wrapper\" ngDefaultControl>\n <div [class.disabled]=\"readonly\" class=\"rating-style\">\n <label *ngFor=\"let rate of ratingItems;\"\n [ngClass]=\"{active : rate.index <= selectedRatingValue}\"\n [ngStyle]=\"{'font-size' :iconsize, color: rate.index <= selectedRatingValue && iconcolor}\"\n [title]=\"rate.label || rate.index\"\n (touchstart)=\"onTouchStart($event)\"\n (mouseleave)=\"onMouseleave($event, rate)\"\n (mouseover)=\"onMouseOver($event, rate)\"\n [for]=\"_id + '-' + rate.index\">\n <i class=\"app-icon {{rate.index <= selectedRatingValue ? activeiconclass : inactiveiconclass}}\" aria-hidden=\"true\"></i>\n <input #ratingInput type=\"radio\" role=\"radio\" [attr.aria-label]=\"(rate.label || rate.index) + ' out of ' + ratingItems.length + ' ratings'\" [attr.aria-checked]=\"rate.label === datavalue ? 'true' : 'false'\"\n [id]=\"_id + '-' + rate.index\" (click)=\"onRatingClick($event, rate)\" name=\"ratings-id\" [value]=\"rate.key || rate.index\"/>\n </label>\n </div>\n <label *ngIf=\"showcaptions\" class=\"caption\" [textContent]=\"caption\"></label>\n</div>\n" }]
|
303
294
|
}], () => [{ type: i0__namespace.Injector }, { type: undefined, decorators: [{
|
304
295
|
type: i0.Inject,
|
305
296
|
args: ['EXPLICIT_CONTEXT']
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import { Component, ElementRef, Inject, Injector, Optional, ViewChild } from '@angular/core';
|
2
2
|
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
3
|
-
import { generateGUId,
|
3
|
+
import { generateGUId, noop } from '@wm/core';
|
4
4
|
import { getOrderedDataset, provideAs, provideAsWidgetRef, styler } from '@wm/components/base';
|
5
5
|
import { DatasetAwareFormComponent } from '@wm/components/input';
|
6
6
|
import { registerProps } from './rating.props';
|
@@ -12,36 +12,28 @@ import * as i3 from "@wm/components/base";
|
|
12
12
|
const _c0 = ["ratingInput"];
|
13
13
|
const _c1 = ["wmRating", ""];
|
14
14
|
const _c2 = () => ({ standalone: true });
|
15
|
-
const _c3 = a0 => ({
|
16
|
-
const _c4 = (a0, a1) => ({
|
17
|
-
|
18
|
-
const _c6 = (a0, a1) => ({ "font-size": a0, color: a1 });
|
19
|
-
function RatingComponent_div_1_label_1_Template(rf, ctx) { if (rf & 1) {
|
15
|
+
const _c3 = a0 => ({ active: a0 });
|
16
|
+
const _c4 = (a0, a1) => ({ "font-size": a0, color: a1 });
|
17
|
+
function RatingComponent_label_2_Template(rf, ctx) { if (rf & 1) {
|
20
18
|
const _r1 = i0.ɵɵgetCurrentView();
|
21
|
-
i0.ɵɵelementStart(0, "label",
|
22
|
-
i0.ɵɵlistener("touchstart", function
|
23
|
-
i0.ɵɵ
|
24
|
-
i0.ɵɵ
|
19
|
+
i0.ɵɵelementStart(0, "label", 5);
|
20
|
+
i0.ɵɵlistener("touchstart", function RatingComponent_label_2_Template_label_touchstart_0_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onTouchStart($event)); })("mouseleave", function RatingComponent_label_2_Template_label_mouseleave_0_listener($event) { const rate_r3 = i0.ɵɵrestoreView(_r1).$implicit; const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onMouseleave($event, rate_r3)); })("mouseover", function RatingComponent_label_2_Template_label_mouseover_0_listener($event) { const rate_r3 = i0.ɵɵrestoreView(_r1).$implicit; const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onMouseOver($event, rate_r3)); });
|
21
|
+
i0.ɵɵelement(1, "i", 6);
|
22
|
+
i0.ɵɵelementStart(2, "input", 7, 0);
|
23
|
+
i0.ɵɵlistener("click", function RatingComponent_label_2_Template_input_click_2_listener($event) { const rate_r3 = i0.ɵɵrestoreView(_r1).$implicit; const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onRatingClick($event, rate_r3)); });
|
25
24
|
i0.ɵɵelementEnd()();
|
26
25
|
} if (rf & 2) {
|
27
26
|
const rate_r3 = ctx.$implicit;
|
28
|
-
const ctx_r1 = i0.ɵɵnextContext(
|
29
|
-
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(
|
27
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
28
|
+
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(11, _c3, rate_r3.index <= ctx_r1.selectedRatingValue))("ngStyle", i0.ɵɵpureFunction2(13, _c4, ctx_r1.iconsize, rate_r3.index <= ctx_r1.selectedRatingValue && ctx_r1.iconcolor))("title", rate_r3.label || rate_r3.index)("for", ctx_r1._id + "-" + rate_r3.index);
|
29
|
+
i0.ɵɵadvance();
|
30
|
+
i0.ɵɵclassMapInterpolate1("app-icon ", rate_r3.index <= ctx_r1.selectedRatingValue ? ctx_r1.activeiconclass : ctx_r1.inactiveiconclass, "");
|
30
31
|
i0.ɵɵadvance();
|
31
32
|
i0.ɵɵproperty("id", ctx_r1._id + "-" + rate_r3.index)("value", rate_r3.key || rate_r3.index);
|
32
33
|
i0.ɵɵattribute("aria-label", (rate_r3.label || rate_r3.index) + " out of " + ctx_r1.ratingItems.length + " ratings")("aria-checked", rate_r3.label === ctx_r1.datavalue ? "true" : "false");
|
33
34
|
} }
|
34
|
-
function
|
35
|
-
i0.ɵɵ
|
36
|
-
i0.ɵɵtemplate(1, RatingComponent_div_1_label_1_Template, 3, 13, "label", 7);
|
37
|
-
i0.ɵɵelementEnd();
|
38
|
-
} if (rf & 2) {
|
39
|
-
const ctx_r1 = i0.ɵɵnextContext();
|
40
|
-
i0.ɵɵadvance();
|
41
|
-
i0.ɵɵproperty("ngForOf", ctx_r1.ratingItems);
|
42
|
-
} }
|
43
|
-
function RatingComponent_label_4_Template(rf, ctx) { if (rf & 1) {
|
44
|
-
i0.ɵɵelement(0, "label", 10);
|
35
|
+
function RatingComponent_label_3_Template(rf, ctx) { if (rf & 1) {
|
36
|
+
i0.ɵɵelement(0, "label", 8);
|
45
37
|
} if (rf & 2) {
|
46
38
|
const ctx_r1 = i0.ɵɵnextContext();
|
47
39
|
i0.ɵɵproperty("textContent", ctx_r1.caption);
|
@@ -61,6 +53,8 @@ export class RatingComponent extends DatasetAwareFormComponent {
|
|
61
53
|
}
|
62
54
|
constructor(inj, explicitContext) {
|
63
55
|
super(inj, WIDGET_CONFIG, explicitContext);
|
56
|
+
this.activeiconclass = '';
|
57
|
+
this.inactiveiconclass = '';
|
64
58
|
this._id = generateGUId();
|
65
59
|
styler(this.nativeElement, this);
|
66
60
|
// prepare the rating options on dataset ready.
|
@@ -170,7 +164,6 @@ export class RatingComponent extends DatasetAwareFormComponent {
|
|
170
164
|
}
|
171
165
|
calculateRatingsWidth(dataVal) {
|
172
166
|
const selectedRating = parseFloat(this.selectedRatingValue), starWidth = 0.925, maxValue = parseInt(this.maxvalue || this.datasetItems.length, 10) || DEFAULT_RATING;
|
173
|
-
setCSS(this.nativeElement.querySelector('.ratings-container'), 'width', (starWidth * maxValue) + 'em');
|
174
167
|
dataVal = dataVal || this.datavalue;
|
175
168
|
if (dataVal === undefined || dataVal === '' || dataVal === null) {
|
176
169
|
this.caption = '';
|
@@ -228,26 +221,22 @@ export class RatingComponent extends DatasetAwareFormComponent {
|
|
228
221
|
} }, features: [i0.ɵɵProvidersFeature([
|
229
222
|
provideAs(RatingComponent, NG_VALUE_ACCESSOR, true),
|
230
223
|
provideAsWidgetRef(RatingComponent)
|
231
|
-
]), i0.ɵɵInheritDefinitionFeature], attrs: _c1, decls:
|
224
|
+
]), i0.ɵɵInheritDefinitionFeature], attrs: _c1, decls: 4, vars: 7, consts: [["ratingInput", ""], ["aria-multiselectable", "true", "ngDefaultControl", "", 1, "ratings-wrapper", 3, "focus", "ngModelChange", "ngModel", "ngModelOptions"], [1, "rating-style"], [3, "ngClass", "ngStyle", "title", "for", "touchstart", "mouseleave", "mouseover", 4, "ngFor", "ngForOf"], ["class", "caption", 3, "textContent", 4, "ngIf"], [3, "touchstart", "mouseleave", "mouseover", "ngClass", "ngStyle", "title", "for"], ["aria-hidden", "true"], ["type", "radio", "role", "radio", "name", "ratings-id", 3, "click", "id", "value"], [1, "caption", 3, "textContent"]], template: function RatingComponent_Template(rf, ctx) { if (rf & 1) {
|
232
225
|
i0.ɵɵelementStart(0, "div", 1);
|
233
226
|
i0.ɵɵlistener("focus", function RatingComponent_Template_div_focus_0_listener($event) { return ctx.onFocus($event); });
|
234
227
|
i0.ɵɵtwoWayListener("ngModelChange", function RatingComponent_Template_div_ngModelChange_0_listener($event) { i0.ɵɵtwoWayBindingSet(ctx.modelByKey, $event) || (ctx.modelByKey = $event); return $event; });
|
235
|
-
i0.ɵɵ
|
236
|
-
i0.ɵɵ
|
237
|
-
i0.ɵɵelement(3, "div", 4);
|
228
|
+
i0.ɵɵelementStart(1, "div", 2);
|
229
|
+
i0.ɵɵtemplate(2, RatingComponent_label_2_Template, 4, 16, "label", 3);
|
238
230
|
i0.ɵɵelementEnd();
|
239
|
-
i0.ɵɵtemplate(
|
231
|
+
i0.ɵɵtemplate(3, RatingComponent_label_3_Template, 1, 1, "label", 4);
|
240
232
|
i0.ɵɵelementEnd();
|
241
233
|
} if (rf & 2) {
|
242
234
|
i0.ɵɵtwoWayProperty("ngModel", ctx.modelByKey);
|
243
|
-
i0.ɵɵproperty("ngModelOptions", i0.ɵɵpureFunction0(
|
244
|
-
i0.ɵɵadvance();
|
245
|
-
i0.ɵɵproperty("ngIf", !ctx.readonly);
|
235
|
+
i0.ɵɵproperty("ngModelOptions", i0.ɵɵpureFunction0(6, _c2));
|
246
236
|
i0.ɵɵadvance();
|
247
|
-
i0.ɵɵclassProp("
|
248
|
-
i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(9, _c3, ctx.iconsize));
|
237
|
+
i0.ɵɵclassProp("disabled", ctx.readonly);
|
249
238
|
i0.ɵɵadvance();
|
250
|
-
i0.ɵɵproperty("
|
239
|
+
i0.ɵɵproperty("ngForOf", ctx.ratingItems);
|
251
240
|
i0.ɵɵadvance();
|
252
241
|
i0.ɵɵproperty("ngIf", ctx.showcaptions);
|
253
242
|
} }, dependencies: [i1.NgClass, i1.NgForOf, i1.NgIf, i1.NgStyle, i2.DefaultValueAccessor, i2.NgControlStatus, i2.NgModel, i3.TextContentDirective], encapsulation: 2 }); }
|
@@ -257,7 +246,7 @@ export class RatingComponent extends DatasetAwareFormComponent {
|
|
257
246
|
args: [{ selector: '[wmRating]', providers: [
|
258
247
|
provideAs(RatingComponent, NG_VALUE_ACCESSOR, true),
|
259
248
|
provideAsWidgetRef(RatingComponent)
|
260
|
-
], template: "<div (focus)=\"onFocus($event)\" [(ngModel)]=\"modelByKey\" [ngModelOptions]=\"{standalone: true}\" aria-multiselectable=\"true\"\n class=\"ratings-wrapper\" ngDefaultControl>\n <div
|
249
|
+
], template: "<div (focus)=\"onFocus($event)\" [(ngModel)]=\"modelByKey\" [ngModelOptions]=\"{standalone: true}\" aria-multiselectable=\"true\"\n class=\"ratings-wrapper\" ngDefaultControl>\n <div [class.disabled]=\"readonly\" class=\"rating-style\">\n <label *ngFor=\"let rate of ratingItems;\"\n [ngClass]=\"{active : rate.index <= selectedRatingValue}\"\n [ngStyle]=\"{'font-size' :iconsize, color: rate.index <= selectedRatingValue && iconcolor}\"\n [title]=\"rate.label || rate.index\"\n (touchstart)=\"onTouchStart($event)\"\n (mouseleave)=\"onMouseleave($event, rate)\"\n (mouseover)=\"onMouseOver($event, rate)\"\n [for]=\"_id + '-' + rate.index\">\n <i class=\"app-icon {{rate.index <= selectedRatingValue ? activeiconclass : inactiveiconclass}}\" aria-hidden=\"true\"></i>\n <input #ratingInput type=\"radio\" role=\"radio\" [attr.aria-label]=\"(rate.label || rate.index) + ' out of ' + ratingItems.length + ' ratings'\" [attr.aria-checked]=\"rate.label === datavalue ? 'true' : 'false'\"\n [id]=\"_id + '-' + rate.index\" (click)=\"onRatingClick($event, rate)\" name=\"ratings-id\" [value]=\"rate.key || rate.index\"/>\n </label>\n </div>\n <label *ngIf=\"showcaptions\" class=\"caption\" [textContent]=\"caption\"></label>\n</div>\n" }]
|
261
250
|
}], () => [{ type: i0.Injector }, { type: undefined, decorators: [{
|
262
251
|
type: Inject,
|
263
252
|
args: ['EXPLICIT_CONTEXT']
|
@@ -268,4 +257,4 @@ export class RatingComponent extends DatasetAwareFormComponent {
|
|
268
257
|
args: ['ratingInput', /* TODO: add static flag */ { read: ElementRef }]
|
269
258
|
}] }); })();
|
270
259
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(RatingComponent, { className: "RatingComponent", filePath: "rating.component.ts", lineNumber: 25 }); })();
|
271
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmF0aW5nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvd2lkZ2V0cy9pbnB1dC9yYXRpbmcvc3JjL3JhdGluZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3dpZGdldHMvaW5wdXQvcmF0aW5nL3NyYy9yYXRpbmcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzNGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRW5ELE9BQU8sRUFBQyxZQUFZLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUNwRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQy9GLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRWpFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvQyxPQUFPLEVBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBQyxNQUFNLFdBQVcsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7SUNMOUQsZ0NBT3NDO0lBRC9CLEFBREEsQUFEQSxtTUFBYywyQkFBb0IsS0FBQyxnTkFDckIsb0NBQTBCLEtBQUMsOE1BQzVCLG1DQUF5QixLQUFDO0lBRTFDLG1DQUMrSDtJQUExRixtTkFBUyxxQ0FBMkIsS0FBQztJQUM5RSxBQUZJLGlCQUMrSCxFQUMzSDs7OztJQUhELEFBSkEsQUFEQSxBQURBLGlHQUF3RCwwSEFDa0MseUNB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QWU7WUFhaEIsY0FBMEI7WUFBMUIsdUNBQTBCO1lBQUMsa0VBQW1DO1lBQ25DLGNBQW1EO1lBQW5ELHNGQUFtRDtZQUUzRSxjQUFrQjtZQUFsQix1Q0FBa0I7OztpRkRNakIsZUFBZTtjQVIzQixTQUFTOzJCQUNJLFlBQVksYUFFWDtvQkFDUCxTQUFTLGtCQUFrQixpQkFBaUIsRUFBRSxJQUFJLENBQUM7b0JBQ25ELGtCQUFrQixpQkFBaUI7aUJBQ3RDOztzQkE2QjJCLE1BQU07dUJBQUMsa0JBQWtCOztzQkFBRyxRQUFRO3FCQVhZLFFBQVE7a0JBQW5GLFNBQVM7bUJBQUMsYUFBYSxFQUFFLDJCQUEyQixDQUFDLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTs7a0ZBaEJqRSxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEVsZW1lbnRSZWYsIEluamVjdCwgSW5qZWN0b3IsIE9wdGlvbmFsLCBWaWV3Q2hpbGR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7Z2VuZXJhdGVHVUlkLCBzZXRDU1MsIG5vb3B9IGZyb20gJ0B3bS9jb3JlJztcbmltcG9ydCB7IGdldE9yZGVyZWREYXRhc2V0LCBwcm92aWRlQXMsIHByb3ZpZGVBc1dpZGdldFJlZiwgc3R5bGVyIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvYmFzZSc7XG5pbXBvcnQgeyBEYXRhc2V0QXdhcmVGb3JtQ29tcG9uZW50IH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvaW5wdXQnO1xuXG5pbXBvcnQgeyByZWdpc3RlclByb3BzIH0gZnJvbSAnLi9yYXRpbmcucHJvcHMnO1xuaW1wb3J0IHtmaW5kLCBpc0VtcHR5LCBpc1VuZGVmaW5lZCwgc2xpY2UsIHRvU3RyaW5nfSBmcm9tIFwibG9kYXNoLWVzXCI7XG5cbmNvbnN0IERFRkFVTFRfQ0xTID0gJ2FwcC1yYXRpbmdzJztcbmNvbnN0IFdJREdFVF9DT05GSUcgPSB7d2lkZ2V0VHlwZTogJ3dtLXJhdGluZycsIGhvc3RDbGFzczogREVGQVVMVF9DTFN9O1xuXG5jb25zdCBNQVhfUkFUSU5HID0gMTA7XG5jb25zdCBERUZBVUxUX1JBVElORyA9IDU7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnW3dtUmF0aW5nXScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3JhdGluZy5jb21wb25lbnQuaHRtbCcsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHByb3ZpZGVBcyhSYXRpbmdDb21wb25lbnQsIE5HX1ZBTFVFX0FDQ0VTU09SLCB0cnVlKSxcbiAgICAgICAgcHJvdmlkZUFzV2lkZ2V0UmVmKFJhdGluZ0NvbXBvbmVudClcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIFJhdGluZ0NvbXBvbmVudCBleHRlbmRzIERhdGFzZXRBd2FyZUZvcm1Db21wb25lbnQge1xuICAgIHN0YXRpYyBpbml0aWFsaXplUHJvcHMgPSByZWdpc3RlclByb3BzKCk7XG5cbiAgICBwdWJsaWMgY2FwdGlvbjogc3RyaW5nO1xuICAgIHB1YmxpYyBzaG93Y2FwdGlvbnM6IGJvb2xlYW47XG4gICAgcHVibGljIG1heHZhbHVlO1xuXG4gICAgcHJpdmF0ZSBfc2VsZWN0ZWRSYXRpbmdWYWx1ZTtcbiAgICBwdWJsaWMgcmF0aW5nc1dpZHRoO1xuICAgIHByaXZhdGUgcmF0aW5nSXRlbXM7XG4gICAgcHJpdmF0ZSBfaWQ7XG5cbiAgICBwdWJsaWMgaWNvbnNpemU6IHN0cmluZztcbiAgICBwdWJsaWMgaWNvbmNvbG9yOiBzdHJpbmc7XG4gICAgcHVibGljIG9uRm9jdXM6IGFueTtcbiAgICBwcml2YXRlIHRvdWNoRW5hYmxlZDpib29sZWFuO1xuICAgIEBWaWV3Q2hpbGQoJ3JhdGluZ0lucHV0JywgLyogVE9ETzogYWRkIHN0YXRpYyBmbGFnICovIHsgcmVhZDogRWxlbWVudFJlZiB9KSByYXRpbmdFbDogRWxlbWVudFJlZjtcblxuICAgIGdldCBzZWxlY3RlZFJhdGluZ1ZhbHVlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWRSYXRpbmdWYWx1ZTtcbiAgICB9XG5cbiAgICBzZXQgc2VsZWN0ZWRSYXRpbmdWYWx1ZSh2YWwpIHtcbiAgICAgICAgdGhpcy5fc2VsZWN0ZWRSYXRpbmdWYWx1ZSA9IHZhbDtcbiAgICAgICAgdGhpcy5jYWxjdWxhdGVSYXRpbmdzV2lkdGgoKTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihpbmo6IEluamVjdG9yLCBASW5qZWN0KCdFWFBMSUNJVF9DT05URVhUJykgQE9wdGlvbmFsKCkgZXhwbGljaXRDb250ZXh0OiBhbnkpIHtcbiAgICAgICAgc3VwZXIoaW5qLCBXSURHRVRfQ09ORklHLCBleHBsaWNpdENvbnRleHQpO1xuICAgICAgICB0aGlzLl9pZCA9IGdlbmVyYXRlR1VJZCgpO1xuICAgICAgICBzdHlsZXIodGhpcy5uYXRpdmVFbGVtZW50LCB0aGlzKTtcblxuICAgICAgICAvLyBwcmVwYXJlIHRoZSByYXRpbmcgb3B0aW9ucyBvbiBkYXRhc2V0IHJlYWR5LlxuICAgICAgICBjb25zdCBkYXRhc2V0U3Vic2NyaXB0aW9uID0gdGhpcy5kYXRhc2V0JC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5wcmVwYXJlUmF0aW5nRGF0YXNldCgpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5yZWdpc3RlckRlc3Ryb3lMaXN0ZW5lcigoKSA9PiBkYXRhc2V0U3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCkpO1xuXG4gICAgICAgIC8vIGxpc3RlbiB0byBjaGFuZ2VzIGluIGRhdGF2YWx1ZS5cbiAgICAgICAgY29uc3QgZGF0YXZhbHVlU3Vic2NyaXB0aW9uID0gdGhpcy5kYXRhdmFsdWUkLnN1YnNjcmliZSgoKSA9PiB0aGlzLm9uRGF0YXZhbHVlQ2hhbmdlKHRoaXMuZGF0YXZhbHVlKSk7XG4gICAgICAgIHRoaXMucmVnaXN0ZXJEZXN0cm95TGlzdGVuZXIoKCkgPT4gZGF0YXZhbHVlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCkpO1xuICAgIH1cblxuICAgIC8vIENoYW5nZSBldmVudCBpcyByZWdpc3RlcmVkIGZyb20gdGhlIHRlbXBsYXRlLCBQcmV2ZW50IHRoZSBmcmFtZXdvcmsgZnJvbSByZWdpc3RlcmluZyBvbmUgbW9yZSBldmVudFxuICAgIHByb3RlY3RlZCBoYW5kbGVFdmVudChub2RlOiBIVE1MRWxlbWVudCwgZXZlbnROYW1lOiBzdHJpbmcsIGV2ZW50Q2FsbGJhY2s6IEZ1bmN0aW9uLCBsb2NhbHM6IGFueSkge1xuICAgICAgICBpZiAoZXZlbnROYW1lICE9PSAnY2hhbmdlJyAmJiBldmVudE5hbWUgIT09ICdibHVyJykge1xuICAgICAgICAgICAgc3VwZXIuaGFuZGxlRXZlbnQodGhpcy5yYXRpbmdFbC5uYXRpdmVFbGVtZW50LCBldmVudE5hbWUsIGV2ZW50Q2FsbGJhY2ssIGxvY2Fscyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIHJhdGluZyB3aWRnZXQgZGF0YXNldCBjb250YWluaW5nIHRoZSBpbmRleCwgdmFsdWUgYW5kIGxhYmVsXG4gICAgcHJpdmF0ZSBwcmVwYXJlUmF0aW5nRGF0YXNldCgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmRhdGFzZXRJdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMucmF0aW5nSXRlbXMgPSBbXTtcbiAgICAgICAgICAgIHRoaXMuY2FwdGlvbiA9ICcnO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHJhdGluZ0l0ZW1zID0gW107XG4gICAgICAgIGxldCBkYXRhID0gdGhpcy5kYXRhc2V0SXRlbXM7XG4gICAgICAgIGNvbnN0IG1heHZhbHVlID0gcGFyc2VJbnQodGhpcy5tYXh2YWx1ZSB8fCB0aGlzLmRhdGFzZXRJdGVtcy5sZW5ndGgsIDEwKTtcbiAgICAgICAgY29uc3QgbWF4VmFsdWUgPSAobWF4dmFsdWUgPiBNQVhfUkFUSU5HID8gTUFYX1JBVElORyA6IG1heHZhbHVlKSB8fCBERUZBVUxUX1JBVElORztcblxuICAgICAgICAvKipcbiAgICAgICAgICogMS4gSWYgZGF0YXNldEl0ZW1zLmxlbmd0aCBpcyBtb3JlIHRoYW4gbWF4VmFsdWUgKGkuZS4gMTAgcmF0aW5ncykgdGhlbiBqdXN0IGV4dHJhY3QgbWF4VmFsdWUgb2YgaXRlbXMgZnJvbSBkYXRhc2V0SXRlbXMuXG4gICAgICAgICAqIDIuIElmIGRhdGFzZXRJdGVtcyBhcmUgbm90IGF2YWlsYWJsZSB0aGVuIHByZXBhcmUgcmF0aW5ncyB2YWx1ZSBkZXBlbmRpbmcgb24gbWF4dmFsdWUuIGVnOiAxLDIsMyAuLiB1cHRvIG1heHZhbHVlXG4gICAgICAgICAqIDMuIElmIG1heHZhbHVlIC8gaSB2YWx1ZSBpcyBtb3JlIHRoYW4gZGF0YXNldEl0ZW1zIGxlbmd0aCwgcHJlcGFyZSBkZWZhdWx0IHJhdGluZyBpdGVtcyBmb3IgaSB2YWx1ZXMgbW9yZSB0aGFuIGRhdGFzZXRJdGVtcy5sZW5ndGhcbiAgICAgICAgICovXG4gICAgICAgIGlmIChkYXRhLmxlbmd0aCAmJiBkYXRhLmxlbmd0aCA+IG1heFZhbHVlKSB7XG4gICAgICAgICAgICBkYXRhID0gc2xpY2UoZGF0YSwgMCwgbWF4VmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IG1heFZhbHVlOyBpID4gMDsgaS0tKSB7XG4gICAgICAgICAgICBpZiAoIWRhdGEubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgcmF0aW5nSXRlbXMucHVzaCh7a2V5OiBpLCB2YWx1ZTogaSwgaW5kZXg6IGksIGxhYmVsOiBpfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChpID4gZGF0YS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmF0aW5nSXRlbXMucHVzaCh7a2V5OiBpLCB2YWx1ZTogaSwgaW5kZXg6IGksIGxhYmVsOiBpfSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YSA9IGdldE9yZGVyZWREYXRhc2V0KGRhdGEsICdpbmRleDpkZXNjJyk7XG4gICAgICAgICAgICAgICAgICAgIHJhdGluZ0l0ZW1zID0gcmF0aW5nSXRlbXMuY29uY2F0KGRhdGEpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnJhdGluZ0l0ZW1zID0gcmF0aW5nSXRlbXM7XG4gICAgICAgIGlmICghZGF0YS5sZW5ndGgpIHsgLy8gY29uc3RydWN0cyBkZWZhdWx0IGRhdGFzZXRJdGVtcyB3aGVuIHRoZXJlIGlzIG5vIGRhdGFzZXQgYmluZGluZy5cbiAgICAgICAgICAgIHRoaXMuZGF0YXNldEl0ZW1zID0gcmF0aW5nSXRlbXM7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vbkRhdGF2YWx1ZUNoYW5nZSh0aGlzLmRhdGF2YWx1ZSk7XG4gICAgfVxuXG4gICAgb25SYXRpbmdDbGljaygkZXZlbnQsIHJhdGUpIHtcbiAgICAgICAgdGhpcy5tb2RlbEJ5S2V5ID0gcmF0ZS5rZXk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRSYXRpbmdWYWx1ZSA9IHJhdGUuaW5kZXg7XG5cbiAgICAgICAgLy8gc3VwcG9ydCBpZiB0aGUgY2FwdGlvbiBpcyBiaW5kZWQgaW4gdGhlIG9sZCBwcm9qZWN0cyBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eVxuICAgICAgICBpZiAoIXRoaXMuc2hvd2NhcHRpb25zKSB7XG4gICAgICAgICAgICB0aGlzLmNhcHRpb24gPSByYXRlLmxhYmVsO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5pbnZva2VPblRvdWNoZWQoKTtcbiAgICAgICAgLy8gaW52b2tlIG9uIGRhdGF2YWx1ZSBjaGFuZ2UuXG4gICAgICAgIHRoaXMuaW52b2tlT25DaGFuZ2UodGhpcy5kYXRhdmFsdWUsICRldmVudCB8fCB7fSwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgLy8gVXBkYXRlIHRoZSBzZWxlY3RlZCBmbGFnIG9uIGRhdGFzZXRJdGVtcyBhbmQgYXNzaWduIHRoZSByYXRpbmdWYWx1ZS5cbiAgICAvKipcbiAgICAgKiBPbiBkYXRhdmFsdWUgY2hhbmdlLCB1cGRhdGUgdGhlIGNhcHRpb24sIHNlbGVjdGVkUmF0aW5nVmFsdWUuXG4gICAgICogMS4gaWYgZGF0YXNldEl0ZW1zIGNvbnRhaW4gdGhlIHNlbGVjdGVkIGl0ZW0gKGNoZWNrIHRoZSBzZWxlY3RlZCBmbGFnIG9uIGl0ZW0pLCBmaW5kIHRoZSBpbmRleCBvZiBzZWxlY3RlZCBpdGVtLlxuICAgICAqIDIuIGlmIG5vdCwganVzdCBjaGVjayBpZiB0aGUgZGF0YXZhbHVlIGlzIHByb3ZpZGVkIGFzIHRoZSBpbmRleCBvbiB0aGUgaXRlbS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBkYXRhVmFsIGRhdGF2YWx1ZVxuICAgICAqL1xuICAgIG9uRGF0YXZhbHVlQ2hhbmdlKGRhdGFWYWwpIHtcbiAgICAgICAgaWYgKCFpc0VtcHR5KHRoaXMuZGF0YXNldEl0ZW1zKSkge1xuICAgICAgICAgICAgbGV0IHNlbGVjdGVkSXRlbSA9IGZpbmQodGhpcy5kYXRhc2V0SXRlbXMsIHsnc2VsZWN0ZWQnOiB0cnVlfSk7XG5cbiAgICAgICAgICAgIGlmICghc2VsZWN0ZWRJdGVtICYmICFpc1VuZGVmaW5lZChkYXRhVmFsKSkge1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkSXRlbSA9IGZpbmQodGhpcy5kYXRhc2V0SXRlbXMsIGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0b1N0cmluZyhpdGVtLmluZGV4KSA9PT0gZGF0YVZhbDtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpZiAoc2VsZWN0ZWRJdGVtKSB7XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkSXRlbS5zZWxlY3RlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIXNlbGVjdGVkSXRlbSkge1xuICAgICAgICAgICAgICAgIC8vIHJlc2V0IHRoZSAgbW9kZWwgaWYgdGhlcmUgaXMgbm8gaXRlbSBmb3VuZC5cbiAgICAgICAgICAgICAgICB0aGlzLm1vZGVsQnlLZXkgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgdGhpcy5jYXB0aW9uID0gJyc7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRSYXRpbmdWYWx1ZSA9IHNlbGVjdGVkSXRlbSA/IHNlbGVjdGVkSXRlbS5pbmRleCA6IDA7XG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWRJdGVtKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jYXB0aW9uID0gc2VsZWN0ZWRJdGVtLmxhYmVsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFJhdGluZ1ZhbHVlID0gMDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5yZWFkb25seSkge1xuICAgICAgICAgICAgLy8gd2hlbiBkYXRhc2V0IGlzIG5vdCBnaXZlbiBidXQgZGF0YXZhbHVlIGlzIHByb3ZpZGVkIHdoaWNoIGlzIGludGVnZXJcbiAgICAgICAgICAgIGlmICghdGhpcy5zZWxlY3RlZFJhdGluZ1ZhbHVlICYmICFpc05hTihkYXRhVmFsKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRSYXRpbmdWYWx1ZSA9IChwYXJzZUZsb2F0KGRhdGFWYWwpIDw9IHRoaXMubWF4dmFsdWUpID8gZGF0YVZhbCA6IHRoaXMubWF4dmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnJhdGluZ3NXaWR0aCA9IHRoaXMuY2FsY3VsYXRlUmF0aW5nc1dpZHRoKGRhdGFWYWwpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2FsY3VsYXRlUmF0aW5nc1dpZHRoKGRhdGFWYWw/OiBhbnkpIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRSYXRpbmcgPSBwYXJzZUZsb2F0KHRoaXMuc2VsZWN0ZWRSYXRpbmdWYWx1ZSksXG4gICAgICAgICAgICBzdGFyV2lkdGggPSAwLjkyNSxcbiAgICAgICAgICAgIG1heFZhbHVlID0gcGFyc2VJbnQodGhpcy5tYXh2YWx1ZSB8fCB0aGlzLmRhdGFzZXRJdGVtcy5sZW5ndGgsIDEwKSB8fCBERUZBVUxUX1JBVElORztcblxuICAgICAgICBzZXRDU1MoXG4gICAgICAgICAgICB0aGlzLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLnJhdGluZ3MtY29udGFpbmVyJykgYXMgSFRNTEVsZW1lbnQsXG4gICAgICAgICAgICAnd2lkdGgnLFxuICAgICAgICAgICAgKHN0YXJXaWR0aCAqIG1heFZhbHVlKSArICdlbSdcbiAgICAgICAgKTtcbiAgICAgICAgZGF0YVZhbCA9IGRhdGFWYWwgfHwgdGhpcy5kYXRhdmFsdWU7XG4gICAgICAgIGlmIChkYXRhVmFsID09PSB1bmRlZmluZWQgfHwgZGF0YVZhbCA9PT0gJycgfHwgZGF0YVZhbCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5jYXB0aW9uID0gJyc7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc2VsZWN0ZWRSYXRpbmcgPD0gbWF4VmFsdWUgJiYgc2VsZWN0ZWRSYXRpbmcgPj0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHNlbGVjdGVkUmF0aW5nICogc3RhcldpZHRoICsgJ2VtJztcbiAgICAgICAgfVxuICAgICAgICBpZiAoc2VsZWN0ZWRSYXRpbmcgPiBtYXhWYWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuIG1heFZhbHVlICogc3RhcldpZHRoICsgJ2VtJztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uUHJvcGVydHlDaGFuZ2Uoa2V5OiBzdHJpbmcsIG52OiBhbnksIG92PzogYW55KSB7XG4gICAgICAgIGlmIChrZXkgPT09ICdyZWFkb25seScpIHtcbiAgICAgICAgICAgIGlmIChudikge1xuICAgICAgICAgICAgICAgIHRoaXMucmF0aW5nc1dpZHRoID0gdGhpcy5jYWxjdWxhdGVSYXRpbmdzV2lkdGgoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChrZXkgPT09ICdtYXh2YWx1ZScpIHtcbiAgICAgICAgICAgIC8qKiBTdG9yaW5nIHRoZSBkYXRhdmFsdWUgaW4gdGVtcCB2YXJpYWJsZSBhbmQgYXNzaWdpbmcgYmFjayB0byBkYXRhdmFsdWVcbiAgICAgICAgICAgICAqIGFmdGVyIGRlZmF1bHQgZGF0YWxpc3QgaXMgcHJlcGFyZWQgdG8gdHJpZ2dlciBEYXRhc2V0IEF3YXJlIGNsYXNzIHNlbGVjdCBjeWNsZVxuICAgICAgICAgICAgICogYXMgdGhlIGRhdGF2YWx1ZSBwcm9wZXJ0eSBjaGFuZ2UgaXMgdHJpZ2dlcmluZyBmaXJzdCByYXRoZXIgdGhhbiBtYXh2YWx1ZVxuICAgICAgICAgICAgICogaW4gdGhlIHJhdGluZyB3aWRnZXQgaXMgdXNlZCBpbnNpZGUgYSBkYXRhdGFibGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgbGV0IHRlbXBEYXRhVmFsdWUgPSB0aGlzLmRhdGF2YWx1ZTtcbiAgICAgICAgICAgIHRoaXMucHJlcGFyZVJhdGluZ0RhdGFzZXQoKTtcbiAgICAgICAgICAgIC8vIHJlc2V0IGFsbCB0aGUgaXRlbXMuXG4gICAgICAgICAgICB0aGlzLnJlc2V0RGF0YXNldEl0ZW1zKCk7XG4gICAgICAgICAgICBpZiAoIWlzVW5kZWZpbmVkKHRlbXBEYXRhVmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhdmFsdWUgPSB0ZW1wRGF0YVZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc3VwZXIub25Qcm9wZXJ0eUNoYW5nZShrZXksIG52LCBvdik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiBEZXRlY3QgdG91Y2ggZW5hYmxlZCBkZXZpY2VzICYgdXBkYXRlIGhvdmVyIHN0eWxlcyovXG4gICAgb25Ub3VjaFN0YXJ0KCRldmVudCkge1xuICAgICAgICB0aGlzLnRvdWNoRW5hYmxlZCA9IHRydWU7XG4gICAgICAgIHRoaXMub25Ub3VjaFN0YXJ0ID0gbm9vcDtcbiAgICB9XG4gICAgb25Nb3VzZWxlYXZlKCkge1xuICAgICAgICB0aGlzLmNhcHRpb24gPSB0aGlzLmRpc3BsYXlWYWx1ZSBhcyBzdHJpbmc7XG4gICAgfVxuXG4gICAgb25Nb3VzZU92ZXIoJGV2ZW50LCByYXRlKSB7XG4gICAgICAgIHRoaXMuY2FwdGlvbiA9IHJhdGUubGFiZWw7XG4gICAgICAgICF0aGlzLnRvdWNoRW5hYmxlZCAmJiAhJGV2ZW50LnRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoJ3JhdGluZy1sYWJlbC1ob3ZlcicpICYmICRldmVudC50YXJnZXQuY2xhc3NMaXN0LmFkZCgncmF0aW5nLWxhYmVsLWhvdmVyJyk7XG4gICAgfVxufVxuIiwiPGRpdiAoZm9jdXMpPVwib25Gb2N1cygkZXZlbnQpXCIgWyhuZ01vZGVsKV09XCJtb2RlbEJ5S2V5XCIgW25nTW9kZWxPcHRpb25zXT1cIntzdGFuZGFsb25lOiB0cnVlfVwiIGFyaWEtbXVsdGlzZWxlY3RhYmxlPVwidHJ1ZVwiXG4gICAgIGNsYXNzPVwicmF0aW5ncy13cmFwcGVyXCIgbmdEZWZhdWx0Q29udHJvbD5cbiAgICA8ZGl2ICpuZ0lmPVwiIXJlYWRvbmx5XCIgY2xhc3M9XCJyYXRpbmctc3R5bGVcIj5cbiAgICAgICAgPGxhYmVsICpuZ0Zvcj1cImxldCByYXRlIG9mIHJhdGluZ0l0ZW1zO1wiXG4gICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7YWN0aXZlIDogcmF0ZS5pbmRleCA8PSBzZWxlY3RlZFJhdGluZ1ZhbHVlfVwiXG4gICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7J2ZvbnQtc2l6ZScgOmljb25zaXplLCBjb2xvcjogcmF0ZS5pbmRleCA8PSBzZWxlY3RlZFJhdGluZ1ZhbHVlICYmIGljb25jb2xvcn1cIlxuICAgICAgICAgICAgICAgW3RpdGxlXT1cInJhdGUubGFiZWwgfHwgcmF0ZS5pbmRleFwiXG4gICAgICAgICAgICAgICAodG91Y2hzdGFydCk9XCJvblRvdWNoU3RhcnQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAobW91c2VsZWF2ZSk9XCJvbk1vdXNlbGVhdmUoJGV2ZW50LCByYXRlKVwiXG4gICAgICAgICAgICAgICAobW91c2VvdmVyKT1cIm9uTW91c2VPdmVyKCRldmVudCwgcmF0ZSlcIlxuICAgICAgICAgICAgICAgW2Zvcl09XCJfaWQgKyAnLScgKyByYXRlLmluZGV4XCI+XG4gICAgICAgICAgICA8aW5wdXQgI3JhdGluZ0lucHV0IHR5cGU9XCJyYWRpb1wiIHJvbGU9XCJyYWRpb1wiIFthdHRyLmFyaWEtbGFiZWxdPVwiKHJhdGUubGFiZWwgfHwgcmF0ZS5pbmRleCkgKyAnIG91dCBvZiAnICsgcmF0aW5nSXRlbXMubGVuZ3RoICsgJyByYXRpbmdzJ1wiIFthdHRyLmFyaWEtY2hlY2tlZF09XCJyYXRlLmxhYmVsID09PSBkYXRhdmFsdWUgPyAndHJ1ZScgOiAnZmFsc2UnXCJcbiAgICAgICAgICAgICAgICAgICBbaWRdPVwiX2lkICsgJy0nICsgcmF0ZS5pbmRleFwiIChjbGljayk9XCJvblJhdGluZ0NsaWNrKCRldmVudCwgcmF0ZSlcIiBuYW1lPVwicmF0aW5ncy1pZFwiIFt2YWx1ZV09XCJyYXRlLmtleSB8fCByYXRlLmluZGV4XCIvPlxuICAgICAgICA8L2xhYmVsPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgW2NsYXNzLmhpZGRlbl09XCIhcmVhZG9ubHlcIiBbbmdTdHlsZV09XCJ7J2ZvbnQtc2l6ZScgOmljb25zaXplfVwiIGNsYXNzPVwicmF0aW5ncy1jb250YWluZXIgZGlzYWJsZWRcIiA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyYXRpbmdzIGFjdGl2ZVwiIFtuZ1N0eWxlXT1cInt3aWR0aDogcmF0aW5nc1dpZHRoLCBjb2xvcjogaWNvbmNvbG9yfVwiPjwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxsYWJlbCAqbmdJZj1cInNob3djYXB0aW9uc1wiIGNsYXNzPVwiY2FwdGlvblwiIFt0ZXh0Q29udGVudF09XCJjYXB0aW9uXCI+PC9sYWJlbD5cbjwvZGl2PlxuIl19
|
260
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmF0aW5nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvd2lkZ2V0cy9pbnB1dC9yYXRpbmcvc3JjL3JhdGluZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3dpZGdldHMvaW5wdXQvcmF0aW5nL3NyYy9yYXRpbmcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzNGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRW5ELE9BQU8sRUFBQyxZQUFZLEVBQVUsSUFBSSxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQ3BELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDL0YsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFakUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9DLE9BQU8sRUFBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFDLE1BQU0sV0FBVyxDQUFDOzs7Ozs7Ozs7Ozs7SUNMOUQsZ0NBT3NDO0lBRC9CLEFBREEsQUFEQSw0TEFBYywyQkFBb0IsS0FBQyx5TUFDckIsb0NBQTBCLEtBQUMsdU1BQzVCLG1DQUF5QixLQUFDO0lBRTFDLHVCQUF1SDtJQUN2SCxtQ0FDK0g7SUFBMUYsNE1BQVMscUNBQTJCLEtBQUM7SUFDOUUsQUFGSSxpQkFDK0gsRUFDM0g7Ozs7SUFKRCxBQUpBLEFBREEsQUFEQSxrR0FBd0QsMEhBQ2tDLHlD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QixFQUFFLElBQUksQ0FBQztvQkFDbkQsa0JBQWtCLGlCQUFpQjtpQkFDdEM7O3NCQStCMkIsTUFBTTt1QkFBQyxrQkFBa0I7O3NCQUFHLFFBQVE7cUJBWFksUUFBUTtrQkFBbkYsU0FBUzttQkFBQyxhQUFhLEVBQUUsMkJBQTJCLENBQUMsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFOztrRkFsQmpFLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5qZWN0LCBJbmplY3RvciwgT3B0aW9uYWwsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHtnZW5lcmF0ZUdVSWQsIHNldENTUywgbm9vcH0gZnJvbSAnQHdtL2NvcmUnO1xuaW1wb3J0IHsgZ2V0T3JkZXJlZERhdGFzZXQsIHByb3ZpZGVBcywgcHJvdmlkZUFzV2lkZ2V0UmVmLCBzdHlsZXIgfSBmcm9tICdAd20vY29tcG9uZW50cy9iYXNlJztcbmltcG9ydCB7IERhdGFzZXRBd2FyZUZvcm1Db21wb25lbnQgfSBmcm9tICdAd20vY29tcG9uZW50cy9pbnB1dCc7XG5cbmltcG9ydCB7IHJlZ2lzdGVyUHJvcHMgfSBmcm9tICcuL3JhdGluZy5wcm9wcyc7XG5pbXBvcnQge2ZpbmQsIGlzRW1wdHksIGlzVW5kZWZpbmVkLCBzbGljZSwgdG9TdHJpbmd9IGZyb20gXCJsb2Rhc2gtZXNcIjtcblxuY29uc3QgREVGQVVMVF9DTFMgPSAnYXBwLXJhdGluZ3MnO1xuY29uc3QgV0lER0VUX0NPTkZJRyA9IHt3aWRnZXRUeXBlOiAnd20tcmF0aW5nJywgaG9zdENsYXNzOiBERUZBVUxUX0NMU307XG5cbmNvbnN0IE1BWF9SQVRJTkcgPSAxMDtcbmNvbnN0IERFRkFVTFRfUkFUSU5HID0gNTtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdbd21SYXRpbmddJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vcmF0aW5nLmNvbXBvbmVudC5odG1sJyxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgcHJvdmlkZUFzKFJhdGluZ0NvbXBvbmVudCwgTkdfVkFMVUVfQUNDRVNTT1IsIHRydWUpLFxuICAgICAgICBwcm92aWRlQXNXaWRnZXRSZWYoUmF0aW5nQ29tcG9uZW50KVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgUmF0aW5nQ29tcG9uZW50IGV4dGVuZHMgRGF0YXNldEF3YXJlRm9ybUNvbXBvbmVudCB7XG4gICAgc3RhdGljIGluaXRpYWxpemVQcm9wcyA9IHJlZ2lzdGVyUHJvcHMoKTtcblxuICAgIHB1YmxpYyBjYXB0aW9uOiBzdHJpbmc7XG4gICAgcHVibGljIHNob3djYXB0aW9uczogYm9vbGVhbjtcbiAgICBwdWJsaWMgbWF4dmFsdWU7XG5cbiAgICBwcml2YXRlIF9zZWxlY3RlZFJhdGluZ1ZhbHVlO1xuICAgIHB1YmxpYyByYXRpbmdzV2lkdGg7XG4gICAgcHVibGljIHJhdGluZ0l0ZW1zO1xuICAgIHByaXZhdGUgX2lkO1xuXG4gICAgcHVibGljIGljb25zaXplOiBzdHJpbmc7XG4gICAgcHVibGljIGljb25jb2xvcjogc3RyaW5nO1xuICAgIHB1YmxpYyBvbkZvY3VzOiBhbnk7XG4gICAgcHJpdmF0ZSB0b3VjaEVuYWJsZWQ6Ym9vbGVhbjtcbiAgICBwdWJsaWMgYWN0aXZlaWNvbmNsYXNzOiBzdHJpbmcgPSAnJztcbiAgICBwdWJsaWMgaW5hY3RpdmVpY29uY2xhc3M6IHN0cmluZyA9ICcnO1xuICAgIEBWaWV3Q2hpbGQoJ3JhdGluZ0lucHV0JywgLyogVE9ETzogYWRkIHN0YXRpYyBmbGFnICovIHsgcmVhZDogRWxlbWVudFJlZiB9KSByYXRpbmdFbDogRWxlbWVudFJlZjtcblxuICAgIGdldCBzZWxlY3RlZFJhdGluZ1ZhbHVlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWRSYXRpbmdWYWx1ZTtcbiAgICB9XG5cbiAgICBzZXQgc2VsZWN0ZWRSYXRpbmdWYWx1ZSh2YWwpIHtcbiAgICAgICAgdGhpcy5fc2VsZWN0ZWRSYXRpbmdWYWx1ZSA9IHZhbDtcbiAgICAgICAgdGhpcy5jYWxjdWxhdGVSYXRpbmdzV2lkdGgoKTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihpbmo6IEluamVjdG9yLCBASW5qZWN0KCdFWFBMSUNJVF9DT05URVhUJykgQE9wdGlvbmFsKCkgZXhwbGljaXRDb250ZXh0OiBhbnkpIHtcbiAgICAgICAgc3VwZXIoaW5qLCBXSURHRVRfQ09ORklHLCBleHBsaWNpdENvbnRleHQpO1xuICAgICAgICB0aGlzLl9pZCA9IGdlbmVyYXRlR1VJZCgpO1xuICAgICAgICBzdHlsZXIodGhpcy5uYXRpdmVFbGVtZW50LCB0aGlzKTtcblxuICAgICAgICAvLyBwcmVwYXJlIHRoZSByYXRpbmcgb3B0aW9ucyBvbiBkYXRhc2V0IHJlYWR5LlxuICAgICAgICBjb25zdCBkYXRhc2V0U3Vic2NyaXB0aW9uID0gdGhpcy5kYXRhc2V0JC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5wcmVwYXJlUmF0aW5nRGF0YXNldCgpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5yZWdpc3RlckRlc3Ryb3lMaXN0ZW5lcigoKSA9PiBkYXRhc2V0U3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCkpO1xuXG4gICAgICAgIC8vIGxpc3RlbiB0byBjaGFuZ2VzIGluIGRhdGF2YWx1ZS5cbiAgICAgICAgY29uc3QgZGF0YXZhbHVlU3Vic2NyaXB0aW9uID0gdGhpcy5kYXRhdmFsdWUkLnN1YnNjcmliZSgoKSA9PiB0aGlzLm9uRGF0YXZhbHVlQ2hhbmdlKHRoaXMuZGF0YXZhbHVlKSk7XG4gICAgICAgIHRoaXMucmVnaXN0ZXJEZXN0cm95TGlzdGVuZXIoKCkgPT4gZGF0YXZhbHVlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCkpO1xuICAgIH1cblxuICAgIC8vIENoYW5nZSBldmVudCBpcyByZWdpc3RlcmVkIGZyb20gdGhlIHRlbXBsYXRlLCBQcmV2ZW50IHRoZSBmcmFtZXdvcmsgZnJvbSByZWdpc3RlcmluZyBvbmUgbW9yZSBldmVudFxuICAgIHByb3RlY3RlZCBoYW5kbGVFdmVudChub2RlOiBIVE1MRWxlbWVudCwgZXZlbnROYW1lOiBzdHJpbmcsIGV2ZW50Q2FsbGJhY2s6IEZ1bmN0aW9uLCBsb2NhbHM6IGFueSkge1xuICAgICAgICBpZiAoZXZlbnROYW1lICE9PSAnY2hhbmdlJyAmJiBldmVudE5hbWUgIT09ICdibHVyJykge1xuICAgICAgICAgICAgc3VwZXIuaGFuZGxlRXZlbnQodGhpcy5yYXRpbmdFbC5uYXRpdmVFbGVtZW50LCBldmVudE5hbWUsIGV2ZW50Q2FsbGJhY2ssIGxvY2Fscyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIHJhdGluZyB3aWRnZXQgZGF0YXNldCBjb250YWluaW5nIHRoZSBpbmRleCwgdmFsdWUgYW5kIGxhYmVsXG4gICAgcHJpdmF0ZSBwcmVwYXJlUmF0aW5nRGF0YXNldCgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmRhdGFzZXRJdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMucmF0aW5nSXRlbXMgPSBbXTtcbiAgICAgICAgICAgIHRoaXMuY2FwdGlvbiA9ICcnO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHJhdGluZ0l0ZW1zID0gW107XG4gICAgICAgIGxldCBkYXRhID0gdGhpcy5kYXRhc2V0SXRlbXM7XG4gICAgICAgIGNvbnN0IG1heHZhbHVlID0gcGFyc2VJbnQodGhpcy5tYXh2YWx1ZSB8fCB0aGlzLmRhdGFzZXRJdGVtcy5sZW5ndGgsIDEwKTtcbiAgICAgICAgY29uc3QgbWF4VmFsdWUgPSAobWF4dmFsdWUgPiBNQVhfUkFUSU5HID8gTUFYX1JBVElORyA6IG1heHZhbHVlKSB8fCBERUZBVUxUX1JBVElORztcblxuICAgICAgICAvKipcbiAgICAgICAgICogMS4gSWYgZGF0YXNldEl0ZW1zLmxlbmd0aCBpcyBtb3JlIHRoYW4gbWF4VmFsdWUgKGkuZS4gMTAgcmF0aW5ncykgdGhlbiBqdXN0IGV4dHJhY3QgbWF4VmFsdWUgb2YgaXRlbXMgZnJvbSBkYXRhc2V0SXRlbXMuXG4gICAgICAgICAqIDIuIElmIGRhdGFzZXRJdGVtcyBhcmUgbm90IGF2YWlsYWJsZSB0aGVuIHByZXBhcmUgcmF0aW5ncyB2YWx1ZSBkZXBlbmRpbmcgb24gbWF4dmFsdWUuIGVnOiAxLDIsMyAuLiB1cHRvIG1heHZhbHVlXG4gICAgICAgICAqIDMuIElmIG1heHZhbHVlIC8gaSB2YWx1ZSBpcyBtb3JlIHRoYW4gZGF0YXNldEl0ZW1zIGxlbmd0aCwgcHJlcGFyZSBkZWZhdWx0IHJhdGluZyBpdGVtcyBmb3IgaSB2YWx1ZXMgbW9yZSB0aGFuIGRhdGFzZXRJdGVtcy5sZW5ndGhcbiAgICAgICAgICovXG4gICAgICAgIGlmIChkYXRhLmxlbmd0aCAmJiBkYXRhLmxlbmd0aCA+IG1heFZhbHVlKSB7XG4gICAgICAgICAgICBkYXRhID0gc2xpY2UoZGF0YSwgMCwgbWF4VmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IG1heFZhbHVlOyBpID4gMDsgaS0tKSB7XG4gICAgICAgICAgICBpZiAoIWRhdGEubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgcmF0aW5nSXRlbXMucHVzaCh7a2V5OiBpLCB2YWx1ZTogaSwgaW5kZXg6IGksIGxhYmVsOiBpfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChpID4gZGF0YS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmF0aW5nSXRlbXMucHVzaCh7a2V5OiBpLCB2YWx1ZTogaSwgaW5kZXg6IGksIGxhYmVsOiBpfSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YSA9IGdldE9yZGVyZWREYXRhc2V0KGRhdGEsICdpbmRleDpkZXNjJyk7XG4gICAgICAgICAgICAgICAgICAgIHJhdGluZ0l0ZW1zID0gcmF0aW5nSXRlbXMuY29uY2F0KGRhdGEpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnJhdGluZ0l0ZW1zID0gcmF0aW5nSXRlbXM7XG4gICAgICAgIGlmICghZGF0YS5sZW5ndGgpIHsgLy8gY29uc3RydWN0cyBkZWZhdWx0IGRhdGFzZXRJdGVtcyB3aGVuIHRoZXJlIGlzIG5vIGRhdGFzZXQgYmluZGluZy5cbiAgICAgICAgICAgIHRoaXMuZGF0YXNldEl0ZW1zID0gcmF0aW5nSXRlbXM7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vbkRhdGF2YWx1ZUNoYW5nZSh0aGlzLmRhdGF2YWx1ZSk7XG4gICAgfVxuXG4gICAgb25SYXRpbmdDbGljaygkZXZlbnQsIHJhdGUpIHtcbiAgICAgICAgdGhpcy5tb2RlbEJ5S2V5ID0gcmF0ZS5rZXk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRSYXRpbmdWYWx1ZSA9IHJhdGUuaW5kZXg7XG5cbiAgICAgICAgLy8gc3VwcG9ydCBpZiB0aGUgY2FwdGlvbiBpcyBiaW5kZWQgaW4gdGhlIG9sZCBwcm9qZWN0cyBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eVxuICAgICAgICBpZiAoIXRoaXMuc2hvd2NhcHRpb25zKSB7XG4gICAgICAgICAgICB0aGlzLmNhcHRpb24gPSByYXRlLmxhYmVsO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5pbnZva2VPblRvdWNoZWQoKTtcbiAgICAgICAgLy8gaW52b2tlIG9uIGRhdGF2YWx1ZSBjaGFuZ2UuXG4gICAgICAgIHRoaXMuaW52b2tlT25DaGFuZ2UodGhpcy5kYXRhdmFsdWUsICRldmVudCB8fCB7fSwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgLy8gVXBkYXRlIHRoZSBzZWxlY3RlZCBmbGFnIG9uIGRhdGFzZXRJdGVtcyBhbmQgYXNzaWduIHRoZSByYXRpbmdWYWx1ZS5cbiAgICAvKipcbiAgICAgKiBPbiBkYXRhdmFsdWUgY2hhbmdlLCB1cGRhdGUgdGhlIGNhcHRpb24sIHNlbGVjdGVkUmF0aW5nVmFsdWUuXG4gICAgICogMS4gaWYgZGF0YXNldEl0ZW1zIGNvbnRhaW4gdGhlIHNlbGVjdGVkIGl0ZW0gKGNoZWNrIHRoZSBzZWxlY3RlZCBmbGFnIG9uIGl0ZW0pLCBmaW5kIHRoZSBpbmRleCBvZiBzZWxlY3RlZCBpdGVtLlxuICAgICAqIDIuIGlmIG5vdCwganVzdCBjaGVjayBpZiB0aGUgZGF0YXZhbHVlIGlzIHByb3ZpZGVkIGFzIHRoZSBpbmRleCBvbiB0aGUgaXRlbS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBkYXRhVmFsIGRhdGF2YWx1ZVxuICAgICAqL1xuICAgIG9uRGF0YXZhbHVlQ2hhbmdlKGRhdGFWYWwpIHtcbiAgICAgICAgaWYgKCFpc0VtcHR5KHRoaXMuZGF0YXNldEl0ZW1zKSkge1xuICAgICAgICAgICAgbGV0IHNlbGVjdGVkSXRlbSA9IGZpbmQodGhpcy5kYXRhc2V0SXRlbXMsIHsnc2VsZWN0ZWQnOiB0cnVlfSk7XG5cbiAgICAgICAgICAgIGlmICghc2VsZWN0ZWRJdGVtICYmICFpc1VuZGVmaW5lZChkYXRhVmFsKSkge1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkSXRlbSA9IGZpbmQodGhpcy5kYXRhc2V0SXRlbXMsIGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0b1N0cmluZyhpdGVtLmluZGV4KSA9PT0gZGF0YVZhbDtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpZiAoc2VsZWN0ZWRJdGVtKSB7XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkSXRlbS5zZWxlY3RlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIXNlbGVjdGVkSXRlbSkge1xuICAgICAgICAgICAgICAgIC8vIHJlc2V0IHRoZSAgbW9kZWwgaWYgdGhlcmUgaXMgbm8gaXRlbSBmb3VuZC5cbiAgICAgICAgICAgICAgICB0aGlzLm1vZGVsQnlLZXkgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgdGhpcy5jYXB0aW9uID0gJyc7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRSYXRpbmdWYWx1ZSA9IHNlbGVjdGVkSXRlbSA/IHNlbGVjdGVkSXRlbS5pbmRleCA6IDA7XG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWRJdGVtKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jYXB0aW9uID0gc2VsZWN0ZWRJdGVtLmxhYmVsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFJhdGluZ1ZhbHVlID0gMDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5yZWFkb25seSkge1xuICAgICAgICAgICAgLy8gd2hlbiBkYXRhc2V0IGlzIG5vdCBnaXZlbiBidXQgZGF0YXZhbHVlIGlzIHByb3ZpZGVkIHdoaWNoIGlzIGludGVnZXJcbiAgICAgICAgICAgIGlmICghdGhpcy5zZWxlY3RlZFJhdGluZ1ZhbHVlICYmICFpc05hTihkYXRhVmFsKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRSYXRpbmdWYWx1ZSA9IChwYXJzZUZsb2F0KGRhdGFWYWwpIDw9IHRoaXMubWF4dmFsdWUpID8gZGF0YVZhbCA6IHRoaXMubWF4dmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnJhdGluZ3NXaWR0aCA9IHRoaXMuY2FsY3VsYXRlUmF0aW5nc1dpZHRoKGRhdGFWYWwpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2FsY3VsYXRlUmF0aW5nc1dpZHRoKGRhdGFWYWw/OiBhbnkpIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRSYXRpbmcgPSBwYXJzZUZsb2F0KHRoaXMuc2VsZWN0ZWRSYXRpbmdWYWx1ZSksXG4gICAgICAgICAgICBzdGFyV2lkdGggPSAwLjkyNSxcbiAgICAgICAgICAgIG1heFZhbHVlID0gcGFyc2VJbnQodGhpcy5tYXh2YWx1ZSB8fCB0aGlzLmRhdGFzZXRJdGVtcy5sZW5ndGgsIDEwKSB8fCBERUZBVUxUX1JBVElORztcblxuICAgICAgICBkYXRhVmFsID0gZGF0YVZhbCB8fCB0aGlzLmRhdGF2YWx1ZTtcbiAgICAgICAgaWYgKGRhdGFWYWwgPT09IHVuZGVmaW5lZCB8fCBkYXRhVmFsID09PSAnJyB8fCBkYXRhVmFsID09PSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLmNhcHRpb24gPSAnJztcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzZWxlY3RlZFJhdGluZyA8PSBtYXhWYWx1ZSAmJiBzZWxlY3RlZFJhdGluZyA+PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gc2VsZWN0ZWRSYXRpbmcgKiBzdGFyV2lkdGggKyAnZW0nO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzZWxlY3RlZFJhdGluZyA+IG1heFZhbHVlKSB7XG4gICAgICAgICAgICByZXR1cm4gbWF4VmFsdWUgKiBzdGFyV2lkdGggKyAnZW0nO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25Qcm9wZXJ0eUNoYW5nZShrZXk6IHN0cmluZywgbnY6IGFueSwgb3Y/OiBhbnkpIHtcbiAgICAgICAgaWYgKGtleSA9PT0gJ3JlYWRvbmx5Jykge1xuICAgICAgICAgICAgaWYgKG52KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yYXRpbmdzV2lkdGggPSB0aGlzLmNhbGN1bGF0ZVJhdGluZ3NXaWR0aCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGtleSA9PT0gJ21heHZhbHVlJykge1xuICAgICAgICAgICAgLyoqIFN0b3JpbmcgdGhlIGRhdGF2YWx1ZSBpbiB0ZW1wIHZhcmlhYmxlIGFuZCBhc3NpZ2luZyBiYWNrIHRvIGRhdGF2YWx1ZVxuICAgICAgICAgICAgICogYWZ0ZXIgZGVmYXVsdCBkYXRhbGlzdCBpcyBwcmVwYXJlZCB0byB0cmlnZ2VyIERhdGFzZXQgQXdhcmUgY2xhc3Mgc2VsZWN0IGN5Y2xlXG4gICAgICAgICAgICAgKiBhcyB0aGUgZGF0YXZhbHVlIHByb3BlcnR5IGNoYW5nZSBpcyB0cmlnZ2VyaW5nIGZpcnN0IHJhdGhlciB0aGFuIG1heHZhbHVlXG4gICAgICAgICAgICAgKiBpbiB0aGUgcmF0aW5nIHdpZGdldCBpcyB1c2VkIGluc2lkZSBhIGRhdGF0YWJsZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBsZXQgdGVtcERhdGFWYWx1ZSA9IHRoaXMuZGF0YXZhbHVlO1xuICAgICAgICAgICAgdGhpcy5wcmVwYXJlUmF0aW5nRGF0YXNldCgpO1xuICAgICAgICAgICAgLy8gcmVzZXQgYWxsIHRoZSBpdGVtcy5cbiAgICAgICAgICAgIHRoaXMucmVzZXREYXRhc2V0SXRlbXMoKTtcbiAgICAgICAgICAgIGlmICghaXNVbmRlZmluZWQodGVtcERhdGFWYWx1ZSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGF2YWx1ZSA9IHRlbXBEYXRhVmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzdXBlci5vblByb3BlcnR5Q2hhbmdlKGtleSwgbnYsIG92KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qIERldGVjdCB0b3VjaCBlbmFibGVkIGRldmljZXMgJiB1cGRhdGUgaG92ZXIgc3R5bGVzKi9cbiAgICBvblRvdWNoU3RhcnQoJGV2ZW50KSB7XG4gICAgICAgIHRoaXMudG91Y2hFbmFibGVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5vblRvdWNoU3RhcnQgPSBub29wO1xuICAgIH1cbiAgICBvbk1vdXNlbGVhdmUoKSB7XG4gICAgICAgIHRoaXMuY2FwdGlvbiA9IHRoaXMuZGlzcGxheVZhbHVlIGFzIHN0cmluZztcbiAgICB9XG5cbiAgICBvbk1vdXNlT3ZlcigkZXZlbnQsIHJhdGUpIHtcbiAgICAgICAgdGhpcy5jYXB0aW9uID0gcmF0ZS5sYWJlbDtcbiAgICAgICAgIXRoaXMudG91Y2hFbmFibGVkICYmICEkZXZlbnQudGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucygncmF0aW5nLWxhYmVsLWhvdmVyJykgJiYgJGV2ZW50LnRhcmdldC5jbGFzc0xpc3QuYWRkKCdyYXRpbmctbGFiZWwtaG92ZXInKTtcbiAgICB9XG59XG4iLCI8ZGl2IChmb2N1cyk9XCJvbkZvY3VzKCRldmVudClcIiBbKG5nTW9kZWwpXT1cIm1vZGVsQnlLZXlcIiBbbmdNb2RlbE9wdGlvbnNdPVwie3N0YW5kYWxvbmU6IHRydWV9XCIgYXJpYS1tdWx0aXNlbGVjdGFibGU9XCJ0cnVlXCJcbiAgICAgY2xhc3M9XCJyYXRpbmdzLXdyYXBwZXJcIiBuZ0RlZmF1bHRDb250cm9sPlxuICAgIDxkaXYgW2NsYXNzLmRpc2FibGVkXT1cInJlYWRvbmx5XCIgY2xhc3M9XCJyYXRpbmctc3R5bGVcIj5cbiAgICAgICAgPGxhYmVsICpuZ0Zvcj1cImxldCByYXRlIG9mIHJhdGluZ0l0ZW1zO1wiXG4gICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7YWN0aXZlIDogcmF0ZS5pbmRleCA8PSBzZWxlY3RlZFJhdGluZ1ZhbHVlfVwiXG4gICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7J2ZvbnQtc2l6ZScgOmljb25zaXplLCBjb2xvcjogcmF0ZS5pbmRleCA8PSBzZWxlY3RlZFJhdGluZ1ZhbHVlICYmIGljb25jb2xvcn1cIlxuICAgICAgICAgICAgICAgW3RpdGxlXT1cInJhdGUubGFiZWwgfHwgcmF0ZS5pbmRleFwiXG4gICAgICAgICAgICAgICAodG91Y2hzdGFydCk9XCJvblRvdWNoU3RhcnQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAobW91c2VsZWF2ZSk9XCJvbk1vdXNlbGVhdmUoJGV2ZW50LCByYXRlKVwiXG4gICAgICAgICAgICAgICAobW91c2VvdmVyKT1cIm9uTW91c2VPdmVyKCRldmVudCwgcmF0ZSlcIlxuICAgICAgICAgICAgICAgW2Zvcl09XCJfaWQgKyAnLScgKyByYXRlLmluZGV4XCI+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImFwcC1pY29uIHt7cmF0ZS5pbmRleCA8PSBzZWxlY3RlZFJhdGluZ1ZhbHVlID8gYWN0aXZlaWNvbmNsYXNzIDogaW5hY3RpdmVpY29uY2xhc3N9fVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgICAgICAgIDxpbnB1dCAjcmF0aW5nSW5wdXQgdHlwZT1cInJhZGlvXCIgcm9sZT1cInJhZGlvXCIgW2F0dHIuYXJpYS1sYWJlbF09XCIocmF0ZS5sYWJlbCB8fCByYXRlLmluZGV4KSArICcgb3V0IG9mICcgKyByYXRpbmdJdGVtcy5sZW5ndGggKyAnIHJhdGluZ3MnXCIgW2F0dHIuYXJpYS1jaGVja2VkXT1cInJhdGUubGFiZWwgPT09IGRhdGF2YWx1ZSA/ICd0cnVlJyA6ICdmYWxzZSdcIlxuICAgICAgICAgICAgICAgICAgIFtpZF09XCJfaWQgKyAnLScgKyByYXRlLmluZGV4XCIgKGNsaWNrKT1cIm9uUmF0aW5nQ2xpY2soJGV2ZW50LCByYXRlKVwiIG5hbWU9XCJyYXRpbmdzLWlkXCIgW3ZhbHVlXT1cInJhdGUua2V5IHx8IHJhdGUuaW5kZXhcIi8+XG4gICAgICAgIDwvbGFiZWw+XG4gICAgPC9kaXY+XG4gICAgPGxhYmVsICpuZ0lmPVwic2hvd2NhcHRpb25zXCIgY2xhc3M9XCJjYXB0aW9uXCIgW3RleHRDb250ZW50XT1cImNhcHRpb25cIj48L2xhYmVsPlxuPC9kaXY+XG4iXX0=
|
@@ -10,6 +10,8 @@ export const ratingProps = new Map([
|
|
10
10
|
['displayexpression', PROP_STRING],
|
11
11
|
['displayfield', PROP_STRING],
|
12
12
|
['iconcolor', PROP_STRING],
|
13
|
+
['activeiconclass', { value: 'wi wi-star', ...PROP_STRING }],
|
14
|
+
['inactiveiconclass', { value: 'wi wi-star-border', ...PROP_STRING }],
|
13
15
|
['iconsize', PROP_STRING],
|
14
16
|
['maxvalue', { value: 5, ...PROP_NUMBER }],
|
15
17
|
['name', PROP_STRING],
|
@@ -24,4 +26,4 @@ export const registerProps = () => {
|
|
24
26
|
register('wm-rating', ratingProps);
|
25
27
|
registerFormWidget(FormWidgetType.RATING, new Map(ratingProps));
|
26
28
|
};
|
27
|
-
//# sourceMappingURL=data:application/json;base64,
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmF0aW5nLnByb3BzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy93aWRnZXRzL2lucHV0L3JhdGluZy9zcmMvcmF0aW5nLnByb3BzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckgsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUUxQyxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsSUFBSSxHQUFHLENBQzlCO0lBQ0ksQ0FBQyxTQUFTLEVBQUUsV0FBVyxDQUFDO0lBQ3hCLENBQUMsT0FBTyxFQUFFLFdBQVcsQ0FBQztJQUN0QixDQUFDLFdBQVcsRUFBRSxXQUFXLENBQUM7SUFDMUIsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDO0lBQ3JCLENBQUMsaUJBQWlCLEVBQUUsUUFBUSxDQUFDO0lBQzdCLENBQUMsV0FBVyxFQUFFLFdBQVcsQ0FBQztJQUMxQixDQUFDLG1CQUFtQixFQUFFLFdBQVcsQ0FBQztJQUNsQyxDQUFDLGNBQWMsRUFBRSxXQUFXLENBQUM7SUFDN0IsQ0FBQyxXQUFXLEVBQUUsV0FBVyxDQUFDO0lBQzFCLENBQUMsaUJBQWlCLEVBQUUsRUFBQyxLQUFLLEVBQUUsWUFBWSxFQUFFLEdBQUcsV0FBVyxFQUFDLENBQUM7SUFDMUQsQ0FBQyxtQkFBbUIsRUFBRSxFQUFDLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxHQUFHLFdBQVcsRUFBQyxDQUFDO0lBQ25FLENBQUMsVUFBVSxFQUFFLFdBQVcsQ0FBQztJQUN6QixDQUFDLFVBQVUsRUFBRSxFQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsR0FBRyxXQUFXLEVBQUMsQ0FBQztJQUN4QyxDQUFDLE1BQU0sRUFBRSxXQUFXLENBQUM7SUFDckIsQ0FBQyxTQUFTLEVBQUUsV0FBVyxDQUFDO0lBQ3hCLENBQUMsVUFBVSxFQUFFLFlBQVksQ0FBQztJQUMxQixDQUFDLE1BQU0sRUFBRSxFQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxZQUFZLEVBQUMsQ0FBQztJQUN4QyxDQUFDLGNBQWMsRUFBRSxFQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxZQUFZLEVBQUMsQ0FBQztJQUNoRCxDQUFDLFVBQVUsRUFBRSxFQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsR0FBRyxXQUFXLEVBQUMsQ0FBQztJQUN4QyxDQUFDLFNBQVMsRUFBRSxZQUFZLENBQUM7Q0FDNUIsQ0FDSixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLEdBQUcsRUFBRTtJQUM5QixRQUFRLENBQ0osV0FBVyxFQUNYLFdBQVcsQ0FDZCxDQUFDO0lBQ0Ysa0JBQWtCLENBQ2QsY0FBYyxDQUFDLE1BQU0sRUFDckIsSUFBSSxHQUFHLENBQUMsV0FBVyxDQUFDLENBQ3ZCLENBQUM7QUFDTixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQUk9QX0FOWSwgUFJPUF9CT09MRUFOLCBQUk9QX05VTUJFUiwgUFJPUF9TVFJJTkcsIHJlZ2lzdGVyLCByZWdpc3RlckZvcm1XaWRnZXQgfSBmcm9tICdAd20vY29tcG9uZW50cy9iYXNlJztcbmltcG9ydCB7IEZvcm1XaWRnZXRUeXBlIH0gZnJvbSAnQHdtL2NvcmUnO1xuXG5leHBvcnQgY29uc3QgcmF0aW5nUHJvcHMgPSBuZXcgTWFwKFxuICAgIFtcbiAgICAgICAgWydjYXB0aW9uJywgUFJPUF9TVFJJTkddLFxuICAgICAgICBbJ2NsYXNzJywgUFJPUF9TVFJJTkddLFxuICAgICAgICBbJ2RhdGFmaWVsZCcsIFBST1BfU1RSSU5HXSxcbiAgICAgICAgWydkYXRhc2V0JywgUFJPUF9BTlldLFxuICAgICAgICBbJ2RhdGF2YWx1ZXNvdXJjZScsIFBST1BfQU5ZXSxcbiAgICAgICAgWydkYXRhdmFsdWUnLCBQUk9QX1NUUklOR10sXG4gICAgICAgIFsnZGlzcGxheWV4cHJlc3Npb24nLCBQUk9QX1NUUklOR10sXG4gICAgICAgIFsnZGlzcGxheWZpZWxkJywgUFJPUF9TVFJJTkddLFxuICAgICAgICBbJ2ljb25jb2xvcicsIFBST1BfU1RSSU5HXSxcbiAgICAgICAgWydhY3RpdmVpY29uY2xhc3MnLCB7dmFsdWU6ICd3aSB3aS1zdGFyJywgLi4uUFJPUF9TVFJJTkd9XSxcbiAgICAgICAgWydpbmFjdGl2ZWljb25jbGFzcycsIHt2YWx1ZTogJ3dpIHdpLXN0YXItYm9yZGVyJywgLi4uUFJPUF9TVFJJTkd9XSxcbiAgICAgICAgWydpY29uc2l6ZScsIFBST1BfU1RSSU5HXSxcbiAgICAgICAgWydtYXh2YWx1ZScsIHt2YWx1ZTogNSwgLi4uUFJPUF9OVU1CRVJ9XSxcbiAgICAgICAgWyduYW1lJywgUFJPUF9TVFJJTkddLFxuICAgICAgICBbJ29yZGVyYnknLCBQUk9QX1NUUklOR10sXG4gICAgICAgIFsncmVhZG9ubHknLCBQUk9QX0JPT0xFQU5dLFxuICAgICAgICBbJ3Nob3cnLCB7dmFsdWU6IHRydWUsIC4uLlBST1BfQk9PTEVBTn1dLFxuICAgICAgICBbJ3Nob3djYXB0aW9ucycsIHt2YWx1ZTogdHJ1ZSwgLi4uUFJPUF9CT09MRUFOfV0sXG4gICAgICAgIFsndGFiaW5kZXgnLCB7dmFsdWU6IDAsIC4uLlBST1BfTlVNQkVSfV0sXG4gICAgICAgIFsndXNla2V5cycsIFBST1BfQk9PTEVBTl1cbiAgICBdXG4pO1xuXG5leHBvcnQgY29uc3QgcmVnaXN0ZXJQcm9wcyA9ICgpID0+IHtcbiAgICByZWdpc3RlcihcbiAgICAgICAgJ3dtLXJhdGluZycsXG4gICAgICAgIHJhdGluZ1Byb3BzXG4gICAgKTtcbiAgICByZWdpc3RlckZvcm1XaWRnZXQoXG4gICAgICAgIEZvcm1XaWRnZXRUeXBlLlJBVElORyxcbiAgICAgICAgbmV3IE1hcChyYXRpbmdQcm9wcylcbiAgICApO1xufTtcbiJdfQ==
|
@@ -6,7 +6,7 @@ import * as i2 from '@angular/forms';
|
|
6
6
|
import { NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';
|
7
7
|
import * as i3 from '@wm/components/base';
|
8
8
|
import { PROP_STRING, PROP_ANY, PROP_NUMBER, PROP_BOOLEAN, register, registerFormWidget, styler, getOrderedDataset, provideAs, provideAsWidgetRef, WmComponentsModule } from '@wm/components/base';
|
9
|
-
import { FormWidgetType, generateGUId,
|
9
|
+
import { FormWidgetType, generateGUId, noop } from '@wm/core';
|
10
10
|
import { DatasetAwareFormComponent } from '@wm/components/input';
|
11
11
|
import { slice, isEmpty, find, isUndefined, toString } from 'lodash-es';
|
12
12
|
|
@@ -20,6 +20,8 @@ const ratingProps = new Map([
|
|
20
20
|
['displayexpression', PROP_STRING],
|
21
21
|
['displayfield', PROP_STRING],
|
22
22
|
['iconcolor', PROP_STRING],
|
23
|
+
['activeiconclass', { value: 'wi wi-star', ...PROP_STRING }],
|
24
|
+
['inactiveiconclass', { value: 'wi wi-star-border', ...PROP_STRING }],
|
23
25
|
['iconsize', PROP_STRING],
|
24
26
|
['maxvalue', { value: 5, ...PROP_NUMBER }],
|
25
27
|
['name', PROP_STRING],
|
@@ -38,36 +40,28 @@ const registerProps = () => {
|
|
38
40
|
const _c0 = ["ratingInput"];
|
39
41
|
const _c1 = ["wmRating", ""];
|
40
42
|
const _c2 = () => ({ standalone: true });
|
41
|
-
const _c3 = a0 => ({
|
42
|
-
const _c4 = (a0, a1) => ({
|
43
|
-
|
44
|
-
const _c6 = (a0, a1) => ({ "font-size": a0, color: a1 });
|
45
|
-
function RatingComponent_div_1_label_1_Template(rf, ctx) { if (rf & 1) {
|
43
|
+
const _c3 = a0 => ({ active: a0 });
|
44
|
+
const _c4 = (a0, a1) => ({ "font-size": a0, color: a1 });
|
45
|
+
function RatingComponent_label_2_Template(rf, ctx) { if (rf & 1) {
|
46
46
|
const _r1 = i0.ɵɵgetCurrentView();
|
47
|
-
i0.ɵɵelementStart(0, "label",
|
48
|
-
i0.ɵɵlistener("touchstart", function
|
49
|
-
i0.ɵɵ
|
50
|
-
i0.ɵɵ
|
47
|
+
i0.ɵɵelementStart(0, "label", 5);
|
48
|
+
i0.ɵɵlistener("touchstart", function RatingComponent_label_2_Template_label_touchstart_0_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onTouchStart($event)); })("mouseleave", function RatingComponent_label_2_Template_label_mouseleave_0_listener($event) { const rate_r3 = i0.ɵɵrestoreView(_r1).$implicit; const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onMouseleave($event, rate_r3)); })("mouseover", function RatingComponent_label_2_Template_label_mouseover_0_listener($event) { const rate_r3 = i0.ɵɵrestoreView(_r1).$implicit; const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onMouseOver($event, rate_r3)); });
|
49
|
+
i0.ɵɵelement(1, "i", 6);
|
50
|
+
i0.ɵɵelementStart(2, "input", 7, 0);
|
51
|
+
i0.ɵɵlistener("click", function RatingComponent_label_2_Template_input_click_2_listener($event) { const rate_r3 = i0.ɵɵrestoreView(_r1).$implicit; const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onRatingClick($event, rate_r3)); });
|
51
52
|
i0.ɵɵelementEnd()();
|
52
53
|
} if (rf & 2) {
|
53
54
|
const rate_r3 = ctx.$implicit;
|
54
|
-
const ctx_r1 = i0.ɵɵnextContext(
|
55
|
-
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(
|
55
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
56
|
+
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(11, _c3, rate_r3.index <= ctx_r1.selectedRatingValue))("ngStyle", i0.ɵɵpureFunction2(13, _c4, ctx_r1.iconsize, rate_r3.index <= ctx_r1.selectedRatingValue && ctx_r1.iconcolor))("title", rate_r3.label || rate_r3.index)("for", ctx_r1._id + "-" + rate_r3.index);
|
57
|
+
i0.ɵɵadvance();
|
58
|
+
i0.ɵɵclassMapInterpolate1("app-icon ", rate_r3.index <= ctx_r1.selectedRatingValue ? ctx_r1.activeiconclass : ctx_r1.inactiveiconclass, "");
|
56
59
|
i0.ɵɵadvance();
|
57
60
|
i0.ɵɵproperty("id", ctx_r1._id + "-" + rate_r3.index)("value", rate_r3.key || rate_r3.index);
|
58
61
|
i0.ɵɵattribute("aria-label", (rate_r3.label || rate_r3.index) + " out of " + ctx_r1.ratingItems.length + " ratings")("aria-checked", rate_r3.label === ctx_r1.datavalue ? "true" : "false");
|
59
62
|
} }
|
60
|
-
function
|
61
|
-
i0.ɵɵ
|
62
|
-
i0.ɵɵtemplate(1, RatingComponent_div_1_label_1_Template, 3, 13, "label", 7);
|
63
|
-
i0.ɵɵelementEnd();
|
64
|
-
} if (rf & 2) {
|
65
|
-
const ctx_r1 = i0.ɵɵnextContext();
|
66
|
-
i0.ɵɵadvance();
|
67
|
-
i0.ɵɵproperty("ngForOf", ctx_r1.ratingItems);
|
68
|
-
} }
|
69
|
-
function RatingComponent_label_4_Template(rf, ctx) { if (rf & 1) {
|
70
|
-
i0.ɵɵelement(0, "label", 10);
|
63
|
+
function RatingComponent_label_3_Template(rf, ctx) { if (rf & 1) {
|
64
|
+
i0.ɵɵelement(0, "label", 8);
|
71
65
|
} if (rf & 2) {
|
72
66
|
const ctx_r1 = i0.ɵɵnextContext();
|
73
67
|
i0.ɵɵproperty("textContent", ctx_r1.caption);
|
@@ -87,6 +81,8 @@ class RatingComponent extends DatasetAwareFormComponent {
|
|
87
81
|
}
|
88
82
|
constructor(inj, explicitContext) {
|
89
83
|
super(inj, WIDGET_CONFIG, explicitContext);
|
84
|
+
this.activeiconclass = '';
|
85
|
+
this.inactiveiconclass = '';
|
90
86
|
this._id = generateGUId();
|
91
87
|
styler(this.nativeElement, this);
|
92
88
|
// prepare the rating options on dataset ready.
|
@@ -196,7 +192,6 @@ class RatingComponent extends DatasetAwareFormComponent {
|
|
196
192
|
}
|
197
193
|
calculateRatingsWidth(dataVal) {
|
198
194
|
const selectedRating = parseFloat(this.selectedRatingValue), starWidth = 0.925, maxValue = parseInt(this.maxvalue || this.datasetItems.length, 10) || DEFAULT_RATING;
|
199
|
-
setCSS(this.nativeElement.querySelector('.ratings-container'), 'width', (starWidth * maxValue) + 'em');
|
200
195
|
dataVal = dataVal || this.datavalue;
|
201
196
|
if (dataVal === undefined || dataVal === '' || dataVal === null) {
|
202
197
|
this.caption = '';
|
@@ -254,26 +249,22 @@ class RatingComponent extends DatasetAwareFormComponent {
|
|
254
249
|
} }, features: [i0.ɵɵProvidersFeature([
|
255
250
|
provideAs(RatingComponent, NG_VALUE_ACCESSOR, true),
|
256
251
|
provideAsWidgetRef(RatingComponent)
|
257
|
-
]), i0.ɵɵInheritDefinitionFeature], attrs: _c1, decls:
|
252
|
+
]), i0.ɵɵInheritDefinitionFeature], attrs: _c1, decls: 4, vars: 7, consts: [["ratingInput", ""], ["aria-multiselectable", "true", "ngDefaultControl", "", 1, "ratings-wrapper", 3, "focus", "ngModelChange", "ngModel", "ngModelOptions"], [1, "rating-style"], [3, "ngClass", "ngStyle", "title", "for", "touchstart", "mouseleave", "mouseover", 4, "ngFor", "ngForOf"], ["class", "caption", 3, "textContent", 4, "ngIf"], [3, "touchstart", "mouseleave", "mouseover", "ngClass", "ngStyle", "title", "for"], ["aria-hidden", "true"], ["type", "radio", "role", "radio", "name", "ratings-id", 3, "click", "id", "value"], [1, "caption", 3, "textContent"]], template: function RatingComponent_Template(rf, ctx) { if (rf & 1) {
|
258
253
|
i0.ɵɵelementStart(0, "div", 1);
|
259
254
|
i0.ɵɵlistener("focus", function RatingComponent_Template_div_focus_0_listener($event) { return ctx.onFocus($event); });
|
260
255
|
i0.ɵɵtwoWayListener("ngModelChange", function RatingComponent_Template_div_ngModelChange_0_listener($event) { i0.ɵɵtwoWayBindingSet(ctx.modelByKey, $event) || (ctx.modelByKey = $event); return $event; });
|
261
|
-
i0.ɵɵ
|
262
|
-
i0.ɵɵ
|
263
|
-
i0.ɵɵelement(3, "div", 4);
|
256
|
+
i0.ɵɵelementStart(1, "div", 2);
|
257
|
+
i0.ɵɵtemplate(2, RatingComponent_label_2_Template, 4, 16, "label", 3);
|
264
258
|
i0.ɵɵelementEnd();
|
265
|
-
i0.ɵɵtemplate(
|
259
|
+
i0.ɵɵtemplate(3, RatingComponent_label_3_Template, 1, 1, "label", 4);
|
266
260
|
i0.ɵɵelementEnd();
|
267
261
|
} if (rf & 2) {
|
268
262
|
i0.ɵɵtwoWayProperty("ngModel", ctx.modelByKey);
|
269
|
-
i0.ɵɵproperty("ngModelOptions", i0.ɵɵpureFunction0(
|
270
|
-
i0.ɵɵadvance();
|
271
|
-
i0.ɵɵproperty("ngIf", !ctx.readonly);
|
263
|
+
i0.ɵɵproperty("ngModelOptions", i0.ɵɵpureFunction0(6, _c2));
|
272
264
|
i0.ɵɵadvance();
|
273
|
-
i0.ɵɵclassProp("
|
274
|
-
i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(9, _c3, ctx.iconsize));
|
265
|
+
i0.ɵɵclassProp("disabled", ctx.readonly);
|
275
266
|
i0.ɵɵadvance();
|
276
|
-
i0.ɵɵproperty("
|
267
|
+
i0.ɵɵproperty("ngForOf", ctx.ratingItems);
|
277
268
|
i0.ɵɵadvance();
|
278
269
|
i0.ɵɵproperty("ngIf", ctx.showcaptions);
|
279
270
|
} }, dependencies: [i1.NgClass, i1.NgForOf, i1.NgIf, i1.NgStyle, i2.DefaultValueAccessor, i2.NgControlStatus, i2.NgModel, i3.TextContentDirective], encapsulation: 2 }); }
|
@@ -283,7 +274,7 @@ class RatingComponent extends DatasetAwareFormComponent {
|
|
283
274
|
args: [{ selector: '[wmRating]', providers: [
|
284
275
|
provideAs(RatingComponent, NG_VALUE_ACCESSOR, true),
|
285
276
|
provideAsWidgetRef(RatingComponent)
|
286
|
-
], template: "<div (focus)=\"onFocus($event)\" [(ngModel)]=\"modelByKey\" [ngModelOptions]=\"{standalone: true}\" aria-multiselectable=\"true\"\n class=\"ratings-wrapper\" ngDefaultControl>\n <div
|
277
|
+
], template: "<div (focus)=\"onFocus($event)\" [(ngModel)]=\"modelByKey\" [ngModelOptions]=\"{standalone: true}\" aria-multiselectable=\"true\"\n class=\"ratings-wrapper\" ngDefaultControl>\n <div [class.disabled]=\"readonly\" class=\"rating-style\">\n <label *ngFor=\"let rate of ratingItems;\"\n [ngClass]=\"{active : rate.index <= selectedRatingValue}\"\n [ngStyle]=\"{'font-size' :iconsize, color: rate.index <= selectedRatingValue && iconcolor}\"\n [title]=\"rate.label || rate.index\"\n (touchstart)=\"onTouchStart($event)\"\n (mouseleave)=\"onMouseleave($event, rate)\"\n (mouseover)=\"onMouseOver($event, rate)\"\n [for]=\"_id + '-' + rate.index\">\n <i class=\"app-icon {{rate.index <= selectedRatingValue ? activeiconclass : inactiveiconclass}}\" aria-hidden=\"true\"></i>\n <input #ratingInput type=\"radio\" role=\"radio\" [attr.aria-label]=\"(rate.label || rate.index) + ' out of ' + ratingItems.length + ' ratings'\" [attr.aria-checked]=\"rate.label === datavalue ? 'true' : 'false'\"\n [id]=\"_id + '-' + rate.index\" (click)=\"onRatingClick($event, rate)\" name=\"ratings-id\" [value]=\"rate.key || rate.index\"/>\n </label>\n </div>\n <label *ngIf=\"showcaptions\" class=\"caption\" [textContent]=\"caption\"></label>\n</div>\n" }]
|
287
278
|
}], () => [{ type: i0.Injector }, { type: undefined, decorators: [{
|
288
279
|
type: Inject,
|
289
280
|
args: ['EXPLICIT_CONTEXT']
|