{"version":3,"file":"fundamental-ngx-core-scrollbar.mjs","sources":["../../../../libs/core/scrollbar/scrollbar.directive.ts","../../../../libs/core/scrollbar/scrollbar.module.ts","../../../../libs/core/scrollbar/fundamental-ngx-core-scrollbar.ts"],"sourcesContent":["import { CdkScrollable } from '@angular/cdk/overlay';\nimport { isPlatformBrowser } from '@angular/common';\nimport {\n    CSP_NONCE,\n    DOCUMENT,\n    Directive,\n    ElementRef,\n    OnDestroy,\n    PLATFORM_ID,\n    Renderer2,\n    booleanAttribute,\n    computed,\n    inject,\n    input\n} from '@angular/core';\nimport { HasElementRef } from '@fundamental-ngx/cdk/utils';\nimport scrollbarStyles from 'fundamental-styles/dist/js/scrollbar';\n\nexport type ScrollbarOverflowOptions = 'auto' | 'scroll' | 'hidden';\n\nlet scrollbarElementsQuantity = 0;\nlet styleSheet: HTMLStyleElement | null = null;\n\n/**\n * The scrollbar directive.\n *\n * Children usage:\n * ```html\n * <div fd-scrollbar>\n * <div fd-scrollbar noVerticalScroll>\n * <div fd-scrollbar [noVerticalScroll]=\"true\">\n * <div fd-scrollbar noHorizontalScroll>\n * <div fd-scrollbar [noHorizontalScroll]=\"true\">\n * ```\n */\n@Directive({\n    selector: '[fdScrollbar], [fd-scrollbar]',\n    host: {\n        class: 'fd-scrollbar',\n        '[style.overflow-x]': '_overflowX()',\n        '[style.overflow-y]': '_overflowY()',\n        '(scroll)': 'onScroll($event)'\n    },\n    hostDirectives: [CdkScrollable]\n})\nexport class ScrollbarDirective implements OnDestroy, HasElementRef {\n    /** Whether overflow horizontal content should be hidden. */\n    readonly noHorizontalScroll = input(false, { transform: booleanAttribute });\n\n    /** Whether overflow vertical content should be hidden. */\n    readonly noVerticalScroll = input(false, { transform: booleanAttribute });\n\n    /** Whether scrollbars should be visible even if content fits. */\n    readonly alwaysVisible = input(false, { transform: booleanAttribute });\n\n    /** @hidden Whether the scrollbar is inside a popover and should stop scroll event propagation. */\n    _inPopover = false;\n\n    /** @hidden */\n    elementRef: ElementRef<HTMLElement> = inject(ElementRef);\n\n    /** @hidden */\n    protected readonly _overflowX = computed<ScrollbarOverflowOptions>(() =>\n        this.noHorizontalScroll() ? 'hidden' : this.alwaysVisible() ? 'scroll' : 'auto'\n    );\n\n    /** @hidden */\n    protected readonly _overflowY = computed<ScrollbarOverflowOptions>(() =>\n        this.noVerticalScroll() ? 'hidden' : this.alwaysVisible() ? 'scroll' : 'auto'\n    );\n\n    /** @hidden */\n    private _document: Document = inject(DOCUMENT);\n\n    /** @hidden */\n    private readonly _csp_nonce = inject(CSP_NONCE, {\n        optional: true\n    });\n\n    /**\n     * @hidden\n     */\n    constructor(renderer2: Renderer2) {\n        scrollbarElementsQuantity++;\n        const platform = inject(PLATFORM_ID);\n        if (!styleSheet && isPlatformBrowser(platform)) {\n            styleSheet = renderer2.createElement('style');\n            styleSheet!.innerHTML = scrollbarStyles.cssSource;\n            if (this._csp_nonce) {\n                styleSheet?.setAttribute('nonce', this._csp_nonce);\n            }\n            renderer2.appendChild(this._document.head, styleSheet);\n        }\n    }\n\n    /** @hidden */\n    onScroll(event: Event): void {\n        if (this._inPopover) {\n            event.stopImmediatePropagation();\n        }\n    }\n\n    /** @hidden */\n    ngOnDestroy(): void {\n        if (--scrollbarElementsQuantity === 0) {\n            styleSheet?.remove();\n            styleSheet = null;\n        }\n    }\n\n    /** method to invoke scroll */\n    scroll(options: ScrollToOptions): void {\n        this.elementRef.nativeElement.scroll(options);\n    }\n}\n","import { NgModule } from '@angular/core';\n\nimport { ScrollbarDirective } from './scrollbar.directive';\n\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\n@NgModule({\n    imports: [ScrollbarDirective],\n    exports: [ScrollbarDirective]\n})\nexport class ScrollbarModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}