handsontable 0.0.0-next-b66c79f-20230713 → 0.0.0-next-08765b9-20230714
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 +87 -33
- package/3rdparty/walkontable/src/cell/coords.mjs +87 -33
- package/3rdparty/walkontable/src/cell/range.d.ts +9 -2
- package/3rdparty/walkontable/src/cell/range.js +92 -46
- package/3rdparty/walkontable/src/cell/range.mjs +92 -46
- package/3rdparty/walkontable/src/core/_base.js +41 -33
- package/3rdparty/walkontable/src/core/_base.mjs +41 -33
- package/3rdparty/walkontable/src/core/clone.js +8 -5
- package/3rdparty/walkontable/src/core/clone.mjs +8 -5
- package/3rdparty/walkontable/src/core/core.js +3 -2
- package/3rdparty/walkontable/src/core/core.mjs +3 -2
- package/3rdparty/walkontable/src/event.js +9 -8
- package/3rdparty/walkontable/src/event.mjs +9 -8
- 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 +11 -9
- package/3rdparty/walkontable/src/overlay/_base.mjs +11 -9
- package/3rdparty/walkontable/src/overlay/bottom.js +10 -8
- package/3rdparty/walkontable/src/overlay/bottom.mjs +10 -8
- 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 +12 -14
- package/3rdparty/walkontable/src/overlay/top.mjs +12 -14
- package/3rdparty/walkontable/src/overlay/topInlineStartCorner.js +16 -13
- package/3rdparty/walkontable/src/overlay/topInlineStartCorner.mjs +16 -13
- package/3rdparty/walkontable/src/overlays.js +75 -80
- package/3rdparty/walkontable/src/overlays.mjs +75 -80
- package/3rdparty/walkontable/src/scroll.js +27 -24
- package/3rdparty/walkontable/src/scroll.mjs +27 -24
- 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/settings.js +18 -17
- package/3rdparty/walkontable/src/settings.mjs +18 -17
- 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 +48 -115
- package/3rdparty/walkontable/src/table.mjs +49 -116
- package/base.js +2 -2
- package/base.mjs +2 -2
- 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 +181 -298
- package/core.mjs +181 -298
- package/dataMap/metaManager/metaLayers/cellMeta.js +2 -1
- package/dataMap/metaManager/metaLayers/cellMeta.mjs +2 -1
- package/dataMap/metaManager/metaLayers/globalMeta.js +1 -1
- package/dataMap/metaManager/metaLayers/globalMeta.mjs +1 -1
- package/dataMap/metaManager/metaSchema.js +41 -0
- package/dataMap/metaManager/metaSchema.mjs +41 -0
- package/dataMap/metaManager/mods/dynamicCellMeta.js +3 -2
- package/dataMap/metaManager/mods/dynamicCellMeta.mjs +3 -2
- package/dataMap/metaManager/utils.js +4 -2
- package/dataMap/metaManager/utils.mjs +4 -2
- package/dist/handsontable.css +19 -3
- package/dist/handsontable.full.css +19 -3
- package/dist/handsontable.full.js +10739 -7037
- package/dist/handsontable.full.min.css +3 -3
- package/dist/handsontable.full.min.js +25 -25
- package/dist/handsontable.js +24884 -21182
- 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/autocompleteEditor/autocompleteEditor.js +70 -67
- package/editors/autocompleteEditor/autocompleteEditor.mjs +70 -67
- package/editors/baseEditor/baseEditor.js +1 -1
- package/editors/baseEditor/baseEditor.mjs +1 -1
- package/editors/dateEditor/dateEditor.js +2 -1
- package/editors/dateEditor/dateEditor.mjs +2 -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/helpers/object.js +1 -0
- package/helpers/object.mjs +1 -0
- package/index.js +5 -5
- package/index.mjs +5 -5
- package/package.json +1 -1
- package/pluginHooks.d.ts +7 -1
- package/pluginHooks.js +106 -1
- package/pluginHooks.mjs +106 -1
- package/plugins/autoColumnSize/autoColumnSize.js +4 -1
- package/plugins/autoColumnSize/autoColumnSize.mjs +4 -1
- package/plugins/collapsibleColumns/collapsibleColumns.js +110 -40
- package/plugins/collapsibleColumns/collapsibleColumns.mjs +110 -40
- package/plugins/columnSorting/columnSorting.js +40 -1
- package/plugins/columnSorting/columnSorting.mjs +40 -3
- package/plugins/columnSorting/columnStatesManager.js +2 -1
- package/plugins/columnSorting/columnStatesManager.mjs +2 -1
- 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 +253 -191
- package/plugins/comments/comments.mjs +252 -192
- 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 +12 -6
- package/plugins/copyPaste/copyPaste.mjs +12 -6
- package/plugins/customBorders/customBorders.js +36 -29
- package/plugins/customBorders/customBorders.mjs +37 -30
- package/plugins/customBorders/utils.js +3 -3
- package/plugins/customBorders/utils.mjs +3 -3
- 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/conditionCollection.js +6 -5
- package/plugins/filters/conditionCollection.mjs +6 -5
- package/plugins/filters/filters.js +44 -21
- package/plugins/filters/filters.mjs +43 -20
- package/plugins/formulas/engine/register.js +3 -3
- package/plugins/formulas/engine/register.mjs +3 -3
- package/plugins/formulas/engine/settings.js +6 -3
- package/plugins/formulas/engine/settings.mjs +6 -3
- package/plugins/formulas/formulas.js +151 -143
- package/plugins/formulas/formulas.mjs +151 -143
- package/plugins/formulas/indexSyncer/axisSyncer.js +115 -79
- package/plugins/formulas/indexSyncer/axisSyncer.mjs +115 -79
- package/plugins/formulas/indexSyncer/index.js +100 -64
- package/plugins/formulas/indexSyncer/index.mjs +100 -64
- package/plugins/hiddenColumns/contextMenuItem/showColumn.js +2 -2
- package/plugins/hiddenColumns/contextMenuItem/showColumn.mjs +2 -2
- package/plugins/hiddenColumns/hiddenColumns.js +51 -34
- package/plugins/hiddenColumns/hiddenColumns.mjs +51 -34
- package/plugins/hiddenRows/contextMenuItem/showRow.js +2 -2
- package/plugins/hiddenRows/contextMenuItem/showRow.mjs +2 -2
- package/plugins/hiddenRows/hiddenRows.js +50 -33
- package/plugins/hiddenRows/hiddenRows.mjs +50 -33
- package/plugins/manualRowResize/manualRowResize.js +2 -1
- package/plugins/manualRowResize/manualRowResize.mjs +2 -1
- package/plugins/mergeCells/mergeCells.js +6 -17
- package/plugins/mergeCells/mergeCells.mjs +6 -17
- package/plugins/multiColumnSorting/multiColumnSorting.js +37 -2
- package/plugins/multiColumnSorting/multiColumnSorting.mjs +37 -2
- package/plugins/nestedHeaders/nestedHeaders.js +209 -75
- package/plugins/nestedHeaders/nestedHeaders.mjs +208 -74
- package/plugins/nestedHeaders/stateManager/headersTree.js +58 -38
- package/plugins/nestedHeaders/stateManager/headersTree.mjs +58 -38
- package/plugins/nestedHeaders/stateManager/index.js +107 -49
- package/plugins/nestedHeaders/stateManager/index.mjs +105 -47
- package/plugins/nestedHeaders/stateManager/nodeModifiers/collapse.js +1 -1
- package/plugins/nestedHeaders/stateManager/nodeModifiers/collapse.mjs +1 -1
- package/plugins/nestedHeaders/stateManager/sourceSettings.js +57 -37
- package/plugins/nestedHeaders/stateManager/sourceSettings.mjs +57 -37
- package/plugins/nestedHeaders/utils/ghostTable.js +39 -35
- package/plugins/nestedHeaders/utils/ghostTable.mjs +39 -35
- package/plugins/nestedRows/data/dataManager.js +4 -2
- package/plugins/nestedRows/data/dataManager.mjs +4 -2
- package/plugins/nestedRows/nestedRows.js +41 -0
- package/plugins/nestedRows/nestedRows.mjs +41 -0
- package/plugins/persistentState/storage.js +1 -0
- package/plugins/persistentState/storage.mjs +1 -0
- package/plugins/undoRedo/undoRedo.js +2 -1
- package/plugins/undoRedo/undoRedo.mjs +2 -1
- 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 +41 -33
- package/selection/highlight/visualSelection.mjs +41 -33
- 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 +290 -154
- package/selection/selection.mjs +287 -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 +163 -91
- package/tableView.mjs +163 -91
- package/translations/changesObservable/observable.js +82 -54
- package/translations/changesObservable/observable.mjs +82 -54
- package/translations/changesObservable/observer.js +24 -11
- package/translations/changesObservable/observer.mjs +24 -11
- package/translations/maps/linkedPhysicalIndexToValueMap.js +14 -8
- package/translations/maps/linkedPhysicalIndexToValueMap.mjs +14 -8
- package/utils/dataStructures/tree.js +21 -18
- package/utils/dataStructures/tree.mjs +21 -18
- 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
@@ -4,25 +4,41 @@ exports.__esModule = true;
|
|
4
4
|
require("core-js/modules/es.error.cause.js");
|
5
5
|
require("core-js/modules/es.array.push.js");
|
6
6
|
var _element = require("../../helpers/dom/element");
|
7
|
+
var _event = require("../../helpers/dom/event");
|
7
8
|
var _object = require("../../helpers/object");
|
8
9
|
var _eventManager = _interopRequireDefault(require("../../eventManager"));
|
9
10
|
var _base = require("../base");
|
10
11
|
var _commentEditor = _interopRequireDefault(require("./commentEditor"));
|
11
|
-
var
|
12
|
-
var
|
13
|
-
var
|
14
|
-
|
15
|
-
|
12
|
+
var _displaySwitch2 = _interopRequireDefault(require("./displaySwitch"));
|
13
|
+
var _predefinedItems = require("../contextMenu/predefinedItems");
|
14
|
+
var _addEditComment = _interopRequireDefault(require("./contextMenuItem/addEditComment"));
|
15
|
+
var _removeComment = _interopRequireDefault(require("./contextMenuItem/removeComment"));
|
16
|
+
var _readOnlyComment = _interopRequireDefault(require("./contextMenuItem/readOnlyComment"));
|
16
17
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
18
|
+
function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
|
19
|
+
function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
|
20
|
+
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; }
|
21
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
22
|
+
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); }
|
23
|
+
function _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "set"); _classApplyDescriptorSet(receiver, descriptor, value); return value; }
|
24
|
+
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; } }
|
25
|
+
function _classPrivateFieldGet(receiver, privateMap) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "get"); return _classApplyDescriptorGet(receiver, descriptor); }
|
26
|
+
function _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to " + action + " private field on non-instance"); } return privateMap.get(receiver); }
|
27
|
+
function _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; }
|
17
28
|
const PLUGIN_KEY = 'comments';
|
18
29
|
exports.PLUGIN_KEY = PLUGIN_KEY;
|
19
30
|
const PLUGIN_PRIORITY = 60;
|
20
31
|
exports.PLUGIN_PRIORITY = PLUGIN_PRIORITY;
|
21
|
-
const privatePool = new WeakMap();
|
22
32
|
const META_COMMENT = 'comment';
|
33
|
+
exports.META_COMMENT = META_COMMENT;
|
23
34
|
const META_COMMENT_VALUE = 'value';
|
35
|
+
exports.META_COMMENT_VALUE = META_COMMENT_VALUE;
|
24
36
|
const META_STYLE = 'style';
|
37
|
+
exports.META_STYLE = META_STYLE;
|
25
38
|
const META_READONLY = 'readOnly';
|
39
|
+
exports.META_READONLY = META_READONLY;
|
40
|
+
const SHORTCUTS_GROUP = PLUGIN_KEY;
|
41
|
+
const SHORTCUTS_CONTEXT_NAME = `plugin:${PLUGIN_KEY}`;
|
26
42
|
|
27
43
|
/* eslint-disable jsdoc/require-description-complete-sentence */
|
28
44
|
/**
|
@@ -114,55 +130,107 @@ const META_READONLY = 'readOnly';
|
|
114
130
|
* ```
|
115
131
|
* :::
|
116
132
|
*/
|
133
|
+
var _editor = /*#__PURE__*/new WeakMap();
|
134
|
+
var _displaySwitch = /*#__PURE__*/new WeakMap();
|
135
|
+
var _preventEditorAutoSwitch = /*#__PURE__*/new WeakMap();
|
136
|
+
var _preventEditorHiding = /*#__PURE__*/new WeakMap();
|
137
|
+
var _tempEditorDimensions = /*#__PURE__*/new WeakMap();
|
138
|
+
var _cellBelowCursor = /*#__PURE__*/new WeakMap();
|
139
|
+
var _commentValueBeforeSave = /*#__PURE__*/new WeakMap();
|
117
140
|
class Comments extends _base.BasePlugin {
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
141
|
+
constructor() {
|
142
|
+
super(...arguments);
|
143
|
+
/**
|
144
|
+
* Current cell range, an object with `from` property, with `row` and `col` properties (e.q. `{from: {row: 1, col: 6}}`).
|
145
|
+
*
|
146
|
+
* @type {object}
|
147
|
+
*/
|
148
|
+
_defineProperty(this, "range", {});
|
149
|
+
/**
|
150
|
+
* Instance of {@link EventManager}.
|
151
|
+
*
|
152
|
+
* @protected
|
153
|
+
* @type {EventManager}
|
154
|
+
*/
|
155
|
+
_defineProperty(this, "eventManager", null);
|
126
156
|
/**
|
127
157
|
* Instance of {@link CommentEditor}.
|
128
158
|
*
|
129
159
|
* @private
|
130
160
|
* @type {CommentEditor}
|
131
161
|
*/
|
132
|
-
this
|
162
|
+
_classPrivateFieldInitSpec(this, _editor, {
|
163
|
+
writable: true,
|
164
|
+
value: null
|
165
|
+
});
|
133
166
|
/**
|
134
167
|
* Instance of {@link DisplaySwitch}.
|
135
168
|
*
|
136
169
|
* @private
|
137
170
|
* @type {DisplaySwitch}
|
138
171
|
*/
|
139
|
-
this
|
172
|
+
_classPrivateFieldInitSpec(this, _displaySwitch, {
|
173
|
+
writable: true,
|
174
|
+
value: null
|
175
|
+
});
|
140
176
|
/**
|
141
|
-
*
|
177
|
+
* Prevents showing/hiding editor that reacts on the logic triggered by the "mouseover" events.
|
142
178
|
*
|
143
179
|
* @private
|
144
|
-
* @type {
|
180
|
+
* @type {boolean}
|
145
181
|
*/
|
146
|
-
this
|
182
|
+
_classPrivateFieldInitSpec(this, _preventEditorAutoSwitch, {
|
183
|
+
writable: true,
|
184
|
+
value: false
|
185
|
+
});
|
147
186
|
/**
|
148
|
-
*
|
187
|
+
* Prevents hiding editor when the table viewport is scrolled and that scroll is triggered by the
|
188
|
+
* keyboard shortcut that insert or edits the comment.
|
149
189
|
*
|
190
|
+
* @private
|
191
|
+
* @type {boolean}
|
192
|
+
*/
|
193
|
+
_classPrivateFieldInitSpec(this, _preventEditorHiding, {
|
194
|
+
writable: true,
|
195
|
+
value: false
|
196
|
+
});
|
197
|
+
/**
|
198
|
+
* The property for holding editor dimensions for further processing.
|
199
|
+
*
|
200
|
+
* @private
|
150
201
|
* @type {object}
|
151
202
|
*/
|
152
|
-
this
|
203
|
+
_classPrivateFieldInitSpec(this, _tempEditorDimensions, {
|
204
|
+
writable: true,
|
205
|
+
value: {}
|
206
|
+
});
|
153
207
|
/**
|
154
|
-
*
|
208
|
+
* The flag that allows processing mousedown event correctly when comments editor is triggered.
|
155
209
|
*
|
156
210
|
* @private
|
157
211
|
* @type {boolean}
|
158
212
|
*/
|
159
|
-
this
|
160
|
-
|
161
|
-
|
162
|
-
|
213
|
+
_classPrivateFieldInitSpec(this, _cellBelowCursor, {
|
214
|
+
writable: true,
|
215
|
+
value: null
|
216
|
+
});
|
217
|
+
/**
|
218
|
+
* Holds the comment value before it's actually saved to the cell meta.
|
219
|
+
*
|
220
|
+
* @private
|
221
|
+
* @type {string}
|
222
|
+
*/
|
223
|
+
_classPrivateFieldInitSpec(this, _commentValueBeforeSave, {
|
224
|
+
writable: true,
|
225
|
+
value: ''
|
163
226
|
});
|
164
227
|
}
|
165
|
-
|
228
|
+
static get PLUGIN_KEY() {
|
229
|
+
return PLUGIN_KEY;
|
230
|
+
}
|
231
|
+
static get PLUGIN_PRIORITY() {
|
232
|
+
return PLUGIN_PRIORITY;
|
233
|
+
}
|
166
234
|
/**
|
167
235
|
* Checks if the plugin is enabled in the handsontable settings. This method is executed in {@link Hooks#beforeInit}
|
168
236
|
* hook and if it returns `true` then the {@link Comments#enablePlugin} method is called.
|
@@ -180,22 +248,23 @@ class Comments extends _base.BasePlugin {
|
|
180
248
|
if (this.enabled) {
|
181
249
|
return;
|
182
250
|
}
|
183
|
-
if (!this
|
184
|
-
this
|
251
|
+
if (!_classPrivateFieldGet(this, _editor)) {
|
252
|
+
_classPrivateFieldSet(this, _editor, new _commentEditor.default(this.hot.rootDocument, this.hot.isRtl()));
|
185
253
|
}
|
186
254
|
if (!this.eventManager) {
|
187
255
|
this.eventManager = new _eventManager.default(this);
|
188
256
|
}
|
189
|
-
if (!this
|
190
|
-
this
|
257
|
+
if (!_classPrivateFieldGet(this, _displaySwitch)) {
|
258
|
+
_classPrivateFieldSet(this, _displaySwitch, new _displaySwitch2.default(this.getDisplayDelaySetting()));
|
191
259
|
}
|
192
260
|
this.addHook('afterContextMenuDefaultOptions', options => this.addToContextMenu(options));
|
193
261
|
this.addHook('afterRenderer', (TD, row, col, prop, value, cellProperties) => this.onAfterRenderer(TD, cellProperties));
|
194
|
-
this.addHook('
|
195
|
-
this.addHook('afterScrollVertically', () => this.hide());
|
262
|
+
this.addHook('afterScroll', () => this.onAfterScroll());
|
196
263
|
this.addHook('afterBeginEditing', () => this.hide());
|
197
|
-
this.
|
198
|
-
this.
|
264
|
+
this.addHook('afterDocumentKeyDown', event => this.onAfterDocumentKeyDown(event));
|
265
|
+
_classPrivateFieldGet(this, _displaySwitch).addLocalHook('hide', () => this.hide());
|
266
|
+
_classPrivateFieldGet(this, _displaySwitch).addLocalHook('show', (row, col) => this.showAtCell(row, col));
|
267
|
+
this.registerShortcuts();
|
199
268
|
this.registerListeners();
|
200
269
|
super.enablePlugin();
|
201
270
|
}
|
@@ -207,19 +276,85 @@ class Comments extends _base.BasePlugin {
|
|
207
276
|
* - [`comments`](@/api/options.md#comments)
|
208
277
|
*/
|
209
278
|
updatePlugin() {
|
210
|
-
this.
|
211
|
-
this.enablePlugin();
|
279
|
+
_classPrivateFieldGet(this, _displaySwitch).updateDelay(this.getDisplayDelaySetting());
|
212
280
|
super.updatePlugin();
|
213
|
-
this.displaySwitch.updateDelay(this.getDisplayDelaySetting());
|
214
281
|
}
|
215
282
|
|
216
283
|
/**
|
217
284
|
* Disables the plugin functionality for this Handsontable instance.
|
218
285
|
*/
|
219
286
|
disablePlugin() {
|
287
|
+
this.unregisterShortcuts();
|
220
288
|
super.disablePlugin();
|
221
289
|
}
|
222
290
|
|
291
|
+
/**
|
292
|
+
* Register shortcuts responsible for toggling context menu.
|
293
|
+
*
|
294
|
+
* @private
|
295
|
+
*/
|
296
|
+
registerShortcuts() {
|
297
|
+
const manager = this.hot.getShortcutManager();
|
298
|
+
const gridContext = manager.getContext('grid');
|
299
|
+
const pluginContext = manager.addContext(SHORTCUTS_CONTEXT_NAME);
|
300
|
+
gridContext.addShortcut({
|
301
|
+
keys: [['Control', 'Alt', 'M']],
|
302
|
+
callback: () => {
|
303
|
+
const range = this.hot.getSelectedRangeLast();
|
304
|
+
_classPrivateFieldSet(this, _preventEditorHiding, true);
|
305
|
+
this.hot.scrollToFocusedCell(() => {
|
306
|
+
this.setRange(range);
|
307
|
+
this.show();
|
308
|
+
this.focusEditor();
|
309
|
+
manager.setActiveContextName(SHORTCUTS_CONTEXT_NAME);
|
310
|
+
this.hot._registerTimeout(() => {
|
311
|
+
_classPrivateFieldSet(this, _preventEditorHiding, false);
|
312
|
+
});
|
313
|
+
});
|
314
|
+
},
|
315
|
+
stopPropagation: true,
|
316
|
+
runOnlyIf: () => {
|
317
|
+
var _this$hot$getSelected;
|
318
|
+
return ((_this$hot$getSelected = this.hot.getSelectedRangeLast()) === null || _this$hot$getSelected === void 0 ? void 0 : _this$hot$getSelected.highlight.isCell()) && !_classPrivateFieldGet(this, _editor).isVisible();
|
319
|
+
},
|
320
|
+
group: SHORTCUTS_GROUP
|
321
|
+
});
|
322
|
+
pluginContext.addShortcut({
|
323
|
+
keys: [['Escape']],
|
324
|
+
callback: () => {
|
325
|
+
_classPrivateFieldGet(this, _editor).setValue(_classPrivateFieldGet(this, _commentValueBeforeSave));
|
326
|
+
this.hide();
|
327
|
+
manager.setActiveContextName('grid');
|
328
|
+
},
|
329
|
+
runOnlyIf: () => {
|
330
|
+
var _this$hot$getSelected2;
|
331
|
+
return ((_this$hot$getSelected2 = this.hot.getSelectedRangeLast()) === null || _this$hot$getSelected2 === void 0 ? void 0 : _this$hot$getSelected2.highlight.isCell()) && _classPrivateFieldGet(this, _editor).isVisible();
|
332
|
+
},
|
333
|
+
group: SHORTCUTS_GROUP
|
334
|
+
});
|
335
|
+
pluginContext.addShortcut({
|
336
|
+
keys: [['Control/Meta', 'Enter']],
|
337
|
+
callback: () => {
|
338
|
+
this.hide();
|
339
|
+
manager.setActiveContextName('grid');
|
340
|
+
},
|
341
|
+
runOnlyIf: () => {
|
342
|
+
var _this$hot$getSelected3;
|
343
|
+
return ((_this$hot$getSelected3 = this.hot.getSelectedRangeLast()) === null || _this$hot$getSelected3 === void 0 ? void 0 : _this$hot$getSelected3.highlight.isCell()) && _classPrivateFieldGet(this, _editor).isVisible();
|
344
|
+
},
|
345
|
+
group: SHORTCUTS_GROUP
|
346
|
+
});
|
347
|
+
}
|
348
|
+
|
349
|
+
/**
|
350
|
+
* Unregister shortcuts responsible for toggling context menu.
|
351
|
+
*
|
352
|
+
* @private
|
353
|
+
*/
|
354
|
+
unregisterShortcuts() {
|
355
|
+
this.hot.getShortcutManager().getContext('grid').removeShortcutsByGroup(SHORTCUTS_GROUP);
|
356
|
+
}
|
357
|
+
|
223
358
|
/**
|
224
359
|
* Registers all necessary DOM listeners.
|
225
360
|
*
|
@@ -229,12 +364,14 @@ class Comments extends _base.BasePlugin {
|
|
229
364
|
const {
|
230
365
|
rootDocument
|
231
366
|
} = this.hot;
|
367
|
+
const editorElement = this.getEditorInputElement();
|
232
368
|
this.eventManager.addEventListener(rootDocument, 'mouseover', event => this.onMouseOver(event));
|
233
369
|
this.eventManager.addEventListener(rootDocument, 'mousedown', event => this.onMouseDown(event));
|
234
370
|
this.eventManager.addEventListener(rootDocument, 'mouseup', () => this.onMouseUp());
|
235
|
-
this.eventManager.addEventListener(
|
236
|
-
this.eventManager.addEventListener(
|
237
|
-
this.eventManager.addEventListener(
|
371
|
+
this.eventManager.addEventListener(editorElement, 'focus', () => this.onEditorFocus());
|
372
|
+
this.eventManager.addEventListener(editorElement, 'blur', () => this.onEditorBlur());
|
373
|
+
this.eventManager.addEventListener(editorElement, 'mousedown', event => this.onEditorMouseDown(event));
|
374
|
+
this.eventManager.addEventListener(editorElement, 'mouseup', event => this.onEditorMouseUp(event));
|
238
375
|
}
|
239
376
|
|
240
377
|
/**
|
@@ -273,7 +410,7 @@ class Comments extends _base.BasePlugin {
|
|
273
410
|
* @returns {boolean}
|
274
411
|
*/
|
275
412
|
targetIsCommentTextArea(event) {
|
276
|
-
return this.
|
413
|
+
return this.getEditorInputElement() === event.target;
|
277
414
|
}
|
278
415
|
|
279
416
|
/**
|
@@ -285,7 +422,7 @@ class Comments extends _base.BasePlugin {
|
|
285
422
|
if (!this.range.from) {
|
286
423
|
throw new Error('Before using this method, first set cell range (hot.getPlugin("comment").setRange())');
|
287
424
|
}
|
288
|
-
const editorValue = this.
|
425
|
+
const editorValue = _classPrivateFieldGet(this, _editor).getValue();
|
289
426
|
let comment = '';
|
290
427
|
if (value !== null && value !== void 0) {
|
291
428
|
comment = value;
|
@@ -387,8 +524,9 @@ class Comments extends _base.BasePlugin {
|
|
387
524
|
return false;
|
388
525
|
}
|
389
526
|
const meta = this.hot.getCellMeta(this.range.from.row, this.range.from.col);
|
390
|
-
this.
|
391
|
-
this.
|
527
|
+
_classPrivateFieldGet(this, _displaySwitch).cancelHiding();
|
528
|
+
_classPrivateFieldGet(this, _editor).setValue(meta[META_COMMENT] ? meta[META_COMMENT][META_COMMENT_VALUE] : null || '');
|
529
|
+
_classPrivateFieldGet(this, _editor).show();
|
392
530
|
this.refreshEditor(true);
|
393
531
|
return true;
|
394
532
|
}
|
@@ -411,7 +549,7 @@ class Comments extends _base.BasePlugin {
|
|
411
549
|
* Hides the comment editor.
|
412
550
|
*/
|
413
551
|
hide() {
|
414
|
-
this.
|
552
|
+
_classPrivateFieldGet(this, _editor).hide();
|
415
553
|
}
|
416
554
|
|
417
555
|
/**
|
@@ -422,7 +560,7 @@ class Comments extends _base.BasePlugin {
|
|
422
560
|
refreshEditor() {
|
423
561
|
var _renderableRow, _renderableColumn;
|
424
562
|
let force = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
|
425
|
-
if (!force && (!this.range.from || !this.
|
563
|
+
if (!force && (!this.range.from || !_classPrivateFieldGet(this, _editor).isVisible())) {
|
426
564
|
return;
|
427
565
|
}
|
428
566
|
const {
|
@@ -440,7 +578,7 @@ class Comments extends _base.BasePlugin {
|
|
440
578
|
|
441
579
|
// Reset the editor position to (0, 0) so the opening direction calculation wouldn't be influenced by its
|
442
580
|
// previous position
|
443
|
-
this.
|
581
|
+
_classPrivateFieldGet(this, _editor).setPosition(0, 0);
|
444
582
|
if (renderableRow === null) {
|
445
583
|
renderableRow = rowIndexMapper.getRenderableFromVisualIndex(rowIndexMapper.getNearestNotHiddenIndex(visualRow, -1));
|
446
584
|
}
|
@@ -449,8 +587,8 @@ class Comments extends _base.BasePlugin {
|
|
449
587
|
}
|
450
588
|
const isBeforeRenderedRows = renderableRow === null;
|
451
589
|
const isBeforeRenderedColumns = renderableColumn === null;
|
452
|
-
renderableRow = (_renderableRow = renderableRow)
|
453
|
-
renderableColumn = (_renderableColumn = renderableColumn)
|
590
|
+
renderableRow = (_renderableRow = renderableRow) !== null && _renderableRow !== void 0 ? _renderableRow : 0;
|
591
|
+
renderableColumn = (_renderableColumn = renderableColumn) !== null && _renderableColumn !== void 0 ? _renderableColumn : 0;
|
454
592
|
const {
|
455
593
|
rootWindow,
|
456
594
|
view: {
|
@@ -468,9 +606,9 @@ class Comments extends _base.BasePlugin {
|
|
468
606
|
}, true);
|
469
607
|
const commentStyle = this.getCommentMeta(visualRow, visualColumn, META_STYLE);
|
470
608
|
if (commentStyle) {
|
471
|
-
this.
|
609
|
+
_classPrivateFieldGet(this, _editor).setSize(commentStyle.width, commentStyle.height);
|
472
610
|
} else {
|
473
|
-
this.
|
611
|
+
_classPrivateFieldGet(this, _editor).resetSize();
|
474
612
|
}
|
475
613
|
const lastColWidth = isBeforeRenderedColumns ? 0 : wtTable.getStretchedColumnWidth(renderableColumn);
|
476
614
|
const lastRowHeight = targetingPreviousRow && !isBeforeRenderedRows ? (0, _element.outerHeight)(TD) : 0;
|
@@ -483,7 +621,7 @@ class Comments extends _base.BasePlugin {
|
|
483
621
|
const {
|
484
622
|
width: editorWidth,
|
485
623
|
height: editorHeight
|
486
|
-
} = this.
|
624
|
+
} = _classPrivateFieldGet(this, _editor).getSize();
|
487
625
|
const {
|
488
626
|
innerWidth,
|
489
627
|
innerHeight
|
@@ -504,28 +642,15 @@ class Comments extends _base.BasePlugin {
|
|
504
642
|
if (top + editorHeight > innerHeight) {
|
505
643
|
y -= editorHeight - cellHeight + 1;
|
506
644
|
}
|
507
|
-
this.
|
508
|
-
this.
|
645
|
+
_classPrivateFieldGet(this, _editor).setPosition(x, y);
|
646
|
+
_classPrivateFieldGet(this, _editor).setReadOnlyState(this.getCommentMeta(visualRow, visualColumn, META_READONLY));
|
509
647
|
}
|
510
648
|
|
511
649
|
/**
|
512
|
-
*
|
513
|
-
*
|
514
|
-
* @private
|
515
|
-
* @returns {boolean}
|
650
|
+
* Focuses the comments editor element.
|
516
651
|
*/
|
517
|
-
|
518
|
-
|
519
|
-
if (!selected) {
|
520
|
-
return false;
|
521
|
-
}
|
522
|
-
let hasComment = false;
|
523
|
-
const cell = selected.getTopStartCorner(); // IN EXCEL THERE IS COMMENT ONLY FOR TOP LEFT CELL IN SELECTION
|
524
|
-
|
525
|
-
if (this.getCommentMeta(cell.row, cell.col, META_COMMENT_VALUE)) {
|
526
|
-
hasComment = true;
|
527
|
-
}
|
528
|
-
return hasComment;
|
652
|
+
focusEditor() {
|
653
|
+
_classPrivateFieldGet(this, _editor).focus();
|
529
654
|
}
|
530
655
|
|
531
656
|
/**
|
@@ -573,7 +698,7 @@ class Comments extends _base.BasePlugin {
|
|
573
698
|
if (!this.hot.view || !this.hot.view._wt) {
|
574
699
|
return;
|
575
700
|
}
|
576
|
-
if (!this
|
701
|
+
if (!_classPrivateFieldGet(this, _preventEditorAutoSwitch) && !this.targetIsCommentTextArea(event)) {
|
577
702
|
const eventCell = (0, _element.closest)(event.target, 'TD', 'TBODY');
|
578
703
|
let coordinates = null;
|
579
704
|
if (eventCell) {
|
@@ -592,19 +717,18 @@ class Comments extends _base.BasePlugin {
|
|
592
717
|
* @param {MouseEvent} event The `mouseover` event.
|
593
718
|
*/
|
594
719
|
onMouseOver(event) {
|
595
|
-
const priv = privatePool.get(this);
|
596
720
|
const {
|
597
721
|
rootDocument
|
598
722
|
} = this.hot;
|
599
|
-
if (this
|
723
|
+
if (_classPrivateFieldGet(this, _preventEditorAutoSwitch) || _classPrivateFieldGet(this, _editor).isFocused() || (0, _element.hasClass)(event.target, 'wtBorder') || _classPrivateFieldGet(this, _cellBelowCursor) === event.target || !_classPrivateFieldGet(this, _editor)) {
|
600
724
|
return;
|
601
725
|
}
|
602
|
-
|
726
|
+
_classPrivateFieldSet(this, _cellBelowCursor, rootDocument.elementFromPoint(event.clientX, event.clientY));
|
603
727
|
if (this.targetIsCellWithComment(event)) {
|
604
728
|
const range = this.hot._createCellRange(this.hot.getCoords(event.target));
|
605
|
-
this.
|
729
|
+
_classPrivateFieldGet(this, _displaySwitch).show(range);
|
606
730
|
} else if ((0, _element.isChildOf)(event.target, rootDocument) && !this.targetIsCommentTextArea(event)) {
|
607
|
-
this.
|
731
|
+
_classPrivateFieldGet(this, _displaySwitch).hide();
|
608
732
|
}
|
609
733
|
}
|
610
734
|
|
@@ -614,7 +738,7 @@ class Comments extends _base.BasePlugin {
|
|
614
738
|
* @private
|
615
739
|
*/
|
616
740
|
onMouseUp() {
|
617
|
-
this
|
741
|
+
_classPrivateFieldSet(this, _preventEditorAutoSwitch, false);
|
618
742
|
}
|
619
743
|
|
620
744
|
/**
|
@@ -631,14 +755,29 @@ class Comments extends _base.BasePlugin {
|
|
631
755
|
}
|
632
756
|
|
633
757
|
/**
|
634
|
-
*
|
758
|
+
* Hook observer the "blur" event from the comments editor element. The hook clears the
|
759
|
+
* editor content and gives back the keyboard shortcuts control by switching to the "grid" context.
|
635
760
|
*
|
636
761
|
* @private
|
637
762
|
*/
|
638
763
|
onEditorBlur() {
|
764
|
+
_classPrivateFieldSet(this, _commentValueBeforeSave, '');
|
765
|
+
this.hot.getShortcutManager().setActiveContextName('grid');
|
639
766
|
this.setComment();
|
640
767
|
}
|
641
768
|
|
769
|
+
/**
|
770
|
+
* Hook observer the "focus" event from the comments editor element. The hook takes the control of
|
771
|
+
* the keyboard shortcuts by switching the context to plugins one.
|
772
|
+
*
|
773
|
+
* @private
|
774
|
+
*/
|
775
|
+
onEditorFocus() {
|
776
|
+
_classPrivateFieldSet(this, _commentValueBeforeSave, this.getComment());
|
777
|
+
this.hot.listen();
|
778
|
+
this.hot.getShortcutManager().setActiveContextName(SHORTCUTS_CONTEXT_NAME);
|
779
|
+
}
|
780
|
+
|
642
781
|
/**
|
643
782
|
* `mousedown` hook. Along with `onEditorMouseUp` used to simulate the textarea resizing event.
|
644
783
|
*
|
@@ -646,11 +785,10 @@ class Comments extends _base.BasePlugin {
|
|
646
785
|
* @param {MouseEvent} event The `mousedown` event.
|
647
786
|
*/
|
648
787
|
onEditorMouseDown(event) {
|
649
|
-
|
650
|
-
priv.tempEditorDimensions = {
|
788
|
+
_classPrivateFieldSet(this, _tempEditorDimensions, {
|
651
789
|
width: (0, _element.outerWidth)(event.target),
|
652
790
|
height: (0, _element.outerHeight)(event.target)
|
653
|
-
};
|
791
|
+
});
|
654
792
|
}
|
655
793
|
|
656
794
|
/**
|
@@ -660,10 +798,9 @@ class Comments extends _base.BasePlugin {
|
|
660
798
|
* @param {MouseEvent} event The `mouseup` event.
|
661
799
|
*/
|
662
800
|
onEditorMouseUp(event) {
|
663
|
-
const priv = privatePool.get(this);
|
664
801
|
const currentWidth = (0, _element.outerWidth)(event.target);
|
665
802
|
const currentHeight = (0, _element.outerHeight)(event.target);
|
666
|
-
if (currentWidth !==
|
803
|
+
if (currentWidth !== _classPrivateFieldGet(this, _tempEditorDimensions).width + 1 || currentHeight !== _classPrivateFieldGet(this, _tempEditorDimensions).height + 2) {
|
667
804
|
this.updateCommentMeta(this.range.from.row, this.range.from.col, {
|
668
805
|
[META_STYLE]: {
|
669
806
|
width: currentWidth,
|
@@ -674,121 +811,36 @@ class Comments extends _base.BasePlugin {
|
|
674
811
|
}
|
675
812
|
|
676
813
|
/**
|
677
|
-
*
|
814
|
+
* Observes the pressed keys and if there is already opened the comment editor prevents open
|
815
|
+
* the table editor into the fast edit mode.
|
678
816
|
*
|
679
|
-
* @
|
680
|
-
*/
|
681
|
-
onContextMenuAddComment() {
|
682
|
-
const coords = this.hot.getSelectedRangeLast();
|
683
|
-
this.preventEditorAutoSwitch = true;
|
684
|
-
this.displaySwitch.cancelHiding();
|
685
|
-
this.setRange({
|
686
|
-
from: coords.highlight
|
687
|
-
});
|
688
|
-
this.show();
|
689
|
-
this.hot.deselectCell();
|
690
|
-
this.editor.focus();
|
691
|
-
}
|
692
|
-
|
693
|
-
/**
|
694
|
-
* Context Menu's "remove comment" callback.
|
695
|
-
*
|
696
|
-
* @private
|
817
|
+
* @param {Event} event The keydown event.
|
697
818
|
*/
|
698
|
-
|
699
|
-
|
700
|
-
|
701
|
-
|
702
|
-
if (row >= 0 && column >= 0) {
|
703
|
-
this.removeCommentAtCell(row, column, false);
|
704
|
-
}
|
705
|
-
});
|
706
|
-
this.hot.render();
|
819
|
+
onAfterDocumentKeyDown(event) {
|
820
|
+
if (_classPrivateFieldGet(this, _editor).isVisible()) {
|
821
|
+
(0, _event.stopImmediatePropagation)(event);
|
822
|
+
}
|
707
823
|
}
|
708
824
|
|
709
825
|
/**
|
710
|
-
*
|
711
|
-
*
|
712
|
-
* @private
|
826
|
+
* Observes the changes in the scroll position if triggered it hides the comment editor.
|
713
827
|
*/
|
714
|
-
|
715
|
-
|
716
|
-
|
717
|
-
|
718
|
-
if (row >= 0 && column >= 0) {
|
719
|
-
const currentState = !!this.getCommentMeta(row, column, META_READONLY);
|
720
|
-
this.updateCommentMeta(row, column, {
|
721
|
-
[META_READONLY]: !currentState
|
722
|
-
});
|
723
|
-
}
|
724
|
-
});
|
828
|
+
onAfterScroll() {
|
829
|
+
if (!_classPrivateFieldGet(this, _preventEditorHiding)) {
|
830
|
+
this.hide();
|
831
|
+
}
|
725
832
|
}
|
726
833
|
|
727
834
|
/**
|
728
835
|
* Add Comments plugin options to the Context Menu.
|
729
836
|
*
|
730
837
|
* @private
|
731
|
-
* @param {object}
|
732
|
-
*/
|
733
|
-
addToContextMenu(
|
734
|
-
|
735
|
-
|
736
|
-
};
|
737
|
-
defaultOptions.items.push({
|
738
|
-
name: '---------'
|
739
|
-
}, {
|
740
|
-
key: 'commentsAddEdit',
|
741
|
-
name: () => {
|
742
|
-
if (this.checkSelectionCommentsConsistency()) {
|
743
|
-
return this.hot.getTranslatedPhrase(C.CONTEXTMENU_ITEMS_EDIT_COMMENT);
|
744
|
-
}
|
745
|
-
return this.hot.getTranslatedPhrase(C.CONTEXTMENU_ITEMS_ADD_COMMENT);
|
746
|
-
},
|
747
|
-
callback: () => this.onContextMenuAddComment(),
|
748
|
-
disabled: () => {
|
749
|
-
if (!isThereAnyCellRendered()) {
|
750
|
-
return true;
|
751
|
-
}
|
752
|
-
return !(this.hot.getSelectedLast() && !this.hot.selection.isSelectedByCorner());
|
753
|
-
}
|
754
|
-
}, {
|
755
|
-
key: 'commentsRemove',
|
756
|
-
name() {
|
757
|
-
return this.getTranslatedPhrase(C.CONTEXTMENU_ITEMS_REMOVE_COMMENT);
|
758
|
-
},
|
759
|
-
callback: () => this.onContextMenuRemoveComment(),
|
760
|
-
disabled: () => {
|
761
|
-
if (!isThereAnyCellRendered()) {
|
762
|
-
return true;
|
763
|
-
}
|
764
|
-
return !(this.hot.getSelectedLast() && !this.hot.selection.isSelectedByCorner());
|
765
|
-
}
|
766
|
-
}, {
|
767
|
-
key: 'commentsReadOnly',
|
768
|
-
name() {
|
769
|
-
let label = this.getTranslatedPhrase(C.CONTEXTMENU_ITEMS_READ_ONLY_COMMENT);
|
770
|
-
const hasProperty = (0, _utils.checkSelectionConsistency)(this.getSelectedRangeLast(), (row, col) => {
|
771
|
-
let readOnlyProperty = this.getCellMeta(row, col)[META_COMMENT];
|
772
|
-
if (readOnlyProperty) {
|
773
|
-
readOnlyProperty = readOnlyProperty[META_READONLY];
|
774
|
-
}
|
775
|
-
if (readOnlyProperty) {
|
776
|
-
return true;
|
777
|
-
}
|
778
|
-
});
|
779
|
-
if (hasProperty) {
|
780
|
-
label = (0, _utils.markLabelAsSelected)(label);
|
781
|
-
}
|
782
|
-
return label;
|
783
|
-
},
|
784
|
-
callback: () => this.onContextMenuMakeReadOnly(),
|
785
|
-
disabled: () => {
|
786
|
-
if (!isThereAnyCellRendered()) {
|
787
|
-
return true;
|
788
|
-
}
|
789
|
-
return !(this.hot.getSelectedLast() && !this.hot.selection.isSelectedByCorner()) || !this.checkSelectionCommentsConsistency();
|
790
|
-
}
|
791
|
-
});
|
838
|
+
* @param {object} options The menu options.
|
839
|
+
*/
|
840
|
+
addToContextMenu(options) {
|
841
|
+
options.items.push({
|
842
|
+
name: _predefinedItems.SEPARATOR
|
843
|
+
}, (0, _addEditComment.default)(this), (0, _removeComment.default)(this), (0, _readOnlyComment.default)(this));
|
792
844
|
}
|
793
845
|
|
794
846
|
/**
|
@@ -804,15 +856,25 @@ class Comments extends _base.BasePlugin {
|
|
804
856
|
}
|
805
857
|
}
|
806
858
|
|
859
|
+
/**
|
860
|
+
* Gets the editors input element.
|
861
|
+
*
|
862
|
+
* @private
|
863
|
+
* @returns {HTMLTextAreaElement}
|
864
|
+
*/
|
865
|
+
getEditorInputElement() {
|
866
|
+
return _classPrivateFieldGet(this, _editor).getInputElement();
|
867
|
+
}
|
868
|
+
|
807
869
|
/**
|
808
870
|
* Destroys the plugin instance.
|
809
871
|
*/
|
810
872
|
destroy() {
|
811
|
-
if (this
|
812
|
-
this.
|
873
|
+
if (_classPrivateFieldGet(this, _editor)) {
|
874
|
+
_classPrivateFieldGet(this, _editor).destroy();
|
813
875
|
}
|
814
|
-
if (this
|
815
|
-
this.
|
876
|
+
if (_classPrivateFieldGet(this, _displaySwitch)) {
|
877
|
+
_classPrivateFieldGet(this, _displaySwitch).destroy();
|
816
878
|
}
|
817
879
|
super.destroy();
|
818
880
|
}
|