@revolist/revogrid 4.9.37 → 4.9.40

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 (158) hide show
  1. package/dist/cjs/{column.drag.plugin-ffe1918f.js → column.drag.plugin-fcd892ec.js} +18 -18
  2. package/dist/cjs/column.drag.plugin-fcd892ec.js.map +1 -0
  3. package/dist/cjs/{index-947f3534.js → column.service-26c61ed6.js} +1256 -469
  4. package/dist/cjs/column.service-26c61ed6.js.map +1 -0
  5. package/dist/cjs/{edit.utils-68a4f1c4.js → edit.utils-179c0800.js} +2 -2
  6. package/dist/cjs/{edit.utils-68a4f1c4.js.map → edit.utils-179c0800.js.map} +1 -1
  7. package/dist/cjs/{header-cell-renderer-57fb8f18.js → header-cell-renderer-d879d95e.js} +2 -2
  8. package/dist/cjs/{header-cell-renderer-57fb8f18.js.map → header-cell-renderer-d879d95e.js.map} +1 -1
  9. package/dist/cjs/index-3ab26ab9.js +513 -0
  10. package/dist/cjs/index-3ab26ab9.js.map +1 -0
  11. package/dist/cjs/index.cjs.js +21 -20
  12. package/dist/cjs/index.cjs.js.map +1 -1
  13. package/dist/cjs/{key.utils-da2ead49.js → key.utils-f49d7bee.js} +2 -2
  14. package/dist/cjs/{key.utils-da2ead49.js.map → key.utils-f49d7bee.js.map} +1 -1
  15. package/dist/cjs/loader.cjs.js +1 -1
  16. package/dist/cjs/revo-grid.cjs.entry.js +87 -55
  17. package/dist/cjs/revo-grid.cjs.entry.js.map +1 -1
  18. package/dist/cjs/revo-grid.cjs.js +1 -1
  19. package/dist/cjs/revogr-attribution_7.cjs.entry.js +13 -13
  20. package/dist/cjs/revogr-attribution_7.cjs.entry.js.map +1 -1
  21. package/dist/cjs/revogr-clipboard_3.cjs.entry.js +21 -18
  22. package/dist/cjs/revogr-clipboard_3.cjs.entry.js.map +1 -1
  23. package/dist/cjs/revogr-data_4.cjs.entry.js +9 -9
  24. package/dist/cjs/revogr-data_4.cjs.entry.js.map +1 -1
  25. package/dist/cjs/{row-header-utils-fe2264e7.js → row-header-utils-c37f76e4.js} +6 -5
  26. package/dist/cjs/row-header-utils-c37f76e4.js.map +1 -0
  27. package/dist/cjs/{text-editor-55511a6a.js → text-editor-b756d6b3.js} +3 -3
  28. package/dist/cjs/{text-editor-55511a6a.js.map → text-editor-b756d6b3.js.map} +1 -1
  29. package/dist/cjs/{throttle-2ae258fb.js → throttle-a57f51f9.js} +2 -2
  30. package/dist/cjs/{throttle-2ae258fb.js.map → throttle-a57f51f9.js.map} +1 -1
  31. package/dist/collection/components/order/revogr-order-editor.js +99 -27
  32. package/dist/collection/components/order/revogr-order-editor.js.map +1 -1
  33. package/dist/collection/components/overlay/revogr-overlay-selection.js +2 -2
  34. package/dist/collection/components/overlay/revogr-overlay-selection.js.map +1 -1
  35. package/dist/collection/components/revoGrid/revo-grid.js +10 -0
  36. package/dist/collection/components/revoGrid/revo-grid.js.map +1 -1
  37. package/dist/collection/plugins/sorting/sorting.plugin.js +25 -27
  38. package/dist/collection/plugins/sorting/sorting.plugin.js.map +1 -1
  39. package/dist/collection/services/data.provider.js +12 -5
  40. package/dist/collection/services/data.provider.js.map +1 -1
  41. package/dist/collection/services/dimension.provider.js +22 -0
  42. package/dist/collection/services/dimension.provider.js.map +1 -1
  43. package/dist/collection/store/dataSource/data.proxy.js +19 -6
  44. package/dist/collection/store/dataSource/data.proxy.js.map +1 -1
  45. package/dist/collection/store/dataSource/data.store.js +3 -0
  46. package/dist/collection/store/dataSource/data.store.js.map +1 -1
  47. package/dist/collection/types/events.js +1 -0
  48. package/dist/collection/types/events.js.map +1 -1
  49. package/dist/esm/{column.drag.plugin-bbd79520.js → column.drag.plugin-3cc77986.js} +6 -6
  50. package/dist/esm/{column.drag.plugin-bbd79520.js.map → column.drag.plugin-3cc77986.js.map} +1 -1
  51. package/dist/esm/{index-8eeaa30d.js → column.service-751345b2.js} +1216 -427
  52. package/dist/esm/column.service-751345b2.js.map +1 -0
  53. package/dist/esm/{debounce-7b511afc.js → debounce-72878ced.js} +2 -2
  54. package/dist/esm/{debounce-7b511afc.js.map → debounce-72878ced.js.map} +1 -1
  55. package/dist/esm/{edit.utils-aeb2dc7c.js → edit.utils-6fc686b9.js} +2 -2
  56. package/dist/esm/{edit.utils-aeb2dc7c.js.map → edit.utils-6fc686b9.js.map} +1 -1
  57. package/dist/esm/{header-cell-renderer-1aec2328.js → header-cell-renderer-32d2ed96.js} +2 -2
  58. package/dist/esm/{header-cell-renderer-1aec2328.js.map → header-cell-renderer-32d2ed96.js.map} +1 -1
  59. package/dist/esm/index-1dcad6ef.js +476 -0
  60. package/dist/esm/index-1dcad6ef.js.map +1 -0
  61. package/dist/esm/index.js +9 -8
  62. package/dist/esm/index.js.map +1 -1
  63. package/dist/esm/{key.utils-9ee5fa40.js → key.utils-17273f42.js} +2 -2
  64. package/dist/esm/{key.utils-9ee5fa40.js.map → key.utils-17273f42.js.map} +1 -1
  65. package/dist/esm/loader.js +1 -1
  66. package/dist/esm/revo-grid.entry.js +67 -35
  67. package/dist/esm/revo-grid.entry.js.map +1 -1
  68. package/dist/esm/revo-grid.js +1 -1
  69. package/dist/esm/revogr-attribution_7.entry.js +9 -9
  70. package/dist/esm/revogr-attribution_7.entry.js.map +1 -1
  71. package/dist/esm/revogr-clipboard_3.entry.js +22 -19
  72. package/dist/esm/revogr-clipboard_3.entry.js.map +1 -1
  73. package/dist/esm/revogr-data_4.entry.js +5 -5
  74. package/dist/esm/revogr-filter-panel.entry.js +1 -1
  75. package/dist/esm/{row-header-utils-3220f80d.js → row-header-utils-3dfbb81f.js} +3 -2
  76. package/dist/esm/row-header-utils-3dfbb81f.js.map +1 -0
  77. package/dist/esm/{text-editor-d9dcf56d.js → text-editor-901c3eb8.js} +3 -3
  78. package/dist/esm/{text-editor-d9dcf56d.js.map → text-editor-901c3eb8.js.map} +1 -1
  79. package/dist/esm/{throttle-ce8e57c9.js → throttle-138d69c3.js} +3 -3
  80. package/dist/esm/{throttle-ce8e57c9.js.map → throttle-138d69c3.js.map} +1 -1
  81. package/dist/revo-grid/column.drag.plugin-3cc77986.js +5 -0
  82. package/dist/revo-grid/{column.drag.plugin-bbd79520.js.map → column.drag.plugin-3cc77986.js.map} +1 -1
  83. package/dist/revo-grid/column.service-751345b2.js +5 -0
  84. package/dist/revo-grid/column.service-751345b2.js.map +1 -0
  85. package/dist/revo-grid/{debounce-7b511afc.js → debounce-72878ced.js} +2 -2
  86. package/dist/revo-grid/{edit.utils-aeb2dc7c.js → edit.utils-6fc686b9.js} +2 -2
  87. package/dist/revo-grid/{header-cell-renderer-1aec2328.js → header-cell-renderer-32d2ed96.js} +2 -2
  88. package/dist/revo-grid/index-1dcad6ef.js +5 -0
  89. package/dist/revo-grid/index-1dcad6ef.js.map +1 -0
  90. package/dist/revo-grid/index.esm.js +1 -1
  91. package/dist/revo-grid/index.esm.js.map +1 -1
  92. package/dist/revo-grid/key.utils-17273f42.js +5 -0
  93. package/dist/revo-grid/{key.utils-9ee5fa40.js.map → key.utils-17273f42.js.map} +1 -1
  94. package/dist/revo-grid/revo-grid.entry.js +1 -1
  95. package/dist/revo-grid/revo-grid.entry.js.map +1 -1
  96. package/dist/revo-grid/revo-grid.esm.js +1 -1
  97. package/dist/revo-grid/revo-grid.esm.js.map +1 -1
  98. package/dist/revo-grid/revogr-attribution_7.entry.js +1 -1
  99. package/dist/revo-grid/revogr-attribution_7.entry.js.map +1 -1
  100. package/dist/revo-grid/revogr-clipboard_3.entry.js +1 -1
  101. package/dist/revo-grid/revogr-clipboard_3.entry.js.map +1 -1
  102. package/dist/revo-grid/revogr-data_4.entry.js +1 -1
  103. package/dist/revo-grid/revogr-data_4.entry.js.map +1 -1
  104. package/dist/revo-grid/revogr-filter-panel.entry.js +1 -1
  105. package/dist/revo-grid/row-header-utils-3dfbb81f.js +5 -0
  106. package/dist/revo-grid/{row-header-utils-3220f80d.js.map → row-header-utils-3dfbb81f.js.map} +1 -1
  107. package/dist/revo-grid/text-editor-901c3eb8.js +5 -0
  108. package/dist/revo-grid/{throttle-ce8e57c9.js → throttle-138d69c3.js} +2 -2
  109. package/dist/types/components/order/revogr-order-editor.d.ts +18 -4
  110. package/dist/types/components/overlay/revogr-overlay-selection.d.ts +2 -4
  111. package/dist/types/components/revoGrid/revo-grid.d.ts +1 -0
  112. package/dist/types/components.d.ts +25 -6
  113. package/dist/types/plugins/sorting/sorting.plugin.d.ts +4 -4
  114. package/dist/types/services/data.provider.d.ts +5 -0
  115. package/dist/types/services/dimension.provider.d.ts +1 -0
  116. package/dist/types/store/dataSource/data.proxy.d.ts +9 -3
  117. package/dist/types/store/dataSource/data.store.d.ts +1 -0
  118. package/dist/types/types/events.d.ts +1 -1
  119. package/hydrate/index.js +127 -75
  120. package/hydrate/index.mjs +127 -75
  121. package/package.json +1 -1
  122. package/standalone/column.service.js +1 -1
  123. package/standalone/data.store.js +28 -31
  124. package/standalone/data.store.js.map +1 -1
  125. package/standalone/dimension.helpers.js +1 -1
  126. package/standalone/identity.js +26 -0
  127. package/standalone/identity.js.map +1 -0
  128. package/standalone/index.js +2 -1
  129. package/standalone/index.js.map +1 -1
  130. package/standalone/revo-grid.js +64 -31
  131. package/standalone/revo-grid.js.map +1 -1
  132. package/standalone/revogr-header2.js +1 -1
  133. package/standalone/revogr-order-editor2.js +18 -15
  134. package/standalone/revogr-order-editor2.js.map +1 -1
  135. package/standalone/revogr-overlay-selection2.js +2 -2
  136. package/standalone/revogr-overlay-selection2.js.map +1 -1
  137. package/dist/cjs/column.drag.plugin-ffe1918f.js.map +0 -1
  138. package/dist/cjs/column.service-e9ab1aa3.js +0 -1286
  139. package/dist/cjs/column.service-e9ab1aa3.js.map +0 -1
  140. package/dist/cjs/index-947f3534.js.map +0 -1
  141. package/dist/cjs/row-header-utils-fe2264e7.js.map +0 -1
  142. package/dist/esm/column.service-397b7249.js +0 -1249
  143. package/dist/esm/column.service-397b7249.js.map +0 -1
  144. package/dist/esm/index-8eeaa30d.js.map +0 -1
  145. package/dist/esm/row-header-utils-3220f80d.js.map +0 -1
  146. package/dist/revo-grid/column.drag.plugin-bbd79520.js +0 -5
  147. package/dist/revo-grid/column.service-397b7249.js +0 -5
  148. package/dist/revo-grid/column.service-397b7249.js.map +0 -1
  149. package/dist/revo-grid/index-8eeaa30d.js +0 -5
  150. package/dist/revo-grid/index-8eeaa30d.js.map +0 -1
  151. package/dist/revo-grid/key.utils-9ee5fa40.js +0 -5
  152. package/dist/revo-grid/row-header-utils-3220f80d.js +0 -5
  153. package/dist/revo-grid/text-editor-d9dcf56d.js +0 -5
  154. /package/dist/revo-grid/{debounce-7b511afc.js.map → debounce-72878ced.js.map} +0 -0
  155. /package/dist/revo-grid/{edit.utils-aeb2dc7c.js.map → edit.utils-6fc686b9.js.map} +0 -0
  156. /package/dist/revo-grid/{header-cell-renderer-1aec2328.js.map → header-cell-renderer-32d2ed96.js.map} +0 -0
  157. /package/dist/revo-grid/{text-editor-d9dcf56d.js.map → text-editor-901c3eb8.js.map} +0 -0
  158. /package/dist/revo-grid/{throttle-ce8e57c9.js.map → throttle-138d69c3.js.map} +0 -0
package/hydrate/index.js CHANGED
@@ -3299,12 +3299,48 @@ class FilterPanel {
3299
3299
  }; }
3300
3300
  }
3301
3301
 
3302
+ const MIN_COL_SIZE = 30;
3303
+ const RESIZE_INTERVAL = 40;
3304
+ const DATA_COL = 'data-rgCol';
3305
+ const DATA_ROW = 'data-rgRow';
3306
+ const DISABLED_CLASS = 'disabled';
3307
+ const CELL_CLASS = 'rgCell';
3308
+ const ROW_HEADER_TYPE = 'rowHeaders';
3309
+ const HEADER_CLASS = 'rgHeaderCell';
3310
+ const HEADER_SORTABLE_CLASS = 'sortable';
3311
+ const HEADER_ROW_CLASS = 'header-rgRow';
3312
+ const HEADER_ACTUAL_ROW_CLASS = 'actual-rgRow';
3313
+ const DRAG_ICON_CLASS = 'revo-drag-icon';
3314
+ const DRAGGABLE_CLASS = 'revo-draggable';
3315
+ const FOCUS_CLASS = 'focused-cell';
3316
+ const SELECTION_BORDER_CLASS = 'selection-border-range';
3317
+ const MOBILE_CLASS = 'mobile-handler';
3318
+ const TMP_SELECTION_BG_CLASS = 'temp-bg-range';
3319
+ const CELL_HANDLER_CLASS = 'autofill-handle';
3320
+ const EDIT_INPUT_WR = 'edit-input-wrapper';
3321
+ const DRAGG_TEXT = 'Draggable item';
3322
+ const GRID_INTERNALS = '__rvgr';
3323
+ const ROW_FOCUSED_CLASS = 'focused-rgRow';
3324
+
3302
3325
  /**
3303
- * All items
3304
- * Used as proxy for sorting
3305
- * Keep order but do not modify final source
3326
+ * Proxy plugin for data source.
3327
+ * This plugin is used to sort the data source.
3328
+ * It keeps the order of the items but does not modify the final source.
3329
+ * It is also used to filter the items in the data source.
3330
+ * The `set` method takes a key and a new value as arguments.
3331
+ * If the key is 'proxyItems' it will filter the items in the data source according to the new value.
3332
+ * The new value should be an array of numbers representing the indexes of the items that should be visible.
3333
+ * The method will return a new array of numbers with the indexes of the items that should be visible.
3334
+ * The method will also update the 'items' property of the store with the new array.
3306
3335
  */
3307
3336
  const proxyPlugin = (store) => ({
3337
+ /**
3338
+ * Set the value of a property in the store.
3339
+ * If the key is 'proxyItems' it will filter the items in the data source according to the new value.
3340
+ * The new value should be an array of numbers representing the indexes of the items that should be visible.
3341
+ * The method will return a new array of numbers with the indexes of the items that should be visible.
3342
+ * The method will also update the 'items' property of the store with the new array.
3343
+ */
3308
3344
  set(k, newVal) {
3309
3345
  if (!isProxy(k)) {
3310
3346
  return;
@@ -3314,15 +3350,15 @@ const proxyPlugin = (store) => ({
3314
3350
  * Mark indexes as visible
3315
3351
  */
3316
3352
  const oldItems = store.get('items').reduce((r, v) => {
3317
- r[v] = true;
3353
+ r.add(v);
3318
3354
  return r;
3319
- }, {});
3355
+ }, new Set());
3320
3356
  /**
3321
3357
  * Check if new values where present in items
3322
3358
  * Filter item collection according presense
3323
3359
  */
3324
3360
  const newItems = newVal.reduce((r, i) => {
3325
- if (oldItems[i]) {
3361
+ if (oldItems.has(i)) {
3326
3362
  r.push(i);
3327
3363
  }
3328
3364
  return r;
@@ -6363,6 +6399,9 @@ class DataStore {
6363
6399
  trimmed = Object.assign(Object.assign({}, trimmed), some);
6364
6400
  setStore(this.store, { trimmed });
6365
6401
  }
6402
+ setSourceData(items, mutate = true) {
6403
+ setSourceByVirtualIndex(this.store, items, mutate);
6404
+ }
6366
6405
  // local data update
6367
6406
  setData(input) {
6368
6407
  const data = Object.assign({}, input);
@@ -7804,29 +7843,6 @@ function isRowType(type) {
7804
7843
  return rowTypes.indexOf(type) > -1;
7805
7844
  }
7806
7845
 
7807
- const MIN_COL_SIZE = 30;
7808
- const RESIZE_INTERVAL = 40;
7809
- const DATA_COL = 'data-rgCol';
7810
- const DATA_ROW = 'data-rgRow';
7811
- const DISABLED_CLASS = 'disabled';
7812
- const CELL_CLASS = 'rgCell';
7813
- const ROW_HEADER_TYPE = 'rowHeaders';
7814
- const HEADER_CLASS = 'rgHeaderCell';
7815
- const HEADER_SORTABLE_CLASS = 'sortable';
7816
- const HEADER_ROW_CLASS = 'header-rgRow';
7817
- const HEADER_ACTUAL_ROW_CLASS = 'actual-rgRow';
7818
- const DRAG_ICON_CLASS = 'revo-drag-icon';
7819
- const DRAGGABLE_CLASS = 'revo-draggable';
7820
- const FOCUS_CLASS = 'focused-cell';
7821
- const SELECTION_BORDER_CLASS = 'selection-border-range';
7822
- const MOBILE_CLASS = 'mobile-handler';
7823
- const TMP_SELECTION_BG_CLASS = 'temp-bg-range';
7824
- const CELL_HANDLER_CLASS = 'autofill-handle';
7825
- const EDIT_INPUT_WR = 'edit-input-wrapper';
7826
- const DRAGG_TEXT = 'Draggable item';
7827
- const GRID_INTERNALS = '__rvgr';
7828
- const ROW_FOCUSED_CLASS = 'focused-rgRow';
7829
-
7830
7846
  class RowOrderService {
7831
7847
  constructor(config) {
7832
7848
  this.config = config;
@@ -7906,17 +7922,19 @@ class OrderEditor {
7906
7922
  this.rowDrag = createEvent(this, "rowdragmoveinit", 7);
7907
7923
  this.rowMouseMove = createEvent(this, "rowdragmousemove", 7);
7908
7924
  this.rowDropped = createEvent(this, "rowdropinit", 7);
7925
+ this.rowOrderChange = createEvent(this, "roworderchange", 7);
7909
7926
  this.events = [];
7910
7927
  this.rowMoveFunc = debounce$1((y) => {
7911
7928
  const rgRow = this.rowOrderService.move(y, this.getData());
7912
7929
  if (rgRow !== null) {
7913
- this.rowDrag.emit(rgRow);
7930
+ this.rowDrag.emit(Object.assign(Object.assign({}, rgRow), { rowType: this.rowType }));
7914
7931
  }
7915
7932
  }, 5);
7916
7933
  this.parent = undefined;
7917
7934
  this.dimensionRow = undefined;
7918
7935
  this.dimensionCol = undefined;
7919
7936
  this.dataStore = undefined;
7937
+ this.rowType = undefined;
7920
7938
  }
7921
7939
  // #endregion
7922
7940
  // #region Methods
@@ -7934,6 +7952,7 @@ class OrderEditor {
7934
7952
  text: DRAGG_TEXT,
7935
7953
  pos,
7936
7954
  event: e.originalEvent,
7955
+ rowType: this.rowType,
7937
7956
  });
7938
7957
  if (dragStartEvent.defaultPrevented) {
7939
7958
  return;
@@ -7964,28 +7983,28 @@ class OrderEditor {
7964
7983
  this.rowOrderService.clear();
7965
7984
  this.events.forEach(v => document.removeEventListener(v.name, v.listener));
7966
7985
  this.events.length = 0;
7967
- this.rowDragEnd.emit();
7986
+ this.rowDragEnd.emit({ rowType: this.rowType });
7968
7987
  }
7969
7988
  // #endregion
7970
7989
  move({ x, y }) {
7971
- this.rowMouseMove.emit({ x, y });
7990
+ this.rowMouseMove.emit({ x, y, rowType: this.rowType });
7972
7991
  this.rowMoveFunc(y);
7973
7992
  }
7974
7993
  connectedCallback() {
7975
7994
  this.rowOrderService = new RowOrderService({
7976
- positionChanged: (f, t) => this.onPositionChanged(f, t),
7995
+ positionChanged: (from, to) => {
7996
+ const dropEvent = this.rowDropped.emit({
7997
+ from,
7998
+ to,
7999
+ rowType: this.rowType,
8000
+ });
8001
+ if (dropEvent.defaultPrevented) {
8002
+ return;
8003
+ }
8004
+ this.rowOrderChange.emit(dropEvent.detail);
8005
+ },
7977
8006
  });
7978
8007
  }
7979
- onPositionChanged(from, to) {
7980
- const dropEvent = this.rowDropped.emit({ from, to });
7981
- if (dropEvent.defaultPrevented) {
7982
- return;
7983
- }
7984
- const items = [...this.dataStore.get('items')];
7985
- const toMove = items.splice(from, 1);
7986
- items.splice(to, 0, ...toMove);
7987
- setItems(this.dataStore, items);
7988
- }
7989
8008
  getData() {
7990
8009
  return {
7991
8010
  el: this.parent,
@@ -8001,6 +8020,7 @@ class OrderEditor {
8001
8020
  "dimensionRow": [16],
8002
8021
  "dimensionCol": [16],
8003
8022
  "dataStore": [16],
8023
+ "rowType": [1, "row-type"],
8004
8024
  "dragStart": [64],
8005
8025
  "endOrder": [64],
8006
8026
  "clearOrder": [64]
@@ -9577,10 +9597,10 @@ class OverlaySelection {
9577
9597
  }
9578
9598
  // Order
9579
9599
  if (this.canDrag) {
9580
- nodes.push(hAsync("revogr-order-editor", { ref: e => (this.orderEditor = e), dataStore: this.dataStore, dimensionRow: this.dimensionRow, dimensionCol: this.dimensionCol, parent: this.element, onRowdragstartinit: e => this.rowDragStart(e) }));
9600
+ nodes.push(hAsync("revogr-order-editor", { ref: e => (this.orderEditor = e), dataStore: this.dataStore, dimensionRow: this.dimensionRow, dimensionCol: this.dimensionCol, parent: this.element, rowType: this.types.rowType, onRowdragstartinit: e => this.rowDragStart(e) }));
9581
9601
  }
9582
9602
  }
9583
- return (hAsync(Host, { key: 'e48d9f7349a97c719120610b3839f5aff213547c', class: { mobile: this.isMobileDevice }, onDblClick: (e) => this.onElementDblClick(e), onMouseDown: (e) => this.onElementMouseDown(e), onTouchStart: (e) => this.onElementMouseDown(e, true) }, nodes, hAsync("slot", { key: 'c0a25578618d0025f784f188eb8db28159e92955', name: "data" })));
9603
+ return (hAsync(Host, { key: '53847b6211a31f69b2f2df1b191544a3b6dfefd8', class: { mobile: this.isMobileDevice }, onDblClick: (e) => this.onElementDblClick(e), onMouseDown: (e) => this.onElementMouseDown(e), onTouchStart: (e) => this.onElementMouseDown(e, true) }, nodes, hAsync("slot", { key: '012c496c34954b7074a53a4d9e949ac9e3d072af', name: "data" })));
9584
9604
  }
9585
9605
  /**
9586
9606
  * Executes the focus operation on the specified range of cells.
@@ -10329,11 +10349,19 @@ class DataProvider {
10329
10349
  const store = this.stores[type].store;
10330
10350
  return getSourceItem(store, virtualIndex);
10331
10351
  }
10352
+ changeOrder({ rowType = 'rgRow', from, to }) {
10353
+ const service = this.stores[rowType];
10354
+ const items = [...service.store.get('items')];
10355
+ const prevItems = [...items];
10356
+ const toMove = items.splice(from, 1);
10357
+ items.splice(to, 0, ...toMove);
10358
+ this.dimensionProvider.updateSizesPositionByNewDataIndexes(rowType, items, prevItems);
10359
+ service.setData({ items });
10360
+ }
10332
10361
  setCellData({ type, rowIndex, prop, val }, mutate = true) {
10333
10362
  const model = this.getModel(rowIndex, type);
10334
10363
  model[prop] = val;
10335
- // apply data to source
10336
- setSourceByVirtualIndex(this.stores[type].store, { [rowIndex]: model }, mutate);
10364
+ this.stores[type].setSourceData({ [rowIndex]: model }, mutate);
10337
10365
  }
10338
10366
  setRangeData(data, type) {
10339
10367
  const items = {};
@@ -10346,8 +10374,7 @@ class DataProvider {
10346
10374
  oldModel[prop] = data[rowIndex][prop];
10347
10375
  }
10348
10376
  }
10349
- // apply data to source
10350
- setSourceByVirtualIndex(this.stores[type].store, items);
10377
+ this.stores[type].setSourceData(items);
10351
10378
  }
10352
10379
  refresh(type = 'all') {
10353
10380
  if (isRowType(type)) {
@@ -10522,6 +10549,28 @@ class DimensionProvider {
10522
10549
  this.stores[s].setStore(data);
10523
10550
  }
10524
10551
  }
10552
+ updateSizesPositionByNewDataIndexes(type, newItemsOrder, prevItemsOrder = []) {
10553
+ // Move custom sizes to new order
10554
+ const dimService = this.stores[type];
10555
+ const customSizes = Object.assign({}, dimService.store.get('sizes'));
10556
+ if (Object.keys(customSizes).length) {
10557
+ const originalIndices = new Map();
10558
+ prevItemsOrder.forEach((value, index) => {
10559
+ originalIndices.set(value, index);
10560
+ });
10561
+ const newSizes = {};
10562
+ newItemsOrder.forEach((value, newIndex) => {
10563
+ const originalIndex = originalIndices.get(value);
10564
+ if (originalIndex !== newIndex && customSizes[originalIndex]) {
10565
+ newSizes[newIndex] = customSizes[originalIndex];
10566
+ delete customSizes[originalIndex];
10567
+ }
10568
+ });
10569
+ if (Object.keys(newSizes).length) {
10570
+ this.setCustomSizes(type, Object.assign(Object.assign({}, customSizes), newSizes));
10571
+ }
10572
+ }
10573
+ }
10525
10574
  }
10526
10575
 
10527
10576
  class ViewportProvider {
@@ -11550,9 +11599,9 @@ function size$1(collection) {
11550
11599
  * Note: If you prevent an event, it will not proceed to the subsequent steps.
11551
11600
  */
11552
11601
  class SortingPlugin extends BasePlugin {
11553
- async runSorting(order, comparison) {
11602
+ runSorting(order, comparison) {
11554
11603
  var _a;
11555
- await this.sort(order, comparison);
11604
+ this.sort(order, comparison);
11556
11605
  (_a = this.sortingPromise) === null || _a === void 0 ? void 0 : _a.call(this);
11557
11606
  this.sortingPromise = null;
11558
11607
  }
@@ -11560,8 +11609,8 @@ class SortingPlugin extends BasePlugin {
11560
11609
  super(revogrid, providers);
11561
11610
  this.revogrid = revogrid;
11562
11611
  this.sortingPromise = null;
11563
- this.postponeSort = debounce$1(async (order, comparison) => this.runSorting(order, comparison), 50);
11564
- const beforeanysource = async ({ detail: { type }, }) => {
11612
+ this.postponeSort = debounce$1((order, comparison) => this.runSorting(order, comparison), 50);
11613
+ const beforeanysource = ({ detail: { type }, }) => {
11565
11614
  // if sorting was provided - sort data
11566
11615
  if (!!this.sorting && this.sortingFunc) {
11567
11616
  const beforeEvent = this.emit('beforesorting', { type });
@@ -11571,8 +11620,8 @@ class SortingPlugin extends BasePlugin {
11571
11620
  this.startSorting(this.sorting, this.sortingFunc);
11572
11621
  }
11573
11622
  };
11574
- const aftercolumnsset = async ({ detail: { order }, }) => {
11575
- const columns = (await this.revogrid.getColumns());
11623
+ const aftercolumnsset = ({ detail: { order }, }) => {
11624
+ const columns = this.providers.column.getColumns();
11576
11625
  const sortingFunc = {};
11577
11626
  for (let prop in order) {
11578
11627
  const cmp = this.getComparer(getColumnByProp(columns, prop), order[prop]);
@@ -11580,7 +11629,7 @@ class SortingPlugin extends BasePlugin {
11580
11629
  }
11581
11630
  this.runSorting(order, sortingFunc);
11582
11631
  };
11583
- const headerclick = async (e) => {
11632
+ const headerclick = (e) => {
11584
11633
  var _a, _b;
11585
11634
  if (e.defaultPrevented) {
11586
11635
  return;
@@ -11617,7 +11666,7 @@ class SortingPlugin extends BasePlugin {
11617
11666
  * Apply sorting to data on header click
11618
11667
  * If additive - add to existing sorting, multiple columns can be sorted
11619
11668
  */
11620
- async headerclick(column, index, additive) {
11669
+ headerclick(column, index, additive) {
11621
11670
  var _a, _b;
11622
11671
  let order = this.getNextOrder(column.order);
11623
11672
  const beforeEvent = this.emit('beforesorting', { column, order, additive });
@@ -11625,7 +11674,7 @@ class SortingPlugin extends BasePlugin {
11625
11674
  return;
11626
11675
  }
11627
11676
  order = beforeEvent.detail.order;
11628
- const newCol = await this.revogrid.updateColumnSorting(beforeEvent.detail.column, index, order, additive);
11677
+ const newCol = this.providers.column.updateColumnSorting(beforeEvent.detail.column, index, order, additive);
11629
11678
  // apply sort data
11630
11679
  const beforeApplyEvent = this.emit('beforesortingapply', {
11631
11680
  column: newCol,
@@ -11673,38 +11722,37 @@ class SortingPlugin extends BasePlugin {
11673
11722
  * @param sorting - per column sorting
11674
11723
  * @param data - this.stores['rgRow'].store.get('source')
11675
11724
  */
11676
- async sort(sorting, sortingFunc, types = ['rgRow', 'rowPinStart', 'rowPinEnd']) {
11725
+ sort(sorting, sortingFunc, types = rowTypes) {
11677
11726
  // if no sorting - reset
11678
11727
  if (!size$1(sorting)) {
11679
11728
  this.sorting = undefined;
11680
11729
  this.sortingFunc = undefined;
11681
11730
  for (let type of types) {
11682
- const store = await this.revogrid.getSourceStore(type);
11731
+ const storeService = this.providers.data.stores[type];
11683
11732
  // row data
11684
- const source = store.get('source');
11733
+ const source = storeService.store.get('source');
11685
11734
  // row indexes
11686
- const proxyItems = range$1(0, source.length);
11687
- setStore(store, {
11688
- proxyItems,
11689
- source: [...source],
11690
- });
11735
+ const proxyItems = storeService.store.get('proxyItems');
11736
+ // row indexes
11737
+ const newItemsOrder = storeService.store.get('items'); // recover indexes range(0, source.length)
11738
+ this.providers.dimension.updateSizesPositionByNewDataIndexes(type, newItemsOrder, proxyItems);
11739
+ storeService.setData({ proxyItems: newItemsOrder, source: [...source] });
11691
11740
  }
11692
11741
  }
11693
11742
  else {
11694
11743
  // set sorting
11695
11744
  this.sorting = sorting;
11696
11745
  this.sortingFunc = sortingFunc;
11697
- // by default it'll sort by rgRow store
11698
- // todo: support multiple stores
11699
11746
  for (let type of types) {
11700
- const store = await this.revogrid.getSourceStore(type);
11747
+ const storeService = this.providers.data.stores[type];
11701
11748
  // row data
11702
- const source = store.get('source');
11749
+ const source = storeService.store.get('source');
11703
11750
  // row indexes
11704
- const proxyItems = store.get('proxyItems');
11705
- const data = this.sortIndexByItems([...proxyItems], source, sortingFunc);
11706
- setStore(store, {
11707
- proxyItems: data,
11751
+ const proxyItems = storeService.store.get('proxyItems');
11752
+ const newItemsOrder = this.sortIndexByItems([...proxyItems], source, sortingFunc);
11753
+ this.providers.dimension.updateSizesPositionByNewDataIndexes(type, newItemsOrder, proxyItems);
11754
+ storeService.setData({
11755
+ proxyItems: newItemsOrder,
11708
11756
  source: [...source],
11709
11757
  });
11710
11758
  }
@@ -14003,6 +14051,10 @@ class RevoGridComponent {
14003
14051
  var _a;
14004
14052
  (_a = this.orderService) === null || _a === void 0 ? void 0 : _a.end();
14005
14053
  }
14054
+ onRowOrderChange(e) {
14055
+ var _a;
14056
+ (_a = this.dataProvider) === null || _a === void 0 ? void 0 : _a.changeOrder(e.detail);
14057
+ }
14006
14058
  onRowDrag({ detail }) {
14007
14059
  var _a;
14008
14060
  (_a = this.orderService) === null || _a === void 0 ? void 0 : _a.move(detail);
@@ -14562,7 +14614,7 @@ class RevoGridComponent {
14562
14614
  "getContentSize": [64],
14563
14615
  "getSelectedRange": [64]
14564
14616
  },
14565
- "$listeners$": [[5, "touchstart", "mousedownHandle"], [5, "mousedown", "mousedownHandle"], [5, "touchend", "mouseupHandle"], [5, "mouseup", "mouseupHandle"], [0, "rowdragstartinit", "onRowDragStarted"], [0, "rowdragendinit", "onRowDragEnd"], [0, "rowdragmoveinit", "onRowDrag"], [0, "rowdragmousemove", "onRowMouseMove"], [0, "celleditapply", "onCellEdit"], [0, "rangeeditapply", "onRangeEdit"], [0, "selectionchangeinit", "onRangeChanged"], [0, "rowdropinit", "onRowDropped"], [0, "beforeheaderclick", "onHeaderClick"], [0, "beforecellfocusinit", "onCellFocus"]],
14617
+ "$listeners$": [[5, "touchstart", "mousedownHandle"], [5, "mousedown", "mousedownHandle"], [5, "touchend", "mouseupHandle"], [5, "mouseup", "mouseupHandle"], [0, "rowdragstartinit", "onRowDragStarted"], [0, "rowdragendinit", "onRowDragEnd"], [0, "roworderchange", "onRowOrderChange"], [0, "rowdragmoveinit", "onRowDrag"], [0, "rowdragmousemove", "onRowMouseMove"], [0, "celleditapply", "onCellEdit"], [0, "rangeeditapply", "onRangeEdit"], [0, "selectionchangeinit", "onRangeChanged"], [0, "rowdropinit", "onRowDropped"], [0, "beforeheaderclick", "onHeaderClick"], [0, "beforecellfocusinit", "onCellFocus"]],
14566
14618
  "$lazyBundleId$": "-",
14567
14619
  "$attrsToReflect$": [["theme", "theme"], ["rowClass", "row-class"]]
14568
14620
  }; }