@ng-prime-extensions/px-table
Version:
PrimeNG table extension
1 lines • 39 kB
Source Map (JSON)
{"version":3,"file":"ng-prime-extensions-px-table.mjs","sources":["../../../projects/px-table/src/lib/px-table.ts","../../../projects/px-table/src/lib/px-table-render.pipe.ts","../../../projects/px-table/src/lib/px-table.component.ts","../../../projects/px-table/src/lib/px-table.component.html","../../../projects/px-table/src/public-api.ts","../../../projects/px-table/src/ng-prime-extensions-px-table.ts"],"sourcesContent":["import {InjectionToken, ProviderToken, Type} from \"@angular/core\";\nimport {FilterMetadata} from \"primeng/api\";\n\nexport type ComponentPipeArguments = any[] | { [key: string]: any };\n\nexport interface PxTableColumnDefinition\n{\n /**\n * This will be matched against the data source when providing value for this column.\n * For example the column id 'my_column' should be found in the data source, like so: [{'my_column': 'column_value'}, ...].\n */\n id: string;\n /**\n * The column display name.\n */\n name: string;\n /**\n * Classes to be placed on the whole column (th & td).\n * The values must be compatible with ngClass.\n */\n classes?: string[] | { [className: string]: boolean };\n /**\n * Is this column sortable?\n */\n sortable?: boolean;\n /**\n * Whether this column is displayed or hidden.\n */\n visible?: boolean;\n /**\n * Render this column using a pipe or a component.\n * If both are set, the component property takes priority\n */\n renderUsing?: {\n component?: Type<any>;\n pipe?: ProviderToken<any>;\n /**\n * arguments to be passed to either the pipe or the component\n */\n arguments?: ComponentPipeArguments;\n };\n}\n\nexport interface PxTableRow\n{\n [columnId: string]: any;\n\n /**\n * Whether this row is selectable\n */\n pxDisableSelection?: boolean;\n}\n\nexport interface PxTableRenderComponentData\n{\n columnId: string;\n columnData: string;\n row: PxTableRow;\n arguments?: ComponentPipeArguments;\n}\n\nexport interface PxTableDataResponse\n{\n totalRecords: number;\n records: PxTableRow[];\n}\n\nexport interface PxTableColumnVisibility\n{\n columnId: string;\n /**\n * If not specified, the visibility will be toggled\n */\n visible?: boolean;\n}\n\nexport interface PxTableColumnVisibility\n{\n columnId: string;\n /**\n * If not specified, the visibility will be toggled\n */\n visible?: boolean;\n}\n\nexport interface PxTableSortedColumn\n{\n columnId: string;\n /**\n * Sort order. 1 - Ascending / -1 - Descending\n */\n order: number;\n}\n\nexport const PX_TABLE_RENDER_COMPONENT_DATA = new InjectionToken<PxTableRenderComponentData>('PX_TABLE_RENDER_COMPONENT_DATA');\n\nexport interface PxTableDataRequestInfo\n{\n firstRowIndex: number;\n pageLength: number;\n sortedColumns: PxTableSortedColumn[];\n filters: { [filter: string]: any } | { [p: string]: FilterMetadata | FilterMetadata[] | undefined };\n}\n","import {Injector, Pipe, PipeTransform, ProviderToken} from '@angular/core';\nimport {ComponentPipeArguments} from \"./px-table\";\n\n@Pipe({\n name: 'pxTableRenderPipe',\n standalone: true\n})\nexport class PxTableRenderPipePipe implements PipeTransform\n{\n constructor(private injector: Injector) {}\n\n transform(value: unknown, pipeToken: ProviderToken<any>, args: ComponentPipeArguments): unknown\n {\n let pipeArgs: any[];\n if(!Array.isArray(args))\n {\n pipeArgs = [args]\n }\n else\n {\n pipeArgs = args;\n }\n\n return this.injector.get(pipeToken).transform(value, ...pipeArgs);\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Injector,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n QueryList,\n SimpleChanges,\n TemplateRef,\n ViewChildren, ViewEncapsulation\n} from \"@angular/core\";\nimport {TableLazyLoadEvent, TableModule, TableRowSelectEvent, TableRowUnSelectEvent} from \"primeng/table\";\nimport {\n PX_TABLE_RENDER_COMPONENT_DATA,\n PxTableColumnDefinition,\n PxTableColumnVisibility,\n PxTableDataRequestInfo,\n PxTableDataResponse,\n PxTableRenderComponentData,\n PxTableRow,\n PxTableSortedColumn\n} from \"./px-table\";\nimport {NgClass, NgComponentOutlet, NgTemplateOutlet} from \"@angular/common\";\nimport {PxTableRenderPipePipe} from \"./px-table-render.pipe\";\nimport {Observable, Subscription} from \"rxjs\";\nimport {FormGroup} from \"@angular/forms\";\nimport {FilterMetadata, MenuItem} from \"primeng/api\";\nimport {Button} from \"primeng/button\";\nimport {Menu} from \"primeng/menu\";\nimport {ContextMenu} from \"primeng/contextmenu\";\nimport {ProgressSpinner} from \"primeng/progressspinner\";\nimport {PrimeNG} from \"primeng/config\";\n\n@Component({\n selector: 'px-table',\n imports: [\n PxTableRenderPipePipe,\n ContextMenu,\n TableModule,\n NgClass,\n NgTemplateOutlet,\n Button,\n Menu,\n NgComponentOutlet,\n ProgressSpinner,\n ],\n templateUrl: './px-table.component.html',\n styleUrl: './px-table.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'px-table',\n }\n})\nexport class PxTableComponent implements OnInit, OnChanges, OnDestroy\n{\n @ViewChildren('toggledContextMenu') toggledContextMenus!: QueryList<Menu>;\n /**\n * Table column definitions.\n */\n @Input({required: true}) columns!: PxTableColumnDefinition[];\n /**\n * The data source from which rows are fetched.\n * Can be a static array of rows or a function that takes in info about the data request (like the current page index, the sorted columns, etc.) and returns an observable which will emit the information required by the table.\n */\n @Input({required: true}) dataSource!: PxTableRow[] | ((requestInfo: PxTableDataRequestInfo) => Observable<PxTableDataResponse>);\n /**\n * An array of objects to represent dynamic columns that are frozen.\n */\n @Input() frozenColumns?: any[];\n /**\n * An array of objects to display as frozen.\n */\n @Input() frozenValue?: any[];\n /**\n * Whether pagination is enabled.\n */\n @Input() paginator: boolean = true;\n /**\n * Number of rows to display per page.\n */\n @Input() rowsPerPage = 10;\n /**\n * Array of integer values to display inside rows per page dropdown of paginator.\n */\n @Input() rowsPerPageOptions: number[] = [5, 10, 20, 30, 40, 50];\n @Input() stripedRows: boolean = false;\n /**\n * Specifies the selection mode, valid values are \"single\" and \"multiple\". Passing null/undefined will disable row selection.\n */\n @Input() selectionMode?: null | 'single' | 'multiple';\n /**\n * Whether to display the \"select all\" header checkbox.\n */\n @Input() selectAllCheckbox?: boolean = false;\n /**\n * When enabled with paginator and checkbox selection mode, the select all checkbox in the header will select all rows on the current page.\n */\n @Input() selectionPageOnly?: boolean;\n /**\n * Selected row in single mode or an array of values in multiple mode.\n */\n @Input() selection?: any[];\n /**\n * Selected row with a context menu.\n */\n @Input() contextMenuSelection?: PxTableRow;\n /**\n * Callback to invoke on context menu selection change.\n */\n @Output() contextMenuSelectionChange = new EventEmitter<PxTableRow>();\n /**\n * Defines the responsive mode.\n */\n @Input() responsiveLayout: 'stack' | 'scroll' = 'scroll';\n /**\n * The breakpoint to define the maximum width boundary when using stack responsive layout.\n */\n @Input() breakpoint: string = '960px';\n /**\n * Own implementation of table filters to pass along to the [dataSource].\n * [filters] and [globalFilterFields] inputs will be ignored if this is set.\n */\n @Input() pxFilters?: { [filter: string]: any } | FormGroup;\n /**\n * An array of FilterMetadata objects to provide external filters.\n */\n @Input() filters: { [p: string]: FilterMetadata | FilterMetadata[] } = {};\n /**\n * An array of fields as string to use in global filtering.\n */\n @Input() globalFilterFields?: string[];\n /**\n * Defines whether sorting works on single column or on multiple columns.\n */\n @Input() sortMode: 'single' | 'multiple' = 'single';\n /**\n * Name of the field to sort data by default.\n */\n @Input() sortColumnId?: string;\n /**\n * Order to sort when default sorting is enabled.\n * 0 - unsorted\n * 1 - Ascending\n * -1 - Descending\n */\n @Input() sortDirection: 0 | -1 | 1 = 0;\n /**\n * When true, resets paginator to first page after sorting. Available only when sortMode is set to single.\n */\n @Input() resetPageOnSort = true;\n /**\n * Passed to p-table.\n */\n @Input() styleClass?: string;\n /**\n * When enabled, columns can be resized using drag and drop.\n */\n @Input() resizableColumns?: boolean;\n /**\n * Defines whether the overall table width should change on column resize, valid values are \"fit\" and \"expand\".\n */\n @Input() columnResizeMode: 'fit' | 'expand' = 'fit';\n /**\n * Enables scrollable tables.\n */\n @Input() scrollable?: boolean;\n /**\n * Height of the scroll viewport in fixed pixels or the \"flex\" keyword for a dynamic size.\n */\n @Input() scrollHeight?: string;\n /**\n * When enabled, columns can be reordered using drag and drop.\n */\n @Input() reorderableColumns?: boolean;\n /**\n * A property to uniquely identify a record in data.\n */\n @Input() dataKey?: string;\n /**\n * Defines where a stateful table keeps its state, valid values are \"session\" for sessionStorage and \"local\" for localStorage.\n */\n @Input() stateStorage: 'session' | 'local' = 'session';\n /**\n * Unique identifier of a stateful table to use in state storage.\n */\n @Input() stateKey?: string;\n /**\n * Inline style of the table.\n */\n @Input() tableStyle?: { [p: string]: any } | null;\n /**\n * Style class of the table.\n */\n @Input() tableStyleClass?: string;\n /**\n * An array of menu items.\n * This enables the context menu and context menu toggle button (added automatically on a separate column at the end of the table).\n */\n @Input() rowContextMenuItems?: MenuItem[];\n /**\n * A function that takes the row of the active context menu and returns the array of items.\n * If set then the [rowContextMenuItems] input is ignored.\n */\n @Input() dynamicContextMenuItems?: (rowData: PxTableRow) => MenuItem[];\n /**\n * Message shown when dynamicContextMenuItems returns an array\n */\n @Input() dynamicContextMenuNoItemsMessage = 'No actions available';\n /**\n * Name of the icon to be passed along to the p-button toggle.\n */\n @Input() rowContextMenuToggleIcon: string = 'pi pi-bars';\n /**\n * Limits how the context menu is toggled. By default, the menu is triggered by both a right click action and by the button inside the special \"actions\" column.\n */\n @Input() rowContextMenuToggleBy?: 'rightClick' | 'button';\n /**\n * Custom loading icon template.\n */\n @Input() loadingIconTemplateRef?: TemplateRef<any>;\n\n /**\n * Function that determines when the contextual menu is active for a particular row.\n */\n @Input() rowContextMenuIsActiveFn?: (row: PxTableRow) => boolean;\n\n /**\n * Callback to invoke on selection changed.\n */\n @Output() selectionChange = new EventEmitter();\n /**\n * Callback to invoke when a row is selected.\n */\n @Output() onRowSelect = new EventEmitter<TableRowSelectEvent>();\n /**\n * Callback to invoke when a row is unselected.\n */\n @Output() onRowUnselect = new EventEmitter<TableRowUnSelectEvent<any>>();\n\n protected displayedColumns: PxTableColumnDefinition[] = [];\n protected records: PxTableRow[] = [];\n protected totalRecords = 0;\n protected firstRowIndex: number = 0;\n protected isDataSrcStatic = true;\n protected isLoading = false;\n\n private lastLazyLoadEventData: TableLazyLoadEvent = {};\n private tableInitialized = false;\n private columnInjectorCache: {[columnId: string]: Injector} = {};\n private dataSrcSub?: Subscription;\n\n constructor(\n protected primeNGConfig: PrimeNG,\n private injector: Injector,\n private changeDetector: ChangeDetectorRef,\n )\n {\n }\n\n ngOnInit()\n {\n if (this.pxFilters)\n {\n this.filters = {};\n delete this.globalFilterFields;\n }\n\n if (this.dynamicContextMenuItems)\n {\n this.rowContextMenuItems = [];\n }\n\n this.prepareDisplayedColumns();\n this.checkDataSource();\n this.tableInitialized = true;\n }\n\n ngOnChanges(changes: SimpleChanges)\n {\n if (changes['columns'] && !changes['columns'].firstChange)\n {\n this.prepareDisplayedColumns();\n this.changeDetector.detectChanges();\n }\n\n if (changes['selectAllCheckbox'] && !changes['selectAllCheckbox'].firstChange)\n {\n this.changeDetector.detectChanges();\n }\n\n if (changes['dataSource'] && !changes['dataSource'].firstChange)\n {\n this.checkDataSource();\n }\n }\n\n /**\n * Re-fetch table data.\n * @param resetPage\n */\n refresh(resetPage = true)\n {\n if (this.isLoading)\n {\n return;\n }\n\n if (resetPage)\n {\n this.firstRowIndex = 0;\n }\n this.onLazyLoad(this.lastLazyLoadEventData);\n }\n\n /**\n * Hides/shows or toggles the specified table column's visibility.\n * @param columnId\n * @param visible If not specified, the visibility will be toggled\n */\n changeColumnVisibility(columnId: string, visible?: boolean)\n {\n const column = this.getColumn(columnId);\n if (!column)\n {\n return;\n }\n\n column.visible = typeof visible === 'undefined' ? !column.visible : visible;\n this.prepareDisplayedColumns();\n this.changeDetector.detectChanges();\n }\n\n /**\n * Changes the visibility of multiple columns at once.\n * @param columns The columns and their visibility. Example: [{columnId: 'myColumn1', visible: true}, {columnId: 'myOtherColumn', visible: false}] -- sets myColumn1 to visible and hides myOtherColumn\n */\n changeColumnsVisibility(columns: PxTableColumnVisibility[])\n {\n for (let i = columns.length; i--;)\n {\n const colVisibilityConfig = columns[i];\n const column = this.getColumn(colVisibilityConfig.columnId);\n if (!column)\n {\n continue;\n }\n\n column.visible = typeof colVisibilityConfig.visible !== \"undefined\" ? colVisibilityConfig.visible : !column.visible;\n }\n\n this.prepareDisplayedColumns();\n this.changeDetector.detectChanges();\n }\n\n protected onLazyLoad($event: TableLazyLoadEvent)\n {\n const dataSource = this.dataSource;\n if (this.isDataSrcStatic)\n {\n this.columnInjectorCache = {};\n this.records = dataSource as PxTableRow[];\n this.totalRecords = dataSource.length;\n this.changeDetector.detectChanges();\n }\n else\n {\n this.isLoading = true;\n this.lastLazyLoadEventData = $event;\n\n const sortedColumns: PxTableSortedColumn[] = [];\n\n if (this.sortMode === 'multiple')\n {\n const multiSortColumns = $event.multiSortMeta;\n if (multiSortColumns)\n {\n const multiSortColumnsLen = multiSortColumns.length;\n for (let i = 0; i < multiSortColumnsLen; ++i)\n {\n const sortedCol = multiSortColumns[i];\n sortedColumns.push({\n columnId: sortedCol.field,\n order: sortedCol.order\n });\n }\n }\n }\n else\n {\n sortedColumns.push({\n columnId: $event.sortField as string || this.sortColumnId || '',\n order: $event.sortOrder || this.sortDirection\n });\n }\n\n this.dataSrcSub?.unsubscribe();\n this.dataSrcSub = (dataSource as Exclude<typeof this.dataSource, PxTableRow[]>)({\n firstRowIndex: $event.first || 0,\n pageLength: $event.rows || this.rowsPerPage,\n sortedColumns,\n filters: this.pxFilters ? (this.pxFilters instanceof FormGroup ? this.pxFilters.value || {} : this.filters || {}) : $event.filters\n }).subscribe(response =>\n {\n this.columnInjectorCache = {};\n this.records = response.records;\n this.totalRecords = response.totalRecords;\n this.isLoading = false;\n this.changeDetector.detectChanges();\n });\n }\n }\n\n protected onContextMenuSelectionChange(rowData: PxTableRow, closeOpenMenus = true)\n {\n this.contextMenuSelection = rowData;\n\n if (closeOpenMenus)\n {\n const contextMenuPanels = this.toggledContextMenus.toArray()\n const contextMenuPanelsLen = contextMenuPanels.length;\n for (let i = 0; i < contextMenuPanelsLen; ++i)\n {\n contextMenuPanels[i].hide();\n }\n }\n\n this.contextMenuSelectionChange.emit(rowData);\n }\n\n protected onContextMenuShown()\n {\n if (!(this.dynamicContextMenuItems && this.contextMenuSelection))\n {\n return;\n }\n\n this.rowContextMenuItems = this.dynamicContextMenuItems(this.contextMenuSelection);\n if(!this.rowContextMenuItems.length)\n {\n this.rowContextMenuItems.push({\n label: this.dynamicContextMenuNoItemsMessage,\n disabled: true\n });\n }\n }\n\n protected createRenderComponentInjector(column: PxTableColumnDefinition, row: PxTableRow, rowIndex: number)\n {\n const injectorCacheKey = column.id + '' + rowIndex;\n const columnInjectorCache = this.columnInjectorCache;\n\n if(!columnInjectorCache[injectorCacheKey])\n {\n columnInjectorCache[injectorCacheKey] = Injector.create({\n providers: [{\n provide: PX_TABLE_RENDER_COMPONENT_DATA,\n useValue: {\n columnId: column.id,\n columnData: row[column.id],\n row,\n arguments: column.renderUsing?.arguments\n } as PxTableRenderComponentData\n }],\n parent: this.injector\n });\n }\n\n return columnInjectorCache[injectorCacheKey];\n }\n\n private checkDataSource()\n {\n if (Array.isArray(this.dataSource))\n {\n this.isDataSrcStatic = true;\n this.refresh(this.tableInitialized);\n }\n else\n {\n this.isDataSrcStatic = false;\n this.tableInitialized && this.refresh();\n }\n }\n\n private prepareDisplayedColumns()\n {\n const columns = this.columns;\n const colLen = columns.length;\n const displayedColumns = [];\n\n for (let colIndex = 0; colIndex < colLen; ++colIndex)\n {\n const column = columns[colIndex];\n if (column.visible === undefined || column.visible)\n {\n displayedColumns.push(column);\n }\n }\n\n this.displayedColumns = displayedColumns;\n }\n\n private getColumn(columnId: string)\n {\n const columns = this.columns;\n let foundColumn: undefined | PxTableColumnDefinition;\n\n for (let i = columns.length; i--;)\n {\n const col = columns[i];\n if (col.id === columnId)\n {\n foundColumn = col;\n break;\n }\n }\n\n return foundColumn;\n }\n\n ngOnDestroy()\n {\n this.dataSrcSub?.unsubscribe();\n }\n}\n","<p-contextMenu #contextMenuRef [model]=\"rowContextMenuItems\" appendTo=\"body\" (onShow)=\"onContextMenuShown()\"></p-contextMenu>\n<p-table\n [styleClass]=\"styleClass\"\n [columns]=\"columns\"\n [value]=\"records\"\n [totalRecords]=\"totalRecords\"\n [paginator]=\"paginator\"\n [rows]=\"rowsPerPage\"\n [rowsPerPageOptions]=\"rowsPerPageOptions\"\n [(first)]=\"firstRowIndex\"\n [stripedRows]=\"stripedRows\"\n [sortMode]=\"sortMode\"\n [sortField]=\"sortColumnId\"\n [sortOrder]=\"sortDirection\"\n [resetPageOnSort]=\"resetPageOnSort\"\n [frozenColumns]=\"frozenColumns\"\n [frozenValue]=\"frozenValue\"\n [responsiveLayout]=\"responsiveLayout\"\n [breakpoint]=\"breakpoint\"\n [lazy]=\"!isDataSrcStatic\"\n [loading]=\"isLoading\"\n [resizableColumns]=\"resizableColumns\"\n [columnResizeMode]=\"columnResizeMode\"\n [scrollable]=\"scrollable\"\n [scrollHeight]=\"scrollHeight\"\n [reorderableColumns]=\"reorderableColumns\"\n [dataKey]=\"dataKey\"\n [stateStorage]=\"stateStorage\"\n [stateKey]=\"stateKey\"\n [tableStyle]=\"tableStyle\"\n [tableStyleClass]=\"tableStyleClass\"\n [selectionPageOnly]=\"selectionPageOnly\"\n [filters]=\"filters\"\n [globalFilterFields]=\"globalFilterFields\"\n [contextMenu]=\"contextMenuRef\"\n (contextMenuSelectionChange)=\"onContextMenuSelectionChange($event)\"\n (onLazyLoad)=\"onLazyLoad($event)\"\n [selection]=\"selection\"\n [selectionMode]=\"selectionMode\"\n (selectionChange)=\"selectionChange.emit($event)\"\n (onRowSelect)=\"onRowSelect.emit($event)\"\n (onRowUnselect)=\"onRowUnselect.emit($event)\"\n>\n <ng-template pTemplate=\"header\">\n <tr>\n @if(selectionMode)\n {\n <th>\n @if(selectAllCheckbox && selectionMode === 'multiple')\n {\n <p-tableHeaderCheckbox />\n }\n </th>\n }\n\n @for(column of displayedColumns; track column.id)\n {\n <th\n [pSortableColumn]=\"column.sortable ? column.id : undefined\"\n [pSortableColumnDisabled]=\"!column.sortable\"\n [ngClass]=\"column.classes\"\n >\n {{ column.name }}\n\n @if(column.sortable)\n {\n <p-sortIcon [field]=\"column.id\"></p-sortIcon>\n }\n </th>\n }\n\n @if(rowContextMenuItems && (!rowContextMenuToggleBy || rowContextMenuToggleBy === 'button'))\n {\n <th>\n \n </th>\n }\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\" let-rowData let-rowIndex=\"rowIndex\">\n <tr [pContextMenuRow]=\"rowData\"\n [pContextMenuRowDisabled]=\"!rowContextMenuItems || (rowContextMenuToggleBy && rowContextMenuToggleBy !== 'rightClick') || (rowContextMenuIsActiveFn && !rowContextMenuIsActiveFn(rowData))\">\n\n @if(selectionMode)\n {\n <td>\n @if(selectionMode === 'multiple')\n {\n <p-tableCheckbox [value]=\"rowData\" [disabled]=\"rowData.pxDisableSelection\" />\n }\n\n @if(selectionMode === 'single')\n {\n <p-tableRadioButton [value]=\"rowData\" [disabled]=\"rowData.pxDisableSelection\" />\n }\n </td>\n }\n\n @for(column of displayedColumns; track column.id)\n {\n <td [ngClass]=\"column.classes\">\n @if(responsiveLayout === 'stack')\n {\n <div class=\"p-datatable-column-title\">{{ column.name }}</div>\n }\n\n @if(column.renderUsing)\n {\n @if(column.renderUsing.component)\n {\n <ng-container\n [ngComponentOutlet]=\"column.renderUsing.component\"\n [ngComponentOutletInjector]=\"createRenderComponentInjector(column, rowData, rowIndex)\"></ng-container>\n }\n @else\n {\n {{ rowData[column.id] | pxTableRenderPipe: column.renderUsing.pipe! : column.renderUsing.arguments || [] }}\n }\n }\n @else\n {\n {{ rowData[column.id] }}\n }\n </td>\n }\n\n @if(rowContextMenuItems && (!rowContextMenuToggleBy || rowContextMenuToggleBy === 'button'))\n {\n <td class=\"px-table-context-menu-toggle-cell\">\n @if(responsiveLayout === 'stack')\n {\n <div class=\"p-datatable-column-title\"> </div>\n }\n\n @if(!rowContextMenuIsActiveFn || rowContextMenuIsActiveFn(rowData))\n {\n <span>\n <p-button [icon]=\"rowContextMenuToggleIcon\" (click)=\"toggledContextMenu.toggle($event)\"></p-button>\n <p-menu #toggledContextMenu [model]=\"rowContextMenuItems\" [popup]=\"true\" appendTo=\"body\"\n (onShow)=\"onContextMenuSelectionChange(rowData, false); onContextMenuShown()\"></p-menu>\n </span>\n }\n </td>\n }\n </tr>\n </ng-template>\n\n <ng-template pTemplate=\"emptymessage\">\n <tr>\n <td colspan=\"100\" class=\"px-table-empty-message\">{{ primeNGConfig.translation.emptyMessage }}</td>\n </tr>\n </ng-template>\n\n <ng-template pTemplate=\"loadingicon\">\n @if(loadingIconTemplateRef)\n {\n <ng-container [ngTemplateOutlet]=\"loadingIconTemplateRef\"></ng-container>\n }\n @else\n {\n <p-progressSpinner class=\"px-default-loading-icon\" [style]=\"{'width': '65px'}\" strokeWidth=\"3\"></p-progressSpinner>\n }\n </ng-template>\n</p-table>\n","/*\n * Public API Surface of px-table\n */\n\nexport * from './lib/px-table';\nexport * from './lib/px-table-render.pipe';\nexport * from './lib/px-table.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;;;;;MA8Fa,8BAA8B,GAAG,IAAI,cAAc,CAA6B,gCAAgC;;MCvFhH,qBAAqB,CAAA;AAE9B,IAAA,WAAA,CAAoB,QAAkB,EAAA;QAAlB,IAAA,CAAA,QAAQ,GAAR,QAAQ;;AAE5B,IAAA,SAAS,CAAC,KAAc,EAAE,SAA6B,EAAE,IAA4B,EAAA;AAEjF,QAAA,IAAI,QAAe;QACnB,IAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EACvB;AACI,YAAA,QAAQ,GAAG,CAAC,IAAI,CAAC;;aAGrB;YACI,QAAQ,GAAG,IAAI;;AAGnB,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,QAAQ,CAAC;;8GAhB5D,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,mBAAA,EAAA,CAAA,CAAA;;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAJjC,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,mBAAmB;AACzB,oBAAA,UAAU,EAAE;AACf,iBAAA;;;MCqDY,gBAAgB,CAAA;AAsMzB,IAAA,WAAA,CACc,aAAsB,EACxB,QAAkB,EAClB,cAAiC,EAAA;QAF/B,IAAA,CAAA,aAAa,GAAb,aAAa;QACf,IAAA,CAAA,QAAQ,GAAR,QAAQ;QACR,IAAA,CAAA,cAAc,GAAd,cAAc;AArL1B;;AAEG;QACM,IAAA,CAAA,SAAS,GAAY,IAAI;AAClC;;AAEG;QACM,IAAA,CAAA,WAAW,GAAG,EAAE;AACzB;;AAEG;AACM,QAAA,IAAA,CAAA,kBAAkB,GAAa,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;QACtD,IAAA,CAAA,WAAW,GAAY,KAAK;AAKrC;;AAEG;QACM,IAAA,CAAA,iBAAiB,GAAa,KAAK;AAa5C;;AAEG;AACO,QAAA,IAAA,CAAA,0BAA0B,GAAG,IAAI,YAAY,EAAc;AACrE;;AAEG;QACM,IAAA,CAAA,gBAAgB,GAAuB,QAAQ;AACxD;;AAEG;QACM,IAAA,CAAA,UAAU,GAAW,OAAO;AAMrC;;AAEG;QACM,IAAA,CAAA,OAAO,GAAuD,EAAE;AAKzE;;AAEG;QACM,IAAA,CAAA,QAAQ,GAA0B,QAAQ;AAKnD;;;;;AAKG;QACM,IAAA,CAAA,aAAa,GAAe,CAAC;AACtC;;AAEG;QACM,IAAA,CAAA,eAAe,GAAG,IAAI;AAS/B;;AAEG;QACM,IAAA,CAAA,gBAAgB,GAAqB,KAAK;AAiBnD;;AAEG;QACM,IAAA,CAAA,YAAY,GAAwB,SAAS;AAuBtD;;AAEG;QACM,IAAA,CAAA,gCAAgC,GAAG,sBAAsB;AAClE;;AAEG;QACM,IAAA,CAAA,wBAAwB,GAAW,YAAY;AAexD;;AAEG;AACO,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,YAAY,EAAE;AAC9C;;AAEG;AACO,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAuB;AAC/D;;AAEG;AACO,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAA8B;QAE9D,IAAA,CAAA,gBAAgB,GAA8B,EAAE;QAChD,IAAA,CAAA,OAAO,GAAiB,EAAE;QAC1B,IAAA,CAAA,YAAY,GAAG,CAAC;QAChB,IAAA,CAAA,aAAa,GAAW,CAAC;QACzB,IAAA,CAAA,eAAe,GAAG,IAAI;QACtB,IAAA,CAAA,SAAS,GAAG,KAAK;QAEnB,IAAA,CAAA,qBAAqB,GAAuB,EAAE;QAC9C,IAAA,CAAA,gBAAgB,GAAG,KAAK;QACxB,IAAA,CAAA,mBAAmB,GAAmC,EAAE;;IAWhE,QAAQ,GAAA;AAEJ,QAAA,IAAI,IAAI,CAAC,SAAS,EAClB;AACI,YAAA,IAAI,CAAC,OAAO,GAAG,EAAE;YACjB,OAAO,IAAI,CAAC,kBAAkB;;AAGlC,QAAA,IAAI,IAAI,CAAC,uBAAuB,EAChC;AACI,YAAA,IAAI,CAAC,mBAAmB,GAAG,EAAE;;QAGjC,IAAI,CAAC,uBAAuB,EAAE;QAC9B,IAAI,CAAC,eAAe,EAAE;AACtB,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI;;AAGhC,IAAA,WAAW,CAAC,OAAsB,EAAA;AAE9B,QAAA,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,WAAW,EACzD;YACI,IAAI,CAAC,uBAAuB,EAAE;AAC9B,YAAA,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE;;AAGvC,QAAA,IAAI,OAAO,CAAC,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,WAAW,EAC7E;AACI,YAAA,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE;;AAGvC,QAAA,IAAI,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,WAAW,EAC/D;YACI,IAAI,CAAC,eAAe,EAAE;;;AAI9B;;;AAGG;IACH,OAAO,CAAC,SAAS,GAAG,IAAI,EAAA;AAEpB,QAAA,IAAI,IAAI,CAAC,SAAS,EAClB;YACI;;QAGJ,IAAI,SAAS,EACb;AACI,YAAA,IAAI,CAAC,aAAa,GAAG,CAAC;;AAE1B,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,qBAAqB,CAAC;;AAG/C;;;;AAIG;IACH,sBAAsB,CAAC,QAAgB,EAAE,OAAiB,EAAA;QAEtD,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;QACvC,IAAI,CAAC,MAAM,EACX;YACI;;AAGJ,QAAA,MAAM,CAAC,OAAO,GAAG,OAAO,OAAO,KAAK,WAAW,GAAG,CAAC,MAAM,CAAC,OAAO,GAAG,OAAO;QAC3E,IAAI,CAAC,uBAAuB,EAAE;AAC9B,QAAA,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE;;AAGvC;;;AAGG;AACH,IAAA,uBAAuB,CAAC,OAAkC,EAAA;QAEtD,KAAK,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,GAChC;AACI,YAAA,MAAM,mBAAmB,GAAG,OAAO,CAAC,CAAC,CAAC;YACtC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,QAAQ,CAAC;YAC3D,IAAI,CAAC,MAAM,EACX;gBACI;;YAGJ,MAAM,CAAC,OAAO,GAAG,OAAO,mBAAmB,CAAC,OAAO,KAAK,WAAW,GAAG,mBAAmB,CAAC,OAAO,GAAG,CAAC,MAAM,CAAC,OAAO;;QAGvH,IAAI,CAAC,uBAAuB,EAAE;AAC9B,QAAA,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE;;AAG7B,IAAA,UAAU,CAAC,MAA0B,EAAA;AAE3C,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU;AAClC,QAAA,IAAI,IAAI,CAAC,eAAe,EACxB;AACI,YAAA,IAAI,CAAC,mBAAmB,GAAG,EAAE;AAC7B,YAAA,IAAI,CAAC,OAAO,GAAG,UAA0B;AACzC,YAAA,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,MAAM;AACrC,YAAA,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE;;aAGvC;AACI,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AACrB,YAAA,IAAI,CAAC,qBAAqB,GAAG,MAAM;YAEnC,MAAM,aAAa,GAA0B,EAAE;AAE/C,YAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,UAAU,EAChC;AACI,gBAAA,MAAM,gBAAgB,GAAG,MAAM,CAAC,aAAa;gBAC7C,IAAI,gBAAgB,EACpB;AACI,oBAAA,MAAM,mBAAmB,GAAG,gBAAgB,CAAC,MAAM;AACnD,oBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,mBAAmB,EAAE,EAAE,CAAC,EAC5C;AACI,wBAAA,MAAM,SAAS,GAAG,gBAAgB,CAAC,CAAC,CAAC;wBACrC,aAAa,CAAC,IAAI,CAAC;4BACf,QAAQ,EAAE,SAAS,CAAC,KAAK;4BACzB,KAAK,EAAE,SAAS,CAAC;AACpB,yBAAA,CAAC;;;;iBAKd;gBACI,aAAa,CAAC,IAAI,CAAC;oBACf,QAAQ,EAAE,MAAM,CAAC,SAAmB,IAAI,IAAI,CAAC,YAAY,IAAI,EAAE;AAC/D,oBAAA,KAAK,EAAE,MAAM,CAAC,SAAS,IAAI,IAAI,CAAC;AACnC,iBAAA,CAAC;;AAGN,YAAA,IAAI,CAAC,UAAU,EAAE,WAAW,EAAE;AAC9B,YAAA,IAAI,CAAC,UAAU,GAAI,UAA4D,CAAC;AAC5E,gBAAA,aAAa,EAAE,MAAM,CAAC,KAAK,IAAI,CAAC;AAChC,gBAAA,UAAU,EAAE,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW;gBAC3C,aAAa;AACb,gBAAA,OAAO,EAAE,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,YAAY,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,IAAI,MAAM,CAAC;AAC9H,aAAA,CAAC,CAAC,SAAS,CAAC,QAAQ,IAAG;AAEpB,gBAAA,IAAI,CAAC,mBAAmB,GAAG,EAAE;AAC7B,gBAAA,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO;AAC/B,gBAAA,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,YAAY;AACzC,gBAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACtB,gBAAA,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE;AACvC,aAAC,CAAC;;;AAIA,IAAA,4BAA4B,CAAC,OAAmB,EAAE,cAAc,GAAG,IAAI,EAAA;AAE7E,QAAA,IAAI,CAAC,oBAAoB,GAAG,OAAO;QAEnC,IAAI,cAAc,EAClB;YACI,MAAM,iBAAiB,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE;AAC5D,YAAA,MAAM,oBAAoB,GAAG,iBAAiB,CAAC,MAAM;AACrD,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,oBAAoB,EAAE,EAAE,CAAC,EAC7C;AACI,gBAAA,iBAAiB,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;;;AAInC,QAAA,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,OAAO,CAAC;;IAGvC,kBAAkB,GAAA;QAExB,IAAI,EAAE,IAAI,CAAC,uBAAuB,IAAI,IAAI,CAAC,oBAAoB,CAAC,EAChE;YACI;;QAGJ,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,oBAAoB,CAAC;AAClF,QAAA,IAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,MAAM,EACnC;AACI,YAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC;gBAC1B,KAAK,EAAE,IAAI,CAAC,gCAAgC;AAC5C,gBAAA,QAAQ,EAAE;AACb,aAAA,CAAC;;;AAIA,IAAA,6BAA6B,CAAC,MAA+B,EAAE,GAAe,EAAE,QAAgB,EAAA;QAEtG,MAAM,gBAAgB,GAAG,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,QAAQ;AAClD,QAAA,MAAM,mBAAmB,GAAG,IAAI,CAAC,mBAAmB;AAEpD,QAAA,IAAG,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,EACzC;AACI,YAAA,mBAAmB,CAAC,gBAAgB,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC;AACpD,gBAAA,SAAS,EAAE,CAAC;AACR,wBAAA,OAAO,EAAE,8BAA8B;AACvC,wBAAA,QAAQ,EAAE;4BACN,QAAQ,EAAE,MAAM,CAAC,EAAE;AACnB,4BAAA,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;4BAC1B,GAAG;AACH,4BAAA,SAAS,EAAE,MAAM,CAAC,WAAW,EAAE;AACJ;qBAClC,CAAC;gBACF,MAAM,EAAE,IAAI,CAAC;AAChB,aAAA,CAAC;;AAGN,QAAA,OAAO,mBAAmB,CAAC,gBAAgB,CAAC;;IAGxC,eAAe,GAAA;QAEnB,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,EAClC;AACI,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI;AAC3B,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC;;aAGvC;AACI,YAAA,IAAI,CAAC,eAAe,GAAG,KAAK;AAC5B,YAAA,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,OAAO,EAAE;;;IAIvC,uBAAuB,GAAA;AAE3B,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO;AAC5B,QAAA,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM;QAC7B,MAAM,gBAAgB,GAAG,EAAE;AAE3B,QAAA,KAAK,IAAI,QAAQ,GAAG,CAAC,EAAE,QAAQ,GAAG,MAAM,EAAE,EAAE,QAAQ,EACpD;AACI,YAAA,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;YAChC,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,IAAI,MAAM,CAAC,OAAO,EAClD;AACI,gBAAA,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC;;;AAIrC,QAAA,IAAI,CAAC,gBAAgB,GAAG,gBAAgB;;AAGpC,IAAA,SAAS,CAAC,QAAgB,EAAA;AAE9B,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO;AAC5B,QAAA,IAAI,WAAgD;QAEpD,KAAK,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,GAChC;AACI,YAAA,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC;AACtB,YAAA,IAAI,GAAG,CAAC,EAAE,KAAK,QAAQ,EACvB;gBACI,WAAW,GAAG,GAAG;gBACjB;;;AAIR,QAAA,OAAO,WAAW;;IAGtB,WAAW,GAAA;AAEP,QAAA,IAAI,CAAC,UAAU,EAAE,WAAW,EAAE;;8GArdzB,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,OAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,4wDC3D7B,01MAoKA,EAAA,MAAA,EAAA,CAAA,2TAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,ED1HQ,WAAW,EAAA,QAAA,EAAA,8CAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,cAAA,EAAA,QAAA,EAAA,QAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,IAAA,EAAA,YAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACX,WAAW,00FACX,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACP,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,MAAM,0YACN,IAAI,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,QAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACJ,iBAAiB,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,sCAAA,EAAA,0BAAA,EAAA,2BAAA,EAAA,kCAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACjB,eAAe,iLARf,qBAAqB,EAAA,IAAA,EAAA,mBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAkBhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBArB5B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,UAAU,EAAA,OAAA,EACX;wBACL,qBAAqB;wBACrB,WAAW;wBACX,WAAW;wBACX,OAAO;wBACP,gBAAgB;wBAChB,MAAM;wBACN,IAAI;wBACJ,iBAAiB;wBACjB,eAAe;AAClB,qBAAA,EAAA,eAAA,EAGgB,uBAAuB,CAAC,MAAM,iBAChC,iBAAiB,CAAC,IAAI,EAAA,IAAA,EAC/B;AACF,wBAAA,KAAK,EAAE,UAAU;AACpB,qBAAA,EAAA,QAAA,EAAA,01MAAA,EAAA,MAAA,EAAA,CAAA,2TAAA,CAAA,EAAA;mIAImC,mBAAmB,EAAA,CAAA;sBAAtD,YAAY;uBAAC,oBAAoB;gBAIT,OAAO,EAAA,CAAA;sBAA/B,KAAK;uBAAC,EAAC,QAAQ,EAAE,IAAI,EAAC;gBAKE,UAAU,EAAA,CAAA;sBAAlC,KAAK;uBAAC,EAAC,QAAQ,EAAE,IAAI,EAAC;gBAId,aAAa,EAAA,CAAA;sBAArB;gBAIQ,WAAW,EAAA,CAAA;sBAAnB;gBAIQ,SAAS,EAAA,CAAA;sBAAjB;gBAIQ,WAAW,EAAA,CAAA;sBAAnB;gBAIQ,kBAAkB,EAAA,CAAA;sBAA1B;gBACQ,WAAW,EAAA,CAAA;sBAAnB;gBAIQ,aAAa,EAAA,CAAA;sBAArB;gBAIQ,iBAAiB,EAAA,CAAA;sBAAzB;gBAIQ,iBAAiB,EAAA,CAAA;sBAAzB;gBAIQ,SAAS,EAAA,CAAA;sBAAjB;gBAIQ,oBAAoB,EAAA,CAAA;sBAA5B;gBAIS,0BAA0B,EAAA,CAAA;sBAAnC;gBAIQ,gBAAgB,EAAA,CAAA;sBAAxB;gBAIQ,UAAU,EAAA,CAAA;sBAAlB;gBAKQ,SAAS,EAAA,CAAA;sBAAjB;gBAIQ,OAAO,EAAA,CAAA;sBAAf;gBAIQ,kBAAkB,EAAA,CAAA;sBAA1B;gBAIQ,QAAQ,EAAA,CAAA;sBAAhB;gBAIQ,YAAY,EAAA,CAAA;sBAApB;gBAOQ,aAAa,EAAA,CAAA;sBAArB;gBAIQ,eAAe,EAAA,CAAA;sBAAvB;gBAIQ,UAAU,EAAA,CAAA;sBAAlB;gBAIQ,gBAAgB,EAAA,CAAA;sBAAxB;gBAIQ,gBAAgB,EAAA,CAAA;sBAAxB;gBAIQ,UAAU,EAAA,CAAA;sBAAlB;gBAIQ,YAAY,EAAA,CAAA;sBAApB;gBAIQ,kBAAkB,EAAA,CAAA;sBAA1B;gBAIQ,OAAO,EAAA,CAAA;sBAAf;gBAIQ,YAAY,EAAA,CAAA;sBAApB;gBAIQ,QAAQ,EAAA,CAAA;sBAAhB;gBAIQ,UAAU,EAAA,CAAA;sBAAlB;gBAIQ,eAAe,EAAA,CAAA;sBAAvB;gBAKQ,mBAAmB,EAAA,CAAA;sBAA3B;gBAKQ,uBAAuB,EAAA,CAAA;sBAA/B;gBAIQ,gCAAgC,EAAA,CAAA;sBAAxC;gBAIQ,wBAAwB,EAAA,CAAA;sBAAhC;gBAIQ,sBAAsB,EAAA,CAAA;sBAA9B;gBAIQ,sBAAsB,EAAA,CAAA;sBAA9B;gBAKQ,wBAAwB,EAAA,CAAA;sBAAhC;gBAKS,eAAe,EAAA,CAAA;sBAAxB;gBAIS,WAAW,EAAA,CAAA;sBAApB;gBAIS,aAAa,EAAA,CAAA;sBAAtB;;;AEnPL;;AAEG;;ACFH;;AAEG;;;;"}