@revolist/revogrid 4.22.1 → 4.23.1

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 (125) hide show
  1. package/dist/cjs/{cell-renderer-BQdEGQXP.js → cell-renderer-Dcz022q7.js} +9 -3
  2. package/dist/cjs/{column.drag.plugin-RDjQhKCH.js → column.drag.plugin-DJueWxN_.js} +391 -256
  3. package/dist/cjs/{column.service-DXYMehqK.js → column.service-C1Qvcf5l.js} +10 -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-QrcXXSkF.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 +124 -18
  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 +74 -32
  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 +53 -17
  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 +69 -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/groupingRow/grouping.service.js +9 -0
  34. package/dist/collection/plugins/moveColumn/column.drag.plugin.js +4 -4
  35. package/dist/collection/plugins/sorting/sorting.func.js +173 -15
  36. package/dist/collection/plugins/sorting/sorting.plugin.js +167 -84
  37. package/dist/collection/plugins/sorting/sorting.sign.js +7 -1
  38. package/dist/collection/serve/controller.js +98 -37
  39. package/dist/collection/serve/data.js +273 -144
  40. package/dist/collection/services/dimension.provider.js +16 -1
  41. package/dist/collection/services/local.scroll.service.js +59 -24
  42. package/dist/collection/services/scroll.dimension.helpers.js +83 -0
  43. package/dist/collection/services/selection.store.connector.js +30 -4
  44. package/dist/collection/store/dimension/dimension.recalculate.plugin.js +22 -9
  45. package/dist/collection/store/dimension/dimension.store.js +4 -2
  46. package/dist/collection/store/vp/viewport.helpers.js +9 -0
  47. package/dist/collection/store/vp/viewport.store.js +5 -16
  48. package/dist/collection/utils/store.utils.js +3 -3
  49. package/dist/{revo-grid/cell-renderer-CALsEsnh.js → esm/cell-renderer-BtN-NGCk.js} +9 -3
  50. package/dist/esm/{column.drag.plugin-Dy5ztusn.js → column.drag.plugin-DCZW62Uc.js} +388 -255
  51. package/dist/esm/{column.service-CCvAi5l4.js → column.service-CC_SD8W3.js} +10 -1
  52. package/dist/{revo-grid/debounce-BfO9dz9v.js → esm/debounce-PCRWZliA.js} +1 -1
  53. package/dist/{revo-grid/dimension.helpers-DmIvjIa7.js → esm/dimension.helpers-CGKwSvw6.js} +7 -128
  54. package/dist/esm/{edit.utils-DYN6XZh8.js → edit.utils-Dnnbd0xG.js} +1 -1
  55. package/dist/{revo-grid/header-cell-renderer-DU8wKAbg.js → esm/header-cell-renderer-BsvUQ8GS.js} +1 -1
  56. package/dist/esm/index-Db3qZoW5.js +127 -0
  57. package/dist/esm/index.js +11 -10
  58. package/dist/esm/revo-grid.entry.js +123 -17
  59. package/dist/esm/revogr-attribution_7.entry.js +42 -24
  60. package/dist/esm/revogr-clipboard_3.entry.js +11 -9
  61. package/dist/esm/revogr-data_4.entry.js +75 -33
  62. package/dist/esm/revogr-filter-panel.entry.js +3 -2
  63. package/dist/esm/{text-editor-DpCnd6Fq.js → text-editor-C3RUSwH5.js} +2 -2
  64. package/dist/esm/{throttle-ERvyruXb.js → throttle-CaUDyxyU.js} +60 -25
  65. package/dist/esm/viewport.helpers-CoCAvmZs.js +133 -0
  66. package/dist/{revo-grid/viewport.store-CFjDW-3l.js → esm/viewport.store-COAfzAyu.js} +15 -17
  67. package/dist/{esm/cell-renderer-CALsEsnh.js → revo-grid/cell-renderer-BtN-NGCk.js} +9 -3
  68. package/dist/revo-grid/{column.drag.plugin-Dy5ztusn.js → column.drag.plugin-DCZW62Uc.js} +388 -255
  69. package/dist/revo-grid/{column.service-CCvAi5l4.js → column.service-CC_SD8W3.js} +10 -1
  70. package/dist/{esm/debounce-BfO9dz9v.js → revo-grid/debounce-PCRWZliA.js} +1 -1
  71. package/dist/{esm/dimension.helpers-DmIvjIa7.js → revo-grid/dimension.helpers-CGKwSvw6.js} +7 -128
  72. package/dist/revo-grid/{edit.utils-DYN6XZh8.js → edit.utils-Dnnbd0xG.js} +1 -1
  73. package/dist/{esm/header-cell-renderer-DU8wKAbg.js → revo-grid/header-cell-renderer-BsvUQ8GS.js} +1 -1
  74. package/dist/revo-grid/index-Db3qZoW5.js +127 -0
  75. package/dist/revo-grid/index.esm.js +11 -10
  76. package/dist/revo-grid/revo-grid.entry.js +123 -17
  77. package/dist/revo-grid/revogr-attribution_7.entry.js +42 -24
  78. package/dist/revo-grid/revogr-clipboard_3.entry.js +11 -9
  79. package/dist/revo-grid/revogr-data_4.entry.js +75 -33
  80. package/dist/revo-grid/revogr-filter-panel.entry.js +3 -2
  81. package/dist/revo-grid/{text-editor-DpCnd6Fq.js → text-editor-C3RUSwH5.js} +2 -2
  82. package/dist/revo-grid/{throttle-ERvyruXb.js → throttle-CaUDyxyU.js} +60 -25
  83. package/dist/revo-grid/viewport.helpers-CoCAvmZs.js +133 -0
  84. package/dist/{esm/viewport.store-CFjDW-3l.js → revo-grid/viewport.store-COAfzAyu.js} +15 -17
  85. package/dist/types/components/header/header-group-renderer.d.ts +2 -0
  86. package/dist/types/components/header/header-renderer.d.ts +1 -0
  87. package/dist/types/components/header/revogr-header.d.ts +2 -0
  88. package/dist/types/components/overlay/keyboard.service.d.ts +5 -0
  89. package/dist/types/components/revoGrid/revo-grid.d.ts +12 -0
  90. package/dist/types/plugins/groupingRow/grouping.row.plugin.d.ts +8 -0
  91. package/dist/types/plugins/sorting/sorting.func.d.ts +25 -2
  92. package/dist/types/plugins/sorting/sorting.plugin.d.ts +84 -9
  93. package/dist/types/plugins/sorting/sorting.sign.d.ts +5 -1
  94. package/dist/types/plugins/sorting/sorting.types.d.ts +46 -1
  95. package/dist/types/services/local.scroll.service.d.ts +10 -2
  96. package/dist/types/services/scroll.dimension.helpers.d.ts +20 -0
  97. package/dist/types/services/selection.store.connector.d.ts +6 -0
  98. package/dist/types/store/vp/viewport.helpers.d.ts +2 -0
  99. package/dist/types/types/interfaces.d.ts +11 -0
  100. package/dist/types/types/selection.d.ts +13 -0
  101. package/hydrate/index.js +795 -383
  102. package/hydrate/index.mjs +795 -383
  103. package/package.json +1 -1
  104. package/standalone/column.service.js +1 -1
  105. package/standalone/data.store.js +1 -1
  106. package/standalone/debounce.js +1 -1
  107. package/standalone/dimension.helpers.js +1 -1
  108. package/standalone/index.js +1 -1
  109. package/standalone/local.scroll.timer.js +1 -1
  110. package/standalone/revo-grid.js +1 -1
  111. package/standalone/revogr-data2.js +1 -1
  112. package/standalone/revogr-filter-panel.js +1 -1
  113. package/standalone/revogr-header2.js +1 -1
  114. package/standalone/revogr-order-editor2.js +1 -1
  115. package/standalone/revogr-overlay-selection2.js +1 -1
  116. package/standalone/revogr-row-headers.js +1 -1
  117. package/standalone/revogr-row-headers2.js +1 -1
  118. package/standalone/revogr-scroll-virtual2.js +1 -1
  119. package/standalone/revogr-viewport-scroll2.js +1 -1
  120. package/standalone/selection.utils.js +1 -1
  121. package/standalone/throttle.js +1 -1
  122. package/standalone/toNumber.js +1 -1
  123. package/dist/cjs/viewport.helpers-BAovztDd.js +0 -58
  124. package/dist/esm/viewport.helpers-VXhsJZtn.js +0 -52
  125. package/dist/revo-grid/viewport.helpers-VXhsJZtn.js +0 -52
@@ -0,0 +1,83 @@
1
+ /*!
2
+ * Built by Revolist OU ❤️
3
+ */
4
+ const FALLBACK_MAX_SCROLL_SIZE = 16000000;
5
+ const SCROLL_SIZE_GUARD = 1000000;
6
+ let detectedMaxScrollSize;
7
+ export 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
+ export 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
+ }
@@ -46,13 +46,11 @@ export class SelectionStoreConnector {
46
46
  return (_a = this.focusedStore) === null || _a === void 0 ? void 0 : _a.entity.store.get('range');
47
47
  }
48
48
  registerColumn(x, type) {
49
+ this.updateColumnTypeMapping(x, type);
49
50
  if (this.columnStores[x]) {
50
51
  return this.columnStores[x];
51
52
  }
52
53
  this.columnStores[x] = new SelectionStore();
53
- // build cross-linking type to position
54
- this.storesByType[type] = x;
55
- this.storesXToType[x] = type;
56
54
  return this.columnStores[x];
57
55
  }
58
56
  registerRow(y, type) {
@@ -194,7 +192,10 @@ export class SelectionStoreConnector {
194
192
  const nextItem = nextCell(focus, lastCell);
195
193
  let nextStore;
196
194
  if (nextItem) {
197
- Object.entries(nextItem).forEach(([type, nextItemCoord]) => {
195
+ Object.keys(nextItem).forEach((t) => {
196
+ var _a;
197
+ const type = t;
198
+ const nextItemCoord = (_a = nextItem[type]) !== null && _a !== void 0 ? _a : 0;
198
199
  let stores;
199
200
  switch (type) {
200
201
  case 'x':
@@ -270,4 +271,29 @@ export class SelectionStoreConnector {
270
271
  }
271
272
  return stores;
272
273
  }
274
+ /**
275
+ * Keep column viewport positions and types in sync across pin/unpin rerenders.
276
+ * Regression case: when a selected rgCol cell was pinned left, colPinStart
277
+ * could take over x=0 and render the stale rgCol focus store in the pinned area.
278
+ */
279
+ updateColumnTypeMapping(x, type) {
280
+ const previousType = this.storesXToType[x];
281
+ const previousX = this.storesByType[type];
282
+ let shouldClearFocus = false;
283
+ this.storesByType[type] = x;
284
+ this.storesXToType[x] = type;
285
+ if (previousType && previousType !== type) {
286
+ shouldClearFocus = true;
287
+ if (this.storesByType[previousType] === x) {
288
+ delete this.storesByType[previousType];
289
+ }
290
+ }
291
+ if (typeof previousX === 'number' && previousX !== x && this.storesXToType[previousX] === type) {
292
+ delete this.storesXToType[previousX];
293
+ shouldClearFocus = true;
294
+ }
295
+ if (shouldClearFocus) {
296
+ this.clearAll();
297
+ }
298
+ }
273
299
  }
@@ -1,6 +1,21 @@
1
1
  /*!
2
2
  * Built by Revolist OU ❤️
3
3
  */
4
+ function calculateRealSize({ count, originItemSize, sizes, }) {
5
+ const safeCount = Math.max(0, count);
6
+ let realSize = safeCount * originItemSize;
7
+ for (let index in sizes) {
8
+ const itemIndex = Number(index);
9
+ if (!Number.isInteger(itemIndex) ||
10
+ itemIndex < 0 ||
11
+ itemIndex >= safeCount ||
12
+ String(itemIndex) !== index) {
13
+ continue;
14
+ }
15
+ realSize += sizes[index] - originItemSize;
16
+ }
17
+ return realSize;
18
+ }
4
19
  /**
5
20
  * Plugin which recalculates realSize on changes of sizes, originItemSize and count
6
21
  */
@@ -13,20 +28,18 @@ export const recalculateRealSizePlugin = (storeService) => {
13
28
  * Reacts on changes of count, sizes and originItemSize
14
29
  */
15
30
  set(k) {
16
- var _a;
17
31
  switch (k) {
18
32
  case 'count':
19
33
  case 'sizes':
20
34
  case 'originItemSize': {
21
35
  // recalculate realSize
22
- let realSize = 0;
23
- const count = storeService.store.get('count');
24
- const sizes = storeService.store.get('sizes');
25
- const originItemSize = storeService.store.get('originItemSize');
26
- for (let i = 0; i < count; i++) {
27
- realSize += (_a = sizes[i]) !== null && _a !== void 0 ? _a : originItemSize;
28
- }
29
- storeService.setStore({ realSize });
36
+ storeService.setStore({
37
+ realSize: calculateRealSize({
38
+ count: storeService.store.get('count'),
39
+ sizes: storeService.store.get('sizes'),
40
+ originItemSize: storeService.store.get('originItemSize'),
41
+ }),
42
+ });
30
43
  break;
31
44
  }
32
45
  }
@@ -31,7 +31,9 @@ function initialState() {
31
31
  // size which all items can take
32
32
  realSize: 0,
33
33
  // initial item size if it wasn't changed
34
- originItemSize: 0
34
+ originItemSize: 0,
35
+ // logical-to-physical render offset used when scroll space is compressed
36
+ renderOffset: 0
35
37
  });
36
38
  }
37
39
  export class DimensionStore {
@@ -63,7 +65,7 @@ export class DimensionStore {
63
65
  setStore(this.store, data);
64
66
  }
65
67
  drop() {
66
- setStore(this.store, initialBase());
68
+ setStore(this.store, Object.assign(Object.assign({}, initialBase()), { renderOffset: 0 }));
67
69
  }
68
70
  /**
69
71
  * Set custom dimension sizes and overwrite old
@@ -2,6 +2,15 @@
2
2
  * Built by Revolist OU ❤️
3
3
  */
4
4
  import { getItemByPosition } from "../dimension/dimension.helpers";
5
+ export function getViewportMaxCoordinate(dimension, viewportSize, frameOffset = 1) {
6
+ if (!viewportSize || dimension.realSize <= viewportSize) {
7
+ return 0;
8
+ }
9
+ return Math.max(0, dimension.realSize - viewportSize - dimension.originItemSize * frameOffset);
10
+ }
11
+ export function clampViewportCoordinate(coordinate, dimension, viewportSize, frameOffset = 1) {
12
+ return Math.min(Math.max(0, coordinate), getViewportMaxCoordinate(dimension, viewportSize, frameOffset));
13
+ }
5
14
  /**
6
15
  * Update items based on new scroll position
7
16
  * If viewport wasn't changed fully simple recombination of positions
@@ -1,7 +1,7 @@
1
1
  /*!
2
2
  * Built by Revolist OU ❤️
3
3
  */
4
- import { addMissingItems, getFirstItem, getLastItem, getUpdatedItemsByPosition, isActiveRange, setItemSizes, updateMissingAndRange, isActiveRangeOutsideLastItem, } from "./viewport.helpers";
4
+ import { addMissingItems, getFirstItem, getLastItem, getUpdatedItemsByPosition, clampViewportCoordinate, getViewportMaxCoordinate, isActiveRange, setItemSizes, updateMissingAndRange, isActiveRangeOutsideLastItem, } from "./viewport.helpers";
5
5
  import { createStore } from "@stencil/store";
6
6
  import { setStore } from "../../utils";
7
7
  /**
@@ -22,6 +22,8 @@ function initialState() {
22
22
  realCount: 0,
23
23
  // size of viewport in px
24
24
  clientSize: 0,
25
+ // logical-to-physical render offset used when scroll space is compressed
26
+ renderOffset: 0,
25
27
  };
26
28
  }
27
29
  /**
@@ -57,21 +59,8 @@ export class ViewportStore {
57
59
  const outsize = singleOffsetInPx * 2;
58
60
  // math virtual size is based on visible area + 2 items outside of visible area
59
61
  const virtualSize = viewportSize + outsize;
60
- // expected no scroll if real size less than virtual size, position is 0
61
- let maxCoordinate = 0;
62
- // if there is nodes outside of viewport, max coordinate has to be adjusted
63
- if (dimension.realSize > viewportSize) {
64
- // max coordinate is real size minus virtual/rendered space
65
- maxCoordinate = dimension.realSize - viewportSize - singleOffsetInPx;
66
- }
67
- let pos = position;
68
- // limit position to max and min coordinates
69
- if (pos < 0) {
70
- pos = 0;
71
- }
72
- else if (pos > maxCoordinate) {
73
- pos = maxCoordinate;
74
- }
62
+ const maxCoordinate = getViewportMaxCoordinate(dimension, viewportSize, frameOffset);
63
+ let pos = clampViewportCoordinate(position, dimension, viewportSize, frameOffset);
75
64
  // store last coordinate for further restore on redraw
76
65
  this.lastCoordinate = pos;
77
66
  // actual position is less than first item start based on offset
@@ -8,7 +8,7 @@
8
8
  * @param data - The data to set on the store.
9
9
  */
10
10
  export function setStore(store, data) {
11
- Object.entries(data).forEach(([key, value]) => {
12
- store.set(key, value);
13
- });
11
+ for (const key of Object.keys(data)) {
12
+ store.set(key, data[key]);
13
+ }
14
14
  }
@@ -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-CC_SD8W3.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;