mis-crystal-design-system 18.1.7 → 18.1.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/input/directives/input/input.directive.mjs +7 -15
- package/esm2022/input/mis-input.component.mjs +41 -25
- package/esm2022/table/table.component.mjs +10 -2
- package/esm2022/timerangepicker/timerangepicker.component.mjs +27 -10
- package/fesm2022/mis-crystal-design-system-input.mjs +46 -38
- package/fesm2022/mis-crystal-design-system-input.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-table.mjs +9 -1
- package/fesm2022/mis-crystal-design-system-table.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-timerangepicker.mjs +26 -9
- package/fesm2022/mis-crystal-design-system-timerangepicker.mjs.map +1 -1
- package/input/mis-input.component.d.ts +1 -0
- package/input/mis-input.component.scss +17 -10
- package/package.json +13 -13
|
@@ -82,18 +82,35 @@ export class TimeRangePickerComponent {
|
|
|
82
82
|
// Update previous values
|
|
83
83
|
this._previousStartDateEpoch = currentStartDate;
|
|
84
84
|
this._previousEndDateEpoch = currentEndDate;
|
|
85
|
-
//
|
|
86
|
-
this.
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
85
|
+
// PRESERVE the currently selected times (don't reset them!)
|
|
86
|
+
const currentStartTimeString = this.startTime().time;
|
|
87
|
+
const currentEndTimeString = this.endTime().time;
|
|
88
|
+
// Calculate new epochs with the new date but SAME time
|
|
89
|
+
const newStartEpoch = dayjs.tz(`${this.getStartDate()} ${currentStartTimeString}`, `DD-MM-YYYY ${this.getTimeFormat()}`, this.timezone()).valueOf();
|
|
90
|
+
const newEndEpoch = dayjs.tz(`${this.getEndDate()} ${currentEndTimeString}`, `DD-MM-YYYY ${this.getTimeFormat()}`, this.timezone()).valueOf();
|
|
91
|
+
// Update the time signals with preserved times but new epochs
|
|
92
|
+
this.startTime.set({
|
|
93
|
+
valid: true,
|
|
94
|
+
time: currentStartTimeString,
|
|
95
|
+
epoch: newStartEpoch
|
|
96
|
+
});
|
|
97
|
+
this.endTime.set({
|
|
98
|
+
valid: true,
|
|
99
|
+
time: currentEndTimeString,
|
|
100
|
+
epoch: newEndEpoch
|
|
101
|
+
});
|
|
102
|
+
// Update firstIntervals for the dropdown options based on new date
|
|
103
|
+
this.setFirstIntervals();
|
|
104
|
+
// Emit the updated time range with preserved times but new date
|
|
105
|
+
const validity = this.checkTimeValidity(currentStartTimeString.trim(), this.startDateEpoch()) &&
|
|
106
|
+
this.checkTimeValidity(currentEndTimeString.trim(), this.endDateEpoch());
|
|
90
107
|
this.rangeValidation(validity);
|
|
91
108
|
this.emitTimeRange({
|
|
92
109
|
valid: validity && this.rangeValidity(),
|
|
93
|
-
startTime:
|
|
94
|
-
endTime:
|
|
95
|
-
startEpoch:
|
|
96
|
-
endEpoch:
|
|
110
|
+
startTime: currentStartTimeString,
|
|
111
|
+
endTime: currentEndTimeString,
|
|
112
|
+
startEpoch: newStartEpoch,
|
|
113
|
+
endEpoch: newEndEpoch
|
|
97
114
|
});
|
|
98
115
|
});
|
|
99
116
|
}, { allowSignalWrites: true });
|
|
@@ -325,4 +342,4 @@ export class TimeRangePickerComponent {
|
|
|
325
342
|
args: [{ selector: "mis-timerangepicker", template: "<div class=\"rangepicker-container\" [ngStyle]=\"{'flexDirection': direction(), 'gap': gap()}\">\n <mis-timepicker\n [clockFormat]=\"clockFormat()\"\n [interval]=\"interval()\"\n [dateAsEpoch]=\"startDateEpoch()\"\n [firstInterval]=\"firstIntervals().start\"\n (timeEmitter)=\"startPickerHandler($event)\"\n [timezone]=\"timezone()\"\n [height]=\"height()\"\n [inputWidth]=\"inputWidth()\"\n [dropdownWidth]=\"dropdownWidth()\"\n [showTooltip]=\"showTooltip()\"\n [givenTime]=\"givenStartTime()\"\n [disable]=\"disableStartTime()\"\n [disableUserInput]=\"disableUserInput()\"\n [fontSize]=\"fontSize()\"\n ></mis-timepicker>\n <p *ngIf=\"direction() === 'row'\">-</p>\n <mis-timepicker\n [clockFormat]=\"clockFormat()\"\n [interval]=\"interval()\"\n [dateAsEpoch]=\"endDateEpoch()\"\n [firstInterval]=\"firstIntervals().end\"\n (timeEmitter)=\"endPickerHandler($event)\"\n [rangeValidity]=\"rangeValidity()\"\n [timezone]=\"timezone()\"\n [height]=\"height()\"\n [inputWidth]=\"inputWidth()\"\n [dropdownWidth]=\"dropdownWidth()\"\n [showTooltip]=\"showTooltip()\"\n [givenTime]=\"givenEndTime()\"\n [triggerChange]=\"triggerChange()\"\n [disable]=\"disableEndTime()\"\n [disableUserInput]=\"disableUserInput()\"\n [fontSize]=\"fontSize()\"\n ></mis-timepicker>\n</div>\n\n", styles: [".rangepicker-container{display:flex;gap:1rem;align-items:center}p{margin:0;display:inline-flex;align-items:center}\n"] }]
|
|
326
343
|
}], () => [], null); })();
|
|
327
344
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TimeRangePickerComponent, { className: "TimeRangePickerComponent" }); })();
|
|
328
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXJhbmdlcGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL3RpbWVyYW5nZXBpY2tlci90aW1lcmFuZ2VwaWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvbWlzLWNvbXBvbmVudHMvdGltZXJhbmdlcGlja2VyL3RpbWVyYW5nZXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRXRHLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLFFBQVEsTUFBTSx1QkFBdUIsQ0FBQztBQUM3QyxPQUFPLEdBQUcsTUFBTSxrQkFBa0IsQ0FBQzs7Ozs7O0lDYWpDLHlCQUFpQztJQUFBLGlCQUFDO0lBQUEsaUJBQUk7O0FEWHhDLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDbEIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztBQU92QixNQUFNLE9BQU8sd0JBQXdCO0lBb0NuQyw2RUFBNkU7SUFDckUsYUFBYTtRQUNuQixPQUFPLElBQUksQ0FBQyxXQUFXLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO0lBQ3pELENBQUM7SUFFTyxZQUFZO1FBQ2xCLE9BQU8sS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQy9FLENBQUM7SUFFTyxVQUFVO1FBQ2hCLE9BQU8sS0FBSyxDQUFDLEVB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NENBQ1csNEJBQ2hCOzs7aUZEcEJkLHdCQUF3QjtjQUxwQyxTQUFTOzJCQUNFLHFCQUFxQjs7a0ZBSXBCLHdCQUF3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgaW5wdXQsIG91dHB1dCwgc2lnbmFsLCBjb21wdXRlZCwgZWZmZWN0LCB1bnRyYWNrZWQsIE9uSW5pdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBJVGltZVJhbmdlLCBJVGltZSwgVERpcmVjdGlvbiB9IGZyb20gXCIuL3RpbWVyYW5nZS5uYW1lc3BhY2VcIjtcbmltcG9ydCBkYXlqcyBmcm9tICdkYXlqcyc7XG5pbXBvcnQgdGltZXpvbmUgZnJvbSAnZGF5anMvcGx1Z2luL3RpbWV6b25lJztcbmltcG9ydCB1dGMgZnJvbSAnZGF5anMvcGx1Z2luL3V0Yyc7XG5cbmRheWpzLmV4dGVuZCh1dGMpO1xuZGF5anMuZXh0ZW5kKHRpbWV6b25lKTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcIm1pcy10aW1lcmFuZ2VwaWNrZXJcIixcbiAgdGVtcGxhdGVVcmw6IFwiLi90aW1lcmFuZ2VwaWNrZXIuY29tcG9uZW50Lmh0bWxcIiwgLy8gQ29ycmVjdGVkIGZpbGUgbmFtZVxuICBzdHlsZVVybHM6IFtcIi4vdGltZXJhbmdlcGlja2VyLmNvbXBvbmVudC5zY3NzXCJdXG59KVxuZXhwb3J0IGNsYXNzIFRpbWVSYW5nZVBpY2tlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIC8vIC0tLSBJbnB1dCBTaWduYWxzIChyZWFkLW9ubHkpIC0tLVxuICBpbnB1dFdpZHRoID0gaW5wdXQ8c3RyaW5nPihcIjEwMHB4XCIpO1xuICBkcm9wZG93bldpZHRoID0gaW5wdXQ8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBoZWlnaHQgPSBpbnB1dDxzdHJpbmc+KFwiNDZweFwiKTtcbiAgdGltZXpvbmUgPSBpbnB1dDxzdHJpbmc+KFwiQXNpYS9Lb2xrYXRhXCIpO1xuICBzdGFydERhdGVFcG9jaCA9IGlucHV0PG51bWJlcj4oZGF5anMudHooZGF5anMoKSwgdGhpcy50aW1lem9uZSgpKS52YWx1ZU9mKCkpO1xuICBlbmREYXRlRXBvY2ggPSBpbnB1dDxudW1iZXI+KGRheWpzLnR6KGRheWpzKCksIHRoaXMudGltZXpvbmUoKSkudmFsdWVPZigpKTtcbiAgZ2l2ZW5TdGFydFRpbWUgPSBpbnB1dDxudW1iZXIgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIGdpdmVuRW5kVGltZSA9IGlucHV0PG51bWJlciB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgY2xvY2tGb3JtYXQgPSBpbnB1dDxudW1iZXI+KDEyKTtcbiAgaW50ZXJ2YWwgPSBpbnB1dDxudW1iZXI+KDE1KTtcbiAgc2hvd1Rvb2x0aXAgPSBpbnB1dDxib29sZWFuPih0cnVlKTtcbiAgZGlyZWN0aW9uID0gaW5wdXQ8VERpcmVjdGlvbj4oJ3JvdycpO1xuICBnYXAgPSBpbnB1dDxzdHJpbmc+KCcxcmVtJyk7XG4gIGRpc2FibGVTdGFydFRpbWUgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIGRpc2FibGVFbmRUaW1lID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICBmb250U2l6ZSA9IGlucHV0PHN0cmluZz4oXCIxNHB4XCIpO1xuICBkaXNhYmxlVXNlcklucHV0ID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIC8vIC0tLSBPdXRwdXQgU2lnbmFsIC0tLVxuICB0aW1lUmFuZ2VFbWl0dGVyID0gb3V0cHV0PElUaW1lUmFuZ2U+KCk7XG5cbiAgLy8gLS0tIEludGVybmFsIFdyaXRhYmxlIFNpZ25hbHMgLS0tXG4gIHN0YXJ0VGltZSA9IHNpZ25hbDxJVGltZSB8IG51bGw+KG51bGwpO1xuICBlbmRUaW1lID0gc2lnbmFsPElUaW1lIHwgbnVsbD4obnVsbCk7XG4gIHJhbmdlVmFsaWRpdHkgPSBzaWduYWw8Ym9vbGVhbj4odHJ1ZSk7XG4gIHRyaWdnZXJDaGFuZ2UgPSBzaWduYWw8Ym9vbGVhbj4odHJ1ZSk7XG4gIHByaXZhdGUgX2ZpcnN0SW50ZXJ2YWxzID0gc2lnbmFsPHsgc3RhcnQ6IG51bWJlciwgZW5kOiBudW1iZXIgfT4oeyBzdGFydDogMCwgZW5kOiAwIH0pO1xuICBwcml2YXRlIF9pc0luaXRpYWxpemluZyA9IGZhbHNlO1xuICBwcml2YXRlIF9wcmV2aW91c1N0YXJ0RGF0ZUVwb2NoOiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfcHJldmlvdXNFbmREYXRlRXBvY2g6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gIC8vIC0tLSBDb21wdXRlZCBTaWduYWxzIChEZXJpdmVkIFN0YXRlKSAtLS1cbiAgZmlyc3RJbnRlcnZhbHMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLl9maXJzdEludGVydmFscygpKTsgLy8gQSBwdWJsaWMgY29tcHV0ZWQgc2lnbmFsIHRvIGFjY2VzcyB0aGUgd3JpdGFibGUgb25lXG4gIFxuICAvLyBIZWxwZXIgbWV0aG9kcyBpbnN0ZWFkIG9mIGNvbXB1dGVkIHNpZ25hbHMgdG8gYXZvaWQgc2lnbmFsIHdyaXRlIGNvbmZsaWN0c1xuICBwcml2YXRlIGdldFRpbWVGb3JtYXQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5jbG9ja0Zvcm1hdCgpID09PSAxMiA/IFwiaGg6bW0gYVwiIDogXCJISDptbVwiO1xuICB9XG4gIFxuICBwcml2YXRlIGdldFN0YXJ0RGF0ZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBkYXlqcy50eih0aGlzLnN0YXJ0RGF0ZUVwb2NoKCksIHRoaXMudGltZXpvbmUoKSkuZm9ybWF0KFwiREQtTU0tWVlZWVwiKTtcbiAgfVxuICBcbiAgcHJpdmF0ZSBnZXRFbmREYXRlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGRheWpzLnR6KHRoaXMuZW5kRGF0ZUVwb2NoKCksIHRoaXMudGltZXpvbmUoKSkuZm9ybWF0KFwiREQtTU0tWVlZWVwiKTtcbiAgfVxuICBcbiAgcHJpdmF0ZSBnZXRDdXJyRGF0ZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBkYXlqcy50eihkYXlqcygpLCB0aGlzLnRpbWV6b25lKCkpLmZvcm1hdChcIkRELU1NLVlZWVlcIik7XG4gIH1cbiAgXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIC8vIEVmZmVjdCB0byB3YXRjaCBmb3IgY2hhbmdlcyBpbiBzdGFydERhdGVFcG9jaCBhbmQgZW5kRGF0ZUVwb2NoXG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIC8vIE9OTFkgdHJhY2sgdGhlc2UgdHdvIHNpZ25hbHMgLSB0aGlzIGlzIHRoZSBvbmx5IGxpbmUgdGhhdCBjcmVhdGVzIGRlcGVuZGVuY2llc1xuICAgICAgY29uc3QgY3VycmVudFN0YXJ0RGF0ZSA9IHRoaXMuc3RhcnREYXRlRXBvY2goKTtcbiAgICAgIGNvbnN0IGN1cnJlbnRFbmREYXRlID0gdGhpcy5lbmREYXRlRXBvY2goKTtcbiAgICAgIFxuICAgICAgLy8gVXNlIHVudHJhY2tlZCgpIGZvciBldmVyeXRoaW5nIGVsc2UgdG8gcHJldmVudCBpbmZpbml0ZSBsb29wc1xuICAgICAgdW50cmFja2VkKCgpID0+IHtcbiAgICAgICAgLy8gU2tpcCBpZiBjb21wb25lbnQgaXMgaW5pdGlhbGl6aW5nXG4gICAgICAgIGlmICh0aGlzLl9pc0luaXRpYWxpemluZykge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgLy8gU2tpcCBpZiBjb21wb25lbnQgaGFzbid0IGJlZW4gaW5pdGlhbGl6ZWQgeWV0XG4gICAgICAgIGlmICghdGhpcy5zdGFydFRpbWUoKSB8fCAhdGhpcy5lbmRUaW1lKCkpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIC8vIFNraXAgaWYgZGF0ZXMgaGF2ZW4ndCBhY3R1YWxseSBjaGFuZ2VkIChwcmV2ZW50cyBpbml0aWFsIGRvdWJsZS1ydW4pXG4gICAgICAgIGlmICh0aGlzLl9wcmV2aW91c1N0YXJ0RGF0ZUVwb2NoID09PSBjdXJyZW50U3RhcnREYXRlICYmIFxuICAgICAgICAgICAgdGhpcy5fcHJldmlvdXNFbmREYXRlRXBvY2ggPT09IGN1cnJlbnRFbmREYXRlKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICAvLyBVcGRhdGUgcHJldmlvdXMgdmFsdWVzXG4gICAgICAgIHRoaXMuX3ByZXZpb3VzU3RhcnREYXRlRXBvY2ggPSBjdXJyZW50U3RhcnREYXRlO1xuICAgICAgICB0aGlzLl9wcmV2aW91c0VuZERhdGVFcG9jaCA9IGN1cnJlbnRFbmREYXRlO1xuICAgICAgICBcbiAgICAgICAgLy8gUmVpbml0aWFsaXplIGFuZCBlbWl0IHdoZW4gZGF0ZSBpbnB1dHMgY2hhbmdlXG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZUNvbXBvbmVudCgpO1xuICAgICAgICBcbiAgICAgICAgLy8gRW1pdCB0aGUgdXBkYXRlZCB0aW1lIHJhbmdlXG4gICAgICAgIGNvbnN0IHZhbGlkaXR5ID1cbiAgICAgICAgICB0aGlzLmNoZWNrVGltZVZhbGlkaXR5KHRoaXMuc3RhcnRUaW1lKCkhLnRpbWUudHJpbSgpLCB0aGlzLnN0YXJ0RGF0ZUVwb2NoKCkpICYmXG4gICAgICAgICAgdGhpcy5jaGVja1RpbWVWYWxpZGl0eSh0aGlzLmVuZFRpbWUoKSEudGltZS50cmltKCksIHRoaXMuZW5kRGF0ZUVwb2NoKCkpO1xuXG4gICAgICAgIHRoaXMucmFuZ2VWYWxpZGF0aW9uKHZhbGlkaXR5KTtcbiAgICAgICAgdGhpcy5lbWl0VGltZVJhbmdlKHtcbiAgICAgICAgICB2YWxpZDogdmFsaWRpdHkgJiYgdGhpcy5yYW5nZVZhbGlkaXR5KCksXG4gICAgICAgICAgc3RhcnRUaW1lOiB0aGlzLnN0YXJ0VGltZSgpIS50aW1lLFxuICAgICAgICAgIGVuZFRpbWU6IHRoaXMuZW5kVGltZSgpIS50aW1lLFxuICAgICAgICAgIHN0YXJ0RXBvY2g6IGRheWpzLnR6KGAke3RoaXMuZ2V0U3RhcnREYXRlKCl9ICR7dGhpcy5zdGFydFRpbWUoKSEudGltZX1gLCBgREQtTU0tWVlZWSAke3RoaXMuZ2V0VGltZUZvcm1hdCgpfWAsIHRoaXMudGltZXpvbmUoKSkudmFsdWVPZigpLFxuICAgICAgICAgIGVuZEVwb2NoOiBkYXlqcy50eihgJHt0aGlzLmdldEVuZERhdGUoKX0gJHt0aGlzLmVuZFRpbWUoKSEudGltZX1gLCBgREQtTU0tWVlZWSAke3RoaXMuZ2V0VGltZUZvcm1hdCgpfWAsIHRoaXMudGltZXpvbmUoKSkudmFsdWVPZigpXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSwgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9KTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIC8vIEluaXRpYWxpemUgdGhlIGNvbXBvbmVudCBvbmNlXG4gICAgdGhpcy5pbml0aWFsaXplQ29tcG9uZW50KCk7XG4gICAgXG4gICAgLy8gU3RvcmUgaW5pdGlhbCB2YWx1ZXMgdG8gcHJldmVudCBlZmZlY3QgZnJvbSBydW5uaW5nIG9uIGZpcnN0IGxvYWRcbiAgICB0aGlzLl9wcmV2aW91c1N0YXJ0RGF0ZUVwb2NoID0gdGhpcy5zdGFydERhdGVFcG9jaCgpO1xuICAgIHRoaXMuX3ByZXZpb3VzRW5kRGF0ZUVwb2NoID0gdGhpcy5lbmREYXRlRXBvY2goKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZUNvbXBvbmVudCgpOiB2b2lkIHtcbiAgICB0aGlzLl9pc0luaXRpYWxpemluZyA9IHRydWU7XG4gICAgXG4gICAgdGhpcy5zZXRGaXJzdEludGVydmFscygpO1xuICAgIGNvbnN0IGZpcnN0SW50ZXJ2YWxzID0gdGhpcy5fZmlyc3RJbnRlcnZhbHMoKTtcblxuICAgIHRoaXMuc3RhcnRUaW1lLnNldCh7XG4gICAgICB2YWxpZDogdHJ1ZSxcbiAgICAgIHRpbWU6IGRheWpzLnR6KGZpcnN0SW50ZXJ2YWxzLnN0YXJ0LCB0aGlzLnRpbWV6b25lKCkpLmZvcm1hdCh0aGlzLmdldFRpbWVGb3JtYXQoKSksXG4gICAgICBlcG9jaDogZGF5anMudHooZmlyc3RJbnRlcnZhbHMuc3RhcnQsIHRoaXMudGltZXpvbmUoKSkudmFsdWVPZigpXG4gICAgfSk7XG4gICAgXG4gICAgLy8gRW5zdXJlIGVuZCB0aW1lIGlzIGFsd2F5cyBhZnRlciBzdGFydCB0aW1lXG4gICAgbGV0IGVuZFRpbWVFcG9jaCA9IGZpcnN0SW50ZXJ2YWxzLmVuZDtcbiAgICBjb25zdCBzdGFydFRpbWVFcG9jaCA9IGZpcnN0SW50ZXJ2YWxzLnN0YXJ0O1xuICAgIFxuICAgIC8vIElmIGVuZCB0aW1lIGlzIHNhbWUgb3IgYmVmb3JlIHN0YXJ0IHRpbWUsIGFkZCBvbmUgaW50ZXJ2YWwgdG8gZW5kIHRpbWVcbiAgICBpZiAoZW5kVGltZUVwb2NoIDw9IHN0YXJ0VGltZUVwb2NoKSB7XG4gICAgICBlbmRUaW1lRXBvY2ggPSBkYXlqcy50eihzdGFydFRpbWVFcG9jaCwgdGhpcy50aW1lem9uZSgpKS5hZGQodGhpcy5pbnRlcnZhbCgpLCAnbScpLnZhbHVlT2YoKTtcbiAgICAgIFxuICAgICAgLy8gVXBkYXRlIHRoZSBmaXJzdEludGVydmFscyB0byByZWZsZWN0IHRoZSBhZGp1c3RlZCBlbmQgdGltZVxuICAgICAgdGhpcy5fZmlyc3RJbnRlcnZhbHMuc2V0KHtcbiAgICAgICAgc3RhcnQ6IGZpcnN0SW50ZXJ2YWxzLnN0YXJ0LFxuICAgICAgICBlbmQ6IGVuZFRpbWVFcG9jaFxuICAgICAgfSk7XG4gICAgfVxuICAgIFxuICAgIHRoaXMuZW5kVGltZS5zZXQoe1xuICAgICAgdmFsaWQ6IHRydWUsXG4gICAgICB0aW1lOiBkYXlqcy50eihlbmRUaW1lRXBvY2gsIHRoaXMudGltZXpvbmUoKSkuZm9ybWF0KHRoaXMuZ2V0VGltZUZvcm1hdCgpKSxcbiAgICAgIGVwb2NoOiBlbmRUaW1lRXBvY2hcbiAgICB9KTtcbiAgICBcbiAgICB0aGlzLl9pc0luaXRpYWxpemluZyA9IGZhbHNlO1xuICB9XG5cbiAgLy8gY2FsY3VsYXRlIHRoZSBmaXJzdCBpbnRlcnZhbCBvZiB0aGUgcGlja2VyXG4gIHByaXZhdGUgc2V0Rmlyc3RJbnRlcnZhbHMoKTogdm9pZCB7XG4gICAgbGV0IGZpcnN0SW50ZXJ2YWxGb3JTdGFydFBpY2tlcjogbnVtYmVyO1xuICAgIGxldCBmaXJzdEludGVydmFsRm9yRW5kUGlja2VyOiBudW1iZXI7XG5cbiAgICBjb25zdCBtaW51dGVzID0gZGF5anMudHooZGF5anMoKSwgdGhpcy50aW1lem9uZSgpKS5taW51dGUoKTtcbiAgICBjb25zdCBvZmZzZXQgPSB0aGlzLmludGVydmFsKCkgLSAobWludXRlcyAlIHRoaXMuaW50ZXJ2YWwoKSk7XG4gICAgY29uc3QgY3VycmVudFRpbWUgPSBkYXlqcy50eihkYXlqcygpLCB0aGlzLnRpbWV6b25lKCkpLnZhbHVlT2YoKTtcblxuICAgIGlmKCB0aGlzLmdldFN0YXJ0RGF0ZSgpID09PSB0aGlzLmdldEN1cnJEYXRlKCkgKXtcbiAgICAgIGlmKHRoaXMuZ2V0U3RhcnREYXRlKCkgPT09IHRoaXMuZ2V0RW5kRGF0ZSgpKXtcbiAgICAgICAgaWYoY3VycmVudFRpbWUgPj0gZGF5anMudHoodGhpcy5zdGFydERhdGVFcG9jaCgpLCB0aGlzLnRpbWV6b25lKCkpLmVuZE9mKFwiZFwiKS5zdWJ0cmFjdCh0aGlzLmludGVydmFsKCksXCJtXCIpLnZhbHVlT2YoKSl7XG4gICAgICAgICAgZmlyc3RJbnRlcnZhbEZvclN0YXJ0UGlja2VyID0gY3VycmVudFRpbWU7XG4gICAgICAgICAgZmlyc3RJbnRlcnZhbEZvckVuZFBpY2tlciA9IGRheWpzLnR6KHRoaXMuZW5kRGF0ZUVwb2NoKCksIHRoaXMudGltZXpvbmUoKSkuZW5kT2YoXCJkXCIpLnZhbHVlT2YoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBmaXJzdEludGVydmFsRm9yU3RhcnRQaWNrZXIgPSBkYXlqcy50eihkYXlqcygpLCB0aGlzLnRpbWV6b25lKCkpLmFkZChvZmZzZXQsIFwibVwiKS52YWx1ZU9mKCk7XG4gICAgICAgICAgLy8gRm9yIHNhbWUgZGF0ZSwgZW5kIHBpY2tlciBzaG91bGQgc3RhcnQgZnJvbSBiZWdpbm5pbmcgb2YgZGF5IHRvIGF2b2lkIHZhbGlkYXRpb24gaXNzdWVzXG4gICAgICAgICAgZmlyc3RJbnRlcnZhbEZvckVuZFBpY2tlciA9IGRheWpzLnR6KHRoaXMuZW5kRGF0ZUVwb2NoKCksIHRoaXMudGltZXpvbmUoKSkuc3RhcnRPZihcImRcIikudmFsdWVPZigpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZihjdXJyZW50VGltZSA+PSBkYXlqcy50eih0aGlzLnN0YXJ0RGF0ZUVwb2NoKCksIHRoaXMudGltZXpvbmUoKSkuZW5kT2YoXCJkXCIpLnN1YnRyYWN0KHRoaXMuaW50ZXJ2YWwoKSxcIm1cIikudmFsdWVPZigpKXtcbiAgICAgICAgICBmaXJzdEludGVydmFsRm9yU3RhcnRQaWNrZXIgPSBjdXJyZW50VGltZTtcbiAgICAgICAgICBmaXJzdEludGVydmFsRm9yRW5kUGlja2VyID0gZGF5anMudHoodGhpcy5lbmREYXRlRXBvY2goKSwgdGhpcy50aW1lem9uZSgpKS5lbmRPZihcImRcIikudmFsdWVPZigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGZpcnN0SW50ZXJ2YWxGb3JTdGFydFBpY2tlciA9IGRheWpzLnR6KGRheWpzKCksIHRoaXMudGltZXpvbmUoKSkuYWRkKG9mZnNldCwgXCJtXCIpLnZhbHVlT2YoKTtcbiAgICAgICAgICBmaXJzdEludGVydmFsRm9yRW5kUGlja2VyID0gZGF5anMudHoodGhpcy5lbmREYXRlRXBvY2goKSwgdGhpcy50aW1lem9uZSgpKS5zdGFydE9mKFwiZFwiKS52YWx1ZU9mKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmKHRoaXMuZ2V0U3RhcnREYXRlKCkgPT09IHRoaXMuZ2V0RW5kRGF0ZSgpKXtcbiAgICAgICAgZmlyc3RJbnRlcnZhbEZvclN0YXJ0UGlja2VyID0gZGF5anMudHoodGhpcy5zdGFydERhdGVFcG9jaCgpLCB0aGlzLnRpbWV6b25lKCkpLnN0YXJ0T2YoXCJkXCIpLnZhbHVlT2YoKTtcbiAgICAgICAgZmlyc3RJbnRlcnZhbEZvckVuZFBpY2tlciA9IGRheWpzLnR6KHRoaXMuZW5kRGF0ZUVwb2NoKCksIHRoaXMudGltZXpvbmUoKSkuYWRkKHRoaXMuaW50ZXJ2YWwoKSwgXCJtXCIpLnZhbHVlT2YoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZpcnN0SW50ZXJ2YWxGb3JTdGFydFBpY2tlciA9IGRheWpzLnR6KHRoaXMuc3RhcnREYXRlRXBvY2goKSwgdGhpcy50aW1lem9uZSgpKS5zdGFydE9mKFwiZFwiKS52YWx1ZU9mKCk7XG4gICAgICAgIGZpcnN0SW50ZXJ2YWxGb3JFbmRQaWNrZXIgPSBkYXlqcy50eih0aGlzLmVuZERhdGVFcG9jaCgpLCB0aGlzLnRpbWV6b25lKCkpLnN0YXJ0T2YoXCJkXCIpLnZhbHVlT2YoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZih0aGlzLmdpdmVuU3RhcnRUaW1lKCkpIHtcbiAgICAgIGZpcnN0SW50ZXJ2YWxGb3JTdGFydFBpY2tlciA9IHRoaXMuZ2l2ZW5TdGFydFRpbWUoKSE7XG4gICAgfVxuICAgIFxuICAgIGlmKHRoaXMuZ2l2ZW5FbmRUaW1lKCkpIHtcbiAgICAgIGZpcnN0SW50ZXJ2YWxGb3JFbmRQaWNrZXIgPSB0aGlzLmdpdmVuRW5kVGltZSgpITtcbiAgICB9XG4gICAgICBcbiAgICB0aGlzLl9maXJzdEludGVydmFscy5zZXQoeyBzdGFydDogZmlyc3RJbnRlcnZhbEZvclN0YXJ0UGlja2VyLCBlbmQ6IGZpcnN0SW50ZXJ2YWxGb3JFbmRQaWNrZXIgfSk7XG4gIH1cblxuICAvLyAtLS0gUHVibGljIE1ldGhvZHMgLS0tXG4gIGVtaXRUaW1lUmFuZ2UoZGF0YTogSVRpbWVSYW5nZSk6IHZvaWQge1xuICAgIHRoaXMudGltZVJhbmdlRW1pdHRlci5lbWl0KGRhdGEpO1xuICB9XG5cbiAgc3RhcnRQaWNrZXJIYW5kbGVyKHRpbWU6IElUaW1lKTogdm9pZCB7XG4gICAgdGhpcy5zdGFydFRpbWUuc2V0KHRpbWUpO1xuICAgIHRoaXMucmFuZ2VWYWxpZGl0eS5zZXQodHJ1ZSk7XG4gICAgXG4gICAgLy8gRG9uJ3QgZW1pdCBkdXJpbmcgaW5pdGlhbGl6YXRpb25cbiAgICBpZiAodGhpcy5faXNJbml0aWFsaXppbmcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBDYWxjdWxhdGUgc3RhcnQgdGltZSBlcG9jaCBmb3IgY29tcGFyaXNvblxuICAgIGNvbnN0IHN0YXJ0VGltZUVwb2NoID0gZGF5anMudHooYCR7dGhpcy5nZXRTdGFydERhdGUoKX0gJHt0aGlzLnN0YXJ0VGltZSgpIS50aW1lfWAsIGBERC1NTS1ZWVlZICR7dGhpcy5nZXRUaW1lRm9ybWF0KCl9YCwgdGhpcy50aW1lem9uZSgpKS52YWx1ZU9mKCk7XG4gICAgY29uc3QgZW5kVGltZUVwb2NoID0gZGF5anMudHooYCR7dGhpcy5nZXRFbmREYXRlKCl9ICR7dGhpcy5lbmRUaW1lKCkhLnRpbWV9YCwgYERELU1NLVlZWVkgJHt0aGlzLmdldFRpbWVGb3JtYXQoKX1gLCB0aGlzLnRpbWV6b25lKCkpLnZhbHVlT2YoKTtcblxuICAgIC8vIEF1dG8tYWRqdXN0IGVuZCB0aW1lIGlmIHN0YXJ0IHRpbWUgPiBlbmQgdGltZSAoZm9yIGJvdGggc2FtZSBhbmQgZGlmZmVyZW50IGRhdGVzKVxuICAgIC8vIFRoaXMgZW5zdXJlcyBlbmQgdGltZSBpcyBhbHdheXMgYWZ0ZXIgc3RhcnQgdGltZVxuICAgIGlmIChzdGFydFRpbWVFcG9jaCA+IGVuZFRpbWVFcG9jaCkge1xuICAgICAgLy8gQ2FsY3VsYXRlIG5ldyBlbmQgdGltZSBhcyBzdGFydCB0aW1lICsgaW50ZXJ2YWxcbiAgICAgIGxldCBuZXdFbmRUaW1lRXBvY2ggPSBkYXlqcy50eihzdGFydFRpbWVFcG9jaCwgdGhpcy50aW1lem9uZSgpKS5hZGQodGhpcy5pbnRlcnZhbCgpLCBcIm1cIikudmFsdWVPZigpO1xuICAgICAgXG4gICAgICAvLyBJZiBzYW1lIGRhdGUsIGNoZWNrIGlmIHRoZSBuZXcgZW5kIHRpbWUgd291bGQgZ28gYmV5b25kIGVuZCBvZiBkYXlcbiAgICAgIGlmICh0aGlzLmdldFN0YXJ0RGF0ZSgpID09PSB0aGlzLmdldEVuZERhdGUoKSkge1xuICAgICAgICBjb25zdCBlbmRPZkRheSA9IGRheWpzLnR6KHRoaXMuc3RhcnREYXRlRXBvY2goKSwgdGhpcy50aW1lem9uZSgpKS5lbmRPZihcImRcIikudmFsdWVPZigpO1xuICAgICAgICBpZiAobmV3RW5kVGltZUVwb2NoID4gZW5kT2ZEYXkpIHtcbiAgICAgICAgICAvLyBTZXQgZW5kIHRpbWUgdG8gMTE6NTkgUE0gKGVuZCBvZiBkYXkpIHdoZW4gc3RhcnQgdGltZSBpcyBsYXN0IGludGVydmFsXG4gICAgICAgICAgbmV3RW5kVGltZUVwb2NoID0gZW5kT2ZEYXk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIFxuICAgICAgLy8gVXBkYXRlIHRoZSBlbmQgdGltZSBzaWduYWxcbiAgICAgIHRoaXMuZW5kVGltZS5zZXQoe1xuICAgICAgICB2YWxpZDogdHJ1ZSxcbiAgICAgICAgdGltZTogZGF5anMudHoobmV3RW5kVGltZUVwb2NoLCB0aGlzLnRpbWV6b25lKCkpLmZvcm1hdCh0aGlzLmdldFRpbWVGb3JtYXQoKSksXG4gICAgICAgIGVwb2NoOiBuZXdFbmRUaW1lRXBvY2hcbiAgICAgIH0pO1xuICAgICAgXG4gICAgICAvLyBVcGRhdGUgdGhlIGZpcnN0SW50ZXJ2YWxzIHRvIHJlZmxlY3QgdGhlIG5ldyBlbmQgdGltZVxuICAgICAgdGhpcy5fZmlyc3RJbnRlcnZhbHMuc2V0KHsgXG4gICAgICAgIHN0YXJ0OiB0aGlzLl9maXJzdEludGVydmFscygpLnN0YXJ0LCBcbiAgICAgICAgZW5kOiBuZXdFbmRUaW1lRXBvY2ggXG4gICAgICB9KTtcbiAgICAgIFxuICAgICAgLy8gVHJpZ2dlciBjaGFuZ2UgdG8gZm9yY2UgZW5kIHRpbWVwaWNrZXIgdG8gdXBkYXRlIGl0cyBkaXNwbGF5IHdpdGggdGhlIG5ldyBlbmQgdGltZVxuICAgICAgLy8gVGhpcyBpcyBuZWNlc3Nhcnkgd2hlbiB3ZSByZXNldCB0aGUgZW5kIHRpbWUgZHVlIHRvIGNvbmZsaWN0XG4gICAgICB0aGlzLnRyaWdnZXJDaGFuZ2UudXBkYXRlKHZhbHVlID0+ICF2YWx1ZSk7XG4gICAgfVxuXG4gICAgLy8gVXBkYXRlIGVuZCB0aW1lcGlja2VyJ3MgZmlyc3RJbnRlcnZhbCB3aGVuIGJvdGggdGltZXBpY2tlcnMgYXJlIG9uIHRoZSBzYW1lIGRheVxuICAgIC8vIEFMV0FZUyB1cGRhdGUgdG8gZW5zdXJlIGRyb3Bkb3duIHN0YXJ0cyBmcm9tIG5leHQgaW50ZXJ2YWwgYWZ0ZXIgc3RhcnQgdGltZVxuICAgIC8vIFRoaXMgZml4ZXMgdGhlIGJ1ZyB3aGVyZSBzZWxlY3RpbmcgYW4gZWFybGllciBzdGFydCB0aW1lIGRvZXNuJ3QgdXBkYXRlIGVuZCBwaWNrZXIgaW50ZXJ2YWxzXG4gICAgLy8gTk9URTogV2Ugb25seSB1cGRhdGUgZmlyc3RJbnRlcnZhbCAoZHJvcGRvd24gb3B0aW9ucyksIE5PVCB0aGUgc2VsZWN0ZWQgZW5kIHRpbWUgdmFsdWVcbiAgICAvLyBUaGUgdGltZXBpY2tlciBjb21wb25lbnQgbm93IGhhbmRsZXMgZmlyc3RJbnRlcnZhbCBjaGFuZ2VzIHNlcGFyYXRlbHkgYW5kIHdvbid0IHJlc2V0IGNob3NlblRpbWVcbiAgICBpZiAodGhpcy5nZXRTdGFydERhdGUoKSA9PT0gdGhpcy5nZXRFbmREYXRlKCkpIHtcbiAgICAgIC8vIE9ubHkgdXBkYXRlIGZpcnN0SW50ZXJ2YWwgaWYgdGhlcmUncyBubyBjb25mbGljdCAoc3RhcnQgPCBlbmQpXG4gICAgICAvLyBJZiB0aGVyZSdzIGEgY29uZmxpY3QsIGl0J3MgYWxyZWFkeSBoYW5kbGVkIGFib3ZlIGFuZCBmaXJzdEludGVydmFsIHdhcyB1cGRhdGVkIHRoZXJlXG4gICAgICBpZiAoc3RhcnRUaW1lRXBvY2ggPCBlbmRUaW1lRXBvY2gpIHtcbiAgICAgICAgLy8gQ2FsY3VsYXRlIHRoZSBuZXh0IGludGVydmFsIGFmdGVyIHRoZSBzZWxlY3RlZCBzdGFydCB0aW1lXG4gICAgICAgIGxldCBuZXh0SW50ZXJ2YWxBZnRlclN0YXJ0ID0gZGF5anMudHooc3RhcnRUaW1lRXBvY2gsIHRoaXMudGltZXpvbmUoKSkuYWRkKHRoaXMuaW50ZXJ2YWwoKSwgXCJtXCIpLnZhbHVlT2YoKTtcbiAgICAgICAgXG4gICAgICAgIC8vIElmIG5leHQgaW50ZXJ2YWwgd291bGQgZ28gYmV5b25kIGVuZCBvZiBkYXksIHVzZSBlbmQgb2YgZGF5IGluc3RlYWRcbiAgICAgICAgY29uc3QgZW5kT2ZEYXkgPSBkYXlqcy50eih0aGlzLnN0YXJ0RGF0ZUVwb2NoKCksIHRoaXMudGltZXpvbmUoKSkuZW5kT2YoXCJkXCIpLnZhbHVlT2YoKTtcbiAgICAgICAgaWYgKG5leHRJbnRlcnZhbEFmdGVyU3RhcnQgPiBlbmRPZkRheSkge1xuICAgICAgICAgIG5leHRJbnRlcnZhbEFmdGVyU3RhcnQgPSBlbmRPZkRheTtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgLy8gVXBkYXRlIHRoZSBmaXJzdEludGVydmFscyB0byBtYWtlIGVuZCB0aW1lcGlja2VyIGRyb3Bkb3duIHN0YXJ0IGZyb20gbmV4dCBpbnRlcnZhbCBhZnRlciBzdGFydCB0aW1lXG4gICAgICAgIC8vIFRoaXMgZW5zdXJlcyB1c2VycyBjYW4gYWx3YXlzIHNlbGVjdCB0aW1lcyBiZXR3ZWVuIHRoZSBuZXcgc3RhcnQgdGltZSBhbmQgdGhlIGN1cnJlbnQgZW5kIHRpbWVcbiAgICAgICAgLy8gVGhlIHRpbWVwaWNrZXIgY29tcG9uZW50IHdpbGwgdXBkYXRlIHRoZSBkcm9wZG93biBidXQgcHJlc2VydmUgdGhlIHNlbGVjdGVkIGVuZCB0aW1lIHZhbHVlXG4gICAgICAgIHRoaXMuX2ZpcnN0SW50ZXJ2YWxzLnNldCh7IFxuICAgICAgICAgIHN0YXJ0OiB0aGlzLl9maXJzdEludGVydmFscygpLnN0YXJ0LCBcbiAgICAgICAgICBlbmQ6IG5leHRJbnRlcnZhbEFmdGVyU3RhcnQgXG4gICAgICAgIH0pO1xuICAgICAgICAvLyBOT1RFOiBXZSBkb24ndCBjYWxsIHRyaWdnZXJDaGFuZ2UgaGVyZSBiZWNhdXNlIHdlIG9ubHkgd2FudCB0byB1cGRhdGUgdGhlIGRyb3Bkb3duLFxuICAgICAgICAvLyBub3QgcmVzZXQgdGhlIHNlbGVjdGVkIGVuZCB0aW1lLiBUaGUgdGltZXBpY2tlcidzIHNlcGFyYXRlIGVmZmVjdCBmb3IgZmlyc3RJbnRlcnZhbFxuICAgICAgICAvLyB3aWxsIGhhbmRsZSB1cGRhdGluZyB0aGUgZHJvcGRvd24gd2l0aG91dCByZXNldHRpbmcgY2hvc2VuVGltZS5cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBBbHdheXMgdmFsaWRhdGUgYW5kIGVtaXQgdGhlIHRpbWUgcmFuZ2VcbiAgICBjb25zdCB2YWxpZGl0eSA9XG4gICAgICB0aGlzLmNoZWNrVGltZVZhbGlkaXR5KHRoaXMuc3RhcnRUaW1lKCkhLnRpbWUudHJpbSgpLCB0aGlzLnN0YXJ0RGF0ZUVwb2NoKCkpICYmXG4gICAgICB0aGlzLmNoZWNrVGltZVZhbGlkaXR5KHRoaXMuZW5kVGltZSgpIS50aW1lLnRyaW0oKSwgdGhpcy5lbmREYXRlRXBvY2goKSk7XG5cbiAgICB0aGlzLnJhbmdlVmFsaWRhdGlvbih2YWxpZGl0eSk7XG4gICAgdGhpcy5lbWl0VGltZVJhbmdlKHtcbiAgICAgIHZhbGlkOiB2YWxpZGl0eSAmJiB0aGlzLnJhbmdlVmFsaWRpdHkoKSxcbiAgICAgIHN0YXJ0VGltZTogdGhpcy5zdGFydFRpbWUoKSEudGltZSxcbiAgICAgIGVuZFRpbWU6IHRoaXMuZW5kVGltZSgpIS50aW1lLFxuICAgICAgc3RhcnRFcG9jaDogZGF5anMudHooYCR7dGhpcy5nZXRTdGFydERhdGUoKX0gJHt0aGlzLnN0YXJ0VGltZSgpIS50aW1lfWAsIGBERC1NTS1ZWVlZICR7dGhpcy5nZXRUaW1lRm9ybWF0KCl9YCwgdGhpcy50aW1lem9uZSgpKS52YWx1ZU9mKCksXG4gICAgICBlbmRFcG9jaDogZGF5anMudHooYCR7dGhpcy5nZXRFbmREYXRlKCl9ICR7dGhpcy5lbmRUaW1lKCkhLnRpbWV9YCwgYERELU1NLVlZWVkgJHt0aGlzLmdldFRpbWVGb3JtYXQoKX1gLCB0aGlzLnRpbWV6b25lKCkpLnZhbHVlT2YoKVxuICAgIH0pO1xuICB9XG5cbiAgZW5kUGlja2VySGFuZGxlcih0aW1lOiBJVGltZSk6IHZvaWQge1xuICAgIHRoaXMuZW5kVGltZS5zZXQodGltZSk7XG4gICAgXG4gICAgLy8gRG9uJ3QgZW1pdCBkdXJpbmcgaW5pdGlhbGl6YXRpb25cbiAgICBpZiAodGhpcy5faXNJbml0aWFsaXppbmcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB2YWxpZGl0eSA9XG4gICAgICB0aGlzLmNoZWNrVGltZVZhbGlkaXR5KHRoaXMuc3RhcnRUaW1lKCkhLnRpbWUudHJpbSgpLCB0aGlzLnN0YXJ0RGF0ZUVwb2NoKCkpICYmIFxuICAgICAgdGhpcy5jaGVja1RpbWVWYWxpZGl0eSh0aGlzLmVuZFRpbWUoKSEudGltZS50cmltKCksIHRoaXMuZW5kRGF0ZUVwb2NoKCkpO1xuXG4gICAgdGhpcy5yYW5nZVZhbGlkYXRpb24odmFsaWRpdHkpO1xuICAgIHRoaXMuZW1pdFRpbWVSYW5nZSh7XG4gICAgICB2YWxpZDogdmFsaWRpdHkgJiYgdGhpcy5yYW5nZVZhbGlkaXR5KCksXG4gICAgICBzdGFydFRpbWU6IHRoaXMuc3RhcnRUaW1lKCkhLnRpbWUsXG4gICAgICBlbmRUaW1lOiB0aGlzLmVuZFRpbWUoKSEudGltZSxcbiAgICAgIHN0YXJ0RXBvY2g6IGRheWpzLnR6KGAke3RoaXMuZ2V0U3RhcnREYXRlKCl9ICR7dGhpcy5zdGFydFRpbWUoKSEudGltZX1gLCBgREQtTU0tWVlZWSAke3RoaXMuZ2V0VGltZUZvcm1hdCgpfWAsIHRoaXMudGltZXpvbmUoKSkudmFsdWVPZigpLFxuICAgICAgZW5kRXBvY2g6IGRheWpzLnR6KGAke3RoaXMuZ2V0RW5kRGF0ZSgpfSAke3RoaXMuZW5kVGltZSgpIS50aW1lfWAsIGBERC1NTS1ZWVlZICR7dGhpcy5nZXRUaW1lRm9ybWF0KCl9YCwgdGhpcy50aW1lem9uZSgpKS52YWx1ZU9mKClcbiAgICB9KTtcbiAgfVxuXG4gIGNoZWNrVGltZVZhbGlkaXR5KHRpbWU6IHN0cmluZywgZGF0ZTogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgY29uc3QgUkUxMiA9IC9eKChbMF1bMS05XXwxWzAtMl0pOihbMC01XVswLTldKSggKT8oYW18cG18QU18UE0pKSQvaTtcbiAgICBjb25zdCBSRTI0ID0gL14oWzAxXVswLTldfDJbMC0zXSk6WzAtNV1bMC05XSQvO1xuICAgIGNvbnN0IFJFID0gdGhpcy5jbG9ja0Zvcm1hdCgpID09PSAxMiA/IFJFMTIgOiBSRTI0O1xuXG4gICAgY29uc3QgdGltZWRheWpzID0gZGF5anMudHooYCR7ZGF5anMudHooZGF0ZSwgdGhpcy50aW1lem9uZSgpKS5mb3JtYXQoXCJERC1NTS1ZWVlZXCIpfSAke3RpbWV9YCwgYCdERC1NTS1ZWVlZJyAke3RoaXMuZ2V0VGltZUZvcm1hdCgpfWAsIHRoaXMudGltZXpvbmUoKSk7XG4gICAgbGV0IGZsYWc6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIGlmICgodGhpcy5naXZlblN0YXJ0VGltZSgpICYmIHRoaXMuZ2l2ZW5FbmRUaW1lKCkpIHx8ICh0aGlzLmdldFN0YXJ0RGF0ZSgpICE9PSB0aGlzLmdldEVuZERhdGUoKSAmJiB0aGlzLmdldFN0YXJ0RGF0ZSgpICE9PSB0aGlzLmdldEN1cnJEYXRlKCkpKSB7XG4gICAgICBmbGFnID0gdGltZS5tYXRjaChSRSkgPyB0cnVlIDogZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZsYWcgPSB0aW1lLm1hdGNoKFJFKSAmJiB0aW1lZGF5anMuZGlmZihkYXlqcy50eihkYXlqcygpLCB0aGlzLnRpbWV6b25lKCkpLCBcIm1cIikgPj0gMCA/IHRydWUgOiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIGZsYWc7XG4gIH1cblxuICByYW5nZVZhbGlkYXRpb24odmFsaWRpdHk6IGJvb2xlYW4pIHtcbiAgICBpZiAodmFsaWRpdHkgJiYgdGhpcy5nZXRTdGFydERhdGUoKSA9PT0gdGhpcy5nZXRFbmREYXRlKCkpIHtcbiAgICAgIGNvbnN0IHN0YXJ0ZGF5anMgPSBkYXlqcy50eih0aGlzLnN0YXJ0VGltZSgpIS50aW1lLCB0aGlzLmdldFRpbWVGb3JtYXQoKSwgdGhpcy50aW1lem9uZSgpKTtcbiAgICAgIGNvbnN0IGVuZGRheWpzID0gZGF5anMudHoodGhpcy5lbmRUaW1lKCkhLnRpbWUsIHRoaXMuZ2V0VGltZUZvcm1hdCgpLCB0aGlzLnRpbWV6b25lKCkpO1xuICAgICAgdGhpcy5yYW5nZVZhbGlkaXR5LnNldChlbmRkYXlqcy5kaWZmKHN0YXJ0ZGF5anMsIFwibVwiKSA+PSAxKTtcbiAgICB9XG4gIH1cbn1cblxuXG4iLCI8ZGl2IGNsYXNzPVwicmFuZ2VwaWNrZXItY29udGFpbmVyXCIgW25nU3R5bGVdPVwieydmbGV4RGlyZWN0aW9uJzogZGlyZWN0aW9uKCksICdnYXAnOiBnYXAoKX1cIj5cbiAgPG1pcy10aW1lcGlja2VyXG4gICAgW2Nsb2NrRm9ybWF0XT1cImNsb2NrRm9ybWF0KClcIlxuICAgIFtpbnRlcnZhbF09XCJpbnRlcnZhbCgpXCJcbiAgICBbZGF0ZUFzRXBvY2hdPVwic3RhcnREYXRlRXBvY2goKVwiXG4gICAgW2ZpcnN0SW50ZXJ2YWxdPVwiZmlyc3RJbnRlcnZhbHMoKS5zdGFydFwiXG4gICAgKHRpbWVFbWl0dGVyKT1cInN0YXJ0UGlja2VySGFuZGxlcigkZXZlbnQpXCJcbiAgICBbdGltZXpvbmVdPVwidGltZXpvbmUoKVwiXG4gICAgW2hlaWdodF09XCJoZWlnaHQoKVwiXG4gICAgW2lucHV0V2lkdGhdPVwiaW5wdXRXaWR0aCgpXCJcbiAgICBbZHJvcGRvd25XaWR0aF09XCJkcm9wZG93bldpZHRoKClcIlxuICAgIFtzaG93VG9vbHRpcF09XCJzaG93VG9vbHRpcCgpXCJcbiAgICBbZ2l2ZW5UaW1lXT1cImdpdmVuU3RhcnRUaW1lKClcIlxuICAgIFtkaXNhYmxlXT1cImRpc2FibGVTdGFydFRpbWUoKVwiXG4gICAgW2Rpc2FibGVVc2VySW5wdXRdPVwiZGlzYWJsZVVzZXJJbnB1dCgpXCJcbiAgICBbZm9udFNpemVdPVwiZm9udFNpemUoKVwiXG4gID48L21pcy10aW1lcGlja2VyPlxuICA8cCAqbmdJZj1cImRpcmVjdGlvbigpID09PSAncm93J1wiPi08L3A+XG4gIDxtaXMtdGltZXBpY2tlclxuICAgIFtjbG9ja0Zvcm1hdF09XCJjbG9ja0Zvcm1hdCgpXCJcbiAgICBbaW50ZXJ2YWxdPVwiaW50ZXJ2YWwoKVwiXG4gICAgW2RhdGVBc0Vwb2NoXT1cImVuZERhdGVFcG9jaCgpXCJcbiAgICBbZmlyc3RJbnRlcnZhbF09XCJmaXJzdEludGVydmFscygpLmVuZFwiXG4gICAgKHRpbWVFbWl0dGVyKT1cImVuZFBpY2tlckhhbmRsZXIoJGV2ZW50KVwiXG4gICAgW3JhbmdlVmFsaWRpdHldPVwicmFuZ2VWYWxpZGl0eSgpXCJcbiAgICBbdGltZXpvbmVdPVwidGltZXpvbmUoKVwiXG4gICAgW2hlaWdodF09XCJoZWlnaHQoKVwiXG4gICAgW2lucHV0V2lkdGhdPVwiaW5wdXRXaWR0aCgpXCJcbiAgICBbZHJvcGRvd25XaWR0aF09XCJkcm9wZG93bldpZHRoKClcIlxuICAgIFtzaG93VG9vbHRpcF09XCJzaG93VG9vbHRpcCgpXCJcbiAgICBbZ2l2ZW5UaW1lXT1cImdpdmVuRW5kVGltZSgpXCJcbiAgICBbdHJpZ2dlckNoYW5nZV09XCJ0cmlnZ2VyQ2hhbmdlKClcIlxuICAgIFtkaXNhYmxlXT1cImRpc2FibGVFbmRUaW1lKClcIlxuICAgIFtkaXNhYmxlVXNlcklucHV0XT1cImRpc2FibGVVc2VySW5wdXQoKVwiXG4gICAgW2ZvbnRTaXplXT1cImZvbnRTaXplKClcIlxuICA+PC9taXMtdGltZXBpY2tlcj5cbjwvZGl2PlxuXG4iXX0=
|
|
345
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXJhbmdlcGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL3RpbWVyYW5nZXBpY2tlci90aW1lcmFuZ2VwaWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvbWlzLWNvbXBvbmVudHMvdGltZXJhbmdlcGlja2VyL3RpbWVyYW5nZXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRXRHLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLFFBQVEsTUFBTSx1QkFBdUIsQ0FBQztBQUM3QyxPQUFPLEdBQUcsTUFBTSxrQkFBa0IsQ0FBQzs7Ozs7O0lDYWpDLHlCQUFpQztJQUFBLGlCQUFDO0lBQUEsaUJBQUk7O0FEWHhDLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDbEIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztBQU92QixNQUFNLE9BQU8sd0JBQXdCO0lBb0NuQyw2RUFBNkU7SUFDckUsYUFBYTtRQUNuQixPQUFPLElBQUksQ0FBQyxXQUFXLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO0lBQ3pELENBQUM7SUFFTyxZQUFZO1FBQ2xCLE9BQU8sS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQy9FLENBQUM7SUFFTyxVQUFVO1FBQ2hCLE9BQU8sS0FBSyxDQUFDLEVB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QSxBQURBLEFBREEsQUFEQSxBQURBLEFBREEsQUFEQSxBQUZBLEFBREEsQUFEQSxBQURBLCtDQUE2Qiw0QkFDTixxQ0FDUyw2Q0FDUSw0QkFFakIsd0JBQ0osZ0NBQ1Esc0NBQ00sa0NBQ0osbUNBQ0MsbUNBQ0EsNENBQ1MsNEJBQ2hCO1lBRXJCLGNBQTJCO1lBQTNCLGdEQUEyQjtZQUU3QixjQUE2QjtZQWU3QixBQURBLEFBREEsQUFEQSxBQURBLEFBREEsQUFEQSxBQURBLEFBREEsQUFEQSxBQURBLEFBRkEsQUFEQSxBQURBLEFBREEsK0NBQTZCLDRCQUNOLG1DQUNPLDJDQUNRLHNDQUVMLDRCQUNWLHdCQUNKLGdDQUNRLHNDQUNNLGtDQUNKLGlDQUNELHNDQUNLLGlDQUNMLDRDQUNXLDRCQUNoQjs7O2lGRHBCZCx3QkFBd0I7Y0FMcEMsU0FBUzsyQkFDRSxxQkFBcUI7O2tGQUlwQix3QkFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGlucHV0LCBvdXRwdXQsIHNpZ25hbCwgY29tcHV0ZWQsIGVmZmVjdCwgdW50cmFja2VkLCBPbkluaXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgSVRpbWVSYW5nZSwgSVRpbWUsIFREaXJlY3Rpb24gfSBmcm9tIFwiLi90aW1lcmFuZ2UubmFtZXNwYWNlXCI7XG5pbXBvcnQgZGF5anMgZnJvbSAnZGF5anMnO1xuaW1wb3J0IHRpbWV6b25lIGZyb20gJ2RheWpzL3BsdWdpbi90aW1lem9uZSc7XG5pbXBvcnQgdXRjIGZyb20gJ2RheWpzL3BsdWdpbi91dGMnO1xuXG5kYXlqcy5leHRlbmQodXRjKTtcbmRheWpzLmV4dGVuZCh0aW1lem9uZSk7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJtaXMtdGltZXJhbmdlcGlja2VyXCIsXG4gIHRlbXBsYXRlVXJsOiBcIi4vdGltZXJhbmdlcGlja2VyLmNvbXBvbmVudC5odG1sXCIsIC8vIENvcnJlY3RlZCBmaWxlIG5hbWVcbiAgc3R5bGVVcmxzOiBbXCIuL3RpbWVyYW5nZXBpY2tlci5jb21wb25lbnQuc2Nzc1wiXVxufSlcbmV4cG9ydCBjbGFzcyBUaW1lUmFuZ2VQaWNrZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAvLyAtLS0gSW5wdXQgU2lnbmFscyAocmVhZC1vbmx5KSAtLS1cbiAgaW5wdXRXaWR0aCA9IGlucHV0PHN0cmluZz4oXCIxMDBweFwiKTtcbiAgZHJvcGRvd25XaWR0aCA9IGlucHV0PHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgaGVpZ2h0ID0gaW5wdXQ8c3RyaW5nPihcIjQ2cHhcIik7XG4gIHRpbWV6b25lID0gaW5wdXQ8c3RyaW5nPihcIkFzaWEvS29sa2F0YVwiKTtcbiAgc3RhcnREYXRlRXBvY2ggPSBpbnB1dDxudW1iZXI+KGRheWpzLnR6KGRheWpzKCksIHRoaXMudGltZXpvbmUoKSkudmFsdWVPZigpKTtcbiAgZW5kRGF0ZUVwb2NoID0gaW5wdXQ8bnVtYmVyPihkYXlqcy50eihkYXlqcygpLCB0aGlzLnRpbWV6b25lKCkpLnZhbHVlT2YoKSk7XG4gIGdpdmVuU3RhcnRUaW1lID0gaW5wdXQ8bnVtYmVyIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBnaXZlbkVuZFRpbWUgPSBpbnB1dDxudW1iZXIgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIGNsb2NrRm9ybWF0ID0gaW5wdXQ8bnVtYmVyPigxMik7XG4gIGludGVydmFsID0gaW5wdXQ8bnVtYmVyPigxNSk7XG4gIHNob3dUb29sdGlwID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XG4gIGRpcmVjdGlvbiA9IGlucHV0PFREaXJlY3Rpb24+KCdyb3cnKTtcbiAgZ2FwID0gaW5wdXQ8c3RyaW5nPignMXJlbScpO1xuICBkaXNhYmxlU3RhcnRUaW1lID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICBkaXNhYmxlRW5kVGltZSA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgZm9udFNpemUgPSBpbnB1dDxzdHJpbmc+KFwiMTRweFwiKTtcbiAgZGlzYWJsZVVzZXJJbnB1dCA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcblxuICAvLyAtLS0gT3V0cHV0IFNpZ25hbCAtLS1cbiAgdGltZVJhbmdlRW1pdHRlciA9IG91dHB1dDxJVGltZVJhbmdlPigpO1xuXG4gIC8vIC0tLSBJbnRlcm5hbCBXcml0YWJsZSBTaWduYWxzIC0tLVxuICBzdGFydFRpbWUgPSBzaWduYWw8SVRpbWUgfCBudWxsPihudWxsKTtcbiAgZW5kVGltZSA9IHNpZ25hbDxJVGltZSB8IG51bGw+KG51bGwpO1xuICByYW5nZVZhbGlkaXR5ID0gc2lnbmFsPGJvb2xlYW4+KHRydWUpO1xuICB0cmlnZ2VyQ2hhbmdlID0gc2lnbmFsPGJvb2xlYW4+KHRydWUpO1xuICBwcml2YXRlIF9maXJzdEludGVydmFscyA9IHNpZ25hbDx7IHN0YXJ0OiBudW1iZXIsIGVuZDogbnVtYmVyIH0+KHsgc3RhcnQ6IDAsIGVuZDogMCB9KTtcbiAgcHJpdmF0ZSBfaXNJbml0aWFsaXppbmcgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfcHJldmlvdXNTdGFydERhdGVFcG9jaDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgX3ByZXZpb3VzRW5kRGF0ZUVwb2NoOiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAvLyAtLS0gQ29tcHV0ZWQgU2lnbmFscyAoRGVyaXZlZCBTdGF0ZSkgLS0tXG4gIGZpcnN0SW50ZXJ2YWxzID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5fZmlyc3RJbnRlcnZhbHMoKSk7IC8vIEEgcHVibGljIGNvbXB1dGVkIHNpZ25hbCB0byBhY2Nlc3MgdGhlIHdyaXRhYmxlIG9uZVxuICBcbiAgLy8gSGVscGVyIG1ldGhvZHMgaW5zdGVhZCBvZiBjb21wdXRlZCBzaWduYWxzIHRvIGF2b2lkIHNpZ25hbCB3cml0ZSBjb25mbGljdHNcbiAgcHJpdmF0ZSBnZXRUaW1lRm9ybWF0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuY2xvY2tGb3JtYXQoKSA9PT0gMTIgPyBcImhoOm1tIGFcIiA6IFwiSEg6bW1cIjtcbiAgfVxuICBcbiAgcHJpdmF0ZSBnZXRTdGFydERhdGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gZGF5anMudHoodGhpcy5zdGFydERhdGVFcG9jaCgpLCB0aGlzLnRpbWV6b25lKCkpLmZvcm1hdChcIkRELU1NLVlZWVlcIik7XG4gIH1cbiAgXG4gIHByaXZhdGUgZ2V0RW5kRGF0ZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBkYXlqcy50eih0aGlzLmVuZERhdGVFcG9jaCgpLCB0aGlzLnRpbWV6b25lKCkpLmZvcm1hdChcIkRELU1NLVlZWVlcIik7XG4gIH1cbiAgXG4gIHByaXZhdGUgZ2V0Q3VyckRhdGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gZGF5anMudHooZGF5anMoKSwgdGhpcy50aW1lem9uZSgpKS5mb3JtYXQoXCJERC1NTS1ZWVlZXCIpO1xuICB9XG4gIFxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICAvLyBFZmZlY3QgdG8gd2F0Y2ggZm9yIGNoYW5nZXMgaW4gc3RhcnREYXRlRXBvY2ggYW5kIGVuZERhdGVFcG9jaFxuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICAvLyBPTkxZIHRyYWNrIHRoZXNlIHR3byBzaWduYWxzIC0gdGhpcyBpcyB0aGUgb25seSBsaW5lIHRoYXQgY3JlYXRlcyBkZXBlbmRlbmNpZXNcbiAgICAgIGNvbnN0IGN1cnJlbnRTdGFydERhdGUgPSB0aGlzLnN0YXJ0RGF0ZUVwb2NoKCk7XG4gICAgICBjb25zdCBjdXJyZW50RW5kRGF0ZSA9IHRoaXMuZW5kRGF0ZUVwb2NoKCk7XG4gICAgICBcbiAgICAgIC8vIFVzZSB1bnRyYWNrZWQoKSBmb3IgZXZlcnl0aGluZyBlbHNlIHRvIHByZXZlbnQgaW5maW5pdGUgbG9vcHNcbiAgICAgIHVudHJhY2tlZCgoKSA9PiB7XG4gICAgICAgIC8vIFNraXAgaWYgY29tcG9uZW50IGlzIGluaXRpYWxpemluZ1xuICAgICAgICBpZiAodGhpcy5faXNJbml0aWFsaXppbmcpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIC8vIFNraXAgaWYgY29tcG9uZW50IGhhc24ndCBiZWVuIGluaXRpYWxpemVkIHlldFxuICAgICAgICBpZiAoIXRoaXMuc3RhcnRUaW1lKCkgfHwgIXRoaXMuZW5kVGltZSgpKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICAvLyBTa2lwIGlmIGRhdGVzIGhhdmVuJ3QgYWN0dWFsbHkgY2hhbmdlZCAocHJldmVudHMgaW5pdGlhbCBkb3VibGUtcnVuKVxuICAgICAgICBpZiAodGhpcy5fcHJldmlvdXNTdGFydERhdGVFcG9jaCA9PT0gY3VycmVudFN0YXJ0RGF0ZSAmJiBcbiAgICAgICAgICAgIHRoaXMuX3ByZXZpb3VzRW5kRGF0ZUVwb2NoID09PSBjdXJyZW50RW5kRGF0ZSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgLy8gVXBkYXRlIHByZXZpb3VzIHZhbHVlc1xuICAgICAgICB0aGlzLl9wcmV2aW91c1N0YXJ0RGF0ZUVwb2NoID0gY3VycmVudFN0YXJ0RGF0ZTtcbiAgICAgICAgdGhpcy5fcHJldmlvdXNFbmREYXRlRXBvY2ggPSBjdXJyZW50RW5kRGF0ZTtcbiAgICAgICAgXG4gICAgICAgIC8vIFBSRVNFUlZFIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgdGltZXMgKGRvbid0IHJlc2V0IHRoZW0hKVxuICAgICAgICBjb25zdCBjdXJyZW50U3RhcnRUaW1lU3RyaW5nID0gdGhpcy5zdGFydFRpbWUoKSEudGltZTtcbiAgICAgICAgY29uc3QgY3VycmVudEVuZFRpbWVTdHJpbmcgPSB0aGlzLmVuZFRpbWUoKSEudGltZTtcbiAgICAgICAgXG4gICAgICAgIC8vIENhbGN1bGF0ZSBuZXcgZXBvY2hzIHdpdGggdGhlIG5ldyBkYXRlIGJ1dCBTQU1FIHRpbWVcbiAgICAgICAgY29uc3QgbmV3U3RhcnRFcG9jaCA9IGRheWpzLnR6KGAke3RoaXMuZ2V0U3RhcnREYXRlKCl9ICR7Y3VycmVudFN0YXJ0VGltZVN0cmluZ31gLCBgREQtTU0tWVlZWSAke3RoaXMuZ2V0VGltZUZvcm1hdCgpfWAsIHRoaXMudGltZXpvbmUoKSkudmFsdWVPZigpO1xuICAgICAgICBjb25zdCBuZXdFbmRFcG9jaCA9IGRheWpzLnR6KGAke3RoaXMuZ2V0RW5kRGF0ZSgpfSAke2N1cnJlbnRFbmRUaW1lU3RyaW5nfWAsIGBERC1NTS1ZWVlZICR7dGhpcy5nZXRUaW1lRm9ybWF0KCl9YCwgdGhpcy50aW1lem9uZSgpKS52YWx1ZU9mKCk7XG4gICAgICAgIFxuICAgICAgICAvLyBVcGRhdGUgdGhlIHRpbWUgc2lnbmFscyB3aXRoIHByZXNlcnZlZCB0aW1lcyBidXQgbmV3IGVwb2Noc1xuICAgICAgICB0aGlzLnN0YXJ0VGltZS5zZXQoe1xuICAgICAgICAgIHZhbGlkOiB0cnVlLFxuICAgICAgICAgIHRpbWU6IGN1cnJlbnRTdGFydFRpbWVTdHJpbmcsXG4gICAgICAgICAgZXBvY2g6IG5ld1N0YXJ0RXBvY2hcbiAgICAgICAgfSk7XG4gICAgICAgIFxuICAgICAgICB0aGlzLmVuZFRpbWUuc2V0KHtcbiAgICAgICAgICB2YWxpZDogdHJ1ZSxcbiAgICAgICAgICB0aW1lOiBjdXJyZW50RW5kVGltZVN0cmluZyxcbiAgICAgICAgICBlcG9jaDogbmV3RW5kRXBvY2hcbiAgICAgICAgfSk7XG4gICAgICAgIFxuICAgICAgICAvLyBVcGRhdGUgZmlyc3RJbnRlcnZhbHMgZm9yIHRoZSBkcm9wZG93biBvcHRpb25zIGJhc2VkIG9uIG5ldyBkYXRlXG4gICAgICAgIHRoaXMuc2V0Rmlyc3RJbnRlcnZhbHMoKTtcbiAgICAgICAgXG4gICAgICAgIC8vIEVtaXQgdGhlIHVwZGF0ZWQgdGltZSByYW5nZSB3aXRoIHByZXNlcnZlZCB0aW1lcyBidXQgbmV3IGRhdGVcbiAgICAgICAgY29uc3QgdmFsaWRpdHkgPVxuICAgICAgICAgIHRoaXMuY2hlY2tUaW1lVmFsaWRpdHkoY3VycmVudFN0YXJ0VGltZVN0cmluZy50cmltKCksIHRoaXMuc3RhcnREYXRlRXBvY2goKSkgJiZcbiAgICAgICAgICB0aGlzLmNoZWNrVGltZVZhbGlkaXR5KGN1cnJlbnRFbmRUaW1lU3RyaW5nLnRyaW0oKSwgdGhpcy5lbmREYXRlRXBvY2goKSk7XG5cbiAgICAgICAgdGhpcy5yYW5nZVZhbGlkYXRpb24odmFsaWRpdHkpO1xuICAgICAgICB0aGlzLmVtaXRUaW1lUmFuZ2Uoe1xuICAgICAgICAgIHZhbGlkOiB2YWxpZGl0eSAmJiB0aGlzLnJhbmdlVmFsaWRpdHkoKSxcbiAgICAgICAgICBzdGFydFRpbWU6IGN1cnJlbnRTdGFydFRpbWVTdHJpbmcsXG4gICAgICAgICAgZW5kVGltZTogY3VycmVudEVuZFRpbWVTdHJpbmcsXG4gICAgICAgICAgc3RhcnRFcG9jaDogbmV3U3RhcnRFcG9jaCxcbiAgICAgICAgICBlbmRFcG9jaDogbmV3RW5kRXBvY2hcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9LCB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH0pO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgLy8gSW5pdGlhbGl6ZSB0aGUgY29tcG9uZW50IG9uY2VcbiAgICB0aGlzLmluaXRpYWxpemVDb21wb25lbnQoKTtcbiAgICBcbiAgICAvLyBTdG9yZSBpbml0aWFsIHZhbHVlcyB0byBwcmV2ZW50IGVmZmVjdCBmcm9tIHJ1bm5pbmcgb24gZmlyc3QgbG9hZFxuICAgIHRoaXMuX3ByZXZpb3VzU3RhcnREYXRlRXBvY2ggPSB0aGlzLnN0YXJ0RGF0ZUVwb2NoKCk7XG4gICAgdGhpcy5fcHJldmlvdXNFbmREYXRlRXBvY2ggPSB0aGlzLmVuZERhdGVFcG9jaCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplQ29tcG9uZW50KCk6IHZvaWQge1xuICAgIHRoaXMuX2lzSW5pdGlhbGl6aW5nID0gdHJ1ZTtcbiAgICBcbiAgICB0aGlzLnNldEZpcnN0SW50ZXJ2YWxzKCk7XG4gICAgY29uc3QgZmlyc3RJbnRlcnZhbHMgPSB0aGlzLl9maXJzdEludGVydmFscygpO1xuXG4gICAgdGhpcy5zdGFydFRpbWUuc2V0KHtcbiAgICAgIHZhbGlkOiB0cnVlLFxuICAgICAgdGltZTogZGF5anMudHooZmlyc3RJbnRlcnZhbHMuc3RhcnQsIHRoaXMudGltZXpvbmUoKSkuZm9ybWF0KHRoaXMuZ2V0VGltZUZvcm1hdCgpKSxcbiAgICAgIGVwb2NoOiBkYXlqcy50eihmaXJzdEludGVydmFscy5zdGFydCwgdGhpcy50aW1lem9uZSgpKS52YWx1ZU9mKClcbiAgICB9KTtcbiAgICBcbiAgICAvLyBFbnN1cmUgZW5kIHRpbWUgaXMgYWx3YXlzIGFmdGVyIHN0YXJ0IHRpbWVcbiAgICBsZXQgZW5kVGltZUVwb2NoID0gZmlyc3RJbnRlcnZhbHMuZW5kO1xuICAgIGNvbnN0IHN0YXJ0VGltZUVwb2NoID0gZmlyc3RJbnRlcnZhbHMuc3RhcnQ7XG4gICAgXG4gICAgLy8gSWYgZW5kIHRpbWUgaXMgc2FtZSBvciBiZWZvcmUgc3RhcnQgdGltZSwgYWRkIG9uZSBpbnRlcnZhbCB0byBlbmQgdGltZVxuICAgIGlmIChlbmRUaW1lRXBvY2ggPD0gc3RhcnRUaW1lRXBvY2gpIHtcbiAgICAgIGVuZFRpbWVFcG9jaCA9IGRheWpzLnR6KHN0YXJ0VGltZUVwb2NoLCB0aGlzLnRpbWV6b25lKCkpLmFkZCh0aGlzLmludGVydmFsKCksICdtJykudmFsdWVPZigpO1xuICAgICAgXG4gICAgICAvLyBVcGRhdGUgdGhlIGZpcnN0SW50ZXJ2YWxzIHRvIHJlZmxlY3QgdGhlIGFkanVzdGVkIGVuZCB0aW1lXG4gICAgICB0aGlzLl9maXJzdEludGVydmFscy5zZXQoe1xuICAgICAgICBzdGFydDogZmlyc3RJbnRlcnZhbHMuc3RhcnQsXG4gICAgICAgIGVuZDogZW5kVGltZUVwb2NoXG4gICAgICB9KTtcbiAgICB9XG4gICAgXG4gICAgdGhpcy5lbmRUaW1lLnNldCh7XG4gICAgICB2YWxpZDogdHJ1ZSxcbiAgICAgIHRpbWU6IGRheWpzLnR6KGVuZFRpbWVFcG9jaCwgdGhpcy50aW1lem9uZSgpKS5mb3JtYXQodGhpcy5nZXRUaW1lRm9ybWF0KCkpLFxuICAgICAgZXBvY2g6IGVuZFRpbWVFcG9jaFxuICAgIH0pO1xuICAgIFxuICAgIHRoaXMuX2lzSW5pdGlhbGl6aW5nID0gZmFsc2U7XG4gIH1cblxuICAvLyBjYWxjdWxhdGUgdGhlIGZpcnN0IGludGVydmFsIG9mIHRoZSBwaWNrZXJcbiAgcHJpdmF0ZSBzZXRGaXJzdEludGVydmFscygpOiB2b2lkIHtcbiAgICBsZXQgZmlyc3RJbnRlcnZhbEZvclN0YXJ0UGlja2VyOiBudW1iZXI7XG4gICAgbGV0IGZpcnN0SW50ZXJ2YWxGb3JFbmRQaWNrZXI6IG51bWJlcjtcblxuICAgIGNvbnN0IG1pbnV0ZXMgPSBkYXlqcy50eihkYXlqcygpLCB0aGlzLnRpbWV6b25lKCkpLm1pbnV0ZSgpO1xuICAgIGNvbnN0IG9mZnNldCA9IHRoaXMuaW50ZXJ2YWwoKSAtIChtaW51dGVzICUgdGhpcy5pbnRlcnZhbCgpKTtcbiAgICBjb25zdCBjdXJyZW50VGltZSA9IGRheWpzLnR6KGRheWpzKCksIHRoaXMudGltZXpvbmUoKSkudmFsdWVPZigpO1xuXG4gICAgaWYoIHRoaXMuZ2V0U3RhcnREYXRlKCkgPT09IHRoaXMuZ2V0Q3VyckRhdGUoKSApe1xuICAgICAgaWYodGhpcy5nZXRTdGFydERhdGUoKSA9PT0gdGhpcy5nZXRFbmREYXRlKCkpe1xuICAgICAgICBpZihjdXJyZW50VGltZSA+PSBkYXlqcy50eih0aGlzLnN0YXJ0RGF0ZUVwb2NoKCksIHRoaXMudGltZXpvbmUoKSkuZW5kT2YoXCJkXCIpLnN1YnRyYWN0KHRoaXMuaW50ZXJ2YWwoKSxcIm1cIikudmFsdWVPZigpKXtcbiAgICAgICAgICBmaXJzdEludGVydmFsRm9yU3RhcnRQaWNrZXIgPSBjdXJyZW50VGltZTtcbiAgICAgICAgICBmaXJzdEludGVydmFsRm9yRW5kUGlja2VyID0gZGF5anMudHoodGhpcy5lbmREYXRlRXBvY2goKSwgdGhpcy50aW1lem9uZSgpKS5lbmRPZihcImRcIikudmFsdWVPZigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGZpcnN0SW50ZXJ2YWxGb3JTdGFydFBpY2tlciA9IGRheWpzLnR6KGRheWpzKCksIHRoaXMudGltZXpvbmUoKSkuYWRkKG9mZnNldCwgXCJtXCIpLnZhbHVlT2YoKTtcbiAgICAgICAgICAvLyBGb3Igc2FtZSBkYXRlLCBlbmQgcGlja2VyIHNob3VsZCBzdGFydCBmcm9tIGJlZ2lubmluZyBvZiBkYXkgdG8gYXZvaWQgdmFsaWRhdGlvbiBpc3N1ZXNcbiAgICAgICAgICBmaXJzdEludGVydmFsRm9yRW5kUGlja2VyID0gZGF5anMudHoodGhpcy5lbmREYXRlRXBvY2goKSwgdGhpcy50aW1lem9uZSgpKS5zdGFydE9mKFwiZFwiKS52YWx1ZU9mKCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmKGN1cnJlbnRUaW1lID49IGRheWpzLnR6KHRoaXMuc3RhcnREYXRlRXBvY2goKSwgdGhpcy50aW1lem9uZSgpKS5lbmRPZihcImRcIikuc3VidHJhY3QodGhpcy5pbnRlcnZhbCgpLFwibVwiKS52YWx1ZU9mKCkpe1xuICAgICAgICAgIGZpcnN0SW50ZXJ2YWxGb3JTdGFydFBpY2tlciA9IGN1cnJlbnRUaW1lO1xuICAgICAgICAgIGZpcnN0SW50ZXJ2YWxGb3JFbmRQaWNrZXIgPSBkYXlqcy50eih0aGlzLmVuZERhdGVFcG9jaCgpLCB0aGlzLnRpbWV6b25lKCkpLmVuZE9mKFwiZFwiKS52YWx1ZU9mKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZmlyc3RJbnRlcnZhbEZvclN0YXJ0UGlja2VyID0gZGF5anMudHooZGF5anMoKSwgdGhpcy50aW1lem9uZSgpKS5hZGQob2Zmc2V0LCBcIm1cIikudmFsdWVPZigpO1xuICAgICAgICAgIGZpcnN0SW50ZXJ2YWxGb3JFbmRQaWNrZXIgPSBkYXlqcy50eih0aGlzLmVuZERhdGVFcG9jaCgpLCB0aGlzLnRpbWV6b25lKCkpLnN0YXJ0T2YoXCJkXCIpLnZhbHVlT2YoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYodGhpcy5nZXRTdGFydERhdGUoKSA9PT0gdGhpcy5nZXRFbmREYXRlKCkpe1xuICAgICAgICBmaXJzdEludGVydmFsRm9yU3RhcnRQaWNrZXIgPSBkYXlqcy50eih0aGlzLnN0YXJ0RGF0ZUVwb2NoKCksIHRoaXMudGltZXpvbmUoKSkuc3RhcnRPZihcImRcIikudmFsdWVPZigpO1xuICAgICAgICBmaXJzdEludGVydmFsRm9yRW5kUGlja2VyID0gZGF5anMudHoodGhpcy5lbmREYXRlRXBvY2goKSwgdGhpcy50aW1lem9uZSgpKS5hZGQodGhpcy5pbnRlcnZhbCgpLCBcIm1cIikudmFsdWVPZigpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZmlyc3RJbnRlcnZhbEZvclN0YXJ0UGlja2VyID0gZGF5anMudHoodGhpcy5zdGFydERhdGVFcG9jaCgpLCB0aGlzLnRpbWV6b25lKCkpLnN0YXJ0T2YoXCJkXCIpLnZhbHVlT2YoKTtcbiAgICAgICAgZmlyc3RJbnRlcnZhbEZvckVuZFBpY2tlciA9IGRheWpzLnR6KHRoaXMuZW5kRGF0ZUVwb2NoKCksIHRoaXMudGltZXpvbmUoKSkuc3RhcnRPZihcImRcIikudmFsdWVPZigpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmKHRoaXMuZ2l2ZW5TdGFydFRpbWUoKSkge1xuICAgICAgZmlyc3RJbnRlcnZhbEZvclN0YXJ0UGlja2VyID0gdGhpcy5naXZlblN0YXJ0VGltZSgpITtcbiAgICB9XG4gICAgXG4gICAgaWYodGhpcy5naXZlbkVuZFRpbWUoKSkge1xuICAgICAgZmlyc3RJbnRlcnZhbEZvckVuZFBpY2tlciA9IHRoaXMuZ2l2ZW5FbmRUaW1lKCkhO1xuICAgIH1cbiAgICAgIFxuICAgIHRoaXMuX2ZpcnN0SW50ZXJ2YWxzLnNldCh7IHN0YXJ0OiBmaXJzdEludGVydmFsRm9yU3RhcnRQaWNrZXIsIGVuZDogZmlyc3RJbnRlcnZhbEZvckVuZFBpY2tlciB9KTtcbiAgfVxuXG4gIC8vIC0tLSBQdWJsaWMgTWV0aG9kcyAtLS1cbiAgZW1pdFRpbWVSYW5nZShkYXRhOiBJVGltZVJhbmdlKTogdm9pZCB7XG4gICAgdGhpcy50aW1lUmFuZ2VFbWl0dGVyLmVtaXQoZGF0YSk7XG4gIH1cblxuICBzdGFydFBpY2tlckhhbmRsZXIodGltZTogSVRpbWUpOiB2b2lkIHtcbiAgICB0aGlzLnN0YXJ0VGltZS5zZXQodGltZSk7XG4gICAgdGhpcy5yYW5nZVZhbGlkaXR5LnNldCh0cnVlKTtcbiAgICBcbiAgICAvLyBEb24ndCBlbWl0IGR1cmluZyBpbml0aWFsaXphdGlvblxuICAgIGlmICh0aGlzLl9pc0luaXRpYWxpemluZykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIENhbGN1bGF0ZSBzdGFydCB0aW1lIGVwb2NoIGZvciBjb21wYXJpc29uXG4gICAgY29uc3Qgc3RhcnRUaW1lRXBvY2ggPSBkYXlqcy50eihgJHt0aGlzLmdldFN0YXJ0RGF0ZSgpfSAke3RoaXMuc3RhcnRUaW1lKCkhLnRpbWV9YCwgYERELU1NLVlZWVkgJHt0aGlzLmdldFRpbWVGb3JtYXQoKX1gLCB0aGlzLnRpbWV6b25lKCkpLnZhbHVlT2YoKTtcbiAgICBjb25zdCBlbmRUaW1lRXBvY2ggPSBkYXlqcy50eihgJHt0aGlzLmdldEVuZERhdGUoKX0gJHt0aGlzLmVuZFRpbWUoKSEudGltZX1gLCBgREQtTU0tWVlZWSAke3RoaXMuZ2V0VGltZUZvcm1hdCgpfWAsIHRoaXMudGltZXpvbmUoKSkudmFsdWVPZigpO1xuXG4gICAgLy8gQXV0by1hZGp1c3QgZW5kIHRpbWUgaWYgc3RhcnQgdGltZSA+IGVuZCB0aW1lIChmb3IgYm90aCBzYW1lIGFuZCBkaWZmZXJlbnQgZGF0ZXMpXG4gICAgLy8gVGhpcyBlbnN1cmVzIGVuZCB0aW1lIGlzIGFsd2F5cyBhZnRlciBzdGFydCB0aW1lXG4gICAgaWYgKHN0YXJ0VGltZUVwb2NoID4gZW5kVGltZUVwb2NoKSB7XG4gICAgICAvLyBDYWxjdWxhdGUgbmV3IGVuZCB0aW1lIGFzIHN0YXJ0IHRpbWUgKyBpbnRlcnZhbFxuICAgICAgbGV0IG5ld0VuZFRpbWVFcG9jaCA9IGRheWpzLnR6KHN0YXJ0VGltZUVwb2NoLCB0aGlzLnRpbWV6b25lKCkpLmFkZCh0aGlzLmludGVydmFsKCksIFwibVwiKS52YWx1ZU9mKCk7XG4gICAgICBcbiAgICAgIC8vIElmIHNhbWUgZGF0ZSwgY2hlY2sgaWYgdGhlIG5ldyBlbmQgdGltZSB3b3VsZCBnbyBiZXlvbmQgZW5kIG9mIGRheVxuICAgICAgaWYgKHRoaXMuZ2V0U3RhcnREYXRlKCkgPT09IHRoaXMuZ2V0RW5kRGF0ZSgpKSB7XG4gICAgICAgIGNvbnN0IGVuZE9mRGF5ID0gZGF5anMudHoodGhpcy5zdGFydERhdGVFcG9jaCgpLCB0aGlzLnRpbWV6b25lKCkpLmVuZE9mKFwiZFwiKS52YWx1ZU9mKCk7XG4gICAgICAgIGlmIChuZXdFbmRUaW1lRXBvY2ggPiBlbmRPZkRheSkge1xuICAgICAgICAgIC8vIFNldCBlbmQgdGltZSB0byAxMTo1OSBQTSAoZW5kIG9mIGRheSkgd2hlbiBzdGFydCB0aW1lIGlzIGxhc3QgaW50ZXJ2YWxcbiAgICAgICAgICBuZXdFbmRUaW1lRXBvY2ggPSBlbmRPZkRheTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgXG4gICAgICAvLyBVcGRhdGUgdGhlIGVuZCB0aW1lIHNpZ25hbFxuICAgICAgdGhpcy5lbmRUaW1lLnNldCh7XG4gICAgICAgIHZhbGlkOiB0cnVlLFxuICAgICAgICB0aW1lOiBkYXlqcy50eihuZXdFbmRUaW1lRXBvY2gsIHRoaXMudGltZXpvbmUoKSkuZm9ybWF0KHRoaXMuZ2V0VGltZUZvcm1hdCgpKSxcbiAgICAgICAgZXBvY2g6IG5ld0VuZFRpbWVFcG9jaFxuICAgICAgfSk7XG4gICAgICBcbiAgICAgIC8vIFVwZGF0ZSB0aGUgZmlyc3RJbnRlcnZhbHMgdG8gcmVmbGVjdCB0aGUgbmV3IGVuZCB0aW1lXG4gICAgICB0aGlzLl9maXJzdEludGVydmFscy5zZXQoeyBcbiAgICAgICAgc3RhcnQ6IHRoaXMuX2ZpcnN0SW50ZXJ2YWxzKCkuc3RhcnQsIFxuICAgICAgICBlbmQ6IG5ld0VuZFRpbWVFcG9jaCBcbiAgICAgIH0pO1xuICAgICAgXG4gICAgICAvLyBUcmlnZ2VyIGNoYW5nZSB0byBmb3JjZSBlbmQgdGltZXBpY2tlciB0byB1cGRhdGUgaXRzIGRpc3BsYXkgd2l0aCB0aGUgbmV3IGVuZCB0aW1lXG4gICAgICAvLyBUaGlzIGlzIG5lY2Vzc2FyeSB3aGVuIHdlIHJlc2V0IHRoZSBlbmQgdGltZSBkdWUgdG8gY29uZmxpY3RcbiAgICAgIHRoaXMudHJpZ2dlckNoYW5nZS51cGRhdGUodmFsdWUgPT4gIXZhbHVlKTtcbiAgICB9XG5cbiAgICAvLyBVcGRhdGUgZW5kIHRpbWVwaWNrZXIncyBmaXJzdEludGVydmFsIHdoZW4gYm90aCB0aW1lcGlja2VycyBhcmUgb24gdGhlIHNhbWUgZGF5XG4gICAgLy8gQUxXQVlTIHVwZGF0ZSB0byBlbnN1cmUgZHJvcGRvd24gc3RhcnRzIGZyb20gbmV4dCBpbnRlcnZhbCBhZnRlciBzdGFydCB0aW1lXG4gICAgLy8gVGhpcyBmaXhlcyB0aGUgYnVnIHdoZXJlIHNlbGVjdGluZyBhbiBlYXJsaWVyIHN0YXJ0IHRpbWUgZG9lc24ndCB1cGRhdGUgZW5kIHBpY2tlciBpbnRlcnZhbHNcbiAgICAvLyBOT1RFOiBXZSBvbmx5IHVwZGF0ZSBmaXJzdEludGVydmFsIChkcm9wZG93biBvcHRpb25zKSwgTk9UIHRoZSBzZWxlY3RlZCBlbmQgdGltZSB2YWx1ZVxuICAgIC8vIFRoZSB0aW1lcGlja2VyIGNvbXBvbmVudCBub3cgaGFuZGxlcyBmaXJzdEludGVydmFsIGNoYW5nZXMgc2VwYXJhdGVseSBhbmQgd29uJ3QgcmVzZXQgY2hvc2VuVGltZVxuICAgIGlmICh0aGlzLmdldFN0YXJ0RGF0ZSgpID09PSB0aGlzLmdldEVuZERhdGUoKSkge1xuICAgICAgLy8gT25seSB1cGRhdGUgZmlyc3RJbnRlcnZhbCBpZiB0aGVyZSdzIG5vIGNvbmZsaWN0IChzdGFydCA8IGVuZClcbiAgICAgIC8vIElmIHRoZXJlJ3MgYSBjb25mbGljdCwgaXQncyBhbHJlYWR5IGhhbmRsZWQgYWJvdmUgYW5kIGZpcnN0SW50ZXJ2YWwgd2FzIHVwZGF0ZWQgdGhlcmVcbiAgICAgIGlmIChzdGFydFRpbWVFcG9jaCA8IGVuZFRpbWVFcG9jaCkge1xuICAgICAgICAvLyBDYWxjdWxhdGUgdGhlIG5leHQgaW50ZXJ2YWwgYWZ0ZXIgdGhlIHNlbGVjdGVkIHN0YXJ0IHRpbWVcbiAgICAgICAgbGV0IG5leHRJbnRlcnZhbEFmdGVyU3RhcnQgPSBkYXlqcy50eihzdGFydFRpbWVFcG9jaCwgdGhpcy50aW1lem9uZSgpKS5hZGQodGhpcy5pbnRlcnZhbCgpLCBcIm1cIikudmFsdWVPZigpO1xuICAgICAgICBcbiAgICAgICAgLy8gSWYgbmV4dCBpbnRlcnZhbCB3b3VsZCBnbyBiZXlvbmQgZW5kIG9mIGRheSwgdXNlIGVuZCBvZiBkYXkgaW5zdGVhZFxuICAgICAgICBjb25zdCBlbmRPZkRheSA9IGRheWpzLnR6KHRoaXMuc3RhcnREYXRlRXBvY2goKSwgdGhpcy50aW1lem9uZSgpKS5lbmRPZihcImRcIikudmFsdWVPZigpO1xuICAgICAgICBpZiAobmV4dEludGVydmFsQWZ0ZXJTdGFydCA+IGVuZE9mRGF5KSB7XG4gICAgICAgICAgbmV4dEludGVydmFsQWZ0ZXJTdGFydCA9IGVuZE9mRGF5O1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICAvLyBVcGRhdGUgdGhlIGZpcnN0SW50ZXJ2YWxzIHRvIG1ha2UgZW5kIHRpbWVwaWNrZXIgZHJvcGRvd24gc3RhcnQgZnJvbSBuZXh0IGludGVydmFsIGFmdGVyIHN0YXJ0IHRpbWVcbiAgICAgICAgLy8gVGhpcyBlbnN1cmVzIHVzZXJzIGNhbiBhbHdheXMgc2VsZWN0IHRpbWVzIGJldHdlZW4gdGhlIG5ldyBzdGFydCB0aW1lIGFuZCB0aGUgY3VycmVudCBlbmQgdGltZVxuICAgICAgICAvLyBUaGUgdGltZXBpY2tlciBjb21wb25lbnQgd2lsbCB1cGRhdGUgdGhlIGRyb3Bkb3duIGJ1dCBwcmVzZXJ2ZSB0aGUgc2VsZWN0ZWQgZW5kIHRpbWUgdmFsdWVcbiAgICAgICAgdGhpcy5fZmlyc3RJbnRlcnZhbHMuc2V0KHsgXG4gICAgICAgICAgc3RhcnQ6IHRoaXMuX2ZpcnN0SW50ZXJ2YWxzKCkuc3RhcnQsIFxuICAgICAgICAgIGVuZDogbmV4dEludGVydmFsQWZ0ZXJTdGFydCBcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIE5PVEU6IFdlIGRvbid0IGNhbGwgdHJpZ2dlckNoYW5nZSBoZXJlIGJlY2F1c2Ugd2Ugb25seSB3YW50IHRvIHVwZGF0ZSB0aGUgZHJvcGRvd24sXG4gICAgICAgIC8vIG5vdCByZXNldCB0aGUgc2VsZWN0ZWQgZW5kIHRpbWUuIFRoZSB0aW1lcGlja2VyJ3Mgc2VwYXJhdGUgZWZmZWN0IGZvciBmaXJzdEludGVydmFsXG4gICAgICAgIC8vIHdpbGwgaGFuZGxlIHVwZGF0aW5nIHRoZSBkcm9wZG93biB3aXRob3V0IHJlc2V0dGluZyBjaG9zZW5UaW1lLlxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEFsd2F5cyB2YWxpZGF0ZSBhbmQgZW1pdCB0aGUgdGltZSByYW5nZVxuICAgIGNvbnN0IHZhbGlkaXR5ID1cbiAgICAgIHRoaXMuY2hlY2tUaW1lVmFsaWRpdHkodGhpcy5zdGFydFRpbWUoKSEudGltZS50cmltKCksIHRoaXMuc3RhcnREYXRlRXBvY2goKSkgJiZcbiAgICAgIHRoaXMuY2hlY2tUaW1lVmFsaWRpdHkodGhpcy5lbmRUaW1lKCkhLnRpbWUudHJpbSgpLCB0aGlzLmVuZERhdGVFcG9jaCgpKTtcblxuICAgIHRoaXMucmFuZ2VWYWxpZGF0aW9uKHZhbGlkaXR5KTtcbiAgICB0aGlzLmVtaXRUaW1lUmFuZ2Uoe1xuICAgICAgdmFsaWQ6IHZhbGlkaXR5ICYmIHRoaXMucmFuZ2VWYWxpZGl0eSgpLFxuICAgICAgc3RhcnRUaW1lOiB0aGlzLnN0YXJ0VGltZSgpIS50aW1lLFxuICAgICAgZW5kVGltZTogdGhpcy5lbmRUaW1lKCkhLnRpbWUsXG4gICAgICBzdGFydEVwb2NoOiBkYXlqcy50eihgJHt0aGlzLmdldFN0YXJ0RGF0ZSgpfSAke3RoaXMuc3RhcnRUaW1lKCkhLnRpbWV9YCwgYERELU1NLVlZWVkgJHt0aGlzLmdldFRpbWVGb3JtYXQoKX1gLCB0aGlzLnRpbWV6b25lKCkpLnZhbHVlT2YoKSxcbiAgICAgIGVuZEVwb2NoOiBkYXlqcy50eihgJHt0aGlzLmdldEVuZERhdGUoKX0gJHt0aGlzLmVuZFRpbWUoKSEudGltZX1gLCBgREQtTU0tWVlZWSAke3RoaXMuZ2V0VGltZUZvcm1hdCgpfWAsIHRoaXMudGltZXpvbmUoKSkudmFsdWVPZigpXG4gICAgfSk7XG4gIH1cblxuICBlbmRQaWNrZXJIYW5kbGVyKHRpbWU6IElUaW1lKTogdm9pZCB7XG4gICAgdGhpcy5lbmRUaW1lLnNldCh0aW1lKTtcbiAgICBcbiAgICAvLyBEb24ndCBlbWl0IGR1cmluZyBpbml0aWFsaXphdGlvblxuICAgIGlmICh0aGlzLl9pc0luaXRpYWxpemluZykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHZhbGlkaXR5ID1cbiAgICAgIHRoaXMuY2hlY2tUaW1lVmFsaWRpdHkodGhpcy5zdGFydFRpbWUoKSEudGltZS50cmltKCksIHRoaXMuc3RhcnREYXRlRXBvY2goKSkgJiYgXG4gICAgICB0aGlzLmNoZWNrVGltZVZhbGlkaXR5KHRoaXMuZW5kVGltZSgpIS50aW1lLnRyaW0oKSwgdGhpcy5lbmREYXRlRXBvY2goKSk7XG5cbiAgICB0aGlzLnJhbmdlVmFsaWRhdGlvbih2YWxpZGl0eSk7XG4gICAgdGhpcy5lbWl0VGltZVJhbmdlKHtcbiAgICAgIHZhbGlkOiB2YWxpZGl0eSAmJiB0aGlzLnJhbmdlVmFsaWRpdHkoKSxcbiAgICAgIHN0YXJ0VGltZTogdGhpcy5zdGFydFRpbWUoKSEudGltZSxcbiAgICAgIGVuZFRpbWU6IHRoaXMuZW5kVGltZSgpIS50aW1lLFxuICAgICAgc3RhcnRFcG9jaDogZGF5anMudHooYCR7dGhpcy5nZXRTdGFydERhdGUoKX0gJHt0aGlzLnN0YXJ0VGltZSgpIS50aW1lfWAsIGBERC1NTS1ZWVlZICR7dGhpcy5nZXRUaW1lRm9ybWF0KCl9YCwgdGhpcy50aW1lem9uZSgpKS52YWx1ZU9mKCksXG4gICAgICBlbmRFcG9jaDogZGF5anMudHooYCR7dGhpcy5nZXRFbmREYXRlKCl9ICR7dGhpcy5lbmRUaW1lKCkhLnRpbWV9YCwgYERELU1NLVlZWVkgJHt0aGlzLmdldFRpbWVGb3JtYXQoKX1gLCB0aGlzLnRpbWV6b25lKCkpLnZhbHVlT2YoKVxuICAgIH0pO1xuICB9XG5cbiAgY2hlY2tUaW1lVmFsaWRpdHkodGltZTogc3RyaW5nLCBkYXRlOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBjb25zdCBSRTEyID0gL14oKFswXVsxLTldfDFbMC0yXSk6KFswLTVdWzAtOV0pKCApPyhhbXxwbXxBTXxQTSkpJC9pO1xuICAgIGNvbnN0IFJFMjQgPSAvXihbMDFdWzAtOV18MlswLTNdKTpbMC01XVswLTldJC87XG4gICAgY29uc3QgUkUgPSB0aGlzLmNsb2NrRm9ybWF0KCkgPT09IDEyID8gUkUxMiA6IFJFMjQ7XG5cbiAgICBjb25zdCB0aW1lZGF5anMgPSBkYXlqcy50eihgJHtkYXlqcy50eihkYXRlLCB0aGlzLnRpbWV6b25lKCkpLmZvcm1hdChcIkRELU1NLVlZWVlcIil9ICR7dGltZX1gLCBgJ0RELU1NLVlZWVknICR7dGhpcy5nZXRUaW1lRm9ybWF0KCl9YCwgdGhpcy50aW1lem9uZSgpKTtcbiAgICBsZXQgZmxhZzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgaWYgKCh0aGlzLmdpdmVuU3RhcnRUaW1lKCkgJiYgdGhpcy5naXZlbkVuZFRpbWUoKSkgfHwgKHRoaXMuZ2V0U3RhcnREYXRlKCkgIT09IHRoaXMuZ2V0RW5kRGF0ZSgpICYmIHRoaXMuZ2V0U3RhcnREYXRlKCkgIT09IHRoaXMuZ2V0Q3VyckRhdGUoKSkpIHtcbiAgICAgIGZsYWcgPSB0aW1lLm1hdGNoKFJFKSA/IHRydWUgOiBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgZmxhZyA9IHRpbWUubWF0Y2goUkUpICYmIHRpbWVkYXlqcy5kaWZmKGRheWpzLnR6KGRheWpzKCksIHRoaXMudGltZXpvbmUoKSksIFwibVwiKSA+PSAwID8gdHJ1ZSA6IGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gZmxhZztcbiAgfVxuXG4gIHJhbmdlVmFsaWRhdGlvbih2YWxpZGl0eTogYm9vbGVhbikge1xuICAgIGlmICh2YWxpZGl0eSAmJiB0aGlzLmdldFN0YXJ0RGF0ZSgpID09PSB0aGlzLmdldEVuZERhdGUoKSkge1xuICAgICAgY29uc3Qgc3RhcnRkYXlqcyA9IGRheWpzLnR6KHRoaXMuc3RhcnRUaW1lKCkhLnRpbWUsIHRoaXMuZ2V0VGltZUZvcm1hdCgpLCB0aGlzLnRpbWV6b25lKCkpO1xuICAgICAgY29uc3QgZW5kZGF5anMgPSBkYXlqcy50eih0aGlzLmVuZFRpbWUoKSEudGltZSwgdGhpcy5nZXRUaW1lRm9ybWF0KCksIHRoaXMudGltZXpvbmUoKSk7XG4gICAgICB0aGlzLnJhbmdlVmFsaWRpdHkuc2V0KGVuZGRheWpzLmRpZmYoc3RhcnRkYXlqcywgXCJtXCIpID49IDEpO1xuICAgIH1cbiAgfVxufVxuXG5cbiIsIjxkaXYgY2xhc3M9XCJyYW5nZXBpY2tlci1jb250YWluZXJcIiBbbmdTdHlsZV09XCJ7J2ZsZXhEaXJlY3Rpb24nOiBkaXJlY3Rpb24oKSwgJ2dhcCc6IGdhcCgpfVwiPlxuICA8bWlzLXRpbWVwaWNrZXJcbiAgICBbY2xvY2tGb3JtYXRdPVwiY2xvY2tGb3JtYXQoKVwiXG4gICAgW2ludGVydmFsXT1cImludGVydmFsKClcIlxuICAgIFtkYXRlQXNFcG9jaF09XCJzdGFydERhdGVFcG9jaCgpXCJcbiAgICBbZmlyc3RJbnRlcnZhbF09XCJmaXJzdEludGVydmFscygpLnN0YXJ0XCJcbiAgICAodGltZUVtaXR0ZXIpPVwic3RhcnRQaWNrZXJIYW5kbGVyKCRldmVudClcIlxuICAgIFt0aW1lem9uZV09XCJ0aW1lem9uZSgpXCJcbiAgICBbaGVpZ2h0XT1cImhlaWdodCgpXCJcbiAgICBbaW5wdXRXaWR0aF09XCJpbnB1dFdpZHRoKClcIlxuICAgIFtkcm9wZG93bldpZHRoXT1cImRyb3Bkb3duV2lkdGgoKVwiXG4gICAgW3Nob3dUb29sdGlwXT1cInNob3dUb29sdGlwKClcIlxuICAgIFtnaXZlblRpbWVdPVwiZ2l2ZW5TdGFydFRpbWUoKVwiXG4gICAgW2Rpc2FibGVdPVwiZGlzYWJsZVN0YXJ0VGltZSgpXCJcbiAgICBbZGlzYWJsZVVzZXJJbnB1dF09XCJkaXNhYmxlVXNlcklucHV0KClcIlxuICAgIFtmb250U2l6ZV09XCJmb250U2l6ZSgpXCJcbiAgPjwvbWlzLXRpbWVwaWNrZXI+XG4gIDxwICpuZ0lmPVwiZGlyZWN0aW9uKCkgPT09ICdyb3cnXCI+LTwvcD5cbiAgPG1pcy10aW1lcGlja2VyXG4gICAgW2Nsb2NrRm9ybWF0XT1cImNsb2NrRm9ybWF0KClcIlxuICAgIFtpbnRlcnZhbF09XCJpbnRlcnZhbCgpXCJcbiAgICBbZGF0ZUFzRXBvY2hdPVwiZW5kRGF0ZUVwb2NoKClcIlxuICAgIFtmaXJzdEludGVydmFsXT1cImZpcnN0SW50ZXJ2YWxzKCkuZW5kXCJcbiAgICAodGltZUVtaXR0ZXIpPVwiZW5kUGlja2VySGFuZGxlcigkZXZlbnQpXCJcbiAgICBbcmFuZ2VWYWxpZGl0eV09XCJyYW5nZVZhbGlkaXR5KClcIlxuICAgIFt0aW1lem9uZV09XCJ0aW1lem9uZSgpXCJcbiAgICBbaGVpZ2h0XT1cImhlaWdodCgpXCJcbiAgICBbaW5wdXRXaWR0aF09XCJpbnB1dFdpZHRoKClcIlxuICAgIFtkcm9wZG93bldpZHRoXT1cImRyb3Bkb3duV2lkdGgoKVwiXG4gICAgW3Nob3dUb29sdGlwXT1cInNob3dUb29sdGlwKClcIlxuICAgIFtnaXZlblRpbWVdPVwiZ2l2ZW5FbmRUaW1lKClcIlxuICAgIFt0cmlnZ2VyQ2hhbmdlXT1cInRyaWdnZXJDaGFuZ2UoKVwiXG4gICAgW2Rpc2FibGVdPVwiZGlzYWJsZUVuZFRpbWUoKVwiXG4gICAgW2Rpc2FibGVVc2VySW5wdXRdPVwiZGlzYWJsZVVzZXJJbnB1dCgpXCJcbiAgICBbZm9udFNpemVdPVwiZm9udFNpemUoKVwiXG4gID48L21pcy10aW1lcGlja2VyPlxuPC9kaXY+XG5cbiJdfQ==
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { signal, inject, ElementRef, DestroyRef,
|
|
2
|
+
import { signal, inject, ElementRef, DestroyRef, Directive, input, computed, contentChild, effect, Component, NgModule } from '@angular/core';
|
|
3
3
|
import { NgControl, FormsModule } from '@angular/forms';
|
|
4
4
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
5
5
|
import * as i1 from '@angular/common';
|
|
@@ -18,18 +18,10 @@ class MisInputDirective {
|
|
|
18
18
|
const element = this.el.nativeElement;
|
|
19
19
|
const initialValue = this.control?.control?.value ?? element.value ?? '';
|
|
20
20
|
this.value.set(initialValue);
|
|
21
|
-
//
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
const controlValue = this.control?.control?.value;
|
|
26
|
-
if (controlValue !== undefined && controlValue !== null) {
|
|
27
|
-
this.value.set(controlValue);
|
|
28
|
-
}
|
|
29
|
-
else if (attrValue) {
|
|
30
|
-
this.value.set(attrValue);
|
|
31
|
-
}
|
|
32
|
-
}, { allowSignalWrites: true });
|
|
21
|
+
// Ensure input has placeholder attribute for CSS :placeholder-shown to work
|
|
22
|
+
if (!element.placeholder) {
|
|
23
|
+
element.placeholder = ' ';
|
|
24
|
+
}
|
|
33
25
|
if (this.control?.control) {
|
|
34
26
|
// Track status changes
|
|
35
27
|
this.control.control.statusChanges
|
|
@@ -37,7 +29,7 @@ class MisInputDirective {
|
|
|
37
29
|
.subscribe(() => {
|
|
38
30
|
this.validity.set(!this.control.control.invalid);
|
|
39
31
|
});
|
|
40
|
-
// Track value changes
|
|
32
|
+
// Track value changes via FormControl
|
|
41
33
|
this.control.control.valueChanges
|
|
42
34
|
.pipe(takeUntilDestroyed(this.destroyRef))
|
|
43
35
|
.subscribe(value => {
|
|
@@ -57,12 +49,24 @@ class MisInputDirective {
|
|
|
57
49
|
|
|
58
50
|
const _c0 = [[["", "mis-input-icon", ""]], [["input"]], [["", "mis-input-act", ""]], [["", "mis-input-hint", ""]], [["", "mis-input-error", ""]]];
|
|
59
51
|
const _c1 = ["[mis-input-icon]", "input", "[mis-input-act]", "[mis-input-hint]", "[mis-input-error]"];
|
|
60
|
-
const _c2 = (a0, a1, a2, a3, a4, a5) => ({ rounded: a0, floating: a1, "has-error": a2, "no-hint": a3, "mis-disabled": a4, "has-value": a5 });
|
|
61
|
-
function
|
|
62
|
-
i0.ɵɵelementStart(0, "span",
|
|
52
|
+
const _c2 = (a0, a1, a2, a3, a4, a5, a6) => ({ rounded: a0, floating: a1, "has-error": a2, "no-hint": a3, "mis-disabled": a4, "has-value": a5, "has-custom-placeholder": a6 });
|
|
53
|
+
function MisInputComponent_span_5_span_2_Template(rf, ctx) { if (rf & 1) {
|
|
54
|
+
i0.ɵɵelementStart(0, "span", 6);
|
|
63
55
|
i0.ɵɵtext(1, "*");
|
|
64
56
|
i0.ɵɵelementEnd();
|
|
65
57
|
} }
|
|
58
|
+
function MisInputComponent_span_5_Template(rf, ctx) { if (rf & 1) {
|
|
59
|
+
i0.ɵɵelementStart(0, "span", 4);
|
|
60
|
+
i0.ɵɵtext(1);
|
|
61
|
+
i0.ɵɵtemplate(2, MisInputComponent_span_5_span_2_Template, 2, 0, "span", 5);
|
|
62
|
+
i0.ɵɵelementEnd();
|
|
63
|
+
} if (rf & 2) {
|
|
64
|
+
const ctx_r0 = i0.ɵɵnextContext();
|
|
65
|
+
i0.ɵɵadvance();
|
|
66
|
+
i0.ɵɵtextInterpolate(ctx_r0.placeholder());
|
|
67
|
+
i0.ɵɵadvance();
|
|
68
|
+
i0.ɵɵproperty("ngIf", ctx_r0.isMandatory());
|
|
69
|
+
} }
|
|
66
70
|
class MisInputComponent {
|
|
67
71
|
constructor() {
|
|
68
72
|
// Signal Inputs replacing @Input()
|
|
@@ -72,6 +76,8 @@ class MisInputComponent {
|
|
|
72
76
|
this.noHints = input(false);
|
|
73
77
|
this.hasError = input(false);
|
|
74
78
|
this.isMandatory = input(false);
|
|
79
|
+
// Computed signal to check if we should show custom placeholder
|
|
80
|
+
this.hasCustomPlaceholder = computed(() => !!this.placeholder());
|
|
75
81
|
// Computed signal to track if input has value
|
|
76
82
|
this.hasValue = computed(() => {
|
|
77
83
|
const formInput = this.formInput();
|
|
@@ -90,14 +96,21 @@ class MisInputComponent {
|
|
|
90
96
|
this.inputValidity = computed(() => this.formInput()?.validity() ?? true);
|
|
91
97
|
// Computed signal to determine the overall invalid state
|
|
92
98
|
this.isInvalid = computed(() => !this.inputValidity() || this.hasError());
|
|
93
|
-
//
|
|
94
|
-
//
|
|
99
|
+
// Ensure input always has placeholder attribute (even if empty) for CSS :placeholder-shown to work
|
|
100
|
+
// This allows pure CSS detection of when input has value, no JavaScript listeners needed
|
|
95
101
|
effect(() => {
|
|
96
102
|
const formInput = this.formInput();
|
|
97
103
|
const inputElement = formInput?.el.nativeElement;
|
|
98
|
-
|
|
99
|
-
if (inputElement
|
|
100
|
-
|
|
104
|
+
const hasCustom = this.hasCustomPlaceholder();
|
|
105
|
+
if (inputElement) {
|
|
106
|
+
if (hasCustom) {
|
|
107
|
+
// When using custom placeholder, set invisible placeholder for :placeholder-shown detection
|
|
108
|
+
// CSS will hide the native placeholder, but attribute is needed for pseudo-class
|
|
109
|
+
if (!inputElement.placeholder || inputElement.placeholder.trim() === '') {
|
|
110
|
+
inputElement.placeholder = ' '; // Single space - invisible but allows :placeholder-shown
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
// If native placeholder exists, keep it (directive already ensures placeholder exists)
|
|
101
114
|
}
|
|
102
115
|
});
|
|
103
116
|
}
|
|
@@ -106,35 +119,30 @@ class MisInputComponent {
|
|
|
106
119
|
i0.ɵɵcontentQuerySignal(dirIndex, ctx.formInput, MisInputDirective, 5);
|
|
107
120
|
} if (rf & 2) {
|
|
108
121
|
i0.ɵɵqueryAdvance();
|
|
109
|
-
} }, inputs: { type: [1, "type"], size: [1, "size"], placeholder: [1, "placeholder"], noHints: [1, "noHints"], hasError: [1, "hasError"], isMandatory: [1, "isMandatory"] }, ngContentSelectors: _c1, decls:
|
|
122
|
+
} }, inputs: { type: [1, "type"], size: [1, "size"], placeholder: [1, "placeholder"], noHints: [1, "noHints"], hasError: [1, "hasError"], isMandatory: [1, "isMandatory"] }, ngContentSelectors: _c1, decls: 9, vars: 12, consts: [[3, "ngClass"], [1, "input-wrapper"], [1, "mis-input"], ["class", "mis-placeholder", 4, "ngIf"], [1, "mis-placeholder"], ["style", "color: red;", 4, "ngIf"], [2, "color", "red"]], template: function MisInputComponent_Template(rf, ctx) { if (rf & 1) {
|
|
110
123
|
i0.ɵɵprojectionDef(_c0);
|
|
111
124
|
i0.ɵɵelementStart(0, "div", 0)(1, "div", 1);
|
|
112
125
|
i0.ɵɵprojection(2);
|
|
113
126
|
i0.ɵɵelementStart(3, "div", 2);
|
|
114
127
|
i0.ɵɵprojection(4, 1);
|
|
115
|
-
i0.ɵɵ
|
|
116
|
-
i0.ɵɵ
|
|
117
|
-
i0.ɵɵ
|
|
118
|
-
i0.ɵɵelementEnd()();
|
|
119
|
-
i0.ɵɵprojection(8, 2);
|
|
128
|
+
i0.ɵɵtemplate(5, MisInputComponent_span_5_Template, 3, 2, "span", 3);
|
|
129
|
+
i0.ɵɵelementEnd();
|
|
130
|
+
i0.ɵɵprojection(6, 2);
|
|
120
131
|
i0.ɵɵelementEnd();
|
|
121
|
-
i0.ɵɵprojection(
|
|
122
|
-
i0.ɵɵprojection(
|
|
132
|
+
i0.ɵɵprojection(7, 3);
|
|
133
|
+
i0.ɵɵprojection(8, 4);
|
|
123
134
|
i0.ɵɵelementEnd();
|
|
124
135
|
} if (rf & 2) {
|
|
125
136
|
let tmp_1_0;
|
|
126
|
-
let tmp_2_0;
|
|
127
137
|
i0.ɵɵclassMap("input-container " + ctx.size());
|
|
128
|
-
i0.ɵɵproperty("ngClass", i0.ɵɵ
|
|
129
|
-
i0.ɵɵadvance(
|
|
130
|
-
i0.ɵɵ
|
|
131
|
-
|
|
132
|
-
i0.ɵɵproperty("ngIf", ctx.isMandatory());
|
|
133
|
-
} }, dependencies: [i1.NgClass, i1.NgIf], styles: ["[_ngcontent-%COMP%]:root{--pmry-200: #99BAF7;--pmry-100: #CBDDFB;--pmry-500: #0937B2;--pmry-400: #3C68D0;--pmry-600: #062A99;--pmry-700: #041F80;--pmry-300: #638FE7;--pmry-800: #021567;--pmry-900: #010F55;--sec-d-purple: #40447F;--sec-maroon: #6B034E;--sec-mud-red: #B23600;--sec-orange: #ED711C;--sec-purple: #815FD5;--sec-teal: #10ADAE;--sec-yellow: #D4900C;--sec-green: #547F40;--sec-bright-green: #27D22E;--sec-dark-teal: #035F6B;--sec-chocolate: #7C2F33;--sec-rube-pink: #C13D6D;--sec-cerulean: #0087B2;--sem-error: #B00020;--sem-info: #0091FF;--sem-warning: #FF9D00;--sem-success: #38AF49;--grey-bg-1: #FAFAFA;--grey-bg: #F5F5F5;--grey-seperators: #E0E0E0;--grey-disabled: #C8CDD3;--grey-hover: #F5F7FC;--grey-pressed: #E6EBF7;--grey-row: #F5F7FC;--dec-light-yellow: #F4E7C3;--dec-light-purple: #DACFF9;--dec-light-green: #E4F5E9;--dec-light-green2: #F1FFF3;--dec-light-pink: #FAE1EA;--dec-: #F4CBC1;--dec-lt-orange: #FAEFED;--dec-light-blue: #CFECF9;--dec-row-selection: #F1FDF8;--dec-row-selection2: #F2FBFF;--dec-row-lines: #D3E1E9;--text-white: #FFFFFF;--text-muted: #6A737D;--text-black: #181F33;--MR-solid-blue2:#C8D5F6;--MR-solid-purple:#C9C3FB;--MR-solid-orange:#EEAC9F;--MR-solid-green:#ACDADA;--MR-solid-brown:#E8C8AF;--MR-solid-yellow:#FFEFC7;--MR-solid-blue:#BBE6FF;--MR-solid-pink:#FFC6F2;--tr-hover:#F0F3FA;--tr-pressed:#DAE1F3;--brand-primary: #0937B2;--brand-primary-light: #3C68D0;--brand-primary-dark: #062A99;--brand-primary-darker: #041F80;--brand-primary-lighter: #638FE7;--brand-primary-lightest: #CBDDFB;--brand-primary-hover: #F0F3FA;--brand-primary-active: #DAE1F3;--brand-secondary: #ED711C;--brand-secondary-light: #F09E65;--brand-secondary-dark: #B23600;--brand-secondary-lighter: #FFC6F2;--brand-accent: #10ADAE;--brand-accent-light: #16CBBC;--brand-accent-dark: #035F6B;--brand-accent-lighter: #ACDADA;--brand-success: #38AF49;--brand-success-light: #4CAF50;--brand-success-dark: #216531;--brand-success-lighter: #E4F5E9;--brand-success-lightest: #F1FFF3;--brand-error: #B00020;--brand-error-light: #F04E4E;--brand-error-dark: #A60060;--brand-error-lighter: #FAE1EA;--brand-error-lightest: #FDF2F2;--brand-warning: #FF9D00;--brand-warning-light: #D4900C;--brand-warning-dark: #624000;--brand-warning-lighter: #F4E7C3;--brand-warning-lightest: #FAEFED;--brand-info: #0091FF;--brand-info-light: #35A1FF;--brand-info-dark: #0087B2;--brand-info-lighter: #CFECF9;--text-primary: #181F33;--text-secondary: #6A737D;--text-tertiary: #929DAB;--text-disabled: #929DAB;--text-primary-87: rgba(24, 31, 51, .87);--text-primary-60: rgba(24, 31, 51, .6);--text-primary-38: rgba(24, 31, 51, .38);--text-primary-12: rgba(24, 31, 51, .12);--bg-primary: #FFFFFF;--bg-secondary: #FAFAFA;--bg-tertiary: #F5F5F5;--bg-overlay: rgba(0, 0, 0, .32);--bg-overlay-light: rgba(0, 0, 0, .12);--bg-overlay-lighter: rgba(0, 0, 0, .08);--bg-overlay-lightest: rgba(0, 0, 0, .04);--border-primary: #E0E0E0;--border-secondary: #D6DCE2;--border-tertiary: #C8CDD3;--border-light: #F1F4F8;--border-primary-12: rgba(0, 0, 0, .12);--border-primary-08: rgba(0, 0, 0, .08);--border-primary-06: rgba(0, 0, 0, .06);--shadow-primary: rgba(0, 0, 0, .12);--shadow-secondary: rgba(0, 0, 0, .08);--shadow-tertiary: rgba(0, 0, 0, .04);--shadow-light: rgba(0, 0, 0, .06);--status-available: #929DAB;--status-unavailable: #CCD3DA;--status-hotseat: #857BFF;--status-multiteam: #10ADAE;--status-selected: #10ADAE;--status-upcoming: #D4900C;--status-room: #38AF49;--status-room-booked: #B23600;--status-room-unavailable: #181F33;--team-color-1: #F8C52E;--team-color-2: #FA8E20;--team-color-3: #987CDD;--team-color-4: #16CBBC;--team-color-5: #E65010;--team-color-6: #A60060;--team-color-7: #ED323B;--team-color-8: #35A1FF;--team-color-9: #80D348}.input-container[_ngcontent-%COMP%]{position:relative;padding-bottom:24px}.input-container.mis-disabled[_ngcontent-%COMP%] .input-wrapper[_ngcontent-%COMP%]{pointer-events:none!important}.input-container[_ngcontent-%COMP%] .input-wrapper[_ngcontent-%COMP%]{box-sizing:border-box;display:flex;align-items:center;flex-direction:row;flex-wrap:nowrap;transition:all ease-in 60ms;background-color:var(--bg-primary, #FFFFFF);padding:3px 16px;gap:16px}.input-container[_ngcontent-%COMP%] .input-wrapper[_ngcontent-%COMP%] .mis-input[_ngcontent-%COMP%]{flex:1 1 auto;z-index:0;position:relative;display:flex;align-items:center}.input-container[_ngcontent-%COMP%] .input-wrapper[_ngcontent-%COMP%] input[_ngcontent-%COMP%]{flex:1 1 auto;border:none;outline:none;height:100%;padding:0;font-family:Lato;font-style:normal;font-weight:400;font-size:16px;height:24px;color:var(--text-primary, #181F33);background-color:transparent;width:100%;vertical-align:middle;position:relative}.input-container[_ngcontent-%COMP%] .input-wrapper[_ngcontent-%COMP%] input[_ngcontent-%COMP%]::placeholder{transition:all ease-in .1s;opacity:0;transform-origin:left center;color:transparent}.input-container[_ngcontent-%COMP%] .input-wrapper[_ngcontent-%COMP%] .mis-placeholder[_ngcontent-%COMP%]{position:absolute;font-family:Lato;font-style:normal;font-weight:400;font-size:16px;line-height:24px;color:var(--text-secondary, #6A737D);transition:all ease-in .15s;pointer-events:none}.input-container[_ngcontent-%COMP%] .input-wrapper[_ngcontent-%COMP%]:focus-within{background-color:var(--bg-tertiary, #F5F5F5)}.input-container[_ngcontent-%COMP%] .input-wrapper[_ngcontent-%COMP%]:focus-within{border:1px solid #0937B2}.input-container[_ngcontent-%COMP%] .input-wrapper[_ngcontent-%COMP%] [mis-input-act][_ngcontent-%COMP%], .input-container[_ngcontent-%COMP%] .input-wrapper[_ngcontent-%COMP%] [mis-input-icon][_ngcontent-%COMP%]{width:18px;height:18px;color:var(--text-secondary, #6A737D);font-size:24px;line-height:18px}.input-container[_ngcontent-%COMP%] .input-wrapper[_ngcontent-%COMP%] [mis-input-act][_ngcontent-%COMP%]{cursor:pointer}.input-container.no-hint[_ngcontent-%COMP%]{padding-bottom:0}.input-container.has-value[_ngcontent-%COMP%] .mis-input[_ngcontent-%COMP%] .mis-placeholder[_ngcontent-%COMP%]{color:transparent!important}.input-container.rounded[_ngcontent-%COMP%] input[_ngcontent-%COMP%]{box-sizing:initial}.input-container.rounded.sm[_ngcontent-%COMP%] input[_ngcontent-%COMP%]{padding:3px 16px}.input-container.rounded.md[_ngcontent-%COMP%] input[_ngcontent-%COMP%]{padding:9px 16px}.input-container.rounded.lg[_ngcontent-%COMP%] input[_ngcontent-%COMP%]{padding:15px 16px}.input-container.rounded[_ngcontent-%COMP%] .input-wrapper[_ngcontent-%COMP%]{border-radius:4px;border:1px solid var(--border-primary, #E0E0E0);padding:0}.input-container.rounded[_ngcontent-%COMP%] .input-wrapper[_ngcontent-%COMP%]:hover{background-color:var(--bg-tertiary, #F5F5F5)}.input-container.rounded[_ngcontent-%COMP%] .input-wrapper[_ngcontent-%COMP%]:focus-within{border:1px solid var(--brand-primary, #0937B2)}.input-container.rounded[_ngcontent-%COMP%] .input-wrapper[_ngcontent-%COMP%] .mis-placeholder[_ngcontent-%COMP%]{color:var(--text-secondary, #6A737D)}.input-container.rounded[_ngcontent-%COMP%] .input-wrapper[_ngcontent-%COMP%] .mis-placeholder[_ngcontent-%COMP%]{margin-left:16px;transition-duration:50ms}.input-container.rounded.has-error[_ngcontent-%COMP%] .input-wrapper[_ngcontent-%COMP%]{border:1px solid var(--brand-error, #B00020)!important}.input-container.floating[_ngcontent-%COMP%] .input-wrapper[_ngcontent-%COMP%]{padding-top:24px;padding-bottom:7px;border-bottom:1px solid var(--border-primary, #E0E0E0)}.input-container.floating[_ngcontent-%COMP%] .input-wrapper[_ngcontent-%COMP%] input[_ngcontent-%COMP%]:focus + .mis-placeholder[_ngcontent-%COMP%]{color:var(--brand-primary, #0937B2)!important}.input-container.floating[_ngcontent-%COMP%] .input-wrapper[_ngcontent-%COMP%] input[_ngcontent-%COMP%]:not(:placeholder-shown) + .mis-placeholder[_ngcontent-%COMP%], .input-container.floating[_ngcontent-%COMP%] .input-wrapper[_ngcontent-%COMP%] input[_ngcontent-%COMP%]:focus + .mis-placeholder[_ngcontent-%COMP%]{transform:translateY(calc(-100% + 6px))!important;font-size:12px!important;letter-spacing:.2px!important}.input-container.floating[_ngcontent-%COMP%] .input-wrapper[_ngcontent-%COMP%]:focus-within{border:none;border-bottom:1px solid var(--brand-primary, #0937B2)}.input-container.floating[_ngcontent-%COMP%] .input-wrapper[_ngcontent-%COMP%]:focus-within input[_ngcontent-%COMP%]::placeholder{color:var(--text-secondary, #6A737D);opacity:1;font-size:16px}.input-container.floating.has-error[_ngcontent-%COMP%] .input-wrapper[_ngcontent-%COMP%]{border-bottom:1px solid var(--brand-error, #B00020)!important}.input-container.floating.has-error[_ngcontent-%COMP%] .input-wrapper[_ngcontent-%COMP%] .mis-placeholder[_ngcontent-%COMP%]{color:var(--brand-error, #B00020)!important}.input-container[_ngcontent-%COMP%] [mis-input-hint][_ngcontent-%COMP%], .input-container[_ngcontent-%COMP%] [mis-input-error][_ngcontent-%COMP%]{position:absolute;left:0;right:0;bottom:0;line-height:24px;height:24px;font-size:12px;color:var(--text-secondary, #6A737D);letter-spacing:.2px}.input-container[_ngcontent-%COMP%] [mis-input-error][_ngcontent-%COMP%]{color:var(--brand-error, #B00020)}"] }); }
|
|
138
|
+
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction7(4, _c2, ctx.type() === "rounded", ctx.type() === "floating", ctx.isInvalid(), ctx.noHints(), (tmp_1_0 = ctx.inputCtrl()) == null ? null : tmp_1_0.disabled, ctx.hasValue(), ctx.hasCustomPlaceholder()));
|
|
139
|
+
i0.ɵɵadvance(5);
|
|
140
|
+
i0.ɵɵproperty("ngIf", ctx.hasCustomPlaceholder());
|
|
141
|
+
} }, dependencies: [i1.NgClass, i1.NgIf], styles: ["[_ngcontent-%COMP%]:root{--pmry-200: #99BAF7;--pmry-100: #CBDDFB;--pmry-500: #0937B2;--pmry-400: #3C68D0;--pmry-600: #062A99;--pmry-700: #041F80;--pmry-300: #638FE7;--pmry-800: #021567;--pmry-900: #010F55;--sec-d-purple: #40447F;--sec-maroon: #6B034E;--sec-mud-red: #B23600;--sec-orange: #ED711C;--sec-purple: #815FD5;--sec-teal: #10ADAE;--sec-yellow: #D4900C;--sec-green: #547F40;--sec-bright-green: #27D22E;--sec-dark-teal: #035F6B;--sec-chocolate: #7C2F33;--sec-rube-pink: #C13D6D;--sec-cerulean: #0087B2;--sem-error: #B00020;--sem-info: #0091FF;--sem-warning: #FF9D00;--sem-success: #38AF49;--grey-bg-1: #FAFAFA;--grey-bg: #F5F5F5;--grey-seperators: #E0E0E0;--grey-disabled: #C8CDD3;--grey-hover: #F5F7FC;--grey-pressed: #E6EBF7;--grey-row: #F5F7FC;--dec-light-yellow: #F4E7C3;--dec-light-purple: #DACFF9;--dec-light-green: #E4F5E9;--dec-light-green2: #F1FFF3;--dec-light-pink: #FAE1EA;--dec-: #F4CBC1;--dec-lt-orange: #FAEFED;--dec-light-blue: #CFECF9;--dec-row-selection: #F1FDF8;--dec-row-selection2: #F2FBFF;--dec-row-lines: #D3E1E9;--text-white: #FFFFFF;--text-muted: #6A737D;--text-black: #181F33;--MR-solid-blue2:#C8D5F6;--MR-solid-purple:#C9C3FB;--MR-solid-orange:#EEAC9F;--MR-solid-green:#ACDADA;--MR-solid-brown:#E8C8AF;--MR-solid-yellow:#FFEFC7;--MR-solid-blue:#BBE6FF;--MR-solid-pink:#FFC6F2;--tr-hover:#F0F3FA;--tr-pressed:#DAE1F3;--brand-primary: #0937B2;--brand-primary-light: #3C68D0;--brand-primary-dark: #062A99;--brand-primary-darker: #041F80;--brand-primary-lighter: #638FE7;--brand-primary-lightest: #CBDDFB;--brand-primary-hover: #F0F3FA;--brand-primary-active: #DAE1F3;--brand-secondary: #ED711C;--brand-secondary-light: #F09E65;--brand-secondary-dark: #B23600;--brand-secondary-lighter: #FFC6F2;--brand-accent: #10ADAE;--brand-accent-light: #16CBBC;--brand-accent-dark: #035F6B;--brand-accent-lighter: #ACDADA;--brand-success: #38AF49;--brand-success-light: #4CAF50;--brand-success-dark: #216531;--brand-success-lighter: #E4F5E9;--brand-success-lightest: #F1FFF3;--brand-error: #B00020;--brand-error-light: #F04E4E;--brand-error-dark: #A60060;--brand-error-lighter: #FAE1EA;--brand-error-lightest: #FDF2F2;--brand-warning: #FF9D00;--brand-warning-light: #D4900C;--brand-warning-dark: #624000;--brand-warning-lighter: #F4E7C3;--brand-warning-lightest: #FAEFED;--brand-info: #0091FF;--brand-info-light: #35A1FF;--brand-info-dark: #0087B2;--brand-info-lighter: #CFECF9;--text-primary: #181F33;--text-secondary: #6A737D;--text-tertiary: #929DAB;--text-disabled: #929DAB;--text-primary-87: rgba(24, 31, 51, .87);--text-primary-60: rgba(24, 31, 51, .6);--text-primary-38: rgba(24, 31, 51, .38);--text-primary-12: rgba(24, 31, 51, .12);--bg-primary: #FFFFFF;--bg-secondary: #FAFAFA;--bg-tertiary: #F5F5F5;--bg-overlay: rgba(0, 0, 0, .32);--bg-overlay-light: rgba(0, 0, 0, .12);--bg-overlay-lighter: rgba(0, 0, 0, .08);--bg-overlay-lightest: rgba(0, 0, 0, .04);--border-primary: #E0E0E0;--border-secondary: #D6DCE2;--border-tertiary: #C8CDD3;--border-light: #F1F4F8;--border-primary-12: rgba(0, 0, 0, .12);--border-primary-08: rgba(0, 0, 0, .08);--border-primary-06: rgba(0, 0, 0, .06);--shadow-primary: rgba(0, 0, 0, .12);--shadow-secondary: rgba(0, 0, 0, .08);--shadow-tertiary: rgba(0, 0, 0, .04);--shadow-light: rgba(0, 0, 0, .06);--status-available: #929DAB;--status-unavailable: #CCD3DA;--status-hotseat: #857BFF;--status-multiteam: #10ADAE;--status-selected: #10ADAE;--status-upcoming: #D4900C;--status-room: #38AF49;--status-room-booked: #B23600;--status-room-unavailable: #181F33;--team-color-1: #F8C52E;--team-color-2: #FA8E20;--team-color-3: #987CDD;--team-color-4: #16CBBC;--team-color-5: #E65010;--team-color-6: #A60060;--team-color-7: #ED323B;--team-color-8: #35A1FF;--team-color-9: #80D348}.input-container[_ngcontent-%COMP%]{position:relative;padding-bottom:24px}.input-container.mis-disabled[_ngcontent-%COMP%] .input-wrapper[_ngcontent-%COMP%]{pointer-events:none!important}.input-container.has-custom-placeholder[_ngcontent-%COMP%] .input-wrapper[_ngcontent-%COMP%] input[_ngcontent-%COMP%]::placeholder{transition:all ease-in .1s;opacity:0;transform-origin:left center;color:transparent}.input-container[_ngcontent-%COMP%] .input-wrapper[_ngcontent-%COMP%]{box-sizing:border-box;display:flex;align-items:center;flex-direction:row;flex-wrap:nowrap;transition:all ease-in 60ms;background-color:var(--bg-primary, #FFFFFF);padding:3px 16px;gap:16px}.input-container[_ngcontent-%COMP%] .input-wrapper[_ngcontent-%COMP%] .mis-input[_ngcontent-%COMP%]{flex:1 1 auto;z-index:0;position:relative;display:flex;align-items:center}.input-container[_ngcontent-%COMP%] .input-wrapper[_ngcontent-%COMP%] input[_ngcontent-%COMP%]{flex:1 1 auto;border:none;outline:none;height:100%;padding:0;font-family:Lato;font-style:normal;font-weight:400;font-size:16px;height:24px;color:var(--text-primary, #181F33);background-color:transparent;width:100%;vertical-align:middle;position:relative}.input-container[_ngcontent-%COMP%] .input-wrapper[_ngcontent-%COMP%] .mis-placeholder[_ngcontent-%COMP%]{position:absolute;font-family:Lato;font-style:normal;font-weight:400;font-size:16px;line-height:24px;color:var(--text-secondary, #6A737D);transition:all ease-in .15s;pointer-events:none}.input-container[_ngcontent-%COMP%] .input-wrapper[_ngcontent-%COMP%]:focus-within{background-color:var(--bg-tertiary, #F5F5F5)}.input-container[_ngcontent-%COMP%] .input-wrapper[_ngcontent-%COMP%]:focus-within{border:1px solid #0937B2}.input-container[_ngcontent-%COMP%] .input-wrapper[_ngcontent-%COMP%] [mis-input-act][_ngcontent-%COMP%], .input-container[_ngcontent-%COMP%] .input-wrapper[_ngcontent-%COMP%] [mis-input-icon][_ngcontent-%COMP%]{width:18px;height:18px;color:var(--text-secondary, #6A737D);font-size:24px;line-height:18px}.input-container[_ngcontent-%COMP%] .input-wrapper[_ngcontent-%COMP%] [mis-input-act][_ngcontent-%COMP%]{cursor:pointer}.input-container.no-hint[_ngcontent-%COMP%]{padding-bottom:0}.input-container.has-custom-placeholder[_ngcontent-%COMP%] input[_ngcontent-%COMP%]:not(:placeholder-shown) + .mis-placeholder[_ngcontent-%COMP%]{opacity:0;pointer-events:none}.input-container.has-value[_ngcontent-%COMP%] .mis-input[_ngcontent-%COMP%] .mis-placeholder[_ngcontent-%COMP%]{color:transparent!important}.input-container.rounded[_ngcontent-%COMP%] input[_ngcontent-%COMP%]{box-sizing:initial}.input-container.rounded.sm[_ngcontent-%COMP%] input[_ngcontent-%COMP%]{padding:3px 16px}.input-container.rounded.md[_ngcontent-%COMP%] input[_ngcontent-%COMP%]{padding:9px 16px}.input-container.rounded.lg[_ngcontent-%COMP%] input[_ngcontent-%COMP%]{padding:15px 16px}.input-container.rounded[_ngcontent-%COMP%] .input-wrapper[_ngcontent-%COMP%]{border-radius:4px;border:1px solid var(--border-primary, #E0E0E0);padding:0}.input-container.rounded[_ngcontent-%COMP%] .input-wrapper[_ngcontent-%COMP%]:hover{background-color:var(--bg-tertiary, #F5F5F5)}.input-container.rounded[_ngcontent-%COMP%] .input-wrapper[_ngcontent-%COMP%]:focus-within{border:1px solid var(--brand-primary, #0937B2)}.input-container.rounded[_ngcontent-%COMP%] .input-wrapper[_ngcontent-%COMP%] .mis-placeholder[_ngcontent-%COMP%]{margin-left:16px;transition-duration:50ms}.input-container.rounded.has-error[_ngcontent-%COMP%] .input-wrapper[_ngcontent-%COMP%]{border:1px solid var(--brand-error, #B00020)!important}.input-container.floating[_ngcontent-%COMP%] .input-wrapper[_ngcontent-%COMP%]{padding-top:24px;padding-bottom:7px;border-bottom:1px solid var(--border-primary, #E0E0E0)}.input-container.floating[_ngcontent-%COMP%] .input-wrapper[_ngcontent-%COMP%] input[_ngcontent-%COMP%]:focus + .mis-placeholder[_ngcontent-%COMP%]{color:var(--brand-primary, #0937B2)!important}.input-container.floating[_ngcontent-%COMP%] .input-wrapper[_ngcontent-%COMP%] input[_ngcontent-%COMP%]:not(:placeholder-shown) + .mis-placeholder[_ngcontent-%COMP%], .input-container.floating[_ngcontent-%COMP%] .input-wrapper[_ngcontent-%COMP%] input[_ngcontent-%COMP%]:focus + .mis-placeholder[_ngcontent-%COMP%]{transform:translateY(calc(-100% + 6px))!important;font-size:12px!important;letter-spacing:.2px!important}.input-container.floating[_ngcontent-%COMP%] .input-wrapper[_ngcontent-%COMP%]:focus-within{border:none;border-bottom:1px solid var(--brand-primary, #0937B2)}.input-container.floating[_ngcontent-%COMP%] .input-wrapper[_ngcontent-%COMP%]:focus-within input[_ngcontent-%COMP%]::placeholder{color:var(--text-secondary, #6A737D);opacity:1;font-size:16px}.input-container.floating.has-error[_ngcontent-%COMP%] .input-wrapper[_ngcontent-%COMP%]{border-bottom:1px solid var(--brand-error, #B00020)!important}.input-container.floating.has-error[_ngcontent-%COMP%] .input-wrapper[_ngcontent-%COMP%] .mis-placeholder[_ngcontent-%COMP%]{color:var(--brand-error, #B00020)!important}.input-container[_ngcontent-%COMP%] [mis-input-hint][_ngcontent-%COMP%], .input-container[_ngcontent-%COMP%] [mis-input-error][_ngcontent-%COMP%]{position:absolute;left:0;right:0;bottom:0;line-height:24px;height:24px;font-size:12px;color:var(--text-secondary, #6A737D);letter-spacing:.2px}.input-container[_ngcontent-%COMP%] [mis-input-error][_ngcontent-%COMP%]{color:var(--brand-error, #B00020)}"] }); }
|
|
134
142
|
}
|
|
135
143
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MisInputComponent, [{
|
|
136
144
|
type: Component,
|
|
137
|
-
args: [{ selector: "mis-input", template: "<div\n [class]=\"'input-container ' + size()\"\n [ngClass]=\"{\n rounded: type() === 'rounded',\n floating: type() === 'floating',\n 'has-error': isInvalid(),\n 'no-hint': noHints(),\n 'mis-disabled': inputCtrl()?.disabled,\n 'has-value': hasValue()\n }\"\n>\n <div class=\"input-wrapper\">\n <ng-content select=\"[mis-input-icon]\"></ng-content>\n <div class=\"mis-input\">\n <ng-content select=\"input\"></ng-content>\n <span class=\"mis-placeholder\">{{ placeholder()
|
|
145
|
+
args: [{ selector: "mis-input", template: "<div\n [class]=\"'input-container ' + size()\"\n [ngClass]=\"{\n rounded: type() === 'rounded',\n floating: type() === 'floating',\n 'has-error': isInvalid(),\n 'no-hint': noHints(),\n 'mis-disabled': inputCtrl()?.disabled,\n 'has-value': hasValue(),\n 'has-custom-placeholder': hasCustomPlaceholder()\n }\"\n>\n <div class=\"input-wrapper\">\n <ng-content select=\"[mis-input-icon]\"></ng-content>\n <div class=\"mis-input\">\n <ng-content select=\"input\"></ng-content>\n <span class=\"mis-placeholder\" *ngIf=\"hasCustomPlaceholder()\">{{ placeholder() }}<span *ngIf=\"isMandatory()\" style=\"color: red;\">*</span></span>\n </div>\n <ng-content select=\"[mis-input-act]\"></ng-content>\n </div>\n <ng-content select=\"[mis-input-hint]\"></ng-content>\n <ng-content select=\"[mis-input-error]\"></ng-content>\n</div>\n\n", styles: [":root{--pmry-200: #99BAF7;--pmry-100: #CBDDFB;--pmry-500: #0937B2;--pmry-400: #3C68D0;--pmry-600: #062A99;--pmry-700: #041F80;--pmry-300: #638FE7;--pmry-800: #021567;--pmry-900: #010F55;--sec-d-purple: #40447F;--sec-maroon: #6B034E;--sec-mud-red: #B23600;--sec-orange: #ED711C;--sec-purple: #815FD5;--sec-teal: #10ADAE;--sec-yellow: #D4900C;--sec-green: #547F40;--sec-bright-green: #27D22E;--sec-dark-teal: #035F6B;--sec-chocolate: #7C2F33;--sec-rube-pink: #C13D6D;--sec-cerulean: #0087B2;--sem-error: #B00020;--sem-info: #0091FF;--sem-warning: #FF9D00;--sem-success: #38AF49;--grey-bg-1: #FAFAFA;--grey-bg: #F5F5F5;--grey-seperators: #E0E0E0;--grey-disabled: #C8CDD3;--grey-hover: #F5F7FC;--grey-pressed: #E6EBF7;--grey-row: #F5F7FC;--dec-light-yellow: #F4E7C3;--dec-light-purple: #DACFF9;--dec-light-green: #E4F5E9;--dec-light-green2: #F1FFF3;--dec-light-pink: #FAE1EA;--dec-: #F4CBC1;--dec-lt-orange: #FAEFED;--dec-light-blue: #CFECF9;--dec-row-selection: #F1FDF8;--dec-row-selection2: #F2FBFF;--dec-row-lines: #D3E1E9;--text-white: #FFFFFF;--text-muted: #6A737D;--text-black: #181F33;--MR-solid-blue2:#C8D5F6;--MR-solid-purple:#C9C3FB;--MR-solid-orange:#EEAC9F;--MR-solid-green:#ACDADA;--MR-solid-brown:#E8C8AF;--MR-solid-yellow:#FFEFC7;--MR-solid-blue:#BBE6FF;--MR-solid-pink:#FFC6F2;--tr-hover:#F0F3FA;--tr-pressed:#DAE1F3;--brand-primary: #0937B2;--brand-primary-light: #3C68D0;--brand-primary-dark: #062A99;--brand-primary-darker: #041F80;--brand-primary-lighter: #638FE7;--brand-primary-lightest: #CBDDFB;--brand-primary-hover: #F0F3FA;--brand-primary-active: #DAE1F3;--brand-secondary: #ED711C;--brand-secondary-light: #F09E65;--brand-secondary-dark: #B23600;--brand-secondary-lighter: #FFC6F2;--brand-accent: #10ADAE;--brand-accent-light: #16CBBC;--brand-accent-dark: #035F6B;--brand-accent-lighter: #ACDADA;--brand-success: #38AF49;--brand-success-light: #4CAF50;--brand-success-dark: #216531;--brand-success-lighter: #E4F5E9;--brand-success-lightest: #F1FFF3;--brand-error: #B00020;--brand-error-light: #F04E4E;--brand-error-dark: #A60060;--brand-error-lighter: #FAE1EA;--brand-error-lightest: #FDF2F2;--brand-warning: #FF9D00;--brand-warning-light: #D4900C;--brand-warning-dark: #624000;--brand-warning-lighter: #F4E7C3;--brand-warning-lightest: #FAEFED;--brand-info: #0091FF;--brand-info-light: #35A1FF;--brand-info-dark: #0087B2;--brand-info-lighter: #CFECF9;--text-primary: #181F33;--text-secondary: #6A737D;--text-tertiary: #929DAB;--text-disabled: #929DAB;--text-primary-87: rgba(24, 31, 51, .87);--text-primary-60: rgba(24, 31, 51, .6);--text-primary-38: rgba(24, 31, 51, .38);--text-primary-12: rgba(24, 31, 51, .12);--bg-primary: #FFFFFF;--bg-secondary: #FAFAFA;--bg-tertiary: #F5F5F5;--bg-overlay: rgba(0, 0, 0, .32);--bg-overlay-light: rgba(0, 0, 0, .12);--bg-overlay-lighter: rgba(0, 0, 0, .08);--bg-overlay-lightest: rgba(0, 0, 0, .04);--border-primary: #E0E0E0;--border-secondary: #D6DCE2;--border-tertiary: #C8CDD3;--border-light: #F1F4F8;--border-primary-12: rgba(0, 0, 0, .12);--border-primary-08: rgba(0, 0, 0, .08);--border-primary-06: rgba(0, 0, 0, .06);--shadow-primary: rgba(0, 0, 0, .12);--shadow-secondary: rgba(0, 0, 0, .08);--shadow-tertiary: rgba(0, 0, 0, .04);--shadow-light: rgba(0, 0, 0, .06);--status-available: #929DAB;--status-unavailable: #CCD3DA;--status-hotseat: #857BFF;--status-multiteam: #10ADAE;--status-selected: #10ADAE;--status-upcoming: #D4900C;--status-room: #38AF49;--status-room-booked: #B23600;--status-room-unavailable: #181F33;--team-color-1: #F8C52E;--team-color-2: #FA8E20;--team-color-3: #987CDD;--team-color-4: #16CBBC;--team-color-5: #E65010;--team-color-6: #A60060;--team-color-7: #ED323B;--team-color-8: #35A1FF;--team-color-9: #80D348}.input-container{position:relative;padding-bottom:24px}.input-container.mis-disabled .input-wrapper{pointer-events:none!important}.input-container.has-custom-placeholder .input-wrapper input::placeholder{transition:all ease-in .1s;opacity:0;transform-origin:left center;color:transparent}.input-container .input-wrapper{box-sizing:border-box;display:flex;align-items:center;flex-direction:row;flex-wrap:nowrap;transition:all ease-in 60ms;background-color:var(--bg-primary, #FFFFFF);padding:3px 16px;gap:16px}.input-container .input-wrapper .mis-input{flex:1 1 auto;z-index:0;position:relative;display:flex;align-items:center}.input-container .input-wrapper input{flex:1 1 auto;border:none;outline:none;height:100%;padding:0;font-family:Lato;font-style:normal;font-weight:400;font-size:16px;height:24px;color:var(--text-primary, #181F33);background-color:transparent;width:100%;vertical-align:middle;position:relative}.input-container .input-wrapper .mis-placeholder{position:absolute;font-family:Lato;font-style:normal;font-weight:400;font-size:16px;line-height:24px;color:var(--text-secondary, #6A737D);transition:all ease-in .15s;pointer-events:none}.input-container .input-wrapper:focus-within{background-color:var(--bg-tertiary, #F5F5F5)}.input-container .input-wrapper:focus-within{border:1px solid #0937B2}.input-container .input-wrapper [mis-input-act],.input-container .input-wrapper [mis-input-icon]{width:18px;height:18px;color:var(--text-secondary, #6A737D);font-size:24px;line-height:18px}.input-container .input-wrapper [mis-input-act]{cursor:pointer}.input-container.no-hint{padding-bottom:0}.input-container.has-custom-placeholder input:not(:placeholder-shown)+.mis-placeholder{opacity:0;pointer-events:none}.input-container.has-value .mis-input .mis-placeholder{color:transparent!important}.input-container.rounded input{box-sizing:initial}.input-container.rounded.sm input{padding:3px 16px}.input-container.rounded.md input{padding:9px 16px}.input-container.rounded.lg input{padding:15px 16px}.input-container.rounded .input-wrapper{border-radius:4px;border:1px solid var(--border-primary, #E0E0E0);padding:0}.input-container.rounded .input-wrapper:hover{background-color:var(--bg-tertiary, #F5F5F5)}.input-container.rounded .input-wrapper:focus-within{border:1px solid var(--brand-primary, #0937B2)}.input-container.rounded .input-wrapper .mis-placeholder{margin-left:16px;transition-duration:50ms}.input-container.rounded.has-error .input-wrapper{border:1px solid var(--brand-error, #B00020)!important}.input-container.floating .input-wrapper{padding-top:24px;padding-bottom:7px;border-bottom:1px solid var(--border-primary, #E0E0E0)}.input-container.floating .input-wrapper input:focus+.mis-placeholder{color:var(--brand-primary, #0937B2)!important}.input-container.floating .input-wrapper input:not(:placeholder-shown)+.mis-placeholder,.input-container.floating .input-wrapper input:focus+.mis-placeholder{transform:translateY(calc(-100% + 6px))!important;font-size:12px!important;letter-spacing:.2px!important}.input-container.floating .input-wrapper:focus-within{border:none;border-bottom:1px solid var(--brand-primary, #0937B2)}.input-container.floating .input-wrapper:focus-within input::placeholder{color:var(--text-secondary, #6A737D);opacity:1;font-size:16px}.input-container.floating.has-error .input-wrapper{border-bottom:1px solid var(--brand-error, #B00020)!important}.input-container.floating.has-error .input-wrapper .mis-placeholder{color:var(--brand-error, #B00020)!important}.input-container [mis-input-hint],.input-container [mis-input-error]{position:absolute;left:0;right:0;bottom:0;line-height:24px;height:24px;font-size:12px;color:var(--text-secondary, #6A737D);letter-spacing:.2px}.input-container [mis-input-error]{color:var(--brand-error, #B00020)}\n"] }]
|
|
138
146
|
}], () => [], null); })();
|
|
139
147
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MisInputComponent, { className: "MisInputComponent" }); })();
|
|
140
148
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mis-crystal-design-system-input.mjs","sources":["../../../projects/mis-components/input/directives/input/input.directive.ts","../../../projects/mis-components/input/mis-input.component.html","../../../projects/mis-components/input/mis-input.component.ts","../../../projects/mis-components/input/mis-input.module.ts","../../../projects/mis-components/input/mis-crystal-design-system-input.ts"],"sourcesContent":["import { Directive, ElementRef, OnInit, Optional, Self, signal, effect, OnDestroy, inject, DestroyRef } from \"@angular/core\";\nimport { NgControl } from \"@angular/forms\";\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\n\n@Directive({\n selector: \"input[misInput]\"\n})\nexport class MisInputDirective{\n // Public signals to expose directive state\n public validity = signal<boolean>(true);\n public value = signal<any>('');\n \n // Dependencies injected for use with signals\n public el = inject(ElementRef);\n public control = inject(NgControl, { optional: true, self: true });\n private destroyRef = inject(DestroyRef);\n\n constructor() {\n // Handle initial value synchronously\n const element = this.el.nativeElement;\n const initialValue = this.control?.control?.value ?? element.value ?? '';\n this.value.set(initialValue);\n\n // Then track changes\n effect(() => {\n const element = this.el.nativeElement;\n const attrValue = element.value;\n const controlValue = this.control?.control?.value;\n \n if (controlValue !== undefined && controlValue !== null) {\n this.value.set(controlValue);\n } else if (attrValue) {\n this.value.set(attrValue);\n }\n }, { allowSignalWrites: true });\n\n if (this.control?.control) {\n // Track status changes\n this.control.control.statusChanges\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n this.validity.set(!this.control!.control!.invalid);\n });\n\n // Track value changes\n this.control.control.valueChanges\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(value => {\n this.value.set(value ?? '');\n });\n }\n }\n}\n\n\n","<div\n [class]=\"'input-container ' + size()\"\n [ngClass]=\"{\n rounded: type() === 'rounded',\n floating: type() === 'floating',\n 'has-error': isInvalid(),\n 'no-hint': noHints(),\n 'mis-disabled': inputCtrl()?.disabled,\n 'has-value': hasValue()\n }\"\n>\n <div class=\"input-wrapper\">\n <ng-content select=\"[mis-input-icon]\"></ng-content>\n <div class=\"mis-input\">\n <ng-content select=\"input\"></ng-content>\n <span class=\"mis-placeholder\">{{ placeholder() || formInput()?.el.nativeElement.placeholder }}<span *ngIf=\"isMandatory()\" style=\"color: red;\">*</span></span>\n </div>\n <ng-content select=\"[mis-input-act]\"></ng-content>\n </div>\n <ng-content select=\"[mis-input-hint]\"></ng-content>\n <ng-content select=\"[mis-input-error]\"></ng-content>\n</div>\n\n","import { Component, OnInit, OnDestroy, ViewEncapsulation, computed, contentChild, input, effect, signal, inject, DestroyRef } from \"@angular/core\";\nimport { MisInputDirective } from \"./directives/input/input.directive\";\n\n@Component({\n selector: \"mis-input\",\n templateUrl: \"./mis-input.component.html\",\n styleUrls: [\"./mis-input.component.scss\"],\n})\nexport class MisInputComponent{\n // Signal Inputs replacing @Input()\n public type = input<\"rounded\" | \"floating\">(\"floating\");\n public size = input<\"sm\" | \"md\" | \"lg\">(\"sm\");\n public placeholder = input<string | undefined>(undefined);\n public noHints = input<boolean>(false);\n public hasError = input<boolean>(false);\n public isMandatory = input<boolean>(false);\n\n // Computed signal to track if input has value\n public hasValue = computed(() => {\n const formInput = this.formInput();\n if (!formInput) return false;\n \n const value = formInput.value(); // Use the directive's value signal\n return value !== null && value !== undefined && value !== '';\n });\n\n // Content Child as a signal\n public formInput = contentChild(MisInputDirective);\n\n // Use a computed signal to derive the input control from the content child.\n // This will automatically update when the content child becomes available.\n public inputCtrl = computed(() => this.formInput()?.control?.control || null);\n\n // Use a computed signal to derive the validity state.\n // It reads the signal from the directive and updates whenever the directive's signal changes.\n public inputValidity = computed(() => this.formInput()?.validity() ?? true);\n\n constructor() {\n // This effect is now only for a side-effect (modifying a DOM element)\n // and no longer writes to signals.\n effect(() => {\n const formInput = this.formInput();\n const inputElement = formInput?.el.nativeElement;\n\n // For floating labels, we must clear the native placeholder to prevent it from overlapping.\n if (inputElement && this.type() === 'floating' && !this.placeholder() && inputElement.placeholder) {\n inputElement.placeholder = '';\n }\n });\n }\n\n // Computed signal to determine the overall invalid state\n public isInvalid = computed(() => !this.inputValidity() || this.hasError());\n}\n","import { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\nimport { FormsModule } from \"@angular/forms\";\nimport { MisInputDirective } from \"./directives/input/input.directive\";\nimport { MisInputComponent } from \"./mis-input.component\";\n\n@NgModule({\n declarations: [MisInputComponent, MisInputDirective],\n imports: [CommonModule, FormsModule],\n exports: [MisInputComponent, MisInputDirective]\n})\nexport class MisInputModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mis-crystal-design-system-input.mjs","sources":["../../../projects/mis-components/input/directives/input/input.directive.ts","../../../projects/mis-components/input/mis-input.component.html","../../../projects/mis-components/input/mis-input.component.ts","../../../projects/mis-components/input/mis-input.module.ts","../../../projects/mis-components/input/mis-crystal-design-system-input.ts"],"sourcesContent":["import { Directive, ElementRef, signal, inject, DestroyRef } from \"@angular/core\";\nimport { NgControl } from \"@angular/forms\";\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\n\n@Directive({\n selector: \"input[misInput]\"\n})\nexport class MisInputDirective{\n // Public signals to expose directive state\n public validity = signal<boolean>(true);\n public value = signal<any>('');\n \n // Dependencies injected for use with signals\n public el = inject(ElementRef);\n public control = inject(NgControl, { optional: true, self: true });\n private destroyRef = inject(DestroyRef);\n\n constructor() {\n // Handle initial value synchronously\n const element = this.el.nativeElement;\n const initialValue = this.control?.control?.value ?? element.value ?? '';\n this.value.set(initialValue);\n\n // Ensure input has placeholder attribute for CSS :placeholder-shown to work\n if (!element.placeholder) {\n element.placeholder = ' ';\n }\n\n if (this.control?.control) {\n // Track status changes\n this.control.control.statusChanges\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n this.validity.set(!this.control!.control!.invalid);\n });\n\n // Track value changes via FormControl\n this.control.control.valueChanges\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(value => {\n this.value.set(value ?? '');\n });\n }\n }\n}\n\n\n","<div\n [class]=\"'input-container ' + size()\"\n [ngClass]=\"{\n rounded: type() === 'rounded',\n floating: type() === 'floating',\n 'has-error': isInvalid(),\n 'no-hint': noHints(),\n 'mis-disabled': inputCtrl()?.disabled,\n 'has-value': hasValue(),\n 'has-custom-placeholder': hasCustomPlaceholder()\n }\"\n>\n <div class=\"input-wrapper\">\n <ng-content select=\"[mis-input-icon]\"></ng-content>\n <div class=\"mis-input\">\n <ng-content select=\"input\"></ng-content>\n <span class=\"mis-placeholder\" *ngIf=\"hasCustomPlaceholder()\">{{ placeholder() }}<span *ngIf=\"isMandatory()\" style=\"color: red;\">*</span></span>\n </div>\n <ng-content select=\"[mis-input-act]\"></ng-content>\n </div>\n <ng-content select=\"[mis-input-hint]\"></ng-content>\n <ng-content select=\"[mis-input-error]\"></ng-content>\n</div>\n\n","import { Component, computed, contentChild, input, effect, inject } from \"@angular/core\";\nimport { MisInputDirective } from \"./directives/input/input.directive\";\n\n@Component({\n selector: \"mis-input\",\n templateUrl: \"./mis-input.component.html\",\n styleUrls: [\"./mis-input.component.scss\"],\n})\nexport class MisInputComponent{\n // Signal Inputs replacing @Input()\n public type = input<\"rounded\" | \"floating\">(\"floating\");\n public size = input<\"sm\" | \"md\" | \"lg\">(\"sm\");\n public placeholder = input<string | undefined>(undefined);\n public noHints = input<boolean>(false);\n public hasError = input<boolean>(false);\n public isMandatory = input<boolean>(false);\n\n // Computed signal to check if we should show custom placeholder\n public hasCustomPlaceholder = computed(() => !!this.placeholder());\n\n // Computed signal to track if input has value\n public hasValue = computed(() => {\n const formInput = this.formInput();\n if (!formInput) return false;\n \n const value = formInput.value(); // Use the directive's value signal\n return value !== null && value !== undefined && value !== '';\n });\n\n // Content Child as a signal\n public formInput = contentChild(MisInputDirective);\n\n // Use a computed signal to derive the input control from the content child.\n // This will automatically update when the content child becomes available.\n public inputCtrl = computed(() => this.formInput()?.control?.control || null);\n\n // Use a computed signal to derive the validity state.\n // It reads the signal from the directive and updates whenever the directive's signal changes.\n public inputValidity = computed(() => this.formInput()?.validity() ?? true);\n\n constructor() {\n // Ensure input always has placeholder attribute (even if empty) for CSS :placeholder-shown to work\n // This allows pure CSS detection of when input has value, no JavaScript listeners needed\n effect(() => {\n const formInput = this.formInput();\n const inputElement = formInput?.el.nativeElement;\n const hasCustom = this.hasCustomPlaceholder();\n\n if (inputElement) {\n if (hasCustom) {\n // When using custom placeholder, set invisible placeholder for :placeholder-shown detection\n // CSS will hide the native placeholder, but attribute is needed for pseudo-class\n if (!inputElement.placeholder || inputElement.placeholder.trim() === '') {\n inputElement.placeholder = ' '; // Single space - invisible but allows :placeholder-shown\n }\n }\n // If native placeholder exists, keep it (directive already ensures placeholder exists)\n }\n });\n }\n\n // Computed signal to determine the overall invalid state\n public isInvalid = computed(() => !this.inputValidity() || this.hasError());\n}\n","import { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\nimport { FormsModule } from \"@angular/forms\";\nimport { MisInputDirective } from \"./directives/input/input.directive\";\nimport { MisInputComponent } from \"./mis-input.component\";\n\n@NgModule({\n declarations: [MisInputComponent, MisInputDirective],\n imports: [CommonModule, FormsModule],\n exports: [MisInputComponent, MisInputDirective]\n})\nexport class MisInputModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -417,11 +417,19 @@ class TableComponent {
|
|
|
417
417
|
// --- PAGINATION PAGE ARRAY LOGIC (MOVED/REPLACED initializePagination) ---
|
|
418
418
|
const len = config?.paginationConfig?.noOfPages;
|
|
419
419
|
const disablePageJumping = config?.paginationConfig?.disablePageJumping;
|
|
420
|
+
// Sync selectedPage from config if provided (for when parent updates the page)
|
|
421
|
+
if (config?.paginationConfig?.selectedPage !== undefined && config?.paginationConfig?.selectedPage !== null) {
|
|
422
|
+
const configSelectedPage = config.paginationConfig.selectedPage;
|
|
423
|
+
// Only update if different to avoid unnecessary updates
|
|
424
|
+
if (this.selectedPage() !== configSelectedPage) {
|
|
425
|
+
this.selectedPage.set(configSelectedPage);
|
|
426
|
+
}
|
|
427
|
+
}
|
|
420
428
|
// Only run if pagination is configured and page jumping is enabled
|
|
421
429
|
if (len && len > 0 && !disablePageJumping) {
|
|
422
430
|
// Read the internal state of the selected page for calculating the pages array.
|
|
423
431
|
// Since this runs on every config change, we rely on the value set
|
|
424
|
-
// by updateSelectedPage().
|
|
432
|
+
// by updateSelectedPage() or synced from config above.
|
|
425
433
|
const pageNumber = this.selectedPage();
|
|
426
434
|
if (len <= 7) {
|
|
427
435
|
const newPages = [];
|