@revolist/revogrid 4.22.0 → 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 (130) hide show
  1. package/dist/cjs/{cell-renderer-uZmDBXz7.js → cell-renderer-DWJ9Px9f.js} +9 -3
  2. package/dist/cjs/{column.drag.plugin-CM_5mKV3.js → column.drag.plugin-CaEBDG-Q.js} +409 -267
  3. package/dist/cjs/{column.service-DvQDqxxx.js → column.service-f612L4ql.js} +1 -1
  4. package/dist/cjs/{dimension.helpers-CaIsYC99.js → dimension.helpers-B9HgANnM.js} +14 -146
  5. package/dist/cjs/{edit.utils-CwMzSIVF.js → edit.utils-pKeiYFLJ.js} +22 -1
  6. package/dist/cjs/{header-cell-renderer-B1dJwgTO.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 +45 -31
  9. package/dist/cjs/revo-grid.cjs.entry.js +35 -15
  10. package/dist/cjs/revogr-attribution_7.cjs.entry.js +44 -26
  11. package/dist/cjs/revogr-clipboard_3.cjs.entry.js +11 -9
  12. package/dist/cjs/revogr-data_4.cjs.entry.js +132 -178
  13. package/dist/cjs/revogr-filter-panel.cjs.entry.js +2 -1
  14. package/dist/cjs/{text-editor-BTnGaIl3.js → text-editor-B4W-m-r-.js} +3 -3
  15. package/dist/cjs/{throttle-CI4MsAqs.js → throttle-BCwEuJJq.js} +59 -24
  16. package/dist/cjs/viewport.helpers-BND76K2j.js +140 -0
  17. package/dist/cjs/{viewport.store-Dcjud-a-.js → viewport.store-BlKQ4x9H.js} +16 -16
  18. package/dist/collection/components/clipboard/revogr-clipboard.js +1 -1
  19. package/dist/collection/components/data/revogr-data.js +5 -3
  20. package/dist/collection/components/header/header-group-renderer.js +2 -1
  21. package/dist/collection/components/header/header-renderer.js +6 -5
  22. package/dist/collection/components/header/revogr-header-style.css +13 -3
  23. package/dist/collection/components/header/revogr-header.js +105 -42
  24. package/dist/collection/components/order/order-row.service.js +6 -5
  25. package/dist/collection/components/overlay/keyboard.service.js +25 -3
  26. package/dist/collection/components/overlay/selection.utils.js +8 -6
  27. package/dist/collection/components/revoGrid/revo-grid.js +6 -5
  28. package/dist/collection/components/revoGrid/viewport.service.js +2 -1
  29. package/dist/collection/components/scroll/revogr-viewport-scroll.js +10 -6
  30. package/dist/collection/components/scrollable/revogr-scroll-virtual.js +4 -10
  31. package/dist/collection/plugins/filter/filter.panel.js +2 -1
  32. package/dist/collection/plugins/filter/filter.plugin.js +11 -4
  33. package/dist/collection/plugins/groupingRow/grouping.row.plugin.js +25 -1
  34. package/dist/collection/plugins/moveColumn/column.drag.plugin.js +18 -15
  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 +4 -1
  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/types/events.js +4 -0
  49. package/dist/collection/utils/key.utils.js +20 -0
  50. package/dist/collection/utils/store.utils.js +3 -3
  51. package/dist/{revo-grid/cell-renderer-K_BKH7Kx.js → esm/cell-renderer-8UiGd-s7.js} +9 -3
  52. package/dist/esm/{column.drag.plugin-DEqZ2qXJ.js → column.drag.plugin-BsfhsfmB.js} +402 -266
  53. package/dist/esm/{column.service-Cdz3dYqZ.js → column.service-DbpulTog.js} +1 -1
  54. package/dist/{revo-grid/debounce-BfO9dz9v.js → esm/debounce-PCRWZliA.js} +1 -1
  55. package/dist/{revo-grid/dimension.helpers-DzxqJQqN.js → esm/dimension.helpers-CGKwSvw6.js} +7 -128
  56. package/dist/esm/{edit.utils-CzfeG98N.js → edit.utils-Dnnbd0xG.js} +22 -2
  57. package/dist/{revo-grid/header-cell-renderer-DXhxZMly.js → esm/header-cell-renderer-DGI2FAD8.js} +1 -1
  58. package/dist/esm/index-Db3qZoW5.js +127 -0
  59. package/dist/esm/index.js +15 -10
  60. package/dist/esm/revo-grid.entry.js +34 -14
  61. package/dist/esm/revogr-attribution_7.entry.js +43 -25
  62. package/dist/esm/revogr-clipboard_3.entry.js +12 -10
  63. package/dist/esm/revogr-data_4.entry.js +133 -179
  64. package/dist/esm/revogr-filter-panel.entry.js +3 -2
  65. package/dist/esm/{text-editor-C1ks5eQ4.js → text-editor-C3RUSwH5.js} +2 -2
  66. package/dist/esm/{throttle-BEjFQa2l.js → throttle-CaUDyxyU.js} +60 -25
  67. package/dist/esm/viewport.helpers-CoCAvmZs.js +133 -0
  68. package/dist/{revo-grid/viewport.store-saAZJHRo.js → esm/viewport.store-COAfzAyu.js} +15 -17
  69. package/dist/{esm/cell-renderer-K_BKH7Kx.js → revo-grid/cell-renderer-8UiGd-s7.js} +9 -3
  70. package/dist/revo-grid/{column.drag.plugin-DEqZ2qXJ.js → column.drag.plugin-BsfhsfmB.js} +402 -266
  71. package/dist/revo-grid/{column.service-Cdz3dYqZ.js → column.service-DbpulTog.js} +1 -1
  72. package/dist/{esm/debounce-BfO9dz9v.js → revo-grid/debounce-PCRWZliA.js} +1 -1
  73. package/dist/{esm/dimension.helpers-DzxqJQqN.js → revo-grid/dimension.helpers-CGKwSvw6.js} +7 -128
  74. package/dist/revo-grid/{edit.utils-CzfeG98N.js → edit.utils-Dnnbd0xG.js} +22 -2
  75. package/dist/{esm/header-cell-renderer-DXhxZMly.js → revo-grid/header-cell-renderer-DGI2FAD8.js} +1 -1
  76. package/dist/revo-grid/index-Db3qZoW5.js +127 -0
  77. package/dist/revo-grid/index.esm.js +15 -10
  78. package/dist/revo-grid/revo-grid.entry.js +34 -14
  79. package/dist/revo-grid/revogr-attribution_7.entry.js +43 -25
  80. package/dist/revo-grid/revogr-clipboard_3.entry.js +12 -10
  81. package/dist/revo-grid/revogr-data_4.entry.js +133 -179
  82. package/dist/revo-grid/revogr-filter-panel.entry.js +3 -2
  83. package/dist/revo-grid/{text-editor-C1ks5eQ4.js → text-editor-C3RUSwH5.js} +2 -2
  84. package/dist/revo-grid/{throttle-BEjFQa2l.js → throttle-CaUDyxyU.js} +60 -25
  85. package/dist/revo-grid/viewport.helpers-CoCAvmZs.js +133 -0
  86. package/dist/{esm/viewport.store-saAZJHRo.js → revo-grid/viewport.store-COAfzAyu.js} +15 -17
  87. package/dist/types/components/header/header-group-renderer.d.ts +1 -0
  88. package/dist/types/components/header/header-renderer.d.ts +1 -0
  89. package/dist/types/components/header/revogr-header.d.ts +6 -0
  90. package/dist/types/components/overlay/keyboard.service.d.ts +5 -0
  91. package/dist/types/plugins/groupingRow/grouping.row.plugin.d.ts +8 -0
  92. package/dist/types/plugins/moveColumn/column.drag.plugin.d.ts +29 -3
  93. package/dist/types/plugins/sorting/sorting.func.d.ts +25 -2
  94. package/dist/types/plugins/sorting/sorting.plugin.d.ts +84 -9
  95. package/dist/types/plugins/sorting/sorting.sign.d.ts +5 -1
  96. package/dist/types/plugins/sorting/sorting.types.d.ts +46 -1
  97. package/dist/types/services/local.scroll.service.d.ts +10 -2
  98. package/dist/types/services/scroll.dimension.helpers.d.ts +20 -0
  99. package/dist/types/store/vp/viewport.helpers.d.ts +2 -0
  100. package/dist/types/types/events.d.ts +1 -1
  101. package/dist/types/types/interfaces.d.ts +11 -0
  102. package/dist/types/utils/key.utils.d.ts +8 -0
  103. package/hydrate/index.js +791 -539
  104. package/hydrate/index.mjs +791 -539
  105. package/package.json +1 -1
  106. package/standalone/column.service.js +1 -1
  107. package/standalone/data.store.js +1 -1
  108. package/standalone/debounce.js +1 -1
  109. package/standalone/dimension.helpers.js +1 -1
  110. package/standalone/index.js +1 -1
  111. package/standalone/local.scroll.timer.js +1 -1
  112. package/standalone/revo-grid.js +1 -1
  113. package/standalone/revogr-clipboard2.js +1 -1
  114. package/standalone/revogr-data2.js +1 -1
  115. package/standalone/revogr-edit.js +1 -1
  116. package/standalone/revogr-edit2.js +1 -1
  117. package/standalone/revogr-filter-panel.js +1 -1
  118. package/standalone/revogr-header2.js +1 -1
  119. package/standalone/revogr-order-editor2.js +1 -1
  120. package/standalone/revogr-overlay-selection2.js +1 -1
  121. package/standalone/revogr-row-headers.js +1 -1
  122. package/standalone/revogr-row-headers2.js +1 -1
  123. package/standalone/revogr-scroll-virtual2.js +1 -1
  124. package/standalone/revogr-viewport-scroll2.js +1 -1
  125. package/standalone/selection.utils.js +1 -1
  126. package/standalone/throttle.js +1 -1
  127. package/standalone/toNumber.js +1 -1
  128. package/dist/cjs/viewport.helpers-BAovztDd.js +0 -58
  129. package/dist/esm/viewport.helpers-VXhsJZtn.js +0 -52
  130. 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-CaIsYC99.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,19 +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
- exports.getNative = getNative;
3658
3532
  exports.getPhysical = getPhysical;
3659
- exports.getScrollbarSize = getScrollbarSize;
3660
3533
  exports.getSourceItem = getSourceItem;
3661
3534
  exports.getSourceItemVirtualIndexByProp = getSourceItemVirtualIndexByProp;
3662
3535
  exports.getSourcePhysicalIndex = getSourcePhysicalIndex;
@@ -3666,15 +3539,10 @@ exports.isArray = isArray;
3666
3539
  exports.isArrayLike = isArrayLike;
3667
3540
  exports.isIterateeCall = isIterateeCall;
3668
3541
  exports.keys = keys;
3669
- exports.mergeSortedArray = mergeSortedArray;
3670
3542
  exports.proxyPlugin = proxyPlugin;
3671
- exports.pushSorted = pushSorted;
3672
- exports.range = range;
3673
- exports.scaleValue = scaleValue;
3674
3543
  exports.setItems = setItems;
3675
3544
  exports.setSourceByPhysicalIndex = setSourceByPhysicalIndex;
3676
3545
  exports.setSourceByVirtualIndex = setSourceByVirtualIndex;
3677
3546
  exports.setStore = setStore;
3678
- exports.timeout = timeout;
3679
3547
  exports.toFinite = toFinite;
3680
3548
  exports.trimmedPlugin = trimmedPlugin;
@@ -3,7 +3,7 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var dimension_helpers = require('./dimension.helpers-CaIsYC99.js');
6
+ var dimension_helpers = require('./dimension.helpers-B9HgANnM.js');
7
7
 
8
8
  function isMetaKey(code) {
9
9
  const keys = [
@@ -85,6 +85,26 @@ function isAll(event) {
85
85
  return ((event.ctrlKey && event.code === 'KeyA') || // Ctrl + A on Windows
86
86
  (event.metaKey && event.code === 'KeyA')); // Cmd + A on Mac
87
87
  }
88
+ /**
89
+ * Returns true when a keyboard event represents a shortcut modifier that
90
+ * should not start cell editing from printable `event.key` input.
91
+ *
92
+ * AltGr is intentionally excluded because many Windows/Linux layouts expose
93
+ * printable AltGr characters as Ctrl+Alt key events.
94
+ */
95
+ function isShortcutModifier(event) {
96
+ var _a;
97
+ if ((_a = event.getModifierState) === null || _a === void 0 ? void 0 : _a.call(event, 'AltGraph')) {
98
+ return false;
99
+ }
100
+ if (event.ctrlKey &&
101
+ event.altKey &&
102
+ !event.metaKey &&
103
+ event.key.length === 1) {
104
+ return false;
105
+ }
106
+ return event.ctrlKey || event.metaKey;
107
+ }
88
108
 
89
109
  // is edit input
90
110
  function isEditInput(el) {
@@ -106,5 +126,6 @@ exports.isEditorCtrConstructible = isEditorCtrConstructible;
106
126
  exports.isEnterKeyValue = isEnterKeyValue;
107
127
  exports.isMetaKey = isMetaKey;
108
128
  exports.isPaste = isPaste;
129
+ exports.isShortcutModifier = isShortcutModifier;
109
130
  exports.isTab = isTab;
110
131
  exports.isTabKeyValue = isTabKeyValue;
@@ -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-DvQDqxxx.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-DvQDqxxx.js');
7
- var column_drag_plugin = require('./column.drag.plugin-CM_5mKV3.js');
8
- var headerCellRenderer = require('./header-cell-renderer-B1dJwgTO.js');
9
- var cellRenderer = require('./cell-renderer-uZmDBXz7.js');
10
- var dimension_helpers = require('./dimension.helpers-CaIsYC99.js');
11
- var textEditor = require('./text-editor-BTnGaIl3.js');
12
- var edit_utils = require('./edit.utils-CwMzSIVF.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-Dcjud-a-.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
 
@@ -85,6 +86,10 @@ const REVOGRID_EVENTS = new Map([
85
86
  ['beforeheaderrender', 'beforeheaderrender'],
86
87
  ['beforegroupheaderrender', 'beforegroupheaderrender'],
87
88
  ['afterheaderrender', 'afterheaderrender'],
89
+ ['columndragstart', 'columndragstart'],
90
+ ['columndragmousemove', 'columndragmousemove'],
91
+ ['beforecolumndragend', 'beforecolumndragend'],
92
+ ['columndragend', 'columndragend'],
88
93
  ['rowdragstartinit', 'rowdragstartinit'],
89
94
  ['rowdragendinit', 'rowdragendinit'],
90
95
  ['rowdragmoveinit', 'rowdragmoveinit'],
@@ -200,7 +205,11 @@ exports.measureEqualDepth = column_service.measureEqualDepth;
200
205
  exports.nextCell = column_service.nextCell;
201
206
  exports.rowTypes = column_service.rowTypes;
202
207
  exports.AutoSizeColumnPlugin = column_drag_plugin.AutoSizeColumnPlugin;
208
+ exports.BEFORE_COLUMN_DRAG_END_EVENT = column_drag_plugin.BEFORE_COLUMN_DRAG_END_EVENT;
203
209
  exports.BasePlugin = column_drag_plugin.BasePlugin;
210
+ exports.COLUMN_DRAG_END_EVENT = column_drag_plugin.COLUMN_DRAG_END_EVENT;
211
+ exports.COLUMN_DRAG_MOVE_EVENT = column_drag_plugin.COLUMN_DRAG_MOVE_EVENT;
212
+ exports.COLUMN_DRAG_START_EVENT = column_drag_plugin.COLUMN_DRAG_START_EVENT;
204
213
  Object.defineProperty(exports, "ColumnAutoSizeMode", {
205
214
  enumerable: true,
206
215
  get: function () { return column_drag_plugin.ColumnAutoSizeMode; }
@@ -227,6 +236,8 @@ exports.filterTypes = column_drag_plugin.filterTypes;
227
236
  exports.getComparer = column_drag_plugin.getComparer;
228
237
  exports.getLeftRelative = column_drag_plugin.getLeftRelative;
229
238
  exports.getNextOrder = column_drag_plugin.getNextOrder;
239
+ exports.getSortingIndex = column_drag_plugin.getSortingIndex;
240
+ exports.hasActiveSorting = column_drag_plugin.hasActiveSorting;
230
241
  exports.isStretchPlugin = column_drag_plugin.isStretchPlugin;
231
242
  exports.sortIndexByItems = column_drag_plugin.sortIndexByItems;
232
243
  exports.dispatch = headerCellRenderer.dispatch;
@@ -236,6 +247,30 @@ exports.GroupingRowRenderer = cellRenderer.GroupingRowRenderer;
236
247
  exports.SortingSign = cellRenderer.SortingSign;
237
248
  exports.expandEvent = cellRenderer.expandEvent;
238
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;
239
274
  exports.CELL_CLASS = dimension_helpers.CELL_CLASS;
240
275
  exports.CELL_HANDLER_CLASS = dimension_helpers.CELL_HANDLER_CLASS;
241
276
  exports.DATA_COL = dimension_helpers.DATA_COL;
@@ -259,18 +294,15 @@ exports.ROW_FOCUSED_CLASS = dimension_helpers.ROW_FOCUSED_CLASS;
259
294
  exports.ROW_HEADER_TYPE = dimension_helpers.ROW_HEADER_TYPE;
260
295
  exports.SELECTION_BORDER_CLASS = dimension_helpers.SELECTION_BORDER_CLASS;
261
296
  exports.TMP_SELECTION_BG_CLASS = dimension_helpers.TMP_SELECTION_BG_CLASS;
262
- exports.applyMixins = dimension_helpers.applyMixins;
263
297
  exports.calculateDimensionData = dimension_helpers.calculateDimensionData;
264
298
  Object.defineProperty(exports, "codesLetter", {
265
299
  enumerable: true,
266
300
  get: function () { return dimension_helpers.codesLetter; }
267
301
  });
268
- exports.findPositionInArray = dimension_helpers.findPositionInArray;
269
302
  exports.gatherTrimmedItems = dimension_helpers.gatherTrimmedItems;
270
303
  exports.getItemByIndex = dimension_helpers.getItemByIndex;
271
304
  exports.getItemByPosition = dimension_helpers.getItemByPosition;
272
305
  exports.getPhysical = dimension_helpers.getPhysical;
273
- exports.getScrollbarSize = dimension_helpers.getScrollbarSize;
274
306
  exports.getSourceItem = dimension_helpers.getSourceItem;
275
307
  exports.getSourceItemVirtualIndexByProp = dimension_helpers.getSourceItemVirtualIndexByProp;
276
308
  exports.getSourcePhysicalIndex = dimension_helpers.getSourcePhysicalIndex;
@@ -279,39 +311,21 @@ Object.defineProperty(exports, "keyValues", {
279
311
  enumerable: true,
280
312
  get: function () { return dimension_helpers.keyValues; }
281
313
  });
282
- exports.mergeSortedArray = dimension_helpers.mergeSortedArray;
283
314
  exports.proxyPlugin = dimension_helpers.proxyPlugin;
284
- exports.pushSorted = dimension_helpers.pushSorted;
285
- exports.range = dimension_helpers.range;
286
- exports.scaleValue = dimension_helpers.scaleValue;
287
315
  exports.setItems = dimension_helpers.setItems;
288
316
  exports.setSourceByPhysicalIndex = dimension_helpers.setSourceByPhysicalIndex;
289
317
  exports.setSourceByVirtualIndex = dimension_helpers.setSourceByVirtualIndex;
290
318
  exports.setStore = dimension_helpers.setStore;
291
- exports.timeout = dimension_helpers.timeout;
292
319
  exports.trimmedPlugin = dimension_helpers.trimmedPlugin;
293
- exports.TextEditor = textEditor.TextEditor;
294
- exports.isAll = edit_utils.isAll;
295
- exports.isClear = edit_utils.isClear;
296
- exports.isCopy = edit_utils.isCopy;
297
- exports.isCtrlKey = edit_utils.isCtrlKey;
298
- exports.isCtrlMetaKey = edit_utils.isCtrlMetaKey;
299
- exports.isCut = edit_utils.isCut;
300
- exports.isEditInput = edit_utils.isEditInput;
301
- exports.isEditorCtrConstructible = edit_utils.isEditorCtrConstructible;
302
- exports.isEnterKeyValue = edit_utils.isEnterKeyValue;
303
- exports.isMetaKey = edit_utils.isMetaKey;
304
- exports.isPaste = edit_utils.isPaste;
305
- exports.isTab = edit_utils.isTab;
306
- exports.isTabKeyValue = edit_utils.isTabKeyValue;
307
- exports.h = index.h;
308
320
  exports.ViewportStore = viewport_store.ViewportStore;
309
321
  exports.addMissingItems = viewport_store.addMissingItems;
310
322
  exports.calculateRowHeaderSize = viewport_store.calculateRowHeaderSize;
323
+ exports.clampViewportCoordinate = viewport_store.clampViewportCoordinate;
311
324
  exports.getFirstItem = viewport_store.getFirstItem;
312
325
  exports.getItems = viewport_store.getItems;
313
326
  exports.getLastItem = viewport_store.getLastItem;
314
327
  exports.getUpdatedItemsByPosition = viewport_store.getUpdatedItemsByPosition;
328
+ exports.getViewportMaxCoordinate = viewport_store.getViewportMaxCoordinate;
315
329
  exports.isActiveRange = viewport_store.isActiveRange;
316
330
  exports.isActiveRangeOutsideLastItem = viewport_store.isActiveRangeOutsideLastItem;
317
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-DvQDqxxx.js');
8
- var dimension_helpers = require('./dimension.helpers-CaIsYC99.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-CM_5mKV3.js');
11
- var viewport_store = require('./viewport.store-Dcjud-a-.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-B1dJwgTO.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);