@revolist/revogrid 4.22.1 → 4.23.0

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 (120) hide show
  1. package/dist/cjs/{cell-renderer-BQdEGQXP.js → cell-renderer-DWJ9Px9f.js} +9 -3
  2. package/dist/cjs/{column.drag.plugin-RDjQhKCH.js → column.drag.plugin-CaEBDG-Q.js} +391 -256
  3. package/dist/cjs/{column.service-DXYMehqK.js → column.service-f612L4ql.js} +1 -1
  4. package/dist/cjs/{dimension.helpers-CiiNnlLa.js → dimension.helpers-B9HgANnM.js} +14 -145
  5. package/dist/cjs/{edit.utils-CecCfA4E.js → edit.utils-pKeiYFLJ.js} +1 -1
  6. package/dist/cjs/{header-cell-renderer-DGyBrK8I.js → header-cell-renderer-4yq9_WbM.js} +1 -1
  7. package/dist/cjs/index-DxaSE5uZ.js +136 -0
  8. package/dist/cjs/index.cjs.js +37 -32
  9. package/dist/cjs/revo-grid.cjs.entry.js +35 -15
  10. package/dist/cjs/revogr-attribution_7.cjs.entry.js +43 -25
  11. package/dist/cjs/revogr-clipboard_3.cjs.entry.js +10 -8
  12. package/dist/cjs/revogr-data_4.cjs.entry.js +26 -17
  13. package/dist/cjs/revogr-filter-panel.cjs.entry.js +2 -1
  14. package/dist/cjs/{text-editor-DnLZW1a-.js → text-editor-B4W-m-r-.js} +3 -3
  15. package/dist/cjs/{throttle-CfgQFkfR.js → throttle-BCwEuJJq.js} +59 -24
  16. package/dist/cjs/viewport.helpers-BND76K2j.js +140 -0
  17. package/dist/cjs/{viewport.store-q6YdR9mg.js → viewport.store-BlKQ4x9H.js} +16 -16
  18. package/dist/collection/components/data/revogr-data.js +5 -3
  19. package/dist/collection/components/header/header-group-renderer.js +1 -1
  20. package/dist/collection/components/header/header-renderer.js +1 -1
  21. package/dist/collection/components/header/revogr-header-style.css +13 -3
  22. package/dist/collection/components/header/revogr-header.js +5 -2
  23. package/dist/collection/components/order/order-row.service.js +6 -5
  24. package/dist/collection/components/overlay/keyboard.service.js +23 -1
  25. package/dist/collection/components/overlay/selection.utils.js +8 -6
  26. package/dist/collection/components/revoGrid/revo-grid.js +6 -5
  27. package/dist/collection/components/revoGrid/viewport.service.js +2 -1
  28. package/dist/collection/components/scroll/revogr-viewport-scroll.js +10 -6
  29. package/dist/collection/components/scrollable/revogr-scroll-virtual.js +4 -10
  30. package/dist/collection/plugins/filter/filter.panel.js +2 -1
  31. package/dist/collection/plugins/filter/filter.plugin.js +11 -4
  32. package/dist/collection/plugins/groupingRow/grouping.row.plugin.js +25 -1
  33. package/dist/collection/plugins/moveColumn/column.drag.plugin.js +4 -4
  34. package/dist/collection/plugins/sorting/sorting.func.js +173 -15
  35. package/dist/collection/plugins/sorting/sorting.plugin.js +167 -84
  36. package/dist/collection/plugins/sorting/sorting.sign.js +7 -1
  37. package/dist/collection/serve/controller.js +98 -37
  38. package/dist/collection/serve/data.js +273 -144
  39. package/dist/collection/services/dimension.provider.js +16 -1
  40. package/dist/collection/services/local.scroll.service.js +59 -24
  41. package/dist/collection/services/scroll.dimension.helpers.js +83 -0
  42. package/dist/collection/services/selection.store.connector.js +4 -1
  43. package/dist/collection/store/dimension/dimension.recalculate.plugin.js +22 -9
  44. package/dist/collection/store/dimension/dimension.store.js +4 -2
  45. package/dist/collection/store/vp/viewport.helpers.js +9 -0
  46. package/dist/collection/store/vp/viewport.store.js +5 -16
  47. package/dist/collection/utils/store.utils.js +3 -3
  48. package/dist/{revo-grid/cell-renderer-CALsEsnh.js → esm/cell-renderer-8UiGd-s7.js} +9 -3
  49. package/dist/esm/{column.drag.plugin-Dy5ztusn.js → column.drag.plugin-BsfhsfmB.js} +388 -255
  50. package/dist/esm/{column.service-CCvAi5l4.js → column.service-DbpulTog.js} +1 -1
  51. package/dist/{revo-grid/debounce-BfO9dz9v.js → esm/debounce-PCRWZliA.js} +1 -1
  52. package/dist/{revo-grid/dimension.helpers-DmIvjIa7.js → esm/dimension.helpers-CGKwSvw6.js} +7 -128
  53. package/dist/esm/{edit.utils-DYN6XZh8.js → edit.utils-Dnnbd0xG.js} +1 -1
  54. package/dist/{revo-grid/header-cell-renderer-DU8wKAbg.js → esm/header-cell-renderer-DGI2FAD8.js} +1 -1
  55. package/dist/esm/index-Db3qZoW5.js +127 -0
  56. package/dist/esm/index.js +11 -10
  57. package/dist/esm/revo-grid.entry.js +34 -14
  58. package/dist/esm/revogr-attribution_7.entry.js +42 -24
  59. package/dist/esm/revogr-clipboard_3.entry.js +11 -9
  60. package/dist/esm/revogr-data_4.entry.js +27 -18
  61. package/dist/esm/revogr-filter-panel.entry.js +3 -2
  62. package/dist/esm/{text-editor-DpCnd6Fq.js → text-editor-C3RUSwH5.js} +2 -2
  63. package/dist/esm/{throttle-ERvyruXb.js → throttle-CaUDyxyU.js} +60 -25
  64. package/dist/esm/viewport.helpers-CoCAvmZs.js +133 -0
  65. package/dist/{revo-grid/viewport.store-CFjDW-3l.js → esm/viewport.store-COAfzAyu.js} +15 -17
  66. package/dist/{esm/cell-renderer-CALsEsnh.js → revo-grid/cell-renderer-8UiGd-s7.js} +9 -3
  67. package/dist/revo-grid/{column.drag.plugin-Dy5ztusn.js → column.drag.plugin-BsfhsfmB.js} +388 -255
  68. package/dist/revo-grid/{column.service-CCvAi5l4.js → column.service-DbpulTog.js} +1 -1
  69. package/dist/{esm/debounce-BfO9dz9v.js → revo-grid/debounce-PCRWZliA.js} +1 -1
  70. package/dist/{esm/dimension.helpers-DmIvjIa7.js → revo-grid/dimension.helpers-CGKwSvw6.js} +7 -128
  71. package/dist/revo-grid/{edit.utils-DYN6XZh8.js → edit.utils-Dnnbd0xG.js} +1 -1
  72. package/dist/{esm/header-cell-renderer-DU8wKAbg.js → revo-grid/header-cell-renderer-DGI2FAD8.js} +1 -1
  73. package/dist/revo-grid/index-Db3qZoW5.js +127 -0
  74. package/dist/revo-grid/index.esm.js +11 -10
  75. package/dist/revo-grid/revo-grid.entry.js +34 -14
  76. package/dist/revo-grid/revogr-attribution_7.entry.js +42 -24
  77. package/dist/revo-grid/revogr-clipboard_3.entry.js +11 -9
  78. package/dist/revo-grid/revogr-data_4.entry.js +27 -18
  79. package/dist/revo-grid/revogr-filter-panel.entry.js +3 -2
  80. package/dist/revo-grid/{text-editor-DpCnd6Fq.js → text-editor-C3RUSwH5.js} +2 -2
  81. package/dist/revo-grid/{throttle-ERvyruXb.js → throttle-CaUDyxyU.js} +60 -25
  82. package/dist/revo-grid/viewport.helpers-CoCAvmZs.js +133 -0
  83. package/dist/{esm/viewport.store-CFjDW-3l.js → revo-grid/viewport.store-COAfzAyu.js} +15 -17
  84. package/dist/types/components/header/header-group-renderer.d.ts +1 -0
  85. package/dist/types/components/header/header-renderer.d.ts +1 -0
  86. package/dist/types/components/overlay/keyboard.service.d.ts +5 -0
  87. package/dist/types/plugins/groupingRow/grouping.row.plugin.d.ts +8 -0
  88. package/dist/types/plugins/sorting/sorting.func.d.ts +25 -2
  89. package/dist/types/plugins/sorting/sorting.plugin.d.ts +84 -9
  90. package/dist/types/plugins/sorting/sorting.sign.d.ts +5 -1
  91. package/dist/types/plugins/sorting/sorting.types.d.ts +46 -1
  92. package/dist/types/services/local.scroll.service.d.ts +10 -2
  93. package/dist/types/services/scroll.dimension.helpers.d.ts +20 -0
  94. package/dist/types/store/vp/viewport.helpers.d.ts +2 -0
  95. package/dist/types/types/interfaces.d.ts +11 -0
  96. package/hydrate/index.js +649 -365
  97. package/hydrate/index.mjs +649 -365
  98. package/package.json +1 -1
  99. package/standalone/column.service.js +1 -1
  100. package/standalone/data.store.js +1 -1
  101. package/standalone/debounce.js +1 -1
  102. package/standalone/dimension.helpers.js +1 -1
  103. package/standalone/index.js +1 -1
  104. package/standalone/local.scroll.timer.js +1 -1
  105. package/standalone/revo-grid.js +1 -1
  106. package/standalone/revogr-data2.js +1 -1
  107. package/standalone/revogr-filter-panel.js +1 -1
  108. package/standalone/revogr-header2.js +1 -1
  109. package/standalone/revogr-order-editor2.js +1 -1
  110. package/standalone/revogr-overlay-selection2.js +1 -1
  111. package/standalone/revogr-row-headers.js +1 -1
  112. package/standalone/revogr-row-headers2.js +1 -1
  113. package/standalone/revogr-scroll-virtual2.js +1 -1
  114. package/standalone/revogr-viewport-scroll2.js +1 -1
  115. package/standalone/selection.utils.js +1 -1
  116. package/standalone/throttle.js +1 -1
  117. package/standalone/toNumber.js +1 -1
  118. package/dist/cjs/viewport.helpers-BAovztDd.js +0 -58
  119. package/dist/esm/viewport.helpers-VXhsJZtn.js +0 -52
  120. package/dist/revo-grid/viewport.helpers-VXhsJZtn.js +0 -52
@@ -2,14 +2,14 @@
2
2
  * Built by Revolist OU ❤️
3
3
  */
4
4
  import { r as registerInstance, d as createEvent, h, e as Host, g as getElement } from './index-Chp_81rd.js';
5
- import { M as ColumnService, u as isGrouping } from './column.service-CCvAi5l4.js';
6
- import { Q as ROW_FOCUSED_CLASS, b as getSourceItem, y as DATA_ROW, x as DATA_COL, M as MIN_COL_SIZE, B as HEADER_SORTABLE_CLASS, H as HEADER_CLASS, J as FOCUS_CLASS, k as getItemByIndex, E as HEADER_ROW_CLASS, F as HEADER_ACTUAL_ROW_CLASS } from './dimension.helpers-DmIvjIa7.js';
7
- import { G as GroupingRowRenderer, C as CellRenderer, R as RowRenderer, P as PADDING_DEPTH, S as SortingSign } from './cell-renderer-CALsEsnh.js';
5
+ import { M as ColumnService, u as isGrouping } from './column.service-DbpulTog.js';
6
+ import { B as ROW_FOCUSED_CLASS, b as getSourceItem, n as DATA_ROW, m as DATA_COL, M as MIN_COL_SIZE, r as HEADER_SORTABLE_CLASS, H as HEADER_CLASS, F as FOCUS_CLASS, k as getItemByIndex, u as HEADER_ROW_CLASS, v as HEADER_ACTUAL_ROW_CLASS } from './dimension.helpers-CGKwSvw6.js';
7
+ import { G as GroupingRowRenderer, C as CellRenderer, R as RowRenderer, P as PADDING_DEPTH, S as SortingSign } from './cell-renderer-8UiGd-s7.js';
8
8
  import { c as FilterButton } from './filter.button-C8XTWPU2.js';
9
- import { H as HeaderCellRenderer } from './header-cell-renderer-DU8wKAbg.js';
10
- import { t as throttle, L as LocalScrollTimer, a as LocalScrollService } from './throttle-ERvyruXb.js';
11
- import { H as HEADER_SLOT, C as CONTENT_SLOT, F as FOOTER_SLOT } from './viewport.helpers-VXhsJZtn.js';
12
- import './debounce-BfO9dz9v.js';
9
+ import { H as HeaderCellRenderer } from './header-cell-renderer-DGI2FAD8.js';
10
+ import { t as throttle, L as LocalScrollTimer, a as LocalScrollService, g as getContentSize } from './throttle-CaUDyxyU.js';
11
+ import { H as HEADER_SLOT, C as CONTENT_SLOT, F as FOOTER_SLOT } from './viewport.helpers-CoCAvmZs.js';
12
+ import './debounce-PCRWZliA.js';
13
13
 
14
14
  /**
15
15
  * Class is responsible for highlighting rows in a table.
@@ -168,11 +168,13 @@ const RevogrData = class {
168
168
  const depth = this.dataStore.get('groupingDepth');
169
169
  const groupingCustomRenderer = this.dataStore.get('groupingCustomRenderer');
170
170
  const groupDepth = this.columnService.hasGrouping ? depth : 0;
171
+ const rowRenderOffset = this.viewportRow.get('renderOffset') || 0;
172
+ const colRenderOffset = this.viewportCol.get('renderOffset') || 0;
171
173
  for (let rgRow of rows) {
172
174
  const dataItem = getSourceItem(this.dataStore, rgRow.itemIndex);
173
175
  // #region Grouping
174
176
  if (isGrouping(dataItem)) {
175
- const gmodel = Object.assign(Object.assign({}, rgRow), { index: rgRow.itemIndex, model: dataItem, groupingCustomRenderer,
177
+ const gmodel = Object.assign(Object.assign({}, rgRow), { start: rgRow.start - rowRenderOffset, index: rgRow.itemIndex, model: dataItem, groupingCustomRenderer,
176
178
  // Only show expand button if grouping is enabled and not in row headers
177
179
  hasExpand: this.columnService.hasGrouping && this.colType !== 'rowHeaders', columnItems: cols, providers: this.providers });
178
180
  rowsEls.push(h(GroupingRowRenderer, Object.assign({}, gmodel)));
@@ -195,7 +197,7 @@ const RevogrData = class {
195
197
  [DATA_ROW]: rowProps.itemIndex,
196
198
  style: {
197
199
  width: `${columnProps.size}px`,
198
- transform: `translateX(${columnProps.start}px)`,
200
+ transform: `translateX(${columnProps.start - colRenderOffset}px)`,
199
201
  height: rowProps.size ? `${rowProps.size}px` : undefined,
200
202
  },
201
203
  };
@@ -223,7 +225,7 @@ const RevogrData = class {
223
225
  if (this.rowHighlightPlugin.isRowFocused(rgRow.itemIndex)) {
224
226
  rowClass += ` ${ROW_FOCUSED_CLASS}`;
225
227
  }
226
- const row = (h(RowRenderer, { index: rgRow.itemIndex, rowClass: rowClass, size: rgRow.size, start: rgRow.start, groupingLevel: groupDepth || undefined }, cells));
228
+ const row = (h(RowRenderer, { index: rgRow.itemIndex, rowClass: rowClass, size: rgRow.size, start: rgRow.start - rowRenderOffset, groupingLevel: groupDepth || undefined }, cells));
227
229
  this.beforerowrender.emit({
228
230
  node: row,
229
231
  item: rgRow,
@@ -278,7 +280,7 @@ const HeaderRenderer = (p) => {
278
280
  class: cellClass,
279
281
  style: {
280
282
  width: `${p.column.size}px`,
281
- transform: `translateX(${p.column.start}px)`,
283
+ transform: `translateX(${p.column.start - (p.renderOffset || 0)}px)`,
282
284
  },
283
285
  onResize: p.onResize,
284
286
  onDblClick(originalEvent) {
@@ -323,7 +325,7 @@ const HeaderGroupRenderer = (p) => {
323
325
  [HEADER_CLASS]: true,
324
326
  },
325
327
  style: {
326
- transform: `translateX(${p.start}px)`,
328
+ transform: `translateX(${p.start - (p.renderOffset || 0)}px)`,
327
329
  width: `${p.end - p.start}px`,
328
330
  },
329
331
  onResize: p.onResize,
@@ -331,7 +333,7 @@ const HeaderGroupRenderer = (p) => {
331
333
  return (h(HeaderCellRenderer, { data: Object.assign(Object.assign({}, p.group), { prop: '', providers: p.providers, index: p.start }), props: groupProps, additionalData: p.additionalData }));
332
334
  };
333
335
 
334
- const revogrHeaderStyleCss = () => `@charset "UTF-8";revogr-header{position:relative;z-index:5;display:block}revogr-header .header-rgRow{display:block;position:relative}revogr-header .header-rgRow.group{z-index:0}revogr-header .group-rgRow{position:relative;overflow:hidden}revogr-header .rgHeaderCell{position:absolute;box-sizing:border-box;height:100%;z-index:1;display:flex}revogr-header .rgHeaderCell.align-center{text-align:center}revogr-header .rgHeaderCell.align-left{text-align:left}revogr-header .rgHeaderCell.align-right{text-align:right}revogr-header .rgHeaderCell.sortable{cursor:pointer}revogr-header .rgHeaderCell i.asc:after,revogr-header .rgHeaderCell i.desc:after{font-size:13px}revogr-header .rgHeaderCell i.asc:after{content:"↑"}revogr-header .rgHeaderCell i.desc:after{content:"↓"}revogr-header .rgHeaderCell.active{z-index:10}revogr-header .rgHeaderCell.active .resizable{background-color:deepskyblue}revogr-header .rgHeaderCell .header-content{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex-grow:1}revogr-header .rgHeaderCell .resizable{display:block;position:absolute;z-index:90;touch-action:none;user-select:none}revogr-header .rgHeaderCell .resizable:hover{background-color:deepskyblue}revogr-header .rgHeaderCell>.resizable-r{cursor:ew-resize;width:6px;right:0;top:0;height:100%}revogr-header .rgHeaderCell>.resizable-rb{cursor:se-resize;width:6px;height:6px;right:0;bottom:0}revogr-header .rgHeaderCell>.resizable-b{cursor:s-resize;height:6px;bottom:0;width:100%;left:0}revogr-header .rgHeaderCell>.resizable-lb{cursor:sw-resize;width:6px;height:6px;left:0;bottom:0}revogr-header .rgHeaderCell>.resizable-l{cursor:w-resize;width:6px;left:0;height:100%;top:0}revogr-header .rgHeaderCell>.resizable-lt{cursor:nw-resize;width:6px;height:6px;left:0;top:0}revogr-header .rgHeaderCell>.resizable-t{cursor:n-resize;height:6px;top:0;width:100%;left:0}revogr-header .rgHeaderCell>.resizable-rt{cursor:ne-resize;width:6px;height:6px;right:0;top:0}revogr-header .rv-filter{visibility:hidden}`;
336
+ const revogrHeaderStyleCss = () => `@charset "UTF-8";revogr-header{position:relative;z-index:5;display:block}revogr-header .header-rgRow{display:block;position:relative}revogr-header .header-rgRow.group{z-index:0}revogr-header .group-rgRow{position:relative;overflow:hidden}revogr-header .rgHeaderCell{position:absolute;box-sizing:border-box;height:100%;z-index:1;display:flex}revogr-header .rgHeaderCell.align-center{text-align:center}revogr-header .rgHeaderCell.align-left{text-align:left}revogr-header .rgHeaderCell.align-right{text-align:right}revogr-header .rgHeaderCell.sortable{cursor:pointer}revogr-header .rgHeaderCell .sort-indicator{display:inline-flex;align-items:flex-start;gap:1px}revogr-header .rgHeaderCell .sort-indicator i.asc:after,revogr-header .rgHeaderCell .sort-indicator i.desc:after{font-size:13px}revogr-header .rgHeaderCell .sort-indicator i.asc:after{content:"↑"}revogr-header .rgHeaderCell .sort-indicator i.desc:after{content:"↓"}revogr-header .rgHeaderCell .sort-indicator .sort-order-index{font-size:10px;line-height:1;top:0}revogr-header .rgHeaderCell.active{z-index:10}revogr-header .rgHeaderCell.active .resizable{background-color:deepskyblue}revogr-header .rgHeaderCell .header-content{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex-grow:1}revogr-header .rgHeaderCell .resizable{display:block;position:absolute;z-index:90;touch-action:none;user-select:none}revogr-header .rgHeaderCell .resizable:hover{background-color:deepskyblue}revogr-header .rgHeaderCell>.resizable-r{cursor:ew-resize;width:6px;right:0;top:0;height:100%}revogr-header .rgHeaderCell>.resizable-rb{cursor:se-resize;width:6px;height:6px;right:0;bottom:0}revogr-header .rgHeaderCell>.resizable-b{cursor:s-resize;height:6px;bottom:0;width:100%;left:0}revogr-header .rgHeaderCell>.resizable-lb{cursor:sw-resize;width:6px;height:6px;left:0;bottom:0}revogr-header .rgHeaderCell>.resizable-l{cursor:w-resize;width:6px;left:0;height:100%;top:0}revogr-header .rgHeaderCell>.resizable-lt{cursor:nw-resize;width:6px;height:6px;left:0;top:0}revogr-header .rgHeaderCell>.resizable-t{cursor:n-resize;height:6px;top:0;width:100%;left:0}revogr-header .rgHeaderCell>.resizable-rt{cursor:ne-resize;width:6px;height:6px;right:0;top:0}revogr-header .rv-filter{visibility:hidden}`;
335
337
 
336
338
  const RevogrHeaderComponent = class {
337
339
  constructor(hostRef) {
@@ -387,6 +389,7 @@ const RevogrHeaderComponent = class {
387
389
  }
388
390
  renderHeaderColumns(cols, range) {
389
391
  const columnsToRender = [];
392
+ const renderOffset = this.viewportCol.get('renderOffset') || 0;
390
393
  for (let rgCol of cols) {
391
394
  const colData = this.colData[rgCol.itemIndex];
392
395
  const props = {
@@ -395,6 +398,7 @@ const RevogrHeaderComponent = class {
395
398
  data: Object.assign(Object.assign({}, colData), { index: rgCol.itemIndex, providers: this.providers }),
396
399
  canFilter: !!this.columnFilter,
397
400
  canResize: this.canResize,
401
+ renderOffset,
398
402
  active: this.resizeHandler,
399
403
  additionalData: this.additionalData,
400
404
  onResize: e => this.onResize(e, rgCol.itemIndex),
@@ -447,6 +451,7 @@ const RevogrHeaderComponent = class {
447
451
  start: groupStart,
448
452
  end: groupEnd,
449
453
  group,
454
+ renderOffset: this.viewportCol.get('renderOffset') || 0,
450
455
  active: this.resizeHandler,
451
456
  canResize: this.canResize,
452
457
  additionalData: this.additionalData,
@@ -601,7 +606,7 @@ const RevogrViewportScroll = class {
601
606
  * @param e
602
607
  */
603
608
  async changeScroll(e, silent = false) {
604
- var _a, _b;
609
+ var _a, _b, _c, _d;
605
610
  if (silent) {
606
611
  if (e.coordinate && this.verticalScroll) {
607
612
  switch (e.dimension) {
@@ -614,15 +619,16 @@ const RevogrViewportScroll = class {
614
619
  return;
615
620
  }
616
621
  if (e.delta) {
622
+ let currentPhysicalCoordinate = 0;
617
623
  switch (e.dimension) {
618
624
  case 'rgCol':
619
- e.coordinate = this.horizontalScroll.scrollLeft + e.delta;
625
+ currentPhysicalCoordinate = this.horizontalScroll.scrollLeft;
620
626
  break;
621
627
  case 'rgRow':
622
- e.coordinate = ((_b = (_a = this.verticalScroll) === null || _a === void 0 ? void 0 : _a.scrollTop) !== null && _b !== void 0 ? _b : 0) + e.delta;
628
+ currentPhysicalCoordinate = (_b = (_a = this.verticalScroll) === null || _a === void 0 ? void 0 : _a.scrollTop) !== null && _b !== void 0 ? _b : 0;
623
629
  break;
624
630
  }
625
- this.setScroll(e);
631
+ return (_d = (_c = this.localScrollService) === null || _c === void 0 ? void 0 : _c.setScrollByDelta(e, currentPhysicalCoordinate)) !== null && _d !== void 0 ? _d : e;
626
632
  }
627
633
  return e;
628
634
  }
@@ -774,7 +780,10 @@ const RevogrViewportScroll = class {
774
780
  this.setScrollVisibility('rgCol', this.horizontalScroll.clientWidth, this.contentWidth);
775
781
  }
776
782
  render() {
777
- return (h(Host, { key: 'adc7378dba1794ca2ec263d52b09abefe50bcbfd', onWheel: this.horizontalMouseWheel, onScroll: (e) => this.applyScroll('rgCol', e) }, h("div", { key: '7b57a8a0ea44629fefcfe4d2cd77bf0f048d8e06', class: "inner-content-table", style: { width: `${this.contentWidth}px` } }, h("div", { key: 'cca3de158bc2a7f0651f578a281819be5698b257', class: "header-wrapper", ref: e => (this.header = e) }, h("slot", { key: '1d170147dabe034f2c35481a8e2fedd6de2b6aed', name: HEADER_SLOT })), h("div", { key: 'b6dd29a91bb1f380a83a035dfdb749ca669936f2', class: "vertical-inner", ref: el => (this.verticalScroll = el), onWheel: this.verticalMouseWheel, onScroll: (e) => this.applyScroll('rgRow', e) }, h("div", { key: '9bce27bf8ec4d3b679aa9a34eb6379a8c2d46cac', class: "content-wrapper", style: { height: `${this.contentHeight}px` } }, h("slot", { key: 'b44a082c9fbb948fd87bd235b4cd4356fd4a3536', name: CONTENT_SLOT }))), h("div", { key: '28c305ff6bc664f1d1bbb117e8b8565c8d4bb6b2', class: "footer-wrapper", ref: e => (this.footer = e) }, h("slot", { key: '96312fb7f18198fd1feb9dcc00c79cde74ba9c9f', name: FOOTER_SLOT })))));
783
+ var _a, _b, _c, _d;
784
+ const physicalContentHeight = getContentSize(this.contentHeight, (_b = (_a = this.verticalScroll) === null || _a === void 0 ? void 0 : _a.clientHeight) !== null && _b !== void 0 ? _b : 0);
785
+ const physicalContentWidth = getContentSize(this.contentWidth, (_d = (_c = this.horizontalScroll) === null || _c === void 0 ? void 0 : _c.clientWidth) !== null && _d !== void 0 ? _d : 0);
786
+ return (h(Host, { key: 'a0c47dede9d131dea8c8ca449e8a323f24d9b113', onWheel: this.horizontalMouseWheel, onScroll: (e) => this.applyScroll('rgCol', e) }, h("div", { key: '6c960e753ffe522ba4afb1c379264873b6c617f3', class: "inner-content-table", style: { width: `${physicalContentWidth}px` } }, h("div", { key: '1a6cbcbd3634e84756b54c8150aebd25c824e14a', class: "header-wrapper", ref: e => (this.header = e) }, h("slot", { key: 'e4202c687bc39b4f78f3ed9840e979b032f06af8', name: HEADER_SLOT })), h("div", { key: '651415b5b32e72735065b183317386a34042bb85', class: "vertical-inner", ref: el => (this.verticalScroll = el), onWheel: this.verticalMouseWheel, onScroll: (e) => this.applyScroll('rgRow', e) }, h("div", { key: 'e65623b78d80957d8676adb019618953ef267ec3', class: "content-wrapper", style: { height: `${physicalContentHeight}px` } }, h("slot", { key: '5af47b12ef1226587cf774233447b5252d65e836', name: CONTENT_SLOT }))), h("div", { key: 'cbc0fd64fbfb53d3b18e547bbe34e32b7bb9c043', class: "footer-wrapper", ref: e => (this.footer = e) }, h("slot", { key: 'a8e4bfaef400973121090bac3069eb85469a95f3', name: FOOTER_SLOT })))));
778
787
  }
779
788
  /**
780
789
  * Extra layer for scroll event monitoring, where MouseWheel event is not passing
@@ -2,7 +2,7 @@
2
2
  * Built by Revolist OU ❤️
3
3
  */
4
4
  import { r as registerInstance, d as createEvent, h, e as Host, g as getElement } from './index-Chp_81rd.js';
5
- import { d as debounce } from './debounce-BfO9dz9v.js';
5
+ import { d as debounce } from './debounce-PCRWZliA.js';
6
6
  import { i as isFilterBtn, e as AndOrButton, d as TrashButton } from './filter.button-C8XTWPU2.js';
7
7
 
8
8
  (function closest() {
@@ -267,7 +267,8 @@ const FilterPanel = class {
267
267
  const options = [];
268
268
  const prop = this.changes.prop;
269
269
  const hidden = new Set();
270
- Object.entries(this.filterItems).forEach(([_, values]) => {
270
+ Object.keys(this.filterItems).forEach((prop) => {
271
+ const values = this.filterItems[prop];
271
272
  values.forEach((filter) => {
272
273
  if (filter.hidden) {
273
274
  hidden.add(filter.type);
@@ -1,8 +1,8 @@
1
1
  /*!
2
2
  * Built by Revolist OU ❤️
3
3
  */
4
- import { d as isTab, f as isEnterKeyValue } from './edit.utils-DYN6XZh8.js';
5
- import { u as timeout } from './dimension.helpers-DmIvjIa7.js';
4
+ import { d as isTab, f as isEnterKeyValue } from './edit.utils-Dnnbd0xG.js';
5
+ import { t as timeout } from './index-Db3qZoW5.js';
6
6
 
7
7
  class TextEditor {
8
8
  constructor(data, saveCallback) {
@@ -1,8 +1,8 @@
1
1
  /*!
2
2
  * Built by Revolist OU ❤️
3
3
  */
4
- import { q as scaleValue } from './dimension.helpers-DmIvjIa7.js';
5
- import { d as debounce, a as isObject } from './debounce-BfO9dz9v.js';
4
+ import { g as getScrollDimension } from './viewport.helpers-CoCAvmZs.js';
5
+ import { d as debounce, i as isObject } from './debounce-PCRWZliA.js';
6
6
 
7
7
  const initialParams = {
8
8
  contentSize: 0,
@@ -16,10 +16,11 @@ const NO_COORDINATE = -1;
16
16
  * return full size
17
17
  */
18
18
  function getContentSize(contentSize, clientSize, virtualSize = 0) {
19
- if (virtualSize > contentSize) {
20
- return 0;
21
- }
22
- return contentSize + (virtualSize ? clientSize - virtualSize : 0);
19
+ return getScrollDimension({
20
+ contentSize,
21
+ clientSize,
22
+ virtualSize,
23
+ }).physicalContentSize;
23
24
  }
24
25
  class LocalScrollService {
25
26
  constructor(cfg) {
@@ -33,14 +34,20 @@ class LocalScrollService {
33
34
  rgRow: NO_COORDINATE,
34
35
  rgCol: NO_COORDINATE,
35
36
  };
37
+ this.previousLogicalScroll = {
38
+ rgRow: 0,
39
+ rgCol: 0,
40
+ };
36
41
  this.params = {
37
42
  rgRow: Object.assign({}, initialParams),
38
43
  rgCol: Object.assign({}, initialParams),
39
44
  };
40
45
  }
41
46
  setParams(params, dimension) {
42
- const virtualContentSize = getContentSize(params.contentSize, params.clientSize, params.virtualSize);
43
- this.params[dimension] = Object.assign(Object.assign({}, params), { maxSize: virtualContentSize - params.clientSize, virtualContentSize });
47
+ const scrollDimension = getScrollDimension(params);
48
+ const virtualContentSize = scrollDimension.physicalContentSize;
49
+ this.params[dimension] = Object.assign(Object.assign({}, params), { maxSize: virtualContentSize - params.clientSize, virtualContentSize,
50
+ scrollDimension });
44
51
  }
45
52
  // apply scroll values after scroll done
46
53
  async setScroll(e) {
@@ -60,16 +67,27 @@ class LocalScrollService {
60
67
  await frameAnimation;
61
68
  const params = this.getParams(e.dimension);
62
69
  e.coordinate = Math.ceil(e.coordinate);
63
- this.previousScroll[e.dimension] = this.wrapCoordinate(e.coordinate, params);
70
+ this.previousLogicalScroll[e.dimension] = this.wrapLogicalCoordinate(e.coordinate, params);
71
+ const physicalCoordinate = this.toPhysicalCoordinate(e.coordinate, params);
72
+ this.previousScroll[e.dimension] = this.wrapPhysicalCoordinate(physicalCoordinate, params);
64
73
  this.preventArtificialScroll[e.dimension] = null;
65
- this.cfg.applyScroll(Object.assign(Object.assign({}, e), { coordinate: params.virtualSize
66
- ? this.convert(e.coordinate, params, false)
67
- : e.coordinate }));
74
+ this.cfg.applyScroll(Object.assign(Object.assign({}, e), { coordinate: physicalCoordinate }));
68
75
  }
69
76
  catch (id) {
70
77
  window.cancelAnimationFrame(id);
71
78
  }
72
79
  }
80
+ async setScrollByDelta(e, currentPhysicalCoordinate) {
81
+ var _a;
82
+ const params = this.getParams(e.dimension);
83
+ const baseCoordinate = this.previousScroll[e.dimension] === NO_COORDINATE
84
+ ? this.toLogicalCoordinate(currentPhysicalCoordinate, params)
85
+ : this.previousLogicalScroll[e.dimension];
86
+ const coordinate = this.wrapLogicalCoordinate(baseCoordinate + ((_a = e.delta) !== null && _a !== void 0 ? _a : 0), params);
87
+ const nextEvent = Object.assign(Object.assign({}, e), { coordinate });
88
+ await this.setScroll(nextEvent);
89
+ return nextEvent;
90
+ }
73
91
  /**
74
92
  * On scroll event started
75
93
  */
@@ -82,21 +100,21 @@ class LocalScrollService {
82
100
  return;
83
101
  }
84
102
  const param = this.getParams(dimension);
103
+ const logicalCoordinate = this.toLogicalScrollCoordinate(coordinate, dimension, param, delta);
85
104
  // let component know about scroll event started
86
105
  this.cfg.runScroll({
87
106
  dimension: dimension,
88
- coordinate: param.virtualSize
89
- ? this.convert(coordinate, param)
90
- : coordinate,
107
+ coordinate: logicalCoordinate,
91
108
  delta,
92
109
  outside,
93
110
  });
111
+ this.previousLogicalScroll[dimension] = logicalCoordinate;
94
112
  }
95
113
  getParams(dimension) {
96
114
  return this.params[dimension];
97
115
  }
98
116
  // check if scroll outside of region to avoid looping
99
- wrapCoordinate(c, param) {
117
+ wrapPhysicalCoordinate(c, param) {
100
118
  if (c < 0) {
101
119
  return NO_COORDINATE;
102
120
  }
@@ -105,22 +123,39 @@ class LocalScrollService {
105
123
  }
106
124
  return c;
107
125
  }
126
+ wrapLogicalCoordinate(c, param) {
127
+ var _a, _b;
128
+ if (c < 0) {
129
+ return 0;
130
+ }
131
+ return Math.min(c, (_b = (_a = param.scrollDimension) === null || _a === void 0 ? void 0 : _a.logicalScrollSize) !== null && _b !== void 0 ? _b : c);
132
+ }
108
133
  // prevent already started scroll, performance optimization
109
134
  cancelScroll(dimension) {
110
135
  var _a, _b;
111
136
  (_b = (_a = this.preventArtificialScroll)[dimension]) === null || _b === void 0 ? void 0 : _b.call(_a);
112
137
  this.preventArtificialScroll[dimension] = null;
113
138
  }
114
- /* convert virtual to real and back, scale range */
115
- convert(pos, param, toReal = true) {
116
- var _a;
117
- const minRange = param.clientSize;
118
- const from = [0, ((_a = param.virtualContentSize) !== null && _a !== void 0 ? _a : minRange) - minRange];
119
- const to = [0, param.contentSize - param.virtualSize];
120
- if (toReal) {
121
- return scaleValue(pos, from, to);
139
+ toLogicalScrollCoordinate(coordinate, dimension, param, delta) {
140
+ const scrollDimension = param.scrollDimension;
141
+ if (!scrollDimension) {
142
+ return coordinate;
143
+ }
144
+ if (typeof delta === 'number' && scrollDimension.isCompressed) {
145
+ const base = this.previousScroll[dimension] === NO_COORDINATE
146
+ ? scrollDimension.toLogicalCoordinate(coordinate - delta)
147
+ : this.previousLogicalScroll[dimension];
148
+ return scrollDimension.toLogicalCoordinate(scrollDimension.toPhysicalCoordinate(base + delta));
122
149
  }
123
- return scaleValue(pos, to, from);
150
+ return scrollDimension.toLogicalCoordinate(coordinate);
151
+ }
152
+ toPhysicalCoordinate(coordinate, param) {
153
+ var _a, _b;
154
+ return (_b = (_a = param.scrollDimension) === null || _a === void 0 ? void 0 : _a.toPhysicalCoordinate(coordinate)) !== null && _b !== void 0 ? _b : coordinate;
155
+ }
156
+ toLogicalCoordinate(coordinate, param) {
157
+ var _a, _b;
158
+ return (_b = (_a = param.scrollDimension) === null || _a === void 0 ? void 0 : _a.toLogicalCoordinate(coordinate)) !== null && _b !== void 0 ? _b : coordinate;
124
159
  }
125
160
  }
126
161
 
@@ -0,0 +1,133 @@
1
+ /*!
2
+ * Built by Revolist OU ❤️
3
+ */
4
+ const FALLBACK_MAX_SCROLL_SIZE = 16000000;
5
+ const SCROLL_SIZE_GUARD = 1000000;
6
+ let detectedMaxScrollSize;
7
+ function getMaxScrollSize(doc = typeof document === 'undefined' ? undefined : document) {
8
+ if (typeof detectedMaxScrollSize === 'number') {
9
+ return detectedMaxScrollSize;
10
+ }
11
+ const body = doc === null || doc === void 0 ? void 0 : doc.body;
12
+ if (body) {
13
+ const ownerDocument = body.ownerDocument;
14
+ const element = ownerDocument.createElement('div');
15
+ element.style.cssText = [
16
+ 'height:1px',
17
+ 'left:-10000px',
18
+ 'overflow:scroll',
19
+ 'position:absolute',
20
+ 'top:-10000px',
21
+ 'visibility:hidden',
22
+ 'width:1px',
23
+ ].join(';');
24
+ const content = ownerDocument.createElement('div');
25
+ content.style.height = `${FALLBACK_MAX_SCROLL_SIZE * 4}px`;
26
+ element.appendChild(content);
27
+ body.appendChild(element);
28
+ detectedMaxScrollSize = Math.max(0, Math.min(element.scrollHeight, FALLBACK_MAX_SCROLL_SIZE * 4) - SCROLL_SIZE_GUARD);
29
+ element.remove();
30
+ if (detectedMaxScrollSize > SCROLL_SIZE_GUARD) {
31
+ return detectedMaxScrollSize;
32
+ }
33
+ detectedMaxScrollSize = FALLBACK_MAX_SCROLL_SIZE;
34
+ return detectedMaxScrollSize;
35
+ }
36
+ return FALLBACK_MAX_SCROLL_SIZE;
37
+ }
38
+ function getScrollDimension({ contentSize, clientSize, virtualSize = 0, maxScrollSize = getMaxScrollSize(), }) {
39
+ const safeContentSize = Math.max(0, maxScrollSize - SCROLL_SIZE_GUARD);
40
+ const size = Math.max(0, contentSize);
41
+ const client = Math.max(0, clientSize);
42
+ const viewport = Math.max(0, virtualSize || client);
43
+ const logicalScrollSize = Math.max(0, size - viewport);
44
+ const maxPhysicalScrollSize = Math.max(0, safeContentSize - client);
45
+ const physicalScrollSize = Math.min(logicalScrollSize, maxPhysicalScrollSize);
46
+ const physicalContentSize = client + physicalScrollSize;
47
+ const isCompressed = logicalScrollSize > physicalScrollSize && physicalScrollSize > 0;
48
+ const clampLogical = (coordinate) => Math.min(Math.max(0, coordinate || 0), logicalScrollSize);
49
+ const clampPhysical = (coordinate) => Math.min(Math.max(0, coordinate || 0), physicalScrollSize);
50
+ const toLogicalCoordinate = (coordinate) => {
51
+ if (!logicalScrollSize || !physicalScrollSize) {
52
+ return 0;
53
+ }
54
+ if (!isCompressed) {
55
+ return clampLogical(coordinate);
56
+ }
57
+ return clampLogical((clampPhysical(coordinate) / physicalScrollSize) * logicalScrollSize);
58
+ };
59
+ const toPhysicalCoordinate = (coordinate) => {
60
+ if (!logicalScrollSize || !physicalScrollSize) {
61
+ return 0;
62
+ }
63
+ if (!isCompressed) {
64
+ return clampPhysical(coordinate);
65
+ }
66
+ return clampPhysical((clampLogical(coordinate) / logicalScrollSize) * physicalScrollSize);
67
+ };
68
+ return {
69
+ contentSize: size,
70
+ clientSize: client,
71
+ viewportSize: viewport,
72
+ physicalContentSize,
73
+ logicalScrollSize,
74
+ physicalScrollSize,
75
+ isCompressed,
76
+ toLogicalCoordinate,
77
+ toPhysicalCoordinate,
78
+ getRenderOffset(coordinate) {
79
+ const logical = clampLogical(coordinate);
80
+ return logical - toPhysicalCoordinate(logical);
81
+ },
82
+ };
83
+ }
84
+
85
+ /**
86
+ * Collects data for pinned columns in the required @ViewportProps format.
87
+ */
88
+ /**
89
+ * Represents the slot names for the viewport slots.
90
+ */
91
+ const HEADER_SLOT = 'header'; // Slot name for the header slot
92
+ const FOOTER_SLOT = 'footer'; // Slot name for the footer slot
93
+ const CONTENT_SLOT = 'content'; // Slot name for the content slot
94
+ const DATA_SLOT = 'data'; // Slot name for the data slot
95
+ /**
96
+ * Returns the last visible cell in the viewport for a given row type.
97
+ * Coordinates are not zero-based and are relative to the viewport.
98
+ * If needed to be zero-based they can be adjusted by subtracting 1.
99
+ */
100
+ function getLastCell(data, rowType) {
101
+ // Get the last visible column count from the viewport column data.
102
+ const lastVisibleColumnCount = data.viewports[data.colType].store.get('realCount');
103
+ // Get the last visible row count for the given row type from the viewport column data.
104
+ const lastVisibleRowCount = data.viewports[rowType].store.get('realCount');
105
+ // Return the last visible cell with the last visible column count and row count.
106
+ return {
107
+ x: lastVisibleColumnCount,
108
+ y: lastVisibleRowCount,
109
+ };
110
+ }
111
+ function viewportDataPartition(data, type, slot, fixed) {
112
+ return {
113
+ colData: data.colStore,
114
+ viewportCol: data.viewports[data.colType].store,
115
+ viewportRow: data.viewports[type].store,
116
+ /**
117
+ * lastCell is the last real coordinate + 1, saved to selection store
118
+ */
119
+ lastCell: getLastCell(data, type),
120
+ slot,
121
+ type,
122
+ canDrag: !fixed,
123
+ position: data.position,
124
+ dataStore: data.rowStores[type].store,
125
+ dimensionCol: data.dimensions[data.colType].store,
126
+ dimensionRow: data.dimensions[type].store,
127
+ style: fixed
128
+ ? { height: `${data.dimensions[type].store.get('realSize')}px` }
129
+ : undefined,
130
+ };
131
+ }
132
+
133
+ export { CONTENT_SLOT as C, DATA_SLOT as D, FOOTER_SLOT as F, HEADER_SLOT as H, getScrollDimension as g, viewportDataPartition as v };
@@ -1,7 +1,7 @@
1
1
  /*!
2
2
  * Built by Revolist OU ❤️
3
3
  */
4
- import { j as getItemByPosition, W as createStore, w as setStore } from './dimension.helpers-DmIvjIa7.js';
4
+ import { j as getItemByPosition, K as createStore, l as setStore } from './dimension.helpers-CGKwSvw6.js';
5
5
 
6
6
  const LETTER_BLOCK_SIZE = 10;
7
7
  const calculateRowHeaderSize = (itemsLength, rowHeaderColumn, minWidth = 50) => {
@@ -9,6 +9,15 @@ const calculateRowHeaderSize = (itemsLength, rowHeaderColumn, minWidth = 50) =>
9
9
  Math.max((itemsLength.toString().length + 1) * LETTER_BLOCK_SIZE, minWidth));
10
10
  };
11
11
 
12
+ function getViewportMaxCoordinate(dimension, viewportSize, frameOffset = 1) {
13
+ if (!viewportSize || dimension.realSize <= viewportSize) {
14
+ return 0;
15
+ }
16
+ return Math.max(0, dimension.realSize - viewportSize - dimension.originItemSize * frameOffset);
17
+ }
18
+ function clampViewportCoordinate(coordinate, dimension, viewportSize, frameOffset = 1) {
19
+ return Math.min(Math.max(0, coordinate), getViewportMaxCoordinate(dimension, viewportSize, frameOffset));
20
+ }
12
21
  /**
13
22
  * Update items based on new scroll position
14
23
  * If viewport wasn't changed fully simple recombination of positions
@@ -274,6 +283,8 @@ function initialState() {
274
283
  realCount: 0,
275
284
  // size of viewport in px
276
285
  clientSize: 0,
286
+ // logical-to-physical render offset used when scroll space is compressed
287
+ renderOffset: 0,
277
288
  };
278
289
  }
279
290
  /**
@@ -309,21 +320,8 @@ class ViewportStore {
309
320
  const outsize = singleOffsetInPx * 2;
310
321
  // math virtual size is based on visible area + 2 items outside of visible area
311
322
  const virtualSize = viewportSize + outsize;
312
- // expected no scroll if real size less than virtual size, position is 0
313
- let maxCoordinate = 0;
314
- // if there is nodes outside of viewport, max coordinate has to be adjusted
315
- if (dimension.realSize > viewportSize) {
316
- // max coordinate is real size minus virtual/rendered space
317
- maxCoordinate = dimension.realSize - viewportSize - singleOffsetInPx;
318
- }
319
- let pos = position;
320
- // limit position to max and min coordinates
321
- if (pos < 0) {
322
- pos = 0;
323
- }
324
- else if (pos > maxCoordinate) {
325
- pos = maxCoordinate;
326
- }
323
+ const maxCoordinate = getViewportMaxCoordinate(dimension, viewportSize, frameOffset);
324
+ let pos = clampViewportCoordinate(position, dimension, viewportSize, frameOffset);
327
325
  // store last coordinate for further restore on redraw
328
326
  this.lastCoordinate = pos;
329
327
  // actual position is less than first item start based on offset
@@ -401,4 +399,4 @@ class ViewportStore {
401
399
  }
402
400
  }
403
401
 
404
- export { ViewportStore as V, addMissingItems as a, getItems as b, isActiveRangeOutsideLastItem as c, getFirstItem as d, getLastItem as e, calculateRowHeaderSize as f, getUpdatedItemsByPosition as g, isActiveRange as i, recombineByOffset as r, setItemSizes as s, updateMissingAndRange as u };
402
+ export { ViewportStore as V, getUpdatedItemsByPosition as a, addMissingItems as b, clampViewportCoordinate as c, getItems as d, isActiveRangeOutsideLastItem as e, getFirstItem as f, getViewportMaxCoordinate as g, getLastItem as h, isActiveRange as i, calculateRowHeaderSize as j, recombineByOffset as r, setItemSizes as s, updateMissingAndRange as u };
@@ -2,12 +2,18 @@
2
2
  * Built by Revolist OU ❤️
3
3
  */
4
4
  import { h, f as Build } from './index-Chp_81rd.js';
5
- import { y as DATA_ROW, G as DRAG_ICON_CLASS, I as DRAGGABLE_CLASS } from './dimension.helpers-DmIvjIa7.js';
6
- import { l as GROUP_EXPAND_BTN, m as GROUP_EXPAND_EVENT, G as GROUP_DEPTH, h as GROUP_EXPANDED, P as PSEUDO_GROUP_ITEM, O as isRowDragService, B as getCellDataParsed } from './column.service-CCvAi5l4.js';
5
+ import { n as DATA_ROW, w as DRAG_ICON_CLASS, x as DRAGGABLE_CLASS } from './dimension.helpers-CGKwSvw6.js';
6
+ import { l as GROUP_EXPAND_BTN, m as GROUP_EXPAND_EVENT, G as GROUP_DEPTH, h as GROUP_EXPANDED, P as PSEUDO_GROUP_ITEM, O as isRowDragService, B as getCellDataParsed } from './column.service-DbpulTog.js';
7
7
 
8
+ /**
9
+ * Renders sorting direction and optional additive sorting rank.
10
+ */
8
11
  const SortingSign = ({ column }) => {
9
12
  var _a;
10
- return h("i", { class: (_a = column === null || column === void 0 ? void 0 : column.order) !== null && _a !== void 0 ? _a : 'sort-off' });
13
+ const indicatorAttrs = { class: 'sort-indicator' };
14
+ const iconAttrs = { class: (_a = column === null || column === void 0 ? void 0 : column.order) !== null && _a !== void 0 ? _a : 'sort-off' };
15
+ const orderIndexAttrs = { class: 'sort-order-index' };
16
+ return (h("span", Object.assign({}, indicatorAttrs), h("i", Object.assign({}, iconAttrs)), (column === null || column === void 0 ? void 0 : column.sortIndex) ? (h("sup", Object.assign({}, orderIndexAttrs), column.sortIndex)) : null));
11
17
  };
12
18
 
13
19
  const PADDING_DEPTH = 10;