@revolist/revogrid 4.9.0 → 4.9.2

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 (66) hide show
  1. package/dist/cjs/revogr-attribution_6.cjs.entry.js +14 -8
  2. package/dist/cjs/revogr-attribution_6.cjs.entry.js.map +1 -1
  3. package/dist/cjs/revogr-clipboard_3.cjs.entry.js +5 -2
  4. package/dist/cjs/revogr-clipboard_3.cjs.entry.js.map +1 -1
  5. package/dist/cjs/revogr-data_4.cjs.entry.js +17 -4
  6. package/dist/cjs/revogr-data_4.cjs.entry.js.map +1 -1
  7. package/dist/collection/components/clipboard/revogr-clipboard.js +66 -87
  8. package/dist/collection/components/clipboard/revogr-clipboard.js.map +1 -1
  9. package/dist/collection/components/header/header-renderer.js +18 -5
  10. package/dist/collection/components/header/header-renderer.js.map +1 -1
  11. package/dist/collection/components/header/revogr-header.js +2 -2
  12. package/dist/collection/components/overlay/autofill.service.js +6 -8
  13. package/dist/collection/components/overlay/autofill.service.js.map +1 -1
  14. package/dist/collection/components/overlay/revogr-overlay-selection.js +22 -10
  15. package/dist/collection/components/overlay/revogr-overlay-selection.js.map +1 -1
  16. package/dist/collection/components/overlay/selection.utils.js +9 -1
  17. package/dist/collection/components/overlay/selection.utils.js.map +1 -1
  18. package/dist/collection/types/interfaces.js.map +1 -1
  19. package/dist/esm/revogr-attribution_6.entry.js +15 -9
  20. package/dist/esm/revogr-attribution_6.entry.js.map +1 -1
  21. package/dist/esm/revogr-clipboard_3.entry.js +5 -2
  22. package/dist/esm/revogr-clipboard_3.entry.js.map +1 -1
  23. package/dist/esm/revogr-data_4.entry.js +17 -4
  24. package/dist/esm/revogr-data_4.entry.js.map +1 -1
  25. package/dist/revo-grid/revogr-attribution_6.entry.js +1 -1
  26. package/dist/revo-grid/revogr-attribution_6.entry.js.map +1 -1
  27. package/dist/revo-grid/revogr-clipboard_3.entry.js.map +1 -1
  28. package/dist/revo-grid/revogr-data_4.entry.js +1 -1
  29. package/dist/revo-grid/revogr-data_4.entry.js.map +1 -1
  30. package/dist/types/components/clipboard/revogr-clipboard.d.ts +32 -24
  31. package/dist/types/components/overlay/autofill.service.d.ts +3 -1
  32. package/dist/types/components/overlay/revogr-overlay-selection.d.ts +12 -3
  33. package/dist/types/components/overlay/selection.utils.d.ts +4 -1
  34. package/dist/types/components.d.ts +67 -42
  35. package/dist/types/types/interfaces.d.ts +16 -1
  36. package/hydrate/index.js +36 -14
  37. package/hydrate/index.mjs +36 -14
  38. package/package.json +1 -1
  39. package/readme.md +2 -0
  40. package/standalone/column.service.js +1 -2
  41. package/standalone/column.service.js.map +1 -1
  42. package/standalone/data.store.js +2950 -3
  43. package/standalone/data.store.js.map +1 -1
  44. package/standalone/debounce.js +1 -1
  45. package/standalone/dimension.helpers.js +2 -2
  46. package/standalone/revo-grid.js +1 -2
  47. package/standalone/revo-grid.js.map +1 -1
  48. package/standalone/revogr-clipboard2.js +5 -2
  49. package/standalone/revogr-clipboard2.js.map +1 -1
  50. package/standalone/revogr-data2.js +0 -1
  51. package/standalone/revogr-data2.js.map +1 -1
  52. package/standalone/revogr-focus2.js +0 -1
  53. package/standalone/revogr-focus2.js.map +1 -1
  54. package/standalone/revogr-header2.js +18 -6
  55. package/standalone/revogr-header2.js.map +1 -1
  56. package/standalone/revogr-order-editor2.js +0 -1
  57. package/standalone/revogr-order-editor2.js.map +1 -1
  58. package/standalone/revogr-overlay-selection2.js +8 -11
  59. package/standalone/revogr-overlay-selection2.js.map +1 -1
  60. package/standalone/revogr-row-headers2.js +0 -1
  61. package/standalone/revogr-row-headers2.js.map +1 -1
  62. package/standalone/selection.utils.js +10 -2
  63. package/standalone/selection.utils.js.map +1 -1
  64. package/standalone/toNumber.js +1 -1
  65. package/standalone/_baseIteratee.js +0 -2956
  66. package/standalone/_baseIteratee.js.map +0 -1
@@ -5,7 +5,7 @@
5
5
  * It contains typing information for all components that exist in this project.
6
6
  */
7
7
  import { HTMLStencilElement, JSXBase } from "./stencil-public-runtime";
8
- import { AfterEditEvent, AllDimensionType, ApplyFocusEvent, BeforeCellRenderEvent, BeforeEdit, BeforeRangeSaveDataDetails, BeforeRowRenderEvent, BeforeSaveDataDetails, Cell, ChangedRange, ColumnDataSchemaModel, ColumnGrouping, ColumnProp, ColumnRegular, ColumnType, DataFormat, DataType, DimensionCols, DimensionRows, DimensionSettingsState, DimensionType, DimensionTypeCol, DragStartEvent, EditCell, EditorCtr, Editors, ElementScroll, FocusRenderEvent, FocusTemplateFunc, InitialHeaderClick, MultiDimensionType, PluginBaseComponent, PositionItem, RangeArea, RowDefinition, RowHeaders, SaveDataDetails, SelectionStoreState, TempRange, Theme, ViewportData, ViewPortResizeEvent, ViewPortScrollEvent, ViewportState, ViewSettingSizeProp } from "./types/index";
8
+ import { AfterEditEvent, AllDimensionType, ApplyFocusEvent, BeforeCellRenderEvent, BeforeEdit, BeforeRangeSaveDataDetails, BeforeRowRenderEvent, BeforeSaveDataDetails, Cell, ChangedRange, ColumnDataSchemaModel, ColumnGrouping, ColumnProp, ColumnRegular, ColumnType, DataFormat, DataType, DimensionCols, DimensionRows, DimensionSettingsState, DimensionType, DimensionTypeCol, DragStartEvent, EditCell, EditorCtr, Editors, ElementScroll, FocusRenderEvent, FocusTemplateFunc, InitialHeaderClick, MultiDimensionType, PluginBaseComponent, PositionItem, RangeArea, RangeClipboardCopyEventProps, RangeClipboardPasteEvent, RowDefinition, RowHeaders, SaveDataDetails, SelectionStoreState, TempRange, Theme, ViewportData, ViewPortResizeEvent, ViewPortScrollEvent, ViewportState, ViewSettingSizeProp } from "./types/index";
9
9
  import { GridPlugin } from "./plugins/base.plugin";
10
10
  import { AutoSizeColumnConfig } from "./plugins/column.auto-size.plugin";
11
11
  import { ColumnFilterConfig, FilterCaptions, FilterCollection } from "./plugins/filter/filter.plugin";
@@ -20,7 +20,7 @@ import { MultiFilterItem, ShowData } from "./plugins/filter/filter.panel";
20
20
  import { LogicFunction } from "./plugins/filter/filter.types";
21
21
  import { ResizeProps } from "./components/header/resizable.directive";
22
22
  import { Cell as Cell1, ColumnRegular as ColumnRegular1, DataType as DataType1, DimensionCols as DimensionCols1, DimensionRows as DimensionRows1, DimensionSettingsState as DimensionSettingsState1, Observable as Observable1, SelectionStoreState as SelectionStoreState1 } from "./components";
23
- export { AfterEditEvent, AllDimensionType, ApplyFocusEvent, BeforeCellRenderEvent, BeforeEdit, BeforeRangeSaveDataDetails, BeforeRowRenderEvent, BeforeSaveDataDetails, Cell, ChangedRange, ColumnDataSchemaModel, ColumnGrouping, ColumnProp, ColumnRegular, ColumnType, DataFormat, DataType, DimensionCols, DimensionRows, DimensionSettingsState, DimensionType, DimensionTypeCol, DragStartEvent, EditCell, EditorCtr, Editors, ElementScroll, FocusRenderEvent, FocusTemplateFunc, InitialHeaderClick, MultiDimensionType, PluginBaseComponent, PositionItem, RangeArea, RowDefinition, RowHeaders, SaveDataDetails, SelectionStoreState, TempRange, Theme, ViewportData, ViewPortResizeEvent, ViewPortScrollEvent, ViewportState, ViewSettingSizeProp } from "./types/index";
23
+ export { AfterEditEvent, AllDimensionType, ApplyFocusEvent, BeforeCellRenderEvent, BeforeEdit, BeforeRangeSaveDataDetails, BeforeRowRenderEvent, BeforeSaveDataDetails, Cell, ChangedRange, ColumnDataSchemaModel, ColumnGrouping, ColumnProp, ColumnRegular, ColumnType, DataFormat, DataType, DimensionCols, DimensionRows, DimensionSettingsState, DimensionType, DimensionTypeCol, DragStartEvent, EditCell, EditorCtr, Editors, ElementScroll, FocusRenderEvent, FocusTemplateFunc, InitialHeaderClick, MultiDimensionType, PluginBaseComponent, PositionItem, RangeArea, RangeClipboardCopyEventProps, RangeClipboardPasteEvent, RowDefinition, RowHeaders, SaveDataDetails, SelectionStoreState, TempRange, Theme, ViewportData, ViewPortResizeEvent, ViewPortScrollEvent, ViewportState, ViewSettingSizeProp } from "./types/index";
24
24
  export { GridPlugin } from "./plugins/base.plugin";
25
25
  export { AutoSizeColumnConfig } from "./plugins/column.auto-size.plugin";
26
26
  export { ColumnFilterConfig, FilterCaptions, FilterCollection } from "./plugins/filter/filter.plugin";
@@ -845,14 +845,34 @@ declare global {
845
845
  new (): HTMLRevogrAttributionElement;
846
846
  };
847
847
  interface HTMLRevogrClipboardElementEventMap {
848
- "beforepaste": any;
849
- "beforepasteapply": any;
848
+ "beforepaste": {
849
+ raw: string;
850
+ isHTML: boolean;
851
+ event: ClipboardEvent;
852
+ dataText: string;
853
+ };
854
+ "beforepasteapply": {
855
+ raw: string;
856
+ parsed: string[][];
857
+ event: ClipboardEvent;
858
+ };
850
859
  "pasteregion": string[][];
851
- "afterpasteapply": any;
852
- "beforecut": any;
860
+ "afterpasteapply": {
861
+ raw: string;
862
+ parsed: string[][];
863
+ event: ClipboardEvent;
864
+ };
865
+ "beforecut": {
866
+ event: ClipboardEvent;
867
+ };
853
868
  "clearregion": DataTransfer;
854
- "beforecopy": any;
855
- "beforecopyapply": any;
869
+ "beforecopy": {
870
+ event: ClipboardEvent;
871
+ };
872
+ "beforecopyapply": {
873
+ event: DataTransfer;
874
+ data?: string[][];
875
+ };
856
876
  "copyregion": DataTransfer;
857
877
  }
858
878
  /**
@@ -1034,8 +1054,8 @@ declare global {
1034
1054
  "selectionchangeinit": ChangedRange;
1035
1055
  "beforerangecopyapply": ChangedRange;
1036
1056
  "rangeeditapply": BeforeRangeSaveDataDetails;
1037
- "clipboardrangecopy": any;
1038
- "clipboardrangepaste": any;
1057
+ "clipboardrangecopy": RangeClipboardCopyEventProps;
1058
+ "clipboardrangepaste": RangeClipboardPasteEvent;
1039
1059
  "beforekeydown": KeyboardEvent;
1040
1060
  "beforekeyup": KeyboardEvent;
1041
1061
  "beforecellsave": any;
@@ -1511,53 +1531,55 @@ declare namespace LocalJSX {
1511
1531
  */
1512
1532
  interface RevogrClipboard {
1513
1533
  /**
1514
- * Paste 4. Fired after paste applied to the grid
1515
- * @property {string} raw - raw data from clipboard
1516
- * @property {string[][]} parsed - parsed data
1517
- * @property {ClipboardEvent} event - original event
1518
- * @property {boolean} defaultPrevented - if true, paste will be canceled
1534
+ * Paste 4. Fired after paste applied to the grid defaultPrevented - if true, paste will be canceled
1519
1535
  */
1520
- "onAfterpasteapply"?: (event: RevogrClipboardCustomEvent<any>) => void;
1536
+ "onAfterpasteapply"?: (event: RevogrClipboardCustomEvent<{
1537
+ raw: string;
1538
+ parsed: string[][];
1539
+ event: ClipboardEvent;
1540
+ }>) => void;
1521
1541
  /**
1522
- * Copy 1. Fired before copy triggered
1523
- * @property {ClipboardEvent} event - original event
1524
- * @property {boolean} defaultPrevented - if true, copy will be canceled
1542
+ * Copy 1. Fired before copy triggered defaultPrevented - if true, copy will be canceled
1525
1543
  */
1526
- "onBeforecopy"?: (event: RevogrClipboardCustomEvent<any>) => void;
1544
+ "onBeforecopy"?: (event: RevogrClipboardCustomEvent<{
1545
+ event: ClipboardEvent;
1546
+ }>) => void;
1527
1547
  /**
1528
- * Copy Method 1. Fired before copy applied to the clipboard from outside.
1529
- * @property {DataTransfer} event - original event
1530
- * @property {string} data - data to copy
1531
- * @property {boolean} defaultPrevented - if true, copy will be canceled
1548
+ * Copy Method 1. Fired before copy applied to the clipboard from outside. defaultPrevented - if true, copy will be canceled
1532
1549
  */
1533
- "onBeforecopyapply"?: (event: RevogrClipboardCustomEvent<any>) => void;
1550
+ "onBeforecopyapply"?: (event: RevogrClipboardCustomEvent<{
1551
+ event: DataTransfer;
1552
+ data?: string[][];
1553
+ }>) => void;
1534
1554
  /**
1535
- * Cut 1. Fired before cut triggered
1536
- * @property {ClipboardEvent} event - original event
1537
- * @property {boolean} defaultPrevented - if true, cut will be canceled
1555
+ * Cut 1. Fired before cut triggered defaultPrevented - if true, cut will be canceled
1538
1556
  */
1539
- "onBeforecut"?: (event: RevogrClipboardCustomEvent<any>) => void;
1557
+ "onBeforecut"?: (event: RevogrClipboardCustomEvent<{
1558
+ event: ClipboardEvent;
1559
+ }>) => void;
1540
1560
  /**
1541
- * Paste 1. Fired before paste applied to the grid
1542
- * @property {string} raw - raw data from clipboard
1543
- * @property {ClipboardEvent} event - original event
1544
- * @property {boolean} defaultPrevented - if true, paste will be canceled
1561
+ * Paste 1. Fired before paste applied to the grid defaultPrevented - if true, paste will be canceled
1545
1562
  */
1546
- "onBeforepaste"?: (event: RevogrClipboardCustomEvent<any>) => void;
1563
+ "onBeforepaste"?: (event: RevogrClipboardCustomEvent<{
1564
+ raw: string;
1565
+ isHTML: boolean;
1566
+ event: ClipboardEvent;
1567
+ dataText: string;
1568
+ }>) => void;
1547
1569
  /**
1548
1570
  * Paste 2. Fired before paste applied to the grid and after data parsed
1549
- * @property {string} raw - raw data from clipboard
1550
- * @property {string[][]} parsed - parsed data
1551
1571
  */
1552
- "onBeforepasteapply"?: (event: RevogrClipboardCustomEvent<any>) => void;
1572
+ "onBeforepasteapply"?: (event: RevogrClipboardCustomEvent<{
1573
+ raw: string;
1574
+ parsed: string[][];
1575
+ event: ClipboardEvent;
1576
+ }>) => void;
1553
1577
  /**
1554
1578
  * Cut 2. Clears region when cut is done
1555
1579
  */
1556
1580
  "onClearregion"?: (event: RevogrClipboardCustomEvent<DataTransfer>) => void;
1557
1581
  /**
1558
- * Copy 2. Fired when region copied
1559
- * @property {DataTransfer} data - data to copy
1560
- * @property {boolean} defaultPrevented - if true, copy will be canceled
1582
+ * Copy 2. Fired when region copied defaultPrevented - if true, copy will be canceled
1561
1583
  */
1562
1584
  "onCopyregion"?: (event: RevogrClipboardCustomEvent<DataTransfer>) => void;
1563
1585
  /**
@@ -1964,8 +1986,11 @@ declare namespace LocalJSX {
1964
1986
  /**
1965
1987
  * Range copy.
1966
1988
  */
1967
- "onClipboardrangecopy"?: (event: RevogrOverlaySelectionCustomEvent<any>) => void;
1968
- "onClipboardrangepaste"?: (event: RevogrOverlaySelectionCustomEvent<any>) => void;
1989
+ "onClipboardrangecopy"?: (event: RevogrOverlaySelectionCustomEvent<RangeClipboardCopyEventProps>) => void;
1990
+ /**
1991
+ * Range paste event.
1992
+ */
1993
+ "onClipboardrangepaste"?: (event: RevogrOverlaySelectionCustomEvent<RangeClipboardPasteEvent>) => void;
1969
1994
  /**
1970
1995
  * Cell get focused. To prevent the default behavior of applying the edit data, you can call `e.preventDefault()`.
1971
1996
  */
@@ -1,6 +1,6 @@
1
1
  import type { VNode } from '../stencil-public-runtime';
2
2
  import { DimensionCols, DimensionRows, DimensionColPin, DimensionType, MultiDimensionType } from './dimension';
3
- import { Cell, EditorCtr, FocusedCells, RangeArea, SelectionStoreState } from './selection';
3
+ import { Cell, EditorCtr, FocusedCells, OldNewRangeMapping, RangeArea, SelectionStoreState } from './selection';
4
4
  import type { Observable } from '../utils/store.utils';
5
5
  /**
6
6
  * Advanced column data schema model.
@@ -417,6 +417,7 @@ export type InitialHeaderClick = {
417
417
  * The column that was clicked.
418
418
  */
419
419
  column: ColumnRegular;
420
+ providers: Providers<DimensionCols | 'rowHeaders'>;
420
421
  };
421
422
  /**
422
423
  * `Range` is an object that represents a range of values.
@@ -667,3 +668,17 @@ export type ScrollCoordinateEvent = {
667
668
  */
668
669
  coordinate: number;
669
670
  };
671
+ /** Range paste. */
672
+ export type RangeClipboardPasteEvent = {
673
+ data: DataLookup;
674
+ models: {
675
+ [rowIndex: number]: DataType;
676
+ };
677
+ range: RangeArea;
678
+ } & AllDimensionType;
679
+ /** Range copy. */
680
+ export type RangeClipboardCopyEventProps = {
681
+ data: DataFormat[][];
682
+ range: RangeArea;
683
+ mapping: OldNewRangeMapping;
684
+ } & AllDimensionType;
package/hydrate/index.js CHANGED
@@ -2311,7 +2311,9 @@ class Clipboard {
2311
2311
  }
2312
2312
  const clipboardData = this.getData(e);
2313
2313
  const isHTML = ((clipboardData === null || clipboardData === void 0 ? void 0 : clipboardData.types.indexOf('text/html')) || -1) > -1;
2314
- const data = isHTML ? clipboardData === null || clipboardData === void 0 ? void 0 : clipboardData.getData('text/html') : clipboardData === null || clipboardData === void 0 ? void 0 : clipboardData.getData('text');
2314
+ const data = isHTML
2315
+ ? clipboardData === null || clipboardData === void 0 ? void 0 : clipboardData.getData('text/html')
2316
+ : clipboardData === null || clipboardData === void 0 ? void 0 : clipboardData.getData('text');
2315
2317
  const dataText = clipboardData === null || clipboardData === void 0 ? void 0 : clipboardData.getData('text');
2316
2318
  const beforePaste = this.beforePaste.emit({
2317
2319
  raw: data,
@@ -2421,7 +2423,8 @@ class Clipboard {
2421
2423
  return result;
2422
2424
  }
2423
2425
  getData(e) {
2424
- return e.clipboardData || (window === null || window === void 0 ? void 0 : window.clipboardData);
2426
+ return (e.clipboardData ||
2427
+ (window === null || window === void 0 ? void 0 : window.clipboardData));
2425
2428
  }
2426
2429
  static get cmpMeta() { return {
2427
2430
  "$flags$": 0,
@@ -9240,6 +9243,14 @@ function getPropertyFromEvent(e, prop, focusClass // for touch events
9240
9243
  return e[prop] || 0;
9241
9244
  }
9242
9245
 
9246
+ function collectModelsOfRange(data, store) {
9247
+ const models = {};
9248
+ for (let i in data) {
9249
+ const rowIndex = parseInt(i, 10);
9250
+ models[rowIndex] = getSourceItem(store, rowIndex);
9251
+ }
9252
+ return models;
9253
+ }
9243
9254
  function getFocusCellBasedOnEvent(e, data) {
9244
9255
  // If event default is prevented, return
9245
9256
  if (e.defaultPrevented) {
@@ -9767,15 +9778,13 @@ class AutoFillService {
9767
9778
  this.autoFillLast = null;
9768
9779
  this.autoFillStart = null;
9769
9780
  }
9770
- /** Trigger range apply events and handle responses */
9781
+ /**
9782
+ * Trigger range apply events and handle responses
9783
+ */
9771
9784
  onRangeApply(data, range) {
9772
- const models = {};
9773
- for (let rowIndex in data) {
9774
- models[rowIndex] = getSourceItem(this.sv.dataStore, parseInt(rowIndex, 10));
9775
- }
9776
9785
  this.sv.rangeDataApply({
9777
9786
  data,
9778
- models,
9787
+ models: collectModelsOfRange(data, this.sv.dataStore),
9779
9788
  type: this.sv.dataStore.get('type'),
9780
9789
  });
9781
9790
  this.sv.setRange(range);
@@ -10061,7 +10070,7 @@ class OverlaySelection {
10061
10070
  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) }));
10062
10071
  }
10063
10072
  }
10064
- return (hAsync(Host, { key: '81dee4cfcce410cefb2bd9ff2661261472fc3a75', class: { mobile: this.isMobileDevice }, onDblClick: (e) => this.onElementDblClick(e), onMouseDown: (e) => this.onElementMouseDown(e), onTouchStart: (e) => this.onElementMouseDown(e, true) }, nodes, hAsync("slot", { key: '6ac75c388ae3fbc5539a27c3acd58178dd53d1af', name: "data" })));
10073
+ return (hAsync(Host, { key: '98f6ca4606540478588614eaf7ee69a5eaf48b99', class: { mobile: this.isMobileDevice }, onDblClick: (e) => this.onElementDblClick(e), onMouseDown: (e) => this.onElementMouseDown(e), onTouchStart: (e) => this.onElementMouseDown(e, true) }, nodes, hAsync("slot", { key: '65d69b6562e14e1cf99c3780ac2ba3fa3e37e801', name: "data" })));
10065
10074
  }
10066
10075
  /**
10067
10076
  * Executes the focus operation on the specified range of cells.
@@ -10208,7 +10217,7 @@ class OverlaySelection {
10208
10217
  return;
10209
10218
  }
10210
10219
  let { changed, range } = this.columnService.getTransformedDataToApply(focus, data);
10211
- const { defaultPrevented: canPaste } = this.rangeClipboardPaste.emit(Object.assign({ data: changed, range }, this.types));
10220
+ const { defaultPrevented: canPaste } = this.rangeClipboardPaste.emit(Object.assign({ data: changed, models: collectModelsOfRange(changed, this.dataStore), range }, this.types));
10212
10221
  if (canPaste) {
10213
10222
  return;
10214
10223
  }
@@ -15735,16 +15744,29 @@ const HeaderRenderer = (p) => {
15735
15744
  maxWidth: (_d = p.data) === null || _d === void 0 ? void 0 : _d.maxSize,
15736
15745
  active: p.active || ['r'],
15737
15746
  class: cellClass,
15738
- style: { width: `${p.column.size}px`, transform: `translateX(${p.column.start}px)` },
15747
+ style: {
15748
+ width: `${p.column.size}px`,
15749
+ transform: `translateX(${p.column.start}px)`,
15750
+ },
15739
15751
  onResize: p.onResize,
15740
15752
  onDoubleClick(originalEvent) {
15741
- p.onDoubleClick({ column: p.data, index: p.column.itemIndex, originalEvent });
15753
+ p.onDoubleClick({
15754
+ column: p.data,
15755
+ index: p.column.itemIndex,
15756
+ originalEvent,
15757
+ providers: p.data.providers,
15758
+ });
15742
15759
  },
15743
15760
  onClick(originalEvent) {
15744
15761
  if (originalEvent.defaultPrevented || !p.onClick) {
15745
15762
  return;
15746
15763
  }
15747
- p.onClick({ column: p.data, index: p.column.itemIndex, originalEvent });
15764
+ p.onClick({
15765
+ column: p.data,
15766
+ index: p.column.itemIndex,
15767
+ originalEvent,
15768
+ providers: p.data.providers,
15769
+ });
15748
15770
  },
15749
15771
  };
15750
15772
  if (p.range) {
@@ -15756,7 +15778,7 @@ const HeaderRenderer = (p) => {
15756
15778
  }
15757
15779
  return (hAsync(HeaderCellRenderer, { data: p.data, props: dataProps, additionalData: p.additionalData },
15758
15780
  hAsync(SortingSign, { column: p.data }),
15759
- p.canFilter && ((_e = p.data) === null || _e === void 0 ? void 0 : _e.filter) !== false ? hAsync(FilterButton, { column: p.data }) : ''));
15781
+ p.canFilter && ((_e = p.data) === null || _e === void 0 ? void 0 : _e.filter) !== false ? (hAsync(FilterButton, { column: p.data })) : ('')));
15760
15782
  };
15761
15783
 
15762
15784
  const GroupHeaderRenderer = (p) => {
package/hydrate/index.mjs CHANGED
@@ -2307,7 +2307,9 @@ class Clipboard {
2307
2307
  }
2308
2308
  const clipboardData = this.getData(e);
2309
2309
  const isHTML = ((clipboardData === null || clipboardData === void 0 ? void 0 : clipboardData.types.indexOf('text/html')) || -1) > -1;
2310
- const data = isHTML ? clipboardData === null || clipboardData === void 0 ? void 0 : clipboardData.getData('text/html') : clipboardData === null || clipboardData === void 0 ? void 0 : clipboardData.getData('text');
2310
+ const data = isHTML
2311
+ ? clipboardData === null || clipboardData === void 0 ? void 0 : clipboardData.getData('text/html')
2312
+ : clipboardData === null || clipboardData === void 0 ? void 0 : clipboardData.getData('text');
2311
2313
  const dataText = clipboardData === null || clipboardData === void 0 ? void 0 : clipboardData.getData('text');
2312
2314
  const beforePaste = this.beforePaste.emit({
2313
2315
  raw: data,
@@ -2417,7 +2419,8 @@ class Clipboard {
2417
2419
  return result;
2418
2420
  }
2419
2421
  getData(e) {
2420
- return e.clipboardData || (window === null || window === void 0 ? void 0 : window.clipboardData);
2422
+ return (e.clipboardData ||
2423
+ (window === null || window === void 0 ? void 0 : window.clipboardData));
2421
2424
  }
2422
2425
  static get cmpMeta() { return {
2423
2426
  "$flags$": 0,
@@ -9236,6 +9239,14 @@ function getPropertyFromEvent(e, prop, focusClass // for touch events
9236
9239
  return e[prop] || 0;
9237
9240
  }
9238
9241
 
9242
+ function collectModelsOfRange(data, store) {
9243
+ const models = {};
9244
+ for (let i in data) {
9245
+ const rowIndex = parseInt(i, 10);
9246
+ models[rowIndex] = getSourceItem(store, rowIndex);
9247
+ }
9248
+ return models;
9249
+ }
9239
9250
  function getFocusCellBasedOnEvent(e, data) {
9240
9251
  // If event default is prevented, return
9241
9252
  if (e.defaultPrevented) {
@@ -9763,15 +9774,13 @@ class AutoFillService {
9763
9774
  this.autoFillLast = null;
9764
9775
  this.autoFillStart = null;
9765
9776
  }
9766
- /** Trigger range apply events and handle responses */
9777
+ /**
9778
+ * Trigger range apply events and handle responses
9779
+ */
9767
9780
  onRangeApply(data, range) {
9768
- const models = {};
9769
- for (let rowIndex in data) {
9770
- models[rowIndex] = getSourceItem(this.sv.dataStore, parseInt(rowIndex, 10));
9771
- }
9772
9781
  this.sv.rangeDataApply({
9773
9782
  data,
9774
- models,
9783
+ models: collectModelsOfRange(data, this.sv.dataStore),
9775
9784
  type: this.sv.dataStore.get('type'),
9776
9785
  });
9777
9786
  this.sv.setRange(range);
@@ -10057,7 +10066,7 @@ class OverlaySelection {
10057
10066
  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) }));
10058
10067
  }
10059
10068
  }
10060
- return (hAsync(Host, { key: '81dee4cfcce410cefb2bd9ff2661261472fc3a75', class: { mobile: this.isMobileDevice }, onDblClick: (e) => this.onElementDblClick(e), onMouseDown: (e) => this.onElementMouseDown(e), onTouchStart: (e) => this.onElementMouseDown(e, true) }, nodes, hAsync("slot", { key: '6ac75c388ae3fbc5539a27c3acd58178dd53d1af', name: "data" })));
10069
+ return (hAsync(Host, { key: '98f6ca4606540478588614eaf7ee69a5eaf48b99', class: { mobile: this.isMobileDevice }, onDblClick: (e) => this.onElementDblClick(e), onMouseDown: (e) => this.onElementMouseDown(e), onTouchStart: (e) => this.onElementMouseDown(e, true) }, nodes, hAsync("slot", { key: '65d69b6562e14e1cf99c3780ac2ba3fa3e37e801', name: "data" })));
10061
10070
  }
10062
10071
  /**
10063
10072
  * Executes the focus operation on the specified range of cells.
@@ -10204,7 +10213,7 @@ class OverlaySelection {
10204
10213
  return;
10205
10214
  }
10206
10215
  let { changed, range } = this.columnService.getTransformedDataToApply(focus, data);
10207
- const { defaultPrevented: canPaste } = this.rangeClipboardPaste.emit(Object.assign({ data: changed, range }, this.types));
10216
+ const { defaultPrevented: canPaste } = this.rangeClipboardPaste.emit(Object.assign({ data: changed, models: collectModelsOfRange(changed, this.dataStore), range }, this.types));
10208
10217
  if (canPaste) {
10209
10218
  return;
10210
10219
  }
@@ -15731,16 +15740,29 @@ const HeaderRenderer = (p) => {
15731
15740
  maxWidth: (_d = p.data) === null || _d === void 0 ? void 0 : _d.maxSize,
15732
15741
  active: p.active || ['r'],
15733
15742
  class: cellClass,
15734
- style: { width: `${p.column.size}px`, transform: `translateX(${p.column.start}px)` },
15743
+ style: {
15744
+ width: `${p.column.size}px`,
15745
+ transform: `translateX(${p.column.start}px)`,
15746
+ },
15735
15747
  onResize: p.onResize,
15736
15748
  onDoubleClick(originalEvent) {
15737
- p.onDoubleClick({ column: p.data, index: p.column.itemIndex, originalEvent });
15749
+ p.onDoubleClick({
15750
+ column: p.data,
15751
+ index: p.column.itemIndex,
15752
+ originalEvent,
15753
+ providers: p.data.providers,
15754
+ });
15738
15755
  },
15739
15756
  onClick(originalEvent) {
15740
15757
  if (originalEvent.defaultPrevented || !p.onClick) {
15741
15758
  return;
15742
15759
  }
15743
- p.onClick({ column: p.data, index: p.column.itemIndex, originalEvent });
15760
+ p.onClick({
15761
+ column: p.data,
15762
+ index: p.column.itemIndex,
15763
+ originalEvent,
15764
+ providers: p.data.providers,
15765
+ });
15744
15766
  },
15745
15767
  };
15746
15768
  if (p.range) {
@@ -15752,7 +15774,7 @@ const HeaderRenderer = (p) => {
15752
15774
  }
15753
15775
  return (hAsync(HeaderCellRenderer, { data: p.data, props: dataProps, additionalData: p.additionalData },
15754
15776
  hAsync(SortingSign, { column: p.data }),
15755
- p.canFilter && ((_e = p.data) === null || _e === void 0 ? void 0 : _e.filter) !== false ? hAsync(FilterButton, { column: p.data }) : ''));
15777
+ p.canFilter && ((_e = p.data) === null || _e === void 0 ? void 0 : _e.filter) !== false ? (hAsync(FilterButton, { column: p.data })) : ('')));
15756
15778
  };
15757
15779
 
15758
15780
  const GroupHeaderRenderer = (p) => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@revolist/revogrid",
3
- "version": "4.9.0",
3
+ "version": "4.9.2",
4
4
  "type": "module",
5
5
  "description": "Virtual reactive data grid spreadsheet component - RevoGrid.",
6
6
  "license": "MIT",
package/readme.md CHANGED
@@ -235,6 +235,8 @@ grid.source = items;
235
235
  - Enhanced plugin support - now with full access to grid providers.
236
236
  - Updated documentation.
237
237
  - Provided full framework support and native render for Angular, React, Svelte and Vue.
238
+ - **What next?**
239
+ - Check our [Roadmap](https://github.com/users/revolist/projects/3)
238
240
 
239
241
 
240
242
  ## Our Sponsors
@@ -1,8 +1,7 @@
1
1
  /*!
2
2
  * Built by Revolist OU ❤️
3
3
  */
4
- import { i as createStore, h as setStore, _ as _isIterateeCall, k as toInteger_1, a as getVisibleSourceItem, b as getSourceItem } from './data.store.js';
5
- import './_baseIteratee.js';
4
+ import { i as createStore, h as setStore, w as _isIterateeCall, v as toInteger_1, a as getVisibleSourceItem, b as getSourceItem } from './data.store.js';
6
5
  import './toNumber.js';
7
6
  import '@stencil/core/internal/client';
8
7
  import { G as GRID_INTERNALS, C as CELL_CLASS, d as DISABLED_CLASS } from './consts.js';