canvas-datagrid 0.3.12 → 0.3.16

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.
@@ -1016,7 +1016,7 @@ __webpack_require__.r(__webpack_exports__);
1016
1016
 
1017
1017
  /* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(self) {
1018
1018
  self.defaults = {
1019
- attributes: [['allowColumnReordering', true], ['allowColumnResize', true], ['allowColumnResizeFromCell', false], ['allowFreezingRows', false], ['allowFreezingColumns', false], ['allowMovingSelection', true], ['allowRowHeaderResize', true], ['allowRowReordering', false], ['allowRowResize', true], ['allowRowResizeFromCell', false], ['allowSorting', true], ['autoGenerateSchema', false], ['autoResizeColumns', false], ['autoResizeRows', false], ['autoScrollOnMousemove', false], ['autoScrollMargin', 5], ['blanksText', '(Blanks)'], ['borderDragBehavior', 'none'], ['borderResizeZone', 10], ['clearSettingsOptionText', 'Clear saved settings'], ['columnHeaderClickBehavior', 'sort'], ['columnSelectorHiddenText', '   '], ['columnSelectorText', 'Add/Remove columns'], ['columnSelectorVisibleText', "\u2713"], ['contextHoverScrollAmount', 2], ['contextHoverScrollRateMs', 5], ['copyHeadersOnSelectAll', true], ['copyText', 'Copy'], ['debug', false], ['editable', true], ['ellipsisText', '...'], ['filterOptionText', 'Filter %s'], ['filterTextPrefix', '(filtered) '], ['filterFrozenRows', true], ['globalRowResize', false], ['hideColumnText', 'Hide %s'], ['hoverMode', 'cell'], ['maxAutoCompleteItems', 200], ['multiLine', false], ['name', ''], ['pageUpDownOverlap', 1], ['pasteText', 'Paste'], ['persistantSelectionMode', false], ['removeFilterOptionText', 'Remove filter on %s'], ['reorderDeadZone', 3], ['resizeScrollZone', 20], ['rowGrabZoneSize', 5], ['saveAppearance', true], ['scrollAnimationPPSThreshold', 0.75], ['scrollPointerLock', false], ['scrollRepeatRate', 75], ['selectionFollowsActiveCell', false], ['selectionHandleBehavior', 'none'], ['selectionMode', 'cell'], ['selectionScrollIncrement', 20], ['selectionScrollZone', 20], ['showClearSettingsOption', true], ['showColumnHeaders', true], ['showColumnSelector', true], ['showCopy', false], ['showFilter', true], ['showNewRow', false], ['showOrderByOption', true], ['showOrderByOptionTextAsc', 'Order by %s ascending'], ['showOrderByOptionTextDesc', 'Order by %s descending'], ['showPaste', false], ['showPerformance', false], ['showRowHeaders', true], ['showRowNumbers', true], ['showRowNumberGaps', true], ['singleSelectionMode', false], ['snapToRow', false], ['sortFrozenRows', true], ['touchContextMenuTimeMs', 800], ['touchDeadZone', 3], ['touchEasingMethod', 'easeOutQuad'], ['touchReleaseAcceleration', 1000], ['touchReleaseAnimationDurationMs', 2000], ['touchScrollZone', 20], ['touchSelectHandleZone', 20], ['touchZoomSensitivity', 0.005], ['touchZoomMin', 0.5], ['touchZoomMax', 1.75], ['maxPixelRatio', 2], ['tree', false], ['treeHorizontalScroll', false]],
1019
+ attributes: [['allowColumnReordering', true], ['allowColumnResize', true], ['allowColumnResizeFromCell', false], ['allowFreezingRows', false], ['allowFreezingColumns', false], ['allowMovingSelection', true], ['allowRowHeaderResize', true], ['allowRowReordering', false], ['allowRowResize', true], ['allowRowResizeFromCell', false], ['allowSorting', true], ['autoGenerateSchema', false], ['autoResizeColumns', false], ['autoResizeRows', false], ['autoScrollOnMousemove', false], ['autoScrollMargin', 5], ['blanksText', '(Blanks)'], ['borderDragBehavior', 'none'], ['borderResizeZone', 10], ['clearSettingsOptionText', 'Clear saved settings'], ['columnHeaderClickBehavior', 'sort'], ['columnSelectorHiddenText', '   '], ['columnSelectorText', 'Add/Remove columns'], ['columnSelectorVisibleText', "\u2713"], ['contextHoverScrollAmount', 2], ['contextHoverScrollRateMs', 5], ['copyHeadersOnSelectAll', true], ['copyText', 'Copy'], ['debug', false], ['editable', true], ['ellipsisText', '...'], ['filterOptionText', 'Filter %s'], ['filterTextPrefix', '(filtered) '], ['filterFrozenRows', true], ['globalRowResize', false], ['hideColumnText', 'Hide %s'], ['hoverMode', 'cell'], ['keepFocusOnMouseOut', false], ['maxAutoCompleteItems', 200], ['multiLine', false], ['name', ''], ['pageUpDownOverlap', 1], ['pasteText', 'Paste'], ['persistantSelectionMode', false], ['removeFilterOptionText', 'Remove filter on %s'], ['reorderDeadZone', 3], ['resizeScrollZone', 20], ['rowGrabZoneSize', 5], ['saveAppearance', true], ['scrollAnimationPPSThreshold', 0.75], ['scrollPointerLock', false], ['scrollRepeatRate', 75], ['selectionFollowsActiveCell', false], ['selectionHandleBehavior', 'none'], ['selectionMode', 'cell'], ['selectionScrollIncrement', 20], ['selectionScrollZone', 20], ['showClearSettingsOption', true], ['showColumnHeaders', true], ['showColumnSelector', true], ['showCopy', false], ['showFilter', true], ['showNewRow', false], ['showOrderByOption', true], ['showOrderByOptionTextAsc', 'Order by %s ascending'], ['showOrderByOptionTextDesc', 'Order by %s descending'], ['showPaste', false], ['showPerformance', false], ['showRowHeaders', true], ['showRowNumbers', true], ['showRowNumberGaps', true], ['singleSelectionMode', false], ['snapToRow', false], ['sortFrozenRows', true], ['touchContextMenuTimeMs', 800], ['touchDeadZone', 3], ['touchEasingMethod', 'easeOutQuad'], ['touchReleaseAcceleration', 1000], ['touchReleaseAnimationDurationMs', 2000], ['touchScrollZone', 20], ['touchSelectHandleZone', 20], ['touchZoomSensitivity', 0.005], ['touchZoomMin', 0.5], ['touchZoomMax', 1.75], ['maxPixelRatio', 2], ['tree', false], ['treeHorizontalScroll', false]],
1020
1020
  styles: [['activeCellBackgroundColor', 'rgba(255, 255, 255, 1)'], ['activeCellBorderColor', 'rgba(110, 168, 255, 1)'], ['activeCellBorderWidth', 1], ['activeCellColor', 'rgba(0, 0, 0, 1)'], ['activeCellFont', '16px sans-serif'], ['activeCellHoverBackgroundColor', 'rgba(255, 255, 255, 1)'], ['activeCellHorizontalAlignment', 'left'], ['activeCellHoverColor', 'rgba(0, 0, 0, 1)'], ['activeCellOverlayBorderColor', 'rgba(66, 133, 244, 1)'], ['activeCellOverlayBorderWidth', 1], ['activeCellPaddingBottom', 5], ['activeCellPaddingLeft', 5], ['activeCellPaddingRight', 5], ['activeCellPaddingTop', 5], ['activeCellSelectedBackgroundColor', 'rgba(236, 243, 255, 1)'], ['activeCellSelectedColor', 'rgba(0, 0, 0, 1)'], ['activeCellVerticalAlignment', 'center'], ['activeColumnHeaderCellBackgroundColor', 'rgba(225, 225, 225, 1)'], ['activeColumnHeaderCellColor', 'rgba(0, 0, 0, 1)'], ['activeRowHeaderCellBackgroundColor', 'rgba(225, 225, 225, 1)'], ['activeRowHeaderCellColor', 'rgba(0, 0, 0, 1)'], ['autocompleteBottomMargin', 60], ['autosizeHeaderCellPadding', 8], ['autosizePadding', 5], ['cellAutoResizePadding', 13], ['cellBackgroundColor', 'rgba(255, 255, 255, 1)'], ['cellBorderColor', 'rgba(195, 199, 202, 1)'], ['cellBorderWidth', 1], ['cellColor', 'rgba(0, 0, 0, 1)'], ['cellFont', '16px sans-serif'], ['cellGridHeight', 250], ['cellHeight', 24], ['cellHeightWithChildGrid', 150], ['cellHorizontalAlignment', 'left'], ['cellHoverBackgroundColor', 'rgba(255, 255, 255, 1)'], ['cellHoverColor', 'rgba(0, 0, 0, 1)'], ['cellPaddingBottom', 5], ['cellPaddingLeft', 5], ['cellPaddingRight', 5], ['cellPaddingTop', 5], ['cellSelectedBackgroundColor', 'rgba(236, 243, 255, 1)'], ['cellSelectedColor', 'rgba(0, 0, 0, 1)'], ['cellVerticalAlignment', 'center'], ['cellWidth', 250], ['cellWidthWithChildGrid', 250], ['cellWhiteSpace', 'nowrap'], ['cellLineHeight', 1], ['cellLineSpacing', 3], ['childContextMenuArrowColor', 'rgba(43, 48, 43, 1)'], ['childContextMenuArrowHTML', '►'], ['childContextMenuMarginLeft', -11], ['childContextMenuMarginTop', -6], ['columnHeaderCellBackgroundColor', 'rgba(240, 240, 240, 1)'], ['columnHeaderCellBorderColor', 'rgba(172, 172, 172, 1)'], ['columnHeaderCellBorderWidth', 1], ['columnHeaderCellCapBackgroundColor', 'rgba(240, 240, 240, 1)'], ['columnHeaderCellCapBorderColor', 'rgba(172, 172, 172, 1)'], ['columnHeaderCellCapBorderWidth', 1], ['columnHeaderCellColor', 'rgba(50, 50, 50, 1)'], ['columnHeaderCellFont', '16px sans-serif'], ['columnHeaderCellHeight', 25], ['columnHeaderCellHorizontalAlignment', 'left'], ['columnHeaderCellHoverBackgroundColor', 'rgba(235, 235, 235, 1)'], ['columnHeaderCellHoverColor', 'rgba(0, 0, 0, 1)'], ['columnHeaderCellPaddingBottom', 5], ['columnHeaderCellPaddingLeft', 5], ['columnHeaderCellPaddingRight', 5], ['columnHeaderCellPaddingTop', 5], ['columnHeaderCellVerticalAlignment', 'center'], ['columnHeaderOrderByArrowBorderColor', 'rgba(195, 199, 202, 1)'], ['columnHeaderOrderByArrowBorderWidth', 1], ['columnHeaderOrderByArrowColor', 'rgba(155, 155, 155, 1)'], ['columnHeaderOrderByArrowHeight', 8], ['columnHeaderOrderByArrowMarginLeft', 0], ['columnHeaderOrderByArrowMarginRight', 5], ['columnHeaderOrderByArrowMarginTop', 6], ['columnHeaderOrderByArrowWidth', 13], ['contextFilterButtonBorder', 'solid 1px rgba(158, 163, 169, 1)'], ['contextFilterButtonBorderRadius', '3px'], ['contextFilterButtonHTML', '▼'], ['contextFilterInputBackground', 'rgba(255,255,255,1)'], ['contextFilterInputBorder', 'solid 1px rgba(158, 163, 169, 1)'], ['contextFilterInputBorderRadius', '0'], ['contextFilterInputColor', 'rgba(0,0,0,1)'], ['contextFilterInputFontFamily', 'sans-serif'], ['contextFilterInputFontSize', '14px'], ['contextFilterInvalidRegExpBackground', 'rgba(180, 6, 1, 1)'], ['contextFilterInvalidRegExpColor', 'rgba(255, 255, 255, 1)'], ['contextMenuArrowColor', 'rgba(43, 48, 43, 1)'], ['contextMenuArrowDownHTML', '▼'], ['contextMenuArrowUpHTML', '▲'], ['contextMenuBackground', 'rgba(240, 240, 240, 1)'], ['contextMenuBorder', 'solid 1px rgba(158, 163, 169, 1)'], ['contextMenuBorderRadius', '3px'], ['contextMenuChildArrowFontSize', '12px'], ['contextMenuColor', 'rgba(43, 48, 43, 1)'], ['contextMenuCursor', 'default'], ['contextMenuFilterButtonFontFamily', 'sans-serif'], ['contextMenuFilterButtonFontSize', '10px'], ['contextMenuFilterInvalidExpresion', 'rgba(237, 155, 156, 1)'], ['contextMenuFontFamily', 'sans-serif'], ['contextMenuFontSize', '16px'], ['contextMenuHoverBackground', 'rgba(182, 205, 250, 1)'], ['contextMenuHoverColor', 'rgba(43, 48, 153, 1)'], ['contextMenuItemBorderRadius', '3px'], ['contextMenuItemMargin', '2px'], ['contextMenuLabelDisplay', 'inline-block'], ['contextMenuLabelMargin', '0 3px 0 0'], ['contextMenuLabelMaxWidth', '700px'], ['contextMenuLabelMinWidth', '75px'], ['contextMenuMarginLeft', 3], ['contextMenuMarginTop', -3], ['contextMenuOpacity', '0.98'], ['contextMenuPadding', '2px'], ['contextMenuWindowMargin', 30], ['contextMenuZIndex', 10000], ['cornerCellBackgroundColor', 'rgba(240, 240, 240, 1)'], ['cornerCellBorderColor', 'rgba(202, 202, 202, 1)'], ['debugBackgroundColor', 'rgba(0, 0, 0, .0)'], ['debugColor', 'rgba(255, 15, 24, 1)'], ['debugEntitiesColor', 'rgba(76, 231, 239, 1.00)'], ['debugFont', '11px sans-serif'], ['debugPerfChartBackground', 'rgba(29, 25, 26, 1.00)'], ['debugPerfChartTextColor', 'rgba(255, 255, 255, 0.8)'], ['debugPerformanceColor', 'rgba(252, 255, 37, 1.00)'], ['debugScrollHeightColor', 'rgba(248, 33, 103, 1.00)'], ['debugScrollWidthColor', 'rgba(66, 255, 27, 1.00)'], ['debugTouchPPSXColor', 'rgba(246, 102, 24, 1.00)'], ['debugTouchPPSYColor', 'rgba(186, 0, 255, 1.00)'], ['display', 'inline-block'], ['editCellBackgroundColor', 'white'], ['editCellBorder', 'solid 1px rgba(110, 168, 255, 1)'], ['editCellBoxShadow', '0 2px 5px rgba(0,0,0,0.4)'], ['editCellColor', 'black'], ['editCellFontFamily', 'sans-serif'], ['editCellFontSize', '16px'], ['editCellPaddingLeft', 4], ['editCellZIndex', 10000], ['frozenMarkerHoverColor', 'rgba(236, 243, 255, 1)'], ['frozenMarkerHoverBorderColor', 'rgba(110, 168, 255, 1)'], ['frozenMarkerActiveColor', 'rgba(236, 243, 255, 1)'], ['frozenMarkerActiveBorderColor', 'rgba(110, 168, 255, 1)'], ['frozenMarkerColor', 'rgba(222, 222, 222, 1)'], ['frozenMarkerBorderColor', 'rgba(168, 168, 168, 1)'], ['frozenMarkerBorderWidth', 1], ['frozenMarkerWidth', 2], ['gridBackgroundColor', 'rgba(240, 240, 240, 1)'], ['gridBorderCollapse', 'collapse'], ['gridBorderColor', 'rgba(202, 202, 202, 1)'], ['gridBorderWidth', 1], ['height', 'auto'], ['maxHeight', 'inherit'], ['maxWidth', 'inherit'], ['minColumnWidth', 45], ['minHeight', 'inherit'], ['minRowHeight', 24], ['minWidth', 'inherit'], ['mobileContextMenuMargin', 10], ['mobileEditInputHeight', 30], ['mobileEditFontFamily', 'sans-serif'], ['mobileEditFontSize', '16px'], ['moveOverlayBorderWidth', 1], ['moveOverlayBorderColor', 'rgba(66, 133, 244, 1)'], ['moveOverlayBorderSegments', '12, 7'], ['name', 'default'], ['overflowY', 'auto'], ['overflowX', 'auto'], ['reorderMarkerBackgroundColor', 'rgba(0, 0, 0, 0.1)'], ['reorderMarkerBorderColor', 'rgba(0, 0, 0, 0.2)'], ['reorderMarkerBorderWidth', 1.25], ['reorderMarkerIndexBorderColor', 'rgba(66, 133, 244, 1)'], ['reorderMarkerIndexBorderWidth', 2.75], ['rowHeaderCellBackgroundColor', 'rgba(240, 240, 240, 1)'], ['rowHeaderCellBorderColor', 'rgba(200, 200, 200, 1)'], ['rowHeaderCellBorderWidth', 1], ['rowHeaderCellColor', 'rgba(50, 50, 50, 1)'], ['rowHeaderCellFont', '16px sans-serif'], ['rowHeaderCellHeight', 25], ['rowHeaderCellHorizontalAlignment', 'left'], ['rowHeaderCellHoverBackgroundColor', 'rgba(235, 235, 235, 1)'], ['rowHeaderCellHoverColor', 'rgba(0, 0, 0, 1)'], ['rowHeaderCellPaddingBottom', 5], ['rowHeaderCellPaddingLeft', 5], ['rowHeaderCellPaddingRight', 5], ['rowHeaderCellPaddingTop', 5], ['rowHeaderCellRowNumberGapHeight', 5], ['rowHeaderCellRowNumberGapColor', 'rgba(50, 50, 50, 1)'], ['rowHeaderCellSelectedBackgroundColor', 'rgba(217, 217, 217, 1)'], ['rowHeaderCellSelectedColor', 'rgba(50, 50, 50, 1)'], ['rowHeaderCellVerticalAlignment', 'center'], ['rowHeaderCellWidth', 57], ['scrollBarActiveColor', 'rgba(125, 125, 125, 1)'], ['scrollBarBackgroundColor', 'rgba(240, 240, 240, 1)'], ['scrollBarBorderColor', 'rgba(202, 202, 202, 1)'], ['scrollBarBorderWidth', 0.5], ['scrollBarBoxBorderRadius', 4.125], ['scrollBarBoxColor', 'rgba(192, 192, 192, 1)'], ['scrollBarBoxMargin', 2], ['scrollBarBoxMinSize', 15], ['scrollBarBoxWidth', 8], ['scrollBarCornerBackgroundColor', 'rgba(240, 240, 240, 1)'], ['scrollBarCornerBorderColor', 'rgba(202, 202, 202, 1)'], ['scrollBarWidth', 11], ['selectionHandleBorderColor', 'rgba(255, 255, 255, 1)'], ['selectionHandleBorderWidth', 1.5], ['selectionHandleColor', 'rgba(66, 133, 244, 1)'], ['selectionHandleSize', 8], ['selectionHandleType', 'square'], ['selectionOverlayBorderColor', 'rgba(66, 133, 244, 1)'], ['selectionOverlayBorderWidth', 1], ['treeArrowBorderColor', 'rgba(195, 199, 202, 1)'], ['treeArrowBorderWidth', 1], ['treeArrowClickRadius', 5], ['treeArrowColor', 'rgba(155, 155, 155, 1)'], ['treeArrowHeight', 8], ['treeArrowMarginLeft', 0], ['treeArrowMarginRight', 5], ['treeArrowMarginTop', 6], ['treeArrowWidth', 13], ['treeGridHeight', 250], ['width', 'auto']]
1021
1021
  };
1022
1022
  }
@@ -1892,15 +1892,15 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len
1892
1892
  y = y + mt;
1893
1893
 
1894
1894
  if (self.orderDirection === 'asc') {
1895
- self.ctx.moveTo(x, y);
1896
- self.ctx.lineTo(x + aw, y);
1897
- self.ctx.lineTo(x + aw * 0.5, y + ah);
1898
- self.ctx.moveTo(x, y);
1899
- } else {
1900
1895
  self.ctx.lineTo(x, y + ah);
1901
1896
  self.ctx.lineTo(x + aw, y + ah);
1902
1897
  self.ctx.lineTo(x + aw * 0.5, y);
1903
1898
  self.ctx.lineTo(x, y + ah);
1899
+ } else {
1900
+ self.ctx.moveTo(x, y);
1901
+ self.ctx.lineTo(x + aw, y);
1902
+ self.ctx.lineTo(x + aw * 0.5, y + ah);
1903
+ self.ctx.moveTo(x, y);
1904
1904
  }
1905
1905
 
1906
1906
  self.ctx.stroke();
@@ -2611,7 +2611,7 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len
2611
2611
  viewRowIndex: rowOrderIndex,
2612
2612
  viewColumnIndex: columnOrderIndex,
2613
2613
  boundRowIndex: self.getBoundRowIndexFromViewRowIndex(rowOrderIndex),
2614
- boundColumnIndex: columnOrderIndex,
2614
+ boundColumnIndex: self.getBoundColumnIndexFromViewColumnIndex(columnOrderIndex),
2615
2615
  sortColumnIndex: headerIndex,
2616
2616
  sortRowIndex: rowIndex,
2617
2617
  isGrid: isGrid,
@@ -3515,10 +3515,10 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len
3515
3515
 
3516
3516
  /***/ }),
3517
3517
 
3518
- /***/ "./lib/events.js":
3519
- /*!***********************!*\
3520
- !*** ./lib/events.js ***!
3521
- \***********************/
3518
+ /***/ "./lib/events/index.js":
3519
+ /*!*****************************!*\
3520
+ !*** ./lib/events/index.js ***!
3521
+ \*****************************/
3522
3522
  /*! namespace exports */
3523
3523
  /*! export default [provided] [no usage info] [missing usage info prevents renaming] */
3524
3524
  /*! other exports [not provided] [no usage info] */
@@ -3532,18 +3532,28 @@ __webpack_require__.r(__webpack_exports__);
3532
3532
  /* harmony export */ });
3533
3533
  /* harmony import */ var is_printable_key_event__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! is-printable-key-event */ "./node_modules/is-printable-key-event/dist/index.js");
3534
3534
  /* harmony import */ var is_printable_key_event__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(is_printable_key_event__WEBPACK_IMPORTED_MODULE_0__);
3535
+ /* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util */ "./lib/events/util.js");
3535
3536
  /*jslint browser: true, unparam: true, todo: true, plusplus: true*/
3536
3537
 
3537
3538
  /*globals define: true, MutationObserver: false, requestAnimationFrame: false, performance: false, btoa: false*/
3538
3539
 
3539
3540
 
3540
- function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
3541
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
3542
+
3543
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
3544
+
3545
+ function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
3546
+
3547
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
3548
+
3549
+ function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e2) { throw _e2; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e3) { didErr = true; err = _e3; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
3541
3550
 
3542
3551
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
3543
3552
 
3544
3553
  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
3545
3554
 
3546
3555
 
3556
+
3547
3557
  /* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(self) {
3548
3558
  var wheeling;
3549
3559
 
@@ -4031,6 +4041,7 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len
4031
4041
  var event = {
4032
4042
  selections: self.selections,
4033
4043
  selectedData: self.getSelectedData(),
4044
+ selectedCells: self.getSelectedCells(),
4034
4045
  selectionBounds: self.getSelectionBounds()
4035
4046
  };
4036
4047
  self.dispatchEvent('selectionchanged', event);
@@ -4089,7 +4100,8 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len
4089
4100
 
4090
4101
  ev = {
4091
4102
  selections: self.selections,
4092
- selectionBounds: self.getSelectionBounds()
4103
+ selectionBounds: self.getSelectionBounds(),
4104
+ selectedCells: self.getSelectedCells()
4093
4105
  };
4094
4106
  Object.defineProperty(ev, 'selectedData', {
4095
4107
  get: function get() {
@@ -4353,6 +4365,7 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len
4353
4365
  self.stopDragReorder = function (e) {
4354
4366
  var oIndex,
4355
4367
  tIndex,
4368
+ odata,
4356
4369
  cr = {
4357
4370
  'row-reorder': self.orders.rows,
4358
4371
  'column-reorder': self.orders.columns
@@ -4373,13 +4386,16 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len
4373
4386
  self.ignoreNextClick = true;
4374
4387
  oIndex = cr[self.dragMode].indexOf(self.reorderObject[i]);
4375
4388
  tIndex = cr[self.dragMode].indexOf(self.reorderTarget[i]);
4376
- cr[self.dragMode].splice(oIndex, 1);
4377
- cr[self.dragMode].splice(tIndex, 0, self.reorderObject[i]);
4378
4389
 
4379
4390
  if (self.dragMode === 'column-reorder') {
4391
+ cr[self.dragMode].splice(oIndex, 1);
4392
+ cr[self.dragMode].splice(tIndex, 0, self.reorderObject[i]);
4380
4393
  self.orders.columns = cr[self.dragMode];
4381
4394
  } else {
4382
- self.orders.rows = cr[self.dragMode];
4395
+ // self.orders.rows = cr[self.dragMode];
4396
+ odata = self.viewData[oIndex];
4397
+ self.viewData[oIndex] = self.viewData[tIndex];
4398
+ self.viewData[tIndex] = odata;
4383
4399
  }
4384
4400
 
4385
4401
  self.resize();
@@ -4605,6 +4621,12 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len
4605
4621
 
4606
4622
  if (['row-reorder', 'column-reorder'].indexOf(self.dragMode) !== -1) {
4607
4623
  self.draggingItem = self.dragStartObject;
4624
+
4625
+ if (self.dragMode === 'column-reorder' && self.attributes.columnHeaderClickBehavior === 'select') {
4626
+ self.selectColumn(self.currentCell.header.index, ctrl, e.shiftKey);
4627
+ self.draw();
4628
+ }
4629
+
4608
4630
  document.body.addEventListener('mousemove', self.dragReorder, false);
4609
4631
  document.body.addEventListener('mouseup', self.stopDragReorder, false);
4610
4632
  return;
@@ -4613,9 +4635,16 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len
4613
4635
 
4614
4636
  self.mouseup = function (e) {
4615
4637
  clearTimeout(self.scrollTimer);
4638
+ var ctrl = e.ctrlKey || e.metaKey;
4616
4639
  self.cellBoundaryCrossed = true;
4617
4640
  self.rowBoundaryCrossed = true;
4618
4641
  self.columnBoundaryCrossed = true;
4642
+
4643
+ if (self.draggingItem) {
4644
+ self.selectColumn(self.currentCell.header.index, ctrl, e.shiftKey);
4645
+ self.draw();
4646
+ }
4647
+
4619
4648
  self.selecting = undefined;
4620
4649
  self.draggingItem = undefined;
4621
4650
  self.dragStartObject = undefined;
@@ -4700,7 +4729,7 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len
4700
4729
  return;
4701
4730
  }
4702
4731
 
4703
- if (!self.hasFocus) {
4732
+ if (!self.attributes.keepFocusOnMouseOut && !self.hasFocus) {
4704
4733
  return;
4705
4734
  } // If a user starts typing content, switch to "Enter" mode
4706
4735
 
@@ -4856,7 +4885,8 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len
4856
4885
  ev = {
4857
4886
  selectedData: self.getSelectedData(),
4858
4887
  selections: self.selections,
4859
- selectionBounds: self.getSelectionBounds()
4888
+ selectionBounds: self.getSelectionBounds(),
4889
+ selectedCells: self.getSelectedCells()
4860
4890
  };
4861
4891
  Object.defineProperty(ev, 'selectedData', {
4862
4892
  get: function get() {
@@ -4961,64 +4991,17 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len
4961
4991
  };
4962
4992
 
4963
4993
  self.pasteData = function (pasteValue, mimeType, startRowIndex, startColIndex) {
4964
- var schema = self.getSchema();
4965
-
4966
- var isSupportedHtmlTable = function isSupportedHtmlTable(htmlString) {
4967
- return /(?:^(<meta[^>]+>)?<table.*?>)|(?:<!--StartFragment-->\s*<table.*?>)/.test(htmlString);
4968
- }; // TODO: support pasting tables from Excel
4969
-
4970
-
4971
- if (mimeType === 'text/html' && isSupportedHtmlTable(pasteValue) === false) {
4994
+ if (mimeType === 'text/html' && !(0,_util__WEBPACK_IMPORTED_MODULE_1__.isSupportedHtml)(pasteValue)) {
4972
4995
  console.warn('Unrecognized HTML format. HTML must be a simple table, e.g.: <table><tr><td>data</td></tr></table>.');
4973
4996
  console.warn('Data with the mime type text/html not in this format will not be imported as row data.');
4974
4997
  return;
4975
4998
  }
4976
4999
 
4977
- function parseData(data, mimeType) {
4978
- // TODO: use DOMParser
4979
- if (mimeType === 'text/html') {
4980
- var doc = new DOMParser().parseFromString(data, 'text/html');
4981
- var trs = doc.querySelectorAll('table tr');
4982
- var _rows = [];
4983
- trs.forEach(function (tr) {
4984
- var row = [];
4985
- tr.childNodes.forEach(function (td) {
4986
- if (td.nodeName === '#text') return;
4987
- var col = {
4988
- // style: {}, // keep style if need
4989
- value: []
4990
- };
4991
- td.childNodes.forEach(function (ele) {
4992
- col.value.push({
4993
- // style: {}, // keep style if need
4994
- value: ele.nodeType === 1 ? ele.innerText : ele.data
4995
- });
4996
- });
4997
- row.push(col);
4998
- });
4999
-
5000
- _rows.push(row);
5001
- });
5002
- return _rows;
5003
- } // Default data format is string, so split on new line,
5004
- // and then enclose in an array (a row with one cell):
5005
-
5006
-
5007
- return data.split('\n').map(function (item) {
5008
- return item.split('\t').map(function (value) {
5009
- return {
5010
- value: [{
5011
- value: value
5012
- }]
5013
- };
5014
- });
5015
- });
5016
- }
5017
-
5018
- var rows = parseData(pasteValue, mimeType); // selected cell. This mimics Excel's paste functionality, and works
5000
+ var schema = self.getSchema();
5001
+ var rows = (0,_util__WEBPACK_IMPORTED_MODULE_1__.parseData)(pasteValue, mimeType); // selected cell. This mimics Excel's paste functionality, and works
5019
5002
  // as a poor-man's fill-down.
5020
5003
 
5021
- if (rows.length === 1) {
5004
+ if (rows.length === 1 && rows[0].length === 1) {
5022
5005
  var cellData = rows[0][0].value.map(function (item) {
5023
5006
  return item.value;
5024
5007
  }).join();
@@ -5075,7 +5058,7 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len
5075
5058
  self.selections.forEach(function (row, rowIndex) {
5076
5059
  if (rowIndex === undefined) return;
5077
5060
  row.forEach(function (columnIndex) {
5078
- affectedCells.push([rowIndex, columnIndex, self.getVisibleCellByIndex(columnIndex, rowIndex)]);
5061
+ affectedCells.push([rowIndex, columnIndex, self.getBoundRowIndexFromViewRowIndex(rowIndex), self.getBoundColumnIndexFromViewColumnIndex(columnIndex)]);
5079
5062
  });
5080
5063
  });
5081
5064
  self.dispatchEvent('afterpaste', {
@@ -5167,9 +5150,50 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len
5167
5150
 
5168
5151
  self.cut = function (e) {
5169
5152
  self.copy(e);
5170
- self.forEachSelectedCell(function (data, index, colName) {
5171
- data[index][colName] = '';
5172
- });
5153
+ var schema = self.getSchema();
5154
+ var affectedCells = [];
5155
+
5156
+ var _iterator2 = _createForOfIteratorHelper(self.selections.entries()),
5157
+ _step2;
5158
+
5159
+ try {
5160
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
5161
+ var _step2$value = _slicedToArray(_step2.value, 2),
5162
+ rowIndex = _step2$value[0],
5163
+ row = _step2$value[1];
5164
+
5165
+ if (!row) continue;
5166
+ var boundRowIndex = self.getBoundRowIndexFromViewRowIndex(rowIndex);
5167
+
5168
+ var _iterator3 = _createForOfIteratorHelper(row),
5169
+ _step3;
5170
+
5171
+ try {
5172
+ for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
5173
+ var columnIndex = _step3.value;
5174
+ var boundColumnIndex = self.getBoundColumnIndexFromViewColumnIndex(columnIndex);
5175
+ var colName = schema[boundColumnIndex].name;
5176
+ self.viewData[rowIndex][colName] = '';
5177
+ affectedCells.push([rowIndex, columnIndex, boundRowIndex, boundColumnIndex]);
5178
+ }
5179
+ } catch (err) {
5180
+ _iterator3.e(err);
5181
+ } finally {
5182
+ _iterator3.f();
5183
+ }
5184
+ }
5185
+ } catch (err) {
5186
+ _iterator2.e(err);
5187
+ } finally {
5188
+ _iterator2.f();
5189
+ }
5190
+
5191
+ if (self.dispatchEvent('cut', {
5192
+ NativeEvent: e,
5193
+ cells: affectedCells
5194
+ })) {
5195
+ return;
5196
+ }
5173
5197
  };
5174
5198
 
5175
5199
  self.copy = function (e) {
@@ -5257,6 +5281,156 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len
5257
5281
  return;
5258
5282
  }
5259
5283
 
5284
+ /***/ }),
5285
+
5286
+ /***/ "./lib/events/util.js":
5287
+ /*!****************************!*\
5288
+ !*** ./lib/events/util.js ***!
5289
+ \****************************/
5290
+ /*! namespace exports */
5291
+ /*! export isSupportedHtml [provided] [no usage info] [missing usage info prevents renaming] */
5292
+ /*! export parseData [provided] [no usage info] [missing usage info prevents renaming] */
5293
+ /*! export parseHtmlTable [provided] [no usage info] [missing usage info prevents renaming] */
5294
+ /*! export parseHtmlText [provided] [no usage info] [missing usage info prevents renaming] */
5295
+ /*! export parseText [provided] [no usage info] [missing usage info prevents renaming] */
5296
+ /*! export sanitizeElementData [provided] [no usage info] [missing usage info prevents renaming] */
5297
+ /*! other exports [not provided] [no usage info] */
5298
+ /*! runtime requirements: __webpack_require__.r, __webpack_exports__, __webpack_require__.d, __webpack_require__.* */
5299
+ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
5300
+
5301
+ "use strict";
5302
+ __webpack_require__.r(__webpack_exports__);
5303
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
5304
+ /* harmony export */ "isSupportedHtml": function() { return /* binding */ isSupportedHtml; },
5305
+ /* harmony export */ "sanitizeElementData": function() { return /* binding */ sanitizeElementData; },
5306
+ /* harmony export */ "parseData": function() { return /* binding */ parseData; },
5307
+ /* harmony export */ "parseHtmlTable": function() { return /* binding */ parseHtmlTable; },
5308
+ /* harmony export */ "parseHtmlText": function() { return /* binding */ parseHtmlText; },
5309
+ /* harmony export */ "parseText": function() { return /* binding */ parseText; }
5310
+ /* harmony export */ });
5311
+
5312
+
5313
+ function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
5314
+
5315
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
5316
+
5317
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
5318
+
5319
+ var isSupportedHtml = function isSupportedHtml(pasteValue) {
5320
+ // We need to match new lines in the HTML, .* won't match new line characters.
5321
+ // `s` regex modifier can't be used with `ecmaVersion === 2017`.
5322
+ // As a workaround using [\s\S]*. Fix when we upgrade `ecmaVersion`.
5323
+ var genericDiv = /(?:^(<meta[^>]*>)?[\s\S]*<div[^>]*>)/;
5324
+ var genericSpan = /(?:^(<meta[^>]*>)?[\s\S]*<span[^>]*>)/;
5325
+ var genericTable = /(?:^(<meta[^>]*>)?[\s\S]*<table[^>]*>)/; // Matches Google Sheets format clipboard data format too.
5326
+
5327
+ var excelTable = /(?:<!--StartFragment-->[\s\S]*<tr[^>]*>)/;
5328
+ var excelTableRow = /(?:<!--StartFragment-->[\s\S]*<td[^>]*>)/;
5329
+ return [genericDiv, genericTable, genericSpan, excelTable, excelTableRow].some(function (expression) {
5330
+ return expression.test(pasteValue);
5331
+ });
5332
+ }; // Explanation of nodeType here: https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType
5333
+
5334
+
5335
+ var IGNORE_NODETYPES = [8, 3]; // '#text' and '#comment'
5336
+
5337
+ var isHtmlTable = function isHtmlTable(pasteValue) {
5338
+ return /(?:<table[^>]*>)|(?:<tr[^]*>)/.test(pasteValue);
5339
+ };
5340
+
5341
+ var sanitizeElementData = function sanitizeElementData(element) {
5342
+ // It is not entirely clear if this check on nodeType is required.
5343
+ var elementData = element.nodeType === 1 ? element.innerText : element.data;
5344
+ return String(elementData).replace(/\s+/g, ' ').trim();
5345
+ };
5346
+
5347
+ var parseHtmlText = function parseHtmlText(data) {
5348
+ var doc = new DOMParser().parseFromString(data, 'text/html');
5349
+ var element = doc.querySelector('div') || doc.querySelector('span');
5350
+ var elementData = sanitizeElementData(element);
5351
+ return elementData.split('\n').map(function (item) {
5352
+ return item.split('\t').map(function (value) {
5353
+ return {
5354
+ value: [{
5355
+ value: value
5356
+ }]
5357
+ };
5358
+ });
5359
+ });
5360
+ };
5361
+
5362
+ var parseHtmlTable = function parseHtmlTable(data) {
5363
+ var doc = new DOMParser().parseFromString(data, 'text/html');
5364
+ var trs = doc.querySelectorAll('table tr');
5365
+ var rows = [];
5366
+
5367
+ var _iterator = _createForOfIteratorHelper(trs),
5368
+ _step;
5369
+
5370
+ try {
5371
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
5372
+ var tr = _step.value;
5373
+ var row = [];
5374
+
5375
+ var _iterator2 = _createForOfIteratorHelper(tr.childNodes),
5376
+ _step2;
5377
+
5378
+ try {
5379
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
5380
+ var childNode = _step2.value;
5381
+ if (IGNORE_NODETYPES.includes(childNode.nodeType)) continue;
5382
+ var col = {
5383
+ value: []
5384
+ };
5385
+ var value = sanitizeElementData(childNode);
5386
+ if (value) col.value.push({
5387
+ value: value
5388
+ });
5389
+ row.push(col);
5390
+ }
5391
+ } catch (err) {
5392
+ _iterator2.e(err);
5393
+ } finally {
5394
+ _iterator2.f();
5395
+ }
5396
+
5397
+ rows.push(row);
5398
+ }
5399
+ } catch (err) {
5400
+ _iterator.e(err);
5401
+ } finally {
5402
+ _iterator.f();
5403
+ }
5404
+
5405
+ return rows;
5406
+ };
5407
+
5408
+ var parseText = function parseText(data) {
5409
+ return data.split('\n').map(function (item) {
5410
+ return item.split('\t').map(function (value) {
5411
+ return {
5412
+ value: [{
5413
+ value: value
5414
+ }]
5415
+ };
5416
+ });
5417
+ });
5418
+ };
5419
+
5420
+ var parseData = function parseData(data, mimeType) {
5421
+ if (mimeType === 'text/html' && isHtmlTable(data)) {
5422
+ return parseHtmlTable(data);
5423
+ } else if (mimeType === 'text/html') {
5424
+ return parseHtmlText(data);
5425
+ } // Default data format is string, so split on new line,
5426
+ // and then enclose in an array (a row with one cell):
5427
+
5428
+
5429
+ return parseText(data);
5430
+ };
5431
+
5432
+
5433
+
5260
5434
  /***/ }),
5261
5435
 
5262
5436
  /***/ "./lib/intf.js":
@@ -5281,20 +5455,20 @@ __webpack_require__.r(__webpack_exports__);
5281
5455
 
5282
5456
  function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
5283
5457
 
5284
- function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e2) { throw _e2; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e3) { didErr = true; err = _e3; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
5285
-
5286
5458
  function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
5287
5459
 
5288
5460
  function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
5289
5461
 
5290
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
5291
-
5292
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
5293
-
5294
5462
  function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
5295
5463
 
5296
5464
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
5297
5465
 
5466
+ function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e2) { throw _e2; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e3) { didErr = true; err = _e3; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
5467
+
5468
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
5469
+
5470
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
5471
+
5298
5472
  /* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(self, ctor) {
5299
5473
  self.scale = 1;
5300
5474
  self.orders = {
@@ -5423,6 +5597,74 @@ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
5423
5597
  return selectedData;
5424
5598
  };
5425
5599
 
5600
+ self.getSelectedCells = function (expandToRow) {
5601
+ var selectedCells = [];
5602
+ var schema = self.getSchema();
5603
+ var viewDataLength = self.viewData.length;
5604
+
5605
+ if (viewDataLength === 0) {
5606
+ return [];
5607
+ }
5608
+
5609
+ var _iterator = _createForOfIteratorHelper(self.selections.entries()),
5610
+ _step;
5611
+
5612
+ try {
5613
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
5614
+ var _step$value = _slicedToArray(_step.value, 2),
5615
+ viewRowIndex = _step$value[0],
5616
+ row = _step$value[1];
5617
+
5618
+ if (!row || row.length === 0) continue;
5619
+
5620
+ var _iterator2 = _createForOfIteratorHelper(row.entries()),
5621
+ _step2;
5622
+
5623
+ try {
5624
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
5625
+ var _step2$value = _slicedToArray(_step2.value, 2),
5626
+ viewColumnIndex = _step2$value[1];
5627
+
5628
+ if (viewColumnIndex === -1 || !schema[viewColumnIndex]) {
5629
+ continue;
5630
+ }
5631
+
5632
+ var boundColumnIndex = self.getBoundColumnIndexFromViewColumnIndex(viewColumnIndex);
5633
+
5634
+ if (!expandToRow && schema[boundColumnIndex].hidden) {
5635
+ continue;
5636
+ }
5637
+
5638
+ if (self.viewData[viewRowIndex]) {
5639
+ var header = schema[boundColumnIndex];
5640
+ var value = self.viewData[viewRowIndex][header.name];
5641
+ var boundRowIndex = self.getBoundRowIndexFromViewRowIndex(viewRowIndex);
5642
+ var cell = {
5643
+ value: value,
5644
+ header: header,
5645
+ boundRowIndex: boundRowIndex,
5646
+ boundColumnIndex: boundColumnIndex,
5647
+ viewRowIndex: viewRowIndex,
5648
+ viewColumnIndex: viewColumnIndex
5649
+ };
5650
+ selectedCells.push(cell);
5651
+ }
5652
+ }
5653
+ } catch (err) {
5654
+ _iterator2.e(err);
5655
+ } finally {
5656
+ _iterator2.f();
5657
+ }
5658
+ }
5659
+ } catch (err) {
5660
+ _iterator.e(err);
5661
+ } finally {
5662
+ _iterator.f();
5663
+ }
5664
+
5665
+ return selectedCells;
5666
+ };
5667
+
5426
5668
  self.getBoundRowIndexFromViewRowIndex = function (viewRowIndex) {
5427
5669
  if (self.boundRowIndexMap && self.boundRowIndexMap.has(viewRowIndex)) {
5428
5670
  return self.boundRowIndexMap.get(viewRowIndex);
@@ -5431,6 +5673,10 @@ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
5431
5673
  return undefined;
5432
5674
  };
5433
5675
 
5676
+ self.getBoundColumnIndexFromViewColumnIndex = function (viewColumnIndex) {
5677
+ return self.orders.columns[viewColumnIndex];
5678
+ };
5679
+
5434
5680
  self.getColumnHeaderCellHeight = function () {
5435
5681
  if (!self.attributes.showColumnHeaders) {
5436
5682
  return 0;
@@ -5561,7 +5807,7 @@ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
5561
5807
  }); // Apply filtering
5562
5808
 
5563
5809
  var _loop = function _loop() {
5564
- var _Object$entries$_i = _slicedToArray(_Object$entries[_i], 2),
5810
+ var _Object$entries$_i = _slicedToArray(_Object$entries[_i2], 2),
5565
5811
  headerName = _Object$entries$_i[0],
5566
5812
  filterText = _Object$entries$_i[1];
5567
5813
 
@@ -5582,19 +5828,19 @@ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
5582
5828
  });
5583
5829
  };
5584
5830
 
5585
- for (var _i = 0, _Object$entries = Object.entries(self.columnFilters); _i < _Object$entries.length; _i++) {
5831
+ for (var _i2 = 0, _Object$entries = Object.entries(self.columnFilters); _i2 < _Object$entries.length; _i2++) {
5586
5832
  var _ret = _loop();
5587
5833
 
5588
5834
  if (_ret === "continue") continue;
5589
5835
  } // Apply sorting
5590
5836
 
5591
5837
 
5592
- var _iterator = _createForOfIteratorHelper(self.orderings.columns),
5593
- _step;
5838
+ var _iterator3 = _createForOfIteratorHelper(self.orderings.columns),
5839
+ _step3;
5594
5840
 
5595
5841
  try {
5596
5842
  var _loop2 = function _loop2() {
5597
- var column = _step.value;
5843
+ var column = _step3.value;
5598
5844
  var sortFn = column.sortFunction(column.orderBy, column.orderDirection);
5599
5845
  newViewData.sort(function (_ref7, _ref8) {
5600
5846
  var _ref9 = _slicedToArray(_ref7, 1),
@@ -5609,13 +5855,13 @@ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
5609
5855
  });
5610
5856
  };
5611
5857
 
5612
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
5858
+ for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
5613
5859
  _loop2();
5614
5860
  }
5615
5861
  } catch (err) {
5616
- _iterator.e(err);
5862
+ _iterator3.e(err);
5617
5863
  } finally {
5618
- _iterator.f();
5864
+ _iterator3.f();
5619
5865
  }
5620
5866
 
5621
5867
  return {
@@ -6024,6 +6270,7 @@ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
6024
6270
  self.intf.clearPxColorAssertions = self.clearPxColorAssertions;
6025
6271
  self.intf.integerToAlpha = self.integerToAlpha;
6026
6272
  self.intf.copy = self.copy;
6273
+ self.intf.cut = self.cut;
6027
6274
  self.intf.paste = self.paste;
6028
6275
  self.intf.setStyleProperty = self.setStyleProperty;
6029
6276
  Object.defineProperty(self.intf, 'defaults', {
@@ -6913,7 +7160,7 @@ __webpack_require__.r(__webpack_exports__);
6913
7160
  /* harmony import */ var _component__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./component */ "./lib/component.js");
6914
7161
  /* harmony import */ var _defaults__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./defaults */ "./lib/defaults.js");
6915
7162
  /* harmony import */ var _draw__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./draw */ "./lib/draw.js");
6916
- /* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./events */ "./lib/events.js");
7163
+ /* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./events */ "./lib/events/index.js");
6917
7164
  /* harmony import */ var _touch__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./touch */ "./lib/touch.js");
6918
7165
  /* harmony import */ var _intf__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./intf */ "./lib/intf.js");
6919
7166
  /* harmony import */ var _contextMenu__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./contextMenu */ "./lib/contextMenu.js");
@@ -7454,7 +7701,8 @@ __webpack_require__.r(__webpack_exports__);
7454
7701
  self.dispatchEvent('selectionchanged', {
7455
7702
  selectedData: self.getSelectedData(),
7456
7703
  selections: self.selections,
7457
- selectionBounds: self.selectionBounds
7704
+ selectionBounds: self.selectionBounds,
7705
+ selectedCells: self.getSelectedCells()
7458
7706
  });
7459
7707
 
7460
7708
  if (dontDraw) {
@@ -7605,7 +7853,8 @@ __webpack_require__.r(__webpack_exports__);
7605
7853
  self.dispatchEvent('selectionchanged', {
7606
7854
  selectedData: self.getSelectedData(),
7607
7855
  selections: self.selections,
7608
- selectionBounds: self.getSelectionBounds()
7856
+ selectionBounds: self.getSelectionBounds(),
7857
+ selectedCells: self.getSelectedCells()
7609
7858
  });
7610
7859
  };
7611
7860
  /**
@@ -7634,7 +7883,8 @@ __webpack_require__.r(__webpack_exports__);
7634
7883
  self.dispatchEvent('selectionchanged', {
7635
7884
  selectedData: self.getSelectedData(),
7636
7885
  selections: self.selections,
7637
- selectionBounds: self.selectionBounds
7886
+ selectionBounds: self.selectionBounds,
7887
+ selectedCells: self.getSelectedCells()
7638
7888
  });
7639
7889
  }
7640
7890
 
@@ -8377,7 +8627,8 @@ __webpack_require__.r(__webpack_exports__);
8377
8627
 
8378
8628
  ev = {
8379
8629
  selections: self.selections,
8380
- selectionBounds: self.selectionBounds
8630
+ selectionBounds: self.selectionBounds,
8631
+ selectedCells: self.getSelectedCells()
8381
8632
  };
8382
8633
  Object.defineProperty(ev, 'selectedData', {
8383
8634
  get: function get() {
@@ -8483,27 +8734,22 @@ __webpack_require__.r(__webpack_exports__);
8483
8734
  self.sorters.string = function (columnName, direction) {
8484
8735
  var asc = direction === 'asc';
8485
8736
  return function (a, b) {
8486
- if (a[columnName] === undefined || a[columnName] === null) {
8487
- return 1;
8488
- }
8489
-
8490
- if (b[columnName] === undefined || b[columnName] === null) {
8491
- return 0;
8492
- }
8737
+ var aValue = a[columnName] || '';
8738
+ var bValue = b[columnName] || '';
8493
8739
 
8494
8740
  if (asc) {
8495
- if (!a[columnName].localeCompare) {
8741
+ if (!aValue.localeCompare) {
8496
8742
  return 1;
8497
8743
  }
8498
8744
 
8499
- return a[columnName].localeCompare(b[columnName]);
8745
+ return aValue.localeCompare(bValue);
8500
8746
  }
8501
8747
 
8502
- if (!b[columnName].localeCompare) {
8748
+ if (!bValue.localeCompare) {
8503
8749
  return 1;
8504
8750
  }
8505
8751
 
8506
- return b[columnName].localeCompare(a[columnName]);
8752
+ return bValue.localeCompare(aValue);
8507
8753
  };
8508
8754
  };
8509
8755