{"version":3,"file":"paginator.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/paginator/paginator-intl.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/paginator/paginator.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/paginator/paginator.html","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/paginator/paginator-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 {Injectable} from '@angular/core';\nimport {Subject} from 'rxjs';\n\n/**\n * To modify the labels and text displayed, create a new instance of MatPaginatorIntl and\n * include it in a custom provider\n */\n@Injectable({providedIn: 'root'})\nexport class MatPaginatorIntl {\n  /**\n   * Stream to emit from when labels are changed. Use this to notify components when the labels have\n   * changed after initialization.\n   */\n  readonly changes: Subject<void> = new Subject<void>();\n\n  /** A label for the page size selector. */\n  itemsPerPageLabel: string = 'Items per page:';\n\n  /** A label for the button that increments the current page. */\n  nextPageLabel: string = 'Next page';\n\n  /** A label for the button that decrements the current page. */\n  previousPageLabel: string = 'Previous page';\n\n  /** A label for the button that moves to the first page. */\n  firstPageLabel: string = 'First page';\n\n  /** A label for the button that moves to the last page. */\n  lastPageLabel: string = 'Last page';\n\n  /** A label for the range of items within the current page and the length of the whole list. */\n  getRangeLabel: (page: number, pageSize: number, length: number) => string = (\n    page: number,\n    pageSize: number,\n    length: number,\n  ) => {\n    if (length == 0 || pageSize == 0) {\n      return `0 of ${length}`;\n    }\n\n    length = Math.max(length, 0);\n\n    const startIndex = page * pageSize;\n\n    // If the start index exceeds the list length, do not try and fix the end index to the end.\n    const endIndex =\n      startIndex < length ? Math.min(startIndex + pageSize, length) : startIndex + pageSize;\n\n    return `${startIndex + 1} – ${endIndex} of ${length}`;\n  };\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 {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  EventEmitter,\n  InjectionToken,\n  Input,\n  OnDestroy,\n  OnInit,\n  Output,\n  ViewEncapsulation,\n  booleanAttribute,\n  inject,\n  numberAttribute,\n} from '@angular/core';\nimport {_IdGenerator} from '@angular/cdk/a11y';\nimport {MatOption, ThemePalette} from '../core';\nimport {MatSelect} from '../select';\nimport {MatIconButton} from '../button';\nimport {MatTooltip} from '../tooltip';\nimport {MatFormField, MatFormFieldAppearance} from '../form-field';\nimport {Observable, ReplaySubject, Subscription} from 'rxjs';\nimport {MatPaginatorIntl} from './paginator-intl';\n\n/** The default page size if there is no page size and there are no provided page size options. */\nconst DEFAULT_PAGE_SIZE = 50;\n\n/** Object that can used to configure the underlying `MatSelect` inside a `MatPaginator`. */\nexport interface MatPaginatorSelectConfig {\n  /** Whether to center the active option over the trigger. */\n  disableOptionCentering?: boolean;\n\n  /** Classes to be passed to the select panel. */\n  panelClass?: string | string[] | Set<string> | {[key: string]: any};\n}\n\n/**\n * Change event object that is emitted when the user selects a\n * different page size or navigates to another page.\n */\nexport class PageEvent {\n  /** The current page index. */\n  pageIndex: number;\n\n  /**\n   * Index of the page that was selected previously.\n   * @breaking-change 8.0.0 To be made into a required property.\n   */\n  previousPageIndex?: number;\n\n  /** The current page size. */\n  pageSize: number;\n\n  /** The current total number of items being paged. */\n  length: number;\n}\n\n// Note that while `MatPaginatorDefaultOptions` and `MAT_PAGINATOR_DEFAULT_OPTIONS` are identical\n// between the MDC and non-MDC versions, we have to duplicate them, because the type of\n// `formFieldAppearance` is narrower in the MDC version.\n\n/** Object that can be used to configure the default options for the paginator module. */\nexport interface MatPaginatorDefaultOptions {\n  /** Number of items to display on a page. By default set to 50. */\n  pageSize?: number;\n\n  /** The set of provided page size options to display to the user. */\n  pageSizeOptions?: number[];\n\n  /** Whether to hide the page size selection UI from the user. */\n  hidePageSize?: boolean;\n\n  /** Whether to show the first/last buttons UI to the user. */\n  showFirstLastButtons?: boolean;\n\n  /** The default form-field appearance to apply to the page size options selector. */\n  formFieldAppearance?: MatFormFieldAppearance;\n}\n\n/** Injection token that can be used to provide the default options for the paginator module. */\nexport const MAT_PAGINATOR_DEFAULT_OPTIONS = new InjectionToken<MatPaginatorDefaultOptions>(\n  'MAT_PAGINATOR_DEFAULT_OPTIONS',\n);\n\n/**\n * Component to provide navigation between paged information. Displays the size of the current\n * page, user-selectable options to change that size, what items are being shown, and\n * navigational button to go to the previous or next page.\n */\n@Component({\n  selector: 'mat-paginator',\n  exportAs: 'matPaginator',\n  templateUrl: 'paginator.html',\n  styleUrl: 'paginator.css',\n  host: {\n    'class': 'mat-mdc-paginator',\n    'role': 'group',\n  },\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  imports: [MatFormField, MatSelect, MatOption, MatIconButton, MatTooltip],\n})\nexport class MatPaginator implements OnInit, OnDestroy {\n  _intl = inject(MatPaginatorIntl);\n  private _changeDetectorRef = inject(ChangeDetectorRef);\n\n  /** If set, styles the \"page size\" form field with the designated style. */\n  _formFieldAppearance?: MatFormFieldAppearance;\n\n  /** ID for the DOM node containing the paginator's items per page label. */\n  readonly _pageSizeLabelId = inject(_IdGenerator).getId('mat-paginator-page-size-label-');\n\n  private _intlChanges: Subscription;\n  private _isInitialized = false;\n  private _initializedStream = new ReplaySubject<void>(1);\n\n  /**\n   * Theme color of the underlying form controls. This API is supported in M2\n   * themes only,it has no effect in M3 themes. For color customization in M3, see https://material.angular.dev/components/paginator/styling.\n   *\n   * For information on applying color variants in M3, see\n   * https://material.angular.dev/guide/material-2-theming#optional-add-backwards-compatibility-styles-for-color-variants\n   */\n  @Input() color: ThemePalette;\n\n  /** The zero-based page index of the displayed list of items. Defaulted to 0. */\n  @Input({transform: numberAttribute})\n  get pageIndex(): number {\n    return this._pageIndex;\n  }\n  set pageIndex(value: number) {\n    this._pageIndex = Math.max(value || 0, 0);\n    this._changeDetectorRef.markForCheck();\n  }\n  private _pageIndex = 0;\n\n  /** The length of the total number of items that are being paginated. Defaulted to 0. */\n  @Input({transform: numberAttribute})\n  get length(): number {\n    return this._length;\n  }\n  set length(value: number) {\n    this._length = value || 0;\n    this._changeDetectorRef.markForCheck();\n  }\n  private _length = 0;\n\n  /** Number of items to display on a page. By default set to 50. */\n  @Input({transform: numberAttribute})\n  get pageSize(): number {\n    return this._pageSize;\n  }\n  set pageSize(value: number) {\n    this._pageSize = Math.max(value || 0, 0);\n    this._updateDisplayedPageSizeOptions();\n  }\n  private _pageSize: number;\n\n  /** The set of provided page size options to display to the user. */\n  @Input()\n  get pageSizeOptions(): number[] {\n    return this._pageSizeOptions;\n  }\n  set pageSizeOptions(value: number[] | readonly number[]) {\n    this._pageSizeOptions = (value || ([] as number[])).map(p => numberAttribute(p, 0));\n    this._updateDisplayedPageSizeOptions();\n  }\n  private _pageSizeOptions: number[] = [];\n\n  /** Whether to hide the page size selection UI from the user. */\n  @Input({transform: booleanAttribute})\n  hidePageSize: boolean = false;\n\n  /** Whether to show the first/last buttons UI to the user. */\n  @Input({transform: booleanAttribute})\n  showFirstLastButtons: boolean = false;\n\n  /** Used to configure the underlying `MatSelect` inside the paginator. */\n  @Input() selectConfig: MatPaginatorSelectConfig = {};\n\n  /** Whether the paginator is disabled. */\n  @Input({transform: booleanAttribute})\n  disabled: boolean = false;\n\n  /** Event emitted when the paginator changes the page size or page index. */\n  @Output() readonly page: EventEmitter<PageEvent> = new EventEmitter<PageEvent>();\n\n  /** Displayed set of page size options. Will be sorted and include current page size. */\n  _displayedPageSizeOptions: number[];\n\n  /** Emits when the paginator is initialized. */\n  initialized: Observable<void> = this._initializedStream;\n\n  /** Inserted by Angular inject() migration for backwards compatibility */\n  constructor(...args: unknown[]);\n\n  constructor() {\n    const _intl = this._intl;\n    const defaults = inject<MatPaginatorDefaultOptions>(MAT_PAGINATOR_DEFAULT_OPTIONS, {\n      optional: true,\n    });\n\n    this._intlChanges = _intl.changes.subscribe(() => this._changeDetectorRef.markForCheck());\n\n    if (defaults) {\n      const {pageSize, pageSizeOptions, hidePageSize, showFirstLastButtons} = defaults;\n\n      if (pageSize != null) {\n        this._pageSize = pageSize;\n      }\n\n      if (pageSizeOptions != null) {\n        this._pageSizeOptions = pageSizeOptions;\n      }\n\n      if (hidePageSize != null) {\n        this.hidePageSize = hidePageSize;\n      }\n\n      if (showFirstLastButtons != null) {\n        this.showFirstLastButtons = showFirstLastButtons;\n      }\n    }\n\n    this._formFieldAppearance = defaults?.formFieldAppearance || 'outline';\n  }\n\n  ngOnInit() {\n    this._isInitialized = true;\n    this._updateDisplayedPageSizeOptions();\n    this._initializedStream.next();\n  }\n\n  ngOnDestroy() {\n    this._initializedStream.complete();\n    this._intlChanges.unsubscribe();\n  }\n\n  /** Advances to the next page if it exists. */\n  nextPage(): void {\n    if (this.hasNextPage()) {\n      this._navigate(this.pageIndex + 1);\n    }\n  }\n\n  /** Move back to the previous page if it exists. */\n  previousPage(): void {\n    if (this.hasPreviousPage()) {\n      this._navigate(this.pageIndex - 1);\n    }\n  }\n\n  /** Move to the first page if not already there. */\n  firstPage(): void {\n    // hasPreviousPage being false implies at the start\n    if (this.hasPreviousPage()) {\n      this._navigate(0);\n    }\n  }\n\n  /** Move to the last page if not already there. */\n  lastPage(): void {\n    // hasNextPage being false implies at the end\n    if (this.hasNextPage()) {\n      this._navigate(this.getNumberOfPages() - 1);\n    }\n  }\n\n  /** Whether there is a previous page. */\n  hasPreviousPage(): boolean {\n    return this.pageIndex >= 1 && this.pageSize != 0;\n  }\n\n  /** Whether there is a next page. */\n  hasNextPage(): boolean {\n    const maxPageIndex = this.getNumberOfPages() - 1;\n    return this.pageIndex < maxPageIndex && this.pageSize != 0;\n  }\n\n  /** Calculate the number of pages */\n  getNumberOfPages(): number {\n    if (!this.pageSize) {\n      return 0;\n    }\n\n    return Math.ceil(this.length / this.pageSize);\n  }\n\n  /**\n   * Changes the page size so that the first item displayed on the page will still be\n   * displayed using the new page size.\n   *\n   * For example, if the page size is 10 and on the second page (items indexed 10-19) then\n   * switching so that the page size is 5 will set the third page as the current page so\n   * that the 10th item will still be displayed.\n   */\n  _changePageSize(pageSize: number) {\n    // Current page needs to be updated to reflect the new page size. Navigate to the page\n    // containing the previous page's first item.\n    const startIndex = this.pageIndex * this.pageSize;\n    const previousPageIndex = this.pageIndex;\n\n    this.pageIndex = Math.floor(startIndex / pageSize) || 0;\n    this.pageSize = pageSize;\n    this._emitPageEvent(previousPageIndex);\n  }\n\n  /** Checks whether the buttons for going forwards should be disabled. */\n  _nextButtonsDisabled() {\n    return this.disabled || !this.hasNextPage();\n  }\n\n  /** Checks whether the buttons for going backwards should be disabled. */\n  _previousButtonsDisabled() {\n    return this.disabled || !this.hasPreviousPage();\n  }\n\n  /**\n   * Updates the list of page size options to display to the user. Includes making sure that\n   * the page size is an option and that the list is sorted.\n   */\n  private _updateDisplayedPageSizeOptions() {\n    if (!this._isInitialized) {\n      return;\n    }\n\n    // If no page size is provided, use the first page size option or the default page size.\n    if (!this.pageSize) {\n      this._pageSize =\n        this.pageSizeOptions.length != 0 ? this.pageSizeOptions[0] : DEFAULT_PAGE_SIZE;\n    }\n\n    this._displayedPageSizeOptions = this.pageSizeOptions.slice();\n\n    if (this._displayedPageSizeOptions.indexOf(this.pageSize) === -1) {\n      this._displayedPageSizeOptions.push(this.pageSize);\n    }\n\n    // Sort the numbers using a number-specific sort function.\n    this._displayedPageSizeOptions.sort((a, b) => a - b);\n    this._changeDetectorRef.markForCheck();\n  }\n\n  /** Emits an event notifying that a change of the paginator's properties has been triggered. */\n  private _emitPageEvent(previousPageIndex: number) {\n    this.page.emit({\n      previousPageIndex,\n      pageIndex: this.pageIndex,\n      pageSize: this.pageSize,\n      length: this.length,\n    });\n  }\n\n  /** Navigates to a specific page index. */\n  private _navigate(index: number) {\n    const previousIndex = this.pageIndex;\n\n    if (index !== previousIndex) {\n      this.pageIndex = index;\n      this._emitPageEvent(previousIndex);\n    }\n  }\n\n  /**\n   * Callback invoked when one of the navigation buttons is called.\n   * @param targetIndex Index to which the paginator should navigate.\n   * @param isDisabled Whether the button is disabled.\n   */\n  protected _buttonClicked(targetIndex: number, isDisabled: boolean) {\n    // Note that normally disabled buttons won't dispatch the click event, but the paginator ones\n    // do, because we're using `disabledInteractive` to allow them to be focusable. We need to\n    // check here to avoid the navigation.\n    if (!isDisabled) {\n      this._navigate(targetIndex);\n    }\n  }\n}\n","<div class=\"mat-mdc-paginator-outer-container\">\n  <div class=\"mat-mdc-paginator-container\">\n    @if (!hidePageSize) {\n      <div class=\"mat-mdc-paginator-page-size\">\n        <div class=\"mat-mdc-paginator-page-size-label\" [attr.id]=\"_pageSizeLabelId\" aria-hidden=\"true\">\n          {{_intl.itemsPerPageLabel}}\n        </div>\n\n        @if (_displayedPageSizeOptions.length > 1) {\n          <mat-form-field\n            [appearance]=\"_formFieldAppearance!\"\n            [color]=\"color\"\n            class=\"mat-mdc-paginator-page-size-select\">\n            <mat-select\n              #selectRef\n              [value]=\"pageSize\"\n              [disabled]=\"disabled\"\n              [aria-labelledby]=\"_pageSizeLabelId\"\n              [panelClass]=\"selectConfig.panelClass || ''\"\n              [disableOptionCentering]=\"selectConfig.disableOptionCentering\"\n              (selectionChange)=\"_changePageSize($event.value)\"\n              hideSingleSelectionIndicator>\n              @for (pageSizeOption of _displayedPageSizeOptions; track pageSizeOption) {\n                <mat-option [value]=\"pageSizeOption\">\n                  {{pageSizeOption}}\n                </mat-option>\n              }\n            </mat-select>\n          <div class=\"mat-mdc-paginator-touch-target\" (click)=\"selectRef.open()\"></div>\n          </mat-form-field>\n        }\n\n        @if (_displayedPageSizeOptions.length <= 1) {\n          <div class=\"mat-mdc-paginator-page-size-value\">{{pageSize}}</div>\n        }\n      </div>\n    }\n\n    <div class=\"mat-mdc-paginator-range-actions\">\n      <div class=\"mat-mdc-paginator-range-label\" aria-atomic=\"true\" aria-live=\"polite\" role=\"status\">\n        {{_intl.getRangeLabel(pageIndex, pageSize, length)}}\n      </div>\n\n      <!--\n      The buttons use `disabledInteractive` so that they can retain focus if they become disabled,\n      otherwise focus is moved to the document body. However, users should not be able to navigate\n      into these buttons, so `tabindex` is set to -1 when disabled.\n      -->\n\n      @if (showFirstLastButtons) {\n        <button matIconButton type=\"button\"\n                class=\"mat-mdc-paginator-navigation-first\"\n                (click)=\"_buttonClicked(0, _previousButtonsDisabled())\"\n                [attr.aria-label]=\"_intl.firstPageLabel\"\n                [matTooltip]=\"_intl.firstPageLabel\"\n                [matTooltipDisabled]=\"_previousButtonsDisabled()\"\n                matTooltipPosition=\"above\"\n                [disabled]=\"_previousButtonsDisabled()\"\n                [tabindex]=\"_previousButtonsDisabled() ? -1 : null\"\n                disabledInteractive>\n          <svg class=\"mat-mdc-paginator-icon\"\n              viewBox=\"0 0 24 24\"\n              focusable=\"false\"\n              aria-hidden=\"true\">\n            <path d=\"M18.41 16.59L13.82 12l4.59-4.59L17 6l-6 6 6 6zM6 6h2v12H6z\"/>\n          </svg>\n        </button>\n      }\n      <button matIconButton type=\"button\"\n              class=\"mat-mdc-paginator-navigation-previous\"\n              (click)=\"_buttonClicked(pageIndex - 1, _previousButtonsDisabled())\"\n              [attr.aria-label]=\"_intl.previousPageLabel\"\n              [matTooltip]=\"_intl.previousPageLabel\"\n              [matTooltipDisabled]=\"_previousButtonsDisabled()\"\n              matTooltipPosition=\"above\"\n              [disabled]=\"_previousButtonsDisabled()\"\n              [tabindex]=\"_previousButtonsDisabled() ? -1 : null\"\n              disabledInteractive>\n        <svg class=\"mat-mdc-paginator-icon\"\n             viewBox=\"0 0 24 24\"\n             focusable=\"false\"\n             aria-hidden=\"true\">\n          <path d=\"M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z\"/>\n        </svg>\n      </button>\n      <button matIconButton type=\"button\"\n              class=\"mat-mdc-paginator-navigation-next\"\n              (click)=\"_buttonClicked(pageIndex + 1, _nextButtonsDisabled())\"\n              [attr.aria-label]=\"_intl.nextPageLabel\"\n              [matTooltip]=\"_intl.nextPageLabel\"\n              [matTooltipDisabled]=\"_nextButtonsDisabled()\"\n              matTooltipPosition=\"above\"\n              [disabled]=\"_nextButtonsDisabled()\"\n              [tabindex]=\"_nextButtonsDisabled() ? -1 : null\"\n              disabledInteractive>\n        <svg class=\"mat-mdc-paginator-icon\"\n             viewBox=\"0 0 24 24\"\n             focusable=\"false\"\n             aria-hidden=\"true\">\n          <path d=\"M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z\"/>\n        </svg>\n      </button>\n      @if (showFirstLastButtons) {\n        <button matIconButton type=\"button\"\n                class=\"mat-mdc-paginator-navigation-last\"\n                (click)=\"_buttonClicked(getNumberOfPages() - 1, _nextButtonsDisabled())\"\n                [attr.aria-label]=\"_intl.lastPageLabel\"\n                [matTooltip]=\"_intl.lastPageLabel\"\n                [matTooltipDisabled]=\"_nextButtonsDisabled()\"\n                matTooltipPosition=\"above\"\n                [disabled]=\"_nextButtonsDisabled()\"\n                [tabindex]=\"_nextButtonsDisabled() ? -1 : null\"\n                disabledInteractive>\n          <svg class=\"mat-mdc-paginator-icon\"\n              viewBox=\"0 0 24 24\"\n              focusable=\"false\"\n              aria-hidden=\"true\">\n            <path d=\"M5.59 7.41L10.18 12l-4.59 4.59L7 18l6-6-6-6zM16 6h2v12h-2z\"/>\n          </svg>\n        </button>\n      }\n    </div>\n  </div>\n</div>\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';\nimport {MatButtonModule} from '../button';\nimport {MatSelectModule} from '../select';\nimport {MatTooltipModule} from '../tooltip';\nimport {MatPaginator} from './paginator';\n\n@NgModule({\n  imports: [MatButtonModule, MatSelectModule, MatTooltipModule, MatPaginator],\n  exports: [MatPaginator],\n})\nexport class MatPaginatorModule {}\n"],"names":["MatPaginatorIntl","changes","Subject","itemsPerPageLabel","nextPageLabel","previousPageLabel","firstPageLabel","lastPageLabel","getRangeLabel","page","pageSize","length","Math","max","startIndex","endIndex","min","deps","target","i0","ɵɵFactoryTarget","Injectable","ɵprov","ɵɵngDeclareInjectable","minVersion","version","ngImport","type","decorators","providedIn","DEFAULT_PAGE_SIZE","PageEvent","pageIndex","previousPageIndex","MAT_PAGINATOR_DEFAULT_OPTIONS","InjectionToken","MatPaginator","_intl","inject","_changeDetectorRef","ChangeDetectorRef","_formFieldAppearance","_pageSizeLabelId","_IdGenerator","getId","_intlChanges","_isInitialized","_initializedStream","ReplaySubject","color","_pageIndex","value","markForCheck","_length","_pageSize","_updateDisplayedPageSizeOptions","pageSizeOptions","_pageSizeOptions","map","p","numberAttribute","hidePageSize","showFirstLastButtons","selectConfig","disabled","EventEmitter","_displayedPageSizeOptions","initialized","constructor","defaults","optional","subscribe","formFieldAppearance","ngOnInit","next","ngOnDestroy","complete","unsubscribe","nextPage","hasNextPage","_navigate","previousPage","hasPreviousPage","firstPage","lastPage","getNumberOfPages","maxPageIndex","ceil","_changePageSize","floor","_emitPageEvent","_nextButtonsDisabled","_previousButtonsDisabled","slice","indexOf","push","sort","a","b","emit","index","previousIndex","_buttonClicked","targetIndex","isDisabled","Component","isStandalone","selector","inputs","booleanAttribute","outputs","host","attributes","classAttribute","exportAs","template","styles","dependencies","kind","MatFormField","MatSelect","MatOption","MatIconButton","MatTooltip","changeDetection","ChangeDetectionStrategy","OnPush","encapsulation","ViewEncapsulation","None","imports","Input","transform","Output","MatPaginatorModule","NgModule","MatButtonModule","MatSelectModule","MatTooltipModule","exports","ɵinj","ɵɵngDeclareInjector","args"],"mappings":"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"}