@revolist/revogrid 4.23.21 → 4.23.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/dist/cjs/{column.drag.plugin-Bjnv6C0x.js → column.drag.plugin-Cz-T4y3M.js} +1 -1
  2. package/dist/cjs/index.cjs.js +1 -1
  3. package/dist/cjs/loader.cjs.js +1 -1
  4. package/dist/cjs/revo-grid.cjs.entry.js +50 -23
  5. package/dist/cjs/revo-grid.cjs.js +1 -1
  6. package/dist/cjs/revogr-attribution_7.cjs.entry.js +16 -17
  7. package/dist/collection/components/overlay/keyboard.service.js +4 -1
  8. package/dist/collection/components/overlay/revogr-overlay-selection.js +12 -16
  9. package/dist/collection/components/revoGrid/revo-grid.js +50 -6
  10. package/dist/collection/components/revoGrid/viewport.service.js +17 -13
  11. package/dist/collection/plugins/base.plugin.js +1 -1
  12. package/dist/collection/services/dimension.provider.js +8 -4
  13. package/dist/esm/{column.drag.plugin-Bzb8TAwZ.js → column.drag.plugin-DKkf7Zqb.js} +1 -1
  14. package/dist/esm/index.js +2 -2
  15. package/dist/esm/loader.js +1 -1
  16. package/dist/esm/revo-grid.entry.js +50 -23
  17. package/dist/esm/revo-grid.js +1 -1
  18. package/dist/esm/revogr-attribution_7.entry.js +16 -17
  19. package/dist/revo-grid/{column.drag.plugin-Bzb8TAwZ.js → column.drag.plugin-DKkf7Zqb.js} +1 -1
  20. package/dist/revo-grid/index.esm.js +2 -2
  21. package/dist/revo-grid/revo-grid.entry.js +50 -23
  22. package/dist/revo-grid/revo-grid.esm.js +1 -1
  23. package/dist/revo-grid/revogr-attribution_7.entry.js +16 -17
  24. package/dist/types/components/overlay/keyboard.service.d.ts +2 -2
  25. package/dist/types/components/overlay/revogr-overlay-selection.d.ts +3 -3
  26. package/dist/types/components/revoGrid/revo-grid.d.ts +8 -0
  27. package/dist/types/components/revoGrid/viewport.service.d.ts +3 -1
  28. package/dist/types/components.d.ts +10 -0
  29. package/dist/types/services/dimension.provider.d.ts +4 -1
  30. package/hydrate/index.js +67 -40
  31. package/hydrate/index.mjs +67 -40
  32. package/package.json +1 -1
  33. package/standalone/revo-grid.js +1 -1
  34. package/standalone/revogr-overlay-selection2.js +1 -1
@@ -352,7 +352,7 @@ class BasePlugin {
352
352
  },
353
353
  });
354
354
  if (immediate) {
355
- callback(nativeValueDesc === null || nativeValueDesc === void 0 ? void 0 : nativeValueDesc.value);
355
+ callback((nativeValueDesc === null || nativeValueDesc === void 0 ? void 0 : nativeValueDesc.get) ? nativeValueDesc.get.call(this.revogrid) : nativeValueDesc === null || nativeValueDesc === void 0 ? void 0 : nativeValueDesc.value);
356
356
  }
357
357
  }
358
358
  /**
@@ -4,7 +4,7 @@
4
4
  'use strict';
5
5
 
6
6
  var column_service = require('./column.service-BNWNiJW3.js');
7
- var column_drag_plugin = require('./column.drag.plugin-Bjnv6C0x.js');
7
+ var column_drag_plugin = require('./column.drag.plugin-Cz-T4y3M.js');
8
8
  var headerCellRenderer = require('./header-cell-renderer-DyjOxArm.js');
9
9
  var cellRenderer = require('./cell-renderer-DfUCisis.js');
10
10
  var index$1 = require('./index-DxaSE5uZ.js');
@@ -10,7 +10,7 @@ require('./theme.service-BgnxGIjK.js');
10
10
  const defineCustomElements = async (win, options) => {
11
11
  if (typeof window === 'undefined') return undefined;
12
12
  await appGlobals.globalScripts();
13
- return index.bootstrapLazy([["revo-grid.cjs",[[260,"revo-grid",{"rowHeaders":[4,"row-headers"],"frameSize":[2,"frame-size"],"rowSize":[2,"row-size"],"colSize":[2,"col-size"],"range":[4],"readonly":[4],"resize":[4],"noHorizontalScrollTransfer":[4,"no-horizontal-scroll-transfer"],"canFocus":[4,"can-focus"],"useClipboard":[4,"use-clipboard"],"columns":[16],"source":[16],"pinnedTopSource":[16],"pinnedBottomSource":[16],"rowDefinitions":[16],"editors":[16],"applyOnClose":[4,"apply-on-close"],"plugins":[16],"columnTypes":[16],"theme":[1537],"rowClass":[513,"row-class"],"autoSizeColumn":[4,"auto-size-column"],"filter":[4],"sorting":[16],"focusTemplate":[16],"canMoveColumns":[4,"can-move-columns"],"trimmedRows":[16],"exporting":[4],"grouping":[16],"stretch":[8],"additionalData":[16],"disableVirtualX":[4,"disable-virtual-x"],"disableVirtualY":[4,"disable-virtual-y"],"hideAttribution":[4,"hide-attribution"],"jobsBeforeRender":[16],"registerVNode":[16],"accessible":[4],"rtl":[4],"canDrag":[4,"can-drag"],"refresh":[64],"setDataAt":[64],"scrollToRow":[64],"scrollToColumnIndex":[64],"scrollToColumnProp":[64],"updateColumns":[64],"addTrimmed":[64],"scrollToCoordinate":[64],"setCellEdit":[64],"setCellsFocus":[64],"getSource":[64],"getVisibleSource":[64],"getSourceStore":[64],"getColumnStore":[64],"updateColumnSorting":[64],"clearSorting":[64],"getColumns":[64],"clearFocus":[64],"getPlugins":[64],"getFocused":[64],"getContentSize":[64],"getSelectedRange":[64],"refreshExtraElements":[64],"getProviders":[64]},[[5,"touchstart","mousedownHandle"],[5,"mousedown","mousedownHandle"],[5,"touchend","mouseupHandle"],[5,"mouseup","mouseupHandle"],[0,"rowdragstartinit","onRowDragStarted"],[0,"rowdragendinit","onRowDragEnd"],[0,"roworderchange","onRowOrderChange"],[0,"rowdragmoveinit","onRowDrag"],[0,"rowdragmousemove","onRowMouseMove"],[0,"celleditapply","onCellEdit"],[0,"rangeeditapply","onRangeEdit"],[0,"selectionchangeinit","onRangeChanged"],[0,"rowdropinit","onRowDropped"],[0,"beforeheaderclick","onHeaderClick"],[0,"beforecellfocusinit","onCellFocus"]],{"columnTypes":[{"columnTypesChanged":0}],"columns":[{"columnChanged":0}],"disableVirtualX":[{"disableVirtualXChanged":0}],"rowSize":[{"rowSizeChanged":0}],"theme":[{"themeChanged":0}],"source":[{"dataSourceChanged":0}],"pinnedBottomSource":[{"dataSourceChanged":0}],"pinnedTopSource":[{"dataSourceChanged":0}],"disableVirtualY":[{"disableVirtualYChanged":0}],"rowDefinitions":[{"rowDefChanged":0}],"trimmedRows":[{"trimmedRowsChanged":0}],"grouping":[{"groupingChanged":0}],"stretch":[{"applyStretch":0}],"filter":[{"applyFilter":0}],"sorting":[{"applySorting":0}],"rowHeaders":[{"rowHeadersChange":0}],"registerVNode":[{"registerOutsideVNodes":0}],"additionalData":[{"additionalDataChanged":0}],"rtl":[{"rtlChanged":0}],"plugins":[{"pluginsChanged":0}]}]]],["revogr-filter-panel.cjs",[[260,"revogr-filter-panel",{"filterNames":[16],"filterEntities":[16],"filterCaptions":[16],"disableDynamicFiltering":[4,"disable-dynamic-filtering"],"closeOnOutsideClick":[4,"close-on-outside-click"],"isFilterIdSet":[32],"filterId":[32],"currentFilterId":[32],"currentFilterType":[32],"changes":[32],"filterItems":[32],"draggedFilterId":[32],"dragOverFilterId":[32],"show":[64],"getChanges":[64]},[[5,"mousedown","onMouseDown"]]]]],["revogr-clipboard_3.cjs",[[0,"revogr-clipboard",{"readonly":[4],"doCopy":[64]},[[4,"paste","onPaste"],[4,"copy","copyStarted"],[4,"cut","cutStarted"]]],[0,"revogr-edit",{"editCell":[16],"column":[16],"editor":[16],"saveOnClose":[4,"save-on-close"],"additionalData":[8,"additional-data"],"cancelChanges":[64],"beforeDisconnect":[64]}],[0,"revogr-order-editor",{"parent":[16],"dimensionRow":[16],"dimensionCol":[16],"dataStore":[16],"rowType":[1,"row-type"],"dragStart":[64],"endOrder":[64],"clearOrder":[64]}]]],["revogr-data_4.cjs",[[260,"revogr-data",{"readonly":[4],"range":[4],"rowClass":[1,"row-class"],"additionalData":[8,"additional-data"],"rowSelectionStore":[16],"viewportRow":[16],"viewportCol":[16],"dimensionRow":[16],"colData":[16],"dataStore":[16],"type":[513],"colType":[513,"col-type"],"jobsBeforeRender":[16],"providers":[32],"updateCell":[64]},null,{"dataStore":[{"onDataStoreChange":0}],"colData":[{"onColDataChange":0}]}],[0,"revogr-header",{"viewportCol":[16],"dimensionCol":[16],"selectionStore":[16],"groups":[16],"groupingDepth":[2,"grouping-depth"],"readonly":[4],"canResize":[4,"can-resize"],"resizeHandler":[16],"colData":[16],"columnFilter":[4,"column-filter"],"type":[1],"additionalData":[8,"additional-data"]}],[260,"revogr-viewport-scroll",{"rowHeader":[4,"row-header"],"contentWidth":[2,"content-width"],"contentHeight":[2,"content-height"],"colType":[1,"col-type"],"noHorizontalScrollTransfer":[4,"no-horizontal-scroll-transfer"],"setScroll":[64],"changeScroll":[64],"applyScroll":[64]},[[0,"mousewheel-vertical","mousewheelVertical"],[0,"mousewheel-horizontal","mousewheelHorizontal"],[0,"scroll-coordinate","scrollApply"]]],[0,"vnode-html",{"redraw":[16]}]]],["revogr-attribution_7.cjs",[[0,"revogr-row-headers",{"height":[2],"dataPorts":[16],"headerProp":[16],"rowClass":[1,"row-class"],"resize":[4],"rowHeaderColumn":[16],"additionalData":[8,"additional-data"],"jobsBeforeRender":[16]}],[260,"revogr-overlay-selection",{"readonly":[4],"range":[4],"canDrag":[4,"can-drag"],"useClipboard":[4,"use-clipboard"],"selectionStore":[16],"dimensionRow":[16],"dimensionCol":[16],"dataStore":[16],"colData":[16],"lastCell":[16],"editors":[16],"applyChangesOnClose":[4,"apply-changes-on-close"],"additionalData":[8,"additional-data"],"isMobileDevice":[4,"is-mobile-device"]},[[5,"touchmove","onMouseMove"],[5,"mousemove","onMouseMove"],[5,"touchend","onMouseUp"],[5,"mouseup","onMouseUp"],[5,"mouseleave","onMouseUp"],[0,"dragstartcell","onCellDrag"],[4,"keyup","onKeyUp"],[4,"keydown","onKeyDown"]],{"selectionStore":[{"selectionServiceSet":0}],"dimensionRow":[{"createAutoFillService":0}],"dimensionCol":[{"createAutoFillService":0}],"dataStore":[{"columnServiceSet":0}],"colData":[{"columnServiceSet":0}]}],[0,"revogr-attribution"],[260,"revogr-focus",{"colType":[1,"col-type"],"rowType":[1,"row-type"],"selectionStore":[16],"dimensionRow":[16],"dimensionCol":[16],"dataStore":[16],"colData":[16],"focusTemplate":[16]}],[0,"revogr-scroll-virtual",{"dimension":[1],"realSize":[2,"real-size"],"virtualSize":[2,"virtual-size"],"clientSize":[2,"client-size"],"setScroll":[64],"changeScroll":[64]}],[0,"revogr-temp-range",{"selectionStore":[16],"dimensionRow":[16],"dimensionCol":[16]}],[0,"revogr-extra",{"nodes":[16],"update":[32],"refresh":[64]}]]]], options);
13
+ return index.bootstrapLazy([["revo-grid.cjs",[[260,"revo-grid",{"rowHeaders":[4,"row-headers"],"frameSize":[2,"frame-size"],"rowSize":[2,"row-size"],"colSize":[2,"col-size"],"range":[4],"readonly":[4],"resize":[4],"noHorizontalScrollTransfer":[4,"no-horizontal-scroll-transfer"],"canFocus":[4,"can-focus"],"useClipboard":[4,"use-clipboard"],"columns":[16],"source":[16],"pinnedTopSource":[16],"pinnedBottomSource":[16],"rowDefinitions":[16],"editors":[16],"applyOnClose":[4,"apply-on-close"],"plugins":[16],"columnTypes":[16],"theme":[1537],"rowClass":[513,"row-class"],"autoSizeColumn":[4,"auto-size-column"],"filter":[4],"sorting":[16],"focusTemplate":[16],"canMoveColumns":[4,"can-move-columns"],"trimmedRows":[16],"exporting":[4],"grouping":[16],"stretch":[8],"additionalData":[16],"disableVirtualX":[4,"disable-virtual-x"],"virtualX":[16],"disableVirtualY":[4,"disable-virtual-y"],"hideAttribution":[4,"hide-attribution"],"jobsBeforeRender":[16],"registerVNode":[16],"accessible":[4],"rtl":[4],"canDrag":[4,"can-drag"],"refresh":[64],"setDataAt":[64],"scrollToRow":[64],"scrollToColumnIndex":[64],"scrollToColumnProp":[64],"updateColumns":[64],"addTrimmed":[64],"scrollToCoordinate":[64],"setCellEdit":[64],"setCellsFocus":[64],"getSource":[64],"getVisibleSource":[64],"getSourceStore":[64],"getColumnStore":[64],"updateColumnSorting":[64],"clearSorting":[64],"getColumns":[64],"clearFocus":[64],"getPlugins":[64],"getFocused":[64],"getContentSize":[64],"getSelectedRange":[64],"refreshExtraElements":[64],"getProviders":[64]},[[5,"touchstart","mousedownHandle"],[5,"mousedown","mousedownHandle"],[5,"touchend","mouseupHandle"],[5,"mouseup","mouseupHandle"],[0,"rowdragstartinit","onRowDragStarted"],[0,"rowdragendinit","onRowDragEnd"],[0,"roworderchange","onRowOrderChange"],[0,"rowdragmoveinit","onRowDrag"],[0,"rowdragmousemove","onRowMouseMove"],[0,"celleditapply","onCellEdit"],[0,"rangeeditapply","onRangeEdit"],[0,"selectionchangeinit","onRangeChanged"],[0,"rowdropinit","onRowDropped"],[0,"beforeheaderclick","onHeaderClick"],[0,"beforecellfocusinit","onCellFocus"]],{"columnTypes":[{"columnTypesChanged":0}],"columns":[{"columnChanged":0}],"disableVirtualX":[{"disableVirtualXChanged":0}],"virtualX":[{"virtualXChanged":0}],"rowSize":[{"rowSizeChanged":0}],"theme":[{"themeChanged":0}],"source":[{"dataSourceChanged":0}],"pinnedBottomSource":[{"dataSourceChanged":0}],"pinnedTopSource":[{"dataSourceChanged":0}],"disableVirtualY":[{"disableVirtualYChanged":0}],"rowDefinitions":[{"rowDefChanged":0}],"trimmedRows":[{"trimmedRowsChanged":0}],"grouping":[{"groupingChanged":0}],"stretch":[{"applyStretch":0}],"filter":[{"applyFilter":0}],"sorting":[{"applySorting":0}],"rowHeaders":[{"rowHeadersChange":0}],"registerVNode":[{"registerOutsideVNodes":0}],"additionalData":[{"additionalDataChanged":0}],"rtl":[{"rtlChanged":0}],"plugins":[{"pluginsChanged":0}]}]]],["revogr-filter-panel.cjs",[[260,"revogr-filter-panel",{"filterNames":[16],"filterEntities":[16],"filterCaptions":[16],"disableDynamicFiltering":[4,"disable-dynamic-filtering"],"closeOnOutsideClick":[4,"close-on-outside-click"],"isFilterIdSet":[32],"filterId":[32],"currentFilterId":[32],"currentFilterType":[32],"changes":[32],"filterItems":[32],"draggedFilterId":[32],"dragOverFilterId":[32],"show":[64],"getChanges":[64]},[[5,"mousedown","onMouseDown"]]]]],["revogr-clipboard_3.cjs",[[0,"revogr-clipboard",{"readonly":[4],"doCopy":[64]},[[4,"paste","onPaste"],[4,"copy","copyStarted"],[4,"cut","cutStarted"]]],[0,"revogr-edit",{"editCell":[16],"column":[16],"editor":[16],"saveOnClose":[4,"save-on-close"],"additionalData":[8,"additional-data"],"cancelChanges":[64],"beforeDisconnect":[64]}],[0,"revogr-order-editor",{"parent":[16],"dimensionRow":[16],"dimensionCol":[16],"dataStore":[16],"rowType":[1,"row-type"],"dragStart":[64],"endOrder":[64],"clearOrder":[64]}]]],["revogr-data_4.cjs",[[260,"revogr-data",{"readonly":[4],"range":[4],"rowClass":[1,"row-class"],"additionalData":[8,"additional-data"],"rowSelectionStore":[16],"viewportRow":[16],"viewportCol":[16],"dimensionRow":[16],"colData":[16],"dataStore":[16],"type":[513],"colType":[513,"col-type"],"jobsBeforeRender":[16],"providers":[32],"updateCell":[64]},null,{"dataStore":[{"onDataStoreChange":0}],"colData":[{"onColDataChange":0}]}],[0,"revogr-header",{"viewportCol":[16],"dimensionCol":[16],"selectionStore":[16],"groups":[16],"groupingDepth":[2,"grouping-depth"],"readonly":[4],"canResize":[4,"can-resize"],"resizeHandler":[16],"colData":[16],"columnFilter":[4,"column-filter"],"type":[1],"additionalData":[8,"additional-data"]}],[260,"revogr-viewport-scroll",{"rowHeader":[4,"row-header"],"contentWidth":[2,"content-width"],"contentHeight":[2,"content-height"],"colType":[1,"col-type"],"noHorizontalScrollTransfer":[4,"no-horizontal-scroll-transfer"],"setScroll":[64],"changeScroll":[64],"applyScroll":[64]},[[0,"mousewheel-vertical","mousewheelVertical"],[0,"mousewheel-horizontal","mousewheelHorizontal"],[0,"scroll-coordinate","scrollApply"]]],[0,"vnode-html",{"redraw":[16]}]]],["revogr-attribution_7.cjs",[[0,"revogr-row-headers",{"height":[2],"dataPorts":[16],"headerProp":[16],"rowClass":[1,"row-class"],"resize":[4],"rowHeaderColumn":[16],"additionalData":[8,"additional-data"],"jobsBeforeRender":[16]}],[260,"revogr-overlay-selection",{"readonly":[4],"range":[4],"canDrag":[4,"can-drag"],"useClipboard":[4,"use-clipboard"],"selectionStore":[16],"dimensionRow":[16],"dimensionCol":[16],"dataStore":[16],"colData":[16],"lastCell":[16],"editors":[16],"applyChangesOnClose":[4,"apply-changes-on-close"],"additionalData":[8,"additional-data"],"isMobileDevice":[4,"is-mobile-device"]},[[5,"touchmove","onMouseMove"],[5,"mousemove","onMouseMove"],[5,"touchend","onMouseUp"],[5,"mouseup","onMouseUp"],[5,"mouseleave","onMouseUp"],[0,"dragstartcell","onCellDrag"],[4,"keyup","onKeyUp"],[4,"keydown","onKeyDown"]],{"selectionStore":[{"selectionServiceSet":0}],"dimensionRow":[{"createAutoFillService":0}],"dimensionCol":[{"createAutoFillService":0}],"dataStore":[{"columnServiceSet":0}],"colData":[{"columnServiceSet":0}]}],[0,"revogr-attribution"],[260,"revogr-focus",{"colType":[1,"col-type"],"rowType":[1,"row-type"],"selectionStore":[16],"dimensionRow":[16],"dimensionCol":[16],"dataStore":[16],"colData":[16],"focusTemplate":[16]}],[0,"revogr-scroll-virtual",{"dimension":[1],"realSize":[2,"real-size"],"virtualSize":[2,"virtual-size"],"clientSize":[2,"client-size"],"setScroll":[64],"changeScroll":[64]}],[0,"revogr-temp-range",{"selectionStore":[16],"dimensionRow":[16],"dimensionCol":[16]}],[0,"revogr-extra",{"nodes":[16],"update":[32],"refresh":[64]}]]]], options);
14
14
  };
15
15
 
16
16
  exports.setNonce = index.setNonce;
@@ -8,7 +8,7 @@ var column_service = require('./column.service-BNWNiJW3.js');
8
8
  var dimension_helpers = require('./dimension.helpers-B9HgANnM.js');
9
9
  var debounce = require('./debounce-CcpHiH2p.js');
10
10
  var viewport_helpers = require('./viewport.helpers-BND76K2j.js');
11
- var column_drag_plugin = require('./column.drag.plugin-Bjnv6C0x.js');
11
+ var column_drag_plugin = require('./column.drag.plugin-Cz-T4y3M.js');
12
12
  var viewport_store = require('./viewport.store-BscUCiUk.js');
13
13
  var theme_service = require('./theme.service-BgnxGIjK.js');
14
14
  var index$1 = require('./index-DxaSE5uZ.js');
@@ -232,6 +232,10 @@ class DataProvider {
232
232
  }
233
233
  }
234
234
 
235
+ const DEFAULT_VIRTUAL_X = ['rgCol'];
236
+ function isVirtualXDimension(type, disableVirtualX = false, virtualX = DEFAULT_VIRTUAL_X) {
237
+ return !disableVirtualX && virtualX.includes(type);
238
+ }
235
239
  /**
236
240
  * Dimension provider
237
241
  * Stores dimension information and custom sizes
@@ -242,7 +246,7 @@ class DimensionProvider {
242
246
  constructor(viewports, config) {
243
247
  this.viewports = viewports;
244
248
  const sizeChanged = debounce.debounce((k) => config.realSizeChanged(k), dimension_helpers.RESIZE_INTERVAL);
245
- this.stores = column_service.reduce([...column_service.rowTypes, ...column_service.columnTypes], (sources, t) => {
249
+ this.stores = [...column_service.rowTypes, ...column_service.columnTypes].reduce((sources, t) => {
246
250
  sources[t] = new column_drag_plugin.DimensionStore(t);
247
251
  sources[t].store.onChange('realSize', () => sizeChanged(t));
248
252
  return sources;
@@ -318,8 +322,9 @@ class DimensionProvider {
318
322
  * Applies new columns to the dimension provider
319
323
  * @param columns - new columns data
320
324
  * @param disableVirtualX - disable virtual data for X axis
325
+ * @param virtualX - column dimensions that should use virtual data
321
326
  */
322
- applyNewColumns(columns, disableVirtualX, keepOld = false) {
327
+ applyNewColumns(columns, disableVirtualX, keepOld = false, virtualX = DEFAULT_VIRTUAL_X) {
323
328
  // Apply new columns to dimension provider
324
329
  for (let type of column_service.columnTypes) {
325
330
  if (!keepOld) {
@@ -329,7 +334,7 @@ class DimensionProvider {
329
334
  // Get the new columns for the current type
330
335
  const items = columns[type];
331
336
  // Determine if virtual data should be disabled for the current type
332
- const noVirtual = type !== 'rgCol' || disableVirtualX;
337
+ const noVirtual = !isVirtualXDimension(type, disableVirtualX, virtualX);
333
338
  // Set the items count in the dimension provider
334
339
  this.stores[type].setStore({ count: items.length });
335
340
  // Set the custom sizes for the columns
@@ -435,6 +440,9 @@ class ViewportProvider {
435
440
  }
436
441
  }
437
442
 
443
+ function getViewportResizeDimension(colType, dimension) {
444
+ return dimension === 'rgCol' ? colType : dimension;
445
+ }
438
446
  /** Collect Column data */
439
447
  function gatherColumnData(data) {
440
448
  const colDimension = data.dimensions[data.colType].store;
@@ -494,20 +502,20 @@ class ViewportService {
494
502
  colStore,
495
503
  onHeaderresize: e => this.onColumnResize(val, e, colStore),
496
504
  };
497
- if (val === 'rgCol') {
498
- column.onResizeviewport = (e) => {
499
- var _a;
500
- const vpState = {
501
- clientSize: e.detail.size,
502
- };
503
- // virtual size will be handled by dimension provider if disabled
504
- if ((e.detail.dimension === 'rgRow' && !config.disableVirtualY)
505
- || (e.detail.dimension === 'rgCol' && !config.disableVirtualX)) {
506
- vpState.virtualSize = e.detail.size;
507
- }
508
- (_a = config.viewportProvider) === null || _a === void 0 ? void 0 : _a.setViewport(e.detail.dimension, vpState);
505
+ column.onResizeviewport = (e) => {
506
+ var _a;
507
+ const vpState = {
508
+ clientSize: e.detail.size,
509
509
  };
510
- }
510
+ const dimension = getViewportResizeDimension(val, e.detail.dimension);
511
+ const isVirtualColumn = column_service.columnTypes.includes(dimension)
512
+ && isVirtualXDimension(dimension, config.disableVirtualX, config.virtualX);
513
+ // Keep virtual dimensions in sync with their viewport size.
514
+ if ((dimension === 'rgRow' && !config.disableVirtualY) || isVirtualColumn) {
515
+ vpState.virtualSize = e.detail.size;
516
+ }
517
+ (_a = config.viewportProvider) === null || _a === void 0 ? void 0 : _a.setViewport(dimension, vpState);
518
+ };
511
519
  const colData = gatherColumnData(column);
512
520
  const columnSelectionStore = this.registerCol(colData.position.x, val);
513
521
  // render per each column data collections vertically
@@ -1557,6 +1565,12 @@ const RevoGridComponent = class {
1557
1565
  * Can be used for initial rendering performance improvement.
1558
1566
  */
1559
1567
  this.disableVirtualX = false;
1568
+ /**
1569
+ * Column dimensions that use X axis virtual rendering.
1570
+ * Defaults to regular columns only to preserve pinned column behavior.
1571
+ * Set to `['rgCol', 'colPinStart', 'colPinEnd']` to virtualize all column areas.
1572
+ */
1573
+ this.virtualX = ['rgCol'];
1560
1574
  /**
1561
1575
  * Disable lazy rendering mode for the `Y axis`.
1562
1576
  * Use when not many rows present and you don't need rerenader cells during scroll.
@@ -2008,7 +2022,7 @@ const RevoGridComponent = class {
2008
2022
  if (beforeSetEvent.defaultPrevented) {
2009
2023
  return;
2010
2024
  }
2011
- this.dimensionProvider.applyNewColumns(beforeSetEvent.detail.columns, this.disableVirtualX, init);
2025
+ this.dimensionProvider.applyNewColumns(beforeSetEvent.detail.columns, this.disableVirtualX, init, this.virtualX);
2012
2026
  const beforeApplyEvent = this.beforecolumnapplied.emit(columnGather);
2013
2027
  if (beforeApplyEvent.defaultPrevented) {
2014
2028
  return;
@@ -2084,12 +2098,18 @@ const RevoGridComponent = class {
2084
2098
  };
2085
2099
  this.viewport.setFocus(colType, pending.rowType, cell, cell);
2086
2100
  }
2087
- disableVirtualXChanged(newVal = false, prevVal = false) {
2101
+ refreshColumnsOnConfigChange(newVal, prevVal) {
2088
2102
  if (newVal === prevVal) {
2089
2103
  return;
2090
2104
  }
2091
2105
  this.columnChanged(this.columns);
2092
2106
  }
2107
+ disableVirtualXChanged(newVal = false, prevVal = false) {
2108
+ this.refreshColumnsOnConfigChange(newVal, prevVal);
2109
+ }
2110
+ virtualXChanged(newVal = ['rgCol'], prevVal = ['rgCol']) {
2111
+ this.refreshColumnsOnConfigChange(newVal, prevVal);
2112
+ }
2093
2113
  rowSizeChanged(s) {
2094
2114
  if (!this.dimensionProvider) {
2095
2115
  return;
@@ -2415,6 +2435,7 @@ const RevoGridComponent = class {
2415
2435
  selectionStoreConnector: this.selectionStoreConnector,
2416
2436
  noHorizontalScrollTransfer: this.noHorizontalScrollTransfer,
2417
2437
  disableVirtualX: this.disableVirtualX,
2438
+ virtualX: this.virtualX,
2418
2439
  disableVirtualY: this.disableVirtualY,
2419
2440
  resize: c => this.aftercolumnresize.emit(c),
2420
2441
  }, contentHeight);
@@ -2444,11 +2465,14 @@ const RevoGridComponent = class {
2444
2465
  // Render viewport data (vertical sections)
2445
2466
  view.dataPorts.forEach(data => {
2446
2467
  const key = `${data.type}_${view.type}`;
2447
- const dataView = (index.h("revogr-overlay-selection", Object.assign({}, data, { canDrag: this.canDrag && data.canDrag, isMobileDevice: isMobile, onSelectall: () => { var _a; return (_a = this.selectionStoreConnector) === null || _a === void 0 ? void 0 : _a.selectAll(); }, editors: this.editors, readonly: this.readonly, range: this.range, useClipboard: this.useClipboard, applyChangesOnClose: this.applyOnClose, additionalData: this.additionalData, slot: data.slot, onBeforenextvpfocus: (e) => { var _a; return (_a = this.selectionStoreConnector) === null || _a === void 0 ? void 0 : _a.beforeNextFocusCell(e.detail); }, onCanceledit: () => { var _a; return (_a = this.selectionStoreConnector) === null || _a === void 0 ? void 0 : _a.setEdit(false); }, onSetedit: ({ detail }) => {
2468
+ const dataView = (index.h("revogr-overlay-selection", Object.assign({}, data, { canDrag: this.canDrag && data.canDrag, isMobileDevice: isMobile, onSelectall: () => { var _a; return (_a = this.selectionStoreConnector) === null || _a === void 0 ? void 0 : _a.selectAll(); }, editors: this.editors, readonly: this.readonly, range: this.range, useClipboard: this.useClipboard, applyChangesOnClose: this.applyOnClose, additionalData: this.additionalData, slot: data.slot, onBeforenextvpfocus: (e) => { var _a; return (_a = this.selectionStoreConnector) === null || _a === void 0 ? void 0 : _a.beforeNextFocusCell(e.detail); }, onCanceledit: () => { var _a; return (_a = this.selectionStoreConnector) === null || _a === void 0 ? void 0 : _a.setEdit(false); }, onSetedit: e => {
2448
2469
  var _a;
2449
- const event = this.beforeeditstart.emit(detail);
2450
- if (!event.defaultPrevented) {
2451
- (_a = this.selectionStoreConnector) === null || _a === void 0 ? void 0 : _a.setEdit(detail.val);
2470
+ const event = this.beforeeditstart.emit(e.detail);
2471
+ if (event.defaultPrevented) {
2472
+ e.preventDefault();
2473
+ }
2474
+ else {
2475
+ (_a = this.selectionStoreConnector) === null || _a === void 0 ? void 0 : _a.setEdit(e.detail.val);
2452
2476
  }
2453
2477
  } }), index.h("revogr-data", Object.assign({}, data, { colType: view.type, key: key, readonly: this.readonly, range: this.range, rowClass: this.rowClass, rowSelectionStore: data.rowSelectionStore, additionalData: this.additionalData, jobsBeforeRender: this.jobsBeforeRender, slot: viewport_helpers.DATA_SLOT }), index.h("slot", { name: `data-${view.type}-${data.type}` })), index.h("revogr-temp-range", { selectionStore: data.selectionStore, dimensionRow: data.dimensionRow, dimensionCol: data.dimensionCol }), index.h("revogr-focus", { colData: data.colData, dataStore: data.dataStore, focusTemplate: this.focusTemplate, rowType: data.type, colType: view.type, selectionStore: data.selectionStore, dimensionRow: data.dimensionRow, dimensionCol: data.dimensionCol }, index.h("slot", { name: `focus-${view.type}-${data.type}` }))));
2454
2478
  dataViews.push(dataView);
@@ -2489,6 +2513,9 @@ const RevoGridComponent = class {
2489
2513
  "disableVirtualX": [{
2490
2514
  "disableVirtualXChanged": 0
2491
2515
  }],
2516
+ "virtualX": [{
2517
+ "virtualXChanged": 0
2518
+ }],
2492
2519
  "rowSize": [{
2493
2520
  "rowSizeChanged": 0
2494
2521
  }],
@@ -50,7 +50,7 @@ var patchCloneNodeFix = (HTMLElementPrototype) => {
50
50
 
51
51
  patchBrowser().then(async (options) => {
52
52
  await appGlobals.globalScripts();
53
- return index.bootstrapLazy([["revo-grid.cjs",[[260,"revo-grid",{"rowHeaders":[4,"row-headers"],"frameSize":[2,"frame-size"],"rowSize":[2,"row-size"],"colSize":[2,"col-size"],"range":[4],"readonly":[4],"resize":[4],"noHorizontalScrollTransfer":[4,"no-horizontal-scroll-transfer"],"canFocus":[4,"can-focus"],"useClipboard":[4,"use-clipboard"],"columns":[16],"source":[16],"pinnedTopSource":[16],"pinnedBottomSource":[16],"rowDefinitions":[16],"editors":[16],"applyOnClose":[4,"apply-on-close"],"plugins":[16],"columnTypes":[16],"theme":[1537],"rowClass":[513,"row-class"],"autoSizeColumn":[4,"auto-size-column"],"filter":[4],"sorting":[16],"focusTemplate":[16],"canMoveColumns":[4,"can-move-columns"],"trimmedRows":[16],"exporting":[4],"grouping":[16],"stretch":[8],"additionalData":[16],"disableVirtualX":[4,"disable-virtual-x"],"disableVirtualY":[4,"disable-virtual-y"],"hideAttribution":[4,"hide-attribution"],"jobsBeforeRender":[16],"registerVNode":[16],"accessible":[4],"rtl":[4],"canDrag":[4,"can-drag"],"refresh":[64],"setDataAt":[64],"scrollToRow":[64],"scrollToColumnIndex":[64],"scrollToColumnProp":[64],"updateColumns":[64],"addTrimmed":[64],"scrollToCoordinate":[64],"setCellEdit":[64],"setCellsFocus":[64],"getSource":[64],"getVisibleSource":[64],"getSourceStore":[64],"getColumnStore":[64],"updateColumnSorting":[64],"clearSorting":[64],"getColumns":[64],"clearFocus":[64],"getPlugins":[64],"getFocused":[64],"getContentSize":[64],"getSelectedRange":[64],"refreshExtraElements":[64],"getProviders":[64]},[[5,"touchstart","mousedownHandle"],[5,"mousedown","mousedownHandle"],[5,"touchend","mouseupHandle"],[5,"mouseup","mouseupHandle"],[0,"rowdragstartinit","onRowDragStarted"],[0,"rowdragendinit","onRowDragEnd"],[0,"roworderchange","onRowOrderChange"],[0,"rowdragmoveinit","onRowDrag"],[0,"rowdragmousemove","onRowMouseMove"],[0,"celleditapply","onCellEdit"],[0,"rangeeditapply","onRangeEdit"],[0,"selectionchangeinit","onRangeChanged"],[0,"rowdropinit","onRowDropped"],[0,"beforeheaderclick","onHeaderClick"],[0,"beforecellfocusinit","onCellFocus"]],{"columnTypes":[{"columnTypesChanged":0}],"columns":[{"columnChanged":0}],"disableVirtualX":[{"disableVirtualXChanged":0}],"rowSize":[{"rowSizeChanged":0}],"theme":[{"themeChanged":0}],"source":[{"dataSourceChanged":0}],"pinnedBottomSource":[{"dataSourceChanged":0}],"pinnedTopSource":[{"dataSourceChanged":0}],"disableVirtualY":[{"disableVirtualYChanged":0}],"rowDefinitions":[{"rowDefChanged":0}],"trimmedRows":[{"trimmedRowsChanged":0}],"grouping":[{"groupingChanged":0}],"stretch":[{"applyStretch":0}],"filter":[{"applyFilter":0}],"sorting":[{"applySorting":0}],"rowHeaders":[{"rowHeadersChange":0}],"registerVNode":[{"registerOutsideVNodes":0}],"additionalData":[{"additionalDataChanged":0}],"rtl":[{"rtlChanged":0}],"plugins":[{"pluginsChanged":0}]}]]],["revogr-filter-panel.cjs",[[260,"revogr-filter-panel",{"filterNames":[16],"filterEntities":[16],"filterCaptions":[16],"disableDynamicFiltering":[4,"disable-dynamic-filtering"],"closeOnOutsideClick":[4,"close-on-outside-click"],"isFilterIdSet":[32],"filterId":[32],"currentFilterId":[32],"currentFilterType":[32],"changes":[32],"filterItems":[32],"draggedFilterId":[32],"dragOverFilterId":[32],"show":[64],"getChanges":[64]},[[5,"mousedown","onMouseDown"]]]]],["revogr-clipboard_3.cjs",[[0,"revogr-clipboard",{"readonly":[4],"doCopy":[64]},[[4,"paste","onPaste"],[4,"copy","copyStarted"],[4,"cut","cutStarted"]]],[0,"revogr-edit",{"editCell":[16],"column":[16],"editor":[16],"saveOnClose":[4,"save-on-close"],"additionalData":[8,"additional-data"],"cancelChanges":[64],"beforeDisconnect":[64]}],[0,"revogr-order-editor",{"parent":[16],"dimensionRow":[16],"dimensionCol":[16],"dataStore":[16],"rowType":[1,"row-type"],"dragStart":[64],"endOrder":[64],"clearOrder":[64]}]]],["revogr-data_4.cjs",[[260,"revogr-data",{"readonly":[4],"range":[4],"rowClass":[1,"row-class"],"additionalData":[8,"additional-data"],"rowSelectionStore":[16],"viewportRow":[16],"viewportCol":[16],"dimensionRow":[16],"colData":[16],"dataStore":[16],"type":[513],"colType":[513,"col-type"],"jobsBeforeRender":[16],"providers":[32],"updateCell":[64]},null,{"dataStore":[{"onDataStoreChange":0}],"colData":[{"onColDataChange":0}]}],[0,"revogr-header",{"viewportCol":[16],"dimensionCol":[16],"selectionStore":[16],"groups":[16],"groupingDepth":[2,"grouping-depth"],"readonly":[4],"canResize":[4,"can-resize"],"resizeHandler":[16],"colData":[16],"columnFilter":[4,"column-filter"],"type":[1],"additionalData":[8,"additional-data"]}],[260,"revogr-viewport-scroll",{"rowHeader":[4,"row-header"],"contentWidth":[2,"content-width"],"contentHeight":[2,"content-height"],"colType":[1,"col-type"],"noHorizontalScrollTransfer":[4,"no-horizontal-scroll-transfer"],"setScroll":[64],"changeScroll":[64],"applyScroll":[64]},[[0,"mousewheel-vertical","mousewheelVertical"],[0,"mousewheel-horizontal","mousewheelHorizontal"],[0,"scroll-coordinate","scrollApply"]]],[0,"vnode-html",{"redraw":[16]}]]],["revogr-attribution_7.cjs",[[0,"revogr-row-headers",{"height":[2],"dataPorts":[16],"headerProp":[16],"rowClass":[1,"row-class"],"resize":[4],"rowHeaderColumn":[16],"additionalData":[8,"additional-data"],"jobsBeforeRender":[16]}],[260,"revogr-overlay-selection",{"readonly":[4],"range":[4],"canDrag":[4,"can-drag"],"useClipboard":[4,"use-clipboard"],"selectionStore":[16],"dimensionRow":[16],"dimensionCol":[16],"dataStore":[16],"colData":[16],"lastCell":[16],"editors":[16],"applyChangesOnClose":[4,"apply-changes-on-close"],"additionalData":[8,"additional-data"],"isMobileDevice":[4,"is-mobile-device"]},[[5,"touchmove","onMouseMove"],[5,"mousemove","onMouseMove"],[5,"touchend","onMouseUp"],[5,"mouseup","onMouseUp"],[5,"mouseleave","onMouseUp"],[0,"dragstartcell","onCellDrag"],[4,"keyup","onKeyUp"],[4,"keydown","onKeyDown"]],{"selectionStore":[{"selectionServiceSet":0}],"dimensionRow":[{"createAutoFillService":0}],"dimensionCol":[{"createAutoFillService":0}],"dataStore":[{"columnServiceSet":0}],"colData":[{"columnServiceSet":0}]}],[0,"revogr-attribution"],[260,"revogr-focus",{"colType":[1,"col-type"],"rowType":[1,"row-type"],"selectionStore":[16],"dimensionRow":[16],"dimensionCol":[16],"dataStore":[16],"colData":[16],"focusTemplate":[16]}],[0,"revogr-scroll-virtual",{"dimension":[1],"realSize":[2,"real-size"],"virtualSize":[2,"virtual-size"],"clientSize":[2,"client-size"],"setScroll":[64],"changeScroll":[64]}],[0,"revogr-temp-range",{"selectionStore":[16],"dimensionRow":[16],"dimensionCol":[16]}],[0,"revogr-extra",{"nodes":[16],"update":[32],"refresh":[64]}]]]], options);
53
+ return index.bootstrapLazy([["revo-grid.cjs",[[260,"revo-grid",{"rowHeaders":[4,"row-headers"],"frameSize":[2,"frame-size"],"rowSize":[2,"row-size"],"colSize":[2,"col-size"],"range":[4],"readonly":[4],"resize":[4],"noHorizontalScrollTransfer":[4,"no-horizontal-scroll-transfer"],"canFocus":[4,"can-focus"],"useClipboard":[4,"use-clipboard"],"columns":[16],"source":[16],"pinnedTopSource":[16],"pinnedBottomSource":[16],"rowDefinitions":[16],"editors":[16],"applyOnClose":[4,"apply-on-close"],"plugins":[16],"columnTypes":[16],"theme":[1537],"rowClass":[513,"row-class"],"autoSizeColumn":[4,"auto-size-column"],"filter":[4],"sorting":[16],"focusTemplate":[16],"canMoveColumns":[4,"can-move-columns"],"trimmedRows":[16],"exporting":[4],"grouping":[16],"stretch":[8],"additionalData":[16],"disableVirtualX":[4,"disable-virtual-x"],"virtualX":[16],"disableVirtualY":[4,"disable-virtual-y"],"hideAttribution":[4,"hide-attribution"],"jobsBeforeRender":[16],"registerVNode":[16],"accessible":[4],"rtl":[4],"canDrag":[4,"can-drag"],"refresh":[64],"setDataAt":[64],"scrollToRow":[64],"scrollToColumnIndex":[64],"scrollToColumnProp":[64],"updateColumns":[64],"addTrimmed":[64],"scrollToCoordinate":[64],"setCellEdit":[64],"setCellsFocus":[64],"getSource":[64],"getVisibleSource":[64],"getSourceStore":[64],"getColumnStore":[64],"updateColumnSorting":[64],"clearSorting":[64],"getColumns":[64],"clearFocus":[64],"getPlugins":[64],"getFocused":[64],"getContentSize":[64],"getSelectedRange":[64],"refreshExtraElements":[64],"getProviders":[64]},[[5,"touchstart","mousedownHandle"],[5,"mousedown","mousedownHandle"],[5,"touchend","mouseupHandle"],[5,"mouseup","mouseupHandle"],[0,"rowdragstartinit","onRowDragStarted"],[0,"rowdragendinit","onRowDragEnd"],[0,"roworderchange","onRowOrderChange"],[0,"rowdragmoveinit","onRowDrag"],[0,"rowdragmousemove","onRowMouseMove"],[0,"celleditapply","onCellEdit"],[0,"rangeeditapply","onRangeEdit"],[0,"selectionchangeinit","onRangeChanged"],[0,"rowdropinit","onRowDropped"],[0,"beforeheaderclick","onHeaderClick"],[0,"beforecellfocusinit","onCellFocus"]],{"columnTypes":[{"columnTypesChanged":0}],"columns":[{"columnChanged":0}],"disableVirtualX":[{"disableVirtualXChanged":0}],"virtualX":[{"virtualXChanged":0}],"rowSize":[{"rowSizeChanged":0}],"theme":[{"themeChanged":0}],"source":[{"dataSourceChanged":0}],"pinnedBottomSource":[{"dataSourceChanged":0}],"pinnedTopSource":[{"dataSourceChanged":0}],"disableVirtualY":[{"disableVirtualYChanged":0}],"rowDefinitions":[{"rowDefChanged":0}],"trimmedRows":[{"trimmedRowsChanged":0}],"grouping":[{"groupingChanged":0}],"stretch":[{"applyStretch":0}],"filter":[{"applyFilter":0}],"sorting":[{"applySorting":0}],"rowHeaders":[{"rowHeadersChange":0}],"registerVNode":[{"registerOutsideVNodes":0}],"additionalData":[{"additionalDataChanged":0}],"rtl":[{"rtlChanged":0}],"plugins":[{"pluginsChanged":0}]}]]],["revogr-filter-panel.cjs",[[260,"revogr-filter-panel",{"filterNames":[16],"filterEntities":[16],"filterCaptions":[16],"disableDynamicFiltering":[4,"disable-dynamic-filtering"],"closeOnOutsideClick":[4,"close-on-outside-click"],"isFilterIdSet":[32],"filterId":[32],"currentFilterId":[32],"currentFilterType":[32],"changes":[32],"filterItems":[32],"draggedFilterId":[32],"dragOverFilterId":[32],"show":[64],"getChanges":[64]},[[5,"mousedown","onMouseDown"]]]]],["revogr-clipboard_3.cjs",[[0,"revogr-clipboard",{"readonly":[4],"doCopy":[64]},[[4,"paste","onPaste"],[4,"copy","copyStarted"],[4,"cut","cutStarted"]]],[0,"revogr-edit",{"editCell":[16],"column":[16],"editor":[16],"saveOnClose":[4,"save-on-close"],"additionalData":[8,"additional-data"],"cancelChanges":[64],"beforeDisconnect":[64]}],[0,"revogr-order-editor",{"parent":[16],"dimensionRow":[16],"dimensionCol":[16],"dataStore":[16],"rowType":[1,"row-type"],"dragStart":[64],"endOrder":[64],"clearOrder":[64]}]]],["revogr-data_4.cjs",[[260,"revogr-data",{"readonly":[4],"range":[4],"rowClass":[1,"row-class"],"additionalData":[8,"additional-data"],"rowSelectionStore":[16],"viewportRow":[16],"viewportCol":[16],"dimensionRow":[16],"colData":[16],"dataStore":[16],"type":[513],"colType":[513,"col-type"],"jobsBeforeRender":[16],"providers":[32],"updateCell":[64]},null,{"dataStore":[{"onDataStoreChange":0}],"colData":[{"onColDataChange":0}]}],[0,"revogr-header",{"viewportCol":[16],"dimensionCol":[16],"selectionStore":[16],"groups":[16],"groupingDepth":[2,"grouping-depth"],"readonly":[4],"canResize":[4,"can-resize"],"resizeHandler":[16],"colData":[16],"columnFilter":[4,"column-filter"],"type":[1],"additionalData":[8,"additional-data"]}],[260,"revogr-viewport-scroll",{"rowHeader":[4,"row-header"],"contentWidth":[2,"content-width"],"contentHeight":[2,"content-height"],"colType":[1,"col-type"],"noHorizontalScrollTransfer":[4,"no-horizontal-scroll-transfer"],"setScroll":[64],"changeScroll":[64],"applyScroll":[64]},[[0,"mousewheel-vertical","mousewheelVertical"],[0,"mousewheel-horizontal","mousewheelHorizontal"],[0,"scroll-coordinate","scrollApply"]]],[0,"vnode-html",{"redraw":[16]}]]],["revogr-attribution_7.cjs",[[0,"revogr-row-headers",{"height":[2],"dataPorts":[16],"headerProp":[16],"rowClass":[1,"row-class"],"resize":[4],"rowHeaderColumn":[16],"additionalData":[8,"additional-data"],"jobsBeforeRender":[16]}],[260,"revogr-overlay-selection",{"readonly":[4],"range":[4],"canDrag":[4,"can-drag"],"useClipboard":[4,"use-clipboard"],"selectionStore":[16],"dimensionRow":[16],"dimensionCol":[16],"dataStore":[16],"colData":[16],"lastCell":[16],"editors":[16],"applyChangesOnClose":[4,"apply-changes-on-close"],"additionalData":[8,"additional-data"],"isMobileDevice":[4,"is-mobile-device"]},[[5,"touchmove","onMouseMove"],[5,"mousemove","onMouseMove"],[5,"touchend","onMouseUp"],[5,"mouseup","onMouseUp"],[5,"mouseleave","onMouseUp"],[0,"dragstartcell","onCellDrag"],[4,"keyup","onKeyUp"],[4,"keydown","onKeyDown"]],{"selectionStore":[{"selectionServiceSet":0}],"dimensionRow":[{"createAutoFillService":0}],"dimensionCol":[{"createAutoFillService":0}],"dataStore":[{"columnServiceSet":0}],"colData":[{"columnServiceSet":0}]}],[0,"revogr-attribution"],[260,"revogr-focus",{"colType":[1,"col-type"],"rowType":[1,"row-type"],"selectionStore":[16],"dimensionRow":[16],"dimensionCol":[16],"dataStore":[16],"colData":[16],"focusTemplate":[16]}],[0,"revogr-scroll-virtual",{"dimension":[1],"realSize":[2,"real-size"],"virtualSize":[2,"virtual-size"],"clientSize":[2,"client-size"],"setScroll":[64],"changeScroll":[64]}],[0,"revogr-temp-range",{"selectionStore":[16],"dimensionRow":[16],"dimensionCol":[16]}],[0,"revogr-extra",{"nodes":[16],"update":[32],"refresh":[64]}]]]], options);
54
54
  });
55
55
 
56
56
  exports.setNonce = index.setNonce;
@@ -298,6 +298,7 @@ class KeyboardService {
298
298
  if (typeof (editCell === null || editCell === void 0 ? void 0 : editCell.val) !== 'string') {
299
299
  return false;
300
300
  }
301
+ e.preventDefault();
301
302
  this.sv.selectionStore.set('edit', Object.assign(Object.assign({}, editCell), { val: `${editCell.val}${e.key}` }));
302
303
  return true;
303
304
  }
@@ -359,7 +360,9 @@ class KeyboardService {
359
360
  }
360
361
  // pressed letter key
361
362
  if (!edit_utils.isShortcutModifier(e) && e.key.length === 1) {
362
- this.sv.change(e.key);
363
+ if (this.sv.change(e.key)) {
364
+ e.preventDefault();
365
+ }
363
366
  return;
364
367
  }
365
368
  // pressed arrow, change selection position
@@ -788,12 +791,7 @@ const OverlaySelection = class {
788
791
  return this.doFocus(f, f, changes);
789
792
  }
790
793
  },
791
- change: val => {
792
- if (this.readonly) {
793
- return;
794
- }
795
- this.doEdit(val);
796
- },
794
+ change: val => this.doEdit(val),
797
795
  cancel: async () => {
798
796
  var _a;
799
797
  await ((_a = this.revogrEdit) === null || _a === void 0 ? void 0 : _a.cancelChanges());
@@ -922,9 +920,9 @@ const OverlaySelection = class {
922
920
  nodes.push(index.h("revogr-order-editor", { ref: e => (this.orderEditor = e), dataStore: this.dataStore, dimensionRow: this.dimensionRow, dimensionCol: this.dimensionCol, parent: this.element, rowType: this.types.rowType, onRowdragstartinit: e => this.rowDragStart(e) }));
923
921
  }
924
922
  }
925
- return (index.h(index.Host, { key: 'ff303c39d59e4ef217421fa11b9a80de07311b07', class: { mobile: this.isMobileDevice }, onDblClick: (e) => this.onElementDblClick(e), onMouseDown: (e) => this.onElementMouseDown(e), onTouchStart: (e) => this.onElementMouseDown(e, true), onCloseedit: (e) => this.closeEdit(e),
923
+ return (index.h(index.Host, { key: '2d8dc4fd40a883fe59b24b2cfac1c370b9f0ac16', class: { mobile: this.isMobileDevice }, onDblClick: (e) => this.onElementDblClick(e), onMouseDown: (e) => this.onElementMouseDown(e), onTouchStart: (e) => this.onElementMouseDown(e, true), onCloseedit: (e) => this.closeEdit(e),
926
924
  // it's done to be able to throw events from different levels, not just from editor
927
- onCelledit: (e) => this.onEditCell(e) }, nodes, index.h("slot", { key: '3cbe4c3ad7d447f779e9e20f73eec2e3107275e0', name: "data" })));
925
+ onCelledit: (e) => this.onEditCell(e) }, nodes, index.h("slot", { key: '8ad5df55904ca6a8b2fb0e69c5f608ec7264a0f1', name: "data" })));
928
926
  }
929
927
  /**
930
928
  * Executes the focus operation on the specified range of cells.
@@ -1026,15 +1024,16 @@ const OverlaySelection = class {
1026
1024
  * Start cell editing
1027
1025
  */
1028
1026
  doEdit(val = '') {
1029
- var _a;
1030
- if (this.canEdit()) {
1031
- const focus = this.selectionStore.get('focus');
1032
- if (!focus) {
1033
- return;
1034
- }
1035
- const data = this.columnService.getSaveData(focus.y, focus.x);
1036
- (_a = this.setEdit) === null || _a === void 0 ? void 0 : _a.emit(Object.assign(Object.assign({}, data), { val }));
1027
+ if (!this.canEdit()) {
1028
+ return false;
1029
+ }
1030
+ const focus = this.selectionStore.get('focus');
1031
+ if (!focus) {
1032
+ return false;
1037
1033
  }
1034
+ const data = this.columnService.getSaveData(focus.y, focus.x);
1035
+ const event = this.setEdit.emit(Object.assign(Object.assign({}, data), { val }));
1036
+ return !event.defaultPrevented;
1038
1037
  }
1039
1038
  /**
1040
1039
  * Close editor event triggered
@@ -30,6 +30,7 @@ export class KeyboardService {
30
30
  if (typeof (editCell === null || editCell === void 0 ? void 0 : editCell.val) !== 'string') {
31
31
  return false;
32
32
  }
33
+ e.preventDefault();
33
34
  this.sv.selectionStore.set('edit', Object.assign(Object.assign({}, editCell), { val: `${editCell.val}${e.key}` }));
34
35
  return true;
35
36
  }
@@ -91,7 +92,9 @@ export class KeyboardService {
91
92
  }
92
93
  // pressed letter key
93
94
  if (!isShortcutModifier(e) && e.key.length === 1) {
94
- this.sv.change(e.key);
95
+ if (this.sv.change(e.key)) {
96
+ e.preventDefault();
97
+ }
95
98
  return;
96
99
  }
97
100
  // pressed arrow, change selection position
@@ -100,12 +100,7 @@ export class OverlaySelection {
100
100
  return this.doFocus(f, f, changes);
101
101
  }
102
102
  },
103
- change: val => {
104
- if (this.readonly) {
105
- return;
106
- }
107
- this.doEdit(val);
108
- },
103
+ change: val => this.doEdit(val),
109
104
  cancel: async () => {
110
105
  var _a;
111
106
  await ((_a = this.revogrEdit) === null || _a === void 0 ? void 0 : _a.cancelChanges());
@@ -234,9 +229,9 @@ export class OverlaySelection {
234
229
  nodes.push(h("revogr-order-editor", { ref: e => (this.orderEditor = e), dataStore: this.dataStore, dimensionRow: this.dimensionRow, dimensionCol: this.dimensionCol, parent: this.element, rowType: this.types.rowType, onRowdragstartinit: e => this.rowDragStart(e) }));
235
230
  }
236
231
  }
237
- return (h(Host, { key: 'ff303c39d59e4ef217421fa11b9a80de07311b07', class: { mobile: this.isMobileDevice }, onDblClick: (e) => this.onElementDblClick(e), onMouseDown: (e) => this.onElementMouseDown(e), onTouchStart: (e) => this.onElementMouseDown(e, true), onCloseedit: (e) => this.closeEdit(e),
232
+ return (h(Host, { key: '2d8dc4fd40a883fe59b24b2cfac1c370b9f0ac16', class: { mobile: this.isMobileDevice }, onDblClick: (e) => this.onElementDblClick(e), onMouseDown: (e) => this.onElementMouseDown(e), onTouchStart: (e) => this.onElementMouseDown(e, true), onCloseedit: (e) => this.closeEdit(e),
238
233
  // it's done to be able to throw events from different levels, not just from editor
239
- onCelledit: (e) => this.onEditCell(e) }, nodes, h("slot", { key: '3cbe4c3ad7d447f779e9e20f73eec2e3107275e0', name: "data" })));
234
+ onCelledit: (e) => this.onEditCell(e) }, nodes, h("slot", { key: '8ad5df55904ca6a8b2fb0e69c5f608ec7264a0f1', name: "data" })));
240
235
  }
241
236
  /**
242
237
  * Executes the focus operation on the specified range of cells.
@@ -338,15 +333,16 @@ export class OverlaySelection {
338
333
  * Start cell editing
339
334
  */
340
335
  doEdit(val = '') {
341
- var _a;
342
- if (this.canEdit()) {
343
- const focus = this.selectionStore.get('focus');
344
- if (!focus) {
345
- return;
346
- }
347
- const data = this.columnService.getSaveData(focus.y, focus.x);
348
- (_a = this.setEdit) === null || _a === void 0 ? void 0 : _a.emit(Object.assign(Object.assign({}, data), { val }));
336
+ if (!this.canEdit()) {
337
+ return false;
338
+ }
339
+ const focus = this.selectionStore.get('focus');
340
+ if (!focus) {
341
+ return false;
349
342
  }
343
+ const data = this.columnService.getSaveData(focus.y, focus.x);
344
+ const event = this.setEdit.emit(Object.assign(Object.assign({}, data), { val }));
345
+ return !event.defaultPrevented;
350
346
  }
351
347
  /**
352
348
  * Close editor event triggered
@@ -170,6 +170,12 @@ export class RevoGridComponent {
170
170
  * Can be used for initial rendering performance improvement.
171
171
  */
172
172
  this.disableVirtualX = false;
173
+ /**
174
+ * Column dimensions that use X axis virtual rendering.
175
+ * Defaults to regular columns only to preserve pinned column behavior.
176
+ * Set to `['rgCol', 'colPinStart', 'colPinEnd']` to virtualize all column areas.
177
+ */
178
+ this.virtualX = ['rgCol'];
173
179
  /**
174
180
  * Disable lazy rendering mode for the `Y axis`.
175
181
  * Use when not many rows present and you don't need rerenader cells during scroll.
@@ -621,7 +627,7 @@ export class RevoGridComponent {
621
627
  if (beforeSetEvent.defaultPrevented) {
622
628
  return;
623
629
  }
624
- this.dimensionProvider.applyNewColumns(beforeSetEvent.detail.columns, this.disableVirtualX, init);
630
+ this.dimensionProvider.applyNewColumns(beforeSetEvent.detail.columns, this.disableVirtualX, init, this.virtualX);
625
631
  const beforeApplyEvent = this.beforecolumnapplied.emit(columnGather);
626
632
  if (beforeApplyEvent.defaultPrevented) {
627
633
  return;
@@ -697,12 +703,18 @@ export class RevoGridComponent {
697
703
  };
698
704
  this.viewport.setFocus(colType, pending.rowType, cell, cell);
699
705
  }
700
- disableVirtualXChanged(newVal = false, prevVal = false) {
706
+ refreshColumnsOnConfigChange(newVal, prevVal) {
701
707
  if (newVal === prevVal) {
702
708
  return;
703
709
  }
704
710
  this.columnChanged(this.columns);
705
711
  }
712
+ disableVirtualXChanged(newVal = false, prevVal = false) {
713
+ this.refreshColumnsOnConfigChange(newVal, prevVal);
714
+ }
715
+ virtualXChanged(newVal = ['rgCol'], prevVal = ['rgCol']) {
716
+ this.refreshColumnsOnConfigChange(newVal, prevVal);
717
+ }
706
718
  rowSizeChanged(s) {
707
719
  if (!this.dimensionProvider) {
708
720
  return;
@@ -1028,6 +1040,7 @@ export class RevoGridComponent {
1028
1040
  selectionStoreConnector: this.selectionStoreConnector,
1029
1041
  noHorizontalScrollTransfer: this.noHorizontalScrollTransfer,
1030
1042
  disableVirtualX: this.disableVirtualX,
1043
+ virtualX: this.virtualX,
1031
1044
  disableVirtualY: this.disableVirtualY,
1032
1045
  resize: c => this.aftercolumnresize.emit(c),
1033
1046
  }, contentHeight);
@@ -1057,11 +1070,14 @@ export class RevoGridComponent {
1057
1070
  // Render viewport data (vertical sections)
1058
1071
  view.dataPorts.forEach(data => {
1059
1072
  const key = `${data.type}_${view.type}`;
1060
- const dataView = (h("revogr-overlay-selection", Object.assign({}, data, { canDrag: this.canDrag && data.canDrag, isMobileDevice: isMobile, onSelectall: () => { var _a; return (_a = this.selectionStoreConnector) === null || _a === void 0 ? void 0 : _a.selectAll(); }, editors: this.editors, readonly: this.readonly, range: this.range, useClipboard: this.useClipboard, applyChangesOnClose: this.applyOnClose, additionalData: this.additionalData, slot: data.slot, onBeforenextvpfocus: (e) => { var _a; return (_a = this.selectionStoreConnector) === null || _a === void 0 ? void 0 : _a.beforeNextFocusCell(e.detail); }, onCanceledit: () => { var _a; return (_a = this.selectionStoreConnector) === null || _a === void 0 ? void 0 : _a.setEdit(false); }, onSetedit: ({ detail }) => {
1073
+ const dataView = (h("revogr-overlay-selection", Object.assign({}, data, { canDrag: this.canDrag && data.canDrag, isMobileDevice: isMobile, onSelectall: () => { var _a; return (_a = this.selectionStoreConnector) === null || _a === void 0 ? void 0 : _a.selectAll(); }, editors: this.editors, readonly: this.readonly, range: this.range, useClipboard: this.useClipboard, applyChangesOnClose: this.applyOnClose, additionalData: this.additionalData, slot: data.slot, onBeforenextvpfocus: (e) => { var _a; return (_a = this.selectionStoreConnector) === null || _a === void 0 ? void 0 : _a.beforeNextFocusCell(e.detail); }, onCanceledit: () => { var _a; return (_a = this.selectionStoreConnector) === null || _a === void 0 ? void 0 : _a.setEdit(false); }, onSetedit: e => {
1061
1074
  var _a;
1062
- const event = this.beforeeditstart.emit(detail);
1063
- if (!event.defaultPrevented) {
1064
- (_a = this.selectionStoreConnector) === null || _a === void 0 ? void 0 : _a.setEdit(detail.val);
1075
+ const event = this.beforeeditstart.emit(e.detail);
1076
+ if (event.defaultPrevented) {
1077
+ e.preventDefault();
1078
+ }
1079
+ else {
1080
+ (_a = this.selectionStoreConnector) === null || _a === void 0 ? void 0 : _a.setEdit(e.detail.val);
1065
1081
  }
1066
1082
  } }), h("revogr-data", Object.assign({}, data, { colType: view.type, key: key, readonly: this.readonly, range: this.range, rowClass: this.rowClass, rowSelectionStore: data.rowSelectionStore, additionalData: this.additionalData, jobsBeforeRender: this.jobsBeforeRender, slot: DATA_SLOT }), h("slot", { name: `data-${view.type}-${data.type}` })), h("revogr-temp-range", { selectionStore: data.selectionStore, dimensionRow: data.dimensionRow, dimensionCol: data.dimensionCol }), h("revogr-focus", { colData: data.colData, dataStore: data.dataStore, focusTemplate: this.focusTemplate, rowType: data.type, colType: view.type, selectionStore: data.selectionStore, dimensionRow: data.dimensionRow, dimensionCol: data.dimensionCol }, h("slot", { name: `focus-${view.type}-${data.type}` }))));
1067
1083
  dataViews.push(dataView);
@@ -1844,6 +1860,31 @@ export class RevoGridComponent {
1844
1860
  "attribute": "disable-virtual-x",
1845
1861
  "defaultValue": "false"
1846
1862
  },
1863
+ "virtualX": {
1864
+ "type": "unknown",
1865
+ "mutable": false,
1866
+ "complexType": {
1867
+ "original": "DimensionCols[]",
1868
+ "resolved": "DimensionCols[]",
1869
+ "references": {
1870
+ "DimensionCols": {
1871
+ "location": "import",
1872
+ "path": "@type",
1873
+ "id": "src/types/index.ts::DimensionCols",
1874
+ "referenceLocation": "DimensionCols"
1875
+ }
1876
+ }
1877
+ },
1878
+ "required": false,
1879
+ "optional": false,
1880
+ "docs": {
1881
+ "tags": [],
1882
+ "text": "Column dimensions that use X axis virtual rendering.\nDefaults to regular columns only to preserve pinned column behavior.\nSet to `['rgCol', 'colPinStart', 'colPinEnd']` to virtualize all column areas."
1883
+ },
1884
+ "getter": false,
1885
+ "setter": false,
1886
+ "defaultValue": "['rgCol']"
1887
+ },
1847
1888
  "disableVirtualY": {
1848
1889
  "type": "boolean",
1849
1890
  "mutable": false,
@@ -3685,6 +3726,9 @@ export class RevoGridComponent {
3685
3726
  }, {
3686
3727
  "propName": "disableVirtualX",
3687
3728
  "methodName": "disableVirtualXChanged"
3729
+ }, {
3730
+ "propName": "virtualX",
3731
+ "methodName": "virtualXChanged"
3688
3732
  }, {
3689
3733
  "propName": "rowSize",
3690
3734
  "methodName": "rowSizeChanged"
@@ -1,8 +1,12 @@
1
1
  /*!
2
2
  * Built by Revolist OU ❤️
3
3
  */
4
+ import { isVirtualXDimension } from "../../services/dimension.provider";
4
5
  import { columnTypes, getSourceItem, getVisibleSourceItem, rowTypes } from "../../store/index";
5
6
  import { CONTENT_SLOT, FOOTER_SLOT, HEADER_SLOT, viewportDataPartition } from "./viewport.helpers";
7
+ export function getViewportResizeDimension(colType, dimension) {
8
+ return dimension === 'rgCol' ? colType : dimension;
9
+ }
6
10
  /** Collect Column data */
7
11
  function gatherColumnData(data) {
8
12
  const colDimension = data.dimensions[data.colType].store;
@@ -62,20 +66,20 @@ export default class ViewportService {
62
66
  colStore,
63
67
  onHeaderresize: e => this.onColumnResize(val, e, colStore),
64
68
  };
65
- if (val === 'rgCol') {
66
- column.onResizeviewport = (e) => {
67
- var _a;
68
- const vpState = {
69
- clientSize: e.detail.size,
70
- };
71
- // virtual size will be handled by dimension provider if disabled
72
- if ((e.detail.dimension === 'rgRow' && !config.disableVirtualY)
73
- || (e.detail.dimension === 'rgCol' && !config.disableVirtualX)) {
74
- vpState.virtualSize = e.detail.size;
75
- }
76
- (_a = config.viewportProvider) === null || _a === void 0 ? void 0 : _a.setViewport(e.detail.dimension, vpState);
69
+ column.onResizeviewport = (e) => {
70
+ var _a;
71
+ const vpState = {
72
+ clientSize: e.detail.size,
77
73
  };
78
- }
74
+ const dimension = getViewportResizeDimension(val, e.detail.dimension);
75
+ const isVirtualColumn = columnTypes.includes(dimension)
76
+ && isVirtualXDimension(dimension, config.disableVirtualX, config.virtualX);
77
+ // Keep virtual dimensions in sync with their viewport size.
78
+ if ((dimension === 'rgRow' && !config.disableVirtualY) || isVirtualColumn) {
79
+ vpState.virtualSize = e.detail.size;
80
+ }
81
+ (_a = config.viewportProvider) === null || _a === void 0 ? void 0 : _a.setViewport(dimension, vpState);
82
+ };
79
83
  const colData = gatherColumnData(column);
80
84
  const columnSelectionStore = this.registerCol(colData.position.x, val);
81
85
  // render per each column data collections vertically
@@ -55,7 +55,7 @@ export class BasePlugin {
55
55
  },
56
56
  });
57
57
  if (immediate) {
58
- callback(nativeValueDesc === null || nativeValueDesc === void 0 ? void 0 : nativeValueDesc.value);
58
+ callback((nativeValueDesc === null || nativeValueDesc === void 0 ? void 0 : nativeValueDesc.get) ? nativeValueDesc.get.call(this.revogrid) : nativeValueDesc === null || nativeValueDesc === void 0 ? void 0 : nativeValueDesc.value);
59
59
  }
60
60
  }
61
61
  /**