@taiga-ui/cdk 5.4.0 → 5.5.0-canary.d684136
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/constants/version.d.ts +1 -1
- package/constants/version.js +1 -1
- package/constants/version.js.map +1 -1
- package/fesm2022/taiga-ui-cdk-classes.mjs +7 -4
- package/fesm2022/taiga-ui-cdk-classes.mjs.map +1 -1
- package/fesm2022/taiga-ui-cdk-constants.mjs +1 -1
- package/fesm2022/taiga-ui-cdk-constants.mjs.map +1 -1
- package/fesm2022/taiga-ui-cdk-date-time.mjs.map +1 -1
- package/fesm2022/taiga-ui-cdk-directives-active-zone.mjs.map +1 -1
- package/fesm2022/taiga-ui-cdk-directives-animated.mjs +2 -2
- package/fesm2022/taiga-ui-cdk-directives-animated.mjs.map +1 -1
- package/fesm2022/taiga-ui-cdk-directives-auto-focus.mjs.map +1 -1
- package/fesm2022/taiga-ui-cdk-directives-copy-processor.mjs.map +1 -1
- package/fesm2022/taiga-ui-cdk-directives-focus-trap.mjs +2 -2
- package/fesm2022/taiga-ui-cdk-directives-focus-trap.mjs.map +1 -1
- package/fesm2022/taiga-ui-cdk-directives-font-size.mjs.map +1 -1
- package/fesm2022/taiga-ui-cdk-directives-media.mjs +4 -4
- package/fesm2022/taiga-ui-cdk-directives-media.mjs.map +1 -1
- package/fesm2022/taiga-ui-cdk-directives-obscured.mjs.map +1 -1
- package/fesm2022/taiga-ui-cdk-directives-resizer.mjs +2 -2
- package/fesm2022/taiga-ui-cdk-directives-resizer.mjs.map +1 -1
- package/fesm2022/taiga-ui-cdk-directives-swipe.mjs.map +1 -1
- package/fesm2022/taiga-ui-cdk-directives-truncate.mjs +4 -4
- package/fesm2022/taiga-ui-cdk-directives-truncate.mjs.map +1 -1
- package/fesm2022/taiga-ui-cdk-directives-validator.mjs.map +1 -1
- package/fesm2022/taiga-ui-cdk-directives-with-styles.mjs.map +1 -1
- package/fesm2022/taiga-ui-cdk-directives-zoom.mjs.map +1 -1
- package/fesm2022/taiga-ui-cdk-observables.mjs.map +1 -1
- package/fesm2022/taiga-ui-cdk-portals.mjs.map +1 -1
- package/fesm2022/taiga-ui-cdk-utils-dom.mjs +1 -3
- package/fesm2022/taiga-ui-cdk-utils-dom.mjs.map +1 -1
- package/fesm2022/taiga-ui-cdk-utils-math.mjs +9 -5
- package/fesm2022/taiga-ui-cdk-utils-math.mjs.map +1 -1
- package/fesm2022/taiga-ui-cdk-utils-miscellaneous.mjs.map +1 -1
- package/package.json +1 -1
- package/schematics/constants/file-globs.js.map +1 -1
- package/schematics/ng-add/constants/versions.d.ts +1 -1
- package/schematics/ng-add/steps/add-taiga-modules.js.map +1 -1
- package/schematics/ng-update/steps/rename-types.js.map +1 -1
- package/schematics/ng-update/utils/add-comment-for-styles.js.map +1 -1
- package/schematics/ng-update/utils/replace-attrs-in-host.js.map +1 -1
- package/schematics/ng-update/utils/templates/control-state-attrs.d.ts +8 -0
- package/schematics/ng-update/utils/templates/control-state-attrs.js +46 -0
- package/schematics/ng-update/utils/templates/control-state-attrs.js.map +1 -0
- package/schematics/ng-update/utils/templates/dom-traversal.js +2 -4
- package/schematics/ng-update/utils/templates/dom-traversal.js.map +1 -1
- package/schematics/ng-update/utils/templates/index.d.ts +1 -0
- package/schematics/ng-update/utils/templates/index.js +1 -0
- package/schematics/ng-update/utils/templates/index.js.map +1 -1
- package/schematics/ng-update/utils/templates/replace-tag.js.map +1 -1
- package/schematics/ng-update/v5/steps/constants/style-comments.js.map +1 -1
- package/schematics/ng-update/v5/steps/migrate-breakpoint-service.js.map +1 -1
- package/schematics/ng-update/v5/steps/migrate-closeable.js.map +1 -1
- package/schematics/ng-update/v5/steps/migrate-dialog-legacy-sizes.js.map +1 -1
- package/schematics/ng-update/v5/steps/migrate-doc-i18n-tokens.js +4 -4
- package/schematics/ng-update/v5/steps/migrate-doc-i18n-tokens.js.map +1 -1
- package/schematics/ng-update/v5/steps/migrate-filter-by-input.js +31 -14
- package/schematics/ng-update/v5/steps/migrate-filter-by-input.js.map +1 -1
- package/schematics/ng-update/v5/steps/migrate-tokens/migrate-tokens.js.map +1 -1
- package/schematics/ng-update/v5/steps/migrate-tui-let.js.map +1 -1
- package/schematics/ng-update/v5/steps/templates/migrate-accordion.js.map +1 -1
- package/schematics/ng-update/v5/steps/templates/migrate-amount-currency-align.js.map +1 -1
- package/schematics/ng-update/v5/steps/templates/migrate-async-pipes.js.map +1 -1
- package/schematics/ng-update/v5/steps/templates/migrate-avatar.js.map +1 -1
- package/schematics/ng-update/v5/steps/templates/migrate-axes.js.map +1 -1
- package/schematics/ng-update/v5/steps/templates/migrate-calendar-sheet-single.js.map +1 -1
- package/schematics/ng-update/v5/steps/templates/migrate-chart-hint.js.map +1 -1
- package/schematics/ng-update/v5/steps/templates/migrate-closeable.js.map +1 -1
- package/schematics/ng-update/v5/steps/templates/migrate-combo-box.js +12 -5
- package/schematics/ng-update/v5/steps/templates/migrate-combo-box.js.map +1 -1
- package/schematics/ng-update/v5/steps/templates/migrate-doc-documentation.js.map +1 -1
- package/schematics/ng-update/v5/steps/templates/migrate-field-error.js.map +1 -1
- package/schematics/ng-update/v5/steps/templates/migrate-format-phone-pipe.js.map +1 -1
- package/schematics/ng-update/v5/steps/templates/migrate-hint-on-legacy-controls.d.ts +7 -0
- package/schematics/ng-update/v5/steps/templates/migrate-hint-on-legacy-controls.js +20 -3
- package/schematics/ng-update/v5/steps/templates/migrate-hint-on-legacy-controls.js.map +1 -1
- package/schematics/ng-update/v5/steps/templates/migrate-input-color.js.map +1 -1
- package/schematics/ng-update/v5/steps/templates/migrate-input-date-multi.js.map +1 -1
- package/schematics/ng-update/v5/steps/templates/migrate-input-date-range.js +5 -1
- package/schematics/ng-update/v5/steps/templates/migrate-input-date-range.js.map +1 -1
- package/schematics/ng-update/v5/steps/templates/migrate-input-date.js +5 -1
- package/schematics/ng-update/v5/steps/templates/migrate-input-date.js.map +1 -1
- package/schematics/ng-update/v5/steps/templates/migrate-input-month.js.map +1 -1
- package/schematics/ng-update/v5/steps/templates/migrate-input-password.js +14 -3
- package/schematics/ng-update/v5/steps/templates/migrate-input-password.js.map +1 -1
- package/schematics/ng-update/v5/steps/templates/migrate-input-phone-international.js.map +1 -1
- package/schematics/ng-update/v5/steps/templates/migrate-input-phone.js +5 -1
- package/schematics/ng-update/v5/steps/templates/migrate-input-phone.js.map +1 -1
- package/schematics/ng-update/v5/steps/templates/migrate-input-tag.js +5 -1
- package/schematics/ng-update/v5/steps/templates/migrate-input-tag.js.map +1 -1
- package/schematics/ng-update/v5/steps/templates/migrate-input-time.js +5 -1
- package/schematics/ng-update/v5/steps/templates/migrate-input-time.js.map +1 -1
- package/schematics/ng-update/v5/steps/templates/migrate-input-year.js.map +1 -1
- package/schematics/ng-update/v5/steps/templates/migrate-input.js +72 -11
- package/schematics/ng-update/v5/steps/templates/migrate-input.js.map +1 -1
- package/schematics/ng-update/v5/steps/templates/migrate-legacy-custom-content.js.map +1 -1
- package/schematics/ng-update/v5/steps/templates/migrate-multi-select.js +9 -3
- package/schematics/ng-update/v5/steps/templates/migrate-multi-select.js.map +1 -1
- package/schematics/ng-update/v5/steps/templates/migrate-repeat-times.js.map +1 -1
- package/schematics/ng-update/v5/steps/templates/migrate-select.js +8 -3
- package/schematics/ng-update/v5/steps/templates/migrate-select.js.map +1 -1
- package/schematics/ng-update/v5/steps/templates/migrate-sidebar.js.map +1 -1
- package/schematics/ng-update/v5/steps/templates/migrate-tag.js.map +1 -1
- package/schematics/ng-update/v5/steps/templates/migrate-textarea.js +13 -4
- package/schematics/ng-update/v5/steps/templates/migrate-textarea.js.map +1 -1
- package/schematics/ng-update/v5/tests/migrate-tokens/utils.js.map +1 -1
- package/schematics/utils/add-unique-import.js.map +1 -1
- package/schematics/utils/get-projects.js.map +1 -1
- package/schematics/utils/progress.js.map +1 -1
- package/schematics/utils/push-to-array-property.js +5 -7
- package/schematics/utils/push-to-array-property.js.map +1 -1
- package/schematics/utils/templates/get-component-templates.js.map +1 -1
- package/schematics/utils/templates/migrate-attr-value.js +2 -4
- package/schematics/utils/templates/migrate-attr-value.js.map +1 -1
- package/schematics/utils/templates/ng-component-input-manipulations.js.map +1 -1
- package/utils/math/sum.d.ts +3 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taiga-ui-cdk-directives-auto-focus.mjs","sources":["../../../projects/cdk/directives/auto-focus/handlers/abstract.handler.ts","../../../projects/cdk/directives/auto-focus/handlers/default.handler.ts","../../../projects/cdk/directives/auto-focus/handlers/ios.handler.ts","../../../projects/cdk/directives/auto-focus/autofocus.options.ts","../../../projects/cdk/directives/auto-focus/autofocus.directive.ts","../../../projects/cdk/directives/auto-focus/handlers/sync.handler.ts","../../../projects/cdk/directives/auto-focus/taiga-ui-cdk-directives-auto-focus.ts"],"sourcesContent":["import {type ElementRef} from '@angular/core';\n\nimport {type TuiAutofocusHandler, type TuiAutofocusOptions} from '../autofocus.options';\n\nexport abstract class AbstractTuiAutofocusHandler implements TuiAutofocusHandler {\n constructor(\n protected readonly el: ElementRef<HTMLElement>,\n protected readonly options: TuiAutofocusOptions,\n ) {}\n\n public abstract setFocus(): void;\n\n protected get element(): HTMLElement {\n return (\n this.el.nativeElement.querySelector<HTMLElement>(this.options.query) ??\n this.el.nativeElement\n );\n }\n\n protected get isTextFieldElement(): boolean {\n return this.element.matches(this.options.query);\n }\n}\n","import {type ElementRef, type NgZone} from '@angular/core';\nimport {tuiZonefreeScheduler} from '@taiga-ui/cdk/observables';\nimport {map, type Observable, race, skipWhile, take, throttleTime, timer} from 'rxjs';\n\nimport {type TuiAutofocusOptions} from '../autofocus.options';\nimport {AbstractTuiAutofocusHandler} from './abstract.handler';\n\nconst TIMEOUT = 1000;\nconst NG_ANIMATION_SELECTOR = '.ng-animating';\n\nexport class TuiDefaultAutofocusHandler extends AbstractTuiAutofocusHandler {\n constructor(\n el: ElementRef<HTMLElement>,\n private readonly animationFrame$: Observable<number>,\n private readonly zone: NgZone,\n options: TuiAutofocusOptions,\n ) {\n super(el, options);\n }\n\n public setFocus(): void {\n if (this.isTextFieldElement) {\n race(\n timer(this.options.delay || TIMEOUT),\n this.animationFrame$.pipe(\n throttleTime(100, tuiZonefreeScheduler(this.zone)),\n map(() => this.element.closest(NG_ANIMATION_SELECTOR)),\n skipWhile(Boolean),\n take(1),\n ),\n ).subscribe(() =>\n this.element.focus({preventScroll: this.options.preventScroll}),\n );\n } else {\n this.element.focus({preventScroll: true});\n }\n }\n}\n","import {type ElementRef, type NgZone, type Renderer2} from '@angular/core';\nimport {tuiIsPresent, tuiPx} from '@taiga-ui/cdk/utils/miscellaneous';\n\nimport {type TuiAutofocusOptions} from '../autofocus.options';\nimport {AbstractTuiAutofocusHandler} from './abstract.handler';\n\nconst TEXTFIELD_ATTRS = [\n 'type',\n 'inputMode',\n 'autocomplete',\n 'accept',\n 'min',\n 'max',\n 'step',\n 'pattern',\n 'size',\n 'maxlength',\n] as const;\n\nexport class TuiIosAutofocusHandler extends AbstractTuiAutofocusHandler {\n constructor(\n el: ElementRef<HTMLElement>,\n private readonly renderer: Renderer2,\n private readonly zone: NgZone,\n private readonly win: Window,\n options: TuiAutofocusOptions,\n ) {\n super(el, options);\n }\n\n public setFocus(): void {\n if (this.isTextFieldElement) {\n this.zone.runOutsideAngular(() => this.iosWebkitAutofocus());\n } else {\n this.element.focus({preventScroll: true});\n }\n }\n\n private iosWebkitAutofocus(): void {\n const fakeInput = this.makeFakeInput();\n const duration = this.getDurationTimeBeforeFocus();\n let fakeFocusTimeoutId = 0;\n let elementFocusTimeoutId = 0;\n\n const blurHandler = (): void => fakeInput.focus({preventScroll: true});\n const focusHandler = (): void => {\n clearTimeout(fakeFocusTimeoutId);\n\n fakeFocusTimeoutId = this.win.setTimeout(() => {\n clearTimeout(elementFocusTimeoutId);\n\n fakeInput.removeEventListener('blur', blurHandler);\n fakeInput.removeEventListener('focus', focusHandler);\n\n elementFocusTimeoutId = this.win.setTimeout(() => {\n this.element.focus({preventScroll: this.options.preventScroll});\n fakeInput.remove();\n }, duration);\n });\n };\n\n fakeInput.addEventListener('blur', blurHandler, {once: true});\n fakeInput.addEventListener('focus', focusHandler);\n\n if (this.insideDialog()) {\n this.win.document.body.appendChild(fakeInput);\n } else {\n this.element.parentElement?.appendChild(fakeInput);\n }\n\n fakeInput.focus({preventScroll: true});\n }\n\n /**\n * @note:\n * emulate textfield position in layout with cursor\n * before focus to real textfield element\n *\n * required note:\n * [fakeInput.readOnly = true] ~\n * don't use {readOnly: true} value, it's doesn't work for emulate autofill\n *\n * [fakeInput.style.opacity = 0] ~\n * don't use {opacity: 0}, sometimes it's doesn't work for emulate real input\n *\n * [fakeInput.style.fontSize = 16px] ~\n * disable possible auto zoom\n *\n * [fakeInput.style.top/left] ~\n * emulate position cursor before focus to real textfield element\n */\n private makeFakeInput(): HTMLInputElement {\n const fakeInput: HTMLInputElement = this.renderer.createElement('input');\n const rect = this.element.getBoundingClientRect();\n\n this.patchFakeInputFromFocusableElement(fakeInput);\n\n fakeInput.style.height = tuiPx(rect.height);\n fakeInput.style.width = tuiPx(rect.width / 2);\n fakeInput.style.position = 'fixed';\n fakeInput.style.zIndex = '-99999999';\n fakeInput.style.caretColor = 'transparent';\n fakeInput.style.border = 'none';\n fakeInput.style.outline = 'none';\n fakeInput.style.color = 'transparent';\n fakeInput.style.background = 'transparent';\n fakeInput.style.cursor = 'none';\n fakeInput.style.fontSize = tuiPx(16);\n fakeInput.style.top = tuiPx(rect.top);\n fakeInput.style.left = tuiPx(rect.left);\n\n return fakeInput;\n }\n\n private getDurationTimeBeforeFocus(): number {\n return (\n Number.parseFloat(\n this.win\n .getComputedStyle(this.element)\n .getPropertyValue('--tui-duration'),\n ) || 0\n );\n }\n\n /**\n * @note:\n * unfortunately, in older versions of iOS\n * there is a bug that the fake input cursor\n * will move along with the dialog animation\n * and then that dialog will be shaking\n */\n private insideDialog(): boolean {\n return !!this.element.closest('tui-dialog');\n }\n\n /**\n * @note:\n * inherit basic attributes values from real input\n * for help iOS detect what do you want see on keyboard,\n * for example [inputMode=numeric, autocomplete=cc-number]\n */\n private patchFakeInputFromFocusableElement(fakeInput: HTMLInputElement): void {\n TEXTFIELD_ATTRS.forEach((attr) => {\n const value = this.element.getAttribute(attr);\n\n if (tuiIsPresent(value)) {\n fakeInput.setAttribute(attr, value);\n }\n });\n }\n}\n","import {ElementRef, InjectionToken, NgZone, Renderer2} from '@angular/core';\nimport {WA_ANIMATION_FRAME, WA_WINDOW} from '@ng-web-apis/common';\nimport {WA_IS_IOS} from '@ng-web-apis/platform';\nimport {tuiCreateOptions} from '@taiga-ui/cdk/utils/di';\nimport {type Observable} from 'rxjs';\n\nimport {TuiDefaultAutofocusHandler} from './handlers/default.handler';\nimport {TuiIosAutofocusHandler} from './handlers/ios.handler';\n\nexport interface TuiAutofocusHandler {\n setFocus(): void;\n}\n\nexport interface TuiAutofocusOptions {\n readonly delay: number;\n readonly query: string;\n readonly preventScroll: boolean;\n}\n\nexport const [TUI_AUTOFOCUS_OPTIONS, tuiAutoFocusOptionsProvider] =\n tuiCreateOptions<TuiAutofocusOptions>({\n delay: Number.NaN, // NaN = no delay/sync\n query: 'input, textarea, select, [contenteditable]',\n preventScroll: false,\n });\n\nexport const TUI_AUTOFOCUS_HANDLER = new InjectionToken<TuiAutofocusHandler>(\n ngDevMode ? 'TUI_AUTOFOCUS_HANDLER' : '',\n);\n\nexport const TUI_AUTOFOCUS_PROVIDERS = [\n {\n provide: TUI_AUTOFOCUS_HANDLER,\n deps: [\n ElementRef,\n WA_ANIMATION_FRAME,\n Renderer2,\n NgZone,\n WA_WINDOW,\n WA_IS_IOS,\n TUI_AUTOFOCUS_OPTIONS,\n ],\n // eslint-disable-next-line @typescript-eslint/max-params,max-params\n useFactory: (\n el: ElementRef<HTMLElement>,\n animationFrame$: Observable<number>,\n renderer: Renderer2,\n zone: NgZone,\n win: Window,\n isIos: boolean,\n options: TuiAutofocusOptions,\n ) =>\n isIos\n ? new TuiIosAutofocusHandler(el, renderer, zone, win, options)\n : new TuiDefaultAutofocusHandler(el, animationFrame$, zone, options),\n },\n];\n","import {type BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {type AfterViewInit, DestroyRef, Directive, inject, input} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {timer} from 'rxjs';\n\nimport {\n TUI_AUTOFOCUS_HANDLER,\n TUI_AUTOFOCUS_OPTIONS,\n TUI_AUTOFOCUS_PROVIDERS,\n} from './autofocus.options';\n\n@Directive({\n selector: '[tuiAutoFocus]',\n providers: TUI_AUTOFOCUS_PROVIDERS,\n})\nexport class TuiAutoFocus implements AfterViewInit {\n private readonly handler = inject(TUI_AUTOFOCUS_HANDLER);\n private readonly options = inject(TUI_AUTOFOCUS_OPTIONS);\n private readonly destroyRef = inject(DestroyRef);\n\n public readonly autoFocus = input<BooleanInput, any>(undefined, {\n alias: 'tuiAutoFocus',\n transform: coerceBooleanProperty,\n });\n\n public ngAfterViewInit(): void {\n if (this.autoFocus()) {\n this.focus();\n }\n }\n\n public focus(): void {\n if (Number.isNaN(this.options.delay)) {\n void Promise.resolve().then(() => this.handler.setFocus());\n } else {\n timer(this.options.delay)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.handler.setFocus());\n }\n }\n}\n","import {AbstractTuiAutofocusHandler} from './abstract.handler';\n\nexport class TuiSynchronousAutofocusHandler extends AbstractTuiAutofocusHandler {\n public setFocus(): void {\n this.element.focus({preventScroll: true});\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-auto-focus.mjs","sources":["../../../projects/cdk/directives/auto-focus/handlers/abstract.handler.ts","../../../projects/cdk/directives/auto-focus/handlers/default.handler.ts","../../../projects/cdk/directives/auto-focus/handlers/ios.handler.ts","../../../projects/cdk/directives/auto-focus/autofocus.options.ts","../../../projects/cdk/directives/auto-focus/autofocus.directive.ts","../../../projects/cdk/directives/auto-focus/handlers/sync.handler.ts","../../../projects/cdk/directives/auto-focus/taiga-ui-cdk-directives-auto-focus.ts"],"sourcesContent":["import {type ElementRef} from '@angular/core';\n\nimport {type TuiAutofocusHandler, type TuiAutofocusOptions} from '../autofocus.options';\n\nexport abstract class AbstractTuiAutofocusHandler implements TuiAutofocusHandler {\n constructor(\n protected readonly el: ElementRef<HTMLElement>,\n protected readonly options: TuiAutofocusOptions,\n ) {}\n\n public abstract setFocus(): void;\n\n protected get element(): HTMLElement {\n return (\n this.el.nativeElement.querySelector<HTMLElement>(this.options.query) ??\n this.el.nativeElement\n );\n }\n\n protected get isTextFieldElement(): boolean {\n return this.element.matches(this.options.query);\n }\n}\n","import {type ElementRef, type NgZone} from '@angular/core';\nimport {tuiZonefreeScheduler} from '@taiga-ui/cdk/observables';\nimport {map, type Observable, race, skipWhile, take, throttleTime, timer} from 'rxjs';\n\nimport {type TuiAutofocusOptions} from '../autofocus.options';\nimport {AbstractTuiAutofocusHandler} from './abstract.handler';\n\nconst TIMEOUT = 1000;\nconst NG_ANIMATION_SELECTOR = '.ng-animating';\n\nexport class TuiDefaultAutofocusHandler extends AbstractTuiAutofocusHandler {\n constructor(\n el: ElementRef<HTMLElement>,\n private readonly animationFrame$: Observable<number>,\n private readonly zone: NgZone,\n options: TuiAutofocusOptions,\n ) {\n super(el, options);\n }\n\n public setFocus(): void {\n if (this.isTextFieldElement) {\n race(\n timer(this.options.delay || TIMEOUT),\n this.animationFrame$.pipe(\n throttleTime(100, tuiZonefreeScheduler(this.zone)),\n map(() => this.element.closest(NG_ANIMATION_SELECTOR)),\n skipWhile(Boolean),\n take(1),\n ),\n ).subscribe(() =>\n this.element.focus({preventScroll: this.options.preventScroll}),\n );\n } else {\n this.element.focus({preventScroll: true});\n }\n }\n}\n","import {type ElementRef, type NgZone, type Renderer2} from '@angular/core';\nimport {tuiIsPresent, tuiPx} from '@taiga-ui/cdk/utils/miscellaneous';\n\nimport {type TuiAutofocusOptions} from '../autofocus.options';\nimport {AbstractTuiAutofocusHandler} from './abstract.handler';\n\nconst TEXTFIELD_ATTRS = [\n 'type',\n 'inputMode',\n 'autocomplete',\n 'accept',\n 'min',\n 'max',\n 'step',\n 'pattern',\n 'size',\n 'maxlength',\n] as const;\n\nexport class TuiIosAutofocusHandler extends AbstractTuiAutofocusHandler {\n constructor(\n el: ElementRef<HTMLElement>,\n private readonly renderer: Renderer2,\n private readonly zone: NgZone,\n private readonly win: Window,\n options: TuiAutofocusOptions,\n ) {\n super(el, options);\n }\n\n public setFocus(): void {\n if (this.isTextFieldElement) {\n this.zone.runOutsideAngular(() => this.iosWebkitAutofocus());\n } else {\n this.element.focus({preventScroll: true});\n }\n }\n\n private iosWebkitAutofocus(): void {\n const fakeInput = this.makeFakeInput();\n const duration = this.getDurationTimeBeforeFocus();\n let fakeFocusTimeoutId = 0;\n let elementFocusTimeoutId = 0;\n const blurHandler = (): void => fakeInput.focus({preventScroll: true});\n\n const focusHandler = (): void => {\n clearTimeout(fakeFocusTimeoutId);\n\n fakeFocusTimeoutId = this.win.setTimeout(() => {\n clearTimeout(elementFocusTimeoutId);\n\n fakeInput.removeEventListener('blur', blurHandler);\n fakeInput.removeEventListener('focus', focusHandler);\n\n elementFocusTimeoutId = this.win.setTimeout(() => {\n this.element.focus({preventScroll: this.options.preventScroll});\n fakeInput.remove();\n }, duration);\n });\n };\n\n fakeInput.addEventListener('blur', blurHandler, {once: true});\n fakeInput.addEventListener('focus', focusHandler);\n\n if (this.insideDialog()) {\n this.win.document.body.appendChild(fakeInput);\n } else {\n this.element.parentElement?.appendChild(fakeInput);\n }\n\n fakeInput.focus({preventScroll: true});\n }\n\n /**\n * @note:\n * emulate textfield position in layout with cursor\n * before focus to real textfield element\n *\n * required note:\n * [fakeInput.readOnly = true] ~\n * don't use {readOnly: true} value, it's doesn't work for emulate autofill\n *\n * [fakeInput.style.opacity = 0] ~\n * don't use {opacity: 0}, sometimes it's doesn't work for emulate real input\n *\n * [fakeInput.style.fontSize = 16px] ~\n * disable possible auto zoom\n *\n * [fakeInput.style.top/left] ~\n * emulate position cursor before focus to real textfield element\n */\n private makeFakeInput(): HTMLInputElement {\n const fakeInput: HTMLInputElement = this.renderer.createElement('input');\n const rect = this.element.getBoundingClientRect();\n\n this.patchFakeInputFromFocusableElement(fakeInput);\n\n fakeInput.style.height = tuiPx(rect.height);\n fakeInput.style.width = tuiPx(rect.width / 2);\n fakeInput.style.position = 'fixed';\n fakeInput.style.zIndex = '-99999999';\n fakeInput.style.caretColor = 'transparent';\n fakeInput.style.border = 'none';\n fakeInput.style.outline = 'none';\n fakeInput.style.color = 'transparent';\n fakeInput.style.background = 'transparent';\n fakeInput.style.cursor = 'none';\n fakeInput.style.fontSize = tuiPx(16);\n fakeInput.style.top = tuiPx(rect.top);\n fakeInput.style.left = tuiPx(rect.left);\n\n return fakeInput;\n }\n\n private getDurationTimeBeforeFocus(): number {\n return (\n Number.parseFloat(\n this.win\n .getComputedStyle(this.element)\n .getPropertyValue('--tui-duration'),\n ) || 0\n );\n }\n\n /**\n * @note:\n * unfortunately, in older versions of iOS\n * there is a bug that the fake input cursor\n * will move along with the dialog animation\n * and then that dialog will be shaking\n */\n private insideDialog(): boolean {\n return !!this.element.closest('tui-dialog');\n }\n\n /**\n * @note:\n * inherit basic attributes values from real input\n * for help iOS detect what do you want see on keyboard,\n * for example [inputMode=numeric, autocomplete=cc-number]\n */\n private patchFakeInputFromFocusableElement(fakeInput: HTMLInputElement): void {\n TEXTFIELD_ATTRS.forEach((attr) => {\n const value = this.element.getAttribute(attr);\n\n if (tuiIsPresent(value)) {\n fakeInput.setAttribute(attr, value);\n }\n });\n }\n}\n","import {ElementRef, InjectionToken, NgZone, Renderer2} from '@angular/core';\nimport {WA_ANIMATION_FRAME, WA_WINDOW} from '@ng-web-apis/common';\nimport {WA_IS_IOS} from '@ng-web-apis/platform';\nimport {tuiCreateOptions} from '@taiga-ui/cdk/utils/di';\nimport {type Observable} from 'rxjs';\n\nimport {TuiDefaultAutofocusHandler} from './handlers/default.handler';\nimport {TuiIosAutofocusHandler} from './handlers/ios.handler';\n\nexport interface TuiAutofocusHandler {\n setFocus(): void;\n}\n\nexport interface TuiAutofocusOptions {\n readonly delay: number;\n readonly query: string;\n readonly preventScroll: boolean;\n}\n\nexport const [TUI_AUTOFOCUS_OPTIONS, tuiAutoFocusOptionsProvider] =\n tuiCreateOptions<TuiAutofocusOptions>({\n delay: Number.NaN, // NaN = no delay/sync\n query: 'input, textarea, select, [contenteditable]',\n preventScroll: false,\n });\n\nexport const TUI_AUTOFOCUS_HANDLER = new InjectionToken<TuiAutofocusHandler>(\n ngDevMode ? 'TUI_AUTOFOCUS_HANDLER' : '',\n);\n\nexport const TUI_AUTOFOCUS_PROVIDERS = [\n {\n provide: TUI_AUTOFOCUS_HANDLER,\n deps: [\n ElementRef,\n WA_ANIMATION_FRAME,\n Renderer2,\n NgZone,\n WA_WINDOW,\n WA_IS_IOS,\n TUI_AUTOFOCUS_OPTIONS,\n ],\n // eslint-disable-next-line @typescript-eslint/max-params,max-params\n useFactory: (\n el: ElementRef<HTMLElement>,\n animationFrame$: Observable<number>,\n renderer: Renderer2,\n zone: NgZone,\n win: Window,\n isIos: boolean,\n options: TuiAutofocusOptions,\n ) =>\n isIos\n ? new TuiIosAutofocusHandler(el, renderer, zone, win, options)\n : new TuiDefaultAutofocusHandler(el, animationFrame$, zone, options),\n },\n];\n","import {type BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {type AfterViewInit, DestroyRef, Directive, inject, input} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {timer} from 'rxjs';\n\nimport {\n TUI_AUTOFOCUS_HANDLER,\n TUI_AUTOFOCUS_OPTIONS,\n TUI_AUTOFOCUS_PROVIDERS,\n} from './autofocus.options';\n\n@Directive({\n selector: '[tuiAutoFocus]',\n providers: TUI_AUTOFOCUS_PROVIDERS,\n})\nexport class TuiAutoFocus implements AfterViewInit {\n private readonly handler = inject(TUI_AUTOFOCUS_HANDLER);\n private readonly options = inject(TUI_AUTOFOCUS_OPTIONS);\n private readonly destroyRef = inject(DestroyRef);\n\n public readonly autoFocus = input<BooleanInput, any>(undefined, {\n alias: 'tuiAutoFocus',\n transform: coerceBooleanProperty,\n });\n\n public ngAfterViewInit(): void {\n if (this.autoFocus()) {\n this.focus();\n }\n }\n\n public focus(): void {\n if (Number.isNaN(this.options.delay)) {\n void Promise.resolve().then(() => this.handler.setFocus());\n } else {\n timer(this.options.delay)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.handler.setFocus());\n }\n }\n}\n","import {AbstractTuiAutofocusHandler} from './abstract.handler';\n\nexport class TuiSynchronousAutofocusHandler extends AbstractTuiAutofocusHandler {\n public setFocus(): void {\n this.element.focus({preventScroll: true});\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taiga-ui-cdk-directives-copy-processor.mjs","sources":["../../../projects/cdk/directives/copy-processor/copy-processor.directive.ts","../../../projects/cdk/directives/copy-processor/taiga-ui-cdk-directives-copy-processor.ts"],"sourcesContent":["import {Directive, inject, input} from '@angular/core';\nimport {WA_WINDOW} from '@ng-web-apis/common';\nimport {type TuiStringHandler} from '@taiga-ui/cdk/types';\nimport {tuiGetSelectedText} from '@taiga-ui/cdk/utils/dom';\nimport {identity} from 'rxjs';\n\n@Directive({\n selector: '[tuiCopyProcessor]',\n host: {'(copy.prevent)': 'onCopy($event)'},\n})\nexport class TuiCopyProcessor {\n private readonly win = inject(WA_WINDOW);\n
|
|
1
|
+
{"version":3,"file":"taiga-ui-cdk-directives-copy-processor.mjs","sources":["../../../projects/cdk/directives/copy-processor/copy-processor.directive.ts","../../../projects/cdk/directives/copy-processor/taiga-ui-cdk-directives-copy-processor.ts"],"sourcesContent":["import {Directive, inject, input} from '@angular/core';\nimport {WA_WINDOW} from '@ng-web-apis/common';\nimport {type TuiStringHandler} from '@taiga-ui/cdk/types';\nimport {tuiGetSelectedText} from '@taiga-ui/cdk/utils/dom';\nimport {identity} from 'rxjs';\n\n@Directive({\n selector: '[tuiCopyProcessor]',\n host: {'(copy.prevent)': 'onCopy($event)'},\n})\nexport class TuiCopyProcessor {\n private readonly win = inject(WA_WINDOW);\n public readonly tuiCopyProcessor = input<TuiStringHandler<string>>(identity);\n\n protected onCopy(event: ClipboardEvent): void {\n const text = tuiGetSelectedText(this.win);\n\n if (text) {\n event.clipboardData?.setData('text/plain', this.tuiCopyProcessor()(text));\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;MAUa,gBAAgB,CAAA;AAJ7B,IAAA,WAAA,GAAA;AAKqB,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,SAAS,CAAC;AACxB,QAAA,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAA2B,QAAQ,CAAC;AAS/E,IAAA;AAPa,IAAA,MAAM,CAAC,KAAqB,EAAA;QAClC,MAAM,IAAI,GAAG,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC;QAEzC,IAAI,IAAI,EAAE;AACN,YAAA,KAAK,CAAC,aAAa,EAAE,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC,IAAI,CAAC,CAAC;QAC7E;IACJ;+GAVS,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAJ5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,IAAI,EAAE,EAAC,gBAAgB,EAAE,gBAAgB,EAAC;AAC7C,iBAAA;;;ACTD;;AAEG;;;;"}
|
|
@@ -40,7 +40,7 @@ class TuiFocusTrap {
|
|
|
40
40
|
}
|
|
41
41
|
}
|
|
42
42
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: TuiFocusTrap, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
43
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.20", type: TuiFocusTrap, isStandalone: true, selector: "[tuiFocusTrap]", host: { attributes: { "tabIndex": "0" }, listeners: { "window:focusin.zoneless": "initialized && onFocusIn($event.target)"
|
|
43
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.20", type: TuiFocusTrap, isStandalone: true, selector: "[tuiFocusTrap]", host: { attributes: { "tabIndex": "0" }, listeners: { "pointerdown": "$event.currentTarget?.removeAttribute(\"tabindex\")", "window:focusin.zoneless": "initialized && onFocusIn($event.target)" } }, ngImport: i0 }); }
|
|
44
44
|
}
|
|
45
45
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: TuiFocusTrap, decorators: [{
|
|
46
46
|
type: Directive,
|
|
@@ -48,8 +48,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
|
|
|
48
48
|
selector: '[tuiFocusTrap]',
|
|
49
49
|
host: {
|
|
50
50
|
tabIndex: '0',
|
|
51
|
-
'(window:focusin.zoneless)': 'initialized && onFocusIn($event.target)',
|
|
52
51
|
'(pointerdown)': '$event.currentTarget?.removeAttribute("tabindex")',
|
|
52
|
+
'(window:focusin.zoneless)': 'initialized && onFocusIn($event.target)',
|
|
53
53
|
},
|
|
54
54
|
}]
|
|
55
55
|
}], ctorParameters: () => [] });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taiga-ui-cdk-directives-focus-trap.mjs","sources":["../../../projects/cdk/directives/focus-trap/focus-trap.directive.ts","../../../projects/cdk/directives/focus-trap/taiga-ui-cdk-directives-focus-trap.ts"],"sourcesContent":["import {DOCUMENT} from '@angular/common';\nimport {Directive, inject, type OnDestroy} from '@angular/core';\nimport {\n tuiContainsOrAfter,\n tuiInjectElement,\n tuiIsHTMLElement,\n} from '@taiga-ui/cdk/utils/dom';\nimport {tuiGetClosestFocusable, tuiGetFocused} from '@taiga-ui/cdk/utils/focus';\n\n@Directive({\n selector: '[tuiFocusTrap]',\n host: {\n tabIndex: '0',\n '(
|
|
1
|
+
{"version":3,"file":"taiga-ui-cdk-directives-focus-trap.mjs","sources":["../../../projects/cdk/directives/focus-trap/focus-trap.directive.ts","../../../projects/cdk/directives/focus-trap/taiga-ui-cdk-directives-focus-trap.ts"],"sourcesContent":["import {DOCUMENT} from '@angular/common';\nimport {Directive, inject, type OnDestroy} from '@angular/core';\nimport {\n tuiContainsOrAfter,\n tuiInjectElement,\n tuiIsHTMLElement,\n} from '@taiga-ui/cdk/utils/dom';\nimport {tuiGetClosestFocusable, tuiGetFocused} from '@taiga-ui/cdk/utils/focus';\n\n@Directive({\n selector: '[tuiFocusTrap]',\n host: {\n tabIndex: '0',\n '(pointerdown)': '$event.currentTarget?.removeAttribute(\"tabindex\")',\n '(window:focusin.zoneless)': 'initialized && onFocusIn($event.target)',\n },\n})\nexport class TuiFocusTrap implements OnDestroy {\n private readonly doc = inject(DOCUMENT);\n private readonly el = tuiInjectElement();\n private activeElement: Element | null = null;\n protected initialized = false;\n\n constructor() {\n /**\n * This would cause currently focused element to lose focus,\n * but it might cause ExpressionChanged error due to potential HostBinding.\n * Microtask keeps it in the same frame but allows change detection to run\n */\n Promise.resolve().then(() => {\n /**\n * The same event can synchronously close already opened focus trap and open another one.\n * All focus traps have microtask inside its `ngOnDestroy` –\n * they should be resolved before enabling of new focus trap.\n * Don't enable any new event listeners before `initialized` is equal to `true`!\n */\n this.initialized = true;\n this.activeElement = tuiGetFocused(this.doc);\n this.el.focus();\n });\n }\n\n public ngOnDestroy(): void {\n this.initialized = false;\n\n if (tuiIsHTMLElement(this.activeElement)) {\n this.activeElement.focus();\n }\n }\n\n protected onFocusIn(node: Node): void {\n const {firstElementChild} = this.el;\n\n if (!tuiContainsOrAfter(this.el, node) && firstElementChild) {\n tuiGetClosestFocusable({initial: firstElementChild, root: this.el})?.focus();\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;MAiBa,YAAY,CAAA;AAMrB,IAAA,WAAA,GAAA;AALiB,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC;QACtB,IAAA,CAAA,EAAE,GAAG,gBAAgB,EAAE;QAChC,IAAA,CAAA,aAAa,GAAmB,IAAI;QAClC,IAAA,CAAA,WAAW,GAAG,KAAK;AAGzB;;;;AAIG;AACH,QAAA,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,MAAK;AACxB;;;;;AAKG;AACH,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI;YACvB,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC;AAC5C,YAAA,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE;AACnB,QAAA,CAAC,CAAC;IACN;IAEO,WAAW,GAAA;AACd,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK;AAExB,QAAA,IAAI,gBAAgB,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE;AACtC,YAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;QAC9B;IACJ;AAEU,IAAA,SAAS,CAAC,IAAU,EAAA;AAC1B,QAAA,MAAM,EAAC,iBAAiB,EAAC,GAAG,IAAI,CAAC,EAAE;AAEnC,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,iBAAiB,EAAE;AACzD,YAAA,sBAAsB,CAAC,EAAC,OAAO,EAAE,iBAAiB,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAC,CAAC,EAAE,KAAK,EAAE;QAChF;IACJ;+GAvCS,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAZ,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,UAAA,EAAA,GAAA,EAAA,EAAA,SAAA,EAAA,EAAA,aAAA,EAAA,qDAAA,EAAA,yBAAA,EAAA,yCAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBARxB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,IAAI,EAAE;AACF,wBAAA,QAAQ,EAAE,GAAG;AACb,wBAAA,eAAe,EAAE,mDAAmD;AACpE,wBAAA,2BAA2B,EAAE,yCAAyC;AACzE,qBAAA;AACJ,iBAAA;;;AChBD;;AAEG;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taiga-ui-cdk-directives-font-size.mjs","sources":["../../../projects/cdk/directives/font-size/font-size.directive.ts","../../../projects/cdk/directives/font-size/taiga-ui-cdk-directives-font-size.ts"],"sourcesContent":["import {DOCUMENT, isPlatformBrowser} from '@angular/common';\nimport {DestroyRef, Directive, inject, InjectionToken, PLATFORM_ID} from '@angular/core';\nimport {EMPTY_FUNCTION} from '@taiga-ui/cdk/constants';\nimport {tuiFontSizeWatcher} from '@taiga-ui/font-watcher';\n\nexport const TUI_FONT_SIZE_HANDLER = new InjectionToken<(size: number) => void>(\n ngDevMode ? 'TUI_FONT_SIZE_HANDLER' : '',\n);\n\n@Directive()\nexport class TuiFontSize {\n private readonly handler = inject(TUI_FONT_SIZE_HANDLER, {optional: true});\n private readonly enabled =\n !inject(TuiFontSize, {optional: true, skipSelf: true}) &&\n isPlatformBrowser(inject(PLATFORM_ID)) &&\n typeof ResizeObserver !== 'undefined';\n\n protected readonly nothing = inject(DestroyRef).onDestroy(\n this.enabled && this.handler\n ? tuiFontSizeWatcher(this.handler, inject(DOCUMENT).createElement('iframe'))\n : EMPTY_FUNCTION,\n );\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;AAKO,MAAM,qBAAqB,GAAG,IAAI,cAAc,CACnD,SAAS,GAAG,uBAAuB,GAAG,EAAE;MAI/B,WAAW,CAAA;AADxB,IAAA,WAAA,GAAA;QAEqB,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,qBAAqB,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"taiga-ui-cdk-directives-font-size.mjs","sources":["../../../projects/cdk/directives/font-size/font-size.directive.ts","../../../projects/cdk/directives/font-size/taiga-ui-cdk-directives-font-size.ts"],"sourcesContent":["import {DOCUMENT, isPlatformBrowser} from '@angular/common';\nimport {DestroyRef, Directive, inject, InjectionToken, PLATFORM_ID} from '@angular/core';\nimport {EMPTY_FUNCTION} from '@taiga-ui/cdk/constants';\nimport {tuiFontSizeWatcher} from '@taiga-ui/font-watcher';\n\nexport const TUI_FONT_SIZE_HANDLER = new InjectionToken<(size: number) => void>(\n ngDevMode ? 'TUI_FONT_SIZE_HANDLER' : '',\n);\n\n@Directive()\nexport class TuiFontSize {\n private readonly handler = inject(TUI_FONT_SIZE_HANDLER, {optional: true});\n\n private readonly enabled =\n !inject(TuiFontSize, {optional: true, skipSelf: true}) &&\n isPlatformBrowser(inject(PLATFORM_ID)) &&\n typeof ResizeObserver !== 'undefined';\n\n protected readonly nothing = inject(DestroyRef).onDestroy(\n this.enabled && this.handler\n ? tuiFontSizeWatcher(this.handler, inject(DOCUMENT).createElement('iframe'))\n : EMPTY_FUNCTION,\n );\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;AAKO,MAAM,qBAAqB,GAAG,IAAI,cAAc,CACnD,SAAS,GAAG,uBAAuB,GAAG,EAAE;MAI/B,WAAW,CAAA;AADxB,IAAA,WAAA,GAAA;QAEqB,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,qBAAqB,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC;AAEzD,QAAA,IAAA,CAAA,OAAO,GACpB,CAAC,MAAM,CAAC,WAAW,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAC,CAAC;AACtD,YAAA,iBAAiB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YACtC,OAAO,cAAc,KAAK,WAAW;AAEtB,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CACrD,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC;AACjB,cAAE,kBAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC;cACzE,cAAc,CACvB;AACJ,IAAA;+GAbY,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,CAAA,CAAA;;4FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBADvB;;;ACTD;;AAEG;;;;"}
|
|
@@ -41,7 +41,7 @@ class TuiMedia {
|
|
|
41
41
|
this.el.playbackRate = playbackRate;
|
|
42
42
|
}
|
|
43
43
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: TuiMedia, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
44
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.20", type: TuiMedia, isStandalone: true, selector: "video[tuiMedia], audio[tuiMedia]", inputs: { playbackRate: { classPropertyName: "playbackRate", publicName: "playbackRate", isSignal: true, isRequired: false, transformFunction: null }, volume: { classPropertyName: "volume", publicName: "volume", isSignal: true, isRequired: false, transformFunction: null }, currentTime: { classPropertyName: "currentTime", publicName: "currentTime", isSignal: true, isRequired: false, transformFunction: null }, paused: { classPropertyName: "paused", publicName: "paused", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { volume: "volumeChange", currentTime: "currentTimeChange", paused: "pausedChange" }, host: { listeners: { "durationchange": "0", "ended": "onPausedChange(true)", "pause": "onPausedChange(true)", "play": "onPausedChange(false)", "
|
|
44
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.20", type: TuiMedia, isStandalone: true, selector: "video[tuiMedia], audio[tuiMedia]", inputs: { playbackRate: { classPropertyName: "playbackRate", publicName: "playbackRate", isSignal: true, isRequired: false, transformFunction: null }, volume: { classPropertyName: "volume", publicName: "volume", isSignal: true, isRequired: false, transformFunction: null }, currentTime: { classPropertyName: "currentTime", publicName: "currentTime", isSignal: true, isRequired: false, transformFunction: null }, paused: { classPropertyName: "paused", publicName: "paused", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { volume: "volumeChange", currentTime: "currentTimeChange", paused: "pausedChange" }, host: { listeners: { "durationchange": "0", "ended": "onPausedChange(true)", "pause": "onPausedChange(true)", "play": "onPausedChange(false)", "seeked": "onCurrentTimeChange()", "seeking": "onCurrentTimeChange()", "timeupdate": "onCurrentTimeChange()", "volumechange": "onVolumeChange()" }, properties: { "volume": "volume()" } }, exportAs: ["tuiMedia"], ngImport: i0 }); }
|
|
45
45
|
}
|
|
46
46
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: TuiMedia, decorators: [{
|
|
47
47
|
type: Directive,
|
|
@@ -54,10 +54,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
|
|
|
54
54
|
'(ended)': 'onPausedChange(true)',
|
|
55
55
|
'(pause)': 'onPausedChange(true)',
|
|
56
56
|
'(play)': 'onPausedChange(false)',
|
|
57
|
-
'(volumechange)': 'onVolumeChange()',
|
|
58
|
-
'(timeupdate)': 'onCurrentTimeChange()',
|
|
59
|
-
'(seeking)': 'onCurrentTimeChange()',
|
|
60
57
|
'(seeked)': 'onCurrentTimeChange()',
|
|
58
|
+
'(seeking)': 'onCurrentTimeChange()',
|
|
59
|
+
'(timeupdate)': 'onCurrentTimeChange()',
|
|
60
|
+
'(volumechange)': 'onVolumeChange()',
|
|
61
61
|
},
|
|
62
62
|
}]
|
|
63
63
|
}] });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taiga-ui-cdk-directives-media.mjs","sources":["../../../projects/cdk/directives/media/media.directive.ts","../../../projects/cdk/directives/media/taiga-ui-cdk-directives-media.ts"],"sourcesContent":["import {Directive, effect, input, model, untracked} from '@angular/core';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\n\n@Directive({\n selector: 'video[tuiMedia], audio[tuiMedia]',\n exportAs: 'tuiMedia',\n host: {\n '[volume]': 'volume()',\n '(durationchange)': '0',\n '(ended)': 'onPausedChange(true)',\n '(pause)': 'onPausedChange(true)',\n '(play)': 'onPausedChange(false)',\n '(
|
|
1
|
+
{"version":3,"file":"taiga-ui-cdk-directives-media.mjs","sources":["../../../projects/cdk/directives/media/media.directive.ts","../../../projects/cdk/directives/media/taiga-ui-cdk-directives-media.ts"],"sourcesContent":["import {Directive, effect, input, model, untracked} from '@angular/core';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\n\n@Directive({\n selector: 'video[tuiMedia], audio[tuiMedia]',\n exportAs: 'tuiMedia',\n host: {\n '[volume]': 'volume()',\n '(durationchange)': '0',\n '(ended)': 'onPausedChange(true)',\n '(pause)': 'onPausedChange(true)',\n '(play)': 'onPausedChange(false)',\n '(seeked)': 'onCurrentTimeChange()',\n '(seeking)': 'onCurrentTimeChange()',\n '(timeupdate)': 'onCurrentTimeChange()',\n '(volumechange)': 'onVolumeChange()',\n },\n})\nexport class TuiMedia {\n private readonly el = tuiInjectElement<HTMLMediaElement>();\n\n protected readonly setElCurrentTime = effect(() => {\n if (Math.abs(this.currentTime() - this.el.currentTime) > 0.05) {\n this.el.currentTime = this.currentTime();\n }\n });\n\n protected readonly setElPlaybackRate = effect(() => {\n this.updatePlaybackRate(this.playbackRate());\n });\n\n protected readonly setElPaused = effect(() => {\n const paused = this.paused();\n\n if (paused) {\n this.el.pause?.();\n } else {\n void this.el.play?.();\n }\n\n this.updatePlaybackRate(untracked(this.playbackRate));\n });\n\n public readonly playbackRate = input(1);\n public readonly volume = model(1);\n public readonly currentTime = model(this.el.currentTime ?? 0);\n public readonly paused = model(this.el.paused);\n\n protected onPausedChange(paused: boolean): void {\n this.paused.set(paused);\n }\n\n protected onVolumeChange(): void {\n this.volume.set(this.el.volume);\n }\n\n protected onCurrentTimeChange(): void {\n this.currentTime.set(this.el.currentTime);\n }\n\n private updatePlaybackRate(playbackRate: number): void {\n this.el.playbackRate = playbackRate;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -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} from '@angular/core';\nimport {outputFromObservable, toObservable} from '@angular/core/rxjs-interop';\nimport {TuiActiveZone} from '@taiga-ui/cdk/directives/active-zone';\nimport {tuiIfMap} from '@taiga-ui/cdk/observables';\nimport {map} from 'rxjs';\n\nimport {TuiObscuredService} from './obscured.service';\n\n/**\n * Directive that monitors element visibility\n */\n@Directive({\n selector: '[tuiObscured]',\n providers: [TuiObscuredService],\n})\nexport class TuiObscured {\n private readonly activeZone = inject(TuiActiveZone, {optional: true});\n private readonly obscured$ = inject(TuiObscuredService, {self: true}).pipe(\n map((by) => !!by?.every((el) => !this.activeZone?.contains(el))),\n );\n\n public readonly tuiObscuredEnabled = input<boolean>();\n\n public readonly tuiObscured$ = toObservable(this.tuiObscuredEnabled).pipe(\n tuiIfMap(() => this.obscured$),\n );\n\n public readonly tuiObscured = outputFromObservable(this.tuiObscured$);\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;
|
|
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\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} from '@angular/core';\nimport {outputFromObservable, toObservable} from '@angular/core/rxjs-interop';\nimport {TuiActiveZone} from '@taiga-ui/cdk/directives/active-zone';\nimport {tuiIfMap} from '@taiga-ui/cdk/observables';\nimport {map} from 'rxjs';\n\nimport {TuiObscuredService} from './obscured.service';\n\n/**\n * Directive that monitors element visibility\n */\n@Directive({\n selector: '[tuiObscured]',\n providers: [TuiObscuredService],\n})\nexport class TuiObscured {\n private readonly activeZone = inject(TuiActiveZone, {optional: true});\n\n private readonly obscured$ = inject(TuiObscuredService, {self: true}).pipe(\n map((by) => !!by?.every((el) => !this.activeZone?.contains(el))),\n );\n\n public readonly tuiObscuredEnabled = input<boolean>();\n\n public readonly tuiObscured$ = toObservable(this.tuiObscuredEnabled).pipe(\n tuiIfMap(() => this.obscured$),\n );\n\n public readonly tuiObscured = outputFromObservable(this.tuiObscured$);\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;AAWzE,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,CAAC,CAAC,UAAU,KAAK,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAX9C,IAAA,CAAA,EAAE,GAAG,gBAAgB,EAAE;AAEvB,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;IAID;+GAbS,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;;;ACFD;;AAEG;MAKU,WAAW,CAAA;AAJxB,IAAA,WAAA,GAAA;QAKqB,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,aAAa,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC;QAEpD,IAAA,CAAA,SAAS,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,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CACnE;QAEe,IAAA,CAAA,kBAAkB,GAAG,KAAK,EAAW;QAErC,IAAA,CAAA,YAAY,GAAG,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,IAAI,CACrE,QAAQ,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,CACjC;AAEe,QAAA,IAAA,CAAA,WAAW,GAAG,oBAAoB,CAAC,IAAI,CAAC,YAAY,CAAC;AACxE,IAAA;+GAdY,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,EAAA,iBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,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;kBAJvB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,eAAe;oBACzB,SAAS,EAAE,CAAC,kBAAkB,CAAC;AAClC,iBAAA;;;ACdD;;AAEG;;;;"}
|
|
@@ -71,7 +71,7 @@ class TuiResizer {
|
|
|
71
71
|
this.tuiSizeChange.emit(size);
|
|
72
72
|
}
|
|
73
73
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: TuiResizer, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
74
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.20", type: TuiResizer, isStandalone: true, selector: "[tuiResizer]", inputs: { tuiResizer: { classPropertyName: "tuiResizer", publicName: "tuiResizer", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { tuiSizeChange: "tuiSizeChange" }, host: { listeners: { "
|
|
74
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.20", type: TuiResizer, isStandalone: true, selector: "[tuiResizer]", inputs: { tuiResizer: { classPropertyName: "tuiResizer", publicName: "tuiResizer", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { tuiSizeChange: "tuiSizeChange" }, host: { listeners: { "document:pointermove.zoneless": "onPointerMove($event)", "document:pointerup.zoneless": "onPointerUp()", "pointerdown.zoneless.prevent": "onPointerDown($event.x, $event.y)" }, properties: { "style.cursor": "cursor", "style.touchAction": "\"none\"" } }, ngImport: i0 }); }
|
|
75
75
|
}
|
|
76
76
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: TuiResizer, decorators: [{
|
|
77
77
|
type: Directive,
|
|
@@ -80,9 +80,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
|
|
|
80
80
|
host: {
|
|
81
81
|
'[style.cursor]': 'cursor',
|
|
82
82
|
'[style.touchAction]': '"none"',
|
|
83
|
-
'(pointerdown.zoneless.prevent)': 'onPointerDown($event.x, $event.y)',
|
|
84
83
|
'(document:pointermove.zoneless)': 'onPointerMove($event)',
|
|
85
84
|
'(document:pointerup.zoneless)': 'onPointerUp()',
|
|
85
|
+
'(pointerdown.zoneless.prevent)': 'onPointerDown($event.x, $event.y)',
|
|
86
86
|
},
|
|
87
87
|
}]
|
|
88
88
|
}] });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taiga-ui-cdk-directives-resizer.mjs","sources":["../../../projects/cdk/directives/resizer/resizable.directive.ts","../../../projects/cdk/directives/resizer/resizer.directive.ts","../../../projects/cdk/directives/resizer/taiga-ui-cdk-directives-resizer.ts"],"sourcesContent":["import {Directive} from '@angular/core';\nimport {TuiElement} from '@taiga-ui/cdk/directives/element';\n\n@Directive({selector: '[tuiResizable]'})\nexport class TuiResizable extends TuiElement {}\n","import {Directive, type ElementRef, inject, input, output} from '@angular/core';\nimport {tuiPx} from '@taiga-ui/cdk/utils/miscellaneous';\n\nimport {TuiResizable} from './resizable.directive';\n\n@Directive({\n selector: '[tuiResizer]',\n host: {\n '[style.cursor]': 'cursor',\n '[style.touchAction]': '\"none\"',\n '(
|
|
1
|
+
{"version":3,"file":"taiga-ui-cdk-directives-resizer.mjs","sources":["../../../projects/cdk/directives/resizer/resizable.directive.ts","../../../projects/cdk/directives/resizer/resizer.directive.ts","../../../projects/cdk/directives/resizer/taiga-ui-cdk-directives-resizer.ts"],"sourcesContent":["import {Directive} from '@angular/core';\nimport {TuiElement} from '@taiga-ui/cdk/directives/element';\n\n@Directive({selector: '[tuiResizable]'})\nexport class TuiResizable extends TuiElement {}\n","import {Directive, type ElementRef, inject, input, output} from '@angular/core';\nimport {tuiPx} from '@taiga-ui/cdk/utils/miscellaneous';\n\nimport {TuiResizable} from './resizable.directive';\n\n@Directive({\n selector: '[tuiResizer]',\n host: {\n '[style.cursor]': 'cursor',\n '[style.touchAction]': '\"none\"',\n '(document:pointermove.zoneless)': 'onPointerMove($event)',\n '(document:pointerup.zoneless)': 'onPointerUp()',\n '(pointerdown.zoneless.prevent)': 'onPointerDown($event.x, $event.y)',\n },\n})\nexport class TuiResizer {\n private readonly resizable: ElementRef<HTMLElement> = inject(TuiResizable);\n protected x = Number.NaN;\n protected y = Number.NaN;\n protected width = 0;\n protected height = 0;\n public readonly tuiResizer = input<readonly [x: number, y: number]>([0, 0]);\n public readonly tuiSizeChange = output<readonly [x: number, y: number]>();\n\n protected get cursor(): string {\n const tuiResizer = this.tuiResizer();\n\n if (!tuiResizer[0]) {\n return 'ns-resize';\n }\n\n if (!tuiResizer[1]) {\n return 'ew-resize';\n }\n\n if (tuiResizer[0] * tuiResizer[1] > 0) {\n return 'nwse-resize';\n }\n\n return 'nesw-resize';\n }\n\n protected onPointerDown(x: number, y: number): void {\n this.x = x;\n this.y = y;\n this.width = this.resizable.nativeElement.clientWidth;\n this.height = this.resizable.nativeElement.clientHeight;\n }\n\n protected onPointerMove({x, y, buttons}: PointerEvent): void {\n if (buttons) {\n this.onMove(x, y);\n } else {\n this.onPointerUp();\n }\n }\n\n protected onPointerUp(): void {\n this.x = Number.NaN;\n }\n\n protected onMove(x: number, y: number): void {\n const tuiResizer = this.tuiResizer();\n\n if (Number.isNaN(this.x)) {\n return;\n }\n\n const {style} = this.resizable.nativeElement;\n\n const size = [\n this.width + tuiResizer[0] * (x - this.x),\n this.height + tuiResizer[1] * (y - this.y),\n ] as const;\n\n if (tuiResizer[0]) {\n style.width = tuiPx(size[0]);\n }\n\n if (tuiResizer[1]) {\n style.height = tuiPx(size[1]);\n }\n\n this.tuiSizeChange.emit(size);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taiga-ui-cdk-directives-swipe.mjs","sources":["../../../projects/cdk/directives/swipe/swipe.options.ts","../../../projects/cdk/directives/swipe/swipe.service.ts","../../../projects/cdk/directives/swipe/swipe.directive.ts","../../../projects/cdk/directives/swipe/taiga-ui-cdk-directives-swipe.ts"],"sourcesContent":["import {InjectionToken} from '@angular/core';\n\nimport {type TuiSwipeOptions} from './swipe.types';\n\nexport const TUI_SWIPE_OPTIONS = new InjectionToken<TuiSwipeOptions>(\n ngDevMode ? 'TUI_SWIPE_OPTIONS' : '',\n {\n factory: () => ({\n timeout: 500,\n threshold: 30,\n }),\n },\n);\n","import {DOCUMENT} from '@angular/common';\nimport {inject, Injectable} from '@angular/core';\nimport {tuiTypedFromEvent} from '@taiga-ui/cdk/observables';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {tuiIsPresent} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {filter, map, merge, Observable, pairwise} from 'rxjs';\n\nimport {TUI_SWIPE_OPTIONS} from './swipe.options';\nimport {type TuiSwipeDirection, type TuiSwipeEvent} from './swipe.types';\n\n@Injectable()\nexport class TuiSwipeService extends Observable<TuiSwipeEvent> {\n constructor() {\n const doc = inject(DOCUMENT);\n const el = tuiInjectElement();\n const {timeout, threshold} = inject(TUI_SWIPE_OPTIONS);\n\n super((subscriber) =>\n merge(\n tuiTypedFromEvent(el, 'touchstart', {passive: true}),\n tuiTypedFromEvent(doc, 'touchend'),\n )\n .pipe(\n pairwise(),\n filter(\n ([first, second]) =>\n !!first.touches.length &&\n first.touches[0]?.identifier ===\n second.changedTouches[0]?.identifier,\n ),\n map(([start, end]) => {\n const startX = start.touches[0]?.clientX ?? 0;\n const startY = start.touches[0]?.clientY ?? 0;\n const endX = end.changedTouches[0]?.clientX ?? 0;\n const endY = end.changedTouches[0]?.clientY ?? 0;\n
|
|
1
|
+
{"version":3,"file":"taiga-ui-cdk-directives-swipe.mjs","sources":["../../../projects/cdk/directives/swipe/swipe.options.ts","../../../projects/cdk/directives/swipe/swipe.service.ts","../../../projects/cdk/directives/swipe/swipe.directive.ts","../../../projects/cdk/directives/swipe/taiga-ui-cdk-directives-swipe.ts"],"sourcesContent":["import {InjectionToken} from '@angular/core';\n\nimport {type TuiSwipeOptions} from './swipe.types';\n\nexport const TUI_SWIPE_OPTIONS = new InjectionToken<TuiSwipeOptions>(\n ngDevMode ? 'TUI_SWIPE_OPTIONS' : '',\n {\n factory: () => ({\n timeout: 500,\n threshold: 30,\n }),\n },\n);\n","import {DOCUMENT} from '@angular/common';\nimport {inject, Injectable} from '@angular/core';\nimport {tuiTypedFromEvent} from '@taiga-ui/cdk/observables';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {tuiIsPresent} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {filter, map, merge, Observable, pairwise} from 'rxjs';\n\nimport {TUI_SWIPE_OPTIONS} from './swipe.options';\nimport {type TuiSwipeDirection, type TuiSwipeEvent} from './swipe.types';\n\n@Injectable()\nexport class TuiSwipeService extends Observable<TuiSwipeEvent> {\n constructor() {\n const doc = inject(DOCUMENT);\n const el = tuiInjectElement();\n const {timeout, threshold} = inject(TUI_SWIPE_OPTIONS);\n\n super((subscriber) =>\n merge(\n tuiTypedFromEvent(el, 'touchstart', {passive: true}),\n tuiTypedFromEvent(doc, 'touchend'),\n )\n .pipe(\n pairwise(),\n filter(\n ([first, second]) =>\n !!first.touches.length &&\n first.touches[0]?.identifier ===\n second.changedTouches[0]?.identifier,\n ),\n map(([start, end]) => {\n const startX = start.touches[0]?.clientX ?? 0;\n const startY = start.touches[0]?.clientY ?? 0;\n const endX = end.changedTouches[0]?.clientX ?? 0;\n const endY = end.changedTouches[0]?.clientY ?? 0;\n const distanceX = startX - endX;\n const distanceY = startY - endY;\n const duration = end.timeStamp - start.timeStamp;\n\n if (\n (Math.abs(distanceX) > threshold ||\n Math.abs(distanceY) > threshold) &&\n duration < timeout\n ) {\n return {\n direction: tuiGetSwipeDirection(distanceX, distanceY),\n events: [start, end] as [TouchEvent, TouchEvent],\n };\n }\n\n return null;\n }),\n filter(tuiIsPresent),\n )\n .subscribe(subscriber),\n );\n }\n}\n\nfunction tuiGetSwipeDirection(deltaX: number, deltaY: number): TuiSwipeDirection {\n if (Math.abs(deltaY) > Math.abs(deltaX)) {\n return deltaY > 0 ? 'top' : 'bottom';\n }\n\n return deltaX > 0 ? 'left' : 'right';\n}\n","import {Directive, inject} from '@angular/core';\nimport {outputFromObservable} from '@angular/core/rxjs-interop';\n\nimport {TuiSwipeService} from './swipe.service';\n\n@Directive({\n selector: '[tuiSwipe]',\n providers: [TuiSwipeService],\n})\nexport class TuiSwipe {\n public readonly tuiSwipe = outputFromObservable(inject(TuiSwipeService));\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -106,11 +106,11 @@ function truncate(text, left, right) {
|
|
|
106
106
|
|
|
107
107
|
class Styles {
|
|
108
108
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: Styles, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
109
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: Styles, isStandalone: true, selector: "ng-component", exportAs: ["tui-truncate-5.
|
|
109
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: Styles, isStandalone: true, selector: "ng-component", exportAs: ["tui-truncate-5.5.0-canary.d684136"], ngImport: i0, template: '', isInline: true, styles: ["[tuiTruncate]:where(*[data-tui-version=\"5.5.0-canary.d684136\"]){display:-webkit-box;letter-spacing:-1rem;-webkit-text-fill-color:transparent;-webkit-box-orient:block-axis;-webkit-line-clamp:1;overflow:hidden}[tuiTruncate]:where(*[data-tui-version=\"5.5.0-canary.d684136\"])[data-lines=\"1\"]:before{white-space:nowrap}[tuiTruncate]:where(*[data-tui-version=\"5.5.0-canary.d684136\"]):before{content:attr(data-text);inline-size:100%;letter-spacing:normal;-webkit-text-fill-color:currentColor;white-space:normal;overflow-wrap:anywhere}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
110
110
|
}
|
|
111
111
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: Styles, decorators: [{
|
|
112
112
|
type: Component,
|
|
113
|
-
args: [{ template: '', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, exportAs: `tui-truncate-${TUI_VERSION}`, styles: ["[tuiTruncate]:where(*[data-tui-version=\"5.
|
|
113
|
+
args: [{ template: '', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, exportAs: `tui-truncate-${TUI_VERSION}`, styles: ["[tuiTruncate]:where(*[data-tui-version=\"5.5.0-canary.d684136\"]){display:-webkit-box;letter-spacing:-1rem;-webkit-text-fill-color:transparent;-webkit-box-orient:block-axis;-webkit-line-clamp:1;overflow:hidden}[tuiTruncate]:where(*[data-tui-version=\"5.5.0-canary.d684136\"])[data-lines=\"1\"]:before{white-space:nowrap}[tuiTruncate]:where(*[data-tui-version=\"5.5.0-canary.d684136\"]):before{content:attr(data-text);inline-size:100%;letter-spacing:normal;-webkit-text-fill-color:currentColor;white-space:normal;overflow-wrap:anywhere}\n"] }]
|
|
114
114
|
}] });
|
|
115
115
|
class TuiTruncate {
|
|
116
116
|
constructor() {
|
|
@@ -129,7 +129,7 @@ class TuiTruncate {
|
|
|
129
129
|
return this.el.innerText.trim();
|
|
130
130
|
}
|
|
131
131
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: TuiTruncate, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
132
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.20", type: TuiTruncate, isStandalone: true, selector: "[tuiTruncate]", inputs: { lines: { classPropertyName: "lines", publicName: "tuiTruncate", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "
|
|
132
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.20", type: TuiTruncate, isStandalone: true, selector: "[tuiTruncate]", inputs: { lines: { classPropertyName: "lines", publicName: "tuiTruncate", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "data-tui-version": "5.5.0-canary.d684136", "tuiTruncate": "" }, properties: { "attr.data-lines": "lines()", "attr.data-text": "truncated()", "style.-webkit-line-clamp": "lines()" } }, providers: [
|
|
133
133
|
TuiTruncateService,
|
|
134
134
|
WaResizeObserverService,
|
|
135
135
|
WaMutationObserverService,
|
|
@@ -161,8 +161,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
|
|
|
161
161
|
},
|
|
162
162
|
],
|
|
163
163
|
host: {
|
|
164
|
-
tuiTruncate: '',
|
|
165
164
|
'data-tui-version': TUI_VERSION,
|
|
165
|
+
tuiTruncate: '',
|
|
166
166
|
'[attr.data-lines]': 'lines()',
|
|
167
167
|
'[attr.data-text]': 'truncated()',
|
|
168
168
|
'[style.-webkit-line-clamp]': 'lines()',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taiga-ui-cdk-directives-truncate.mjs","sources":["../../../projects/cdk/directives/truncate/truncate.service.ts","../../../projects/cdk/directives/truncate/truncate.directive.ts","../../../projects/cdk/directives/truncate/taiga-ui-cdk-directives-truncate.ts"],"sourcesContent":["import {DOCUMENT, isPlatformBrowser} from '@angular/common';\nimport {inject, Injectable, PLATFORM_ID} from '@angular/core';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\n\nconst ELLIPSIS = '\\u2026';\n\n@Injectable()\nexport class TuiTruncateService {\n private readonly el = tuiInjectElement();\n private readonly ctx = isPlatformBrowser(inject(PLATFORM_ID))\n ? inject(DOCUMENT).createElement('canvas').getContext('2d')\n : null;\n\n public truncate(text: string, lines: number): string {\n if (!this.ctx || !text || lines < 1) {\n return text;\n }\n\n const style = getComputedStyle(this.el);\n const fontFamily = style.fontFamily || 'sans-serif';\n const fontSize = style.fontSize || '14px';\n const fontWeight = style.fontWeight || '400';\n const paddingLeft = Number.parseFloat(style.paddingLeft) || 0;\n const paddingRight = Number.parseFloat(style.paddingRight) || 0;\n const availableWidth = this.el.clientWidth - paddingLeft - paddingRight;\n const safeWidth = Math.max(1, availableWidth - 4);\n\n this.ctx.font = `${fontWeight} ${fontSize} ${fontFamily}`;\n\n if (this.getLines(text, safeWidth).length <= lines) {\n return text;\n }\n\n let low = 1;\n let high = Math.max(1, text.length - ELLIPSIS.length);\n let best = truncate(text, 1, 0);\n\n while (low <= high) {\n const keepLength = Math.floor((low + high) / 2);\n const normalized = Math.max(1, keepLength);\n const left = Math.ceil(normalized / 2);\n const right = Math.floor(normalized / 2);\n const candidate = truncate(text, left, right);\n const candidateLines = this.getLines(candidate, safeWidth).length;\n\n if (candidateLines <= lines) {\n best = candidate;\n low = keepLength + 1;\n } else {\n high = keepLength - 1;\n }\n }\n\n return this.getLines(best, safeWidth).slice(0, lines).join(' ');\n }\n\n private getLines(text: string, maxWidth: number): string[] {\n if (!this.ctx || !text) {\n return [];\n }\n\n const words = text.split(' ');\n const lines: string[] = [];\n let currentLine = '';\n\n for (const word of words) {\n const candidate = currentLine ? `${currentLine} ${word}` : word;\n\n if (this.ctx.measureText(candidate).width <= maxWidth) {\n currentLine = candidate;\n continue;\n }\n\n if (currentLine) {\n lines.push(currentLine);\n currentLine = '';\n }\n\n if (this.ctx.measureText(word).width <= maxWidth) {\n currentLine = word;\n continue;\n }\n\n let chunk = '';\n\n for (const char of word) {\n const nextChunk = `${chunk}${char}`;\n\n if (this.ctx.measureText(nextChunk).width <= maxWidth) {\n chunk = nextChunk;\n } else {\n if (chunk) {\n lines.push(chunk);\n }\n\n chunk = char;\n }\n }\n\n currentLine = chunk;\n }\n\n if (currentLine) {\n lines.push(currentLine);\n }\n\n return lines;\n }\n}\n\nfunction truncate(text: string, left: number, right: number): string {\n return `${text.slice(0, left)}${ELLIPSIS}${right > 0 ? text.slice(-right) : ''}`;\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n Directive,\n inject,\n input,\n ViewEncapsulation,\n} from '@angular/core';\nimport {toSignal} from '@angular/core/rxjs-interop';\nimport {\n WA_MUTATION_OBSERVER_INIT,\n WaMutationObserverService,\n} from '@ng-web-apis/mutation-observer';\nimport {WaResizeObserverService} from '@ng-web-apis/resize-observer';\nimport {TUI_VERSION} from '@taiga-ui/cdk/constants';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {tuiWithStyles} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {map} from 'rxjs';\n\nimport {TuiTruncateService} from './truncate.service';\n\n@Component({\n template: '',\n styles: `\n [data-tui-version='${TUI_VERSION}'] {\n @import './truncate.styles.less';\n }\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n exportAs: `tui-truncate-${TUI_VERSION}`,\n})\nclass Styles {}\n\n@Directive({\n selector: '[tuiTruncate]',\n providers: [\n TuiTruncateService,\n WaResizeObserverService,\n WaMutationObserverService,\n {\n provide: WA_MUTATION_OBSERVER_INIT,\n useValue: {\n attributes: true,\n characterData: true,\n subtree: true,\n },\n },\n ],\n host: {\n tuiTruncate: '',\n 'data-tui-version': TUI_VERSION,\n '[attr.data-lines]': 'lines()',\n '[attr.data-text]': 'truncated()',\n '[style.-webkit-line-clamp]': 'lines()',\n },\n})\nexport class TuiTruncate {\n private readonly service = inject(TuiTruncateService);\n private readonly el = tuiInjectElement();\n private readonly width = toSignal(\n inject(WaResizeObserverService).pipe(map(([e]) => e?.contentRect.width ?? 0)),\n {initialValue: 0},\n );\n\n protected readonly text = toSignal(\n inject(WaMutationObserverService).pipe(map(() => this.innerText)),\n {initialValue: this.innerText},\n );\n\n protected readonly nothing = tuiWithStyles(Styles);\n\n public readonly lines = input(1, {\n alias: 'tuiTruncate',\n transform: (value: number | string) => Math.max(Number(value) || 1, 1),\n });\n\n public readonly truncated = computed((_ = this.width()) =>\n this.service.truncate(this.text(), this.lines()),\n );\n\n private get innerText(): string {\n return this.el.innerText.trim();\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-truncate.mjs","sources":["../../../projects/cdk/directives/truncate/truncate.service.ts","../../../projects/cdk/directives/truncate/truncate.directive.ts","../../../projects/cdk/directives/truncate/taiga-ui-cdk-directives-truncate.ts"],"sourcesContent":["import {DOCUMENT, isPlatformBrowser} from '@angular/common';\nimport {inject, Injectable, PLATFORM_ID} from '@angular/core';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\n\nconst ELLIPSIS = '\\u2026';\n\n@Injectable()\nexport class TuiTruncateService {\n private readonly el = tuiInjectElement();\n\n private readonly ctx = isPlatformBrowser(inject(PLATFORM_ID))\n ? inject(DOCUMENT).createElement('canvas').getContext('2d')\n : null;\n\n public truncate(text: string, lines: number): string {\n if (!this.ctx || !text || lines < 1) {\n return text;\n }\n\n const style = getComputedStyle(this.el);\n const fontFamily = style.fontFamily || 'sans-serif';\n const fontSize = style.fontSize || '14px';\n const fontWeight = style.fontWeight || '400';\n const paddingLeft = Number.parseFloat(style.paddingLeft) || 0;\n const paddingRight = Number.parseFloat(style.paddingRight) || 0;\n const availableWidth = this.el.clientWidth - paddingLeft - paddingRight;\n const safeWidth = Math.max(1, availableWidth - 4);\n\n this.ctx.font = `${fontWeight} ${fontSize} ${fontFamily}`;\n\n if (this.getLines(text, safeWidth).length <= lines) {\n return text;\n }\n\n let low = 1;\n let high = Math.max(1, text.length - ELLIPSIS.length);\n let best = truncate(text, 1, 0);\n\n while (low <= high) {\n const keepLength = Math.floor((low + high) / 2);\n const normalized = Math.max(1, keepLength);\n const left = Math.ceil(normalized / 2);\n const right = Math.floor(normalized / 2);\n const candidate = truncate(text, left, right);\n const candidateLines = this.getLines(candidate, safeWidth).length;\n\n if (candidateLines <= lines) {\n best = candidate;\n low = keepLength + 1;\n } else {\n high = keepLength - 1;\n }\n }\n\n return this.getLines(best, safeWidth).slice(0, lines).join(' ');\n }\n\n private getLines(text: string, maxWidth: number): string[] {\n if (!this.ctx || !text) {\n return [];\n }\n\n const words = text.split(' ');\n const lines: string[] = [];\n let currentLine = '';\n\n for (const word of words) {\n const candidate = currentLine ? `${currentLine} ${word}` : word;\n\n if (this.ctx.measureText(candidate).width <= maxWidth) {\n currentLine = candidate;\n continue;\n }\n\n if (currentLine) {\n lines.push(currentLine);\n currentLine = '';\n }\n\n if (this.ctx.measureText(word).width <= maxWidth) {\n currentLine = word;\n continue;\n }\n\n let chunk = '';\n\n for (const char of word) {\n const nextChunk = `${chunk}${char}`;\n\n if (this.ctx.measureText(nextChunk).width <= maxWidth) {\n chunk = nextChunk;\n } else {\n if (chunk) {\n lines.push(chunk);\n }\n\n chunk = char;\n }\n }\n\n currentLine = chunk;\n }\n\n if (currentLine) {\n lines.push(currentLine);\n }\n\n return lines;\n }\n}\n\nfunction truncate(text: string, left: number, right: number): string {\n return `${text.slice(0, left)}${ELLIPSIS}${right > 0 ? text.slice(-right) : ''}`;\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n Directive,\n inject,\n input,\n ViewEncapsulation,\n} from '@angular/core';\nimport {toSignal} from '@angular/core/rxjs-interop';\nimport {\n WA_MUTATION_OBSERVER_INIT,\n WaMutationObserverService,\n} from '@ng-web-apis/mutation-observer';\nimport {WaResizeObserverService} from '@ng-web-apis/resize-observer';\nimport {TUI_VERSION} from '@taiga-ui/cdk/constants';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {tuiWithStyles} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {map} from 'rxjs';\n\nimport {TuiTruncateService} from './truncate.service';\n\n@Component({\n template: '',\n styles: `\n [data-tui-version='${TUI_VERSION}'] {\n @import './truncate.styles.less';\n }\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n exportAs: `tui-truncate-${TUI_VERSION}`,\n})\nclass Styles {}\n\n@Directive({\n selector: '[tuiTruncate]',\n providers: [\n TuiTruncateService,\n WaResizeObserverService,\n WaMutationObserverService,\n {\n provide: WA_MUTATION_OBSERVER_INIT,\n useValue: {\n attributes: true,\n characterData: true,\n subtree: true,\n },\n },\n ],\n host: {\n 'data-tui-version': TUI_VERSION,\n tuiTruncate: '',\n '[attr.data-lines]': 'lines()',\n '[attr.data-text]': 'truncated()',\n '[style.-webkit-line-clamp]': 'lines()',\n },\n})\nexport class TuiTruncate {\n private readonly service = inject(TuiTruncateService);\n private readonly el = tuiInjectElement();\n\n private readonly width = toSignal(\n inject(WaResizeObserverService).pipe(map(([e]) => e?.contentRect.width ?? 0)),\n {initialValue: 0},\n );\n\n protected readonly text = toSignal(\n inject(WaMutationObserverService).pipe(map(() => this.innerText)),\n {initialValue: this.innerText},\n );\n\n protected readonly nothing = tuiWithStyles(Styles);\n\n public readonly lines = input(1, {\n alias: 'tuiTruncate',\n transform: (value: number | string) => Math.max(Number(value) || 1, 1),\n });\n\n public readonly truncated = computed((_ = this.width()) =>\n this.service.truncate(this.text(), this.lines()),\n );\n\n private get innerText(): string {\n return this.el.innerText.trim();\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taiga-ui-cdk-directives-validator.mjs","sources":["../../../projects/cdk/directives/validator/validator.directive.ts","../../../projects/cdk/directives/validator/taiga-ui-cdk-directives-validator.ts"],"sourcesContent":["import {Directive, type OnChanges} from '@angular/core';\nimport {NG_VALIDATORS, type Validator, Validators} from '@angular/forms';\nimport {EMPTY_FUNCTION} from '@taiga-ui/cdk/constants';\nimport {tuiProvide} from '@taiga-ui/cdk/utils/di';\n\n@Directive({\n selector: '[tuiValidator]',\n inputs: ['validate: tuiValidator'],\n providers: [tuiProvide(NG_VALIDATORS, TuiValidator, true)],\n})\nexport class TuiValidator implements Validator, OnChanges {\n protected onChange = EMPTY_FUNCTION;\n
|
|
1
|
+
{"version":3,"file":"taiga-ui-cdk-directives-validator.mjs","sources":["../../../projects/cdk/directives/validator/validator.directive.ts","../../../projects/cdk/directives/validator/taiga-ui-cdk-directives-validator.ts"],"sourcesContent":["import {Directive, type OnChanges} from '@angular/core';\nimport {NG_VALIDATORS, type Validator, Validators} from '@angular/forms';\nimport {EMPTY_FUNCTION} from '@taiga-ui/cdk/constants';\nimport {tuiProvide} from '@taiga-ui/cdk/utils/di';\n\n@Directive({\n selector: '[tuiValidator]',\n inputs: ['validate: tuiValidator'],\n providers: [tuiProvide(NG_VALIDATORS, TuiValidator, true)],\n})\nexport class TuiValidator implements Validator, OnChanges {\n protected onChange = EMPTY_FUNCTION;\n public validate = Validators.nullValidator;\n\n public registerOnValidatorChange(onChange: (...args: any[]) => void): void {\n this.onChange = onChange;\n }\n\n public ngOnChanges(): void {\n this.onChange();\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;MAUa,YAAY,CAAA;AALzB,IAAA,WAAA,GAAA;QAMc,IAAA,CAAA,QAAQ,GAAG,cAAc;AAC5B,QAAA,IAAA,CAAA,QAAQ,GAAG,UAAU,CAAC,aAAa;AAS7C,IAAA;AAPU,IAAA,yBAAyB,CAAC,QAAkC,EAAA;AAC/D,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;IAC5B;IAEO,WAAW,GAAA;QACd,IAAI,CAAC,QAAQ,EAAE;IACnB;+GAVS,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAZ,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,CAAA,cAAA,EAAA,UAAA,CAAA,EAAA,EAAA,SAAA,EAFV,CAAC,UAAU,CAAC,aAAa,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAEjD,YAAY,EAAA,UAAA,EAAA,CAAA;kBALxB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,gBAAgB;oBAC1B,MAAM,EAAE,CAAC,wBAAwB,CAAC;oBAClC,SAAS,EAAE,CAAC,UAAU,CAAC,aAAa,EAAA,YAAA,EAAgB,IAAI,CAAC,CAAC;AAC7D,iBAAA;;;ACTD;;AAEG;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taiga-ui-cdk-directives-with-styles.mjs","sources":["../../../projects/cdk/directives/with-styles/with-styles.directive.ts","../../../projects/cdk/directives/with-styles/taiga-ui-cdk-directives-with-styles.ts"],"sourcesContent":["import {\n createComponent,\n Directive,\n EnvironmentInjector,\n inject,\n InjectionToken,\n type OnDestroy,\n type Type,\n type ValueProvider,\n} from '@angular/core';\n\nconst TUI_STYLES = new InjectionToken<ReadonlyArray<Type<unknown>>>(\n ngDevMode ? 'TUI_STYLES' : '',\n);\n\nexport function provideStyles(useValue: Type<unknown>): ValueProvider {\n return {provide: TUI_STYLES, multi: true, useValue};\n}\n\n// Use it after this is fixed: https://github.com/angular/angular/issues/57846\n@Directive()\nexport class TuiWithStyles implements OnDestroy {\n private readonly injector = inject(EnvironmentInjector);\n private readonly refs = inject(TUI_STYLES, {self: true}).map((component) =>\n createComponent(component, {environmentInjector: this.injector}),\n );\n\n public ngOnDestroy(): void {\n this.refs.forEach((ref) => ref.destroy());\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;AAWA,MAAM,UAAU,GAAG,IAAI,cAAc,CACjC,SAAS,GAAG,YAAY,GAAG,EAAE,CAChC;AAEK,SAAU,aAAa,CAAC,QAAuB,EAAA;IACjD,OAAO,EAAC,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAC;AACvD;AAEA;MAEa,aAAa,CAAA;AAD1B,IAAA,WAAA,GAAA;AAEqB,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"taiga-ui-cdk-directives-with-styles.mjs","sources":["../../../projects/cdk/directives/with-styles/with-styles.directive.ts","../../../projects/cdk/directives/with-styles/taiga-ui-cdk-directives-with-styles.ts"],"sourcesContent":["import {\n createComponent,\n Directive,\n EnvironmentInjector,\n inject,\n InjectionToken,\n type OnDestroy,\n type Type,\n type ValueProvider,\n} from '@angular/core';\n\nconst TUI_STYLES = new InjectionToken<ReadonlyArray<Type<unknown>>>(\n ngDevMode ? 'TUI_STYLES' : '',\n);\n\nexport function provideStyles(useValue: Type<unknown>): ValueProvider {\n return {provide: TUI_STYLES, multi: true, useValue};\n}\n\n// Use it after this is fixed: https://github.com/angular/angular/issues/57846\n@Directive()\nexport class TuiWithStyles implements OnDestroy {\n private readonly injector = inject(EnvironmentInjector);\n\n private readonly refs = inject(TUI_STYLES, {self: true}).map((component) =>\n createComponent(component, {environmentInjector: this.injector}),\n );\n\n public ngOnDestroy(): void {\n this.refs.forEach((ref) => ref.destroy());\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;AAWA,MAAM,UAAU,GAAG,IAAI,cAAc,CACjC,SAAS,GAAG,YAAY,GAAG,EAAE,CAChC;AAEK,SAAU,aAAa,CAAC,QAAuB,EAAA;IACjD,OAAO,EAAC,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAC;AACvD;AAEA;MAEa,aAAa,CAAA;AAD1B,IAAA,WAAA,GAAA;AAEqB,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAEtC,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,UAAU,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,KACnE,eAAe,CAAC,SAAS,EAAE,EAAC,mBAAmB,EAAE,IAAI,CAAC,QAAQ,EAAC,CAAC,CACnE;AAKJ,IAAA;IAHU,WAAW,GAAA;AACd,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC;IAC7C;+GATS,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAb,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBADzB;;;ACpBD;;AAEG;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taiga-ui-cdk-directives-zoom.mjs","sources":["../../../projects/cdk/directives/zoom/zoom.options.ts","../../../projects/cdk/directives/zoom/zoom.service.ts","../../../projects/cdk/directives/zoom/zoom.directive.ts","../../../projects/cdk/directives/zoom/taiga-ui-cdk-directives-zoom.ts"],"sourcesContent":["import {InjectionToken} from '@angular/core';\n\nimport {type TuiZoomOptions} from './zoom.types';\n\n/**\n * Zoom options\n */\nexport const TUI_ZOOM_OPTIONS = new InjectionToken<TuiZoomOptions>(\n ngDevMode ? 'TUI_ZOOM_OPTIONS' : '',\n {factory: () => ({wheelSensitivity: 0.01})},\n);\n","import {inject, Injectable} from '@angular/core';\nimport {tuiPreventDefault, tuiTypedFromEvent} from '@taiga-ui/cdk/observables';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {tuiDistanceBetweenTouches} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {filter, map, merge, Observable, scan, switchMap, takeUntil} from 'rxjs';\n\nimport {TUI_ZOOM_OPTIONS} from './zoom.options';\nimport {type TuiZoomEvent} from './zoom.types';\n\nconst TOUCH_SENSITIVITY = 0.01;\n\n@Injectable()\nexport class TuiZoomService extends Observable<TuiZoomEvent> {\n constructor() {\n const el = tuiInjectElement();\n const {wheelSensitivity} = inject(TUI_ZOOM_OPTIONS);\n\n super((subscriber) =>\n merge(\n tuiTypedFromEvent(el, 'touchstart', {passive: true}).pipe(\n filter(({touches}) => touches.length > 1),\n switchMap((startEvent) =>\n tuiTypedFromEvent(el, 'touchmove', {passive: true}).pipe(\n tuiPreventDefault(),\n scan(\n (prev, event) => {\n const distance = tuiDistanceBetweenTouches(event);\n\n return {\n event,\n distance,\n delta:\n (distance - prev.distance) *\n TOUCH_SENSITIVITY,\n };\n },\n {\n event: startEvent,\n distance: tuiDistanceBetweenTouches(startEvent),\n delta: 0,\n },\n ),\n map(({event, delta}) => {\n const clientX =\n ((event.touches[0]?.clientX ?? 0) +\n (event.touches[1]?.clientX ?? 0)) /\n 2;\n const clientY =\n ((event.touches[0]?.clientY ?? 0) +\n (event.touches[1]?.clientY ?? 0)) /\n 2;\n\n return {clientX, clientY, delta, event};\n }),\n takeUntil(tuiTypedFromEvent(el, 'touchend')),\n ),\n ),\n ),\n tuiTypedFromEvent(el, 'wheel', {passive: false}).pipe(\n tuiPreventDefault(),\n map((wheel) => ({\n clientX: wheel.clientX,\n clientY: wheel.clientY,\n delta: -wheel.deltaY * wheelSensitivity,\n event: wheel,\n })),\n ),\n ).subscribe(subscriber),\n );\n }\n}\n","import {Directive, inject} from '@angular/core';\n\nimport {TuiZoomService} from './zoom.service';\n\n@Directive({\n selector: '[tuiZoom]',\n outputs: ['tuiZoom'],\n providers: [TuiZoomService],\n host: {'[style.touch-action]': '\"none\"'},\n})\nexport class TuiZoom {\n protected readonly tuiZoom = inject(TuiZoomService);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;AAIA;;AAEG;AACI,MAAM,gBAAgB,GAAG,IAAI,cAAc,CAC9C,SAAS,GAAG,kBAAkB,GAAG,EAAE,EACnC,EAAC,OAAO,EAAE,OAAO,EAAC,gBAAgB,EAAE,IAAI,EAAC,CAAC,EAAC;;ACA/C,MAAM,iBAAiB,GAAG,IAAI;AAGxB,MAAO,cAAe,SAAQ,UAAwB,CAAA;AACxD,IAAA,WAAA,GAAA;AACI,QAAA,MAAM,EAAE,GAAG,gBAAgB,EAAE;QAC7B,MAAM,EAAC,gBAAgB,EAAC,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAEnD,QAAA,KAAK,CAAC,CAAC,UAAU,KACb,KAAK,CACD,iBAAiB,CAAC,EAAE,EAAE,YAAY,EAAE,EAAC,OAAO,EAAE,IAAI,EAAC,CAAC,CAAC,IAAI,CACrD,MAAM,CAAC,CAAC,EAAC,OAAO,EAAC,KAAK,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,EACzC,SAAS,CAAC,CAAC,UAAU,KACjB,iBAAiB,CAAC,EAAE,EAAE,WAAW,EAAE,EAAC,OAAO,EAAE,IAAI,EAAC,CAAC,CAAC,IAAI,CACpD,iBAAiB,EAAE,EACnB,IAAI,CACA,CAAC,IAAI,EAAE,KAAK,KAAI;AACZ,YAAA,MAAM,QAAQ,GAAG,yBAAyB,CAAC,KAAK,CAAC;YAEjD,OAAO;gBACH,KAAK;gBACL,QAAQ;AACR,gBAAA,KAAK,EACD,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ;oBACzB,iBAAiB;aACxB;AACL,QAAA,CAAC,EACD;AACI,YAAA,KAAK,EAAE,UAAU;AACjB,YAAA,QAAQ,EAAE,yBAAyB,CAAC,UAAU,CAAC;AAC/C,YAAA,KAAK,EAAE,CAAC;SACX,CACJ,EACD,GAAG,CAAC,CAAC,EAAC,KAAK,EAAE,KAAK,EAAC,KAAI;AACnB,YAAA,MAAM,OAAO,GACT,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,IAAI,CAAC;iBAC3B,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,IAAI,CAAC,CAAC;AACpC,gBAAA,CAAC;
|
|
1
|
+
{"version":3,"file":"taiga-ui-cdk-directives-zoom.mjs","sources":["../../../projects/cdk/directives/zoom/zoom.options.ts","../../../projects/cdk/directives/zoom/zoom.service.ts","../../../projects/cdk/directives/zoom/zoom.directive.ts","../../../projects/cdk/directives/zoom/taiga-ui-cdk-directives-zoom.ts"],"sourcesContent":["import {InjectionToken} from '@angular/core';\n\nimport {type TuiZoomOptions} from './zoom.types';\n\n/**\n * Zoom options\n */\nexport const TUI_ZOOM_OPTIONS = new InjectionToken<TuiZoomOptions>(\n ngDevMode ? 'TUI_ZOOM_OPTIONS' : '',\n {factory: () => ({wheelSensitivity: 0.01})},\n);\n","import {inject, Injectable} from '@angular/core';\nimport {tuiPreventDefault, tuiTypedFromEvent} from '@taiga-ui/cdk/observables';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {tuiDistanceBetweenTouches} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {filter, map, merge, Observable, scan, switchMap, takeUntil} from 'rxjs';\n\nimport {TUI_ZOOM_OPTIONS} from './zoom.options';\nimport {type TuiZoomEvent} from './zoom.types';\n\nconst TOUCH_SENSITIVITY = 0.01;\n\n@Injectable()\nexport class TuiZoomService extends Observable<TuiZoomEvent> {\n constructor() {\n const el = tuiInjectElement();\n const {wheelSensitivity} = inject(TUI_ZOOM_OPTIONS);\n\n super((subscriber) =>\n merge(\n tuiTypedFromEvent(el, 'touchstart', {passive: true}).pipe(\n filter(({touches}) => touches.length > 1),\n switchMap((startEvent) =>\n tuiTypedFromEvent(el, 'touchmove', {passive: true}).pipe(\n tuiPreventDefault(),\n scan(\n (prev, event) => {\n const distance = tuiDistanceBetweenTouches(event);\n\n return {\n event,\n distance,\n delta:\n (distance - prev.distance) *\n TOUCH_SENSITIVITY,\n };\n },\n {\n event: startEvent,\n distance: tuiDistanceBetweenTouches(startEvent),\n delta: 0,\n },\n ),\n map(({event, delta}) => {\n const clientX =\n ((event.touches[0]?.clientX ?? 0) +\n (event.touches[1]?.clientX ?? 0)) /\n 2;\n\n const clientY =\n ((event.touches[0]?.clientY ?? 0) +\n (event.touches[1]?.clientY ?? 0)) /\n 2;\n\n return {clientX, clientY, delta, event};\n }),\n takeUntil(tuiTypedFromEvent(el, 'touchend')),\n ),\n ),\n ),\n tuiTypedFromEvent(el, 'wheel', {passive: false}).pipe(\n tuiPreventDefault(),\n map((wheel) => ({\n clientX: wheel.clientX,\n clientY: wheel.clientY,\n delta: -wheel.deltaY * wheelSensitivity,\n event: wheel,\n })),\n ),\n ).subscribe(subscriber),\n );\n }\n}\n","import {Directive, inject} from '@angular/core';\n\nimport {TuiZoomService} from './zoom.service';\n\n@Directive({\n selector: '[tuiZoom]',\n outputs: ['tuiZoom'],\n providers: [TuiZoomService],\n host: {'[style.touch-action]': '\"none\"'},\n})\nexport class TuiZoom {\n protected readonly tuiZoom = inject(TuiZoomService);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|