{"version":3,"file":"table-scroll-container.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/cdk-experimental/table-scroll-container/table-scroll-container.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/cdk-experimental/table-scroll-container/table-scroll-container-module.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {CSP_NONCE, Directive, ElementRef, OnDestroy, OnInit, inject, DOCUMENT} from '@angular/core';\nimport {_IdGenerator} from '@angular/cdk/a11y';\n\nimport {Directionality} from '@angular/cdk/bidi';\nimport {_getShadowRoot} from '@angular/cdk/platform';\nimport {\n  STICKY_POSITIONING_LISTENER,\n  StickyPositioningListener,\n  StickySize,\n  StickyUpdate,\n} from '@angular/cdk/table';\n\n/**\n * Applies styles to the host element that make its scrollbars match up with\n * the non-sticky scrollable portions of the CdkTable contained within.\n *\n * This visual effect only works in Webkit and Blink based browsers (eg Chrome,\n * Safari, Edge). Other browsers such as Firefox will gracefully degrade to\n * normal scrollbar appearance.\n * Further note: These styles have no effect when the browser is using OS-default\n * scrollbars. The easiest way to force them into custom mode is to specify width\n * and height for the scrollbar and thumb.\n */\n@Directive({\n  selector: '[cdkTableScrollContainer]',\n  host: {\n    'class': 'cdk-table-scroll-container',\n  },\n  providers: [{provide: STICKY_POSITIONING_LISTENER, useExisting: CdkTableScrollContainer}],\n})\nexport class CdkTableScrollContainer implements StickyPositioningListener, OnDestroy, OnInit {\n  private readonly _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n  private readonly _document = inject<Document>(DOCUMENT);\n  private readonly _directionality = inject(Directionality, {optional: true});\n  private readonly _nonce = inject(CSP_NONCE, {optional: true});\n\n  private readonly _uniqueClassName = inject(_IdGenerator).getId('cdk-table-scroll-container-');\n  private _styleRoot!: Node;\n  private _styleElement?: HTMLStyleElement;\n\n  /** The most recent sticky column size values from the CdkTable. */\n  private _startSizes: StickySize[] = [];\n  private _endSizes: StickySize[] = [];\n  private _headerSizes: StickySize[] = [];\n  private _footerSizes: StickySize[] = [];\n\n  ngOnInit() {\n    this._elementRef.nativeElement.classList.add(this._uniqueClassName);\n    this._styleRoot = _getShadowRoot(this._elementRef.nativeElement) ?? this._document.head;\n  }\n\n  ngOnDestroy(): void {\n    this._styleElement?.remove();\n    this._styleElement = undefined;\n  }\n\n  stickyColumnsUpdated({sizes}: StickyUpdate): void {\n    this._startSizes = sizes;\n    this._updateScrollbar();\n  }\n\n  stickyEndColumnsUpdated({sizes}: StickyUpdate): void {\n    this._endSizes = sizes;\n    this._updateScrollbar();\n  }\n\n  stickyHeaderRowsUpdated({sizes}: StickyUpdate): void {\n    this._headerSizes = sizes;\n    this._updateScrollbar();\n  }\n\n  stickyFooterRowsUpdated({sizes}: StickyUpdate): void {\n    this._footerSizes = sizes;\n    this._updateScrollbar();\n  }\n\n  /**\n   * Set padding on the scrollbar track based on the sticky states from CdkTable.\n   */\n  private _updateScrollbar(): void {\n    const topMargin = computeMargin(this._headerSizes);\n    const bottomMargin = computeMargin(this._footerSizes);\n    const startMargin = computeMargin(this._startSizes);\n    const endMargin = computeMargin(this._endSizes);\n\n    if (topMargin === 0 && bottomMargin === 0 && startMargin === 0 && endMargin === 0) {\n      this._clearCss();\n      return;\n    }\n\n    const direction = this._directionality ? this._directionality.value : 'ltr';\n    const leftMargin = direction === 'rtl' ? endMargin : startMargin;\n    const rightMargin = direction === 'rtl' ? startMargin : endMargin;\n\n    this._applyCss(`${topMargin}px ${rightMargin}px ${bottomMargin}px ${leftMargin}px`);\n  }\n\n  /** Gets the stylesheet for the scrollbar styles and creates it if need be. */\n  private _getStyleSheet(): CSSStyleSheet {\n    if (!this._styleElement) {\n      this._styleElement = this._document.createElement('style');\n\n      if (this._nonce) {\n        this._styleElement.setAttribute('nonce', this._nonce);\n      }\n\n      this._styleRoot.appendChild(this._styleElement);\n    }\n\n    return this._styleElement.sheet as CSSStyleSheet;\n  }\n\n  /** Updates the stylesheet with the specified scrollbar style. */\n  private _applyCss(value: string) {\n    this._clearCss();\n\n    const selector = `.${this._uniqueClassName}::-webkit-scrollbar-track`;\n    this._getStyleSheet().insertRule(`${selector} {margin: ${value}}`, 0);\n  }\n\n  private _clearCss() {\n    const styleSheet = this._getStyleSheet();\n    if (styleSheet.cssRules.length > 0) {\n      styleSheet.deleteRule(0);\n    }\n  }\n}\n\nfunction computeMargin(sizes: (number | null | undefined)[]): number {\n  let margin = 0;\n  for (const size of sizes) {\n    if (size == null) {\n      break;\n    }\n    margin += size;\n  }\n  return margin;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {NgModule} from '@angular/core';\n\nimport {CdkTableScrollContainer} from './table-scroll-container';\n\n@NgModule({\n  imports: [CdkTableScrollContainer],\n  exports: [CdkTableScrollContainer],\n})\nexport class CdkTableScrollContainerModule {}\n"],"names":["CdkTableScrollContainer","_elementRef","inject","ElementRef","_document","DOCUMENT","_directionality","Directionality","optional","_nonce","CSP_NONCE","_uniqueClassName","_IdGenerator","getId","_styleRoot","_styleElement","_startSizes","_endSizes","_headerSizes","_footerSizes","ngOnInit","nativeElement","classList","add","_getShadowRoot","head","ngOnDestroy","remove","undefined","stickyColumnsUpdated","sizes","_updateScrollbar","stickyEndColumnsUpdated","stickyHeaderRowsUpdated","stickyFooterRowsUpdated","topMargin","computeMargin","bottomMargin","startMargin","endMargin","_clearCss","direction","value","leftMargin","rightMargin","_applyCss","_getStyleSheet","createElement","setAttribute","appendChild","sheet","selector","insertRule","styleSheet","cssRules","length","deleteRule","deps","target","i0","ɵɵFactoryTarget","Directive","isStandalone","host","classAttribute","providers","provide","STICKY_POSITIONING_LISTENER","useExisting","ngImport","decorators","args","margin","size","CdkTableScrollContainerModule","NgModule","imports","exports"],"mappings":"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"}