handsontable 0.0.0-next-53a190b-20240403 → 0.0.0-next-5a535ed-20240403
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.
Potentially problematic release.
This version of handsontable might be problematic. Click here for more details.
- package/3rdparty/walkontable/src/calculator/viewportColumns.js +17 -12
- package/3rdparty/walkontable/src/calculator/viewportColumns.mjs +17 -12
- package/3rdparty/walkontable/src/calculator/viewportRows.js +15 -10
- package/3rdparty/walkontable/src/calculator/viewportRows.mjs +15 -10
- package/3rdparty/walkontable/src/cell/coords.js +17 -12
- package/3rdparty/walkontable/src/cell/coords.mjs +17 -12
- package/3rdparty/walkontable/src/cell/range.d.ts +1 -2
- package/3rdparty/walkontable/src/cell/range.js +28 -40
- package/3rdparty/walkontable/src/cell/range.mjs +28 -40
- package/3rdparty/walkontable/src/core/_base.js +1 -1
- package/3rdparty/walkontable/src/core/_base.mjs +1 -1
- package/3rdparty/walkontable/src/event.js +104 -72
- package/3rdparty/walkontable/src/event.mjs +104 -72
- package/3rdparty/walkontable/src/overlay/inlineStart.js +1 -15
- package/3rdparty/walkontable/src/overlay/inlineStart.mjs +2 -16
- package/3rdparty/walkontable/src/overlay/top.js +0 -11
- package/3rdparty/walkontable/src/overlay/top.mjs +1 -12
- package/3rdparty/walkontable/src/overlays.js +4 -46
- package/3rdparty/walkontable/src/overlays.mjs +4 -46
- package/3rdparty/walkontable/src/scroll.js +17 -15
- package/3rdparty/walkontable/src/scroll.mjs +17 -15
- package/3rdparty/walkontable/src/selection/manager.js +69 -48
- package/3rdparty/walkontable/src/selection/manager.mjs +69 -48
- package/3rdparty/walkontable/src/selection/scanner.js +42 -33
- package/3rdparty/walkontable/src/selection/scanner.mjs +42 -33
- package/3rdparty/walkontable/src/utils/columnStretching.js +44 -27
- package/3rdparty/walkontable/src/utils/columnStretching.mjs +44 -27
- package/3rdparty/walkontable/src/utils/orderView/view.js +1 -1
- package/3rdparty/walkontable/src/utils/orderView/view.mjs +1 -1
- package/base.js +2 -2
- package/base.mjs +2 -2
- package/core/viewportScroll/index.js +1 -4
- package/core/viewportScroll/index.mjs +1 -4
- package/core.d.ts +3 -4
- package/core.js +22 -77
- package/core.mjs +22 -77
- package/dataMap/dataSource.js +1 -1
- package/dataMap/dataSource.mjs +1 -1
- package/dataMap/metaManager/metaLayers/cellMeta.js +1 -1
- package/dataMap/metaManager/metaLayers/cellMeta.mjs +1 -1
- package/dataMap/metaManager/metaSchema.js +1 -1
- package/dataMap/metaManager/metaSchema.mjs +1 -1
- package/dataMap/replaceData.js +1 -1
- package/dataMap/replaceData.mjs +1 -1
- package/dist/handsontable.css +4 -4
- package/dist/handsontable.full.css +4 -4
- package/dist/handsontable.full.js +9121 -9062
- package/dist/handsontable.full.min.css +3 -3
- package/dist/handsontable.full.min.js +292 -292
- package/dist/handsontable.js +6573 -6967
- package/dist/handsontable.min.css +3 -3
- package/dist/handsontable.min.js +25 -25
- package/dist/languages/all.min.js +1 -1
- package/dist/languages/ar-AR.min.js +1 -1
- package/dist/languages/cs-CZ.min.js +1 -1
- package/dist/languages/de-CH.min.js +1 -1
- package/dist/languages/de-DE.min.js +1 -1
- package/dist/languages/en-US.min.js +1 -1
- package/dist/languages/es-MX.min.js +1 -1
- package/dist/languages/fr-FR.min.js +1 -1
- package/dist/languages/hr-HR.min.js +1 -1
- package/dist/languages/it-IT.min.js +1 -1
- package/dist/languages/ja-JP.min.js +1 -1
- package/dist/languages/ko-KR.min.js +1 -1
- package/dist/languages/lv-LV.min.js +1 -1
- package/dist/languages/nb-NO.min.js +1 -1
- package/dist/languages/nl-NL.min.js +1 -1
- package/dist/languages/pl-PL.min.js +1 -1
- package/dist/languages/pt-BR.min.js +1 -1
- package/dist/languages/ru-RU.min.js +1 -1
- package/dist/languages/sr-SP.min.js +1 -1
- package/dist/languages/zh-CN.min.js +1 -1
- package/dist/languages/zh-TW.min.js +1 -1
- package/editorManager.js +23 -25
- package/editorManager.mjs +23 -25
- package/editors/autocompleteEditor/autocompleteEditor.js +10 -6
- package/editors/autocompleteEditor/autocompleteEditor.mjs +10 -6
- package/editors/selectEditor/selectEditor.js +19 -20
- package/editors/selectEditor/selectEditor.mjs +19 -20
- package/eventManager.js +1 -1
- package/eventManager.mjs +1 -1
- package/focusManager.js +82 -64
- package/focusManager.mjs +82 -64
- package/helpers/dom/element.js +1 -23
- package/helpers/dom/element.mjs +1 -21
- package/helpers/mixed.js +1 -1
- package/helpers/mixed.mjs +1 -1
- package/helpers/object.js +2 -2
- package/helpers/object.mjs +2 -2
- package/index.d.ts +0 -10
- package/package.json +2 -7
- package/pluginHooks.d.ts +3 -4
- package/pluginHooks.js +38 -99
- package/pluginHooks.mjs +38 -99
- package/plugins/autoColumnSize/autoColumnSize.js +65 -49
- package/plugins/autoColumnSize/autoColumnSize.mjs +65 -49
- package/plugins/autoRowSize/autoRowSize.js +34 -28
- package/plugins/autoRowSize/autoRowSize.mjs +34 -28
- package/plugins/autofill/autofill.js +38 -30
- package/plugins/autofill/autofill.mjs +38 -30
- package/plugins/base/base.js +17 -12
- package/plugins/base/base.mjs +17 -12
- package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.js +5 -5
- package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.mjs +5 -5
- package/plugins/collapsibleColumns/collapsibleColumns.js +50 -59
- package/plugins/collapsibleColumns/collapsibleColumns.mjs +50 -59
- package/plugins/columnSorting/columnSorting.js +45 -49
- package/plugins/columnSorting/columnSorting.mjs +45 -49
- package/plugins/columnSummary/columnSummary.js +26 -22
- package/plugins/columnSummary/columnSummary.mjs +26 -22
- package/plugins/comments/comments.js +158 -116
- package/plugins/comments/comments.mjs +158 -116
- package/plugins/contextMenu/contextMenu.js +26 -20
- package/plugins/contextMenu/contextMenu.mjs +26 -20
- package/plugins/contextMenu/itemsFactory.js +1 -1
- package/plugins/contextMenu/itemsFactory.mjs +1 -1
- package/plugins/contextMenu/menu/defaultShortcutsList.js +10 -26
- package/plugins/contextMenu/menu/defaultShortcutsList.mjs +10 -26
- package/plugins/contextMenu/menu/menu.js +21 -13
- package/plugins/contextMenu/menu/menu.mjs +21 -13
- package/plugins/contextMenu/menu/positioner.js +58 -41
- package/plugins/contextMenu/menu/positioner.mjs +58 -41
- package/plugins/copyPaste/copyPaste.js +157 -116
- package/plugins/copyPaste/copyPaste.mjs +157 -116
- package/plugins/copyPaste/copyableRanges.js +66 -43
- package/plugins/copyPaste/copyableRanges.mjs +66 -43
- package/plugins/customBorders/customBorders.js +13 -11
- package/plugins/customBorders/customBorders.mjs +13 -11
- package/plugins/dragToScroll/dragToScroll.js +6 -6
- package/plugins/dragToScroll/dragToScroll.mjs +6 -6
- package/plugins/dropdownMenu/dropdownMenu.js +106 -80
- package/plugins/dropdownMenu/dropdownMenu.mjs +106 -80
- package/plugins/exportFile/dataProvider.js +1 -1
- package/plugins/exportFile/dataProvider.mjs +1 -1
- package/plugins/filters/component/actionBar.js +9 -9
- package/plugins/filters/component/actionBar.mjs +8 -8
- package/plugins/filters/component/condition.js +15 -13
- package/plugins/filters/component/condition.mjs +15 -13
- package/plugins/filters/component/operators.js +6 -6
- package/plugins/filters/component/operators.mjs +6 -6
- package/plugins/filters/component/value.js +28 -24
- package/plugins/filters/component/value.mjs +28 -24
- package/plugins/filters/conditionUpdateObserver.js +24 -22
- package/plugins/filters/conditionUpdateObserver.mjs +24 -22
- package/plugins/filters/dataFilter.js +1 -1
- package/plugins/filters/dataFilter.mjs +1 -1
- package/plugins/filters/filters.js +95 -81
- package/plugins/filters/filters.mjs +95 -81
- package/plugins/filters/ui/input.js +19 -13
- package/plugins/filters/ui/input.mjs +19 -13
- package/plugins/filters/ui/link.js +13 -8
- package/plugins/filters/ui/link.mjs +13 -8
- package/plugins/filters/ui/multipleSelect.js +112 -85
- package/plugins/filters/ui/multipleSelect.mjs +112 -85
- package/plugins/filters/ui/radioInput.js +20 -12
- package/plugins/filters/ui/radioInput.mjs +20 -12
- package/plugins/filters/ui/select.js +72 -50
- package/plugins/filters/ui/select.mjs +71 -49
- package/plugins/formulas/formulas.js +326 -268
- package/plugins/formulas/formulas.mjs +327 -269
- package/plugins/formulas/indexSyncer/axisSyncer.js +61 -38
- package/plugins/formulas/indexSyncer/axisSyncer.mjs +61 -38
- package/plugins/formulas/indexSyncer/index.js +48 -25
- package/plugins/formulas/indexSyncer/index.mjs +48 -25
- package/plugins/hiddenColumns/hiddenColumns.js +83 -64
- package/plugins/hiddenColumns/hiddenColumns.mjs +83 -64
- package/plugins/hiddenRows/hiddenRows.js +82 -63
- package/plugins/hiddenRows/hiddenRows.mjs +82 -63
- package/plugins/manualColumnFreeze/manualColumnFreeze.js +32 -24
- package/plugins/manualColumnFreeze/manualColumnFreeze.mjs +33 -25
- package/plugins/manualColumnMove/manualColumnMove.js +170 -126
- package/plugins/manualColumnMove/manualColumnMove.mjs +170 -126
- package/plugins/manualColumnResize/manualColumnResize.js +230 -169
- package/plugins/manualColumnResize/manualColumnResize.mjs +230 -169
- package/plugins/manualRowMove/manualRowMove.js +128 -99
- package/plugins/manualRowMove/manualRowMove.mjs +128 -99
- package/plugins/manualRowResize/manualRowResize.js +209 -150
- package/plugins/manualRowResize/manualRowResize.mjs +209 -150
- package/plugins/mergeCells/calculations/selection.js +71 -2
- package/plugins/mergeCells/calculations/selection.mjs +71 -2
- package/plugins/mergeCells/cellsCollection.js +1 -117
- package/plugins/mergeCells/cellsCollection.mjs +1 -117
- package/plugins/mergeCells/contextMenuItem/toggleMerge.js +1 -11
- package/plugins/mergeCells/contextMenuItem/toggleMerge.mjs +1 -11
- package/plugins/mergeCells/mergeCells.js +397 -499
- package/plugins/mergeCells/mergeCells.mjs +397 -499
- package/plugins/multiColumnSorting/multiColumnSorting.js +2 -8
- package/plugins/multiColumnSorting/multiColumnSorting.mjs +2 -8
- package/plugins/multipleSelectionHandles/multipleSelectionHandles.js +1 -1
- package/plugins/multipleSelectionHandles/multipleSelectionHandles.mjs +1 -1
- package/plugins/nestedHeaders/nestedHeaders.js +253 -205
- package/plugins/nestedHeaders/nestedHeaders.mjs +254 -206
- package/plugins/nestedHeaders/stateManager/headersTree.js +32 -21
- package/plugins/nestedHeaders/stateManager/headersTree.mjs +32 -21
- package/plugins/nestedHeaders/stateManager/index.js +41 -30
- package/plugins/nestedHeaders/stateManager/index.mjs +41 -30
- package/plugins/nestedHeaders/stateManager/sourceSettings.js +30 -19
- package/plugins/nestedHeaders/stateManager/sourceSettings.mjs +30 -19
- package/plugins/nestedRows/data/dataManager.js +1 -1
- package/plugins/nestedRows/data/dataManager.mjs +1 -1
- package/plugins/nestedRows/nestedRows.js +182 -151
- package/plugins/nestedRows/nestedRows.mjs +183 -152
- package/plugins/nestedRows/ui/contextMenu.js +15 -11
- package/plugins/nestedRows/ui/contextMenu.mjs +14 -10
- package/plugins/nestedRows/utils/rowMoveController.js +1 -1
- package/plugins/nestedRows/utils/rowMoveController.mjs +1 -1
- package/plugins/persistentState/storage.js +2 -2
- package/plugins/persistentState/storage.mjs +2 -2
- package/plugins/search/search.js +7 -7
- package/plugins/search/search.mjs +7 -7
- package/plugins/touchScroll/touchScroll.js +19 -15
- package/plugins/touchScroll/touchScroll.mjs +20 -16
- package/plugins/trimRows/trimRows.js +6 -6
- package/plugins/trimRows/trimRows.mjs +6 -6
- package/renderers/checkboxRenderer/checkboxRenderer.js +5 -8
- package/renderers/checkboxRenderer/checkboxRenderer.mjs +5 -8
- package/selection/highlight/highlight.js +14 -14
- package/selection/highlight/highlight.mjs +13 -13
- package/selection/highlight/visualSelection.js +0 -2
- package/selection/highlight/visualSelection.mjs +0 -2
- package/selection/selection.js +67 -225
- package/selection/selection.mjs +66 -224
- package/selection/transformation.js +118 -149
- package/selection/transformation.mjs +118 -149
- package/shortcutContexts/commands/editor/closeAndSave.js +2 -2
- package/shortcutContexts/commands/editor/closeAndSave.mjs +2 -2
- package/shortcutContexts/commands/editor/open.js +3 -18
- package/shortcutContexts/commands/editor/open.mjs +3 -18
- package/shortcutContexts/commands/extendCellsSelection/down.js +1 -1
- package/shortcutContexts/commands/extendCellsSelection/down.mjs +1 -1
- package/shortcutContexts/commands/extendCellsSelection/left.js +1 -1
- package/shortcutContexts/commands/extendCellsSelection/left.mjs +1 -1
- package/shortcutContexts/commands/extendCellsSelection/right.js +1 -1
- package/shortcutContexts/commands/extendCellsSelection/right.mjs +1 -1
- package/shortcutContexts/commands/extendCellsSelection/toColumns.js +1 -1
- package/shortcutContexts/commands/extendCellsSelection/toColumns.mjs +1 -1
- package/shortcutContexts/commands/extendCellsSelection/toMostBottom.js +1 -3
- package/shortcutContexts/commands/extendCellsSelection/toMostBottom.mjs +1 -3
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.js +3 -9
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.mjs +3 -9
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.js +3 -10
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.mjs +3 -10
- package/shortcutContexts/commands/extendCellsSelection/toMostLeft.js +1 -3
- package/shortcutContexts/commands/extendCellsSelection/toMostLeft.mjs +1 -3
- package/shortcutContexts/commands/extendCellsSelection/toMostRight.js +1 -3
- package/shortcutContexts/commands/extendCellsSelection/toMostRight.mjs +1 -3
- package/shortcutContexts/commands/extendCellsSelection/toMostTop.js +1 -3
- package/shortcutContexts/commands/extendCellsSelection/toMostTop.mjs +1 -3
- package/shortcutContexts/commands/extendCellsSelection/toRows.js +1 -1
- package/shortcutContexts/commands/extendCellsSelection/toRows.mjs +1 -1
- package/shortcutContexts/commands/extendCellsSelection/up.js +1 -1
- package/shortcutContexts/commands/extendCellsSelection/up.mjs +1 -1
- package/shortcutContexts/commands/moveCellSelection/inlineEnd.js +1 -6
- package/shortcutContexts/commands/moveCellSelection/inlineEnd.mjs +1 -6
- package/shortcutContexts/commands/moveCellSelection/inlineStart.js +1 -6
- package/shortcutContexts/commands/moveCellSelection/inlineStart.mjs +1 -6
- package/shortcutContexts/grid.js +3 -9
- package/shortcutContexts/grid.mjs +3 -9
- package/shortcuts/context.js +1 -2
- package/shortcuts/context.mjs +1 -2
- package/tableView.js +78 -52
- package/tableView.mjs +78 -52
- package/translations/changesObservable/observable.js +38 -21
- package/translations/changesObservable/observable.mjs +38 -21
- package/translations/changesObservable/observer.js +12 -7
- package/translations/changesObservable/observer.mjs +11 -6
- package/translations/mapCollections/aggregatedCollection.js +1 -1
- package/translations/mapCollections/aggregatedCollection.mjs +1 -1
- package/translations/maps/indexMap.js +1 -1
- package/translations/maps/indexMap.mjs +1 -1
- package/utils/dataStructures/linkedList.js +1 -6
- package/utils/dataStructures/linkedList.mjs +1 -6
- package/utils/dataStructures/tree.js +1 -1
- package/utils/dataStructures/tree.mjs +1 -1
- package/utils/interval.js +44 -26
- package/utils/interval.mjs +44 -26
- package/core/viewportScroll/scrollStrategies/focusScroll.js +0 -15
- package/core/viewportScroll/scrollStrategies/focusScroll.mjs +0 -11
- package/i18n/languages/ar-AR.d.ts +0 -5
- package/i18n/languages/cs-CZ.d.ts +0 -5
- package/i18n/languages/hr-HR.d.ts +0 -5
- package/i18n/languages/sr-SP.d.ts +0 -5
- package/plugins/mergeCells/focusOrder.js +0 -305
- package/plugins/mergeCells/focusOrder.mjs +0 -300
@@ -4,7 +4,7 @@ function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollect
|
|
4
4
|
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
5
5
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); }
|
6
6
|
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
7
|
-
function
|
7
|
+
function _classPrivateMethodGet(receiver, privateSet, fn) { if (!privateSet.has(receiver)) { throw new TypeError("attempted to get private field on non-instance"); } return fn; }
|
8
8
|
import { BasePlugin } from "../base/index.mjs";
|
9
9
|
import Hooks from "../../pluginHooks.mjs";
|
10
10
|
import { arrayEach } from "../../helpers/array.mjs";
|
@@ -48,16 +48,31 @@ Hooks.getSingleton().register('afterContextMenuExecute');
|
|
48
48
|
*
|
49
49
|
* @plugin ContextMenu
|
50
50
|
*/
|
51
|
-
var
|
51
|
+
var _onAfterOnCellContextMenu = /*#__PURE__*/new WeakSet();
|
52
|
+
var _onMenuBeforeOpen = /*#__PURE__*/new WeakSet();
|
53
|
+
var _onMenuAfterOpen = /*#__PURE__*/new WeakSet();
|
54
|
+
var _onMenuAfterClose = /*#__PURE__*/new WeakSet();
|
52
55
|
export class ContextMenu extends BasePlugin {
|
53
56
|
constructor() {
|
54
57
|
super(...arguments);
|
58
|
+
/**
|
59
|
+
* On menu after close listener.
|
60
|
+
*/
|
61
|
+
_classPrivateMethodInitSpec(this, _onMenuAfterClose);
|
62
|
+
/**
|
63
|
+
* On menu after open listener.
|
64
|
+
*/
|
65
|
+
_classPrivateMethodInitSpec(this, _onMenuAfterOpen);
|
66
|
+
/**
|
67
|
+
* On menu before open listener.
|
68
|
+
*/
|
69
|
+
_classPrivateMethodInitSpec(this, _onMenuBeforeOpen);
|
55
70
|
/**
|
56
71
|
* On contextmenu listener.
|
57
72
|
*
|
58
73
|
* @param {Event} event The mouse event object.
|
59
74
|
*/
|
60
|
-
_classPrivateMethodInitSpec(this,
|
75
|
+
_classPrivateMethodInitSpec(this, _onAfterOnCellContextMenu);
|
61
76
|
/**
|
62
77
|
* Instance of {@link CommandExecutor}.
|
63
78
|
*
|
@@ -125,16 +140,16 @@ export class ContextMenu extends BasePlugin {
|
|
125
140
|
keepInViewport: true,
|
126
141
|
container: settings.uiContainer || this.hot.rootDocument.body
|
127
142
|
});
|
128
|
-
this.menu.addLocalHook('beforeOpen', () =>
|
129
|
-
this.menu.addLocalHook('afterOpen', () =>
|
130
|
-
this.menu.addLocalHook('afterClose', () =>
|
143
|
+
this.menu.addLocalHook('beforeOpen', () => _classPrivateMethodGet(this, _onMenuBeforeOpen, _onMenuBeforeOpen2).call(this));
|
144
|
+
this.menu.addLocalHook('afterOpen', () => _classPrivateMethodGet(this, _onMenuAfterOpen, _onMenuAfterOpen2).call(this));
|
145
|
+
this.menu.addLocalHook('afterClose', () => _classPrivateMethodGet(this, _onMenuAfterClose, _onMenuAfterClose2).call(this));
|
131
146
|
this.menu.addLocalHook('executeCommand', function () {
|
132
147
|
for (var _len = arguments.length, params = new Array(_len), _key = 0; _key < _len; _key++) {
|
133
148
|
params[_key] = arguments[_key];
|
134
149
|
}
|
135
150
|
return _this.executeCommand.call(_this, ...params);
|
136
151
|
});
|
137
|
-
this.addHook('afterOnCellContextMenu', event =>
|
152
|
+
this.addHook('afterOnCellContextMenu', event => _classPrivateMethodGet(this, _onAfterOnCellContextMenu, _onAfterOnCellContextMenu2).call(this, event));
|
138
153
|
this.registerShortcuts();
|
139
154
|
super.enablePlugin();
|
140
155
|
}
|
@@ -321,7 +336,7 @@ export class ContextMenu extends BasePlugin {
|
|
321
336
|
super.destroy();
|
322
337
|
}
|
323
338
|
}
|
324
|
-
function
|
339
|
+
function _onAfterOnCellContextMenu2(event) {
|
325
340
|
const settings = this.hot.getSettings();
|
326
341
|
const showRowHeaders = settings.rowHeaders;
|
327
342
|
const showColHeaders = settings.colHeaders;
|
@@ -352,22 +367,13 @@ function _onAfterOnCellContextMenu(event) {
|
|
352
367
|
left: event.clientX + offset.left
|
353
368
|
});
|
354
369
|
}
|
355
|
-
|
356
|
-
* On menu before open listener.
|
357
|
-
*/
|
358
|
-
function _onMenuBeforeOpen() {
|
370
|
+
function _onMenuBeforeOpen2() {
|
359
371
|
this.hot.runHooks('beforeContextMenuShow', this);
|
360
372
|
}
|
361
|
-
|
362
|
-
* On menu after open listener.
|
363
|
-
*/
|
364
|
-
function _onMenuAfterOpen() {
|
373
|
+
function _onMenuAfterOpen2() {
|
365
374
|
this.hot.runHooks('afterContextMenuShow', this);
|
366
375
|
}
|
367
|
-
|
368
|
-
* On menu after close listener.
|
369
|
-
*/
|
370
|
-
function _onMenuAfterClose() {
|
376
|
+
function _onMenuAfterClose2() {
|
371
377
|
this.hot.listen();
|
372
378
|
this.hot.runHooks('afterContextMenuHide', this);
|
373
379
|
}
|
@@ -1,8 +1,8 @@
|
|
1
1
|
"use strict";
|
2
2
|
|
3
3
|
exports.__esModule = true;
|
4
|
-
require("core-js/modules/es.error.cause.js");
|
5
4
|
require("core-js/modules/es.array.push.js");
|
5
|
+
require("core-js/modules/es.error.cause.js");
|
6
6
|
var _object = require("../../helpers/object");
|
7
7
|
var _array = require("../../helpers/array");
|
8
8
|
var _predefinedItems = require("./predefinedItems");
|
@@ -1,5 +1,5 @@
|
|
1
|
-
import "core-js/modules/es.error.cause.js";
|
2
1
|
import "core-js/modules/es.array.push.js";
|
2
|
+
import "core-js/modules/es.error.cause.js";
|
3
3
|
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
4
4
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); }
|
5
5
|
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
@@ -9,26 +9,10 @@ exports.createDefaultShortcutsList = createDefaultShortcutsList;
|
|
9
9
|
* @returns {KeyboardShortcut[]}
|
10
10
|
*/
|
11
11
|
function createDefaultShortcutsList(menu) {
|
12
|
-
const {
|
13
|
-
hot,
|
14
|
-
hotMenu
|
15
|
-
} = menu;
|
16
12
|
return [{
|
17
|
-
keys: [['Control/Meta', 'A']],
|
18
|
-
forwardToContext: hot.getShortcutManager().getContext('grid'),
|
13
|
+
keys: [['Tab'], ['Shift', 'Tab'], ['Control/Meta', 'A']],
|
14
|
+
forwardToContext: menu.hot.getShortcutManager().getContext('grid'),
|
19
15
|
callback: () => menu.close(true)
|
20
|
-
}, {
|
21
|
-
keys: [['Tab'], ['Shift', 'Tab']],
|
22
|
-
callback: (event, keys) => {
|
23
|
-
const settings = hot.getSettings();
|
24
|
-
const tabMoves = typeof settings.tabMoves === 'function' ? settings.tabMoves(event) : settings.tabMoves;
|
25
|
-
if (keys.includes('shift')) {
|
26
|
-
hot.selection.transformStart(-tabMoves.row, -tabMoves.col);
|
27
|
-
} else {
|
28
|
-
hot.selection.transformStart(tabMoves.row, tabMoves.col);
|
29
|
-
}
|
30
|
-
menu.close(true);
|
31
|
-
}
|
32
16
|
}, {
|
33
17
|
keys: [['Escape']],
|
34
18
|
callback: () => menu.close()
|
@@ -41,7 +25,7 @@ function createDefaultShortcutsList(menu) {
|
|
41
25
|
}, {
|
42
26
|
keys: [['ArrowRight']],
|
43
27
|
callback: () => {
|
44
|
-
const selection = hotMenu.getSelectedLast();
|
28
|
+
const selection = menu.hotMenu.getSelectedLast();
|
45
29
|
if (selection) {
|
46
30
|
const subMenu = menu.openSubMenu(selection[0]);
|
47
31
|
if (subMenu) {
|
@@ -52,7 +36,7 @@ function createDefaultShortcutsList(menu) {
|
|
52
36
|
}, {
|
53
37
|
keys: [['ArrowLeft']],
|
54
38
|
callback: () => {
|
55
|
-
const selection = hotMenu.getSelectedLast();
|
39
|
+
const selection = menu.hotMenu.getSelectedLast();
|
56
40
|
if (selection && menu.isSubMenu()) {
|
57
41
|
menu.close();
|
58
42
|
if (menu.isSubMenu()) {
|
@@ -69,11 +53,11 @@ function createDefaultShortcutsList(menu) {
|
|
69
53
|
}, {
|
70
54
|
keys: [['Enter'], ['Space']],
|
71
55
|
callback: event => {
|
72
|
-
const selection = hotMenu.getSelectedLast();
|
56
|
+
const selection = menu.hotMenu.getSelectedLast();
|
73
57
|
if (!selection) {
|
74
58
|
return;
|
75
59
|
}
|
76
|
-
if (hotMenu.getSourceDataAtRow(selection[0]).submenu) {
|
60
|
+
if (menu.hotMenu.getSourceDataAtRow(selection[0]).submenu) {
|
77
61
|
menu.openSubMenu(selection[0]).getNavigator().toFirstItem();
|
78
62
|
} else {
|
79
63
|
menu.executeCommand(event);
|
@@ -83,9 +67,9 @@ function createDefaultShortcutsList(menu) {
|
|
83
67
|
}, {
|
84
68
|
keys: [['PageUp']],
|
85
69
|
callback: () => {
|
86
|
-
const selection = hotMenu.getSelectedLast();
|
70
|
+
const selection = menu.hotMenu.getSelectedLast();
|
87
71
|
if (selection) {
|
88
|
-
hotMenu.selection.transformStart(-hotMenu.countVisibleRows(), 0);
|
72
|
+
menu.hotMenu.selection.transformStart(-menu.hotMenu.countVisibleRows(), 0);
|
89
73
|
} else {
|
90
74
|
menu.getNavigator().toFirstItem();
|
91
75
|
}
|
@@ -93,9 +77,9 @@ function createDefaultShortcutsList(menu) {
|
|
93
77
|
}, {
|
94
78
|
keys: [['PageDown']],
|
95
79
|
callback: () => {
|
96
|
-
const selection = hotMenu.getSelectedLast();
|
80
|
+
const selection = menu.hotMenu.getSelectedLast();
|
97
81
|
if (selection) {
|
98
|
-
hotMenu.selection.transformStart(hotMenu.countVisibleRows(), 0);
|
82
|
+
menu.hotMenu.selection.transformStart(menu.hotMenu.countVisibleRows(), 0);
|
99
83
|
} else {
|
100
84
|
menu.getNavigator().toLastItem();
|
101
85
|
}
|
@@ -5,26 +5,10 @@
|
|
5
5
|
* @returns {KeyboardShortcut[]}
|
6
6
|
*/
|
7
7
|
export function createDefaultShortcutsList(menu) {
|
8
|
-
const {
|
9
|
-
hot,
|
10
|
-
hotMenu
|
11
|
-
} = menu;
|
12
8
|
return [{
|
13
|
-
keys: [['Control/Meta', 'A']],
|
14
|
-
forwardToContext: hot.getShortcutManager().getContext('grid'),
|
9
|
+
keys: [['Tab'], ['Shift', 'Tab'], ['Control/Meta', 'A']],
|
10
|
+
forwardToContext: menu.hot.getShortcutManager().getContext('grid'),
|
15
11
|
callback: () => menu.close(true)
|
16
|
-
}, {
|
17
|
-
keys: [['Tab'], ['Shift', 'Tab']],
|
18
|
-
callback: (event, keys) => {
|
19
|
-
const settings = hot.getSettings();
|
20
|
-
const tabMoves = typeof settings.tabMoves === 'function' ? settings.tabMoves(event) : settings.tabMoves;
|
21
|
-
if (keys.includes('shift')) {
|
22
|
-
hot.selection.transformStart(-tabMoves.row, -tabMoves.col);
|
23
|
-
} else {
|
24
|
-
hot.selection.transformStart(tabMoves.row, tabMoves.col);
|
25
|
-
}
|
26
|
-
menu.close(true);
|
27
|
-
}
|
28
12
|
}, {
|
29
13
|
keys: [['Escape']],
|
30
14
|
callback: () => menu.close()
|
@@ -37,7 +21,7 @@ export function createDefaultShortcutsList(menu) {
|
|
37
21
|
}, {
|
38
22
|
keys: [['ArrowRight']],
|
39
23
|
callback: () => {
|
40
|
-
const selection = hotMenu.getSelectedLast();
|
24
|
+
const selection = menu.hotMenu.getSelectedLast();
|
41
25
|
if (selection) {
|
42
26
|
const subMenu = menu.openSubMenu(selection[0]);
|
43
27
|
if (subMenu) {
|
@@ -48,7 +32,7 @@ export function createDefaultShortcutsList(menu) {
|
|
48
32
|
}, {
|
49
33
|
keys: [['ArrowLeft']],
|
50
34
|
callback: () => {
|
51
|
-
const selection = hotMenu.getSelectedLast();
|
35
|
+
const selection = menu.hotMenu.getSelectedLast();
|
52
36
|
if (selection && menu.isSubMenu()) {
|
53
37
|
menu.close();
|
54
38
|
if (menu.isSubMenu()) {
|
@@ -65,11 +49,11 @@ export function createDefaultShortcutsList(menu) {
|
|
65
49
|
}, {
|
66
50
|
keys: [['Enter'], ['Space']],
|
67
51
|
callback: event => {
|
68
|
-
const selection = hotMenu.getSelectedLast();
|
52
|
+
const selection = menu.hotMenu.getSelectedLast();
|
69
53
|
if (!selection) {
|
70
54
|
return;
|
71
55
|
}
|
72
|
-
if (hotMenu.getSourceDataAtRow(selection[0]).submenu) {
|
56
|
+
if (menu.hotMenu.getSourceDataAtRow(selection[0]).submenu) {
|
73
57
|
menu.openSubMenu(selection[0]).getNavigator().toFirstItem();
|
74
58
|
} else {
|
75
59
|
menu.executeCommand(event);
|
@@ -79,9 +63,9 @@ export function createDefaultShortcutsList(menu) {
|
|
79
63
|
}, {
|
80
64
|
keys: [['PageUp']],
|
81
65
|
callback: () => {
|
82
|
-
const selection = hotMenu.getSelectedLast();
|
66
|
+
const selection = menu.hotMenu.getSelectedLast();
|
83
67
|
if (selection) {
|
84
|
-
hotMenu.selection.transformStart(-hotMenu.countVisibleRows(), 0);
|
68
|
+
menu.hotMenu.selection.transformStart(-menu.hotMenu.countVisibleRows(), 0);
|
85
69
|
} else {
|
86
70
|
menu.getNavigator().toFirstItem();
|
87
71
|
}
|
@@ -89,9 +73,9 @@ export function createDefaultShortcutsList(menu) {
|
|
89
73
|
}, {
|
90
74
|
keys: [['PageDown']],
|
91
75
|
callback: () => {
|
92
|
-
const selection = hotMenu.getSelectedLast();
|
76
|
+
const selection = menu.hotMenu.getSelectedLast();
|
93
77
|
if (selection) {
|
94
|
-
hotMenu.selection.transformStart(hotMenu.countVisibleRows(), 0);
|
78
|
+
menu.hotMenu.selection.transformStart(menu.hotMenu.countVisibleRows(), 0);
|
95
79
|
} else {
|
96
80
|
menu.getNavigator().toLastItem();
|
97
81
|
}
|
@@ -1,7 +1,7 @@
|
|
1
1
|
"use strict";
|
2
2
|
|
3
|
-
exports.__esModule = true;
|
4
3
|
require("core-js/modules/es.error.cause.js");
|
4
|
+
exports.__esModule = true;
|
5
5
|
require("core-js/modules/es.array.push.js");
|
6
6
|
var _positioner = require("./positioner");
|
7
7
|
var _navigator2 = require("./navigator");
|
@@ -25,9 +25,11 @@ function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollect
|
|
25
25
|
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
26
26
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); }
|
27
27
|
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
28
|
-
function _classPrivateFieldSet(
|
29
|
-
function
|
30
|
-
function
|
28
|
+
function _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "set"); _classApplyDescriptorSet(receiver, descriptor, value); return value; }
|
29
|
+
function _classApplyDescriptorSet(receiver, descriptor, value) { if (descriptor.set) { descriptor.set.call(receiver, value); } else { if (!descriptor.writable) { throw new TypeError("attempted to set read only private field"); } descriptor.value = value; } }
|
30
|
+
function _classPrivateFieldGet(receiver, privateMap) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "get"); return _classApplyDescriptorGet(receiver, descriptor); }
|
31
|
+
function _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to " + action + " private field on non-instance"); } return privateMap.get(receiver); }
|
32
|
+
function _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; }
|
31
33
|
const MIN_WIDTH = 215;
|
32
34
|
|
33
35
|
/**
|
@@ -113,13 +115,19 @@ class Menu {
|
|
113
115
|
*
|
114
116
|
* @type {Paginator}
|
115
117
|
*/
|
116
|
-
_classPrivateFieldInitSpec(this, _navigator,
|
118
|
+
_classPrivateFieldInitSpec(this, _navigator, {
|
119
|
+
writable: true,
|
120
|
+
value: void 0
|
121
|
+
});
|
117
122
|
/**
|
118
123
|
* The controller module that allows extending the keyboard shortcuts for the menu.
|
119
124
|
*
|
120
125
|
* @type {KeyboardShortcutsMenuController}
|
121
126
|
*/
|
122
|
-
_classPrivateFieldInitSpec(this, _shortcutsCtrl,
|
127
|
+
_classPrivateFieldInitSpec(this, _shortcutsCtrl, {
|
128
|
+
writable: true,
|
129
|
+
value: void 0
|
130
|
+
});
|
123
131
|
this.hot = hotInstance;
|
124
132
|
this.options = options || {
|
125
133
|
parent: null,
|
@@ -173,7 +181,7 @@ class Menu {
|
|
173
181
|
* @returns {Paginator | undefined}
|
174
182
|
*/
|
175
183
|
getNavigator() {
|
176
|
-
return _classPrivateFieldGet(
|
184
|
+
return _classPrivateFieldGet(this, _navigator);
|
177
185
|
}
|
178
186
|
|
179
187
|
/**
|
@@ -182,7 +190,7 @@ class Menu {
|
|
182
190
|
* @returns {KeyboardShortcutsMenuController | undefined}
|
183
191
|
*/
|
184
192
|
getKeyboardShortcutsCtrl() {
|
185
|
-
return _classPrivateFieldGet(
|
193
|
+
return _classPrivateFieldGet(this, _shortcutsCtrl);
|
186
194
|
}
|
187
195
|
|
188
196
|
/**
|
@@ -266,7 +274,7 @@ class Menu {
|
|
266
274
|
layoutDirection: this.hot.isRtl() ? 'rtl' : 'ltr',
|
267
275
|
ariaTags: false,
|
268
276
|
beforeOnCellMouseOver: (event, coords) => {
|
269
|
-
_classPrivateFieldGet(
|
277
|
+
_classPrivateFieldGet(this, _navigator).setCurrentPage(coords.row);
|
270
278
|
},
|
271
279
|
afterOnCellMouseOver: (event, coords) => {
|
272
280
|
if (this.isAllSubMenusClosed()) {
|
@@ -328,9 +336,9 @@ class Menu {
|
|
328
336
|
this.hotMenu = new this.hot.constructor(this.container, settings);
|
329
337
|
this.hotMenu.addHook('afterInit', () => this.onAfterInit());
|
330
338
|
this.hotMenu.init();
|
331
|
-
_classPrivateFieldSet(
|
332
|
-
_classPrivateFieldSet(
|
333
|
-
_classPrivateFieldGet(
|
339
|
+
_classPrivateFieldSet(this, _navigator, (0, _navigator2.createMenuNavigator)(this.hotMenu));
|
340
|
+
_classPrivateFieldSet(this, _shortcutsCtrl, (0, _shortcuts.createKeyboardShortcutsCtrl)(this));
|
341
|
+
_classPrivateFieldGet(this, _shortcutsCtrl).listen();
|
334
342
|
this.focus();
|
335
343
|
if (this.isSubMenu()) {
|
336
344
|
this.addLocalHook('afterOpen', () => this.parentMenu.runLocalHooks('afterSubmenuOpen', this));
|
@@ -351,7 +359,7 @@ class Menu {
|
|
351
359
|
if (closeParent && this.isSubMenu()) {
|
352
360
|
this.parentMenu.close();
|
353
361
|
} else {
|
354
|
-
_classPrivateFieldGet(
|
362
|
+
_classPrivateFieldGet(this, _navigator).clear();
|
355
363
|
this.closeAllSubMenus();
|
356
364
|
this.container.style.display = 'none';
|
357
365
|
this.hotMenu.destroy();
|
@@ -1,13 +1,15 @@
|
|
1
|
-
import "core-js/modules/es.error.cause.js";
|
2
1
|
import "core-js/modules/es.array.push.js";
|
2
|
+
import "core-js/modules/es.error.cause.js";
|
3
3
|
function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
|
4
4
|
function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
|
5
5
|
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
6
6
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); }
|
7
7
|
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
8
|
-
function _classPrivateFieldSet(
|
9
|
-
function
|
10
|
-
function
|
8
|
+
function _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "set"); _classApplyDescriptorSet(receiver, descriptor, value); return value; }
|
9
|
+
function _classApplyDescriptorSet(receiver, descriptor, value) { if (descriptor.set) { descriptor.set.call(receiver, value); } else { if (!descriptor.writable) { throw new TypeError("attempted to set read only private field"); } descriptor.value = value; } }
|
10
|
+
function _classPrivateFieldGet(receiver, privateMap) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "get"); return _classApplyDescriptorGet(receiver, descriptor); }
|
11
|
+
function _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to " + action + " private field on non-instance"); } return privateMap.get(receiver); }
|
12
|
+
function _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; }
|
11
13
|
import { Positioner } from "./positioner.mjs";
|
12
14
|
import { createMenuNavigator } from "./navigator.mjs";
|
13
15
|
import { createKeyboardShortcutsCtrl } from "./shortcuts.mjs";
|
@@ -109,13 +111,19 @@ export class Menu {
|
|
109
111
|
*
|
110
112
|
* @type {Paginator}
|
111
113
|
*/
|
112
|
-
_classPrivateFieldInitSpec(this, _navigator,
|
114
|
+
_classPrivateFieldInitSpec(this, _navigator, {
|
115
|
+
writable: true,
|
116
|
+
value: void 0
|
117
|
+
});
|
113
118
|
/**
|
114
119
|
* The controller module that allows extending the keyboard shortcuts for the menu.
|
115
120
|
*
|
116
121
|
* @type {KeyboardShortcutsMenuController}
|
117
122
|
*/
|
118
|
-
_classPrivateFieldInitSpec(this, _shortcutsCtrl,
|
123
|
+
_classPrivateFieldInitSpec(this, _shortcutsCtrl, {
|
124
|
+
writable: true,
|
125
|
+
value: void 0
|
126
|
+
});
|
119
127
|
this.hot = hotInstance;
|
120
128
|
this.options = options || {
|
121
129
|
parent: null,
|
@@ -169,7 +177,7 @@ export class Menu {
|
|
169
177
|
* @returns {Paginator | undefined}
|
170
178
|
*/
|
171
179
|
getNavigator() {
|
172
|
-
return _classPrivateFieldGet(
|
180
|
+
return _classPrivateFieldGet(this, _navigator);
|
173
181
|
}
|
174
182
|
|
175
183
|
/**
|
@@ -178,7 +186,7 @@ export class Menu {
|
|
178
186
|
* @returns {KeyboardShortcutsMenuController | undefined}
|
179
187
|
*/
|
180
188
|
getKeyboardShortcutsCtrl() {
|
181
|
-
return _classPrivateFieldGet(
|
189
|
+
return _classPrivateFieldGet(this, _shortcutsCtrl);
|
182
190
|
}
|
183
191
|
|
184
192
|
/**
|
@@ -262,7 +270,7 @@ export class Menu {
|
|
262
270
|
layoutDirection: this.hot.isRtl() ? 'rtl' : 'ltr',
|
263
271
|
ariaTags: false,
|
264
272
|
beforeOnCellMouseOver: (event, coords) => {
|
265
|
-
_classPrivateFieldGet(
|
273
|
+
_classPrivateFieldGet(this, _navigator).setCurrentPage(coords.row);
|
266
274
|
},
|
267
275
|
afterOnCellMouseOver: (event, coords) => {
|
268
276
|
if (this.isAllSubMenusClosed()) {
|
@@ -324,9 +332,9 @@ export class Menu {
|
|
324
332
|
this.hotMenu = new this.hot.constructor(this.container, settings);
|
325
333
|
this.hotMenu.addHook('afterInit', () => this.onAfterInit());
|
326
334
|
this.hotMenu.init();
|
327
|
-
_classPrivateFieldSet(
|
328
|
-
_classPrivateFieldSet(
|
329
|
-
_classPrivateFieldGet(
|
335
|
+
_classPrivateFieldSet(this, _navigator, createMenuNavigator(this.hotMenu));
|
336
|
+
_classPrivateFieldSet(this, _shortcutsCtrl, createKeyboardShortcutsCtrl(this));
|
337
|
+
_classPrivateFieldGet(this, _shortcutsCtrl).listen();
|
330
338
|
this.focus();
|
331
339
|
if (this.isSubMenu()) {
|
332
340
|
this.addLocalHook('afterOpen', () => this.parentMenu.runLocalHooks('afterSubmenuOpen', this));
|
@@ -347,7 +355,7 @@ export class Menu {
|
|
347
355
|
if (closeParent && this.isSubMenu()) {
|
348
356
|
this.parentMenu.close();
|
349
357
|
} else {
|
350
|
-
_classPrivateFieldGet(
|
358
|
+
_classPrivateFieldGet(this, _navigator).clear();
|
351
359
|
this.closeAllSubMenus();
|
352
360
|
this.container.style.display = 'none';
|
353
361
|
this.hotMenu.destroy();
|