@ember-eui/core 16.0.0 → 16.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (116) hide show
  1. package/declarations/components/eui-aspect-ratio.d.ts +5 -0
  2. package/declarations/components/eui-aspect-ratio.d.ts.map +1 -1
  3. package/declarations/components/eui-avatar.d.ts +6 -0
  4. package/declarations/components/eui-avatar.d.ts.map +1 -1
  5. package/declarations/components/eui-basic-table.d.ts.map +1 -1
  6. package/declarations/components/eui-color-picker.d.ts +3 -0
  7. package/declarations/components/eui-color-picker.d.ts.map +1 -1
  8. package/declarations/components/eui-color-stops/thumb.d.ts +3 -1
  9. package/declarations/components/eui-color-stops/thumb.d.ts.map +1 -1
  10. package/declarations/components/eui-combo-box.d.ts +2 -0
  11. package/declarations/components/eui-combo-box.d.ts.map +1 -1
  12. package/declarations/components/eui-data-grid/body.d.ts +2 -0
  13. package/declarations/components/eui-data-grid/body.d.ts.map +1 -1
  14. package/declarations/components/eui-data-grid.d.ts.map +1 -1
  15. package/declarations/components/eui-dual-range.d.ts +2 -0
  16. package/declarations/components/eui-dual-range.d.ts.map +1 -1
  17. package/declarations/components/eui-focus-trap.d.ts +1 -0
  18. package/declarations/components/eui-focus-trap.d.ts.map +1 -1
  19. package/declarations/components/eui-global-toast-list.d.ts +8 -1
  20. package/declarations/components/eui-global-toast-list.d.ts.map +1 -1
  21. package/declarations/components/eui-markdown-editor-drop-zone.d.ts.map +1 -1
  22. package/declarations/components/eui-markdown-editor.d.ts.map +1 -1
  23. package/declarations/components/eui-markdown-format.d.ts +2 -0
  24. package/declarations/components/eui-markdown-format.d.ts.map +1 -1
  25. package/declarations/components/eui-overlay-mask.d.ts +5 -2
  26. package/declarations/components/eui-overlay-mask.d.ts.map +1 -1
  27. package/declarations/components/eui-popover.d.ts +5 -1
  28. package/declarations/components/eui-popover.d.ts.map +1 -1
  29. package/declarations/components/eui-range.d.ts +3 -0
  30. package/declarations/components/eui-range.d.ts.map +1 -1
  31. package/declarations/components/eui-saturation.d.ts +3 -1
  32. package/declarations/components/eui-saturation.d.ts.map +1 -1
  33. package/declarations/components/eui-search-bar/field-value-selection-filter.d.ts.map +1 -1
  34. package/declarations/components/eui-text-color.d.ts +6 -0
  35. package/declarations/components/eui-text-color.d.ts.map +1 -1
  36. package/declarations/components/eui-text.d.ts.map +1 -1
  37. package/declarations/components/eui-token.d.ts +11 -0
  38. package/declarations/components/eui-token.d.ts.map +1 -1
  39. package/declarations/components/eui-tool-tip.d.ts +1 -2
  40. package/declarations/components/eui-tool-tip.d.ts.map +1 -1
  41. package/declarations/modifiers/outside-click-detector.d.ts +3 -0
  42. package/declarations/modifiers/outside-click-detector.d.ts.map +1 -1
  43. package/declarations/modifiers/resize-observer.d.ts +3 -0
  44. package/declarations/modifiers/resize-observer.d.ts.map +1 -1
  45. package/declarations/utils/css-mappings/eui-avatar.d.ts +2 -2
  46. package/declarations/utils/css-mappings/eui-avatar.d.ts.map +1 -1
  47. package/declarations/utils/css-mappings/eui-badge.d.ts +1 -1
  48. package/declarations/utils/css-mappings/eui-badge.d.ts.map +1 -1
  49. package/declarations/utils/css-mappings/eui-context-menu-item.d.ts +3 -3
  50. package/declarations/utils/eui/flyout-manager/reducer.d.ts.map +1 -1
  51. package/declarations/utils/eui/styles.d.ts +5 -0
  52. package/declarations/utils/eui/styles.d.ts.map +1 -1
  53. package/declarations/utils/retain-document-listener.d.ts +8 -0
  54. package/declarations/utils/retain-document-listener.d.ts.map +1 -0
  55. package/declarations/utils/transition.d.ts +1 -1
  56. package/declarations/utils/transition.d.ts.map +1 -1
  57. package/dist/components/eui-aspect-ratio.js +20 -5
  58. package/dist/components/eui-aspect-ratio.js.map +1 -1
  59. package/dist/components/eui-avatar.js +16 -4
  60. package/dist/components/eui-avatar.js.map +1 -1
  61. package/dist/components/eui-basic-table.js +4 -2
  62. package/dist/components/eui-basic-table.js.map +1 -1
  63. package/dist/components/eui-color-picker.js +8 -2
  64. package/dist/components/eui-color-picker.js.map +1 -1
  65. package/dist/components/eui-color-stops/thumb.js +17 -5
  66. package/dist/components/eui-color-stops/thumb.js.map +1 -1
  67. package/dist/components/eui-combo-box.js +16 -0
  68. package/dist/components/eui-combo-box.js.map +1 -1
  69. package/dist/components/eui-data-grid/body.js +21 -1
  70. package/dist/components/eui-data-grid/body.js.map +1 -1
  71. package/dist/components/eui-data-grid.js +6 -4
  72. package/dist/components/eui-data-grid.js.map +1 -1
  73. package/dist/components/eui-dual-range.js +5 -2
  74. package/dist/components/eui-dual-range.js.map +1 -1
  75. package/dist/components/eui-focus-trap.js +4 -1
  76. package/dist/components/eui-focus-trap.js.map +1 -1
  77. package/dist/components/eui-global-toast-list.js +33 -5
  78. package/dist/components/eui-global-toast-list.js.map +1 -1
  79. package/dist/components/eui-markdown-editor-drop-zone.js +2 -0
  80. package/dist/components/eui-markdown-editor-drop-zone.js.map +1 -1
  81. package/dist/components/eui-markdown-editor.js +3 -1
  82. package/dist/components/eui-markdown-editor.js.map +1 -1
  83. package/dist/components/eui-markdown-format.js +9 -3
  84. package/dist/components/eui-markdown-format.js.map +1 -1
  85. package/dist/components/eui-overlay-mask.js +2 -0
  86. package/dist/components/eui-overlay-mask.js.map +1 -1
  87. package/dist/components/eui-popover.js +22 -2
  88. package/dist/components/eui-popover.js.map +1 -1
  89. package/dist/components/eui-range.js +10 -3
  90. package/dist/components/eui-range.js.map +1 -1
  91. package/dist/components/eui-saturation.js +16 -4
  92. package/dist/components/eui-saturation.js.map +1 -1
  93. package/dist/components/eui-search-bar/field-value-selection-filter.js +8 -3
  94. package/dist/components/eui-search-bar/field-value-selection-filter.js.map +1 -1
  95. package/dist/components/eui-text-color.js +20 -6
  96. package/dist/components/eui-text-color.js.map +1 -1
  97. package/dist/components/eui-text.js +6 -3
  98. package/dist/components/eui-text.js.map +1 -1
  99. package/dist/components/eui-token.js +31 -17
  100. package/dist/components/eui-token.js.map +1 -1
  101. package/dist/components/eui-tool-tip.js +9 -17
  102. package/dist/components/eui-tool-tip.js.map +1 -1
  103. package/dist/icons-DCTZo11a.js.map +1 -1
  104. package/dist/modifiers/outside-click-detector.js +12 -2
  105. package/dist/modifiers/outside-click-detector.js.map +1 -1
  106. package/dist/modifiers/resize-observer.js +19 -4
  107. package/dist/modifiers/resize-observer.js.map +1 -1
  108. package/dist/utils/eui/flyout-manager/reducer.js +7 -1
  109. package/dist/utils/eui/flyout-manager/reducer.js.map +1 -1
  110. package/dist/utils/eui/styles.js +5 -0
  111. package/dist/utils/eui/styles.js.map +1 -1
  112. package/dist/utils/retain-document-listener.js +30 -0
  113. package/dist/utils/retain-document-listener.js.map +1 -0
  114. package/dist/utils/transition.js +8 -3
  115. package/dist/utils/transition.js.map +1 -1
  116. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"eui-data-grid.js","sources":["../../src/components/eui-data-grid.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { cached, tracked } from '@glimmer/tracking';\nimport { action } from '@ember/object';\nimport { guidFor } from '@ember/object/internals';\nimport { hash } from '@ember/helper';\nimport { on } from '@ember/modifier';\nimport { service } from '@ember/service';\nimport { htmlSafe } from '@ember/template';\n\nimport { focusTrap } from 'ember-focus-trap';\nimport { focusTrapFactory } from '../-private/focus-trap-registry.ts';\nimport { modifier } from 'ember-modifier';\nimport { or } from 'ember-truth-helpers';\n\nimport { getEuiThemeContext } from '../utils/emotion/consume.ts';\nimport { euiClass, useEuiBorealisStyles } from '../utils/eui/styles.ts';\nimport { euiDataGridStyles } from '../utils/eui/styles.generated.ts';\nimport { euiDataGridFullScreenStyles } from '../utils/eui/data-grid.ts';\nimport {\n copyFocusedDataGridCell,\n handleGridKeyDown,\n preventTabbing\n} from '../utils/data-grid/focus.ts';\nimport {\n detectSchema,\n mergeSchema,\n schemaDetectors as providedSchemaDetectors\n} from '../utils/data-grid/schema.ts';\nimport { computeSortedRowMap } from '../utils/data-grid/sorting.ts';\nimport { afterRender, observeResize } from '../utils/data-grid/scheduling.ts';\nimport * as keys from '../utils/keys.ts';\nimport EuiDataGridBody from './eui-data-grid/body.gts';\nimport EuiDataGridCopyMarker from './eui-data-grid/copy-marker.gts';\nimport { euiScreenReaderOnlyClass } from './eui-screen-reader-only.gts';\nimport { onTabularCopy } from '../utils/data-grid/tabular-copy.ts';\nimport { euiTablePaginationDefaults } from '../-private/table-pagination-defaults.ts';\nimport EuiDataGridCustomBody from './eui-data-grid/custom-body.gts';\nimport type EuiDataGridBodyBase from './eui-data-grid/body-base.ts';\nimport EuiDataGridInMemoryRenderer from './eui-data-grid/in-memory-renderer.gts';\nimport EuiDataGridPagination, {\n shouldRenderPagination\n} from './eui-data-grid/pagination.gts';\nimport EuiDataGridToolbar from './eui-data-grid/toolbar.gts';\n// ember-eui extension (row-tree): row tree state and hooks\nimport EuiDataGridRowModel from './eui-data-grid/row-model.ts';\nimport { clampRowTreePageIndex } from './eui-data-grid/row-tree-hooks.ts';\n\nimport type Owner from '@ember/owner';\nimport type EuiI18n from '../services/eui-i18n.ts';\nimport type { EuiCss } from '../utils/eui/styles.ts';\nimport type {\n EuiDataGridCellValueElementProps,\n EuiDataGridCellValueSignature,\n EuiDataGridColumn,\n EuiDataGridColumnVisibility,\n EuiDataGridControlColumn,\n EuiDataGridCustomToolbarProps,\n EuiDataGridFocusedCell,\n EuiDataGridGrouping,\n EuiDataGridInMemory,\n EuiDataGridInMemoryValues,\n EuiDataGridCellLocationProps,\n EuiDataGridPaginationProps,\n EuiDataGridRefProps,\n EuiDataGridRowHeightsOptions,\n EuiDataGridRowTree,\n EuiDataGridRowTreeRowInfo,\n EuiDataGridSchema,\n EuiDataGridSchemaDetector,\n EuiDataGridSorting,\n EuiDataGridStyle,\n EuiDataGridToolBarVisibilityOptions,\n EuiDataGridVirtualizationOptions\n} from '../utils/data-grid/types.ts';\nimport type { ComponentLike } from '@glint/template';\nimport type { EuiDataGridCustomBodyProps } from './eui-data-grid/custom-body.gts';\nimport type { EuiDataGridDefaultCellPopoverSignature } from './eui-data-grid/default-cell-popover.gts';\n\nexport type * from '../utils/data-grid/types.ts';\nexport type {\n EuiDataGridCustomBodyCellSignature,\n EuiDataGridCustomBodyProps,\n EuiDataGridCustomFooterRowSignature,\n EuiDataGridSetCustomGridBodyProps\n} from './eui-data-grid/custom-body.gts';\n\n/** Upstream `startingStyles` (display_selector.tsx). */\nexport const startingStyles: Required<\n Pick<\n EuiDataGridStyle,\n | 'cellPadding'\n | 'fontSize'\n | 'border'\n | 'stripes'\n | 'rowHover'\n | 'header'\n | 'footer'\n | 'stickyFooter'\n >\n> = {\n cellPadding: 'm',\n fontSize: 'm',\n border: 'all',\n stripes: false,\n rowHover: 'highlight',\n header: 'shade',\n footer: 'overline',\n stickyFooter: true\n};\n\nconst fontSizesToClassMap = {\n s: 'euiDataGrid--fontSizeSmall',\n m: '',\n l: 'euiDataGrid--fontSizeLarge'\n};\nconst headerToClassMap = {\n shade: 'euiDataGrid--headerShade',\n underline: 'euiDataGrid--headerUnderline'\n};\nconst footerToClassMap = {\n shade: 'euiDataGrid--footerShade',\n overline: 'euiDataGrid--footerOverline',\n striped: ''\n};\nconst rowHoverToClassMap = {\n highlight: 'euiDataGrid--rowHoverHighlight',\n none: ''\n};\nconst bordersToClassMap = {\n all: 'euiDataGrid--bordersAll',\n horizontal: 'euiDataGrid--bordersHorizontal',\n none: 'euiDataGrid--bordersNone'\n};\nconst cellPaddingsToClassMap = {\n s: 'euiDataGrid--paddingSmall',\n m: '',\n l: 'euiDataGrid--paddingLarge'\n};\n\n/**\n * Upstream relies on the global reset's `box-sizing: border-box` for cell\n * layout (padded contents fill their cells); scoped here with zero\n * specificity so upstream rules still win.\n */\nconst BOX_SIZING_RESET = {\n '*:where(&)': { boxSizing: 'border-box' },\n '*:where(& *)': { boxSizing: 'border-box' },\n '*:where(& *)::before': { boxSizing: 'border-box' },\n '*:where(& *)::after': { boxSizing: 'border-box' }\n} as const;\n\nconst GRID_IS_FULLSCREEN_CLASSNAME = 'euiDataGrid__restrictBody';\nconst EMPTY_CONTROL_COLUMNS: EuiDataGridControlColumn[] = [];\n\ntype CellCallback = (isFocused: boolean, preventScroll?: boolean) => void;\n\nexport interface EuiDataGridCellLocation {\n rowIndex: number;\n colIndex: number;\n}\n\n/** Popover options a custom popover renderer may set with `setCellPopoverProps`. */\nexport interface EuiDataGridCellPopoverProps {\n panelClassName?: string;\n zIndex?: number;\n [key: string]: unknown;\n}\n\n/** Arguments of `@renderCellPopover` / the `<:cellPopover>` block. */\nexport interface EuiDataGridCellPopoverElementProps {\n rowIndex: number;\n colIndex: number;\n columnId: string;\n schema?: string | null;\n cellContentsElement: HTMLElement | null;\n setCellPopoverProps: (props: Record<string, unknown>) => void;\n /** The column's cell actions, as rendered in the default popover footer. */\n cellActions: ComponentLike;\n /**\n * The standard popover display (`EuiText` around its block, or the cell's\n * JSON in a code block for the `json` schema, then the cell actions), to\n * fall back to it for some columns: `<@DefaultCellPopover>{{yield}}</@DefaultCellPopover>`.\n */\n DefaultCellPopover: ComponentLike<EuiDataGridDefaultCellPopoverSignature>;\n // ember-eui extension (row-tree): the popover's row object\n /** The row object, with `@rowTree` or `@grouping.rows` (Ember EUI extension). */\n row?: any;\n // ember-eui extension (row-tree): the popover's row tree state\n /** The row's tree state, with `@rowTree` or `@grouping` (Ember EUI extension). */\n rowTree?: EuiDataGridRowTreeRowInfo;\n}\n\nexport interface EuiDataGridSignature {\n Element: HTMLDivElement;\n Args: {\n /** Column definitions (`id`, `displayAsText`, `schema`, `initialWidth`, `actions`, `cellActions`, …). */\n columns: EuiDataGridColumn[];\n /**\n * Controlled column order/visibility. Optional in Ember: without it the\n * grid keeps its own state, starting with every column visible.\n */\n columnVisibility?: EuiDataGridColumnVisibility;\n // ember-eui extension (row-tree): optional with @rowTree / @grouping.rows\n /** Number of rows in the data (not needed with `@rowTree` or `@grouping.rows`). */\n rowCount?: number;\n // ember-eui extension (row-tree): @rowTree and @grouping args\n /**\n * Ember EUI extension: nested rows. The rows array (nested through each\n * row's `children`, or flat with `parentId`), or options\n * `{ rows, getChildren, getParentId, getRowId, hasChildren,\n * expandedRowIds, defaultExpandedRowIds, onExpandedChange,\n * toggleColumnId }`.\n */\n rowTree?: EuiDataGridRowTree;\n /**\n * Ember EUI extension: groups rows by column values\n * (`{ groupBy, getValue, rows, expandedGroupIds, defaultExpandedGroupIds,\n * onExpandedChange, renderGroupCell, toggleColumnId }`).\n */\n grouping?: EuiDataGridGrouping;\n /**\n * Component rendering a cell's value; receives `@rowIndex`, `@colIndex`,\n * `@columnId`, `@isDetails`, `@isExpanded`, `@isExpandable`,\n * `@setCellProps`, `@schema`, `@cellContext` and (with `@rowTree` or\n * `@grouping.rows`) `@row`. Or use the `<:cell>` block.\n */\n renderCellValue?: ComponentLike<EuiDataGridCellValueSignature>;\n /** Extra data passed to every cell renderer as `@cellContext`. */\n cellContext?: Record<string, unknown>;\n /**\n * Component rendering the expansion popover (its default block renders\n * the cell value with `@isDetails`); or use the `<:cellPopover>` block.\n */\n renderCellPopover?: ComponentLike<{\n Args: EuiDataGridCellPopoverElementProps;\n Blocks: { default: [] };\n }>;\n /** Component rendering footer cells; or use the `<:footerCell>` block. */\n renderFooterCellValue?: ComponentLike<EuiDataGridCellValueSignature>;\n /**\n * Escape hatch replacing the virtualized body: a component receiving\n * `@Cell`, `@visibleColumns`, `@visibleRowData`, `@setCustomGridBodyProps`,\n * `@gridWidth`, `@headerRow` and `@footerRow`; or use the\n * `<:customGridBody>` block. Give cell content with `@renderCellValue`\n * or the `Cell`'s own block.\n */\n renderCustomGridBody?: ComponentLike<{ Args: EuiDataGridCustomBodyProps }>;\n /**\n * Custom toolbar layout: a component receiving the toolbar controls\n * (`@hasRoomForGridControls`, `@columnControl`, `@columnSortingControl`,\n * `@keyboardShortcutsControl`, `@displayControl`, `@fullScreenControl`,\n * `@additionalControls`); or use the `<:customToolbar>` block.\n */\n renderCustomToolbar?: ComponentLike<{ Args: EuiDataGridCustomToolbarProps }>;\n /** Columns before the data columns (e.g. row selection). */\n leadingControlColumns?: EuiDataGridControlColumn[];\n /** Columns after the data columns (e.g. row actions). */\n trailingControlColumns?: EuiDataGridControlColumn[];\n /** Extra schema detectors, appended to the defaults. */\n schemaDetectors?: EuiDataGridSchemaDetector[];\n /** Borders, header/footer styles, stripes, row hover, density. */\n gridStyle?: EuiDataGridStyle;\n /** Default and per-row heights (`'auto'`, a number, `{ lineCount }` or `{ height }`). */\n rowHeightsOptions?: EuiDataGridRowHeightsOptions;\n /** `false` hides the toolbar, or an object toggling each control. Defaults to `true`. */\n toolbarVisibility?: boolean | EuiDataGridToolBarVisibilityOptions;\n /** `false` hides the header row. Defaults to `true`. */\n headerVisibility?: boolean;\n /** Pagination state and callbacks; rendered with `EuiTablePagination`. */\n pagination?: EuiDataGridPaginationProps;\n /** Sorted columns and `onSort`. */\n sorting?: EuiDataGridSorting;\n /** Let the grid read rendered values to detect schemas and sort in memory. */\n inMemory?: EuiDataGridInMemory;\n /** Called after a column is resized. */\n onColumnResize?: (event: { columnId: string; width: number }) => void;\n /** Below this width only the right toolbar controls show. Defaults to 479. */\n minSizeForControls?: number;\n /** Grid height (CSS length or px number). Without it the grid grows with its rows. */\n height?: string | number;\n /** Grid width (CSS length or px number). */\n width?: string | number;\n /** Overscan counts and render/scroll callbacks of the virtualized body. */\n virtualizationOptions?: EuiDataGridVirtualizationOptions;\n /** Called when fullscreen mode is entered or left. */\n onFullScreenChange?: (isFullScreen: boolean) => void;\n /**\n * Called after render with the grid's imperative API (upstream's `ref`):\n * `setIsFullScreen`, `setFocusedCell`, `openCellPopover`,\n * `closeCellPopover`, `scrollTo` and `scrollToItem`.\n */\n registerApi?: (api: EuiDataGridRefProps) => void;\n /** Accessible name of the grid (same as the `aria-label` attribute). */\n ariaLabel?: string;\n /** Id(s) labelling the grid (same as the `aria-labelledby` attribute). */\n ariaLabelledBy?: string;\n /** Extra styles composed last into the grid class. */\n css?: EuiCss;\n };\n Blocks: {\n /** Cell content when `@renderCellValue` is not given. */\n cell: [EuiDataGridCellValueElementProps];\n /** Expansion popover content when `@renderCellPopover` is not given. */\n cellPopover: [EuiDataGridCellPopoverElementProps];\n /** Footer cell content when `@renderFooterCellValue` is not given. */\n footerCell: [EuiDataGridCellValueElementProps];\n /** Header of a control column without `headerCellRender`. */\n controlHeaderCell: [{ columnId: string }];\n /** Body cell of a control column without `rowCellRender`. */\n controlCell: [EuiDataGridCellValueElementProps];\n /** Footer cell of a control column without `footerCellRender`. */\n controlFooterCell: [EuiDataGridCellValueElementProps];\n /** Toolbar controls before the column/sort controls. */\n leftControlsPrepend: [];\n /** Toolbar controls after the column/sort controls. */\n leftControlsAppend: [];\n /** Toolbar controls before the right icon buttons. */\n rightControls: [];\n /** Custom toolbar (like `@renderCustomToolbar`), yielding the toolbar controls. */\n customToolbar: [EuiDataGridCustomToolbarProps];\n /** Custom grid body (like `@renderCustomGridBody`). */\n customGridBody: [EuiDataGridCustomBodyProps];\n };\n}\n\nfunction stableKey(value: unknown): string {\n return JSON.stringify(value, (_key, v) =>\n typeof v === 'function' ? undefined : v\n );\n}\n\n/**\n * Data grid with virtualized rows and columns, keyboard navigation, cell\n * expansion, sorting, column management, display options and pagination.\n * Port of EUI 123.1.0 `EuiDataGrid`.\n */\nexport default class EuiDataGrid extends Component<EuiDataGridSignature> {\n @service declare euiI18n: EuiI18n;\n\n readonly gridId = `euiDataGrid-${guidFor(this)}`;\n readonly interactiveCellId = `${this.gridId}-interactive`;\n readonly ariaLabelledById = `${this.gridId}-labelledby`;\n\n /** The grid body; registers itself to scroll focused cells into view. */\n body: EuiDataGridBodyBase<any> | null = null;\n contentElement: HTMLElement | null = null;\n\n /**\n * Toolbar width, kept by the root's resize observer. Only the toolbar\n * consumes it (to hide the left controls on narrow grids).\n */\n @tracked gridWidth = 0;\n @tracked isFullScreen = false;\n\n // `aria-label`/`aria-labelledby` attributes are moved to the role=grid element\n @tracked attrAriaLabel: string | null = null;\n @tracked attrAriaLabelledBy: string | null = null;\n\n /* ---------------------------------------------------------------------- */\n /* Columns */\n /* ---------------------------------------------------------------------- */\n\n get leadingControlColumns(): EuiDataGridControlColumn[] {\n return this.args.leadingControlColumns ?? EMPTY_CONTROL_COLUMNS;\n }\n\n get trailingControlColumns(): EuiDataGridControlColumn[] {\n return this.args.trailingControlColumns ?? EMPTY_CONTROL_COLUMNS;\n }\n\n @cached\n get displayValues(): Record<string, string> {\n const values: Record<string, string> = {};\n for (const column of this.args.columns) {\n if (!values[column.id]) values[column.id] = column.displayAsText || column.id;\n }\n return values;\n }\n\n @tracked private internalVisibleColumns: string[] | null = null;\n\n get visibleColumnIds(): string[] {\n return (\n this.args.columnVisibility?.visibleColumns ??\n this.internalVisibleColumns ??\n this.args.columns.map(({ id }) => id)\n );\n }\n\n @action\n setVisibleColumns(columnIds: string[]): void {\n if (this.args.columnVisibility) {\n this.args.columnVisibility.setVisibleColumns(columnIds);\n } else {\n this.internalVisibleColumns = columnIds;\n }\n }\n\n // Column order shown in the column selector (`useDependentState` upstream):\n // re-derived whenever a new `@columns` array is passed.\n @tracked private sortedColumnsState: {\n columns: EuiDataGridColumn[];\n ids: string[];\n } | null = null;\n\n @cached\n get initialSortedColumns(): string[] {\n const availableColumnIdsSet = new Set(this.args.columns.map(({ id }) => id));\n const validVisibleColumns = this.visibleColumnIds.filter((id) =>\n availableColumnIdsSet.has(id)\n );\n const visibleSet = new Set(validVisibleColumns);\n const result: string[] = [];\n let visibleIndex = 0;\n for (const columnId of availableColumnIdsSet) {\n if (visibleSet.has(columnId)) {\n if (visibleIndex < validVisibleColumns.length) {\n result.push(validVisibleColumns[visibleIndex++]!);\n }\n } else {\n result.push(columnId);\n }\n }\n return result;\n }\n\n get sortedColumns(): string[] {\n const state = this.sortedColumnsState;\n if (state && state.columns === this.args.columns) return state.ids;\n return this.initialSortedColumns;\n }\n\n @action\n setSortedColumns(nextColumns: string[]): void {\n this.sortedColumnsState = { columns: this.args.columns, ids: nextColumns };\n const visible = new Set(this.visibleColumnIds);\n this.setVisibleColumns(nextColumns.filter((id) => visible.has(id)));\n }\n\n /** Move a column to another column's position (header column actions). */\n @action\n switchColumnPos(fromColId: string, toColId: string): void {\n const sorted = this.sortedColumns;\n const moveFromIdx = sorted.indexOf(fromColId);\n const moveToIdx = sorted.indexOf(toColId);\n if (moveFromIdx === -1 || moveToIdx === -1) return;\n const next = [...sorted];\n next.splice(moveFromIdx, 1);\n next.splice(moveToIdx, 0, fromColId);\n this.setSortedColumns(next);\n }\n\n /** The visible data columns, in display order. */\n @cached\n get columns(): EuiDataGridColumn[] {\n const byId = new Map(this.args.columns.map((column) => [column.id, column]));\n const columns: EuiDataGridColumn[] = [];\n for (const id of this.visibleColumnIds) {\n const column = byId.get(id);\n if (column) columns.push(column);\n }\n return columns;\n }\n\n get visibleColCount(): number {\n return (\n this.columns.length +\n this.leadingControlColumns.length +\n this.trailingControlColumns.length\n );\n }\n\n /* ---------------------------------------------------------------------- */\n /* Rows & pagination */\n /* ---------------------------------------------------------------------- */\n\n @cached\n get pagination():\n | (EuiDataGridPaginationProps & { pageSize: number; pageSizeOptions: number[] })\n | undefined {\n const pagination = this.args.pagination;\n if (!pagination) return undefined;\n // upstream `useEuiTablePaginationDefaults()` (with the app's `componentDefaults`)\n const defaults = euiTablePaginationDefaults(this);\n // read each field: consumers often pass objects with tracked accessors\n return {\n pageIndex: pagination.pageIndex,\n pageSize: pagination.pageSize ?? defaults.itemsPerPage,\n pageSizeOptions: pagination.pageSizeOptions ?? defaults.itemsPerPageOptions,\n onChangePage: pagination.onChangePage,\n onChangeItemsPerPage: pagination.onChangeItemsPerPage\n };\n }\n\n /** `pagination` where the template already checked it is defined. */\n get definedPagination() {\n return this.pagination!;\n }\n\n // ember-eui extension (row-tree): tree state; `rowModel` is null without\n // @rowTree/@grouping, so the grid works exactly as upstream\n readonly rowTreeModel = new EuiDataGridRowModel(this);\n\n get rowModel(): EuiDataGridRowModel | null {\n return this.rowTreeModel.isActive ? this.rowTreeModel : null;\n }\n\n // ember-eui extension (row-tree): rows shown: `@rowCount`, or the visible tree rows\n get rowCount(): number {\n return this.rowModel?.visibleRows.length ?? this.args.rowCount ?? 0;\n }\n\n // ember-eui extension (row-tree): data rows (all tree levels)\n get dataRowCount(): number {\n return this.rowModel?.dataRowCount ?? this.args.rowCount ?? 0;\n }\n\n get showPagination(): boolean {\n const pagination = this.pagination;\n // ember-eui extension (row-tree): visible rows instead of @rowCount\n return !!pagination && shouldRenderPagination(this.rowCount, pagination);\n }\n\n @cached\n get visibleRows(): { startRow: number; endRow: number; visibleRowCount: number } {\n const pagination = this.pagination;\n const rowCount = this.rowCount; // ember-eui extension (row-tree): visible rows\n const startRow =\n pagination && pagination.pageSize > 0\n ? pagination.pageIndex * pagination.pageSize\n : 0;\n let endRow =\n pagination && pagination.pageSize > 0\n ? (pagination.pageIndex + 1) * pagination.pageSize\n : rowCount;\n endRow = Math.min(endRow, rowCount);\n return { startRow, endRow, visibleRowCount: Math.max(0, endRow - startRow) };\n }\n\n /* ---------------------------------------------------------------------- */\n /* Schema, in-memory values & sorting */\n /* ---------------------------------------------------------------------- */\n\n @cached\n get schemaDetectors(): EuiDataGridSchemaDetector[] {\n return [...providedSchemaDetectors, ...(this.args.schemaDetectors ?? [])];\n }\n\n /** Values read from the off-screen in-memory renderer. */\n inMemoryValues: EuiDataGridInMemoryValues = {};\n @tracked inMemoryVersion = 0;\n\n @action\n onCellRender(rowIndex: number, columnId: string, value: string): void {\n const row = (this.inMemoryValues[rowIndex] = this.inMemoryValues[rowIndex] || {});\n if (row[columnId] !== value) {\n row[columnId] = value;\n this.inMemoryVersion++;\n }\n }\n\n @action\n resetInMemoryValues(rowCount: number): void {\n for (const key of Object.keys(this.inMemoryValues)) {\n if (Number(key) >= rowCount) delete this.inMemoryValues[key];\n }\n this.inMemoryVersion++;\n }\n\n @cached\n get inMemoryValuesSnapshot(): EuiDataGridInMemoryValues {\n // read the version so consumers recompute after the renderer mutates values\n void this.inMemoryVersion;\n return { ...this.inMemoryValues };\n }\n\n get inMemoryRowCount(): number {\n const inMemory = this.args.inMemory;\n if (inMemory?.level === 'enhancements') {\n // only the first page size is guaranteed to be available in memory\n return this.pagination?.pageSize || this.dataRowCount; // ember-eui extension (row-tree): all data rows\n }\n return this.dataRowCount; // ember-eui extension (row-tree): all data rows\n }\n\n @cached\n get schema(): EuiDataGridSchema {\n const detected = detectSchema({\n columns: this.args.columns,\n inMemory: this.args.inMemory,\n inMemoryValues: this.args.inMemory ? this.inMemoryValuesSnapshot : {},\n schemaDetectors: this.schemaDetectors,\n autoDetectSchema: this.args.inMemory != null\n });\n return mergeSchema(detected, this.args.columns);\n }\n\n @cached\n get sortedRowMap(): number[] {\n return computeSortedRowMap({\n sorting: this.args.sorting,\n inMemory: this.args.inMemory,\n inMemoryValues:\n this.args.inMemory?.level === 'sorting' ? this.inMemoryValuesSnapshot : {},\n schema: this.schema,\n schemaDetectors: this.schemaDetectors\n });\n }\n\n /** Visible (page-relative or absolute) row index to the data row index. */\n @action\n getCorrectRowIndex(visibleRowIndex: number): number {\n const startRow = this.visibleRows.startRow;\n const isPaginated = visibleRowIndex - startRow < 0;\n const unpaginatedRowIndex = isPaginated\n ? visibleRowIndex + startRow\n : visibleRowIndex;\n // ember-eui extension (row-tree): tree rows (negative indexes for groups)\n if (this.rowModel) return this.rowModel.rowIndexAt(unpaginatedRowIndex);\n const sortedRowMap = this.sortedRowMap;\n return unpaginatedRowIndex in sortedRowMap\n ? sortedRowMap[unpaginatedRowIndex]!\n : unpaginatedRowIndex;\n }\n\n /* ---------------------------------------------------------------------- */\n /* Display options (gridStyle / rowHeightsOptions + display selector) */\n /* ---------------------------------------------------------------------- */\n\n @cached\n get passedGridStyles(): EuiDataGridStyle {\n return { ...startingStyles, ...this.args.gridStyle };\n }\n\n @cached\n get passedGridStylesKey(): string {\n return stableKey(this.passedGridStyles);\n }\n\n // user changes from the display selector, valid until new styles are passed\n @tracked private gridStylesState: { key: string; styles: EuiDataGridStyle } | null =\n null;\n\n get gridStyles(): typeof startingStyles & EuiDataGridStyle {\n const state = this.gridStylesState;\n const styles =\n state && state.key === this.passedGridStylesKey\n ? state.styles\n : this.passedGridStyles;\n return styles as typeof startingStyles & EuiDataGridStyle;\n }\n\n /** Initial styles the display selector's reset button restores. */\n initialGridStyles: EuiDataGridStyle | null = null;\n\n @action\n onUserGridStyleChange(styles: Partial<EuiDataGridStyle>): void {\n const changed = { ...this.gridStyles, ...styles };\n const { onChange, ...rest } = changed;\n onChange?.(rest);\n this.gridStylesState = { key: this.passedGridStylesKey, styles: changed };\n }\n\n @cached\n get passedRowHeightsOptions(): EuiDataGridRowHeightsOptions {\n return this.args.rowHeightsOptions ?? {};\n }\n\n @cached\n get passedRowHeightsOptionsKey(): string {\n return stableKey(this.passedRowHeightsOptions);\n }\n\n @tracked private rowHeightsState: {\n key: string;\n options: EuiDataGridRowHeightsOptions;\n } | null = null;\n\n get rowHeightsOptions(): EuiDataGridRowHeightsOptions {\n const state = this.rowHeightsState;\n return state && state.key === this.passedRowHeightsOptionsKey\n ? state.options\n : this.passedRowHeightsOptions;\n }\n\n initialRowHeightsOptions: EuiDataGridRowHeightsOptions | null = null;\n\n @action\n onUserRowHeightChange(options: Partial<EuiDataGridRowHeightsOptions>): void {\n const changed = { ...this.rowHeightsOptions, ...options };\n const { onChange, ...rest } = changed;\n onChange?.(rest);\n this.rowHeightsState = { key: this.passedRowHeightsOptionsKey, options: changed };\n }\n\n @action\n resetDisplayOptions(): void {\n this.gridStylesState = {\n key: this.passedGridStylesKey,\n styles: this.initialGridStyles ?? this.passedGridStyles\n };\n this.rowHeightsState = {\n key: this.passedRowHeightsOptionsKey,\n options: this.initialRowHeightsOptions ?? this.passedRowHeightsOptions\n };\n }\n\n constructor(owner: Owner, args: EuiDataGridSignature['Args']) {\n super(owner, args);\n this.initialGridStyles = { ...startingStyles, ...args.gridStyle };\n this.initialRowHeightsOptions = args.rowHeightsOptions ?? {};\n // copies the focused cell's text on Ctrl/Cmd+C (static handler: deduped)\n document.addEventListener('copy', copyFocusedDataGridCell);\n // tabs/newlines for selections copied across cells (upstream\n // OverrideCopiedTabularContent; static handler: deduped)\n document.addEventListener('copy', onTabularCopy);\n }\n\n /* ---------------------------------------------------------------------- */\n /* Focus */\n /* ---------------------------------------------------------------------- */\n\n private cellsUpdateFocus = new Map<string, CellCallback>();\n @tracked focusedCell: EuiDataGridFocusedCell | undefined = undefined;\n @tracked isFocusedCellInView = false;\n\n /** Register a cell's focus callback; returns the unregister function. */\n onFocusUpdate(cell: EuiDataGridFocusedCell, callback: CellCallback): () => void {\n const key = `${cell[0]}-${cell[1]}`;\n this.cellsUpdateFocus.set(key, callback);\n return () => {\n if (this.cellsUpdateFocus.get(key) === callback) this.cellsUpdateFocus.delete(key);\n };\n }\n\n isFocusedCell(colIndex: number, visibleRowIndex: number): boolean {\n const focused = this.focusedCell;\n return focused?.[0] === colIndex && focused?.[1] === visibleRowIndex;\n }\n\n @action\n setFocusedCell(nextFocusedCell: EuiDataGridFocusedCell, forceUpdate = false): void {\n const previous = this.focusedCell;\n if (\n !forceUpdate &&\n previous &&\n nextFocusedCell[0] === previous[0] &&\n nextFocusedCell[1] === previous[1]\n ) {\n return;\n }\n this.isFocusedCellInView = true; // scrolling ensures focused cells are in view\n this.focusedCell = nextFocusedCell;\n if (previous) this.notifyCell(previous, false);\n this.notifyCell(nextFocusedCell, true);\n this.body?.onFocusedCellChange(nextFocusedCell);\n }\n\n private notifyCell(cell: EuiDataGridFocusedCell, isFocused: boolean): void {\n this.cellsUpdateFocus.get(`${cell[0]}-${cell[1]}`)?.(isFocused);\n }\n\n @action\n setIsFocusedCellInView(isInView: boolean): void {\n if (this.isFocusedCellInView !== isInView) this.isFocusedCellInView = isInView;\n }\n\n @action\n focusFirstVisibleInteractiveCell(): void {\n this.setFocusedCell([0, -1]);\n }\n\n /* ---------------------------------------------------------------------- */\n /* Cell popover */\n /* ---------------------------------------------------------------------- */\n\n @tracked popoverCell: EuiDataGridCellLocation | null = null;\n /** Popover props a custom popover renderer sets (`setCellPopoverProps`). */\n @tracked cellPopoverProps: EuiDataGridCellPopoverProps = {};\n\n @action\n openCellPopover({ rowIndex, colIndex }: EuiDataGridCellLocation): void {\n const open = this.popoverCell;\n if (open && open.rowIndex === rowIndex && open.colIndex === colIndex) return;\n this.cellPopoverProps = {};\n this.popoverCell = { rowIndex, colIndex };\n this.body?.scrollCellIntoView({ rowIndex, colIndex });\n }\n\n @action\n closeCellPopover(): void {\n if (this.popoverCell) this.popoverCell = null;\n }\n\n isPopoverOpenFor(colIndex: number, visibleRowIndex: number): boolean {\n const open = this.popoverCell;\n return !!open && open.colIndex === colIndex && open.rowIndex === visibleRowIndex;\n }\n\n /* ---------------------------------------------------------------------- */\n /* Fullscreen */\n /* ---------------------------------------------------------------------- */\n\n @action\n setIsFullScreen(isFullScreen: boolean): void {\n if (this.isFullScreen === isFullScreen) return;\n this.isFullScreen = isFullScreen;\n this.args.onFullScreenChange?.(isFullScreen);\n }\n\n @action\n toggleFullScreen(): void {\n this.setIsFullScreen(!this.isFullScreen);\n }\n\n @action\n onGridRootKeyDown(event: KeyboardEvent): void {\n if (event.key === keys.ESCAPE && this.isFullScreen) {\n event.preventDefault();\n this.setIsFullScreen(false);\n }\n }\n\n restrictBody = modifier((_element: HTMLElement, [isFullScreen, bodyClass]: [boolean, string]) => {\n if (!isFullScreen) return;\n document.body.classList.add(GRID_IS_FULLSCREEN_CLASSNAME, bodyClass);\n return () => {\n document.body.classList.remove(GRID_IS_FULLSCREEN_CLASSNAME, bodyClass);\n };\n });\n\n /* ---------------------------------------------------------------------- */\n /* Toolbar */\n /* ---------------------------------------------------------------------- */\n\n get showToolbar(): boolean {\n return !!(this.args.toolbarVisibility ?? true);\n }\n\n get showHeader(): boolean {\n return !!(this.args.headerVisibility ?? true);\n }\n\n /* ---------------------------------------------------------------------- */\n /* Styles & classes */\n /* ---------------------------------------------------------------------- */\n\n @cached\n get styles() {\n const context = getEuiThemeContext(this);\n return {\n context,\n grid: useEuiBorealisStyles(context, euiDataGridStyles),\n fullScreen: useEuiBorealisStyles(context, euiDataGridFullScreenStyles)\n };\n }\n\n @cached\n get focusWrapClass(): string {\n const { context, grid } = this.styles;\n return `euiDataGrid__focusWrap ${euiClass(context, grid.euiDataGrid__focusWrap)}`;\n }\n\n @cached\n get fullScreenClass(): string {\n const { context, fullScreen } = this.styles;\n return euiClass(context, fullScreen['euiDataGrid--fullScreen']);\n }\n\n @cached\n get restrictBodyClass(): string {\n const { context, fullScreen } = this.styles;\n return euiClass(context, fullScreen.euiDataGrid__restrictBody);\n }\n\n @cached\n get classes(): string {\n const { context, grid } = this.styles;\n const gridStyles = this.gridStyles;\n const toolbarVisibility = this.args.toolbarVisibility ?? true;\n return [\n 'euiDataGrid',\n fontSizesToClassMap[gridStyles.fontSize],\n bordersToClassMap[gridStyles.border],\n headerToClassMap[gridStyles.header],\n footerToClassMap[gridStyles.footer],\n rowHoverToClassMap[gridStyles.rowHover],\n cellPaddingsToClassMap[gridStyles.cellPadding],\n gridStyles.stripes && 'euiDataGrid--stripes',\n gridStyles.footer && gridStyles.stickyFooter && 'euiDataGrid--stickyFooter',\n this.isFullScreen && 'euiDataGrid--fullScreen',\n this.isFullScreen && this.fullScreenClass,\n !toolbarVisibility && 'euiDataGrid--noControls',\n !this.showHeader && 'euiDataGrid--noHeader',\n euiClass(\n context,\n BOX_SIZING_RESET,\n grid.euiDataGrid,\n grid.cellPadding[gridStyles.cellPadding],\n grid.fontSize[gridStyles.fontSize],\n grid.borders[gridStyles.border],\n this.args.css\n )\n ]\n .filter(Boolean)\n .join(' ');\n }\n\n /** Class of the hidden tabular copy marker characters. */\n @cached\n get copyMarkerClass(): string {\n return euiScreenReaderOnlyClass(this.styles.context);\n }\n\n @cached\n get contentClass(): string {\n const { context, grid } = this.styles;\n return `euiDataGrid__content ${euiClass(context, grid.euiDataGrid__content)}`;\n }\n\n get rootStyle() {\n if (this.isFullScreen) return undefined;\n const toCss = (value: string | number | undefined) =>\n typeof value === 'number' ? `${value}px` : value;\n const width = toCss(this.args.width);\n const height = toCss(this.args.height);\n if (!width && !height) return undefined;\n return htmlSafe(\n [width && `width:${width}`, height && `height:${height}`].filter(Boolean).join(';')\n );\n }\n\n /* ---------------------------------------------------------------------- */\n /* Accessibility */\n /* ---------------------------------------------------------------------- */\n\n get ariaPage(): number {\n return this.pagination ? this.pagination.pageIndex + 1 : 1;\n }\n\n get ariaPageCount(): number {\n return this.pagination?.pageSize\n ? Math.ceil(this.rowCount / this.pagination.pageSize) // ember-eui extension (row-tree): visible rows\n : 1;\n }\n\n get rawAriaLabel(): string | null {\n return this.args.ariaLabel ?? this.attrAriaLabel;\n }\n\n get rawAriaLabelledBy(): string | null {\n return this.args.ariaLabelledBy ?? this.attrAriaLabelledBy;\n }\n\n get gridAriaLabel(): string | undefined {\n const label = this.rawAriaLabel;\n if (label == null) return undefined;\n if (!this.pagination) return label;\n return this.euiI18n.lookupToken(\n 'euiDataGrid.ariaLabel',\n '{label}; Page {page} of {pageCount}.',\n { label, page: this.ariaPage, pageCount: this.ariaPageCount }\n );\n }\n\n get gridAriaLabelledBy(): string | undefined {\n const labelledBy = this.rawAriaLabelledBy;\n if (labelledBy == null) return undefined;\n return `${labelledBy} ${this.pagination ? this.ariaLabelledById : ''}`;\n }\n\n get ariaLabelledByText(): string {\n return this.euiI18n.lookupToken(\n 'euiDataGrid.ariaLabelledBy',\n 'Page {page} of {pageCount}.',\n { page: this.ariaPage, pageCount: this.ariaPageCount }\n );\n }\n\n get screenReaderNotice(): string {\n return this.euiI18n.lookupToken(\n 'euiDataGrid.screenReaderNotice',\n 'Cell contains interactive content.'\n );\n }\n\n /** Moves `aria-label`/`aria-labelledby` attributes to the `role=grid` element. */\n moveAriaAttributes = modifier((element: HTMLElement) => {\n const move = () => {\n for (const name of ['aria-label', 'aria-labelledby'] as const) {\n if (element.hasAttribute(name)) {\n const value = element.getAttribute(name);\n element.removeAttribute(name);\n if (name === 'aria-label') this.attrAriaLabel = value;\n else this.attrAriaLabelledBy = value;\n }\n }\n };\n afterRender(this, move);\n const observer = new MutationObserver(move);\n observer.observe(element, { attributeFilter: ['aria-label', 'aria-labelledby'] });\n return () => observer.disconnect();\n });\n\n /** Tracks the grid width for the toolbar's responsive controls. */\n observeWidth = modifier((element: HTMLElement) => {\n const update = () => {\n const width = element.offsetWidth;\n if (width !== this.gridWidth) this.gridWidth = width;\n };\n afterRender(this, update);\n return observeResize([element], update);\n });\n\n /** Interactive elements added to cells leave the tab order. */\n setupContent = modifier((element: HTMLElement) => {\n this.contentElement = element;\n const observer = new MutationObserver(preventTabbing);\n observer.observe(element, { subtree: true, childList: true });\n return () => {\n observer.disconnect();\n this.contentElement = null;\n };\n });\n\n /* ---------------------------------------------------------------------- */\n /* Content keyboard handling */\n /* ---------------------------------------------------------------------- */\n\n get hasFooter(): boolean {\n return this.body?.hasFooter ?? !!this.args.renderFooterCellValue;\n }\n\n @action\n onContentKeyDown(event: KeyboardEvent): void {\n // Popovers attached inside cells (expansion, column actions) own their\n // keys: upstream renders them outside the grid content\n if ((event.target as Element | null)?.closest?.('.euiPopover__panel')) return;\n handleGridKeyDown(event, {\n gridElement: this.contentElement,\n visibleColCount: this.visibleColCount,\n visibleRowCount: this.visibleRows.visibleRowCount,\n visibleRowStartIndex: this.body?.visibleRowStartIndex ?? 0,\n rowCount: this.rowCount, // ember-eui extension (row-tree): visible rows\n pagination: this.pagination,\n hasFooter: this.hasFooter,\n focusedCell: this.focusedCell,\n setFocusedCell: this.setFocusedCell\n });\n }\n\n get contentTabIndex(): number {\n // Firefox allows tabbing to a scrollable div, Chrome does not\n return this.isFocusedCellInView ? -1 : 0;\n }\n\n @action\n onContentKeyUp(event: KeyboardEvent): void {\n if (this.isFocusedCellInView) return;\n // Only move focus into the grid on a keyboard tab: mouse users can\n // accidentally focus the wrapper by clicking scrollbars\n if (event.key === keys.TAB && event.target === event.currentTarget) {\n this.focusFirstVisibleInteractiveCell();\n }\n }\n\n willDestroy(): void {\n super.willDestroy();\n this.body = null;\n }\n\n /* ---------------------------------------------------------------------- */\n /* Imperative API (upstream `useImperativeGridRef`) */\n /* ---------------------------------------------------------------------- */\n\n /**\n * Throws a digestible error if the consumer targets an invalid cell, which\n * also stops the API from continuing.\n */\n private checkCellExists({ rowIndex, colIndex }: EuiDataGridCellLocationProps): void {\n const rowCount = this.dataRowCount; // ember-eui extension (row-tree): all data rows\n const colCount = this.visibleColCount;\n if (rowIndex >= rowCount || rowIndex < 0) {\n throw new Error(\n `Row ${rowIndex} is not a valid row. The maximum visible row index is ${rowCount - 1}.`\n );\n }\n if (colIndex >= colCount) {\n throw new Error(\n `Column ${colIndex} is not a valid column. The maximum visible column index is ${colCount - 1}.`\n );\n }\n }\n\n /**\n * The consumer's (unsorted, unpaginated) row index to the visible row\n * index the cells use, changing page when the row is on another one.\n */\n private findVisibleRowIndex(rowIndex: number): number {\n const sortedRowMap = this.sortedRowMap;\n const visibleRowIndex = this.rowModel // ember-eui extension (row-tree): reveals collapsed rows\n ? this.rowModel.findVisibleRowIndex(rowIndex)\n : sortedRowMap.length\n ? sortedRowMap.findIndex((mappedIndex) => mappedIndex === rowIndex)\n : rowIndex;\n const pagination = this.pagination;\n if (pagination && pagination.pageSize > 0) {\n const pageIndex = Math.floor(visibleRowIndex / pagination.pageSize);\n if (pageIndex !== pagination.pageIndex) pagination.onChangePage(pageIndex);\n return visibleRowIndex % pagination.pageSize;\n }\n return visibleRowIndex;\n }\n\n /** The API passed to `@registerApi`. */\n readonly api: EuiDataGridRefProps = {\n setIsFullScreen: (isFullScreen: boolean) => this.setIsFullScreen(isFullScreen),\n setFocusedCell: (cell: EuiDataGridCellLocationProps) => {\n this.checkCellExists(cell);\n const visibleRowIndex = this.findVisibleRowIndex(cell.rowIndex);\n // forced, unlike upstream: re-focuses the cell even when it is\n // already the grid's focused cell (e.g. after a modal or popover)\n this.setFocusedCell([cell.colIndex, visibleRowIndex], true);\n },\n openCellPopover: (cell: EuiDataGridCellLocationProps) => {\n this.checkCellExists(cell);\n const visibleRowIndex = this.findVisibleRowIndex(cell.rowIndex);\n this.openCellPopover({ rowIndex: visibleRowIndex, colIndex: cell.colIndex });\n },\n closeCellPopover: () => this.closeCellPopover(),\n scrollTo: (params) => this.body?.scrollTo?.(params),\n scrollToItem: (params) => this.body?.scrollToItem?.(params)\n };\n\n // ember-eui extension (row-tree): toggles a row (closes a popover: rows below it move)\n @action\n toggleRow(row: { id: string; kind: 'row' | 'group'; isExpanded: boolean }): void {\n this.closeCellPopover();\n this.rowModel?.toggle(row);\n }\n\n // ember-eui extension (row-tree): re-registers the API when the tree state appears\n get hasRowModel(): boolean {\n return !!this.rowModel;\n }\n\n clampRowTreePageIndex = clampRowTreePageIndex; // ember-eui extension (row-tree): see row-tree-hooks.ts\n\n registerApi = modifier(\n (\n _element: HTMLElement,\n [registerApi, hasRowModel]: [EuiDataGridSignature['Args']['registerApi'], boolean]\n ) => {\n // ember-eui extension (row-tree): expand/collapse API methods\n const api = hasRowModel ? { ...this.api, ...this.rowTreeModel.api } : this.api;\n if (registerApi) afterRender(this, () => registerApi(api));\n }\n );\n\n <template>\n <div\n class={{this.focusWrapClass}}\n {{focusTrap\n _createFocusTrap=focusTrapFactory\n isActive=this.isFullScreen\n focusTrapOptions=(hash\n clickOutsideDeactivates=true escapeDeactivates=false preventScroll=true\n )\n }}\n >\n <div\n class={{this.classes}}\n style={{this.rootStyle}}\n {{on \"keydown\" this.onGridRootKeyDown}}\n {{this.observeWidth}}\n {{this.restrictBody this.isFullScreen this.restrictBodyClass}}\n {{! ember-eui extension (row-tree): re-register the API with tree methods }}\n {{this.registerApi @registerApi this.hasRowModel}}\n {{! ember-eui extension (row-tree): page index clamping }}\n {{this.clampRowTreePageIndex this this.rowCount this.pagination.pageIndex this.pagination.pageSize}}\n ...attributes\n {{this.moveAriaAttributes}}\n >\n {{#if this.showToolbar}}\n <EuiDataGridToolbar @grid={{this}} @hasCustomToolbarBlock={{has-block \"customToolbar\"}}>\n <:leftControlsPrepend>{{yield to=\"leftControlsPrepend\"}}</:leftControlsPrepend>\n <:leftControlsAppend>{{yield to=\"leftControlsAppend\"}}</:leftControlsAppend>\n <:rightControls>{{yield to=\"rightControls\"}}</:rightControls>\n <:customToolbar as |toolbar|>{{yield toolbar to=\"customToolbar\"}}</:customToolbar>\n </EuiDataGridToolbar>\n {{/if}}\n {{#if @inMemory}}\n <EuiDataGridInMemoryRenderer\n @grid={{this}}\n @inMemory={{@inMemory}}\n @rowCount={{this.inMemoryRowCount}}\n >\n <:cell as |cell|>{{yield cell to=\"cell\"}}</:cell>\n </EuiDataGridInMemoryRenderer>\n {{/if}}\n {{! template-lint-disable no-invalid-interactive }}\n <div\n id={{this.gridId}}\n class={{this.contentClass}}\n {{! ember-eui extension (row-tree): treegrid role, visible row count }}\n role={{if this.rowModel \"treegrid\" \"grid\"}}\n aria-rowcount={{this.rowCount}}\n aria-colcount={{this.visibleColCount}}\n aria-label={{this.gridAriaLabel}}\n aria-labelledby={{this.gridAriaLabelledBy}}\n tabindex={{this.contentTabIndex}}\n data-test-subj=\"euiDataGridBody\"\n {{on \"keydown\" this.onContentKeyDown}}\n {{on \"keyup\" this.onContentKeyUp}}\n {{this.setupContent}}\n >\n <EuiDataGridCopyMarker @grid={{this}} @type=\"boundary\" />\n {{#if (or @renderCustomGridBody (has-block \"customGridBody\"))}}\n <EuiDataGridCustomBody\n @grid={{this}}\n @hasFooterBlock={{has-block \"footerCell\"}}\n @renderCustomGridBody={{@renderCustomGridBody}}\n >\n <:customGridBody as |body|>{{yield body to=\"customGridBody\"}}</:customGridBody>\n </EuiDataGridCustomBody>\n {{else}}\n <EuiDataGridBody\n @grid={{this}}\n @hasFooterBlock={{has-block \"footerCell\"}}\n @hasCellPopoverBlock={{has-block \"cellPopover\"}}\n >\n <:cell as |cell|>{{yield cell to=\"cell\"}}</:cell>\n <:cellPopover as |popover|>{{yield popover to=\"cellPopover\"}}</:cellPopover>\n <:footerCell as |cell|>{{yield cell to=\"footerCell\"}}</:footerCell>\n <:controlHeaderCell as |cell|>{{yield cell to=\"controlHeaderCell\"}}</:controlHeaderCell>\n <:controlCell as |cell|>{{yield cell to=\"controlCell\"}}</:controlCell>\n <:controlFooterCell as |cell|>{{yield cell to=\"controlFooterCell\"}}</:controlFooterCell>\n </EuiDataGridBody>\n {{/if}}\n <EuiDataGridCopyMarker @grid={{this}} @type=\"boundary\" />\n </div>\n {{#if this.showPagination}}\n {{#if this.rawAriaLabelledBy}}\n <p id={{this.ariaLabelledById}} hidden>{{this.ariaLabelledByText}}</p>\n {{/if}}\n <EuiDataGridPagination @grid={{this}} @pagination={{this.definedPagination}} />\n {{/if}}\n <p id={{this.interactiveCellId}} hidden>{{this.screenReaderNotice}}</p>\n </div>\n </div>\n </template>\n}\n"],"names":["startingStyles","cellPadding","fontSize","border","stripes","rowHover","header","footer","stickyFooter","fontSizesToClassMap","s","m","l","headerToClassMap","shade","underline","footerToClassMap","overline","striped","rowHoverToClassMap","highlight","none","bordersToClassMap","all","horizontal","cellPaddingsToClassMap","BOX_SIZING_RESET","boxSizing","GRID_IS_FULLSCREEN_CLASSNAME","EMPTY_CONTROL_COLUMNS","stableKey","value","JSON","stringify","_key","v","undefined","EuiDataGrid","Component","g","prototype","service","i","gridId","guidFor","interactiveCellId","ariaLabelledById","body","contentElement","tracked","leadingControlColumns","args","trailingControlColumns","displayValues","values","column","columns","id","displayAsText","n","cached","visibleColumnIds","columnVisibility","visibleColumns","internalVisibleColumns","map","setVisibleColumns","columnIds","action","initialSortedColumns","availableColumnIdsSet","Set","validVisibleColumns","filter","has","visibleSet","result","visibleIndex","columnId","length","push","sortedColumns","state","sortedColumnsState","ids","setSortedColumns","nextColumns","visible","switchColumnPos","fromColId","toColId","sorted","moveFromIdx","indexOf","moveToIdx","next","splice","byId","Map","get","visibleColCount","pagination","defaults","euiTablePaginationDefaults","pageIndex","pageSize","itemsPerPage","pageSizeOptions","itemsPerPageOptions","onChangePage","onChangeItemsPerPage","definedPagination","rowTreeModel","EuiDataGridRowModel","rowModel","isActive","rowCount","visibleRows","dataRowCount","showPagination","shouldRenderPagination","startRow","endRow","Math","min","visibleRowCount","max","schemaDetectors","providedSchemaDetectors","inMemoryValues","onCellRender","rowIndex","row","inMemoryVersion","resetInMemoryValues","key","Object","keys","Number","inMemoryValuesSnapshot","inMemoryRowCount","inMemory","level","schema","detected","detectSchema","autoDetectSchema","mergeSchema","sortedRowMap","computeSortedRowMap","sorting","getCorrectRowIndex","visibleRowIndex","isPaginated","unpaginatedRowIndex","rowIndexAt","passedGridStyles","gridStyle","passedGridStylesKey","gridStyles","gridStylesState","styles","initialGridStyles","onUserGridStyleChange","changed","onChange","rest","passedRowHeightsOptions","rowHeightsOptions","passedRowHeightsOptionsKey","rowHeightsState","options","initialRowHeightsOptions","onUserRowHeightChange","resetDisplayOptions","constructor","owner","document","addEventListener","copyFocusedDataGridCell","onTabularCopy","cellsUpdateFocus","onFocusUpdate","cell","callback","set","delete","isFocusedCell","colIndex","focused","focusedCell","setFocusedCell","nextFocusedCell","forceUpdate","previous","isFocusedCellInView","notifyCell","onFocusedCellChange","isFocused","setIsFocusedCellInView","isInView","focusFirstVisibleInteractiveCell","openCellPopover","open","popoverCell","cellPopoverProps","scrollCellIntoView","closeCellPopover","isPopoverOpenFor","setIsFullScreen","isFullScreen","onFullScreenChange","toggleFullScreen","onGridRootKeyDown","event","preventDefault","restrictBody","modifier","_element","bodyClass","classList","add","remove","showToolbar","toolbarVisibility","showHeader","headerVisibility","context","getEuiThemeContext","grid","useEuiBorealisStyles","euiDataGridStyles","fullScreen","euiDataGridFullScreenStyles","focusWrapClass","euiClass","euiDataGrid__focusWrap","fullScreenClass","restrictBodyClass","euiDataGrid__restrictBody","classes","euiDataGrid","borders","css","Boolean","join","copyMarkerClass","euiScreenReaderOnlyClass","contentClass","euiDataGrid__content","rootStyle","toCss","width","height","htmlSafe","ariaPage","ariaPageCount","ceil","rawAriaLabel","ariaLabel","attrAriaLabel","rawAriaLabelledBy","ariaLabelledBy","attrAriaLabelledBy","gridAriaLabel","label","euiI18n","lookupToken","page","pageCount","gridAriaLabelledBy","labelledBy","ariaLabelledByText","screenReaderNotice","moveAriaAttributes","element","move","name","hasAttribute","getAttribute","removeAttribute","afterRender","observer","MutationObserver","observe","attributeFilter","disconnect","observeWidth","update","offsetWidth","gridWidth","observeResize","setupContent","preventTabbing","subtree","childList","hasFooter","renderFooterCellValue","onContentKeyDown","target","closest","handleGridKeyDown","gridElement","visibleRowStartIndex","contentTabIndex","onContentKeyUp","currentTarget","willDestroy","checkCellExists","colCount","Error","findVisibleRowIndex","findIndex","mappedIndex","floor","api","scrollTo","params","scrollToItem","toggleRow","toggle","hasRowModel","clampRowTreePageIndex","registerApi","setComponentTemplate","precompileTemplate","strictMode","scope","focusTrap","focusTrapFactory","hash","on","EuiDataGridToolbar","EuiDataGridInMemoryRenderer","EuiDataGridCopyMarker","or","EuiDataGridCustomBody","EuiDataGridBody","EuiDataGridPagination"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsFA,wDACO,MAAMA,cAUP,GAEF;AACFC,EAAAA,WAAA,EAAa,GAAA;AACbC,EAAAA,QAAA,EAAU,GAAA;AACVC,EAAAA,MAAA,EAAQ,KAAA;AACRC,EAAAA,OAAA,EAAS,KAAA;AACTC,EAAAA,QAAA,EAAU,WAAA;AACVC,EAAAA,MAAA,EAAQ,OAAA;AACRC,EAAAA,MAAA,EAAQ,UAAA;AACRC,EAAAA,YAAA,EAAc;AAChB;AAEA,MAAMC,mBAAA,GAAsB;AAC1BC,EAAAA,CAAA,EAAG,4BAAA;AACHC,EAAAA,CAAA,EAAG,EAAA;AACHC,EAAAA,CAAA,EAAG;AACL,CAAA;AACA,MAAMC,gBAAA,GAAmB;AACvBC,EAAAA,KAAA,EAAO,0BAAA;AACPC,EAAAA,SAAA,EAAW;AACb,CAAA;AACA,MAAMC,gBAAA,GAAmB;AACvBF,EAAAA,KAAA,EAAO,0BAAA;AACPG,EAAAA,QAAA,EAAU,6BAAA;AACVC,EAAAA,OAAA,EAAS;AACX,CAAA;AACA,MAAMC,kBAAA,GAAqB;AACzBC,EAAAA,SAAA,EAAW,gCAAA;AACXC,EAAAA,IAAA,EAAM;AACR,CAAA;AACA,MAAMC,iBAAA,GAAoB;AACxBC,EAAAA,GAAA,EAAK,yBAAA;AACLC,EAAAA,UAAA,EAAY,gCAAA;AACZH,EAAAA,IAAA,EAAM;AACR,CAAA;AACA,MAAMI,sBAAA,GAAyB;AAC7Bf,EAAAA,CAAA,EAAG,2BAAA;AACHC,EAAAA,CAAA,EAAG,EAAA;AACHC,EAAAA,CAAA,EAAG;AACL,CAAA;AAEA;;;;AAIC;AACD,MAAMc,gBAAA,GAAmB;AACvB,EAAA,YAAA,EAAc;AAAEC,IAAAA,SAAA,EAAW;GAAa;AACxC,EAAA,cAAA,EAAgB;AAAEA,IAAAA,SAAA,EAAW;GAAa;AAC1C,EAAA,sBAAA,EAAwB;AAAEA,IAAAA,SAAA,EAAW;GAAa;AAClD,EAAA,qBAAA,EAAuB;AAAEA,IAAAA,SAAA,EAAW;AAAa;AACnD,CAAA;AAEA,MAAMC,4BAAA,GAA+B,2BAAA;AACrC,MAAMC,wBAAoD,EAAE;;AAS5D;;AAOA;;AA6JA,SAASC,SAAAA,CAAUC,KAAc,EAAS;AACxC,EAAA,OAAOC,IAAA,CAAKC,SAAS,CAACF,KAAA,EAAO,CAACG,MAAMC,CAAA,KAClC,OAAOA,CAAA,KAAM,UAAA,GAAaC,SAAA,GAAYD,CAAA,CAAA;AAE1C;AAEA;;;;;AAKe,MAAME,WAAA,SAAoBC,SAAA,CAAU;AAAA,EAAA;IAAAC,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,SAAA,EAAA,CAChDC,OAAA,CAAA,CAAA;AAAA;EAAA,QAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,SAAA,CAAA,EAAA,MAAA;AAEQC,EAAAA,SAAS,CAAA,YAAA,EAAeC,OAAA,CAAQ,IAAI,GAAG;AACvCC,EAAAA,iBAAA,GAAoB,CAAA,EAAG,IAAI,CAACF,MAAM,CAAA,YAAA,CAAc;AAChDG,EAAAA,gBAAA,GAAmB,CAAA,EAAG,IAAI,CAACH,MAAM,CAAA,WAAA,CAAa;AAEvD;AACAI,EAAAA,IAAA,GAAwC,IAAA;AACxCC,EAAAA,cAAA,GAAqC,IAAA;AAErC;;;AAGC;AAHD,EAAA;IAAAT,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,WAAA,EAAA,CAICS,OAAA,CAAA,EAAA,YAAA;AAAA,MAAA,OAAoB,CAAA;AAAA,IAAA,CAAA,CAAA;AAAA;EAAA,UAAA,IAAAP,CAAA,CAAA,IAAA,EAAA,WAAA,CAAA,EAAA,MAAA;AAAA,EAAA;IAAAH,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,cAAA,EAAA,CACpBS,OAAA,CAAA,EAAA,YAAA;AAAA,MAAA,OAAuB,KAAA;AAAA,IAAA,CAAA,CAAA;AAAA;EAAA,aAAA,IAAAP,CAAA,CAAA,IAAA,EAAA,cAAA,CAAA,EAAA,MAAA;AAAA,EAAA;IAAAH,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,eAAA,EAAA,CAGvBS,OAAA,CAAA,EAAA,YAAA;AAAA,MAAA,OAAuC,IAAA;AAAA,IAAA,CAAA,CAAA;AAAA;EAAA,cAAA,IAAAP,CAAA,CAAA,IAAA,EAAA,eAAA,CAAA,EAAA,MAAA,EAAA;AADxC,EAAA;IAAAH,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,oBAAA,EAAA,CAECS,OAAA,CAAA,EAAA,YAAA;AAAA,MAAA,OAA4C,IAAA;AAAA,IAAA,CAAA,CAAA;AAAA;EAAA,mBAAA,IAAAP,CAAA,CAAA,IAAA,EAAA,oBAAA,CAAA,EAAA,MAAA;AAE7C,wOAIA,IAAIQ,wBAAoD;AACtD,IAAA,OAAO,IAAI,CAACC,IAAI,CAACD,qBAAqB,IAAIrB,qBAAA;AAC5C,EAAA;EAEA,IAAIuB,yBAAqD;AACvD,IAAA,OAAO,IAAI,CAACD,IAAI,CAACC,sBAAsB,IAAIvB,qBAAA;AAC7C,EAAA;EAEA,IACIwB,aAAAA,GAAwC;IAC1C,MAAMC,SAAiC,EAAC;IACxC,KAAK,MAAMC,MAAA,IAAU,IAAI,CAACJ,IAAI,CAACK,OAAO,EAAE;MACtC,IAAI,CAACF,MAAM,CAACC,MAAA,CAAOE,EAAE,CAAC,EAAEH,MAAM,CAACC,MAAA,CAAOE,EAAE,CAAC,GAAGF,OAAOG,aAAa,IAAIH,OAAOE,EAAE;AAC/E,IAAA;AACA,IAAA,OAAOH,MAAA;AACT,EAAA;AAAA,EAAA;IAAAK,CAAA,CAAA,IAAA,CAAAnB,SAAA,EAAA,eAAA,EAAA,CAPCoB,MAAA,CAAA,CAAA;AAAA;AAAA,EAAA;IAAArB,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,wBAAA,EAAA,CASAS,OAAA,CAAA,EAAA,YAAA;AAAA,MAAA,OAA0D,IAAA;AAAA,IAAA,CAAA,CAAA;AAAA;EAAA,uBAAA,IAAAP,CAAA,CAAA,IAAA,EAAA,wBAAA,CAAA,EAAA,MAAA;EAE3D,IAAImB,gBAAAA,GAA6B;IAC/B,OACE,IAAI,CAACV,IAAI,CAACW,gBAAgB,EAAEC,cAAA,IAC5B,IAAI,CAACC,sBAAsB,IAC3B,IAAI,CAACb,IAAI,CAACK,OAAO,CAACS,GAAG,CAAC,CAAC;AAAER,MAAAA;KAAI,KAAKA,EAAA,CACpC;AACF,EAAA;EAGAS,iBAAAA,CAAkBC,SAAmB,EAAQ;AAC3C,IAAA,IAAI,IAAI,CAAChB,IAAI,CAACW,gBAAgB,EAAE;MAC9B,IAAI,CAACX,IAAI,CAACW,gBAAgB,CAACI,iBAAiB,CAACC,SAAA,CAAA;AAC/C,IAAA,CAAA,MAAO;MACL,IAAI,CAACH,sBAAsB,GAAGG,SAAA;AAChC,IAAA;AACF,EAAA;AAEA;AACA;AAAA,EAAA;IAAAR,CAAA,CAAA,IAAA,CAAAnB,SAAA,EAAA,mBAAA,EAAA,CAVC4B,MAAA,CAAA,CAAA;AAAA;AAAA,EAAA;IAAA7B,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,oBAAA,EAAA,CAWAS,OAAA,CAAA,EAAA,YAAA;AAAA,MAAA,OAGU,IAAA;AAAA,IAAA,CAAA,CAAA;AAAA;EAAA,mBAAA,IAAAP,CAAA,CAAA,IAAA,EAAA,oBAAA,CAAA,EAAA,MAAA;EAEX,IACI2B,oBAAAA,GAAiC;AACnC,IAAA,MAAMC,qBAAA,GAAwB,IAAIC,GAAA,CAAI,IAAI,CAACpB,IAAI,CAACK,OAAO,CAACS,GAAG,CAAC,CAAC;AAAER,MAAAA;KAAI,KAAKA,EAAA,CAAA,CAAA;AACxE,IAAA,MAAMe,mBAAA,GAAsB,IAAI,CAACX,gBAAgB,CAACY,MAAM,CAAEhB,EAAA,IACxDa,qBAAA,CAAsBI,GAAG,CAACjB,EAAA,CAAA,CAAA;AAE5B,IAAA,MAAMkB,UAAA,GAAa,IAAIJ,GAAA,CAAIC,mBAAA,CAAA;IAC3B,MAAMI,MAAc,GAAK,EAAE;IAC3B,IAAIC,YAAA,GAAe,CAAA;AACnB,IAAA,KAAK,MAAMC,YAAYR,qBAAA,EAAuB;AAC5C,MAAA,IAAIK,UAAA,CAAWD,GAAG,CAACI,QAAA,CAAA,EAAW;AAC5B,QAAA,IAAID,YAAA,GAAeL,mBAAA,CAAoBO,MAAM,EAAE;UAC7CH,MAAA,CAAOI,IAAI,CAACR,mBAAmB,CAACK,YAAA,EAAA,CAAe,CAAA;AACjD,QAAA;AACF,MAAA,CAAA,MAAO;AACLD,QAAAA,MAAA,CAAOI,IAAI,CAACF,QAAA,CAAA;AACd,MAAA;AACF,IAAA;AACA,IAAA,OAAOF,MAAA;AACT,EAAA;AAAA,EAAA;IAAAjB,CAAA,CAAA,IAAA,CAAAnB,SAAA,EAAA,sBAAA,EAAA,CAnBCoB,MAAA,CAAA,CAAA;AAAA;EAqBD,IAAIqB,aAAAA,GAA0B;AAC5B,IAAA,MAAMC,KAAA,GAAQ,IAAI,CAACC,kBAAkB;AACrC,IAAA,IAAID,KAAA,IAASA,KAAA,CAAM1B,OAAO,KAAK,IAAI,CAACL,IAAI,CAACK,OAAO,EAAE,OAAO0B,KAAA,CAAME,GAAG;IAClE,OAAO,IAAI,CAACf,oBAAoB;AAClC,EAAA;EAGAgB,gBAAAA,CAAiBC,WAAqB,EAAQ;IAC5C,IAAI,CAACH,kBAAkB,GAAG;AAAE3B,MAAAA,OAAA,EAAS,IAAI,CAACL,IAAI,CAACK,OAAO;AAAE4B,MAAAA,GAAA,EAAKE;KAAY;IACzE,MAAMC,OAAA,GAAU,IAAIhB,GAAA,CAAI,IAAI,CAACV,gBAAgB,CAAA;AAC7C,IAAA,IAAI,CAACK,iBAAiB,CAACoB,WAAA,CAAYb,MAAM,CAAEhB,EAAA,IAAO8B,OAAA,CAAQb,GAAG,CAACjB,EAAA,CAAA,CAAA,CAAA;AAChE,EAAA;AAEA;AAAA,EAAA;IAAAE,CAAA,CAAA,IAAA,CAAAnB,SAAA,EAAA,kBAAA,EAAA,CAPC4B,MAAA,CAAA,CAAA;AAAA;AASDoB,EAAAA,eAAAA,CAAgBC,SAAiB,EAAEC,OAAe,EAAQ;AACxD,IAAA,MAAMC,MAAA,GAAS,IAAI,CAACV,aAAa;AACjC,IAAA,MAAMW,WAAA,GAAcD,MAAA,CAAOE,OAAO,CAACJ,SAAA,CAAA;AACnC,IAAA,MAAMK,SAAA,GAAYH,MAAA,CAAOE,OAAO,CAACH,OAAA,CAAA;IACjC,IAAIE,WAAA,KAAgB,EAAC,IAAKE,SAAA,KAAc,EAAC,EAAG;AAC5C,IAAA,MAAMC,IAAA,GAAO,CAAI,GAAAJ,MAAA,CAAO;AACxBI,IAAAA,IAAA,CAAKC,MAAM,CAACJ,WAAA,EAAa,CAAA,CAAA;IACzBG,IAAA,CAAKC,MAAM,CAACF,SAAA,EAAW,CAAA,EAAGL,SAAA,CAAA;AAC1B,IAAA,IAAI,CAACJ,gBAAgB,CAACU,IAAA,CAAA;AACxB,EAAA;AAEA;AAAA,EAAA;IAAApC,CAAA,CAAA,IAAA,CAAAnB,SAAA,EAAA,iBAAA,EAAA,CAZC4B,MAAA,CAAA,CAAA;AAAA;EAaD,IACIZ,UAA+B;IACjC,MAAMyC,IAAA,GAAO,IAAIC,GAAA,CAAI,IAAI,CAAC/C,IAAI,CAACK,OAAO,CAACS,GAAG,CAAEV,MAAA,IAAW,CAACA,MAAA,CAAOE,EAAE,EAAEF,MAAA,CAAO,CAAA,CAAA;IAC1E,MAAMC,UAA+B,EAAE;AACvC,IAAA,KAAK,MAAMC,EAAA,IAAM,IAAI,CAACI,gBAAgB,EAAE;AACtC,MAAA,MAAMN,MAAA,GAAS0C,IAAA,CAAKE,GAAG,CAAC1C,EAAA,CAAA;AACxB,MAAA,IAAIF,MAAA,EAAQC,OAAA,CAAQwB,IAAI,CAACzB,MAAA,CAAA;AAC3B,IAAA;AACA,IAAA,OAAOC,OAAA;AACT,EAAA;AAAA,EAAA;IAAAG,CAAA,CAAA,IAAA,CAAAnB,SAAA,EAAA,SAAA,EAAA,CATCoB,MAAA,CAAA,CAAA;AAAA;EAWD,IAAIwC,eAAAA,GAA0B;AAC5B,IAAA,OACE,IAAI,CAAC5C,OAAO,CAACuB,MAAM,GACnB,IAAI,CAAC7B,qBAAqB,CAAC6B,MAAM,GACjC,IAAI,CAAC3B,sBAAsB,CAAC2B,MAAM;AAEtC,EAAA;AAEA;EAIA,IACIsB,UAAAA,GAEU;AACZ,IAAA,MAAMA,UAAA,GAAa,IAAI,CAAClD,IAAI,CAACkD,UAAU;AACvC,IAAA,IAAI,CAACA,YAAY,OAAOjE,SAAA;AACxB;AACA,IAAA,MAAMkE,QAAA,GAAWC,2BAA2B,IAAI,CAAA;AAChD;IACA,OAAO;MACLC,SAAA,EAAWH,WAAWG,SAAS;AAC/BC,MAAAA,QAAA,EAAUJ,UAAA,CAAWI,QAAQ,IAAIH,QAAA,CAASI,YAAY;AACtDC,MAAAA,eAAA,EAAiBN,UAAA,CAAWM,eAAe,IAAIL,QAAA,CAASM,mBAAmB;MAC3EC,YAAA,EAAcR,WAAWQ,YAAY;MACrCC,oBAAA,EAAsBT,WAAWS;KACnC;AACF,EAAA;AAEA;AAAA,EAAA;IAAAnD,CAAA,CAAA,IAAA,CAAAnB,SAAA,EAAA,YAAA,EAAA,CAlBCoB,MAAA,CAAA,CAAA;AAAA;EAmBD,IAAImD,iBAAAA,GAAoB;IACtB,OAAO,IAAI,CAACV,UAAU;AACxB,EAAA;AAEA;AACA;AACSW,EAAAA,YAAA,GAAe,IAAIC,mBAAA,CAAoB,IAAI,CAAA;EAEpD,IAAIC,QAAAA,GAAuC;IACzC,OAAO,IAAI,CAACF,YAAY,CAACG,QAAQ,GAAG,IAAI,CAACH,YAAY,GAAG,IAAA;AAC1D,EAAA;AAEA;EACA,IAAII,QAAAA,GAAmB;AACrB,IAAA,OAAO,IAAI,CAACF,QAAQ,EAAEG,WAAA,CAAYtC,MAAA,IAAU,IAAI,CAAC5B,IAAI,CAACiE,QAAQ,IAAI,CAAA;AACpE,EAAA;AAEA;EACA,IAAIE,YAAAA,GAAuB;AACzB,IAAA,OAAO,IAAI,CAACJ,QAAQ,EAAEI,YAAA,IAAgB,IAAI,CAACnE,IAAI,CAACiE,QAAQ,IAAI,CAAA;AAC9D,EAAA;EAEA,IAAIG,cAAAA,GAA0B;AAC5B,IAAA,MAAMlB,UAAA,GAAa,IAAI,CAACA,UAAU;AAClC;IACA,OAAO,CAAC,CAACA,UAAA,IAAcmB,uBAAuB,IAAI,CAACJ,QAAQ,EAAEf,UAAA,CAAA;AAC/D,EAAA;EAEA,IACIgB,WAAAA,GAA6E;AAC/E,IAAA,MAAMhB,UAAA,GAAa,IAAI,CAACA,UAAU;AAClC,IAAA,MAAMe,QAAA,GAAW,IAAI,CAACA,QAAQ;AAC9B,IAAA,MAAMK,QAAA,GACJpB,UAAA,IAAcA,UAAA,CAAWI,QAAQ,GAAG,CAAA,GAChCJ,UAAA,CAAWG,SAAS,GAAGH,UAAA,CAAWI,QAAQ,GAC1C,CAAA;IACN,IAAIiB,MAAA,GACFrB,UAAA,IAAcA,UAAA,CAAWI,QAAQ,GAAG,CAAA,GAChC,CAACJ,UAAA,CAAWG,SAAS,GAAG,CAAC,IAAIH,UAAA,CAAWI,QAAQ,GAChDW,QAAA;IACNM,MAAA,GAASC,IAAA,CAAKC,GAAG,CAACF,MAAA,EAAQN,QAAA,CAAA;IAC1B,OAAO;MAAEK,QAAA;MAAUC,MAAA;MAAQG,eAAA,EAAiBF,IAAA,CAAKG,GAAG,CAAC,CAAA,EAAGJ,MAAA,GAASD,QAAA;KAAU;AAC7E,EAAA;AAEA;AAEA,EAAA;IAAA9D,CAAA,CAAA,IAAA,CAAAnB,SAAA,EAAA,aAAA,EAAA,CAlBCoB,MAAA,CAAA,CAAA;AAAA;EAoBD,IACImE,kBAA+C;AACjD,IAAA,OAAO,CAAI,GAAAC,eAAA,EAA4B,IAAC,IAAI,CAAC7E,IAAI,CAAC4E,eAAe,IAAI,EAAE,CAAA,CAAE;AAC3E,EAAA;AAEA;AAAA,EAAA;IAAApE,CAAA,CAAA,IAAA,CAAAnB,SAAA,EAAA,iBAAA,EAAA,CALCoB,MAAA,CAAA,CAAA;AAAA;EAMDqE,cAAA,GAA4C,EAAC;AAAE,EAAA;IAAA1F,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,iBAAA,EAAA,CAC9CS,OAAA,CAAA,EAAA,YAAA;AAAA,MAAA,OAA0B,CAAA;AAAA,IAAA,CAAA,CAAA;AAAA;EAAA,gBAAA,IAAAP,CAAA,CAAA,IAAA,EAAA,iBAAA,CAAA,EAAA,MAAA;AAG3BwF,EAAAA,YAAAA,CAAaC,QAAgB,EAAErD,QAAgB,EAAE/C,KAAa,EAAQ;AACpE,IAAA,MAAMqG,GAAA,GAAO,IAAI,CAACH,cAAc,CAACE,QAAA,CAAS,GAAG,IAAI,CAACF,cAAc,CAACE,QAAA,CAAS,IAAI,EAAE;AAChF,IAAA,IAAIC,GAAG,CAACtD,QAAA,CAAS,KAAK/C,KAAA,EAAO;AAC3BqG,MAAAA,GAAG,CAACtD,SAAS,GAAG/C,KAAA;MAChB,IAAI,CAACsG,eAAe,EAAA;AACtB,IAAA;AACF,EAAA;AAAA,EAAA;IAAA1E,CAAA,CAAA,IAAA,CAAAnB,SAAA,EAAA,cAAA,EAAA,CAPC4B,MAAA,CAAA,CAAA;AAAA;EAUDkE,mBAAAA,CAAoBlB,QAAgB,EAAQ;IAC1C,KAAK,MAAMmB,OAAOC,MAAA,CAAOC,IAAI,CAAC,IAAI,CAACR,cAAc,CAAA,EAAG;AAClD,MAAA,IAAIS,MAAA,CAAOH,QAAQnB,QAAA,EAAU,OAAO,IAAI,CAACa,cAAc,CAACM,GAAA,CAAI;AAC9D,IAAA;IACA,IAAI,CAACF,eAAe,EAAA;AACtB,EAAA;AAAA,EAAA;IAAA1E,CAAA,CAAA,IAAA,CAAAnB,SAAA,EAAA,qBAAA,EAAA,CANC4B,MAAA,CAAA,CAAA;AAAA;EAQD,IACIuE,yBAAoD;AACtD;IACA,KAAK,IAAI,CAACN,eAAe;IACzB,OAAO;AAAE,MAAA,GAAG,IAAI,CAACJ;KAAe;AAClC,EAAA;AAAA,EAAA;IAAAtE,CAAA,CAAA,IAAA,CAAAnB,SAAA,EAAA,wBAAA,EAAA,CALCoB,MAAA,CAAA,CAAA;AAAA;EAOD,IAAIgF,gBAAAA,GAA2B;AAC7B,IAAA,MAAMC,QAAA,GAAW,IAAI,CAAC1F,IAAI,CAAC0F,QAAQ;AACnC,IAAA,IAAIA,QAAA,EAAUC,UAAU,cAAA,EAAgB;AACtC;MACA,OAAO,IAAI,CAACzC,UAAU,EAAEI,YAAY,IAAI,CAACa,YAAY,CAAA;AACvD,IAAA;AACA,IAAA,OAAO,IAAI,CAACA,YAAY,CAAA;AAC1B,EAAA;EAEA,IACIyB,SAA4B;IAC9B,MAAMC,WAAWC,YAAA,CAAa;AAC5BzF,MAAAA,OAAA,EAAS,IAAI,CAACL,IAAI,CAACK,OAAO;AAC1BqF,MAAAA,QAAA,EAAU,IAAI,CAAC1F,IAAI,CAAC0F,QAAQ;AAC5BZ,MAAAA,cAAA,EAAgB,IAAI,CAAC9E,IAAI,CAAC0F,QAAQ,GAAG,IAAI,CAACF,sBAAsB,GAAG,EAAC;MACpEZ,eAAA,EAAiB,IAAI,CAACA,eAAe;AACrCmB,MAAAA,gBAAA,EAAkB,IAAI,CAAC/F,IAAI,CAAC0F,QAAQ,IAAI;AAC1C,KAAA,CAAA;IACA,OAAOM,YAAYH,QAAA,EAAU,IAAI,CAAC7F,IAAI,CAACK,OAAO,CAAA;AAChD,EAAA;AAAA,EAAA;IAAAG,CAAA,CAAA,IAAA,CAAAnB,SAAA,EAAA,QAAA,EAAA,CAVCoB,MAAA,CAAA,CAAA;AAAA;EAYD,IACIwF,YAAAA,GAAyB;AAC3B,IAAA,OAAOC,mBAAA,CAAoB;AACzBC,MAAAA,OAAA,EAAS,IAAI,CAACnG,IAAI,CAACmG,OAAO;AAC1BT,MAAAA,QAAA,EAAU,IAAI,CAAC1F,IAAI,CAAC0F,QAAQ;AAC5BZ,MAAAA,cAAA,EACE,IAAI,CAAC9E,IAAI,CAAC0F,QAAQ,EAAEC,KAAA,KAAU,SAAA,GAAY,IAAI,CAACH,sBAAsB,GAAG,EAAC;MAC3EI,MAAA,EAAQ,IAAI,CAACA,MAAM;MACnBhB,eAAA,EAAiB,IAAI,CAACA;AACxB,KAAA,CAAA;AACF,EAAA;AAEA;AAAA,EAAA;IAAApE,CAAA,CAAA,IAAA,CAAAnB,SAAA,EAAA,cAAA,EAAA,CAZCoB,MAAA,CAAA,CAAA;AAAA;EAcD2F,kBAAAA,CAAmBC,eAAuB,EAAU;AAClD,IAAA,MAAM/B,QAAA,GAAW,IAAI,CAACJ,WAAW,CAACI,QAAQ;AAC1C,IAAA,MAAMgC,WAAA,GAAcD,kBAAkB/B,QAAA,GAAW,CAAA;IACjD,MAAMiC,mBAAA,GAAsBD,WAAA,GACxBD,eAAA,GAAkB/B,QAAA,GAClB+B,eAAA;AACJ;AACA,IAAA,IAAI,IAAI,CAACtC,QAAQ,EAAE,OAAO,IAAI,CAACA,QAAQ,CAACyC,UAAU,CAACD,mBAAA,CAAA;AACnD,IAAA,MAAMN,YAAA,GAAe,IAAI,CAACA,YAAY;IACtC,OAAOM,mBAAA,IAAuBN,YAAA,GAC1BA,YAAY,CAACM,oBAAoB,GACjCA,mBAAA;AACN,EAAA;AAEA;AAEA,EAAA;IAAA/F,CAAA,CAAA,IAAA,CAAAnB,SAAA,EAAA,oBAAA,EAAA,CAjBC4B,MAAA,CAAA,CAAA;AAAA;EAmBD,IACIwF,mBAAqC;IACvC,OAAO;AAAE,MAAA,GAAG5J,cAAc;MAAE,GAAG,IAAI,CAACmD,IAAI,CAAC0G;KAAU;AACrD,EAAA;AAAA,EAAA;IAAAlG,CAAA,CAAA,IAAA,CAAAnB,SAAA,EAAA,kBAAA,EAAA,CAHCoB,MAAA,CAAA,CAAA;AAAA;EAKD,IACIkG,mBAAAA,GAA8B;AAChC,IAAA,OAAOhI,SAAA,CAAU,IAAI,CAAC8H,gBAAgB,CAAA;AACxC,EAAA;AAEA;AAAA,EAAA;IAAAjG,CAAA,CAAA,IAAA,CAAAnB,SAAA,EAAA,qBAAA,EAAA,CALCoB,MAAA,CAAA,CAAA;AAAA;AAAA,EAAA;IAAArB,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,iBAAA,EAAA,CAMAS,OAAA,CAAA,EAAA,YAAA;AAAA,MAAA,OACC,IAAA;AAAA,IAAA,CAAA,CAAA;AAAA;EAAA,gBAAA,IAAAP,CAAA,CAAA,IAAA,EAAA,iBAAA,CAAA,EAAA,MAAA;EAEF,IAAIqH,UAAAA,GAAuD;AACzD,IAAA,MAAM7E,KAAA,GAAQ,IAAI,CAAC8E,eAAe;AAClC,IAAA,MAAMC,MAAA,GACJ/E,KAAA,IAASA,KAAA,CAAMqD,GAAG,KAAK,IAAI,CAACuB,mBAAmB,GAC3C5E,KAAA,CAAM+E,MAAM,GACZ,IAAI,CAACL,gBAAgB;AAC3B,IAAA,OAAOK;AACT,EAAA;AAEA;AACAC,EAAAA,iBAAA,GAA6C,IAAA;EAG7CC,qBAAAA,CAAsBF,MAAiC,EAAQ;AAC7D,IAAA,MAAMG,OAAA,GAAU;MAAE,GAAG,IAAI,CAACL,UAAU;MAAE,GAAGE;KAAO;IAChD,MAAM;MAAEI,QAAQ;MAAE,GAAGC;KAAM,GAAGF,OAAA;IAC9BC,QAAA,GAAWC,IAAA,CAAA;IACX,IAAI,CAACN,eAAe,GAAG;MAAEzB,GAAA,EAAK,IAAI,CAACuB,mBAAmB;AAAEG,MAAAA,MAAA,EAAQG;KAAQ;AAC1E,EAAA;AAAA,EAAA;IAAAzG,CAAA,CAAA,IAAA,CAAAnB,SAAA,EAAA,uBAAA,EAAA,CANC4B,MAAA,CAAA,CAAA;AAAA;EAQD,IACImG,0BAAwD;AAC1D,IAAA,OAAO,IAAI,CAACpH,IAAI,CAACqH,iBAAiB,IAAI,EAAC;AACzC,EAAA;AAAA,EAAA;IAAA7G,CAAA,CAAA,IAAA,CAAAnB,SAAA,EAAA,yBAAA,EAAA,CAHCoB,MAAA,CAAA,CAAA;AAAA;EAKD,IACI6G,0BAAAA,GAAqC;AACvC,IAAA,OAAO3I,SAAA,CAAU,IAAI,CAACyI,uBAAuB,CAAA;AAC/C,EAAA;AAAA,EAAA;IAAA5G,CAAA,CAAA,IAAA,CAAAnB,SAAA,EAAA,4BAAA,EAAA,CAHCoB,MAAA,CAAA,CAAA;AAAA;AAAA,EAAA;IAAArB,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,iBAAA,EAAA,CAKAS,OAAA,CAAA,EAAA,YAAA;AAAA,MAAA,OAGU,IAAA;AAAA,IAAA,CAAA,CAAA;AAAA;EAAA,gBAAA,IAAAP,CAAA,CAAA,IAAA,EAAA,iBAAA,CAAA,EAAA,MAAA;EAEX,IAAI8H,oBAAkD;AACpD,IAAA,MAAMtF,KAAA,GAAQ,IAAI,CAACwF,eAAe;AAClC,IAAA,OAAOxF,KAAA,IAASA,KAAA,CAAMqD,GAAG,KAAK,IAAI,CAACkC,0BAA0B,GACzDvF,KAAA,CAAMyF,OAAO,GACb,IAAI,CAACJ,uBAAuB;AAClC,EAAA;AAEAK,EAAAA,wBAAA,GAAgE,IAAA;EAGhEC,qBAAAA,CAAsBF,OAA8C,EAAQ;AAC1E,IAAA,MAAMP,OAAA,GAAU;MAAE,GAAG,IAAI,CAACI,iBAAiB;MAAE,GAAGG;KAAQ;IACxD,MAAM;MAAEN,QAAQ;MAAE,GAAGC;KAAM,GAAGF,OAAA;IAC9BC,QAAA,GAAWC,IAAA,CAAA;IACX,IAAI,CAACI,eAAe,GAAG;MAAEnC,GAAA,EAAK,IAAI,CAACkC,0BAA0B;AAAEE,MAAAA,OAAA,EAASP;KAAQ;AAClF,EAAA;AAAA,EAAA;IAAAzG,CAAA,CAAA,IAAA,CAAAnB,SAAA,EAAA,uBAAA,EAAA,CANC4B,MAAA,CAAA,CAAA;AAAA;AASD0G,EAAAA,mBAAAA,GAA4B;IAC1B,IAAI,CAACd,eAAe,GAAG;MACrBzB,GAAA,EAAK,IAAI,CAACuB,mBAAmB;AAC7BG,MAAAA,MAAA,EAAQ,IAAI,CAACC,iBAAiB,IAAI,IAAI,CAACN;KACzC;IACA,IAAI,CAACc,eAAe,GAAG;MACrBnC,GAAA,EAAK,IAAI,CAACkC,0BAA0B;AACpCE,MAAAA,OAAA,EAAS,IAAI,CAACC,wBAAwB,IAAI,IAAI,CAACL;KACjD;AACF,EAAA;AAAA,EAAA;IAAA5G,CAAA,CAAA,IAAA,CAAAnB,SAAA,EAAA,qBAAA,EAAA,CAVC4B,MAAA,CAAA,CAAA;AAAA;AAYD2G,EAAAA,WAAAA,CAAYC,KAAY,EAAE7H,IAAkC,EAAE;AAC5D,IAAA,KAAK,CAAC6H,KAAA,EAAO7H,IAAA,CAAA;IACb,IAAI,CAAC+G,iBAAiB,GAAG;AAAE,MAAA,GAAGlK,cAAc;AAAE,MAAA,GAAGmD,KAAK0G;KAAU;IAChE,IAAI,CAACe,wBAAwB,GAAGzH,IAAA,CAAKqH,iBAAiB,IAAI,EAAC;AAC3D;AACAS,IAAAA,QAAA,CAASC,gBAAgB,CAAC,MAAA,EAAQC,uBAAA,CAAA;AAClC;AACA;AACAF,IAAAA,QAAA,CAASC,gBAAgB,CAAC,MAAA,EAAQE,aAAA,CAAA;AACpC,EAAA;AAEA;AAIQC,EAAAA,gBAAA,GAAmB,IAAInF,GAAA,EAAY;AAAgB,EAAA;IAAA3D,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,aAAA,EAAA,CAC1DS,OAAA,CAAA,EAAA,YAAA;AAAA,MAAA,OAA0Db,SAAA;AAAA,IAAA,CAAA,CAAA;AAAA;EAAA,YAAA,IAAAM,CAAA,CAAA,IAAA,EAAA,aAAA,CAAA,EAAA,MAAA;AAAA,EAAA;IAAAH,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,qBAAA,EAAA,CAC1DS,OAAA,CAAA,EAAA,YAAA;AAAA,MAAA,OAA8B,KAAA;AAAA,IAAA,CAAA,CAAA;AAAA;EAAA,oBAAA,IAAAP,CAAA,CAAA,IAAA,EAAA,qBAAA,CAAA,EAAA,MAAA;AAE/B,2EACA4I,cAAcC,IAA4B,EAAEC,QAAsB,EAAc;AAC9E,IAAA,MAAMjD,GAAA,GAAM,CAAA,EAAGgD,IAAI,CAAC,CAAA,CAAE,CAAA,CAAA,EAAIA,IAAI,CAAC,CAAA,CAAE,CAAA,CAAE;IACnC,IAAI,CAACF,gBAAgB,CAACI,GAAG,CAAClD,GAAA,EAAKiD,QAAA,CAAA;AAC/B,IAAA,OAAO,MAAA;AACL,MAAA,IAAI,IAAI,CAACH,gBAAgB,CAAClF,GAAG,CAACoC,GAAA,CAAA,KAASiD,QAAA,EAAU,IAAI,CAACH,gBAAgB,CAACK,MAAM,CAACnD,GAAA,CAAA;IAChF,CAAA;AACF,EAAA;AAEAoD,EAAAA,aAAAA,CAAcC,QAAgB,EAAEpC,eAAuB,EAAW;AAChE,IAAA,MAAMqC,OAAA,GAAU,IAAI,CAACC,WAAW;AAChC,IAAA,OAAOD,OAAA,GAAU,CAAA,CAAE,KAAKD,YAAYC,OAAA,GAAU,EAAE,KAAKrC,eAAA;AACvD,EAAA;AAGAuC,EAAAA,cAAAA,CAAeC,eAAuC,EAAEC,cAAc,KAAK,EAAQ;AACjF,IAAA,MAAMC,QAAA,GAAW,IAAI,CAACJ,WAAW;IACjC,IACE,CAACG,WAAA,IACDC,QAAA,IACAF,eAAe,CAAC,CAAA,CAAE,KAAKE,QAAQ,CAAC,CAAA,CAAE,IAClCF,eAAe,CAAC,CAAA,CAAE,KAAKE,QAAQ,CAAC,EAAE,EAClC;AACA,MAAA;AACF,IAAA;AACA,IAAA,IAAI,CAACC,mBAAmB,GAAG,IAAA,CAAA;IAC3B,IAAI,CAACL,WAAW,GAAGE,eAAA;IACnB,IAAIE,QAAA,EAAU,IAAI,CAACE,UAAU,CAACF,QAAA,EAAU,KAAA,CAAA;AACxC,IAAA,IAAI,CAACE,UAAU,CAACJ,eAAA,EAAiB,IAAA,CAAA;AACjC,IAAA,IAAI,CAACjJ,IAAI,EAAEsJ,mBAAA,CAAoBL,eAAA,CAAA;AACjC,EAAA;AAAA,EAAA;IAAArI,CAAA,CAAA,IAAA,CAAAnB,SAAA,EAAA,gBAAA,EAAA,CAhBC4B,MAAA,CAAA,CAAA;AAAA;AAkBOgI,EAAAA,UAAAA,CAAWb,IAA4B,EAAEe,SAAkB,EAAQ;AACzE,IAAA,IAAI,CAACjB,gBAAgB,CAAClF,GAAG,CAAC,CAAA,EAAGoF,IAAI,CAAC,CAAA,CAAE,CAAA,CAAA,EAAIA,IAAI,CAAC,CAAA,CAAE,EAAE,CAAA,GAAIe,SAAA,CAAA;AACvD,EAAA;EAGAC,sBAAAA,CAAuBC,QAAiB,EAAQ;IAC9C,IAAI,IAAI,CAACL,mBAAmB,KAAKK,UAAU,IAAI,CAACL,mBAAmB,GAAGK,QAAA;AACxE,EAAA;AAAA,EAAA;IAAA7I,CAAA,CAAA,IAAA,CAAAnB,SAAA,EAAA,wBAAA,EAAA,CAHC4B,MAAA,CAAA,CAAA;AAAA;AAMDqI,EAAAA,gCAAAA,GAAyC;IACvC,IAAI,CAACV,cAAc,CAAC,CAAC,CAAA,EAAG,EAAC,CAAE,CAAA;AAC7B,EAAA;AAEA;AAEA,EAAA;IAAApI,CAAA,CAAA,IAAA,CAAAnB,SAAA,EAAA,kCAAA,EAAA,CAPC4B,MAAA,CAAA,CAAA;AAAA;AAAA,EAAA;IAAA7B,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,aAAA,EAAA,CASAS,OAAA,CAAA,EAAA,YAAA;AAAA,MAAA,OAAsD,IAAA;AAAA,IAAA,CAAA,CAAA;AAAA;EAAA,YAAA,IAAAP,CAAA,CAAA,IAAA,EAAA,aAAA,CAAA,EAAA,MAAA;AAAA,EAAA;IAAAH,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,kBAAA,EAAA,CAEtDS,OAAA,CAAA,EAAA,YAAA;AAAA,MAAA,OAAwD,EAAC;AAAA,IAAA,CAAA,CAAA;AAAA;EAAA,iBAAA,IAAAP,CAAA,CAAA,IAAA,EAAA,kBAAA,CAAA,EAAA,MAAA;AAD1D;AAIAgK,EAAAA,eAAAA,CAAgB;IAAEvE,QAAQ;AAAEyD,IAAAA;AAAY,GAAuB,EAAQ;AACrE,IAAA,MAAMe,IAAA,GAAO,IAAI,CAACC,WAAW;AAC7B,IAAA,IAAID,IAAA,IAAQA,KAAKxE,QAAQ,KAAKA,YAAYwE,IAAA,CAAKf,QAAQ,KAAKA,QAAA,EAAU;AACtE,IAAA,IAAI,CAACiB,gBAAgB,GAAG,EAAC;IACzB,IAAI,CAACD,WAAW,GAAG;MAAEzE,QAAA;AAAUyD,MAAAA;KAAS;AACxC,IAAA,IAAI,CAAC7I,IAAI,EAAE+J,kBAAA,CAAmB;MAAE3E,QAAA;AAAUyD,MAAAA;AAAS,KAAA,CAAA;AACrD,EAAA;AAAA,EAAA;IAAAjI,CAAA,CAAA,IAAA,CAAAnB,SAAA,EAAA,iBAAA,EAAA,CAPC4B,MAAA,CAAA,CAAA;AAAA;AAUD2I,EAAAA,gBAAAA,GAAyB;IACvB,IAAI,IAAI,CAACH,WAAW,EAAE,IAAI,CAACA,WAAW,GAAG,IAAA;AAC3C,EAAA;AAAA,EAAA;IAAAjJ,CAAA,CAAA,IAAA,CAAAnB,SAAA,EAAA,kBAAA,EAAA,CAHC4B,MAAA,CAAA,CAAA;AAAA;AAKD4I,EAAAA,gBAAAA,CAAiBpB,QAAgB,EAAEpC,eAAuB,EAAW;AACnE,IAAA,MAAMmD,IAAA,GAAO,IAAI,CAACC,WAAW;AAC7B,IAAA,OAAO,CAAC,CAACD,IAAA,IAAQA,IAAA,CAAKf,QAAQ,KAAKA,QAAA,IAAYe,IAAA,CAAKxE,QAAQ,KAAKqB,eAAA;AACnE,EAAA;AAEA;EAKAyD,eAAAA,CAAgBC,YAAqB,EAAQ;AAC3C,IAAA,IAAI,IAAI,CAACA,YAAY,KAAKA,YAAA,EAAc;IACxC,IAAI,CAACA,YAAY,GAAGA,YAAA;AACpB,IAAA,IAAI,CAAC/J,IAAI,CAACgK,kBAAkB,GAAGD,YAAA,CAAA;AACjC,EAAA;AAAA,EAAA;IAAAvJ,CAAA,CAAA,IAAA,CAAAnB,SAAA,EAAA,iBAAA,EAAA,CALC4B,MAAA,CAAA,CAAA;AAAA;AAQDgJ,EAAAA,gBAAAA,GAAyB;AACvB,IAAA,IAAI,CAACH,eAAe,CAAC,CAAC,IAAI,CAACC,YAAY,CAAA;AACzC,EAAA;AAAA,EAAA;IAAAvJ,CAAA,CAAA,IAAA,CAAAnB,SAAA,EAAA,kBAAA,EAAA,CAHC4B,MAAA,CAAA,CAAA;AAAA;EAMDiJ,iBAAAA,CAAkBC,KAAoB,EAAQ;IAC5C,IAAIA,KAAA,CAAM/E,GAAG,KAAKE,MAAW,IAAI,IAAI,CAACyE,YAAY,EAAE;MAClDI,KAAA,CAAMC,cAAc,EAAA;AACpB,MAAA,IAAI,CAACN,eAAe,CAAC,KAAA,CAAA;AACvB,IAAA;AACF,EAAA;AAAA,EAAA;IAAAtJ,CAAA,CAAA,IAAA,CAAAnB,SAAA,EAAA,mBAAA,EAAA,CANC4B,MAAA,CAAA,CAAA;AAAA;EAQDoJ,YAAA,GAAeC,QAAA,CAAS,CAACC,QAAU,EAAa,CAACR,cAAcS,SAAA,CAA6B,KAAA;IAC1F,IAAI,CAACT,YAAA,EAAc;IACnBjC,QAAA,CAASlI,IAAI,CAAC6K,SAAS,CAACC,GAAG,CAACjM,4BAAA,EAA8B+L,SAAA,CAAA;AAC1D,IAAA,OAAO,MAAA;MACL1C,QAAA,CAASlI,IAAI,CAAC6K,SAAS,CAACE,MAAM,CAAClM,4BAAA,EAA8B+L,SAAA,CAAA;IAC/D,CAAA;AACF,EAAA,CAAA,CAAA;AAEA;EAIA,IAAII,WAAAA,GAAuB;IACzB,OAAO,CAAC,EAAE,IAAI,CAAC5K,IAAI,CAAC6K,iBAAiB,IAAI,IAAI,CAAA;AAC/C,EAAA;EAEA,IAAIC,UAAAA,GAAsB;IACxB,OAAO,CAAC,EAAE,IAAI,CAAC9K,IAAI,CAAC+K,gBAAgB,IAAI,IAAI,CAAA;AAC9C,EAAA;AAEA;EAIA,IACIjE,MAAAA,GAAS;AACX,IAAA,MAAMkE,OAAA,GAAUC,mBAAmB,IAAI,CAAA;IACvC,OAAO;MACLD,OAAA;AACAE,MAAAA,IAAA,EAAMC,qBAAqBH,OAAA,EAASI,iBAAA,CAAA;AACpCC,MAAAA,UAAA,EAAYF,qBAAqBH,OAAA,EAASM,2BAAA;KAC5C;AACF,EAAA;AAAA,EAAA;IAAA9K,CAAA,CAAA,IAAA,CAAAnB,SAAA,EAAA,QAAA,EAAA,CARCoB,MAAA,CAAA,CAAA;AAAA;EAUD,IACI8K,cAAAA,GAAyB;IAC3B,MAAM;MAAEP,OAAO;AAAEE,MAAAA;KAAM,GAAG,IAAI,CAACpE,MAAM;IACrC,OAAO,CAAA,uBAAA,EAA0B0E,SAASR,OAAA,EAASE,IAAA,CAAKO,sBAAsB,CAAA,CAAA,CAAG;AACnF,EAAA;AAAA,EAAA;IAAAjL,CAAA,CAAA,IAAA,CAAAnB,SAAA,EAAA,gBAAA,EAAA,CAJCoB,MAAA,CAAA,CAAA;AAAA;EAMD,IACIiL,eAAAA,GAA0B;IAC5B,MAAM;MAAEV,OAAO;AAAEK,MAAAA;KAAY,GAAG,IAAI,CAACvE,MAAM;IAC3C,OAAO0E,QAAA,CAASR,OAAA,EAASK,UAAU,CAAC,yBAAA,CAA0B,CAAA;AAChE,EAAA;AAAA,EAAA;IAAA7K,CAAA,CAAA,IAAA,CAAAnB,SAAA,EAAA,iBAAA,EAAA,CAJCoB,MAAA,CAAA,CAAA;AAAA;EAMD,IACIkL,iBAAAA,GAA4B;IAC9B,MAAM;MAAEX,OAAO;AAAEK,MAAAA;KAAY,GAAG,IAAI,CAACvE,MAAM;AAC3C,IAAA,OAAO0E,QAAA,CAASR,OAAA,EAASK,UAAA,CAAWO,yBAAyB,CAAA;AAC/D,EAAA;AAAA,EAAA;IAAApL,CAAA,CAAA,IAAA,CAAAnB,SAAA,EAAA,mBAAA,EAAA,CAJCoB,MAAA,CAAA,CAAA;AAAA;EAMD,IACIoL,OAAAA,GAAkB;IACpB,MAAM;MAAEb,OAAO;AAAEE,MAAAA;KAAM,GAAG,IAAI,CAACpE,MAAM;AACrC,IAAA,MAAMF,UAAA,GAAa,IAAI,CAACA,UAAU;IAClC,MAAMiE,oBAAoB,IAAI,CAAC7K,IAAI,CAAC6K,iBAAiB,IAAI,IAAA;AACzD,IAAA,OAAO,CACL,aAAA,EACAvN,mBAAmB,CAACsJ,UAAA,CAAW7J,QAAQ,CAAC,EACxCoB,iBAAiB,CAACyI,UAAA,CAAW5J,MAAM,CAAC,EACpCU,gBAAgB,CAACkJ,UAAA,CAAWzJ,MAAM,CAAC,EACnCU,gBAAgB,CAAC+I,UAAA,CAAWxJ,MAAM,CAAC,EACnCY,kBAAkB,CAAC4I,UAAA,CAAW1J,QAAQ,CAAC,EACvCoB,sBAAsB,CAACsI,UAAA,CAAW9J,WAAW,CAAC,EAC9C8J,UAAA,CAAW3J,OAAO,IAAI,sBAAA,EACtB2J,UAAA,CAAWxJ,MAAM,IAAIwJ,UAAA,CAAWvJ,YAAY,IAAI,2BAAA,EAChD,IAAI,CAAC0M,YAAY,IAAI,yBAAA,EACrB,IAAI,CAACA,YAAY,IAAI,IAAI,CAAC2B,eAAe,EACzC,CAACb,iBAAA,IAAqB,yBAAA,EACtB,CAAC,IAAI,CAACC,UAAU,IAAI,uBAAA,EACpBU,QAAA,CACER,OAAA,EACAzM,gBAAA,EACA2M,IAAA,CAAKY,WAAW,EAChBZ,IAAA,CAAKpO,WAAW,CAAC8J,UAAA,CAAW9J,WAAW,CAAC,EACxCoO,KAAKnO,QAAQ,CAAC6J,UAAA,CAAW7J,QAAQ,CAAC,EAClCmO,IAAA,CAAKa,OAAO,CAACnF,UAAA,CAAW5J,MAAM,CAAC,EAC/B,IAAI,CAACgD,IAAI,CAACgM,GAAG,CAAA,CAEhB,CACE1K,MAAM,CAAC2K,OAAA,CAAA,CACPC,IAAI,CAAC,GAAA,CAAA;AACV,EAAA;AAEA;AAAA,EAAA;IAAA1L,CAAA,CAAA,IAAA,CAAAnB,SAAA,EAAA,SAAA,EAAA,CAjCCoB,MAAA,CAAA,CAAA;AAAA;EAkCD,IACI0L,eAAAA,GAA0B;AAC5B,IAAA,OAAOC,wBAAA,CAAyB,IAAI,CAACtF,MAAM,CAACkE,OAAO,CAAA;AACrD,EAAA;AAAA,EAAA;IAAAxK,CAAA,CAAA,IAAA,CAAAnB,SAAA,EAAA,iBAAA,EAAA,CAHCoB,MAAA,CAAA,CAAA;AAAA;EAKD,IACI4L,YAAAA,GAAuB;IACzB,MAAM;MAAErB,OAAO;AAAEE,MAAAA;KAAM,GAAG,IAAI,CAACpE,MAAM;IACrC,OAAO,CAAA,qBAAA,EAAwB0E,SAASR,OAAA,EAASE,IAAA,CAAKoB,oBAAoB,CAAA,CAAA,CAAG;AAC/E,EAAA;AAAA,EAAA;IAAA9L,CAAA,CAAA,IAAA,CAAAnB,SAAA,EAAA,cAAA,EAAA,CAJCoB,MAAA,CAAA,CAAA;AAAA;EAMD,IAAI8L,SAAAA,GAAY;AACd,IAAA,IAAI,IAAI,CAACxC,YAAY,EAAE,OAAO9K,SAAA;AAC9B,IAAA,MAAMuN,QAAS5N,KAAkC,IAC/C,OAAOA,UAAU,QAAA,GAAW,CAAA,EAAGA,KAAA,CAAA,EAAA,CAAS,GAAGA,KAAA;IAC7C,MAAM6N,QAAQD,KAAA,CAAM,IAAI,CAACxM,IAAI,CAACyM,KAAK,CAAA;IACnC,MAAMC,SAASF,KAAA,CAAM,IAAI,CAACxM,IAAI,CAAC0M,MAAM,CAAA;AACrC,IAAA,IAAI,CAACD,KAAA,IAAS,CAACC,MAAA,EAAQ,OAAOzN,SAAA;IAC9B,OAAO0N,QAAA,CACL,CAACF,KAAA,IAAS,SAASA,KAAA,CAAA,CAAO,EAAEC,MAAA,IAAU,CAAA,OAAA,EAAUA,MAAA,CAAA,CAAQ,CAAC,CAACpL,MAAM,CAAC2K,OAAA,CAAA,CAASC,IAAI,CAAC,GAAA,CAAA,CAAA;AAEnF,EAAA;AAEA;EAIA,IAAIU,QAAAA,GAAmB;AACrB,IAAA,OAAO,IAAI,CAAC1J,UAAU,GAAG,IAAI,CAACA,UAAU,CAACG,SAAS,GAAG,CAAA,GAAI,CAAA;AAC3D,EAAA;EAEA,IAAIwJ,aAAAA,GAAwB;IAC1B,OAAO,IAAI,CAAC3J,UAAU,EAAEI,QAAA,GACpBkB,IAAA,CAAKsI,IAAI,CAAC,IAAI,CAAC7I,QAAQ,GAAG,IAAI,CAACf,UAAU,CAACI,QAAQ;AAAE,MACpD,CAAA;AACN,EAAA;EAEA,IAAIyJ,YAAAA,GAA8B;IAChC,OAAO,IAAI,CAAC/M,IAAI,CAACgN,SAAS,IAAI,IAAI,CAACC,aAAa;AAClD,EAAA;EAEA,IAAIC,iBAAAA,GAAmC;IACrC,OAAO,IAAI,CAAClN,IAAI,CAACmN,cAAc,IAAI,IAAI,CAACC,kBAAkB;AAC5D,EAAA;EAEA,IAAIC,aAAAA,GAAoC;AACtC,IAAA,MAAMC,KAAA,GAAQ,IAAI,CAACP,YAAY;AAC/B,IAAA,IAAIO,KAAA,IAAS,MAAM,OAAOrO,SAAA;AAC1B,IAAA,IAAI,CAAC,IAAI,CAACiE,UAAU,EAAE,OAAOoK,KAAA;IAC7B,OAAO,IAAI,CAACC,OAAO,CAACC,WAAW,CAC7B,yBACA,sCAAA,EACA;MAAEF,KAAA;MAAOG,IAAA,EAAM,IAAI,CAACb,QAAQ;MAAEc,SAAA,EAAW,IAAI,CAACb;AAAc,KAAA,CAAA;AAEhE,EAAA;EAEA,IAAIc,kBAAAA,GAAyC;AAC3C,IAAA,MAAMC,UAAA,GAAa,IAAI,CAACV,iBAAiB;AACzC,IAAA,IAAIU,UAAA,IAAc,MAAM,OAAO3O,SAAA;AAC/B,IAAA,OAAO,CAAA,EAAG2O,UAAA,CAAA,CAAA,EAAc,IAAI,CAAC1K,UAAU,GAAG,IAAI,CAACvD,gBAAgB,GAAG,EAAA,CAAA,CAAI;AACxE,EAAA;EAEA,IAAIkO,kBAAAA,GAA6B;IAC/B,OAAO,IAAI,CAACN,OAAO,CAACC,WAAW,CAC7B,8BACA,6BAAA,EACA;MAAEC,IAAA,EAAM,IAAI,CAACb,QAAQ;MAAEc,SAAA,EAAW,IAAI,CAACb;AAAc,KAAA,CAAA;AAEzD,EAAA;EAEA,IAAIiB,kBAAAA,GAA6B;IAC/B,OAAO,IAAI,CAACP,OAAO,CAACC,WAAW,CAC7B,gCAAA,EACA,oCAAA,CAAA;AAEJ,EAAA;AAEA;AACAO,EAAAA,kBAAA,GAAqBzD,QAAA,CAAU0D,OAAS,IAAA;IACtC,MAAMC,IAAA,GAAOA,MAAA;MACX,KAAK,MAAMC,IAAA,IAAQ,CAAC,YAAA,EAAc,iBAAA,CAAkB,EAAW;AAC7D,QAAA,IAAIF,OAAA,CAAQG,YAAY,CAACD,IAAA,CAAA,EAAO;AAC9B,UAAA,MAAMtP,KAAA,GAAQoP,OAAA,CAAQI,YAAY,CAACF,IAAA,CAAA;AACnCF,UAAAA,OAAA,CAAQK,eAAe,CAACH,IAAA,CAAA;AACxB,UAAA,IAAIA,IAAA,KAAS,YAAA,EAAc,IAAI,CAACjB,aAAa,GAAGrO,KAAA,CAAA,KAC3C,IAAI,CAACwO,kBAAkB,GAAGxO,KAAA;AACjC,QAAA;AACF,MAAA;IACF,CAAA;AACA0P,IAAAA,WAAA,CAAY,IAAI,EAAEL,IAAA,CAAA;AAClB,IAAA,MAAMM,QAAA,GAAW,IAAIC,gBAAA,CAAiBP,IAAA,CAAA;AACtCM,IAAAA,QAAA,CAASE,OAAO,CAACT,OAAA,EAAS;AAAEU,MAAAA,eAAA,EAAiB,CAAC,YAAA,EAAc,iBAAA;AAAmB,KAAA,CAAA;AAC/E,IAAA,OAAO,MAAMH,SAASI,UAAU,EAAA;AAClC,EAAA,CAAA,CAAA;AAEA;AACAC,EAAAA,YAAA,GAAetE,QAAA,CAAU0D,OAAS,IAAA;IAChC,MAAMa,MAAA,GAASA,MAAA;AACb,MAAA,MAAMpC,KAAA,GAAQuB,QAAQc,WAAW;MACjC,IAAIrC,KAAA,KAAU,IAAI,CAACsC,SAAS,EAAE,IAAI,CAACA,SAAS,GAAGtC,KAAA;IACjD,CAAA;AACA6B,IAAAA,WAAA,CAAY,IAAI,EAAEO,MAAA,CAAA;AAClB,IAAA,OAAOG,aAAA,CAAc,CAAChB,OAAA,CAAQ,EAAEa,MAAA,CAAA;AAClC,EAAA,CAAA,CAAA;AAEA;AACAI,EAAAA,YAAA,GAAe3E,QAAA,CAAU0D,OAAS,IAAA;IAChC,IAAI,CAACnO,cAAc,GAAGmO,OAAA;AACtB,IAAA,MAAMO,QAAA,GAAW,IAAIC,gBAAA,CAAiBU,cAAA,CAAA;AACtCX,IAAAA,QAAA,CAASE,OAAO,CAACT,OAAA,EAAS;AAAEmB,MAAAA,OAAA,EAAS,IAAA;AAAMC,MAAAA,SAAA,EAAW;AAAK,KAAA,CAAA;AAC3D,IAAA,OAAO,MAAA;MACLb,QAAA,CAASI,UAAU,EAAA;MACnB,IAAI,CAAC9O,cAAc,GAAG,IAAA;IACxB,CAAA;AACF,EAAA,CAAA,CAAA;AAEA;EAIA,IAAIwP,SAAAA,GAAqB;AACvB,IAAA,OAAO,IAAI,CAACzP,IAAI,EAAEyP,SAAA,IAAa,CAAC,CAAC,IAAI,CAACrP,IAAI,CAACsP,qBAAqB;AAClE,EAAA;EAGAC,gBAAAA,CAAiBpF,KAAoB,EAAQ;AAC3C;AACA;IACA,IAAKA,MAAMqF,MAAM,EAAqBC,UAAU,oBAAA,CAAA,EAAuB;IACvEC,iBAAA,CAAkBvF,KAAA,EAAO;MACvBwF,WAAA,EAAa,IAAI,CAAC9P,cAAc;MAChCoD,eAAA,EAAiB,IAAI,CAACA,eAAe;AACrCyB,MAAAA,eAAA,EAAiB,IAAI,CAACR,WAAW,CAACQ,eAAe;AACjDkL,MAAAA,oBAAA,EAAsB,IAAI,CAAChQ,IAAI,EAAEgQ,oBAAA,IAAwB,CAAA;MACzD3L,QAAA,EAAU,IAAI,CAACA,QAAQ;MACvBf,UAAA,EAAY,IAAI,CAACA,UAAU;MAC3BmM,SAAA,EAAW,IAAI,CAACA,SAAS;MACzB1G,WAAA,EAAa,IAAI,CAACA,WAAW;MAC7BC,cAAA,EAAgB,IAAI,CAACA;AACvB,KAAA,CAAA;AACF,EAAA;AAAA,EAAA;IAAApI,CAAA,CAAA,IAAA,CAAAnB,SAAA,EAAA,kBAAA,EAAA,CAhBC4B,MAAA,CAAA,CAAA;AAAA;EAkBD,IAAI4O,eAAAA,GAA0B;AAC5B;AACA,IAAA,OAAO,IAAI,CAAC7G,mBAAmB,GAAG,EAAC,GAAI,CAAA;AACzC,EAAA;EAGA8G,cAAAA,CAAe3F,KAAoB,EAAQ;IACzC,IAAI,IAAI,CAACnB,mBAAmB,EAAE;AAC9B;AACA;AACA,IAAA,IAAImB,KAAA,CAAM/E,GAAG,KAAKE,GAAQ,IAAI6E,KAAA,CAAMqF,MAAM,KAAKrF,KAAA,CAAM4F,aAAa,EAAE;MAClE,IAAI,CAACzG,gCAAgC,EAAA;AACvC,IAAA;AACF,EAAA;AAAA,EAAA;IAAA9I,CAAA,CAAA,IAAA,CAAAnB,SAAA,EAAA,gBAAA,EAAA,CARC4B,MAAA,CAAA,CAAA;AAAA;AAUD+O,EAAAA,WAAAA,GAAoB;IAClB,KAAK,CAACA,WAAA,EAAA;IACN,IAAI,CAACpQ,IAAI,GAAG,IAAA;AACd,EAAA;AAEA;;;;AAQQqQ,EAAAA,eAAAA,CAAgB;IAAEjL,QAAQ;AAAEyD,IAAAA;AAAY,GAA4B,EAAQ;AAClF,IAAA,MAAMxE,QAAA,GAAW,IAAI,CAACE,YAAY;AAClC,IAAA,MAAM+L,QAAA,GAAW,IAAI,CAACjN,eAAe;AACrC,IAAA,IAAI+B,QAAA,IAAYf,QAAA,IAAYe,QAAA,GAAW,CAAA,EAAG;MACxC,MAAM,IAAImL,KAAA,CACR,CAAA,IAAA,EAAOnL,QAAA,yDAAiEf,QAAA,GAAW,CAAA,CAAA,CAAA,CAAI,CAAA;AAE3F,IAAA;IACA,IAAIwE,YAAYyH,QAAA,EAAU;MACxB,MAAM,IAAIC,KAAA,CACR,CAAA,OAAA,EAAU1H,QAAA,+DAAuEyH,QAAA,GAAW,CAAA,CAAA,CAAA,CAAI,CAAA;AAEpG,IAAA;AACF,EAAA;AAEA;;;AAGC;EACOE,mBAAAA,CAAoBpL,QAAgB,EAAU;AACpD,IAAA,MAAMiB,YAAA,GAAe,IAAI,CAACA,YAAY;AACtC,IAAA,MAAMI,eAAA,GAAkB,IAAI,CAACtC,QAAQ;MACjC,IAAI,CAACA,QAAQ,CAACqM,mBAAmB,CAACpL,QAAA,CAAA,GAClCiB,YAAA,CAAarE,MAAM,GACnBqE,aAAaoK,SAAS,CAAEC,WAAA,IAAgBA,gBAAgBtL,QAAA,CAAA,GACxDA,QAAA;AACJ,IAAA,MAAM9B,UAAA,GAAa,IAAI,CAACA,UAAU;AAClC,IAAA,IAAIA,UAAA,IAAcA,UAAA,CAAWI,QAAQ,GAAG,CAAA,EAAG;MACzC,MAAMD,YAAYmB,IAAA,CAAK+L,KAAK,CAAClK,eAAA,GAAkBnD,WAAWI,QAAQ,CAAA;MAClE,IAAID,cAAcH,UAAA,CAAWG,SAAS,EAAEH,UAAA,CAAWQ,YAAY,CAACL,SAAA,CAAA;AAChE,MAAA,OAAOgD,eAAA,GAAkBnD,WAAWI,QAAQ;AAC9C,IAAA;AACA,IAAA,OAAO+C,eAAA;AACT,EAAA;AAEA;AACSmK,EAAAA,GAAA,GAA2B;IAClC1G,eAAA,EAAkBC,YAAqB,IAAK,IAAI,CAACD,eAAe,CAACC,YAAA,CAAA;IACjEnB,cAAA,EAAiBR,IAAM,IAAA;AACrB,MAAA,IAAI,CAAC6H,eAAe,CAAC7H,IAAA,CAAA;MACrB,MAAM/B,kBAAkB,IAAI,CAAC+J,mBAAmB,CAAChI,KAAKpD,QAAQ,CAAA;AAC9D;AACA;AACA,MAAA,IAAI,CAAC4D,cAAc,CAAC,CAACR,IAAA,CAAKK,QAAQ,EAAEpC,eAAA,CAAgB,EAAE,IAAA,CAAA;IACxD,CAAA;IACAkD,eAAA,EAAkBnB,IAAM,IAAA;AACtB,MAAA,IAAI,CAAC6H,eAAe,CAAC7H,IAAA,CAAA;MACrB,MAAM/B,kBAAkB,IAAI,CAAC+J,mBAAmB,CAAChI,KAAKpD,QAAQ,CAAA;MAC9D,IAAI,CAACuE,eAAe,CAAC;AAAEvE,QAAAA,QAAA,EAAUqB,eAAA;QAAiBoC,QAAA,EAAUL,KAAKK;AAAS,OAAA,CAAA;IAC5E,CAAA;AACAmB,IAAAA,gBAAA,EAAkBA,MAAM,IAAI,CAACA,gBAAgB,EAAA;IAC7C6G,QAAA,EAAWC,MAAA,IAAW,IAAI,CAAC9Q,IAAI,EAAE6Q,QAAA,GAAWC,MAAA,CAAA;IAC5CC,YAAA,EAAeD,MAAA,IAAW,IAAI,CAAC9Q,IAAI,EAAE+Q,YAAA,GAAeD,MAAA;GACtD;AAEA;EAEAE,SAAAA,CAAU3L,GAA+D,EAAQ;IAC/E,IAAI,CAAC2E,gBAAgB,EAAA;AACrB,IAAA,IAAI,CAAC7F,QAAQ,EAAE8M,MAAA,CAAO5L,GAAA,CAAA;AACxB,EAAA;AAEA;AAAA,EAAA;IAAAzE,CAAA,CAAA,IAAA,CAAAnB,SAAA,EAAA,WAAA,EAAA,CANC4B,MAAA,CAAA,CAAA;AAAA;EAOD,IAAI6P,WAAAA,GAAuB;AACzB,IAAA,OAAO,CAAC,CAAC,IAAI,CAAC/M,QAAQ;AACxB,EAAA;AAEAgN,EAAAA,qBAAA,GAAwBA,qBAAA;EAExBC,WAAA,GAAc1G,QAAA,CACZ,CACEC,QAAU,EACV,CAACyG,WAAA,EAAaF,WAAA,CAAoE,KAAA;AAElF;IACA,MAAMN,MAAMM,WAAA,GAAc;MAAE,GAAG,IAAI,CAACN,GAAG;MAAE,GAAG,IAAI,CAAC3M,YAAY,CAAC2M;KAAI,GAAI,IAAI,CAACA,GAAG;IAC9E,IAAIQ,WAAA,EAAa1C,WAAA,CAAY,IAAI,EAAE,MAAM0C,WAAA,CAAYR,GAAA,CAAA,CAAA;AACvD,EAAA,CAAA,CAAA;AAGF,EAAA;IAAAS,oBAAA,CAAAC,kBAAA,CAAA,qiHAAA,EA2FA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;QAAAC,SAAA;QAAAC,gBAAA;QAAAC,IAAA;QAAAC,EAAA;QAAAC,kBAAA;QAAAC,2BAAA;QAAAC,qBAAA;QAAAC,EAAA;QAAAC,qBAAA;QAAAC,eAAA;AAAAC,QAAAA;AAAA,OAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AACZ;;"}
1
+ {"version":3,"file":"eui-data-grid.js","sources":["../../src/components/eui-data-grid.gts"],"sourcesContent":["import { registerDestructor } from '@ember/destroyable';\nimport Component from '@glimmer/component';\nimport { cached, tracked } from '@glimmer/tracking';\nimport { action } from '@ember/object';\nimport { guidFor } from '@ember/object/internals';\nimport { hash } from '@ember/helper';\nimport { on } from '@ember/modifier';\nimport { service } from '@ember/service';\nimport { htmlSafe } from '@ember/template';\n\nimport { focusTrap } from 'ember-focus-trap';\nimport { focusTrapFactory } from '../-private/focus-trap-registry.ts';\nimport { modifier } from 'ember-modifier';\nimport { or } from 'ember-truth-helpers';\n\nimport { getEuiThemeContext } from '../utils/emotion/consume.ts';\nimport { euiClass, useEuiBorealisStyles } from '../utils/eui/styles.ts';\nimport { euiDataGridStyles } from '../utils/eui/styles.generated.ts';\nimport { euiDataGridFullScreenStyles } from '../utils/eui/data-grid.ts';\nimport {\n copyFocusedDataGridCell,\n handleGridKeyDown,\n preventTabbing\n} from '../utils/data-grid/focus.ts';\nimport {\n detectSchema,\n mergeSchema,\n schemaDetectors as providedSchemaDetectors\n} from '../utils/data-grid/schema.ts';\nimport { computeSortedRowMap } from '../utils/data-grid/sorting.ts';\nimport { afterRender, observeResize } from '../utils/data-grid/scheduling.ts';\nimport * as keys from '../utils/keys.ts';\nimport EuiDataGridBody from './eui-data-grid/body.gts';\nimport EuiDataGridCopyMarker from './eui-data-grid/copy-marker.gts';\nimport { euiScreenReaderOnlyClass } from './eui-screen-reader-only.gts';\nimport { retainDocumentListener } from '../utils/retain-document-listener.ts';\nimport { onTabularCopy } from '../utils/data-grid/tabular-copy.ts';\nimport { euiTablePaginationDefaults } from '../-private/table-pagination-defaults.ts';\nimport EuiDataGridCustomBody from './eui-data-grid/custom-body.gts';\nimport type EuiDataGridBodyBase from './eui-data-grid/body-base.ts';\nimport EuiDataGridInMemoryRenderer from './eui-data-grid/in-memory-renderer.gts';\nimport EuiDataGridPagination, {\n shouldRenderPagination\n} from './eui-data-grid/pagination.gts';\nimport EuiDataGridToolbar from './eui-data-grid/toolbar.gts';\n// ember-eui extension (row-tree): row tree state and hooks\nimport EuiDataGridRowModel from './eui-data-grid/row-model.ts';\nimport { clampRowTreePageIndex } from './eui-data-grid/row-tree-hooks.ts';\n\nimport type Owner from '@ember/owner';\nimport type EuiI18n from '../services/eui-i18n.ts';\nimport type { EuiCss } from '../utils/eui/styles.ts';\nimport type {\n EuiDataGridCellValueElementProps,\n EuiDataGridCellValueSignature,\n EuiDataGridColumn,\n EuiDataGridColumnVisibility,\n EuiDataGridControlColumn,\n EuiDataGridCustomToolbarProps,\n EuiDataGridFocusedCell,\n EuiDataGridGrouping,\n EuiDataGridInMemory,\n EuiDataGridInMemoryValues,\n EuiDataGridCellLocationProps,\n EuiDataGridPaginationProps,\n EuiDataGridRefProps,\n EuiDataGridRowHeightsOptions,\n EuiDataGridRowTree,\n EuiDataGridRowTreeRowInfo,\n EuiDataGridSchema,\n EuiDataGridSchemaDetector,\n EuiDataGridSorting,\n EuiDataGridStyle,\n EuiDataGridToolBarVisibilityOptions,\n EuiDataGridVirtualizationOptions\n} from '../utils/data-grid/types.ts';\nimport type { ComponentLike } from '@glint/template';\nimport type { EuiDataGridCustomBodyProps } from './eui-data-grid/custom-body.gts';\nimport type { EuiDataGridDefaultCellPopoverSignature } from './eui-data-grid/default-cell-popover.gts';\n\nexport type * from '../utils/data-grid/types.ts';\nexport type {\n EuiDataGridCustomBodyCellSignature,\n EuiDataGridCustomBodyProps,\n EuiDataGridCustomFooterRowSignature,\n EuiDataGridSetCustomGridBodyProps\n} from './eui-data-grid/custom-body.gts';\n\n/** Upstream `startingStyles` (display_selector.tsx). */\nexport const startingStyles: Required<\n Pick<\n EuiDataGridStyle,\n | 'cellPadding'\n | 'fontSize'\n | 'border'\n | 'stripes'\n | 'rowHover'\n | 'header'\n | 'footer'\n | 'stickyFooter'\n >\n> = {\n cellPadding: 'm',\n fontSize: 'm',\n border: 'all',\n stripes: false,\n rowHover: 'highlight',\n header: 'shade',\n footer: 'overline',\n stickyFooter: true\n};\n\nconst fontSizesToClassMap = {\n s: 'euiDataGrid--fontSizeSmall',\n m: '',\n l: 'euiDataGrid--fontSizeLarge'\n};\nconst headerToClassMap = {\n shade: 'euiDataGrid--headerShade',\n underline: 'euiDataGrid--headerUnderline'\n};\nconst footerToClassMap = {\n shade: 'euiDataGrid--footerShade',\n overline: 'euiDataGrid--footerOverline',\n striped: ''\n};\nconst rowHoverToClassMap = {\n highlight: 'euiDataGrid--rowHoverHighlight',\n none: ''\n};\nconst bordersToClassMap = {\n all: 'euiDataGrid--bordersAll',\n horizontal: 'euiDataGrid--bordersHorizontal',\n none: 'euiDataGrid--bordersNone'\n};\nconst cellPaddingsToClassMap = {\n s: 'euiDataGrid--paddingSmall',\n m: '',\n l: 'euiDataGrid--paddingLarge'\n};\n\n/**\n * Upstream relies on the global reset's `box-sizing: border-box` for cell\n * layout (padded contents fill their cells); scoped here with zero\n * specificity so upstream rules still win.\n */\nconst BOX_SIZING_RESET = {\n '*:where(&)': { boxSizing: 'border-box' },\n '*:where(& *)': { boxSizing: 'border-box' },\n '*:where(& *)::before': { boxSizing: 'border-box' },\n '*:where(& *)::after': { boxSizing: 'border-box' }\n} as const;\n\nconst GRID_IS_FULLSCREEN_CLASSNAME = 'euiDataGrid__restrictBody';\nconst EMPTY_CONTROL_COLUMNS: EuiDataGridControlColumn[] = [];\n\ntype CellCallback = (isFocused: boolean, preventScroll?: boolean) => void;\n\nexport interface EuiDataGridCellLocation {\n rowIndex: number;\n colIndex: number;\n}\n\n/** Popover options a custom popover renderer may set with `setCellPopoverProps`. */\nexport interface EuiDataGridCellPopoverProps {\n panelClassName?: string;\n zIndex?: number;\n [key: string]: unknown;\n}\n\n/** Arguments of `@renderCellPopover` / the `<:cellPopover>` block. */\nexport interface EuiDataGridCellPopoverElementProps {\n rowIndex: number;\n colIndex: number;\n columnId: string;\n schema?: string | null;\n cellContentsElement: HTMLElement | null;\n setCellPopoverProps: (props: Record<string, unknown>) => void;\n /** The column's cell actions, as rendered in the default popover footer. */\n cellActions: ComponentLike;\n /**\n * The standard popover display (`EuiText` around its block, or the cell's\n * JSON in a code block for the `json` schema, then the cell actions), to\n * fall back to it for some columns: `<@DefaultCellPopover>{{yield}}</@DefaultCellPopover>`.\n */\n DefaultCellPopover: ComponentLike<EuiDataGridDefaultCellPopoverSignature>;\n // ember-eui extension (row-tree): the popover's row object\n /** The row object, with `@rowTree` or `@grouping.rows` (Ember EUI extension). */\n row?: any;\n // ember-eui extension (row-tree): the popover's row tree state\n /** The row's tree state, with `@rowTree` or `@grouping` (Ember EUI extension). */\n rowTree?: EuiDataGridRowTreeRowInfo;\n}\n\nexport interface EuiDataGridSignature {\n Element: HTMLDivElement;\n Args: {\n /** Column definitions (`id`, `displayAsText`, `schema`, `initialWidth`, `actions`, `cellActions`, …). */\n columns: EuiDataGridColumn[];\n /**\n * Controlled column order/visibility. Optional in Ember: without it the\n * grid keeps its own state, starting with every column visible.\n */\n columnVisibility?: EuiDataGridColumnVisibility;\n // ember-eui extension (row-tree): optional with @rowTree / @grouping.rows\n /** Number of rows in the data (not needed with `@rowTree` or `@grouping.rows`). */\n rowCount?: number;\n // ember-eui extension (row-tree): @rowTree and @grouping args\n /**\n * Ember EUI extension: nested rows. The rows array (nested through each\n * row's `children`, or flat with `parentId`), or options\n * `{ rows, getChildren, getParentId, getRowId, hasChildren,\n * expandedRowIds, defaultExpandedRowIds, onExpandedChange,\n * toggleColumnId }`.\n */\n rowTree?: EuiDataGridRowTree;\n /**\n * Ember EUI extension: groups rows by column values\n * (`{ groupBy, getValue, rows, expandedGroupIds, defaultExpandedGroupIds,\n * onExpandedChange, renderGroupCell, toggleColumnId }`).\n */\n grouping?: EuiDataGridGrouping;\n /**\n * Component rendering a cell's value; receives `@rowIndex`, `@colIndex`,\n * `@columnId`, `@isDetails`, `@isExpanded`, `@isExpandable`,\n * `@setCellProps`, `@schema`, `@cellContext` and (with `@rowTree` or\n * `@grouping.rows`) `@row`. Or use the `<:cell>` block.\n */\n renderCellValue?: ComponentLike<EuiDataGridCellValueSignature>;\n /** Extra data passed to every cell renderer as `@cellContext`. */\n cellContext?: Record<string, unknown>;\n /**\n * Component rendering the expansion popover (its default block renders\n * the cell value with `@isDetails`); or use the `<:cellPopover>` block.\n */\n renderCellPopover?: ComponentLike<{\n Args: EuiDataGridCellPopoverElementProps;\n Blocks: { default: [] };\n }>;\n /** Component rendering footer cells; or use the `<:footerCell>` block. */\n renderFooterCellValue?: ComponentLike<EuiDataGridCellValueSignature>;\n /**\n * Escape hatch replacing the virtualized body: a component receiving\n * `@Cell`, `@visibleColumns`, `@visibleRowData`, `@setCustomGridBodyProps`,\n * `@gridWidth`, `@headerRow` and `@footerRow`; or use the\n * `<:customGridBody>` block. Give cell content with `@renderCellValue`\n * or the `Cell`'s own block.\n */\n renderCustomGridBody?: ComponentLike<{ Args: EuiDataGridCustomBodyProps }>;\n /**\n * Custom toolbar layout: a component receiving the toolbar controls\n * (`@hasRoomForGridControls`, `@columnControl`, `@columnSortingControl`,\n * `@keyboardShortcutsControl`, `@displayControl`, `@fullScreenControl`,\n * `@additionalControls`); or use the `<:customToolbar>` block.\n */\n renderCustomToolbar?: ComponentLike<{ Args: EuiDataGridCustomToolbarProps }>;\n /** Columns before the data columns (e.g. row selection). */\n leadingControlColumns?: EuiDataGridControlColumn[];\n /** Columns after the data columns (e.g. row actions). */\n trailingControlColumns?: EuiDataGridControlColumn[];\n /** Extra schema detectors, appended to the defaults. */\n schemaDetectors?: EuiDataGridSchemaDetector[];\n /** Borders, header/footer styles, stripes, row hover, density. */\n gridStyle?: EuiDataGridStyle;\n /** Default and per-row heights (`'auto'`, a number, `{ lineCount }` or `{ height }`). */\n rowHeightsOptions?: EuiDataGridRowHeightsOptions;\n /** `false` hides the toolbar, or an object toggling each control. Defaults to `true`. */\n toolbarVisibility?: boolean | EuiDataGridToolBarVisibilityOptions;\n /** `false` hides the header row. Defaults to `true`. */\n headerVisibility?: boolean;\n /** Pagination state and callbacks; rendered with `EuiTablePagination`. */\n pagination?: EuiDataGridPaginationProps;\n /** Sorted columns and `onSort`. */\n sorting?: EuiDataGridSorting;\n /** Let the grid read rendered values to detect schemas and sort in memory. */\n inMemory?: EuiDataGridInMemory;\n /** Called after a column is resized. */\n onColumnResize?: (event: { columnId: string; width: number }) => void;\n /** Below this width only the right toolbar controls show. Defaults to 479. */\n minSizeForControls?: number;\n /** Grid height (CSS length or px number). Without it the grid grows with its rows. */\n height?: string | number;\n /** Grid width (CSS length or px number). */\n width?: string | number;\n /** Overscan counts and render/scroll callbacks of the virtualized body. */\n virtualizationOptions?: EuiDataGridVirtualizationOptions;\n /** Called when fullscreen mode is entered or left. */\n onFullScreenChange?: (isFullScreen: boolean) => void;\n /**\n * Called after render with the grid's imperative API (upstream's `ref`):\n * `setIsFullScreen`, `setFocusedCell`, `openCellPopover`,\n * `closeCellPopover`, `scrollTo` and `scrollToItem`.\n */\n registerApi?: (api: EuiDataGridRefProps) => void;\n /** Accessible name of the grid (same as the `aria-label` attribute). */\n ariaLabel?: string;\n /** Id(s) labelling the grid (same as the `aria-labelledby` attribute). */\n ariaLabelledBy?: string;\n /** Extra styles composed last into the grid class. */\n css?: EuiCss;\n };\n Blocks: {\n /** Cell content when `@renderCellValue` is not given. */\n cell: [EuiDataGridCellValueElementProps];\n /** Expansion popover content when `@renderCellPopover` is not given. */\n cellPopover: [EuiDataGridCellPopoverElementProps];\n /** Footer cell content when `@renderFooterCellValue` is not given. */\n footerCell: [EuiDataGridCellValueElementProps];\n /** Header of a control column without `headerCellRender`. */\n controlHeaderCell: [{ columnId: string }];\n /** Body cell of a control column without `rowCellRender`. */\n controlCell: [EuiDataGridCellValueElementProps];\n /** Footer cell of a control column without `footerCellRender`. */\n controlFooterCell: [EuiDataGridCellValueElementProps];\n /** Toolbar controls before the column/sort controls. */\n leftControlsPrepend: [];\n /** Toolbar controls after the column/sort controls. */\n leftControlsAppend: [];\n /** Toolbar controls before the right icon buttons. */\n rightControls: [];\n /** Custom toolbar (like `@renderCustomToolbar`), yielding the toolbar controls. */\n customToolbar: [EuiDataGridCustomToolbarProps];\n /** Custom grid body (like `@renderCustomGridBody`). */\n customGridBody: [EuiDataGridCustomBodyProps];\n };\n}\n\nfunction stableKey(value: unknown): string {\n return JSON.stringify(value, (_key, v) =>\n typeof v === 'function' ? undefined : v\n );\n}\n\n/**\n * Data grid with virtualized rows and columns, keyboard navigation, cell\n * expansion, sorting, column management, display options and pagination.\n * Port of EUI 123.1.0 `EuiDataGrid`.\n */\nexport default class EuiDataGrid extends Component<EuiDataGridSignature> {\n @service declare euiI18n: EuiI18n;\n\n readonly gridId = `euiDataGrid-${guidFor(this)}`;\n readonly interactiveCellId = `${this.gridId}-interactive`;\n readonly ariaLabelledById = `${this.gridId}-labelledby`;\n\n /** The grid body; registers itself to scroll focused cells into view. */\n body: EuiDataGridBodyBase<any> | null = null;\n contentElement: HTMLElement | null = null;\n\n /**\n * Toolbar width, kept by the root's resize observer. Only the toolbar\n * consumes it (to hide the left controls on narrow grids).\n */\n @tracked gridWidth = 0;\n @tracked isFullScreen = false;\n\n // `aria-label`/`aria-labelledby` attributes are moved to the role=grid element\n @tracked attrAriaLabel: string | null = null;\n @tracked attrAriaLabelledBy: string | null = null;\n\n /* ---------------------------------------------------------------------- */\n /* Columns */\n /* ---------------------------------------------------------------------- */\n\n get leadingControlColumns(): EuiDataGridControlColumn[] {\n return this.args.leadingControlColumns ?? EMPTY_CONTROL_COLUMNS;\n }\n\n get trailingControlColumns(): EuiDataGridControlColumn[] {\n return this.args.trailingControlColumns ?? EMPTY_CONTROL_COLUMNS;\n }\n\n @cached\n get displayValues(): Record<string, string> {\n const values: Record<string, string> = {};\n for (const column of this.args.columns) {\n if (!values[column.id]) values[column.id] = column.displayAsText || column.id;\n }\n return values;\n }\n\n @tracked private internalVisibleColumns: string[] | null = null;\n\n get visibleColumnIds(): string[] {\n return (\n this.args.columnVisibility?.visibleColumns ??\n this.internalVisibleColumns ??\n this.args.columns.map(({ id }) => id)\n );\n }\n\n @action\n setVisibleColumns(columnIds: string[]): void {\n if (this.args.columnVisibility) {\n this.args.columnVisibility.setVisibleColumns(columnIds);\n } else {\n this.internalVisibleColumns = columnIds;\n }\n }\n\n // Column order shown in the column selector (`useDependentState` upstream):\n // re-derived whenever a new `@columns` array is passed.\n @tracked private sortedColumnsState: {\n columns: EuiDataGridColumn[];\n ids: string[];\n } | null = null;\n\n @cached\n get initialSortedColumns(): string[] {\n const availableColumnIdsSet = new Set(this.args.columns.map(({ id }) => id));\n const validVisibleColumns = this.visibleColumnIds.filter((id) =>\n availableColumnIdsSet.has(id)\n );\n const visibleSet = new Set(validVisibleColumns);\n const result: string[] = [];\n let visibleIndex = 0;\n for (const columnId of availableColumnIdsSet) {\n if (visibleSet.has(columnId)) {\n if (visibleIndex < validVisibleColumns.length) {\n result.push(validVisibleColumns[visibleIndex++]!);\n }\n } else {\n result.push(columnId);\n }\n }\n return result;\n }\n\n get sortedColumns(): string[] {\n const state = this.sortedColumnsState;\n if (state && state.columns === this.args.columns) return state.ids;\n return this.initialSortedColumns;\n }\n\n @action\n setSortedColumns(nextColumns: string[]): void {\n this.sortedColumnsState = { columns: this.args.columns, ids: nextColumns };\n const visible = new Set(this.visibleColumnIds);\n this.setVisibleColumns(nextColumns.filter((id) => visible.has(id)));\n }\n\n /** Move a column to another column's position (header column actions). */\n @action\n switchColumnPos(fromColId: string, toColId: string): void {\n const sorted = this.sortedColumns;\n const moveFromIdx = sorted.indexOf(fromColId);\n const moveToIdx = sorted.indexOf(toColId);\n if (moveFromIdx === -1 || moveToIdx === -1) return;\n const next = [...sorted];\n next.splice(moveFromIdx, 1);\n next.splice(moveToIdx, 0, fromColId);\n this.setSortedColumns(next);\n }\n\n /** The visible data columns, in display order. */\n @cached\n get columns(): EuiDataGridColumn[] {\n const byId = new Map(this.args.columns.map((column) => [column.id, column]));\n const columns: EuiDataGridColumn[] = [];\n for (const id of this.visibleColumnIds) {\n const column = byId.get(id);\n if (column) columns.push(column);\n }\n return columns;\n }\n\n get visibleColCount(): number {\n return (\n this.columns.length +\n this.leadingControlColumns.length +\n this.trailingControlColumns.length\n );\n }\n\n /* ---------------------------------------------------------------------- */\n /* Rows & pagination */\n /* ---------------------------------------------------------------------- */\n\n @cached\n get pagination():\n | (EuiDataGridPaginationProps & { pageSize: number; pageSizeOptions: number[] })\n | undefined {\n const pagination = this.args.pagination;\n if (!pagination) return undefined;\n // upstream `useEuiTablePaginationDefaults()` (with the app's `componentDefaults`)\n const defaults = euiTablePaginationDefaults(this);\n // read each field: consumers often pass objects with tracked accessors\n return {\n pageIndex: pagination.pageIndex,\n pageSize: pagination.pageSize ?? defaults.itemsPerPage,\n pageSizeOptions: pagination.pageSizeOptions ?? defaults.itemsPerPageOptions,\n onChangePage: pagination.onChangePage,\n onChangeItemsPerPage: pagination.onChangeItemsPerPage\n };\n }\n\n /** `pagination` where the template already checked it is defined. */\n get definedPagination() {\n return this.pagination!;\n }\n\n // ember-eui extension (row-tree): tree state; `rowModel` is null without\n // @rowTree/@grouping, so the grid works exactly as upstream\n readonly rowTreeModel = new EuiDataGridRowModel(this);\n\n get rowModel(): EuiDataGridRowModel | null {\n return this.rowTreeModel.isActive ? this.rowTreeModel : null;\n }\n\n // ember-eui extension (row-tree): rows shown: `@rowCount`, or the visible tree rows\n get rowCount(): number {\n return this.rowModel?.visibleRows.length ?? this.args.rowCount ?? 0;\n }\n\n // ember-eui extension (row-tree): data rows (all tree levels)\n get dataRowCount(): number {\n return this.rowModel?.dataRowCount ?? this.args.rowCount ?? 0;\n }\n\n get showPagination(): boolean {\n const pagination = this.pagination;\n // ember-eui extension (row-tree): visible rows instead of @rowCount\n return !!pagination && shouldRenderPagination(this.rowCount, pagination);\n }\n\n @cached\n get visibleRows(): { startRow: number; endRow: number; visibleRowCount: number } {\n const pagination = this.pagination;\n const rowCount = this.rowCount; // ember-eui extension (row-tree): visible rows\n const startRow =\n pagination && pagination.pageSize > 0\n ? pagination.pageIndex * pagination.pageSize\n : 0;\n let endRow =\n pagination && pagination.pageSize > 0\n ? (pagination.pageIndex + 1) * pagination.pageSize\n : rowCount;\n endRow = Math.min(endRow, rowCount);\n return { startRow, endRow, visibleRowCount: Math.max(0, endRow - startRow) };\n }\n\n /* ---------------------------------------------------------------------- */\n /* Schema, in-memory values & sorting */\n /* ---------------------------------------------------------------------- */\n\n @cached\n get schemaDetectors(): EuiDataGridSchemaDetector[] {\n return [...providedSchemaDetectors, ...(this.args.schemaDetectors ?? [])];\n }\n\n /** Values read from the off-screen in-memory renderer. */\n inMemoryValues: EuiDataGridInMemoryValues = {};\n @tracked inMemoryVersion = 0;\n\n @action\n onCellRender(rowIndex: number, columnId: string, value: string): void {\n const row = (this.inMemoryValues[rowIndex] = this.inMemoryValues[rowIndex] || {});\n if (row[columnId] !== value) {\n row[columnId] = value;\n this.inMemoryVersion++;\n }\n }\n\n @action\n resetInMemoryValues(rowCount: number): void {\n for (const key of Object.keys(this.inMemoryValues)) {\n if (Number(key) >= rowCount) delete this.inMemoryValues[key];\n }\n this.inMemoryVersion++;\n }\n\n @cached\n get inMemoryValuesSnapshot(): EuiDataGridInMemoryValues {\n // read the version so consumers recompute after the renderer mutates values\n void this.inMemoryVersion;\n return { ...this.inMemoryValues };\n }\n\n get inMemoryRowCount(): number {\n const inMemory = this.args.inMemory;\n if (inMemory?.level === 'enhancements') {\n // only the first page size is guaranteed to be available in memory\n return this.pagination?.pageSize || this.dataRowCount; // ember-eui extension (row-tree): all data rows\n }\n return this.dataRowCount; // ember-eui extension (row-tree): all data rows\n }\n\n @cached\n get schema(): EuiDataGridSchema {\n const detected = detectSchema({\n columns: this.args.columns,\n inMemory: this.args.inMemory,\n inMemoryValues: this.args.inMemory ? this.inMemoryValuesSnapshot : {},\n schemaDetectors: this.schemaDetectors,\n autoDetectSchema: this.args.inMemory != null\n });\n return mergeSchema(detected, this.args.columns);\n }\n\n @cached\n get sortedRowMap(): number[] {\n return computeSortedRowMap({\n sorting: this.args.sorting,\n inMemory: this.args.inMemory,\n inMemoryValues:\n this.args.inMemory?.level === 'sorting' ? this.inMemoryValuesSnapshot : {},\n schema: this.schema,\n schemaDetectors: this.schemaDetectors\n });\n }\n\n /** Visible (page-relative or absolute) row index to the data row index. */\n @action\n getCorrectRowIndex(visibleRowIndex: number): number {\n const startRow = this.visibleRows.startRow;\n const isPaginated = visibleRowIndex - startRow < 0;\n const unpaginatedRowIndex = isPaginated\n ? visibleRowIndex + startRow\n : visibleRowIndex;\n // ember-eui extension (row-tree): tree rows (negative indexes for groups)\n if (this.rowModel) return this.rowModel.rowIndexAt(unpaginatedRowIndex);\n const sortedRowMap = this.sortedRowMap;\n return unpaginatedRowIndex in sortedRowMap\n ? sortedRowMap[unpaginatedRowIndex]!\n : unpaginatedRowIndex;\n }\n\n /* ---------------------------------------------------------------------- */\n /* Display options (gridStyle / rowHeightsOptions + display selector) */\n /* ---------------------------------------------------------------------- */\n\n @cached\n get passedGridStyles(): EuiDataGridStyle {\n return { ...startingStyles, ...this.args.gridStyle };\n }\n\n @cached\n get passedGridStylesKey(): string {\n return stableKey(this.passedGridStyles);\n }\n\n // user changes from the display selector, valid until new styles are passed\n @tracked private gridStylesState: { key: string; styles: EuiDataGridStyle } | null =\n null;\n\n get gridStyles(): typeof startingStyles & EuiDataGridStyle {\n const state = this.gridStylesState;\n const styles =\n state && state.key === this.passedGridStylesKey\n ? state.styles\n : this.passedGridStyles;\n return styles as typeof startingStyles & EuiDataGridStyle;\n }\n\n /** Initial styles the display selector's reset button restores. */\n initialGridStyles: EuiDataGridStyle | null = null;\n\n @action\n onUserGridStyleChange(styles: Partial<EuiDataGridStyle>): void {\n const changed = { ...this.gridStyles, ...styles };\n const { onChange, ...rest } = changed;\n onChange?.(rest);\n this.gridStylesState = { key: this.passedGridStylesKey, styles: changed };\n }\n\n @cached\n get passedRowHeightsOptions(): EuiDataGridRowHeightsOptions {\n return this.args.rowHeightsOptions ?? {};\n }\n\n @cached\n get passedRowHeightsOptionsKey(): string {\n return stableKey(this.passedRowHeightsOptions);\n }\n\n @tracked private rowHeightsState: {\n key: string;\n options: EuiDataGridRowHeightsOptions;\n } | null = null;\n\n get rowHeightsOptions(): EuiDataGridRowHeightsOptions {\n const state = this.rowHeightsState;\n return state && state.key === this.passedRowHeightsOptionsKey\n ? state.options\n : this.passedRowHeightsOptions;\n }\n\n initialRowHeightsOptions: EuiDataGridRowHeightsOptions | null = null;\n\n @action\n onUserRowHeightChange(options: Partial<EuiDataGridRowHeightsOptions>): void {\n const changed = { ...this.rowHeightsOptions, ...options };\n const { onChange, ...rest } = changed;\n onChange?.(rest);\n this.rowHeightsState = { key: this.passedRowHeightsOptionsKey, options: changed };\n }\n\n @action\n resetDisplayOptions(): void {\n this.gridStylesState = {\n key: this.passedGridStylesKey,\n styles: this.initialGridStyles ?? this.passedGridStyles\n };\n this.rowHeightsState = {\n key: this.passedRowHeightsOptionsKey,\n options: this.initialRowHeightsOptions ?? this.passedRowHeightsOptions\n };\n }\n\n constructor(owner: Owner, args: EuiDataGridSignature['Args']) {\n super(owner, args);\n this.initialGridStyles = { ...startingStyles, ...args.gridStyle };\n this.initialRowHeightsOptions = args.rowHeightsOptions ?? {};\n // copies the focused cell's text on Ctrl/Cmd+C (static handler, ref-counted across instances)\n registerDestructor(this, retainDocumentListener('copy', copyFocusedDataGridCell as EventListener));\n // tabs/newlines for selections copied across cells (upstream\n // OverrideCopiedTabularContent; static handler, ref-counted across instances)\n registerDestructor(this, retainDocumentListener('copy', onTabularCopy as EventListener));\n }\n\n /* ---------------------------------------------------------------------- */\n /* Focus */\n /* ---------------------------------------------------------------------- */\n\n private cellsUpdateFocus = new Map<string, CellCallback>();\n @tracked focusedCell: EuiDataGridFocusedCell | undefined = undefined;\n @tracked isFocusedCellInView = false;\n\n /** Register a cell's focus callback; returns the unregister function. */\n onFocusUpdate(cell: EuiDataGridFocusedCell, callback: CellCallback): () => void {\n const key = `${cell[0]}-${cell[1]}`;\n this.cellsUpdateFocus.set(key, callback);\n return () => {\n if (this.cellsUpdateFocus.get(key) === callback) this.cellsUpdateFocus.delete(key);\n };\n }\n\n isFocusedCell(colIndex: number, visibleRowIndex: number): boolean {\n const focused = this.focusedCell;\n return focused?.[0] === colIndex && focused?.[1] === visibleRowIndex;\n }\n\n @action\n setFocusedCell(nextFocusedCell: EuiDataGridFocusedCell, forceUpdate = false): void {\n const previous = this.focusedCell;\n if (\n !forceUpdate &&\n previous &&\n nextFocusedCell[0] === previous[0] &&\n nextFocusedCell[1] === previous[1]\n ) {\n return;\n }\n this.isFocusedCellInView = true; // scrolling ensures focused cells are in view\n this.focusedCell = nextFocusedCell;\n if (previous) this.notifyCell(previous, false);\n this.notifyCell(nextFocusedCell, true);\n this.body?.onFocusedCellChange(nextFocusedCell);\n }\n\n private notifyCell(cell: EuiDataGridFocusedCell, isFocused: boolean): void {\n this.cellsUpdateFocus.get(`${cell[0]}-${cell[1]}`)?.(isFocused);\n }\n\n @action\n setIsFocusedCellInView(isInView: boolean): void {\n if (this.isFocusedCellInView !== isInView) this.isFocusedCellInView = isInView;\n }\n\n @action\n focusFirstVisibleInteractiveCell(): void {\n this.setFocusedCell([0, -1]);\n }\n\n /* ---------------------------------------------------------------------- */\n /* Cell popover */\n /* ---------------------------------------------------------------------- */\n\n @tracked popoverCell: EuiDataGridCellLocation | null = null;\n /** Popover props a custom popover renderer sets (`setCellPopoverProps`). */\n @tracked cellPopoverProps: EuiDataGridCellPopoverProps = {};\n\n @action\n openCellPopover({ rowIndex, colIndex }: EuiDataGridCellLocation): void {\n const open = this.popoverCell;\n if (open && open.rowIndex === rowIndex && open.colIndex === colIndex) return;\n this.cellPopoverProps = {};\n this.popoverCell = { rowIndex, colIndex };\n this.body?.scrollCellIntoView({ rowIndex, colIndex });\n }\n\n @action\n closeCellPopover(): void {\n if (this.popoverCell) this.popoverCell = null;\n }\n\n isPopoverOpenFor(colIndex: number, visibleRowIndex: number): boolean {\n const open = this.popoverCell;\n return !!open && open.colIndex === colIndex && open.rowIndex === visibleRowIndex;\n }\n\n /* ---------------------------------------------------------------------- */\n /* Fullscreen */\n /* ---------------------------------------------------------------------- */\n\n @action\n setIsFullScreen(isFullScreen: boolean): void {\n if (this.isFullScreen === isFullScreen) return;\n this.isFullScreen = isFullScreen;\n this.args.onFullScreenChange?.(isFullScreen);\n }\n\n @action\n toggleFullScreen(): void {\n this.setIsFullScreen(!this.isFullScreen);\n }\n\n @action\n onGridRootKeyDown(event: KeyboardEvent): void {\n if (event.key === keys.ESCAPE && this.isFullScreen) {\n event.preventDefault();\n this.setIsFullScreen(false);\n }\n }\n\n restrictBody = modifier((_element: HTMLElement, [isFullScreen, bodyClass]: [boolean, string]) => {\n if (!isFullScreen) return;\n document.body.classList.add(GRID_IS_FULLSCREEN_CLASSNAME, bodyClass);\n return () => {\n document.body.classList.remove(GRID_IS_FULLSCREEN_CLASSNAME, bodyClass);\n };\n });\n\n /* ---------------------------------------------------------------------- */\n /* Toolbar */\n /* ---------------------------------------------------------------------- */\n\n get showToolbar(): boolean {\n return !!(this.args.toolbarVisibility ?? true);\n }\n\n get showHeader(): boolean {\n return !!(this.args.headerVisibility ?? true);\n }\n\n /* ---------------------------------------------------------------------- */\n /* Styles & classes */\n /* ---------------------------------------------------------------------- */\n\n @cached\n get styles() {\n const context = getEuiThemeContext(this);\n return {\n context,\n grid: useEuiBorealisStyles(context, euiDataGridStyles),\n fullScreen: useEuiBorealisStyles(context, euiDataGridFullScreenStyles)\n };\n }\n\n @cached\n get focusWrapClass(): string {\n const { context, grid } = this.styles;\n return `euiDataGrid__focusWrap ${euiClass(context, grid.euiDataGrid__focusWrap)}`;\n }\n\n @cached\n get fullScreenClass(): string {\n const { context, fullScreen } = this.styles;\n return euiClass(context, fullScreen['euiDataGrid--fullScreen']);\n }\n\n @cached\n get restrictBodyClass(): string {\n const { context, fullScreen } = this.styles;\n return euiClass(context, fullScreen.euiDataGrid__restrictBody);\n }\n\n @cached\n get classes(): string {\n const { context, grid } = this.styles;\n const gridStyles = this.gridStyles;\n const toolbarVisibility = this.args.toolbarVisibility ?? true;\n return [\n 'euiDataGrid',\n fontSizesToClassMap[gridStyles.fontSize],\n bordersToClassMap[gridStyles.border],\n headerToClassMap[gridStyles.header],\n footerToClassMap[gridStyles.footer],\n rowHoverToClassMap[gridStyles.rowHover],\n cellPaddingsToClassMap[gridStyles.cellPadding],\n gridStyles.stripes && 'euiDataGrid--stripes',\n gridStyles.footer && gridStyles.stickyFooter && 'euiDataGrid--stickyFooter',\n this.isFullScreen && 'euiDataGrid--fullScreen',\n this.isFullScreen && this.fullScreenClass,\n !toolbarVisibility && 'euiDataGrid--noControls',\n !this.showHeader && 'euiDataGrid--noHeader',\n euiClass(\n context,\n BOX_SIZING_RESET,\n grid.euiDataGrid,\n grid.cellPadding[gridStyles.cellPadding],\n grid.fontSize[gridStyles.fontSize],\n grid.borders[gridStyles.border],\n this.args.css\n )\n ]\n .filter(Boolean)\n .join(' ');\n }\n\n /** Class of the hidden tabular copy marker characters. */\n @cached\n get copyMarkerClass(): string {\n return euiScreenReaderOnlyClass(this.styles.context);\n }\n\n @cached\n get contentClass(): string {\n const { context, grid } = this.styles;\n return `euiDataGrid__content ${euiClass(context, grid.euiDataGrid__content)}`;\n }\n\n get rootStyle() {\n if (this.isFullScreen) return undefined;\n const toCss = (value: string | number | undefined) =>\n typeof value === 'number' ? `${value}px` : value;\n const width = toCss(this.args.width);\n const height = toCss(this.args.height);\n if (!width && !height) return undefined;\n return htmlSafe(\n [width && `width:${width}`, height && `height:${height}`].filter(Boolean).join(';')\n );\n }\n\n /* ---------------------------------------------------------------------- */\n /* Accessibility */\n /* ---------------------------------------------------------------------- */\n\n get ariaPage(): number {\n return this.pagination ? this.pagination.pageIndex + 1 : 1;\n }\n\n get ariaPageCount(): number {\n return this.pagination?.pageSize\n ? Math.ceil(this.rowCount / this.pagination.pageSize) // ember-eui extension (row-tree): visible rows\n : 1;\n }\n\n get rawAriaLabel(): string | null {\n return this.args.ariaLabel ?? this.attrAriaLabel;\n }\n\n get rawAriaLabelledBy(): string | null {\n return this.args.ariaLabelledBy ?? this.attrAriaLabelledBy;\n }\n\n get gridAriaLabel(): string | undefined {\n const label = this.rawAriaLabel;\n if (label == null) return undefined;\n if (!this.pagination) return label;\n return this.euiI18n.lookupToken(\n 'euiDataGrid.ariaLabel',\n '{label}; Page {page} of {pageCount}.',\n { label, page: this.ariaPage, pageCount: this.ariaPageCount }\n );\n }\n\n get gridAriaLabelledBy(): string | undefined {\n const labelledBy = this.rawAriaLabelledBy;\n if (labelledBy == null) return undefined;\n return `${labelledBy} ${this.pagination ? this.ariaLabelledById : ''}`;\n }\n\n get ariaLabelledByText(): string {\n return this.euiI18n.lookupToken(\n 'euiDataGrid.ariaLabelledBy',\n 'Page {page} of {pageCount}.',\n { page: this.ariaPage, pageCount: this.ariaPageCount }\n );\n }\n\n get screenReaderNotice(): string {\n return this.euiI18n.lookupToken(\n 'euiDataGrid.screenReaderNotice',\n 'Cell contains interactive content.'\n );\n }\n\n /** Moves `aria-label`/`aria-labelledby` attributes to the `role=grid` element. */\n moveAriaAttributes = modifier((element: HTMLElement) => {\n const move = () => {\n for (const name of ['aria-label', 'aria-labelledby'] as const) {\n if (element.hasAttribute(name)) {\n const value = element.getAttribute(name);\n element.removeAttribute(name);\n if (name === 'aria-label') this.attrAriaLabel = value;\n else this.attrAriaLabelledBy = value;\n }\n }\n };\n afterRender(this, move);\n const observer = new MutationObserver(move);\n observer.observe(element, { attributeFilter: ['aria-label', 'aria-labelledby'] });\n return () => observer.disconnect();\n });\n\n /** Tracks the grid width for the toolbar's responsive controls. */\n observeWidth = modifier((element: HTMLElement) => {\n const update = () => {\n const width = element.offsetWidth;\n if (width !== this.gridWidth) this.gridWidth = width;\n };\n afterRender(this, update);\n return observeResize([element], update);\n });\n\n /** Interactive elements added to cells leave the tab order. */\n setupContent = modifier((element: HTMLElement) => {\n this.contentElement = element;\n const observer = new MutationObserver(preventTabbing);\n observer.observe(element, { subtree: true, childList: true });\n return () => {\n observer.disconnect();\n this.contentElement = null;\n };\n });\n\n /* ---------------------------------------------------------------------- */\n /* Content keyboard handling */\n /* ---------------------------------------------------------------------- */\n\n get hasFooter(): boolean {\n return this.body?.hasFooter ?? !!this.args.renderFooterCellValue;\n }\n\n @action\n onContentKeyDown(event: KeyboardEvent): void {\n // Popovers attached inside cells (expansion, column actions) own their\n // keys: upstream renders them outside the grid content\n if ((event.target as Element | null)?.closest?.('.euiPopover__panel')) return;\n handleGridKeyDown(event, {\n gridElement: this.contentElement,\n visibleColCount: this.visibleColCount,\n visibleRowCount: this.visibleRows.visibleRowCount,\n visibleRowStartIndex: this.body?.visibleRowStartIndex ?? 0,\n rowCount: this.rowCount, // ember-eui extension (row-tree): visible rows\n pagination: this.pagination,\n hasFooter: this.hasFooter,\n focusedCell: this.focusedCell,\n setFocusedCell: this.setFocusedCell\n });\n }\n\n get contentTabIndex(): number {\n // Firefox allows tabbing to a scrollable div, Chrome does not\n return this.isFocusedCellInView ? -1 : 0;\n }\n\n @action\n onContentKeyUp(event: KeyboardEvent): void {\n if (this.isFocusedCellInView) return;\n // Only move focus into the grid on a keyboard tab: mouse users can\n // accidentally focus the wrapper by clicking scrollbars\n if (event.key === keys.TAB && event.target === event.currentTarget) {\n this.focusFirstVisibleInteractiveCell();\n }\n }\n\n willDestroy(): void {\n super.willDestroy();\n this.body = null;\n }\n\n /* ---------------------------------------------------------------------- */\n /* Imperative API (upstream `useImperativeGridRef`) */\n /* ---------------------------------------------------------------------- */\n\n /**\n * Throws a digestible error if the consumer targets an invalid cell, which\n * also stops the API from continuing.\n */\n private checkCellExists({ rowIndex, colIndex }: EuiDataGridCellLocationProps): void {\n const rowCount = this.dataRowCount; // ember-eui extension (row-tree): all data rows\n const colCount = this.visibleColCount;\n if (rowIndex >= rowCount || rowIndex < 0) {\n throw new Error(\n `Row ${rowIndex} is not a valid row. The maximum visible row index is ${rowCount - 1}.`\n );\n }\n if (colIndex >= colCount) {\n throw new Error(\n `Column ${colIndex} is not a valid column. The maximum visible column index is ${colCount - 1}.`\n );\n }\n }\n\n /**\n * The consumer's (unsorted, unpaginated) row index to the visible row\n * index the cells use, changing page when the row is on another one.\n */\n private findVisibleRowIndex(rowIndex: number): number {\n const sortedRowMap = this.sortedRowMap;\n const visibleRowIndex = this.rowModel // ember-eui extension (row-tree): reveals collapsed rows\n ? this.rowModel.findVisibleRowIndex(rowIndex)\n : sortedRowMap.length\n ? sortedRowMap.findIndex((mappedIndex) => mappedIndex === rowIndex)\n : rowIndex;\n const pagination = this.pagination;\n if (pagination && pagination.pageSize > 0) {\n const pageIndex = Math.floor(visibleRowIndex / pagination.pageSize);\n if (pageIndex !== pagination.pageIndex) pagination.onChangePage(pageIndex);\n return visibleRowIndex % pagination.pageSize;\n }\n return visibleRowIndex;\n }\n\n /** The API passed to `@registerApi`. */\n readonly api: EuiDataGridRefProps = {\n setIsFullScreen: (isFullScreen: boolean) => this.setIsFullScreen(isFullScreen),\n setFocusedCell: (cell: EuiDataGridCellLocationProps) => {\n this.checkCellExists(cell);\n const visibleRowIndex = this.findVisibleRowIndex(cell.rowIndex);\n // forced, unlike upstream: re-focuses the cell even when it is\n // already the grid's focused cell (e.g. after a modal or popover)\n this.setFocusedCell([cell.colIndex, visibleRowIndex], true);\n },\n openCellPopover: (cell: EuiDataGridCellLocationProps) => {\n this.checkCellExists(cell);\n const visibleRowIndex = this.findVisibleRowIndex(cell.rowIndex);\n this.openCellPopover({ rowIndex: visibleRowIndex, colIndex: cell.colIndex });\n },\n closeCellPopover: () => this.closeCellPopover(),\n scrollTo: (params) => this.body?.scrollTo?.(params),\n scrollToItem: (params) => this.body?.scrollToItem?.(params)\n };\n\n // ember-eui extension (row-tree): toggles a row (closes a popover: rows below it move)\n @action\n toggleRow(row: { id: string; kind: 'row' | 'group'; isExpanded: boolean }): void {\n this.closeCellPopover();\n this.rowModel?.toggle(row);\n }\n\n // ember-eui extension (row-tree): re-registers the API when the tree state appears\n get hasRowModel(): boolean {\n return !!this.rowModel;\n }\n\n clampRowTreePageIndex = clampRowTreePageIndex; // ember-eui extension (row-tree): see row-tree-hooks.ts\n\n registerApi = modifier(\n (\n _element: HTMLElement,\n [registerApi, hasRowModel]: [EuiDataGridSignature['Args']['registerApi'], boolean]\n ) => {\n // ember-eui extension (row-tree): expand/collapse API methods\n const api = hasRowModel ? { ...this.api, ...this.rowTreeModel.api } : this.api;\n if (registerApi) afterRender(this, () => registerApi(api));\n }\n );\n\n <template>\n <div\n class={{this.focusWrapClass}}\n {{focusTrap\n _createFocusTrap=focusTrapFactory\n isActive=this.isFullScreen\n focusTrapOptions=(hash\n clickOutsideDeactivates=true escapeDeactivates=false preventScroll=true\n )\n }}\n >\n <div\n class={{this.classes}}\n style={{this.rootStyle}}\n {{on \"keydown\" this.onGridRootKeyDown}}\n {{this.observeWidth}}\n {{this.restrictBody this.isFullScreen this.restrictBodyClass}}\n {{! ember-eui extension (row-tree): re-register the API with tree methods }}\n {{this.registerApi @registerApi this.hasRowModel}}\n {{! ember-eui extension (row-tree): page index clamping }}\n {{this.clampRowTreePageIndex this this.rowCount this.pagination.pageIndex this.pagination.pageSize}}\n ...attributes\n {{this.moveAriaAttributes}}\n >\n {{#if this.showToolbar}}\n <EuiDataGridToolbar @grid={{this}} @hasCustomToolbarBlock={{has-block \"customToolbar\"}}>\n <:leftControlsPrepend>{{yield to=\"leftControlsPrepend\"}}</:leftControlsPrepend>\n <:leftControlsAppend>{{yield to=\"leftControlsAppend\"}}</:leftControlsAppend>\n <:rightControls>{{yield to=\"rightControls\"}}</:rightControls>\n <:customToolbar as |toolbar|>{{yield toolbar to=\"customToolbar\"}}</:customToolbar>\n </EuiDataGridToolbar>\n {{/if}}\n {{#if @inMemory}}\n <EuiDataGridInMemoryRenderer\n @grid={{this}}\n @inMemory={{@inMemory}}\n @rowCount={{this.inMemoryRowCount}}\n >\n <:cell as |cell|>{{yield cell to=\"cell\"}}</:cell>\n </EuiDataGridInMemoryRenderer>\n {{/if}}\n {{! template-lint-disable no-invalid-interactive }}\n <div\n id={{this.gridId}}\n class={{this.contentClass}}\n {{! ember-eui extension (row-tree): treegrid role, visible row count }}\n role={{if this.rowModel \"treegrid\" \"grid\"}}\n aria-rowcount={{this.rowCount}}\n aria-colcount={{this.visibleColCount}}\n aria-label={{this.gridAriaLabel}}\n aria-labelledby={{this.gridAriaLabelledBy}}\n tabindex={{this.contentTabIndex}}\n data-test-subj=\"euiDataGridBody\"\n {{on \"keydown\" this.onContentKeyDown}}\n {{on \"keyup\" this.onContentKeyUp}}\n {{this.setupContent}}\n >\n <EuiDataGridCopyMarker @grid={{this}} @type=\"boundary\" />\n {{#if (or @renderCustomGridBody (has-block \"customGridBody\"))}}\n <EuiDataGridCustomBody\n @grid={{this}}\n @hasFooterBlock={{has-block \"footerCell\"}}\n @renderCustomGridBody={{@renderCustomGridBody}}\n >\n <:customGridBody as |body|>{{yield body to=\"customGridBody\"}}</:customGridBody>\n </EuiDataGridCustomBody>\n {{else}}\n <EuiDataGridBody\n @grid={{this}}\n @hasFooterBlock={{has-block \"footerCell\"}}\n @hasCellPopoverBlock={{has-block \"cellPopover\"}}\n >\n <:cell as |cell|>{{yield cell to=\"cell\"}}</:cell>\n <:cellPopover as |popover|>{{yield popover to=\"cellPopover\"}}</:cellPopover>\n <:footerCell as |cell|>{{yield cell to=\"footerCell\"}}</:footerCell>\n <:controlHeaderCell as |cell|>{{yield cell to=\"controlHeaderCell\"}}</:controlHeaderCell>\n <:controlCell as |cell|>{{yield cell to=\"controlCell\"}}</:controlCell>\n <:controlFooterCell as |cell|>{{yield cell to=\"controlFooterCell\"}}</:controlFooterCell>\n </EuiDataGridBody>\n {{/if}}\n <EuiDataGridCopyMarker @grid={{this}} @type=\"boundary\" />\n </div>\n {{#if this.showPagination}}\n {{#if this.rawAriaLabelledBy}}\n <p id={{this.ariaLabelledById}} hidden>{{this.ariaLabelledByText}}</p>\n {{/if}}\n <EuiDataGridPagination @grid={{this}} @pagination={{this.definedPagination}} />\n {{/if}}\n <p id={{this.interactiveCellId}} hidden>{{this.screenReaderNotice}}</p>\n </div>\n </div>\n </template>\n}\n"],"names":["startingStyles","cellPadding","fontSize","border","stripes","rowHover","header","footer","stickyFooter","fontSizesToClassMap","s","m","l","headerToClassMap","shade","underline","footerToClassMap","overline","striped","rowHoverToClassMap","highlight","none","bordersToClassMap","all","horizontal","cellPaddingsToClassMap","BOX_SIZING_RESET","boxSizing","GRID_IS_FULLSCREEN_CLASSNAME","EMPTY_CONTROL_COLUMNS","stableKey","value","JSON","stringify","_key","v","undefined","EuiDataGrid","Component","g","prototype","service","i","gridId","guidFor","interactiveCellId","ariaLabelledById","body","contentElement","tracked","leadingControlColumns","args","trailingControlColumns","displayValues","values","column","columns","id","displayAsText","n","cached","visibleColumnIds","columnVisibility","visibleColumns","internalVisibleColumns","map","setVisibleColumns","columnIds","action","initialSortedColumns","availableColumnIdsSet","Set","validVisibleColumns","filter","has","visibleSet","result","visibleIndex","columnId","length","push","sortedColumns","state","sortedColumnsState","ids","setSortedColumns","nextColumns","visible","switchColumnPos","fromColId","toColId","sorted","moveFromIdx","indexOf","moveToIdx","next","splice","byId","Map","get","visibleColCount","pagination","defaults","euiTablePaginationDefaults","pageIndex","pageSize","itemsPerPage","pageSizeOptions","itemsPerPageOptions","onChangePage","onChangeItemsPerPage","definedPagination","rowTreeModel","EuiDataGridRowModel","rowModel","isActive","rowCount","visibleRows","dataRowCount","showPagination","shouldRenderPagination","startRow","endRow","Math","min","visibleRowCount","max","schemaDetectors","providedSchemaDetectors","inMemoryValues","onCellRender","rowIndex","row","inMemoryVersion","resetInMemoryValues","key","Object","keys","Number","inMemoryValuesSnapshot","inMemoryRowCount","inMemory","level","schema","detected","detectSchema","autoDetectSchema","mergeSchema","sortedRowMap","computeSortedRowMap","sorting","getCorrectRowIndex","visibleRowIndex","isPaginated","unpaginatedRowIndex","rowIndexAt","passedGridStyles","gridStyle","passedGridStylesKey","gridStyles","gridStylesState","styles","initialGridStyles","onUserGridStyleChange","changed","onChange","rest","passedRowHeightsOptions","rowHeightsOptions","passedRowHeightsOptionsKey","rowHeightsState","options","initialRowHeightsOptions","onUserRowHeightChange","resetDisplayOptions","constructor","owner","registerDestructor","retainDocumentListener","copyFocusedDataGridCell","onTabularCopy","cellsUpdateFocus","onFocusUpdate","cell","callback","set","delete","isFocusedCell","colIndex","focused","focusedCell","setFocusedCell","nextFocusedCell","forceUpdate","previous","isFocusedCellInView","notifyCell","onFocusedCellChange","isFocused","setIsFocusedCellInView","isInView","focusFirstVisibleInteractiveCell","openCellPopover","open","popoverCell","cellPopoverProps","scrollCellIntoView","closeCellPopover","isPopoverOpenFor","setIsFullScreen","isFullScreen","onFullScreenChange","toggleFullScreen","onGridRootKeyDown","event","preventDefault","restrictBody","modifier","_element","bodyClass","document","classList","add","remove","showToolbar","toolbarVisibility","showHeader","headerVisibility","context","getEuiThemeContext","grid","useEuiBorealisStyles","euiDataGridStyles","fullScreen","euiDataGridFullScreenStyles","focusWrapClass","euiClass","euiDataGrid__focusWrap","fullScreenClass","restrictBodyClass","euiDataGrid__restrictBody","classes","euiDataGrid","borders","css","Boolean","join","copyMarkerClass","euiScreenReaderOnlyClass","contentClass","euiDataGrid__content","rootStyle","toCss","width","height","htmlSafe","ariaPage","ariaPageCount","ceil","rawAriaLabel","ariaLabel","attrAriaLabel","rawAriaLabelledBy","ariaLabelledBy","attrAriaLabelledBy","gridAriaLabel","label","euiI18n","lookupToken","page","pageCount","gridAriaLabelledBy","labelledBy","ariaLabelledByText","screenReaderNotice","moveAriaAttributes","element","move","name","hasAttribute","getAttribute","removeAttribute","afterRender","observer","MutationObserver","observe","attributeFilter","disconnect","observeWidth","update","offsetWidth","gridWidth","observeResize","setupContent","preventTabbing","subtree","childList","hasFooter","renderFooterCellValue","onContentKeyDown","target","closest","handleGridKeyDown","gridElement","visibleRowStartIndex","contentTabIndex","onContentKeyUp","currentTarget","willDestroy","checkCellExists","colCount","Error","findVisibleRowIndex","findIndex","mappedIndex","floor","api","scrollTo","params","scrollToItem","toggleRow","toggle","hasRowModel","clampRowTreePageIndex","registerApi","setComponentTemplate","precompileTemplate","strictMode","scope","focusTrap","focusTrapFactory","hash","on","EuiDataGridToolbar","EuiDataGridInMemoryRenderer","EuiDataGridCopyMarker","or","EuiDataGridCustomBody","EuiDataGridBody","EuiDataGridPagination"],"mappings":"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"}
@@ -5,7 +5,7 @@ import { on } from '@ember/modifier';
5
5
  import { action } from '@ember/object';
6
6
  import { guidFor } from '@ember/object/internals';
7
7
  import didInsert from '@ember/render-modifiers/modifiers/did-insert';
8
- import { later } from '@ember/runloop';
8
+ import { cancel, later } from '@ember/runloop';
9
9
  import { service } from '@ember/service';
10
10
  import optional from '@nullvoxpopuli/ember-composable-helpers/helpers/optional';
11
11
  import { modifier } from 'ember-modifier';
@@ -473,7 +473,8 @@ class EuiDualRangeComponent extends Component {
473
473
  n(this.prototype, "onInputFocus", [action]);
474
474
  }
475
475
  onInputBlur(e) {
476
- later(this, () => {
476
+ cancel(this.blurTimer);
477
+ this.blurTimer = later(this, () => {
477
478
  // Safari does not recognize any focus-related eventing for input[type=range]
478
479
  // making it impossible to capture its state using active/focus/relatedTarget
479
480
  // Instead, a prevention flag is set on mousedown, with a waiting period here.
@@ -519,8 +520,10 @@ class EuiDualRangeComponent extends Component {
519
520
  get thumbAriaDescribedby() {
520
521
  return this.showInputOnly ? undefined : this.args.ariaDescribedby;
521
522
  }
523
+ blurTimer;
522
524
  willDestroy() {
523
525
  super.willDestroy();
526
+ cancel(this.blurTimer);
524
527
  this.rangeSliderRef = null;
525
528
  }
526
529
  static {