@taiga-ui/cdk 4.18.0 → 4.19.0-canary.2a86fb0
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/classes/portals.d.ts +2 -2
- package/classes/value-transformer.d.ts +4 -0
- package/constants/allow-signal-writes.d.ts +2 -0
- package/constants/index.d.ts +1 -0
- package/constants/used-icons.d.ts +1 -1
- package/constants/version.d.ts +1 -1
- package/constants/version.js +1 -1
- package/date-time/time.d.ts +1 -0
- package/esm2022/classes/portals.mjs +2 -4
- package/esm2022/classes/value-transformer.mjs +8 -1
- package/esm2022/constants/allow-signal-writes.mjs +3 -0
- package/esm2022/constants/index.mjs +2 -1
- package/esm2022/constants/used-icons.mjs +2 -2
- package/esm2022/constants/version.mjs +2 -2
- package/esm2022/date-time/time.mjs +14 -17
- package/esm2022/observables/index.mjs +2 -1
- package/esm2022/observables/untracked-scheduler.mjs +11 -0
- package/esm2022/utils/focus/focused-in.mjs +4 -3
- package/esm2022/utils/math/round.mjs +12 -4
- package/esm2022/utils/miscellaneous/directive-binding.mjs +4 -8
- package/fesm2022/taiga-ui-cdk-classes.mjs +8 -4
- package/fesm2022/taiga-ui-cdk-classes.mjs.map +1 -1
- package/fesm2022/taiga-ui-cdk-constants.mjs +6 -4
- package/fesm2022/taiga-ui-cdk-constants.mjs.map +1 -1
- package/fesm2022/taiga-ui-cdk-date-time.mjs +12 -15
- package/fesm2022/taiga-ui-cdk-date-time.mjs.map +1 -1
- package/fesm2022/taiga-ui-cdk-observables.mjs +12 -3
- package/fesm2022/taiga-ui-cdk-observables.mjs.map +1 -1
- package/fesm2022/taiga-ui-cdk-utils-focus.mjs +3 -2
- package/fesm2022/taiga-ui-cdk-utils-focus.mjs.map +1 -1
- package/fesm2022/taiga-ui-cdk-utils-math.mjs +12 -4
- package/fesm2022/taiga-ui-cdk-utils-math.mjs.map +1 -1
- package/fesm2022/taiga-ui-cdk-utils-miscellaneous.mjs +3 -7
- package/fesm2022/taiga-ui-cdk-utils-miscellaneous.mjs.map +1 -1
- package/observables/index.d.ts +1 -0
- package/observables/untracked-scheduler.d.ts +2 -0
- package/package.json +7 -7
- package/schematics/ng-update/v4/index.js +1 -1
- package/schematics/ng-update/v4/steps/constants/identifiers-to-replace.js +20 -0
- package/schematics/ng-update/v4/steps/constants/tags-to-replace.js +14 -0
- package/schematics/ng-update/v4/steps/migrate-providers-from.js +2 -0
- package/schematics/ng-update/v4/steps/templates/migrate-badged-content.js +2 -1
- package/utils/math/round.d.ts +1 -0
package/classes/portals.d.ts
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
import type { ComponentRef, EmbeddedViewRef, Provider, TemplateRef } from '@angular/core';
|
1
|
+
import type { ComponentRef, EmbeddedViewRef, Provider, TemplateRef, ViewRef } from '@angular/core';
|
2
2
|
import type { PolymorpheusComponent } from '@taiga-ui/polymorpheus';
|
3
3
|
import * as i0 from "@angular/core";
|
4
4
|
/**
|
@@ -22,7 +22,7 @@ export declare abstract class TuiPortalService {
|
|
22
22
|
add<C>(component: PolymorpheusComponent<C>): ComponentRef<C>;
|
23
23
|
remove<C>({ hostView }: ComponentRef<C>): void;
|
24
24
|
addTemplate<C>(templateRef: TemplateRef<C>, context?: C): EmbeddedViewRef<C>;
|
25
|
-
removeTemplate<C>(viewRef: EmbeddedViewRef<C>): void;
|
25
|
+
removeTemplate<C>(viewRef: EmbeddedViewRef<C> | ViewRef): void;
|
26
26
|
protected get safeHost(): TuiPortals;
|
27
27
|
static ɵfac: i0.ɵɵFactoryDeclaration<TuiPortalService, never>;
|
28
28
|
static ɵprov: i0.ɵɵInjectableDeclaration<TuiPortalService>;
|
@@ -1,4 +1,8 @@
|
|
1
|
+
import type { FactoryProvider, ProviderToken } from '@angular/core';
|
1
2
|
export declare abstract class TuiValueTransformer<From, To = unknown> {
|
2
3
|
abstract toControlValue(componentValue: From): To;
|
3
4
|
abstract fromControlValue(controlValue: To): From;
|
4
5
|
}
|
6
|
+
export declare function tuiValueTransformerFrom<T extends {
|
7
|
+
valueTransformer: TuiValueTransformer<unknown>;
|
8
|
+
}>(token: ProviderToken<T>): FactoryProvider;
|
package/constants/index.d.ts
CHANGED
@@ -4,4 +4,4 @@
|
|
4
4
|
*
|
5
5
|
* Array of icons used in taiga-ui components
|
6
6
|
*/
|
7
|
-
export declare const TUI_USED_ICONS: readonly ["@tui.mir", "@tui.visa", "@tui.electron", "@tui.mastercard", "@tui.maestro", "@tui.amex", "@tui.diners-club", "@tui.discover", "@tui.humo", "@tui.jcb", "@tui.ru-pay", "@tui.union-pay", "@tui.uzcard", "@tui.verve", "@tui.external-link", "@tui.search", "@tui.sun", "@tui.moon", "@tui.code", "@tui.menu", "@tui.copy", "@tui.check", "@tui.link", "@tui.languages", "@tui.eye-off", "@tui.eye", "@tui.grip-vertical", "@tui.chevron-up", "@tui.chevron-down", "@tui.chevrons-up-down", "@tui.info", "@tui.circle-check", "@tui.circle-x", "@tui.circle-alert", "@tui.circle-help", "@tui.x", "@tui.chevron-right", "@tui.ellipsis", "@tui.chevron-left", "@tui.minus", "@tui.file", "@tui.trash", "@tui.phone", "@tui.heart", "@tui.heart-filled", "@tui.star", "@tui.calendar", "@tui.rotate-ccw-square", "@tui.arrow-left", "@tui.arrow-right", "@tui.
|
7
|
+
export declare const TUI_USED_ICONS: readonly ["@tui.mir", "@tui.visa", "@tui.electron", "@tui.mastercard", "@tui.maestro", "@tui.amex", "@tui.diners-club", "@tui.discover", "@tui.humo", "@tui.jcb", "@tui.ru-pay", "@tui.union-pay", "@tui.uzcard", "@tui.verve", "@tui.external-link", "@tui.search", "@tui.sun", "@tui.moon", "@tui.code", "@tui.menu", "@tui.copy", "@tui.check", "@tui.link", "@tui.languages", "@tui.eye-off", "@tui.eye", "@tui.grip-vertical", "@tui.chevron-up", "@tui.chevron-down", "@tui.chevrons-up-down", "@tui.info", "@tui.circle-check", "@tui.circle-x", "@tui.circle-alert", "@tui.circle-help", "@tui.x", "@tui.chevron-right", "@tui.ellipsis", "@tui.chevron-left", "@tui.minus", "@tui.file", "@tui.trash", "@tui.plus", "@tui.phone", "@tui.heart", "@tui.heart-filled", "@tui.star", "@tui.calendar", "@tui.rotate-ccw-square", "@tui.arrow-left", "@tui.arrow-right", "@tui.minimize", "@tui.filter", "@tui.layout-grid", "@tui.move-up-right", "@tui.move-right", "@tui.move-down-right", "@tui.move-down", "@tui.move-down-left", "@tui.move-left", "@tui.move-up-left", "@tui.move-up", "@tui.clock"];
|
package/constants/version.d.ts
CHANGED
@@ -1 +1 @@
|
|
1
|
-
export declare const TUI_VERSION = "4.
|
1
|
+
export declare const TUI_VERSION = "4.19.0-canary.2a86fb0";
|
package/constants/version.js
CHANGED
package/date-time/time.d.ts
CHANGED
@@ -40,9 +40,7 @@ class TuiPortalService {
|
|
40
40
|
return this.safeHost.addComponentChild(component);
|
41
41
|
}
|
42
42
|
remove({ hostView }) {
|
43
|
-
|
44
|
-
hostView.destroy();
|
45
|
-
}
|
43
|
+
this.removeTemplate(hostView);
|
46
44
|
}
|
47
45
|
addTemplate(templateRef, context) {
|
48
46
|
return this.safeHost.addTemplateChild(templateRef, context);
|
@@ -73,4 +71,4 @@ export class TuiNoHostException extends Error {
|
|
73
71
|
super(ngDevMode ? 'Portals cannot be used without TuiPortalHostComponent' : '');
|
74
72
|
}
|
75
73
|
}
|
76
|
-
//# sourceMappingURL=data:application/json;base64,
|
74
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9ydGFscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay9jbGFzc2VzL3BvcnRhbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsd0RBQXdEO0FBUXhELE9BQU8sRUFDSCxTQUFTLEVBQ1QsTUFBTSxFQUNOLFVBQVUsRUFDVixRQUFRLEVBQ1IsU0FBUyxFQUNULGdCQUFnQixHQUNuQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0scUJBQXFCLENBQUM7O0FBRy9DOztHQUVHO0FBQ0gsTUFDc0IsVUFBVTtJQURoQztRQUtxQixhQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRTFCLFlBQU8sR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7S0FpQnRFO0lBZlUsaUJBQWlCLENBQUksU0FBbUM7UUFDM0QsTUFBTSxRQUFRLEdBQUcsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDekQsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxFQUFDLFFBQVEsRUFBQyxDQUFDLENBQUM7UUFFdEUsR0FBRyxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxDQUFDO1FBRXRDLE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQztJQUVNLGdCQUFnQixDQUNuQixXQUEyQixFQUMzQixPQUFXO1FBRVgsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM3RCxDQUFDOytHQXRCaUIsVUFBVTttR0FBVixVQUFVLDJHQUNPLGdCQUFnQjs7U0FEakMsVUFBVTs0RkFBVixVQUFVO2tCQUQvQixTQUFTOzhCQUdXLEdBQUc7c0JBRG5CLFNBQVM7dUJBQUMsZUFBZSxFQUFFLEVBQUMsSUFBSSxFQUFFLGdCQUFnQixFQUFDOztBQXdCeEQ7O0dBRUc7QUFDSCxNQUNzQixnQkFBZ0I7SUFHM0IsTUFBTSxDQUFDLElBQWdCO1FBQzFCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0lBQ3JCLENBQUM7SUFFTSxHQUFHLENBQUksU0FBbUM7UUFDN0MsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFTSxNQUFNLENBQUksRUFBQyxRQUFRLEVBQWtCO1FBQ3hDLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVNLFdBQVcsQ0FBSSxXQUEyQixFQUFFLE9BQVc7UUFDMUQsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRU0sY0FBYyxDQUFJLE9BQXFDO1FBQzFELElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFO1lBQ3BCLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztTQUNyQjtJQUNMLENBQUM7SUFFRCxJQUFjLFFBQVE7UUFDbEIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDWixNQUFNLElBQUksa0JBQWtCLEVBQUUsQ0FBQztTQUNsQztRQUVELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztJQUNyQixDQUFDOytHQS9CaUIsZ0JBQWdCO21IQUFoQixnQkFBZ0I7O1NBQWhCLGdCQUFnQjs0RkFBaEIsZ0JBQWdCO2tCQURyQyxVQUFVOztBQW1DWCxNQUFNLFVBQVUsV0FBVyxDQUFDLE1BQStCO0lBQ3ZELE9BQU8sVUFBVSxDQUFDLGdCQUFnQixFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ2hELENBQUM7QUFFRCxNQUFNLE9BQU8sa0JBQW1CLFNBQVEsS0FBSztJQUN6QztRQUNJLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLHVEQUF1RCxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNwRixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyIvLy8gPHJlZmVyZW5jZSB0eXBlcz1cIkB0YWlnYS11aS90c2NvbmZpZy9uZy1kZXYtbW9kZVwiIC8+XG5pbXBvcnQgdHlwZSB7XG4gICAgQ29tcG9uZW50UmVmLFxuICAgIEVtYmVkZGVkVmlld1JlZixcbiAgICBQcm92aWRlcixcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3UmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgRGlyZWN0aXZlLFxuICAgIGluamVjdCxcbiAgICBJbmplY3RhYmxlLFxuICAgIElOSkVDVE9SLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3Q29udGFpbmVyUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7dHVpUHJvdmlkZX0gZnJvbSAnQHRhaWdhLXVpL2Nkay91dGlscyc7XG5pbXBvcnQgdHlwZSB7UG9seW1vcnBoZXVzQ29tcG9uZW50fSBmcm9tICdAdGFpZ2EtdWkvcG9seW1vcnBoZXVzJztcblxuLyoqXG4gKiBBYnN0cmFjdCBjbGFzcyBmb3IgaG9zdCBlbGVtZW50IGZvciBkeW5hbWljYWxseSBjcmVhdGVkIHBvcnRhbHMuXG4gKi9cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFR1aVBvcnRhbHMge1xuICAgIEBWaWV3Q2hpbGQoJ3ZpZXdDb250YWluZXInLCB7cmVhZDogVmlld0NvbnRhaW5lclJlZn0pXG4gICAgcHJpdmF0ZSByZWFkb25seSB2Y3IhOiBWaWV3Q29udGFpbmVyUmVmO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBpbmplY3RvciA9IGluamVjdChJTkpFQ1RPUik7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgbm90aGluZyA9IGluamVjdChUdWlQb3J0YWxTZXJ2aWNlKS5hdHRhY2godGhpcyk7XG5cbiAgICBwdWJsaWMgYWRkQ29tcG9uZW50Q2hpbGQ8Qz4oY29tcG9uZW50OiBQb2x5bW9ycGhldXNDb21wb25lbnQ8Qz4pOiBDb21wb25lbnRSZWY8Qz4ge1xuICAgICAgICBjb25zdCBpbmplY3RvciA9IGNvbXBvbmVudC5jcmVhdGVJbmplY3Rvcih0aGlzLmluamVjdG9yKTtcbiAgICAgICAgY29uc3QgcmVmID0gdGhpcy52Y3IuY3JlYXRlQ29tcG9uZW50KGNvbXBvbmVudC5jb21wb25lbnQsIHtpbmplY3Rvcn0pO1xuXG4gICAgICAgIHJlZi5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICAgICAgcmV0dXJuIHJlZjtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkVGVtcGxhdGVDaGlsZDxDPihcbiAgICAgICAgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPEM+LFxuICAgICAgICBjb250ZXh0PzogQyxcbiAgICApOiBFbWJlZGRlZFZpZXdSZWY8Qz4ge1xuICAgICAgICByZXR1cm4gdGhpcy52Y3IuY3JlYXRlRW1iZWRkZWRWaWV3KHRlbXBsYXRlUmVmLCBjb250ZXh0KTtcbiAgICB9XG59XG5cbi8qKlxuICogQWJzdHJhY3Qgc2VydmljZSBmb3IgZGlzcGxheWluZyBwb3J0YWxzXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBUdWlQb3J0YWxTZXJ2aWNlIHtcbiAgICBwcm90ZWN0ZWQgaG9zdD86IFR1aVBvcnRhbHM7XG5cbiAgICBwdWJsaWMgYXR0YWNoKGhvc3Q6IFR1aVBvcnRhbHMpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5ob3N0ID0gaG9zdDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkPEM+KGNvbXBvbmVudDogUG9seW1vcnBoZXVzQ29tcG9uZW50PEM+KTogQ29tcG9uZW50UmVmPEM+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2FmZUhvc3QuYWRkQ29tcG9uZW50Q2hpbGQoY29tcG9uZW50KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVtb3ZlPEM+KHtob3N0Vmlld306IENvbXBvbmVudFJlZjxDPik6IHZvaWQge1xuICAgICAgICB0aGlzLnJlbW92ZVRlbXBsYXRlKGhvc3RWaWV3KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkVGVtcGxhdGU8Qz4odGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPEM+LCBjb250ZXh0PzogQyk6IEVtYmVkZGVkVmlld1JlZjxDPiB7XG4gICAgICAgIHJldHVybiB0aGlzLnNhZmVIb3N0LmFkZFRlbXBsYXRlQ2hpbGQodGVtcGxhdGVSZWYsIGNvbnRleHQpO1xuICAgIH1cblxuICAgIHB1YmxpYyByZW1vdmVUZW1wbGF0ZTxDPih2aWV3UmVmOiBFbWJlZGRlZFZpZXdSZWY8Qz4gfCBWaWV3UmVmKTogdm9pZCB7XG4gICAgICAgIGlmICghdmlld1JlZi5kZXN0cm95ZWQpIHtcbiAgICAgICAgICAgIHZpZXdSZWYuZGVzdHJveSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBzYWZlSG9zdCgpOiBUdWlQb3J0YWxzIHtcbiAgICAgICAgaWYgKCF0aGlzLmhvc3QpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBUdWlOb0hvc3RFeGNlcHRpb24oKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmhvc3Q7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdHVpQXNQb3J0YWwocG9ydGFsOiB0eXBlb2YgVHVpUG9ydGFsU2VydmljZSk6IFByb3ZpZGVyIHtcbiAgICByZXR1cm4gdHVpUHJvdmlkZShUdWlQb3J0YWxTZXJ2aWNlLCBwb3J0YWwpO1xufVxuXG5leHBvcnQgY2xhc3MgVHVpTm9Ib3N0RXhjZXB0aW9uIGV4dGVuZHMgRXJyb3Ige1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcihuZ0Rldk1vZGUgPyAnUG9ydGFscyBjYW5ub3QgYmUgdXNlZCB3aXRob3V0IFR1aVBvcnRhbEhvc3RDb21wb25lbnQnIDogJycpO1xuICAgIH1cbn1cbiJdfQ==
|
@@ -1,3 +1,10 @@
|
|
1
|
+
import { inject } from '@angular/core';
|
1
2
|
export class TuiValueTransformer {
|
2
3
|
}
|
3
|
-
|
4
|
+
export function tuiValueTransformerFrom(token) {
|
5
|
+
return {
|
6
|
+
provide: TuiValueTransformer,
|
7
|
+
useFactory: () => inject(token).valueTransformer,
|
8
|
+
};
|
9
|
+
}
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsdWUtdHJhbnNmb3JtZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvY2xhc3Nlcy92YWx1ZS10cmFuc2Zvcm1lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRXJDLE1BQU0sT0FBZ0IsbUJBQW1CO0NBR3hDO0FBRUQsTUFBTSxVQUFVLHVCQUF1QixDQUVyQyxLQUF1QjtJQUNyQixPQUFPO1FBQ0gsT0FBTyxFQUFFLG1CQUFtQjtRQUM1QixVQUFVLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLGdCQUFnQjtLQUNuRCxDQUFDO0FBQ04sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHtGYWN0b3J5UHJvdmlkZXIsIFByb3ZpZGVyVG9rZW59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtpbmplY3R9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVHVpVmFsdWVUcmFuc2Zvcm1lcjxGcm9tLCBUbyA9IHVua25vd24+IHtcbiAgICBwdWJsaWMgYWJzdHJhY3QgdG9Db250cm9sVmFsdWUoY29tcG9uZW50VmFsdWU6IEZyb20pOiBUbztcbiAgICBwdWJsaWMgYWJzdHJhY3QgZnJvbUNvbnRyb2xWYWx1ZShjb250cm9sVmFsdWU6IFRvKTogRnJvbTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR1aVZhbHVlVHJhbnNmb3JtZXJGcm9tPFxuICAgIFQgZXh0ZW5kcyB7dmFsdWVUcmFuc2Zvcm1lcjogVHVpVmFsdWVUcmFuc2Zvcm1lcjx1bmtub3duPn0sXG4+KHRva2VuOiBQcm92aWRlclRva2VuPFQ+KTogRmFjdG9yeVByb3ZpZGVyIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBwcm92aWRlOiBUdWlWYWx1ZVRyYW5zZm9ybWVyLFxuICAgICAgICB1c2VGYWN0b3J5OiAoKSA9PiBpbmplY3QodG9rZW4pLnZhbHVlVHJhbnNmb3JtZXIsXG4gICAgfTtcbn1cbiJdfQ==
|
@@ -0,0 +1,3 @@
|
|
1
|
+
import { VERSION } from '@angular/core';
|
2
|
+
export const TUI_ALLOW_SIGNAL_WRITES = parseInt(VERSION.major, 10) >= 19 ? {} : { allowSignalWrites: true };
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxsb3ctc2lnbmFsLXdyaXRlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay9jb25zdGFudHMvYWxsb3ctc2lnbmFsLXdyaXRlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRXRDLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUNoQyxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBQyxpQkFBaUIsRUFBRSxJQUFJLEVBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHtDcmVhdGVFZmZlY3RPcHRpb25zfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7VkVSU0lPTn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBjb25zdCBUVUlfQUxMT1dfU0lHTkFMX1dSSVRFUzogQ3JlYXRlRWZmZWN0T3B0aW9ucyA9XG4gICAgcGFyc2VJbnQoVkVSU0lPTi5tYWpvciwgMTApID49IDE5ID8ge30gOiB7YWxsb3dTaWduYWxXcml0ZXM6IHRydWV9O1xuIl19
|
@@ -1,3 +1,4 @@
|
|
1
|
+
export * from './allow-signal-writes';
|
1
2
|
export * from './empty';
|
2
3
|
export * from './handlers';
|
3
4
|
export * from './matchers';
|
@@ -6,4 +7,4 @@ export * from './svg-node-filter';
|
|
6
7
|
export * from './unicode-chars';
|
7
8
|
export * from './used-icons';
|
8
9
|
export * from './version';
|
9
|
-
//# sourceMappingURL=data:application/json;base64,
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvY29uc3RhbnRzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxZQUFZLENBQUM7QUFDM0IsY0FBYyxZQUFZLENBQUM7QUFDM0IsY0FBYyxVQUFVLENBQUM7QUFDekIsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsV0FBVyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9hbGxvdy1zaWduYWwtd3JpdGVzJztcbmV4cG9ydCAqIGZyb20gJy4vZW1wdHknO1xuZXhwb3J0ICogZnJvbSAnLi9oYW5kbGVycyc7XG5leHBvcnQgKiBmcm9tICcuL21hdGNoZXJzJztcbmV4cG9ydCAqIGZyb20gJy4vcmVnZXhwJztcbmV4cG9ydCAqIGZyb20gJy4vc3ZnLW5vZGUtZmlsdGVyJztcbmV4cG9ydCAqIGZyb20gJy4vdW5pY29kZS1jaGFycyc7XG5leHBvcnQgKiBmcm9tICcuL3VzZWQtaWNvbnMnO1xuZXhwb3J0ICogZnJvbSAnLi92ZXJzaW9uJztcbiJdfQ==
|
@@ -47,6 +47,7 @@ export const TUI_USED_ICONS = [
|
|
47
47
|
'@tui.minus',
|
48
48
|
'@tui.file',
|
49
49
|
'@tui.trash',
|
50
|
+
'@tui.plus',
|
50
51
|
'@tui.phone',
|
51
52
|
'@tui.heart',
|
52
53
|
'@tui.heart-filled',
|
@@ -55,7 +56,6 @@ export const TUI_USED_ICONS = [
|
|
55
56
|
'@tui.rotate-ccw-square',
|
56
57
|
'@tui.arrow-left',
|
57
58
|
'@tui.arrow-right',
|
58
|
-
'@tui.plus',
|
59
59
|
'@tui.minimize',
|
60
60
|
'@tui.filter',
|
61
61
|
'@tui.layout-grid',
|
@@ -69,4 +69,4 @@ export const TUI_USED_ICONS = [
|
|
69
69
|
'@tui.move-up',
|
70
70
|
'@tui.clock',
|
71
71
|
];
|
72
|
-
//# sourceMappingURL=data:application/json;base64,
|
72
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlZC1pY29ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay9jb25zdGFudHMvdXNlZC1pY29ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRztJQUMxQixVQUFVO0lBQ1YsV0FBVztJQUNYLGVBQWU7SUFDZixpQkFBaUI7SUFDakIsY0FBYztJQUNkLFdBQVc7SUFDWCxrQkFBa0I7SUFDbEIsZUFBZTtJQUNmLFdBQVc7SUFDWCxVQUFVO0lBQ1YsYUFBYTtJQUNiLGdCQUFnQjtJQUNoQixhQUFhO0lBQ2IsWUFBWTtJQUNaLG9CQUFvQjtJQUNwQixhQUFhO0lBQ2IsVUFBVTtJQUNWLFdBQVc7SUFDWCxXQUFXO0lBQ1gsV0FBVztJQUNYLFdBQVc7SUFDWCxZQUFZO0lBQ1osV0FBVztJQUNYLGdCQUFnQjtJQUNoQixjQUFjO0lBQ2QsVUFBVTtJQUNWLG9CQUFvQjtJQUNwQixpQkFBaUI7SUFDakIsbUJBQW1CO0lBQ25CLHVCQUF1QjtJQUN2QixXQUFXO0lBQ1gsbUJBQW1CO0lBQ25CLGVBQWU7SUFDZixtQkFBbUI7SUFDbkIsa0JBQWtCO0lBQ2xCLFFBQVE7SUFDUixvQkFBb0I7SUFDcEIsZUFBZTtJQUNmLG1CQUFtQjtJQUNuQixZQUFZO0lBQ1osV0FBVztJQUNYLFlBQVk7SUFDWixXQUFXO0lBQ1gsWUFBWTtJQUNaLFlBQVk7SUFDWixtQkFBbUI7SUFDbkIsV0FBVztJQUNYLGVBQWU7SUFDZix3QkFBd0I7SUFDeEIsaUJBQWlCO0lBQ2pCLGtCQUFrQjtJQUNsQixlQUFlO0lBQ2YsYUFBYTtJQUNiLGtCQUFrQjtJQUNsQixvQkFBb0I7SUFDcEIsaUJBQWlCO0lBQ2pCLHNCQUFzQjtJQUN0QixnQkFBZ0I7SUFDaEIscUJBQXFCO0lBQ3JCLGdCQUFnQjtJQUNoQixtQkFBbUI7SUFDbkIsY0FBYztJQUNkLFlBQVk7Q0FDTixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZGVzY3JpcHRpb246XG4gKiBBVVRPR0VORVJBVEVEXG4gKlxuICogQXJyYXkgb2YgaWNvbnMgdXNlZCBpbiB0YWlnYS11aSBjb21wb25lbnRzXG4gKi9cbmV4cG9ydCBjb25zdCBUVUlfVVNFRF9JQ09OUyA9IFtcbiAgICAnQHR1aS5taXInLFxuICAgICdAdHVpLnZpc2EnLFxuICAgICdAdHVpLmVsZWN0cm9uJyxcbiAgICAnQHR1aS5tYXN0ZXJjYXJkJyxcbiAgICAnQHR1aS5tYWVzdHJvJyxcbiAgICAnQHR1aS5hbWV4JyxcbiAgICAnQHR1aS5kaW5lcnMtY2x1YicsXG4gICAgJ0B0dWkuZGlzY292ZXInLFxuICAgICdAdHVpLmh1bW8nLFxuICAgICdAdHVpLmpjYicsXG4gICAgJ0B0dWkucnUtcGF5JyxcbiAgICAnQHR1aS51bmlvbi1wYXknLFxuICAgICdAdHVpLnV6Y2FyZCcsXG4gICAgJ0B0dWkudmVydmUnLFxuICAgICdAdHVpLmV4dGVybmFsLWxpbmsnLFxuICAgICdAdHVpLnNlYXJjaCcsXG4gICAgJ0B0dWkuc3VuJyxcbiAgICAnQHR1aS5tb29uJyxcbiAgICAnQHR1aS5jb2RlJyxcbiAgICAnQHR1aS5tZW51JyxcbiAgICAnQHR1aS5jb3B5JyxcbiAgICAnQHR1aS5jaGVjaycsXG4gICAgJ0B0dWkubGluaycsXG4gICAgJ0B0dWkubGFuZ3VhZ2VzJyxcbiAgICAnQHR1aS5leWUtb2ZmJyxcbiAgICAnQHR1aS5leWUnLFxuICAgICdAdHVpLmdyaXAtdmVydGljYWwnLFxuICAgICdAdHVpLmNoZXZyb24tdXAnLFxuICAgICdAdHVpLmNoZXZyb24tZG93bicsXG4gICAgJ0B0dWkuY2hldnJvbnMtdXAtZG93bicsXG4gICAgJ0B0dWkuaW5mbycsXG4gICAgJ0B0dWkuY2lyY2xlLWNoZWNrJyxcbiAgICAnQHR1aS5jaXJjbGUteCcsXG4gICAgJ0B0dWkuY2lyY2xlLWFsZXJ0JyxcbiAgICAnQHR1aS5jaXJjbGUtaGVscCcsXG4gICAgJ0B0dWkueCcsXG4gICAgJ0B0dWkuY2hldnJvbi1yaWdodCcsXG4gICAgJ0B0dWkuZWxsaXBzaXMnLFxuICAgICdAdHVpLmNoZXZyb24tbGVmdCcsXG4gICAgJ0B0dWkubWludXMnLFxuICAgICdAdHVpLmZpbGUnLFxuICAgICdAdHVpLnRyYXNoJyxcbiAgICAnQHR1aS5wbHVzJyxcbiAgICAnQHR1aS5waG9uZScsXG4gICAgJ0B0dWkuaGVhcnQnLFxuICAgICdAdHVpLmhlYXJ0LWZpbGxlZCcsXG4gICAgJ0B0dWkuc3RhcicsXG4gICAgJ0B0dWkuY2FsZW5kYXInLFxuICAgICdAdHVpLnJvdGF0ZS1jY3ctc3F1YXJlJyxcbiAgICAnQHR1aS5hcnJvdy1sZWZ0JyxcbiAgICAnQHR1aS5hcnJvdy1yaWdodCcsXG4gICAgJ0B0dWkubWluaW1pemUnLFxuICAgICdAdHVpLmZpbHRlcicsXG4gICAgJ0B0dWkubGF5b3V0LWdyaWQnLFxuICAgICdAdHVpLm1vdmUtdXAtcmlnaHQnLFxuICAgICdAdHVpLm1vdmUtcmlnaHQnLFxuICAgICdAdHVpLm1vdmUtZG93bi1yaWdodCcsXG4gICAgJ0B0dWkubW92ZS1kb3duJyxcbiAgICAnQHR1aS5tb3ZlLWRvd24tbGVmdCcsXG4gICAgJ0B0dWkubW92ZS1sZWZ0JyxcbiAgICAnQHR1aS5tb3ZlLXVwLWxlZnQnLFxuICAgICdAdHVpLm1vdmUtdXAnLFxuICAgICdAdHVpLmNsb2NrJyxcbl0gYXMgY29uc3Q7XG4iXX0=
|
@@ -1,2 +1,2 @@
|
|
1
|
-
export const TUI_VERSION = '4.
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
1
|
+
export const TUI_VERSION = '4.19.0-canary.2a86fb0';
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay9jb25zdGFudHMvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsdUJBQXVCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgVFVJX1ZFUlNJT04gPSAnNC4xOS4wLWNhbmFyeS4yYTg2ZmIwJztcbiJdfQ==
|
@@ -1,7 +1,7 @@
|
|
1
1
|
/// <reference types="@taiga-ui/tsconfig/ng-dev-mode" />
|
2
2
|
import { CHAR_NO_BREAK_SPACE } from '@taiga-ui/cdk/constants';
|
3
3
|
import { tuiInRange } from '@taiga-ui/cdk/utils/math';
|
4
|
-
import { HOURS_IN_DAY, MILLISECONDS_IN_DAY, MILLISECONDS_IN_HOUR, MILLISECONDS_IN_MINUTE, MINUTES_IN_HOUR, SECONDS_IN_MINUTE, } from './date-time';
|
4
|
+
import { HOURS_IN_DAY, MILLISECONDS_IN_DAY, MILLISECONDS_IN_HOUR, MILLISECONDS_IN_MINUTE, MILLISECONDS_IN_SECOND, MINUTES_IN_HOUR, SECONDS_IN_MINUTE, } from './date-time';
|
5
5
|
/**
|
6
6
|
* Immutable time object with hours, minutes, seconds and ms
|
7
7
|
*/
|
@@ -99,21 +99,15 @@ export class TuiTime {
|
|
99
99
|
* Shifts time by hours and minutes
|
100
100
|
*/
|
101
101
|
shift({ hours = 0, minutes = 0, seconds = 0, ms = 0 }) {
|
102
|
-
const
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
const
|
110
|
-
|
111
|
-
const hoursInMinutes = minutesToAdd < 0
|
112
|
-
? Math.ceil(minutesToAdd / 60)
|
113
|
-
: Math.floor(minutesToAdd / 60);
|
114
|
-
const hoursToAdd = hoursInMinutes + hours;
|
115
|
-
const newHours = (24 + this.hours + (hoursToAdd % 24)) % 24;
|
116
|
-
return new TuiTime(newHours, newMinutes, newSeconds, newMs);
|
102
|
+
const totalMs = this.toAbsoluteMilliseconds() +
|
103
|
+
hours * MILLISECONDS_IN_HOUR +
|
104
|
+
minutes * MILLISECONDS_IN_MINUTE +
|
105
|
+
seconds * MILLISECONDS_IN_SECOND +
|
106
|
+
ms;
|
107
|
+
const totalSeconds = Math.floor(totalMs / MILLISECONDS_IN_SECOND);
|
108
|
+
const totalMinutes = Math.floor(totalSeconds / SECONDS_IN_MINUTE);
|
109
|
+
const totalHours = Math.floor(totalMinutes / MINUTES_IN_HOUR);
|
110
|
+
return new TuiTime(this.normalizeToRange(totalHours, HOURS_IN_DAY), this.normalizeToRange(totalMinutes, MINUTES_IN_HOUR), this.normalizeToRange(totalSeconds, SECONDS_IN_MINUTE), this.normalizeToRange(totalMs, MILLISECONDS_IN_SECOND));
|
117
111
|
}
|
118
112
|
/**
|
119
113
|
* Converts TuiTime to string
|
@@ -160,5 +154,8 @@ export class TuiTime {
|
|
160
154
|
}
|
161
155
|
return { meridiem, hours: hours % 12 };
|
162
156
|
}
|
157
|
+
normalizeToRange(value, modulus) {
|
158
|
+
return ((value % modulus) + modulus) % modulus;
|
159
|
+
}
|
163
160
|
}
|
164
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay9kYXRlLXRpbWUvdGltZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx3REFBd0Q7QUFFeEQsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDNUQsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBRXBELE9BQU8sRUFDSCxZQUFZLEVBQ1osbUJBQW1CLEVBQ25CLG9CQUFvQixFQUNwQixzQkFBc0IsRUFDdEIsZUFBZSxFQUNmLGlCQUFpQixHQUNwQixNQUFNLGFBQWEsQ0FBQztBQUdyQjs7R0FFRztBQUNILE1BQU0sT0FBTyxPQUFPO0lBQ2hCLFlBQ29CLEtBQWEsRUFDYixPQUFlLEVBQ2YsVUFBVSxDQUFDLEVBQ1gsS0FBSyxDQUFDO1FBSE4sVUFBSyxHQUFMLEtBQUssQ0FBUTtRQUNiLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFDZixZQUFPLEdBQVAsT0FBTyxDQUFJO1FBQ1gsT0FBRSxHQUFGLEVBQUUsQ0FBSTtRQUV0QixTQUFTO1lBQ0wsT0FBTyxDQUFDLE1BQU07WUFDVixvREFBb0Q7WUFDcEQsbUZBQW1GO1lBQ25GLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDO2dCQUNuQixVQUFVLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxRQUFRLENBQUM7Z0JBQzlCLE1BQU0sQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDO2dCQUN6QixVQUFVLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxlQUFlLENBQUM7Z0JBQ3ZDLE1BQU0sQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDO2dCQUN6QixVQUFVLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxpQkFBaUIsQ0FBQztnQkFDekMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7Z0JBQ3BCLFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFF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QUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFTyxZQUFZLENBQUMsS0FBYTtRQUM5QixNQUFNLFFBQVEsR0FBRyxLQUFLLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUUzQyxJQUFJLEtBQUssS0FBSyxDQUFDLElBQUksS0FBSyxLQUFLLEVBQUUsRUFBRTtZQUM3QixPQUFPLEVBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUMsQ0FBQztTQUNoQztRQUVELE9BQU8sRUFBQyxRQUFRLEVBQUUsS0FBSyxFQUFFLEtBQUssR0FBRyxFQUFFLEVBQUMsQ0FBQztJQUN6QyxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyIvLy8gPHJlZmVyZW5jZSB0eXBlcz1cIkB0YWlnYS11aS90c2NvbmZpZy9uZy1kZXYtbW9kZVwiIC8+XG5cbmltcG9ydCB7Q0hBUl9OT19CUkVBS19TUEFDRX0gZnJvbSAnQHRhaWdhLXVpL2Nkay9jb25zdGFudHMnO1xuaW1wb3J0IHt0dWlJblJhbmdlfSBmcm9tICdAdGFpZ2EtdWkvY2RrL3V0aWxzL21hdGgnO1xuXG5pbXBvcnQge1xuICAgIEhPVVJTX0lOX0RBWSxcbiAgICBNSUxMSVNFQ09ORFNfSU5fREFZLFxuICAgIE1JTExJU0VDT05EU19JTl9IT1VSLFxuICAgIE1JTExJU0VDT05EU19JTl9NSU5VVEUsXG4gICAgTUlOVVRFU19JTl9IT1VSLFxuICAgIFNFQ09ORFNfSU5fTUlOVVRFLFxufSBmcm9tICcuL2RhdGUtdGltZSc7XG5pbXBvcnQgdHlwZSB7VHVpVGltZUxpa2UsIFR1aVRpbWVNb2RlfSBmcm9tICcuL3R5cGVzJztcblxuLyoqXG4gKiBJbW11dGFibGUgdGltZSBvYmplY3Qgd2l0aCBob3VycywgbWludXRlcywgc2Vjb25kcyBhbmQgbXNcbiAqL1xuZXhwb3J0IGNsYXNzIFR1aVRpbWUgaW1wbGVtZW50cyBUdWlUaW1lTGlrZSB7XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyByZWFkb25seSBob3VyczogbnVtYmVyLFxuICAgICAgICBwdWJsaWMgcmVhZG9ubHkgbWludXRlczogbnVtYmVyLFxuICAgICAgICBwdWJsaWMgcmVhZG9ubHkgc2Vjb25kcyA9IDAsXG4gICAgICAgIHB1YmxpYyByZWFkb25seSBtcyA9IDAsXG4gICAgKSB7XG4gICAgICAgIG5nRGV2TW9kZSAmJlxuICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoXG4gICAgICAgICAgICAgICAgLy8gQ3VycmVudGx5IGBUdWlUaW1lYCBjb3VsZCBoYXZlIGhvdXJzIG1vcmUgdGhhbiAyM1xuICAgICAgICAgICAgICAgIC8vIGluIG9yZGVyIHRvIG5vdCBicmVhayBjdXJyZW50IGJlaGF2aW91ciBvZiBgaXNWYWxpZFRpbWVgIHRoZSBsb2dpYyBpcyBkdXBsaWNhdGVkXG4gICAgICAgICAgICAgICAgTnVtYmVyLmlzSW50ZWdlcihob3VycykgJiZcbiAgICAgICAgICAgICAgICAgICAgdHVpSW5SYW5nZShob3VycywgMCwgSW5maW5pdHkpICYmXG4gICAgICAgICAgICAgICAgICAgIE51bWJlci5pc0ludGVnZXIobWludXRlcykgJiZcbiAgICAgICAgICAgICAgICAgICAgdHVpSW5SYW5nZShtaW51dGVzLCAwLCBNSU5VVEVTX0lOX0hPVVIpICYmXG4gICAgICAgICAgICAgICAgICAgIE51bWJlci5pc0ludGVnZXIoc2Vjb25kcykgJiZcbiAgICAgICAgICAgICAgICAgICAgdHVpSW5SYW5nZShzZWNvbmRzLCAwLCBTRUNPTkRTX0lOX01JTlVURSkgJiZcbiAgICAgICAgICAgICAgICAgICAgTnVtYmVyLmlzSW50ZWdlcihtcykgJiZcbiAgICAgICAgICAgICAgICAgICAgdHVpSW5SYW5nZShtcywgMCwgMTAwMCksXG4gICAgICAgICAgICAgICAgJ1RpbWUgbXVzdCBiZSByZWFsLCBidXQgZ290OicsXG4gICAgICAgICAgICAgICAgaG91cnMsXG4gICAgICAgICAgICAgICAgbWludXRlcyxcbiAgICAgICAgICAgICAgICBzZWNvbmRzLFxuICAgICAgICAgICAgICAgIG1zLFxuICAgICAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgdGltZSBpcyB2YWxpZFxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgaXNWYWxpZFRpbWUoXG4gICAgICAgIGhvdXJzOiBudW1iZXIsXG4gICAgICAgIG1pbnV0ZXM6IG51bWJlcixcbiAgICAgICAgc2Vjb25kcyA9IDAsXG4gICAgICAgIG1zID0gMCxcbiAgICApOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIE51bWJlci5pc0ludGVnZXIoaG91cnMpICYmXG4gICAgICAgICAgICB0dWlJblJhbmdlKGhvdXJzLCAwLCBIT1VSU19JTl9EQVkpICYmXG4gICAgICAgICAgICBOdW1iZXIuaXNJbnRlZ2VyKG1pbnV0ZXMpICYmXG4gICAgICAgICAgICB0dWlJblJhbmdlKG1pbnV0ZXMsIDAsIE1JTlVURVNfSU5fSE9VUikgJiZcbiAgICAgICAgICAgIE51bWJlci5pc0ludGVnZXIoc2Vjb25kcykgJiZcbiAgICAgICAgICAgIHR1aUluUmFuZ2Uoc2Vjb25kcywgMCwgU0VDT05EU19JTl9NSU5VVEUpICYmXG4gICAgICAgICAgICBOdW1iZXIuaXNJbnRlZ2VyKG1zKSAmJlxuICAgICAgICAgICAgdHVpSW5SYW5nZShtcywgMCwgMTAwMClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDdXJyZW50IFVUQyB0aW1lLlxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgY3VycmVudCgpOiBUdWlUaW1lIHtcbiAgICAgICAgcmV0dXJuIFR1aVRpbWUuZnJvbUFic29sdXRlTWlsbGlzZWNvbmRzKERhdGUubm93KCkgJSBNSUxMSVNFQ09ORFNfSU5fREFZKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDdXJyZW50IHRpbWUgaW4gbG9jYWwgdGltZXpvbmVcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGN1cnJlbnRMb2NhbCgpOiBUdWlUaW1lIHtcbiAgICAgICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKCk7XG5cbiAgICAgICAgcmV0dXJuIFR1aVRpbWUuZnJvbUFic29sdXRlTWlsbGlzZWNvbmRzKFxuICAgICAgICAgICAgKERhdGUubm93KCkgLSBkYXRlLmdldFRpbWV6b25lT2Zmc2V0KCkgKiBNSUxMSVNFQ09ORFNfSU5fTUlOVVRFKSAlXG4gICAgICAgICAgICAgICAgTUlMTElTRUNPTkRTX0lOX0RBWSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYWxjdWxhdGVzIFR1aVRpbWUgZnJvbSBtaWxsaXNlY29uZHNcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGZyb21BYnNvbHV0ZU1pbGxpc2Vjb25kcyhtaWxsaXNlY29uZHM6IG51bWJlcik6IFR1aVRpbWUge1xuICAgICAgICBuZ0Rldk1vZGUgJiYgY29uc29sZS5hc3NlcnQoTnVtYmVyLmlzSW50ZWdlcihtaWxsaXNlY29uZHMpKTtcbiAgICAgICAgbmdEZXZNb2RlICYmXG4gICAgICAgICAgICBjb25zb2xlLmFzc2VydChcbiAgICAgICAgICAgICAgICB0dWlJblJhbmdlKG1pbGxpc2Vjb25kcywgMCwgTUlMTElTRUNPTkRTX0lOX0RBWSksXG4gICAgICAgICAgICAgICAgYE1pbGxpc2Vjb25kcyBtdXN0IGJlIGJlbG93ICR7TUlMTElTRUNPTkRTX0lOX0RBWX0gKG1pbGxpc2Vjb25kcyBpbiBhIGRheSkuYCxcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgY29uc3QgaG91cnMgPSBNYXRoLmZsb29yKG1pbGxpc2Vjb25kcyAvIE1JTExJU0VDT05EU19JTl9IT1VSKTtcbiAgICAgICAgY29uc3QgbWludXRlcyA9IE1hdGguZmxvb3IoXG4gICAgICAgICAgICAobWlsbGlzZWNvbmRzICUgTUlMTElTRUNPTkRTX0lOX0hPVVIpIC8gTUlMTElTRUNPTkRTX0lOX01JTlVURSxcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3Qgc2Vjb25kcyA9XG4gICAgICAgICAgICBNYXRoLmZsb29yKFxuICAgICAgICAgICAgICAgICgobWlsbGlzZWNvbmRzICUgTUlMTElTRUNPTkRTX0lOX0hPVVIpICUgTUlMTElTRUNPTkRTX0lOX01JTlVURSkgLyAxMDAwLFxuICAgICAgICAgICAgKSB8fCAwO1xuICAgICAgICBjb25zdCBtcyA9XG4gICAgICAgICAgICBNYXRoLmZsb29yKFxuICAgICAgICAgICAgICAgICgobWlsbGlzZWNvbmRzICUgTUlMTElTRUNPTkRTX0lOX0hPVVIpICUgTUlMTElTRUNPTkRTX0lOX01JTlVURSkgJSAxMDAwLFxuICAgICAgICAgICAgKSB8fCAwO1xuXG4gICAgICAgIHJldHVybiBuZXcgVHVpVGltZShob3VycywgbWludXRlcywgc2Vjb25kcywgbXMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBhcnNlcyBzdHJpbmcgaW50byBUdWlUaW1lIG9iamVjdFxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgZnJvbVN0cmluZyh0aW1lOiBzdHJpbmcpOiBUdWlUaW1lIHtcbiAgICAgICAgY29uc3QgaG91cnMgPSB0aGlzLnBhcnNlSG91cnModGltZSk7XG4gICAgICAgIGNvbnN0IG1pbnV0ZXMgPSBOdW1iZXIodGltZS5zbGljZSgzLCA1KSkgfHwgMDtcbiAgICAgICAgY29uc3Qgc2Vjb25kcyA9IE51bWJlcih0aW1lLnNsaWNlKDYsIDgpKSB8fCAwO1xuICAgICAgICBjb25zdCBtcyA9IE51bWJlcih0aW1lLnNsaWNlKDksIDEyKSkgfHwgMDtcblxuICAgICAgICByZXR1cm4gbmV3IFR1aVRpbWUoaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMsIG1zKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBEYXRlIG9iamVjdCBpbnRvIFR1aVRpbWVcbiAgICAgKiBAcGFyYW0gZGF0ZVxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgZnJvbUxvY2FsTmF0aXZlRGF0ZShkYXRlOiBEYXRlKTogVHVpVGltZSB7XG4gICAgICAgIHJldHVybiBuZXcgVHVpVGltZShcbiAgICAgICAgICAgIGRhdGUuZ2V0SG91cnMoKSxcbiAgICAgICAgICAgIGRhdGUuZ2V0TWludXRlcygpLFxuICAgICAgICAgICAgZGF0ZS5nZXRTZWNvbmRzKCksXG4gICAgICAgICAgICBkYXRlLmdldE1pbGxpc2Vjb25kcygpLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIHBhcnNlTWVyaWRpZW1QZXJpb2QodGltZTogc3RyaW5nKTogJ0FNJyB8ICdQTScgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICgvW0FQXU0vLmV4ZWModGltZS50b1VwcGVyQ2FzZSgpLnJlcGxhY2VBbGwoL1xcVy9nLCAnJykpPy5bMF0gYXNcbiAgICAgICAgICAgICAgICB8ICdBTSdcbiAgICAgICAgICAgICAgICB8ICdQTScpIHx8IG51bGxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBwYXJzZUhvdXJzKHRpbWU6IHN0cmluZyk6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IGhvdXJzID0gTnVtYmVyKHRpbWUuc2xpY2UoMCwgMikpO1xuICAgICAgICBjb25zdCBtZXJpZGllbSA9IHRoaXMucGFyc2VNZXJpZGllbVBlcmlvZCh0aW1lKTtcblxuICAgICAgICBpZiAoIW1lcmlkaWVtKSB7XG4gICAgICAgICAgICByZXR1cm4gaG91cnM7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaG91cnMgPT09IDEyKSB7XG4gICAgICAgICAgICByZXR1cm4gbWVyaWRpZW0gPT09ICdBTScgPyAwIDogMTI7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbWVyaWRpZW0gPT09ICdQTScgPyBob3VycyArIDEyIDogaG91cnM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2hpZnRzIHRpbWUgYnkgaG91cnMgYW5kIG1pbnV0ZXNcbiAgICAgKi9cbiAgICBwdWJsaWMgc2hpZnQoe2hvdXJzID0gMCwgbWludXRlcyA9IDAsIHNlY29uZHMgPSAwLCBtcyA9IDB9OiBUdWlUaW1lTGlrZSk6IFR1aVRpbWUge1xuICAgICAgICBjb25zdCBuZXdNcyA9ICgxMDAwICsgdGhpcy5tcyArIChtcyAlIDEwMDApKSAlIDEwMDA7XG5cbiAgICAgICAgY29uc3Qgc2Vjb25kc0luTXMgPSBtcyA8IDAgPyBNYXRoLmNlaWwobXMgLyAxMDAwKSA6IE1hdGguZmxvb3IobXMgLyAxMDAwKTtcbiAgICAgICAgY29uc3Qgc2Vjb25kc1RvQWRkID0gc2Vjb25kc0luTXMgKyBzZWNvbmRzO1xuICAgICAgICBjb25zdCBuZXdTZWNvbmRzID0gKDYwICsgdGhpcy5zZWNvbmRzICsgKHNlY29uZHNUb0FkZCAlIDYwKSkgJSA2MDtcblxuICAgICAgICBjb25zdCBtaW51dGVzSW5TZWNvbmRzID1cbiAgICAgICAgICAgIHNlY29uZHNUb0FkZCA8IDBcbiAgICAgICAgICAgICAgICA/IE1hdGguY2VpbChzZWNvbmRzVG9BZGQgLyA2MClcbiAgICAgICAgICAgICAgICA6IE1hdGguZmxvb3Ioc2Vjb25kc1RvQWRkIC8gNjApO1xuICAgICAgICBjb25zdCBtaW51dGVzVG9BZGQgPSBtaW51dGVzSW5TZWNvbmRzICsgbWludXRlcztcbiAgICAgICAgY29uc3QgbmV3TWludXRlcyA9ICg2MCArIHRoaXMubWludXRlcyArIChtaW51dGVzVG9BZGQgJSA2MCkpICUgNjA7XG5cbiAgICAgICAgY29uc3QgaG91cnNJbk1pbnV0ZXMgPVxuICAgICAgICAgICAgbWludXRlc1RvQWRkIDwgMFxuICAgICAgICAgICAgICAgID8gTWF0aC5jZWlsKG1pbnV0ZXNUb0FkZCAvIDYwKVxuICAgICAgICAgICAgICAgIDogTWF0aC5mbG9vcihtaW51dGVzVG9BZGQgLyA2MCk7XG4gICAgICAgIGNvbnN0IGhvdXJzVG9BZGQgPSBob3Vyc0luTWludXRlcyArIGhvdXJzO1xuICAgICAgICBjb25zdCBuZXdIb3VycyA9ICgyNCArIHRoaXMuaG91cnMgKyAoaG91cnNUb0FkZCAlIDI0KSkgJSAyNDtcblxuICAgICAgICByZXR1cm4gbmV3IFR1aVRpbWUobmV3SG91cnMsIG5ld01pbnV0ZXMsIG5ld1NlY29uZHMsIG5ld01zKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBUdWlUaW1lIHRvIHN0cmluZ1xuICAgICAqL1xuICAgIHB1YmxpYyB0b1N0cmluZyhtb2RlPzogVHVpVGltZU1vZGUpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBuZWVkQWRkTXMgPSBtb2RlPy5zdGFydHNXaXRoKCdISDpNTTpTUy5NU1MnKSB8fCAoIW1vZGUgJiYgdGhpcy5tcyA+IDApO1xuICAgICAgICBjb25zdCBuZWVkQWRkU2Vjb25kcyA9XG4gICAgICAgICAgICBuZWVkQWRkTXMgfHwgbW9kZT8uc3RhcnRzV2l0aCgnSEg6TU06U1MnKSB8fCAoIW1vZGUgJiYgdGhpcy5zZWNvbmRzID4gMCk7XG4gICAgICAgIGNvbnN0IHtob3VycyA9IHRoaXMuaG91cnMsIG1lcmlkaWVtID0gJyd9ID0gbW9kZT8uaW5jbHVkZXMoJ0FBJylcbiAgICAgICAgICAgID8gdGhpcy50b1R3ZWx2ZUhvdXIodGhpcy5ob3VycylcbiAgICAgICAgICAgIDoge307XG4gICAgICAgIGNvbnN0IGhoTW0gPSBgJHt0aGlzLmZvcm1hdFRpbWUoaG91cnMpfToke3RoaXMuZm9ybWF0VGltZSh0aGlzLm1pbnV0ZXMpfWA7XG4gICAgICAgIGNvbnN0IHNzID0gbmVlZEFkZFNlY29uZHMgPyBgOiR7dGhpcy5mb3JtYXRUaW1lKHRoaXMuc2Vjb25kcyl9YCA6ICcnO1xuICAgICAgICBjb25zdCBtc3MgPSBuZWVkQWRkTXMgPyBgLiR7dGhpcy5mb3JtYXRUaW1lKHRoaXMubXMsIDMpfWAgOiAnJztcbiAgICAgICAgY29uc3QgYWEgPSBtZXJpZGllbSAmJiBgJHtDSEFSX05PX0JSRUFLX1NQQUNFfSR7bWVyaWRpZW19YDtcblxuICAgICAgICByZXR1cm4gYCR7aGhNbX0ke3NzfSR7bXNzfSR7YWF9YDtcbiAgICB9XG5cbiAgICBwdWJsaWMgdmFsdWVPZigpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy50b0Fic29sdXRlTWlsbGlzZWNvbmRzKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgcHJpbWl0aXZlIHZhbHVlIG9mIHRoZSBnaXZlbiBEYXRlIG9iamVjdC5cbiAgICAgKiBEZXBlbmRpbmcgb24gdGhlIGFyZ3VtZW50LCB0aGUgbWV0aG9kIGNhbiByZXR1cm4gZWl0aGVyIGEgc3RyaW5nIG9yIGEgbnVtYmVyLlxuICAgICAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvRGF0ZS9AQHRvUHJpbWl0aXZlXG4gICAgICovXG4gICAgcHVibGljIFtTeW1ib2wudG9QcmltaXRpdmVdKGhpbnQ6IHN0cmluZyk6IG51bWJlciB8IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBEYXRlLnByb3RvdHlwZVtTeW1ib2wudG9QcmltaXRpdmVdLmNhbGwodGhpcywgaGludCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgVHVpVGltZSB0byBtaWxsaXNlY29uZHNcbiAgICAgKi9cbiAgICBwdWJsaWMgdG9BYnNvbHV0ZU1pbGxpc2Vjb25kcygpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy5ob3VycyAqIE1JTExJU0VDT05EU19JTl9IT1VSICtcbiAgICAgICAgICAgIHRoaXMubWludXRlcyAqIE1JTExJU0VDT05EU19JTl9NSU5VVEUgK1xuICAgICAgICAgICAgdGhpcy5zZWNvbmRzICogMTAwMCArXG4gICAgICAgICAgICB0aGlzLm1zXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmb3JtYXRUaW1lKHRpbWU6IG51bWJlciwgZGlnaXRzID0gMik6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBTdHJpbmcodGltZSkucGFkU3RhcnQoZGlnaXRzLCAnMCcpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdG9Ud2VsdmVIb3VyKGhvdXJzOiBudW1iZXIpOiB7aG91cnM6IG51bWJlcjsgbWVyaWRpZW06IHN0cmluZ30ge1xuICAgICAgICBjb25zdCBtZXJpZGllbSA9IGhvdXJzID49IDEyID8gJ1BNJyA6ICdBTSc7XG5cbiAgICAgICAgaWYgKGhvdXJzID09PSAwIHx8IGhvdXJzID09PSAxMikge1xuICAgICAgICAgICAgcmV0dXJuIHttZXJpZGllbSwgaG91cnM6IDEyfTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7bWVyaWRpZW0sIGhvdXJzOiBob3VycyAlIDEyfTtcbiAgICB9XG59XG4iXX0=
|
161
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay9kYXRlLXRpbWUvdGltZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx3REFBd0Q7QUFFeEQsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDNUQsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBRXBELE9BQU8sRUFDSCxZQUFZLEVBQ1osbUJBQW1CLEVBQ25CLG9CQUFvQixFQUNwQixzQkFBc0IsRUFDdEIsc0JBQXNCLEVBQ3RCLGVBQWUsRUFDZixpQkFBaUIsR0FDcEIsTUFBTSxhQUFhLENBQUM7QUFHckI7O0dBRUc7QUFDSCxNQUFNLE9BQU8sT0FBTztJQUNoQixZQUNvQixLQUFhLEVBQ2IsT0FBZSxFQUNmLFVBQVUsQ0FBQyxFQUNYLEtBQUssQ0FBQztRQUhOLFVBQUssR0FBTCxLQUFLLENBQVE7UUFDYixZQUFPLEdBQVAsT0FBTyxDQUFRO1FBQ2YsWUFBTyxHQUFQLE9BQU8sQ0FBSTtRQUNYLE9BQUUsR0FBRixFQUFFLENBQUk7UUFFdEIsU0FBUztZQUNMLE9BQU8sQ0FBQyxNQUFNO1lBQ1Ysb0RBQW9EO1lBQ3BELG1GQUFtRjtZQUNuRixNQUFNLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQztnQkFDbkIsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsUUFBUSxDQUFDO2dCQUM5QixNQUFNLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQztnQkFDekIsVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsZUFBZSxDQUFDO2dCQUN2QyxNQUFNLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQztnQkFDekIsVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsaUJBQWlCLENBQUM7Z0JBQ3pDLE1BQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO2dCQUNwQixVQUFVLENBQUMsRUFBRSxF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dHNjb25maWcvbmctZGV2LW1vZGVcIiAvPlxuXG5pbXBvcnQge0NIQVJfTk9fQlJFQUtfU1BBQ0V9IGZyb20gJ0B0YWlnYS11aS9jZGsvY29uc3RhbnRzJztcbmltcG9ydCB7dHVpSW5SYW5nZX0gZnJvbSAnQHRhaWdhLXVpL2Nkay91dGlscy9tYXRoJztcblxuaW1wb3J0IHtcbiAgICBIT1VSU19JTl9EQVksXG4gICAgTUlMTElTRUNPTkRTX0lOX0RBWSxcbiAgICBNSUxMSVNFQ09ORFNfSU5fSE9VUixcbiAgICBNSUxMSVNFQ09ORFNfSU5fTUlOVVRFLFxuICAgIE1JTExJU0VDT05EU19JTl9TRUNPTkQsXG4gICAgTUlOVVRFU19JTl9IT1VSLFxuICAgIFNFQ09ORFNfSU5fTUlOVVRFLFxufSBmcm9tICcuL2RhdGUtdGltZSc7XG5pbXBvcnQgdHlwZSB7VHVpVGltZUxpa2UsIFR1aVRpbWVNb2RlfSBmcm9tICcuL3R5cGVzJztcblxuLyoqXG4gKiBJbW11dGFibGUgdGltZSBvYmplY3Qgd2l0aCBob3VycywgbWludXRlcywgc2Vjb25kcyBhbmQgbXNcbiAqL1xuZXhwb3J0IGNsYXNzIFR1aVRpbWUgaW1wbGVtZW50cyBUdWlUaW1lTGlrZSB7XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyByZWFkb25seSBob3VyczogbnVtYmVyLFxuICAgICAgICBwdWJsaWMgcmVhZG9ubHkgbWludXRlczogbnVtYmVyLFxuICAgICAgICBwdWJsaWMgcmVhZG9ubHkgc2Vjb25kcyA9IDAsXG4gICAgICAgIHB1YmxpYyByZWFkb25seSBtcyA9IDAsXG4gICAgKSB7XG4gICAgICAgIG5nRGV2TW9kZSAmJlxuICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoXG4gICAgICAgICAgICAgICAgLy8gQ3VycmVudGx5IGBUdWlUaW1lYCBjb3VsZCBoYXZlIGhvdXJzIG1vcmUgdGhhbiAyM1xuICAgICAgICAgICAgICAgIC8vIGluIG9yZGVyIHRvIG5vdCBicmVhayBjdXJyZW50IGJlaGF2aW91ciBvZiBgaXNWYWxpZFRpbWVgIHRoZSBsb2dpYyBpcyBkdXBsaWNhdGVkXG4gICAgICAgICAgICAgICAgTnVtYmVyLmlzSW50ZWdlcihob3VycykgJiZcbiAgICAgICAgICAgICAgICAgICAgdHVpSW5SYW5nZShob3VycywgMCwgSW5maW5pdHkpICYmXG4gICAgICAgICAgICAgICAgICAgIE51bWJlci5pc0ludGVnZXIobWludXRlcykgJiZcbiAgICAgICAgICAgICAgICAgICAgdHVpSW5SYW5nZShtaW51dGVzLCAwLCBNSU5VVEVTX0lOX0hPVVIpICYmXG4gICAgICAgICAgICAgICAgICAgIE51bWJlci5pc0ludGVnZXIoc2Vjb25kcykgJiZcbiAgICAgICAgICAgICAgICAgICAgdHVpSW5SYW5nZShzZWNvbmRzLCAwLCBTRUNPTkRTX0lOX01JTlVURSkgJiZcbiAgICAgICAgICAgICAgICAgICAgTnVtYmVyLmlzSW50ZWdlcihtcykgJiZcbiAgICAgICAgICAgICAgICAgICAgdHVpSW5SYW5nZShtcywgMCwgMTAwMCksXG4gICAgICAgICAgICAgICAgJ1RpbWUgbXVzdCBiZSByZWFsLCBidXQgZ290OicsXG4gICAgICAgICAgICAgICAgaG91cnMsXG4gICAgICAgICAgICAgICAgbWludXRlcyxcbiAgICAgICAgICAgICAgICBzZWNvbmRzLFxuICAgICAgICAgICAgICAgIG1zLFxuICAgICAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgdGltZSBpcyB2YWxpZFxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgaXNWYWxpZFRpbWUoXG4gICAgICAgIGhvdXJzOiBudW1iZXIsXG4gICAgICAgIG1pbnV0ZXM6IG51bWJlcixcbiAgICAgICAgc2Vjb25kcyA9IDAsXG4gICAgICAgIG1zID0gMCxcbiAgICApOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIE51bWJlci5pc0ludGVnZXIoaG91cnMpICYmXG4gICAgICAgICAgICB0dWlJblJhbmdlKGhvdXJzLCAwLCBIT1VSU19JTl9EQVkpICYmXG4gICAgICAgICAgICBOdW1iZXIuaXNJbnRlZ2VyKG1pbnV0ZXMpICYmXG4gICAgICAgICAgICB0dWlJblJhbmdlKG1pbnV0ZXMsIDAsIE1JTlVURVNfSU5fSE9VUikgJiZcbiAgICAgICAgICAgIE51bWJlci5pc0ludGVnZXIoc2Vjb25kcykgJiZcbiAgICAgICAgICAgIHR1aUluUmFuZ2Uoc2Vjb25kcywgMCwgU0VDT05EU19JTl9NSU5VVEUpICYmXG4gICAgICAgICAgICBOdW1iZXIuaXNJbnRlZ2VyKG1zKSAmJlxuICAgICAgICAgICAgdHVpSW5SYW5nZShtcywgMCwgMTAwMClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDdXJyZW50IFVUQyB0aW1lLlxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgY3VycmVudCgpOiBUdWlUaW1lIHtcbiAgICAgICAgcmV0dXJuIFR1aVRpbWUuZnJvbUFic29sdXRlTWlsbGlzZWNvbmRzKERhdGUubm93KCkgJSBNSUxMSVNFQ09ORFNfSU5fREFZKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDdXJyZW50IHRpbWUgaW4gbG9jYWwgdGltZXpvbmVcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGN1cnJlbnRMb2NhbCgpOiBUdWlUaW1lIHtcbiAgICAgICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKCk7XG5cbiAgICAgICAgcmV0dXJuIFR1aVRpbWUuZnJvbUFic29sdXRlTWlsbGlzZWNvbmRzKFxuICAgICAgICAgICAgKERhdGUubm93KCkgLSBkYXRlLmdldFRpbWV6b25lT2Zmc2V0KCkgKiBNSUxMSVNFQ09ORFNfSU5fTUlOVVRFKSAlXG4gICAgICAgICAgICAgICAgTUlMTElTRUNPTkRTX0lOX0RBWSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYWxjdWxhdGVzIFR1aVRpbWUgZnJvbSBtaWxsaXNlY29uZHNcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGZyb21BYnNvbHV0ZU1pbGxpc2Vjb25kcyhtaWxsaXNlY29uZHM6IG51bWJlcik6IFR1aVRpbWUge1xuICAgICAgICBuZ0Rldk1vZGUgJiYgY29uc29sZS5hc3NlcnQoTnVtYmVyLmlzSW50ZWdlcihtaWxsaXNlY29uZHMpKTtcbiAgICAgICAgbmdEZXZNb2RlICYmXG4gICAgICAgICAgICBjb25zb2xlLmFzc2VydChcbiAgICAgICAgICAgICAgICB0dWlJblJhbmdlKG1pbGxpc2Vjb25kcywgMCwgTUlMTElTRUNPTkRTX0lOX0RBWSksXG4gICAgICAgICAgICAgICAgYE1pbGxpc2Vjb25kcyBtdXN0IGJlIGJlbG93ICR7TUlMTElTRUNPTkRTX0lOX0RBWX0gKG1pbGxpc2Vjb25kcyBpbiBhIGRheSkuYCxcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgY29uc3QgaG91cnMgPSBNYXRoLmZsb29yKG1pbGxpc2Vjb25kcyAvIE1JTExJU0VDT05EU19JTl9IT1VSKTtcbiAgICAgICAgY29uc3QgbWludXRlcyA9IE1hdGguZmxvb3IoXG4gICAgICAgICAgICAobWlsbGlzZWNvbmRzICUgTUlMTElTRUNPTkRTX0lOX0hPVVIpIC8gTUlMTElTRUNPTkRTX0lOX01JTlVURSxcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3Qgc2Vjb25kcyA9XG4gICAgICAgICAgICBNYXRoLmZsb29yKFxuICAgICAgICAgICAgICAgICgobWlsbGlzZWNvbmRzICUgTUlMTElTRUNPTkRTX0lOX0hPVVIpICUgTUlMTElTRUNPTkRTX0lOX01JTlVURSkgLyAxMDAwLFxuICAgICAgICAgICAgKSB8fCAwO1xuICAgICAgICBjb25zdCBtcyA9XG4gICAgICAgICAgICBNYXRoLmZsb29yKFxuICAgICAgICAgICAgICAgICgobWlsbGlzZWNvbmRzICUgTUlMTElTRUNPTkRTX0lOX0hPVVIpICUgTUlMTElTRUNPTkRTX0lOX01JTlVURSkgJSAxMDAwLFxuICAgICAgICAgICAgKSB8fCAwO1xuXG4gICAgICAgIHJldHVybiBuZXcgVHVpVGltZShob3VycywgbWludXRlcywgc2Vjb25kcywgbXMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBhcnNlcyBzdHJpbmcgaW50byBUdWlUaW1lIG9iamVjdFxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgZnJvbVN0cmluZyh0aW1lOiBzdHJpbmcpOiBUdWlUaW1lIHtcbiAgICAgICAgY29uc3QgaG91cnMgPSB0aGlzLnBhcnNlSG91cnModGltZSk7XG4gICAgICAgIGNvbnN0IG1pbnV0ZXMgPSBOdW1iZXIodGltZS5zbGljZSgzLCA1KSkgfHwgMDtcbiAgICAgICAgY29uc3Qgc2Vjb25kcyA9IE51bWJlcih0aW1lLnNsaWNlKDYsIDgpKSB8fCAwO1xuICAgICAgICBjb25zdCBtcyA9IE51bWJlcih0aW1lLnNsaWNlKDksIDEyKSkgfHwgMDtcblxuICAgICAgICByZXR1cm4gbmV3IFR1aVRpbWUoaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMsIG1zKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBEYXRlIG9iamVjdCBpbnRvIFR1aVRpbWVcbiAgICAgKiBAcGFyYW0gZGF0ZVxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgZnJvbUxvY2FsTmF0aXZlRGF0ZShkYXRlOiBEYXRlKTogVHVpVGltZSB7XG4gICAgICAgIHJldHVybiBuZXcgVHVpVGltZShcbiAgICAgICAgICAgIGRhdGUuZ2V0SG91cnMoKSxcbiAgICAgICAgICAgIGRhdGUuZ2V0TWludXRlcygpLFxuICAgICAgICAgICAgZGF0ZS5nZXRTZWNvbmRzKCksXG4gICAgICAgICAgICBkYXRlLmdldE1pbGxpc2Vjb25kcygpLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIHBhcnNlTWVyaWRpZW1QZXJpb2QodGltZTogc3RyaW5nKTogJ0FNJyB8ICdQTScgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICgvW0FQXU0vLmV4ZWModGltZS50b1VwcGVyQ2FzZSgpLnJlcGxhY2VBbGwoL1xcVy9nLCAnJykpPy5bMF0gYXNcbiAgICAgICAgICAgICAgICB8ICdBTSdcbiAgICAgICAgICAgICAgICB8ICdQTScpIHx8IG51bGxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBwYXJzZUhvdXJzKHRpbWU6IHN0cmluZyk6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IGhvdXJzID0gTnVtYmVyKHRpbWUuc2xpY2UoMCwgMikpO1xuICAgICAgICBjb25zdCBtZXJpZGllbSA9IHRoaXMucGFyc2VNZXJpZGllbVBlcmlvZCh0aW1lKTtcblxuICAgICAgICBpZiAoIW1lcmlkaWVtKSB7XG4gICAgICAgICAgICByZXR1cm4gaG91cnM7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaG91cnMgPT09IDEyKSB7XG4gICAgICAgICAgICByZXR1cm4gbWVyaWRpZW0gPT09ICdBTScgPyAwIDogMTI7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbWVyaWRpZW0gPT09ICdQTScgPyBob3VycyArIDEyIDogaG91cnM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2hpZnRzIHRpbWUgYnkgaG91cnMgYW5kIG1pbnV0ZXNcbiAgICAgKi9cbiAgICBwdWJsaWMgc2hpZnQoe2hvdXJzID0gMCwgbWludXRlcyA9IDAsIHNlY29uZHMgPSAwLCBtcyA9IDB9OiBUdWlUaW1lTGlrZSk6IFR1aVRpbWUge1xuICAgICAgICBjb25zdCB0b3RhbE1zID1cbiAgICAgICAgICAgIHRoaXMudG9BYnNvbHV0ZU1pbGxpc2Vjb25kcygpICtcbiAgICAgICAgICAgIGhvdXJzICogTUlMTElTRUNPTkRTX0lOX0hPVVIgK1xuICAgICAgICAgICAgbWludXRlcyAqIE1JTExJU0VDT05EU19JTl9NSU5VVEUgK1xuICAgICAgICAgICAgc2Vjb25kcyAqIE1JTExJU0VDT05EU19JTl9TRUNPTkQgK1xuICAgICAgICAgICAgbXM7XG4gICAgICAgIGNvbnN0IHRvdGFsU2Vjb25kcyA9IE1hdGguZmxvb3IodG90YWxNcyAvIE1JTExJU0VDT05EU19JTl9TRUNPTkQpO1xuICAgICAgICBjb25zdCB0b3RhbE1pbnV0ZXMgPSBNYXRoLmZsb29yKHRvdGFsU2Vjb25kcyAvIFNFQ09ORFNfSU5fTUlOVVRFKTtcbiAgICAgICAgY29uc3QgdG90YWxIb3VycyA9IE1hdGguZmxvb3IodG90YWxNaW51dGVzIC8gTUlOVVRFU19JTl9IT1VSKTtcblxuICAgICAgICByZXR1cm4gbmV3IFR1aVRpbWUoXG4gICAgICAgICAgICB0aGlzLm5vcm1hbGl6ZVRvUmFuZ2UodG90YWxIb3VycywgSE9VUlNfSU5fREFZKSxcbiAgICAgICAgICAgIHRoaXMubm9ybWFsaXplVG9SYW5nZSh0b3RhbE1pbnV0ZXMsIE1JTlVURVNfSU5fSE9VUiksXG4gICAgICAgICAgICB0aGlzLm5vcm1hbGl6ZVRvUmFuZ2UodG90YWxTZWNvbmRzLCBTRUNPTkRTX0lOX01JTlVURSksXG4gICAgICAgICAgICB0aGlzLm5vcm1hbGl6ZVRvUmFuZ2UodG90YWxNcywgTUlMTElTRUNPTkRTX0lOX1NFQ09ORCksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgVHVpVGltZSB0byBzdHJpbmdcbiAgICAgKi9cbiAgICBwdWJsaWMgdG9TdHJpbmcobW9kZT86IFR1aVRpbWVNb2RlKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgbmVlZEFkZE1zID0gbW9kZT8uc3RhcnRzV2l0aCgnSEg6TU06U1MuTVNTJykgfHwgKCFtb2RlICYmIHRoaXMubXMgPiAwKTtcbiAgICAgICAgY29uc3QgbmVlZEFkZFNlY29uZHMgPVxuICAgICAgICAgICAgbmVlZEFkZE1zIHx8IG1vZGU/LnN0YXJ0c1dpdGgoJ0hIOk1NOlNTJykgfHwgKCFtb2RlICYmIHRoaXMuc2Vjb25kcyA+IDApO1xuICAgICAgICBjb25zdCB7aG91cnMgPSB0aGlzLmhvdXJzLCBtZXJpZGllbSA9ICcnfSA9IG1vZGU/LmluY2x1ZGVzKCdBQScpXG4gICAgICAgICAgICA/IHRoaXMudG9Ud2VsdmVIb3VyKHRoaXMuaG91cnMpXG4gICAgICAgICAgICA6IHt9O1xuICAgICAgICBjb25zdCBoaE1tID0gYCR7dGhpcy5mb3JtYXRUaW1lKGhvdXJzKX06JHt0aGlzLmZvcm1hdFRpbWUodGhpcy5taW51dGVzKX1gO1xuICAgICAgICBjb25zdCBzcyA9IG5lZWRBZGRTZWNvbmRzID8gYDoke3RoaXMuZm9ybWF0VGltZSh0aGlzLnNlY29uZHMpfWAgOiAnJztcbiAgICAgICAgY29uc3QgbXNzID0gbmVlZEFkZE1zID8gYC4ke3RoaXMuZm9ybWF0VGltZSh0aGlzLm1zLCAzKX1gIDogJyc7XG4gICAgICAgIGNvbnN0IGFhID0gbWVyaWRpZW0gJiYgYCR7Q0hBUl9OT19CUkVBS19TUEFDRX0ke21lcmlkaWVtfWA7XG5cbiAgICAgICAgcmV0dXJuIGAke2hoTW19JHtzc30ke21zc30ke2FhfWA7XG4gICAgfVxuXG4gICAgcHVibGljIHZhbHVlT2YoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudG9BYnNvbHV0ZU1pbGxpc2Vjb25kcygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHByaW1pdGl2ZSB2YWx1ZSBvZiB0aGUgZ2l2ZW4gRGF0ZSBvYmplY3QuXG4gICAgICogRGVwZW5kaW5nIG9uIHRoZSBhcmd1bWVudCwgdGhlIG1ldGhvZCBjYW4gcmV0dXJuIGVpdGhlciBhIHN0cmluZyBvciBhIG51bWJlci5cbiAgICAgKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL0RhdGUvQEB0b1ByaW1pdGl2ZVxuICAgICAqL1xuICAgIHB1YmxpYyBbU3ltYm9sLnRvUHJpbWl0aXZlXShoaW50OiBzdHJpbmcpOiBudW1iZXIgfCBzdHJpbmcge1xuICAgICAgICByZXR1cm4gRGF0ZS5wcm90b3R5cGVbU3ltYm9sLnRvUHJpbWl0aXZlXS5jYWxsKHRoaXMsIGhpbnQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIFR1aVRpbWUgdG8gbWlsbGlzZWNvbmRzXG4gICAgICovXG4gICAgcHVibGljIHRvQWJzb2x1dGVNaWxsaXNlY29uZHMoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMuaG91cnMgKiBNSUxMSVNFQ09ORFNfSU5fSE9VUiArXG4gICAgICAgICAgICB0aGlzLm1pbnV0ZXMgKiBNSUxMSVNFQ09ORFNfSU5fTUlOVVRFICtcbiAgICAgICAgICAgIHRoaXMuc2Vjb25kcyAqIDEwMDAgK1xuICAgICAgICAgICAgdGhpcy5tc1xuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgZm9ybWF0VGltZSh0aW1lOiBudW1iZXIsIGRpZ2l0cyA9IDIpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gU3RyaW5nKHRpbWUpLnBhZFN0YXJ0KGRpZ2l0cywgJzAnKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHRvVHdlbHZlSG91cihob3VyczogbnVtYmVyKToge2hvdXJzOiBudW1iZXI7IG1lcmlkaWVtOiBzdHJpbmd9IHtcbiAgICAgICAgY29uc3QgbWVyaWRpZW0gPSBob3VycyA+PSAxMiA/ICdQTScgOiAnQU0nO1xuXG4gICAgICAgIGlmIChob3VycyA9PT0gMCB8fCBob3VycyA9PT0gMTIpIHtcbiAgICAgICAgICAgIHJldHVybiB7bWVyaWRpZW0sIGhvdXJzOiAxMn07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge21lcmlkaWVtLCBob3VyczogaG91cnMgJSAxMn07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBub3JtYWxpemVUb1JhbmdlKHZhbHVlOiBudW1iZXIsIG1vZHVsdXM6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIHJldHVybiAoKHZhbHVlICUgbW9kdWx1cykgKyBtb2R1bHVzKSAlIG1vZHVsdXM7XG4gICAgfVxufVxuIl19
|
@@ -7,6 +7,7 @@ export * from './query-list-observable';
|
|
7
7
|
export * from './scroll-from';
|
8
8
|
export * from './take-until-destroyed';
|
9
9
|
export * from './typed-from-event';
|
10
|
+
export * from './untracked-scheduler';
|
10
11
|
export * from './watch';
|
11
12
|
export * from './zone';
|
12
|
-
//# sourceMappingURL=data:application/json;base64,
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvb2JzZXJ2YWJsZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLFNBQVMsQ0FBQztBQUN4QixjQUFjLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY29udHJvbC12YWx1ZSc7XG5leHBvcnQgKiBmcm9tICcuL2RyYWctYW5kLWRyb3AtZnJvbSc7XG5leHBvcnQgKiBmcm9tICcuL2V2ZW50cyc7XG5leHBvcnQgKiBmcm9tICcuL2lmLW1hcCc7XG5leHBvcnQgKiBmcm9tICcuL211c3QtYmUtcHJlc2VudCc7XG5leHBvcnQgKiBmcm9tICcuL3F1ZXJ5LWxpc3Qtb2JzZXJ2YWJsZSc7XG5leHBvcnQgKiBmcm9tICcuL3Njcm9sbC1mcm9tJztcbmV4cG9ydCAqIGZyb20gJy4vdGFrZS11bnRpbC1kZXN0cm95ZWQnO1xuZXhwb3J0ICogZnJvbSAnLi90eXBlZC1mcm9tLWV2ZW50JztcbmV4cG9ydCAqIGZyb20gJy4vdW50cmFja2VkLXNjaGVkdWxlcic7XG5leHBvcnQgKiBmcm9tICcuL3dhdGNoJztcbmV4cG9ydCAqIGZyb20gJy4vem9uZSc7XG4iXX0=
|
@@ -0,0 +1,11 @@
|
|
1
|
+
import { untracked } from '@angular/core';
|
2
|
+
import { queueScheduler } from 'rxjs';
|
3
|
+
export const tuiUntrackedScheduler = {
|
4
|
+
now: queueScheduler.now.bind(queueScheduler),
|
5
|
+
schedule(work, delay, state) {
|
6
|
+
return queueScheduler.schedule(function (s) {
|
7
|
+
return untracked(() => work.call(this, s));
|
8
|
+
}, delay, state);
|
9
|
+
},
|
10
|
+
};
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW50cmFja2VkLXNjaGVkdWxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay9vYnNlcnZhYmxlcy91bnRyYWNrZWQtc2NoZWR1bGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFeEMsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUVwQyxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBa0I7SUFDaEQsR0FBRyxFQUFFLGNBQWMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUU1QyxRQUFRLENBQ0osSUFBbUQsRUFDbkQsS0FBYyxFQUNkLEtBQVM7UUFFVCxPQUFPLGNBQWMsQ0FBQyxRQUFRLENBQzFCLFVBQW9DLENBQUs7WUFDckMsT0FBTyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMvQyxDQUFDLEVBQ0QsS0FBSyxFQUNMLEtBQUssQ0FDUixDQUFDO0lBQ04sQ0FBQztDQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3VudHJhY2tlZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgdHlwZSB7U2NoZWR1bGVyQWN0aW9uLCBTY2hlZHVsZXJMaWtlLCBTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtxdWV1ZVNjaGVkdWxlcn0gZnJvbSAncnhqcyc7XG5cbmV4cG9ydCBjb25zdCB0dWlVbnRyYWNrZWRTY2hlZHVsZXI6IFNjaGVkdWxlckxpa2UgPSB7XG4gICAgbm93OiBxdWV1ZVNjaGVkdWxlci5ub3cuYmluZChxdWV1ZVNjaGVkdWxlciksXG5cbiAgICBzY2hlZHVsZTxUPihcbiAgICAgICAgd29yazogKHRoaXM6IFNjaGVkdWxlckFjdGlvbjxUPiwgc3RhdGU/OiBUKSA9PiB2b2lkLFxuICAgICAgICBkZWxheT86IG51bWJlcixcbiAgICAgICAgc3RhdGU/OiBULFxuICAgICk6IFN1YnNjcmlwdGlvbiB7XG4gICAgICAgIHJldHVybiBxdWV1ZVNjaGVkdWxlci5zY2hlZHVsZShcbiAgICAgICAgICAgIGZ1bmN0aW9uICh0aGlzOiBTY2hlZHVsZXJBY3Rpb248VD4sIHM/OiBUKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHVudHJhY2tlZCgoKSA9PiB3b3JrLmNhbGwodGhpcywgcykpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGRlbGF5LFxuICAgICAgICAgICAgc3RhdGUsXG4gICAgICAgICk7XG4gICAgfSxcbn07XG4iXX0=
|
@@ -1,7 +1,8 @@
|
|
1
1
|
import { toSignal } from '@angular/core/rxjs-interop';
|
2
2
|
import { TUI_FALSE_HANDLER, TUI_TRUE_HANDLER } from '@taiga-ui/cdk/constants';
|
3
|
-
import {
|
3
|
+
import { tuiUntrackedScheduler } from '@taiga-ui/cdk/observables';
|
4
|
+
import { fromEvent, map, merge, observeOn } from 'rxjs';
|
4
5
|
export function tuiFocusedIn(node) {
|
5
|
-
return toSignal(merge(fromEvent(node, 'focusin').pipe(map(TUI_TRUE_HANDLER)), fromEvent(node, 'focusout').pipe(map(TUI_FALSE_HANDLER))), { initialValue: false });
|
6
|
+
return toSignal(merge(fromEvent(node, 'focusin').pipe(map(TUI_TRUE_HANDLER)), fromEvent(node, 'focusout').pipe(map(TUI_FALSE_HANDLER))).pipe(observeOn(tuiUntrackedScheduler)), { initialValue: false });
|
6
7
|
}
|
7
|
-
//# sourceMappingURL=data:application/json;base64,
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9jdXNlZC1pbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay91dGlscy9mb2N1cy9mb2N1c2VkLWluLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRCxPQUFPLEVBQUMsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUM1RSxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUNoRSxPQUFPLEVBQUMsU0FBUyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBRXRELE1BQU0sVUFBVSxZQUFZLENBQUMsSUFBVTtJQUNuQyxPQUFPLFFBQVEsQ0FDWCxLQUFLLENBQ0QsU0FBUyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUMsRUFDdEQsU0FBUyxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FDM0QsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLHFCQUFxQixDQUFDLENBQUMsRUFDeEMsRUFBQyxZQUFZLEVBQUUsS0FBSyxFQUFDLENBQ3hCLENBQUM7QUFDTixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1NpZ25hbH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge3RvU2lnbmFsfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQge1RVSV9GQUxTRV9IQU5ETEVSLCBUVUlfVFJVRV9IQU5ETEVSfSBmcm9tICdAdGFpZ2EtdWkvY2RrL2NvbnN0YW50cyc7XG5pbXBvcnQge3R1aVVudHJhY2tlZFNjaGVkdWxlcn0gZnJvbSAnQHRhaWdhLXVpL2Nkay9vYnNlcnZhYmxlcyc7XG5pbXBvcnQge2Zyb21FdmVudCwgbWFwLCBtZXJnZSwgb2JzZXJ2ZU9ufSBmcm9tICdyeGpzJztcblxuZXhwb3J0IGZ1bmN0aW9uIHR1aUZvY3VzZWRJbihub2RlOiBOb2RlKTogU2lnbmFsPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdG9TaWduYWwoXG4gICAgICAgIG1lcmdlKFxuICAgICAgICAgICAgZnJvbUV2ZW50KG5vZGUsICdmb2N1c2luJykucGlwZShtYXAoVFVJX1RSVUVfSEFORExFUikpLFxuICAgICAgICAgICAgZnJvbUV2ZW50KG5vZGUsICdmb2N1c291dCcpLnBpcGUobWFwKFRVSV9GQUxTRV9IQU5ETEVSKSksXG4gICAgICAgICkucGlwZShvYnNlcnZlT24odHVpVW50cmFja2VkU2NoZWR1bGVyKSksXG4gICAgICAgIHtpbml0aWFsVmFsdWU6IGZhbHNlfSxcbiAgICApO1xufVxuIl19
|
@@ -14,9 +14,14 @@ function calculate(value, precision, func) {
|
|
14
14
|
ngDevMode && console.assert(!Number.isNaN(value), 'Value must be number');
|
15
15
|
ngDevMode && console.assert(Number.isInteger(precision), 'Precision must be integer');
|
16
16
|
precision = Math.min(precision, MAX_PRECISION);
|
17
|
-
const
|
18
|
-
const
|
19
|
-
|
17
|
+
const [significand, exponent = ''] = `${value}`.split('e');
|
18
|
+
const roundedInt = func(Number(`${significand}e${Number(exponent) + precision}`));
|
19
|
+
/**
|
20
|
+
* TODO: use BigInt after bumping Safari to 14+
|
21
|
+
*/
|
22
|
+
ngDevMode &&
|
23
|
+
console.assert(Number.isSafeInteger(roundedInt), 'Impossible to correctly round such a large number');
|
24
|
+
const processedPair = `${roundedInt}e`.split('e');
|
20
25
|
return Number(`${processedPair[0]}e${Number(processedPair[1]) - precision}`);
|
21
26
|
}
|
22
27
|
export function tuiRound(value, precision = 0) {
|
@@ -31,4 +36,7 @@ export function tuiFloor(value, precision = 0) {
|
|
31
36
|
export function tuiTrunc(value, precision = 0) {
|
32
37
|
return calculate(value, precision, Math.trunc);
|
33
38
|
}
|
34
|
-
|
39
|
+
export function tuiIsSafeToRound(value, precision = 0) {
|
40
|
+
return Number.isSafeInteger(Math.trunc(value * 10 ** precision));
|
41
|
+
}
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91bmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvdXRpbHMvbWF0aC9yb3VuZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx3REFBd0Q7QUFFeEQsTUFBTSxhQUFhLEdBQUcsR0FBRyxDQUFDO0FBRTFCOzs7Ozs7R0FNRztBQUNILFNBQVMsU0FBUyxDQUNkLEtBQWEsRUFDYixTQUFpQixFQUNqQixJQUEyQjtJQUUzQixJQUFJLEtBQUssS0FBSyxRQUFRLEVBQUU7UUFDcEIsT0FBTyxLQUFLLENBQUM7S0FDaEI7SUFFRCxTQUFTLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsc0JBQXNCLENBQUMsQ0FBQztJQUMxRSxTQUFTLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxFQUFFLDJCQUEyQixDQUFDLENBQUM7SUFFdEYsU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBRS9DLE1BQU0sQ0FBQyxXQUFXLEVBQUUsUUFBUSxHQUFHLEVBQUUsQ0FBQyxHQUFHLEdBQUcsS0FBSyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzNELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxXQUFXLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUVsRjs7T0FFRztJQUNILFNBQVM7UUFDTCxPQUFPLENBQUMsTUFBTSxDQUNWLE1BQU0sQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLEVBQ2hDLG1EQUFtRCxDQUN0RCxDQUFDO0lBRU4sTUFBTSxhQUFhLEdBQUcsR0FBRyxVQUFVLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFbEQsT0FBTyxNQUFNLENBQUMsR0FBRyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFNBQVMsRUFBRSxDQUFDLENBQUM7QUFDakYsQ0FBQztBQUVELE1BQU0sVUFBVSxRQUFRLENBQUMsS0FBYSxFQUFFLFNBQVMsR0FBRyxDQUFDO0lBQ2pELE9BQU8sU0FBUyxDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ25ELENBQUM7QUFFRCxNQUFNLFVBQVUsT0FBTyxDQUFDLEtBQWEsRUFBRSxTQUFTLEdBQUcsQ0FBQztJQUNoRCxPQUFPLFNBQVMsQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNsRCxDQUFDO0FBRUQsTUFBTSxVQUFVLFFBQVEsQ0FBQyxLQUFhLEVBQUUsU0FBUyxHQUFHLENBQUM7SUFDakQsT0FBTyxTQUFTLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDbkQsQ0FBQztBQUVELE1BQU0sVUFBVSxRQUFRLENBQUMsS0FBYSxFQUFFLFNBQVMsR0FBRyxDQUFDO0lBQ2pELE9BQU8sU0FBUyxDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ25ELENBQUM7QUFFRCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsS0FBYSxFQUFFLFNBQVMsR0FBRyxDQUFDO0lBQ3pELE9BQU8sTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxFQUFFLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQztBQUNyRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8vIDxyZWZlcmVuY2UgdHlwZXM9XCJAdGFpZ2EtdWkvdHNjb25maWcvbmctZGV2LW1vZGVcIiAvPlxuXG5jb25zdCBNQVhfUFJFQ0lTSU9OID0gMjkyO1xuXG4vKipcbiAqIFJvdW5kaW5nIG51bWJlciB0byB0aGUgc2V0IHByZWNpc2lvblxuICpcbiAqIEBwYXJhbSB2YWx1ZVxuICogQHBhcmFtIHByZWNpc2lvbiBudW1iZXIgb2YgZGlnaXRzIGluIGEgZmxvYXQgcGFydFxuICogQHBhcmFtIGZ1bmMgcm91bmRpbmcgZnVuY3Rpb24gKHJvdW5kLCBmbG9vciwgY2VpbClcbiAqL1xuZnVuY3Rpb24gY2FsY3VsYXRlKFxuICAgIHZhbHVlOiBudW1iZXIsXG4gICAgcHJlY2lzaW9uOiBudW1iZXIsXG4gICAgZnVuYzogKHg6IG51bWJlcikgPT4gbnVtYmVyLFxuKTogbnVtYmVyIHtcbiAgICBpZiAodmFsdWUgPT09IEluZmluaXR5KSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICBuZ0Rldk1vZGUgJiYgY29uc29sZS5hc3NlcnQoIU51bWJlci5pc05hTih2YWx1ZSksICdWYWx1ZSBtdXN0IGJlIG51bWJlcicpO1xuICAgIG5nRGV2TW9kZSAmJiBjb25zb2xlLmFzc2VydChOdW1iZXIuaXNJbnRlZ2VyKHByZWNpc2lvbiksICdQcmVjaXNpb24gbXVzdCBiZSBpbnRlZ2VyJyk7XG5cbiAgICBwcmVjaXNpb24gPSBNYXRoLm1pbihwcmVjaXNpb24sIE1BWF9QUkVDSVNJT04pO1xuXG4gICAgY29uc3QgW3NpZ25pZmljYW5kLCBleHBvbmVudCA9ICcnXSA9IGAke3ZhbHVlfWAuc3BsaXQoJ2UnKTtcbiAgICBjb25zdCByb3VuZGVkSW50ID0gZnVuYyhOdW1iZXIoYCR7c2lnbmlmaWNhbmR9ZSR7TnVtYmVyKGV4cG9uZW50KSArIHByZWNpc2lvbn1gKSk7XG5cbiAgICAvKipcbiAgICAgKiBUT0RPOiB1c2UgQmlnSW50IGFmdGVyIGJ1bXBpbmcgU2FmYXJpIHRvIDE0K1xuICAgICAqL1xuICAgIG5nRGV2TW9kZSAmJlxuICAgICAgICBjb25zb2xlLmFzc2VydChcbiAgICAgICAgICAgIE51bWJlci5pc1NhZmVJbnRlZ2VyKHJvdW5kZWRJbnQpLFxuICAgICAgICAgICAgJ0ltcG9zc2libGUgdG8gY29ycmVjdGx5IHJvdW5kIHN1Y2ggYSBsYXJnZSBudW1iZXInLFxuICAgICAgICApO1xuXG4gICAgY29uc3QgcHJvY2Vzc2VkUGFpciA9IGAke3JvdW5kZWRJbnR9ZWAuc3BsaXQoJ2UnKTtcblxuICAgIHJldHVybiBOdW1iZXIoYCR7cHJvY2Vzc2VkUGFpclswXX1lJHtOdW1iZXIocHJvY2Vzc2VkUGFpclsxXSkgLSBwcmVjaXNpb259YCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0dWlSb3VuZCh2YWx1ZTogbnVtYmVyLCBwcmVjaXNpb24gPSAwKTogbnVtYmVyIHtcbiAgICByZXR1cm4gY2FsY3VsYXRlKHZhbHVlLCBwcmVjaXNpb24sIE1hdGgucm91bmQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHVpQ2VpbCh2YWx1ZTogbnVtYmVyLCBwcmVjaXNpb24gPSAwKTogbnVtYmVyIHtcbiAgICByZXR1cm4gY2FsY3VsYXRlKHZhbHVlLCBwcmVjaXNpb24sIE1hdGguY2VpbCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0dWlGbG9vcih2YWx1ZTogbnVtYmVyLCBwcmVjaXNpb24gPSAwKTogbnVtYmVyIHtcbiAgICByZXR1cm4gY2FsY3VsYXRlKHZhbHVlLCBwcmVjaXNpb24sIE1hdGguZmxvb3IpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHVpVHJ1bmModmFsdWU6IG51bWJlciwgcHJlY2lzaW9uID0gMCk6IG51bWJlciB7XG4gICAgcmV0dXJuIGNhbGN1bGF0ZSh2YWx1ZSwgcHJlY2lzaW9uLCBNYXRoLnRydW5jKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR1aUlzU2FmZVRvUm91bmQodmFsdWU6IG51bWJlciwgcHJlY2lzaW9uID0gMCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBOdW1iZXIuaXNTYWZlSW50ZWdlcihNYXRoLnRydW5jKHZhbHVlICogMTAgKiogcHJlY2lzaW9uKSk7XG59XG4iXX0=
|
@@ -1,13 +1,9 @@
|
|
1
|
-
import { effect, inject, isSignal, signal
|
1
|
+
import { effect, inject, isSignal, signal } from '@angular/core';
|
2
|
+
import { TUI_ALLOW_SIGNAL_WRITES } from '@taiga-ui/cdk/constants';
|
2
3
|
export function tuiDirectiveBinding(token, key, initial, options = { self: true }) {
|
3
4
|
const result = isSignal(initial) ? initial : signal(initial);
|
4
5
|
const directive = inject(token, options);
|
5
6
|
const output = directive[`${key.toString()}Change`];
|
6
|
-
const angularVersion = parseInt(VERSION.major, 10);
|
7
|
-
const isAngular19 = angularVersion >= 19;
|
8
|
-
const effectOptions = isAngular19
|
9
|
-
? {}
|
10
|
-
: { allowSignalWrites: true };
|
11
7
|
// TODO: Figure out why effects are executed all the time and not just when result changes (check with Angular 18)
|
12
8
|
let previous;
|
13
9
|
effect(() => {
|
@@ -24,7 +20,7 @@ export function tuiDirectiveBinding(token, key, initial, options = { self: true
|
|
24
20
|
directive.ngOnChanges?.({});
|
25
21
|
output?.emit?.(value);
|
26
22
|
previous = value;
|
27
|
-
},
|
23
|
+
}, TUI_ALLOW_SIGNAL_WRITES);
|
28
24
|
return result;
|
29
25
|
}
|
30
|
-
//# sourceMappingURL=data:application/json;base64,
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlyZWN0aXZlLWJpbmRpbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvdXRpbHMvbWlzY2VsbGFuZW91cy9kaXJlY3RpdmUtYmluZGluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQy9ELE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBTWhFLE1BQU0sVUFBVSxtQkFBbUIsQ0FLL0IsS0FBdUIsRUFDdkIsR0FBTSxFQUNOLE9BQVUsRUFDVixVQUF5QixFQUFDLElBQUksRUFBRSxJQUFJLEVBQUM7SUFFckMsTUFBTSxNQUFNLEdBQVEsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNsRSxNQUFNLFNBQVMsR0FBUSxNQUFNLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzlDLE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFFcEQsa0hBQWtIO0lBQ2xILElBQUksUUFBYSxDQUFDO0lBRWxCLE1BQU0sQ0FBQyxHQUFHLEVBQUU7UUFDUixNQUFNLEtBQUssR0FBUSxNQUFNLEVBQUUsQ0FBQztRQUU1QixJQUFJLFFBQVEsS0FBSyxLQUFLLEVBQUU7WUFDcEIsT0FBTztTQUNWO1FBRUQsSUFBSSxRQUFRLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUU7WUFDMUIsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUM3QjthQUFNO1lBQ0gsU0FBUyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztTQUMxQjtRQUVELFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM1QixNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdEIsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUNyQixDQUFDLEVBQUUsdUJBQXVCLENBQUMsQ0FBQztJQUU1QixPQUFPLE1BQU0sQ0FBQztBQUNsQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge0luamVjdE9wdGlvbnMsIFByb3ZpZGVyVG9rZW4sIFNpZ25hbCwgV3JpdGFibGVTaWduYWx9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtlZmZlY3QsIGluamVjdCwgaXNTaWduYWwsIHNpZ25hbH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1RVSV9BTExPV19TSUdOQUxfV1JJVEVTfSBmcm9tICdAdGFpZ2EtdWkvY2RrL2NvbnN0YW50cyc7XG5cbnR5cGUgU2lnbmFsTGlrZVR5cGVPZjxUPiA9IFQgZXh0ZW5kcyBTaWduYWw8aW5mZXIgUj4gPyBSIDogVDtcblxudHlwZSBTaWduYWxMaWtlPFQ+ID0gU2lnbmFsPFQ+IHwgVDtcblxuZXhwb3J0IGZ1bmN0aW9uIHR1aURpcmVjdGl2ZUJpbmRpbmc8XG4gICAgVCxcbiAgICBHIGV4dGVuZHMga2V5b2YgVCxcbiAgICBJIGV4dGVuZHMgU2lnbmFsTGlrZTxTaWduYWxMaWtlVHlwZU9mPFRbR10+Pixcbj4oXG4gICAgdG9rZW46IFByb3ZpZGVyVG9rZW48VD4sXG4gICAga2V5OiBHLFxuICAgIGluaXRpYWw6IEksXG4gICAgb3B0aW9uczogSW5qZWN0T3B0aW9ucyA9IHtzZWxmOiB0cnVlfSxcbik6IEkgZXh0ZW5kcyBTaWduYWw8YW55PiA/IEkgOiBXcml0YWJsZVNpZ25hbDxJPiB7XG4gICAgY29uc3QgcmVzdWx0OiBhbnkgPSBpc1NpZ25hbChpbml0aWFsKSA/IGluaXRpYWwgOiBzaWduYWwoaW5pdGlhbCk7XG4gICAgY29uc3QgZGlyZWN0aXZlOiBhbnkgPSBpbmplY3QodG9rZW4sIG9wdGlvbnMpO1xuICAgIGNvbnN0IG91dHB1dCA9IGRpcmVjdGl2ZVtgJHtrZXkudG9TdHJpbmcoKX1DaGFuZ2VgXTtcblxuICAgIC8vIFRPRE86IEZpZ3VyZSBvdXQgd2h5IGVmZmVjdHMgYXJlIGV4ZWN1dGVkIGFsbCB0aGUgdGltZSBhbmQgbm90IGp1c3Qgd2hlbiByZXN1bHQgY2hhbmdlcyAoY2hlY2sgd2l0aCBBbmd1bGFyIDE4KVxuICAgIGxldCBwcmV2aW91czogYW55O1xuXG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgICAgY29uc3QgdmFsdWU6IGFueSA9IHJlc3VsdCgpO1xuXG4gICAgICAgIGlmIChwcmV2aW91cyA9PT0gdmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc1NpZ25hbChkaXJlY3RpdmVba2V5XSkpIHtcbiAgICAgICAgICAgIGRpcmVjdGl2ZVtrZXldLnNldCh2YWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBkaXJlY3RpdmVba2V5XSA9IHZhbHVlO1xuICAgICAgICB9XG5cbiAgICAgICAgZGlyZWN0aXZlLm5nT25DaGFuZ2VzPy4oe30pO1xuICAgICAgICBvdXRwdXQ/LmVtaXQ/Lih2YWx1ZSk7XG4gICAgICAgIHByZXZpb3VzID0gdmFsdWU7XG4gICAgfSwgVFVJX0FMTE9XX1NJR05BTF9XUklURVMpO1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cbiJdfQ==
|
@@ -10,6 +10,12 @@ import { Subject, delay, startWith, map, filter, distinctUntilChanged, switchMap
|
|
10
10
|
|
11
11
|
class TuiValueTransformer {
|
12
12
|
}
|
13
|
+
function tuiValueTransformerFrom(token) {
|
14
|
+
return {
|
15
|
+
provide: TuiValueTransformer,
|
16
|
+
useFactory: () => inject(token).valueTransformer,
|
17
|
+
};
|
18
|
+
}
|
13
19
|
|
14
20
|
const FLAGS = { self: true, optional: true };
|
15
21
|
/**
|
@@ -146,9 +152,7 @@ class TuiPortalService {
|
|
146
152
|
return this.safeHost.addComponentChild(component);
|
147
153
|
}
|
148
154
|
remove({ hostView }) {
|
149
|
-
|
150
|
-
hostView.destroy();
|
151
|
-
}
|
155
|
+
this.removeTemplate(hostView);
|
152
156
|
}
|
153
157
|
addTemplate(templateRef, context) {
|
154
158
|
return this.safeHost.addTemplateChild(templateRef, context);
|
@@ -190,5 +194,5 @@ class TuiValidationError {
|
|
190
194
|
* Generated bundle index. Do not edit.
|
191
195
|
*/
|
192
196
|
|
193
|
-
export { TuiControl, TuiNoHostException, TuiPortalService, TuiPortals, TuiValidationError, TuiValueTransformer, tuiAsControl, tuiAsPortal };
|
197
|
+
export { TuiControl, TuiNoHostException, TuiPortalService, TuiPortals, TuiValidationError, TuiValueTransformer, tuiAsControl, tuiAsPortal, tuiValueTransformerFrom };
|
194
198
|
//# sourceMappingURL=taiga-ui-cdk-classes.mjs.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"taiga-ui-cdk-classes.mjs","sources":["../../../projects/cdk/classes/value-transformer.ts","../../../projects/cdk/classes/control.ts","../../../projects/cdk/classes/portals.ts","../../../projects/cdk/classes/validation-error.ts","../../../projects/cdk/classes/taiga-ui-cdk-classes.ts"],"sourcesContent":["export abstract class TuiValueTransformer<From, To = unknown> {\n public abstract toControlValue(componentValue: From): To;\n public abstract fromControlValue(controlValue: To): From;\n}\n","import type {Provider, Type} from '@angular/core';\nimport {\n ChangeDetectorRef,\n computed,\n Directive,\n inject,\n Input,\n signal,\n} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport type {ControlValueAccessor, FormControlStatus} from '@angular/forms';\nimport {NgControl, NgModel} from '@angular/forms';\nimport {EMPTY_FUNCTION} from '@taiga-ui/cdk/constants';\nimport {TUI_FALLBACK_VALUE} from '@taiga-ui/cdk/tokens';\nimport {tuiProvide, tuiPure} from '@taiga-ui/cdk/utils';\nimport {\n delay,\n distinctUntilChanged,\n EMPTY,\n filter,\n map,\n merge,\n startWith,\n Subject,\n switchMap,\n} from 'rxjs';\n\nimport {TuiValueTransformer} from './value-transformer';\n\nconst FLAGS = {self: true, optional: true};\n\n/**\n * Basic ControlValueAccessor class to build form components upon\n */\n@Directive()\nexport abstract class TuiControl<T> implements ControlValueAccessor {\n private readonly fallback = inject(TUI_FALLBACK_VALUE, FLAGS) as T;\n private readonly refresh$ = new Subject<void>();\n private readonly pseudoInvalid = signal<boolean | null>(null);\n private readonly internal = signal(this.fallback);\n\n protected readonly control = inject(NgControl, {self: true});\n protected readonly cdr = inject(ChangeDetectorRef);\n protected readonly transformer = inject(TuiValueTransformer, FLAGS);\n\n public readonly value = computed(() => this.internal() ?? this.fallback);\n public readonly readOnly = signal(false);\n public readonly touched = signal(false);\n public readonly status = signal<FormControlStatus | undefined>(undefined);\n public readonly disabled = computed(() => this.status() === 'DISABLED');\n public readonly interactive = computed(() => !this.disabled() && !this.readOnly());\n public readonly invalid = computed(() =>\n this.pseudoInvalid() !== null\n ? !!this.pseudoInvalid() && this.interactive()\n : this.interactive() && this.touched() && this.status() === 'INVALID',\n );\n\n public readonly mode = computed(() =>\n // eslint-disable-next-line no-nested-ternary\n this.readOnly() ? 'readonly' : this.invalid() ? 'invalid' : 'valid',\n );\n\n public onTouched = EMPTY_FUNCTION;\n public onChange: (value: T) => void = EMPTY_FUNCTION;\n\n constructor() {\n this.control.valueAccessor = this;\n this.refresh$\n .pipe(\n delay(0),\n startWith(null),\n map(() => this.control.control),\n filter(Boolean),\n distinctUntilChanged(),\n switchMap((c) =>\n merge(\n c.valueChanges,\n c.statusChanges,\n (c as any).events || EMPTY,\n ).pipe(startWith(null)),\n ),\n takeUntilDestroyed(),\n )\n .subscribe(() => this.update());\n }\n\n @Input('readOnly')\n public set readOnlySetter(readOnly: boolean) {\n this.readOnly.set(readOnly);\n }\n\n @Input('invalid')\n public set invalidSetter(invalid: boolean | null) {\n this.pseudoInvalid.set(invalid);\n }\n\n public registerOnChange(onChange: (value: unknown) => void): void {\n this.refresh$.next();\n\n this.onChange = (value: T) => {\n if (value === this.internal()) {\n return;\n }\n\n onChange(this.toControlValue(value));\n this.internal.set(value);\n this.update();\n };\n }\n\n public registerOnTouched(onTouched: () => void): void {\n this.onTouched = () => {\n onTouched();\n this.update();\n };\n }\n\n public setDisabledState(): void {\n this.update();\n }\n\n public writeValue(value: T | null): void {\n // TODO: https://github.com/angular/angular/issues/14988\n const safe = this.control instanceof NgModel ? this.control.model : value;\n\n this.internal.set(this.fromControlValue(safe));\n this.update();\n }\n\n @tuiPure\n private fromControlValue(value: unknown): T {\n return this.transformer ? this.transformer.fromControlValue(value) : (value as T);\n }\n\n @tuiPure\n private toControlValue(value: T): unknown {\n return this.transformer ? this.transformer.toControlValue(value) : value;\n }\n\n private update(): void {\n this.status.set(this.control.control?.status);\n this.touched.set(!!this.control.control?.touched);\n this.cdr.markForCheck();\n }\n}\n\nexport function tuiAsControl<T>(control: Type<TuiControl<T>>): Provider {\n return tuiProvide(TuiControl, control);\n}\n","/// <reference types=\"@taiga-ui/tsconfig/ng-dev-mode\" />\nimport type {ComponentRef, EmbeddedViewRef, Provider, TemplateRef} from '@angular/core';\nimport {\n Directive,\n inject,\n Injectable,\n INJECTOR,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport {tuiProvide} from '@taiga-ui/cdk/utils';\nimport type {PolymorpheusComponent} from '@taiga-ui/polymorpheus';\n\n/**\n * Abstract class for host element for dynamically created portals.\n */\n@Directive()\nexport abstract class TuiPortals {\n @ViewChild('viewContainer', {read: ViewContainerRef})\n private readonly vcr!: ViewContainerRef;\n\n private readonly injector = inject(INJECTOR);\n\n protected readonly nothing = inject(TuiPortalService).attach(this);\n\n public addComponentChild<C>(component: PolymorpheusComponent<C>): ComponentRef<C> {\n const injector = component.createInjector(this.injector);\n const ref = this.vcr.createComponent(component.component, {injector});\n\n ref.changeDetectorRef.detectChanges();\n\n return ref;\n }\n\n public addTemplateChild<C>(\n templateRef: TemplateRef<C>,\n context?: C,\n ): EmbeddedViewRef<C> {\n return this.vcr.createEmbeddedView(templateRef, context);\n }\n}\n\n/**\n * Abstract service for displaying portals\n */\n@Injectable()\nexport abstract class TuiPortalService {\n protected host?: TuiPortals;\n\n public attach(host: TuiPortals): void {\n this.host = host;\n }\n\n public add<C>(component: PolymorpheusComponent<C>): ComponentRef<C> {\n return this.safeHost.addComponentChild(component);\n }\n\n public remove<C>({hostView}: ComponentRef<C>): void {\n if (!hostView.destroyed) {\n hostView.destroy();\n }\n }\n\n public addTemplate<C>(templateRef: TemplateRef<C>, context?: C): EmbeddedViewRef<C> {\n return this.safeHost.addTemplateChild(templateRef, context);\n }\n\n public removeTemplate<C>(viewRef: EmbeddedViewRef<C>): void {\n if (!viewRef.destroyed) {\n viewRef.destroy();\n }\n }\n\n protected get safeHost(): TuiPortals {\n if (!this.host) {\n throw new TuiNoHostException();\n }\n\n return this.host;\n }\n}\n\nexport function tuiAsPortal(portal: typeof TuiPortalService): Provider {\n return tuiProvide(TuiPortalService, portal);\n}\n\nexport class TuiNoHostException extends Error {\n constructor() {\n super(ngDevMode ? 'Portals cannot be used without TuiPortalHostComponent' : '');\n }\n}\n","import type {PolymorpheusContent} from '@taiga-ui/polymorpheus';\n\nexport class TuiValidationError<T extends Record<string, any> = Record<string, unknown>> {\n constructor(\n public readonly message: PolymorpheusContent<T>,\n public readonly context: T = {} as T,\n ) {}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
1
|
+
{"version":3,"file":"taiga-ui-cdk-classes.mjs","sources":["../../../projects/cdk/classes/value-transformer.ts","../../../projects/cdk/classes/control.ts","../../../projects/cdk/classes/portals.ts","../../../projects/cdk/classes/validation-error.ts","../../../projects/cdk/classes/taiga-ui-cdk-classes.ts"],"sourcesContent":["import type {FactoryProvider, ProviderToken} from '@angular/core';\nimport {inject} from '@angular/core';\n\nexport abstract class TuiValueTransformer<From, To = unknown> {\n public abstract toControlValue(componentValue: From): To;\n public abstract fromControlValue(controlValue: To): From;\n}\n\nexport function tuiValueTransformerFrom<\n T extends {valueTransformer: TuiValueTransformer<unknown>},\n>(token: ProviderToken<T>): FactoryProvider {\n return {\n provide: TuiValueTransformer,\n useFactory: () => inject(token).valueTransformer,\n };\n}\n","import type {Provider, Type} from '@angular/core';\nimport {\n ChangeDetectorRef,\n computed,\n Directive,\n inject,\n Input,\n signal,\n} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport type {ControlValueAccessor, FormControlStatus} from '@angular/forms';\nimport {NgControl, NgModel} from '@angular/forms';\nimport {EMPTY_FUNCTION} from '@taiga-ui/cdk/constants';\nimport {TUI_FALLBACK_VALUE} from '@taiga-ui/cdk/tokens';\nimport {tuiProvide, tuiPure} from '@taiga-ui/cdk/utils';\nimport {\n delay,\n distinctUntilChanged,\n EMPTY,\n filter,\n map,\n merge,\n startWith,\n Subject,\n switchMap,\n} from 'rxjs';\n\nimport {TuiValueTransformer} from './value-transformer';\n\nconst FLAGS = {self: true, optional: true};\n\n/**\n * Basic ControlValueAccessor class to build form components upon\n */\n@Directive()\nexport abstract class TuiControl<T> implements ControlValueAccessor {\n private readonly fallback = inject(TUI_FALLBACK_VALUE, FLAGS) as T;\n private readonly refresh$ = new Subject<void>();\n private readonly pseudoInvalid = signal<boolean | null>(null);\n private readonly internal = signal(this.fallback);\n\n protected readonly control = inject(NgControl, {self: true});\n protected readonly cdr = inject(ChangeDetectorRef);\n protected readonly transformer = inject(TuiValueTransformer, FLAGS);\n\n public readonly value = computed(() => this.internal() ?? this.fallback);\n public readonly readOnly = signal(false);\n public readonly touched = signal(false);\n public readonly status = signal<FormControlStatus | undefined>(undefined);\n public readonly disabled = computed(() => this.status() === 'DISABLED');\n public readonly interactive = computed(() => !this.disabled() && !this.readOnly());\n public readonly invalid = computed(() =>\n this.pseudoInvalid() !== null\n ? !!this.pseudoInvalid() && this.interactive()\n : this.interactive() && this.touched() && this.status() === 'INVALID',\n );\n\n public readonly mode = computed(() =>\n // eslint-disable-next-line no-nested-ternary\n this.readOnly() ? 'readonly' : this.invalid() ? 'invalid' : 'valid',\n );\n\n public onTouched = EMPTY_FUNCTION;\n public onChange: (value: T) => void = EMPTY_FUNCTION;\n\n constructor() {\n this.control.valueAccessor = this;\n this.refresh$\n .pipe(\n delay(0),\n startWith(null),\n map(() => this.control.control),\n filter(Boolean),\n distinctUntilChanged(),\n switchMap((c) =>\n merge(\n c.valueChanges,\n c.statusChanges,\n (c as any).events || EMPTY,\n ).pipe(startWith(null)),\n ),\n takeUntilDestroyed(),\n )\n .subscribe(() => this.update());\n }\n\n @Input('readOnly')\n public set readOnlySetter(readOnly: boolean) {\n this.readOnly.set(readOnly);\n }\n\n @Input('invalid')\n public set invalidSetter(invalid: boolean | null) {\n this.pseudoInvalid.set(invalid);\n }\n\n public registerOnChange(onChange: (value: unknown) => void): void {\n this.refresh$.next();\n\n this.onChange = (value: T) => {\n if (value === this.internal()) {\n return;\n }\n\n onChange(this.toControlValue(value));\n this.internal.set(value);\n this.update();\n };\n }\n\n public registerOnTouched(onTouched: () => void): void {\n this.onTouched = () => {\n onTouched();\n this.update();\n };\n }\n\n public setDisabledState(): void {\n this.update();\n }\n\n public writeValue(value: T | null): void {\n // TODO: https://github.com/angular/angular/issues/14988\n const safe = this.control instanceof NgModel ? this.control.model : value;\n\n this.internal.set(this.fromControlValue(safe));\n this.update();\n }\n\n @tuiPure\n private fromControlValue(value: unknown): T {\n return this.transformer ? this.transformer.fromControlValue(value) : (value as T);\n }\n\n @tuiPure\n private toControlValue(value: T): unknown {\n return this.transformer ? this.transformer.toControlValue(value) : value;\n }\n\n private update(): void {\n this.status.set(this.control.control?.status);\n this.touched.set(!!this.control.control?.touched);\n this.cdr.markForCheck();\n }\n}\n\nexport function tuiAsControl<T>(control: Type<TuiControl<T>>): Provider {\n return tuiProvide(TuiControl, control);\n}\n","/// <reference types=\"@taiga-ui/tsconfig/ng-dev-mode\" />\nimport type {\n ComponentRef,\n EmbeddedViewRef,\n Provider,\n TemplateRef,\n ViewRef,\n} from '@angular/core';\nimport {\n Directive,\n inject,\n Injectable,\n INJECTOR,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport {tuiProvide} from '@taiga-ui/cdk/utils';\nimport type {PolymorpheusComponent} from '@taiga-ui/polymorpheus';\n\n/**\n * Abstract class for host element for dynamically created portals.\n */\n@Directive()\nexport abstract class TuiPortals {\n @ViewChild('viewContainer', {read: ViewContainerRef})\n private readonly vcr!: ViewContainerRef;\n\n private readonly injector = inject(INJECTOR);\n\n protected readonly nothing = inject(TuiPortalService).attach(this);\n\n public addComponentChild<C>(component: PolymorpheusComponent<C>): ComponentRef<C> {\n const injector = component.createInjector(this.injector);\n const ref = this.vcr.createComponent(component.component, {injector});\n\n ref.changeDetectorRef.detectChanges();\n\n return ref;\n }\n\n public addTemplateChild<C>(\n templateRef: TemplateRef<C>,\n context?: C,\n ): EmbeddedViewRef<C> {\n return this.vcr.createEmbeddedView(templateRef, context);\n }\n}\n\n/**\n * Abstract service for displaying portals\n */\n@Injectable()\nexport abstract class TuiPortalService {\n protected host?: TuiPortals;\n\n public attach(host: TuiPortals): void {\n this.host = host;\n }\n\n public add<C>(component: PolymorpheusComponent<C>): ComponentRef<C> {\n return this.safeHost.addComponentChild(component);\n }\n\n public remove<C>({hostView}: ComponentRef<C>): void {\n this.removeTemplate(hostView);\n }\n\n public addTemplate<C>(templateRef: TemplateRef<C>, context?: C): EmbeddedViewRef<C> {\n return this.safeHost.addTemplateChild(templateRef, context);\n }\n\n public removeTemplate<C>(viewRef: EmbeddedViewRef<C> | ViewRef): void {\n if (!viewRef.destroyed) {\n viewRef.destroy();\n }\n }\n\n protected get safeHost(): TuiPortals {\n if (!this.host) {\n throw new TuiNoHostException();\n }\n\n return this.host;\n }\n}\n\nexport function tuiAsPortal(portal: typeof TuiPortalService): Provider {\n return tuiProvide(TuiPortalService, portal);\n}\n\nexport class TuiNoHostException extends Error {\n constructor() {\n super(ngDevMode ? 'Portals cannot be used without TuiPortalHostComponent' : '');\n }\n}\n","import type {PolymorpheusContent} from '@taiga-ui/polymorpheus';\n\nexport class TuiValidationError<T extends Record<string, any> = Record<string, unknown>> {\n constructor(\n public readonly message: PolymorpheusContent<T>,\n public readonly context: T = {} as T,\n ) {}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|