{"version":3,"file":"taiga-ui-core-classes.mjs","sources":["../../../projects/core/classes/accessors.ts","../../../projects/core/classes/vehicle.ts","../../../projects/core/classes/driver.ts","../../../projects/core/classes/taiga-ui-core-classes.ts"],"sourcesContent":["import {\n    type AbstractType,\n    type ExistingProvider,\n    type FactoryProvider,\n    inject,\n    Optional,\n    SkipSelf,\n    type Type,\n} from '@angular/core';\nimport {tuiProvide} from '@taiga-ui/cdk/utils/di';\nimport {type TuiPoint} from '@taiga-ui/core/types';\n\nexport abstract class TuiAccessor {\n    public abstract readonly type: string;\n}\n\nexport abstract class TuiPositionAccessor extends TuiAccessor {\n    public abstract getPosition(rect: DOMRect): TuiPoint;\n}\n\nexport abstract class TuiRectAccessor extends TuiAccessor {\n    public abstract getClientRect(): DOMRect;\n}\n\nexport function tuiInjectAccessor<T extends TuiAccessor>(\n    accessor: AbstractType<T>,\n    type: string,\n): T {\n    return find(inject<readonly T[]>(accessor as any, {self: true}), type);\n}\n\n/** TODO: drop fallback in v6 */\nexport function tuiProvideAccessor<T extends TuiAccessor>(\n    provide: AbstractType<T>,\n    type: string,\n    fallback?: Type<T>,\n): FactoryProvider {\n    return fallback\n        ? {\n              provide,\n              deps: [[new SkipSelf(), new Optional(), provide], fallback],\n              useFactory: tuiFallbackAccessor<T>(type),\n          }\n        : {\n              provide,\n              deps: [[new SkipSelf(), provide]],\n              useFactory: (accessors: readonly T[]): T => find(accessors, type),\n          };\n}\n\n/** @deprecated */\nexport function tuiFallbackAccessor<T extends TuiAccessor>(\n    type: string,\n): (accessors: readonly T[] | null, fallback: Omit<T, 'type'>) => T {\n    return (accessors, fallback) =>\n        accessors?.find?.(\n            (accessor) => accessor !== fallback && accessor.type === type,\n        ) || Object.create(fallback, {type: {value: type}});\n}\n\n/** @deprecated */\nexport function tuiPositionAccessorFor(\n    type: string,\n    fallback: Type<TuiPositionAccessor>,\n): FactoryProvider {\n    return tuiProvideAccessor(TuiPositionAccessor, type, fallback);\n}\n\n/** @deprecated */\nexport function tuiRectAccessorFor(\n    type: string,\n    fallback: Type<TuiRectAccessor>,\n): FactoryProvider {\n    return tuiProvideAccessor(TuiRectAccessor, type, fallback);\n}\n\nexport function tuiAsPositionAccessor(\n    accessor: Type<TuiPositionAccessor>,\n): ExistingProvider {\n    return tuiProvide(TuiPositionAccessor, accessor, true);\n}\n\nexport function tuiAsRectAccessor(accessor: Type<TuiRectAccessor>): ExistingProvider {\n    return tuiProvide(TuiRectAccessor, accessor, true);\n}\n\nfunction find<T extends TuiAccessor>(accessors: readonly T[], type: string): T {\n    return [...accessors].reverse().find((accessor) => accessor.type === type)!;\n}\n","import {type ExistingProvider, type Type} from '@angular/core';\nimport {tuiProvide} from '@taiga-ui/cdk/utils/di';\n\nexport abstract class TuiVehicle {\n    public abstract readonly type: string;\n    public abstract toggle(value: boolean): void;\n}\n\nexport function tuiAsVehicle(vehicle: Type<TuiVehicle>): ExistingProvider {\n    return tuiProvide(TuiVehicle, vehicle, true);\n}\n","import {coerceArray} from '@angular/cdk/coercion';\nimport {\n    type AfterViewInit,\n    DestroyRef,\n    Directive,\n    type ExistingProvider,\n    inject,\n    type Type,\n} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {tuiProvide} from '@taiga-ui/cdk/utils/di';\nimport {distinctUntilChanged, merge, Observable} from 'rxjs';\n\nimport {TuiVehicle} from './vehicle';\n\nexport abstract class TuiDriver extends Observable<boolean> {\n    public abstract readonly type: string;\n}\n\nexport function tuiAsDriver(driver: Type<TuiDriver>): ExistingProvider {\n    return tuiProvide(TuiDriver, driver, true);\n}\n\n@Directive()\nexport abstract class TuiDriverDirective implements AfterViewInit {\n    public abstract type: string;\n\n    private readonly destroyRef = inject(DestroyRef);\n\n    private readonly drivers = coerceArray(\n        inject(TuiDriver, {self: true, optional: true}) || [],\n    );\n\n    private readonly vehicles = coerceArray(\n        inject(TuiVehicle, {self: true, optional: true}) || [],\n    );\n\n    public ngAfterViewInit(): void {\n        const vehicle = this.vehicles.find(({type}) => type === this.type);\n\n        merge(...this.drivers.filter(({type}) => type === this.type))\n            .pipe(distinctUntilChanged(), takeUntilDestroyed(this.destroyRef))\n            .subscribe((value) => {\n                vehicle?.toggle(value);\n            });\n    }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;MAYsB,WAAW,CAAA;AAEhC;AAEK,MAAgB,mBAAoB,SAAQ,WAAW,CAAA;AAE5D;AAEK,MAAgB,eAAgB,SAAQ,WAAW,CAAA;AAExD;AAEK,SAAU,iBAAiB,CAC7B,QAAyB,EACzB,IAAY,EAAA;AAEZ,IAAA,OAAO,IAAI,CAAC,MAAM,CAAe,QAAe,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,EAAE,IAAI,CAAC;AAC1E;AAEA;SACgB,kBAAkB,CAC9B,OAAwB,EACxB,IAAY,EACZ,QAAkB,EAAA;AAElB,IAAA,OAAO;AACH,UAAE;YACI,OAAO;AACP,YAAA,IAAI,EAAE,CAAC,CAAC,IAAI,QAAQ,EAAE,EAAE,IAAI,QAAQ,EAAE,EAAE,OAAO,CAAC,EAAE,QAAQ,CAAC;AAC3D,YAAA,UAAU,EAAE,mBAAmB,CAAI,IAAI,CAAC;AAC3C;AACH,UAAE;YACI,OAAO;YACP,IAAI,EAAE,CAAC,CAAC,IAAI,QAAQ,EAAE,EAAE,OAAO,CAAC,CAAC;YACjC,UAAU,EAAE,CAAC,SAAuB,KAAQ,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC;SACpE;AACX;AAEA;AACM,SAAU,mBAAmB,CAC/B,IAAY,EAAA;IAEZ,OAAO,CAAC,SAAS,EAAE,QAAQ,KACvB,SAAS,EAAE,IAAI,GACX,CAAC,QAAQ,KAAK,QAAQ,KAAK,QAAQ,IAAI,QAAQ,CAAC,IAAI,KAAK,IAAI,CAChE,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAC,IAAI,EAAE,EAAC,KAAK,EAAE,IAAI,EAAC,EAAC,CAAC;AAC3D;AAEA;AACM,SAAU,sBAAsB,CAClC,IAAY,EACZ,QAAmC,EAAA;IAEnC,OAAO,kBAAkB,CAAC,mBAAmB,EAAE,IAAI,EAAE,QAAQ,CAAC;AAClE;AAEA;AACM,SAAU,kBAAkB,CAC9B,IAAY,EACZ,QAA+B,EAAA;IAE/B,OAAO,kBAAkB,CAAC,eAAe,EAAE,IAAI,EAAE,QAAQ,CAAC;AAC9D;AAEM,SAAU,qBAAqB,CACjC,QAAmC,EAAA;IAEnC,OAAO,UAAU,CAAC,mBAAmB,EAAE,QAAQ,EAAE,IAAI,CAAC;AAC1D;AAEM,SAAU,iBAAiB,CAAC,QAA+B,EAAA;IAC7D,OAAO,UAAU,CAAC,eAAe,EAAE,QAAQ,EAAE,IAAI,CAAC;AACtD;AAEA,SAAS,IAAI,CAAwB,SAAuB,EAAE,IAAY,EAAA;IACtE,OAAO,CAAC,GAAG,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,IAAI,KAAK,IAAI,CAAE;AAC/E;;MCrFsB,UAAU,CAAA;AAG/B;AAEK,SAAU,YAAY,CAAC,OAAyB,EAAA;IAClD,OAAO,UAAU,CAAC,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC;AAChD;;ACKM,MAAgB,SAAU,SAAQ,UAAmB,CAAA;AAE1D;AAEK,SAAU,WAAW,CAAC,MAAuB,EAAA;IAC/C,OAAO,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC;AAC9C;MAGsB,kBAAkB,CAAA;AADxC,IAAA,WAAA,GAAA;AAIqB,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;QAE/B,IAAA,CAAA,OAAO,GAAG,WAAW,CAClC,MAAM,CAAC,SAAS,EAAE,EAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAC,CAAC,IAAI,EAAE,CACxD;QAEgB,IAAA,CAAA,QAAQ,GAAG,WAAW,CACnC,MAAM,CAAC,UAAU,EAAE,EAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAC,CAAC,IAAI,EAAE,CACzD;AAWJ,IAAA;IATU,eAAe,GAAA;QAClB,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAC,IAAI,EAAC,KAAK,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC;QAElE,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAC,IAAI,EAAC,KAAK,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC;aACvD,IAAI,CAAC,oBAAoB,EAAE,EAAE,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;AAChE,aAAA,SAAS,CAAC,CAAC,KAAK,KAAI;AACjB,YAAA,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC;AAC1B,QAAA,CAAC,CAAC;IACV;+GArBkB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBADvC;;;ACvBD;;AAEG;;;;"}