@ember-eui/core 16.0.1 → 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.
- package/declarations/-private/associate-form-row-label.d.ts +9 -0
- package/declarations/-private/associate-form-row-label.d.ts.map +1 -0
- package/declarations/-private/vis-colors.d.ts +8 -0
- package/declarations/-private/vis-colors.d.ts.map +1 -0
- package/declarations/components/eui-aspect-ratio.d.ts +5 -0
- package/declarations/components/eui-aspect-ratio.d.ts.map +1 -1
- package/declarations/components/eui-avatar.d.ts +6 -0
- package/declarations/components/eui-avatar.d.ts.map +1 -1
- package/declarations/components/eui-basic-table.d.ts.map +1 -1
- package/declarations/components/eui-color-picker.d.ts +3 -0
- package/declarations/components/eui-color-picker.d.ts.map +1 -1
- package/declarations/components/eui-color-stops/thumb.d.ts +3 -1
- package/declarations/components/eui-color-stops/thumb.d.ts.map +1 -1
- package/declarations/components/eui-combo-box.d.ts +2 -0
- package/declarations/components/eui-combo-box.d.ts.map +1 -1
- package/declarations/components/eui-data-grid/body.d.ts +2 -0
- package/declarations/components/eui-data-grid/body.d.ts.map +1 -1
- package/declarations/components/eui-data-grid.d.ts.map +1 -1
- package/declarations/components/eui-dual-range.d.ts +2 -0
- package/declarations/components/eui-dual-range.d.ts.map +1 -1
- package/declarations/components/eui-focus-trap.d.ts +1 -0
- package/declarations/components/eui-focus-trap.d.ts.map +1 -1
- package/declarations/components/eui-global-toast-list.d.ts +8 -1
- package/declarations/components/eui-global-toast-list.d.ts.map +1 -1
- package/declarations/components/eui-markdown-editor-drop-zone.d.ts.map +1 -1
- package/declarations/components/eui-markdown-editor.d.ts.map +1 -1
- package/declarations/components/eui-markdown-format.d.ts +2 -0
- package/declarations/components/eui-markdown-format.d.ts.map +1 -1
- package/declarations/components/eui-overlay-mask.d.ts +5 -2
- package/declarations/components/eui-overlay-mask.d.ts.map +1 -1
- package/declarations/components/eui-popover.d.ts +5 -1
- package/declarations/components/eui-popover.d.ts.map +1 -1
- package/declarations/components/eui-range.d.ts +3 -0
- package/declarations/components/eui-range.d.ts.map +1 -1
- package/declarations/components/eui-saturation.d.ts +3 -1
- package/declarations/components/eui-saturation.d.ts.map +1 -1
- package/declarations/components/eui-search-bar/field-value-selection-filter.d.ts.map +1 -1
- package/declarations/components/eui-text-color.d.ts +6 -0
- package/declarations/components/eui-text-color.d.ts.map +1 -1
- package/declarations/components/eui-text.d.ts.map +1 -1
- package/declarations/components/eui-token.d.ts +11 -0
- package/declarations/components/eui-token.d.ts.map +1 -1
- package/declarations/components/eui-tool-tip.d.ts +1 -2
- package/declarations/components/eui-tool-tip.d.ts.map +1 -1
- package/declarations/modifiers/outside-click-detector.d.ts +3 -0
- package/declarations/modifiers/outside-click-detector.d.ts.map +1 -1
- package/declarations/modifiers/resize-observer.d.ts +3 -0
- package/declarations/modifiers/resize-observer.d.ts.map +1 -1
- package/declarations/utils/common.d.ts +42 -0
- package/declarations/utils/common.d.ts.map +1 -0
- package/declarations/utils/css-mappings/eui-avatar.d.ts +1 -1
- package/declarations/utils/css-mappings/eui-text.d.ts +1 -0
- package/declarations/utils/css-mappings/eui-text.d.ts.map +1 -1
- package/declarations/utils/eui/content-blocks.d.ts +14 -0
- package/declarations/utils/eui/content-blocks.d.ts.map +1 -0
- package/declarations/utils/eui/flyout-manager/reducer.d.ts.map +1 -1
- package/declarations/utils/eui/styles.d.ts +5 -0
- package/declarations/utils/eui/styles.d.ts.map +1 -1
- package/declarations/utils/retain-document-listener.d.ts +8 -0
- package/declarations/utils/retain-document-listener.d.ts.map +1 -0
- package/declarations/utils/token-map.d.ts +11 -0
- package/declarations/utils/token-map.d.ts.map +1 -0
- package/declarations/utils/transition.d.ts +1 -1
- package/declarations/utils/transition.d.ts.map +1 -1
- package/dist/components/eui-aspect-ratio.js +20 -5
- package/dist/components/eui-aspect-ratio.js.map +1 -1
- package/dist/components/eui-avatar.js +16 -4
- package/dist/components/eui-avatar.js.map +1 -1
- package/dist/components/eui-basic-table.js +4 -2
- package/dist/components/eui-basic-table.js.map +1 -1
- package/dist/components/eui-color-picker.js +8 -2
- package/dist/components/eui-color-picker.js.map +1 -1
- package/dist/components/eui-color-stops/thumb.js +17 -5
- package/dist/components/eui-color-stops/thumb.js.map +1 -1
- package/dist/components/eui-combo-box.js +16 -0
- package/dist/components/eui-combo-box.js.map +1 -1
- package/dist/components/eui-data-grid/body.js +21 -1
- package/dist/components/eui-data-grid/body.js.map +1 -1
- package/dist/components/eui-data-grid.js +6 -4
- package/dist/components/eui-data-grid.js.map +1 -1
- package/dist/components/eui-dual-range.js +5 -2
- package/dist/components/eui-dual-range.js.map +1 -1
- package/dist/components/eui-focus-trap.js +4 -1
- package/dist/components/eui-focus-trap.js.map +1 -1
- package/dist/components/eui-global-toast-list.js +33 -5
- package/dist/components/eui-global-toast-list.js.map +1 -1
- package/dist/components/eui-markdown-editor-drop-zone.js +2 -0
- package/dist/components/eui-markdown-editor-drop-zone.js.map +1 -1
- package/dist/components/eui-markdown-editor.js +3 -1
- package/dist/components/eui-markdown-editor.js.map +1 -1
- package/dist/components/eui-markdown-format.js +9 -3
- package/dist/components/eui-markdown-format.js.map +1 -1
- package/dist/components/eui-overlay-mask.js +2 -0
- package/dist/components/eui-overlay-mask.js.map +1 -1
- package/dist/components/eui-popover.js +22 -2
- package/dist/components/eui-popover.js.map +1 -1
- package/dist/components/eui-range.js +10 -3
- package/dist/components/eui-range.js.map +1 -1
- package/dist/components/eui-saturation.js +16 -4
- package/dist/components/eui-saturation.js.map +1 -1
- package/dist/components/eui-search-bar/field-value-selection-filter.js +8 -3
- package/dist/components/eui-search-bar/field-value-selection-filter.js.map +1 -1
- package/dist/components/eui-text-color.js +20 -6
- package/dist/components/eui-text-color.js.map +1 -1
- package/dist/components/eui-text.js +6 -3
- package/dist/components/eui-text.js.map +1 -1
- package/dist/components/eui-token.js +31 -17
- package/dist/components/eui-token.js.map +1 -1
- package/dist/components/eui-tool-tip.js +9 -17
- package/dist/components/eui-tool-tip.js.map +1 -1
- package/dist/icons-DCTZo11a.js.map +1 -1
- package/dist/modifiers/outside-click-detector.js +12 -2
- package/dist/modifiers/outside-click-detector.js.map +1 -1
- package/dist/modifiers/resize-observer.js +19 -4
- package/dist/modifiers/resize-observer.js.map +1 -1
- package/dist/utils/eui/flyout-manager/reducer.js +7 -1
- package/dist/utils/eui/flyout-manager/reducer.js.map +1 -1
- package/dist/utils/eui/styles.js +5 -0
- package/dist/utils/eui/styles.js.map +1 -1
- package/dist/utils/retain-document-listener.js +30 -0
- package/dist/utils/retain-document-listener.js.map +1 -0
- package/dist/utils/transition.js +8 -3
- package/dist/utils/transition.js.map +1 -1
- package/package.json +2 -2
- package/declarations/modifiers/open-collapsible-nav.d.ts +0 -9
- package/declarations/modifiers/open-collapsible-nav.d.ts.map +0 -1
|
@@ -606,11 +606,17 @@ class EuiDataGridBody extends EuiDataGridBodyBase {
|
|
|
606
606
|
/* -------------------------------------------------------------------- */ /* Scrolling cells into view */ /* -------------------------------------------------------------------- */
|
|
607
607
|
isPointerDown = false;
|
|
608
608
|
pendingScroll = false;
|
|
609
|
+
stopPointerTracking;
|
|
610
|
+
willDestroy() {
|
|
611
|
+
super.willDestroy();
|
|
612
|
+
this.stopPointerTracking?.();
|
|
613
|
+
}
|
|
609
614
|
onPointerDown() {
|
|
610
615
|
this.isPointerDown = true;
|
|
616
|
+
this.stopPointerTracking?.();
|
|
611
617
|
const onPointerUp = event => {
|
|
612
618
|
this.isPointerDown = false;
|
|
613
|
-
|
|
619
|
+
this.stopPointerTracking?.();
|
|
614
620
|
if (!this.pendingScroll) return;
|
|
615
621
|
this.pendingScroll = false;
|
|
616
622
|
// only primary-button clicks; middle clicks scroll on Windows
|
|
@@ -623,7 +629,21 @@ class EuiDataGridBody extends EuiDataGridBodyBase {
|
|
|
623
629
|
colIndex: focused[0]
|
|
624
630
|
});
|
|
625
631
|
};
|
|
632
|
+
const onCancel = () => {
|
|
633
|
+
// aborted gesture: nothing to scroll to
|
|
634
|
+
this.pendingScroll = false;
|
|
635
|
+
this.isPointerDown = false;
|
|
636
|
+
this.stopPointerTracking?.();
|
|
637
|
+
};
|
|
626
638
|
document.addEventListener('pointerup', onPointerUp, true);
|
|
639
|
+
document.addEventListener('pointercancel', onCancel, true);
|
|
640
|
+
window.addEventListener('blur', onCancel);
|
|
641
|
+
this.stopPointerTracking = () => {
|
|
642
|
+
document.removeEventListener('pointerup', onPointerUp, true);
|
|
643
|
+
document.removeEventListener('pointercancel', onCancel, true);
|
|
644
|
+
window.removeEventListener('blur', onCancel);
|
|
645
|
+
this.stopPointerTracking = undefined;
|
|
646
|
+
};
|
|
627
647
|
}
|
|
628
648
|
static {
|
|
629
649
|
n(this.prototype, "onPointerDown", [action]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"body.js","sources":["../../../src/components/eui-data-grid/body.gts"],"sourcesContent":["import { cached, tracked } from '@glimmer/tracking';\nimport { action } from '@ember/object';\nimport { on } from '@ember/modifier';\nimport { htmlSafe } from '@ember/template';\n\nimport { modifier } from 'ember-modifier';\n\nimport { getEuiThemeContext } from '../../utils/emotion/consume.ts';\nimport { euiClass, useEuiBorealisStyles } from '../../utils/eui/styles.ts';\nimport {\n euiDataGridBodyStyles,\n euiDataGridScrollBarStyles\n} from '../../utils/eui/styles.generated.ts';\nimport { afterRender, observeResize } from '../../utils/data-grid/scheduling.ts';\nimport EuiDataGridBodyBase from './body-base.ts';\nimport EuiDataGridFooterRow from './footer-row.gts';\nimport EuiDataGridHeaderRow from './header-row.gts';\nimport EuiDataGridRow from './row.gts';\n\nimport type { EuiDataGridBodyBaseArgs } from './body-base.ts';\nimport type { EuiDataGridSignature } from '../eui-data-grid.gts';\nimport type {\n EuiDataGridFocusedCell,\n EuiDataGridScrollToItemProps,\n EuiDataGridScrollToProps\n} from '../../utils/data-grid/types.ts';\n\nconst clampScrollOffset = (offset: number, max: number) => Math.max(0, Math.min(offset, max));\n\nconst UNITLESS = new Set(['opacity', 'z-index', 'flex-grow', 'flex-shrink', 'line-height', 'order']);\n// Offset for the cell actions menu when scrolling a cell below the sticky header\nconst ACTIONS_MENU_HEIGHT = 21;\n\ninterface Window {\n start: number;\n stop: number;\n}\n\nexport interface EuiDataGridBodySignature {\n Args: EuiDataGridBodyBaseArgs & {\n hasCellPopoverBlock?: boolean;\n };\n Blocks: Pick<\n EuiDataGridSignature['Blocks'],\n | 'cell'\n | 'cellPopover'\n | 'footerCell'\n | 'controlHeaderCell'\n | 'controlCell'\n | 'controlFooterCell'\n >;\n}\n\n/** Port of react-window's `getOffsetForIndexAndAlignment` (VariableSizeGrid). */\nfunction getOffsetForIndexAndAlignment({\n align,\n size,\n totalSize,\n offset,\n itemSize,\n scrollOffset,\n scrollbarSize\n}: {\n align: NonNullable<EuiDataGridScrollToItemProps['align']>;\n size: number;\n totalSize: number;\n offset: number;\n itemSize: number;\n scrollOffset: number;\n scrollbarSize: number;\n}): number {\n const maxOffset = Math.max(0, Math.min(totalSize - size, offset));\n const minOffset = Math.max(0, offset - size + scrollbarSize + itemSize);\n if (align === 'smart') {\n align =\n scrollOffset >= minOffset - size && scrollOffset <= maxOffset + size ? 'auto' : 'center';\n }\n switch (align) {\n case 'start':\n return maxOffset;\n case 'end':\n return minOffset;\n case 'center':\n return Math.round(minOffset + (maxOffset - minOffset) / 2);\n case 'auto':\n default:\n if (scrollOffset >= minOffset && scrollOffset <= maxOffset) return scrollOffset;\n if (minOffset > maxOffset) return minOffset; // the item is larger than the viewport\n if (scrollOffset < minOffset) return minOffset;\n return maxOffset;\n }\n}\n\n/** Binary search: index of the last offset `<= value`. */\nfunction findIndex(offsets: ArrayLike<number>, count: number, value: number): number {\n let low = 0;\n let high = count - 1;\n while (low < high) {\n const mid = (low + high + 1) >> 1;\n if (offsets[mid]! <= value) low = mid;\n else high = mid - 1;\n }\n return Math.max(0, low);\n}\n\n/**\n * The virtualized grid body: a scroll container whose inner element is sized\n * to all rows/columns, a sticky header row, absolutely positioned rows and a\n * sticky footer row. Only the rows/columns intersecting the viewport (plus\n * overscan) are rendered. The rendered window is recomputed on scroll but\n * only invalidates rendering when its integer bounds change.\n */\nexport default class EuiDataGridBody extends EuiDataGridBodyBase<EuiDataGridBodySignature> {\n readonly isVirtualized = true;\n\n outerElement: HTMLElement | null = null;\n innerElement: HTMLElement | null = null;\n headerElement: HTMLElement | null = null;\n footerElement: HTMLElement | null = null;\n\n /* measurements -------------------------------------------------------- */\n @tracked wrapperWidth = 0;\n @tracked wrapperHeight = 0;\n @tracked outerClientWidth = 0;\n @tracked headerRowHeight = 0;\n @tracked footerRowHeight = 0;\n @tracked scrollBarHeight = 0;\n @tracked scrollBarWidth = 0;\n @tracked hasVerticalScroll = false;\n @tracked hasHorizontalScroll = false;\n /** Height when the wrapper constrains the grid (set like upstream's useFinalGridDimensions). */\n @tracked constrainedHeight: number | undefined = undefined;\n\n /* scrolling ----------------------------------------------------------- */\n private scrollTop = 0;\n private scrollLeft = 0;\n /** Bumped only when the rendered window must change. */\n @tracked private scrollVersion = 0;\n\n /* -------------------------------------------------------------------- */\n /* Column widths */\n /* -------------------------------------------------------------------- */\n\n get availableWidth(): number {\n return this.outerClientWidth || this.wrapperWidth;\n }\n\n @cached\n get columnOffsets(): number[] {\n const widths = this.columnWidthList;\n const offsets = new Array<number>(widths.length + 1);\n offsets[0] = 0;\n for (let i = 0; i < widths.length; i++) offsets[i + 1] = offsets[i]! + widths[i]!;\n return offsets;\n }\n\n get totalWidth(): number {\n const offsets = this.columnOffsets;\n return offsets[offsets.length - 1]!;\n }\n\n columnLeft(colIndex: number): number {\n return this.columnOffsets[colIndex] ?? 0;\n }\n\n /* -------------------------------------------------------------------- */\n /* Row heights */\n /* -------------------------------------------------------------------- */\n\n get visibleRowCount(): number {\n return this.grid.visibleRows.visibleRowCount;\n }\n\n /** Prefix sums of row heights, or null for uniform rows. */\n @cached\n get rowOffsets(): Float64Array | null {\n void this.rowHeightsVersion;\n if (this.hasUniformRowHeights) return null;\n const count = this.visibleRowCount;\n const offsets = new Float64Array(count + 1);\n for (let i = 0; i < count; i++) offsets[i + 1] = offsets[i]! + this.getRowHeight(i);\n return offsets;\n }\n\n rowTop(visibleRowIndex: number): number {\n const offsets = this.rowOffsets;\n return offsets ? offsets[visibleRowIndex]! : visibleRowIndex * this.defaultRowHeight;\n }\n\n rowHeight(visibleRowIndex: number): number {\n const offsets = this.rowOffsets;\n return offsets\n ? offsets[visibleRowIndex + 1]! - offsets[visibleRowIndex]!\n : this.defaultRowHeight;\n }\n\n get totalRowsHeight(): number {\n const offsets = this.rowOffsets;\n return offsets ? offsets[this.visibleRowCount]! : this.visibleRowCount * this.defaultRowHeight;\n }\n\n /**\n * `virtualizationOptions.estimatedRowHeight` (react-window): rows past the\n * furthest row laid out so far count with the estimated height.\n */\n get estimatedRowHeight(): number | undefined {\n const estimate = this.grid.args.virtualizationOptions?.estimatedRowHeight;\n return typeof estimate === 'number' && estimate >= 0 ? estimate : undefined;\n }\n\n /** react-window's `lastMeasuredRowIndex` + 1; reset when the row layout changes. */\n private measuredRowCount = 0;\n private measuredRowLayout: unknown = undefined;\n\n /** Marks the rows up to `visibleRowIndex` as laid out (react-window `getItemMetadata`). */\n private measureRowsThrough(visibleRowIndex: number): void {\n this.syncMeasuredRowLayout();\n this.measuredRowCount = Math.min(\n this.visibleRowCount,\n Math.max(this.measuredRowCount, visibleRowIndex + 1)\n );\n }\n\n private syncMeasuredRowLayout(): void {\n const layout = this.rowOffsets ?? this.defaultRowHeight;\n if (layout !== this.measuredRowLayout) {\n // react-window `resetAfterRowIndex(0)`\n this.measuredRowLayout = layout;\n this.measuredRowCount = 0;\n }\n }\n\n /**\n * Height of the rows in the scrollable area: exact, or with\n * `estimatedRowHeight` react-window's estimate (rows laid out so far plus\n * the estimate for the others).\n */\n get scrollableRowsHeight(): number {\n const estimate = this.estimatedRowHeight;\n if (estimate === undefined) return this.totalRowsHeight;\n const count = this.visibleRowCount;\n this.measureRowsThrough(this.rowWindow.stop - 1);\n const measured = this.measuredRowCount;\n return this.rowTop(measured) + (count - measured) * estimate;\n }\n\n /** Index of the visible row at a vertical offset (row coordinates). */\n rowAt(offset: number): number {\n const count = this.visibleRowCount;\n if (count === 0) return 0;\n const offsets = this.rowOffsets;\n if (!offsets) return Math.min(count - 1, Math.max(0, Math.floor(offset / this.defaultRowHeight)));\n return Math.min(count - 1, findIndex(offsets, count, offset));\n }\n\n /* -------------------------------------------------------------------- */\n /* Grid height & width */\n /* -------------------------------------------------------------------- */\n\n get showHeader(): boolean {\n return this.grid.showHeader;\n }\n\n get headerOffset(): number {\n return this.showHeader ? this.headerRowHeight : 0;\n }\n\n /** Total possible height: every row of the page, header, footer and scrollbar. */\n get unconstrainedHeight(): number {\n return (\n this.totalRowsHeight +\n this.headerOffset +\n this.footerRowHeight +\n this.scrollBarHeight\n );\n }\n\n get finalHeight(): number {\n if (this.grid.isFullScreen) return this.wrapperHeight;\n return this.constrainedHeight || this.unconstrainedHeight;\n }\n\n get finalWidth(): number {\n return this.wrapperWidth;\n }\n\n get isMeasured(): boolean {\n return this.finalWidth > 0;\n }\n\n /* -------------------------------------------------------------------- */\n /* Rendered window */\n /* -------------------------------------------------------------------- */\n\n get overscanRowCount(): number {\n return this.grid.args.virtualizationOptions?.overscanRowCount ?? 1;\n }\n\n get overscanColumnCount(): number {\n return this.grid.args.virtualizationOptions?.overscanColumnCount ?? 1;\n }\n\n private computeRowWindow(scrollTop: number): Window & { visibleStart: number; visibleStop: number } {\n const count = this.visibleRowCount;\n if (count === 0) return { start: 0, stop: 0, visibleStart: 0, visibleStop: 0 };\n const viewport = Math.max(this.finalHeight - this.headerOffset, 0);\n const top = Math.max(0, scrollTop);\n const visibleStart = this.rowAt(top);\n let visibleStop = visibleStart;\n const bottom = top + viewport;\n while (visibleStop < count - 1 && this.rowTop(visibleStop + 1) < bottom) visibleStop++;\n const overscan = this.overscanRowCount;\n return {\n start: Math.max(0, visibleStart - overscan),\n stop: Math.min(count, visibleStop + 1 + overscan),\n visibleStart,\n visibleStop\n };\n }\n\n private computeColumnWindow(scrollLeft: number): Window & { visibleStart: number; visibleStop: number } {\n const count = this.grid.visibleColCount;\n if (count === 0) return { start: 0, stop: 0, visibleStart: 0, visibleStop: 0 };\n const offsets = this.columnOffsets;\n const viewport = this.outerClientWidth || this.finalWidth;\n const left = Math.max(0, scrollLeft);\n const visibleStart = Math.min(count - 1, findIndex(offsets, count, left));\n let visibleStop = visibleStart;\n while (visibleStop < count - 1 && offsets[visibleStop + 1]! < left + viewport) visibleStop++;\n const overscan = this.overscanColumnCount;\n return {\n start: Math.max(0, visibleStart - overscan),\n stop: Math.min(count, visibleStop + 1 + overscan),\n visibleStart,\n visibleStop\n };\n }\n\n @cached\n get rowWindow(): Window {\n void this.scrollVersion;\n const { start, stop } = this.computeRowWindow(this.scrollTop);\n return { start, stop };\n }\n\n @cached\n get columnWindow(): Window {\n void this.scrollVersion;\n const { start, stop } = this.computeColumnWindow(this.scrollLeft);\n return { start, stop };\n }\n\n @cached\n get renderedRows(): number[] {\n if (!this.isMeasured) return [];\n // like upstream, wait for the header height before positioning rows\n if (this.showHeader && this.headerRowHeight === 0) return [];\n const { start, stop } = this.rowWindow;\n const rows: number[] = [];\n for (let i = start; i < stop; i++) rows.push(i);\n return rows;\n }\n\n @cached\n get renderedColumns(): number[] {\n const { start, stop } = this.columnWindow;\n const columns: number[] = [];\n for (let i = start; i < stop; i++) columns.push(i);\n return columns;\n }\n\n /** First fully visible row (used by ArrowDown from the sticky header). */\n get visibleRowStartIndex(): number {\n return this.computeRowWindow(this.scrollTop).visibleStart;\n }\n\n /**\n * The body's scroll element scrolled (a `scroll` event), or the grid\n * moved it and needs the new window now.\n */\n @action\n onScroll(): void {\n const outer = this.outerElement;\n if (!outer) return;\n this.scrollTop = outer.scrollTop;\n this.scrollLeft = outer.scrollLeft;\n this.syncWindow();\n // react-window `_onScroll`: positions clamped to the scroll range (elastic\n // scrolling, fractional pixels); an unchanged position reports nothing\n const { scrollTop, scrollLeft, scrollHeight, scrollWidth, clientHeight, clientWidth } = outer;\n this.updateScrollState(\n clampScrollOffset(scrollLeft, scrollWidth - clientWidth),\n clampScrollOffset(scrollTop, scrollHeight - clientHeight),\n false\n );\n }\n\n /** Re-render only if the integer window bounds changed. */\n private syncWindow(): void {\n const rows = this.computeRowWindow(this.scrollTop);\n const columns = this.computeColumnWindow(this.scrollLeft);\n const current = { rows: this.rowWindow, columns: this.columnWindow };\n if (\n rows.start !== current.rows.start ||\n rows.stop !== current.rows.stop ||\n columns.start !== current.columns.start ||\n columns.stop !== current.columns.stop\n ) {\n this.scrollVersion++;\n }\n }\n\n /**\n * react-window's scroll state: the last reported offsets, directions and\n * whether the grid requested the scroll. `onScroll` is called when it\n * changes (react-window memoizes the callback on these values).\n */\n private scrollState: {\n scrollLeft: number;\n scrollTop: number;\n horizontalScrollDirection: 'forward' | 'backward';\n verticalScrollDirection: 'forward' | 'backward';\n scrollUpdateWasRequested: boolean;\n } = {\n scrollLeft: 0,\n scrollTop: 0,\n horizontalScrollDirection: 'forward',\n verticalScrollDirection: 'forward',\n scrollUpdateWasRequested: false\n };\n\n private updateScrollState(scrollLeft: number, scrollTop: number, requested: boolean): void {\n const previous = this.scrollState;\n if (previous.scrollLeft === scrollLeft && previous.scrollTop === scrollTop) return;\n this.scrollState = {\n scrollLeft,\n scrollTop,\n horizontalScrollDirection: previous.scrollLeft < scrollLeft ? 'forward' : 'backward',\n verticalScrollDirection: previous.scrollTop < scrollTop ? 'forward' : 'backward',\n scrollUpdateWasRequested: requested\n };\n this.notifyScroll();\n }\n\n /** react-window calls `onScroll` once when the grid mounts. */\n private notifyInitialScroll(): void {\n const { initialScrollTop, initialScrollLeft } = this.grid.args.virtualizationOptions ?? {};\n this.scrollState = {\n ...this.scrollState,\n scrollLeft: typeof initialScrollLeft === 'number' ? initialScrollLeft : 0,\n scrollTop: typeof initialScrollTop === 'number' ? initialScrollTop : 0\n };\n this.notifyScroll();\n }\n\n /** Upstream's `onScroll` wrapper: react-window's arguments plus the DOM's. */\n private notifyScroll(): void {\n const onScroll = this.grid.args.virtualizationOptions?.onScroll;\n const outer = this.outerElement;\n if (typeof onScroll !== 'function' || !outer) return;\n const { scrollTop, scrollLeft, scrollHeight, scrollWidth, clientHeight, clientWidth } =\n outer;\n const isScrollableVertical = scrollHeight > clientHeight;\n const isScrollableHorizontal = scrollWidth > clientWidth;\n const isScrolledToBlockStart = scrollTop === 0;\n const isScrolledToInlineStart = scrollLeft === 0;\n const { horizontalScrollDirection, verticalScrollDirection, scrollUpdateWasRequested } =\n this.scrollState;\n onScroll({\n horizontalScrollDirection,\n verticalScrollDirection,\n scrollUpdateWasRequested,\n scrollTop,\n scrollLeft,\n scrollHeight,\n scrollWidth,\n clientHeight,\n clientWidth,\n isScrolledToBlockStart,\n isScrolledToBlockEnd:\n isScrollableVertical &&\n !isScrolledToBlockStart &&\n scrollHeight - scrollTop <= clientHeight,\n isScrolledToInlineStart,\n isScrolledToInlineEnd:\n isScrollableHorizontal &&\n !isScrolledToInlineStart &&\n scrollWidth - scrollLeft <= clientWidth\n });\n }\n\n /** Reports the rendered window like react-window's `onItemsRendered`. */\n itemsRendered = modifier(\n (_element: HTMLElement, [rows, columns]: [Window, Window]) => {\n const onItemsRendered = this.grid.args.virtualizationOptions?.onItemsRendered;\n if (!onItemsRendered || !this.isMeasured) return;\n const rowWindow = this.computeRowWindow(this.scrollTop);\n const columnWindow = this.computeColumnWindow(this.scrollLeft);\n // reported after rendering, so consumers can update their own state\n afterRender(this, () => onItemsRendered({\n overscanRowStartIndex: rows.start,\n overscanRowStopIndex: Math.max(rows.start, rows.stop - 1),\n overscanColumnStartIndex: columns.start,\n overscanColumnStopIndex: Math.max(columns.start, columns.stop - 1),\n visibleRowStartIndex: rowWindow.visibleStart,\n visibleRowStopIndex: rowWindow.visibleStop,\n visibleColumnStartIndex: columnWindow.visibleStart,\n visibleColumnStopIndex: columnWindow.visibleStop\n }));\n }\n );\n\n /* -------------------------------------------------------------------- */\n /* Measuring */\n /* -------------------------------------------------------------------- */\n\n @action\n measure(): void {\n if (this.isDestroying || this.isDestroyed) return;\n const outer = this.outerElement;\n const wrapper = outer?.parentElement;\n if (!outer || !wrapper) return;\n // the height the current layout was rendered with\n const layoutUnconstrainedHeight = this.unconstrainedHeight;\n // layout sizes (offset*), unaffected by CSS transforms on ancestors\n const rect = { width: wrapper.offsetWidth, height: wrapper.offsetHeight };\n if (rect.width !== this.wrapperWidth) this.wrapperWidth = rect.width;\n if (rect.height !== this.wrapperHeight) this.wrapperHeight = rect.height;\n if (outer.clientWidth !== this.outerClientWidth && outer.clientWidth > 0)\n this.outerClientWidth = outer.clientWidth;\n\n const headerHeight = this.headerElement?.offsetHeight ?? 0;\n if (headerHeight !== this.headerRowHeight) this.headerRowHeight = headerHeight;\n const footerHeight = this.footerElement?.offsetHeight ?? 0;\n if (footerHeight !== this.footerRowHeight) this.footerRowHeight = footerHeight;\n\n const scrollBarHeight = outer.offsetHeight - outer.clientHeight;\n const scrollBarWidth = outer.offsetWidth - outer.clientWidth;\n if (scrollBarHeight !== this.scrollBarHeight) this.scrollBarHeight = scrollBarHeight;\n if (scrollBarWidth !== this.scrollBarWidth) this.scrollBarWidth = scrollBarWidth;\n const hasHorizontalScroll = outer.scrollWidth > outer.clientWidth;\n const hasVerticalScroll = outer.scrollHeight > outer.clientHeight;\n if (hasHorizontalScroll !== this.hasHorizontalScroll)\n this.hasHorizontalScroll = hasHorizontalScroll;\n if (hasVerticalScroll !== this.hasVerticalScroll) this.hasVerticalScroll = hasVerticalScroll;\n\n // useFinalGridDimensions: a wrapper height different from the content's\n // own height means something (height, flex parent, fullscreen) constrains it\n if (!this.grid.isFullScreen) {\n if (Math.round(rect.height) !== Math.round(layoutUnconstrainedHeight)) {\n if (this.constrainedHeight !== rect.height) this.constrainedHeight = rect.height;\n }\n }\n this.syncWindow();\n }\n\n setupOuter = modifier((element: HTMLElement) => {\n this.outerElement = element;\n this.scrollTop = element.scrollTop;\n this.scrollLeft = element.scrollLeft;\n const stop = observeResize(\n element.parentElement ? [element, element.parentElement] : [element],\n this.measure\n );\n afterRender(this, this.measure);\n return () => {\n stop();\n this.outerElement = null;\n };\n });\n\n private initialScrollApplied = false;\n\n /**\n * `virtualizationOptions.initialScrollTop/Left`, once rows can scroll, then\n * the first `onScroll` (react-window's `componentDidMount`).\n */\n private applyInitialScroll(): void {\n if (this.initialScrollApplied) return;\n this.initialScrollApplied = true;\n const outer = this.outerElement;\n const { initialScrollTop, initialScrollLeft } = this.grid.args.virtualizationOptions ?? {};\n if (outer && (typeof initialScrollTop === 'number' || typeof initialScrollLeft === 'number')) {\n if (typeof initialScrollLeft === 'number') outer.scrollLeft = initialScrollLeft;\n if (typeof initialScrollTop === 'number') outer.scrollTop = initialScrollTop;\n }\n this.notifyInitialScroll();\n // render the window at the initial position (a requested position past\n // the end reports the clamped one, like react-window's next scroll event)\n this.onScroll();\n }\n\n setupInner = modifier((element: HTMLElement) => {\n this.innerElement = element;\n afterRender(this, () => this.applyInitialScroll());\n // horizontal scrollbars appear/disappear when the inner width changes\n const stop = observeResize([element], this.measure);\n return () => {\n stop();\n this.innerElement = null;\n };\n });\n\n registerHeader = modifier((element: HTMLElement) => {\n this.headerElement = element;\n const stop = observeResize([element], this.measure);\n afterRender(this, this.measure);\n return () => {\n stop();\n if (this.headerElement === element) {\n this.headerElement = null;\n afterRender(this, this.measure);\n }\n };\n });\n\n registerFooter = modifier((element: HTMLElement) => {\n this.footerElement = element;\n const stop = observeResize([element], this.measure);\n afterRender(this, this.measure);\n return () => {\n stop();\n if (this.footerElement === element) {\n this.footerElement = null;\n afterRender(this, this.measure);\n }\n };\n });\n\n /* -------------------------------------------------------------------- */\n /* Scrolling cells into view */\n /* -------------------------------------------------------------------- */\n\n private isPointerDown = false;\n private pendingScroll = false;\n\n @action\n onPointerDown(): void {\n this.isPointerDown = true;\n const onPointerUp = (event: PointerEvent) => {\n this.isPointerDown = false;\n document.removeEventListener('pointerup', onPointerUp, true);\n if (!this.pendingScroll) return;\n this.pendingScroll = false;\n // only primary-button clicks; middle clicks scroll on Windows\n if (event.pointerType === 'mouse' && event.button !== 0) return;\n // skip if the interaction resulted in text being selected\n if (window.getSelection()?.type === 'Range') return;\n const focused = this.grid.focusedCell;\n if (focused) this.scrollCellIntoView({ rowIndex: focused[1], colIndex: focused[0] });\n };\n document.addEventListener('pointerup', onPointerUp, true);\n }\n\n onFocusedCellChange(cell: EuiDataGridFocusedCell): void {\n if (this.isPointerDown) {\n // defer the scroll decision to pointerup\n this.pendingScroll = true;\n return;\n }\n this.scrollCellIntoView({ rowIndex: cell[1], colIndex: cell[0] });\n }\n\n /**\n * Port of `useScrollCellIntoView`: keeps the cell fully visible, accounting\n * for the sticky header/footer and scrollbars. Positions come from the\n * row/column offsets, so cells outside the rendered window work too.\n */\n @action\n scrollCellIntoView({ rowIndex, colIndex }: { rowIndex: number; colIndex: number }): void {\n const outer = this.outerElement;\n if (!outer) return;\n if (!(this.hasVerticalScroll || this.hasHorizontalScroll)) return;\n\n const isStickyHeader = rowIndex === -1;\n const hasStickyFooter = this.hasFooter && !!this.grid.gridStyles.stickyFooter;\n const isStickyFooter = hasStickyFooter && rowIndex === this.visibleRowCount;\n const { scrollTop, scrollLeft, clientWidth, clientHeight } = outer;\n let adjustedScrollTop: number | undefined;\n let adjustedScrollLeft: number | undefined;\n\n const cellLeftPos = this.columnLeft(colIndex);\n const cellRightPos = cellLeftPos + (this.columnWidthList[colIndex] ?? 0);\n const rightWidthOutOfView = cellRightPos - (scrollLeft + clientWidth);\n if (rightWidthOutOfView > 0) adjustedScrollLeft = scrollLeft + rightWidthOutOfView;\n const leftWidthOutOfView = (adjustedScrollLeft ?? scrollLeft) - cellLeftPos;\n if (leftWidthOutOfView > 0) adjustedScrollLeft = cellLeftPos;\n\n if (!isStickyHeader && !isStickyFooter && rowIndex < this.visibleRowCount) {\n const headerRowHeight = this.headerOffset;\n const cellTopPos = headerRowHeight + this.rowTop(rowIndex);\n const cellBottomPos = cellTopPos + this.rowHeight(rowIndex);\n let bottomScrollBound = scrollTop + clientHeight;\n if (hasStickyFooter) bottomScrollBound -= this.footerRowHeight;\n const bottomHeightOutOfView = cellBottomPos - bottomScrollBound;\n if (bottomHeightOutOfView > 0) adjustedScrollTop = scrollTop + bottomHeightOutOfView;\n const topScrollBound = adjustedScrollTop ?? scrollTop + headerRowHeight;\n const topHeightOutOfView = topScrollBound - cellTopPos;\n if (topHeightOutOfView > 0) {\n adjustedScrollTop = Math.max(0, cellTopPos - headerRowHeight - ACTIONS_MENU_HEIGHT);\n }\n }\n\n if (adjustedScrollTop !== undefined || adjustedScrollLeft !== undefined) {\n // upstream calls react-window's `scrollTo` (a requested scroll); it\n // renders the target cell now instead of waiting for the scroll event\n this.scrollTo({\n scrollTop: adjustedScrollTop ?? scrollTop,\n scrollLeft: adjustedScrollLeft ?? scrollLeft\n });\n }\n }\n\n /* -------------------------------------------------------------------- */\n /* Layout shift compensation (`rowHeightsOptions.scrollAnchorRow`) */\n /* -------------------------------------------------------------------- */\n\n /** The row layout the grid last rendered with. */\n private layoutSnapshot: {\n offsets: Float64Array | null;\n defaultHeight: number;\n count: number;\n } | null = null;\n\n /**\n * Port of upstream `compensateForLayoutShift`: when rows above the anchor\n * row (the first or the middle visible row) change height, scroll by the\n * anchor row's vertical shift so the content in view stays put. Upstream\n * runs this from the first cell of each row; here it runs once per row\n * layout change, comparing the anchor row's top before and after.\n */\n compensateLayoutShift = modifier(\n (element: HTMLElement, [offsets, defaultHeight]: [Float64Array | null, number]) => {\n const count = this.visibleRowCount;\n const previous = this.layoutSnapshot;\n this.layoutSnapshot = { offsets, defaultHeight, count };\n const anchor = this.rowHeightsOptions.scrollAnchorRow;\n if (!anchor || !previous || previous.count !== count || count === 0) return;\n const topOf = (snapshot: NonNullable<typeof previous>, index: number) =>\n snapshot.offsets ? snapshot.offsets[index]! : index * snapshot.defaultHeight;\n // the visible rows of the previous layout at the current scroll position\n const scrollTop = element.scrollTop;\n const viewportBottom = scrollTop + Math.max(this.finalHeight - this.headerOffset, 0);\n let start = 0;\n while (start < count - 1 && topOf(previous, start + 1) <= scrollTop) start++;\n let stop = start;\n while (stop < count - 1 && topOf(previous, stop + 1) < viewportBottom) stop++;\n // upstream compares the center offset with the row index itself, which\n // only finds the center row when scrolled to the top; use the real center row\n const anchorRow = anchor === 'start' ? start : start + Math.floor((stop - start) / 2);\n const shift = topOf(this.layoutSnapshot, anchorRow) - topOf(previous, anchorRow);\n if (!shift || !Number.isFinite(shift)) return;\n element.scrollTop = scrollTop + shift;\n afterRender(this, this.onScroll);\n }\n );\n\n /* -------------------------------------------------------------------- */\n /* Imperative scrolling (react-window's grid API) */\n /* -------------------------------------------------------------------- */\n\n /** react-window `scrollTo`: offsets in px; a missing offset is kept. */\n @action\n scrollTo({ scrollLeft, scrollTop }: EuiDataGridScrollToProps = {}): void {\n const outer = this.outerElement;\n if (!outer) return;\n // react-window reports the requested offsets (only floored at 0) with\n // `scrollUpdateWasRequested: true`\n const state = this.scrollState;\n const left = scrollLeft !== undefined ? Math.max(0, scrollLeft) : state.scrollLeft;\n const top = scrollTop !== undefined ? Math.max(0, scrollTop) : state.scrollTop;\n outer.scrollTo({\n left: scrollLeft ?? outer.scrollLeft,\n top: scrollTop ?? outer.scrollTop\n });\n // reported after the DOM moved, like react-window's componentDidUpdate\n this.updateScrollState(left, top, true);\n // the new window now; a position past the end reports the clamped one\n this.onScroll();\n }\n\n /** react-window `scrollToItem`: brings a row and/or column into view. */\n @action\n scrollToItem({ align = 'auto', columnIndex, rowIndex }: EuiDataGridScrollToItemProps = {}): void {\n const outer = this.outerElement;\n if (!outer) return;\n const columnCount = this.grid.visibleColCount;\n const rowCount = this.visibleRowCount;\n const height = this.finalHeight;\n const width = this.finalWidth;\n if (rowIndex !== undefined && rowCount > 0) {\n // react-window lays out the rows up to the target first\n if (this.estimatedRowHeight !== undefined)\n this.measureRowsThrough(Math.max(0, Math.min(rowIndex, rowCount - 1)));\n }\n const totalHeight = this.scrollableRowsHeight;\n const totalWidth = this.totalWidth;\n // react-window adds the scrollbar of the other axis to the item's minimum offset\n const horizontalScrollbarSize = totalWidth > width ? this.scrollBarHeight : 0;\n const verticalScrollbarSize = totalHeight > height ? this.scrollBarWidth : 0;\n let scrollLeft: number | undefined;\n let scrollTop: number | undefined;\n if (columnIndex !== undefined && columnCount > 0) {\n const index = Math.max(0, Math.min(columnIndex, columnCount - 1));\n scrollLeft = getOffsetForIndexAndAlignment({\n align,\n size: width,\n totalSize: totalWidth,\n offset: this.columnLeft(index),\n itemSize: this.columnWidthList[index] ?? 0,\n scrollOffset: outer.scrollLeft,\n scrollbarSize: verticalScrollbarSize\n });\n }\n if (rowIndex !== undefined && rowCount > 0) {\n const index = Math.max(0, Math.min(rowIndex, rowCount - 1));\n scrollTop = getOffsetForIndexAndAlignment({\n align,\n size: height,\n totalSize: totalHeight,\n offset: this.rowTop(index),\n itemSize: this.rowHeight(index),\n scrollOffset: outer.scrollTop,\n scrollbarSize: horizontalScrollbarSize\n });\n }\n this.scrollTo({ scrollLeft, scrollTop });\n }\n\n /* -------------------------------------------------------------------- */\n /* Styles */\n /* -------------------------------------------------------------------- */\n\n @cached\n get styles() {\n const context = getEuiThemeContext(this);\n return {\n context,\n body: useEuiBorealisStyles(context, euiDataGridBodyStyles),\n scroll: useEuiBorealisStyles(context, euiDataGridScrollBarStyles)\n };\n }\n\n @cached\n get outerClass(): string {\n const { context, body } = this.styles;\n const className = this.grid.args.virtualizationOptions?.className;\n return `euiDataGrid__virtualized ${euiClass(context, body.euiDataGridBody, body.virtualized)}${className ? ` ${className}` : ''}`;\n }\n\n /** `virtualizationOptions.style`, merged over the body's own styles (like react-window). */\n @cached\n get extraOuterStyle(): string {\n const style = this.grid.args.virtualizationOptions?.style;\n if (!style) return '';\n return Object.entries(style)\n .map(([key, value]) => {\n const property = key.startsWith('--') ? key : key.replace(/[A-Z]/g, (m) => `-${m.toLowerCase()}`);\n const unitless = typeof value !== 'number' || UNITLESS.has(property);\n return `;${property}:${unitless ? value : `${value}px`}`;\n })\n .join('');\n }\n\n get outerStyle() {\n const height = this.finalHeight;\n const width = this.finalWidth;\n return htmlSafe(\n `position:relative;height:${height}px;width:${width ? `${width}px` : '100%'};overflow:auto;will-change:transform;direction:ltr${this.extraOuterStyle}`\n );\n }\n\n get innerStyle() {\n return htmlSafe(\n `position:relative;height:${this.scrollableRowsHeight + this.headerOffset}px;width:${this.totalWidth}px`\n );\n }\n\n get showScrollOverlay(): boolean {\n if (!this.hasHorizontalScroll && !this.hasVerticalScroll) return false;\n return this.grid.gridStyles.border !== 'none';\n }\n\n @cached\n get scrollOverlayClasses() {\n const { context, scroll } = this.styles;\n return {\n overlay: `euiDataGrid__scrollOverlay ${euiClass(context, scroll.euiDataGrid__scrollOverlay)}`,\n bottom: `euiDataGrid__scrollBarOverlayBottom ${euiClass(context, scroll.euiDataGrid__scrollBarOverlayBottom)}`,\n right: `euiDataGrid__scrollBarOverlayRight ${euiClass(context, scroll.euiDataGrid__scrollBarOverlayRight)}`\n };\n }\n\n get scrollBarBottomStyle() {\n return htmlSafe(`inset-block-end:${this.scrollBarHeight}px`);\n }\n\n get scrollBarRightStyle() {\n return htmlSafe(\n `inset-block-start:0;inset-block-end:${this.scrollBarHeight}px;inset-inline-end:${this.scrollBarWidth}px`\n );\n }\n\n <template>\n <div\n class={{this.outerClass}}\n style={{this.outerStyle}}\n {{on \"scroll\" this.onScroll}}\n {{on \"pointerdown\" this.onPointerDown}}\n {{this.setupOuter}}\n {{this.itemsRendered this.rowWindow this.columnWindow}}\n {{this.compensateLayoutShift this.rowOffsets this.defaultRowHeight}}\n >\n {{#if this.isMeasured}}\n <div style={{this.innerStyle}} {{this.setupInner}}>\n {{#if this.showHeader}}\n <EuiDataGridHeaderRow @grid={{@grid}} @body={{this}} {{this.registerHeader}}>\n <:controlHeaderCell as |cell|>{{yield cell to=\"controlHeaderCell\"}}</:controlHeaderCell>\n </EuiDataGridHeaderRow>\n {{/if}}\n {{#each this.renderedRows key=\"@identity\" as |visibleRowIndex|}}\n <EuiDataGridRow\n @grid={{@grid}}\n @body={{this}}\n @visibleRowIndex={{visibleRowIndex}}\n @hasCellPopoverBlock={{@hasCellPopoverBlock}}\n >\n <:cell as |cell|>{{yield cell to=\"cell\"}}</:cell>\n <:cellPopover as |popover|>{{yield popover to=\"cellPopover\"}}</:cellPopover>\n <:controlCell as |cell|>{{yield cell to=\"controlCell\"}}</:controlCell>\n </EuiDataGridRow>\n {{/each}}\n </div>\n {{#if this.hasFooter}}\n <EuiDataGridFooterRow\n @grid={{@grid}}\n @body={{this}}\n @hasCellPopoverBlock={{@hasCellPopoverBlock}}\n {{this.registerFooter}}\n >\n <:footerCell as |cell|>{{yield cell to=\"footerCell\"}}</:footerCell>\n <:cellPopover as |popover|>{{yield popover to=\"cellPopover\"}}</:cellPopover>\n <:controlFooterCell as |cell|>{{yield cell to=\"controlFooterCell\"}}</:controlFooterCell>\n </EuiDataGridFooterRow>\n {{/if}}\n {{/if}}\n </div>\n {{#if this.showScrollOverlay}}\n <div class={{this.scrollOverlayClasses.overlay}} role=\"presentation\">\n {{#if this.scrollBarHeight}}\n <div\n class={{this.scrollOverlayClasses.bottom}}\n style={{this.scrollBarBottomStyle}}\n ></div>\n {{/if}}\n {{#if this.scrollBarWidth}}\n <div\n class={{this.scrollOverlayClasses.right}}\n style={{this.scrollBarRightStyle}}\n ></div>\n {{/if}}\n </div>\n {{/if}}\n </template>\n}\n"],"names":["clampScrollOffset","offset","max","Math","min","UNITLESS","Set","ACTIONS_MENU_HEIGHT","getOffsetForIndexAndAlignment","align","size","totalSize","itemSize","scrollOffset","scrollbarSize","maxOffset","minOffset","round","findIndex","offsets","count","value","low","high","mid","EuiDataGridBody","EuiDataGridBodyBase","isVirtualized","outerElement","innerElement","headerElement","footerElement","g","prototype","tracked","i","undefined","scrollTop","scrollLeft","availableWidth","outerClientWidth","wrapperWidth","columnOffsets","widths","columnWidthList","Array","length","n","cached","totalWidth","columnLeft","colIndex","visibleRowCount","grid","visibleRows","rowOffsets","rowHeightsVersion","hasUniformRowHeights","Float64Array","getRowHeight","rowTop","visibleRowIndex","defaultRowHeight","rowHeight","totalRowsHeight","estimatedRowHeight","estimate","args","virtualizationOptions","measuredRowCount","measuredRowLayout","measureRowsThrough","syncMeasuredRowLayout","layout","scrollableRowsHeight","rowWindow","stop","measured","rowAt","floor","showHeader","headerOffset","headerRowHeight","unconstrainedHeight","footerRowHeight","scrollBarHeight","finalHeight","isFullScreen","wrapperHeight","constrainedHeight","finalWidth","isMeasured","overscanRowCount","overscanColumnCount","computeRowWindow","start","visibleStart","visibleStop","viewport","top","bottom","overscan","computeColumnWindow","visibleColCount","left","scrollVersion","columnWindow","renderedRows","rows","push","renderedColumns","columns","visibleRowStartIndex","onScroll","outer","syncWindow","scrollHeight","scrollWidth","clientHeight","clientWidth","updateScrollState","action","current","scrollState","horizontalScrollDirection","verticalScrollDirection","scrollUpdateWasRequested","requested","previous","notifyScroll","notifyInitialScroll","initialScrollTop","initialScrollLeft","isScrollableVertical","isScrollableHorizontal","isScrolledToBlockStart","isScrolledToInlineStart","isScrolledToBlockEnd","isScrolledToInlineEnd","itemsRendered","modifier","_element","onItemsRendered","afterRender","overscanRowStartIndex","overscanRowStopIndex","overscanColumnStartIndex","overscanColumnStopIndex","visibleRowStopIndex","visibleColumnStartIndex","visibleColumnStopIndex","measure","isDestroying","isDestroyed","wrapper","parentElement","layoutUnconstrainedHeight","rect","width","offsetWidth","height","offsetHeight","headerHeight","footerHeight","scrollBarWidth","hasHorizontalScroll","hasVerticalScroll","setupOuter","element","observeResize","initialScrollApplied","applyInitialScroll","setupInner","registerHeader","registerFooter","isPointerDown","pendingScroll","onPointerDown","onPointerUp","event","document","removeEventListener","pointerType","button","window","getSelection","type","focused","focusedCell","scrollCellIntoView","rowIndex","addEventListener","onFocusedCellChange","cell","isStickyHeader","hasStickyFooter","hasFooter","gridStyles","stickyFooter","isStickyFooter","adjustedScrollTop","adjustedScrollLeft","cellLeftPos","cellRightPos","rightWidthOutOfView","leftWidthOutOfView","cellTopPos","cellBottomPos","bottomScrollBound","bottomHeightOutOfView","topScrollBound","topHeightOutOfView","scrollTo","layoutSnapshot","compensateLayoutShift","defaultHeight","anchor","rowHeightsOptions","scrollAnchorRow","topOf","snapshot","index","viewportBottom","anchorRow","shift","Number","isFinite","state","scrollToItem","columnIndex","columnCount","rowCount","totalHeight","horizontalScrollbarSize","verticalScrollbarSize","styles","context","getEuiThemeContext","body","useEuiBorealisStyles","euiDataGridBodyStyles","scroll","euiDataGridScrollBarStyles","outerClass","className","euiClass","euiDataGridBody","virtualized","extraOuterStyle","style","Object","entries","map","key","property","startsWith","replace","m","toLowerCase","unitless","has","join","outerStyle","htmlSafe","innerStyle","showScrollOverlay","border","scrollOverlayClasses","overlay","euiDataGrid__scrollOverlay","euiDataGrid__scrollBarOverlayBottom","right","euiDataGrid__scrollBarOverlayRight","scrollBarBottomStyle","scrollBarRightStyle","setComponentTemplate","precompileTemplate","strictMode","scope","on","EuiDataGridHeaderRow","EuiDataGridRow","EuiDataGridFooterRow"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"body.js","sources":["../../../src/components/eui-data-grid/body.gts"],"sourcesContent":["import { cached, tracked } from '@glimmer/tracking';\nimport { action } from '@ember/object';\nimport { on } from '@ember/modifier';\nimport { htmlSafe } from '@ember/template';\n\nimport { modifier } from 'ember-modifier';\n\nimport { getEuiThemeContext } from '../../utils/emotion/consume.ts';\nimport { euiClass, useEuiBorealisStyles } from '../../utils/eui/styles.ts';\nimport {\n euiDataGridBodyStyles,\n euiDataGridScrollBarStyles\n} from '../../utils/eui/styles.generated.ts';\nimport { afterRender, observeResize } from '../../utils/data-grid/scheduling.ts';\nimport EuiDataGridBodyBase from './body-base.ts';\nimport EuiDataGridFooterRow from './footer-row.gts';\nimport EuiDataGridHeaderRow from './header-row.gts';\nimport EuiDataGridRow from './row.gts';\n\nimport type { EuiDataGridBodyBaseArgs } from './body-base.ts';\nimport type { EuiDataGridSignature } from '../eui-data-grid.gts';\nimport type {\n EuiDataGridFocusedCell,\n EuiDataGridScrollToItemProps,\n EuiDataGridScrollToProps\n} from '../../utils/data-grid/types.ts';\n\nconst clampScrollOffset = (offset: number, max: number) => Math.max(0, Math.min(offset, max));\n\nconst UNITLESS = new Set(['opacity', 'z-index', 'flex-grow', 'flex-shrink', 'line-height', 'order']);\n// Offset for the cell actions menu when scrolling a cell below the sticky header\nconst ACTIONS_MENU_HEIGHT = 21;\n\ninterface Window {\n start: number;\n stop: number;\n}\n\nexport interface EuiDataGridBodySignature {\n Args: EuiDataGridBodyBaseArgs & {\n hasCellPopoverBlock?: boolean;\n };\n Blocks: Pick<\n EuiDataGridSignature['Blocks'],\n | 'cell'\n | 'cellPopover'\n | 'footerCell'\n | 'controlHeaderCell'\n | 'controlCell'\n | 'controlFooterCell'\n >;\n}\n\n/** Port of react-window's `getOffsetForIndexAndAlignment` (VariableSizeGrid). */\nfunction getOffsetForIndexAndAlignment({\n align,\n size,\n totalSize,\n offset,\n itemSize,\n scrollOffset,\n scrollbarSize\n}: {\n align: NonNullable<EuiDataGridScrollToItemProps['align']>;\n size: number;\n totalSize: number;\n offset: number;\n itemSize: number;\n scrollOffset: number;\n scrollbarSize: number;\n}): number {\n const maxOffset = Math.max(0, Math.min(totalSize - size, offset));\n const minOffset = Math.max(0, offset - size + scrollbarSize + itemSize);\n if (align === 'smart') {\n align =\n scrollOffset >= minOffset - size && scrollOffset <= maxOffset + size ? 'auto' : 'center';\n }\n switch (align) {\n case 'start':\n return maxOffset;\n case 'end':\n return minOffset;\n case 'center':\n return Math.round(minOffset + (maxOffset - minOffset) / 2);\n case 'auto':\n default:\n if (scrollOffset >= minOffset && scrollOffset <= maxOffset) return scrollOffset;\n if (minOffset > maxOffset) return minOffset; // the item is larger than the viewport\n if (scrollOffset < minOffset) return minOffset;\n return maxOffset;\n }\n}\n\n/** Binary search: index of the last offset `<= value`. */\nfunction findIndex(offsets: ArrayLike<number>, count: number, value: number): number {\n let low = 0;\n let high = count - 1;\n while (low < high) {\n const mid = (low + high + 1) >> 1;\n if (offsets[mid]! <= value) low = mid;\n else high = mid - 1;\n }\n return Math.max(0, low);\n}\n\n/**\n * The virtualized grid body: a scroll container whose inner element is sized\n * to all rows/columns, a sticky header row, absolutely positioned rows and a\n * sticky footer row. Only the rows/columns intersecting the viewport (plus\n * overscan) are rendered. The rendered window is recomputed on scroll but\n * only invalidates rendering when its integer bounds change.\n */\nexport default class EuiDataGridBody extends EuiDataGridBodyBase<EuiDataGridBodySignature> {\n readonly isVirtualized = true;\n\n outerElement: HTMLElement | null = null;\n innerElement: HTMLElement | null = null;\n headerElement: HTMLElement | null = null;\n footerElement: HTMLElement | null = null;\n\n /* measurements -------------------------------------------------------- */\n @tracked wrapperWidth = 0;\n @tracked wrapperHeight = 0;\n @tracked outerClientWidth = 0;\n @tracked headerRowHeight = 0;\n @tracked footerRowHeight = 0;\n @tracked scrollBarHeight = 0;\n @tracked scrollBarWidth = 0;\n @tracked hasVerticalScroll = false;\n @tracked hasHorizontalScroll = false;\n /** Height when the wrapper constrains the grid (set like upstream's useFinalGridDimensions). */\n @tracked constrainedHeight: number | undefined = undefined;\n\n /* scrolling ----------------------------------------------------------- */\n private scrollTop = 0;\n private scrollLeft = 0;\n /** Bumped only when the rendered window must change. */\n @tracked private scrollVersion = 0;\n\n /* -------------------------------------------------------------------- */\n /* Column widths */\n /* -------------------------------------------------------------------- */\n\n get availableWidth(): number {\n return this.outerClientWidth || this.wrapperWidth;\n }\n\n @cached\n get columnOffsets(): number[] {\n const widths = this.columnWidthList;\n const offsets = new Array<number>(widths.length + 1);\n offsets[0] = 0;\n for (let i = 0; i < widths.length; i++) offsets[i + 1] = offsets[i]! + widths[i]!;\n return offsets;\n }\n\n get totalWidth(): number {\n const offsets = this.columnOffsets;\n return offsets[offsets.length - 1]!;\n }\n\n columnLeft(colIndex: number): number {\n return this.columnOffsets[colIndex] ?? 0;\n }\n\n /* -------------------------------------------------------------------- */\n /* Row heights */\n /* -------------------------------------------------------------------- */\n\n get visibleRowCount(): number {\n return this.grid.visibleRows.visibleRowCount;\n }\n\n /** Prefix sums of row heights, or null for uniform rows. */\n @cached\n get rowOffsets(): Float64Array | null {\n void this.rowHeightsVersion;\n if (this.hasUniformRowHeights) return null;\n const count = this.visibleRowCount;\n const offsets = new Float64Array(count + 1);\n for (let i = 0; i < count; i++) offsets[i + 1] = offsets[i]! + this.getRowHeight(i);\n return offsets;\n }\n\n rowTop(visibleRowIndex: number): number {\n const offsets = this.rowOffsets;\n return offsets ? offsets[visibleRowIndex]! : visibleRowIndex * this.defaultRowHeight;\n }\n\n rowHeight(visibleRowIndex: number): number {\n const offsets = this.rowOffsets;\n return offsets\n ? offsets[visibleRowIndex + 1]! - offsets[visibleRowIndex]!\n : this.defaultRowHeight;\n }\n\n get totalRowsHeight(): number {\n const offsets = this.rowOffsets;\n return offsets ? offsets[this.visibleRowCount]! : this.visibleRowCount * this.defaultRowHeight;\n }\n\n /**\n * `virtualizationOptions.estimatedRowHeight` (react-window): rows past the\n * furthest row laid out so far count with the estimated height.\n */\n get estimatedRowHeight(): number | undefined {\n const estimate = this.grid.args.virtualizationOptions?.estimatedRowHeight;\n return typeof estimate === 'number' && estimate >= 0 ? estimate : undefined;\n }\n\n /** react-window's `lastMeasuredRowIndex` + 1; reset when the row layout changes. */\n private measuredRowCount = 0;\n private measuredRowLayout: unknown = undefined;\n\n /** Marks the rows up to `visibleRowIndex` as laid out (react-window `getItemMetadata`). */\n private measureRowsThrough(visibleRowIndex: number): void {\n this.syncMeasuredRowLayout();\n this.measuredRowCount = Math.min(\n this.visibleRowCount,\n Math.max(this.measuredRowCount, visibleRowIndex + 1)\n );\n }\n\n private syncMeasuredRowLayout(): void {\n const layout = this.rowOffsets ?? this.defaultRowHeight;\n if (layout !== this.measuredRowLayout) {\n // react-window `resetAfterRowIndex(0)`\n this.measuredRowLayout = layout;\n this.measuredRowCount = 0;\n }\n }\n\n /**\n * Height of the rows in the scrollable area: exact, or with\n * `estimatedRowHeight` react-window's estimate (rows laid out so far plus\n * the estimate for the others).\n */\n get scrollableRowsHeight(): number {\n const estimate = this.estimatedRowHeight;\n if (estimate === undefined) return this.totalRowsHeight;\n const count = this.visibleRowCount;\n this.measureRowsThrough(this.rowWindow.stop - 1);\n const measured = this.measuredRowCount;\n return this.rowTop(measured) + (count - measured) * estimate;\n }\n\n /** Index of the visible row at a vertical offset (row coordinates). */\n rowAt(offset: number): number {\n const count = this.visibleRowCount;\n if (count === 0) return 0;\n const offsets = this.rowOffsets;\n if (!offsets) return Math.min(count - 1, Math.max(0, Math.floor(offset / this.defaultRowHeight)));\n return Math.min(count - 1, findIndex(offsets, count, offset));\n }\n\n /* -------------------------------------------------------------------- */\n /* Grid height & width */\n /* -------------------------------------------------------------------- */\n\n get showHeader(): boolean {\n return this.grid.showHeader;\n }\n\n get headerOffset(): number {\n return this.showHeader ? this.headerRowHeight : 0;\n }\n\n /** Total possible height: every row of the page, header, footer and scrollbar. */\n get unconstrainedHeight(): number {\n return (\n this.totalRowsHeight +\n this.headerOffset +\n this.footerRowHeight +\n this.scrollBarHeight\n );\n }\n\n get finalHeight(): number {\n if (this.grid.isFullScreen) return this.wrapperHeight;\n return this.constrainedHeight || this.unconstrainedHeight;\n }\n\n get finalWidth(): number {\n return this.wrapperWidth;\n }\n\n get isMeasured(): boolean {\n return this.finalWidth > 0;\n }\n\n /* -------------------------------------------------------------------- */\n /* Rendered window */\n /* -------------------------------------------------------------------- */\n\n get overscanRowCount(): number {\n return this.grid.args.virtualizationOptions?.overscanRowCount ?? 1;\n }\n\n get overscanColumnCount(): number {\n return this.grid.args.virtualizationOptions?.overscanColumnCount ?? 1;\n }\n\n private computeRowWindow(scrollTop: number): Window & { visibleStart: number; visibleStop: number } {\n const count = this.visibleRowCount;\n if (count === 0) return { start: 0, stop: 0, visibleStart: 0, visibleStop: 0 };\n const viewport = Math.max(this.finalHeight - this.headerOffset, 0);\n const top = Math.max(0, scrollTop);\n const visibleStart = this.rowAt(top);\n let visibleStop = visibleStart;\n const bottom = top + viewport;\n while (visibleStop < count - 1 && this.rowTop(visibleStop + 1) < bottom) visibleStop++;\n const overscan = this.overscanRowCount;\n return {\n start: Math.max(0, visibleStart - overscan),\n stop: Math.min(count, visibleStop + 1 + overscan),\n visibleStart,\n visibleStop\n };\n }\n\n private computeColumnWindow(scrollLeft: number): Window & { visibleStart: number; visibleStop: number } {\n const count = this.grid.visibleColCount;\n if (count === 0) return { start: 0, stop: 0, visibleStart: 0, visibleStop: 0 };\n const offsets = this.columnOffsets;\n const viewport = this.outerClientWidth || this.finalWidth;\n const left = Math.max(0, scrollLeft);\n const visibleStart = Math.min(count - 1, findIndex(offsets, count, left));\n let visibleStop = visibleStart;\n while (visibleStop < count - 1 && offsets[visibleStop + 1]! < left + viewport) visibleStop++;\n const overscan = this.overscanColumnCount;\n return {\n start: Math.max(0, visibleStart - overscan),\n stop: Math.min(count, visibleStop + 1 + overscan),\n visibleStart,\n visibleStop\n };\n }\n\n @cached\n get rowWindow(): Window {\n void this.scrollVersion;\n const { start, stop } = this.computeRowWindow(this.scrollTop);\n return { start, stop };\n }\n\n @cached\n get columnWindow(): Window {\n void this.scrollVersion;\n const { start, stop } = this.computeColumnWindow(this.scrollLeft);\n return { start, stop };\n }\n\n @cached\n get renderedRows(): number[] {\n if (!this.isMeasured) return [];\n // like upstream, wait for the header height before positioning rows\n if (this.showHeader && this.headerRowHeight === 0) return [];\n const { start, stop } = this.rowWindow;\n const rows: number[] = [];\n for (let i = start; i < stop; i++) rows.push(i);\n return rows;\n }\n\n @cached\n get renderedColumns(): number[] {\n const { start, stop } = this.columnWindow;\n const columns: number[] = [];\n for (let i = start; i < stop; i++) columns.push(i);\n return columns;\n }\n\n /** First fully visible row (used by ArrowDown from the sticky header). */\n get visibleRowStartIndex(): number {\n return this.computeRowWindow(this.scrollTop).visibleStart;\n }\n\n /**\n * The body's scroll element scrolled (a `scroll` event), or the grid\n * moved it and needs the new window now.\n */\n @action\n onScroll(): void {\n const outer = this.outerElement;\n if (!outer) return;\n this.scrollTop = outer.scrollTop;\n this.scrollLeft = outer.scrollLeft;\n this.syncWindow();\n // react-window `_onScroll`: positions clamped to the scroll range (elastic\n // scrolling, fractional pixels); an unchanged position reports nothing\n const { scrollTop, scrollLeft, scrollHeight, scrollWidth, clientHeight, clientWidth } = outer;\n this.updateScrollState(\n clampScrollOffset(scrollLeft, scrollWidth - clientWidth),\n clampScrollOffset(scrollTop, scrollHeight - clientHeight),\n false\n );\n }\n\n /** Re-render only if the integer window bounds changed. */\n private syncWindow(): void {\n const rows = this.computeRowWindow(this.scrollTop);\n const columns = this.computeColumnWindow(this.scrollLeft);\n const current = { rows: this.rowWindow, columns: this.columnWindow };\n if (\n rows.start !== current.rows.start ||\n rows.stop !== current.rows.stop ||\n columns.start !== current.columns.start ||\n columns.stop !== current.columns.stop\n ) {\n this.scrollVersion++;\n }\n }\n\n /**\n * react-window's scroll state: the last reported offsets, directions and\n * whether the grid requested the scroll. `onScroll` is called when it\n * changes (react-window memoizes the callback on these values).\n */\n private scrollState: {\n scrollLeft: number;\n scrollTop: number;\n horizontalScrollDirection: 'forward' | 'backward';\n verticalScrollDirection: 'forward' | 'backward';\n scrollUpdateWasRequested: boolean;\n } = {\n scrollLeft: 0,\n scrollTop: 0,\n horizontalScrollDirection: 'forward',\n verticalScrollDirection: 'forward',\n scrollUpdateWasRequested: false\n };\n\n private updateScrollState(scrollLeft: number, scrollTop: number, requested: boolean): void {\n const previous = this.scrollState;\n if (previous.scrollLeft === scrollLeft && previous.scrollTop === scrollTop) return;\n this.scrollState = {\n scrollLeft,\n scrollTop,\n horizontalScrollDirection: previous.scrollLeft < scrollLeft ? 'forward' : 'backward',\n verticalScrollDirection: previous.scrollTop < scrollTop ? 'forward' : 'backward',\n scrollUpdateWasRequested: requested\n };\n this.notifyScroll();\n }\n\n /** react-window calls `onScroll` once when the grid mounts. */\n private notifyInitialScroll(): void {\n const { initialScrollTop, initialScrollLeft } = this.grid.args.virtualizationOptions ?? {};\n this.scrollState = {\n ...this.scrollState,\n scrollLeft: typeof initialScrollLeft === 'number' ? initialScrollLeft : 0,\n scrollTop: typeof initialScrollTop === 'number' ? initialScrollTop : 0\n };\n this.notifyScroll();\n }\n\n /** Upstream's `onScroll` wrapper: react-window's arguments plus the DOM's. */\n private notifyScroll(): void {\n const onScroll = this.grid.args.virtualizationOptions?.onScroll;\n const outer = this.outerElement;\n if (typeof onScroll !== 'function' || !outer) return;\n const { scrollTop, scrollLeft, scrollHeight, scrollWidth, clientHeight, clientWidth } =\n outer;\n const isScrollableVertical = scrollHeight > clientHeight;\n const isScrollableHorizontal = scrollWidth > clientWidth;\n const isScrolledToBlockStart = scrollTop === 0;\n const isScrolledToInlineStart = scrollLeft === 0;\n const { horizontalScrollDirection, verticalScrollDirection, scrollUpdateWasRequested } =\n this.scrollState;\n onScroll({\n horizontalScrollDirection,\n verticalScrollDirection,\n scrollUpdateWasRequested,\n scrollTop,\n scrollLeft,\n scrollHeight,\n scrollWidth,\n clientHeight,\n clientWidth,\n isScrolledToBlockStart,\n isScrolledToBlockEnd:\n isScrollableVertical &&\n !isScrolledToBlockStart &&\n scrollHeight - scrollTop <= clientHeight,\n isScrolledToInlineStart,\n isScrolledToInlineEnd:\n isScrollableHorizontal &&\n !isScrolledToInlineStart &&\n scrollWidth - scrollLeft <= clientWidth\n });\n }\n\n /** Reports the rendered window like react-window's `onItemsRendered`. */\n itemsRendered = modifier(\n (_element: HTMLElement, [rows, columns]: [Window, Window]) => {\n const onItemsRendered = this.grid.args.virtualizationOptions?.onItemsRendered;\n if (!onItemsRendered || !this.isMeasured) return;\n const rowWindow = this.computeRowWindow(this.scrollTop);\n const columnWindow = this.computeColumnWindow(this.scrollLeft);\n // reported after rendering, so consumers can update their own state\n afterRender(this, () => onItemsRendered({\n overscanRowStartIndex: rows.start,\n overscanRowStopIndex: Math.max(rows.start, rows.stop - 1),\n overscanColumnStartIndex: columns.start,\n overscanColumnStopIndex: Math.max(columns.start, columns.stop - 1),\n visibleRowStartIndex: rowWindow.visibleStart,\n visibleRowStopIndex: rowWindow.visibleStop,\n visibleColumnStartIndex: columnWindow.visibleStart,\n visibleColumnStopIndex: columnWindow.visibleStop\n }));\n }\n );\n\n /* -------------------------------------------------------------------- */\n /* Measuring */\n /* -------------------------------------------------------------------- */\n\n @action\n measure(): void {\n if (this.isDestroying || this.isDestroyed) return;\n const outer = this.outerElement;\n const wrapper = outer?.parentElement;\n if (!outer || !wrapper) return;\n // the height the current layout was rendered with\n const layoutUnconstrainedHeight = this.unconstrainedHeight;\n // layout sizes (offset*), unaffected by CSS transforms on ancestors\n const rect = { width: wrapper.offsetWidth, height: wrapper.offsetHeight };\n if (rect.width !== this.wrapperWidth) this.wrapperWidth = rect.width;\n if (rect.height !== this.wrapperHeight) this.wrapperHeight = rect.height;\n if (outer.clientWidth !== this.outerClientWidth && outer.clientWidth > 0)\n this.outerClientWidth = outer.clientWidth;\n\n const headerHeight = this.headerElement?.offsetHeight ?? 0;\n if (headerHeight !== this.headerRowHeight) this.headerRowHeight = headerHeight;\n const footerHeight = this.footerElement?.offsetHeight ?? 0;\n if (footerHeight !== this.footerRowHeight) this.footerRowHeight = footerHeight;\n\n const scrollBarHeight = outer.offsetHeight - outer.clientHeight;\n const scrollBarWidth = outer.offsetWidth - outer.clientWidth;\n if (scrollBarHeight !== this.scrollBarHeight) this.scrollBarHeight = scrollBarHeight;\n if (scrollBarWidth !== this.scrollBarWidth) this.scrollBarWidth = scrollBarWidth;\n const hasHorizontalScroll = outer.scrollWidth > outer.clientWidth;\n const hasVerticalScroll = outer.scrollHeight > outer.clientHeight;\n if (hasHorizontalScroll !== this.hasHorizontalScroll)\n this.hasHorizontalScroll = hasHorizontalScroll;\n if (hasVerticalScroll !== this.hasVerticalScroll) this.hasVerticalScroll = hasVerticalScroll;\n\n // useFinalGridDimensions: a wrapper height different from the content's\n // own height means something (height, flex parent, fullscreen) constrains it\n if (!this.grid.isFullScreen) {\n if (Math.round(rect.height) !== Math.round(layoutUnconstrainedHeight)) {\n if (this.constrainedHeight !== rect.height) this.constrainedHeight = rect.height;\n }\n }\n this.syncWindow();\n }\n\n setupOuter = modifier((element: HTMLElement) => {\n this.outerElement = element;\n this.scrollTop = element.scrollTop;\n this.scrollLeft = element.scrollLeft;\n const stop = observeResize(\n element.parentElement ? [element, element.parentElement] : [element],\n this.measure\n );\n afterRender(this, this.measure);\n return () => {\n stop();\n this.outerElement = null;\n };\n });\n\n private initialScrollApplied = false;\n\n /**\n * `virtualizationOptions.initialScrollTop/Left`, once rows can scroll, then\n * the first `onScroll` (react-window's `componentDidMount`).\n */\n private applyInitialScroll(): void {\n if (this.initialScrollApplied) return;\n this.initialScrollApplied = true;\n const outer = this.outerElement;\n const { initialScrollTop, initialScrollLeft } = this.grid.args.virtualizationOptions ?? {};\n if (outer && (typeof initialScrollTop === 'number' || typeof initialScrollLeft === 'number')) {\n if (typeof initialScrollLeft === 'number') outer.scrollLeft = initialScrollLeft;\n if (typeof initialScrollTop === 'number') outer.scrollTop = initialScrollTop;\n }\n this.notifyInitialScroll();\n // render the window at the initial position (a requested position past\n // the end reports the clamped one, like react-window's next scroll event)\n this.onScroll();\n }\n\n setupInner = modifier((element: HTMLElement) => {\n this.innerElement = element;\n afterRender(this, () => this.applyInitialScroll());\n // horizontal scrollbars appear/disappear when the inner width changes\n const stop = observeResize([element], this.measure);\n return () => {\n stop();\n this.innerElement = null;\n };\n });\n\n registerHeader = modifier((element: HTMLElement) => {\n this.headerElement = element;\n const stop = observeResize([element], this.measure);\n afterRender(this, this.measure);\n return () => {\n stop();\n if (this.headerElement === element) {\n this.headerElement = null;\n afterRender(this, this.measure);\n }\n };\n });\n\n registerFooter = modifier((element: HTMLElement) => {\n this.footerElement = element;\n const stop = observeResize([element], this.measure);\n afterRender(this, this.measure);\n return () => {\n stop();\n if (this.footerElement === element) {\n this.footerElement = null;\n afterRender(this, this.measure);\n }\n };\n });\n\n /* -------------------------------------------------------------------- */\n /* Scrolling cells into view */\n /* -------------------------------------------------------------------- */\n\n private isPointerDown = false;\n private pendingScroll = false;\n\n private stopPointerTracking: (() => void) | undefined;\n\n willDestroy(): void {\n super.willDestroy();\n this.stopPointerTracking?.();\n }\n\n @action\n onPointerDown(): void {\n this.isPointerDown = true;\n this.stopPointerTracking?.();\n const onPointerUp = (event: PointerEvent) => {\n this.isPointerDown = false;\n this.stopPointerTracking?.();\n if (!this.pendingScroll) return;\n this.pendingScroll = false;\n // only primary-button clicks; middle clicks scroll on Windows\n if (event.pointerType === 'mouse' && event.button !== 0) return;\n // skip if the interaction resulted in text being selected\n if (window.getSelection()?.type === 'Range') return;\n const focused = this.grid.focusedCell;\n if (focused) this.scrollCellIntoView({ rowIndex: focused[1], colIndex: focused[0] });\n };\n const onCancel = () => {\n // aborted gesture: nothing to scroll to\n this.pendingScroll = false;\n this.isPointerDown = false;\n this.stopPointerTracking?.();\n };\n document.addEventListener('pointerup', onPointerUp, true);\n document.addEventListener('pointercancel', onCancel, true);\n window.addEventListener('blur', onCancel);\n this.stopPointerTracking = () => {\n document.removeEventListener('pointerup', onPointerUp, true);\n document.removeEventListener('pointercancel', onCancel, true);\n window.removeEventListener('blur', onCancel);\n this.stopPointerTracking = undefined;\n };\n }\n\n onFocusedCellChange(cell: EuiDataGridFocusedCell): void {\n if (this.isPointerDown) {\n // defer the scroll decision to pointerup\n this.pendingScroll = true;\n return;\n }\n this.scrollCellIntoView({ rowIndex: cell[1], colIndex: cell[0] });\n }\n\n /**\n * Port of `useScrollCellIntoView`: keeps the cell fully visible, accounting\n * for the sticky header/footer and scrollbars. Positions come from the\n * row/column offsets, so cells outside the rendered window work too.\n */\n @action\n scrollCellIntoView({ rowIndex, colIndex }: { rowIndex: number; colIndex: number }): void {\n const outer = this.outerElement;\n if (!outer) return;\n if (!(this.hasVerticalScroll || this.hasHorizontalScroll)) return;\n\n const isStickyHeader = rowIndex === -1;\n const hasStickyFooter = this.hasFooter && !!this.grid.gridStyles.stickyFooter;\n const isStickyFooter = hasStickyFooter && rowIndex === this.visibleRowCount;\n const { scrollTop, scrollLeft, clientWidth, clientHeight } = outer;\n let adjustedScrollTop: number | undefined;\n let adjustedScrollLeft: number | undefined;\n\n const cellLeftPos = this.columnLeft(colIndex);\n const cellRightPos = cellLeftPos + (this.columnWidthList[colIndex] ?? 0);\n const rightWidthOutOfView = cellRightPos - (scrollLeft + clientWidth);\n if (rightWidthOutOfView > 0) adjustedScrollLeft = scrollLeft + rightWidthOutOfView;\n const leftWidthOutOfView = (adjustedScrollLeft ?? scrollLeft) - cellLeftPos;\n if (leftWidthOutOfView > 0) adjustedScrollLeft = cellLeftPos;\n\n if (!isStickyHeader && !isStickyFooter && rowIndex < this.visibleRowCount) {\n const headerRowHeight = this.headerOffset;\n const cellTopPos = headerRowHeight + this.rowTop(rowIndex);\n const cellBottomPos = cellTopPos + this.rowHeight(rowIndex);\n let bottomScrollBound = scrollTop + clientHeight;\n if (hasStickyFooter) bottomScrollBound -= this.footerRowHeight;\n const bottomHeightOutOfView = cellBottomPos - bottomScrollBound;\n if (bottomHeightOutOfView > 0) adjustedScrollTop = scrollTop + bottomHeightOutOfView;\n const topScrollBound = adjustedScrollTop ?? scrollTop + headerRowHeight;\n const topHeightOutOfView = topScrollBound - cellTopPos;\n if (topHeightOutOfView > 0) {\n adjustedScrollTop = Math.max(0, cellTopPos - headerRowHeight - ACTIONS_MENU_HEIGHT);\n }\n }\n\n if (adjustedScrollTop !== undefined || adjustedScrollLeft !== undefined) {\n // upstream calls react-window's `scrollTo` (a requested scroll); it\n // renders the target cell now instead of waiting for the scroll event\n this.scrollTo({\n scrollTop: adjustedScrollTop ?? scrollTop,\n scrollLeft: adjustedScrollLeft ?? scrollLeft\n });\n }\n }\n\n /* -------------------------------------------------------------------- */\n /* Layout shift compensation (`rowHeightsOptions.scrollAnchorRow`) */\n /* -------------------------------------------------------------------- */\n\n /** The row layout the grid last rendered with. */\n private layoutSnapshot: {\n offsets: Float64Array | null;\n defaultHeight: number;\n count: number;\n } | null = null;\n\n /**\n * Port of upstream `compensateForLayoutShift`: when rows above the anchor\n * row (the first or the middle visible row) change height, scroll by the\n * anchor row's vertical shift so the content in view stays put. Upstream\n * runs this from the first cell of each row; here it runs once per row\n * layout change, comparing the anchor row's top before and after.\n */\n compensateLayoutShift = modifier(\n (element: HTMLElement, [offsets, defaultHeight]: [Float64Array | null, number]) => {\n const count = this.visibleRowCount;\n const previous = this.layoutSnapshot;\n this.layoutSnapshot = { offsets, defaultHeight, count };\n const anchor = this.rowHeightsOptions.scrollAnchorRow;\n if (!anchor || !previous || previous.count !== count || count === 0) return;\n const topOf = (snapshot: NonNullable<typeof previous>, index: number) =>\n snapshot.offsets ? snapshot.offsets[index]! : index * snapshot.defaultHeight;\n // the visible rows of the previous layout at the current scroll position\n const scrollTop = element.scrollTop;\n const viewportBottom = scrollTop + Math.max(this.finalHeight - this.headerOffset, 0);\n let start = 0;\n while (start < count - 1 && topOf(previous, start + 1) <= scrollTop) start++;\n let stop = start;\n while (stop < count - 1 && topOf(previous, stop + 1) < viewportBottom) stop++;\n // upstream compares the center offset with the row index itself, which\n // only finds the center row when scrolled to the top; use the real center row\n const anchorRow = anchor === 'start' ? start : start + Math.floor((stop - start) / 2);\n const shift = topOf(this.layoutSnapshot, anchorRow) - topOf(previous, anchorRow);\n if (!shift || !Number.isFinite(shift)) return;\n element.scrollTop = scrollTop + shift;\n afterRender(this, this.onScroll);\n }\n );\n\n /* -------------------------------------------------------------------- */\n /* Imperative scrolling (react-window's grid API) */\n /* -------------------------------------------------------------------- */\n\n /** react-window `scrollTo`: offsets in px; a missing offset is kept. */\n @action\n scrollTo({ scrollLeft, scrollTop }: EuiDataGridScrollToProps = {}): void {\n const outer = this.outerElement;\n if (!outer) return;\n // react-window reports the requested offsets (only floored at 0) with\n // `scrollUpdateWasRequested: true`\n const state = this.scrollState;\n const left = scrollLeft !== undefined ? Math.max(0, scrollLeft) : state.scrollLeft;\n const top = scrollTop !== undefined ? Math.max(0, scrollTop) : state.scrollTop;\n outer.scrollTo({\n left: scrollLeft ?? outer.scrollLeft,\n top: scrollTop ?? outer.scrollTop\n });\n // reported after the DOM moved, like react-window's componentDidUpdate\n this.updateScrollState(left, top, true);\n // the new window now; a position past the end reports the clamped one\n this.onScroll();\n }\n\n /** react-window `scrollToItem`: brings a row and/or column into view. */\n @action\n scrollToItem({ align = 'auto', columnIndex, rowIndex }: EuiDataGridScrollToItemProps = {}): void {\n const outer = this.outerElement;\n if (!outer) return;\n const columnCount = this.grid.visibleColCount;\n const rowCount = this.visibleRowCount;\n const height = this.finalHeight;\n const width = this.finalWidth;\n if (rowIndex !== undefined && rowCount > 0) {\n // react-window lays out the rows up to the target first\n if (this.estimatedRowHeight !== undefined)\n this.measureRowsThrough(Math.max(0, Math.min(rowIndex, rowCount - 1)));\n }\n const totalHeight = this.scrollableRowsHeight;\n const totalWidth = this.totalWidth;\n // react-window adds the scrollbar of the other axis to the item's minimum offset\n const horizontalScrollbarSize = totalWidth > width ? this.scrollBarHeight : 0;\n const verticalScrollbarSize = totalHeight > height ? this.scrollBarWidth : 0;\n let scrollLeft: number | undefined;\n let scrollTop: number | undefined;\n if (columnIndex !== undefined && columnCount > 0) {\n const index = Math.max(0, Math.min(columnIndex, columnCount - 1));\n scrollLeft = getOffsetForIndexAndAlignment({\n align,\n size: width,\n totalSize: totalWidth,\n offset: this.columnLeft(index),\n itemSize: this.columnWidthList[index] ?? 0,\n scrollOffset: outer.scrollLeft,\n scrollbarSize: verticalScrollbarSize\n });\n }\n if (rowIndex !== undefined && rowCount > 0) {\n const index = Math.max(0, Math.min(rowIndex, rowCount - 1));\n scrollTop = getOffsetForIndexAndAlignment({\n align,\n size: height,\n totalSize: totalHeight,\n offset: this.rowTop(index),\n itemSize: this.rowHeight(index),\n scrollOffset: outer.scrollTop,\n scrollbarSize: horizontalScrollbarSize\n });\n }\n this.scrollTo({ scrollLeft, scrollTop });\n }\n\n /* -------------------------------------------------------------------- */\n /* Styles */\n /* -------------------------------------------------------------------- */\n\n @cached\n get styles() {\n const context = getEuiThemeContext(this);\n return {\n context,\n body: useEuiBorealisStyles(context, euiDataGridBodyStyles),\n scroll: useEuiBorealisStyles(context, euiDataGridScrollBarStyles)\n };\n }\n\n @cached\n get outerClass(): string {\n const { context, body } = this.styles;\n const className = this.grid.args.virtualizationOptions?.className;\n return `euiDataGrid__virtualized ${euiClass(context, body.euiDataGridBody, body.virtualized)}${className ? ` ${className}` : ''}`;\n }\n\n /** `virtualizationOptions.style`, merged over the body's own styles (like react-window). */\n @cached\n get extraOuterStyle(): string {\n const style = this.grid.args.virtualizationOptions?.style;\n if (!style) return '';\n return Object.entries(style)\n .map(([key, value]) => {\n const property = key.startsWith('--') ? key : key.replace(/[A-Z]/g, (m) => `-${m.toLowerCase()}`);\n const unitless = typeof value !== 'number' || UNITLESS.has(property);\n return `;${property}:${unitless ? value : `${value}px`}`;\n })\n .join('');\n }\n\n get outerStyle() {\n const height = this.finalHeight;\n const width = this.finalWidth;\n return htmlSafe(\n `position:relative;height:${height}px;width:${width ? `${width}px` : '100%'};overflow:auto;will-change:transform;direction:ltr${this.extraOuterStyle}`\n );\n }\n\n get innerStyle() {\n return htmlSafe(\n `position:relative;height:${this.scrollableRowsHeight + this.headerOffset}px;width:${this.totalWidth}px`\n );\n }\n\n get showScrollOverlay(): boolean {\n if (!this.hasHorizontalScroll && !this.hasVerticalScroll) return false;\n return this.grid.gridStyles.border !== 'none';\n }\n\n @cached\n get scrollOverlayClasses() {\n const { context, scroll } = this.styles;\n return {\n overlay: `euiDataGrid__scrollOverlay ${euiClass(context, scroll.euiDataGrid__scrollOverlay)}`,\n bottom: `euiDataGrid__scrollBarOverlayBottom ${euiClass(context, scroll.euiDataGrid__scrollBarOverlayBottom)}`,\n right: `euiDataGrid__scrollBarOverlayRight ${euiClass(context, scroll.euiDataGrid__scrollBarOverlayRight)}`\n };\n }\n\n get scrollBarBottomStyle() {\n return htmlSafe(`inset-block-end:${this.scrollBarHeight}px`);\n }\n\n get scrollBarRightStyle() {\n return htmlSafe(\n `inset-block-start:0;inset-block-end:${this.scrollBarHeight}px;inset-inline-end:${this.scrollBarWidth}px`\n );\n }\n\n <template>\n <div\n class={{this.outerClass}}\n style={{this.outerStyle}}\n {{on \"scroll\" this.onScroll}}\n {{on \"pointerdown\" this.onPointerDown}}\n {{this.setupOuter}}\n {{this.itemsRendered this.rowWindow this.columnWindow}}\n {{this.compensateLayoutShift this.rowOffsets this.defaultRowHeight}}\n >\n {{#if this.isMeasured}}\n <div style={{this.innerStyle}} {{this.setupInner}}>\n {{#if this.showHeader}}\n <EuiDataGridHeaderRow @grid={{@grid}} @body={{this}} {{this.registerHeader}}>\n <:controlHeaderCell as |cell|>{{yield cell to=\"controlHeaderCell\"}}</:controlHeaderCell>\n </EuiDataGridHeaderRow>\n {{/if}}\n {{#each this.renderedRows key=\"@identity\" as |visibleRowIndex|}}\n <EuiDataGridRow\n @grid={{@grid}}\n @body={{this}}\n @visibleRowIndex={{visibleRowIndex}}\n @hasCellPopoverBlock={{@hasCellPopoverBlock}}\n >\n <:cell as |cell|>{{yield cell to=\"cell\"}}</:cell>\n <:cellPopover as |popover|>{{yield popover to=\"cellPopover\"}}</:cellPopover>\n <:controlCell as |cell|>{{yield cell to=\"controlCell\"}}</:controlCell>\n </EuiDataGridRow>\n {{/each}}\n </div>\n {{#if this.hasFooter}}\n <EuiDataGridFooterRow\n @grid={{@grid}}\n @body={{this}}\n @hasCellPopoverBlock={{@hasCellPopoverBlock}}\n {{this.registerFooter}}\n >\n <:footerCell as |cell|>{{yield cell to=\"footerCell\"}}</:footerCell>\n <:cellPopover as |popover|>{{yield popover to=\"cellPopover\"}}</:cellPopover>\n <:controlFooterCell as |cell|>{{yield cell to=\"controlFooterCell\"}}</:controlFooterCell>\n </EuiDataGridFooterRow>\n {{/if}}\n {{/if}}\n </div>\n {{#if this.showScrollOverlay}}\n <div class={{this.scrollOverlayClasses.overlay}} role=\"presentation\">\n {{#if this.scrollBarHeight}}\n <div\n class={{this.scrollOverlayClasses.bottom}}\n style={{this.scrollBarBottomStyle}}\n ></div>\n {{/if}}\n {{#if this.scrollBarWidth}}\n <div\n class={{this.scrollOverlayClasses.right}}\n style={{this.scrollBarRightStyle}}\n ></div>\n {{/if}}\n </div>\n {{/if}}\n </template>\n}\n"],"names":["clampScrollOffset","offset","max","Math","min","UNITLESS","Set","ACTIONS_MENU_HEIGHT","getOffsetForIndexAndAlignment","align","size","totalSize","itemSize","scrollOffset","scrollbarSize","maxOffset","minOffset","round","findIndex","offsets","count","value","low","high","mid","EuiDataGridBody","EuiDataGridBodyBase","isVirtualized","outerElement","innerElement","headerElement","footerElement","g","prototype","tracked","i","undefined","scrollTop","scrollLeft","availableWidth","outerClientWidth","wrapperWidth","columnOffsets","widths","columnWidthList","Array","length","n","cached","totalWidth","columnLeft","colIndex","visibleRowCount","grid","visibleRows","rowOffsets","rowHeightsVersion","hasUniformRowHeights","Float64Array","getRowHeight","rowTop","visibleRowIndex","defaultRowHeight","rowHeight","totalRowsHeight","estimatedRowHeight","estimate","args","virtualizationOptions","measuredRowCount","measuredRowLayout","measureRowsThrough","syncMeasuredRowLayout","layout","scrollableRowsHeight","rowWindow","stop","measured","rowAt","floor","showHeader","headerOffset","headerRowHeight","unconstrainedHeight","footerRowHeight","scrollBarHeight","finalHeight","isFullScreen","wrapperHeight","constrainedHeight","finalWidth","isMeasured","overscanRowCount","overscanColumnCount","computeRowWindow","start","visibleStart","visibleStop","viewport","top","bottom","overscan","computeColumnWindow","visibleColCount","left","scrollVersion","columnWindow","renderedRows","rows","push","renderedColumns","columns","visibleRowStartIndex","onScroll","outer","syncWindow","scrollHeight","scrollWidth","clientHeight","clientWidth","updateScrollState","action","current","scrollState","horizontalScrollDirection","verticalScrollDirection","scrollUpdateWasRequested","requested","previous","notifyScroll","notifyInitialScroll","initialScrollTop","initialScrollLeft","isScrollableVertical","isScrollableHorizontal","isScrolledToBlockStart","isScrolledToInlineStart","isScrolledToBlockEnd","isScrolledToInlineEnd","itemsRendered","modifier","_element","onItemsRendered","afterRender","overscanRowStartIndex","overscanRowStopIndex","overscanColumnStartIndex","overscanColumnStopIndex","visibleRowStopIndex","visibleColumnStartIndex","visibleColumnStopIndex","measure","isDestroying","isDestroyed","wrapper","parentElement","layoutUnconstrainedHeight","rect","width","offsetWidth","height","offsetHeight","headerHeight","footerHeight","scrollBarWidth","hasHorizontalScroll","hasVerticalScroll","setupOuter","element","observeResize","initialScrollApplied","applyInitialScroll","setupInner","registerHeader","registerFooter","isPointerDown","pendingScroll","stopPointerTracking","willDestroy","onPointerDown","onPointerUp","event","pointerType","button","window","getSelection","type","focused","focusedCell","scrollCellIntoView","rowIndex","onCancel","document","addEventListener","removeEventListener","onFocusedCellChange","cell","isStickyHeader","hasStickyFooter","hasFooter","gridStyles","stickyFooter","isStickyFooter","adjustedScrollTop","adjustedScrollLeft","cellLeftPos","cellRightPos","rightWidthOutOfView","leftWidthOutOfView","cellTopPos","cellBottomPos","bottomScrollBound","bottomHeightOutOfView","topScrollBound","topHeightOutOfView","scrollTo","layoutSnapshot","compensateLayoutShift","defaultHeight","anchor","rowHeightsOptions","scrollAnchorRow","topOf","snapshot","index","viewportBottom","anchorRow","shift","Number","isFinite","state","scrollToItem","columnIndex","columnCount","rowCount","totalHeight","horizontalScrollbarSize","verticalScrollbarSize","styles","context","getEuiThemeContext","body","useEuiBorealisStyles","euiDataGridBodyStyles","scroll","euiDataGridScrollBarStyles","outerClass","className","euiClass","euiDataGridBody","virtualized","extraOuterStyle","style","Object","entries","map","key","property","startsWith","replace","m","toLowerCase","unitless","has","join","outerStyle","htmlSafe","innerStyle","showScrollOverlay","border","scrollOverlayClasses","overlay","euiDataGrid__scrollOverlay","euiDataGrid__scrollBarOverlayBottom","right","euiDataGrid__scrollBarOverlayRight","scrollBarBottomStyle","scrollBarRightStyle","setComponentTemplate","precompileTemplate","strictMode","scope","on","EuiDataGridHeaderRow","EuiDataGridRow","EuiDataGridFooterRow"],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { registerDestructor } from '@ember/destroyable';
|
|
1
2
|
import Component from '@glimmer/component';
|
|
2
3
|
import { tracked, cached } from '@glimmer/tracking';
|
|
3
4
|
import { action } from '@ember/object';
|
|
@@ -22,6 +23,7 @@ import { ESCAPE, TAB } from '../utils/keys.js';
|
|
|
22
23
|
import EuiDataGridBody from './eui-data-grid/body.js';
|
|
23
24
|
import EuiDataGridCopyMarker from './eui-data-grid/copy-marker.js';
|
|
24
25
|
import { euiScreenReaderOnlyClass } from './eui-screen-reader-only.js';
|
|
26
|
+
import { retainDocumentListener } from '../utils/retain-document-listener.js';
|
|
25
27
|
import { onTabularCopy } from '../utils/data-grid/tabular-copy.js';
|
|
26
28
|
import { euiTablePaginationDefaults } from '../-private/table-pagination-defaults.js';
|
|
27
29
|
import EuiDataGridCustomBody from './eui-data-grid/custom-body.js';
|
|
@@ -513,11 +515,11 @@ class EuiDataGrid extends Component {
|
|
|
513
515
|
...args.gridStyle
|
|
514
516
|
};
|
|
515
517
|
this.initialRowHeightsOptions = args.rowHeightsOptions ?? {};
|
|
516
|
-
// copies the focused cell's text on Ctrl/Cmd+C (static handler
|
|
517
|
-
|
|
518
|
+
// copies the focused cell's text on Ctrl/Cmd+C (static handler, ref-counted across instances)
|
|
519
|
+
registerDestructor(this, retainDocumentListener('copy', copyFocusedDataGridCell));
|
|
518
520
|
// tabs/newlines for selections copied across cells (upstream
|
|
519
|
-
// OverrideCopiedTabularContent; static handler
|
|
520
|
-
|
|
521
|
+
// OverrideCopiedTabularContent; static handler, ref-counted across instances)
|
|
522
|
+
registerDestructor(this, retainDocumentListener('copy', onTabularCopy));
|
|
521
523
|
}
|
|
522
524
|
/* ---------------------------------------------------------------------- */ /* Focus */ /* ---------------------------------------------------------------------- */
|
|
523
525
|
cellsUpdateFocus = new Map();
|