@taiga-ui/core 5.24.0 → 5.25.0-canary.3fb67e2
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/accessors.d.ts +9 -1
- package/components/cell/cell-stretch.directive.d.ts +1 -1
- package/components/data-list/option.directive.d.ts +1 -1
- package/components/scrollbar/scroll-controls.component.d.ts +1 -1
- package/components/scrollbar/scroll-ref.directive.d.ts +2 -0
- package/components/scrollbar/scrollbar.component.d.ts +2 -3
- package/fesm2022/taiga-ui-core-classes.mjs +24 -7
- package/fesm2022/taiga-ui-core-classes.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-button.mjs +2 -2
- package/fesm2022/taiga-ui-core-components-button.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-calendar.mjs +1 -1
- package/fesm2022/taiga-ui-core-components-calendar.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-carousel.mjs +2 -2
- package/fesm2022/taiga-ui-core-components-carousel.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-cell.mjs +6 -9
- package/fesm2022/taiga-ui-core-components-cell.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-checkbox.mjs +2 -2
- package/fesm2022/taiga-ui-core-components-checkbox.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-data-list.mjs +7 -7
- package/fesm2022/taiga-ui-core-components-data-list.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-icon.mjs +2 -2
- package/fesm2022/taiga-ui-core-components-icon.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-label.mjs +3 -3
- package/fesm2022/taiga-ui-core-components-label.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-link.mjs +2 -2
- package/fesm2022/taiga-ui-core-components-link.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-notification.mjs +2 -2
- package/fesm2022/taiga-ui-core-components-notification.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-radio.mjs +2 -2
- package/fesm2022/taiga-ui-core-components-radio.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-root.mjs +3 -3
- package/fesm2022/taiga-ui-core-components-root.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-scrollbar.mjs +34 -49
- package/fesm2022/taiga-ui-core-components-scrollbar.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-textfield.mjs +6 -5
- package/fesm2022/taiga-ui-core-components-textfield.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-title.mjs +3 -3
- package/fesm2022/taiga-ui-core-components-title.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-directives-appearance.mjs +3 -3
- package/fesm2022/taiga-ui-core-directives-appearance.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-directives-group.mjs +3 -3
- package/fesm2022/taiga-ui-core-directives-group.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-directives-icons.mjs +3 -3
- package/fesm2022/taiga-ui-core-directives-icons.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-portals-alert.mjs +3 -3
- package/fesm2022/taiga-ui-core-portals-alert.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-portals-dialog.mjs +2 -2
- package/fesm2022/taiga-ui-core-portals-dialog.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-portals-dropdown.mjs +239 -146
- package/fesm2022/taiga-ui-core-portals-dropdown.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-portals-hint.mjs +32 -34
- package/fesm2022/taiga-ui-core-portals-hint.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-portals-modal.mjs +3 -3
- package/fesm2022/taiga-ui-core-portals-modal.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-tokens.mjs +30 -8
- package/fesm2022/taiga-ui-core-tokens.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-utils-dom.mjs +21 -1
- package/fesm2022/taiga-ui-core-utils-dom.mjs.map +1 -1
- package/package.json +36 -36
- package/portals/dropdown/dropdown-anchor.directive.d.ts +5 -1
- package/portals/dropdown/dropdown-anchored.directive.d.ts +4 -1
- package/portals/dropdown/dropdown-context.directive.d.ts +3 -4
- package/portals/dropdown/dropdown-position-sided.directive.d.ts +2 -0
- package/portals/dropdown/dropdown-position.directive.d.ts +2 -0
- package/portals/dropdown/dropdown-selection.directive.d.ts +1 -1
- package/portals/dropdown/dropdown.component.d.ts +3 -4
- package/portals/dropdown/dropdown.directive.d.ts +1 -0
- package/portals/dropdown/dropdown.providers.d.ts +1 -1
- package/portals/hint/hint-anchor.directive.d.ts +5 -1
- package/portals/hint/hint-pointer.directive.d.ts +1 -3
- package/portals/hint/hint.d.ts +1 -2
- package/tokens/date-format.d.ts +19 -0
- package/tokens/number-format.d.ts +18 -8
- package/utils/dom/anchor-delegate.d.ts +1 -0
- package/utils/dom/index.d.ts +1 -0
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { InjectionToken, ElementRef, Directive, inject, input, signal, INJECTOR,
|
|
2
|
+
import { InjectionToken, ElementRef, Directive, inject, input, signal, INJECTOR, ChangeDetectionStrategy, Component, TemplateRef, computed, effect } from '@angular/core';
|
|
3
3
|
import * as i3 from '@taiga-ui/cdk/directives/active-zone';
|
|
4
4
|
import { TuiActiveZone } from '@taiga-ui/cdk/directives/active-zone';
|
|
5
5
|
import * as i2 from '@taiga-ui/cdk/directives/animated';
|
|
6
6
|
import { TuiAnimated } from '@taiga-ui/cdk/directives/animated';
|
|
7
7
|
import { tuiInjectElement, tuiPointToClientRect } from '@taiga-ui/cdk/utils/dom';
|
|
8
|
-
import { TuiDriverDirective, TuiDriver, tuiAsDriver, TuiPositionAccessor,
|
|
8
|
+
import { TuiRectAccessor, tuiAsRectAccessor, TuiDriverDirective, TuiDriver, tuiAsDriver, TuiPositionAccessor, tuiInjectAccessor, tuiAsPositionAccessor, tuiAsVehicle, tuiProvideAccessor } from '@taiga-ui/core/classes';
|
|
9
9
|
import { tuiButtonOptionsProvider } from '@taiga-ui/core/components/button';
|
|
10
10
|
import * as i1 from '@taiga-ui/core/directives/appearance';
|
|
11
11
|
import { tuiAppearance, TuiAppearance } from '@taiga-ui/core/directives/appearance';
|
|
@@ -22,6 +22,7 @@ import { TUI_VIEWPORT } from '@taiga-ui/core/tokens';
|
|
|
22
22
|
import { EMPTY_CLIENT_RECT } from '@taiga-ui/cdk/constants';
|
|
23
23
|
import { tuiClamp } from '@taiga-ui/cdk/utils/math';
|
|
24
24
|
import { TuiVisualViewportService, TuiPositionService } from '@taiga-ui/core/services';
|
|
25
|
+
import { tuiAnchorDelegate } from '@taiga-ui/core/utils/dom';
|
|
25
26
|
import { DOCUMENT } from '@angular/common';
|
|
26
27
|
import { tuiIfMap, tuiTypedFromEvent, tuiZoneOptimized } from '@taiga-ui/cdk/observables';
|
|
27
28
|
import { tuiIsFocused } from '@taiga-ui/cdk/utils/focus';
|
|
@@ -32,17 +33,29 @@ import { tuiIsFocused } from '@taiga-ui/cdk/utils/focus';
|
|
|
32
33
|
const TUI_HINT_COMPONENT = new InjectionToken(ngDevMode ? 'TUI_HINT_COMPONENT' : '', { factory: () => TuiHintComponent });
|
|
33
34
|
|
|
34
35
|
const TUI_HINT_ANCHOR = new InjectionToken(ngDevMode ? 'TUI_HINT_ANCHOR' : '');
|
|
35
|
-
class TuiHintAnchor {
|
|
36
|
+
class TuiHintAnchor extends TuiRectAccessor {
|
|
36
37
|
constructor() {
|
|
38
|
+
super(...arguments);
|
|
39
|
+
this.el = tuiInjectElement();
|
|
37
40
|
this.anchor = `--${tuiGenerateId()}`;
|
|
41
|
+
this.type = 'hint';
|
|
42
|
+
}
|
|
43
|
+
getClientRect() {
|
|
44
|
+
return this.el.getBoundingClientRect();
|
|
38
45
|
}
|
|
39
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: TuiHintAnchor, deps:
|
|
40
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.25", type: TuiHintAnchor, isStandalone: true, host: { properties: { "attr.data-tui-anchor": "anchor", "style.anchor-name": "anchor" } }, providers: [
|
|
46
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: TuiHintAnchor, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
47
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.25", type: TuiHintAnchor, isStandalone: true, host: { properties: { "attr.data-tui-anchor": "anchor", "style.anchor-name": "anchor" } }, providers: [
|
|
48
|
+
tuiAsRectAccessor(TuiHintAnchor),
|
|
49
|
+
tuiProvide(TUI_HINT_ANCHOR, ElementRef),
|
|
50
|
+
], usesInheritance: true, ngImport: i0 }); }
|
|
41
51
|
}
|
|
42
52
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: TuiHintAnchor, decorators: [{
|
|
43
53
|
type: Directive,
|
|
44
54
|
args: [{
|
|
45
|
-
providers: [
|
|
55
|
+
providers: [
|
|
56
|
+
tuiAsRectAccessor(TuiHintAnchor),
|
|
57
|
+
tuiProvide(TUI_HINT_ANCHOR, ElementRef),
|
|
58
|
+
],
|
|
46
59
|
host: {
|
|
47
60
|
'[attr.data-tui-anchor]': 'anchor',
|
|
48
61
|
'[style.anchor-name]': 'anchor',
|
|
@@ -103,7 +116,7 @@ class TuiHintHover extends TuiDriver {
|
|
|
103
116
|
this.stream$ = merge(this.toggle$.pipe(switchMap((show) => this.isMobile
|
|
104
117
|
? of(show).pipe(delay(show ? 0 : MOBILE_HIDE_DELAY_MS))
|
|
105
118
|
: of(show).pipe(delay(show ? 0 : this.hideDelay()))), takeUntil(this.hovered$), repeat()), this.hovered$.pipe(switchMap((show) => this.isMobile
|
|
106
|
-
? of(show).pipe(delay(0))
|
|
119
|
+
? of(show).pipe(filter(() => !show), delay(0))
|
|
107
120
|
: of(show).pipe(delay(show ? this.showDelay() : this.hideDelay()))), takeUntil(this.toggle$), repeat())).pipe(filter(() => this.enabled), map((value) => value &&
|
|
108
121
|
(this.el.hasAttribute('tuiHintPointer') || !tuiIsObscured(this.el))), tap((visible) => {
|
|
109
122
|
this.visible = visible;
|
|
@@ -161,7 +174,7 @@ class TuiHintPosition extends TuiPositionAccessor {
|
|
|
161
174
|
this.viewport = inject(TUI_VIEWPORT);
|
|
162
175
|
this.options = inject(TUI_HINT_OPTIONS);
|
|
163
176
|
this.directionChange = new Subject();
|
|
164
|
-
this.accessor =
|
|
177
|
+
this.accessor = tuiInjectAccessor(TuiRectAccessor, 'hint');
|
|
165
178
|
this.points = TUI_HINT_DIRECTIONS.reduce((acc, direction) => ({ ...acc, [direction]: [0, 0] }), {});
|
|
166
179
|
this.direction = input(this.options.direction, {
|
|
167
180
|
alias: 'tuiHintDirection',
|
|
@@ -232,10 +245,11 @@ class TuiHintPosition extends TuiPositionAccessor {
|
|
|
232
245
|
left + width < viewport.right - GAP$1);
|
|
233
246
|
}
|
|
234
247
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: TuiHintPosition, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
235
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.25", type: TuiHintPosition, isStandalone: true, inputs: { direction: { classPropertyName: "direction", publicName: "tuiHintDirection", isSignal: true, isRequired: false, transformFunction: null }, offset: { classPropertyName: "offset", publicName: "tuiHintOffset", isSignal: true, isRequired: false, transformFunction: null }, centered: { classPropertyName: "centered", publicName: "tuiHintCentered", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { tuiHintDirectionChange: "tuiHintDirectionChange" }, usesInheritance: true, ngImport: i0 }); }
|
|
248
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.25", type: TuiHintPosition, isStandalone: true, inputs: { direction: { classPropertyName: "direction", publicName: "tuiHintDirection", isSignal: true, isRequired: false, transformFunction: null }, offset: { classPropertyName: "offset", publicName: "tuiHintOffset", isSignal: true, isRequired: false, transformFunction: null }, centered: { classPropertyName: "centered", publicName: "tuiHintCentered", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { tuiHintDirectionChange: "tuiHintDirectionChange" }, providers: [tuiAsPositionAccessor(TuiHintPosition)], usesInheritance: true, ngImport: i0 }); }
|
|
236
249
|
}
|
|
237
250
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: TuiHintPosition, decorators: [{
|
|
238
|
-
type: Directive
|
|
251
|
+
type: Directive,
|
|
252
|
+
args: [{ providers: [tuiAsPositionAccessor(TuiHintPosition)] }]
|
|
239
253
|
}] });
|
|
240
254
|
function adjust(direction, rtl) {
|
|
241
255
|
if (rtl && direction.includes('left')) {
|
|
@@ -373,8 +387,8 @@ class TuiHintAnchored {
|
|
|
373
387
|
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.25", type: TuiHintAnchored, isStandalone: true, providers: [
|
|
374
388
|
TuiPositionService,
|
|
375
389
|
TuiHoveredService,
|
|
376
|
-
|
|
377
|
-
|
|
390
|
+
tuiProvideAccessor(TuiPositionAccessor, 'hint'),
|
|
391
|
+
tuiProvideAccessor(TuiRectAccessor, 'hint'),
|
|
378
392
|
], ngImport: i0 }); }
|
|
379
393
|
}
|
|
380
394
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: TuiHintAnchored, decorators: [{
|
|
@@ -383,32 +397,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
|
|
|
383
397
|
providers: [
|
|
384
398
|
TuiPositionService,
|
|
385
399
|
TuiHoveredService,
|
|
386
|
-
|
|
387
|
-
|
|
400
|
+
tuiProvideAccessor(TuiPositionAccessor, 'hint'),
|
|
401
|
+
tuiProvideAccessor(TuiRectAccessor, 'hint'),
|
|
388
402
|
],
|
|
389
403
|
}]
|
|
390
404
|
}] });
|
|
391
405
|
|
|
392
|
-
const STYLE = {
|
|
393
|
-
position: 'fixed',
|
|
394
|
-
blockSize: '1px',
|
|
395
|
-
inlineSize: '1px',
|
|
396
|
-
pointerEvents: 'none',
|
|
397
|
-
};
|
|
398
406
|
class TuiHintPointer extends TuiHintHover {
|
|
399
407
|
constructor() {
|
|
400
|
-
super();
|
|
401
|
-
this.doc = inject(DOCUMENT);
|
|
408
|
+
super(...arguments);
|
|
402
409
|
this.currentRect = EMPTY_CLIENT_RECT;
|
|
403
|
-
this.nativeElement =
|
|
404
|
-
afterNextRender(() => {
|
|
405
|
-
const anchorName = `--${tuiGenerateId()}`;
|
|
406
|
-
const positionAnchor = this.el.getAttribute('data-tui-anchor');
|
|
407
|
-
const style = { ...STYLE, positionAnchor, anchorName };
|
|
408
|
-
Object.assign(this.nativeElement.style, style);
|
|
409
|
-
this.nativeElement.setAttribute('data-tui-anchor', anchorName);
|
|
410
|
-
this.doc.body.appendChild(this.nativeElement);
|
|
411
|
-
});
|
|
410
|
+
this.nativeElement = tuiAnchorDelegate({ width: '1px', height: '1px' });
|
|
412
411
|
}
|
|
413
412
|
ngOnDestroy() {
|
|
414
413
|
this.nativeElement.parentNode?.removeChild(this.nativeElement);
|
|
@@ -422,7 +421,7 @@ class TuiHintPointer extends TuiHintHover {
|
|
|
422
421
|
this.nativeElement.style.top = `calc(anchor(top) + ${clientY - top}px)`;
|
|
423
422
|
this.nativeElement.style.left = `calc(anchor(left) + ${clientX - left}px)`;
|
|
424
423
|
}
|
|
425
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: TuiHintPointer, deps:
|
|
424
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: TuiHintPointer, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
426
425
|
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.25", type: TuiHintPointer, isStandalone: true, selector: "[tuiHint][tuiHintPointer]", host: { listeners: { "mousemove.zoneless": "onMove($event)" } }, providers: [
|
|
427
426
|
tuiAsRectAccessor(TuiHintPointer),
|
|
428
427
|
tuiAsDriver(TuiHintPointer),
|
|
@@ -440,7 +439,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
|
|
|
440
439
|
],
|
|
441
440
|
host: { '(mousemove.zoneless)': 'onMove($event)' },
|
|
442
441
|
}]
|
|
443
|
-
}]
|
|
442
|
+
}] });
|
|
444
443
|
|
|
445
444
|
class TuiHintUnstyledComponent {
|
|
446
445
|
constructor() {
|
|
@@ -625,7 +624,6 @@ const TuiHint = [
|
|
|
625
624
|
TuiHintDirective,
|
|
626
625
|
TuiHintUnstyled,
|
|
627
626
|
TuiHintDriver,
|
|
628
|
-
TuiHintPosition,
|
|
629
627
|
TuiHintHover,
|
|
630
628
|
TuiHintOverflow,
|
|
631
629
|
TuiHintDescribe,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taiga-ui-core-portals-hint.mjs","sources":["../../../projects/core/portals/hint/hint.providers.ts","../../../projects/core/portals/hint/hint-anchor.directive.ts","../../../projects/core/portals/hint/hint-driver.directive.ts","../../../projects/core/portals/hint/hint-options.directive.ts","../../../projects/core/portals/hint/hint-hover.directive.ts","../../../projects/core/portals/hint/hint-position.directive.ts","../../../projects/core/portals/hint/hint.directive.ts","../../../projects/core/portals/hint/hint-anchored.directive.ts","../../../projects/core/portals/hint/hint-pointer.directive.ts","../../../projects/core/portals/hint/hint-unstyled.component.ts","../../../projects/core/portals/hint/hint.component.ts","../../../projects/core/portals/hint/hint-describe.directive.ts","../../../projects/core/portals/hint/hint-host.directive.ts","../../../projects/core/portals/hint/hint-manual.directive.ts","../../../projects/core/portals/hint/hint-overflow.directive.ts","../../../projects/core/portals/hint/hint.ts","../../../projects/core/portals/hint/taiga-ui-core-portals-hint.ts"],"sourcesContent":["import {InjectionToken, type Type} from '@angular/core';\n\nimport {TuiHintComponent} from './hint.component';\n\n/**\n * A component to display a hint\n */\nexport const TUI_HINT_COMPONENT = new InjectionToken<Type<unknown>>(\n ngDevMode ? 'TUI_HINT_COMPONENT' : '',\n {factory: () => TuiHintComponent},\n);\n","import {Directive, ElementRef, InjectionToken} from '@angular/core';\nimport {tuiProvide} from '@taiga-ui/cdk/utils/di';\nimport {tuiGenerateId} from '@taiga-ui/cdk/utils/miscellaneous';\n\nexport const TUI_HINT_ANCHOR = new InjectionToken<ElementRef<Element>>(\n ngDevMode ? 'TUI_HINT_ANCHOR' : '',\n);\n\n@Directive({\n providers: [tuiProvide(TUI_HINT_ANCHOR, ElementRef)],\n host: {\n '[attr.data-tui-anchor]': 'anchor',\n '[style.anchor-name]': 'anchor',\n },\n})\nexport class TuiHintAnchor {\n protected readonly anchor = `--${tuiGenerateId()}`;\n}\n","import {Directive} from '@angular/core';\nimport {TuiDriverDirective} from '@taiga-ui/core/classes';\n\n@Directive()\nexport class TuiHintDriver extends TuiDriverDirective {\n public readonly type = 'hint';\n}\n","import {tuiCreateOptions} from '@taiga-ui/cdk/utils/di';\nimport {type TuiAppearanceOptions} from '@taiga-ui/core/directives/appearance';\n\nexport type TuiHintDirection =\n | 'bottom-end'\n | 'bottom-start'\n | 'bottom'\n | 'end-bottom'\n | 'end-top'\n | 'end'\n | 'start-bottom'\n | 'start-top'\n | 'start'\n | 'top-end'\n | 'top-start'\n | 'top';\n\nexport const TUI_HINT_DIRECTIONS: readonly TuiHintDirection[] = [\n 'bottom-start',\n 'bottom',\n 'bottom-end',\n 'top-start',\n 'top',\n 'top-end',\n 'start-top',\n 'start',\n 'start-bottom',\n 'end-top',\n 'end',\n 'end-bottom',\n];\n\n/** TODO: remove optionality in v6 */\nexport interface TuiHintOptions extends TuiAppearanceOptions {\n readonly direction: TuiHintDirection | TuiHintDirection[];\n readonly centered?: boolean;\n readonly hideDelay: number;\n readonly icon: string;\n readonly showDelay: number;\n}\n\n/** Default values for hint options */\nexport const TUI_HINT_DEFAULT_OPTIONS: TuiHintOptions = {\n direction: 'bottom-start',\n centered: true,\n showDelay: 500,\n hideDelay: 200,\n appearance: '',\n /** TODO @deprecated use {@link TUI_TOOLTIP_OPTIONS} instead **/\n icon: '@tui.circle-help',\n};\n\n/**\n * Default parameters for hint directive\n */\nexport const [TUI_HINT_OPTIONS, tuiHintOptionsProvider] = tuiCreateOptions(\n TUI_HINT_DEFAULT_OPTIONS,\n);\n","import {Directive, inject, input} from '@angular/core';\nimport {WA_IS_MOBILE} from '@ng-web-apis/platform';\nimport {TuiHoveredService} from '@taiga-ui/cdk/directives/hovered';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {tuiAsDriver, TuiDriver} from '@taiga-ui/core/classes';\nimport {tuiIsObscured} from '@taiga-ui/core/utils/miscellaneous';\nimport {\n delay,\n filter,\n map,\n merge,\n of,\n repeat,\n Subject,\n switchMap,\n takeUntil,\n tap,\n} from 'rxjs';\n\nimport {TUI_HINT_OPTIONS} from './hint-options.directive';\n\nconst MOBILE_HIDE_DELAY_MS = 100;\n\n@Directive({\n providers: [tuiAsDriver(TuiHintHover), TuiHoveredService],\n exportAs: 'tuiHintHover',\n host: {'(click)': 'onClick()'},\n})\nexport class TuiHintHover extends TuiDriver {\n private readonly isMobile = inject(WA_IS_MOBILE);\n private readonly hovered$ = inject(TuiHoveredService);\n private readonly options = inject(TUI_HINT_OPTIONS);\n private visible = false;\n private readonly toggle$ = new Subject<boolean>();\n private readonly stream$ = merge(\n this.toggle$.pipe(\n switchMap((show) =>\n this.isMobile\n ? of(show).pipe(delay(show ? 0 : MOBILE_HIDE_DELAY_MS))\n : of(show).pipe(delay(show ? 0 : this.hideDelay())),\n ),\n takeUntil(this.hovered$),\n repeat(),\n ),\n this.hovered$.pipe(\n switchMap((show) =>\n this.isMobile\n ? of(show).pipe(delay(0))\n : of(show).pipe(delay(show ? this.showDelay() : this.hideDelay())),\n ),\n takeUntil(this.toggle$),\n repeat(),\n ),\n ).pipe(\n filter(() => this.enabled),\n map(\n (value) =>\n value &&\n (this.el.hasAttribute('tuiHintPointer') || !tuiIsObscured(this.el)),\n ),\n tap((visible) => {\n this.visible = visible;\n }),\n );\n\n private readonly parent = inject(TuiHintHover, {\n optional: true,\n skipSelf: true,\n });\n\n protected readonly el = tuiInjectElement();\n\n public readonly showDelay = input(this.options.showDelay, {\n alias: 'tuiHintShowDelay',\n });\n\n public readonly hideDelay = input(this.options.hideDelay, {\n alias: 'tuiHintHideDelay',\n });\n\n public readonly type = 'hint';\n public enabled = true;\n\n constructor() {\n super((subscriber) => this.stream$.subscribe(subscriber));\n }\n\n public toggle(visible = !this.visible): void {\n this.toggle$.next(visible);\n this.parent?.toggle(visible);\n }\n\n public close(): void {\n this.toggle$.next(false);\n }\n\n /**\n * Synthesized `mouseenter` is not fired again until another element is tapped, so showing on mobile\n * cannot rely on it.\n */\n protected onClick(): void {\n if (this.isMobile) {\n this.toggle();\n }\n }\n}\n","import {Directive, inject, input} from '@angular/core';\nimport {outputFromObservable} from '@angular/core/rxjs-interop';\nimport {WA_IS_MOBILE} from '@ng-web-apis/platform';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {\n tuiFallbackAccessor,\n TuiPositionAccessor,\n TuiRectAccessor,\n} from '@taiga-ui/core/classes';\nimport {TUI_VIEWPORT} from '@taiga-ui/core/tokens';\nimport {type TuiPoint} from '@taiga-ui/core/types';\nimport {distinctUntilChanged, Subject} from 'rxjs';\n\nimport {\n TUI_HINT_DIRECTIONS,\n TUI_HINT_OPTIONS,\n type TuiHintDirection,\n} from './hint-options.directive';\n\nconst GAP = 8;\nconst ARROW_OFFSET = 22;\nconst TOP = 1;\nconst LEFT = 0;\n\n@Directive()\nexport class TuiHintPosition extends TuiPositionAccessor {\n private readonly el = tuiInjectElement();\n private readonly viewport = inject(TUI_VIEWPORT);\n private readonly options = inject(TUI_HINT_OPTIONS);\n private readonly directionChange = new Subject<TuiHintDirection>();\n\n private readonly accessor = tuiFallbackAccessor<TuiRectAccessor>('hint')(\n inject<any>(TuiRectAccessor, {optional: true}),\n {getClientRect: () => this.el.getBoundingClientRect()},\n );\n\n private readonly points: Record<TuiHintDirection, [number, number]> =\n TUI_HINT_DIRECTIONS.reduce(\n (acc, direction) => ({...acc, [direction]: [0, 0]}),\n {} as Record<TuiHintDirection, [number, number]>,\n );\n\n public readonly direction = input(this.options.direction, {\n alias: 'tuiHintDirection',\n });\n\n public readonly offset = input(inject(WA_IS_MOBILE) ? 16 : 8, {\n alias: 'tuiHintOffset',\n });\n\n public readonly centered = input(this.options.centered, {alias: 'tuiHintCentered'});\n\n public readonly tuiHintDirectionChange = outputFromObservable(\n this.directionChange.pipe(distinctUntilChanged()),\n );\n\n public readonly type = 'hint';\n\n public getPosition({width, height}: DOMRect): TuiPoint {\n const direction = this.direction();\n const rect = this.accessor.getClientRect();\n const leftCenter = rect.left + rect.width / 2;\n const topCenter = rect.top + rect.height / 2;\n const rtl = this.el.matches('[dir=\"rtl\"] :scope');\n const narrow = rect.width < ARROW_OFFSET * 2 || this.centered();\n const short = rect.height < ARROW_OFFSET * 2 || this.centered();\n const start = narrow ? leftCenter - ARROW_OFFSET : rect.left;\n const end = narrow ? leftCenter - width + ARROW_OFFSET : rect.right - width;\n const top = short ? topCenter - ARROW_OFFSET : rect.top;\n const bottom = short ? topCenter - height + ARROW_OFFSET : rect.bottom - height;\n\n this.points['top-start'][TOP] = rect.top - height - this.offset();\n this.points['top-start'][LEFT] = this.centered() ? end : start;\n this.points.top[TOP] = this.points['top-start'][TOP];\n this.points.top[LEFT] = leftCenter - width / 2;\n this.points['top-end'][TOP] = this.points['top-start'][TOP];\n this.points['top-end'][LEFT] = this.centered() ? start : end;\n\n this.points['bottom-start'][TOP] = rect.bottom + this.offset();\n this.points['bottom-start'][LEFT] = this.points['top-start'][LEFT];\n this.points.bottom[TOP] = this.points['bottom-start'][TOP];\n this.points.bottom[LEFT] = this.points.top[LEFT];\n this.points['bottom-end'][TOP] = this.points['bottom-start'][TOP];\n this.points['bottom-end'][LEFT] = this.points['top-end'][LEFT];\n\n this.points['start-top'][TOP] = this.centered() ? bottom : top;\n this.points['start-top'][LEFT] = rect.left - width - this.offset();\n this.points.start[TOP] = topCenter - height / 2;\n this.points.start[LEFT] = this.points['start-top'][LEFT];\n this.points['start-bottom'][TOP] = this.centered() ? bottom : top;\n this.points['start-bottom'][LEFT] = this.points['start-top'][LEFT];\n\n this.points['end-top'][TOP] = this.points['start-top'][TOP];\n this.points['end-top'][LEFT] = rect.right + this.offset();\n this.points.end[TOP] = this.points.start[TOP];\n this.points.end[LEFT] = this.points['end-top'][LEFT];\n this.points['end-bottom'][TOP] = this.points['start-bottom'][TOP];\n this.points['end-bottom'][LEFT] = this.points['end-top'][LEFT];\n\n const array = Array.isArray(direction) ? direction : [direction];\n const priority = array.map((direction) => adjust(direction, rtl));\n\n const updated =\n priority\n .concat(TUI_HINT_DIRECTIONS)\n .find((dir) => this.checkPosition(this.points[dir], width, height)) ||\n this.fallback;\n\n this.directionChange.next(adjust(updated, rtl));\n\n return this.points[updated];\n }\n\n private get fallback(): TuiHintDirection {\n return this.points.top[TOP] >\n this.viewport.getClientRect().bottom - this.points.bottom[TOP]\n ? 'top'\n : 'bottom';\n }\n\n private checkPosition([left, top]: TuiPoint, width: number, height: number): boolean {\n const viewport = this.viewport.getClientRect();\n\n return (\n top > viewport.top + GAP &&\n left > viewport.left + GAP &&\n top + height < viewport.bottom - GAP &&\n left + width < viewport.right - GAP\n );\n }\n}\n\nfunction adjust(direction: TuiHintDirection, rtl: boolean): TuiHintDirection {\n if (rtl && direction.includes('left')) {\n return direction.replace('left', 'right') as TuiHintDirection;\n }\n\n return rtl && direction.includes('right')\n ? (direction.replace('right', 'left') as TuiHintDirection)\n : direction;\n}\n","import {\n type ComponentRef,\n Directive,\n inject,\n INJECTOR,\n input,\n type OnChanges,\n type OnDestroy,\n signal,\n} from '@angular/core';\nimport {outputFromObservable, toObservable} from '@angular/core/rxjs-interop';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {\n tuiAsVehicle,\n type TuiRectAccessor,\n type TuiVehicle,\n} from '@taiga-ui/core/classes';\nimport {TuiPopupService} from '@taiga-ui/core/portals/popup';\nimport {PolymorpheusComponent, type PolymorpheusContent} from '@taiga-ui/polymorpheus';\nimport {map, skip} from 'rxjs';\n\nimport {TUI_HINT_COMPONENT} from './hint.providers';\nimport {TuiHintAnchor} from './hint-anchor.directive';\nimport {TuiHintDriver} from './hint-driver.directive';\nimport {TuiHintHover} from './hint-hover.directive';\nimport {TUI_HINT_OPTIONS} from './hint-options.directive';\nimport {TuiHintPosition} from './hint-position.directive';\n\n@Directive({\n selector: '[tuiHint]:not(ng-container):not(ng-template)',\n providers: [\n tuiAsVehicle(TuiHintDirective),\n {\n provide: PolymorpheusComponent,\n deps: [TUI_HINT_COMPONENT, INJECTOR],\n useClass: PolymorpheusComponent,\n },\n ],\n hostDirectives: [\n TuiHintAnchor,\n TuiHintDriver,\n {\n directive: TuiHintHover,\n inputs: ['tuiHintHideDelay', 'tuiHintShowDelay'],\n },\n {\n directive: TuiHintPosition,\n inputs: ['tuiHintDirection', 'tuiHintCentered', 'tuiHintOffset'],\n outputs: ['tuiHintDirectionChange'],\n },\n ],\n})\nexport class TuiHintDirective<C>\n implements OnDestroy, OnChanges, TuiRectAccessor, TuiVehicle\n{\n private readonly service = inject(TuiPopupService);\n private readonly ref = signal<ComponentRef<unknown> | null>(null);\n\n public readonly content = input<PolymorpheusContent<C>>(null, {alias: 'tuiHint'});\n public readonly context = input<C>(undefined, {alias: 'tuiHintContext'});\n public readonly appearance = input(inject(TUI_HINT_OPTIONS).appearance, {\n alias: 'tuiHintAppearance',\n });\n\n public readonly visible = outputFromObservable(\n toObservable(this.ref).pipe(map(Boolean), skip(1)),\n {alias: 'tuiHintVisible'},\n );\n\n public component = inject(PolymorpheusComponent<unknown>);\n public readonly el = tuiInjectElement();\n public readonly type = 'hint';\n\n public ngOnChanges(): void {\n if (!this.content()) {\n this.toggle(false);\n }\n }\n\n public ngOnDestroy(): void {\n this.toggle(false);\n }\n\n public getClientRect(): DOMRect {\n return this.el.getBoundingClientRect();\n }\n\n public toggle(show: boolean): void {\n if (show && this.content() && !this.ref()) {\n this.ref.set(this.service.add(this.component));\n } else if (!show) {\n this.ref()?.destroy();\n this.ref.set(null);\n }\n }\n}\n","import {type AfterViewInit, Directive, forwardRef, inject} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {EMPTY_CLIENT_RECT} from '@taiga-ui/cdk/constants';\nimport {TuiHoveredService} from '@taiga-ui/cdk/directives/hovered';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {tuiClamp} from '@taiga-ui/cdk/utils/math';\nimport {tuiPx} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {\n tuiPositionAccessorFor,\n TuiRectAccessor,\n tuiRectAccessorFor,\n} from '@taiga-ui/core/classes';\nimport {TuiPositionService, TuiVisualViewportService} from '@taiga-ui/core/services';\nimport {TUI_VIEWPORT} from '@taiga-ui/core/tokens';\nimport {map, takeWhile} from 'rxjs';\n\nimport {TuiHintDirective} from './hint.directive';\nimport {TuiHintHover} from './hint-hover.directive';\nimport {TuiHintPosition} from './hint-position.directive';\n\nconst GAP = 8;\nconst ARROW_OFFSET = 22;\n\n@Directive({\n providers: [\n TuiPositionService,\n TuiHoveredService,\n tuiPositionAccessorFor('hint', TuiHintPosition),\n tuiRectAccessorFor(\n 'hint',\n forwardRef(() => TuiHintDirective),\n ),\n ],\n})\nexport class TuiHintAnchored implements AfterViewInit {\n private readonly el = tuiInjectElement();\n private readonly hover = inject(TuiHintHover);\n private readonly vvs = inject(TuiVisualViewportService);\n private readonly viewport = inject(TUI_VIEWPORT);\n private readonly accessor = inject(TuiRectAccessor);\n private readonly directive = inject(TuiHintDirective);\n private readonly styles$ = inject(TuiPositionService).pipe(\n takeWhile(\n () =>\n this.directive.el.isConnected &&\n this.directive.el.getClientRects().length > 0,\n ),\n map((point) => this.vvs.correct(point)),\n takeUntilDestroyed(),\n );\n\n protected readonly sub = inject(TuiHoveredService)\n .pipe(takeUntilDestroyed())\n .subscribe((hover) => this.hover.toggle(hover));\n\n public ngAfterViewInit(): void {\n this.styles$.subscribe({\n next: (point) => this.update(...point),\n complete: () => this.directive.toggle(false),\n });\n }\n\n private update(left: number, top: number): void {\n const {clientHeight, clientWidth} = this.el;\n const rect = this.accessor.getClientRect();\n\n if (rect === EMPTY_CLIENT_RECT || !clientHeight || !clientWidth) {\n return;\n }\n\n const viewport = this.viewport.getClientRect();\n const max = Math.max(GAP, viewport.width + viewport.left - clientWidth - GAP);\n const safeLeft = tuiClamp(Math.max(GAP, left), viewport.left + GAP, max);\n const startX = Math.round(safeLeft) === Math.round(rect.left);\n const startY = Math.round(top) === Math.round(rect.top);\n const endX = Math.round(safeLeft + clientWidth) === Math.round(rect.right);\n const endY = Math.round(top + clientHeight) === Math.round(rect.bottom);\n const [beakLeft, beakTop] = this.vvs.correct([\n rect.left + rect.width / 2 - safeLeft,\n rect.top + rect.height / 2 - top,\n ]);\n\n /* eslint-disable no-nested-ternary */\n const x = startX ? ARROW_OFFSET : endX ? clientWidth - ARROW_OFFSET : beakLeft;\n const y = startY ? ARROW_OFFSET : endY ? clientHeight - ARROW_OFFSET : beakTop;\n\n this.apply(\n tuiPx(Math.round(top)),\n tuiPx(Math.round(safeLeft)),\n Math.round((tuiClamp(y, 0, clientHeight) / clientHeight) * 100),\n Math.round((tuiClamp(x, 0, clientWidth) / clientWidth) * 100),\n );\n }\n\n private apply(top: string, left: string, beakTop: number, beakLeft: number): void {\n this.el.style.setProperty('top', top);\n this.el.style.setProperty('left', left);\n this.el.style.setProperty('--t-top', `${beakTop}%`);\n this.el.style.setProperty('--t-left', `${beakLeft}%`);\n this.el.style.setProperty(\n '--t-rotate',\n !beakLeft || Math.ceil(beakLeft) === 100 ? '90deg' : '0deg',\n );\n }\n}\n","import {DOCUMENT} from '@angular/common';\nimport {\n afterNextRender,\n Directive,\n type ElementRef,\n inject,\n type OnDestroy,\n} from '@angular/core';\nimport {EMPTY_CLIENT_RECT} from '@taiga-ui/cdk/constants';\nimport {tuiProvide} from '@taiga-ui/cdk/utils/di';\nimport {tuiPointToClientRect} from '@taiga-ui/cdk/utils/dom';\nimport {tuiGenerateId} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {\n tuiAsDriver,\n tuiAsRectAccessor,\n type TuiRectAccessor,\n} from '@taiga-ui/core/classes';\n\nimport {TUI_HINT_ANCHOR} from './hint-anchor.directive';\nimport {TuiHintHover} from './hint-hover.directive';\n\nconst STYLE: Partial<CSSStyleDeclaration> = {\n position: 'fixed',\n blockSize: '1px',\n inlineSize: '1px',\n pointerEvents: 'none',\n};\n\n@Directive({\n selector: '[tuiHint][tuiHintPointer]',\n providers: [\n tuiAsRectAccessor(TuiHintPointer),\n tuiAsDriver(TuiHintPointer),\n tuiProvide(TUI_HINT_ANCHOR, TuiHintPointer),\n ],\n host: {'(mousemove.zoneless)': 'onMove($event)'},\n})\nexport class TuiHintPointer\n extends TuiHintHover\n implements TuiRectAccessor, ElementRef<HTMLElement>, OnDestroy\n{\n private readonly doc = inject(DOCUMENT);\n private currentRect = EMPTY_CLIENT_RECT;\n\n public readonly nativeElement = this.doc.createElement('div');\n\n constructor() {\n super();\n\n afterNextRender(() => {\n const anchorName = `--${tuiGenerateId()}`;\n const positionAnchor = this.el.getAttribute('data-tui-anchor');\n const style = {...STYLE, positionAnchor, anchorName};\n\n Object.assign(this.nativeElement.style, style);\n this.nativeElement.setAttribute('data-tui-anchor', anchorName);\n this.doc.body.appendChild(this.nativeElement);\n });\n }\n\n public ngOnDestroy(): void {\n this.nativeElement.parentNode?.removeChild(this.nativeElement);\n }\n\n public getClientRect(): DOMRect {\n return this.currentRect;\n }\n\n protected onMove({clientX, clientY}: MouseEvent): void {\n const {top, left} = this.el.getBoundingClientRect();\n\n this.currentRect = tuiPointToClientRect(clientX, clientY);\n this.nativeElement.style.top = `calc(anchor(top) + ${clientY - top}px)`;\n this.nativeElement.style.left = `calc(anchor(left) + ${clientX - left}px)`;\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n Directive,\n inject,\n INJECTOR,\n TemplateRef,\n} from '@angular/core';\nimport {tuiSetSignal} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {PolymorpheusComponent, PolymorpheusOutlet} from '@taiga-ui/polymorpheus';\n\nimport {TuiHintDirective} from './hint.directive';\n\n@Component({\n imports: [PolymorpheusOutlet],\n template: '<ng-container *polymorpheusOutlet=\"hint.content()\" />',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TuiHintUnstyledComponent {\n protected readonly hint = inject(TuiHintDirective);\n}\n\n@Directive({selector: 'ng-template[tuiHint]'})\nexport class TuiHintUnstyled<C> {\n constructor() {\n const hint = inject(TuiHintDirective<C>);\n\n tuiSetSignal(hint.content, inject(TemplateRef<C>));\n hint.component = new PolymorpheusComponent(\n TuiHintUnstyledComponent,\n inject(INJECTOR),\n );\n }\n}\n","import {ChangeDetectionStrategy, Component, inject, signal} from '@angular/core';\nimport {TuiActiveZone} from '@taiga-ui/cdk/directives/active-zone';\nimport {TuiAnimated} from '@taiga-ui/cdk/directives/animated';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {TuiRectAccessor} from '@taiga-ui/core/classes';\nimport {tuiButtonOptionsProvider} from '@taiga-ui/core/components/button';\nimport {TuiAppearance, tuiAppearance} from '@taiga-ui/core/directives/appearance';\nimport {tuiIsObscured} from '@taiga-ui/core/utils/miscellaneous';\nimport {PolymorpheusOutlet} from '@taiga-ui/polymorpheus';\n\nimport {TuiHintDirective} from './hint.directive';\nimport {TuiHintAnchored} from './hint-anchored.directive';\nimport {TuiHintHover} from './hint-hover.directive';\nimport {TuiHintPointer} from './hint-pointer.directive';\nimport {TuiHintUnstyledComponent} from './hint-unstyled.component';\n\n@Component({\n selector: 'tui-hint',\n imports: [PolymorpheusOutlet],\n template: `\n <ng-content />\n <span\n *polymorpheusOutlet=\"content() as text; context: hint.context()\"\n [innerHTML]=\"text\"\n ></span>\n `,\n styleUrl: './hint.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [tuiButtonOptionsProvider({size: 's'})],\n hostDirectives: [TuiAppearance, TuiAnimated, TuiActiveZone, TuiHintAnchored],\n host: {\n role: 'tooltip',\n '[attr.tuiTheme]': 'theme',\n '[class._untouchable]': 'pointer',\n '(document:pointerdown)': 'onPointerDown($event.target)',\n },\n})\nexport class TuiHintComponent {\n private readonly el = tuiInjectElement();\n private readonly hover = inject(TuiHintHover);\n\n protected readonly pointer = inject(TuiHintPointer, {optional: true});\n protected readonly accessor = inject(TuiRectAccessor);\n protected readonly hint = inject(TuiHintDirective);\n protected readonly appearance = tuiAppearance(this.hint.appearance);\n protected readonly content =\n this.hint.component.component === TuiHintUnstyledComponent\n ? signal('')\n : this.hint.content;\n\n protected readonly theme = this.hint.el\n .closest('[tuiTheme]')\n ?.getAttribute('tuiTheme');\n\n protected onPointerDown(target: HTMLElement): void {\n if (\n (!target.closest(this.el.tagName) && !this.hint.el.contains(target)) ||\n tuiIsObscured(this.hint.el)\n ) {\n this.hover.toggle(false);\n }\n }\n}\n","import {DOCUMENT} from '@angular/common';\nimport {computed, Directive, inject, input} from '@angular/core';\nimport {toObservable} from '@angular/core/rxjs-interop';\nimport {tuiIfMap, tuiTypedFromEvent, tuiZoneOptimized} from '@taiga-ui/cdk/observables';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {tuiIsFocused} from '@taiga-ui/cdk/utils/focus';\nimport {tuiIsPresent} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {tuiAsDriver, TuiDriver} from '@taiga-ui/core/classes';\nimport {\n debounce,\n distinctUntilChanged,\n fromEvent,\n map,\n merge,\n of,\n skip,\n startWith,\n switchMap,\n timer,\n} from 'rxjs';\n\n@Directive({\n selector: '[tuiHintDescribe]',\n providers: [tuiAsDriver(TuiHintDescribe)],\n})\nexport class TuiHintDescribe extends TuiDriver {\n private readonly doc = inject(DOCUMENT);\n private readonly el = tuiInjectElement();\n\n protected readonly element = computed((id = this.id()) =>\n id ? this.doc.querySelector(`#${id}`) || this.el : this.el,\n );\n\n public readonly id = input<string | null | undefined>('', {alias: 'tuiHintDescribe'});\n public readonly type = 'hint';\n\n protected readonly stream$ = toObservable(this.id).pipe(\n distinctUntilChanged(),\n tuiIfMap(() => fromEvent(this.doc, 'keydown', {capture: true}), tuiIsPresent),\n switchMap(() =>\n this.focused\n ? of(false)\n : merge(\n tuiTypedFromEvent(this.doc, 'keyup'),\n tuiTypedFromEvent(this.element(), 'blur'),\n ).pipe(map(() => this.focused)),\n ),\n debounce((visible) => (visible ? timer(1000) : of(null))),\n startWith(false),\n distinctUntilChanged(),\n skip(1),\n tuiZoneOptimized(),\n );\n\n constructor() {\n super((subscriber) => this.stream$.subscribe(subscriber));\n }\n\n private get focused(): boolean {\n return tuiIsFocused(this.element());\n }\n}\n","import {Directive, effect, type ElementRef, input} from '@angular/core';\nimport {tuiProvide} from '@taiga-ui/cdk/utils/di';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {tuiGenerateId} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {tuiAsRectAccessor, TuiRectAccessor} from '@taiga-ui/core/classes';\n\nimport {TUI_HINT_ANCHOR} from './hint-anchor.directive';\n\n@Directive({\n selector: '[tuiHint][tuiHintHost]',\n providers: [tuiAsRectAccessor(TuiHintHost), tuiProvide(TUI_HINT_ANCHOR, TuiHintHost)],\n})\nexport class TuiHintHost extends TuiRectAccessor implements ElementRef<HTMLElement> {\n public readonly tuiHintHost = input<HTMLElement>();\n public readonly type = 'hint';\n public nativeElement = tuiInjectElement();\n\n protected readonly sync = effect(() => {\n const anchorName = `--${tuiGenerateId()}`;\n\n this.nativeElement = this.tuiHintHost() || this.nativeElement;\n this.nativeElement.setAttribute('data-tui-anchor', anchorName);\n this.nativeElement.style.setProperty('anchor-name', anchorName);\n });\n\n public getClientRect(): DOMRect {\n return this.nativeElement.getBoundingClientRect();\n }\n}\n","import {Directive, inject, input, type OnChanges} from '@angular/core';\nimport {tuiAsDriver, TuiDriver} from '@taiga-ui/core/classes';\nimport {BehaviorSubject} from 'rxjs';\n\nimport {TuiHintHover} from './hint-hover.directive';\n\n@Directive({\n selector: '[tuiHint][tuiHintManual]',\n providers: [tuiAsDriver(TuiHintManual)],\n})\nexport class TuiHintManual extends TuiDriver implements OnChanges {\n private readonly hover = inject(TuiHintHover);\n private readonly stream$ = new BehaviorSubject(false);\n\n public readonly visible = input<boolean | null>(false, {alias: 'tuiHintManual'});\n public readonly type = 'hint';\n\n constructor() {\n super((subscriber) => this.stream$.subscribe(subscriber));\n this.hover.enabled = false;\n }\n\n public ngOnChanges(): void {\n this.stream$.next(!!this.visible());\n this.hover.enabled = this.visible() === null;\n }\n}\n","import {Directive, inject, input} from '@angular/core';\nimport {tuiSetSignal} from '@taiga-ui/cdk/utils/miscellaneous';\n\nimport {TuiHintDirective} from './hint.directive';\n\n@Directive({\n selector: '[tuiHintOverflow]',\n hostDirectives: [\n {\n directive: TuiHintDirective,\n inputs: ['tuiHintAppearance'],\n },\n ],\n host: {'(mouseenter)': 'onMouseEnter($event.currentTarget)'},\n})\nexport class TuiHintOverflow {\n private readonly hint = inject(TuiHintDirective);\n\n public readonly content = input<string | null>('', {alias: 'tuiHintOverflow'});\n\n protected onMouseEnter({scrollWidth, clientWidth, textContent}: Element): void {\n const content = this.content();\n\n tuiSetSignal(\n this.hint.content,\n scrollWidth > clientWidth && content !== null ? content || textContent : '',\n );\n }\n}\n","import {TuiHintComponent} from './hint.component';\nimport {TuiHintDirective} from './hint.directive';\nimport {TuiHintDescribe} from './hint-describe.directive';\nimport {TuiHintDriver} from './hint-driver.directive';\nimport {TuiHintHost} from './hint-host.directive';\nimport {TuiHintHover} from './hint-hover.directive';\nimport {TuiHintManual} from './hint-manual.directive';\nimport {TuiHintOverflow} from './hint-overflow.directive';\nimport {TuiHintPointer} from './hint-pointer.directive';\nimport {TuiHintPosition} from './hint-position.directive';\nimport {TuiHintUnstyled} from './hint-unstyled.component';\n\nexport const TuiHint = [\n TuiHintComponent,\n TuiHintDirective,\n TuiHintUnstyled,\n TuiHintDriver,\n TuiHintPosition,\n TuiHintHover,\n TuiHintOverflow,\n TuiHintDescribe,\n TuiHintHost,\n TuiHintManual,\n TuiHintPointer,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["GAP","ARROW_OFFSET","i1.TuiHintAnchor","i2.TuiHintDriver","i3.TuiHintHover","i4.TuiHintPosition","i4.TuiHintAnchored","i1.TuiHintDirective"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"taiga-ui-core-portals-hint.mjs","sources":["../../../projects/core/portals/hint/hint.providers.ts","../../../projects/core/portals/hint/hint-anchor.directive.ts","../../../projects/core/portals/hint/hint-driver.directive.ts","../../../projects/core/portals/hint/hint-options.directive.ts","../../../projects/core/portals/hint/hint-hover.directive.ts","../../../projects/core/portals/hint/hint-position.directive.ts","../../../projects/core/portals/hint/hint.directive.ts","../../../projects/core/portals/hint/hint-anchored.directive.ts","../../../projects/core/portals/hint/hint-pointer.directive.ts","../../../projects/core/portals/hint/hint-unstyled.component.ts","../../../projects/core/portals/hint/hint.component.ts","../../../projects/core/portals/hint/hint-describe.directive.ts","../../../projects/core/portals/hint/hint-host.directive.ts","../../../projects/core/portals/hint/hint-manual.directive.ts","../../../projects/core/portals/hint/hint-overflow.directive.ts","../../../projects/core/portals/hint/hint.ts","../../../projects/core/portals/hint/taiga-ui-core-portals-hint.ts"],"sourcesContent":["import {InjectionToken, type Type} from '@angular/core';\n\nimport {TuiHintComponent} from './hint.component';\n\n/**\n * A component to display a hint\n */\nexport const TUI_HINT_COMPONENT = new InjectionToken<Type<unknown>>(\n ngDevMode ? 'TUI_HINT_COMPONENT' : '',\n {factory: () => TuiHintComponent},\n);\n","import {Directive, ElementRef, InjectionToken} from '@angular/core';\nimport {tuiProvide} from '@taiga-ui/cdk/utils/di';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {tuiGenerateId} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {tuiAsRectAccessor, TuiRectAccessor} from '@taiga-ui/core/classes';\n\nexport const TUI_HINT_ANCHOR = new InjectionToken<ElementRef<Element>>(\n ngDevMode ? 'TUI_HINT_ANCHOR' : '',\n);\n\n@Directive({\n providers: [\n tuiAsRectAccessor(TuiHintAnchor),\n tuiProvide(TUI_HINT_ANCHOR, ElementRef),\n ],\n host: {\n '[attr.data-tui-anchor]': 'anchor',\n '[style.anchor-name]': 'anchor',\n },\n})\nexport class TuiHintAnchor extends TuiRectAccessor {\n protected readonly el = tuiInjectElement();\n protected readonly anchor = `--${tuiGenerateId()}`;\n\n public readonly type = 'hint';\n\n public getClientRect(): DOMRect {\n return this.el.getBoundingClientRect();\n }\n}\n","import {Directive} from '@angular/core';\nimport {TuiDriverDirective} from '@taiga-ui/core/classes';\n\n@Directive()\nexport class TuiHintDriver extends TuiDriverDirective {\n public readonly type = 'hint';\n}\n","import {tuiCreateOptions} from '@taiga-ui/cdk/utils/di';\nimport {type TuiAppearanceOptions} from '@taiga-ui/core/directives/appearance';\n\nexport type TuiHintDirection =\n | 'bottom-end'\n | 'bottom-start'\n | 'bottom'\n | 'end-bottom'\n | 'end-top'\n | 'end'\n | 'start-bottom'\n | 'start-top'\n | 'start'\n | 'top-end'\n | 'top-start'\n | 'top';\n\nexport const TUI_HINT_DIRECTIONS: readonly TuiHintDirection[] = [\n 'bottom-start',\n 'bottom',\n 'bottom-end',\n 'top-start',\n 'top',\n 'top-end',\n 'start-top',\n 'start',\n 'start-bottom',\n 'end-top',\n 'end',\n 'end-bottom',\n];\n\n/** TODO: remove optionality in v6 */\nexport interface TuiHintOptions extends TuiAppearanceOptions {\n readonly direction: TuiHintDirection | TuiHintDirection[];\n readonly centered?: boolean;\n readonly hideDelay: number;\n readonly icon: string;\n readonly showDelay: number;\n}\n\n/** Default values for hint options */\nexport const TUI_HINT_DEFAULT_OPTIONS: TuiHintOptions = {\n direction: 'bottom-start',\n centered: true,\n showDelay: 500,\n hideDelay: 200,\n appearance: '',\n /** TODO @deprecated use {@link TUI_TOOLTIP_OPTIONS} instead **/\n icon: '@tui.circle-help',\n};\n\n/**\n * Default parameters for hint directive\n */\nexport const [TUI_HINT_OPTIONS, tuiHintOptionsProvider] = tuiCreateOptions(\n TUI_HINT_DEFAULT_OPTIONS,\n);\n","import {Directive, inject, input} from '@angular/core';\nimport {WA_IS_MOBILE} from '@ng-web-apis/platform';\nimport {TuiHoveredService} from '@taiga-ui/cdk/directives/hovered';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {tuiAsDriver, TuiDriver} from '@taiga-ui/core/classes';\nimport {tuiIsObscured} from '@taiga-ui/core/utils/miscellaneous';\nimport {\n delay,\n filter,\n map,\n merge,\n of,\n repeat,\n Subject,\n switchMap,\n takeUntil,\n tap,\n} from 'rxjs';\n\nimport {TUI_HINT_OPTIONS} from './hint-options.directive';\n\nconst MOBILE_HIDE_DELAY_MS = 100;\n\n@Directive({\n providers: [tuiAsDriver(TuiHintHover), TuiHoveredService],\n exportAs: 'tuiHintHover',\n host: {'(click)': 'onClick()'},\n})\nexport class TuiHintHover extends TuiDriver {\n private readonly isMobile = inject(WA_IS_MOBILE);\n private readonly hovered$ = inject(TuiHoveredService);\n private readonly options = inject(TUI_HINT_OPTIONS);\n private visible = false;\n private readonly toggle$ = new Subject<boolean>();\n private readonly stream$ = merge(\n this.toggle$.pipe(\n switchMap((show) =>\n this.isMobile\n ? of(show).pipe(delay(show ? 0 : MOBILE_HIDE_DELAY_MS))\n : of(show).pipe(delay(show ? 0 : this.hideDelay())),\n ),\n takeUntil(this.hovered$),\n repeat(),\n ),\n this.hovered$.pipe(\n switchMap((show) =>\n this.isMobile\n ? of(show).pipe(\n filter(() => !show),\n delay(0),\n )\n : of(show).pipe(delay(show ? this.showDelay() : this.hideDelay())),\n ),\n takeUntil(this.toggle$),\n repeat(),\n ),\n ).pipe(\n filter(() => this.enabled),\n map(\n (value) =>\n value &&\n (this.el.hasAttribute('tuiHintPointer') || !tuiIsObscured(this.el)),\n ),\n tap((visible) => {\n this.visible = visible;\n }),\n );\n\n private readonly parent = inject(TuiHintHover, {\n optional: true,\n skipSelf: true,\n });\n\n protected readonly el = tuiInjectElement();\n\n public readonly showDelay = input(this.options.showDelay, {\n alias: 'tuiHintShowDelay',\n });\n\n public readonly hideDelay = input(this.options.hideDelay, {\n alias: 'tuiHintHideDelay',\n });\n\n public readonly type = 'hint';\n public enabled = true;\n\n constructor() {\n super((subscriber) => this.stream$.subscribe(subscriber));\n }\n\n public toggle(visible = !this.visible): void {\n this.toggle$.next(visible);\n this.parent?.toggle(visible);\n }\n\n public close(): void {\n this.toggle$.next(false);\n }\n\n /**\n * Synthesized `mouseenter` is not fired again until another element is tapped, so showing on mobile\n * cannot rely on it.\n */\n protected onClick(): void {\n if (this.isMobile) {\n this.toggle();\n }\n }\n}\n","import {Directive, inject, input} from '@angular/core';\nimport {outputFromObservable} from '@angular/core/rxjs-interop';\nimport {WA_IS_MOBILE} from '@ng-web-apis/platform';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {\n tuiAsPositionAccessor,\n tuiInjectAccessor,\n TuiPositionAccessor,\n TuiRectAccessor,\n} from '@taiga-ui/core/classes';\nimport {TUI_VIEWPORT} from '@taiga-ui/core/tokens';\nimport {type TuiPoint} from '@taiga-ui/core/types';\nimport {distinctUntilChanged, Subject} from 'rxjs';\n\nimport {\n TUI_HINT_DIRECTIONS,\n TUI_HINT_OPTIONS,\n type TuiHintDirection,\n} from './hint-options.directive';\n\nconst GAP = 8;\nconst ARROW_OFFSET = 22;\nconst TOP = 1;\nconst LEFT = 0;\n\n@Directive({providers: [tuiAsPositionAccessor(TuiHintPosition)]})\nexport class TuiHintPosition extends TuiPositionAccessor {\n private readonly el = tuiInjectElement();\n private readonly viewport = inject(TUI_VIEWPORT);\n private readonly options = inject(TUI_HINT_OPTIONS);\n private readonly directionChange = new Subject<TuiHintDirection>();\n private readonly accessor = tuiInjectAccessor(TuiRectAccessor, 'hint');\n private readonly points: Record<TuiHintDirection, [number, number]> =\n TUI_HINT_DIRECTIONS.reduce(\n (acc, direction) => ({...acc, [direction]: [0, 0]}),\n {} as Record<TuiHintDirection, [number, number]>,\n );\n\n public readonly direction = input(this.options.direction, {\n alias: 'tuiHintDirection',\n });\n\n public readonly offset = input(inject(WA_IS_MOBILE) ? 16 : 8, {\n alias: 'tuiHintOffset',\n });\n\n public readonly centered = input(this.options.centered, {alias: 'tuiHintCentered'});\n\n public readonly tuiHintDirectionChange = outputFromObservable(\n this.directionChange.pipe(distinctUntilChanged()),\n );\n\n public readonly type = 'hint';\n\n public getPosition({width, height}: DOMRect): TuiPoint {\n const direction = this.direction();\n const rect = this.accessor.getClientRect();\n const leftCenter = rect.left + rect.width / 2;\n const topCenter = rect.top + rect.height / 2;\n const rtl = this.el.matches('[dir=\"rtl\"] :scope');\n const narrow = rect.width < ARROW_OFFSET * 2 || this.centered();\n const short = rect.height < ARROW_OFFSET * 2 || this.centered();\n const start = narrow ? leftCenter - ARROW_OFFSET : rect.left;\n const end = narrow ? leftCenter - width + ARROW_OFFSET : rect.right - width;\n const top = short ? topCenter - ARROW_OFFSET : rect.top;\n const bottom = short ? topCenter - height + ARROW_OFFSET : rect.bottom - height;\n\n this.points['top-start'][TOP] = rect.top - height - this.offset();\n this.points['top-start'][LEFT] = this.centered() ? end : start;\n this.points.top[TOP] = this.points['top-start'][TOP];\n this.points.top[LEFT] = leftCenter - width / 2;\n this.points['top-end'][TOP] = this.points['top-start'][TOP];\n this.points['top-end'][LEFT] = this.centered() ? start : end;\n\n this.points['bottom-start'][TOP] = rect.bottom + this.offset();\n this.points['bottom-start'][LEFT] = this.points['top-start'][LEFT];\n this.points.bottom[TOP] = this.points['bottom-start'][TOP];\n this.points.bottom[LEFT] = this.points.top[LEFT];\n this.points['bottom-end'][TOP] = this.points['bottom-start'][TOP];\n this.points['bottom-end'][LEFT] = this.points['top-end'][LEFT];\n\n this.points['start-top'][TOP] = this.centered() ? bottom : top;\n this.points['start-top'][LEFT] = rect.left - width - this.offset();\n this.points.start[TOP] = topCenter - height / 2;\n this.points.start[LEFT] = this.points['start-top'][LEFT];\n this.points['start-bottom'][TOP] = this.centered() ? bottom : top;\n this.points['start-bottom'][LEFT] = this.points['start-top'][LEFT];\n\n this.points['end-top'][TOP] = this.points['start-top'][TOP];\n this.points['end-top'][LEFT] = rect.right + this.offset();\n this.points.end[TOP] = this.points.start[TOP];\n this.points.end[LEFT] = this.points['end-top'][LEFT];\n this.points['end-bottom'][TOP] = this.points['start-bottom'][TOP];\n this.points['end-bottom'][LEFT] = this.points['end-top'][LEFT];\n\n const array = Array.isArray(direction) ? direction : [direction];\n const priority = array.map((direction) => adjust(direction, rtl));\n\n const updated =\n priority\n .concat(TUI_HINT_DIRECTIONS)\n .find((dir) => this.checkPosition(this.points[dir], width, height)) ||\n this.fallback;\n\n this.directionChange.next(adjust(updated, rtl));\n\n return this.points[updated];\n }\n\n private get fallback(): TuiHintDirection {\n return this.points.top[TOP] >\n this.viewport.getClientRect().bottom - this.points.bottom[TOP]\n ? 'top'\n : 'bottom';\n }\n\n private checkPosition([left, top]: TuiPoint, width: number, height: number): boolean {\n const viewport = this.viewport.getClientRect();\n\n return (\n top > viewport.top + GAP &&\n left > viewport.left + GAP &&\n top + height < viewport.bottom - GAP &&\n left + width < viewport.right - GAP\n );\n }\n}\n\nfunction adjust(direction: TuiHintDirection, rtl: boolean): TuiHintDirection {\n if (rtl && direction.includes('left')) {\n return direction.replace('left', 'right') as TuiHintDirection;\n }\n\n return rtl && direction.includes('right')\n ? (direction.replace('right', 'left') as TuiHintDirection)\n : direction;\n}\n","import {\n type ComponentRef,\n Directive,\n inject,\n INJECTOR,\n input,\n type OnChanges,\n type OnDestroy,\n signal,\n} from '@angular/core';\nimport {outputFromObservable, toObservable} from '@angular/core/rxjs-interop';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {\n tuiAsVehicle,\n type TuiRectAccessor,\n type TuiVehicle,\n} from '@taiga-ui/core/classes';\nimport {TuiPopupService} from '@taiga-ui/core/portals/popup';\nimport {PolymorpheusComponent, type PolymorpheusContent} from '@taiga-ui/polymorpheus';\nimport {map, skip} from 'rxjs';\n\nimport {TUI_HINT_COMPONENT} from './hint.providers';\nimport {TuiHintAnchor} from './hint-anchor.directive';\nimport {TuiHintDriver} from './hint-driver.directive';\nimport {TuiHintHover} from './hint-hover.directive';\nimport {TUI_HINT_OPTIONS} from './hint-options.directive';\nimport {TuiHintPosition} from './hint-position.directive';\n\n@Directive({\n selector: '[tuiHint]:not(ng-container):not(ng-template)',\n providers: [\n tuiAsVehicle(TuiHintDirective),\n {\n provide: PolymorpheusComponent,\n deps: [TUI_HINT_COMPONENT, INJECTOR],\n useClass: PolymorpheusComponent,\n },\n ],\n hostDirectives: [\n TuiHintAnchor,\n TuiHintDriver,\n {\n directive: TuiHintHover,\n inputs: ['tuiHintHideDelay', 'tuiHintShowDelay'],\n },\n {\n directive: TuiHintPosition,\n inputs: ['tuiHintDirection', 'tuiHintCentered', 'tuiHintOffset'],\n outputs: ['tuiHintDirectionChange'],\n },\n ],\n})\nexport class TuiHintDirective<C>\n implements OnDestroy, OnChanges, TuiRectAccessor, TuiVehicle\n{\n private readonly service = inject(TuiPopupService);\n private readonly ref = signal<ComponentRef<unknown> | null>(null);\n\n public readonly content = input<PolymorpheusContent<C>>(null, {alias: 'tuiHint'});\n public readonly context = input<C>(undefined, {alias: 'tuiHintContext'});\n public readonly appearance = input(inject(TUI_HINT_OPTIONS).appearance, {\n alias: 'tuiHintAppearance',\n });\n\n public readonly visible = outputFromObservable(\n toObservable(this.ref).pipe(map(Boolean), skip(1)),\n {alias: 'tuiHintVisible'},\n );\n\n public component = inject(PolymorpheusComponent<unknown>);\n public readonly el = tuiInjectElement();\n public readonly type = 'hint';\n\n public ngOnChanges(): void {\n if (!this.content()) {\n this.toggle(false);\n }\n }\n\n public ngOnDestroy(): void {\n this.toggle(false);\n }\n\n public getClientRect(): DOMRect {\n return this.el.getBoundingClientRect();\n }\n\n public toggle(show: boolean): void {\n if (show && this.content() && !this.ref()) {\n this.ref.set(this.service.add(this.component));\n } else if (!show) {\n this.ref()?.destroy();\n this.ref.set(null);\n }\n }\n}\n","import {type AfterViewInit, Directive, inject} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {EMPTY_CLIENT_RECT} from '@taiga-ui/cdk/constants';\nimport {TuiHoveredService} from '@taiga-ui/cdk/directives/hovered';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {tuiClamp} from '@taiga-ui/cdk/utils/math';\nimport {tuiPx} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {\n TuiPositionAccessor,\n tuiProvideAccessor,\n TuiRectAccessor,\n} from '@taiga-ui/core/classes';\nimport {TuiPositionService, TuiVisualViewportService} from '@taiga-ui/core/services';\nimport {TUI_VIEWPORT} from '@taiga-ui/core/tokens';\nimport {map, takeWhile} from 'rxjs';\n\nimport {TuiHintDirective} from './hint.directive';\nimport {TuiHintHover} from './hint-hover.directive';\n\nconst GAP = 8;\nconst ARROW_OFFSET = 22;\n\n@Directive({\n providers: [\n TuiPositionService,\n TuiHoveredService,\n tuiProvideAccessor(TuiPositionAccessor, 'hint'),\n tuiProvideAccessor(TuiRectAccessor, 'hint'),\n ],\n})\nexport class TuiHintAnchored implements AfterViewInit {\n private readonly el = tuiInjectElement();\n private readonly hover = inject(TuiHintHover);\n private readonly vvs = inject(TuiVisualViewportService);\n private readonly viewport = inject(TUI_VIEWPORT);\n private readonly accessor = inject(TuiRectAccessor);\n private readonly directive = inject(TuiHintDirective);\n private readonly styles$ = inject(TuiPositionService).pipe(\n takeWhile(\n () =>\n this.directive.el.isConnected &&\n this.directive.el.getClientRects().length > 0,\n ),\n map((point) => this.vvs.correct(point)),\n takeUntilDestroyed(),\n );\n\n protected readonly sub = inject(TuiHoveredService)\n .pipe(takeUntilDestroyed())\n .subscribe((hover) => this.hover.toggle(hover));\n\n public ngAfterViewInit(): void {\n this.styles$.subscribe({\n next: (point) => this.update(...point),\n complete: () => this.directive.toggle(false),\n });\n }\n\n private update(left: number, top: number): void {\n const {clientHeight, clientWidth} = this.el;\n const rect = this.accessor.getClientRect();\n\n if (rect === EMPTY_CLIENT_RECT || !clientHeight || !clientWidth) {\n return;\n }\n\n const viewport = this.viewport.getClientRect();\n const max = Math.max(GAP, viewport.width + viewport.left - clientWidth - GAP);\n const safeLeft = tuiClamp(Math.max(GAP, left), viewport.left + GAP, max);\n const startX = Math.round(safeLeft) === Math.round(rect.left);\n const startY = Math.round(top) === Math.round(rect.top);\n const endX = Math.round(safeLeft + clientWidth) === Math.round(rect.right);\n const endY = Math.round(top + clientHeight) === Math.round(rect.bottom);\n const [beakLeft, beakTop] = this.vvs.correct([\n rect.left + rect.width / 2 - safeLeft,\n rect.top + rect.height / 2 - top,\n ]);\n\n /* eslint-disable no-nested-ternary */\n const x = startX ? ARROW_OFFSET : endX ? clientWidth - ARROW_OFFSET : beakLeft;\n const y = startY ? ARROW_OFFSET : endY ? clientHeight - ARROW_OFFSET : beakTop;\n\n this.apply(\n tuiPx(Math.round(top)),\n tuiPx(Math.round(safeLeft)),\n Math.round((tuiClamp(y, 0, clientHeight) / clientHeight) * 100),\n Math.round((tuiClamp(x, 0, clientWidth) / clientWidth) * 100),\n );\n }\n\n private apply(top: string, left: string, beakTop: number, beakLeft: number): void {\n this.el.style.setProperty('top', top);\n this.el.style.setProperty('left', left);\n this.el.style.setProperty('--t-top', `${beakTop}%`);\n this.el.style.setProperty('--t-left', `${beakLeft}%`);\n this.el.style.setProperty(\n '--t-rotate',\n !beakLeft || Math.ceil(beakLeft) === 100 ? '90deg' : '0deg',\n );\n }\n}\n","import {Directive, type ElementRef, type OnDestroy} from '@angular/core';\nimport {EMPTY_CLIENT_RECT} from '@taiga-ui/cdk/constants';\nimport {tuiProvide} from '@taiga-ui/cdk/utils/di';\nimport {tuiPointToClientRect} from '@taiga-ui/cdk/utils/dom';\nimport {\n tuiAsDriver,\n tuiAsRectAccessor,\n type TuiRectAccessor,\n} from '@taiga-ui/core/classes';\nimport {tuiAnchorDelegate} from '@taiga-ui/core/utils/dom';\n\nimport {TUI_HINT_ANCHOR} from './hint-anchor.directive';\nimport {TuiHintHover} from './hint-hover.directive';\n\n@Directive({\n selector: '[tuiHint][tuiHintPointer]',\n providers: [\n tuiAsRectAccessor(TuiHintPointer),\n tuiAsDriver(TuiHintPointer),\n tuiProvide(TUI_HINT_ANCHOR, TuiHintPointer),\n ],\n host: {'(mousemove.zoneless)': 'onMove($event)'},\n})\nexport class TuiHintPointer\n extends TuiHintHover\n implements TuiRectAccessor, ElementRef<HTMLElement>, OnDestroy\n{\n private currentRect = EMPTY_CLIENT_RECT;\n\n public readonly nativeElement = tuiAnchorDelegate({width: '1px', height: '1px'});\n\n public ngOnDestroy(): void {\n this.nativeElement.parentNode?.removeChild(this.nativeElement);\n }\n\n public getClientRect(): DOMRect {\n return this.currentRect;\n }\n\n protected onMove({clientX, clientY}: MouseEvent): void {\n const {top, left} = this.el.getBoundingClientRect();\n\n this.currentRect = tuiPointToClientRect(clientX, clientY);\n this.nativeElement.style.top = `calc(anchor(top) + ${clientY - top}px)`;\n this.nativeElement.style.left = `calc(anchor(left) + ${clientX - left}px)`;\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n Directive,\n inject,\n INJECTOR,\n TemplateRef,\n} from '@angular/core';\nimport {tuiSetSignal} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {PolymorpheusComponent, PolymorpheusOutlet} from '@taiga-ui/polymorpheus';\n\nimport {TuiHintDirective} from './hint.directive';\n\n@Component({\n imports: [PolymorpheusOutlet],\n template: '<ng-container *polymorpheusOutlet=\"hint.content()\" />',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TuiHintUnstyledComponent {\n protected readonly hint = inject(TuiHintDirective);\n}\n\n@Directive({selector: 'ng-template[tuiHint]'})\nexport class TuiHintUnstyled<C> {\n constructor() {\n const hint = inject(TuiHintDirective<C>);\n\n tuiSetSignal(hint.content, inject(TemplateRef<C>));\n hint.component = new PolymorpheusComponent(\n TuiHintUnstyledComponent,\n inject(INJECTOR),\n );\n }\n}\n","import {ChangeDetectionStrategy, Component, inject, signal} from '@angular/core';\nimport {TuiActiveZone} from '@taiga-ui/cdk/directives/active-zone';\nimport {TuiAnimated} from '@taiga-ui/cdk/directives/animated';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {TuiRectAccessor} from '@taiga-ui/core/classes';\nimport {tuiButtonOptionsProvider} from '@taiga-ui/core/components/button';\nimport {TuiAppearance, tuiAppearance} from '@taiga-ui/core/directives/appearance';\nimport {tuiIsObscured} from '@taiga-ui/core/utils/miscellaneous';\nimport {PolymorpheusOutlet} from '@taiga-ui/polymorpheus';\n\nimport {TuiHintDirective} from './hint.directive';\nimport {TuiHintAnchored} from './hint-anchored.directive';\nimport {TuiHintHover} from './hint-hover.directive';\nimport {TuiHintPointer} from './hint-pointer.directive';\nimport {TuiHintUnstyledComponent} from './hint-unstyled.component';\n\n@Component({\n selector: 'tui-hint',\n imports: [PolymorpheusOutlet],\n template: `\n <ng-content />\n <span\n *polymorpheusOutlet=\"content() as text; context: hint.context()\"\n [innerHTML]=\"text\"\n ></span>\n `,\n styleUrl: './hint.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [tuiButtonOptionsProvider({size: 's'})],\n hostDirectives: [TuiAppearance, TuiAnimated, TuiActiveZone, TuiHintAnchored],\n host: {\n role: 'tooltip',\n '[attr.tuiTheme]': 'theme',\n '[class._untouchable]': 'pointer',\n '(document:pointerdown)': 'onPointerDown($event.target)',\n },\n})\nexport class TuiHintComponent {\n private readonly el = tuiInjectElement();\n private readonly hover = inject(TuiHintHover);\n\n protected readonly pointer = inject(TuiHintPointer, {optional: true});\n protected readonly accessor = inject(TuiRectAccessor);\n protected readonly hint = inject(TuiHintDirective);\n protected readonly appearance = tuiAppearance(this.hint.appearance);\n protected readonly content =\n this.hint.component.component === TuiHintUnstyledComponent\n ? signal('')\n : this.hint.content;\n\n protected readonly theme = this.hint.el\n .closest('[tuiTheme]')\n ?.getAttribute('tuiTheme');\n\n protected onPointerDown(target: HTMLElement): void {\n if (\n (!target.closest(this.el.tagName) && !this.hint.el.contains(target)) ||\n tuiIsObscured(this.hint.el)\n ) {\n this.hover.toggle(false);\n }\n }\n}\n","import {DOCUMENT} from '@angular/common';\nimport {computed, Directive, inject, input} from '@angular/core';\nimport {toObservable} from '@angular/core/rxjs-interop';\nimport {tuiIfMap, tuiTypedFromEvent, tuiZoneOptimized} from '@taiga-ui/cdk/observables';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {tuiIsFocused} from '@taiga-ui/cdk/utils/focus';\nimport {tuiIsPresent} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {tuiAsDriver, TuiDriver} from '@taiga-ui/core/classes';\nimport {\n debounce,\n distinctUntilChanged,\n fromEvent,\n map,\n merge,\n of,\n skip,\n startWith,\n switchMap,\n timer,\n} from 'rxjs';\n\n@Directive({\n selector: '[tuiHintDescribe]',\n providers: [tuiAsDriver(TuiHintDescribe)],\n})\nexport class TuiHintDescribe extends TuiDriver {\n private readonly doc = inject(DOCUMENT);\n private readonly el = tuiInjectElement();\n\n protected readonly element = computed((id = this.id()) =>\n id ? this.doc.querySelector(`#${id}`) || this.el : this.el,\n );\n\n public readonly id = input<string | null | undefined>('', {alias: 'tuiHintDescribe'});\n public readonly type = 'hint';\n\n protected readonly stream$ = toObservable(this.id).pipe(\n distinctUntilChanged(),\n tuiIfMap(() => fromEvent(this.doc, 'keydown', {capture: true}), tuiIsPresent),\n switchMap(() =>\n this.focused\n ? of(false)\n : merge(\n tuiTypedFromEvent(this.doc, 'keyup'),\n tuiTypedFromEvent(this.element(), 'blur'),\n ).pipe(map(() => this.focused)),\n ),\n debounce((visible) => (visible ? timer(1000) : of(null))),\n startWith(false),\n distinctUntilChanged(),\n skip(1),\n tuiZoneOptimized(),\n );\n\n constructor() {\n super((subscriber) => this.stream$.subscribe(subscriber));\n }\n\n private get focused(): boolean {\n return tuiIsFocused(this.element());\n }\n}\n","import {Directive, effect, type ElementRef, input} from '@angular/core';\nimport {tuiProvide} from '@taiga-ui/cdk/utils/di';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {tuiGenerateId} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {tuiAsRectAccessor, TuiRectAccessor} from '@taiga-ui/core/classes';\n\nimport {TUI_HINT_ANCHOR} from './hint-anchor.directive';\n\n@Directive({\n selector: '[tuiHint][tuiHintHost]',\n providers: [tuiAsRectAccessor(TuiHintHost), tuiProvide(TUI_HINT_ANCHOR, TuiHintHost)],\n})\nexport class TuiHintHost extends TuiRectAccessor implements ElementRef<HTMLElement> {\n public readonly tuiHintHost = input<HTMLElement>();\n public readonly type = 'hint';\n public nativeElement = tuiInjectElement();\n\n protected readonly sync = effect(() => {\n const anchorName = `--${tuiGenerateId()}`;\n\n this.nativeElement = this.tuiHintHost() || this.nativeElement;\n this.nativeElement.setAttribute('data-tui-anchor', anchorName);\n this.nativeElement.style.setProperty('anchor-name', anchorName);\n });\n\n public getClientRect(): DOMRect {\n return this.nativeElement.getBoundingClientRect();\n }\n}\n","import {Directive, inject, input, type OnChanges} from '@angular/core';\nimport {tuiAsDriver, TuiDriver} from '@taiga-ui/core/classes';\nimport {BehaviorSubject} from 'rxjs';\n\nimport {TuiHintHover} from './hint-hover.directive';\n\n@Directive({\n selector: '[tuiHint][tuiHintManual]',\n providers: [tuiAsDriver(TuiHintManual)],\n})\nexport class TuiHintManual extends TuiDriver implements OnChanges {\n private readonly hover = inject(TuiHintHover);\n private readonly stream$ = new BehaviorSubject(false);\n\n public readonly visible = input<boolean | null>(false, {alias: 'tuiHintManual'});\n public readonly type = 'hint';\n\n constructor() {\n super((subscriber) => this.stream$.subscribe(subscriber));\n this.hover.enabled = false;\n }\n\n public ngOnChanges(): void {\n this.stream$.next(!!this.visible());\n this.hover.enabled = this.visible() === null;\n }\n}\n","import {Directive, inject, input} from '@angular/core';\nimport {tuiSetSignal} from '@taiga-ui/cdk/utils/miscellaneous';\n\nimport {TuiHintDirective} from './hint.directive';\n\n@Directive({\n selector: '[tuiHintOverflow]',\n hostDirectives: [\n {\n directive: TuiHintDirective,\n inputs: ['tuiHintAppearance'],\n },\n ],\n host: {'(mouseenter)': 'onMouseEnter($event.currentTarget)'},\n})\nexport class TuiHintOverflow {\n private readonly hint = inject(TuiHintDirective);\n\n public readonly content = input<string | null>('', {alias: 'tuiHintOverflow'});\n\n protected onMouseEnter({scrollWidth, clientWidth, textContent}: Element): void {\n const content = this.content();\n\n tuiSetSignal(\n this.hint.content,\n scrollWidth > clientWidth && content !== null ? content || textContent : '',\n );\n }\n}\n","import {TuiHintComponent} from './hint.component';\nimport {TuiHintDirective} from './hint.directive';\nimport {TuiHintDescribe} from './hint-describe.directive';\nimport {TuiHintDriver} from './hint-driver.directive';\nimport {TuiHintHost} from './hint-host.directive';\nimport {TuiHintHover} from './hint-hover.directive';\nimport {TuiHintManual} from './hint-manual.directive';\nimport {TuiHintOverflow} from './hint-overflow.directive';\nimport {TuiHintPointer} from './hint-pointer.directive';\nimport {TuiHintUnstyled} from './hint-unstyled.component';\n\nexport const TuiHint = [\n TuiHintComponent,\n TuiHintDirective,\n TuiHintUnstyled,\n TuiHintDriver,\n TuiHintHover,\n TuiHintOverflow,\n TuiHintDescribe,\n TuiHintHost,\n TuiHintManual,\n TuiHintPointer,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["GAP","ARROW_OFFSET","i1.TuiHintAnchor","i2.TuiHintDriver","i3.TuiHintHover","i4.TuiHintPosition","i4.TuiHintAnchored","i1.TuiHintDirective"],"mappings":"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"}
|
|
@@ -27,12 +27,12 @@ class TuiModalComponent {
|
|
|
27
27
|
this.current.tuiActiveZoneParentSetter = null;
|
|
28
28
|
}
|
|
29
29
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: TuiModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
30
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.25", type: TuiModalComponent, isStandalone: true, selector: "tui-modal", host: { attributes: { "aria-modal": "true", "data-tui-version": "5.
|
|
30
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.25", type: TuiModalComponent, isStandalone: true, selector: "tui-modal", host: { attributes: { "aria-modal": "true", "data-tui-version": "5.25.0-canary.3fb67e2", "role": "dialog" }, listeners: { "animationend.self": "$event.target.classList.remove(\"tui-enter\")" }, properties: { "attr.aria-labelledby": "context.id" }, classAttribute: "tui-enter" }, hostDirectives: [{ directive: i1.TuiActiveZone }, { directive: i2.TuiFocusTrap }], ngImport: i0, template: `
|
|
31
31
|
<div tuiScrollRef>
|
|
32
32
|
<ng-container *polymorpheusOutlet="component(); context: context" />
|
|
33
33
|
<tui-scroll-controls class="t-scrollbars" />
|
|
34
34
|
</div>
|
|
35
|
-
`, isInline: true, styles: ["@keyframes tuiModalBackdrop{0%{-webkit-backdrop-filter:none;backdrop-filter:none}to{-webkit-backdrop-filter:brightness(.25);backdrop-filter:brightness(.25)}}@keyframes tuiDummy{to{color:currentColor}}tui-modal:where(*[data-tui-version=\"5.
|
|
35
|
+
`, isInline: true, styles: ["@keyframes tuiModalBackdrop{0%{-webkit-backdrop-filter:none;backdrop-filter:none}to{-webkit-backdrop-filter:brightness(.25);backdrop-filter:brightness(.25)}}@keyframes tuiDummy{to{color:currentColor}}tui-modal:where(*[data-tui-version=\"5.25.0-canary.3fb67e2\"]){scrollbar-width:none;position:fixed;inset:0;outline:none;overflow:auto;overscroll-behavior:none;transform:translateY(var(--t-root-top))}tui-modal:where(*[data-tui-version=\"5.25.0-canary.3fb67e2\"])::-webkit-scrollbar,tui-modal:where(*[data-tui-version=\"5.25.0-canary.3fb67e2\"])::-webkit-scrollbar-thumb{display:none}tui-modal:where(*[data-tui-version=\"5.25.0-canary.3fb67e2\"]):not(:last-of-type){interactivity:inert}tui-modal:where(*[data-tui-version=\"5.25.0-canary.3fb67e2\"]).tui-enter,tui-modal:where(*[data-tui-version=\"5.25.0-canary.3fb67e2\"]).tui-leave{animation-name:tuiDummy}@supports not (selector(:has(*))) or not (selector(:nth-child(1 of *))){tui-modal:where(*[data-tui-version=\"5.25.0-canary.3fb67e2\"]):last-of-type:not(.tui-leave):before{-webkit-backdrop-filter:brightness(.25);backdrop-filter:brightness(.25)}tui-modal:where(*[data-tui-version=\"5.25.0-canary.3fb67e2\"]):last-of-type.tui-enter,tui-modal:where(*[data-tui-version=\"5.25.0-canary.3fb67e2\"]):last-of-type.tui-leave{animation-name:tuiDummy}tui-modal:where(*[data-tui-version=\"5.25.0-canary.3fb67e2\"]):last-of-type.tui-enter:before,tui-modal:where(*[data-tui-version=\"5.25.0-canary.3fb67e2\"]):last-of-type.tui-leave:before{animation-name:tuiModalBackdrop}}@supports (selector(:has(*))){tui-modal:where(*[data-tui-version=\"5.25.0-canary.3fb67e2\"]):nth-last-child(1 of tui-modal:not(.tui-leave):not(:has(.tui-backdrop-hidden))):before{-webkit-backdrop-filter:brightness(.25);backdrop-filter:brightness(.25)}tui-modal:where(*[data-tui-version=\"5.25.0-canary.3fb67e2\"]):nth-last-child(1 of tui-modal:not(:has(.tui-backdrop-hidden))):is(.tui-enter,.tui-leave){animation-name:tuiDummy}tui-modal:where(*[data-tui-version=\"5.25.0-canary.3fb67e2\"]):nth-last-child(1 of tui-modal:not(:has(.tui-backdrop-hidden))):is(.tui-enter,.tui-leave):before{animation-name:tuiModalBackdrop}}tui-modal:where(*[data-tui-version=\"5.25.0-canary.3fb67e2\"]):before{transition-property:backdrop-filter;transition-duration:var(--tui-duration, .3s);transition-timing-function:var(--tui-curve-productive-standard);content:\"\";position:sticky;inset:0;display:block;block-size:200%;transition-timing-function:linear;animation-duration:var(--tui-duration);animation-timing-function:cubic-bezier(.14,.52,.35,.84);perspective:10rem}tui-modal:where(*[data-tui-version=\"5.25.0-canary.3fb67e2\"]).tui-leave:before{animation-direction:reverse}tui-modal:where(*[data-tui-version=\"5.25.0-canary.3fb67e2\"])>[tuiScrollRef]{position:sticky;inset:0;display:grid;place-items:center;block-size:100%;overflow:auto;overscroll-behavior:none;scrollbar-gutter:stable both-edges}tui-modal:where(*[data-tui-version=\"5.25.0-canary.3fb67e2\"])>[tuiScrollRef]>.t-scrollbars{position:fixed;inset:0;margin:0;color:#747474}tui-modal:where(*[data-tui-version=\"5.25.0-canary.3fb67e2\"])>[tuiScrollRef]>.t-scrollbars .t-bar_horizontal,tui-modal:where(*[data-tui-version=\"5.25.0-canary.3fb67e2\"])>[tuiScrollRef]>.t-scrollbars .t-bar_vertical .t-thumb[style*=\"height: 100%\"]{display:none}tui-modal:where(*[data-tui-version=\"5.25.0-canary.3fb67e2\"])>[tuiScrollRef]>.t-scrollbars:first-child,tui-modal:where(*[data-tui-version=\"5.25.0-canary.3fb67e2\"])>[tuiScrollRef]>.tui-enter+.t-scrollbars .t-bar_vertical,tui-modal:where(*[data-tui-version=\"5.25.0-canary.3fb67e2\"])>[tuiScrollRef]>.tui-leave+.t-scrollbars .t-bar_vertical{display:none}tui-modal:where(*[data-tui-version=\"5.25.0-canary.3fb67e2\"])>[tuiScrollRef]:has(>.tui-enter),tui-modal:where(*[data-tui-version=\"5.25.0-canary.3fb67e2\"])>[tuiScrollRef]:has(>.tui-leave){scrollbar-width:none}tui-modal:where(*[data-tui-version=\"5.25.0-canary.3fb67e2\"])>[tuiScrollRef]:has(>.tui-enter)::-webkit-scrollbar,tui-modal:where(*[data-tui-version=\"5.25.0-canary.3fb67e2\"])>[tuiScrollRef]:has(>.tui-leave)::-webkit-scrollbar,tui-modal:where(*[data-tui-version=\"5.25.0-canary.3fb67e2\"])>[tuiScrollRef]:has(>.tui-enter)::-webkit-scrollbar-thumb,tui-modal:where(*[data-tui-version=\"5.25.0-canary.3fb67e2\"])>[tuiScrollRef]:has(>.tui-leave)::-webkit-scrollbar-thumb{display:none}\n"], dependencies: [{ kind: "directive", type: PolymorpheusOutlet, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }, { kind: "component", type: TuiScrollControls, selector: "tui-scroll-controls" }, { kind: "directive", type: TuiScrollRef, selector: "[tuiScrollRef]" }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None }); }
|
|
36
36
|
}
|
|
37
37
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: TuiModalComponent, decorators: [{
|
|
38
38
|
type: Component,
|
|
@@ -48,7 +48,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
|
|
|
48
48
|
class: 'tui-enter',
|
|
49
49
|
'[attr.aria-labelledby]': 'context.id',
|
|
50
50
|
'(animationend.self)': '$event.target.classList.remove("tui-enter")',
|
|
51
|
-
}, styles: ["@keyframes tuiModalBackdrop{0%{-webkit-backdrop-filter:none;backdrop-filter:none}to{-webkit-backdrop-filter:brightness(.25);backdrop-filter:brightness(.25)}}@keyframes tuiDummy{to{color:currentColor}}tui-modal:where(*[data-tui-version=\"5.
|
|
51
|
+
}, styles: ["@keyframes tuiModalBackdrop{0%{-webkit-backdrop-filter:none;backdrop-filter:none}to{-webkit-backdrop-filter:brightness(.25);backdrop-filter:brightness(.25)}}@keyframes tuiDummy{to{color:currentColor}}tui-modal:where(*[data-tui-version=\"5.25.0-canary.3fb67e2\"]){scrollbar-width:none;position:fixed;inset:0;outline:none;overflow:auto;overscroll-behavior:none;transform:translateY(var(--t-root-top))}tui-modal:where(*[data-tui-version=\"5.25.0-canary.3fb67e2\"])::-webkit-scrollbar,tui-modal:where(*[data-tui-version=\"5.25.0-canary.3fb67e2\"])::-webkit-scrollbar-thumb{display:none}tui-modal:where(*[data-tui-version=\"5.25.0-canary.3fb67e2\"]):not(:last-of-type){interactivity:inert}tui-modal:where(*[data-tui-version=\"5.25.0-canary.3fb67e2\"]).tui-enter,tui-modal:where(*[data-tui-version=\"5.25.0-canary.3fb67e2\"]).tui-leave{animation-name:tuiDummy}@supports not (selector(:has(*))) or not (selector(:nth-child(1 of *))){tui-modal:where(*[data-tui-version=\"5.25.0-canary.3fb67e2\"]):last-of-type:not(.tui-leave):before{-webkit-backdrop-filter:brightness(.25);backdrop-filter:brightness(.25)}tui-modal:where(*[data-tui-version=\"5.25.0-canary.3fb67e2\"]):last-of-type.tui-enter,tui-modal:where(*[data-tui-version=\"5.25.0-canary.3fb67e2\"]):last-of-type.tui-leave{animation-name:tuiDummy}tui-modal:where(*[data-tui-version=\"5.25.0-canary.3fb67e2\"]):last-of-type.tui-enter:before,tui-modal:where(*[data-tui-version=\"5.25.0-canary.3fb67e2\"]):last-of-type.tui-leave:before{animation-name:tuiModalBackdrop}}@supports (selector(:has(*))){tui-modal:where(*[data-tui-version=\"5.25.0-canary.3fb67e2\"]):nth-last-child(1 of tui-modal:not(.tui-leave):not(:has(.tui-backdrop-hidden))):before{-webkit-backdrop-filter:brightness(.25);backdrop-filter:brightness(.25)}tui-modal:where(*[data-tui-version=\"5.25.0-canary.3fb67e2\"]):nth-last-child(1 of tui-modal:not(:has(.tui-backdrop-hidden))):is(.tui-enter,.tui-leave){animation-name:tuiDummy}tui-modal:where(*[data-tui-version=\"5.25.0-canary.3fb67e2\"]):nth-last-child(1 of tui-modal:not(:has(.tui-backdrop-hidden))):is(.tui-enter,.tui-leave):before{animation-name:tuiModalBackdrop}}tui-modal:where(*[data-tui-version=\"5.25.0-canary.3fb67e2\"]):before{transition-property:backdrop-filter;transition-duration:var(--tui-duration, .3s);transition-timing-function:var(--tui-curve-productive-standard);content:\"\";position:sticky;inset:0;display:block;block-size:200%;transition-timing-function:linear;animation-duration:var(--tui-duration);animation-timing-function:cubic-bezier(.14,.52,.35,.84);perspective:10rem}tui-modal:where(*[data-tui-version=\"5.25.0-canary.3fb67e2\"]).tui-leave:before{animation-direction:reverse}tui-modal:where(*[data-tui-version=\"5.25.0-canary.3fb67e2\"])>[tuiScrollRef]{position:sticky;inset:0;display:grid;place-items:center;block-size:100%;overflow:auto;overscroll-behavior:none;scrollbar-gutter:stable both-edges}tui-modal:where(*[data-tui-version=\"5.25.0-canary.3fb67e2\"])>[tuiScrollRef]>.t-scrollbars{position:fixed;inset:0;margin:0;color:#747474}tui-modal:where(*[data-tui-version=\"5.25.0-canary.3fb67e2\"])>[tuiScrollRef]>.t-scrollbars .t-bar_horizontal,tui-modal:where(*[data-tui-version=\"5.25.0-canary.3fb67e2\"])>[tuiScrollRef]>.t-scrollbars .t-bar_vertical .t-thumb[style*=\"height: 100%\"]{display:none}tui-modal:where(*[data-tui-version=\"5.25.0-canary.3fb67e2\"])>[tuiScrollRef]>.t-scrollbars:first-child,tui-modal:where(*[data-tui-version=\"5.25.0-canary.3fb67e2\"])>[tuiScrollRef]>.tui-enter+.t-scrollbars .t-bar_vertical,tui-modal:where(*[data-tui-version=\"5.25.0-canary.3fb67e2\"])>[tuiScrollRef]>.tui-leave+.t-scrollbars .t-bar_vertical{display:none}tui-modal:where(*[data-tui-version=\"5.25.0-canary.3fb67e2\"])>[tuiScrollRef]:has(>.tui-enter),tui-modal:where(*[data-tui-version=\"5.25.0-canary.3fb67e2\"])>[tuiScrollRef]:has(>.tui-leave){scrollbar-width:none}tui-modal:where(*[data-tui-version=\"5.25.0-canary.3fb67e2\"])>[tuiScrollRef]:has(>.tui-enter)::-webkit-scrollbar,tui-modal:where(*[data-tui-version=\"5.25.0-canary.3fb67e2\"])>[tuiScrollRef]:has(>.tui-leave)::-webkit-scrollbar,tui-modal:where(*[data-tui-version=\"5.25.0-canary.3fb67e2\"])>[tuiScrollRef]:has(>.tui-enter)::-webkit-scrollbar-thumb,tui-modal:where(*[data-tui-version=\"5.25.0-canary.3fb67e2\"])>[tuiScrollRef]:has(>.tui-leave)::-webkit-scrollbar-thumb{display:none}\n"] }]
|
|
52
52
|
}] });
|
|
53
53
|
function findActive(zone, el) {
|
|
54
54
|
if (!el || !zone.contains(el)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taiga-ui-core-portals-modal.mjs","sources":["../../../projects/core/portals/modal/modal.component.ts","../../../projects/core/portals/modal/modal.service.ts","../../../projects/core/portals/modal/taiga-ui-core-portals-modal.ts"],"sourcesContent":["import {DOCUMENT} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n inject,\n type OnDestroy,\n type OnInit,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport {TUI_VERSION} from '@taiga-ui/cdk/constants';\nimport {TuiActiveZone} from '@taiga-ui/cdk/directives/active-zone';\nimport {TuiFocusTrap} from '@taiga-ui/cdk/directives/focus-trap';\nimport {type TuiPortalContext} from '@taiga-ui/cdk/portals';\nimport {tuiGetFocused} from '@taiga-ui/cdk/utils/focus';\nimport {TuiScrollControls, TuiScrollRef} from '@taiga-ui/core/components/scrollbar';\nimport {\n injectContext,\n type PolymorpheusContent,\n PolymorpheusOutlet,\n} from '@taiga-ui/polymorpheus';\n\n@Component({\n selector: 'tui-modal',\n imports: [PolymorpheusOutlet, TuiScrollControls, TuiScrollRef],\n template: `\n <div tuiScrollRef>\n <ng-container *polymorpheusOutlet=\"component(); context: context\" />\n <tui-scroll-controls class=\"t-scrollbars\" />\n </div>\n `,\n styles: `\n [data-tui-version='${TUI_VERSION}'] {\n @import './modal.style.less';\n }\n `,\n encapsulation: ViewEncapsulation.None,\n // eslint-disable-next-line @angular-eslint/prefer-on-push-component-change-detection\n changeDetection: ChangeDetectionStrategy.Default,\n hostDirectives: [TuiActiveZone, TuiFocusTrap],\n host: {\n 'aria-modal': 'true',\n 'data-tui-version': TUI_VERSION,\n role: 'dialog',\n class: 'tui-enter',\n '[attr.aria-labelledby]': 'context.id',\n '(animationend.self)': '$event.target.classList.remove(\"tui-enter\")',\n },\n})\nexport class TuiModalComponent<T> implements OnDestroy, OnInit {\n private readonly current = inject(TuiActiveZone);\n\n private readonly parent = findActive(\n inject(TuiActiveZone, {skipSelf: true}),\n tuiGetFocused(inject(DOCUMENT)),\n );\n\n public readonly context = injectContext<TuiPortalContext<T>>();\n public readonly component = signal<PolymorpheusContent<TuiPortalContext<T>>>(null);\n\n public ngOnInit(): void {\n this.current.tuiActiveZoneParentSetter = this.parent;\n }\n\n public ngOnDestroy(): void {\n this.current.tuiActiveZoneParentSetter = null;\n }\n}\n\nfunction findActive(zone: TuiActiveZone, el: Element | null): TuiActiveZone | null {\n if (!el || !zone.contains(el)) {\n return null;\n }\n\n const active = zone.children.find(\n (child) => !child['el'].matches('[tuiActiveZoneAdapter]') && child.contains(el),\n );\n\n return active ? findActive(active, el) : zone;\n}\n","import {inject, Injectable, type Type} from '@angular/core';\nimport {TUI_LEAVE} from '@taiga-ui/cdk/directives/animated';\nimport {TuiPortal} from '@taiga-ui/cdk/portals';\nimport {TuiPopupService} from '@taiga-ui/core/portals/popup';\nimport {PolymorpheusComponent} from '@taiga-ui/polymorpheus';\n\nimport {TuiModalComponent} from './modal.component';\n\n@Injectable()\nexport abstract class TuiModalService<T, K = void> extends TuiPortal<T, K> {\n protected abstract readonly content: Type<unknown>;\n protected readonly component = TuiModalComponent;\n\n constructor() {\n super(inject(TuiPopupService));\n }\n\n protected override add(\n component: PolymorpheusComponent<TuiModalComponent<T>>,\n ): () => void {\n const ref = this.service.add(component);\n const el: HTMLElement = ref.location.nativeElement;\n\n el.closest('tui-root')?.firstElementChild?.setAttribute('inert', '');\n ref.instance.component.set(new PolymorpheusComponent(this.content));\n\n return () => {\n ref.instance.component.set(null);\n ref.changeDetectorRef.detectChanges();\n el.classList.add(TUI_LEAVE);\n\n Promise.allSettled(getAnimations(el))\n .then(async () =>\n Promise.allSettled(\n getAnimations(el.firstElementChild?.firstElementChild),\n ),\n )\n .then(() => {\n // Under zoneless + provideAnimations Angular's animation engine queues\n // the modal removal but engine.flush never runs from a microtask, so\n // the element stays in DOM with `tui-leave` class. Detach it manually.\n el.closest('tui-root')?.firstElementChild?.removeAttribute('inert');\n ref.destroy();\n el.remove();\n });\n };\n }\n}\n\nfunction getAnimations(el?: Element | null): ReadonlyArray<Promise<unknown>> {\n return el?.getAnimations?.().map(async ({finished}) => finished) || [];\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;MAiDa,iBAAiB,CAAA;AA3B9B,IAAA,WAAA,GAAA;AA4BqB,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,aAAa,CAAC;QAE/B,IAAA,CAAA,MAAM,GAAG,UAAU,CAChC,MAAM,CAAC,aAAa,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,EACvC,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAClC;QAEe,IAAA,CAAA,OAAO,GAAG,aAAa,EAAuB;AAC9C,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAA2C,IAAI,CAAC;AASrF,IAAA;IAPU,QAAQ,GAAA;QACX,IAAI,CAAC,OAAO,CAAC,yBAAyB,GAAG,IAAI,CAAC,MAAM;IACxD;IAEO,WAAW,GAAA;AACd,QAAA,IAAI,CAAC,OAAO,CAAC,yBAAyB,GAAG,IAAI;IACjD;+GAjBS,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,YAAA,EAAA,MAAA,EAAA,kBAAA,EAAA,
|
|
1
|
+
{"version":3,"file":"taiga-ui-core-portals-modal.mjs","sources":["../../../projects/core/portals/modal/modal.component.ts","../../../projects/core/portals/modal/modal.service.ts","../../../projects/core/portals/modal/taiga-ui-core-portals-modal.ts"],"sourcesContent":["import {DOCUMENT} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n inject,\n type OnDestroy,\n type OnInit,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport {TUI_VERSION} from '@taiga-ui/cdk/constants';\nimport {TuiActiveZone} from '@taiga-ui/cdk/directives/active-zone';\nimport {TuiFocusTrap} from '@taiga-ui/cdk/directives/focus-trap';\nimport {type TuiPortalContext} from '@taiga-ui/cdk/portals';\nimport {tuiGetFocused} from '@taiga-ui/cdk/utils/focus';\nimport {TuiScrollControls, TuiScrollRef} from '@taiga-ui/core/components/scrollbar';\nimport {\n injectContext,\n type PolymorpheusContent,\n PolymorpheusOutlet,\n} from '@taiga-ui/polymorpheus';\n\n@Component({\n selector: 'tui-modal',\n imports: [PolymorpheusOutlet, TuiScrollControls, TuiScrollRef],\n template: `\n <div tuiScrollRef>\n <ng-container *polymorpheusOutlet=\"component(); context: context\" />\n <tui-scroll-controls class=\"t-scrollbars\" />\n </div>\n `,\n styles: `\n [data-tui-version='${TUI_VERSION}'] {\n @import './modal.style.less';\n }\n `,\n encapsulation: ViewEncapsulation.None,\n // eslint-disable-next-line @angular-eslint/prefer-on-push-component-change-detection\n changeDetection: ChangeDetectionStrategy.Default,\n hostDirectives: [TuiActiveZone, TuiFocusTrap],\n host: {\n 'aria-modal': 'true',\n 'data-tui-version': TUI_VERSION,\n role: 'dialog',\n class: 'tui-enter',\n '[attr.aria-labelledby]': 'context.id',\n '(animationend.self)': '$event.target.classList.remove(\"tui-enter\")',\n },\n})\nexport class TuiModalComponent<T> implements OnDestroy, OnInit {\n private readonly current = inject(TuiActiveZone);\n\n private readonly parent = findActive(\n inject(TuiActiveZone, {skipSelf: true}),\n tuiGetFocused(inject(DOCUMENT)),\n );\n\n public readonly context = injectContext<TuiPortalContext<T>>();\n public readonly component = signal<PolymorpheusContent<TuiPortalContext<T>>>(null);\n\n public ngOnInit(): void {\n this.current.tuiActiveZoneParentSetter = this.parent;\n }\n\n public ngOnDestroy(): void {\n this.current.tuiActiveZoneParentSetter = null;\n }\n}\n\nfunction findActive(zone: TuiActiveZone, el: Element | null): TuiActiveZone | null {\n if (!el || !zone.contains(el)) {\n return null;\n }\n\n const active = zone.children.find(\n (child) => !child['el'].matches('[tuiActiveZoneAdapter]') && child.contains(el),\n );\n\n return active ? findActive(active, el) : zone;\n}\n","import {inject, Injectable, type Type} from '@angular/core';\nimport {TUI_LEAVE} from '@taiga-ui/cdk/directives/animated';\nimport {TuiPortal} from '@taiga-ui/cdk/portals';\nimport {TuiPopupService} from '@taiga-ui/core/portals/popup';\nimport {PolymorpheusComponent} from '@taiga-ui/polymorpheus';\n\nimport {TuiModalComponent} from './modal.component';\n\n@Injectable()\nexport abstract class TuiModalService<T, K = void> extends TuiPortal<T, K> {\n protected abstract readonly content: Type<unknown>;\n protected readonly component = TuiModalComponent;\n\n constructor() {\n super(inject(TuiPopupService));\n }\n\n protected override add(\n component: PolymorpheusComponent<TuiModalComponent<T>>,\n ): () => void {\n const ref = this.service.add(component);\n const el: HTMLElement = ref.location.nativeElement;\n\n el.closest('tui-root')?.firstElementChild?.setAttribute('inert', '');\n ref.instance.component.set(new PolymorpheusComponent(this.content));\n\n return () => {\n ref.instance.component.set(null);\n ref.changeDetectorRef.detectChanges();\n el.classList.add(TUI_LEAVE);\n\n Promise.allSettled(getAnimations(el))\n .then(async () =>\n Promise.allSettled(\n getAnimations(el.firstElementChild?.firstElementChild),\n ),\n )\n .then(() => {\n // Under zoneless + provideAnimations Angular's animation engine queues\n // the modal removal but engine.flush never runs from a microtask, so\n // the element stays in DOM with `tui-leave` class. Detach it manually.\n el.closest('tui-root')?.firstElementChild?.removeAttribute('inert');\n ref.destroy();\n el.remove();\n });\n };\n }\n}\n\nfunction getAnimations(el?: Element | null): ReadonlyArray<Promise<unknown>> {\n return el?.getAnimations?.().map(async ({finished}) => finished) || [];\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;MAiDa,iBAAiB,CAAA;AA3B9B,IAAA,WAAA,GAAA;AA4BqB,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,aAAa,CAAC;QAE/B,IAAA,CAAA,MAAM,GAAG,UAAU,CAChC,MAAM,CAAC,aAAa,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,EACvC,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAClC;QAEe,IAAA,CAAA,OAAO,GAAG,aAAa,EAAuB;AAC9C,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAA2C,IAAI,CAAC;AASrF,IAAA;IAPU,QAAQ,GAAA;QACX,IAAI,CAAC,OAAO,CAAC,yBAAyB,GAAG,IAAI,CAAC,MAAM;IACxD;IAEO,WAAW,GAAA;AACd,QAAA,IAAI,CAAC,OAAO,CAAC,yBAAyB,GAAG,IAAI;IACjD;+GAjBS,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,YAAA,EAAA,MAAA,EAAA,kBAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,SAAA,EAAA,EAAA,mBAAA,EAAA,+CAAA,EAAA,EAAA,UAAA,EAAA,EAAA,sBAAA,EAAA,YAAA,EAAA,EAAA,cAAA,EAAA,WAAA,EAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,aAAA,EAAA,EAAA,EAAA,SAAA,EAAA,EAAA,CAAA,YAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAxBhB;;;;;AAKT,IAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,0vIAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EANS,kBAAkB,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,2BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,iBAAiB,EAAA,QAAA,EAAA,qBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,YAAY,EAAA,QAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,OAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAyBpD,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBA3B7B,SAAS;+BACI,WAAW,EAAA,OAAA,EACZ,CAAC,kBAAkB,EAAE,iBAAiB,EAAE,YAAY,CAAC,EAAA,QAAA,EACpD;;;;;AAKT,IAAA,CAAA,EAAA,aAAA,EAMc,iBAAiB,CAAC,IAAI,EAAA,eAAA,EAEpB,uBAAuB,CAAC,OAAO,EAAA,cAAA,EAChC,CAAC,aAAa,EAAE,YAAY,CAAC,EAAA,IAAA,EACvC;AACF,wBAAA,YAAY,EAAE,MAAM;AACpB,wBAAA,kBAAkB,EAAE,WAAW;AAC/B,wBAAA,IAAI,EAAE,QAAQ;AACd,wBAAA,KAAK,EAAE,WAAW;AAClB,wBAAA,wBAAwB,EAAE,YAAY;AACtC,wBAAA,qBAAqB,EAAE,6CAA6C;AACvE,qBAAA,EAAA,MAAA,EAAA,CAAA,0vIAAA,CAAA,EAAA;;AAsBL,SAAS,UAAU,CAAC,IAAmB,EAAE,EAAkB,EAAA;IACvD,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;AAC3B,QAAA,OAAO,IAAI;IACf;AAEA,IAAA,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAC7B,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,wBAAwB,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAClF;AAED,IAAA,OAAO,MAAM,GAAG,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,IAAI;AACjD;;ACtEM,MAAgB,eAA6B,SAAQ,SAAe,CAAA;AAItE,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;QAHf,IAAA,CAAA,SAAS,GAAG,iBAAiB;IAIhD;AAEmB,IAAA,GAAG,CAClB,SAAsD,EAAA;QAEtD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;AACvC,QAAA,MAAM,EAAE,GAAgB,GAAG,CAAC,QAAQ,CAAC,aAAa;AAElD,QAAA,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,iBAAiB,EAAE,YAAY,CAAC,OAAO,EAAE,EAAE,CAAC;AACpE,QAAA,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAEnE,QAAA,OAAO,MAAK;YACR,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;AAChC,YAAA,GAAG,CAAC,iBAAiB,CAAC,aAAa,EAAE;AACrC,YAAA,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC;AAE3B,YAAA,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;AAC/B,iBAAA,IAAI,CAAC,YACF,OAAO,CAAC,UAAU,CACd,aAAa,CAAC,EAAE,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,CACzD;iBAEJ,IAAI,CAAC,MAAK;;;;AAIP,gBAAA,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,iBAAiB,EAAE,eAAe,CAAC,OAAO,CAAC;gBACnE,GAAG,CAAC,OAAO,EAAE;gBACb,EAAE,CAAC,MAAM,EAAE;AACf,YAAA,CAAC,CAAC;AACV,QAAA,CAAC;IACL;+GArCkB,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAAf,eAAe,EAAA,CAAA,CAAA;;4FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBADpC;;AAyCD,SAAS,aAAa,CAAC,EAAmB,EAAA;IACtC,OAAO,EAAE,EAAE,aAAa,IAAI,CAAC,GAAG,CAAC,OAAO,EAAC,QAAQ,EAAC,KAAK,QAAQ,CAAC,IAAI,EAAE;AAC1E;;ACnDA;;AAEG;;;;"}
|