@revolist/revogrid 3.4.1 → 3.5.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.
@@ -2,11 +2,10 @@
2
2
  * Built by Revolist
3
3
  */
4
4
  import debounce from 'lodash/debounce';
5
- import each from 'lodash/each';
6
5
  import slice from 'lodash/slice';
7
6
  import { h } from '@stencil/core';
8
7
  import { CELL_HANDLER_CLASS } from '../../utils/consts';
9
- import { getCell, getCurrentCell, getDirectionCoordinate, getLargestAxis, isAfterLast } from './selection.utils';
8
+ import { getCell, getCurrentCell, isAfterLast } from './selection.utils';
10
9
  import { getRange } from '../../store/selection/selection.helpers';
11
10
  import { getSourceItem } from '../../store/dataSource/data.store';
12
11
  var AutoFillType;
@@ -70,35 +69,28 @@ export class AutoFillService {
70
69
  return;
71
70
  }
72
71
  let current = getCurrentCell({ x, y }, data);
73
- let direction;
74
- if (this.autoFillLast) {
75
- direction = getDirectionCoordinate(this.autoFillStart, this.autoFillLast);
76
- }
77
72
  // first time or direction equal to start(same as first time)
78
- if (!this.autoFillLast || !direction) {
79
- direction = getLargestAxis(this.autoFillStart, current);
73
+ if (!this.autoFillLast) {
80
74
  if (!this.autoFillLast) {
81
75
  this.autoFillLast = this.autoFillStart;
82
76
  }
83
77
  }
84
- // nothing changed
85
- if (!direction) {
86
- return;
87
- }
88
- each(direction, (v, k) => {
89
- if (v) {
90
- current = Object.assign(Object.assign({}, this.autoFillLast), { [k]: current[k] });
91
- }
92
- });
93
- // check if not the latest
78
+ // check if not the latest, if latest - do nothing
94
79
  if (isAfterLast(current, data)) {
95
80
  return;
96
81
  }
97
82
  this.autoFillLast = current;
98
- this.sv.setTempRange({
99
- area: getRange(this.autoFillInitial, this.autoFillLast),
100
- type: this.autoFillType,
101
- });
83
+ const isSame = current.x === this.autoFillInitial.x && current.y === this.autoFillInitial.y;
84
+ // if same as initial - clear
85
+ if (isSame) {
86
+ this.sv.setTempRange(null);
87
+ }
88
+ else {
89
+ this.sv.setTempRange({
90
+ area: getRange(this.autoFillInitial, this.autoFillLast),
91
+ type: this.autoFillType,
92
+ });
93
+ }
102
94
  }
103
95
  /**
104
96
  * Range selection started
@@ -7,35 +7,37 @@ import { getItemByPosition } from '../dimension/dimension.helpers';
7
7
  * If viewport wasn't changed fully simple recombination of positions
8
8
  * Otherwise rebuild viewport items
9
9
  */
10
- export function getUpdatedItemsByPosition(pos, items, realCount, virtualSize, dimension) {
10
+ export function getUpdatedItemsByPosition(pos, // coordinate
11
+ items, realCount, virtualSize, dimension) {
11
12
  const activeItem = getItemByPosition(dimension, pos);
12
13
  const firstItem = getFirstItem(items);
13
14
  let toUpdate;
14
- // do simple position replacement if items already present in viewport
15
+ // do simple position recombination if items already present in viewport
15
16
  if (firstItem) {
16
17
  let changedOffsetStart = activeItem.itemIndex - (firstItem.itemIndex || 0);
18
+ // if item changed
17
19
  if (changedOffsetStart) {
18
20
  // simple recombination
19
- const newData = recombineByOffset(Math.abs(changedOffsetStart), Object.assign(Object.assign({ positiveDirection: changedOffsetStart > -1 }, dimension), items));
20
- if (newData) {
21
- toUpdate = newData;
22
- }
23
- // if partial replacement add items if revo-viewport has some space left
24
- if (toUpdate) {
25
- const extra = addMissingItems(activeItem, realCount, virtualSize, toUpdate, dimension);
26
- if (extra.length) {
27
- updateMissingAndRange(toUpdate.items, extra, toUpdate);
28
- }
29
- }
21
+ toUpdate = recombineByOffset(Math.abs(changedOffsetStart), Object.assign(Object.assign({ positiveDirection: changedOffsetStart > -1 }, dimension), items));
22
+ }
23
+ }
24
+ // if partial recombination add items if revo-viewport has some space left
25
+ if (toUpdate) {
26
+ const extra = addMissingItems(activeItem, realCount, virtualSize, toUpdate, dimension);
27
+ if (extra.length) {
28
+ updateMissingAndRange(toUpdate.items, extra, toUpdate);
30
29
  }
31
30
  }
32
31
  // new collection if no items after replacement full replacement
33
32
  if (!toUpdate) {
34
33
  const items = getItems({
35
- start: activeItem.start,
36
- startIndex: activeItem.itemIndex,
34
+ firstItemStart: activeItem.start,
35
+ firstItemIndex: activeItem.itemIndex,
37
36
  origSize: dimension.originItemSize,
38
- maxSize: virtualSize,
37
+ // virtual size can differ based on scroll position if some big items are present
38
+ // scroll can be in the middle of item and virtual size will be larger
39
+ // so we need to exclude this part from virtual size hence it's already passed
40
+ maxSize: Math.min(virtualSize + (activeItem.end - activeItem.start), dimension.realSize),
39
41
  maxCount: realCount,
40
42
  sizes: dimension.sizes,
41
43
  });
@@ -56,29 +58,36 @@ export function updateMissingAndRange(items, missing, range) {
56
58
  }
57
59
  range.end += missing.length;
58
60
  }
59
- // if partial replacement add items if revo-viewport has some space left
61
+ /**
62
+ * If partial replacement
63
+ * this function adds items if viewport has some space left
64
+ */
60
65
  export function addMissingItems(firstItem, realCount, virtualSize, existingCollection, dimension) {
61
66
  const lastItem = getLastItem(existingCollection);
62
67
  const items = getItems({
63
68
  sizes: dimension.sizes,
64
- start: lastItem.end,
65
- startIndex: lastItem.itemIndex + 1,
69
+ firstItemStart: lastItem.end,
70
+ firstItemIndex: lastItem.itemIndex + 1,
66
71
  origSize: dimension.originItemSize,
67
72
  maxSize: virtualSize - (lastItem.end - firstItem.start),
68
73
  maxCount: realCount,
69
74
  });
70
75
  return items;
71
76
  }
72
- // get revo-viewport items parameters, caching position and calculating items count in revo-viewport
77
+ /**
78
+ * Get wiewport items parameters
79
+ * caching position and calculating items count in viewport
80
+ */
73
81
  export function getItems(opt, currentSize = 0) {
74
82
  const items = [];
75
- let index = opt.startIndex;
83
+ let index = opt.firstItemIndex;
76
84
  let size = currentSize;
85
+ // max size or max count
77
86
  while (size <= opt.maxSize && index < opt.maxCount) {
78
87
  const newSize = getItemSize(index, opt.sizes, opt.origSize);
79
88
  items.push({
80
- start: opt.start + size,
81
- end: opt.start + size + newSize,
89
+ start: opt.firstItemStart + size,
90
+ end: opt.firstItemStart + size + newSize,
82
91
  itemIndex: index,
83
92
  size: newSize,
84
93
  });
@@ -4506,35 +4506,37 @@ class DimensionProvider {
4506
4506
  * If viewport wasn't changed fully simple recombination of positions
4507
4507
  * Otherwise rebuild viewport items
4508
4508
  */
4509
- function getUpdatedItemsByPosition(pos, items, realCount, virtualSize, dimension) {
4509
+ function getUpdatedItemsByPosition(pos, // coordinate
4510
+ items, realCount, virtualSize, dimension) {
4510
4511
  const activeItem = getItemByPosition(dimension, pos);
4511
4512
  const firstItem = getFirstItem(items);
4512
4513
  let toUpdate;
4513
- // do simple position replacement if items already present in viewport
4514
+ // do simple position recombination if items already present in viewport
4514
4515
  if (firstItem) {
4515
4516
  let changedOffsetStart = activeItem.itemIndex - (firstItem.itemIndex || 0);
4517
+ // if item changed
4516
4518
  if (changedOffsetStart) {
4517
4519
  // simple recombination
4518
- const newData = recombineByOffset(Math.abs(changedOffsetStart), Object.assign(Object.assign({ positiveDirection: changedOffsetStart > -1 }, dimension), items));
4519
- if (newData) {
4520
- toUpdate = newData;
4521
- }
4522
- // if partial replacement add items if revo-viewport has some space left
4523
- if (toUpdate) {
4524
- const extra = addMissingItems(activeItem, realCount, virtualSize, toUpdate, dimension);
4525
- if (extra.length) {
4526
- updateMissingAndRange(toUpdate.items, extra, toUpdate);
4527
- }
4528
- }
4520
+ toUpdate = recombineByOffset(Math.abs(changedOffsetStart), Object.assign(Object.assign({ positiveDirection: changedOffsetStart > -1 }, dimension), items));
4521
+ }
4522
+ }
4523
+ // if partial recombination add items if revo-viewport has some space left
4524
+ if (toUpdate) {
4525
+ const extra = addMissingItems(activeItem, realCount, virtualSize, toUpdate, dimension);
4526
+ if (extra.length) {
4527
+ updateMissingAndRange(toUpdate.items, extra, toUpdate);
4529
4528
  }
4530
4529
  }
4531
4530
  // new collection if no items after replacement full replacement
4532
4531
  if (!toUpdate) {
4533
4532
  const items = getItems({
4534
- start: activeItem.start,
4535
- startIndex: activeItem.itemIndex,
4533
+ firstItemStart: activeItem.start,
4534
+ firstItemIndex: activeItem.itemIndex,
4536
4535
  origSize: dimension.originItemSize,
4537
- maxSize: virtualSize,
4536
+ // virtual size can differ based on scroll position if some big items are present
4537
+ // scroll can be in the middle of item and virtual size will be larger
4538
+ // so we need to exclude this part from virtual size hence it's already passed
4539
+ maxSize: Math.min(virtualSize + (activeItem.end - activeItem.start), dimension.realSize),
4538
4540
  maxCount: realCount,
4539
4541
  sizes: dimension.sizes,
4540
4542
  });
@@ -4555,29 +4557,36 @@ function updateMissingAndRange(items, missing, range) {
4555
4557
  }
4556
4558
  range.end += missing.length;
4557
4559
  }
4558
- // if partial replacement add items if revo-viewport has some space left
4560
+ /**
4561
+ * If partial replacement
4562
+ * this function adds items if viewport has some space left
4563
+ */
4559
4564
  function addMissingItems(firstItem, realCount, virtualSize, existingCollection, dimension) {
4560
4565
  const lastItem = getLastItem(existingCollection);
4561
4566
  const items = getItems({
4562
4567
  sizes: dimension.sizes,
4563
- start: lastItem.end,
4564
- startIndex: lastItem.itemIndex + 1,
4568
+ firstItemStart: lastItem.end,
4569
+ firstItemIndex: lastItem.itemIndex + 1,
4565
4570
  origSize: dimension.originItemSize,
4566
4571
  maxSize: virtualSize - (lastItem.end - firstItem.start),
4567
4572
  maxCount: realCount,
4568
4573
  });
4569
4574
  return items;
4570
4575
  }
4571
- // get revo-viewport items parameters, caching position and calculating items count in revo-viewport
4576
+ /**
4577
+ * Get wiewport items parameters
4578
+ * caching position and calculating items count in viewport
4579
+ */
4572
4580
  function getItems(opt, currentSize = 0) {
4573
4581
  const items = [];
4574
- let index = opt.startIndex;
4582
+ let index = opt.firstItemIndex;
4575
4583
  let size = currentSize;
4584
+ // max size or max count
4576
4585
  while (size <= opt.maxSize && index < opt.maxCount) {
4577
4586
  const newSize = getItemSize(index, opt.sizes, opt.origSize);
4578
4587
  items.push({
4579
- start: opt.start + size,
4580
- end: opt.start + size + newSize,
4588
+ start: opt.firstItemStart + size,
4589
+ end: opt.firstItemStart + size + newSize,
4581
4590
  itemIndex: index,
4582
4591
  size: newSize,
4583
4592
  });
@@ -26245,30 +26254,6 @@ function isAfterLast({ x, y }, { lastCell }) {
26245
26254
  function isBeforeFirst({ x, y }) {
26246
26255
  return x < 0 || y < 0;
26247
26256
  }
26248
- /** Compare cells, only 1 coordinate difference is possible */
26249
- function getDirectionCoordinate(initial, last) {
26250
- const c = ['x', 'y'];
26251
- for (let k of c) {
26252
- if (initial[k] !== last[k]) {
26253
- return { [k]: 1 };
26254
- }
26255
- }
26256
- return null;
26257
- }
26258
- function getLargestAxis(initial, last) {
26259
- const cell = {};
26260
- const c = ['x', 'y'];
26261
- for (let k of c) {
26262
- cell[k] = Math.abs(initial[k] - last[k]);
26263
- }
26264
- if (cell.x > cell.y) {
26265
- return { x: 1 };
26266
- }
26267
- if (cell.y > cell.x) {
26268
- return { y: 1 };
26269
- }
26270
- return null;
26271
- }
26272
26257
  function styleByCellProps(styles) {
26273
26258
  return {
26274
26259
  left: `${styles.left}px`,
@@ -26741,10 +26726,7 @@ const HeaderCellRenderer = ({ data, props }, children) => {
26741
26726
 
26742
26727
  const HeaderRenderer = (p) => {
26743
26728
  var _a, _b, _c, _d, _e, _f;
26744
- const cellClass = {
26745
- [HEADER_CLASS]: true,
26746
- [HEADER_SORTABLE_CLASS]: !!((_a = p.data) === null || _a === void 0 ? void 0 : _a.sortable),
26747
- };
26729
+ const cellClass = Object.assign({ [HEADER_CLASS]: true, [HEADER_SORTABLE_CLASS]: !!((_a = p.data) === null || _a === void 0 ? void 0 : _a.sortable) }, p.cellClass);
26748
26730
  if ((_b = p.data) === null || _b === void 0 ? void 0 : _b.order) {
26749
26731
  cellClass[p.data.order] = true;
26750
26732
  }
@@ -26822,7 +26804,7 @@ const ColumnGroupsRenderer = ({ depth, groups, visibleProps, dimensionCol, canRe
26822
26804
  return groupRow;
26823
26805
  };
26824
26806
 
26825
- const revogrHeaderStyleCss = "@charset \"UTF-8\";.revo-drag-icon{-webkit-mask-image:url(\"data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3Csvg viewBox='0 0 438 383' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Cg%3E%3Cpath d='M421.875,70.40625 C426.432292,70.40625 430.175781,68.9414062 433.105469,66.0117188 C436.035156,63.0820312 437.5,59.3385417 437.5,54.78125 L437.5,54.78125 L437.5,15.71875 C437.5,11.1614583 436.035156,7.41796875 433.105469,4.48828125 C430.175781,1.55859375 426.432292,0.09375 421.875,0.09375 L421.875,0.09375 L15.625,0.09375 C11.0677083,0.09375 7.32421875,1.55859375 4.39453125,4.48828125 C1.46484375,7.41796875 0,11.1614583 0,15.71875 L0,15.71875 L0,54.78125 C0,59.3385417 1.46484375,63.0820312 4.39453125,66.0117188 C7.32421875,68.9414062 11.0677083,70.40625 15.625,70.40625 L15.625,70.40625 L421.875,70.40625 Z M421.875,226.65625 C426.432292,226.65625 430.175781,225.191406 433.105469,222.261719 C436.035156,219.332031 437.5,215.588542 437.5,211.03125 L437.5,211.03125 L437.5,171.96875 C437.5,167.411458 436.035156,163.667969 433.105469,160.738281 C430.175781,157.808594 426.432292,156.34375 421.875,156.34375 L421.875,156.34375 L15.625,156.34375 C11.0677083,156.34375 7.32421875,157.808594 4.39453125,160.738281 C1.46484375,163.667969 0,167.411458 0,171.96875 L0,171.96875 L0,211.03125 C0,215.588542 1.46484375,219.332031 4.39453125,222.261719 C7.32421875,225.191406 11.0677083,226.65625 15.625,226.65625 L15.625,226.65625 L421.875,226.65625 Z M421.875,382.90625 C426.432292,382.90625 430.175781,381.441406 433.105469,378.511719 C436.035156,375.582031 437.5,371.838542 437.5,367.28125 L437.5,367.28125 L437.5,328.21875 C437.5,323.661458 436.035156,319.917969 433.105469,316.988281 C430.175781,314.058594 426.432292,312.59375 421.875,312.59375 L421.875,312.59375 L15.625,312.59375 C11.0677083,312.59375 7.32421875,314.058594 4.39453125,316.988281 C1.46484375,319.917969 0,323.661458 0,328.21875 L0,328.21875 L0,367.28125 C0,371.838542 1.46484375,375.582031 4.39453125,378.511719 C7.32421875,381.441406 11.0677083,382.90625 15.625,382.90625 L15.625,382.90625 L421.875,382.90625 Z'%3E%3C/path%3E%3C/g%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3Csvg viewBox='0 0 438 383' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Cg%3E%3Cpath d='M421.875,70.40625 C426.432292,70.40625 430.175781,68.9414062 433.105469,66.0117188 C436.035156,63.0820312 437.5,59.3385417 437.5,54.78125 L437.5,54.78125 L437.5,15.71875 C437.5,11.1614583 436.035156,7.41796875 433.105469,4.48828125 C430.175781,1.55859375 426.432292,0.09375 421.875,0.09375 L421.875,0.09375 L15.625,0.09375 C11.0677083,0.09375 7.32421875,1.55859375 4.39453125,4.48828125 C1.46484375,7.41796875 0,11.1614583 0,15.71875 L0,15.71875 L0,54.78125 C0,59.3385417 1.46484375,63.0820312 4.39453125,66.0117188 C7.32421875,68.9414062 11.0677083,70.40625 15.625,70.40625 L15.625,70.40625 L421.875,70.40625 Z M421.875,226.65625 C426.432292,226.65625 430.175781,225.191406 433.105469,222.261719 C436.035156,219.332031 437.5,215.588542 437.5,211.03125 L437.5,211.03125 L437.5,171.96875 C437.5,167.411458 436.035156,163.667969 433.105469,160.738281 C430.175781,157.808594 426.432292,156.34375 421.875,156.34375 L421.875,156.34375 L15.625,156.34375 C11.0677083,156.34375 7.32421875,157.808594 4.39453125,160.738281 C1.46484375,163.667969 0,167.411458 0,171.96875 L0,171.96875 L0,211.03125 C0,215.588542 1.46484375,219.332031 4.39453125,222.261719 C7.32421875,225.191406 11.0677083,226.65625 15.625,226.65625 L15.625,226.65625 L421.875,226.65625 Z M421.875,382.90625 C426.432292,382.90625 430.175781,381.441406 433.105469,378.511719 C436.035156,375.582031 437.5,371.838542 437.5,367.28125 L437.5,367.28125 L437.5,328.21875 C437.5,323.661458 436.035156,319.917969 433.105469,316.988281 C430.175781,314.058594 426.432292,312.59375 421.875,312.59375 L421.875,312.59375 L15.625,312.59375 C11.0677083,312.59375 7.32421875,314.058594 4.39453125,316.988281 C1.46484375,319.917969 0,323.661458 0,328.21875 L0,328.21875 L0,367.28125 C0,371.838542 1.46484375,375.582031 4.39453125,378.511719 C7.32421875,381.441406 11.0677083,382.90625 15.625,382.90625 L15.625,382.90625 L421.875,382.90625 Z'%3E%3C/path%3E%3C/g%3E%3C/svg%3E\");width:11px;height:7px;background-size:cover;background-repeat:no-repeat}.revo-alt-icon{-webkit-mask-image:url(\"data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3Csvg viewBox='0 0 384 383' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Cg%3E%3Cpath d='M192.4375,383 C197.424479,383 201.663411,381.254557 205.154297,377.763672 L205.154297,377.763672 L264.25,318.667969 C270.234375,312.683594 271.605794,306.075846 268.364258,298.844727 C265.122721,291.613607 259.51237,287.998047 251.533203,287.998047 L251.533203,287.998047 L213.382812,287.998047 L213.382812,212.445312 L288.935547,212.445312 L288.935547,250.595703 C288.935547,258.57487 292.551107,264.185221 299.782227,267.426758 C307.013346,270.668294 313.621094,269.296875 319.605469,263.3125 L319.605469,263.3125 L378.701172,204.216797 C382.192057,200.725911 383.9375,196.486979 383.9375,191.5 C383.9375,186.513021 382.192057,182.274089 378.701172,178.783203 L378.701172,178.783203 L319.605469,119.6875 C313.621094,114.201823 307.013346,112.955078 299.782227,115.947266 C292.551107,118.939453 288.935547,124.42513 288.935547,132.404297 L288.935547,132.404297 L288.935547,170.554688 L213.382812,170.554688 L213.382812,95.0019531 L251.533203,95.0019531 C259.51237,95.0019531 264.998047,91.3863932 267.990234,84.1552734 C270.982422,76.9241536 269.735677,70.3164062 264.25,64.3320312 L264.25,64.3320312 L205.154297,5.23632812 C201.663411,1.74544271 197.424479,0 192.4375,0 C187.450521,0 183.211589,1.74544271 179.720703,5.23632812 L179.720703,5.23632812 L120.625,64.3320312 C114.640625,70.3164062 113.269206,76.9241536 116.510742,84.1552734 C119.752279,91.3863932 125.36263,95.0019531 133.341797,95.0019531 L133.341797,95.0019531 L171.492188,95.0019531 L171.492188,170.554688 L95.9394531,170.554688 L95.9394531,132.404297 C95.9394531,124.42513 92.3238932,118.814779 85.0927734,115.573242 C77.8616536,112.331706 71.2539062,113.703125 65.2695312,119.6875 L65.2695312,119.6875 L6.17382812,178.783203 C2.68294271,182.274089 0.9375,186.513021 0.9375,191.5 C0.9375,196.486979 2.68294271,200.725911 6.17382812,204.216797 L6.17382812,204.216797 L65.2695312,263.3125 C71.2539062,268.798177 77.8616536,270.044922 85.0927734,267.052734 C92.3238932,264.060547 95.9394531,258.57487 95.9394531,250.595703 L95.9394531,250.595703 L95.9394531,212.445312 L171.492188,212.445312 L171.492188,287.998047 L133.341797,287.998047 C125.36263,287.998047 119.876953,291.613607 116.884766,298.844727 C113.892578,306.075846 115.139323,312.683594 120.625,318.667969 L120.625,318.667969 L179.720703,377.763672 C183.211589,381.254557 187.450521,383 192.4375,383 Z'%3E%3C/path%3E%3C/g%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3Csvg viewBox='0 0 384 383' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Cg%3E%3Cpath d='M192.4375,383 C197.424479,383 201.663411,381.254557 205.154297,377.763672 L205.154297,377.763672 L264.25,318.667969 C270.234375,312.683594 271.605794,306.075846 268.364258,298.844727 C265.122721,291.613607 259.51237,287.998047 251.533203,287.998047 L251.533203,287.998047 L213.382812,287.998047 L213.382812,212.445312 L288.935547,212.445312 L288.935547,250.595703 C288.935547,258.57487 292.551107,264.185221 299.782227,267.426758 C307.013346,270.668294 313.621094,269.296875 319.605469,263.3125 L319.605469,263.3125 L378.701172,204.216797 C382.192057,200.725911 383.9375,196.486979 383.9375,191.5 C383.9375,186.513021 382.192057,182.274089 378.701172,178.783203 L378.701172,178.783203 L319.605469,119.6875 C313.621094,114.201823 307.013346,112.955078 299.782227,115.947266 C292.551107,118.939453 288.935547,124.42513 288.935547,132.404297 L288.935547,132.404297 L288.935547,170.554688 L213.382812,170.554688 L213.382812,95.0019531 L251.533203,95.0019531 C259.51237,95.0019531 264.998047,91.3863932 267.990234,84.1552734 C270.982422,76.9241536 269.735677,70.3164062 264.25,64.3320312 L264.25,64.3320312 L205.154297,5.23632812 C201.663411,1.74544271 197.424479,0 192.4375,0 C187.450521,0 183.211589,1.74544271 179.720703,5.23632812 L179.720703,5.23632812 L120.625,64.3320312 C114.640625,70.3164062 113.269206,76.9241536 116.510742,84.1552734 C119.752279,91.3863932 125.36263,95.0019531 133.341797,95.0019531 L133.341797,95.0019531 L171.492188,95.0019531 L171.492188,170.554688 L95.9394531,170.554688 L95.9394531,132.404297 C95.9394531,124.42513 92.3238932,118.814779 85.0927734,115.573242 C77.8616536,112.331706 71.2539062,113.703125 65.2695312,119.6875 L65.2695312,119.6875 L6.17382812,178.783203 C2.68294271,182.274089 0.9375,186.513021 0.9375,191.5 C0.9375,196.486979 2.68294271,200.725911 6.17382812,204.216797 L6.17382812,204.216797 L65.2695312,263.3125 C71.2539062,268.798177 77.8616536,270.044922 85.0927734,267.052734 C92.3238932,264.060547 95.9394531,258.57487 95.9394531,250.595703 L95.9394531,250.595703 L95.9394531,212.445312 L171.492188,212.445312 L171.492188,287.998047 L133.341797,287.998047 C125.36263,287.998047 119.876953,291.613607 116.884766,298.844727 C113.892578,306.075846 115.139323,312.683594 120.625,318.667969 L120.625,318.667969 L179.720703,377.763672 C183.211589,381.254557 187.450521,383 192.4375,383 Z'%3E%3C/path%3E%3C/g%3E%3C/svg%3E\");width:11px;height:11px;background-size:cover;background-repeat:no-repeat}.arrow-down{position:absolute;right:5px;top:0}.arrow-down svg{width:8px;margin-top:5px;margin-left:5px;opacity:0.4}.cell-value-wrapper{margin-right:10px;overflow:hidden;text-overflow:ellipsis}.revo-button{position:relative;overflow:hidden;color:#fff;background-color:#6200ee;height:34px;line-height:34px;padding:0 15px;outline:0;border:0;border-radius:7px;box-sizing:border-box;cursor:pointer}.revo-button.green{background-color:#2ee072;border:1px solid #20d565}.revo-button.red{background-color:#E0662E;border:1px solid #d55920}.revo-button:disabled,.revo-button[disabled]{cursor:not-allowed !important;filter:opacity(0.35) !important}.revo-button.light{border:2px solid #cedefa;line-height:32px;background:none;color:#4876ca;box-shadow:none}revogr-header{position:relative;z-index:5;display:block}revogr-header .rgHeaderCell{display:flex}revogr-header .rgHeaderCell.align-center{text-align:center}revogr-header .rgHeaderCell.align-left{text-align:left}revogr-header .rgHeaderCell.align-right{text-align:right}revogr-header .rgHeaderCell.sortable{cursor:pointer}revogr-header .rgHeaderCell i.asc:after,revogr-header .rgHeaderCell i.desc:after{font-size:13px}revogr-header .rgHeaderCell i.asc:after{content:\"↑\"}revogr-header .rgHeaderCell i.desc:after{content:\"↓\"}revogr-header .rgHeaderCell,revogr-header .grouped-cell{position:absolute;box-sizing:border-box;height:100%;z-index:1}revogr-header .header-rgRow{display:block;position:relative}revogr-header .header-rgRow.group{z-index:0}revogr-header .group-rgRow{position:relative}revogr-header .rgHeaderCell.active{z-index:10}revogr-header .rgHeaderCell.active .resizable{background-color:deepskyblue}revogr-header .rgHeaderCell .header-content{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex-grow:1}revogr-header .rgHeaderCell .resizable{display:block;position:absolute;z-index:90;touch-action:none;user-select:none}revogr-header .rgHeaderCell .resizable:hover{background-color:deepskyblue}revogr-header .rgHeaderCell>.resizable-r{cursor:ew-resize;width:6px;right:0;top:0;height:100%}revogr-header .rgHeaderCell>.resizable-rb{cursor:se-resize;width:6px;height:6px;right:0;bottom:0}revogr-header .rgHeaderCell>.resizable-b{cursor:s-resize;height:6px;bottom:0;width:100%;left:0}revogr-header .rgHeaderCell>.resizable-lb{cursor:sw-resize;width:6px;height:6px;left:0;bottom:0}revogr-header .rgHeaderCell>.resizable-l{cursor:w-resize;width:6px;left:0;height:100%;top:0}revogr-header .rgHeaderCell>.resizable-lt{cursor:nw-resize;width:6px;height:6px;left:0;top:0}revogr-header .rgHeaderCell>.resizable-t{cursor:n-resize;height:6px;top:0;width:100%;left:0}revogr-header .rgHeaderCell>.resizable-rt{cursor:ne-resize;width:6px;height:6px;right:0;top:0}revogr-header .rv-filter{visibility:hidden}";
26807
+ const revogrHeaderStyleCss = "@charset \"UTF-8\";.revo-drag-icon{-webkit-mask-image:url(\"data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3Csvg viewBox='0 0 438 383' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Cg%3E%3Cpath d='M421.875,70.40625 C426.432292,70.40625 430.175781,68.9414062 433.105469,66.0117188 C436.035156,63.0820312 437.5,59.3385417 437.5,54.78125 L437.5,54.78125 L437.5,15.71875 C437.5,11.1614583 436.035156,7.41796875 433.105469,4.48828125 C430.175781,1.55859375 426.432292,0.09375 421.875,0.09375 L421.875,0.09375 L15.625,0.09375 C11.0677083,0.09375 7.32421875,1.55859375 4.39453125,4.48828125 C1.46484375,7.41796875 0,11.1614583 0,15.71875 L0,15.71875 L0,54.78125 C0,59.3385417 1.46484375,63.0820312 4.39453125,66.0117188 C7.32421875,68.9414062 11.0677083,70.40625 15.625,70.40625 L15.625,70.40625 L421.875,70.40625 Z M421.875,226.65625 C426.432292,226.65625 430.175781,225.191406 433.105469,222.261719 C436.035156,219.332031 437.5,215.588542 437.5,211.03125 L437.5,211.03125 L437.5,171.96875 C437.5,167.411458 436.035156,163.667969 433.105469,160.738281 C430.175781,157.808594 426.432292,156.34375 421.875,156.34375 L421.875,156.34375 L15.625,156.34375 C11.0677083,156.34375 7.32421875,157.808594 4.39453125,160.738281 C1.46484375,163.667969 0,167.411458 0,171.96875 L0,171.96875 L0,211.03125 C0,215.588542 1.46484375,219.332031 4.39453125,222.261719 C7.32421875,225.191406 11.0677083,226.65625 15.625,226.65625 L15.625,226.65625 L421.875,226.65625 Z M421.875,382.90625 C426.432292,382.90625 430.175781,381.441406 433.105469,378.511719 C436.035156,375.582031 437.5,371.838542 437.5,367.28125 L437.5,367.28125 L437.5,328.21875 C437.5,323.661458 436.035156,319.917969 433.105469,316.988281 C430.175781,314.058594 426.432292,312.59375 421.875,312.59375 L421.875,312.59375 L15.625,312.59375 C11.0677083,312.59375 7.32421875,314.058594 4.39453125,316.988281 C1.46484375,319.917969 0,323.661458 0,328.21875 L0,328.21875 L0,367.28125 C0,371.838542 1.46484375,375.582031 4.39453125,378.511719 C7.32421875,381.441406 11.0677083,382.90625 15.625,382.90625 L15.625,382.90625 L421.875,382.90625 Z'%3E%3C/path%3E%3C/g%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3Csvg viewBox='0 0 438 383' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Cg%3E%3Cpath d='M421.875,70.40625 C426.432292,70.40625 430.175781,68.9414062 433.105469,66.0117188 C436.035156,63.0820312 437.5,59.3385417 437.5,54.78125 L437.5,54.78125 L437.5,15.71875 C437.5,11.1614583 436.035156,7.41796875 433.105469,4.48828125 C430.175781,1.55859375 426.432292,0.09375 421.875,0.09375 L421.875,0.09375 L15.625,0.09375 C11.0677083,0.09375 7.32421875,1.55859375 4.39453125,4.48828125 C1.46484375,7.41796875 0,11.1614583 0,15.71875 L0,15.71875 L0,54.78125 C0,59.3385417 1.46484375,63.0820312 4.39453125,66.0117188 C7.32421875,68.9414062 11.0677083,70.40625 15.625,70.40625 L15.625,70.40625 L421.875,70.40625 Z M421.875,226.65625 C426.432292,226.65625 430.175781,225.191406 433.105469,222.261719 C436.035156,219.332031 437.5,215.588542 437.5,211.03125 L437.5,211.03125 L437.5,171.96875 C437.5,167.411458 436.035156,163.667969 433.105469,160.738281 C430.175781,157.808594 426.432292,156.34375 421.875,156.34375 L421.875,156.34375 L15.625,156.34375 C11.0677083,156.34375 7.32421875,157.808594 4.39453125,160.738281 C1.46484375,163.667969 0,167.411458 0,171.96875 L0,171.96875 L0,211.03125 C0,215.588542 1.46484375,219.332031 4.39453125,222.261719 C7.32421875,225.191406 11.0677083,226.65625 15.625,226.65625 L15.625,226.65625 L421.875,226.65625 Z M421.875,382.90625 C426.432292,382.90625 430.175781,381.441406 433.105469,378.511719 C436.035156,375.582031 437.5,371.838542 437.5,367.28125 L437.5,367.28125 L437.5,328.21875 C437.5,323.661458 436.035156,319.917969 433.105469,316.988281 C430.175781,314.058594 426.432292,312.59375 421.875,312.59375 L421.875,312.59375 L15.625,312.59375 C11.0677083,312.59375 7.32421875,314.058594 4.39453125,316.988281 C1.46484375,319.917969 0,323.661458 0,328.21875 L0,328.21875 L0,367.28125 C0,371.838542 1.46484375,375.582031 4.39453125,378.511719 C7.32421875,381.441406 11.0677083,382.90625 15.625,382.90625 L15.625,382.90625 L421.875,382.90625 Z'%3E%3C/path%3E%3C/g%3E%3C/svg%3E\");width:11px;height:7px;background-size:cover;background-repeat:no-repeat}.revo-alt-icon{-webkit-mask-image:url(\"data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3Csvg viewBox='0 0 384 383' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Cg%3E%3Cpath d='M192.4375,383 C197.424479,383 201.663411,381.254557 205.154297,377.763672 L205.154297,377.763672 L264.25,318.667969 C270.234375,312.683594 271.605794,306.075846 268.364258,298.844727 C265.122721,291.613607 259.51237,287.998047 251.533203,287.998047 L251.533203,287.998047 L213.382812,287.998047 L213.382812,212.445312 L288.935547,212.445312 L288.935547,250.595703 C288.935547,258.57487 292.551107,264.185221 299.782227,267.426758 C307.013346,270.668294 313.621094,269.296875 319.605469,263.3125 L319.605469,263.3125 L378.701172,204.216797 C382.192057,200.725911 383.9375,196.486979 383.9375,191.5 C383.9375,186.513021 382.192057,182.274089 378.701172,178.783203 L378.701172,178.783203 L319.605469,119.6875 C313.621094,114.201823 307.013346,112.955078 299.782227,115.947266 C292.551107,118.939453 288.935547,124.42513 288.935547,132.404297 L288.935547,132.404297 L288.935547,170.554688 L213.382812,170.554688 L213.382812,95.0019531 L251.533203,95.0019531 C259.51237,95.0019531 264.998047,91.3863932 267.990234,84.1552734 C270.982422,76.9241536 269.735677,70.3164062 264.25,64.3320312 L264.25,64.3320312 L205.154297,5.23632812 C201.663411,1.74544271 197.424479,0 192.4375,0 C187.450521,0 183.211589,1.74544271 179.720703,5.23632812 L179.720703,5.23632812 L120.625,64.3320312 C114.640625,70.3164062 113.269206,76.9241536 116.510742,84.1552734 C119.752279,91.3863932 125.36263,95.0019531 133.341797,95.0019531 L133.341797,95.0019531 L171.492188,95.0019531 L171.492188,170.554688 L95.9394531,170.554688 L95.9394531,132.404297 C95.9394531,124.42513 92.3238932,118.814779 85.0927734,115.573242 C77.8616536,112.331706 71.2539062,113.703125 65.2695312,119.6875 L65.2695312,119.6875 L6.17382812,178.783203 C2.68294271,182.274089 0.9375,186.513021 0.9375,191.5 C0.9375,196.486979 2.68294271,200.725911 6.17382812,204.216797 L6.17382812,204.216797 L65.2695312,263.3125 C71.2539062,268.798177 77.8616536,270.044922 85.0927734,267.052734 C92.3238932,264.060547 95.9394531,258.57487 95.9394531,250.595703 L95.9394531,250.595703 L95.9394531,212.445312 L171.492188,212.445312 L171.492188,287.998047 L133.341797,287.998047 C125.36263,287.998047 119.876953,291.613607 116.884766,298.844727 C113.892578,306.075846 115.139323,312.683594 120.625,318.667969 L120.625,318.667969 L179.720703,377.763672 C183.211589,381.254557 187.450521,383 192.4375,383 Z'%3E%3C/path%3E%3C/g%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3Csvg viewBox='0 0 384 383' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Cg%3E%3Cpath d='M192.4375,383 C197.424479,383 201.663411,381.254557 205.154297,377.763672 L205.154297,377.763672 L264.25,318.667969 C270.234375,312.683594 271.605794,306.075846 268.364258,298.844727 C265.122721,291.613607 259.51237,287.998047 251.533203,287.998047 L251.533203,287.998047 L213.382812,287.998047 L213.382812,212.445312 L288.935547,212.445312 L288.935547,250.595703 C288.935547,258.57487 292.551107,264.185221 299.782227,267.426758 C307.013346,270.668294 313.621094,269.296875 319.605469,263.3125 L319.605469,263.3125 L378.701172,204.216797 C382.192057,200.725911 383.9375,196.486979 383.9375,191.5 C383.9375,186.513021 382.192057,182.274089 378.701172,178.783203 L378.701172,178.783203 L319.605469,119.6875 C313.621094,114.201823 307.013346,112.955078 299.782227,115.947266 C292.551107,118.939453 288.935547,124.42513 288.935547,132.404297 L288.935547,132.404297 L288.935547,170.554688 L213.382812,170.554688 L213.382812,95.0019531 L251.533203,95.0019531 C259.51237,95.0019531 264.998047,91.3863932 267.990234,84.1552734 C270.982422,76.9241536 269.735677,70.3164062 264.25,64.3320312 L264.25,64.3320312 L205.154297,5.23632812 C201.663411,1.74544271 197.424479,0 192.4375,0 C187.450521,0 183.211589,1.74544271 179.720703,5.23632812 L179.720703,5.23632812 L120.625,64.3320312 C114.640625,70.3164062 113.269206,76.9241536 116.510742,84.1552734 C119.752279,91.3863932 125.36263,95.0019531 133.341797,95.0019531 L133.341797,95.0019531 L171.492188,95.0019531 L171.492188,170.554688 L95.9394531,170.554688 L95.9394531,132.404297 C95.9394531,124.42513 92.3238932,118.814779 85.0927734,115.573242 C77.8616536,112.331706 71.2539062,113.703125 65.2695312,119.6875 L65.2695312,119.6875 L6.17382812,178.783203 C2.68294271,182.274089 0.9375,186.513021 0.9375,191.5 C0.9375,196.486979 2.68294271,200.725911 6.17382812,204.216797 L6.17382812,204.216797 L65.2695312,263.3125 C71.2539062,268.798177 77.8616536,270.044922 85.0927734,267.052734 C92.3238932,264.060547 95.9394531,258.57487 95.9394531,250.595703 L95.9394531,250.595703 L95.9394531,212.445312 L171.492188,212.445312 L171.492188,287.998047 L133.341797,287.998047 C125.36263,287.998047 119.876953,291.613607 116.884766,298.844727 C113.892578,306.075846 115.139323,312.683594 120.625,318.667969 L120.625,318.667969 L179.720703,377.763672 C183.211589,381.254557 187.450521,383 192.4375,383 Z'%3E%3C/path%3E%3C/g%3E%3C/svg%3E\");width:11px;height:11px;background-size:cover;background-repeat:no-repeat}.arrow-down{position:absolute;right:5px;top:0}.arrow-down svg{width:8px;margin-top:5px;margin-left:5px;opacity:0.4}.cell-value-wrapper{margin-right:10px;overflow:hidden;text-overflow:ellipsis}.revo-button{position:relative;overflow:hidden;color:#fff;background-color:#6200ee;height:34px;line-height:34px;padding:0 15px;outline:0;border:0;border-radius:7px;box-sizing:border-box;cursor:pointer}.revo-button.green{background-color:#2ee072;border:1px solid #20d565}.revo-button.red{background-color:#E0662E;border:1px solid #d55920}.revo-button:disabled,.revo-button[disabled]{cursor:not-allowed !important;filter:opacity(0.35) !important}.revo-button.light{border:2px solid #cedefa;line-height:32px;background:none;color:#4876ca;box-shadow:none}revogr-header{position:relative;z-index:5;display:block}revogr-header .rgHeaderCell{display:flex}revogr-header .rgHeaderCell.align-center{text-align:center}revogr-header .rgHeaderCell.align-left{text-align:left}revogr-header .rgHeaderCell.align-right{text-align:right}revogr-header .rgHeaderCell.sortable{cursor:pointer}revogr-header .rgHeaderCell i.asc:after,revogr-header .rgHeaderCell i.desc:after{font-size:13px}revogr-header .rgHeaderCell i.asc:after{content:\"↑\"}revogr-header .rgHeaderCell i.desc:after{content:\"↓\"}revogr-header .rgHeaderCell,revogr-header .grouped-cell{position:absolute;box-sizing:border-box;height:100%;z-index:1}revogr-header .header-rgRow{display:block;position:relative}revogr-header .header-rgRow.group{z-index:0}revogr-header .group-rgRow{position:relative}revogr-header .rgHeaderCell.active{z-index:10}revogr-header .rgHeaderCell.active .resizable{background-color:deepskyblue}revogr-header .rgHeaderCell.last .resizable{display:none}revogr-header .rgHeaderCell .header-content{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex-grow:1}revogr-header .rgHeaderCell .resizable{display:block;position:absolute;z-index:90;touch-action:none;user-select:none}revogr-header .rgHeaderCell .resizable:hover{background-color:deepskyblue}revogr-header .rgHeaderCell>.resizable-r{cursor:ew-resize;width:6px;right:0;top:0;height:100%}revogr-header .rgHeaderCell>.resizable-rb{cursor:se-resize;width:6px;height:6px;right:0;bottom:0}revogr-header .rgHeaderCell>.resizable-b{cursor:s-resize;height:6px;bottom:0;width:100%;left:0}revogr-header .rgHeaderCell>.resizable-lb{cursor:sw-resize;width:6px;height:6px;left:0;bottom:0}revogr-header .rgHeaderCell>.resizable-l{cursor:w-resize;width:6px;left:0;height:100%;top:0}revogr-header .rgHeaderCell>.resizable-lt{cursor:nw-resize;width:6px;height:6px;left:0;top:0}revogr-header .rgHeaderCell>.resizable-t{cursor:n-resize;height:6px;top:0;width:100%;left:0}revogr-header .rgHeaderCell>.resizable-rt{cursor:ne-resize;width:6px;height:6px;right:0;top:0}revogr-header .rv-filter{visibility:hidden}";
26826
26808
 
26827
26809
  const RevogrHeaderComponent = class {
26828
26810
  constructor(hostRef) {
@@ -26854,10 +26836,13 @@ const RevogrHeaderComponent = class {
26854
26836
  const range = (_a = this.selectionStore) === null || _a === void 0 ? void 0 : _a.get('range');
26855
26837
  const cells = [];
26856
26838
  const visibleProps = {};
26839
+ const lastIndex = this.colData.length - 1;
26857
26840
  // render header columns
26858
26841
  for (let rgCol of cols) {
26859
26842
  const colData = this.colData[rgCol.itemIndex];
26860
- cells.push(h(HeaderRenderer, { range: range, column: rgCol, data: colData, canFilter: !!this.columnFilter, canResize: this.canResize, onResize: e => this.onResize(e, rgCol.itemIndex), onDoubleClick: e => this.headerdblClick.emit(e), onClick: e => this.initialHeaderClick.emit(e) }));
26843
+ cells.push(h(HeaderRenderer, { cellClass: {
26844
+ last: lastIndex === rgCol.itemIndex
26845
+ }, range: range, column: rgCol, data: colData, canFilter: !!this.columnFilter, canResize: this.canResize, onResize: e => this.onResize(e, rgCol.itemIndex), onDoubleClick: e => this.headerdblClick.emit(e), onClick: e => this.initialHeaderClick.emit(e) }));
26861
26846
  visibleProps[colData === null || colData === void 0 ? void 0 : colData.prop] = rgCol.itemIndex;
26862
26847
  }
26863
26848
  return [
@@ -27317,35 +27302,28 @@ class AutoFillService {
27317
27302
  return;
27318
27303
  }
27319
27304
  let current = getCurrentCell({ x, y }, data);
27320
- let direction;
27321
- if (this.autoFillLast) {
27322
- direction = getDirectionCoordinate(this.autoFillStart, this.autoFillLast);
27323
- }
27324
27305
  // first time or direction equal to start(same as first time)
27325
- if (!this.autoFillLast || !direction) {
27326
- direction = getLargestAxis(this.autoFillStart, current);
27306
+ if (!this.autoFillLast) {
27327
27307
  if (!this.autoFillLast) {
27328
27308
  this.autoFillLast = this.autoFillStart;
27329
27309
  }
27330
27310
  }
27331
- // nothing changed
27332
- if (!direction) {
27333
- return;
27334
- }
27335
- each(direction, (v, k) => {
27336
- if (v) {
27337
- current = Object.assign(Object.assign({}, this.autoFillLast), { [k]: current[k] });
27338
- }
27339
- });
27340
- // check if not the latest
27311
+ // check if not the latest, if latest - do nothing
27341
27312
  if (isAfterLast(current, data)) {
27342
27313
  return;
27343
27314
  }
27344
27315
  this.autoFillLast = current;
27345
- this.sv.setTempRange({
27346
- area: getRange(this.autoFillInitial, this.autoFillLast),
27347
- type: this.autoFillType,
27348
- });
27316
+ const isSame = current.x === this.autoFillInitial.x && current.y === this.autoFillInitial.y;
27317
+ // if same as initial - clear
27318
+ if (isSame) {
27319
+ this.sv.setTempRange(null);
27320
+ }
27321
+ else {
27322
+ this.sv.setTempRange({
27323
+ area: getRange(this.autoFillInitial, this.autoFillLast),
27324
+ type: this.autoFillType,
27325
+ });
27326
+ }
27349
27327
  }
27350
27328
  /**
27351
27329
  * Range selection started