@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
@@ -3,7 +3,7 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var dimension_helpers = require('./dimension.helpers-CiiNnlLa.js');
6
+ var dimension_helpers = require('./dimension.helpers-B9HgANnM.js');
7
7
 
8
8
  /**
9
9
  * Converts `value` to an integer.
@@ -1774,15 +1774,15 @@ var dataViewCtorString = toSource(DataView),
1774
1774
  * @param {*} value The value to query.
1775
1775
  * @returns {string} Returns the `toStringTag`.
1776
1776
  */
1777
- exports.getTag = debounce$1.baseGetTag;
1777
+ var getTag = debounce$1.baseGetTag;
1778
1778
 
1779
1779
  // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.
1780
- if ((DataView && exports.getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||
1781
- (Map$1 && exports.getTag(new Map$1) != mapTag) ||
1782
- (Promise$1 && exports.getTag(Promise$1.resolve()) != promiseTag) ||
1783
- (Set$1 && exports.getTag(new Set$1) != setTag) ||
1784
- (WeakMap && exports.getTag(new WeakMap) != weakMapTag)) {
1785
- exports.getTag = function(value) {
1780
+ if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||
1781
+ (Map$1 && getTag(new Map$1) != mapTag) ||
1782
+ (Promise$1 && getTag(Promise$1.resolve()) != promiseTag) ||
1783
+ (Set$1 && getTag(new Set$1) != setTag) ||
1784
+ (WeakMap && getTag(new WeakMap) != weakMapTag)) {
1785
+ getTag = function(value) {
1786
1786
  var result = debounce$1.baseGetTag(value),
1787
1787
  Ctor = result == objectTag$1 ? value.constructor : undefined,
1788
1788
  ctorString = Ctor ? toSource(Ctor) : '';
@@ -1831,8 +1831,8 @@ var hasOwnProperty = objectProto.hasOwnProperty;
1831
1831
  function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {
1832
1832
  var objIsArr = isArray(object),
1833
1833
  othIsArr = isArray(other),
1834
- objTag = objIsArr ? arrayTag : exports.getTag(object),
1835
- othTag = othIsArr ? arrayTag : exports.getTag(other);
1834
+ objTag = objIsArr ? arrayTag : getTag(object),
1835
+ othTag = othIsArr ? arrayTag : getTag(other);
1836
1836
 
1837
1837
  objTag = objTag == argsTag ? objectTag : objTag;
1838
1838
  othTag = othTag == argsTag ? objectTag : othTag;
@@ -2708,7 +2708,7 @@ function createRange(fromRight) {
2708
2708
  * _.range(0);
2709
2709
  * // => []
2710
2710
  */
2711
- var range$1 = createRange();
2711
+ var range = createRange();
2712
2712
 
2713
2713
  const appendToMap = (map, propName, value) => {
2714
2714
  let refs = map.get(propName);
@@ -3023,9 +3023,9 @@ function gatherTrimmedItems(trimmedItems) {
3023
3023
  * @param data - The data to set on the store.
3024
3024
  */
3025
3025
  function setStore(store, data) {
3026
- Object.entries(data).forEach(([key, value]) => {
3027
- store.set(key, value);
3028
- });
3026
+ for (const key of Object.keys(data)) {
3027
+ store.set(key, data[key]);
3028
+ }
3029
3029
  }
3030
3030
 
3031
3031
  const MIN_COL_SIZE = 30;
@@ -3134,127 +3134,6 @@ var osPlatform;
3134
3134
  })(osPlatform || (osPlatform = {}));
3135
3135
  var OsPlatform = osPlatform;
3136
3136
 
3137
- /* Generate range on size
3138
- */
3139
- function range(size, startAt = 0) {
3140
- const res = [];
3141
- const end = startAt + size;
3142
- for (let i = startAt; i < end; i++) {
3143
- res.push(i);
3144
- }
3145
- return res;
3146
- }
3147
- /* Find index position in array */
3148
- function findPositionInArray(el, compareFn) {
3149
- return (function (arr) {
3150
- let m = 0;
3151
- let n = arr.length - 1;
3152
- while (m <= n) {
3153
- const k = (n + m) >> 1;
3154
- const cmp = compareFn(el, arr[k]);
3155
- if (cmp > 0) {
3156
- m = k + 1;
3157
- }
3158
- else if (cmp < 0) {
3159
- n = k - 1;
3160
- }
3161
- else {
3162
- return k;
3163
- }
3164
- }
3165
- return -m - 1;
3166
- })(this);
3167
- }
3168
- /**
3169
- * Sorted push
3170
- */
3171
- function pushSorted(arr, el, fn) {
3172
- arr.splice(findPositionInArray.bind(arr)(el, fn), 0, el);
3173
- return arr;
3174
- }
3175
- // (arr1[index1] < arr2[index2])
3176
- function simpleCompare(el1, el2) {
3177
- return el1 < el2;
3178
- }
3179
- /**
3180
- * Merge sorted array helper function
3181
- */
3182
- function mergeSortedArray(arr1, arr2, compareFn = simpleCompare) {
3183
- const merged = [];
3184
- let index1 = 0;
3185
- let index2 = 0;
3186
- let current = 0;
3187
- while (current < arr1.length + arr2.length) {
3188
- let isArr1Depleted = index1 >= arr1.length;
3189
- let isArr2Depleted = index2 >= arr2.length;
3190
- if (!isArr1Depleted && (isArr2Depleted || compareFn(arr1[index1], arr2[index2]))) {
3191
- merged[current] = arr1[index1];
3192
- index1++;
3193
- }
3194
- else {
3195
- merged[current] = arr2[index2];
3196
- index2++;
3197
- }
3198
- current++;
3199
- }
3200
- return merged;
3201
- }
3202
- /**
3203
- * Calculate system scrollbar size
3204
- */
3205
- function getScrollbarSize(document) {
3206
- // Create a temporary div container and append it to the body
3207
- const container = document.createElement('div');
3208
- // Apply styling to ensure the div is scrollable
3209
- container.style.overflow = 'scroll';
3210
- container.style.visibility = 'hidden'; // make sure the container isn't visible
3211
- container.style.position = 'absolute';
3212
- container.style.top = '-9999px'; // move it out of the screen
3213
- container.style.width = '50px'; // arbitrary width
3214
- container.style.height = '50px'; // arbitrary height
3215
- // Append the div to the body
3216
- document.body.appendChild(container);
3217
- // Calculate the width of the scrollbar
3218
- const scrollbarWidth = container.offsetWidth - container.clientWidth;
3219
- // Remove the div from the body after calculation
3220
- document.body.removeChild(container);
3221
- // Return the calculated width of the scrollbar
3222
- return scrollbarWidth;
3223
- }
3224
- /* Scale a value between 2 ranges
3225
- *
3226
- * Sample:
3227
- * // 55 from a 0-100 range to a 0-1000 range (Ranges don't have to be positive)
3228
- * const n = scaleValue(55, [0,100], [0,1000]);
3229
- *
3230
- * Ranges of two values
3231
- * @from
3232
- * @to
3233
- *
3234
- * ~~ return value does the equivalent of Math.floor but faster.
3235
- */
3236
- function scaleValue(value, from, to) {
3237
- return ((to[1] - to[0]) * (value - from[0])) / (from[1] - from[0]) + to[0];
3238
- }
3239
- /**
3240
- * Async timeout
3241
- */
3242
- async function timeout(delay = 0) {
3243
- await new Promise((r) => {
3244
- setTimeout(() => r(), delay);
3245
- });
3246
- }
3247
- /**
3248
- * Type script mixins
3249
- */
3250
- function applyMixins(derivedCtor, constructors) {
3251
- constructors.forEach(baseCtor => {
3252
- Object.getOwnPropertyNames(baseCtor.prototype).forEach(name => {
3253
- Object.defineProperty(derivedCtor.prototype, name, Object.getOwnPropertyDescriptor(baseCtor.prototype, name) || Object.create(null));
3254
- });
3255
- });
3256
- }
3257
-
3258
3137
  /**
3259
3138
  * Data store
3260
3139
  * Manage the state of a data source and provide methods for updating, adding, and refreshing the data.
@@ -3288,7 +3167,7 @@ class DataStore {
3288
3167
  }
3289
3168
  // clear items
3290
3169
  this.store.set('items', []);
3291
- const items = range$1(0, (source === null || source === void 0 ? void 0 : source.length) || 0);
3170
+ const items = range(0, (source === null || source === void 0 ? void 0 : source.length) || 0);
3292
3171
  // set proxy first
3293
3172
  setStore(this.store, {
3294
3173
  source,
@@ -3644,18 +3523,13 @@ exports.ROW_FOCUSED_CLASS = ROW_FOCUSED_CLASS;
3644
3523
  exports.ROW_HEADER_TYPE = ROW_HEADER_TYPE;
3645
3524
  exports.SELECTION_BORDER_CLASS = SELECTION_BORDER_CLASS;
3646
3525
  exports.TMP_SELECTION_BG_CLASS = TMP_SELECTION_BG_CLASS;
3647
- exports.applyMixins = applyMixins;
3648
3526
  exports.baseIteratee = baseIteratee;
3649
- exports.baseKeys = baseKeys;
3650
- exports.baseProperty = baseProperty;
3651
3527
  exports.calculateDimensionData = calculateDimensionData;
3652
3528
  exports.createStore = createStore;
3653
- exports.findPositionInArray = findPositionInArray;
3654
3529
  exports.gatherTrimmedItems = gatherTrimmedItems;
3655
3530
  exports.getItemByIndex = getItemByIndex;
3656
3531
  exports.getItemByPosition = getItemByPosition;
3657
3532
  exports.getPhysical = getPhysical;
3658
- exports.getScrollbarSize = getScrollbarSize;
3659
3533
  exports.getSourceItem = getSourceItem;
3660
3534
  exports.getSourceItemVirtualIndexByProp = getSourceItemVirtualIndexByProp;
3661
3535
  exports.getSourcePhysicalIndex = getSourcePhysicalIndex;
@@ -3665,15 +3539,10 @@ exports.isArray = isArray;
3665
3539
  exports.isArrayLike = isArrayLike;
3666
3540
  exports.isIterateeCall = isIterateeCall;
3667
3541
  exports.keys = keys;
3668
- exports.mergeSortedArray = mergeSortedArray;
3669
3542
  exports.proxyPlugin = proxyPlugin;
3670
- exports.pushSorted = pushSorted;
3671
- exports.range = range;
3672
- exports.scaleValue = scaleValue;
3673
3543
  exports.setItems = setItems;
3674
3544
  exports.setSourceByPhysicalIndex = setSourceByPhysicalIndex;
3675
3545
  exports.setSourceByVirtualIndex = setSourceByVirtualIndex;
3676
3546
  exports.setStore = setStore;
3677
- exports.timeout = timeout;
3678
3547
  exports.toFinite = toFinite;
3679
3548
  exports.trimmedPlugin = trimmedPlugin;
@@ -3,7 +3,7 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var dimension_helpers = require('./dimension.helpers-CiiNnlLa.js');
6
+ var dimension_helpers = require('./dimension.helpers-B9HgANnM.js');
7
7
 
8
8
  function isMetaKey(code) {
9
9
  const keys = [
@@ -4,7 +4,7 @@
4
4
  'use strict';
5
5
 
6
6
  var index = require('./index-Dq8Xzj5l.js');
7
- var column_service = require('./column.service-DXYMehqK.js');
7
+ var column_service = require('./column.service-f612L4ql.js');
8
8
 
9
9
  /**
10
10
  * Dispatches a custom event to a specified target element.
@@ -0,0 +1,136 @@
1
+ /*!
2
+ * Built by Revolist OU ❤️
3
+ */
4
+ 'use strict';
5
+
6
+ require('./dimension.helpers-B9HgANnM.js');
7
+
8
+ /* Generate range on size
9
+ */
10
+ function range(size, startAt = 0) {
11
+ const res = [];
12
+ const end = startAt + size;
13
+ for (let i = startAt; i < end; i++) {
14
+ res.push(i);
15
+ }
16
+ return res;
17
+ }
18
+ /* Find index position in array */
19
+ function findPositionInArray(el, compareFn) {
20
+ return (function (arr) {
21
+ let m = 0;
22
+ let n = arr.length - 1;
23
+ while (m <= n) {
24
+ const k = (n + m) >> 1;
25
+ const cmp = compareFn(el, arr[k]);
26
+ if (cmp > 0) {
27
+ m = k + 1;
28
+ }
29
+ else if (cmp < 0) {
30
+ n = k - 1;
31
+ }
32
+ else {
33
+ return k;
34
+ }
35
+ }
36
+ return -m - 1;
37
+ })(this);
38
+ }
39
+ /**
40
+ * Sorted push
41
+ */
42
+ function pushSorted(arr, el, fn) {
43
+ arr.splice(findPositionInArray.bind(arr)(el, fn), 0, el);
44
+ return arr;
45
+ }
46
+ // (arr1[index1] < arr2[index2])
47
+ function simpleCompare(el1, el2) {
48
+ return el1 < el2;
49
+ }
50
+ /**
51
+ * Merge sorted array helper function
52
+ */
53
+ function mergeSortedArray(arr1, arr2, compareFn = simpleCompare) {
54
+ const merged = [];
55
+ let index1 = 0;
56
+ let index2 = 0;
57
+ let current = 0;
58
+ while (current < arr1.length + arr2.length) {
59
+ let isArr1Depleted = index1 >= arr1.length;
60
+ let isArr2Depleted = index2 >= arr2.length;
61
+ if (!isArr1Depleted && (isArr2Depleted || compareFn(arr1[index1], arr2[index2]))) {
62
+ merged[current] = arr1[index1];
63
+ index1++;
64
+ }
65
+ else {
66
+ merged[current] = arr2[index2];
67
+ index2++;
68
+ }
69
+ current++;
70
+ }
71
+ return merged;
72
+ }
73
+ /**
74
+ * Calculate system scrollbar size
75
+ */
76
+ function getScrollbarSize(document) {
77
+ // Create a temporary div container and append it to the body
78
+ const container = document.createElement('div');
79
+ // Apply styling to ensure the div is scrollable
80
+ container.style.overflow = 'scroll';
81
+ container.style.visibility = 'hidden'; // make sure the container isn't visible
82
+ container.style.position = 'absolute';
83
+ container.style.top = '-9999px'; // move it out of the screen
84
+ container.style.width = '50px'; // arbitrary width
85
+ container.style.height = '50px'; // arbitrary height
86
+ // Append the div to the body
87
+ document.body.appendChild(container);
88
+ // Calculate the width of the scrollbar
89
+ const scrollbarWidth = container.offsetWidth - container.clientWidth;
90
+ // Remove the div from the body after calculation
91
+ document.body.removeChild(container);
92
+ // Return the calculated width of the scrollbar
93
+ return scrollbarWidth;
94
+ }
95
+ /* Scale a value between 2 ranges
96
+ *
97
+ * Sample:
98
+ * // 55 from a 0-100 range to a 0-1000 range (Ranges don't have to be positive)
99
+ * const n = scaleValue(55, [0,100], [0,1000]);
100
+ *
101
+ * Ranges of two values
102
+ * @from
103
+ * @to
104
+ *
105
+ * ~~ return value does the equivalent of Math.floor but faster.
106
+ */
107
+ function scaleValue(value, from, to) {
108
+ return ((to[1] - to[0]) * (value - from[0])) / (from[1] - from[0]) + to[0];
109
+ }
110
+ /**
111
+ * Async timeout
112
+ */
113
+ async function timeout(delay = 0) {
114
+ await new Promise((r) => {
115
+ setTimeout(() => r(), delay);
116
+ });
117
+ }
118
+ /**
119
+ * Type script mixins
120
+ */
121
+ function applyMixins(derivedCtor, constructors) {
122
+ constructors.forEach(baseCtor => {
123
+ Object.getOwnPropertyNames(baseCtor.prototype).forEach(name => {
124
+ Object.defineProperty(derivedCtor.prototype, name, Object.getOwnPropertyDescriptor(baseCtor.prototype, name) || Object.create(null));
125
+ });
126
+ });
127
+ }
128
+
129
+ exports.applyMixins = applyMixins;
130
+ exports.findPositionInArray = findPositionInArray;
131
+ exports.getScrollbarSize = getScrollbarSize;
132
+ exports.mergeSortedArray = mergeSortedArray;
133
+ exports.pushSorted = pushSorted;
134
+ exports.range = range;
135
+ exports.scaleValue = scaleValue;
136
+ exports.timeout = timeout;
@@ -3,15 +3,16 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var column_service = require('./column.service-DXYMehqK.js');
7
- var column_drag_plugin = require('./column.drag.plugin-RDjQhKCH.js');
8
- var headerCellRenderer = require('./header-cell-renderer-DGyBrK8I.js');
9
- var cellRenderer = require('./cell-renderer-BQdEGQXP.js');
10
- var dimension_helpers = require('./dimension.helpers-CiiNnlLa.js');
11
- var textEditor = require('./text-editor-DnLZW1a-.js');
12
- var edit_utils = require('./edit.utils-CecCfA4E.js');
6
+ var column_service = require('./column.service-f612L4ql.js');
7
+ var column_drag_plugin = require('./column.drag.plugin-CaEBDG-Q.js');
8
+ var headerCellRenderer = require('./header-cell-renderer-4yq9_WbM.js');
9
+ var cellRenderer = require('./cell-renderer-DWJ9Px9f.js');
10
+ var index$1 = require('./index-DxaSE5uZ.js');
11
+ var textEditor = require('./text-editor-B4W-m-r-.js');
12
+ var edit_utils = require('./edit.utils-pKeiYFLJ.js');
13
13
  var index = require('./index-Dq8Xzj5l.js');
14
- var viewport_store = require('./viewport.store-q6YdR9mg.js');
14
+ var dimension_helpers = require('./dimension.helpers-B9HgANnM.js');
15
+ var viewport_store = require('./viewport.store-BlKQ4x9H.js');
15
16
  var filter_button = require('./filter.button-w6LWnyhi.js');
16
17
  require('./debounce-CcpHiH2p.js');
17
18
 
@@ -235,6 +236,8 @@ exports.filterTypes = column_drag_plugin.filterTypes;
235
236
  exports.getComparer = column_drag_plugin.getComparer;
236
237
  exports.getLeftRelative = column_drag_plugin.getLeftRelative;
237
238
  exports.getNextOrder = column_drag_plugin.getNextOrder;
239
+ exports.getSortingIndex = column_drag_plugin.getSortingIndex;
240
+ exports.hasActiveSorting = column_drag_plugin.hasActiveSorting;
238
241
  exports.isStretchPlugin = column_drag_plugin.isStretchPlugin;
239
242
  exports.sortIndexByItems = column_drag_plugin.sortIndexByItems;
240
243
  exports.dispatch = headerCellRenderer.dispatch;
@@ -244,6 +247,30 @@ exports.GroupingRowRenderer = cellRenderer.GroupingRowRenderer;
244
247
  exports.SortingSign = cellRenderer.SortingSign;
245
248
  exports.expandEvent = cellRenderer.expandEvent;
246
249
  exports.expandSvgIconVNode = cellRenderer.expandSvgIconVNode;
250
+ exports.applyMixins = index$1.applyMixins;
251
+ exports.findPositionInArray = index$1.findPositionInArray;
252
+ exports.getScrollbarSize = index$1.getScrollbarSize;
253
+ exports.mergeSortedArray = index$1.mergeSortedArray;
254
+ exports.pushSorted = index$1.pushSorted;
255
+ exports.range = index$1.range;
256
+ exports.scaleValue = index$1.scaleValue;
257
+ exports.timeout = index$1.timeout;
258
+ exports.TextEditor = textEditor.TextEditor;
259
+ exports.isAll = edit_utils.isAll;
260
+ exports.isClear = edit_utils.isClear;
261
+ exports.isCopy = edit_utils.isCopy;
262
+ exports.isCtrlKey = edit_utils.isCtrlKey;
263
+ exports.isCtrlMetaKey = edit_utils.isCtrlMetaKey;
264
+ exports.isCut = edit_utils.isCut;
265
+ exports.isEditInput = edit_utils.isEditInput;
266
+ exports.isEditorCtrConstructible = edit_utils.isEditorCtrConstructible;
267
+ exports.isEnterKeyValue = edit_utils.isEnterKeyValue;
268
+ exports.isMetaKey = edit_utils.isMetaKey;
269
+ exports.isPaste = edit_utils.isPaste;
270
+ exports.isShortcutModifier = edit_utils.isShortcutModifier;
271
+ exports.isTab = edit_utils.isTab;
272
+ exports.isTabKeyValue = edit_utils.isTabKeyValue;
273
+ exports.h = index.h;
247
274
  exports.CELL_CLASS = dimension_helpers.CELL_CLASS;
248
275
  exports.CELL_HANDLER_CLASS = dimension_helpers.CELL_HANDLER_CLASS;
249
276
  exports.DATA_COL = dimension_helpers.DATA_COL;
@@ -267,18 +294,15 @@ exports.ROW_FOCUSED_CLASS = dimension_helpers.ROW_FOCUSED_CLASS;
267
294
  exports.ROW_HEADER_TYPE = dimension_helpers.ROW_HEADER_TYPE;
268
295
  exports.SELECTION_BORDER_CLASS = dimension_helpers.SELECTION_BORDER_CLASS;
269
296
  exports.TMP_SELECTION_BG_CLASS = dimension_helpers.TMP_SELECTION_BG_CLASS;
270
- exports.applyMixins = dimension_helpers.applyMixins;
271
297
  exports.calculateDimensionData = dimension_helpers.calculateDimensionData;
272
298
  Object.defineProperty(exports, "codesLetter", {
273
299
  enumerable: true,
274
300
  get: function () { return dimension_helpers.codesLetter; }
275
301
  });
276
- exports.findPositionInArray = dimension_helpers.findPositionInArray;
277
302
  exports.gatherTrimmedItems = dimension_helpers.gatherTrimmedItems;
278
303
  exports.getItemByIndex = dimension_helpers.getItemByIndex;
279
304
  exports.getItemByPosition = dimension_helpers.getItemByPosition;
280
305
  exports.getPhysical = dimension_helpers.getPhysical;
281
- exports.getScrollbarSize = dimension_helpers.getScrollbarSize;
282
306
  exports.getSourceItem = dimension_helpers.getSourceItem;
283
307
  exports.getSourceItemVirtualIndexByProp = dimension_helpers.getSourceItemVirtualIndexByProp;
284
308
  exports.getSourcePhysicalIndex = dimension_helpers.getSourcePhysicalIndex;
@@ -287,40 +311,21 @@ Object.defineProperty(exports, "keyValues", {
287
311
  enumerable: true,
288
312
  get: function () { return dimension_helpers.keyValues; }
289
313
  });
290
- exports.mergeSortedArray = dimension_helpers.mergeSortedArray;
291
314
  exports.proxyPlugin = dimension_helpers.proxyPlugin;
292
- exports.pushSorted = dimension_helpers.pushSorted;
293
- exports.range = dimension_helpers.range;
294
- exports.scaleValue = dimension_helpers.scaleValue;
295
315
  exports.setItems = dimension_helpers.setItems;
296
316
  exports.setSourceByPhysicalIndex = dimension_helpers.setSourceByPhysicalIndex;
297
317
  exports.setSourceByVirtualIndex = dimension_helpers.setSourceByVirtualIndex;
298
318
  exports.setStore = dimension_helpers.setStore;
299
- exports.timeout = dimension_helpers.timeout;
300
319
  exports.trimmedPlugin = dimension_helpers.trimmedPlugin;
301
- exports.TextEditor = textEditor.TextEditor;
302
- exports.isAll = edit_utils.isAll;
303
- exports.isClear = edit_utils.isClear;
304
- exports.isCopy = edit_utils.isCopy;
305
- exports.isCtrlKey = edit_utils.isCtrlKey;
306
- exports.isCtrlMetaKey = edit_utils.isCtrlMetaKey;
307
- exports.isCut = edit_utils.isCut;
308
- exports.isEditInput = edit_utils.isEditInput;
309
- exports.isEditorCtrConstructible = edit_utils.isEditorCtrConstructible;
310
- exports.isEnterKeyValue = edit_utils.isEnterKeyValue;
311
- exports.isMetaKey = edit_utils.isMetaKey;
312
- exports.isPaste = edit_utils.isPaste;
313
- exports.isShortcutModifier = edit_utils.isShortcutModifier;
314
- exports.isTab = edit_utils.isTab;
315
- exports.isTabKeyValue = edit_utils.isTabKeyValue;
316
- exports.h = index.h;
317
320
  exports.ViewportStore = viewport_store.ViewportStore;
318
321
  exports.addMissingItems = viewport_store.addMissingItems;
319
322
  exports.calculateRowHeaderSize = viewport_store.calculateRowHeaderSize;
323
+ exports.clampViewportCoordinate = viewport_store.clampViewportCoordinate;
320
324
  exports.getFirstItem = viewport_store.getFirstItem;
321
325
  exports.getItems = viewport_store.getItems;
322
326
  exports.getLastItem = viewport_store.getLastItem;
323
327
  exports.getUpdatedItemsByPosition = viewport_store.getUpdatedItemsByPosition;
328
+ exports.getViewportMaxCoordinate = viewport_store.getViewportMaxCoordinate;
324
329
  exports.isActiveRange = viewport_store.isActiveRange;
325
330
  exports.isActiveRangeOutsideLastItem = viewport_store.isActiveRangeOutsideLastItem;
326
331
  exports.recombineByOffset = viewport_store.recombineByOffset;
@@ -4,16 +4,17 @@
4
4
  'use strict';
5
5
 
6
6
  var index = require('./index-Dq8Xzj5l.js');
7
- var column_service = require('./column.service-DXYMehqK.js');
8
- var dimension_helpers = require('./dimension.helpers-CiiNnlLa.js');
7
+ var column_service = require('./column.service-f612L4ql.js');
8
+ var dimension_helpers = require('./dimension.helpers-B9HgANnM.js');
9
9
  var debounce = require('./debounce-CcpHiH2p.js');
10
- var column_drag_plugin = require('./column.drag.plugin-RDjQhKCH.js');
11
- var viewport_store = require('./viewport.store-q6YdR9mg.js');
10
+ var viewport_helpers = require('./viewport.helpers-BND76K2j.js');
11
+ var viewport_store = require('./viewport.store-BlKQ4x9H.js');
12
+ var column_drag_plugin = require('./column.drag.plugin-CaEBDG-Q.js');
12
13
  var theme_service = require('./theme.service-BgnxGIjK.js');
13
- var viewport_helpers = require('./viewport.helpers-BAovztDd.js');
14
+ var index$1 = require('./index-DxaSE5uZ.js');
14
15
  var events = require('./events-DeLDyZlb.js');
15
16
  require('./filter.button-w6LWnyhi.js');
16
- require('./header-cell-renderer-DGyBrK8I.js');
17
+ require('./header-cell-renderer-4yq9_WbM.js');
17
18
 
18
19
  class ColumnDataProvider {
19
20
  get stores() {
@@ -365,6 +366,20 @@ class DimensionProvider {
365
366
  }
366
367
  setViewPortCoordinate({ type, coordinate = this.viewports.stores[type].lastCoordinate, force = false, }) {
367
368
  const dimension = this.stores[type].getCurrentState();
369
+ const viewport = this.viewports.stores[type].store;
370
+ const clientSize = viewport.get('clientSize');
371
+ const viewportSize = viewport.get('virtualSize');
372
+ const scrollDimension = viewport_helpers.getScrollDimension({
373
+ contentSize: dimension.realSize,
374
+ clientSize,
375
+ virtualSize: viewportSize,
376
+ });
377
+ const renderCoordinate = viewport_store.clampViewportCoordinate(coordinate, dimension, viewportSize);
378
+ const renderOffset = clientSize && viewportSize
379
+ ? scrollDimension.getRenderOffset(renderCoordinate)
380
+ : 0;
381
+ this.stores[type].setStore({ renderOffset });
382
+ this.viewports.stores[type].setViewport({ renderOffset });
368
383
  this.viewports.stores[type].setViewPortCoordinate(coordinate, dimension, force);
369
384
  }
370
385
  getViewPortPos(e) {
@@ -513,7 +528,8 @@ class ViewportService {
513
528
  (_a = this.config.dimensionProvider) === null || _a === void 0 ? void 0 : _a.setCustomSizes(type, detail, true);
514
529
  // set resize event
515
530
  const changedItems = {};
516
- for (const [i, size] of Object.entries(detail || {})) {
531
+ for (const i of Object.keys(detail || {})) {
532
+ const size = detail[i];
517
533
  const virtualIndex = parseInt(i, 10);
518
534
  const item = dimension_helpers.getSourceItem(store, virtualIndex);
519
535
  if (item) {
@@ -916,7 +932,10 @@ class SelectionStoreConnector {
916
932
  const nextItem = column_service.nextCell(focus, lastCell);
917
933
  let nextStore;
918
934
  if (nextItem) {
919
- Object.entries(nextItem).forEach(([type, nextItemCoord]) => {
935
+ Object.keys(nextItem).forEach((t) => {
936
+ var _a;
937
+ const type = t;
938
+ const nextItemCoord = (_a = nextItem[type]) !== null && _a !== void 0 ? _a : 0;
920
939
  let stores;
921
940
  switch (type) {
922
941
  case 'x':
@@ -1663,7 +1682,7 @@ const RevoGridComponent = class {
1663
1682
  if (!rgCol) {
1664
1683
  return;
1665
1684
  }
1666
- await dimension_helpers.timeout();
1685
+ await index$1.timeout();
1667
1686
  const colGroup = rgCol.pin || 'rgCol';
1668
1687
  if (!this.columnProvider) {
1669
1688
  throw new Error('Not connected');
@@ -1875,7 +1894,7 @@ const RevoGridComponent = class {
1875
1894
  async onCellEdit(e) {
1876
1895
  var _a;
1877
1896
  const { defaultPrevented, detail } = this.beforeedit.emit(e.detail);
1878
- await dimension_helpers.timeout();
1897
+ await index$1.timeout();
1879
1898
  // apply data
1880
1899
  if (!defaultPrevented) {
1881
1900
  (_a = this.dataProvider) === null || _a === void 0 ? void 0 : _a.setCellData(detail);
@@ -1958,12 +1977,13 @@ const RevoGridComponent = class {
1958
1977
  return;
1959
1978
  }
1960
1979
  const columns = this.columnProvider.setColumns(beforeApplyEvent.detail);
1980
+ const order = {};
1981
+ for (const prop of Object.keys(beforeApplyEvent.detail.sort)) {
1982
+ order[prop] = beforeApplyEvent.detail.sort[prop].order;
1983
+ }
1961
1984
  this.aftercolumnsset.emit({
1962
1985
  columns,
1963
- order: Object.entries(beforeApplyEvent.detail.sort).reduce((acc, [prop, column]) => {
1964
- acc[prop] = column.order;
1965
- return acc;
1966
- }, {}),
1986
+ order,
1967
1987
  });
1968
1988
  }
1969
1989
  disableVirtualXChanged(newVal = false, prevVal = false) {
@@ -2252,7 +2272,7 @@ const RevoGridComponent = class {
2252
2272
  if (Object.keys((_a = this.trimmedRows) !== null && _a !== void 0 ? _a : {}).length > 0) {
2253
2273
  this.trimmedRowsChanged(this.trimmedRows);
2254
2274
  }
2255
- this.rowDefChanged(this.rowDefinitions);
2275
+ this.rowDefChanged(this.rowDefinitions, undefined, undefined, false);
2256
2276
  // init grouping
2257
2277
  if (this.grouping && Object.keys(this.grouping).length > 0) {
2258
2278
  this.groupingChanged(this.grouping);