From 1d01db34ff2acfff0b65e74e75e075550bf72b2d Mon Sep 17 00:00:00 2001 From: sergeyteleshev Date: Mon, 16 Jun 2025 15:57:02 +0200 Subject: [PATCH 1/4] dbeaver/pro#5975 normalizes chunk ids (#3524) Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com> --- webapp/packages/product-base/src/manualChunks.ts | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/webapp/packages/product-base/src/manualChunks.ts b/webapp/packages/product-base/src/manualChunks.ts index 94e802fe24..73ce18fd19 100644 --- a/webapp/packages/product-base/src/manualChunks.ts +++ b/webapp/packages/product-base/src/manualChunks.ts @@ -21,6 +21,9 @@ export const manualChunks = (): PluginOption => [ output: { ...config.build?.rollupOptions?.output, manualChunks(id, { getModuleInfo }) { + // Normalize path separators for cross-platform compatibility + const normalizedId = id.replace(/\\/g, '/'); + function isModuleSync(moduleId: string) { // Use a non-recursive approach to detect circular dependencies const visited = new Set(); @@ -79,41 +82,41 @@ export const manualChunks = (): PluginOption => [ return syncModules.has(moduleId); } - const langMatch = /[\\/]locales[\\/](\w+)\.js/.exec(id); + const langMatch = /[\\/]locales[\\/](\w+)\.js/.exec(normalizedId); if (langMatch) { const language = langMatch[1]; // e.g. "en" return `locales/${language}`; } - if (id.includes('packages/core-')) { + if (normalizedId.includes('packages/core-')) { if (!isModuleSync(id)) { return 'core-async'; } return 'core'; } - if (id.includes('packages/plugin-')) { + if (normalizedId.includes('packages/plugin-')) { if (!isModuleSync(id)) { return 'plugins-async'; } return 'plugins'; } - if (id.includes('packages/product-')) { + if (normalizedId.includes('packages/product-')) { if (!isModuleSync(id)) { return 'products-async'; } return 'products'; } - if (id.includes('@dbeaver/')) { + if (normalizedId.includes('@dbeaver/')) { if (!isModuleSync(id)) { return 'dbeaver-async'; } return 'dbeaver'; } - if (id.includes('node_modules')) { + if (normalizedId.includes('node_modules')) { if (!isModuleSync(id)) { return 'vendor-async'; } From c28af2a7224eb3ff6cbe8e7beb7e672326167b1a Mon Sep 17 00:00:00 2001 From: sergeyteleshev Date: Mon, 16 Jun 2025 15:57:51 +0200 Subject: [PATCH 2/4] dbeaver/pro#5989 removes unused styles for cloud explorer checkbox (#3525) Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com> --- .../core-blocks/src/Tree/TreeNode/TreeNodeControl.module.css | 1 - 1 file changed, 1 deletion(-) diff --git a/webapp/packages/core-blocks/src/Tree/TreeNode/TreeNodeControl.module.css b/webapp/packages/core-blocks/src/Tree/TreeNode/TreeNodeControl.module.css index 4fc6531fd2..8c6fb21d41 100644 --- a/webapp/packages/core-blocks/src/Tree/TreeNode/TreeNodeControl.module.css +++ b/webapp/packages/core-blocks/src/Tree/TreeNode/TreeNodeControl.module.css @@ -6,7 +6,6 @@ * you may not use this file except in compliance with the License. */ .treeNodeControl { - composes: theme-ripple theme-ripple-selectable from global; box-sizing: border-box; height: 22px; display: flex; From 507aa096dd17b3206e4e558858fe7b6057e8d92f Mon Sep 17 00:00:00 2001 From: Alexey Date: Tue, 17 Jun 2025 01:03:28 +0800 Subject: [PATCH 3/4] dbeaver/pro#5123 feat: add welcome screen & update react-data-grid (#3513) --- .../artifacts/lib/bundle.js.map | 1 - .../react-data-grid/artifacts/lib/index.d.ts | 989 +++++++------- .../artifacts/lib/{bundle.js => index.js} | 1134 ++++++++--------- .../artifacts/lib/index.js.map | 1 + .../react-data-grid/artifacts/lib/styles.css | 158 +-- .../artifacts/lib/styles.css.map | 2 +- .../react-data-grid/artifacts/package.json | 10 +- .../@dbeaver/react-data-grid/src/BaseCell.tsx | 34 +- .../@dbeaver/react-data-grid/src/DataGrid.tsx | 32 +- common-react/yarn.lock | 6 +- .../public/icons/logo_current_sm.svg | 8 + webapp/packages/core-blocks/src/Cell.tsx | 7 +- .../src/Placeholder/Placeholder.tsx | 35 +- .../src/Placeholder/usePlaceholder.ts | 41 + webapp/packages/core-blocks/src/index.ts | 1 + .../packages/core-links/src/WebsiteLinks.ts | 3 +- .../plugin-connection-custom/package.json | 1 + .../src/Actions/ACTION_CONNECTION_CUSTOM.ts | 3 +- .../src/CustomConnectionPluginBootstrap.ts | 6 +- .../src/WelcomeNewConnection.tsx | 29 + .../src/locales/en.ts | 1 + .../src/locales/fr.ts | 3 +- .../src/locales/it.ts | 1 + .../src/locales/ru.ts | 1 + .../src/locales/vi.ts | 5 +- .../src/locales/zh.ts | 3 +- .../plugin-connection-custom/tsconfig.json | 3 + .../TableIndexColumnHeader.module.css | 2 - .../TableIndexColumnHeader.tsx | 3 +- webapp/packages/plugin-help/package.json | 2 + .../public/icons/documentation_link.svg | 12 + .../public/icons/documentation_link_m.svg | 12 + .../public/icons/documentation_link_sm.svg | 12 + .../plugin-help/src/PluginBootstrap.ts | 6 +- .../packages/plugin-help/src/WelcomeDocs.tsx | 27 + webapp/packages/plugin-help/src/locales/en.ts | 3 + webapp/packages/plugin-help/src/locales/fr.ts | 4 + webapp/packages/plugin-help/src/locales/it.ts | 3 + webapp/packages/plugin-help/src/locales/ru.ts | 3 + webapp/packages/plugin-help/src/locales/vi.ts | 3 + webapp/packages/plugin-help/src/locales/zh.ts | 3 + webapp/packages/plugin-help/tsconfig.json | 3 + .../plugin-navigation-tabs/package.json | 2 + .../src/LocaleService.ts | 38 + .../NavigationTabsBar/NavigationTabsBar.tsx | 8 +- .../NavigationWelcomeScreen.tsx | 43 + .../NavigationTabs/NavigationTabsService.ts | 5 +- .../plugin-navigation-tabs/src/locales/en.ts | 1 + .../plugin-navigation-tabs/src/locales/fr.ts | 1 + .../plugin-navigation-tabs/src/locales/it.ts | 1 + .../plugin-navigation-tabs/src/locales/ru.ts | 1 + .../plugin-navigation-tabs/src/locales/vi.ts | 1 + .../plugin-navigation-tabs/src/locales/zh.ts | 1 + .../plugin-navigation-tabs/src/manifest.ts | 3 +- .../plugin-navigation-tabs/tsconfig.json | 6 + .../src/SqlEditorBootstrap.ts | 13 +- .../src/WelcomeNewSqlEditor.tsx | 29 + webapp/yarn.lock | 11 +- 58 files changed, 1580 insertions(+), 1200 deletions(-) delete mode 100644 common-react/@dbeaver/react-data-grid/artifacts/lib/bundle.js.map rename common-react/@dbeaver/react-data-grid/artifacts/lib/{bundle.js => index.js} (78%) create mode 100644 common-react/@dbeaver/react-data-grid/artifacts/lib/index.js.map create mode 100644 webapp/packages/core-blocks/public/icons/logo_current_sm.svg create mode 100644 webapp/packages/core-blocks/src/Placeholder/usePlaceholder.ts create mode 100644 webapp/packages/plugin-connection-custom/src/WelcomeNewConnection.tsx create mode 100644 webapp/packages/plugin-help/public/icons/documentation_link.svg create mode 100644 webapp/packages/plugin-help/public/icons/documentation_link_m.svg create mode 100644 webapp/packages/plugin-help/public/icons/documentation_link_sm.svg create mode 100644 webapp/packages/plugin-help/src/WelcomeDocs.tsx create mode 100644 webapp/packages/plugin-navigation-tabs/src/LocaleService.ts create mode 100644 webapp/packages/plugin-navigation-tabs/src/NavigationTabs/NavigationTabsBar/NavigationWelcomeScreen.tsx create mode 100644 webapp/packages/plugin-navigation-tabs/src/locales/en.ts create mode 100644 webapp/packages/plugin-navigation-tabs/src/locales/fr.ts create mode 100644 webapp/packages/plugin-navigation-tabs/src/locales/it.ts create mode 100644 webapp/packages/plugin-navigation-tabs/src/locales/ru.ts create mode 100644 webapp/packages/plugin-navigation-tabs/src/locales/vi.ts create mode 100644 webapp/packages/plugin-navigation-tabs/src/locales/zh.ts create mode 100644 webapp/packages/plugin-sql-editor-navigation-tab/src/WelcomeNewSqlEditor.tsx diff --git a/common-react/@dbeaver/react-data-grid/artifacts/lib/bundle.js.map b/common-react/@dbeaver/react-data-grid/artifacts/lib/bundle.js.map deleted file mode 100644 index 798147e74e..0000000000 --- a/common-react/@dbeaver/react-data-grid/artifacts/lib/bundle.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"bundle.js","names":["column: CalculatedColumn","lastFrozenColumnIndex: number","args: ColSpanArgs","event: React.SyntheticEvent","element: Maybe","event: E","e: React.KeyboardEvent","event: React.KeyboardEvent","CalculatedColumn","measuringCellClassname","renderMeasuringCells","viewportColumns","R","SR","columnsToMeasure","Set","map","key","idx","minWidth","maxWidth","gridColumnStart","has","undefined","row","column: CalculatedColumn","row: R","moveNext: boolean","moveNext","parent: CalculatedColumnParent","cell","cellClassname","cellFrozen","cellFrozenClassname","rowIdx: number","column: CalculatedColumnOrColumnGroup","rowSpan: number","column: CalculatedColumn","keyGetter: Maybe<(row: NoInfer) => K>","width: number","column: CalculatedColumnOrColumnGroup","rowIdx: number","RenderCheckboxProps","checkbox","checkboxClassname","renderCheckbox","onChange","indeterminate","props","handleChange","e","React","ChangeEvent","HTMLInputElement","target","checked","nativeEvent","MouseEvent","shiftKey","el","RenderGroupCellProps","groupCellContent","groupCellContentClassname","caret","caretClassname","renderToggleGroup","props","R","SR","ToggleGroup","groupKey","isExpanded","tabIndex","toggleGroup","handleKeyDown","key","React","KeyboardEvent","HTMLSpanElement","d","props: RenderCellProps","renderCheckbox","props: RenderHeaderCellProps","props: RenderCellProps","props: RenderGroupCellProps","SelectColumn: Column","RenderHeaderCellProps","useDefaultRenderers","headerSortCellClassname","headerSortName","headerSortNameClassname","renderHeaderCell","column","sortDirection","priority","R","SR","sortable","name","SharedHeaderCellProps","Pick","SortableHeaderCellProps","children","React","ReactNode","SortableHeaderCell","renderSortStatus","defaultRenderHeaderCell","lastFrozenColumnIndex","headerRowsCount","columns: MutableCalculatedColumn[]","rawColumns: readonly ColumnOrColumnGroup[]","level: number","parent?: MutableCalculatedColumnParent","rawColumns","calculatedColumnParent: MutableCalculatedColumnParent","column: MutableCalculatedColumn","colSpanColumns: CalculatedColumn[]","columnMetrics","totalFrozenColumnWidth","templateColumns: string[]","layoutCssVars: Record","colOverscanStartIdx","colOverscanEndIdx","column: MutableCalculatedColumn | MutableCalculatedColumnParent","index: number","columns: readonly CalculatedColumn[]","rows: readonly R[]","viewportColumns: readonly CalculatedColumn[]","templateColumns: readonly string[]","gridRef: React.RefObject","gridWidth: number","resizedColumnWidths: ReadonlyMap","measuredColumnWidths: ReadonlyMap","setResizedColumnWidths: StateSetter>","setMeasuredColumnWidths: StateSetter>","onColumnResize: DataGridProps['onColumnResize']","columnsCanFlex: boolean","ignorePreviouslyMeasuredColumns: boolean","resizedColumnWidths","columnsToMeasure: Set","columnsToMeasure","measuredColumnWidths","column: CalculatedColumn","nextWidth: ColumnResizeWidth","resizedColumnsToMeasure","key: string","offsetHeight","clientHeight","fn: T","isSelected: boolean","event: React.FocusEvent","startIdx","colIdx: number","colSpan: number | undefined","row","viewportColumns: CalculatedColumn[]","rowIdx: number","offset: number","totalRowHeight","gridTemplateRows","row","memo","useRovingTabIndex","createCellEvent","getCellClassname","getCellStyle","isCellEditableUtil","CellRendererProps","cellCopied","cellCopiedClassname","cellDraggedOver","cellDraggedOverClassname","Cell","column","colSpan","isCellSelected","isCopied","isDraggedOver","row","rowIdx","className","onClick","onDoubleClick","onContextMenu","onRowChange","selectCell","style","props","R","SR","tabIndex","childTabIndex","onFocus","cellClass","isEditable","selectCellWrapper","openEditor","idx","handleClick","event","React","MouseEvent","HTMLDivElement","cellEvent","isGridDefaultPrevented","handleContextMenu","handleDoubleClick","handleRowChange","newRow","undefined","renderCell","isCellEditable","CellComponent","JSX","Element","defaultRenderCell","key","Key","clsx","getCellStyle","CalculatedColumn","FillEvent","Position","DataGridProps","SelectCellState","cellDragHandle","cellDragHandleFrozenClassname","cellDragHandleClassname","Props","Pick","R","SR","gridRowStart","column","columnWidth","maxColIdx","isLastRow","selectedPosition","latestDraggedOverRowIdx","React","RefObject","isCellEditable","position","onClick","onFill","event","setDragging","isDragging","setDraggedOverRowIdx","overRowIdx","DragHandle","rows","onRowsChange","idx","rowIdx","handleMouseDown","MouseEvent","HTMLDivElement","preventDefault","buttons","window","addEventListener","onMouseOver","onMouseUp","removeEventListener","handleDragEnd","current","undefined","startRowIndex","endRowIndex","updateRows","handleDoubleClick","stopPropagation","length","startRowIdx","endRowIdx","sourceRow","updatedRows","indexes","i","updatedRow","columnKey","key","targetRow","push","getStyle","CSSProperties","colSpan","type","row","insetInlineStart","style","marginEnd","isLastColumn","marginInlineEnd","marginBlockEnd","frozen","useEffect","useRef","useLatestFunc","createCellEvent","getCellClassname","getCellStyle","onEditorNavigation","CellKeyboardEvent","CellRendererProps","EditCellKeyDownArgs","Maybe","Omit","RenderEditCellProps","cellEditing","SharedCellRendererProps","Pick","R","SR","EditCellProps","rowIdx","onRowChange","row","commitChanges","shouldFocusCell","closeEditor","navigate","event","React","KeyboardEvent","HTMLDivElement","onKeyDown","args","EditCell","column","colSpan","frameRequestRef","undefined","commitOnOutsideClick","editorOptions","commitOnOutsideMouseDown","onClose","onWindowCaptureMouseDown","current","requestAnimationFrame","addEventListener","capture","removeEventListener","cancelFrameRequest","cancelAnimationFrame","handleKeyDown","cellEvent","mode","isGridDefaultPrevented","key","onEditorRowChange","commitChangesAndFocus","cellClass","className","displayCellContent","idx","renderEditCell","renderCell","isCellEditable","tabIndex","useState","useRovingTabIndex","clampColumnWidth","getCellClassname","getCellStyle","getHeaderCellRowSpan","getHeaderCellStyle","stopPropagation","CalculatedColumn","SortColumn","HeaderRowProps","cellSortableClassname","cellResizable","cellResizableClassname","resizeHandleClassname","cellDraggableClassname","cellDragging","cellDraggingClassname","cellOver","cellOverClassname","SharedHeaderRowProps","Pick","R","SR","React","Key","HeaderCellProps","column","colSpan","rowIdx","isCellSelected","dragDropKey","HeaderCell","onColumnResize","onColumnsReorder","sortColumns","onSortColumnsChange","selectCell","shouldFocusGrid","direction","isDragging","setIsDragging","isOver","setIsOver","isRtl","rowSpan","tabIndex","childTabIndex","onFocus","sortIndex","findIndex","sort","columnKey","key","sortColumn","undefined","sortDirection","priority","length","ariaSort","sortable","resizable","draggable","className","headerCellClass","onPointerDown","event","PointerEvent","HTMLDivElement","pointerType","buttons","preventDefault","currentTarget","pointerId","headerCell","parentElement","right","left","getBoundingClientRect","offset","clientX","hasDoubleClicked","onPointerMove","width","newWidth","onDoubleClick","onLostPointerCapture","removeEventListener","setPointerCapture","addEventListener","onSort","ctrlClick","sortDescendingFirst","nextSort","nextSortColumn","nextSortColumns","splice","onClick","MouseEvent","HTMLSpanElement","idx","ctrlKey","metaKey","handleFocus","FocusEvent","onKeyDown","KeyboardEvent","onDragStart","DragEvent","dataTransfer","setData","dropEffect","onDragEnd","onDragOver","onDrop","types","includes","toLowerCase","sourceKey","getData","onDragEnter","isEventPertinent","onDragLeave","draggableProps","ComponentProps","renderHeaderCell","relatedTarget","HTMLElement","contains","row","rowClassname","rowSelected","rowSelectedClassname","rowSelectedWithFrozenCell","topSummaryRowClassname","bottomSummaryRowClassname","memo","useId","clsx","ColumnResizeWidth","getColSpan","CalculatedColumn","Direction","Position","DataGridProps","HeaderCell","rowSelectedClassname","SharedDataGridProps","React","Key","Pick","R","SR","K","HeaderRowProps","rowIdx","columns","onColumnResize","column","width","selectCell","position","lastFrozenColumnIndex","selectedCellIdx","shouldFocusGrid","direction","headerRow","headerRowClassname","HeaderRow","onColumnsReorder","sortColumns","onSortColumnsChange","dragDropKey","cells","index","length","colSpan","type","undefined","push","key","idx","props","JSX","Element","column: CalculatedColumn","newRow: R","event: React.MouseEvent","row","key: React.Key","props: RenderRowProps","RenderSortIconProps","RenderSortPriorityProps","RenderSortStatusProps","arrow","arrowClassname","renderSortStatus","sortDirection","priority","renderSortIcon","renderSortPriority","undefined","root","rootClassname","viewportDragging","viewportDraggingClassname","focusSinkClassname","focusSinkHeaderAndSummaryClassname","memo","useRovingTabIndex","getCellClassname","getCellStyle","CellRendererProps","summaryCellClassname","SharedCellRendererProps","Pick","R","SR","SummaryCellProps","row","SummaryCell","column","colSpan","rowIdx","isCellSelected","selectCell","tabIndex","childTabIndex","onFocus","summaryCellClass","className","onClick","idx","renderSummaryCell","props","React","JSX","Element","memo","clsx","getColSpan","getRowStyle","RenderRowProps","bottomSummaryRowClassname","rowClassname","rowSelectedClassname","topSummaryRowClassname","SummaryCell","SharedRenderRowProps","Pick","R","SR","SummaryRowProps","row","top","bottom","lastFrozenColumnIndex","selectedCellIdx","isTop","summaryRow","topSummaryRow","summaryRowClassname","SummaryRow","rowIdx","gridRowStart","viewportColumns","selectCell","ariaRowIndex","cells","index","length","column","colSpan","type","undefined","isCellSelected","idx","push","key","React","CSSProperties","props","JSX","Element","props: DataGridProps","renderSortStatus","defaultRenderSortStatus","renderCheckbox","defaultRenderCheckbox","column: CalculatedColumn","row","rowIdx?: number","cell","args: SelectHeaderRowEvent","args: SelectRowEvent","event: KeyboardEvent","event: React.UIEvent","scrollTop","scrollLeft","rowIdx: number","row: R","idx: number","position: Position","enableEditor?: Maybe","key: string","ctrlKey: boolean","shiftKey: boolean","cellNavigationMode: CellNavigationMode","currentRowIdx: number","shouldFocusCell: boolean","shouldFocusCell","commitChanges: boolean","rowElements: React.ReactNode[]","key: K | number","GroupedColumnHeaderRow","HeaderRow","SummaryRow","gridEl: HTMLDivElement","p1: Position","p2: Position","memo","useMemo","clsx","RowSelectionContext","RowSelectionContextValue","getRowStyle","BaseRenderRowProps","GroupRow","SELECT_COLUMN_KEY","GroupCell","rowClassname","rowSelectedClassname","groupRow","groupRowClassname","GroupRowRendererProps","R","SR","row","groupBy","toggleGroup","expandedGroupId","GroupedRow","className","rowIdx","viewportColumns","selectedCellIdx","isRowSelected","selectCell","gridRowStart","isRowSelectionDisabled","props","idx","key","level","handleSelectGroup","selectionValue","setSize","posInSet","isExpanded","map","column","id","groupKey","childRows","includes","React","JSX","Element","columns","groupBy: string[]","rows: readonly R[]","startRowIndex: number","groups: GroupByDictionary","rows","isGroupRow","flattenedRows: Array>","rows: GroupByDictionary | readonly R[]","parentId: string | undefined","level: number","groupRow: GroupRow","groupRow","row: R | GroupRow","row","selectedRows","newSelectedRows: Set","args: CellKeyDownArgs","event: CellKeyboardEvent","updatedRows: R[]","rawIndexes: number[]","groupId: unknown","key: Key","GroupedRow","arr: unknown","RenderEditCellProps","textEditorInternalClassname","textEditorClassname","autoFocusAndSelect","input","HTMLInputElement","focus","select","textEditor","row","column","onRowChange","onClose","TRow","TSummaryRow","key","event","target","value"],"sources":["../src/utils/colSpanUtils.ts","../src/utils/domUtils.ts","../src/utils/eventUtils.ts","../src/utils/keyboardUtils.ts","../src/utils/renderMeasuringCells.tsx","../src/utils/selectedCellUtils.ts","../src/style/cell.ts","../src/utils/styleUtils.ts","../src/utils/index.ts","../src/cellRenderers/renderCheckbox.tsx","../src/cellRenderers/renderToggleGroup.tsx","../src/cellRenderers/renderValue.tsx","../src/DataGridDefaultRenderersContext.ts","../src/cellRenderers/SelectCellFormatter.tsx","../src/hooks/useRowSelection.ts","../src/Columns.tsx","../src/renderHeaderCell.tsx","../src/hooks/useCalculatedColumns.ts","../src/hooks/useColumnWidths.ts","../src/hooks/useGridDimensions.ts","../src/hooks/useLatestFunc.ts","../src/hooks/useRovingTabIndex.ts","../src/hooks/useViewportColumns.ts","../src/hooks/useViewportRows.ts","../src/Cell.tsx","../src/DragHandle.tsx","../src/EditCell.tsx","../src/GroupedColumnHeaderCell.tsx","../src/HeaderCell.tsx","../src/style/row.ts","../src/HeaderRow.tsx","../src/GroupedColumnHeaderRow.tsx","../src/Row.tsx","../src/ScrollToCell.tsx","../src/sortStatus.tsx","../src/style/core.ts","../src/SummaryCell.tsx","../src/SummaryRow.tsx","../src/DataGrid.tsx","../src/GroupCell.tsx","../src/GroupRow.tsx","../src/TreeDataGrid.tsx","../src/editors/textEditor.tsx"],"sourcesContent":["import type { CalculatedColumn, ColSpanArgs } from '../types';\n\nexport function getColSpan(\n column: CalculatedColumn,\n lastFrozenColumnIndex: number,\n args: ColSpanArgs\n): number | undefined {\n const colSpan = typeof column.colSpan === 'function' ? column.colSpan(args) : 1;\n if (\n Number.isInteger(colSpan) &&\n colSpan! > 1 &&\n // ignore colSpan if it spans over both frozen and regular columns\n (!column.frozen || column.idx + colSpan! - 1 <= lastFrozenColumnIndex)\n ) {\n return colSpan!;\n }\n return undefined;\n}\n","import type { Maybe } from '../types';\n\nexport function stopPropagation(event: React.SyntheticEvent) {\n event.stopPropagation();\n}\n\nexport function scrollIntoView(element: Maybe) {\n element?.scrollIntoView({ inline: 'nearest', block: 'nearest' });\n}\n","import type { CellEvent } from '../types';\n\nexport function createCellEvent>(\n event: E\n): CellEvent {\n let defaultPrevented = false;\n const cellEvent = {\n ...event,\n preventGridDefault() {\n defaultPrevented = true;\n },\n isGridDefaultPrevented() {\n return defaultPrevented;\n }\n };\n\n Object.setPrototypeOf(cellEvent, Object.getPrototypeOf(event));\n\n return cellEvent;\n}\n","// https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key/Key_Values\nconst nonInputKeys = new Set([\n // Special keys\n 'Unidentified',\n // Modifier keys\n 'Alt',\n 'AltGraph',\n 'CapsLock',\n 'Control',\n 'Fn',\n 'FnLock',\n 'Meta',\n 'NumLock',\n 'ScrollLock',\n 'Shift',\n // Whitespace keys\n 'Tab',\n // Navigation keys\n 'ArrowDown',\n 'ArrowLeft',\n 'ArrowRight',\n 'ArrowUp',\n 'End',\n 'Home',\n 'PageDown',\n 'PageUp',\n // Editing\n 'Insert',\n // UI keys\n 'ContextMenu',\n 'Escape',\n 'Pause',\n 'Play',\n // Device keys\n 'PrintScreen',\n // Function keys\n 'F1',\n // 'F2', /!\\ specifically allowed, do not edit\n 'F3',\n 'F4',\n 'F5',\n 'F6',\n 'F7',\n 'F8',\n 'F9',\n 'F10',\n 'F11',\n 'F12'\n]);\n\nexport function isCtrlKeyHeldDown(e: React.KeyboardEvent): boolean {\n return (e.ctrlKey || e.metaKey) && e.key !== 'Control';\n}\n\nexport function isDefaultCellInput(event: React.KeyboardEvent): boolean {\n const vKey = 86;\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n if (isCtrlKeyHeldDown(event) && event.keyCode !== vKey) return false;\n return !nonInputKeys.has(event.key);\n}\n\n/**\n * By default, the following navigation keys are enabled while an editor is open, under specific conditions:\n * - Tab:\n * - The editor must be an , a