@taiga-ui/cdk 4.52.0-canary.1ea42f6 → 4.52.0-canary.24b31eb

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.
@@ -4,4 +4,4 @@
4
4
  *
5
5
  * Array of icons used in taiga-ui components
6
6
  */
7
- export declare const TUI_USED_ICONS: readonly ["@tui.mir", "@tui.visa", "@tui.electron", "@tui.search", "@tui.sun", "@tui.moon", "@tui.code", "@tui.menu", "@tui.copy", "@tui.check", "@tui.link", "@tui.external-link", "@tui.languages", "@tui.shrink", "@tui.expand", "@tui.a-large-small", "@tui.arrow-right-left", "@tui.eye-off", "@tui.eye", "@tui.grip-vertical", "@tui.chevron-up", "@tui.chevron-down", "@tui.chevrons-up-down", "@tui.info", "@tui.circle-check", "@tui.circle-x", "@tui.circle-alert", "@tui.circle-help", "@tui.x", "@tui.chevron-right", "@tui.ellipsis", "@tui.chevron-left", "@tui.clock", "@tui.trash", "@tui.minus", "@tui.file", "@tui.calendar", "@tui.plus", "@tui.phone", "@tui.heart", "@tui.heart-filled", "@tui.star", "@tui.rotate-ccw-square", "@tui.arrow-left", "@tui.arrow-right", "@tui.minimize", "@tui.filter", "@tui.layout-grid", "@tui.move-up-right", "@tui.move-right", "@tui.move-down-right", "@tui.move-down", "@tui.move-down-left", "@tui.move-left", "@tui.move-up-left", "@tui.move-up"];
7
+ export declare const TUI_USED_ICONS: readonly ["@tui.mir", "@tui.visa", "@tui.electron", "@tui.search", "@tui.sun", "@tui.moon", "@tui.code", "@tui.menu", "@tui.copy", "@tui.check", "@tui.link", "@tui.external-link", "@tui.languages", "@tui.shrink", "@tui.expand", "@tui.a-large-small", "@tui.arrow-right-left", "@tui.eye-off", "@tui.eye", "@tui.grip-vertical", "@tui.chevron-up", "@tui.chevron-down", "@tui.chevrons-up-down", "@tui.info", "@tui.circle-check", "@tui.circle-x", "@tui.circle-alert", "@tui.circle-help", "@tui.x", "@tui.chevron-right", "@tui.ellipsis", "@tui.chevron-left", "@tui.clock", "@tui.trash", "@tui.minus", "@tui.file", "@tui.calendar", "@tui.plus", "@tui.heart", "@tui.heart-filled", "@tui.star", "@tui.rotate-ccw-square", "@tui.arrow-left", "@tui.arrow-right", "@tui.minimize", "@tui.filter", "@tui.layout-grid"];
@@ -1 +1 @@
1
- export declare const TUI_VERSION = "4.52.0-canary.1ea42f6";
1
+ export declare const TUI_VERSION = "4.52.0-canary.24b31eb";
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.TUI_VERSION = void 0;
4
- exports.TUI_VERSION = '4.52.0-canary.1ea42f6';
4
+ exports.TUI_VERSION = '4.52.0-canary.24b31eb';
5
5
  //# sourceMappingURL=version.js.map
@@ -5,9 +5,9 @@ export declare class TuiActiveZone implements OnDestroy {
5
5
  private readonly control;
6
6
  private readonly active$;
7
7
  private readonly zone;
8
- private readonly el;
9
8
  private tuiActiveZoneParent;
10
- private readonly directParentActiveZone;
9
+ private readonly parent;
10
+ private readonly el;
11
11
  readonly tuiActiveZoneChange: Observable<boolean>;
12
12
  children: readonly TuiActiveZone[];
13
13
  constructor();
@@ -19,4 +19,5 @@ export declare class TuiActiveZone implements OnDestroy {
19
19
  private removeSubActiveZone;
20
20
  static ɵfac: i0.ɵɵFactoryDeclaration<TuiActiveZone, never>;
21
21
  static ɵdir: i0.ɵɵDirectiveDeclaration<TuiActiveZone, "[tuiActiveZone]:not(ng-container), [tuiActiveZoneChange]:not(ng-container), [tuiActiveZoneParent]:not(ng-container)", ["tuiActiveZone"], { "tuiActiveZoneParentSetter": { "alias": "tuiActiveZoneParent"; "required": false; }; }, { "tuiActiveZoneChange": "tuiActiveZoneChange"; }, never, never, true, never>;
22
+ static ɵprov: i0.ɵɵInjectableDeclaration<TuiActiveZone>;
22
23
  }
@@ -184,7 +184,6 @@ const TUI_USED_ICONS = [
184
184
  '@tui.file',
185
185
  '@tui.calendar',
186
186
  '@tui.plus',
187
- '@tui.phone',
188
187
  '@tui.heart',
189
188
  '@tui.heart-filled',
190
189
  '@tui.star',
@@ -194,17 +193,9 @@ const TUI_USED_ICONS = [
194
193
  '@tui.minimize',
195
194
  '@tui.filter',
196
195
  '@tui.layout-grid',
197
- '@tui.move-up-right',
198
- '@tui.move-right',
199
- '@tui.move-down-right',
200
- '@tui.move-down',
201
- '@tui.move-down-left',
202
- '@tui.move-left',
203
- '@tui.move-up-left',
204
- '@tui.move-up',
205
196
  ];
206
197
 
207
- const TUI_VERSION = '4.52.0-canary.1ea42f6';
198
+ const TUI_VERSION = '4.52.0-canary.24b31eb';
208
199
 
209
200
  /**
210
201
  * Generated bundle index. Do not edit.
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-cdk-constants.mjs","sources":["../../../projects/cdk/constants/allow-signal-writes.ts","../../../projects/cdk/constants/empty.ts","../../../projects/cdk/constants/handlers.ts","../../../projects/cdk/constants/matchers.ts","../../../projects/cdk/constants/regexp.ts","../../../projects/cdk/constants/svg-node-filter.ts","../../../projects/cdk/constants/unicode-chars.ts","../../../projects/cdk/constants/used-icons.ts","../../../projects/cdk/constants/version.ts","../../../projects/cdk/constants/taiga-ui-cdk-constants.ts"],"sourcesContent":["import {type CreateEffectOptions, VERSION} from '@angular/core';\n\nexport const TUI_ALLOW_SIGNAL_WRITES: CreateEffectOptions =\n parseInt(VERSION.major, 10) >= 19 ? {} : {allowSignalWrites: true};\n","import {QueryList} from '@angular/core';\n\nconst rect = {\n bottom: 0,\n height: 0,\n left: 0,\n right: 0,\n top: 0,\n width: 0,\n x: 0,\n y: 0,\n} as const;\n\n/**\n * For type safety when using @ContentChildren and @ViewChildren\n *\n * NOTE: Be careful subscribing to 'changes'\n * @deprecated use viewChild(), viewChildren(), contentChild() and contentChildren() for strict type checking\n */\nexport const EMPTY_QUERY = new QueryList<any>();\nexport const EMPTY_ARRAY: [] = [];\nexport const EMPTY_FUNCTION: (...args: any[]) => void = () => {};\nexport const EMPTY_CLIENT_RECT: DOMRect = {\n ...rect,\n toJSON: () => rect,\n};\n","/**\n * Handler that always returns `false`.\n */\n// eslint-disable-next-line no-restricted-syntax\nexport const TUI_FALSE_HANDLER = (): false => false;\n\n/**\n * Handler that always returns `true`.\n */\n// eslint-disable-next-line no-restricted-syntax\nexport const TUI_TRUE_HANDLER = (): true => true;\n","import {type TuiHandler, type TuiIdentityMatcher} from '@taiga-ui/cdk/types';\n\nfunction bothEmpty(item1: unknown, item2: unknown): boolean {\n return Array.isArray(item1) && Array.isArray(item2) && !item1.length && !item2.length;\n}\n\n/**\n * Default handler for matching stringified version of an item and a search query\n * @param item arbitrary element to match with a string\n * @param search search query\n * @param stringify handler to turn item into a string\n */\nexport const TUI_DEFAULT_MATCHER = <T>(\n item: T,\n search: string,\n stringify: TuiHandler<T, string> = String,\n): boolean => stringify(item).toLowerCase().includes(search.toLowerCase());\n\n/**\n * Default handler for strict matching stringified version of an item and a search query\n * @param item arbitrary element to match with a string\n * @param search search query\n * @param stringify handler to turn item into a string\n */\nexport const TUI_STRICT_MATCHER = <T>(\n item: T,\n search: string,\n stringify: TuiHandler<T, string> = String,\n): boolean => stringify(item).toLowerCase() === search.toLowerCase();\n\n/**\n * Default handler to match equality of two elements\n * ATTENTION: considers two empty arrays equal\n *\n * @param item1 first element\n * @param item2 second element\n */\nexport const TUI_DEFAULT_IDENTITY_MATCHER: TuiIdentityMatcher<unknown> = (item1, item2) =>\n item1 === item2 || bothEmpty(item1, item2);\n","export const TUI_DIGIT_REGEXP = /\\d/;\nexport const TUI_NON_DIGIT_REGEXP = /\\D/;\nexport const TUI_NON_DIGITS_REGEXP = /\\D+/g;\n","export const svgNodeFilter: Exclude<NodeFilter, (node: Node) => number> = {\n acceptNode(node: Node): number {\n return 'ownerSVGElement' in node\n ? NodeFilter.FILTER_REJECT\n : NodeFilter.FILTER_ACCEPT;\n },\n};\n","/**\n * {@link https://unicode-table.com/en/00A0/ Non-breaking space}.\n */\nexport const CHAR_NO_BREAK_SPACE = '\\u00A0';\n\n/**\n * {@link https://unicode-table.com/en/2013/ EN dash}\n * is used to indicate a range of numbers or a span of time.\n * @example 2006–2022\n * ___\n * Don't confuse with {@link CHAR_EM_DASH} or {@link CHAR_HYPHEN}!\n */\nexport const CHAR_EN_DASH = '\\u2013';\n\n/**\n * {@link https://unicode-table.com/en/2014/ EM dash}\n * is used to mark a break in a sentence.\n * @example Taiga UI — powerful set of open source components for Angular\n * ___\n * Don't confuse with {@link CHAR_EN_DASH} or {@link CHAR_HYPHEN}!\n */\nexport const CHAR_EM_DASH = '\\u2014';\n\n/**\n * {@link https://unicode-table.com/en/00AB/ Left-Pointing Double Angle Quotation Mark}\n */\nexport const CHAR_LAQUO = '\\u00AB';\n\n/**\n * {@link https://unicode-table.com/en/00BB/ Right-Pointing Double Angle Quotation Mark}\n */\nexport const CHAR_RAQUO = '\\u00BB';\n\n/**\n * {@link https://unicode-table.com/en/002D/ Hyphen (minus sign)}\n * is used to combine words.\n * @example well-behaved\n * ___\n * Don't confuse with {@link CHAR_EN_DASH} or {@link CHAR_EM_DASH}!\n */\nexport const CHAR_HYPHEN = '\\u002D';\n\n/**\n * {@link https://unicode-table.com/en/2212/ Minus}\n * is used as math operator symbol or before negative digits.\n * ---\n * Can be used as `&minus;`. Don't confuse with {@link CHAR_HYPHEN}\n */\nexport const CHAR_MINUS = '\\u2212';\n\n/**\n * {@link https://unicode-table.com/en/002B/ Plus}\n */\nexport const CHAR_PLUS = '\\u002B';\n\n/**\n * {@link https://unicode-table.com/en/2022/ Bullet}.\n */\nexport const CHAR_BULLET = '\\u2022';\n\n/**\n * {@link https://unicode-table.com/en/2026/ Suspension points}.\n */\nexport const CHAR_ELLIPSIS = '\\u2026';\n\n/**\n * {@link https://unicode-table.com/en/00A4/ Suspension points}.\n */\nexport const CHAR_CURRENCY_SIGN = '\\u00A4';\n\n/**\n * {@link https://unicode-table.com/en/200b/ Suspension points}.\n */\nexport const CHAR_ZERO_WIDTH_SPACE = '\\u200B';\n","/**\n * @description:\n * AUTOGENERATED\n *\n * Array of icons used in taiga-ui components\n */\nexport const TUI_USED_ICONS = [\n '@tui.mir',\n '@tui.visa',\n '@tui.electron',\n '@tui.search',\n '@tui.sun',\n '@tui.moon',\n '@tui.code',\n '@tui.menu',\n '@tui.copy',\n '@tui.check',\n '@tui.link',\n '@tui.external-link',\n '@tui.languages',\n '@tui.shrink',\n '@tui.expand',\n '@tui.a-large-small',\n '@tui.arrow-right-left',\n '@tui.eye-off',\n '@tui.eye',\n '@tui.grip-vertical',\n '@tui.chevron-up',\n '@tui.chevron-down',\n '@tui.chevrons-up-down',\n '@tui.info',\n '@tui.circle-check',\n '@tui.circle-x',\n '@tui.circle-alert',\n '@tui.circle-help',\n '@tui.x',\n '@tui.chevron-right',\n '@tui.ellipsis',\n '@tui.chevron-left',\n '@tui.clock',\n '@tui.trash',\n '@tui.minus',\n '@tui.file',\n '@tui.calendar',\n '@tui.plus',\n '@tui.phone',\n '@tui.heart',\n '@tui.heart-filled',\n '@tui.star',\n '@tui.rotate-ccw-square',\n '@tui.arrow-left',\n '@tui.arrow-right',\n '@tui.minimize',\n '@tui.filter',\n '@tui.layout-grid',\n '@tui.move-up-right',\n '@tui.move-right',\n '@tui.move-down-right',\n '@tui.move-down',\n '@tui.move-down-left',\n '@tui.move-left',\n '@tui.move-up-left',\n '@tui.move-up',\n] as const;\n","export const TUI_VERSION = '4.52.0-canary.1ea42f6';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"taiga-ui-cdk-constants.mjs","sources":["../../../projects/cdk/constants/allow-signal-writes.ts","../../../projects/cdk/constants/empty.ts","../../../projects/cdk/constants/handlers.ts","../../../projects/cdk/constants/matchers.ts","../../../projects/cdk/constants/regexp.ts","../../../projects/cdk/constants/svg-node-filter.ts","../../../projects/cdk/constants/unicode-chars.ts","../../../projects/cdk/constants/used-icons.ts","../../../projects/cdk/constants/version.ts","../../../projects/cdk/constants/taiga-ui-cdk-constants.ts"],"sourcesContent":["import {type CreateEffectOptions, VERSION} from '@angular/core';\n\nexport const TUI_ALLOW_SIGNAL_WRITES: CreateEffectOptions =\n parseInt(VERSION.major, 10) >= 19 ? {} : {allowSignalWrites: true};\n","import {QueryList} from '@angular/core';\n\nconst rect = {\n bottom: 0,\n height: 0,\n left: 0,\n right: 0,\n top: 0,\n width: 0,\n x: 0,\n y: 0,\n} as const;\n\n/**\n * For type safety when using @ContentChildren and @ViewChildren\n *\n * NOTE: Be careful subscribing to 'changes'\n * @deprecated use viewChild(), viewChildren(), contentChild() and contentChildren() for strict type checking\n */\nexport const EMPTY_QUERY = new QueryList<any>();\nexport const EMPTY_ARRAY: [] = [];\nexport const EMPTY_FUNCTION: (...args: any[]) => void = () => {};\nexport const EMPTY_CLIENT_RECT: DOMRect = {\n ...rect,\n toJSON: () => rect,\n};\n","/**\n * Handler that always returns `false`.\n */\n// eslint-disable-next-line no-restricted-syntax\nexport const TUI_FALSE_HANDLER = (): false => false;\n\n/**\n * Handler that always returns `true`.\n */\n// eslint-disable-next-line no-restricted-syntax\nexport const TUI_TRUE_HANDLER = (): true => true;\n","import {type TuiHandler, type TuiIdentityMatcher} from '@taiga-ui/cdk/types';\n\nfunction bothEmpty(item1: unknown, item2: unknown): boolean {\n return Array.isArray(item1) && Array.isArray(item2) && !item1.length && !item2.length;\n}\n\n/**\n * Default handler for matching stringified version of an item and a search query\n * @param item arbitrary element to match with a string\n * @param search search query\n * @param stringify handler to turn item into a string\n */\nexport const TUI_DEFAULT_MATCHER = <T>(\n item: T,\n search: string,\n stringify: TuiHandler<T, string> = String,\n): boolean => stringify(item).toLowerCase().includes(search.toLowerCase());\n\n/**\n * Default handler for strict matching stringified version of an item and a search query\n * @param item arbitrary element to match with a string\n * @param search search query\n * @param stringify handler to turn item into a string\n */\nexport const TUI_STRICT_MATCHER = <T>(\n item: T,\n search: string,\n stringify: TuiHandler<T, string> = String,\n): boolean => stringify(item).toLowerCase() === search.toLowerCase();\n\n/**\n * Default handler to match equality of two elements\n * ATTENTION: considers two empty arrays equal\n *\n * @param item1 first element\n * @param item2 second element\n */\nexport const TUI_DEFAULT_IDENTITY_MATCHER: TuiIdentityMatcher<unknown> = (item1, item2) =>\n item1 === item2 || bothEmpty(item1, item2);\n","export const TUI_DIGIT_REGEXP = /\\d/;\nexport const TUI_NON_DIGIT_REGEXP = /\\D/;\nexport const TUI_NON_DIGITS_REGEXP = /\\D+/g;\n","export const svgNodeFilter: Exclude<NodeFilter, (node: Node) => number> = {\n acceptNode(node: Node): number {\n return 'ownerSVGElement' in node\n ? NodeFilter.FILTER_REJECT\n : NodeFilter.FILTER_ACCEPT;\n },\n};\n","/**\n * {@link https://unicode-table.com/en/00A0/ Non-breaking space}.\n */\nexport const CHAR_NO_BREAK_SPACE = '\\u00A0';\n\n/**\n * {@link https://unicode-table.com/en/2013/ EN dash}\n * is used to indicate a range of numbers or a span of time.\n * @example 2006–2022\n * ___\n * Don't confuse with {@link CHAR_EM_DASH} or {@link CHAR_HYPHEN}!\n */\nexport const CHAR_EN_DASH = '\\u2013';\n\n/**\n * {@link https://unicode-table.com/en/2014/ EM dash}\n * is used to mark a break in a sentence.\n * @example Taiga UI — powerful set of open source components for Angular\n * ___\n * Don't confuse with {@link CHAR_EN_DASH} or {@link CHAR_HYPHEN}!\n */\nexport const CHAR_EM_DASH = '\\u2014';\n\n/**\n * {@link https://unicode-table.com/en/00AB/ Left-Pointing Double Angle Quotation Mark}\n */\nexport const CHAR_LAQUO = '\\u00AB';\n\n/**\n * {@link https://unicode-table.com/en/00BB/ Right-Pointing Double Angle Quotation Mark}\n */\nexport const CHAR_RAQUO = '\\u00BB';\n\n/**\n * {@link https://unicode-table.com/en/002D/ Hyphen (minus sign)}\n * is used to combine words.\n * @example well-behaved\n * ___\n * Don't confuse with {@link CHAR_EN_DASH} or {@link CHAR_EM_DASH}!\n */\nexport const CHAR_HYPHEN = '\\u002D';\n\n/**\n * {@link https://unicode-table.com/en/2212/ Minus}\n * is used as math operator symbol or before negative digits.\n * ---\n * Can be used as `&minus;`. Don't confuse with {@link CHAR_HYPHEN}\n */\nexport const CHAR_MINUS = '\\u2212';\n\n/**\n * {@link https://unicode-table.com/en/002B/ Plus}\n */\nexport const CHAR_PLUS = '\\u002B';\n\n/**\n * {@link https://unicode-table.com/en/2022/ Bullet}.\n */\nexport const CHAR_BULLET = '\\u2022';\n\n/**\n * {@link https://unicode-table.com/en/2026/ Suspension points}.\n */\nexport const CHAR_ELLIPSIS = '\\u2026';\n\n/**\n * {@link https://unicode-table.com/en/00A4/ Suspension points}.\n */\nexport const CHAR_CURRENCY_SIGN = '\\u00A4';\n\n/**\n * {@link https://unicode-table.com/en/200b/ Suspension points}.\n */\nexport const CHAR_ZERO_WIDTH_SPACE = '\\u200B';\n","/**\n * @description:\n * AUTOGENERATED\n *\n * Array of icons used in taiga-ui components\n */\nexport const TUI_USED_ICONS = [\n '@tui.mir',\n '@tui.visa',\n '@tui.electron',\n '@tui.search',\n '@tui.sun',\n '@tui.moon',\n '@tui.code',\n '@tui.menu',\n '@tui.copy',\n '@tui.check',\n '@tui.link',\n '@tui.external-link',\n '@tui.languages',\n '@tui.shrink',\n '@tui.expand',\n '@tui.a-large-small',\n '@tui.arrow-right-left',\n '@tui.eye-off',\n '@tui.eye',\n '@tui.grip-vertical',\n '@tui.chevron-up',\n '@tui.chevron-down',\n '@tui.chevrons-up-down',\n '@tui.info',\n '@tui.circle-check',\n '@tui.circle-x',\n '@tui.circle-alert',\n '@tui.circle-help',\n '@tui.x',\n '@tui.chevron-right',\n '@tui.ellipsis',\n '@tui.chevron-left',\n '@tui.clock',\n '@tui.trash',\n '@tui.minus',\n '@tui.file',\n '@tui.calendar',\n '@tui.plus',\n '@tui.heart',\n '@tui.heart-filled',\n '@tui.star',\n '@tui.rotate-ccw-square',\n '@tui.arrow-left',\n '@tui.arrow-right',\n '@tui.minimize',\n '@tui.filter',\n '@tui.layout-grid',\n] as const;\n","export const TUI_VERSION = '4.52.0-canary.24b31eb';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;AAEa,MAAA,uBAAuB,GAChC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAC,iBAAiB,EAAE,IAAI;;ACDrE,MAAM,IAAI,GAAG;AACT,IAAA,MAAM,EAAE,CAAC;AACT,IAAA,MAAM,EAAE,CAAC;AACT,IAAA,IAAI,EAAE,CAAC;AACP,IAAA,KAAK,EAAE,CAAC;AACR,IAAA,GAAG,EAAE,CAAC;AACN,IAAA,KAAK,EAAE,CAAC;AACR,IAAA,CAAC,EAAE,CAAC;AACJ,IAAA,CAAC,EAAE,CAAC;CACE;AAEV;;;;;AAKG;AACU,MAAA,WAAW,GAAG,IAAI,SAAS;AACjC,MAAM,WAAW,GAAO;MAClB,cAAc,GAA6B,MAAK;AAChD,MAAA,iBAAiB,GAAY;AACtC,IAAA,GAAG,IAAI;AACP,IAAA,MAAM,EAAE,MAAM,IAAI;;;ACxBtB;;AAEG;AACH;MACa,iBAAiB,GAAG,MAAa;AAE9C;;AAEG;AACH;MACa,gBAAgB,GAAG,MAAY;;ACR5C,SAAS,SAAS,CAAC,KAAc,EAAE,KAAc,EAAA;IAC7C,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM;AACzF;AAEA;;;;;AAKG;AACI,MAAM,mBAAmB,GAAG,CAC/B,IAAO,EACP,MAAc,EACd,SAAA,GAAmC,MAAM,KAC/B,SAAS,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE;AAEzE;;;;;AAKG;AACU,MAAA,kBAAkB,GAAG,CAC9B,IAAO,EACP,MAAc,EACd,SAAmC,GAAA,MAAM,KAC/B,SAAS,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,WAAW;AAElE;;;;;;AAMG;MACU,4BAA4B,GAAgC,CAAC,KAAK,EAAE,KAAK,KAClF,KAAK,KAAK,KAAK,IAAI,SAAS,CAAC,KAAK,EAAE,KAAK;;ACtCtC,MAAM,gBAAgB,GAAG;AACzB,MAAM,oBAAoB,GAAG;AAC7B,MAAM,qBAAqB,GAAG;;ACFxB,MAAA,aAAa,GAAgD;AACtE,IAAA,UAAU,CAAC,IAAU,EAAA;QACjB,OAAO,iBAAiB,IAAI;cACtB,UAAU,CAAC;AACb,cAAE,UAAU,CAAC,aAAa;KACjC;;;ACLL;;AAEG;AACI,MAAM,mBAAmB,GAAG;AAEnC;;;;;;AAMG;AACI,MAAM,YAAY,GAAG;AAE5B;;;;;;AAMG;AACI,MAAM,YAAY,GAAG;AAE5B;;AAEG;AACI,MAAM,UAAU,GAAG;AAE1B;;AAEG;AACI,MAAM,UAAU,GAAG;AAE1B;;;;;;AAMG;AACI,MAAM,WAAW,GAAG;AAE3B;;;;;AAKG;AACI,MAAM,UAAU,GAAG;AAE1B;;AAEG;AACI,MAAM,SAAS,GAAG;AAEzB;;AAEG;AACI,MAAM,WAAW,GAAG;AAE3B;;AAEG;AACI,MAAM,aAAa,GAAG;AAE7B;;AAEG;AACI,MAAM,kBAAkB,GAAG;AAElC;;AAEG;AACI,MAAM,qBAAqB,GAAG;;ACzErC;;;;;AAKG;AACU,MAAA,cAAc,GAAG;IAC1B,UAAU;IACV,WAAW;IACX,eAAe;IACf,aAAa;IACb,UAAU;IACV,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,YAAY;IACZ,WAAW;IACX,oBAAoB;IACpB,gBAAgB;IAChB,aAAa;IACb,aAAa;IACb,oBAAoB;IACpB,uBAAuB;IACvB,cAAc;IACd,UAAU;IACV,oBAAoB;IACpB,iBAAiB;IACjB,mBAAmB;IACnB,uBAAuB;IACvB,WAAW;IACX,mBAAmB;IACnB,eAAe;IACf,mBAAmB;IACnB,kBAAkB;IAClB,QAAQ;IACR,oBAAoB;IACpB,eAAe;IACf,mBAAmB;IACnB,YAAY;IACZ,YAAY;IACZ,YAAY;IACZ,WAAW;IACX,eAAe;IACf,WAAW;IACX,YAAY;IACZ,mBAAmB;IACnB,WAAW;IACX,wBAAwB;IACxB,iBAAiB;IACjB,kBAAkB;IAClB,eAAe;IACf,aAAa;IACb,kBAAkB;;;ACrDf,MAAM,WAAW,GAAG;;ACA3B;;AAEG;;;;"}
@@ -1,10 +1,11 @@
1
1
  import { __decorate } from 'tslib';
2
+ import { DOCUMENT } from '@angular/common';
2
3
  import * as i0 from '@angular/core';
3
- import { inject, NgZone, Input, Output, Directive } from '@angular/core';
4
+ import { inject, NgZone, ElementRef, Injectable, Directive } from '@angular/core';
4
5
  import { NgControl } from '@angular/forms';
5
6
  import { tuiZoneOptimized } from '@taiga-ui/cdk/observables';
6
7
  import { TUI_ACTIVE_ELEMENT } from '@taiga-ui/cdk/tokens';
7
- import { tuiInjectElement, tuiArrayRemove, tuiPure } from '@taiga-ui/cdk/utils';
8
+ import { tuiArrayRemove, tuiPure } from '@taiga-ui/cdk/utils';
8
9
  import { map, startWith, distinctUntilChanged, skip, tap, share } from 'rxjs';
9
10
 
10
11
  class TuiActiveZone {
@@ -13,25 +14,23 @@ class TuiActiveZone {
13
14
  this.control = inject(NgControl, { self: true, optional: true });
14
15
  this.active$ = inject(TUI_ACTIVE_ELEMENT);
15
16
  this.zone = inject(NgZone);
16
- this.el = tuiInjectElement();
17
17
  this.tuiActiveZoneParent = null;
18
- this.directParentActiveZone = inject(TuiActiveZone, {
19
- skipSelf: true,
20
- optional: true,
21
- });
18
+ this.parent = inject(TuiActiveZone, { skipSelf: true, optional: true });
19
+ this.el = inject(ElementRef, { optional: true })?.nativeElement ??
20
+ inject(DOCUMENT).documentElement;
22
21
  this.tuiActiveZoneChange = this.active$.pipe(map((element) => !!element && this.contains(element)), startWith(false), distinctUntilChanged(), skip(1), tap((active) => {
23
22
  if (!active && typeof this.control?.valueAccessor.onTouched === 'function') {
24
23
  this.control.valueAccessor.onTouched();
25
24
  }
26
25
  }), tuiZoneOptimized(this.zone), share());
27
26
  this.children = [];
28
- this.directParentActiveZone?.addSubActiveZone(this);
27
+ this.parent?.addSubActiveZone(this);
29
28
  }
30
29
  set tuiActiveZoneParentSetter(zone) {
31
30
  this.setZone(zone);
32
31
  }
33
32
  ngOnDestroy() {
34
- this.directParentActiveZone?.removeSubActiveZone(this);
33
+ this.parent?.removeSubActiveZone(this);
35
34
  this.tuiActiveZoneParent?.removeSubActiveZone(this);
36
35
  }
37
36
  contains(node) {
@@ -49,27 +48,25 @@ class TuiActiveZone {
49
48
  this.children = tuiArrayRemove(this.children, this.children.indexOf(activeZone));
50
49
  }
51
50
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiActiveZone, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
52
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.15", type: TuiActiveZone, isStandalone: true, selector: "[tuiActiveZone]:not(ng-container), [tuiActiveZoneChange]:not(ng-container), [tuiActiveZoneParent]:not(ng-container)", inputs: { tuiActiveZoneParentSetter: ["tuiActiveZoneParent", "tuiActiveZoneParentSetter"] }, outputs: { tuiActiveZoneChange: "tuiActiveZoneChange" }, host: { listeners: { "document:mousedown.zoneless": "(0)" } }, exportAs: ["tuiActiveZone"], ngImport: i0 }); }
51
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.15", type: TuiActiveZone, isStandalone: true, selector: "[tuiActiveZone]:not(ng-container), [tuiActiveZoneChange]:not(ng-container), [tuiActiveZoneParent]:not(ng-container)", inputs: { tuiActiveZoneParentSetter: ["tuiActiveZoneParent", "tuiActiveZoneParentSetter"] }, outputs: { tuiActiveZoneChange: "tuiActiveZoneChange" }, exportAs: ["tuiActiveZone"], ngImport: i0 }); }
52
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiActiveZone, providedIn: 'root' }); }
53
53
  }
54
54
  __decorate([
55
55
  tuiPure
56
56
  ], TuiActiveZone.prototype, "setZone", null);
57
57
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiActiveZone, decorators: [{
58
+ type: Injectable,
59
+ args: [{ providedIn: 'root' }]
60
+ }, {
58
61
  type: Directive,
59
62
  args: [{
60
63
  standalone: true,
61
64
  selector: '[tuiActiveZone]:not(ng-container), [tuiActiveZoneChange]:not(ng-container), [tuiActiveZoneParent]:not(ng-container)',
65
+ inputs: ['tuiActiveZoneParentSetter: tuiActiveZoneParent'],
66
+ outputs: ['tuiActiveZoneChange'],
62
67
  exportAs: 'tuiActiveZone',
63
- host: {
64
- '(document:mousedown.zoneless)': '(0)',
65
- },
66
68
  }]
67
- }], ctorParameters: () => [], propDecorators: { tuiActiveZoneChange: [{
68
- type: Output
69
- }], tuiActiveZoneParentSetter: [{
70
- type: Input,
71
- args: ['tuiActiveZoneParent']
72
- }], setZone: [] } });
69
+ }], ctorParameters: () => [], propDecorators: { setZone: [] } });
73
70
 
74
71
  /**
75
72
  * Generated bundle index. Do not edit.
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-cdk-directives-active-zone.mjs","sources":["../../../projects/cdk/directives/active-zone/active-zone.directive.ts","../../../projects/cdk/directives/active-zone/taiga-ui-cdk-directives-active-zone.ts"],"sourcesContent":["import {Directive, inject, Input, NgZone, type OnDestroy, Output} from '@angular/core';\nimport {NgControl} from '@angular/forms';\nimport {tuiZoneOptimized} from '@taiga-ui/cdk/observables';\nimport {TUI_ACTIVE_ELEMENT} from '@taiga-ui/cdk/tokens';\nimport {tuiArrayRemove, tuiInjectElement, tuiPure} from '@taiga-ui/cdk/utils';\nimport {\n distinctUntilChanged,\n map,\n type Observable,\n share,\n skip,\n startWith,\n tap,\n} from 'rxjs';\n\n@Directive({\n standalone: true,\n selector:\n '[tuiActiveZone]:not(ng-container), [tuiActiveZoneChange]:not(ng-container), [tuiActiveZoneParent]:not(ng-container)',\n exportAs: 'tuiActiveZone',\n host: {\n '(document:mousedown.zoneless)': '(0)',\n },\n})\nexport class TuiActiveZone implements OnDestroy {\n // TODO: Should we remove in v5? It's no longer used in Taiga UI\n private readonly control: any = inject(NgControl, {self: true, optional: true});\n private readonly active$ = inject<Observable<Element | null>>(TUI_ACTIVE_ELEMENT);\n private readonly zone = inject(NgZone);\n private readonly el = tuiInjectElement();\n private tuiActiveZoneParent: TuiActiveZone | null = null;\n private readonly directParentActiveZone = inject(TuiActiveZone, {\n skipSelf: true,\n optional: true,\n });\n\n @Output()\n public readonly tuiActiveZoneChange = this.active$.pipe(\n map((element) => !!element && this.contains(element)),\n startWith(false),\n distinctUntilChanged(),\n skip(1),\n tap((active) => {\n if (!active && typeof this.control?.valueAccessor.onTouched === 'function') {\n this.control.valueAccessor.onTouched();\n }\n }),\n tuiZoneOptimized(this.zone),\n share(),\n );\n\n public children: readonly TuiActiveZone[] = [];\n\n constructor() {\n this.directParentActiveZone?.addSubActiveZone(this);\n }\n\n @Input('tuiActiveZoneParent')\n public set tuiActiveZoneParentSetter(zone: TuiActiveZone | null) {\n this.setZone(zone);\n }\n\n public ngOnDestroy(): void {\n this.directParentActiveZone?.removeSubActiveZone(this);\n this.tuiActiveZoneParent?.removeSubActiveZone(this);\n }\n\n public contains(node: Node): boolean {\n return (\n this.el.contains(node) || this.children.some((item) => item.contains(node))\n );\n }\n\n @tuiPure\n private setZone(zone: TuiActiveZone | null): void {\n this.tuiActiveZoneParent?.removeSubActiveZone(this);\n zone?.addSubActiveZone(this);\n this.tuiActiveZoneParent = zone;\n }\n\n private addSubActiveZone(activeZone: TuiActiveZone): void {\n this.children = [...this.children, activeZone];\n }\n\n private removeSubActiveZone(activeZone: TuiActiveZone): void {\n this.children = tuiArrayRemove(this.children, this.children.indexOf(activeZone));\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"taiga-ui-cdk-directives-active-zone.mjs","sources":["../../../projects/cdk/directives/active-zone/active-zone.directive.ts","../../../projects/cdk/directives/active-zone/taiga-ui-cdk-directives-active-zone.ts"],"sourcesContent":["import {DOCUMENT} from '@angular/common';\nimport {\n Directive,\n ElementRef,\n inject,\n Injectable,\n NgZone,\n type OnDestroy,\n} from '@angular/core';\nimport {NgControl} from '@angular/forms';\nimport {tuiZoneOptimized} from '@taiga-ui/cdk/observables';\nimport {TUI_ACTIVE_ELEMENT} from '@taiga-ui/cdk/tokens';\nimport {tuiArrayRemove, tuiPure} from '@taiga-ui/cdk/utils';\nimport {\n distinctUntilChanged,\n map,\n type Observable,\n share,\n skip,\n startWith,\n tap,\n} from 'rxjs';\n\n@Injectable({providedIn: 'root'})\n@Directive({\n standalone: true,\n selector:\n '[tuiActiveZone]:not(ng-container), [tuiActiveZoneChange]:not(ng-container), [tuiActiveZoneParent]:not(ng-container)',\n inputs: ['tuiActiveZoneParentSetter: tuiActiveZoneParent'],\n outputs: ['tuiActiveZoneChange'],\n exportAs: 'tuiActiveZone',\n})\nexport class TuiActiveZone implements OnDestroy {\n // TODO: Should we remove in v5? It's no longer used in Taiga UI\n private readonly control: any = inject(NgControl, {self: true, optional: true});\n private readonly active$ = inject<Observable<Element | null>>(TUI_ACTIVE_ELEMENT);\n private readonly zone = inject(NgZone);\n private tuiActiveZoneParent: TuiActiveZone | null = null;\n private readonly parent = inject(TuiActiveZone, {skipSelf: true, optional: true});\n private readonly el: HTMLElement =\n inject(ElementRef, {optional: true})?.nativeElement ??\n inject(DOCUMENT).documentElement;\n\n public readonly tuiActiveZoneChange = this.active$.pipe(\n map((element) => !!element && this.contains(element)),\n startWith(false),\n distinctUntilChanged(),\n skip(1),\n tap((active) => {\n if (!active && typeof this.control?.valueAccessor.onTouched === 'function') {\n this.control.valueAccessor.onTouched();\n }\n }),\n tuiZoneOptimized(this.zone),\n share(),\n );\n\n public children: readonly TuiActiveZone[] = [];\n\n constructor() {\n this.parent?.addSubActiveZone(this);\n }\n\n public set tuiActiveZoneParentSetter(zone: TuiActiveZone | null) {\n this.setZone(zone);\n }\n\n public ngOnDestroy(): void {\n this.parent?.removeSubActiveZone(this);\n this.tuiActiveZoneParent?.removeSubActiveZone(this);\n }\n\n public contains(node: Node): boolean {\n return (\n this.el.contains(node) || this.children.some((item) => item.contains(node))\n );\n }\n\n @tuiPure\n private setZone(zone: TuiActiveZone | null): void {\n this.tuiActiveZoneParent?.removeSubActiveZone(this);\n zone?.addSubActiveZone(this);\n this.tuiActiveZoneParent = zone;\n }\n\n private addSubActiveZone(activeZone: TuiActiveZone): void {\n this.children = [...this.children, activeZone];\n }\n\n private removeSubActiveZone(activeZone: TuiActiveZone): void {\n this.children = tuiArrayRemove(this.children, this.children.indexOf(activeZone));\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -30,9 +30,7 @@ class TuiObscured {
30
30
  constructor() {
31
31
  this.activeZone = inject(TuiActiveZone, { optional: true });
32
32
  this.enabled$ = new BehaviorSubject(false);
33
- this.obscured$ = inject(TuiObscuredService, { self: true }).pipe(
34
- // TODO: Refactor so that dropdowns and dialogs work properly without hacks
35
- map((by) => !!by?.every((el) => el.closest('tui-dialogs') || !this.activeZone?.contains(el))));
33
+ this.obscured$ = inject(TuiObscuredService, { self: true }).pipe(map((by) => !!by?.every((el) => check(el) || !this.activeZone?.contains(el))));
36
34
  this.tuiObscured = this.enabled$.pipe(tuiIfMap(() => this.obscured$));
37
35
  }
38
36
  set tuiObscuredEnabled(enabled) {
@@ -53,6 +51,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
53
51
  }], tuiObscuredEnabled: [{
54
52
  type: Input
55
53
  }] } });
54
+ // TODO: Refactor so that dropdowns and dialogs work properly without hacks
55
+ function check(el) {
56
+ return (!!el.closest('tui-dialogs') &&
57
+ // eslint-disable-next-line unicorn/prefer-query-selector
58
+ !!el.ownerDocument.documentElement.getElementsByTagName('tui-dropdown').length);
59
+ }
56
60
 
57
61
  /**
58
62
  * Generated bundle index. Do not edit.
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-cdk-directives-obscured.mjs","sources":["../../../projects/cdk/directives/obscured/obscured.service.ts","../../../projects/cdk/directives/obscured/obscured.directive.ts","../../../projects/cdk/directives/obscured/taiga-ui-cdk-directives-obscured.ts"],"sourcesContent":["import {inject, Injectable} from '@angular/core';\nimport {WA_ANIMATION_FRAME} from '@ng-web-apis/common';\nimport {tuiZonefreeScheduler, tuiZoneOptimized} from '@taiga-ui/cdk/observables';\nimport {tuiGetElementObscures, tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {distinctUntilChanged, map, Observable, startWith, throttleTime} from 'rxjs';\n\n/**\n * Service that monitors element visibility by polling and returning\n * either null or an array of elements that overlap given element edges\n */\n@Injectable()\nexport class TuiObscuredService extends Observable<readonly Element[] | null> {\n private readonly el = tuiInjectElement();\n private readonly obscured$ = inject(WA_ANIMATION_FRAME).pipe(\n throttleTime(100, tuiZonefreeScheduler()),\n map(() => tuiGetElementObscures(this.el)),\n startWith(null),\n distinctUntilChanged(),\n tuiZoneOptimized(),\n );\n\n constructor() {\n super((subscriber) => this.obscured$.subscribe(subscriber));\n }\n}\n","import {Directive, inject, Input, Output} from '@angular/core';\nimport {TuiActiveZone} from '@taiga-ui/cdk/directives/active-zone';\nimport {tuiIfMap} from '@taiga-ui/cdk/observables';\nimport {BehaviorSubject, map} from 'rxjs';\n\nimport {TuiObscuredService} from './obscured.service';\n\n/**\n * Directive that monitors element visibility\n */\n@Directive({\n standalone: true,\n selector: '[tuiObscured]',\n providers: [TuiObscuredService],\n})\nexport class TuiObscured {\n private readonly activeZone = inject(TuiActiveZone, {optional: true});\n private readonly enabled$ = new BehaviorSubject(false);\n private readonly obscured$ = inject(TuiObscuredService, {self: true}).pipe(\n // TODO: Refactor so that dropdowns and dialogs work properly without hacks\n map(\n (by) =>\n !!by?.every(\n (el) => el.closest('tui-dialogs') || !this.activeZone?.contains(el),\n ),\n ),\n );\n\n @Output()\n public readonly tuiObscured = this.enabled$.pipe(tuiIfMap(() => this.obscured$));\n\n @Input()\n public set tuiObscuredEnabled(enabled: boolean) {\n this.enabled$.next(enabled);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;AAMA;;;AAGG;AAEG,MAAO,kBAAmB,SAAQ,UAAqC,CAAA;AAUzE,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,CAAC,CAAC,UAAU,KAAK,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAV9C,IAAE,CAAA,EAAA,GAAG,gBAAgB,EAAE;AACvB,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC,IAAI,CACxD,YAAY,CAAC,GAAG,EAAE,oBAAoB,EAAE,CAAC,EACzC,GAAG,CAAC,MAAM,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EACzC,SAAS,CAAC,IAAI,CAAC,EACf,oBAAoB,EAAE,EACtB,gBAAgB,EAAE,CACrB;;+GARQ,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAAlB,kBAAkB,EAAA,CAAA,CAAA;;4FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAD9B;;;ACHD;;AAEG;MAMU,WAAW,CAAA;AALxB,IAAA,WAAA,GAAA;QAMqB,IAAU,CAAA,UAAA,GAAG,MAAM,CAAC,aAAa,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC;AACpD,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,eAAe,CAAC,KAAK,CAAC;AACrC,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,kBAAkB,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC,IAAI;;AAEtE,QAAA,GAAG,CACC,CAAC,EAAE,KACC,CAAC,CAAC,EAAE,EAAE,KAAK,CACP,CAAC,EAAE,KAAK,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAE,CAAC,CACtE,CACR,CACJ;AAGe,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,CAAC;AAMnF;IAJG,IACW,kBAAkB,CAAC,OAAgB,EAAA;AAC1C,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;;+GAlBtB,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAX,WAAW,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,SAAA,EAFT,CAAC,kBAAkB,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAEtB,WAAW,EAAA,UAAA,EAAA,CAAA;kBALvB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,eAAe;oBACzB,SAAS,EAAE,CAAC,kBAAkB,CAAC;AAClC,iBAAA;8BAemB,WAAW,EAAA,CAAA;sBAD1B;gBAIU,kBAAkB,EAAA,CAAA;sBAD5B;;;AC/BL;;AAEG;;;;"}
1
+ {"version":3,"file":"taiga-ui-cdk-directives-obscured.mjs","sources":["../../../projects/cdk/directives/obscured/obscured.service.ts","../../../projects/cdk/directives/obscured/obscured.directive.ts","../../../projects/cdk/directives/obscured/taiga-ui-cdk-directives-obscured.ts"],"sourcesContent":["import {inject, Injectable} from '@angular/core';\nimport {WA_ANIMATION_FRAME} from '@ng-web-apis/common';\nimport {tuiZonefreeScheduler, tuiZoneOptimized} from '@taiga-ui/cdk/observables';\nimport {tuiGetElementObscures, tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {distinctUntilChanged, map, Observable, startWith, throttleTime} from 'rxjs';\n\n/**\n * Service that monitors element visibility by polling and returning\n * either null or an array of elements that overlap given element edges\n */\n@Injectable()\nexport class TuiObscuredService extends Observable<readonly Element[] | null> {\n private readonly el = tuiInjectElement();\n private readonly obscured$ = inject(WA_ANIMATION_FRAME).pipe(\n throttleTime(100, tuiZonefreeScheduler()),\n map(() => tuiGetElementObscures(this.el)),\n startWith(null),\n distinctUntilChanged(),\n tuiZoneOptimized(),\n );\n\n constructor() {\n super((subscriber) => this.obscured$.subscribe(subscriber));\n }\n}\n","import {Directive, inject, Input, Output} from '@angular/core';\nimport {TuiActiveZone} from '@taiga-ui/cdk/directives/active-zone';\nimport {tuiIfMap} from '@taiga-ui/cdk/observables';\nimport {BehaviorSubject, map} from 'rxjs';\n\nimport {TuiObscuredService} from './obscured.service';\n\n/**\n * Directive that monitors element visibility\n */\n@Directive({\n standalone: true,\n selector: '[tuiObscured]',\n providers: [TuiObscuredService],\n})\nexport class TuiObscured {\n private readonly activeZone = inject(TuiActiveZone, {optional: true});\n private readonly enabled$ = new BehaviorSubject(false);\n private readonly obscured$ = inject(TuiObscuredService, {self: true}).pipe(\n map((by) => !!by?.every((el) => check(el) || !this.activeZone?.contains(el))),\n );\n\n @Output()\n public readonly tuiObscured = this.enabled$.pipe(tuiIfMap(() => this.obscured$));\n\n @Input()\n public set tuiObscuredEnabled(enabled: boolean) {\n this.enabled$.next(enabled);\n }\n}\n\n// TODO: Refactor so that dropdowns and dialogs work properly without hacks\nfunction check(el: Element): boolean {\n return (\n !!el.closest('tui-dialogs') &&\n // eslint-disable-next-line unicorn/prefer-query-selector\n !!el.ownerDocument.documentElement.getElementsByTagName('tui-dropdown').length\n );\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;AAMA;;;AAGG;AAEG,MAAO,kBAAmB,SAAQ,UAAqC,CAAA;AAUzE,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,CAAC,CAAC,UAAU,KAAK,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAV9C,IAAE,CAAA,EAAA,GAAG,gBAAgB,EAAE;AACvB,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC,IAAI,CACxD,YAAY,CAAC,GAAG,EAAE,oBAAoB,EAAE,CAAC,EACzC,GAAG,CAAC,MAAM,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EACzC,SAAS,CAAC,IAAI,CAAC,EACf,oBAAoB,EAAE,EACtB,gBAAgB,EAAE,CACrB;;+GARQ,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAAlB,kBAAkB,EAAA,CAAA,CAAA;;4FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAD9B;;;ACHD;;AAEG;MAMU,WAAW,CAAA;AALxB,IAAA,WAAA,GAAA;QAMqB,IAAU,CAAA,UAAA,GAAG,MAAM,CAAC,aAAa,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC;AACpD,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,eAAe,CAAC,KAAK,CAAC;QACrC,IAAS,CAAA,SAAA,GAAG,MAAM,CAAC,kBAAkB,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC,IAAI,CACtE,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAChF;AAGe,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,CAAC;AAMnF;IAJG,IACW,kBAAkB,CAAC,OAAgB,EAAA;AAC1C,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;;+GAZtB,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAX,WAAW,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,SAAA,EAFT,CAAC,kBAAkB,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAEtB,WAAW,EAAA,UAAA,EAAA,CAAA;kBALvB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,eAAe;oBACzB,SAAS,EAAE,CAAC,kBAAkB,CAAC;AAClC,iBAAA;8BASmB,WAAW,EAAA,CAAA;sBAD1B;gBAIU,kBAAkB,EAAA,CAAA;sBAD5B;;AAML;AACA,SAAS,KAAK,CAAC,EAAW,EAAA;IACtB,QACI,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC;;AAE3B,QAAA,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,eAAe,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC,MAAM;AAEtF;;ACtCA;;AAEG;;;;"}
@@ -2,7 +2,7 @@ import { DOCUMENT, isPlatformBrowser } from '@angular/common';
2
2
  import { InjectionToken, inject, NgZone, PLATFORM_ID } from '@angular/core';
3
3
  import { WA_WINDOW, WA_USER_AGENT, WA_NAVIGATOR } from '@ng-web-apis/common';
4
4
  import { tuiTypedFromEvent, tuiZonefreeScheduler } from '@taiga-ui/cdk/observables';
5
- import { tuiIsNativeMouseFocusable, tuiGetDocumentOrShadowRoot, tuiGetActualTarget } from '@taiga-ui/cdk/utils';
5
+ import { tuiIsMouseFocusable, tuiGetDocumentOrShadowRoot, tuiGetActualTarget } from '@taiga-ui/cdk/utils';
6
6
  import { Subject, startWith, switchMap, timer, map, share, merge, filter, takeUntil, repeat, withLatestFrom, of, take, distinctUntilChanged, fromEvent, shareReplay } from 'rxjs';
7
7
  import { ɵAnimationEngine as _AnimationEngine } from '@angular/animations/browser';
8
8
  import { toSignal } from '@angular/core/rxjs-interop';
@@ -36,7 +36,7 @@ function isValidFocusout(target, removedElement = null) {
36
36
  // Not due to element being removed from DOM
37
37
  !removedElement?.contains(target) &&
38
38
  // Not due to scrollable element became non-scrollable
39
- tuiIsNativeMouseFocusable(target));
39
+ tuiIsMouseFocusable(target));
40
40
  }
41
41
  function shadowRootActiveElement(root) {
42
42
  return merge(tuiTypedFromEvent(root, 'focusin').pipe(map(({ target }) => target)), tuiTypedFromEvent(root, 'focusout').pipe(filter(({ target, relatedTarget }) => !!relatedTarget && isValidFocusout(target)), map(({ relatedTarget }) => relatedTarget)));
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-cdk-tokens.mjs","sources":["../../../projects/cdk/tokens/removed-element.ts","../../../projects/cdk/tokens/active-element.ts","../../../projects/cdk/tokens/base-href.ts","../../../projects/cdk/tokens/environment.ts","../../../projects/cdk/tokens/fallback-value.ts","../../../projects/cdk/tokens/range.ts","../../../projects/cdk/tokens/window-size.ts","../../../projects/cdk/tokens/taiga-ui-cdk-tokens.ts"],"sourcesContent":["import {ɵAnimationEngine as AnimationEngine} from '@angular/animations/browser';\nimport {inject, InjectionToken} from '@angular/core';\nimport {map, share, startWith, Subject, switchMap, timer} from 'rxjs';\n\n/**\n * Element currently being removed by AnimationEngine\n */\nexport const TUI_REMOVED_ELEMENT = new InjectionToken(\n ngDevMode ? 'TUI_REMOVED_ELEMENT' : '',\n {\n factory: () => {\n const stub = {onRemovalComplete: () => {}};\n const element$ = new Subject<Element | null>();\n const engine = inject(AnimationEngine, {optional: true}) || stub;\n const {onRemovalComplete = stub.onRemovalComplete} = engine;\n\n engine.onRemovalComplete = (element, context) => {\n element$.next(element);\n onRemovalComplete.call(engine, element, context);\n };\n\n return element$.pipe(\n startWith(null),\n switchMap((element) =>\n timer(0).pipe(\n map(() => null),\n startWith(element),\n ),\n ),\n share(),\n );\n },\n },\n);\n","import {DOCUMENT} from '@angular/common';\nimport {inject, InjectionToken, NgZone} from '@angular/core';\nimport {WA_WINDOW} from '@ng-web-apis/common';\nimport {tuiTypedFromEvent, tuiZonefreeScheduler} from '@taiga-ui/cdk/observables';\nimport {\n tuiGetActualTarget,\n tuiGetDocumentOrShadowRoot,\n tuiIsNativeMouseFocusable,\n} from '@taiga-ui/cdk/utils';\nimport {\n distinctUntilChanged,\n filter,\n map,\n merge,\n type Observable,\n of,\n repeat,\n share,\n startWith,\n switchMap,\n take,\n takeUntil,\n timer,\n withLatestFrom,\n} from 'rxjs';\n\nimport {TUI_REMOVED_ELEMENT} from './removed-element';\n\n// Checks if focusout event should be considered leaving active zone\nfunction isValidFocusout(target: any, removedElement: Element | null = null): boolean {\n return (\n // Not due to switching tabs/going to DevTools\n tuiGetDocumentOrShadowRoot(target).activeElement !== target &&\n // Not due to button/input becoming disabled or under disabled fieldset\n !target.matches(':disabled') &&\n // Not due to element being removed from DOM\n !removedElement?.contains(target) &&\n // Not due to scrollable element became non-scrollable\n tuiIsNativeMouseFocusable(target)\n );\n}\n\nfunction shadowRootActiveElement(root: Document): Observable<EventTarget | null> {\n return merge(\n tuiTypedFromEvent(root, 'focusin').pipe(map(({target}) => target)),\n tuiTypedFromEvent(root, 'focusout').pipe(\n filter(\n ({target, relatedTarget}) => !!relatedTarget && isValidFocusout(target),\n ),\n map(({relatedTarget}) => relatedTarget),\n ),\n );\n}\n\n/**\n * Active element on the document for ActiveZone\n */\nexport const TUI_ACTIVE_ELEMENT = new InjectionToken<Observable<EventTarget | null>>(\n ngDevMode ? 'TUI_ACTIVE_ELEMENT' : '',\n {\n factory: () => {\n const removedElement$ = inject(TUI_REMOVED_ELEMENT);\n const win = inject(WA_WINDOW);\n const doc = inject(DOCUMENT);\n const zone = inject(NgZone);\n const focusout$ = tuiTypedFromEvent(win, 'focusout', {capture: true});\n const focusin$ = tuiTypedFromEvent(win, 'focusin', {capture: true});\n const blur$ = tuiTypedFromEvent(win, 'blur');\n const mousedown$ = tuiTypedFromEvent(win, 'mousedown');\n const mouseup$ = tuiTypedFromEvent(win, 'mouseup');\n\n return merge(\n focusout$.pipe(\n takeUntil(mousedown$),\n repeat({delay: () => mouseup$}),\n withLatestFrom(removedElement$),\n filter(([event, removedElement]) =>\n isValidFocusout(tuiGetActualTarget(event), removedElement),\n ),\n map(([{relatedTarget}]) => relatedTarget),\n ),\n blur$.pipe(\n map(() => doc.activeElement),\n filter((element) => !!element?.matches('iframe')),\n ),\n focusin$.pipe(\n switchMap((event) => {\n const target = tuiGetActualTarget(event);\n const root = tuiGetDocumentOrShadowRoot(target) || doc;\n\n return root === doc\n ? of(target)\n : shadowRootActiveElement(root as Document).pipe(\n startWith(target),\n );\n }),\n ),\n mousedown$.pipe(\n switchMap((event) => {\n const actualTargetInCurrentTime = tuiGetActualTarget(event);\n\n return !doc.activeElement || doc.activeElement === doc.body\n ? of(actualTargetInCurrentTime)\n : focusout$.pipe(\n take(1),\n map(\n /**\n * Do not use `map(() => tuiGetActualTarget(event))`\n * because we have different result in runtime\n */\n () => actualTargetInCurrentTime,\n ),\n takeUntil(timer(0, tuiZonefreeScheduler(zone))),\n );\n }),\n ),\n ).pipe(distinctUntilChanged(), share());\n },\n },\n);\n","import {DOCUMENT} from '@angular/common';\nimport {inject, InjectionToken} from '@angular/core';\n\nexport const TUI_BASE_HREF = new InjectionToken(ngDevMode ? 'TUI_BASE_HREF' : '', {\n factory: () => inject(DOCUMENT).querySelector('base')?.href ?? '',\n});\n","import {inject, InjectionToken} from '@angular/core';\nimport {toSignal} from '@angular/core/rxjs-interop';\nimport {WA_NAVIGATOR, WA_USER_AGENT, WA_WINDOW} from '@ng-web-apis/common';\nimport {isIos} from '@ng-web-apis/platform';\nimport {TUI_FALSE_HANDLER} from '@taiga-ui/cdk/constants';\nimport {fromEvent, map} from 'rxjs';\n\n/**\n * Unified mobile detection regex.\n * https://stackoverflow.com/a/11381730/2706426 http://detectmobilebrowsers.com/\n */\nexport const TUI_MOBILE_REGEXP =\n /(?:android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series([46])0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino|^(?:1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br([ev])w|bumb|bw-([nu])|c55\\/|capi|ccwa|cdm-|cell|chtm|cldc|cmd-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc-s|devi|dica|dmob|do([cp])o|ds(12|-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly([-_])|g1 u|g560|gene|gf-5|g-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd-([mpt])|hei-|hi(pt|ta)|hp( i|ip)|hs-c|ht(c([- _agpst])|tp)|hu(aw|tc)|i-(20|go|ma)|i230|iac([ \\-/])|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja([tv])a|jbro|jemu|jigs|kddi|keji|kgt([ /])|klon|kpt |kwc-|kyo([ck])|le(no|xi)|lg( g|\\/([klu])|50|54|-[a-w])|libw|lynx|m1-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t([- ov])|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30([02])|n50([025])|n7(0([01])|10)|ne(([cm])-|on|tf|wf|wg|wt)|nok([6i])|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan([adt])|pdxg|pg(13|-([1-8]|c))|phil|pire|pl(ay|uc)|pn-2|po(ck|rt|se)|prox|psio|pt-g|qa-a|qc(07|12|21|32|60|-[2-7]|i-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h-|oo|p-)|sdk\\/|se(c([-01])|47|mc|nd|ri)|sgh-|shar|sie([-m])|sk-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h-|v-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl-|tdg-|tel([im])|tim-|t-mo|to(pl|sh)|ts(70|m-|m3|m5)|tx-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c([- ])|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas-|your|zeto|zte-)/i;\n\nexport const TUI_IS_MOBILE = new InjectionToken(ngDevMode ? 'TUI_IS_MOBILE' : '', {\n factory: () => TUI_MOBILE_REGEXP.test(inject(WA_USER_AGENT)),\n});\n\nexport const TUI_IS_IOS = new InjectionToken(ngDevMode ? 'TUI_IS_IOS' : '', {\n factory: () => isIos(inject(WA_NAVIGATOR)),\n});\n\nexport const TUI_IS_ANDROID = new InjectionToken(ngDevMode ? 'TUI_IS_ANDROID' : '', {\n factory: () => inject(TUI_IS_MOBILE) && !inject(TUI_IS_IOS),\n});\n\nexport const TUI_IS_WEBKIT = new InjectionToken(ngDevMode ? 'TUI_IS_WEBKIT' : '', {\n factory: () => !!inject<any>(WA_WINDOW)?.webkitConvertPointFromNodeToPage,\n});\n\nexport const TUI_PLATFORM = new InjectionToken<'android' | 'ios' | 'web'>(\n ngDevMode ? 'TUI_PLATFORM' : '',\n {\n factory: () => {\n if (inject(TUI_IS_IOS)) {\n return 'ios';\n }\n\n return inject(TUI_IS_ANDROID) ? 'android' : 'web';\n },\n },\n);\n\nexport const TUI_IS_TOUCH = new InjectionToken(ngDevMode ? 'TUI_IS_TOUCH' : '', {\n factory: () => {\n const media = inject(WA_WINDOW).matchMedia('(pointer: coarse)');\n\n return toSignal(fromEvent(media, 'change').pipe(map(() => media.matches)), {\n initialValue: media.matches,\n });\n },\n});\n\n/**\n * @deprecated: use only {@link TUI_IS_E2E}\n * Detect if app is running under Cypress\n * {@link https://docs.cypress.io/faq/questions/using-cypress-faq#Is-there-any-way-to-detect-if-my-app-is-running-under-Cypress Cypress docs}\n * TODO: remove in v5\n */\nexport const TUI_IS_CYPRESS = new InjectionToken(ngDevMode ? 'TUI_IS_CYPRESS' : '', {\n factory: () => !!inject<any>(WA_WINDOW).Cypress,\n});\n\n/**\n * @deprecated: use only {@link TUI_IS_E2E}\n * Manually provide `true` when running tests in Playwright\n * TODO: remove in v5\n */\nexport const TUI_IS_PLAYWRIGHT = new InjectionToken<boolean>(\n ngDevMode ? 'TUI_IS_PLAYWRIGHT' : '',\n {\n factory: TUI_FALSE_HANDLER,\n },\n);\n\n/**\n * Detect if app is running under any of test frameworks\n */\nexport const TUI_IS_E2E = new InjectionToken(ngDevMode ? 'TUI_IS_E2E' : '', {\n factory: () =>\n inject(TUI_IS_CYPRESS) ||\n inject(TUI_IS_PLAYWRIGHT) ||\n inject(WA_NAVIGATOR).webdriver,\n});\n","import {InjectionToken, type ValueProvider} from '@angular/core';\n\nexport const TUI_FALLBACK_VALUE = new InjectionToken<any>(\n ngDevMode ? 'TUI_FALLBACK_VALUE' : '',\n {\n factory: () => null,\n },\n);\n\nexport function tuiFallbackValueProvider<T>(useValue: T): ValueProvider {\n return {\n provide: TUI_FALLBACK_VALUE,\n useValue,\n };\n}\n","import {isPlatformBrowser} from '@angular/common';\nimport {inject, InjectionToken, PLATFORM_ID} from '@angular/core';\n\n/**\n * SSR safe default empty Range\n */\nexport const TUI_RANGE = new InjectionToken(ngDevMode ? 'TUI_RANGE' : '', {\n factory: () =>\n isPlatformBrowser(inject(PLATFORM_ID)) ? new Range() : ({} as unknown as Range),\n});\n","import {inject, InjectionToken} from '@angular/core';\nimport {WA_WINDOW} from '@ng-web-apis/common';\nimport {tuiTypedFromEvent} from '@taiga-ui/cdk/observables';\nimport {map, type Observable, shareReplay, startWith} from 'rxjs';\n\nexport const TUI_WINDOW_SIZE = new InjectionToken<Observable<DOMRect>>(\n ngDevMode ? 'TUI_WINDOW_SIZE' : '',\n {\n factory: () => {\n const w = inject(WA_WINDOW);\n\n return tuiTypedFromEvent(w, 'resize').pipe(\n startWith(null),\n map(() => {\n const width = Math.max(\n w.document.documentElement.clientWidth || 0,\n w.innerWidth || 0,\n w.visualViewport?.width || 0,\n );\n const height = Math.max(\n w.document.documentElement.clientHeight || 0,\n w.innerHeight || 0,\n w.visualViewport?.height || 0,\n );\n const rect = {\n width,\n height,\n top: 0,\n left: 0,\n right: width,\n bottom: height,\n x: 0,\n y: 0,\n };\n\n return {\n ...rect,\n toJSON: () => JSON.stringify(rect),\n };\n }),\n shareReplay({bufferSize: 1, refCount: true}),\n );\n },\n },\n);\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["AnimationEngine"],"mappings":"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"}
1
+ {"version":3,"file":"taiga-ui-cdk-tokens.mjs","sources":["../../../projects/cdk/tokens/removed-element.ts","../../../projects/cdk/tokens/active-element.ts","../../../projects/cdk/tokens/base-href.ts","../../../projects/cdk/tokens/environment.ts","../../../projects/cdk/tokens/fallback-value.ts","../../../projects/cdk/tokens/range.ts","../../../projects/cdk/tokens/window-size.ts","../../../projects/cdk/tokens/taiga-ui-cdk-tokens.ts"],"sourcesContent":["import {ɵAnimationEngine as AnimationEngine} from '@angular/animations/browser';\nimport {inject, InjectionToken} from '@angular/core';\nimport {map, share, startWith, Subject, switchMap, timer} from 'rxjs';\n\n/**\n * Element currently being removed by AnimationEngine\n */\nexport const TUI_REMOVED_ELEMENT = new InjectionToken(\n ngDevMode ? 'TUI_REMOVED_ELEMENT' : '',\n {\n factory: () => {\n const stub = {onRemovalComplete: () => {}};\n const element$ = new Subject<Element | null>();\n const engine = inject(AnimationEngine, {optional: true}) || stub;\n const {onRemovalComplete = stub.onRemovalComplete} = engine;\n\n engine.onRemovalComplete = (element, context) => {\n element$.next(element);\n onRemovalComplete.call(engine, element, context);\n };\n\n return element$.pipe(\n startWith(null),\n switchMap((element) =>\n timer(0).pipe(\n map(() => null),\n startWith(element),\n ),\n ),\n share(),\n );\n },\n },\n);\n","import {DOCUMENT} from '@angular/common';\nimport {inject, InjectionToken, NgZone} from '@angular/core';\nimport {WA_WINDOW} from '@ng-web-apis/common';\nimport {tuiTypedFromEvent, tuiZonefreeScheduler} from '@taiga-ui/cdk/observables';\nimport {\n tuiGetActualTarget,\n tuiGetDocumentOrShadowRoot,\n tuiIsMouseFocusable,\n} from '@taiga-ui/cdk/utils';\nimport {\n distinctUntilChanged,\n filter,\n map,\n merge,\n type Observable,\n of,\n repeat,\n share,\n startWith,\n switchMap,\n take,\n takeUntil,\n timer,\n withLatestFrom,\n} from 'rxjs';\n\nimport {TUI_REMOVED_ELEMENT} from './removed-element';\n\n// Checks if focusout event should be considered leaving active zone\nfunction isValidFocusout(target: any, removedElement: Element | null = null): boolean {\n return (\n // Not due to switching tabs/going to DevTools\n tuiGetDocumentOrShadowRoot(target).activeElement !== target &&\n // Not due to button/input becoming disabled or under disabled fieldset\n !target.matches(':disabled') &&\n // Not due to element being removed from DOM\n !removedElement?.contains(target) &&\n // Not due to scrollable element became non-scrollable\n tuiIsMouseFocusable(target)\n );\n}\n\nfunction shadowRootActiveElement(root: Document): Observable<EventTarget | null> {\n return merge(\n tuiTypedFromEvent(root, 'focusin').pipe(map(({target}) => target)),\n tuiTypedFromEvent(root, 'focusout').pipe(\n filter(\n ({target, relatedTarget}) => !!relatedTarget && isValidFocusout(target),\n ),\n map(({relatedTarget}) => relatedTarget),\n ),\n );\n}\n\n/**\n * Active element on the document for ActiveZone\n */\nexport const TUI_ACTIVE_ELEMENT = new InjectionToken<Observable<EventTarget | null>>(\n ngDevMode ? 'TUI_ACTIVE_ELEMENT' : '',\n {\n factory: () => {\n const removedElement$ = inject(TUI_REMOVED_ELEMENT);\n const win = inject(WA_WINDOW);\n const doc = inject(DOCUMENT);\n const zone = inject(NgZone);\n const focusout$ = tuiTypedFromEvent(win, 'focusout', {capture: true});\n const focusin$ = tuiTypedFromEvent(win, 'focusin', {capture: true});\n const blur$ = tuiTypedFromEvent(win, 'blur');\n const mousedown$ = tuiTypedFromEvent(win, 'mousedown');\n const mouseup$ = tuiTypedFromEvent(win, 'mouseup');\n\n return merge(\n focusout$.pipe(\n takeUntil(mousedown$),\n repeat({delay: () => mouseup$}),\n withLatestFrom(removedElement$),\n filter(([event, removedElement]) =>\n isValidFocusout(tuiGetActualTarget(event), removedElement),\n ),\n map(([{relatedTarget}]) => relatedTarget),\n ),\n blur$.pipe(\n map(() => doc.activeElement),\n filter((element) => !!element?.matches('iframe')),\n ),\n focusin$.pipe(\n switchMap((event) => {\n const target = tuiGetActualTarget(event);\n const root = tuiGetDocumentOrShadowRoot(target) || doc;\n\n return root === doc\n ? of(target)\n : shadowRootActiveElement(root as Document).pipe(\n startWith(target),\n );\n }),\n ),\n mousedown$.pipe(\n switchMap((event) => {\n const actualTargetInCurrentTime = tuiGetActualTarget(event);\n\n return !doc.activeElement || doc.activeElement === doc.body\n ? of(actualTargetInCurrentTime)\n : focusout$.pipe(\n take(1),\n map(\n /**\n * Do not use `map(() => tuiGetActualTarget(event))`\n * because we have different result in runtime\n */\n () => actualTargetInCurrentTime,\n ),\n takeUntil(timer(0, tuiZonefreeScheduler(zone))),\n );\n }),\n ),\n ).pipe(distinctUntilChanged(), share());\n },\n },\n);\n","import {DOCUMENT} from '@angular/common';\nimport {inject, InjectionToken} from '@angular/core';\n\nexport const TUI_BASE_HREF = new InjectionToken(ngDevMode ? 'TUI_BASE_HREF' : '', {\n factory: () => inject(DOCUMENT).querySelector('base')?.href ?? '',\n});\n","import {inject, InjectionToken} from '@angular/core';\nimport {toSignal} from '@angular/core/rxjs-interop';\nimport {WA_NAVIGATOR, WA_USER_AGENT, WA_WINDOW} from '@ng-web-apis/common';\nimport {isIos} from '@ng-web-apis/platform';\nimport {TUI_FALSE_HANDLER} from '@taiga-ui/cdk/constants';\nimport {fromEvent, map} from 'rxjs';\n\n/**\n * Unified mobile detection regex.\n * https://stackoverflow.com/a/11381730/2706426 http://detectmobilebrowsers.com/\n */\nexport const TUI_MOBILE_REGEXP =\n /(?:android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series([46])0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino|^(?:1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br([ev])w|bumb|bw-([nu])|c55\\/|capi|ccwa|cdm-|cell|chtm|cldc|cmd-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc-s|devi|dica|dmob|do([cp])o|ds(12|-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly([-_])|g1 u|g560|gene|gf-5|g-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd-([mpt])|hei-|hi(pt|ta)|hp( i|ip)|hs-c|ht(c([- _agpst])|tp)|hu(aw|tc)|i-(20|go|ma)|i230|iac([ \\-/])|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja([tv])a|jbro|jemu|jigs|kddi|keji|kgt([ /])|klon|kpt |kwc-|kyo([ck])|le(no|xi)|lg( g|\\/([klu])|50|54|-[a-w])|libw|lynx|m1-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t([- ov])|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30([02])|n50([025])|n7(0([01])|10)|ne(([cm])-|on|tf|wf|wg|wt)|nok([6i])|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan([adt])|pdxg|pg(13|-([1-8]|c))|phil|pire|pl(ay|uc)|pn-2|po(ck|rt|se)|prox|psio|pt-g|qa-a|qc(07|12|21|32|60|-[2-7]|i-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h-|oo|p-)|sdk\\/|se(c([-01])|47|mc|nd|ri)|sgh-|shar|sie([-m])|sk-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h-|v-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl-|tdg-|tel([im])|tim-|t-mo|to(pl|sh)|ts(70|m-|m3|m5)|tx-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c([- ])|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas-|your|zeto|zte-)/i;\n\nexport const TUI_IS_MOBILE = new InjectionToken(ngDevMode ? 'TUI_IS_MOBILE' : '', {\n factory: () => TUI_MOBILE_REGEXP.test(inject(WA_USER_AGENT)),\n});\n\nexport const TUI_IS_IOS = new InjectionToken(ngDevMode ? 'TUI_IS_IOS' : '', {\n factory: () => isIos(inject(WA_NAVIGATOR)),\n});\n\nexport const TUI_IS_ANDROID = new InjectionToken(ngDevMode ? 'TUI_IS_ANDROID' : '', {\n factory: () => inject(TUI_IS_MOBILE) && !inject(TUI_IS_IOS),\n});\n\nexport const TUI_IS_WEBKIT = new InjectionToken(ngDevMode ? 'TUI_IS_WEBKIT' : '', {\n factory: () => !!inject<any>(WA_WINDOW)?.webkitConvertPointFromNodeToPage,\n});\n\nexport const TUI_PLATFORM = new InjectionToken<'android' | 'ios' | 'web'>(\n ngDevMode ? 'TUI_PLATFORM' : '',\n {\n factory: () => {\n if (inject(TUI_IS_IOS)) {\n return 'ios';\n }\n\n return inject(TUI_IS_ANDROID) ? 'android' : 'web';\n },\n },\n);\n\nexport const TUI_IS_TOUCH = new InjectionToken(ngDevMode ? 'TUI_IS_TOUCH' : '', {\n factory: () => {\n const media = inject(WA_WINDOW).matchMedia('(pointer: coarse)');\n\n return toSignal(fromEvent(media, 'change').pipe(map(() => media.matches)), {\n initialValue: media.matches,\n });\n },\n});\n\n/**\n * @deprecated: use only {@link TUI_IS_E2E}\n * Detect if app is running under Cypress\n * {@link https://docs.cypress.io/faq/questions/using-cypress-faq#Is-there-any-way-to-detect-if-my-app-is-running-under-Cypress Cypress docs}\n * TODO: remove in v5\n */\nexport const TUI_IS_CYPRESS = new InjectionToken(ngDevMode ? 'TUI_IS_CYPRESS' : '', {\n factory: () => !!inject<any>(WA_WINDOW).Cypress,\n});\n\n/**\n * @deprecated: use only {@link TUI_IS_E2E}\n * Manually provide `true` when running tests in Playwright\n * TODO: remove in v5\n */\nexport const TUI_IS_PLAYWRIGHT = new InjectionToken<boolean>(\n ngDevMode ? 'TUI_IS_PLAYWRIGHT' : '',\n {\n factory: TUI_FALSE_HANDLER,\n },\n);\n\n/**\n * Detect if app is running under any of test frameworks\n */\nexport const TUI_IS_E2E = new InjectionToken(ngDevMode ? 'TUI_IS_E2E' : '', {\n factory: () =>\n inject(TUI_IS_CYPRESS) ||\n inject(TUI_IS_PLAYWRIGHT) ||\n inject(WA_NAVIGATOR).webdriver,\n});\n","import {InjectionToken, type ValueProvider} from '@angular/core';\n\nexport const TUI_FALLBACK_VALUE = new InjectionToken<any>(\n ngDevMode ? 'TUI_FALLBACK_VALUE' : '',\n {\n factory: () => null,\n },\n);\n\nexport function tuiFallbackValueProvider<T>(useValue: T): ValueProvider {\n return {\n provide: TUI_FALLBACK_VALUE,\n useValue,\n };\n}\n","import {isPlatformBrowser} from '@angular/common';\nimport {inject, InjectionToken, PLATFORM_ID} from '@angular/core';\n\n/**\n * SSR safe default empty Range\n */\nexport const TUI_RANGE = new InjectionToken(ngDevMode ? 'TUI_RANGE' : '', {\n factory: () =>\n isPlatformBrowser(inject(PLATFORM_ID)) ? new Range() : ({} as unknown as Range),\n});\n","import {inject, InjectionToken} from '@angular/core';\nimport {WA_WINDOW} from '@ng-web-apis/common';\nimport {tuiTypedFromEvent} from '@taiga-ui/cdk/observables';\nimport {map, type Observable, shareReplay, startWith} from 'rxjs';\n\nexport const TUI_WINDOW_SIZE = new InjectionToken<Observable<DOMRect>>(\n ngDevMode ? 'TUI_WINDOW_SIZE' : '',\n {\n factory: () => {\n const w = inject(WA_WINDOW);\n\n return tuiTypedFromEvent(w, 'resize').pipe(\n startWith(null),\n map(() => {\n const width = Math.max(\n w.document.documentElement.clientWidth || 0,\n w.innerWidth || 0,\n w.visualViewport?.width || 0,\n );\n const height = Math.max(\n w.document.documentElement.clientHeight || 0,\n w.innerHeight || 0,\n w.visualViewport?.height || 0,\n );\n const rect = {\n width,\n height,\n top: 0,\n left: 0,\n right: width,\n bottom: height,\n x: 0,\n y: 0,\n };\n\n return {\n ...rect,\n toJSON: () => JSON.stringify(rect),\n };\n }),\n shareReplay({bufferSize: 1, refCount: true}),\n );\n },\n },\n);\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["AnimationEngine"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import { tuiClamp } from '@taiga-ui/cdk/utils/math';
2
1
  import { tuiIsPresent } from '@taiga-ui/cdk/utils/miscellaneous';
2
+ import { tuiClamp } from '@taiga-ui/cdk/utils/math';
3
3
  import { inject, ElementRef, PLATFORM_ID, isSignal, signal, untracked, DestroyRef, effect, INJECTOR } from '@angular/core';
4
4
  import { coerceElement } from '@angular/cdk/coercion';
5
5
  import { isPlatformBrowser } from '@angular/common';
@@ -73,33 +73,26 @@ function tuiGetDocumentOrShadowRoot(node) {
73
73
  * ```
74
74
  */
75
75
  function tuiGetElementObscures(element) {
76
- const { ownerDocument } = element;
77
- if (!ownerDocument?.defaultView || !element.getBoundingClientRect) {
76
+ if (!element.getBoundingClientRect) {
78
77
  return null;
79
78
  }
80
- const { innerWidth, innerHeight } = ownerDocument.defaultView;
81
- const doc = tuiGetDocumentOrShadowRoot(element);
82
- const rect = element.getBoundingClientRect();
83
- if (rect.width === 0 && rect.height === 0) {
79
+ const { left, right, top, bottom, width, height } = element.getBoundingClientRect();
80
+ if (width === 0 && height === 0) {
84
81
  return null;
85
82
  }
86
- const left = tuiClamp(Math.round(rect.left) + 2, 0, innerWidth);
87
- const top = tuiClamp(Math.round(rect.top) + 2, 0, innerHeight);
88
- const right = tuiClamp(Math.round(rect.right) - 2, 0, innerWidth);
89
- const bottom = tuiClamp(Math.round(rect.bottom) - 2, 0, innerHeight);
90
- const horizontalMiddle = tuiClamp(Math.round(rect.left + rect.width / 2), 0, innerWidth);
91
- const verticalMiddle = tuiClamp(Math.round(rect.top + rect.height / 2), 0, innerHeight);
83
+ const doc = tuiGetDocumentOrShadowRoot(element);
84
+ const horizontalMiddle = Math.round(left + width / 2);
85
+ const verticalMiddle = Math.round(top + height / 2);
92
86
  const elements = [
93
- doc.elementFromPoint(horizontalMiddle, top),
94
- doc.elementFromPoint(horizontalMiddle, bottom),
95
- doc.elementFromPoint(left, verticalMiddle),
96
- doc.elementFromPoint(right, verticalMiddle),
97
- ];
98
- const nonNull = elements.filter(tuiIsPresent);
99
- if (!nonNull.length) {
87
+ doc.elementFromPoint(horizontalMiddle, Math.round(top) + 2),
88
+ doc.elementFromPoint(horizontalMiddle, Math.round(bottom) - 2),
89
+ doc.elementFromPoint(Math.round(left) + 2, verticalMiddle),
90
+ doc.elementFromPoint(Math.round(right) - 2, verticalMiddle),
91
+ ].filter(tuiIsPresent);
92
+ if (!elements.length) {
100
93
  return [];
101
94
  }
102
- const filtered = nonNull.filter((el) => !element.contains(el) && !el.contains(element));
95
+ const filtered = elements.filter((el) => !element.contains(el) && !el.contains(element));
103
96
  return filtered.length === 4
104
97
  ? filtered
105
98
  : null;
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-cdk-utils-dom.mjs","sources":["../../../projects/cdk/utils/dom/contains-or-after.ts","../../../projects/cdk/utils/dom/element-checks.ts","../../../projects/cdk/utils/dom/event-checks.ts","../../../projects/cdk/utils/dom/get-actual-target.ts","../../../projects/cdk/utils/dom/get-clipboard-data-text.ts","../../../projects/cdk/utils/dom/get-document-or-shadow-root.ts","../../../projects/cdk/utils/dom/get-element-obscurers.ts","../../../projects/cdk/utils/dom/get-element-offset.ts","../../../projects/cdk/utils/dom/get-element-point.ts","../../../projects/cdk/utils/dom/get-selected-text.ts","../../../projects/cdk/utils/dom/inject-element.ts","../../../projects/cdk/utils/dom/is-current-target.ts","../../../projects/cdk/utils/dom/is-element-editable.ts","../../../projects/cdk/utils/dom/is-inside-iframe.ts","../../../projects/cdk/utils/dom/is-node-in.ts","../../../projects/cdk/utils/dom/point-to-client-rect.ts","../../../projects/cdk/utils/dom/retarget-boundary-crossing.ts","../../../projects/cdk/utils/dom/value.ts","../../../projects/cdk/utils/dom/value-binding.ts","../../../projects/cdk/utils/dom/taiga-ui-cdk-utils-dom.ts"],"sourcesContent":["export function tuiContainsOrAfter(current: Node, node: Node): boolean {\n try {\n return (\n current.contains(node) ||\n !!(node.compareDocumentPosition(current) & Node.DOCUMENT_POSITION_PRECEDING)\n );\n } catch {\n return false;\n }\n}\n","export function tuiIsInput(element: Element): element is HTMLInputElement {\n return element.matches('input');\n}\n\nexport function tuiIsTextarea(element: Element): element is HTMLTextAreaElement {\n return element.matches('textarea');\n}\n\nexport function tuiIsTextfield(\n element: Element,\n): element is HTMLInputElement | HTMLTextAreaElement {\n return tuiIsInput(element) || tuiIsTextarea(element);\n}\n\nexport function tuiIsElement(\n node?: Element | EventTarget | Node | null,\n): node is Element {\n return !!node && 'nodeType' in node && node.nodeType === Node.ELEMENT_NODE;\n}\n\nexport function tuiIsHTMLElement(node: unknown): node is HTMLElement {\n const defaultView = (node as Element | undefined)?.ownerDocument.defaultView;\n\n return !!node && !!defaultView && node instanceof defaultView.HTMLElement;\n}\n\nexport function tuiIsTextNode(node: Node): node is Text {\n return node.nodeType === Node.TEXT_NODE;\n}\n","export function tuiIsInputEvent(event: Event): event is InputEvent {\n return 'data' in event && 'inputType' in event;\n}\n","/**\n * Gets actual target from open Shadow DOM if event happened within it\n */\nexport function tuiGetActualTarget(event: Event): Node {\n return event.composedPath()[0] as Node;\n}\n","const DEFAULT_FORMAT = 'text/plain';\n\n/**\n * Gets text from data of clipboardEvent, it also works in IE and Edge browsers\n */\nexport function tuiGetClipboardDataText(\n event: ClipboardEvent,\n format: string = DEFAULT_FORMAT,\n): string {\n return 'clipboardData' in event && event.clipboardData !== null\n ? event.clipboardData.getData(format) ||\n event.clipboardData.getData(DEFAULT_FORMAT)\n : (event as any).target.ownerDocument.defaultView.clipboardData.getData('text');\n}\n","export function tuiGetDocumentOrShadowRoot(node: Node): DocumentOrShadowRoot {\n return 'getRootNode' in node && node.isConnected\n ? (node.getRootNode() as Document)\n : (node.ownerDocument as DocumentOrShadowRoot);\n}\n","import {tuiClamp} from '@taiga-ui/cdk/utils/math';\nimport {tuiIsPresent} from '@taiga-ui/cdk/utils/miscellaneous';\n\nimport {tuiGetDocumentOrShadowRoot} from './get-document-or-shadow-root';\n\n/**\n * Returns array of Elements covering edges of given element or null if at least one edge middle point is visible\n *\n * CAUTION: Empty array means element if offscreen i.e. covered by no elements, rather than not covered\n * ```ts\n * function tuiGetElementObscures(element: Element): readonly [Element, Element, Element, Element] | [] | null\n * ```\n */\nexport function tuiGetElementObscures(\n element: Element,\n): readonly [Element, Element, Element, Element] | [] | null {\n const {ownerDocument} = element;\n\n if (!ownerDocument?.defaultView || !element.getBoundingClientRect) {\n return null;\n }\n\n const {innerWidth, innerHeight} = ownerDocument.defaultView;\n const doc = tuiGetDocumentOrShadowRoot(element);\n const rect = element.getBoundingClientRect();\n\n if (rect.width === 0 && rect.height === 0) {\n return null;\n }\n\n const left = tuiClamp(Math.round(rect.left) + 2, 0, innerWidth);\n const top = tuiClamp(Math.round(rect.top) + 2, 0, innerHeight);\n const right = tuiClamp(Math.round(rect.right) - 2, 0, innerWidth);\n const bottom = tuiClamp(Math.round(rect.bottom) - 2, 0, innerHeight);\n const horizontalMiddle = tuiClamp(\n Math.round(rect.left + rect.width / 2),\n 0,\n innerWidth,\n );\n const verticalMiddle = tuiClamp(\n Math.round(rect.top + rect.height / 2),\n 0,\n innerHeight,\n );\n const elements = [\n doc.elementFromPoint(horizontalMiddle, top),\n doc.elementFromPoint(horizontalMiddle, bottom),\n doc.elementFromPoint(left, verticalMiddle),\n doc.elementFromPoint(right, verticalMiddle),\n ];\n const nonNull = elements.filter(tuiIsPresent);\n\n if (!nonNull.length) {\n return [];\n }\n\n const filtered = nonNull.filter(\n (el) => !element.contains(el) && !el.contains(element),\n );\n\n return filtered.length === 4\n ? (filtered as [Element, Element, Element, Element])\n : null;\n}\n","/// <reference types=\"@taiga-ui/tsconfig/ng-dev-mode\" />\n\nimport {tuiIsHTMLElement} from './element-checks';\n\n/**\n * Calculates offset for an element relative to it's parent several levels above\n *\n * @param host parent element\n * @param element\n * @return object with offsetTop and offsetLeft number properties\n */\nexport function tuiGetElementOffset(\n host: Element,\n element: HTMLElement,\n): {offsetLeft: number; offsetTop: number} {\n ngDevMode && console.assert(host.contains(element), 'Host must contain element');\n\n let {offsetTop, offsetLeft, offsetParent} = element;\n\n while (tuiIsHTMLElement(offsetParent) && offsetParent !== host) {\n offsetTop += offsetParent.offsetTop;\n offsetLeft += offsetParent.offsetLeft;\n offsetParent = offsetParent.offsetParent;\n }\n\n return {offsetTop, offsetLeft};\n}\n","import {tuiClamp} from '@taiga-ui/cdk/utils/math';\nimport {type TuiPoint} from '@taiga-ui/core/types';\n\nexport function tuiGetElementPoint(x: number, y: number, element: HTMLElement): TuiPoint {\n const {left, top, width, height} = element.getBoundingClientRect();\n\n return [tuiClamp(x - left, 0, width) / width, tuiClamp(y - top, 0, height) / height];\n}\n","import {tuiIsTextfield} from './element-checks';\n\n/**\n * @description:\n * cross browser way to get selected text\n *\n * History:\n * BUG - window.getSelection() fails when text selected in a form field\n * https://bugzilla.mozilla.org/show_bug.cgi?id=85686\n */\nexport function tuiGetSelectedText({getSelection, document}: Window): string | null {\n return document.activeElement && tuiIsTextfield(document.activeElement)\n ? document.activeElement.value.slice(\n document.activeElement.selectionStart || 0,\n document.activeElement.selectionEnd || 0,\n )\n : getSelection()?.toString() || null;\n}\n","import {ElementRef, inject} from '@angular/core';\n\nexport function tuiInjectElement<T = HTMLElement>(): T {\n return inject(ElementRef).nativeElement;\n}\n","export function tuiIsCurrentTarget({target, currentTarget}: Event): boolean {\n return target === currentTarget;\n}\n","import {tuiIsTextfield} from './element-checks';\n\nexport function tuiIsElementEditable(element: HTMLElement): boolean {\n return (\n (tuiIsTextfield(element) && !element.readOnly && element.inputMode !== 'none') ||\n Boolean(element.isContentEditable as unknown as string)\n );\n}\n","/**\n * Checks if an app is running inside <iframe /> tag\n */\nexport function tuiIsInsideIframe(win: Window): boolean {\n return win.parent !== win;\n}\n","import {tuiIsElement, tuiIsTextNode} from './element-checks';\n\n/**\n * Checks if node is inside a specific selector\n *\n * @param node\n * @param selector\n * @return true if node is inside a particular selector\n */\nexport function tuiIsNodeIn(node: Node, selector: string): boolean {\n return tuiIsTextNode(node)\n ? !!node.parentElement?.closest(selector)\n : tuiIsElement(node) && !!node.closest(selector);\n}\n","export function tuiPointToClientRect(x = 0, y = 0): DOMRect {\n const rect = {\n x,\n y,\n left: x,\n right: x,\n top: y,\n bottom: y,\n width: 0,\n height: 0,\n } as const;\n\n return {\n ...rect,\n toJSON: () => rect,\n };\n}\n","export function tuiRetargetedBoundaryCrossing(event: Event): boolean {\n // firefox\n if ('explicitOriginalTarget' in event) {\n return event?.explicitOriginalTarget !== event.target;\n }\n\n // chrome\n if ('pointerId' in event) {\n return event.pointerId === -1;\n }\n\n // safari\n if ('detail' in event && 'webkitForce' in event) {\n return event?.detail === 0;\n }\n\n return false;\n}\n","import {coerceElement} from '@angular/cdk/coercion';\nimport {isPlatformBrowser} from '@angular/common';\nimport {\n DestroyRef,\n effect,\n type ElementRef,\n inject,\n INJECTOR,\n isSignal,\n PLATFORM_ID,\n type Signal,\n signal,\n untracked,\n type WritableSignal,\n} from '@angular/core';\nimport {WA_WINDOW} from '@ng-web-apis/common';\nimport {TUI_ALLOW_SIGNAL_WRITES} from '@taiga-ui/cdk/constants';\n\ntype WithValue = HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement;\n\nexport function tuiValue(\n input:\n | ElementRef<WithValue>\n | Signal<ElementRef<WithValue> | undefined>\n | Signal<WithValue | undefined>\n | WithValue,\n injector = inject(INJECTOR),\n): WritableSignal<string> {\n const win = injector.get<any>(WA_WINDOW);\n\n if (!win.tuiInputPatched && isPlatformBrowser(injector.get(PLATFORM_ID))) {\n win.tuiInputPatched = true;\n\n patch(win.HTMLInputElement.prototype);\n patch(win.HTMLTextAreaElement.prototype);\n patch(win.HTMLSelectElement.prototype);\n }\n\n let element = isSignal(input) ? undefined : coerceElement(input);\n let cleanup = (): void => {};\n\n const options = {injector, ...TUI_ALLOW_SIGNAL_WRITES};\n const value = signal(element?.value || '');\n const process = (el: WithValue): (() => void) => {\n const update = (): void => untracked(() => value.set(el.value));\n\n el.addEventListener('input', update, {capture: true});\n el.addEventListener('tui-input', update, {capture: true});\n\n return (): void => {\n el.removeEventListener('input', update, {capture: true});\n el.removeEventListener('tui-input', update, {capture: true});\n };\n };\n\n injector.get(DestroyRef).onDestroy(() => cleanup());\n\n if (isSignal(input)) {\n effect(() => {\n element = coerceElement(input());\n cleanup();\n\n if (element && !element.matches('select[multiple]')) {\n value.set(element.value);\n cleanup = process(element);\n }\n }, options);\n } else if (element && !element.matches('select[multiple]')) {\n cleanup = process(element);\n }\n\n effect(() => {\n const v = value();\n\n /**\n * select[multiple] elements have value of first selected option,\n * but there could be more, setting value resets other selected options\n */\n if (element?.matches('select[multiple]')) {\n return;\n }\n\n if (element?.matches(':focus') && 'selectionStart' in element) {\n const {selectionStart, selectionEnd} = element;\n\n /**\n * After programmatic updates of input's value, caret is automatically placed at the end –\n * revert to the previous position\n */\n element.value = v;\n element.setSelectionRange(selectionStart, selectionEnd);\n } else if (element) {\n element.value = v;\n }\n }, options);\n\n return value;\n}\n\nfunction patch(prototype: WithValue): void {\n const {set} = Object.getOwnPropertyDescriptor(prototype, 'value')!;\n\n Object.defineProperty(prototype, 'value', {\n set(this: WithValue, detail: string) {\n const value = this.value;\n const event = new CustomEvent('tui-input', {detail, bubbles: true});\n\n set!.call(this, detail);\n\n if (value !== detail) {\n this.dispatchEvent(event);\n }\n },\n });\n}\n","import {effect, type Signal, signal, type WritableSignal} from '@angular/core';\n\nimport {tuiInjectElement} from './inject-element';\n\nexport function tuiValueBinding(value?: WritableSignal<string>): WritableSignal<string>;\nexport function tuiValueBinding(value?: Signal<string>): Signal<string>;\n\n/**\n * Host binding `host: {'[value]': 'yourSignal()'}` is not an option for our textfields –\n * they use {@link TuiTextfieldDirective} as a host directive.\n * `TuiTextfieldDirective` has host binding which depends on native input's value.\n * Host bindings of the host directives are re-calculated BEFORE component's ones –\n * native input's value should be updated SYNCHRONOUSLY before next change detection iteration.\n * @deprecated\n */\nexport function tuiValueBinding(\n value: Signal<string> = signal(tuiInjectElement<HTMLInputElement>().value || ''),\n): Signal<string> {\n const el = tuiInjectElement<HTMLInputElement>();\n\n effect(() => {\n if (el.value === value()) {\n return;\n }\n\n const {selectionStart, selectionEnd} = el;\n\n el.value = value();\n\n if (el.matches(':focus')) {\n /**\n * After programmatic updates of input's value, caret is automatically placed at the end –\n * revert to the previous position\n */\n el.setSelectionRange(selectionStart, selectionEnd);\n }\n });\n\n return value;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"taiga-ui-cdk-utils-dom.mjs","sources":["../../../projects/cdk/utils/dom/contains-or-after.ts","../../../projects/cdk/utils/dom/element-checks.ts","../../../projects/cdk/utils/dom/event-checks.ts","../../../projects/cdk/utils/dom/get-actual-target.ts","../../../projects/cdk/utils/dom/get-clipboard-data-text.ts","../../../projects/cdk/utils/dom/get-document-or-shadow-root.ts","../../../projects/cdk/utils/dom/get-element-obscurers.ts","../../../projects/cdk/utils/dom/get-element-offset.ts","../../../projects/cdk/utils/dom/get-element-point.ts","../../../projects/cdk/utils/dom/get-selected-text.ts","../../../projects/cdk/utils/dom/inject-element.ts","../../../projects/cdk/utils/dom/is-current-target.ts","../../../projects/cdk/utils/dom/is-element-editable.ts","../../../projects/cdk/utils/dom/is-inside-iframe.ts","../../../projects/cdk/utils/dom/is-node-in.ts","../../../projects/cdk/utils/dom/point-to-client-rect.ts","../../../projects/cdk/utils/dom/retarget-boundary-crossing.ts","../../../projects/cdk/utils/dom/value.ts","../../../projects/cdk/utils/dom/value-binding.ts","../../../projects/cdk/utils/dom/taiga-ui-cdk-utils-dom.ts"],"sourcesContent":["export function tuiContainsOrAfter(current: Node, node: Node): boolean {\n try {\n return (\n current.contains(node) ||\n !!(node.compareDocumentPosition(current) & Node.DOCUMENT_POSITION_PRECEDING)\n );\n } catch {\n return false;\n }\n}\n","export function tuiIsInput(element: Element): element is HTMLInputElement {\n return element.matches('input');\n}\n\nexport function tuiIsTextarea(element: Element): element is HTMLTextAreaElement {\n return element.matches('textarea');\n}\n\nexport function tuiIsTextfield(\n element: Element,\n): element is HTMLInputElement | HTMLTextAreaElement {\n return tuiIsInput(element) || tuiIsTextarea(element);\n}\n\nexport function tuiIsElement(\n node?: Element | EventTarget | Node | null,\n): node is Element {\n return !!node && 'nodeType' in node && node.nodeType === Node.ELEMENT_NODE;\n}\n\nexport function tuiIsHTMLElement(node: unknown): node is HTMLElement {\n const defaultView = (node as Element | undefined)?.ownerDocument.defaultView;\n\n return !!node && !!defaultView && node instanceof defaultView.HTMLElement;\n}\n\nexport function tuiIsTextNode(node: Node): node is Text {\n return node.nodeType === Node.TEXT_NODE;\n}\n","export function tuiIsInputEvent(event: Event): event is InputEvent {\n return 'data' in event && 'inputType' in event;\n}\n","/**\n * Gets actual target from open Shadow DOM if event happened within it\n */\nexport function tuiGetActualTarget(event: Event): Node {\n return event.composedPath()[0] as Node;\n}\n","const DEFAULT_FORMAT = 'text/plain';\n\n/**\n * Gets text from data of clipboardEvent, it also works in IE and Edge browsers\n */\nexport function tuiGetClipboardDataText(\n event: ClipboardEvent,\n format: string = DEFAULT_FORMAT,\n): string {\n return 'clipboardData' in event && event.clipboardData !== null\n ? event.clipboardData.getData(format) ||\n event.clipboardData.getData(DEFAULT_FORMAT)\n : (event as any).target.ownerDocument.defaultView.clipboardData.getData('text');\n}\n","export function tuiGetDocumentOrShadowRoot(node: Node): DocumentOrShadowRoot {\n return 'getRootNode' in node && node.isConnected\n ? (node.getRootNode() as Document)\n : (node.ownerDocument as DocumentOrShadowRoot);\n}\n","import {tuiIsPresent} from '@taiga-ui/cdk/utils/miscellaneous';\n\nimport {tuiGetDocumentOrShadowRoot} from './get-document-or-shadow-root';\n\n/**\n * Returns array of Elements covering edges of given element or null if at least one edge middle point is visible\n *\n * CAUTION: Empty array means element if offscreen i.e. covered by no elements, rather than not covered\n * ```ts\n * function tuiGetElementObscures(element: Element): readonly [Element, Element, Element, Element] | [] | null\n * ```\n */\nexport function tuiGetElementObscures(element: Element): readonly Element[] | null {\n if (!element.getBoundingClientRect) {\n return null;\n }\n\n const {left, right, top, bottom, width, height} = element.getBoundingClientRect();\n\n if (width === 0 && height === 0) {\n return null;\n }\n\n const doc = tuiGetDocumentOrShadowRoot(element);\n const horizontalMiddle = Math.round(left + width / 2);\n const verticalMiddle = Math.round(top + height / 2);\n const elements = [\n doc.elementFromPoint(horizontalMiddle, Math.round(top) + 2),\n doc.elementFromPoint(horizontalMiddle, Math.round(bottom) - 2),\n doc.elementFromPoint(Math.round(left) + 2, verticalMiddle),\n doc.elementFromPoint(Math.round(right) - 2, verticalMiddle),\n ].filter(tuiIsPresent);\n\n if (!elements.length) {\n return [];\n }\n\n const filtered = elements.filter(\n (el) => !element.contains(el) && !el.contains(element),\n );\n\n return filtered.length === 4\n ? (filtered as [Element, Element, Element, Element])\n : null;\n}\n","/// <reference types=\"@taiga-ui/tsconfig/ng-dev-mode\" />\n\nimport {tuiIsHTMLElement} from './element-checks';\n\n/**\n * Calculates offset for an element relative to it's parent several levels above\n *\n * @param host parent element\n * @param element\n * @return object with offsetTop and offsetLeft number properties\n */\nexport function tuiGetElementOffset(\n host: Element,\n element: HTMLElement,\n): {offsetLeft: number; offsetTop: number} {\n ngDevMode && console.assert(host.contains(element), 'Host must contain element');\n\n let {offsetTop, offsetLeft, offsetParent} = element;\n\n while (tuiIsHTMLElement(offsetParent) && offsetParent !== host) {\n offsetTop += offsetParent.offsetTop;\n offsetLeft += offsetParent.offsetLeft;\n offsetParent = offsetParent.offsetParent;\n }\n\n return {offsetTop, offsetLeft};\n}\n","import {tuiClamp} from '@taiga-ui/cdk/utils/math';\nimport {type TuiPoint} from '@taiga-ui/core/types';\n\nexport function tuiGetElementPoint(x: number, y: number, element: HTMLElement): TuiPoint {\n const {left, top, width, height} = element.getBoundingClientRect();\n\n return [tuiClamp(x - left, 0, width) / width, tuiClamp(y - top, 0, height) / height];\n}\n","import {tuiIsTextfield} from './element-checks';\n\n/**\n * @description:\n * cross browser way to get selected text\n *\n * History:\n * BUG - window.getSelection() fails when text selected in a form field\n * https://bugzilla.mozilla.org/show_bug.cgi?id=85686\n */\nexport function tuiGetSelectedText({getSelection, document}: Window): string | null {\n return document.activeElement && tuiIsTextfield(document.activeElement)\n ? document.activeElement.value.slice(\n document.activeElement.selectionStart || 0,\n document.activeElement.selectionEnd || 0,\n )\n : getSelection()?.toString() || null;\n}\n","import {ElementRef, inject} from '@angular/core';\n\nexport function tuiInjectElement<T = HTMLElement>(): T {\n return inject(ElementRef).nativeElement;\n}\n","export function tuiIsCurrentTarget({target, currentTarget}: Event): boolean {\n return target === currentTarget;\n}\n","import {tuiIsTextfield} from './element-checks';\n\nexport function tuiIsElementEditable(element: HTMLElement): boolean {\n return (\n (tuiIsTextfield(element) && !element.readOnly && element.inputMode !== 'none') ||\n Boolean(element.isContentEditable as unknown as string)\n );\n}\n","/**\n * Checks if an app is running inside <iframe /> tag\n */\nexport function tuiIsInsideIframe(win: Window): boolean {\n return win.parent !== win;\n}\n","import {tuiIsElement, tuiIsTextNode} from './element-checks';\n\n/**\n * Checks if node is inside a specific selector\n *\n * @param node\n * @param selector\n * @return true if node is inside a particular selector\n */\nexport function tuiIsNodeIn(node: Node, selector: string): boolean {\n return tuiIsTextNode(node)\n ? !!node.parentElement?.closest(selector)\n : tuiIsElement(node) && !!node.closest(selector);\n}\n","export function tuiPointToClientRect(x = 0, y = 0): DOMRect {\n const rect = {\n x,\n y,\n left: x,\n right: x,\n top: y,\n bottom: y,\n width: 0,\n height: 0,\n } as const;\n\n return {\n ...rect,\n toJSON: () => rect,\n };\n}\n","export function tuiRetargetedBoundaryCrossing(event: Event): boolean {\n // firefox\n if ('explicitOriginalTarget' in event) {\n return event?.explicitOriginalTarget !== event.target;\n }\n\n // chrome\n if ('pointerId' in event) {\n return event.pointerId === -1;\n }\n\n // safari\n if ('detail' in event && 'webkitForce' in event) {\n return event?.detail === 0;\n }\n\n return false;\n}\n","import {coerceElement} from '@angular/cdk/coercion';\nimport {isPlatformBrowser} from '@angular/common';\nimport {\n DestroyRef,\n effect,\n type ElementRef,\n inject,\n INJECTOR,\n isSignal,\n PLATFORM_ID,\n type Signal,\n signal,\n untracked,\n type WritableSignal,\n} from '@angular/core';\nimport {WA_WINDOW} from '@ng-web-apis/common';\nimport {TUI_ALLOW_SIGNAL_WRITES} from '@taiga-ui/cdk/constants';\n\ntype WithValue = HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement;\n\nexport function tuiValue(\n input:\n | ElementRef<WithValue>\n | Signal<ElementRef<WithValue> | undefined>\n | Signal<WithValue | undefined>\n | WithValue,\n injector = inject(INJECTOR),\n): WritableSignal<string> {\n const win = injector.get<any>(WA_WINDOW);\n\n if (!win.tuiInputPatched && isPlatformBrowser(injector.get(PLATFORM_ID))) {\n win.tuiInputPatched = true;\n\n patch(win.HTMLInputElement.prototype);\n patch(win.HTMLTextAreaElement.prototype);\n patch(win.HTMLSelectElement.prototype);\n }\n\n let element = isSignal(input) ? undefined : coerceElement(input);\n let cleanup = (): void => {};\n\n const options = {injector, ...TUI_ALLOW_SIGNAL_WRITES};\n const value = signal(element?.value || '');\n const process = (el: WithValue): (() => void) => {\n const update = (): void => untracked(() => value.set(el.value));\n\n el.addEventListener('input', update, {capture: true});\n el.addEventListener('tui-input', update, {capture: true});\n\n return (): void => {\n el.removeEventListener('input', update, {capture: true});\n el.removeEventListener('tui-input', update, {capture: true});\n };\n };\n\n injector.get(DestroyRef).onDestroy(() => cleanup());\n\n if (isSignal(input)) {\n effect(() => {\n element = coerceElement(input());\n cleanup();\n\n if (element && !element.matches('select[multiple]')) {\n value.set(element.value);\n cleanup = process(element);\n }\n }, options);\n } else if (element && !element.matches('select[multiple]')) {\n cleanup = process(element);\n }\n\n effect(() => {\n const v = value();\n\n /**\n * select[multiple] elements have value of first selected option,\n * but there could be more, setting value resets other selected options\n */\n if (element?.matches('select[multiple]')) {\n return;\n }\n\n if (element?.matches(':focus') && 'selectionStart' in element) {\n const {selectionStart, selectionEnd} = element;\n\n /**\n * After programmatic updates of input's value, caret is automatically placed at the end –\n * revert to the previous position\n */\n element.value = v;\n element.setSelectionRange(selectionStart, selectionEnd);\n } else if (element) {\n element.value = v;\n }\n }, options);\n\n return value;\n}\n\nfunction patch(prototype: WithValue): void {\n const {set} = Object.getOwnPropertyDescriptor(prototype, 'value')!;\n\n Object.defineProperty(prototype, 'value', {\n set(this: WithValue, detail: string) {\n const value = this.value;\n const event = new CustomEvent('tui-input', {detail, bubbles: true});\n\n set!.call(this, detail);\n\n if (value !== detail) {\n this.dispatchEvent(event);\n }\n },\n });\n}\n","import {effect, type Signal, signal, type WritableSignal} from '@angular/core';\n\nimport {tuiInjectElement} from './inject-element';\n\nexport function tuiValueBinding(value?: WritableSignal<string>): WritableSignal<string>;\nexport function tuiValueBinding(value?: Signal<string>): Signal<string>;\n\n/**\n * Host binding `host: {'[value]': 'yourSignal()'}` is not an option for our textfields –\n * they use {@link TuiTextfieldDirective} as a host directive.\n * `TuiTextfieldDirective` has host binding which depends on native input's value.\n * Host bindings of the host directives are re-calculated BEFORE component's ones –\n * native input's value should be updated SYNCHRONOUSLY before next change detection iteration.\n * @deprecated\n */\nexport function tuiValueBinding(\n value: Signal<string> = signal(tuiInjectElement<HTMLInputElement>().value || ''),\n): Signal<string> {\n const el = tuiInjectElement<HTMLInputElement>();\n\n effect(() => {\n if (el.value === value()) {\n return;\n }\n\n const {selectionStart, selectionEnd} = el;\n\n el.value = value();\n\n if (el.matches(':focus')) {\n /**\n * After programmatic updates of input's value, caret is automatically placed at the end –\n * revert to the previous position\n */\n el.setSelectionRange(selectionStart, selectionEnd);\n }\n });\n\n return value;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -23,7 +23,7 @@ function tuiGetFocused({ activeElement }) {
23
23
  /**
24
24
  * Finds and blurs current active element, including shadow DOM
25
25
  */
26
- function tuiBlurNativeFocused(doc) {
26
+ function tuiBlurFocused(doc) {
27
27
  const activeElement = tuiGetFocused(doc);
28
28
  if (tuiIsHTMLElement(activeElement)) {
29
29
  activeElement.blur();
@@ -40,7 +40,7 @@ function tuiFocusedIn(node) {
40
40
  * be focused, for example element can have display: none applied to it or any other
41
41
  * circumstances could prevent actual focus.
42
42
  */
43
- function tuiIsNativeKeyboardFocusable(element) {
43
+ function tuiIsKeyboardFocusable(element) {
44
44
  if (element.hasAttribute('disabled') || element.getAttribute('tabIndex') === '-1') {
45
45
  return false;
46
46
  }
@@ -66,10 +66,9 @@ function tuiIsNativeKeyboardFocusable(element) {
66
66
  }
67
67
  }
68
68
 
69
- function tuiIsNativeMouseFocusable(element) {
69
+ function tuiIsMouseFocusable(element) {
70
70
  return (!element.hasAttribute('disabled') &&
71
- (element.getAttribute('tabIndex') === '-1' ||
72
- tuiIsNativeKeyboardFocusable(element)));
71
+ (element.getAttribute('tabIndex') === '-1' || tuiIsKeyboardFocusable(element)));
73
72
  }
74
73
 
75
74
  /**
@@ -80,7 +79,7 @@ function tuiGetClosestFocusable({ initial, root, previous = false, keyboard = tr
80
79
  if (!root.ownerDocument) {
81
80
  return null;
82
81
  }
83
- const check = keyboard ? tuiIsNativeKeyboardFocusable : tuiIsNativeMouseFocusable;
82
+ const check = keyboard ? tuiIsKeyboardFocusable : tuiIsMouseFocusable;
84
83
  const treeWalker = root.ownerDocument.createTreeWalker(root, NodeFilter.SHOW_ELEMENT, svgNodeFilter);
85
84
  treeWalker.currentNode = initial;
86
85
  do {
@@ -141,5 +140,5 @@ function tuiMoveFocus(currentIndex, elements, step) {
141
140
  * Generated bundle index. Do not edit.
142
141
  */
143
142
 
144
- export { tuiBlurNativeFocused, tuiFocusedIn, tuiGetClosestFocusable, tuiGetFocused, tuiIsFocused, tuiIsFocusedIn, tuiIsNativeKeyboardFocusable, tuiIsNativeMouseFocusable, tuiMoveFocus };
143
+ export { tuiBlurFocused, tuiFocusedIn, tuiGetClosestFocusable, tuiGetFocused, tuiIsFocused, tuiIsFocusedIn, tuiIsKeyboardFocusable, tuiIsMouseFocusable, tuiMoveFocus };
145
144
  //# sourceMappingURL=taiga-ui-cdk-utils-focus.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-cdk-utils-focus.mjs","sources":["../../../projects/cdk/utils/focus/get-native-focused.ts","../../../projects/cdk/utils/focus/blur-native-focused.ts","../../../projects/cdk/utils/focus/focused-in.ts","../../../projects/cdk/utils/focus/is-native-keyboard-focusable.ts","../../../projects/cdk/utils/focus/is-native-mouse-focusable.ts","../../../projects/cdk/utils/focus/get-closest-focusable.ts","../../../projects/cdk/utils/focus/is-native-focused.ts","../../../projects/cdk/utils/focus/is-native-focused-in.ts","../../../projects/cdk/utils/focus/move-focus.ts","../../../projects/cdk/utils/focus/taiga-ui-cdk-utils-focus.ts"],"sourcesContent":["/**\n * Returns current active element, including shadow dom\n *\n * @return element or null\n */\nexport function tuiGetFocused({activeElement}: Document): Element | null {\n if (!activeElement?.shadowRoot) {\n return activeElement;\n }\n\n let element = activeElement.shadowRoot.activeElement;\n\n while (element?.shadowRoot) {\n element = element.shadowRoot.activeElement;\n }\n\n return element;\n}\n","import {tuiIsHTMLElement} from '@taiga-ui/cdk/utils/dom';\n\nimport {tuiGetFocused} from './get-native-focused';\n\n/**\n * Finds and blurs current active element, including shadow DOM\n */\nexport function tuiBlurNativeFocused(doc: Document): void {\n const activeElement = tuiGetFocused(doc);\n\n if (tuiIsHTMLElement(activeElement)) {\n activeElement.blur();\n }\n}\n","import {type Signal} from '@angular/core';\nimport {toSignal} from '@angular/core/rxjs-interop';\nimport {TUI_FALSE_HANDLER, TUI_TRUE_HANDLER} from '@taiga-ui/cdk/constants';\nimport {tuiUntrackedScheduler} from '@taiga-ui/cdk/observables';\nimport {fromEvent, map, merge, observeOn} from 'rxjs';\n\nexport function tuiFocusedIn(node: Node): Signal<boolean> {\n return toSignal(\n merge(\n fromEvent(node, 'focus', {capture: true}).pipe(map(TUI_TRUE_HANDLER)),\n fromEvent(node, 'blur', {capture: true}).pipe(map(TUI_FALSE_HANDLER)),\n ).pipe(observeOn(tuiUntrackedScheduler)),\n {initialValue: false},\n );\n}\n","import {tuiIsHTMLElement} from '@taiga-ui/cdk/utils/dom';\n\n/**\n * Checks for signs that element can be focused with keyboard. tabIndex above 0 is ignored to\n * only target natural focus order. Not checking the possibility of an element to\n * be focused, for example element can have display: none applied to it or any other\n * circumstances could prevent actual focus.\n */\nexport function tuiIsNativeKeyboardFocusable(element: Element): boolean {\n if (element.hasAttribute('disabled') || element.getAttribute('tabIndex') === '-1') {\n return false;\n }\n\n if (\n (tuiIsHTMLElement(element) && element.isContentEditable) ||\n element.getAttribute('tabIndex') === '0'\n ) {\n return true;\n }\n\n switch (element.tagName) {\n case 'A':\n case 'LINK':\n return element.hasAttribute('href');\n case 'AUDIO':\n case 'VIDEO':\n return element.hasAttribute('controls');\n case 'BUTTON':\n case 'SELECT':\n case 'TEXTAREA':\n return true;\n case 'INPUT':\n return element.getAttribute('type') !== 'hidden';\n default:\n return false;\n }\n}\n","import {tuiIsNativeKeyboardFocusable} from './is-native-keyboard-focusable';\n\nexport function tuiIsNativeMouseFocusable(element: Element): boolean {\n return (\n !element.hasAttribute('disabled') &&\n (element.getAttribute('tabIndex') === '-1' ||\n tuiIsNativeKeyboardFocusable(element))\n );\n}\n","import {svgNodeFilter} from '@taiga-ui/cdk/constants';\nimport {tuiIsHTMLElement} from '@taiga-ui/cdk/utils/dom';\n\nimport {tuiIsNativeKeyboardFocusable} from './is-native-keyboard-focusable';\nimport {tuiIsNativeMouseFocusable} from './is-native-mouse-focusable';\n\nexport interface TuiGetClosestFocusableOptions {\n /**\n * @description:\n * current HTML element\n */\n initial: Element;\n\n /**\n * @description:\n * determine if only keyboard focus is of interest\n */\n keyboard?: boolean;\n\n /**\n * @description:\n * should it look backwards instead (find item that will be focused with Shift + Tab)\n */\n previous?: boolean;\n\n /**\n * @description:\n * top Node limiting the search area\n */\n root: Node;\n}\n\n/**\n * @description:\n * Finds the closest element that can be focused with a keyboard or mouse in theory\n */\nexport function tuiGetClosestFocusable({\n initial,\n root,\n previous = false,\n keyboard = true,\n}: TuiGetClosestFocusableOptions): HTMLElement | null {\n if (!root.ownerDocument) {\n return null;\n }\n\n const check = keyboard ? tuiIsNativeKeyboardFocusable : tuiIsNativeMouseFocusable;\n const treeWalker = root.ownerDocument.createTreeWalker(\n root,\n NodeFilter.SHOW_ELEMENT,\n svgNodeFilter,\n );\n\n treeWalker.currentNode = initial;\n\n do {\n if (tuiIsHTMLElement(treeWalker.currentNode)) {\n initial = treeWalker.currentNode;\n }\n\n if (tuiIsHTMLElement(initial) && check(initial)) {\n return initial;\n }\n } while (previous ? treeWalker.previousNode() : treeWalker.nextNode());\n\n return null;\n}\n","import {tuiGetFocused} from './get-native-focused';\n\n/**\n * Checks if element is focused.\n *\n * Could return true even after blur since element remains focused if you switch away from a browser tab.\n *\n * @param node or null (as a common return value of DOM nodes walking)\n * @return true if focused\n */\nexport function tuiIsFocused(node?: Node | null): boolean {\n return (\n !!node?.ownerDocument &&\n tuiGetFocused(node.ownerDocument) === node &&\n node.ownerDocument.hasFocus()\n );\n}\n","import {tuiGetFocused} from './get-native-focused';\n\n/**\n * Checks if focused element is within given element.\n *\n * @param node\n * @return true if focused node is contained within element\n */\nexport function tuiIsFocusedIn(node?: Node | null): boolean {\n const focused = node?.ownerDocument && tuiGetFocused(node.ownerDocument);\n\n return !!focused && node.contains(focused) && node.ownerDocument?.hasFocus();\n}\n","import {tuiIsFocused} from './is-native-focused';\n\n/**\n * Utility method for moving focus in a list of elements\n *\n * @param currentIndex currently focused index\n * @param elements array of focusable elements\n * @param step a step to move focus by, typically -1 or 1\n */\nexport function tuiMoveFocus(\n currentIndex: number,\n elements: readonly HTMLElement[],\n step: number,\n): void {\n currentIndex += step;\n\n while (currentIndex >= 0 && currentIndex < elements.length) {\n elements[currentIndex]?.focus();\n\n if (tuiIsFocused(elements[currentIndex])) {\n return;\n }\n\n currentIndex += step;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"taiga-ui-cdk-utils-focus.mjs","sources":["../../../projects/cdk/utils/focus/get-native-focused.ts","../../../projects/cdk/utils/focus/blur-native-focused.ts","../../../projects/cdk/utils/focus/focused-in.ts","../../../projects/cdk/utils/focus/is-native-keyboard-focusable.ts","../../../projects/cdk/utils/focus/is-native-mouse-focusable.ts","../../../projects/cdk/utils/focus/get-closest-focusable.ts","../../../projects/cdk/utils/focus/is-native-focused.ts","../../../projects/cdk/utils/focus/is-native-focused-in.ts","../../../projects/cdk/utils/focus/move-focus.ts","../../../projects/cdk/utils/focus/taiga-ui-cdk-utils-focus.ts"],"sourcesContent":["/**\n * Returns current active element, including shadow dom\n *\n * @return element or null\n */\nexport function tuiGetFocused({activeElement}: Document): Element | null {\n if (!activeElement?.shadowRoot) {\n return activeElement;\n }\n\n let element = activeElement.shadowRoot.activeElement;\n\n while (element?.shadowRoot) {\n element = element.shadowRoot.activeElement;\n }\n\n return element;\n}\n","import {tuiIsHTMLElement} from '@taiga-ui/cdk/utils/dom';\n\nimport {tuiGetFocused} from './get-native-focused';\n\n/**\n * Finds and blurs current active element, including shadow DOM\n */\nexport function tuiBlurFocused(doc: Document): void {\n const activeElement = tuiGetFocused(doc);\n\n if (tuiIsHTMLElement(activeElement)) {\n activeElement.blur();\n }\n}\n","import {type Signal} from '@angular/core';\nimport {toSignal} from '@angular/core/rxjs-interop';\nimport {TUI_FALSE_HANDLER, TUI_TRUE_HANDLER} from '@taiga-ui/cdk/constants';\nimport {tuiUntrackedScheduler} from '@taiga-ui/cdk/observables';\nimport {fromEvent, map, merge, observeOn} from 'rxjs';\n\nexport function tuiFocusedIn(node: Node): Signal<boolean> {\n return toSignal(\n merge(\n fromEvent(node, 'focus', {capture: true}).pipe(map(TUI_TRUE_HANDLER)),\n fromEvent(node, 'blur', {capture: true}).pipe(map(TUI_FALSE_HANDLER)),\n ).pipe(observeOn(tuiUntrackedScheduler)),\n {initialValue: false},\n );\n}\n","import {tuiIsHTMLElement} from '@taiga-ui/cdk/utils/dom';\n\n/**\n * Checks for signs that element can be focused with keyboard. tabIndex above 0 is ignored to\n * only target natural focus order. Not checking the possibility of an element to\n * be focused, for example element can have display: none applied to it or any other\n * circumstances could prevent actual focus.\n */\nexport function tuiIsKeyboardFocusable(element: Element): boolean {\n if (element.hasAttribute('disabled') || element.getAttribute('tabIndex') === '-1') {\n return false;\n }\n\n if (\n (tuiIsHTMLElement(element) && element.isContentEditable) ||\n element.getAttribute('tabIndex') === '0'\n ) {\n return true;\n }\n\n switch (element.tagName) {\n case 'A':\n case 'LINK':\n return element.hasAttribute('href');\n case 'AUDIO':\n case 'VIDEO':\n return element.hasAttribute('controls');\n case 'BUTTON':\n case 'SELECT':\n case 'TEXTAREA':\n return true;\n case 'INPUT':\n return element.getAttribute('type') !== 'hidden';\n default:\n return false;\n }\n}\n","import {tuiIsKeyboardFocusable} from './is-native-keyboard-focusable';\n\nexport function tuiIsMouseFocusable(element: Element): boolean {\n return (\n !element.hasAttribute('disabled') &&\n (element.getAttribute('tabIndex') === '-1' || tuiIsKeyboardFocusable(element))\n );\n}\n","import {svgNodeFilter} from '@taiga-ui/cdk/constants';\nimport {tuiIsHTMLElement} from '@taiga-ui/cdk/utils/dom';\n\nimport {tuiIsKeyboardFocusable} from './is-native-keyboard-focusable';\nimport {tuiIsMouseFocusable} from './is-native-mouse-focusable';\n\nexport interface TuiGetClosestFocusableOptions {\n /**\n * @description:\n * current HTML element\n */\n initial: Element;\n\n /**\n * @description:\n * determine if only keyboard focus is of interest\n */\n keyboard?: boolean;\n\n /**\n * @description:\n * should it look backwards instead (find item that will be focused with Shift + Tab)\n */\n previous?: boolean;\n\n /**\n * @description:\n * top Node limiting the search area\n */\n root: Node;\n}\n\n/**\n * @description:\n * Finds the closest element that can be focused with a keyboard or mouse in theory\n */\nexport function tuiGetClosestFocusable({\n initial,\n root,\n previous = false,\n keyboard = true,\n}: TuiGetClosestFocusableOptions): HTMLElement | null {\n if (!root.ownerDocument) {\n return null;\n }\n\n const check = keyboard ? tuiIsKeyboardFocusable : tuiIsMouseFocusable;\n const treeWalker = root.ownerDocument.createTreeWalker(\n root,\n NodeFilter.SHOW_ELEMENT,\n svgNodeFilter,\n );\n\n treeWalker.currentNode = initial;\n\n do {\n if (tuiIsHTMLElement(treeWalker.currentNode)) {\n initial = treeWalker.currentNode;\n }\n\n if (tuiIsHTMLElement(initial) && check(initial)) {\n return initial;\n }\n } while (previous ? treeWalker.previousNode() : treeWalker.nextNode());\n\n return null;\n}\n","import {tuiGetFocused} from './get-native-focused';\n\n/**\n * Checks if element is focused.\n *\n * Could return true even after blur since element remains focused if you switch away from a browser tab.\n *\n * @param node or null (as a common return value of DOM nodes walking)\n * @return true if focused\n */\nexport function tuiIsFocused(node?: Node | null): boolean {\n return (\n !!node?.ownerDocument &&\n tuiGetFocused(node.ownerDocument) === node &&\n node.ownerDocument.hasFocus()\n );\n}\n","import {tuiGetFocused} from './get-native-focused';\n\n/**\n * Checks if focused element is within given element.\n *\n * @param node\n * @return true if focused node is contained within element\n */\nexport function tuiIsFocusedIn(node?: Node | null): boolean {\n const focused = node?.ownerDocument && tuiGetFocused(node.ownerDocument);\n\n return !!focused && node.contains(focused) && node.ownerDocument?.hasFocus();\n}\n","import {tuiIsFocused} from './is-native-focused';\n\n/**\n * Utility method for moving focus in a list of elements\n *\n * @param currentIndex currently focused index\n * @param elements array of focusable elements\n * @param step a step to move focus by, typically -1 or 1\n */\nexport function tuiMoveFocus(\n currentIndex: number,\n elements: readonly HTMLElement[],\n step: number,\n): void {\n currentIndex += step;\n\n while (currentIndex >= 0 && currentIndex < elements.length) {\n elements[currentIndex]?.focus();\n\n if (tuiIsFocused(elements[currentIndex])) {\n return;\n }\n\n currentIndex += step;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@taiga-ui/cdk",
3
- "version": "4.52.0-canary.1ea42f6",
3
+ "version": "4.52.0-canary.24b31eb",
4
4
  "description": "Base library for creating Angular components and applications using Taiga UI principles regarding of actual visual appearance",
5
5
  "keywords": [
6
6
  "angular",
@@ -219,14 +219,14 @@
219
219
  "types": "./utils/browser/index.d.ts",
220
220
  "default": "./fesm2022/taiga-ui-cdk-utils-browser.mjs"
221
221
  },
222
- "./utils/di": {
223
- "types": "./utils/di/index.d.ts",
224
- "default": "./fesm2022/taiga-ui-cdk-utils-di.mjs"
225
- },
226
222
  "./utils/color": {
227
223
  "types": "./utils/color/index.d.ts",
228
224
  "default": "./fesm2022/taiga-ui-cdk-utils-color.mjs"
229
225
  },
226
+ "./utils/di": {
227
+ "types": "./utils/di/index.d.ts",
228
+ "default": "./fesm2022/taiga-ui-cdk-utils-di.mjs"
229
+ },
230
230
  "./utils/dom": {
231
231
  "types": "./utils/dom/index.d.ts",
232
232
  "default": "./fesm2022/taiga-ui-cdk-utils-dom.mjs"
@@ -253,11 +253,11 @@
253
253
  "@angular/common": ">=19.0.0",
254
254
  "@angular/core": ">=19.0.0",
255
255
  "@angular/forms": ">=19.0.0",
256
- "@ng-web-apis/common": "^4.12.0",
257
- "@ng-web-apis/mutation-observer": "^4.12.0",
258
- "@ng-web-apis/platform": "^4.12.0",
259
- "@ng-web-apis/resize-observer": "^4.12.0",
260
- "@ng-web-apis/screen-orientation": "^4.12.0",
256
+ "@ng-web-apis/common": "^4.12.2",
257
+ "@ng-web-apis/mutation-observer": "^4.12.2",
258
+ "@ng-web-apis/platform": "^4.12.1",
259
+ "@ng-web-apis/resize-observer": "^4.12.2",
260
+ "@ng-web-apis/screen-orientation": "^4.12.1",
261
261
  "@taiga-ui/event-plugins": "^4.7.0",
262
262
  "@taiga-ui/polymorpheus": "^4.9.0",
263
263
  "rxjs": ">=7.0.0"
@@ -1 +1 @@
1
- export declare const TAIGA_VERSION = "^4.52.0-canary.1ea42f6";
1
+ export declare const TAIGA_VERSION = "^4.52.0-canary.24b31eb";
@@ -17,5 +17,20 @@ exports.REPLACE_FUNCTIONS = [
17
17
  to: 'tuiGetFocused',
18
18
  moduleSpecifier: ['@taiga-ui/cdk'],
19
19
  },
20
+ {
21
+ from: 'tuiIsNativeMouseFocusable',
22
+ to: 'tuiIsMouseFocusable',
23
+ moduleSpecifier: ['@taiga-ui/cdk'],
24
+ },
25
+ {
26
+ from: 'tuiIsNativeKeyboardFocusable',
27
+ to: 'tuiIsKeyboardFocusable',
28
+ moduleSpecifier: ['@taiga-ui/cdk'],
29
+ },
30
+ {
31
+ from: 'tuiBlurNativeFocused',
32
+ to: 'tuiBlurFocused',
33
+ moduleSpecifier: ['@taiga-ui/cdk'],
34
+ },
20
35
  ];
21
36
  //# sourceMappingURL=functions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"functions.js","sourceRoot":"","sources":["../../../../../../../projects/cdk/schematics/ng-update/v5/steps/constants/functions.ts"],"names":[],"mappings":";;;AAEa,QAAA,iBAAiB,GAA+B;IACzD;QACI,IAAI,EAAE,oBAAoB;QAC1B,EAAE,EAAE,cAAc;QAClB,eAAe,EAAE,CAAC,eAAe,CAAC;KACrC;IACD;QACI,IAAI,EAAE,sBAAsB;QAC5B,EAAE,EAAE,gBAAgB;QACpB,eAAe,EAAE,CAAC,eAAe,CAAC;KACrC;IACD;QACI,IAAI,EAAE,qBAAqB;QAC3B,EAAE,EAAE,eAAe;QACnB,eAAe,EAAE,CAAC,eAAe,CAAC;KACrC;CACJ,CAAC"}
1
+ {"version":3,"file":"functions.js","sourceRoot":"","sources":["../../../../../../../projects/cdk/schematics/ng-update/v5/steps/constants/functions.ts"],"names":[],"mappings":";;;AAEa,QAAA,iBAAiB,GAA+B;IACzD;QACI,IAAI,EAAE,oBAAoB;QAC1B,EAAE,EAAE,cAAc;QAClB,eAAe,EAAE,CAAC,eAAe,CAAC;KACrC;IACD;QACI,IAAI,EAAE,sBAAsB;QAC5B,EAAE,EAAE,gBAAgB;QACpB,eAAe,EAAE,CAAC,eAAe,CAAC;KACrC;IACD;QACI,IAAI,EAAE,qBAAqB;QAC3B,EAAE,EAAE,eAAe;QACnB,eAAe,EAAE,CAAC,eAAe,CAAC;KACrC;IACD;QACI,IAAI,EAAE,2BAA2B;QACjC,EAAE,EAAE,qBAAqB;QACzB,eAAe,EAAE,CAAC,eAAe,CAAC;KACrC;IACD;QACI,IAAI,EAAE,8BAA8B;QACpC,EAAE,EAAE,wBAAwB;QAC5B,eAAe,EAAE,CAAC,eAAe,CAAC;KACrC;IACD;QACI,IAAI,EAAE,sBAAsB;QAC5B,EAAE,EAAE,gBAAgB;QACpB,eAAe,EAAE,CAAC,eAAe,CAAC;KACrC;CACJ,CAAC"}
@@ -6,4 +6,4 @@
6
6
  * function tuiGetElementObscures(element: Element): readonly [Element, Element, Element, Element] | [] | null
7
7
  * ```
8
8
  */
9
- export declare function tuiGetElementObscures(element: Element): readonly [Element, Element, Element, Element] | [] | null;
9
+ export declare function tuiGetElementObscures(element: Element): readonly Element[] | null;
@@ -1,4 +1,4 @@
1
1
  /**
2
2
  * Finds and blurs current active element, including shadow DOM
3
3
  */
4
- export declare function tuiBlurNativeFocused(doc: Document): void;
4
+ export declare function tuiBlurFocused(doc: Document): void;
@@ -4,4 +4,4 @@
4
4
  * be focused, for example element can have display: none applied to it or any other
5
5
  * circumstances could prevent actual focus.
6
6
  */
7
- export declare function tuiIsNativeKeyboardFocusable(element: Element): boolean;
7
+ export declare function tuiIsKeyboardFocusable(element: Element): boolean;
@@ -1 +1 @@
1
- export declare function tuiIsNativeMouseFocusable(element: Element): boolean;
1
+ export declare function tuiIsMouseFocusable(element: Element): boolean;