handsontable 0.0.0-next-9379dd1-20231020 → 0.0.0-next-9059914-20231025
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/{selection/border/border.js → border.js} +12 -7
- package/3rdparty/walkontable/src/{selection/border/border.mjs → border.mjs} +12 -7
- package/3rdparty/walkontable/src/cell/coords.d.ts +1 -6
- package/3rdparty/walkontable/src/cell/coords.js +11 -50
- package/3rdparty/walkontable/src/cell/coords.mjs +11 -50
- package/3rdparty/walkontable/src/cell/range.d.ts +2 -9
- package/3rdparty/walkontable/src/cell/range.js +7 -38
- package/3rdparty/walkontable/src/cell/range.mjs +7 -38
- package/3rdparty/walkontable/src/core/_base.js +3 -9
- package/3rdparty/walkontable/src/core/_base.mjs +3 -9
- 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 +2 -3
- package/3rdparty/walkontable/src/core/core.mjs +2 -3
- package/3rdparty/walkontable/src/event.js +10 -12
- package/3rdparty/walkontable/src/event.mjs +10 -12
- package/3rdparty/walkontable/src/facade/core.js +2 -2
- package/3rdparty/walkontable/src/facade/core.mjs +2 -2
- package/3rdparty/walkontable/src/index.js +2 -10
- package/3rdparty/walkontable/src/index.mjs +2 -2
- package/3rdparty/walkontable/src/overlay/_base.js +2 -13
- package/3rdparty/walkontable/src/overlay/_base.mjs +3 -14
- package/3rdparty/walkontable/src/overlay/inlineStart.js +6 -2
- package/3rdparty/walkontable/src/overlay/inlineStart.mjs +6 -2
- package/3rdparty/walkontable/src/overlay/top.js +6 -2
- package/3rdparty/walkontable/src/overlay/top.mjs +6 -2
- package/3rdparty/walkontable/src/renderer/cells.js +0 -10
- package/3rdparty/walkontable/src/renderer/cells.mjs +1 -11
- package/3rdparty/walkontable/src/renderer/columnHeaders.js +0 -10
- package/3rdparty/walkontable/src/renderer/columnHeaders.mjs +1 -11
- package/3rdparty/walkontable/src/renderer/rowHeaders.js +0 -5
- package/3rdparty/walkontable/src/renderer/rowHeaders.mjs +0 -5
- package/3rdparty/walkontable/src/renderer/rows.js +0 -13
- package/3rdparty/walkontable/src/renderer/rows.mjs +0 -13
- package/3rdparty/walkontable/src/renderer/table.js +0 -9
- package/3rdparty/walkontable/src/renderer/table.mjs +0 -9
- package/3rdparty/walkontable/src/scroll.js +0 -2
- package/3rdparty/walkontable/src/scroll.mjs +0 -2
- package/3rdparty/walkontable/src/selection.js +295 -0
- package/3rdparty/walkontable/src/selection.mjs +290 -0
- package/3rdparty/walkontable/src/settings.js +4 -13
- package/3rdparty/walkontable/src/settings.mjs +4 -13
- package/3rdparty/walkontable/src/table/mixin/calculatedColumns.js +0 -9
- package/3rdparty/walkontable/src/table/mixin/calculatedColumns.mjs +0 -9
- package/3rdparty/walkontable/src/table/mixin/calculatedRows.js +0 -9
- package/3rdparty/walkontable/src/table/mixin/calculatedRows.mjs +0 -9
- package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.js +0 -9
- package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.mjs +0 -9
- package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.js +0 -9
- package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.mjs +0 -9
- package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.js +0 -9
- package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.mjs +0 -9
- package/3rdparty/walkontable/src/table.js +78 -19
- package/3rdparty/walkontable/src/table.mjs +79 -20
- package/base.js +2 -2
- package/base.mjs +2 -2
- package/cellTypes/dateType/dateType.d.ts +3 -3
- package/cellTypes/dateType/dateType.js +2 -2
- package/cellTypes/dateType/dateType.mjs +2 -2
- package/cellTypes/handsontableType/handsontableType.d.ts +3 -3
- package/cellTypes/handsontableType/handsontableType.js +2 -2
- package/cellTypes/handsontableType/handsontableType.mjs +2 -2
- package/cellTypes/index.d.ts +0 -3
- package/cellTypes/index.js +0 -4
- package/cellTypes/index.mjs +1 -3
- package/core.d.ts +4 -9
- package/core.js +327 -285
- package/core.mjs +327 -285
- package/dataMap/metaManager/metaSchema.js +0 -65
- package/dataMap/metaManager/metaSchema.mjs +0 -65
- package/dataMap/metaManager/mods/extendMetaProperties.js +1 -7
- package/dataMap/metaManager/mods/extendMetaProperties.mjs +1 -7
- package/dataMap/replaceData.js +0 -5
- package/dataMap/replaceData.mjs +0 -5
- package/dist/handsontable.css +5 -40
- package/dist/handsontable.full.css +5 -40
- package/dist/handsontable.full.js +8038 -12837
- package/dist/handsontable.full.min.css +4 -4
- package/dist/handsontable.full.min.js +141 -141
- package/dist/handsontable.js +11488 -16287
- package/dist/handsontable.min.css +3 -3
- package/dist/handsontable.min.js +21 -21
- package/dist/languages/all.js +2 -6
- package/dist/languages/all.min.js +1 -1
- package/dist/languages/en-US.js +1 -3
- package/dist/languages/en-US.min.js +1 -1
- package/dist/languages/pl-PL.js +1 -3
- package/dist/languages/pl-PL.min.js +1 -1
- package/editorManager.js +87 -15
- package/editorManager.mjs +87 -16
- package/editors/autocompleteEditor/autocompleteEditor.js +2 -53
- package/editors/autocompleteEditor/autocompleteEditor.mjs +3 -54
- package/editors/dateEditor/dateEditor.js +7 -26
- package/editors/dateEditor/dateEditor.mjs +8 -27
- package/editors/handsontableEditor/handsontableEditor.js +1 -9
- package/editors/handsontableEditor/handsontableEditor.mjs +2 -10
- package/editors/textEditor/textEditor.js +27 -19
- package/editors/textEditor/textEditor.mjs +30 -22
- package/helpers/dom/element.js +9 -188
- package/helpers/dom/element.mjs +9 -182
- package/helpers/mixed.js +1 -1
- package/helpers/mixed.mjs +1 -1
- package/helpers/number.d.ts +0 -1
- package/helpers/number.js +0 -18
- package/helpers/number.mjs +0 -17
- package/i18n/constants.js +1 -7
- package/i18n/constants.mjs +1 -4
- package/i18n/languages/en-US.js +1 -3
- package/i18n/languages/en-US.mjs +1 -3
- package/i18n/languages/pl-PL.js +1 -3
- package/i18n/languages/pl-PL.mjs +1 -3
- package/languages/all.js +2 -6
- package/languages/en-US.js +1 -3
- package/languages/en-US.mjs +1 -3
- package/languages/index.js +2 -6
- package/languages/pl-PL.js +1 -3
- package/languages/pl-PL.mjs +1 -3
- package/package.json +99 -116
- package/pluginHooks.d.ts +1 -12
- package/pluginHooks.js +1 -152
- package/pluginHooks.mjs +1 -152
- package/plugins/collapsibleColumns/collapsibleColumns.js +4 -74
- package/plugins/collapsibleColumns/collapsibleColumns.mjs +5 -75
- package/plugins/columnSorting/columnSorting.js +0 -43
- package/plugins/columnSorting/columnSorting.mjs +3 -44
- package/plugins/columnSorting/index.js +1 -3
- package/plugins/columnSorting/index.mjs +1 -1
- package/plugins/comments/commentEditor.js +0 -1
- package/plugins/comments/commentEditor.mjs +0 -1
- package/plugins/comments/comments.js +189 -252
- package/plugins/comments/comments.mjs +190 -251
- package/plugins/contextMenu/commandExecutor.js +3 -2
- package/plugins/contextMenu/commandExecutor.mjs +3 -2
- package/plugins/contextMenu/contextMenu.d.ts +1 -1
- package/plugins/contextMenu/contextMenu.js +36 -75
- package/plugins/contextMenu/contextMenu.mjs +35 -74
- package/plugins/contextMenu/{menu/cursor.mjs → cursor.js} +10 -4
- package/plugins/contextMenu/{menu/cursor.js → cursor.mjs} +4 -6
- package/plugins/contextMenu/itemsFactory.js +3 -2
- package/plugins/contextMenu/itemsFactory.mjs +4 -3
- package/plugins/contextMenu/{menu/menu.js → menu.js} +308 -96
- package/plugins/contextMenu/{menu/menu.mjs → menu.mjs} +309 -97
- package/plugins/contextMenu/predefinedItems/alignment.js +0 -7
- package/plugins/contextMenu/predefinedItems/alignment.mjs +0 -7
- package/plugins/contextMenu/predefinedItems/clearColumn.js +3 -5
- package/plugins/contextMenu/predefinedItems/clearColumn.mjs +3 -5
- package/plugins/contextMenu/predefinedItems/columnLeft.js +3 -5
- package/plugins/contextMenu/predefinedItems/columnLeft.mjs +3 -5
- package/plugins/contextMenu/predefinedItems/columnRight.js +3 -5
- package/plugins/contextMenu/predefinedItems/columnRight.mjs +3 -5
- package/plugins/contextMenu/predefinedItems/readOnly.js +0 -7
- package/plugins/contextMenu/predefinedItems/readOnly.mjs +0 -7
- package/plugins/contextMenu/predefinedItems/removeColumn.js +5 -7
- package/plugins/contextMenu/predefinedItems/removeColumn.mjs +3 -5
- package/plugins/contextMenu/predefinedItems/removeRow.js +5 -7
- package/plugins/contextMenu/predefinedItems/removeRow.mjs +3 -5
- package/plugins/contextMenu/predefinedItems/rowAbove.js +3 -5
- package/plugins/contextMenu/predefinedItems/rowAbove.mjs +3 -5
- package/plugins/contextMenu/predefinedItems/rowBelow.js +3 -5
- package/plugins/contextMenu/predefinedItems/rowBelow.mjs +3 -5
- package/plugins/contextMenu/{predefinedItems/index.js → predefinedItems.js} +14 -14
- package/plugins/contextMenu/predefinedItems.mjs +68 -0
- package/plugins/contextMenu/utils.js +151 -35
- package/plugins/contextMenu/utils.mjs +144 -35
- package/plugins/copyPaste/contextMenuItem/copy.js +0 -7
- package/plugins/copyPaste/contextMenuItem/copy.mjs +0 -7
- package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.js +1 -9
- package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.mjs +1 -9
- package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.js +1 -9
- package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.mjs +1 -9
- package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.js +1 -9
- package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.mjs +1 -9
- package/plugins/copyPaste/contextMenuItem/cut.js +0 -7
- package/plugins/copyPaste/contextMenuItem/cut.mjs +0 -7
- package/plugins/copyPaste/copyPaste.js +78 -127
- package/plugins/copyPaste/copyPaste.mjs +79 -128
- package/plugins/copyPaste/focusableElement.js +186 -0
- package/plugins/copyPaste/focusableElement.mjs +180 -0
- package/plugins/customBorders/customBorders.js +20 -23
- package/plugins/customBorders/customBorders.mjs +21 -24
- package/plugins/dropdownMenu/dropdownMenu.d.ts +1 -1
- package/plugins/dropdownMenu/dropdownMenu.js +38 -97
- package/plugins/dropdownMenu/dropdownMenu.mjs +37 -96
- package/plugins/filters/constants.mjs +1 -1
- package/plugins/filters/filters.js +14 -31
- package/plugins/filters/filters.mjs +14 -31
- package/plugins/filters/ui/select.js +3 -3
- package/plugins/filters/ui/select.mjs +2 -2
- package/plugins/hiddenColumns/hiddenColumns.mjs +1 -1
- package/plugins/hiddenRows/hiddenRows.mjs +1 -1
- package/plugins/manualColumnMove/manualColumnMove.js +1 -3
- package/plugins/manualColumnMove/manualColumnMove.mjs +1 -3
- package/plugins/mergeCells/mergeCells.js +16 -5
- package/plugins/mergeCells/mergeCells.mjs +16 -5
- package/plugins/multiColumnSorting/multiColumnSorting.js +2 -37
- package/plugins/multiColumnSorting/multiColumnSorting.mjs +2 -37
- package/plugins/nestedHeaders/nestedHeaders.js +10 -240
- package/plugins/nestedHeaders/nestedHeaders.mjs +11 -241
- package/plugins/nestedHeaders/stateManager/index.js +3 -102
- package/plugins/nestedHeaders/stateManager/index.mjs +3 -102
- package/plugins/nestedRows/nestedRows.js +0 -41
- package/plugins/nestedRows/nestedRows.mjs +0 -41
- package/plugins/nestedRows/ui/headers.js +0 -11
- package/plugins/nestedRows/ui/headers.mjs +1 -12
- package/renderers/autocompleteRenderer/autocompleteRenderer.js +0 -8
- package/renderers/autocompleteRenderer/autocompleteRenderer.mjs +0 -8
- package/renderers/baseRenderer/baseRenderer.js +0 -17
- package/renderers/baseRenderer/baseRenderer.mjs +1 -18
- package/renderers/checkboxRenderer/checkboxRenderer.js +4 -9
- package/renderers/checkboxRenderer/checkboxRenderer.mjs +4 -9
- package/renderers/index.d.ts +0 -9
- package/selection/highlight/constants.js +15 -0
- package/selection/highlight/constants.mjs +6 -0
- package/selection/highlight/highlight.js +71 -256
- package/selection/highlight/highlight.mjs +71 -250
- package/selection/highlight/types/activeHeader.js +8 -10
- package/selection/highlight/types/activeHeader.mjs +8 -10
- package/selection/highlight/types/area.js +18 -6
- package/selection/highlight/types/area.mjs +18 -6
- package/selection/highlight/types/{focus.js → cell.js} +7 -5
- package/selection/highlight/types/{focus.mjs → cell.mjs} +7 -5
- package/selection/highlight/types/customSelection.js +9 -7
- package/selection/highlight/types/customSelection.mjs +9 -7
- package/selection/highlight/types/fill.js +7 -5
- package/selection/highlight/types/fill.mjs +7 -5
- package/selection/highlight/types/header.js +18 -9
- package/selection/highlight/types/header.mjs +18 -9
- package/selection/highlight/types/index.js +35 -0
- package/selection/highlight/types/index.mjs +31 -0
- package/selection/highlight/visualSelection.js +27 -31
- package/selection/highlight/visualSelection.mjs +27 -31
- package/selection/index.js +7 -4
- package/selection/index.mjs +3 -2
- package/selection/mouseEventHandler.js +1 -7
- package/selection/mouseEventHandler.mjs +1 -7
- package/selection/range.js +8 -8
- package/selection/range.mjs +8 -8
- package/selection/selection.js +152 -321
- package/selection/selection.mjs +151 -318
- package/selection/transformation.js +90 -232
- package/selection/transformation.mjs +90 -232
- package/selection/utils.js +21 -15
- package/selection/utils.mjs +21 -16
- package/settings.d.ts +0 -4
- package/shortcuts/context.js +2 -20
- package/shortcuts/context.mjs +3 -20
- package/shortcuts/manager.js +7 -25
- package/shortcuts/manager.mjs +7 -26
- package/shortcuts/recorder.js +3 -3
- package/shortcuts/recorder.mjs +3 -3
- package/shortcuts/utils.js +5 -19
- package/shortcuts/utils.mjs +4 -18
- package/tableView.js +13 -111
- package/tableView.mjs +14 -112
- package/3rdparty/walkontable/src/selection/border/constants.js +0 -16
- package/3rdparty/walkontable/src/selection/border/constants.mjs +0 -12
- package/3rdparty/walkontable/src/selection/constants.js +0 -62
- package/3rdparty/walkontable/src/selection/constants.mjs +0 -51
- package/3rdparty/walkontable/src/selection/index.js +0 -26
- package/3rdparty/walkontable/src/selection/index.mjs +0 -5
- package/3rdparty/walkontable/src/selection/manager.js +0 -274
- package/3rdparty/walkontable/src/selection/manager.mjs +0 -269
- package/3rdparty/walkontable/src/selection/scanner.js +0 -270
- package/3rdparty/walkontable/src/selection/scanner.mjs +0 -267
- package/3rdparty/walkontable/src/selection/selection.js +0 -101
- package/3rdparty/walkontable/src/selection/selection.mjs +0 -96
- package/cellTypes/selectType/index.d.ts +0 -1
- package/cellTypes/selectType/index.js +0 -6
- package/cellTypes/selectType/index.mjs +0 -1
- package/cellTypes/selectType/selectType.d.ts +0 -14
- package/cellTypes/selectType/selectType.js +0 -13
- package/cellTypes/selectType/selectType.mjs +0 -8
- package/core/focusCatcher/focusDetector.js +0 -63
- package/core/focusCatcher/focusDetector.mjs +0 -59
- package/core/focusCatcher/index.js +0 -142
- package/core/focusCatcher/index.mjs +0 -138
- package/core/index.js +0 -9
- package/core/index.mjs +0 -1
- package/focusManager.d.ts +0 -12
- package/focusManager.js +0 -265
- package/focusManager.mjs +0 -261
- package/helpers/a11y.js +0 -79
- package/helpers/a11y.mjs +0 -38
- package/plugins/comments/contextMenuItem/addEditComment.js +0 -41
- package/plugins/comments/contextMenuItem/addEditComment.mjs +0 -35
- package/plugins/comments/contextMenuItem/readOnlyComment.js +0 -49
- package/plugins/comments/contextMenuItem/readOnlyComment.mjs +0 -43
- package/plugins/comments/contextMenuItem/removeComment.js +0 -38
- package/plugins/comments/contextMenuItem/removeComment.mjs +0 -32
- package/plugins/contextMenu/menu/index.js +0 -9
- package/plugins/contextMenu/menu/index.mjs +0 -1
- package/plugins/contextMenu/menu/navigator.js +0 -152
- package/plugins/contextMenu/menu/navigator.mjs +0 -148
- package/plugins/contextMenu/menu/positioner.js +0 -213
- package/plugins/contextMenu/menu/positioner.mjs +0 -209
- package/plugins/contextMenu/menu/utils.js +0 -177
- package/plugins/contextMenu/menu/utils.mjs +0 -163
- package/plugins/contextMenu/predefinedItems/index.mjs +0 -68
- package/renderers/dateRenderer/dateRenderer.d.ts +0 -5
- package/renderers/dateRenderer/dateRenderer.js +0 -29
- package/renderers/dateRenderer/dateRenderer.mjs +0 -24
- package/renderers/dateRenderer/index.d.ts +0 -1
- package/renderers/dateRenderer/index.js +0 -6
- package/renderers/dateRenderer/index.mjs +0 -1
- package/renderers/handsontableRenderer/handsontableRenderer.d.ts +0 -5
- package/renderers/handsontableRenderer/handsontableRenderer.js +0 -29
- package/renderers/handsontableRenderer/handsontableRenderer.mjs +0 -24
- package/renderers/handsontableRenderer/index.d.ts +0 -1
- package/renderers/handsontableRenderer/index.js +0 -6
- package/renderers/handsontableRenderer/index.mjs +0 -1
- package/renderers/selectRenderer/index.d.ts +0 -1
- package/renderers/selectRenderer/index.js +0 -6
- package/renderers/selectRenderer/index.mjs +0 -1
- package/renderers/selectRenderer/selectRenderer.d.ts +0 -5
- package/renderers/selectRenderer/selectRenderer.js +0 -27
- package/renderers/selectRenderer/selectRenderer.mjs +0 -22
- package/selection/highlight/types/areaLayered.js +0 -31
- package/selection/highlight/types/areaLayered.mjs +0 -26
- package/selection/highlight/types/column.js +0 -27
- package/selection/highlight/types/column.mjs +0 -22
- package/selection/highlight/types/row.js +0 -27
- package/selection/highlight/types/row.mjs +0 -22
- package/shortcutContexts/commands/editor/closeAndSave.js +0 -12
- package/shortcutContexts/commands/editor/closeAndSave.mjs +0 -8
- package/shortcutContexts/commands/editor/closeWithoutSaving.js +0 -12
- package/shortcutContexts/commands/editor/closeWithoutSaving.mjs +0 -8
- package/shortcutContexts/commands/editor/fastOpen.js +0 -16
- package/shortcutContexts/commands/editor/fastOpen.mjs +0 -12
- package/shortcutContexts/commands/editor/index.js +0 -16
- package/shortcutContexts/commands/editor/index.mjs +0 -12
- package/shortcutContexts/commands/editor/open.js +0 -27
- package/shortcutContexts/commands/editor/open.mjs +0 -23
- package/shortcutContexts/commands/emptySelectedCells.js +0 -11
- package/shortcutContexts/commands/emptySelectedCells.mjs +0 -7
- package/shortcutContexts/commands/extendCellsSelection/down.js +0 -15
- package/shortcutContexts/commands/extendCellsSelection/down.mjs +0 -11
- package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.js +0 -25
- package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.mjs +0 -21
- package/shortcutContexts/commands/extendCellsSelection/index.js +0 -26
- package/shortcutContexts/commands/extendCellsSelection/index.mjs +0 -22
- package/shortcutContexts/commands/extendCellsSelection/left.js +0 -15
- package/shortcutContexts/commands/extendCellsSelection/left.mjs +0 -11
- package/shortcutContexts/commands/extendCellsSelection/right.js +0 -15
- package/shortcutContexts/commands/extendCellsSelection/right.mjs +0 -11
- package/shortcutContexts/commands/extendCellsSelection/toColumns.js +0 -19
- package/shortcutContexts/commands/extendCellsSelection/toColumns.mjs +0 -15
- package/shortcutContexts/commands/extendCellsSelection/toMostBottom.js +0 -29
- package/shortcutContexts/commands/extendCellsSelection/toMostBottom.mjs +0 -25
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.js +0 -19
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.mjs +0 -15
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.js +0 -19
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.mjs +0 -15
- package/shortcutContexts/commands/extendCellsSelection/toMostLeft.js +0 -29
- package/shortcutContexts/commands/extendCellsSelection/toMostLeft.mjs +0 -25
- package/shortcutContexts/commands/extendCellsSelection/toMostRight.js +0 -29
- package/shortcutContexts/commands/extendCellsSelection/toMostRight.mjs +0 -25
- package/shortcutContexts/commands/extendCellsSelection/toMostTop.js +0 -29
- package/shortcutContexts/commands/extendCellsSelection/toMostTop.mjs +0 -25
- package/shortcutContexts/commands/extendCellsSelection/toRows.js +0 -19
- package/shortcutContexts/commands/extendCellsSelection/toRows.mjs +0 -15
- package/shortcutContexts/commands/extendCellsSelection/up.js +0 -15
- package/shortcutContexts/commands/extendCellsSelection/up.mjs +0 -11
- package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.js +0 -25
- package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.mjs +0 -21
- package/shortcutContexts/commands/index.js +0 -35
- package/shortcutContexts/commands/index.mjs +0 -31
- package/shortcutContexts/commands/moveCellSelection/down.js +0 -13
- package/shortcutContexts/commands/moveCellSelection/down.mjs +0 -9
- package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.js +0 -33
- package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.mjs +0 -29
- package/shortcutContexts/commands/moveCellSelection/index.js +0 -28
- package/shortcutContexts/commands/moveCellSelection/index.mjs +0 -24
- package/shortcutContexts/commands/moveCellSelection/inlineEnd.js +0 -12
- package/shortcutContexts/commands/moveCellSelection/inlineEnd.mjs +0 -8
- package/shortcutContexts/commands/moveCellSelection/inlineStart.js +0 -12
- package/shortcutContexts/commands/moveCellSelection/inlineStart.mjs +0 -8
- package/shortcutContexts/commands/moveCellSelection/left.js +0 -10
- package/shortcutContexts/commands/moveCellSelection/left.mjs +0 -6
- package/shortcutContexts/commands/moveCellSelection/right.js +0 -10
- package/shortcutContexts/commands/moveCellSelection/right.mjs +0 -6
- package/shortcutContexts/commands/moveCellSelection/toMostBottom.js +0 -17
- package/shortcutContexts/commands/moveCellSelection/toMostBottom.mjs +0 -13
- package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.js +0 -18
- package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.mjs +0 -14
- package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.js +0 -14
- package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.mjs +0 -10
- package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.js +0 -17
- package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.mjs +0 -13
- package/shortcutContexts/commands/moveCellSelection/toMostLeft.js +0 -19
- package/shortcutContexts/commands/moveCellSelection/toMostLeft.mjs +0 -15
- package/shortcutContexts/commands/moveCellSelection/toMostRight.js +0 -21
- package/shortcutContexts/commands/moveCellSelection/toMostRight.mjs +0 -17
- package/shortcutContexts/commands/moveCellSelection/toMostTop.js +0 -17
- package/shortcutContexts/commands/moveCellSelection/toMostTop.mjs +0 -13
- package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.js +0 -19
- package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.mjs +0 -15
- package/shortcutContexts/commands/moveCellSelection/up.js +0 -13
- package/shortcutContexts/commands/moveCellSelection/up.mjs +0 -9
- package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.js +0 -33
- package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.mjs +0 -29
- package/shortcutContexts/commands/populateSelectedCellsData.js +0 -29
- package/shortcutContexts/commands/populateSelectedCellsData.mjs +0 -25
- package/shortcutContexts/commands/scrollToFocusedCell.js +0 -35
- package/shortcutContexts/commands/scrollToFocusedCell.mjs +0 -31
- package/shortcutContexts/commands/selectAll.js +0 -12
- package/shortcutContexts/commands/selectAll.mjs +0 -8
- package/shortcutContexts/constants.js +0 -13
- package/shortcutContexts/constants.mjs +0 -8
- package/shortcutContexts/editor.js +0 -25
- package/shortcutContexts/editor.mjs +0 -21
- package/shortcutContexts/grid.js +0 -163
- package/shortcutContexts/grid.mjs +0 -159
- package/shortcutContexts/index.js +0 -24
- package/shortcutContexts/index.mjs +0 -11
@@ -1,34 +1,20 @@
|
|
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; }
|
13
3
|
import { addClass, closest, isChildOf, hasClass, outerWidth, outerHeight } from "../../helpers/dom/element.mjs";
|
14
|
-
import { stopImmediatePropagation } from "../../helpers/dom/event.mjs";
|
15
4
|
import { deepClone, deepExtend, isObject } from "../../helpers/object.mjs";
|
16
5
|
import EventManager from "../../eventManager.mjs";
|
17
6
|
import { BasePlugin } from "../base/index.mjs";
|
18
7
|
import CommentEditor from "./commentEditor.mjs";
|
8
|
+
import { checkSelectionConsistency, markLabelAsSelected } from "../contextMenu/utils.mjs";
|
19
9
|
import DisplaySwitch from "./displaySwitch.mjs";
|
20
|
-
import
|
21
|
-
import addEditCommentItem from "./contextMenuItem/addEditComment.mjs";
|
22
|
-
import removeCommentItem from "./contextMenuItem/removeComment.mjs";
|
23
|
-
import readOnlyCommentItem from "./contextMenuItem/readOnlyComment.mjs";
|
10
|
+
import * as C from "../../i18n/constants.mjs";
|
24
11
|
export const PLUGIN_KEY = 'comments';
|
25
12
|
export const PLUGIN_PRIORITY = 60;
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
const
|
31
|
-
const SHORTCUTS_CONTEXT_NAME = `plugin:${PLUGIN_KEY}`;
|
13
|
+
const privatePool = new WeakMap();
|
14
|
+
const META_COMMENT = 'comment';
|
15
|
+
const META_COMMENT_VALUE = 'value';
|
16
|
+
const META_STYLE = 'style';
|
17
|
+
const META_READONLY = 'readOnly';
|
32
18
|
|
33
19
|
/* eslint-disable jsdoc/require-description-complete-sentence */
|
34
20
|
/**
|
@@ -120,107 +106,55 @@ const SHORTCUTS_CONTEXT_NAME = `plugin:${PLUGIN_KEY}`;
|
|
120
106
|
* ```
|
121
107
|
* :::
|
122
108
|
*/
|
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();
|
130
109
|
export class Comments extends BasePlugin {
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
/**
|
140
|
-
* Instance of {@link EventManager}.
|
141
|
-
*
|
142
|
-
* @protected
|
143
|
-
* @type {EventManager}
|
144
|
-
*/
|
145
|
-
_defineProperty(this, "eventManager", null);
|
110
|
+
static get PLUGIN_KEY() {
|
111
|
+
return PLUGIN_KEY;
|
112
|
+
}
|
113
|
+
static get PLUGIN_PRIORITY() {
|
114
|
+
return PLUGIN_PRIORITY;
|
115
|
+
}
|
116
|
+
constructor(hotInstance) {
|
117
|
+
super(hotInstance);
|
146
118
|
/**
|
147
119
|
* Instance of {@link CommentEditor}.
|
148
120
|
*
|
149
121
|
* @private
|
150
122
|
* @type {CommentEditor}
|
151
123
|
*/
|
152
|
-
|
153
|
-
writable: true,
|
154
|
-
value: null
|
155
|
-
});
|
124
|
+
this.editor = null;
|
156
125
|
/**
|
157
126
|
* Instance of {@link DisplaySwitch}.
|
158
127
|
*
|
159
128
|
* @private
|
160
129
|
* @type {DisplaySwitch}
|
161
130
|
*/
|
162
|
-
|
163
|
-
writable: true,
|
164
|
-
value: null
|
165
|
-
});
|
131
|
+
this.displaySwitch = null;
|
166
132
|
/**
|
167
|
-
*
|
168
|
-
*
|
169
|
-
* @private
|
170
|
-
* @type {boolean}
|
171
|
-
*/
|
172
|
-
_classPrivateFieldInitSpec(this, _preventEditorAutoSwitch, {
|
173
|
-
writable: true,
|
174
|
-
value: false
|
175
|
-
});
|
176
|
-
/**
|
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.
|
133
|
+
* Instance of {@link EventManager}.
|
179
134
|
*
|
180
135
|
* @private
|
181
|
-
* @type {
|
136
|
+
* @type {EventManager}
|
182
137
|
*/
|
183
|
-
|
184
|
-
writable: true,
|
185
|
-
value: false
|
186
|
-
});
|
138
|
+
this.eventManager = null;
|
187
139
|
/**
|
188
|
-
*
|
140
|
+
* Current cell range, an object with `from` property, with `row` and `col` properties (e.q. `{from: {row: 1, col: 6}}`).
|
189
141
|
*
|
190
|
-
* @private
|
191
142
|
* @type {object}
|
192
143
|
*/
|
193
|
-
|
194
|
-
writable: true,
|
195
|
-
value: {}
|
196
|
-
});
|
144
|
+
this.range = {};
|
197
145
|
/**
|
198
|
-
*
|
146
|
+
* Prevents showing/hiding editor that reacts on the logic triggered by the "mouseover" events.
|
199
147
|
*
|
200
148
|
* @private
|
201
149
|
* @type {boolean}
|
202
150
|
*/
|
203
|
-
|
204
|
-
|
205
|
-
|
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: ''
|
151
|
+
this.preventEditorAutoSwitch = false;
|
152
|
+
privatePool.set(this, {
|
153
|
+
tempEditorDimensions: {},
|
154
|
+
cellBelowCursor: null
|
216
155
|
});
|
217
156
|
}
|
218
|
-
|
219
|
-
return PLUGIN_KEY;
|
220
|
-
}
|
221
|
-
static get PLUGIN_PRIORITY() {
|
222
|
-
return PLUGIN_PRIORITY;
|
223
|
-
}
|
157
|
+
|
224
158
|
/**
|
225
159
|
* Checks if the plugin is enabled in the handsontable settings. This method is executed in {@link Hooks#beforeInit}
|
226
160
|
* hook and if it returns `true` then the {@link Comments#enablePlugin} method is called.
|
@@ -238,23 +172,22 @@ export class Comments extends BasePlugin {
|
|
238
172
|
if (this.enabled) {
|
239
173
|
return;
|
240
174
|
}
|
241
|
-
if (!
|
242
|
-
|
175
|
+
if (!this.editor) {
|
176
|
+
this.editor = new CommentEditor(this.hot.rootDocument, this.hot.isRtl());
|
243
177
|
}
|
244
178
|
if (!this.eventManager) {
|
245
179
|
this.eventManager = new EventManager(this);
|
246
180
|
}
|
247
|
-
if (!
|
248
|
-
|
181
|
+
if (!this.displaySwitch) {
|
182
|
+
this.displaySwitch = new DisplaySwitch(this.getDisplayDelaySetting());
|
249
183
|
}
|
250
184
|
this.addHook('afterContextMenuDefaultOptions', options => this.addToContextMenu(options));
|
251
185
|
this.addHook('afterRenderer', (TD, row, col, prop, value, cellProperties) => this.onAfterRenderer(TD, cellProperties));
|
252
|
-
this.addHook('
|
186
|
+
this.addHook('afterScrollHorizontally', () => this.hide());
|
187
|
+
this.addHook('afterScrollVertically', () => this.hide());
|
253
188
|
this.addHook('afterBeginEditing', () => this.hide());
|
254
|
-
this.
|
255
|
-
|
256
|
-
_classPrivateFieldGet(this, _displaySwitch).addLocalHook('show', (row, col) => this.showAtCell(row, col));
|
257
|
-
this.registerShortcuts();
|
189
|
+
this.displaySwitch.addLocalHook('hide', () => this.hide());
|
190
|
+
this.displaySwitch.addLocalHook('show', (row, col) => this.showAtCell(row, col));
|
258
191
|
this.registerListeners();
|
259
192
|
super.enablePlugin();
|
260
193
|
}
|
@@ -266,85 +199,19 @@ export class Comments extends BasePlugin {
|
|
266
199
|
* - [`comments`](@/api/options.md#comments)
|
267
200
|
*/
|
268
201
|
updatePlugin() {
|
269
|
-
|
202
|
+
this.disablePlugin();
|
203
|
+
this.enablePlugin();
|
270
204
|
super.updatePlugin();
|
205
|
+
this.displaySwitch.updateDelay(this.getDisplayDelaySetting());
|
271
206
|
}
|
272
207
|
|
273
208
|
/**
|
274
209
|
* Disables the plugin functionality for this Handsontable instance.
|
275
210
|
*/
|
276
211
|
disablePlugin() {
|
277
|
-
this.unregisterShortcuts();
|
278
212
|
super.disablePlugin();
|
279
213
|
}
|
280
214
|
|
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
|
-
|
348
215
|
/**
|
349
216
|
* Registers all necessary DOM listeners.
|
350
217
|
*
|
@@ -354,14 +221,12 @@ export class Comments extends BasePlugin {
|
|
354
221
|
const {
|
355
222
|
rootDocument
|
356
223
|
} = this.hot;
|
357
|
-
const editorElement = this.getEditorInputElement();
|
358
224
|
this.eventManager.addEventListener(rootDocument, 'mouseover', event => this.onMouseOver(event));
|
359
225
|
this.eventManager.addEventListener(rootDocument, 'mousedown', event => this.onMouseDown(event));
|
360
226
|
this.eventManager.addEventListener(rootDocument, 'mouseup', () => this.onMouseUp());
|
361
|
-
this.eventManager.addEventListener(
|
362
|
-
this.eventManager.addEventListener(
|
363
|
-
this.eventManager.addEventListener(
|
364
|
-
this.eventManager.addEventListener(editorElement, 'mouseup', event => this.onEditorMouseUp(event));
|
227
|
+
this.eventManager.addEventListener(this.editor.getInputElement(), 'blur', () => this.onEditorBlur());
|
228
|
+
this.eventManager.addEventListener(this.editor.getInputElement(), 'mousedown', event => this.onEditorMouseDown(event));
|
229
|
+
this.eventManager.addEventListener(this.editor.getInputElement(), 'mouseup', event => this.onEditorMouseUp(event));
|
365
230
|
}
|
366
231
|
|
367
232
|
/**
|
@@ -400,7 +265,7 @@ export class Comments extends BasePlugin {
|
|
400
265
|
* @returns {boolean}
|
401
266
|
*/
|
402
267
|
targetIsCommentTextArea(event) {
|
403
|
-
return this.
|
268
|
+
return this.editor.getInputElement() === event.target;
|
404
269
|
}
|
405
270
|
|
406
271
|
/**
|
@@ -412,7 +277,7 @@ export class Comments extends BasePlugin {
|
|
412
277
|
if (!this.range.from) {
|
413
278
|
throw new Error('Before using this method, first set cell range (hot.getPlugin("comment").setRange())');
|
414
279
|
}
|
415
|
-
const editorValue =
|
280
|
+
const editorValue = this.editor.getValue();
|
416
281
|
let comment = '';
|
417
282
|
if (value !== null && value !== void 0) {
|
418
283
|
comment = value;
|
@@ -501,7 +366,6 @@ export class Comments extends BasePlugin {
|
|
501
366
|
* @returns {boolean} Returns `true` if comment editor was shown.
|
502
367
|
*/
|
503
368
|
show() {
|
504
|
-
var _ref;
|
505
369
|
if (!this.range.from) {
|
506
370
|
throw new Error('Before using this method, first set cell range (hot.getPlugin("comment").setRange())');
|
507
371
|
}
|
@@ -515,9 +379,8 @@ export class Comments extends BasePlugin {
|
|
515
379
|
return false;
|
516
380
|
}
|
517
381
|
const meta = this.hot.getCellMeta(this.range.from.row, this.range.from.col);
|
518
|
-
|
519
|
-
|
520
|
-
_classPrivateFieldGet(this, _editor).show();
|
382
|
+
this.editor.setValue(meta[META_COMMENT] ? meta[META_COMMENT][META_COMMENT_VALUE] : null || '');
|
383
|
+
this.editor.show();
|
521
384
|
this.refreshEditor(true);
|
522
385
|
return true;
|
523
386
|
}
|
@@ -540,7 +403,7 @@ export class Comments extends BasePlugin {
|
|
540
403
|
* Hides the comment editor.
|
541
404
|
*/
|
542
405
|
hide() {
|
543
|
-
|
406
|
+
this.editor.hide();
|
544
407
|
}
|
545
408
|
|
546
409
|
/**
|
@@ -551,7 +414,7 @@ export class Comments extends BasePlugin {
|
|
551
414
|
refreshEditor() {
|
552
415
|
var _renderableRow, _renderableColumn;
|
553
416
|
let force = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
|
554
|
-
if (!force && (!this.range.from || !
|
417
|
+
if (!force && (!this.range.from || !this.editor.isVisible())) {
|
555
418
|
return;
|
556
419
|
}
|
557
420
|
const {
|
@@ -569,7 +432,7 @@ export class Comments extends BasePlugin {
|
|
569
432
|
|
570
433
|
// Reset the editor position to (0, 0) so the opening direction calculation wouldn't be influenced by its
|
571
434
|
// previous position
|
572
|
-
|
435
|
+
this.editor.setPosition(0, 0);
|
573
436
|
if (renderableRow === null) {
|
574
437
|
renderableRow = rowIndexMapper.getRenderableFromVisualIndex(rowIndexMapper.getNearestNotHiddenIndex(visualRow, -1));
|
575
438
|
}
|
@@ -597,9 +460,9 @@ export class Comments extends BasePlugin {
|
|
597
460
|
}, true);
|
598
461
|
const commentStyle = this.getCommentMeta(visualRow, visualColumn, META_STYLE);
|
599
462
|
if (commentStyle) {
|
600
|
-
|
463
|
+
this.editor.setSize(commentStyle.width, commentStyle.height);
|
601
464
|
} else {
|
602
|
-
|
465
|
+
this.editor.resetSize();
|
603
466
|
}
|
604
467
|
const lastColWidth = isBeforeRenderedColumns ? 0 : wtTable.getStretchedColumnWidth(renderableColumn);
|
605
468
|
const lastRowHeight = targetingPreviousRow && !isBeforeRenderedRows ? outerHeight(TD) : 0;
|
@@ -612,7 +475,7 @@ export class Comments extends BasePlugin {
|
|
612
475
|
const {
|
613
476
|
width: editorWidth,
|
614
477
|
height: editorHeight
|
615
|
-
} =
|
478
|
+
} = this.editor.getSize();
|
616
479
|
const {
|
617
480
|
innerWidth,
|
618
481
|
innerHeight
|
@@ -633,15 +496,28 @@ export class Comments extends BasePlugin {
|
|
633
496
|
if (top + editorHeight > innerHeight) {
|
634
497
|
y -= editorHeight - cellHeight + 1;
|
635
498
|
}
|
636
|
-
|
637
|
-
|
499
|
+
this.editor.setPosition(x, y);
|
500
|
+
this.editor.setReadOnlyState(this.getCommentMeta(visualRow, visualColumn, META_READONLY));
|
638
501
|
}
|
639
502
|
|
640
503
|
/**
|
641
|
-
*
|
504
|
+
* Checks if there is a comment for selected range.
|
505
|
+
*
|
506
|
+
* @private
|
507
|
+
* @returns {boolean}
|
642
508
|
*/
|
643
|
-
|
644
|
-
|
509
|
+
checkSelectionCommentsConsistency() {
|
510
|
+
const selected = this.hot.getSelectedRangeLast();
|
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;
|
645
521
|
}
|
646
522
|
|
647
523
|
/**
|
@@ -689,7 +565,7 @@ export class Comments extends BasePlugin {
|
|
689
565
|
if (!this.hot.view || !this.hot.view._wt) {
|
690
566
|
return;
|
691
567
|
}
|
692
|
-
if (!
|
568
|
+
if (!this.preventEditorAutoSwitch && !this.targetIsCommentTextArea(event)) {
|
693
569
|
const eventCell = closest(event.target, 'TD', 'TBODY');
|
694
570
|
let coordinates = null;
|
695
571
|
if (eventCell) {
|
@@ -708,18 +584,19 @@ export class Comments extends BasePlugin {
|
|
708
584
|
* @param {MouseEvent} event The `mouseover` event.
|
709
585
|
*/
|
710
586
|
onMouseOver(event) {
|
587
|
+
const priv = privatePool.get(this);
|
711
588
|
const {
|
712
589
|
rootDocument
|
713
590
|
} = this.hot;
|
714
|
-
if (
|
591
|
+
if (this.preventEditorAutoSwitch || this.editor.isFocused() || hasClass(event.target, 'wtBorder') || priv.cellBelowCursor === event.target || !this.editor) {
|
715
592
|
return;
|
716
593
|
}
|
717
|
-
|
594
|
+
priv.cellBelowCursor = rootDocument.elementFromPoint(event.clientX, event.clientY);
|
718
595
|
if (this.targetIsCellWithComment(event)) {
|
719
596
|
const range = this.hot._createCellRange(this.hot.getCoords(event.target));
|
720
|
-
|
597
|
+
this.displaySwitch.show(range);
|
721
598
|
} else if (isChildOf(event.target, rootDocument) && !this.targetIsCommentTextArea(event)) {
|
722
|
-
|
599
|
+
this.displaySwitch.hide();
|
723
600
|
}
|
724
601
|
}
|
725
602
|
|
@@ -729,7 +606,7 @@ export class Comments extends BasePlugin {
|
|
729
606
|
* @private
|
730
607
|
*/
|
731
608
|
onMouseUp() {
|
732
|
-
|
609
|
+
this.preventEditorAutoSwitch = false;
|
733
610
|
}
|
734
611
|
|
735
612
|
/**
|
@@ -746,29 +623,14 @@ export class Comments extends BasePlugin {
|
|
746
623
|
}
|
747
624
|
|
748
625
|
/**
|
749
|
-
*
|
750
|
-
* editor content and gives back the keyboard shortcuts control by switching to the "grid" context.
|
626
|
+
* `blur` event callback for the comment editor.
|
751
627
|
*
|
752
628
|
* @private
|
753
629
|
*/
|
754
630
|
onEditorBlur() {
|
755
|
-
_classPrivateFieldSet(this, _commentValueBeforeSave, '');
|
756
|
-
this.hot.getShortcutManager().setActiveContextName('grid');
|
757
631
|
this.setComment();
|
758
632
|
}
|
759
633
|
|
760
|
-
/**
|
761
|
-
* Hook observer the "focus" event from the comments editor element. The hook takes the control of
|
762
|
-
* the keyboard shortcuts by switching the context to plugins one.
|
763
|
-
*
|
764
|
-
* @private
|
765
|
-
*/
|
766
|
-
onEditorFocus() {
|
767
|
-
_classPrivateFieldSet(this, _commentValueBeforeSave, this.getComment());
|
768
|
-
this.hot.listen();
|
769
|
-
this.hot.getShortcutManager().setActiveContextName(SHORTCUTS_CONTEXT_NAME);
|
770
|
-
}
|
771
|
-
|
772
634
|
/**
|
773
635
|
* `mousedown` hook. Along with `onEditorMouseUp` used to simulate the textarea resizing event.
|
774
636
|
*
|
@@ -776,10 +638,11 @@ export class Comments extends BasePlugin {
|
|
776
638
|
* @param {MouseEvent} event The `mousedown` event.
|
777
639
|
*/
|
778
640
|
onEditorMouseDown(event) {
|
779
|
-
|
641
|
+
const priv = privatePool.get(this);
|
642
|
+
priv.tempEditorDimensions = {
|
780
643
|
width: outerWidth(event.target),
|
781
644
|
height: outerHeight(event.target)
|
782
|
-
}
|
645
|
+
};
|
783
646
|
}
|
784
647
|
|
785
648
|
/**
|
@@ -789,9 +652,10 @@ export class Comments extends BasePlugin {
|
|
789
652
|
* @param {MouseEvent} event The `mouseup` event.
|
790
653
|
*/
|
791
654
|
onEditorMouseUp(event) {
|
655
|
+
const priv = privatePool.get(this);
|
792
656
|
const currentWidth = outerWidth(event.target);
|
793
657
|
const currentHeight = outerHeight(event.target);
|
794
|
-
if (currentWidth !==
|
658
|
+
if (currentWidth !== priv.tempEditorDimensions.width + 1 || currentHeight !== priv.tempEditorDimensions.height + 2) {
|
795
659
|
this.updateCommentMeta(this.range.from.row, this.range.from.col, {
|
796
660
|
[META_STYLE]: {
|
797
661
|
width: currentWidth,
|
@@ -802,36 +666,121 @@ export class Comments extends BasePlugin {
|
|
802
666
|
}
|
803
667
|
|
804
668
|
/**
|
805
|
-
*
|
806
|
-
* the table editor into the fast edit mode.
|
669
|
+
* Context Menu's "Add comment" callback. Results in showing the comment editor.
|
807
670
|
*
|
808
|
-
* @
|
671
|
+
* @private
|
809
672
|
*/
|
810
|
-
|
811
|
-
|
812
|
-
|
813
|
-
|
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();
|
814
683
|
}
|
815
684
|
|
816
685
|
/**
|
817
|
-
*
|
686
|
+
* Context Menu's "remove comment" callback.
|
687
|
+
*
|
688
|
+
* @private
|
818
689
|
*/
|
819
|
-
|
820
|
-
|
821
|
-
|
822
|
-
|
690
|
+
onContextMenuRemoveComment() {
|
691
|
+
const coords = this.hot.getSelectedRangeLast();
|
692
|
+
this.preventEditorAutoSwitch = true;
|
693
|
+
coords.forAll((row, column) => {
|
694
|
+
if (row >= 0 && column >= 0) {
|
695
|
+
this.removeCommentAtCell(row, column, false);
|
696
|
+
}
|
697
|
+
});
|
698
|
+
this.hot.render();
|
823
699
|
}
|
824
700
|
|
825
701
|
/**
|
826
|
-
*
|
702
|
+
* Context Menu's "make comment read-only" callback.
|
827
703
|
*
|
828
704
|
* @private
|
829
|
-
* @param {object} options The menu options.
|
830
705
|
*/
|
831
|
-
|
832
|
-
|
833
|
-
|
834
|
-
|
706
|
+
onContextMenuMakeReadOnly() {
|
707
|
+
const coords = this.hot.getSelectedRangeLast();
|
708
|
+
this.preventEditorAutoSwitch = true;
|
709
|
+
coords.forAll((row, column) => {
|
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
|
+
});
|
717
|
+
}
|
718
|
+
|
719
|
+
/**
|
720
|
+
* Add Comments plugin options to the Context Menu.
|
721
|
+
*
|
722
|
+
* @private
|
723
|
+
* @param {object} defaultOptions The menu options.
|
724
|
+
*/
|
725
|
+
addToContextMenu(defaultOptions) {
|
726
|
+
const isThereAnyCellRendered = () => {
|
727
|
+
return this.hot.rowIndexMapper.getRenderableIndexesLength() > 0 && this.hot.columnIndexMapper.getRenderableIndexesLength() > 0;
|
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
|
+
});
|
835
784
|
}
|
836
785
|
|
837
786
|
/**
|
@@ -847,25 +796,15 @@ export class Comments extends BasePlugin {
|
|
847
796
|
}
|
848
797
|
}
|
849
798
|
|
850
|
-
/**
|
851
|
-
* Gets the editors input element.
|
852
|
-
*
|
853
|
-
* @private
|
854
|
-
* @returns {HTMLTextAreaElement}
|
855
|
-
*/
|
856
|
-
getEditorInputElement() {
|
857
|
-
return _classPrivateFieldGet(this, _editor).getInputElement();
|
858
|
-
}
|
859
|
-
|
860
799
|
/**
|
861
800
|
* Destroys the plugin instance.
|
862
801
|
*/
|
863
802
|
destroy() {
|
864
|
-
if (
|
865
|
-
|
803
|
+
if (this.editor) {
|
804
|
+
this.editor.destroy();
|
866
805
|
}
|
867
|
-
if (
|
868
|
-
|
806
|
+
if (this.displaySwitch) {
|
807
|
+
this.displaySwitch.destroy();
|
869
808
|
}
|
870
809
|
super.destroy();
|
871
810
|
}
|