handsontable 0.0.0-next-5e7f0fe-20230504 → 0.0.0-next-48677e7-20230509

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of handsontable might be problematic. Click here for more details.

Files changed (227) hide show
  1. package/3rdparty/walkontable/src/cell/coords.js +40 -13
  2. package/3rdparty/walkontable/src/cell/coords.mjs +40 -13
  3. package/3rdparty/walkontable/src/cell/range.js +29 -25
  4. package/3rdparty/walkontable/src/cell/range.mjs +28 -24
  5. package/3rdparty/walkontable/src/core/_base.js +9 -3
  6. package/3rdparty/walkontable/src/core/_base.mjs +9 -3
  7. package/3rdparty/walkontable/src/core/clone.js +2 -2
  8. package/3rdparty/walkontable/src/core/clone.mjs +2 -2
  9. package/3rdparty/walkontable/src/core/core.js +3 -2
  10. package/3rdparty/walkontable/src/core/core.mjs +3 -2
  11. package/3rdparty/walkontable/src/event.js +12 -10
  12. package/3rdparty/walkontable/src/event.mjs +12 -10
  13. package/3rdparty/walkontable/src/facade/core.js +2 -2
  14. package/3rdparty/walkontable/src/facade/core.mjs +2 -2
  15. package/3rdparty/walkontable/src/index.js +10 -2
  16. package/3rdparty/walkontable/src/index.mjs +2 -2
  17. package/3rdparty/walkontable/src/overlay/_base.js +8 -7
  18. package/3rdparty/walkontable/src/overlay/_base.mjs +8 -7
  19. package/3rdparty/walkontable/src/overlay/bottom.js +7 -6
  20. package/3rdparty/walkontable/src/overlay/bottom.mjs +7 -6
  21. package/3rdparty/walkontable/src/overlay/inlineStart.js +2 -4
  22. package/3rdparty/walkontable/src/overlay/inlineStart.mjs +2 -4
  23. package/3rdparty/walkontable/src/overlay/top.js +9 -10
  24. package/3rdparty/walkontable/src/overlay/top.mjs +9 -10
  25. package/3rdparty/walkontable/src/overlay/topInlineStartCorner.js +12 -10
  26. package/3rdparty/walkontable/src/overlay/topInlineStartCorner.mjs +12 -10
  27. package/3rdparty/walkontable/src/overlays.js +64 -55
  28. package/3rdparty/walkontable/src/overlays.mjs +64 -55
  29. package/3rdparty/walkontable/src/renderer/table.js +2 -0
  30. package/3rdparty/walkontable/src/renderer/table.mjs +2 -0
  31. package/3rdparty/walkontable/src/scroll.js +23 -20
  32. package/3rdparty/walkontable/src/scroll.mjs +23 -20
  33. package/3rdparty/walkontable/src/{border.js → selection/border/border.js} +7 -12
  34. package/3rdparty/walkontable/src/{border.mjs → selection/border/border.mjs} +7 -12
  35. package/3rdparty/walkontable/src/selection/border/constants.js +18 -0
  36. package/3rdparty/walkontable/src/selection/border/constants.mjs +13 -0
  37. package/3rdparty/walkontable/src/selection/constants.js +63 -0
  38. package/3rdparty/walkontable/src/selection/constants.mjs +51 -0
  39. package/3rdparty/walkontable/src/selection/index.js +30 -0
  40. package/3rdparty/walkontable/src/selection/index.mjs +5 -0
  41. package/3rdparty/walkontable/src/selection/manager.js +334 -0
  42. package/3rdparty/walkontable/src/selection/manager.mjs +328 -0
  43. package/3rdparty/walkontable/src/selection/scanner.js +363 -0
  44. package/3rdparty/walkontable/src/selection/scanner.mjs +359 -0
  45. package/3rdparty/walkontable/src/selection/selection.js +133 -0
  46. package/3rdparty/walkontable/src/selection/selection.mjs +127 -0
  47. package/3rdparty/walkontable/src/settings.js +15 -13
  48. package/3rdparty/walkontable/src/settings.mjs +15 -13
  49. package/3rdparty/walkontable/src/table/mixin/calculatedColumns.js +9 -0
  50. package/3rdparty/walkontable/src/table/mixin/calculatedColumns.mjs +9 -0
  51. package/3rdparty/walkontable/src/table/mixin/calculatedRows.js +9 -0
  52. package/3rdparty/walkontable/src/table/mixin/calculatedRows.mjs +9 -0
  53. package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.js +9 -0
  54. package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.mjs +9 -0
  55. package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.js +9 -0
  56. package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.mjs +9 -0
  57. package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.js +9 -0
  58. package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.mjs +9 -0
  59. package/3rdparty/walkontable/src/table.js +33 -101
  60. package/3rdparty/walkontable/src/table.mjs +34 -102
  61. package/base.js +4 -2
  62. package/base.mjs +2 -2
  63. package/core.d.ts +4 -0
  64. package/core.js +49 -8
  65. package/core.mjs +49 -8
  66. package/dataMap/dataSource.js +5 -5
  67. package/dataMap/dataSource.mjs +5 -5
  68. package/dataMap/metaManager/metaSchema.js +7 -0
  69. package/dataMap/metaManager/metaSchema.mjs +7 -0
  70. package/dist/handsontable.css +7 -2
  71. package/dist/handsontable.full.css +7 -2
  72. package/dist/handsontable.full.js +9409 -9084
  73. package/dist/handsontable.full.min.css +3 -3
  74. package/dist/handsontable.full.min.js +115 -123
  75. package/dist/handsontable.js +9497 -9171
  76. package/dist/handsontable.min.css +3 -3
  77. package/dist/handsontable.min.js +3 -11
  78. package/dist/languages/all.js +0 -133
  79. package/dist/languages/ar-AR.js +0 -7
  80. package/dist/languages/cs-CZ.js +0 -7
  81. package/dist/languages/de-CH.js +0 -7
  82. package/dist/languages/de-DE.js +0 -7
  83. package/dist/languages/en-US.js +0 -7
  84. package/dist/languages/es-MX.js +0 -7
  85. package/dist/languages/fr-FR.js +0 -7
  86. package/dist/languages/it-IT.js +0 -7
  87. package/dist/languages/ja-JP.js +0 -7
  88. package/dist/languages/ko-KR.js +0 -7
  89. package/dist/languages/lv-LV.js +0 -7
  90. package/dist/languages/nb-NO.js +0 -7
  91. package/dist/languages/nl-NL.js +0 -7
  92. package/dist/languages/pl-PL.js +0 -7
  93. package/dist/languages/pt-BR.js +0 -7
  94. package/dist/languages/ru-RU.js +0 -7
  95. package/dist/languages/sr-SP.js +0 -7
  96. package/dist/languages/zh-CN.js +0 -7
  97. package/dist/languages/zh-TW.js +0 -7
  98. package/editorManager.js +7 -3
  99. package/editorManager.mjs +7 -3
  100. package/editors/textEditor/textEditor.js +3 -16
  101. package/editors/textEditor/textEditor.mjs +4 -17
  102. package/focusManager.d.ts +12 -0
  103. package/focusManager.js +249 -0
  104. package/focusManager.mjs +245 -0
  105. package/helpers/dom/element.js +11 -0
  106. package/helpers/dom/element.mjs +10 -0
  107. package/helpers/mixed.js +1 -1
  108. package/helpers/mixed.mjs +1 -1
  109. package/i18n/languages/ar-AR.js +1 -7
  110. package/i18n/languages/cs-CZ.js +1 -7
  111. package/i18n/languages/de-CH.js +1 -7
  112. package/i18n/languages/de-DE.js +1 -7
  113. package/i18n/languages/en-US.js +1 -7
  114. package/i18n/languages/es-MX.js +1 -7
  115. package/i18n/languages/fr-FR.js +1 -7
  116. package/i18n/languages/it-IT.js +1 -7
  117. package/i18n/languages/ja-JP.js +1 -7
  118. package/i18n/languages/ko-KR.js +1 -7
  119. package/i18n/languages/lv-LV.js +1 -7
  120. package/i18n/languages/nb-NO.js +1 -7
  121. package/i18n/languages/nl-NL.js +1 -7
  122. package/i18n/languages/pl-PL.js +1 -7
  123. package/i18n/languages/pt-BR.js +1 -7
  124. package/i18n/languages/ru-RU.js +1 -7
  125. package/i18n/languages/sr-SP.js +1 -7
  126. package/i18n/languages/zh-CN.js +1 -7
  127. package/i18n/languages/zh-TW.js +1 -7
  128. package/languages/all.js +0 -133
  129. package/languages/ar-AR.js +0 -7
  130. package/languages/cs-CZ.js +0 -7
  131. package/languages/de-CH.js +0 -7
  132. package/languages/de-DE.js +0 -7
  133. package/languages/en-US.js +0 -7
  134. package/languages/es-MX.js +0 -7
  135. package/languages/fr-FR.js +0 -7
  136. package/languages/index.js +0 -133
  137. package/languages/it-IT.js +0 -7
  138. package/languages/ja-JP.js +0 -7
  139. package/languages/ko-KR.js +0 -7
  140. package/languages/lv-LV.js +0 -7
  141. package/languages/nb-NO.js +0 -7
  142. package/languages/nl-NL.js +0 -7
  143. package/languages/pl-PL.js +0 -7
  144. package/languages/pt-BR.js +0 -7
  145. package/languages/ru-RU.js +0 -7
  146. package/languages/sr-SP.js +0 -7
  147. package/languages/zh-CN.js +0 -7
  148. package/languages/zh-TW.js +0 -7
  149. package/package.json +2 -3
  150. package/pluginHooks.js +7 -17
  151. package/pluginHooks.mjs +4 -16
  152. package/plugins/autoRowSize/autoRowSize.js +2 -2
  153. package/plugins/autoRowSize/autoRowSize.mjs +2 -2
  154. package/plugins/copyPaste/copyPaste.js +12 -93
  155. package/plugins/copyPaste/copyPaste.mjs +12 -93
  156. package/plugins/copyPaste/copyableRanges.js +31 -25
  157. package/plugins/copyPaste/copyableRanges.mjs +24 -18
  158. package/plugins/customBorders/customBorders.js +6 -2
  159. package/plugins/customBorders/customBorders.mjs +7 -3
  160. package/plugins/filters/filters.js +0 -5
  161. package/plugins/filters/filters.mjs +0 -5
  162. package/plugins/formulas/formulas.js +168 -190
  163. package/plugins/formulas/formulas.mjs +168 -190
  164. package/plugins/mergeCells/mergeCells.js +0 -16
  165. package/plugins/mergeCells/mergeCells.mjs +0 -16
  166. package/plugins/nestedHeaders/nestedHeaders.js +3 -4
  167. package/plugins/nestedHeaders/nestedHeaders.mjs +3 -4
  168. package/plugins/nestedHeaders/stateManager/headersTree.js +26 -23
  169. package/plugins/nestedHeaders/stateManager/headersTree.mjs +23 -20
  170. package/plugins/nestedHeaders/stateManager/index.js +3 -3
  171. package/plugins/nestedHeaders/stateManager/matrixGenerator.js +0 -1
  172. package/plugins/nestedHeaders/stateManager/settingsNormalizer.js +1 -1
  173. package/plugins/nestedHeaders/utils/ghostTable.js +35 -30
  174. package/plugins/nestedHeaders/utils/ghostTable.mjs +35 -30
  175. package/plugins/registry.js +1 -3
  176. package/plugins/undoRedo/undoRedo.js +1 -0
  177. package/plugins/undoRedo/undoRedo.mjs +1 -0
  178. package/renderers/baseRenderer/baseRenderer.js +3 -0
  179. package/renderers/baseRenderer/baseRenderer.mjs +3 -0
  180. package/selection/highlight/highlight.js +335 -133
  181. package/selection/highlight/highlight.mjs +325 -129
  182. package/selection/highlight/types/activeHeader.js +10 -9
  183. package/selection/highlight/types/activeHeader.mjs +10 -8
  184. package/selection/highlight/types/area.js +12 -27
  185. package/selection/highlight/types/area.mjs +16 -30
  186. package/selection/highlight/types/areaLayered.js +54 -0
  187. package/selection/highlight/types/areaLayered.mjs +49 -0
  188. package/selection/highlight/types/column.js +50 -0
  189. package/selection/highlight/types/column.mjs +45 -0
  190. package/selection/highlight/types/customSelection.js +7 -10
  191. package/selection/highlight/types/customSelection.mjs +7 -9
  192. package/selection/highlight/types/fill.js +5 -8
  193. package/selection/highlight/types/fill.mjs +5 -7
  194. package/selection/highlight/types/{cell.js → focus.js} +5 -8
  195. package/selection/highlight/types/{cell.mjs → focus.mjs} +5 -7
  196. package/selection/highlight/types/header.js +10 -20
  197. package/selection/highlight/types/header.mjs +10 -19
  198. package/selection/highlight/types/{index.js → row.js} +27 -31
  199. package/selection/highlight/types/{index.mjs → row.mjs} +24 -29
  200. package/selection/highlight/visualSelection.js +12 -21
  201. package/selection/highlight/visualSelection.mjs +12 -21
  202. package/selection/index.js +4 -7
  203. package/selection/index.mjs +2 -3
  204. package/selection/selection.js +88 -46
  205. package/selection/selection.mjs +82 -44
  206. package/settings.d.ts +1 -0
  207. package/tableView.js +94 -66
  208. package/tableView.mjs +94 -66
  209. package/translations/changesObservable/observable.js +46 -41
  210. package/translations/changesObservable/observable.mjs +41 -36
  211. package/translations/changesObservable/observer.js +1 -1
  212. package/translations/indexMapper.js +0 -21
  213. package/translations/indexMapper.mjs +0 -21
  214. package/utils/dataStructures/tree.js +18 -15
  215. package/utils/dataStructures/tree.mjs +18 -15
  216. package/utils/parseTable.js +1 -5
  217. package/utils/parseTable.mjs +1 -5
  218. package/3rdparty/walkontable/src/selection.js +0 -354
  219. package/3rdparty/walkontable/src/selection.mjs +0 -348
  220. package/plugins/copyPaste/focusableElement.js +0 -219
  221. package/plugins/copyPaste/focusableElement.mjs +0 -213
  222. package/plugins/formulas/indexSyncer/axisSyncer.js +0 -379
  223. package/plugins/formulas/indexSyncer/axisSyncer.mjs +0 -374
  224. package/plugins/formulas/indexSyncer/index.js +0 -225
  225. package/plugins/formulas/indexSyncer/index.mjs +0 -219
  226. package/selection/highlight/constants.js +0 -16
  227. package/selection/highlight/constants.mjs +0 -6
@@ -1,348 +0,0 @@
1
- function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
2
- 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."); }
3
- 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); }
4
- 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; }
5
- function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
6
- function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
7
- import "core-js/modules/es.array.includes.js";
8
- import "core-js/modules/es.string.includes.js";
9
- import "core-js/modules/es.array.concat.js";
10
- import "core-js/modules/es.object.to-string.js";
11
- import "core-js/modules/web.dom-collections.for-each.js";
12
- import "core-js/modules/es.object.values.js";
13
- import "core-js/modules/es.symbol.to-primitive.js";
14
- import "core-js/modules/es.date.to-primitive.js";
15
- import "core-js/modules/es.symbol.js";
16
- import "core-js/modules/es.symbol.description.js";
17
- import "core-js/modules/es.number.constructor.js";
18
- import "core-js/modules/es.symbol.iterator.js";
19
- import "core-js/modules/es.array.iterator.js";
20
- import "core-js/modules/es.string.iterator.js";
21
- import "core-js/modules/web.dom-collections.iterator.js";
22
- import "core-js/modules/es.array.slice.js";
23
- import "core-js/modules/es.function.name.js";
24
- import "core-js/modules/es.array.from.js";
25
- import "core-js/modules/es.regexp.exec.js";
26
- function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
27
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
28
- function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
29
- function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
30
- function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
31
- function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
32
- import { addClass, hasClass } from "./../../../helpers/dom/element.mjs";
33
- import Border from "./border.mjs";
34
- /**
35
- * @class Selection
36
- */
37
- var Selection = /*#__PURE__*/function () {
38
- /**
39
- * @param {object} settings The selection settings object. @todo type.
40
- * @param {CellRange} cellRange The cell range instance.
41
- */
42
- function Selection(settings, cellRange) {
43
- _classCallCheck(this, Selection);
44
- this.settings = settings;
45
- this.cellRange = cellRange || null;
46
- this.instanceBorders = {};
47
- this.classNames = [this.settings.className];
48
- this.classNameGenerator = this.linearClassNameGenerator(this.settings.className, this.settings.layerLevel);
49
- }
50
-
51
- /**
52
- * Each Walkontable clone requires it's own border for every selection. This method creates and returns selection
53
- * borders per instance.
54
- *
55
- * @param {WalkontableFacade} wotInstance The Walkontable instance.
56
- * @returns {Border}
57
- */
58
- _createClass(Selection, [{
59
- key: "getBorder",
60
- value: function getBorder(wotInstance) {
61
- if (!this.instanceBorders[wotInstance.guid]) {
62
- this.instanceBorders[wotInstance.guid] = new Border(wotInstance, this.settings);
63
- }
64
- return this.instanceBorders[wotInstance.guid];
65
- }
66
-
67
- /**
68
- * Checks if selection is empty.
69
- *
70
- * @returns {boolean}
71
- */
72
- }, {
73
- key: "isEmpty",
74
- value: function isEmpty() {
75
- return this.cellRange === null;
76
- }
77
-
78
- /**
79
- * Adds a cell coords to the selection.
80
- *
81
- * @param {CellCoords} coords The cell coordinates to add.
82
- * @returns {Selection}
83
- */
84
- }, {
85
- key: "add",
86
- value: function add(coords) {
87
- if (this.isEmpty()) {
88
- this.cellRange = this.settings.createCellRange(coords);
89
- } else {
90
- this.cellRange.expand(coords);
91
- }
92
- return this;
93
- }
94
-
95
- /**
96
- * If selection range from or to property equals oldCoords, replace it with newCoords. Return boolean
97
- * information about success.
98
- *
99
- * @param {CellCoords} oldCoords An old cell coordinates to replace.
100
- * @param {CellCoords} newCoords The new cell coordinates.
101
- * @returns {boolean}
102
- */
103
- }, {
104
- key: "replace",
105
- value: function replace(oldCoords, newCoords) {
106
- if (!this.isEmpty()) {
107
- if (this.cellRange.from.isEqual(oldCoords)) {
108
- this.cellRange.from = newCoords;
109
- return true;
110
- }
111
- if (this.cellRange.to.isEqual(oldCoords)) {
112
- this.cellRange.to = newCoords;
113
- return true;
114
- }
115
- }
116
- return false;
117
- }
118
-
119
- /**
120
- * Clears selection.
121
- *
122
- * @returns {Selection}
123
- */
124
- }, {
125
- key: "clear",
126
- value: function clear() {
127
- this.cellRange = null;
128
- return this;
129
- }
130
-
131
- /**
132
- * Returns the top left (or top right in RTL) and bottom right (or bottom left in RTL) selection coordinates.
133
- *
134
- * @returns {Array} Returns array of coordinates for example `[1, 1, 5, 5]`.
135
- */
136
- }, {
137
- key: "getCorners",
138
- value: function getCorners() {
139
- var topStart = this.cellRange.getOuterTopStartCorner();
140
- var bottomEnd = this.cellRange.getOuterBottomEndCorner();
141
- return [topStart.row, topStart.col, bottomEnd.row, bottomEnd.col];
142
- }
143
-
144
- /**
145
- * Adds class name to cell element at given coords.
146
- *
147
- * @param {WalkontableFacade} wotInstance Walkontable instance.
148
- * @param {number} sourceRow Cell row coord.
149
- * @param {number} sourceColumn Cell column coord.
150
- * @param {string} className Class name.
151
- * @param {boolean} [markIntersections=false] If `true`, linear className generator will be used to add CSS classes
152
- * in a continuous way.
153
- * @returns {Selection}
154
- */
155
- }, {
156
- key: "addClassAtCoords",
157
- value: function addClassAtCoords(wotInstance, sourceRow, sourceColumn, className) {
158
- var markIntersections = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;
159
- var TD = wotInstance.wtTable.getCell(this.settings.createCellCoords(sourceRow, sourceColumn));
160
- if (_typeof(TD) === 'object') {
161
- var cellClassName = className;
162
- if (markIntersections) {
163
- cellClassName = this.classNameGenerator(TD);
164
- if (!this.classNames.includes(cellClassName)) {
165
- this.classNames.push(cellClassName);
166
- }
167
- }
168
- addClass(TD, cellClassName);
169
- }
170
- return this;
171
- }
172
-
173
- /**
174
- * Generate helper for calculating classNames based on previously added base className.
175
- * The generated className is always generated as a continuation of the previous className. For example, when
176
- * the currently checked element has 'area-2' className the generated new className will be 'area-3'. When
177
- * the element doesn't have any classNames than the base className will be returned ('area');.
178
- *
179
- * @param {string} baseClassName Base className to be used.
180
- * @param {number} layerLevelOwner Layer level which the instance of the Selection belongs to.
181
- * @returns {Function}
182
- */
183
- }, {
184
- key: "linearClassNameGenerator",
185
- value: function linearClassNameGenerator(baseClassName, layerLevelOwner) {
186
- // TODO: Make this recursive function Proper Tail Calls (TCO/PTC) friendly.
187
- return function calcClassName(element) {
188
- var previousIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : -1;
189
- if (layerLevelOwner === 0 || previousIndex === 0) {
190
- return baseClassName;
191
- }
192
- var index = previousIndex >= 0 ? previousIndex : layerLevelOwner;
193
- var className = baseClassName;
194
- index -= 1;
195
- var previousClassName = index === 0 ? baseClassName : "".concat(baseClassName, "-").concat(index);
196
- if (hasClass(element, previousClassName)) {
197
- var currentLayer = index + 1;
198
- className = "".concat(baseClassName, "-").concat(currentLayer);
199
- } else {
200
- className = calcClassName(element, index);
201
- }
202
- return className;
203
- };
204
- }
205
-
206
- /**
207
- * @param {WalkontableFacade} wotInstance The Walkontable instance.
208
- */
209
- }, {
210
- key: "draw",
211
- value: function draw(wotInstance) {
212
- if (this.isEmpty()) {
213
- if (this.settings.border) {
214
- this.getBorder(wotInstance).disappear();
215
- }
216
- return;
217
- }
218
- var renderedRows = wotInstance.wtTable.getRenderedRowsCount();
219
- var renderedColumns = wotInstance.wtTable.getRenderedColumnsCount();
220
- var corners = this.getCorners();
221
- var _corners = _slicedToArray(corners, 4),
222
- topRow = _corners[0],
223
- topColumn = _corners[1],
224
- bottomRow = _corners[2],
225
- bottomColumn = _corners[3];
226
- var _this$settings = this.settings,
227
- highlightHeaderClassName = _this$settings.highlightHeaderClassName,
228
- highlightColumnClassName = _this$settings.highlightColumnClassName,
229
- highlightRowClassName = _this$settings.highlightRowClassName,
230
- highlightOnlyClosestHeader = _this$settings.highlightOnlyClosestHeader,
231
- selectionType = _this$settings.selectionType;
232
- var isHeaderSelectionType = selectionType === void 0 || ['active-header', 'header'].includes(selectionType);
233
- if (isHeaderSelectionType && topColumn !== null && bottomColumn !== null) {
234
- var selectionColumnCursor = 0;
235
- for (var column = 0; column < renderedColumns; column += 1) {
236
- var sourceCol = wotInstance.wtTable.columnFilter.renderedToSource(column);
237
- if (sourceCol >= topColumn && sourceCol <= bottomColumn) {
238
- var THs = wotInstance.wtTable.getColumnHeaders(sourceCol);
239
- var closestHeaderLevel = THs.length - 1;
240
- if (highlightOnlyClosestHeader && THs.length > 1) {
241
- THs = [THs[closestHeaderLevel]];
242
- }
243
- for (var headerLevel = 0; headerLevel < THs.length; headerLevel += 1) {
244
- var newClasses = [];
245
- var TH = THs[headerLevel];
246
- if (highlightHeaderClassName) {
247
- newClasses.push(highlightHeaderClassName);
248
- }
249
- if (highlightColumnClassName) {
250
- newClasses.push(highlightColumnClassName);
251
- }
252
- headerLevel = highlightOnlyClosestHeader ? closestHeaderLevel : headerLevel;
253
- var newSourceCol = wotInstance.getSetting('onBeforeHighlightingColumnHeader', sourceCol, headerLevel, {
254
- selectionType: selectionType,
255
- columnCursor: selectionColumnCursor,
256
- selectionWidth: bottomColumn - topColumn + 1,
257
- classNames: newClasses
258
- });
259
- if (newSourceCol !== sourceCol) {
260
- TH = wotInstance.wtTable.getColumnHeader(newSourceCol, headerLevel);
261
- }
262
- addClass(TH, newClasses);
263
- }
264
- selectionColumnCursor += 1;
265
- }
266
- }
267
- }
268
- if (topRow !== null && bottomRow !== null) {
269
- var selectionRowCursor = 0;
270
- for (var row = 0; row < renderedRows; row += 1) {
271
- var sourceRow = wotInstance.wtTable.rowFilter.renderedToSource(row);
272
- if (isHeaderSelectionType && sourceRow >= topRow && sourceRow <= bottomRow) {
273
- var _THs = wotInstance.wtTable.getRowHeaders(sourceRow);
274
- var _closestHeaderLevel = _THs.length - 1;
275
- if (highlightOnlyClosestHeader && _THs.length > 1) {
276
- _THs = [_THs[_closestHeaderLevel]];
277
- }
278
- for (var _headerLevel = 0; _headerLevel < _THs.length; _headerLevel += 1) {
279
- var _newClasses = [];
280
- var _TH = _THs[_headerLevel];
281
- if (highlightHeaderClassName) {
282
- _newClasses.push(highlightHeaderClassName);
283
- }
284
- if (highlightRowClassName) {
285
- _newClasses.push(highlightRowClassName);
286
- }
287
- _headerLevel = highlightOnlyClosestHeader ? _closestHeaderLevel : _headerLevel;
288
- var newSourceRow = wotInstance.getSetting('onBeforeHighlightingRowHeader', sourceRow, _headerLevel, {
289
- selectionType: selectionType,
290
- rowCursor: selectionRowCursor,
291
- selectionHeight: bottomRow - topRow + 1,
292
- classNames: _newClasses
293
- });
294
- if (newSourceRow !== sourceRow) {
295
- _TH = wotInstance.wtTable.getRowHeader(newSourceRow, _headerLevel);
296
- }
297
- addClass(_TH, _newClasses);
298
- }
299
- selectionRowCursor += 1;
300
- }
301
- if (topColumn !== null && bottomColumn !== null) {
302
- for (var _column = 0; _column < renderedColumns; _column += 1) {
303
- var _sourceCol = wotInstance.wtTable.columnFilter.renderedToSource(_column);
304
- if (sourceRow >= topRow && sourceRow <= bottomRow && _sourceCol >= topColumn && _sourceCol <= bottomColumn) {
305
- // selected cell
306
- if (this.settings.className) {
307
- this.addClassAtCoords(wotInstance, sourceRow, _sourceCol, this.settings.className, this.settings.markIntersections);
308
- }
309
- } else if (sourceRow >= topRow && sourceRow <= bottomRow) {
310
- // selection is in this row
311
- if (highlightRowClassName) {
312
- this.addClassAtCoords(wotInstance, sourceRow, _sourceCol, highlightRowClassName);
313
- }
314
- } else if (_sourceCol >= topColumn && _sourceCol <= bottomColumn) {
315
- // selection is in this column
316
- if (highlightColumnClassName) {
317
- this.addClassAtCoords(wotInstance, sourceRow, _sourceCol, highlightColumnClassName);
318
- }
319
- }
320
- var additionalSelectionClass = wotInstance.getSetting('onAfterDrawSelection', sourceRow, _sourceCol, this.settings.layerLevel);
321
- if (typeof additionalSelectionClass === 'string') {
322
- this.addClassAtCoords(wotInstance, sourceRow, _sourceCol, additionalSelectionClass);
323
- }
324
- }
325
- }
326
- }
327
- }
328
- wotInstance.getSetting('onBeforeDrawBorders', corners, this.settings.className);
329
- if (this.settings.border) {
330
- // warning! border.appear modifies corners!
331
- this.getBorder(wotInstance).appear(corners);
332
- }
333
- }
334
-
335
- /**
336
- * Cleans up all the DOM state related to a Selection instance. Call this prior to deleting a Selection instance.
337
- */
338
- }, {
339
- key: "destroy",
340
- value: function destroy() {
341
- Object.values(this.instanceBorders).forEach(function (border) {
342
- return border.destroy();
343
- });
344
- }
345
- }]);
346
- return Selection;
347
- }();
348
- export default Selection;
@@ -1,219 +0,0 @@
1
- "use strict";
2
-
3
- require("core-js/modules/es.symbol.iterator.js");
4
- exports.__esModule = true;
5
- exports.createElement = createElement;
6
- exports.deactivateElement = deactivateElement;
7
- exports.destroyElement = destroyElement;
8
- require("core-js/modules/es.array.iterator.js");
9
- require("core-js/modules/es.object.to-string.js");
10
- require("core-js/modules/es.string.iterator.js");
11
- require("core-js/modules/es.weak-set.js");
12
- require("core-js/modules/web.dom-collections.iterator.js");
13
- require("core-js/modules/es.symbol.to-primitive.js");
14
- require("core-js/modules/es.date.to-primitive.js");
15
- require("core-js/modules/es.symbol.js");
16
- require("core-js/modules/es.symbol.description.js");
17
- require("core-js/modules/es.number.constructor.js");
18
- require("core-js/modules/es.weak-map.js");
19
- var _eventManager = _interopRequireDefault(require("../../eventManager"));
20
- var _localHooks = _interopRequireDefault(require("../../mixins/localHooks"));
21
- var _object = require("../../helpers/object");
22
- var _browser = require("../../helpers/browser");
23
- var _element = require("../../helpers/dom/element");
24
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
25
- function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
26
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
27
- function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
28
- function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
29
- function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
30
- function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
31
- /**
32
- * @private
33
- * @class FocusableWrapper
34
- */
35
- var FocusableWrapper = /*#__PURE__*/function () {
36
- function FocusableWrapper(container) {
37
- _classCallCheck(this, FocusableWrapper);
38
- this.rootDocument = container.defaultView ? container : container.ownerDocument;
39
- /**
40
- * The main/operational focusable element.
41
- *
42
- * @type {HTMLElement}
43
- */
44
- this.mainElement = null;
45
- /**
46
- * Instance of EventManager.
47
- *
48
- * @type {EventManager}
49
- */
50
- this.eventManager = new _eventManager.default(this);
51
- /**
52
- * An object for tracking information about event listeners attached to the focusable element.
53
- *
54
- * @type {WeakSet}
55
- */
56
- this.listenersCount = new WeakSet();
57
- /**
58
- * Parent for an focusable element.
59
- *
60
- * @type {HTMLElement}
61
- */
62
- this.container = container;
63
- }
64
-
65
- /**
66
- * Switch to the secondary focusable element. Used when no any main focusable element is provided.
67
- */
68
- _createClass(FocusableWrapper, [{
69
- key: "useSecondaryElement",
70
- value: function useSecondaryElement() {
71
- var el = createOrGetSecondaryElement(this.container);
72
- if (!this.listenersCount.has(el)) {
73
- this.listenersCount.add(el);
74
- forwardEventsToLocalHooks(this.eventManager, el, this);
75
- }
76
- this.mainElement = el;
77
- }
78
-
79
- /**
80
- * Switch to the main focusable element.
81
- *
82
- * @param {HTMLElement} element The DOM element.
83
- */
84
- }, {
85
- key: "setFocusableElement",
86
- value: function setFocusableElement(element) {
87
- if (!this.listenersCount.has(element)) {
88
- this.listenersCount.add(element);
89
- forwardEventsToLocalHooks(this.eventManager, element, this);
90
- }
91
- this.mainElement = element;
92
- }
93
-
94
- /**
95
- * Get currently set focusable element.
96
- *
97
- * @returns {HTMLElement}
98
- */
99
- }, {
100
- key: "getFocusableElement",
101
- value: function getFocusableElement() {
102
- return this.mainElement;
103
- }
104
-
105
- /**
106
- * Set focus to the focusable element.
107
- */
108
- }, {
109
- key: "focus",
110
- value: function focus() {
111
- // Add an empty space to texarea. It is necessary for safari to enable "copy" command from menu bar.
112
- this.mainElement.value = ' ';
113
- if (!(0, _browser.isMobileBrowser)()) {
114
- (0, _element.selectElementIfAllowed)(this.mainElement);
115
- }
116
- }
117
- }]);
118
- return FocusableWrapper;
119
- }();
120
- (0, _object.mixin)(FocusableWrapper, _localHooks.default);
121
- var refCounter = new WeakMap();
122
-
123
- /**
124
- * Create and return the FocusableWrapper instance.
125
- *
126
- * @param {HTMLElement} container The container element, holder for focusable elements.
127
- * @returns {FocusableWrapper}
128
- */
129
- function createElement(container) {
130
- var focusableWrapper = new FocusableWrapper(container);
131
- var counter = refCounter.get(container);
132
- counter = isNaN(counter) ? 0 : counter;
133
- refCounter.set(container, counter + 1);
134
- return focusableWrapper;
135
- }
136
-
137
- /**
138
- * Deactivate the FocusableWrapper instance.
139
- *
140
- * @param {FocusableWrapper} wrapper The instance of the FocusableWrapper class.
141
- */
142
- function deactivateElement(wrapper) {
143
- wrapper.eventManager.clear();
144
- }
145
- var runLocalHooks = function runLocalHooks(eventName, subject) {
146
- return function (event) {
147
- return subject.runLocalHooks(eventName, event);
148
- };
149
- };
150
-
151
- /**
152
- * Register copy/cut/paste events and forward their actions to the subject local hooks system.
153
- *
154
- * @param {EventManager} eventManager The instance of the EventManager class.
155
- * @param {HTMLElement} element The element on which the listeners are mounted.
156
- * @param {FocusableWrapper} subject The subject object for local hooks.
157
- */
158
- function forwardEventsToLocalHooks(eventManager, element, subject) {
159
- eventManager.addEventListener(element, 'copy', runLocalHooks('copy', subject));
160
- eventManager.addEventListener(element, 'cut', runLocalHooks('cut', subject));
161
- eventManager.addEventListener(element, 'paste', runLocalHooks('paste', subject));
162
- }
163
- var secondaryElements = new WeakMap();
164
-
165
- /**
166
- * Create and attach newly created focusable element to the DOM.
167
- *
168
- * @param {HTMLElement} container The container element, holder for focusable elements.
169
- * @returns {HTMLElement}
170
- */
171
- function createOrGetSecondaryElement(container) {
172
- var secondaryElement = secondaryElements.get(container);
173
- if (secondaryElement) {
174
- if (!secondaryElement.parentElement) {
175
- container.appendChild(secondaryElement);
176
- }
177
- return secondaryElement;
178
- }
179
- var doc = container.defaultView ? container : container.ownerDocument;
180
- var element = doc.createElement('textarea');
181
- secondaryElements.set(container, element);
182
- element.setAttribute('data-hot-input', ''); // Makes the element recognizable by Hot as its own component's element.
183
- element.className = 'HandsontableCopyPaste';
184
- element.tabIndex = -1;
185
- element.autocomplete = 'off';
186
- element.wrap = 'hard';
187
- element.value = ' ';
188
- container.appendChild(element);
189
- return element;
190
- }
191
-
192
- /**
193
- * Destroy the FocusableWrapper instance.
194
- *
195
- * @param {FocusableWrapper} wrapper The instance of the FocusableWrapper class.
196
- */
197
- function destroyElement(wrapper) {
198
- if (!(wrapper instanceof FocusableWrapper)) {
199
- return;
200
- }
201
- var counter = refCounter.get(wrapper.container);
202
- counter = isNaN(counter) ? 0 : counter;
203
- if (counter > 0) {
204
- counter -= 1;
205
- }
206
- deactivateElement(wrapper);
207
- if (counter <= 0) {
208
- counter = 0;
209
-
210
- // Detach secondary element from the DOM.
211
- var secondaryElement = secondaryElements.get(wrapper.container);
212
- if (secondaryElement && secondaryElement.parentNode) {
213
- secondaryElement.parentNode.removeChild(secondaryElement);
214
- secondaryElements.delete(wrapper.container);
215
- }
216
- wrapper.mainElement = null;
217
- }
218
- refCounter.set(wrapper.container, counter);
219
- }