handsontable 0.0.0-next-baf2fcf-20230809 → 0.0.0-next-be16baf-20230809
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.
- package/3rdparty/walkontable/src/cell/coords.d.ts +6 -1
- package/3rdparty/walkontable/src/cell/coords.js +50 -11
- package/3rdparty/walkontable/src/cell/coords.mjs +50 -11
- package/3rdparty/walkontable/src/cell/range.d.ts +9 -2
- package/3rdparty/walkontable/src/cell/range.js +38 -7
- package/3rdparty/walkontable/src/cell/range.mjs +38 -7
- package/3rdparty/walkontable/src/core/_base.js +9 -3
- package/3rdparty/walkontable/src/core/_base.mjs +9 -3
- package/3rdparty/walkontable/src/core/clone.js +2 -2
- package/3rdparty/walkontable/src/core/clone.mjs +2 -2
- package/3rdparty/walkontable/src/core/core.js +3 -2
- package/3rdparty/walkontable/src/core/core.mjs +3 -2
- package/3rdparty/walkontable/src/event.js +7 -7
- package/3rdparty/walkontable/src/event.mjs +7 -7
- package/3rdparty/walkontable/src/facade/core.js +2 -2
- package/3rdparty/walkontable/src/facade/core.mjs +2 -2
- package/3rdparty/walkontable/src/index.js +10 -2
- package/3rdparty/walkontable/src/index.mjs +2 -2
- package/3rdparty/walkontable/src/overlay/_base.js +1 -1
- package/3rdparty/walkontable/src/overlay/_base.mjs +1 -1
- package/3rdparty/walkontable/src/overlay/inlineStart.js +2 -6
- package/3rdparty/walkontable/src/overlay/inlineStart.mjs +2 -6
- package/3rdparty/walkontable/src/overlay/top.js +2 -6
- package/3rdparty/walkontable/src/overlay/top.mjs +2 -6
- package/3rdparty/walkontable/src/{border.js → selection/border/border.js} +7 -12
- package/3rdparty/walkontable/src/{border.mjs → selection/border/border.mjs} +7 -12
- package/3rdparty/walkontable/src/selection/border/constants.js +16 -0
- package/3rdparty/walkontable/src/selection/border/constants.mjs +12 -0
- package/3rdparty/walkontable/src/selection/constants.js +62 -0
- package/3rdparty/walkontable/src/selection/constants.mjs +51 -0
- package/3rdparty/walkontable/src/selection/index.js +26 -0
- package/3rdparty/walkontable/src/selection/index.mjs +5 -0
- package/3rdparty/walkontable/src/selection/manager.js +259 -0
- package/3rdparty/walkontable/src/selection/manager.mjs +254 -0
- package/3rdparty/walkontable/src/selection/scanner.js +270 -0
- package/3rdparty/walkontable/src/selection/scanner.mjs +267 -0
- package/3rdparty/walkontable/src/selection/selection.js +101 -0
- package/3rdparty/walkontable/src/selection/selection.mjs +96 -0
- package/3rdparty/walkontable/src/table/mixin/calculatedColumns.js +9 -0
- package/3rdparty/walkontable/src/table/mixin/calculatedColumns.mjs +9 -0
- package/3rdparty/walkontable/src/table/mixin/calculatedRows.js +9 -0
- package/3rdparty/walkontable/src/table/mixin/calculatedRows.mjs +9 -0
- package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.js +9 -0
- package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.mjs +9 -0
- package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.js +9 -0
- package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.mjs +9 -0
- package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.js +9 -0
- package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.mjs +9 -0
- package/3rdparty/walkontable/src/table.js +6 -78
- package/3rdparty/walkontable/src/table.mjs +7 -79
- package/base.js +2 -2
- package/base.mjs +2 -2
- package/common.d.ts +1 -1
- package/core/focusCatcher/focusDetector.js +58 -0
- package/core/focusCatcher/focusDetector.mjs +54 -0
- package/core/focusCatcher/index.js +142 -0
- package/core/focusCatcher/index.mjs +138 -0
- package/core/index.js +9 -0
- package/core/index.mjs +1 -0
- package/core.d.ts +6 -3
- package/core.js +176 -293
- package/core.mjs +176 -293
- package/dataMap/metaManager/metaSchema.js +41 -0
- package/dataMap/metaManager/metaSchema.mjs +41 -0
- package/dist/handsontable.css +24 -4
- package/dist/handsontable.full.css +24 -4
- package/dist/handsontable.full.js +8682 -5384
- package/dist/handsontable.full.min.css +3 -3
- package/dist/handsontable.full.min.js +25 -25
- package/dist/handsontable.js +10989 -7691
- package/dist/handsontable.min.css +3 -3
- package/dist/handsontable.min.js +19 -19
- package/editorManager.js +11 -75
- package/editorManager.mjs +11 -74
- package/editors/baseEditor/baseEditor.d.ts +0 -1
- package/editors/textEditor/textEditor.js +3 -11
- package/editors/textEditor/textEditor.mjs +4 -12
- package/helpers/mixed.js +1 -1
- package/helpers/mixed.mjs +1 -1
- package/helpers/number.d.ts +1 -0
- package/helpers/number.js +18 -0
- package/helpers/number.mjs +17 -0
- package/package.json +1 -1
- package/pluginHooks.d.ts +7 -1
- package/pluginHooks.js +106 -1
- package/pluginHooks.mjs +106 -1
- package/plugins/collapsibleColumns/collapsibleColumns.js +58 -4
- package/plugins/collapsibleColumns/collapsibleColumns.mjs +58 -4
- package/plugins/columnSorting/columnSorting.js +38 -0
- package/plugins/columnSorting/columnSorting.mjs +38 -2
- package/plugins/columnSorting/index.js +3 -1
- package/plugins/columnSorting/index.mjs +1 -1
- package/plugins/comments/commentEditor.js +1 -0
- package/plugins/comments/commentEditor.mjs +1 -0
- package/plugins/comments/comments.js +251 -189
- package/plugins/comments/comments.mjs +250 -190
- package/plugins/comments/contextMenuItem/addEditComment.js +41 -0
- package/plugins/comments/contextMenuItem/addEditComment.mjs +35 -0
- package/plugins/comments/contextMenuItem/readOnlyComment.js +49 -0
- package/plugins/comments/contextMenuItem/readOnlyComment.mjs +43 -0
- package/plugins/comments/contextMenuItem/removeComment.js +38 -0
- package/plugins/comments/contextMenuItem/removeComment.mjs +32 -0
- package/plugins/contextMenu/contextMenu.d.ts +1 -1
- package/plugins/contextMenu/contextMenu.js +72 -30
- package/plugins/contextMenu/contextMenu.mjs +73 -31
- package/plugins/contextMenu/predefinedItems/alignment.js +7 -0
- package/plugins/contextMenu/predefinedItems/alignment.mjs +7 -0
- package/plugins/contextMenu/predefinedItems/clearColumn.js +5 -3
- package/plugins/contextMenu/predefinedItems/clearColumn.mjs +5 -3
- package/plugins/contextMenu/predefinedItems/columnLeft.js +5 -3
- package/plugins/contextMenu/predefinedItems/columnLeft.mjs +5 -3
- package/plugins/contextMenu/predefinedItems/columnRight.js +5 -3
- package/plugins/contextMenu/predefinedItems/columnRight.mjs +5 -3
- package/plugins/contextMenu/predefinedItems/readOnly.js +7 -0
- package/plugins/contextMenu/predefinedItems/readOnly.mjs +7 -0
- package/plugins/contextMenu/predefinedItems/removeColumn.js +7 -5
- package/plugins/contextMenu/predefinedItems/removeColumn.mjs +5 -3
- package/plugins/contextMenu/predefinedItems/removeRow.js +7 -5
- package/plugins/contextMenu/predefinedItems/removeRow.mjs +5 -3
- package/plugins/contextMenu/predefinedItems/rowAbove.js +5 -3
- package/plugins/contextMenu/predefinedItems/rowAbove.mjs +5 -3
- package/plugins/contextMenu/predefinedItems/rowBelow.js +5 -3
- package/plugins/contextMenu/predefinedItems/rowBelow.mjs +5 -3
- package/plugins/contextMenu/utils.js +28 -16
- package/plugins/contextMenu/utils.mjs +27 -15
- package/plugins/copyPaste/contextMenuItem/copy.js +7 -0
- package/plugins/copyPaste/contextMenuItem/copy.mjs +7 -0
- package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.js +9 -1
- package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.mjs +9 -1
- package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.js +9 -1
- package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.mjs +9 -1
- package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.js +9 -1
- package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.mjs +9 -1
- package/plugins/copyPaste/contextMenuItem/cut.js +7 -0
- package/plugins/copyPaste/contextMenuItem/cut.mjs +7 -0
- package/plugins/copyPaste/copyPaste.js +14 -10
- package/plugins/copyPaste/copyPaste.mjs +14 -10
- package/plugins/customBorders/customBorders.js +23 -20
- package/plugins/customBorders/customBorders.mjs +24 -21
- package/plugins/dropdownMenu/dropdownMenu.d.ts +1 -1
- package/plugins/dropdownMenu/dropdownMenu.js +89 -32
- package/plugins/dropdownMenu/dropdownMenu.mjs +89 -32
- package/plugins/filters/filters.js +31 -14
- package/plugins/filters/filters.mjs +30 -13
- package/plugins/manualColumnResize/manualColumnResize.js +0 -6
- package/plugins/manualColumnResize/manualColumnResize.mjs +1 -7
- package/plugins/mergeCells/mergeCells.js +5 -17
- package/plugins/mergeCells/mergeCells.mjs +5 -17
- package/plugins/multiColumnSorting/multiColumnSorting.js +37 -2
- package/plugins/multiColumnSorting/multiColumnSorting.mjs +37 -2
- package/plugins/nestedHeaders/nestedHeaders.js +121 -8
- package/plugins/nestedHeaders/nestedHeaders.mjs +121 -8
- package/plugins/nestedHeaders/stateManager/index.js +37 -0
- package/plugins/nestedHeaders/stateManager/index.mjs +37 -0
- package/plugins/nestedRows/nestedRows.js +41 -0
- package/plugins/nestedRows/nestedRows.mjs +41 -0
- package/renderers/checkboxRenderer/checkboxRenderer.js +2 -2
- package/renderers/checkboxRenderer/checkboxRenderer.mjs +1 -1
- package/selection/highlight/highlight.js +256 -71
- package/selection/highlight/highlight.mjs +250 -71
- package/selection/highlight/types/activeHeader.js +10 -8
- package/selection/highlight/types/activeHeader.mjs +10 -8
- package/selection/highlight/types/area.js +6 -18
- package/selection/highlight/types/area.mjs +6 -18
- package/selection/highlight/types/areaLayered.js +31 -0
- package/selection/highlight/types/areaLayered.mjs +26 -0
- package/selection/highlight/types/column.js +27 -0
- package/selection/highlight/types/column.mjs +22 -0
- package/selection/highlight/types/customSelection.js +7 -9
- package/selection/highlight/types/customSelection.mjs +7 -9
- package/selection/highlight/types/fill.js +5 -7
- package/selection/highlight/types/fill.mjs +5 -7
- package/selection/highlight/types/{cell.js → focus.js} +5 -7
- package/selection/highlight/types/{cell.mjs → focus.mjs} +5 -7
- package/selection/highlight/types/header.js +9 -18
- package/selection/highlight/types/header.mjs +9 -18
- package/selection/highlight/types/row.js +27 -0
- package/selection/highlight/types/row.mjs +22 -0
- package/selection/highlight/visualSelection.js +31 -27
- package/selection/highlight/visualSelection.mjs +31 -27
- package/selection/index.js +4 -7
- package/selection/index.mjs +2 -3
- package/selection/mouseEventHandler.js +1 -1
- package/selection/mouseEventHandler.mjs +1 -1
- package/selection/range.js +8 -8
- package/selection/range.mjs +8 -8
- package/selection/selection.js +293 -154
- package/selection/selection.mjs +290 -153
- package/selection/transformation.js +232 -90
- package/selection/transformation.mjs +232 -90
- package/selection/utils.js +15 -21
- package/selection/utils.mjs +16 -21
- package/settings.d.ts +2 -0
- package/shortcutContexts/commands/editor/closeAndSave.js +12 -0
- package/shortcutContexts/commands/editor/closeAndSave.mjs +8 -0
- package/shortcutContexts/commands/editor/closeWithoutSaving.js +12 -0
- package/shortcutContexts/commands/editor/closeWithoutSaving.mjs +8 -0
- package/shortcutContexts/commands/editor/fastOpen.js +16 -0
- package/shortcutContexts/commands/editor/fastOpen.mjs +12 -0
- package/shortcutContexts/commands/editor/index.js +16 -0
- package/shortcutContexts/commands/editor/index.mjs +12 -0
- package/shortcutContexts/commands/editor/open.js +27 -0
- package/shortcutContexts/commands/editor/open.mjs +23 -0
- package/shortcutContexts/commands/emptySelectedCells.js +11 -0
- package/shortcutContexts/commands/emptySelectedCells.mjs +7 -0
- package/shortcutContexts/commands/extendCellsSelection/down.js +15 -0
- package/shortcutContexts/commands/extendCellsSelection/down.mjs +11 -0
- package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.js +21 -0
- package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.mjs +17 -0
- package/shortcutContexts/commands/extendCellsSelection/index.js +26 -0
- package/shortcutContexts/commands/extendCellsSelection/index.mjs +22 -0
- package/shortcutContexts/commands/extendCellsSelection/left.js +15 -0
- package/shortcutContexts/commands/extendCellsSelection/left.mjs +11 -0
- package/shortcutContexts/commands/extendCellsSelection/right.js +15 -0
- package/shortcutContexts/commands/extendCellsSelection/right.mjs +11 -0
- package/shortcutContexts/commands/extendCellsSelection/toColumns.js +19 -0
- package/shortcutContexts/commands/extendCellsSelection/toColumns.mjs +15 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostBottom.js +29 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostBottom.mjs +25 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.js +19 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.mjs +15 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.js +19 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.mjs +15 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostLeft.js +29 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostLeft.mjs +25 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostRight.js +29 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostRight.mjs +25 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostTop.js +29 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostTop.mjs +25 -0
- package/shortcutContexts/commands/extendCellsSelection/toRows.js +19 -0
- package/shortcutContexts/commands/extendCellsSelection/toRows.mjs +15 -0
- package/shortcutContexts/commands/extendCellsSelection/up.js +15 -0
- package/shortcutContexts/commands/extendCellsSelection/up.mjs +11 -0
- package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.js +21 -0
- package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.mjs +17 -0
- package/shortcutContexts/commands/index.js +35 -0
- package/shortcutContexts/commands/index.mjs +31 -0
- package/shortcutContexts/commands/moveCellSelection/down.js +13 -0
- package/shortcutContexts/commands/moveCellSelection/down.mjs +9 -0
- package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.js +31 -0
- package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.mjs +27 -0
- package/shortcutContexts/commands/moveCellSelection/index.js +28 -0
- package/shortcutContexts/commands/moveCellSelection/index.mjs +24 -0
- package/shortcutContexts/commands/moveCellSelection/inlineEnd.js +12 -0
- package/shortcutContexts/commands/moveCellSelection/inlineEnd.mjs +8 -0
- package/shortcutContexts/commands/moveCellSelection/inlineStart.js +12 -0
- package/shortcutContexts/commands/moveCellSelection/inlineStart.mjs +8 -0
- package/shortcutContexts/commands/moveCellSelection/left.js +10 -0
- package/shortcutContexts/commands/moveCellSelection/left.mjs +6 -0
- package/shortcutContexts/commands/moveCellSelection/right.js +10 -0
- package/shortcutContexts/commands/moveCellSelection/right.mjs +6 -0
- package/shortcutContexts/commands/moveCellSelection/toMostBottom.js +17 -0
- package/shortcutContexts/commands/moveCellSelection/toMostBottom.mjs +13 -0
- package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.js +18 -0
- package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.mjs +14 -0
- package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.js +14 -0
- package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.mjs +10 -0
- package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.js +17 -0
- package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.mjs +13 -0
- package/shortcutContexts/commands/moveCellSelection/toMostLeft.js +19 -0
- package/shortcutContexts/commands/moveCellSelection/toMostLeft.mjs +15 -0
- package/shortcutContexts/commands/moveCellSelection/toMostRight.js +21 -0
- package/shortcutContexts/commands/moveCellSelection/toMostRight.mjs +17 -0
- package/shortcutContexts/commands/moveCellSelection/toMostTop.js +17 -0
- package/shortcutContexts/commands/moveCellSelection/toMostTop.mjs +13 -0
- package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.js +19 -0
- package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.mjs +15 -0
- package/shortcutContexts/commands/moveCellSelection/up.js +13 -0
- package/shortcutContexts/commands/moveCellSelection/up.mjs +9 -0
- package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.js +31 -0
- package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.mjs +27 -0
- package/shortcutContexts/commands/populateSelectedCellsData.js +29 -0
- package/shortcutContexts/commands/populateSelectedCellsData.mjs +25 -0
- package/shortcutContexts/commands/scrollToFocusedCell.js +36 -0
- package/shortcutContexts/commands/scrollToFocusedCell.mjs +32 -0
- package/shortcutContexts/commands/selectAll.js +10 -0
- package/shortcutContexts/commands/selectAll.mjs +6 -0
- package/shortcutContexts/constants.js +13 -0
- package/shortcutContexts/constants.mjs +8 -0
- package/shortcutContexts/editor.js +25 -0
- package/shortcutContexts/editor.mjs +21 -0
- package/shortcutContexts/grid.js +163 -0
- package/shortcutContexts/grid.mjs +159 -0
- package/shortcutContexts/index.js +24 -0
- package/shortcutContexts/index.mjs +11 -0
- package/shortcuts/manager.js +2 -0
- package/shortcuts/manager.mjs +2 -0
- package/shortcuts/recorder.js +2 -2
- package/shortcuts/recorder.mjs +2 -2
- package/shortcuts/utils.js +19 -5
- package/shortcuts/utils.mjs +18 -4
- package/tableView.js +67 -13
- package/tableView.mjs +67 -13
- package/3rdparty/walkontable/src/selection.js +0 -295
- package/3rdparty/walkontable/src/selection.mjs +0 -290
- package/selection/highlight/constants.js +0 -15
- package/selection/highlight/constants.mjs +0 -6
- package/selection/highlight/types/index.js +0 -35
- package/selection/highlight/types/index.mjs +0 -31
@@ -1,20 +1,34 @@
|
|
1
1
|
import "core-js/modules/es.error.cause.js";
|
2
2
|
import "core-js/modules/es.array.push.js";
|
3
|
+
function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
|
4
|
+
function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
|
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
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
7
|
+
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); }
|
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; }
|
3
13
|
import { addClass, closest, isChildOf, hasClass, outerWidth, outerHeight } from "../../helpers/dom/element.mjs";
|
14
|
+
import { stopImmediatePropagation } from "../../helpers/dom/event.mjs";
|
4
15
|
import { deepClone, deepExtend, isObject } from "../../helpers/object.mjs";
|
5
16
|
import EventManager from "../../eventManager.mjs";
|
6
17
|
import { BasePlugin } from "../base/index.mjs";
|
7
18
|
import CommentEditor from "./commentEditor.mjs";
|
8
|
-
import { checkSelectionConsistency, markLabelAsSelected } from "../contextMenu/utils.mjs";
|
9
19
|
import DisplaySwitch from "./displaySwitch.mjs";
|
10
|
-
import
|
20
|
+
import { SEPARATOR } from "../contextMenu/predefinedItems.mjs";
|
21
|
+
import addEditCommentItem from "./contextMenuItem/addEditComment.mjs";
|
22
|
+
import removeCommentItem from "./contextMenuItem/removeComment.mjs";
|
23
|
+
import readOnlyCommentItem from "./contextMenuItem/readOnlyComment.mjs";
|
11
24
|
export const PLUGIN_KEY = 'comments';
|
12
25
|
export const PLUGIN_PRIORITY = 60;
|
13
|
-
const
|
14
|
-
const
|
15
|
-
const
|
16
|
-
const
|
17
|
-
const
|
26
|
+
export const META_COMMENT = 'comment';
|
27
|
+
export const META_COMMENT_VALUE = 'value';
|
28
|
+
export const META_STYLE = 'style';
|
29
|
+
export const META_READONLY = 'readOnly';
|
30
|
+
const SHORTCUTS_GROUP = PLUGIN_KEY;
|
31
|
+
const SHORTCUTS_CONTEXT_NAME = `plugin:${PLUGIN_KEY}`;
|
18
32
|
|
19
33
|
/* eslint-disable jsdoc/require-description-complete-sentence */
|
20
34
|
/**
|
@@ -106,55 +120,107 @@ const META_READONLY = 'readOnly';
|
|
106
120
|
* ```
|
107
121
|
* :::
|
108
122
|
*/
|
123
|
+
var _editor = /*#__PURE__*/new WeakMap();
|
124
|
+
var _displaySwitch = /*#__PURE__*/new WeakMap();
|
125
|
+
var _preventEditorAutoSwitch = /*#__PURE__*/new WeakMap();
|
126
|
+
var _preventEditorHiding = /*#__PURE__*/new WeakMap();
|
127
|
+
var _tempEditorDimensions = /*#__PURE__*/new WeakMap();
|
128
|
+
var _cellBelowCursor = /*#__PURE__*/new WeakMap();
|
129
|
+
var _commentValueBeforeSave = /*#__PURE__*/new WeakMap();
|
109
130
|
export class Comments extends BasePlugin {
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
131
|
+
constructor() {
|
132
|
+
super(...arguments);
|
133
|
+
/**
|
134
|
+
* Current cell range, an object with `from` property, with `row` and `col` properties (e.q. `{from: {row: 1, col: 6}}`).
|
135
|
+
*
|
136
|
+
* @type {object}
|
137
|
+
*/
|
138
|
+
_defineProperty(this, "range", {});
|
139
|
+
/**
|
140
|
+
* Instance of {@link EventManager}.
|
141
|
+
*
|
142
|
+
* @protected
|
143
|
+
* @type {EventManager}
|
144
|
+
*/
|
145
|
+
_defineProperty(this, "eventManager", null);
|
118
146
|
/**
|
119
147
|
* Instance of {@link CommentEditor}.
|
120
148
|
*
|
121
149
|
* @private
|
122
150
|
* @type {CommentEditor}
|
123
151
|
*/
|
124
|
-
this
|
152
|
+
_classPrivateFieldInitSpec(this, _editor, {
|
153
|
+
writable: true,
|
154
|
+
value: null
|
155
|
+
});
|
125
156
|
/**
|
126
157
|
* Instance of {@link DisplaySwitch}.
|
127
158
|
*
|
128
159
|
* @private
|
129
160
|
* @type {DisplaySwitch}
|
130
161
|
*/
|
131
|
-
this
|
162
|
+
_classPrivateFieldInitSpec(this, _displaySwitch, {
|
163
|
+
writable: true,
|
164
|
+
value: null
|
165
|
+
});
|
132
166
|
/**
|
133
|
-
*
|
167
|
+
* Prevents showing/hiding editor that reacts on the logic triggered by the "mouseover" events.
|
134
168
|
*
|
135
169
|
* @private
|
136
|
-
* @type {
|
170
|
+
* @type {boolean}
|
137
171
|
*/
|
138
|
-
this
|
172
|
+
_classPrivateFieldInitSpec(this, _preventEditorAutoSwitch, {
|
173
|
+
writable: true,
|
174
|
+
value: false
|
175
|
+
});
|
139
176
|
/**
|
140
|
-
*
|
177
|
+
* Prevents hiding editor when the table viewport is scrolled and that scroll is triggered by the
|
178
|
+
* keyboard shortcut that insert or edits the comment.
|
141
179
|
*
|
180
|
+
* @private
|
181
|
+
* @type {boolean}
|
182
|
+
*/
|
183
|
+
_classPrivateFieldInitSpec(this, _preventEditorHiding, {
|
184
|
+
writable: true,
|
185
|
+
value: false
|
186
|
+
});
|
187
|
+
/**
|
188
|
+
* The property for holding editor dimensions for further processing.
|
189
|
+
*
|
190
|
+
* @private
|
142
191
|
* @type {object}
|
143
192
|
*/
|
144
|
-
this
|
193
|
+
_classPrivateFieldInitSpec(this, _tempEditorDimensions, {
|
194
|
+
writable: true,
|
195
|
+
value: {}
|
196
|
+
});
|
145
197
|
/**
|
146
|
-
*
|
198
|
+
* The flag that allows processing mousedown event correctly when comments editor is triggered.
|
147
199
|
*
|
148
200
|
* @private
|
149
201
|
* @type {boolean}
|
150
202
|
*/
|
151
|
-
this
|
152
|
-
|
153
|
-
|
154
|
-
|
203
|
+
_classPrivateFieldInitSpec(this, _cellBelowCursor, {
|
204
|
+
writable: true,
|
205
|
+
value: null
|
206
|
+
});
|
207
|
+
/**
|
208
|
+
* Holds the comment value before it's actually saved to the cell meta.
|
209
|
+
*
|
210
|
+
* @private
|
211
|
+
* @type {string}
|
212
|
+
*/
|
213
|
+
_classPrivateFieldInitSpec(this, _commentValueBeforeSave, {
|
214
|
+
writable: true,
|
215
|
+
value: ''
|
155
216
|
});
|
156
217
|
}
|
157
|
-
|
218
|
+
static get PLUGIN_KEY() {
|
219
|
+
return PLUGIN_KEY;
|
220
|
+
}
|
221
|
+
static get PLUGIN_PRIORITY() {
|
222
|
+
return PLUGIN_PRIORITY;
|
223
|
+
}
|
158
224
|
/**
|
159
225
|
* Checks if the plugin is enabled in the handsontable settings. This method is executed in {@link Hooks#beforeInit}
|
160
226
|
* hook and if it returns `true` then the {@link Comments#enablePlugin} method is called.
|
@@ -172,22 +238,23 @@ export class Comments extends BasePlugin {
|
|
172
238
|
if (this.enabled) {
|
173
239
|
return;
|
174
240
|
}
|
175
|
-
if (!this
|
176
|
-
this
|
241
|
+
if (!_classPrivateFieldGet(this, _editor)) {
|
242
|
+
_classPrivateFieldSet(this, _editor, new CommentEditor(this.hot.rootDocument, this.hot.isRtl()));
|
177
243
|
}
|
178
244
|
if (!this.eventManager) {
|
179
245
|
this.eventManager = new EventManager(this);
|
180
246
|
}
|
181
|
-
if (!this
|
182
|
-
this
|
247
|
+
if (!_classPrivateFieldGet(this, _displaySwitch)) {
|
248
|
+
_classPrivateFieldSet(this, _displaySwitch, new DisplaySwitch(this.getDisplayDelaySetting()));
|
183
249
|
}
|
184
250
|
this.addHook('afterContextMenuDefaultOptions', options => this.addToContextMenu(options));
|
185
251
|
this.addHook('afterRenderer', (TD, row, col, prop, value, cellProperties) => this.onAfterRenderer(TD, cellProperties));
|
186
|
-
this.addHook('
|
187
|
-
this.addHook('afterScrollVertically', () => this.hide());
|
252
|
+
this.addHook('afterScroll', () => this.onAfterScroll());
|
188
253
|
this.addHook('afterBeginEditing', () => this.hide());
|
189
|
-
this.
|
190
|
-
this.
|
254
|
+
this.addHook('afterDocumentKeyDown', event => this.onAfterDocumentKeyDown(event));
|
255
|
+
_classPrivateFieldGet(this, _displaySwitch).addLocalHook('hide', () => this.hide());
|
256
|
+
_classPrivateFieldGet(this, _displaySwitch).addLocalHook('show', (row, col) => this.showAtCell(row, col));
|
257
|
+
this.registerShortcuts();
|
191
258
|
this.registerListeners();
|
192
259
|
super.enablePlugin();
|
193
260
|
}
|
@@ -199,19 +266,85 @@ export class Comments extends BasePlugin {
|
|
199
266
|
* - [`comments`](@/api/options.md#comments)
|
200
267
|
*/
|
201
268
|
updatePlugin() {
|
202
|
-
this.
|
203
|
-
this.enablePlugin();
|
269
|
+
_classPrivateFieldGet(this, _displaySwitch).updateDelay(this.getDisplayDelaySetting());
|
204
270
|
super.updatePlugin();
|
205
|
-
this.displaySwitch.updateDelay(this.getDisplayDelaySetting());
|
206
271
|
}
|
207
272
|
|
208
273
|
/**
|
209
274
|
* Disables the plugin functionality for this Handsontable instance.
|
210
275
|
*/
|
211
276
|
disablePlugin() {
|
277
|
+
this.unregisterShortcuts();
|
212
278
|
super.disablePlugin();
|
213
279
|
}
|
214
280
|
|
281
|
+
/**
|
282
|
+
* Register shortcuts responsible for toggling context menu.
|
283
|
+
*
|
284
|
+
* @private
|
285
|
+
*/
|
286
|
+
registerShortcuts() {
|
287
|
+
const manager = this.hot.getShortcutManager();
|
288
|
+
const gridContext = manager.getContext('grid');
|
289
|
+
const pluginContext = manager.addContext(SHORTCUTS_CONTEXT_NAME);
|
290
|
+
gridContext.addShortcut({
|
291
|
+
keys: [['Control', 'Alt', 'M']],
|
292
|
+
callback: () => {
|
293
|
+
const range = this.hot.getSelectedRangeLast();
|
294
|
+
_classPrivateFieldSet(this, _preventEditorHiding, true);
|
295
|
+
this.hot.scrollToFocusedCell(() => {
|
296
|
+
this.setRange(range);
|
297
|
+
this.show();
|
298
|
+
this.focusEditor();
|
299
|
+
manager.setActiveContextName(SHORTCUTS_CONTEXT_NAME);
|
300
|
+
this.hot._registerTimeout(() => {
|
301
|
+
_classPrivateFieldSet(this, _preventEditorHiding, false);
|
302
|
+
});
|
303
|
+
});
|
304
|
+
},
|
305
|
+
stopPropagation: true,
|
306
|
+
runOnlyIf: () => {
|
307
|
+
var _this$hot$getSelected;
|
308
|
+
return ((_this$hot$getSelected = this.hot.getSelectedRangeLast()) === null || _this$hot$getSelected === void 0 ? void 0 : _this$hot$getSelected.highlight.isCell()) && !_classPrivateFieldGet(this, _editor).isVisible();
|
309
|
+
},
|
310
|
+
group: SHORTCUTS_GROUP
|
311
|
+
});
|
312
|
+
pluginContext.addShortcut({
|
313
|
+
keys: [['Escape']],
|
314
|
+
callback: () => {
|
315
|
+
_classPrivateFieldGet(this, _editor).setValue(_classPrivateFieldGet(this, _commentValueBeforeSave));
|
316
|
+
this.hide();
|
317
|
+
manager.setActiveContextName('grid');
|
318
|
+
},
|
319
|
+
runOnlyIf: () => {
|
320
|
+
var _this$hot$getSelected2;
|
321
|
+
return ((_this$hot$getSelected2 = this.hot.getSelectedRangeLast()) === null || _this$hot$getSelected2 === void 0 ? void 0 : _this$hot$getSelected2.highlight.isCell()) && _classPrivateFieldGet(this, _editor).isVisible();
|
322
|
+
},
|
323
|
+
group: SHORTCUTS_GROUP
|
324
|
+
});
|
325
|
+
pluginContext.addShortcut({
|
326
|
+
keys: [['Control/Meta', 'Enter']],
|
327
|
+
callback: () => {
|
328
|
+
this.hide();
|
329
|
+
manager.setActiveContextName('grid');
|
330
|
+
},
|
331
|
+
runOnlyIf: () => {
|
332
|
+
var _this$hot$getSelected3;
|
333
|
+
return ((_this$hot$getSelected3 = this.hot.getSelectedRangeLast()) === null || _this$hot$getSelected3 === void 0 ? void 0 : _this$hot$getSelected3.highlight.isCell()) && _classPrivateFieldGet(this, _editor).isVisible();
|
334
|
+
},
|
335
|
+
group: SHORTCUTS_GROUP
|
336
|
+
});
|
337
|
+
}
|
338
|
+
|
339
|
+
/**
|
340
|
+
* Unregister shortcuts responsible for toggling context menu.
|
341
|
+
*
|
342
|
+
* @private
|
343
|
+
*/
|
344
|
+
unregisterShortcuts() {
|
345
|
+
this.hot.getShortcutManager().getContext('grid').removeShortcutsByGroup(SHORTCUTS_GROUP);
|
346
|
+
}
|
347
|
+
|
215
348
|
/**
|
216
349
|
* Registers all necessary DOM listeners.
|
217
350
|
*
|
@@ -221,12 +354,14 @@ export class Comments extends BasePlugin {
|
|
221
354
|
const {
|
222
355
|
rootDocument
|
223
356
|
} = this.hot;
|
357
|
+
const editorElement = this.getEditorInputElement();
|
224
358
|
this.eventManager.addEventListener(rootDocument, 'mouseover', event => this.onMouseOver(event));
|
225
359
|
this.eventManager.addEventListener(rootDocument, 'mousedown', event => this.onMouseDown(event));
|
226
360
|
this.eventManager.addEventListener(rootDocument, 'mouseup', () => this.onMouseUp());
|
227
|
-
this.eventManager.addEventListener(
|
228
|
-
this.eventManager.addEventListener(
|
229
|
-
this.eventManager.addEventListener(
|
361
|
+
this.eventManager.addEventListener(editorElement, 'focus', () => this.onEditorFocus());
|
362
|
+
this.eventManager.addEventListener(editorElement, 'blur', () => this.onEditorBlur());
|
363
|
+
this.eventManager.addEventListener(editorElement, 'mousedown', event => this.onEditorMouseDown(event));
|
364
|
+
this.eventManager.addEventListener(editorElement, 'mouseup', event => this.onEditorMouseUp(event));
|
230
365
|
}
|
231
366
|
|
232
367
|
/**
|
@@ -265,7 +400,7 @@ export class Comments extends BasePlugin {
|
|
265
400
|
* @returns {boolean}
|
266
401
|
*/
|
267
402
|
targetIsCommentTextArea(event) {
|
268
|
-
return this.
|
403
|
+
return this.getEditorInputElement() === event.target;
|
269
404
|
}
|
270
405
|
|
271
406
|
/**
|
@@ -277,7 +412,7 @@ export class Comments extends BasePlugin {
|
|
277
412
|
if (!this.range.from) {
|
278
413
|
throw new Error('Before using this method, first set cell range (hot.getPlugin("comment").setRange())');
|
279
414
|
}
|
280
|
-
const editorValue = this.
|
415
|
+
const editorValue = _classPrivateFieldGet(this, _editor).getValue();
|
281
416
|
let comment = '';
|
282
417
|
if (value !== null && value !== void 0) {
|
283
418
|
comment = value;
|
@@ -379,8 +514,9 @@ export class Comments extends BasePlugin {
|
|
379
514
|
return false;
|
380
515
|
}
|
381
516
|
const meta = this.hot.getCellMeta(this.range.from.row, this.range.from.col);
|
382
|
-
this.
|
383
|
-
this.
|
517
|
+
_classPrivateFieldGet(this, _displaySwitch).cancelHiding();
|
518
|
+
_classPrivateFieldGet(this, _editor).setValue(meta[META_COMMENT] ? meta[META_COMMENT][META_COMMENT_VALUE] : null || '');
|
519
|
+
_classPrivateFieldGet(this, _editor).show();
|
384
520
|
this.refreshEditor(true);
|
385
521
|
return true;
|
386
522
|
}
|
@@ -403,7 +539,7 @@ export class Comments extends BasePlugin {
|
|
403
539
|
* Hides the comment editor.
|
404
540
|
*/
|
405
541
|
hide() {
|
406
|
-
this.
|
542
|
+
_classPrivateFieldGet(this, _editor).hide();
|
407
543
|
}
|
408
544
|
|
409
545
|
/**
|
@@ -414,7 +550,7 @@ export class Comments extends BasePlugin {
|
|
414
550
|
refreshEditor() {
|
415
551
|
var _renderableRow, _renderableColumn;
|
416
552
|
let force = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
|
417
|
-
if (!force && (!this.range.from || !this.
|
553
|
+
if (!force && (!this.range.from || !_classPrivateFieldGet(this, _editor).isVisible())) {
|
418
554
|
return;
|
419
555
|
}
|
420
556
|
const {
|
@@ -432,7 +568,7 @@ export class Comments extends BasePlugin {
|
|
432
568
|
|
433
569
|
// Reset the editor position to (0, 0) so the opening direction calculation wouldn't be influenced by its
|
434
570
|
// previous position
|
435
|
-
this.
|
571
|
+
_classPrivateFieldGet(this, _editor).setPosition(0, 0);
|
436
572
|
if (renderableRow === null) {
|
437
573
|
renderableRow = rowIndexMapper.getRenderableFromVisualIndex(rowIndexMapper.getNearestNotHiddenIndex(visualRow, -1));
|
438
574
|
}
|
@@ -460,9 +596,9 @@ export class Comments extends BasePlugin {
|
|
460
596
|
}, true);
|
461
597
|
const commentStyle = this.getCommentMeta(visualRow, visualColumn, META_STYLE);
|
462
598
|
if (commentStyle) {
|
463
|
-
this.
|
599
|
+
_classPrivateFieldGet(this, _editor).setSize(commentStyle.width, commentStyle.height);
|
464
600
|
} else {
|
465
|
-
this.
|
601
|
+
_classPrivateFieldGet(this, _editor).resetSize();
|
466
602
|
}
|
467
603
|
const lastColWidth = isBeforeRenderedColumns ? 0 : wtTable.getStretchedColumnWidth(renderableColumn);
|
468
604
|
const lastRowHeight = targetingPreviousRow && !isBeforeRenderedRows ? outerHeight(TD) : 0;
|
@@ -475,7 +611,7 @@ export class Comments extends BasePlugin {
|
|
475
611
|
const {
|
476
612
|
width: editorWidth,
|
477
613
|
height: editorHeight
|
478
|
-
} = this.
|
614
|
+
} = _classPrivateFieldGet(this, _editor).getSize();
|
479
615
|
const {
|
480
616
|
innerWidth,
|
481
617
|
innerHeight
|
@@ -496,28 +632,15 @@ export class Comments extends BasePlugin {
|
|
496
632
|
if (top + editorHeight > innerHeight) {
|
497
633
|
y -= editorHeight - cellHeight + 1;
|
498
634
|
}
|
499
|
-
this.
|
500
|
-
this.
|
635
|
+
_classPrivateFieldGet(this, _editor).setPosition(x, y);
|
636
|
+
_classPrivateFieldGet(this, _editor).setReadOnlyState(this.getCommentMeta(visualRow, visualColumn, META_READONLY));
|
501
637
|
}
|
502
638
|
|
503
639
|
/**
|
504
|
-
*
|
505
|
-
*
|
506
|
-
* @private
|
507
|
-
* @returns {boolean}
|
640
|
+
* Focuses the comments editor element.
|
508
641
|
*/
|
509
|
-
|
510
|
-
|
511
|
-
if (!selected) {
|
512
|
-
return false;
|
513
|
-
}
|
514
|
-
let hasComment = false;
|
515
|
-
const cell = selected.getTopStartCorner(); // IN EXCEL THERE IS COMMENT ONLY FOR TOP LEFT CELL IN SELECTION
|
516
|
-
|
517
|
-
if (this.getCommentMeta(cell.row, cell.col, META_COMMENT_VALUE)) {
|
518
|
-
hasComment = true;
|
519
|
-
}
|
520
|
-
return hasComment;
|
642
|
+
focusEditor() {
|
643
|
+
_classPrivateFieldGet(this, _editor).focus();
|
521
644
|
}
|
522
645
|
|
523
646
|
/**
|
@@ -565,7 +688,7 @@ export class Comments extends BasePlugin {
|
|
565
688
|
if (!this.hot.view || !this.hot.view._wt) {
|
566
689
|
return;
|
567
690
|
}
|
568
|
-
if (!this
|
691
|
+
if (!_classPrivateFieldGet(this, _preventEditorAutoSwitch) && !this.targetIsCommentTextArea(event)) {
|
569
692
|
const eventCell = closest(event.target, 'TD', 'TBODY');
|
570
693
|
let coordinates = null;
|
571
694
|
if (eventCell) {
|
@@ -584,19 +707,18 @@ export class Comments extends BasePlugin {
|
|
584
707
|
* @param {MouseEvent} event The `mouseover` event.
|
585
708
|
*/
|
586
709
|
onMouseOver(event) {
|
587
|
-
const priv = privatePool.get(this);
|
588
710
|
const {
|
589
711
|
rootDocument
|
590
712
|
} = this.hot;
|
591
|
-
if (this
|
713
|
+
if (_classPrivateFieldGet(this, _preventEditorAutoSwitch) || _classPrivateFieldGet(this, _editor).isFocused() || hasClass(event.target, 'wtBorder') || _classPrivateFieldGet(this, _cellBelowCursor) === event.target || !_classPrivateFieldGet(this, _editor)) {
|
592
714
|
return;
|
593
715
|
}
|
594
|
-
|
716
|
+
_classPrivateFieldSet(this, _cellBelowCursor, rootDocument.elementFromPoint(event.clientX, event.clientY));
|
595
717
|
if (this.targetIsCellWithComment(event)) {
|
596
718
|
const range = this.hot._createCellRange(this.hot.getCoords(event.target));
|
597
|
-
this.
|
719
|
+
_classPrivateFieldGet(this, _displaySwitch).show(range);
|
598
720
|
} else if (isChildOf(event.target, rootDocument) && !this.targetIsCommentTextArea(event)) {
|
599
|
-
this.
|
721
|
+
_classPrivateFieldGet(this, _displaySwitch).hide();
|
600
722
|
}
|
601
723
|
}
|
602
724
|
|
@@ -606,7 +728,7 @@ export class Comments extends BasePlugin {
|
|
606
728
|
* @private
|
607
729
|
*/
|
608
730
|
onMouseUp() {
|
609
|
-
this
|
731
|
+
_classPrivateFieldSet(this, _preventEditorAutoSwitch, false);
|
610
732
|
}
|
611
733
|
|
612
734
|
/**
|
@@ -623,14 +745,29 @@ export class Comments extends BasePlugin {
|
|
623
745
|
}
|
624
746
|
|
625
747
|
/**
|
626
|
-
*
|
748
|
+
* Hook observer the "blur" event from the comments editor element. The hook clears the
|
749
|
+
* editor content and gives back the keyboard shortcuts control by switching to the "grid" context.
|
627
750
|
*
|
628
751
|
* @private
|
629
752
|
*/
|
630
753
|
onEditorBlur() {
|
754
|
+
_classPrivateFieldSet(this, _commentValueBeforeSave, '');
|
755
|
+
this.hot.getShortcutManager().setActiveContextName('grid');
|
631
756
|
this.setComment();
|
632
757
|
}
|
633
758
|
|
759
|
+
/**
|
760
|
+
* Hook observer the "focus" event from the comments editor element. The hook takes the control of
|
761
|
+
* the keyboard shortcuts by switching the context to plugins one.
|
762
|
+
*
|
763
|
+
* @private
|
764
|
+
*/
|
765
|
+
onEditorFocus() {
|
766
|
+
_classPrivateFieldSet(this, _commentValueBeforeSave, this.getComment());
|
767
|
+
this.hot.listen();
|
768
|
+
this.hot.getShortcutManager().setActiveContextName(SHORTCUTS_CONTEXT_NAME);
|
769
|
+
}
|
770
|
+
|
634
771
|
/**
|
635
772
|
* `mousedown` hook. Along with `onEditorMouseUp` used to simulate the textarea resizing event.
|
636
773
|
*
|
@@ -638,11 +775,10 @@ export class Comments extends BasePlugin {
|
|
638
775
|
* @param {MouseEvent} event The `mousedown` event.
|
639
776
|
*/
|
640
777
|
onEditorMouseDown(event) {
|
641
|
-
|
642
|
-
priv.tempEditorDimensions = {
|
778
|
+
_classPrivateFieldSet(this, _tempEditorDimensions, {
|
643
779
|
width: outerWidth(event.target),
|
644
780
|
height: outerHeight(event.target)
|
645
|
-
};
|
781
|
+
});
|
646
782
|
}
|
647
783
|
|
648
784
|
/**
|
@@ -652,10 +788,9 @@ export class Comments extends BasePlugin {
|
|
652
788
|
* @param {MouseEvent} event The `mouseup` event.
|
653
789
|
*/
|
654
790
|
onEditorMouseUp(event) {
|
655
|
-
const priv = privatePool.get(this);
|
656
791
|
const currentWidth = outerWidth(event.target);
|
657
792
|
const currentHeight = outerHeight(event.target);
|
658
|
-
if (currentWidth !==
|
793
|
+
if (currentWidth !== _classPrivateFieldGet(this, _tempEditorDimensions).width + 1 || currentHeight !== _classPrivateFieldGet(this, _tempEditorDimensions).height + 2) {
|
659
794
|
this.updateCommentMeta(this.range.from.row, this.range.from.col, {
|
660
795
|
[META_STYLE]: {
|
661
796
|
width: currentWidth,
|
@@ -666,121 +801,36 @@ export class Comments extends BasePlugin {
|
|
666
801
|
}
|
667
802
|
|
668
803
|
/**
|
669
|
-
*
|
804
|
+
* Observes the pressed keys and if there is already opened the comment editor prevents open
|
805
|
+
* the table editor into the fast edit mode.
|
670
806
|
*
|
671
|
-
* @
|
672
|
-
*/
|
673
|
-
onContextMenuAddComment() {
|
674
|
-
const coords = this.hot.getSelectedRangeLast();
|
675
|
-
this.preventEditorAutoSwitch = true;
|
676
|
-
this.displaySwitch.cancelHiding();
|
677
|
-
this.setRange({
|
678
|
-
from: coords.highlight
|
679
|
-
});
|
680
|
-
this.show();
|
681
|
-
this.hot.deselectCell();
|
682
|
-
this.editor.focus();
|
683
|
-
}
|
684
|
-
|
685
|
-
/**
|
686
|
-
* Context Menu's "remove comment" callback.
|
687
|
-
*
|
688
|
-
* @private
|
807
|
+
* @param {Event} event The keydown event.
|
689
808
|
*/
|
690
|
-
|
691
|
-
|
692
|
-
|
693
|
-
|
694
|
-
if (row >= 0 && column >= 0) {
|
695
|
-
this.removeCommentAtCell(row, column, false);
|
696
|
-
}
|
697
|
-
});
|
698
|
-
this.hot.render();
|
809
|
+
onAfterDocumentKeyDown(event) {
|
810
|
+
if (_classPrivateFieldGet(this, _editor).isVisible()) {
|
811
|
+
stopImmediatePropagation(event);
|
812
|
+
}
|
699
813
|
}
|
700
814
|
|
701
815
|
/**
|
702
|
-
*
|
703
|
-
*
|
704
|
-
* @private
|
816
|
+
* Observes the changes in the scroll position if triggered it hides the comment editor.
|
705
817
|
*/
|
706
|
-
|
707
|
-
|
708
|
-
|
709
|
-
|
710
|
-
if (row >= 0 && column >= 0) {
|
711
|
-
const currentState = !!this.getCommentMeta(row, column, META_READONLY);
|
712
|
-
this.updateCommentMeta(row, column, {
|
713
|
-
[META_READONLY]: !currentState
|
714
|
-
});
|
715
|
-
}
|
716
|
-
});
|
818
|
+
onAfterScroll() {
|
819
|
+
if (!_classPrivateFieldGet(this, _preventEditorHiding)) {
|
820
|
+
this.hide();
|
821
|
+
}
|
717
822
|
}
|
718
823
|
|
719
824
|
/**
|
720
825
|
* Add Comments plugin options to the Context Menu.
|
721
826
|
*
|
722
827
|
* @private
|
723
|
-
* @param {object}
|
724
|
-
*/
|
725
|
-
addToContextMenu(
|
726
|
-
|
727
|
-
|
728
|
-
};
|
729
|
-
defaultOptions.items.push({
|
730
|
-
name: '---------'
|
731
|
-
}, {
|
732
|
-
key: 'commentsAddEdit',
|
733
|
-
name: () => {
|
734
|
-
if (this.checkSelectionCommentsConsistency()) {
|
735
|
-
return this.hot.getTranslatedPhrase(C.CONTEXTMENU_ITEMS_EDIT_COMMENT);
|
736
|
-
}
|
737
|
-
return this.hot.getTranslatedPhrase(C.CONTEXTMENU_ITEMS_ADD_COMMENT);
|
738
|
-
},
|
739
|
-
callback: () => this.onContextMenuAddComment(),
|
740
|
-
disabled: () => {
|
741
|
-
if (!isThereAnyCellRendered()) {
|
742
|
-
return true;
|
743
|
-
}
|
744
|
-
return !(this.hot.getSelectedLast() && !this.hot.selection.isSelectedByCorner());
|
745
|
-
}
|
746
|
-
}, {
|
747
|
-
key: 'commentsRemove',
|
748
|
-
name() {
|
749
|
-
return this.getTranslatedPhrase(C.CONTEXTMENU_ITEMS_REMOVE_COMMENT);
|
750
|
-
},
|
751
|
-
callback: () => this.onContextMenuRemoveComment(),
|
752
|
-
disabled: () => {
|
753
|
-
if (!isThereAnyCellRendered()) {
|
754
|
-
return true;
|
755
|
-
}
|
756
|
-
return !(this.hot.getSelectedLast() && !this.hot.selection.isSelectedByCorner());
|
757
|
-
}
|
758
|
-
}, {
|
759
|
-
key: 'commentsReadOnly',
|
760
|
-
name() {
|
761
|
-
let label = this.getTranslatedPhrase(C.CONTEXTMENU_ITEMS_READ_ONLY_COMMENT);
|
762
|
-
const hasProperty = checkSelectionConsistency(this.getSelectedRangeLast(), (row, col) => {
|
763
|
-
let readOnlyProperty = this.getCellMeta(row, col)[META_COMMENT];
|
764
|
-
if (readOnlyProperty) {
|
765
|
-
readOnlyProperty = readOnlyProperty[META_READONLY];
|
766
|
-
}
|
767
|
-
if (readOnlyProperty) {
|
768
|
-
return true;
|
769
|
-
}
|
770
|
-
});
|
771
|
-
if (hasProperty) {
|
772
|
-
label = markLabelAsSelected(label);
|
773
|
-
}
|
774
|
-
return label;
|
775
|
-
},
|
776
|
-
callback: () => this.onContextMenuMakeReadOnly(),
|
777
|
-
disabled: () => {
|
778
|
-
if (!isThereAnyCellRendered()) {
|
779
|
-
return true;
|
780
|
-
}
|
781
|
-
return !(this.hot.getSelectedLast() && !this.hot.selection.isSelectedByCorner()) || !this.checkSelectionCommentsConsistency();
|
782
|
-
}
|
783
|
-
});
|
828
|
+
* @param {object} options The menu options.
|
829
|
+
*/
|
830
|
+
addToContextMenu(options) {
|
831
|
+
options.items.push({
|
832
|
+
name: SEPARATOR
|
833
|
+
}, addEditCommentItem(this), removeCommentItem(this), readOnlyCommentItem(this));
|
784
834
|
}
|
785
835
|
|
786
836
|
/**
|
@@ -796,15 +846,25 @@ export class Comments extends BasePlugin {
|
|
796
846
|
}
|
797
847
|
}
|
798
848
|
|
849
|
+
/**
|
850
|
+
* Gets the editors input element.
|
851
|
+
*
|
852
|
+
* @private
|
853
|
+
* @returns {HTMLTextAreaElement}
|
854
|
+
*/
|
855
|
+
getEditorInputElement() {
|
856
|
+
return _classPrivateFieldGet(this, _editor).getInputElement();
|
857
|
+
}
|
858
|
+
|
799
859
|
/**
|
800
860
|
* Destroys the plugin instance.
|
801
861
|
*/
|
802
862
|
destroy() {
|
803
|
-
if (this
|
804
|
-
this.
|
863
|
+
if (_classPrivateFieldGet(this, _editor)) {
|
864
|
+
_classPrivateFieldGet(this, _editor).destroy();
|
805
865
|
}
|
806
|
-
if (this
|
807
|
-
this.
|
866
|
+
if (_classPrivateFieldGet(this, _displaySwitch)) {
|
867
|
+
_classPrivateFieldGet(this, _displaySwitch).destroy();
|
808
868
|
}
|
809
869
|
super.destroy();
|
810
870
|
}
|