handsontable 11.1.0 → 12.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/3rdparty/walkontable/src/border.js +120 -98
- package/3rdparty/walkontable/src/border.mjs +120 -94
- package/3rdparty/walkontable/src/cell/coords.js +59 -17
- package/3rdparty/walkontable/src/cell/coords.mjs +55 -17
- package/3rdparty/walkontable/src/cell/range.d.ts +10 -2
- package/3rdparty/walkontable/src/cell/range.js +278 -99
- package/3rdparty/walkontable/src/cell/range.mjs +273 -99
- package/3rdparty/walkontable/src/core/_base.js +452 -0
- package/3rdparty/walkontable/src/core/_base.mjs +440 -0
- package/3rdparty/walkontable/src/core/clone.js +97 -0
- package/3rdparty/walkontable/src/core/clone.mjs +80 -0
- package/3rdparty/walkontable/src/core/core.js +183 -0
- package/3rdparty/walkontable/src/core/core.mjs +160 -0
- package/3rdparty/walkontable/src/event.js +99 -66
- package/3rdparty/walkontable/src/event.mjs +99 -63
- package/3rdparty/walkontable/src/facade/core.js +251 -0
- package/3rdparty/walkontable/src/facade/core.mjs +243 -0
- package/3rdparty/walkontable/src/index.js +2 -46
- package/3rdparty/walkontable/src/index.mjs +3 -13
- package/3rdparty/walkontable/src/overlay/_base.js +124 -57
- package/3rdparty/walkontable/src/overlay/_base.mjs +124 -57
- package/3rdparty/walkontable/src/overlay/bottom.js +96 -80
- package/3rdparty/walkontable/src/overlay/bottom.mjs +96 -80
- package/3rdparty/walkontable/src/overlay/{bottomLeftCorner.js → bottomInlineStartCorner.js} +45 -62
- package/3rdparty/walkontable/src/overlay/{bottomLeftCorner.mjs → bottomInlineStartCorner.mjs} +44 -61
- package/3rdparty/walkontable/src/overlay/constants.js +25 -9
- package/3rdparty/walkontable/src/overlay/constants.mjs +14 -4
- package/3rdparty/walkontable/src/overlay/index.js +10 -19
- package/3rdparty/walkontable/src/overlay/index.mjs +4 -5
- package/3rdparty/walkontable/src/overlay/{left.js → inlineStart.js} +113 -82
- package/3rdparty/walkontable/src/overlay/{left.mjs → inlineStart.mjs} +112 -81
- package/3rdparty/walkontable/src/overlay/top.js +93 -68
- package/3rdparty/walkontable/src/overlay/top.mjs +93 -68
- package/3rdparty/walkontable/src/overlay/{topLeftCorner.js → topInlineStartCorner.js} +56 -57
- package/3rdparty/walkontable/src/overlay/{topLeftCorner.mjs → topInlineStartCorner.mjs} +51 -52
- package/3rdparty/walkontable/src/overlays.js +225 -156
- package/3rdparty/walkontable/src/overlays.mjs +224 -154
- package/3rdparty/walkontable/src/renderer/cells.js +4 -3
- package/3rdparty/walkontable/src/renderer/cells.mjs +4 -3
- package/3rdparty/walkontable/src/renderer/colGroup.js +2 -2
- package/3rdparty/walkontable/src/renderer/colGroup.mjs +2 -2
- package/3rdparty/walkontable/src/renderer/columnHeaders.js +2 -2
- package/3rdparty/walkontable/src/renderer/columnHeaders.mjs +2 -2
- package/3rdparty/walkontable/src/renderer/rowHeaders.js +2 -2
- package/3rdparty/walkontable/src/renderer/rowHeaders.mjs +2 -2
- package/3rdparty/walkontable/src/renderer/rows.js +2 -2
- package/3rdparty/walkontable/src/renderer/rows.mjs +2 -2
- package/3rdparty/walkontable/src/scroll.js +125 -104
- package/3rdparty/walkontable/src/scroll.mjs +124 -104
- package/3rdparty/walkontable/src/selection.js +10 -14
- package/3rdparty/walkontable/src/selection.mjs +10 -12
- package/3rdparty/walkontable/src/settings.js +235 -126
- package/3rdparty/walkontable/src/settings.mjs +235 -125
- package/3rdparty/walkontable/src/table/bottom.js +16 -5
- package/3rdparty/walkontable/src/table/bottom.mjs +15 -5
- package/3rdparty/walkontable/src/table/{bottomLeftCorner.js → bottomInlineStartCorner.js} +27 -15
- package/3rdparty/walkontable/src/table/{bottomLeftCorner.mjs → bottomInlineStartCorner.mjs} +26 -15
- package/3rdparty/walkontable/src/table/{left.js → inlineStart.js} +23 -15
- package/3rdparty/walkontable/src/table/{left.mjs → inlineStart.mjs} +22 -15
- package/3rdparty/walkontable/src/table/master.js +22 -12
- package/3rdparty/walkontable/src/table/master.mjs +22 -12
- package/3rdparty/walkontable/src/table/mixin/calculatedColumns.js +12 -6
- package/3rdparty/walkontable/src/table/mixin/calculatedColumns.mjs +12 -6
- package/3rdparty/walkontable/src/table/mixin/calculatedRows.js +12 -6
- package/3rdparty/walkontable/src/table/mixin/calculatedRows.mjs +12 -6
- package/3rdparty/walkontable/src/table/mixin/{stickyColumnsLeft.js → stickyColumnsStart.js} +13 -7
- package/3rdparty/walkontable/src/table/mixin/{stickyColumnsLeft.mjs → stickyColumnsStart.mjs} +13 -7
- package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.js +11 -5
- package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.mjs +11 -5
- package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.js +9 -3
- package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.mjs +9 -3
- package/3rdparty/walkontable/src/table/top.js +16 -5
- package/3rdparty/walkontable/src/table/top.mjs +15 -5
- package/3rdparty/walkontable/src/table/{topLeftCorner.js → topInlineStartCorner.js} +27 -15
- package/3rdparty/walkontable/src/table/{topLeftCorner.mjs → topInlineStartCorner.mjs} +26 -15
- package/3rdparty/walkontable/src/table.js +235 -140
- package/3rdparty/walkontable/src/table.mjs +231 -134
- package/3rdparty/walkontable/src/types.js +103 -0
- package/3rdparty/walkontable/src/types.mjs +102 -0
- package/3rdparty/walkontable/src/utils/column.js +22 -33
- package/3rdparty/walkontable/src/utils/column.mjs +22 -30
- package/3rdparty/walkontable/src/utils/orderView/sharedView.js +2 -2
- package/3rdparty/walkontable/src/utils/orderView/sharedView.mjs +2 -2
- package/3rdparty/walkontable/src/utils/row.js +9 -4
- package/3rdparty/walkontable/src/utils/row.mjs +9 -4
- package/3rdparty/walkontable/src/viewport.js +89 -100
- package/3rdparty/walkontable/src/viewport.mjs +89 -97
- package/CHANGELOG.md +92 -0
- package/LICENSE.txt +1 -1
- package/README.md +0 -1
- package/base.js +2 -2
- package/base.mjs +2 -2
- package/cellTypes/timeType/timeType.d.ts +6 -6
- package/cellTypes/timeType/timeType.js +4 -5
- package/cellTypes/timeType/timeType.mjs +4 -5
- package/core.d.ts +6 -1
- package/core.js +508 -80
- package/core.mjs +517 -92
- package/dataMap/index.js +4 -0
- package/dataMap/index.mjs +2 -1
- package/dataMap/metaManager/index.js +2 -2
- package/dataMap/metaManager/index.mjs +2 -2
- package/dataMap/metaManager/metaLayers/globalMeta.js +4 -0
- package/dataMap/metaManager/metaLayers/globalMeta.mjs +4 -0
- package/dataMap/metaManager/metaLayers/tableMeta.js +2 -2
- package/dataMap/metaManager/metaLayers/tableMeta.mjs +2 -2
- package/dataMap/metaManager/metaSchema.js +282 -187
- package/dataMap/metaManager/metaSchema.mjs +282 -187
- package/dataMap/metaManager/mods/extendMetaProperties.js +126 -0
- package/dataMap/metaManager/mods/extendMetaProperties.mjs +113 -0
- package/dataMap/replaceData.js +3 -17
- package/dataMap/replaceData.mjs +3 -17
- package/dist/handsontable.css +268 -92
- package/dist/handsontable.full.css +269 -103
- package/dist/handsontable.full.js +41990 -35658
- package/dist/handsontable.full.min.css +9 -9
- package/dist/handsontable.full.min.js +144 -144
- package/dist/handsontable.js +29561 -25597
- package/dist/handsontable.min.css +8 -8
- package/dist/handsontable.min.js +4 -4
- package/dist/languages/all.js +131 -34
- package/dist/languages/all.min.js +1 -1
- package/dist/languages/ar-AR.js +167 -0
- package/dist/languages/ar-AR.min.js +1 -0
- package/dist/languages/cs-CZ.js +167 -0
- package/dist/languages/cs-CZ.min.js +1 -0
- package/dist/languages/de-CH.js +31 -29
- package/dist/languages/de-CH.min.js +1 -1
- package/dist/languages/de-DE.js +4 -2
- package/dist/languages/de-DE.min.js +1 -1
- package/dist/languages/en-US.js +4 -2
- package/dist/languages/en-US.min.js +1 -1
- package/dist/languages/es-MX.js +4 -2
- package/dist/languages/es-MX.min.js +1 -1
- package/dist/languages/fr-FR.js +4 -2
- package/dist/languages/fr-FR.min.js +1 -1
- package/dist/languages/it-IT.js +4 -2
- package/dist/languages/it-IT.min.js +1 -1
- package/dist/languages/ja-JP.js +36 -38
- package/dist/languages/ja-JP.min.js +1 -1
- package/dist/languages/ko-KR.js +36 -39
- package/dist/languages/ko-KR.min.js +1 -1
- package/dist/languages/lv-LV.js +2 -2
- package/dist/languages/lv-LV.min.js +1 -1
- package/dist/languages/nb-NO.js +2 -2
- package/dist/languages/nb-NO.min.js +1 -1
- package/dist/languages/nl-NL.js +2 -2
- package/dist/languages/nl-NL.min.js +1 -1
- package/dist/languages/pl-PL.js +2 -2
- package/dist/languages/pl-PL.min.js +1 -1
- package/dist/languages/pt-BR.js +2 -2
- package/dist/languages/pt-BR.min.js +1 -1
- package/dist/languages/ru-RU.js +2 -2
- package/dist/languages/ru-RU.min.js +1 -1
- package/dist/languages/sr-SP.js +171 -0
- package/dist/languages/sr-SP.min.js +1 -0
- package/dist/languages/zh-CN.js +24 -24
- package/dist/languages/zh-CN.min.js +1 -1
- package/dist/languages/zh-TW.js +24 -24
- package/dist/languages/zh-TW.min.js +1 -1
- package/editorManager.js +120 -267
- package/editorManager.mjs +128 -278
- package/editors/autocompleteEditor/autocompleteEditor.js +22 -25
- package/editors/autocompleteEditor/autocompleteEditor.mjs +22 -25
- package/editors/baseEditor/baseEditor.js +205 -34
- package/editors/baseEditor/baseEditor.mjs +200 -32
- package/editors/checkboxEditor/checkboxEditor.js +2 -2
- package/editors/checkboxEditor/checkboxEditor.mjs +2 -2
- package/editors/dateEditor/dateEditor.js +21 -8
- package/editors/dateEditor/dateEditor.mjs +22 -9
- package/editors/dropdownEditor/dropdownEditor.js +3 -3
- package/editors/dropdownEditor/dropdownEditor.mjs +3 -3
- package/editors/handsontableEditor/handsontableEditor.js +106 -55
- package/editors/handsontableEditor/handsontableEditor.mjs +106 -55
- package/editors/index.d.ts +3 -0
- package/editors/index.js +6 -0
- package/editors/index.mjs +3 -1
- package/editors/numericEditor/numericEditor.js +2 -2
- package/editors/numericEditor/numericEditor.mjs +2 -2
- package/editors/passwordEditor/passwordEditor.js +3 -3
- package/editors/passwordEditor/passwordEditor.mjs +3 -3
- package/editors/selectEditor/selectEditor.js +65 -110
- package/editors/selectEditor/selectEditor.mjs +66 -109
- package/editors/textEditor/caretPositioner.js +49 -0
- package/editors/textEditor/caretPositioner.mjs +42 -0
- package/editors/textEditor/textEditor.js +205 -181
- package/editors/textEditor/textEditor.mjs +199 -179
- package/editors/timeEditor/index.d.ts +1 -0
- package/editors/timeEditor/index.js +9 -0
- package/editors/timeEditor/index.mjs +1 -0
- package/editors/timeEditor/timeEditor.d.ts +7 -0
- package/editors/timeEditor/timeEditor.js +105 -0
- package/editors/timeEditor/timeEditor.mjs +84 -0
- package/eventManager.js +4 -2
- package/eventManager.mjs +4 -2
- package/helpers/mixed.js +2 -2
- package/helpers/mixed.mjs +2 -2
- package/i18n/languages/ar-AR.js +41 -0
- package/i18n/languages/ar-AR.mjs +17 -0
- package/i18n/languages/cs-CZ.js +40 -0
- package/i18n/languages/cs-CZ.mjs +16 -0
- package/i18n/languages/index.js +12 -0
- package/i18n/languages/index.mjs +4 -1
- package/i18n/languages/sr-SP.js +40 -0
- package/i18n/languages/sr-SP.mjs +16 -0
- package/index.d.ts +4 -0
- package/languages/all.js +131 -34
- package/languages/ar-AR.js +167 -0
- package/languages/ar-AR.mjs +19 -0
- package/languages/cs-CZ.js +167 -0
- package/languages/cs-CZ.mjs +18 -0
- package/languages/de-CH.js +31 -29
- package/languages/de-DE.js +4 -2
- package/languages/en-US.js +4 -2
- package/languages/es-MX.js +4 -2
- package/languages/fr-FR.js +4 -2
- package/languages/index.js +131 -34
- package/languages/index.mjs +4 -1
- package/languages/it-IT.js +4 -2
- package/languages/ja-JP.js +36 -38
- package/languages/ko-KR.js +36 -39
- package/languages/lv-LV.js +2 -2
- package/languages/nb-NO.js +2 -2
- package/languages/nl-NL.js +2 -2
- package/languages/pl-PL.js +2 -2
- package/languages/pt-BR.js +2 -2
- package/languages/ru-RU.js +2 -2
- package/languages/sr-SP.js +171 -0
- package/languages/sr-SP.mjs +18 -0
- package/languages/zh-CN.js +24 -24
- package/languages/zh-TW.js +24 -24
- package/package.json +44 -4
- package/pluginHooks.js +49 -13
- package/pluginHooks.mjs +49 -13
- package/plugins/autoColumnSize/autoColumnSize.js +15 -10
- package/plugins/autoColumnSize/autoColumnSize.mjs +15 -10
- package/plugins/autoRowSize/autoRowSize.js +14 -9
- package/plugins/autoRowSize/autoRowSize.mjs +14 -9
- package/plugins/autofill/autofill.js +49 -33
- package/plugins/autofill/autofill.mjs +49 -32
- package/plugins/autofill/utils.js +10 -11
- package/plugins/autofill/utils.mjs +10 -10
- package/plugins/base/base.d.ts +8 -2
- package/plugins/base/base.js +67 -4
- package/plugins/base/base.mjs +66 -4
- package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.js +3 -3
- package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.mjs +3 -3
- package/plugins/bindRowsWithHeaders/maps/looseBindsMap.js +3 -3
- package/plugins/bindRowsWithHeaders/maps/looseBindsMap.mjs +3 -3
- package/plugins/bindRowsWithHeaders/maps/strictBindsMap.js +3 -3
- package/plugins/bindRowsWithHeaders/maps/strictBindsMap.mjs +3 -3
- package/plugins/collapsibleColumns/collapsibleColumns.js +27 -9
- package/plugins/collapsibleColumns/collapsibleColumns.mjs +27 -9
- package/plugins/columnSorting/columnSorting.js +5 -7
- package/plugins/columnSorting/columnSorting.mjs +5 -6
- package/plugins/columnSummary/columnSummary.js +3 -3
- package/plugins/columnSummary/columnSummary.mjs +3 -3
- package/plugins/comments/commentEditor.js +18 -2
- package/plugins/comments/commentEditor.mjs +19 -3
- package/plugins/comments/comments.js +57 -46
- package/plugins/comments/comments.mjs +58 -46
- package/plugins/contextMenu/contextMenu.js +10 -6
- package/plugins/contextMenu/contextMenu.mjs +10 -6
- package/plugins/contextMenu/menu.js +222 -110
- package/plugins/contextMenu/menu.mjs +219 -111
- package/plugins/contextMenu/predefinedItems/columnLeft.js +12 -4
- package/plugins/contextMenu/predefinedItems/columnLeft.mjs +11 -4
- package/plugins/contextMenu/predefinedItems/columnRight.js +9 -9
- package/plugins/contextMenu/predefinedItems/columnRight.mjs +9 -9
- package/plugins/contextMenu/utils.js +2 -2
- package/plugins/contextMenu/utils.mjs +2 -2
- package/plugins/copyPaste/copyPaste.js +31 -21
- package/plugins/copyPaste/copyPaste.mjs +30 -21
- package/plugins/customBorders/contextMenuItem/left.js +4 -3
- package/plugins/customBorders/contextMenuItem/left.mjs +4 -3
- package/plugins/customBorders/contextMenuItem/right.js +4 -3
- package/plugins/customBorders/contextMenuItem/right.mjs +4 -3
- package/plugins/customBorders/customBorders.js +144 -87
- package/plugins/customBorders/customBorders.mjs +143 -85
- package/plugins/customBorders/utils.js +131 -27
- package/plugins/customBorders/utils.mjs +115 -27
- package/plugins/dragToScroll/dragToScroll.js +10 -5
- package/plugins/dragToScroll/dragToScroll.mjs +10 -5
- package/plugins/dropdownMenu/dropdownMenu.js +9 -7
- package/plugins/dropdownMenu/dropdownMenu.mjs +9 -7
- package/plugins/exportFile/exportFile.js +2 -2
- package/plugins/exportFile/exportFile.mjs +2 -2
- package/plugins/exportFile/types/csv.js +2 -2
- package/plugins/exportFile/types/csv.mjs +2 -2
- package/plugins/filters/component/actionBar.js +2 -2
- package/plugins/filters/component/actionBar.mjs +2 -2
- package/plugins/filters/component/condition.js +3 -3
- package/plugins/filters/component/condition.mjs +3 -3
- package/plugins/filters/component/operators.js +2 -2
- package/plugins/filters/component/operators.mjs +2 -2
- package/plugins/filters/component/value.js +3 -3
- package/plugins/filters/component/value.mjs +3 -3
- package/plugins/filters/filters.js +11 -8
- package/plugins/filters/filters.mjs +11 -8
- package/plugins/filters/ui/input.js +3 -3
- package/plugins/filters/ui/input.mjs +3 -3
- package/plugins/filters/ui/link.js +3 -3
- package/plugins/filters/ui/link.mjs +3 -3
- package/plugins/filters/ui/multipleSelect.js +18 -31
- package/plugins/filters/ui/multipleSelect.mjs +18 -31
- package/plugins/filters/ui/radioInput.js +3 -3
- package/plugins/filters/ui/radioInput.mjs +3 -3
- package/plugins/filters/ui/select.js +4 -4
- package/plugins/filters/ui/select.mjs +4 -4
- package/plugins/formulas/formulas.js +14 -9
- package/plugins/formulas/formulas.mjs +14 -9
- package/plugins/hiddenColumns/contextMenuItem/hideColumn.js +2 -4
- package/plugins/hiddenColumns/contextMenuItem/hideColumn.mjs +2 -4
- package/plugins/hiddenColumns/contextMenuItem/showColumn.js +5 -5
- package/plugins/hiddenColumns/contextMenuItem/showColumn.mjs +5 -5
- package/plugins/hiddenColumns/hiddenColumns.js +9 -4
- package/plugins/hiddenColumns/hiddenColumns.mjs +9 -4
- package/plugins/hiddenRows/contextMenuItem/hideRow.js +2 -4
- package/plugins/hiddenRows/contextMenuItem/hideRow.mjs +2 -4
- package/plugins/hiddenRows/contextMenuItem/showRow.js +5 -5
- package/plugins/hiddenRows/contextMenuItem/showRow.mjs +5 -5
- package/plugins/hiddenRows/hiddenRows.js +9 -4
- package/plugins/hiddenRows/hiddenRows.mjs +9 -4
- package/plugins/manualColumnFreeze/contextMenuItem/freezeColumn.js +1 -1
- package/plugins/manualColumnFreeze/contextMenuItem/freezeColumn.mjs +1 -1
- package/plugins/manualColumnFreeze/contextMenuItem/unfreezeColumn.js +1 -1
- package/plugins/manualColumnFreeze/contextMenuItem/unfreezeColumn.mjs +1 -1
- package/plugins/manualColumnFreeze/manualColumnFreeze.js +54 -15
- package/plugins/manualColumnFreeze/manualColumnFreeze.mjs +49 -15
- package/plugins/manualColumnMove/manualColumnMove.js +70 -70
- package/plugins/manualColumnMove/manualColumnMove.mjs +71 -71
- package/plugins/manualColumnMove/ui/_base.js +25 -12
- package/plugins/manualColumnMove/ui/_base.mjs +24 -12
- package/plugins/manualColumnMove/ui/backlight.js +3 -3
- package/plugins/manualColumnMove/ui/backlight.mjs +3 -3
- package/plugins/manualColumnMove/ui/guideline.js +3 -3
- package/plugins/manualColumnMove/ui/guideline.mjs +3 -3
- package/plugins/manualColumnResize/manualColumnResize.js +37 -21
- package/plugins/manualColumnResize/manualColumnResize.mjs +37 -21
- package/plugins/manualRowMove/manualRowMove.js +26 -34
- package/plugins/manualRowMove/manualRowMove.mjs +26 -34
- package/plugins/manualRowMove/ui/backlight.js +3 -3
- package/plugins/manualRowMove/ui/backlight.mjs +3 -3
- package/plugins/manualRowMove/ui/guideline.js +3 -3
- package/plugins/manualRowMove/ui/guideline.mjs +3 -3
- package/plugins/manualRowResize/manualRowResize.js +34 -19
- package/plugins/manualRowResize/manualRowResize.mjs +34 -19
- package/plugins/mergeCells/calculations/autofill.js +6 -5
- package/plugins/mergeCells/calculations/autofill.mjs +6 -4
- package/plugins/mergeCells/calculations/selection.js +9 -4
- package/plugins/mergeCells/calculations/selection.mjs +9 -4
- package/plugins/mergeCells/cellCoords.js +16 -4
- package/plugins/mergeCells/cellCoords.mjs +16 -3
- package/plugins/mergeCells/cellsCollection.js +30 -23
- package/plugins/mergeCells/cellsCollection.mjs +30 -22
- package/plugins/mergeCells/mergeCells.js +94 -61
- package/plugins/mergeCells/mergeCells.mjs +94 -59
- package/plugins/multiColumnSorting/multiColumnSorting.js +4 -6
- package/plugins/multiColumnSorting/multiColumnSorting.mjs +4 -5
- package/plugins/multipleSelectionHandles/multipleSelectionHandles.js +51 -57
- package/plugins/multipleSelectionHandles/multipleSelectionHandles.mjs +52 -57
- package/plugins/nestedHeaders/nestedHeaders.js +31 -20
- package/plugins/nestedHeaders/nestedHeaders.mjs +31 -20
- package/plugins/nestedHeaders/stateManager/utils.js +3 -4
- package/plugins/nestedHeaders/stateManager/utils.mjs +3 -4
- package/plugins/nestedHeaders/utils/ghostTable.js +114 -75
- package/plugins/nestedHeaders/utils/ghostTable.mjs +114 -74
- package/plugins/nestedRows/nestedRows.js +9 -4
- package/plugins/nestedRows/nestedRows.mjs +9 -4
- package/plugins/nestedRows/ui/collapsing.js +2 -2
- package/plugins/nestedRows/ui/collapsing.mjs +2 -2
- package/plugins/nestedRows/ui/contextMenu.js +2 -2
- package/plugins/nestedRows/ui/contextMenu.mjs +2 -2
- package/plugins/nestedRows/ui/headers.js +2 -2
- package/plugins/nestedRows/ui/headers.mjs +2 -2
- package/plugins/nestedRows/utils/rowMoveController.js +2 -4
- package/plugins/nestedRows/utils/rowMoveController.mjs +2 -3
- package/plugins/persistentState/persistentState.js +9 -4
- package/plugins/persistentState/persistentState.mjs +9 -4
- package/plugins/search/search.js +9 -4
- package/plugins/search/search.mjs +9 -4
- package/plugins/touchScroll/touchScroll.js +27 -21
- package/plugins/touchScroll/touchScroll.mjs +27 -21
- package/plugins/trimRows/trimRows.js +9 -4
- package/plugins/trimRows/trimRows.mjs +9 -4
- package/plugins/undoRedo/undoRedo.js +53 -47
- package/plugins/undoRedo/undoRedo.mjs +53 -46
- package/renderers/autocompleteRenderer/autocompleteRenderer.js +1 -3
- package/renderers/autocompleteRenderer/autocompleteRenderer.mjs +1 -2
- package/renderers/checkboxRenderer/checkboxRenderer.js +48 -43
- package/renderers/checkboxRenderer/checkboxRenderer.mjs +48 -41
- package/renderers/index.d.ts +4 -1
- package/renderers/index.js +6 -0
- package/renderers/index.mjs +3 -1
- package/renderers/numericRenderer/numericRenderer.js +1 -0
- package/renderers/numericRenderer/numericRenderer.mjs +1 -0
- package/renderers/timeRenderer/index.d.ts +1 -0
- package/renderers/timeRenderer/index.js +9 -0
- package/renderers/timeRenderer/index.mjs +1 -0
- package/renderers/timeRenderer/timeRenderer.d.ts +5 -0
- package/renderers/timeRenderer/timeRenderer.js +31 -0
- package/renderers/timeRenderer/timeRenderer.mjs +20 -0
- package/selection/highlight/visualSelection.js +94 -220
- package/selection/highlight/visualSelection.mjs +91 -213
- package/selection/mouseEventHandler.js +15 -10
- package/selection/mouseEventHandler.mjs +15 -9
- package/selection/range.js +4 -5
- package/selection/range.mjs +4 -5
- package/selection/selection.js +35 -22
- package/selection/selection.mjs +35 -20
- package/selection/transformation.js +4 -6
- package/selection/transformation.mjs +4 -5
- package/settings.d.ts +3 -1
- package/shortcuts/context.d.ts +20 -0
- package/shortcuts/context.js +296 -0
- package/shortcuts/context.mjs +268 -0
- package/shortcuts/index.d.ts +1 -0
- package/shortcuts/index.js +8 -0
- package/shortcuts/index.mjs +1 -0
- package/shortcuts/keyObserver.js +67 -0
- package/shortcuts/keyObserver.mjs +58 -0
- package/shortcuts/manager.d.ts +10 -0
- package/shortcuts/manager.js +185 -0
- package/shortcuts/manager.mjs +176 -0
- package/shortcuts/recorder.js +192 -0
- package/shortcuts/recorder.mjs +180 -0
- package/shortcuts/utils.js +77 -0
- package/shortcuts/utils.mjs +54 -0
- package/tableView.js +164 -84
- package/tableView.mjs +164 -74
- package/translations/changesObservable/observer.js +0 -1
- package/translations/changesObservable/observer.mjs +0 -1
- package/translations/indexMapper.d.ts +3 -1
- package/translations/indexMapper.js +89 -11
- package/translations/indexMapper.mjs +91 -20
- package/translations/mapCollections/aggregatedCollection.js +2 -2
- package/translations/mapCollections/aggregatedCollection.mjs +2 -2
- package/translations/maps/hidingMap.js +4 -2
- package/translations/maps/hidingMap.mjs +4 -2
- package/translations/maps/indexMap.js +2 -0
- package/translations/maps/indexMap.mjs +2 -0
- package/translations/maps/indexesSequence.js +5 -3
- package/translations/maps/indexesSequence.mjs +5 -3
- package/translations/maps/linkedPhysicalIndexToValueMap.js +5 -3
- package/translations/maps/linkedPhysicalIndexToValueMap.mjs +5 -3
- package/translations/maps/physicalIndexToValueMap.js +5 -3
- package/translations/maps/physicalIndexToValueMap.mjs +5 -3
- package/translations/maps/trimmingMap.js +4 -2
- package/translations/maps/trimmingMap.mjs +4 -2
- package/utils/dataStructures/uniqueMap.js +14 -1
- package/utils/dataStructures/uniqueMap.mjs +14 -1
- package/utils/dataStructures/uniqueSet.js +9 -0
- package/utils/dataStructures/uniqueSet.mjs +9 -0
- package/utils/ghostTable.js +1 -1
- package/utils/ghostTable.mjs +1 -1
- package/3rdparty/walkontable/src/core.js +0 -309
- package/3rdparty/walkontable/src/core.mjs +0 -293
- package/3rdparty/walkontable/src/overlay/registerer.js +0 -70
- package/3rdparty/walkontable/src/overlay/registerer.mjs +0 -57
- package/utils/keyStateObserver.js +0 -121
- package/utils/keyStateObserver.mjs +0 -103
@@ -17,20 +17,16 @@ require("core-js/modules/web.timers.js");
|
|
17
17
|
|
18
18
|
require("core-js/modules/es.array.includes.js");
|
19
19
|
|
20
|
-
var _element = require("
|
20
|
+
var _element = require("../../../helpers/dom/element");
|
21
21
|
|
22
|
-
var _function = require("
|
22
|
+
var _function = require("../../../helpers/function");
|
23
23
|
|
24
|
-
var _feature = require("
|
24
|
+
var _feature = require("../../../helpers/feature");
|
25
25
|
|
26
|
-
var _browser = require("
|
27
|
-
|
28
|
-
var _eventManager = _interopRequireDefault(require("./../../../eventManager"));
|
26
|
+
var _browser = require("../../../helpers/browser");
|
29
27
|
|
30
28
|
var _mixed = require("../../../helpers/mixed");
|
31
29
|
|
32
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
33
|
-
|
34
30
|
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
35
31
|
|
36
32
|
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
|
@@ -44,26 +40,44 @@ var privatePool = new WeakMap();
|
|
44
40
|
|
45
41
|
var Event = /*#__PURE__*/function () {
|
46
42
|
/**
|
47
|
-
* @param {
|
43
|
+
* @param {FacadeGetter} facadeGetter Gets an instance facade.
|
44
|
+
* @param {DomBindings} domBindings Bindings into dom.
|
45
|
+
* @param {Settings} wtSettings The walkontable settings.
|
46
|
+
* @param {EventManager} eventManager The walkontable event manager.
|
47
|
+
* @param {Table} wtTable The table.
|
48
|
+
* @param {Selections} selections Selections.
|
49
|
+
* @param {Event} [parent=null] The main Event instance.
|
48
50
|
*/
|
49
|
-
function Event(
|
51
|
+
function Event(facadeGetter, domBindings, wtSettings, eventManager, wtTable, selections) {
|
52
|
+
var parent = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : null;
|
53
|
+
|
50
54
|
_classCallCheck(this, Event);
|
51
55
|
|
56
|
+
this.wtSettings = wtSettings;
|
57
|
+
this.domBindings = domBindings;
|
58
|
+
this.wtTable = wtTable;
|
59
|
+
this.selections = selections;
|
60
|
+
this.parent = parent;
|
52
61
|
/**
|
53
|
-
* Instance of {@link
|
62
|
+
* Instance of {@link EventManager}.
|
54
63
|
*
|
55
64
|
* @private
|
56
|
-
* @type {
|
65
|
+
* @type {EventManager}
|
57
66
|
*/
|
58
|
-
|
67
|
+
|
68
|
+
this.eventManager = eventManager;
|
59
69
|
/**
|
60
|
-
*
|
70
|
+
* Should be use only for passing face called external origin methods, like registered event listeners.
|
71
|
+
* It provides backward compatibility by getting instance facade.
|
61
72
|
*
|
73
|
+
* @todo Consider about removing this from Event class, because it make relationship into facade (implicit circular dependency).
|
74
|
+
* @todo Con. Maybe passing listener caller as an ioc from faced resolves this issue. To rethink later.
|
75
|
+
*
|
76
|
+
* @type {FacadeGetter}
|
62
77
|
* @private
|
63
|
-
* @type {EventManager}
|
64
78
|
*/
|
65
79
|
|
66
|
-
this.
|
80
|
+
this.facadeGetter = facadeGetter;
|
67
81
|
privatePool.set(this, {
|
68
82
|
selectedCellBeforeTouchEnd: void 0,
|
69
83
|
dblClickTimeout: [null, null],
|
@@ -83,53 +97,53 @@ var Event = /*#__PURE__*/function () {
|
|
83
97
|
value: function registerEvents() {
|
84
98
|
var _this = this;
|
85
99
|
|
86
|
-
this.eventManager.addEventListener(this.
|
100
|
+
this.eventManager.addEventListener(this.wtTable.holder, 'contextmenu', function (event) {
|
87
101
|
return _this.onContextMenu(event);
|
88
102
|
});
|
89
|
-
this.eventManager.addEventListener(this.
|
103
|
+
this.eventManager.addEventListener(this.wtTable.TABLE, 'mouseover', function (event) {
|
90
104
|
return _this.onMouseOver(event);
|
91
105
|
});
|
92
|
-
this.eventManager.addEventListener(this.
|
106
|
+
this.eventManager.addEventListener(this.wtTable.TABLE, 'mouseout', function (event) {
|
93
107
|
return _this.onMouseOut(event);
|
94
108
|
});
|
95
109
|
|
96
110
|
var initTouchEvents = function initTouchEvents() {
|
97
|
-
_this.eventManager.addEventListener(_this.
|
111
|
+
_this.eventManager.addEventListener(_this.wtTable.holder, 'touchstart', function (event) {
|
98
112
|
return _this.onTouchStart(event);
|
99
113
|
});
|
100
114
|
|
101
|
-
_this.eventManager.addEventListener(_this.
|
115
|
+
_this.eventManager.addEventListener(_this.wtTable.holder, 'touchend', function (event) {
|
102
116
|
return _this.onTouchEnd(event);
|
103
117
|
});
|
104
118
|
|
105
|
-
if (!_this.
|
106
|
-
_this.
|
119
|
+
if (!_this.momentumScrolling) {
|
120
|
+
_this.momentumScrolling = {};
|
107
121
|
}
|
108
122
|
|
109
|
-
_this.eventManager.addEventListener(_this.
|
110
|
-
clearTimeout(_this.
|
123
|
+
_this.eventManager.addEventListener(_this.wtTable.holder, 'scroll', function () {
|
124
|
+
clearTimeout(_this.momentumScrolling._timeout);
|
111
125
|
|
112
|
-
if (!_this.
|
113
|
-
_this.
|
126
|
+
if (!_this.momentumScrolling.ongoing) {
|
127
|
+
_this.wtSettings.getSetting('onBeforeTouchScroll');
|
114
128
|
}
|
115
129
|
|
116
|
-
_this.
|
117
|
-
_this.
|
118
|
-
if (!_this.
|
119
|
-
_this.
|
130
|
+
_this.momentumScrolling.ongoing = true;
|
131
|
+
_this.momentumScrolling._timeout = setTimeout(function () {
|
132
|
+
if (!_this.touchApplied) {
|
133
|
+
_this.momentumScrolling.ongoing = false;
|
120
134
|
|
121
|
-
_this.
|
135
|
+
_this.wtSettings.getSetting('onAfterMomentumScroll');
|
122
136
|
}
|
123
137
|
}, 200);
|
124
138
|
});
|
125
139
|
};
|
126
140
|
|
127
141
|
var initMouseEvents = function initMouseEvents() {
|
128
|
-
_this.eventManager.addEventListener(_this.
|
142
|
+
_this.eventManager.addEventListener(_this.wtTable.holder, 'mouseup', function (event) {
|
129
143
|
return _this.onMouseUp(event);
|
130
144
|
});
|
131
145
|
|
132
|
-
_this.eventManager.addEventListener(_this.
|
146
|
+
_this.eventManager.addEventListener(_this.wtTable.holder, 'mousedown', function (event) {
|
133
147
|
return _this.onMouseDown(event);
|
134
148
|
});
|
135
149
|
};
|
@@ -184,19 +198,19 @@ var Event = /*#__PURE__*/function () {
|
|
184
198
|
key: "parentCell",
|
185
199
|
value: function parentCell(elem) {
|
186
200
|
var cell = {};
|
187
|
-
var TABLE = this.
|
201
|
+
var TABLE = this.wtTable.TABLE;
|
188
202
|
var TD = (0, _element.closestDown)(elem, ['TD', 'TH'], TABLE);
|
189
203
|
|
190
204
|
if (TD) {
|
191
|
-
cell.coords = this.
|
205
|
+
cell.coords = this.wtTable.getCoords(TD);
|
192
206
|
cell.TD = TD;
|
193
207
|
} else if ((0, _element.hasClass)(elem, 'wtBorder') && (0, _element.hasClass)(elem, 'current')) {
|
194
|
-
cell.coords = this.
|
195
|
-
cell.TD = this.
|
208
|
+
cell.coords = this.selections.getCell().cellRange.highlight;
|
209
|
+
cell.TD = this.wtTable.getCell(cell.coords);
|
196
210
|
} else if ((0, _element.hasClass)(elem, 'wtBorder') && (0, _element.hasClass)(elem, 'area')) {
|
197
|
-
if (this.
|
198
|
-
cell.coords = this.
|
199
|
-
cell.TD = this.
|
211
|
+
if (this.selections.createOrGetArea().cellRange) {
|
212
|
+
cell.coords = this.selections.createOrGetArea().cellRange.to;
|
213
|
+
cell.TD = this.wtTable.getCell(cell.coords);
|
200
214
|
}
|
201
215
|
}
|
202
216
|
|
@@ -213,7 +227,7 @@ var Event = /*#__PURE__*/function () {
|
|
213
227
|
key: "onMouseDown",
|
214
228
|
value: function onMouseDown(event) {
|
215
229
|
var priv = privatePool.get(this);
|
216
|
-
var activeElement = this.
|
230
|
+
var activeElement = this.domBindings.rootDocument.activeElement;
|
217
231
|
var getParentNode = (0, _function.partial)(_element.getParent, event.target);
|
218
232
|
var realTarget = event.target; // ignore focusable element from mouse down processing (https://github.com/handsontable/handsontable/issues/3555)
|
219
233
|
|
@@ -224,13 +238,13 @@ var Event = /*#__PURE__*/function () {
|
|
224
238
|
var cell = this.parentCell(realTarget);
|
225
239
|
|
226
240
|
if ((0, _element.hasClass)(realTarget, 'corner')) {
|
227
|
-
this.
|
228
|
-
} else if (cell.TD && this.
|
229
|
-
this.
|
241
|
+
this.wtSettings.getSetting('onCellCornerMouseDown', event, realTarget);
|
242
|
+
} else if (cell.TD && this.wtSettings.has('onCellMouseDown')) {
|
243
|
+
this.callListener('onCellMouseDown', event, cell.coords, cell.TD);
|
230
244
|
} // doubleclick reacts only for left mouse button or from touch events
|
231
245
|
|
232
246
|
|
233
|
-
if ((event.button === 0 || this.
|
247
|
+
if ((event.button === 0 || this.touchApplied) && cell.TD) {
|
234
248
|
priv.dblClickOrigin[0] = cell.TD;
|
235
249
|
clearTimeout(priv.dblClickTimeout[0]);
|
236
250
|
priv.dblClickTimeout[0] = setTimeout(function () {
|
@@ -248,11 +262,11 @@ var Event = /*#__PURE__*/function () {
|
|
248
262
|
}, {
|
249
263
|
key: "onContextMenu",
|
250
264
|
value: function onContextMenu(event) {
|
251
|
-
if (this.
|
265
|
+
if (this.wtSettings.has('onCellContextMenu')) {
|
252
266
|
var cell = this.parentCell(event.target);
|
253
267
|
|
254
268
|
if (cell.TD) {
|
255
|
-
this.
|
269
|
+
this.callListener('onCellContextMenu', event, cell.coords, cell.TD);
|
256
270
|
}
|
257
271
|
}
|
258
272
|
}
|
@@ -266,17 +280,17 @@ var Event = /*#__PURE__*/function () {
|
|
266
280
|
}, {
|
267
281
|
key: "onMouseOver",
|
268
282
|
value: function onMouseOver(event) {
|
269
|
-
if (!this.
|
283
|
+
if (!this.wtSettings.has('onCellMouseOver')) {
|
270
284
|
return;
|
271
285
|
}
|
272
286
|
|
273
|
-
var table = this.
|
287
|
+
var table = this.wtTable.TABLE;
|
274
288
|
var td = (0, _element.closestDown)(event.target, ['TD', 'TH'], table);
|
275
|
-
var
|
289
|
+
var parent = this.parent || this;
|
276
290
|
|
277
|
-
if (td && td !==
|
278
|
-
|
279
|
-
this.
|
291
|
+
if (td && td !== parent.lastMouseOver && (0, _element.isChildOf)(td, table)) {
|
292
|
+
parent.lastMouseOver = td;
|
293
|
+
this.callListener('onCellMouseOver', event, this.wtTable.getCoords(td), td);
|
280
294
|
}
|
281
295
|
}
|
282
296
|
/**
|
@@ -289,16 +303,16 @@ var Event = /*#__PURE__*/function () {
|
|
289
303
|
}, {
|
290
304
|
key: "onMouseOut",
|
291
305
|
value: function onMouseOut(event) {
|
292
|
-
if (!this.
|
306
|
+
if (!this.wtSettings.has('onCellMouseOut')) {
|
293
307
|
return;
|
294
308
|
}
|
295
309
|
|
296
|
-
var table = this.
|
310
|
+
var table = this.wtTable.TABLE;
|
297
311
|
var lastTD = (0, _element.closestDown)(event.target, ['TD', 'TH'], table);
|
298
312
|
var nextTD = (0, _element.closestDown)(event.relatedTarget, ['TD', 'TH'], table);
|
299
313
|
|
300
314
|
if (lastTD && lastTD !== nextTD && (0, _element.isChildOf)(lastTD, table)) {
|
301
|
-
this.
|
315
|
+
this.callListener('onCellMouseOut', event, this.wtTable.getCoords(lastTD), lastTD);
|
302
316
|
}
|
303
317
|
}
|
304
318
|
/**
|
@@ -314,20 +328,20 @@ var Event = /*#__PURE__*/function () {
|
|
314
328
|
var priv = privatePool.get(this);
|
315
329
|
var cell = this.parentCell(event.target);
|
316
330
|
|
317
|
-
if (cell.TD && this.
|
318
|
-
this.
|
331
|
+
if (cell.TD && this.wtSettings.has('onCellMouseUp')) {
|
332
|
+
this.callListener('onCellMouseUp', event, cell.coords, cell.TD);
|
319
333
|
} // if not left mouse button, and the origin event is not comes from touch
|
320
334
|
|
321
335
|
|
322
|
-
if (event.button !== 0 && !this.
|
336
|
+
if (event.button !== 0 && !this.touchApplied) {
|
323
337
|
return;
|
324
338
|
}
|
325
339
|
|
326
340
|
if (cell.TD === priv.dblClickOrigin[0] && cell.TD === priv.dblClickOrigin[1]) {
|
327
341
|
if ((0, _element.hasClass)(event.target, 'corner')) {
|
328
|
-
this.
|
342
|
+
this.callListener('onCellCornerDblClick', event, cell.coords, cell.TD);
|
329
343
|
} else {
|
330
|
-
this.
|
344
|
+
this.callListener('onCellDblClick', event, cell.coords, cell.TD);
|
331
345
|
}
|
332
346
|
|
333
347
|
priv.dblClickOrigin[0] = null;
|
@@ -351,8 +365,8 @@ var Event = /*#__PURE__*/function () {
|
|
351
365
|
key: "onTouchStart",
|
352
366
|
value: function onTouchStart(event) {
|
353
367
|
var priv = privatePool.get(this);
|
354
|
-
priv.selectedCellBeforeTouchEnd = this.
|
355
|
-
this.
|
368
|
+
priv.selectedCellBeforeTouchEnd = this.selections.getCell().cellRange;
|
369
|
+
this.touchApplied = true;
|
356
370
|
this.onMouseDown(event);
|
357
371
|
}
|
358
372
|
/**
|
@@ -370,7 +384,7 @@ var Event = /*#__PURE__*/function () {
|
|
370
384
|
var target = event.target;
|
371
385
|
var parentCellCoords = (_this$parentCell = this.parentCell(target)) === null || _this$parentCell === void 0 ? void 0 : _this$parentCell.coords;
|
372
386
|
var isCellsRange = (0, _mixed.isDefined)(parentCellCoords) && parentCellCoords.row >= 0 && parentCellCoords.col >= 0;
|
373
|
-
var isEventCancelable = event.cancelable && isCellsRange && this.
|
387
|
+
var isEventCancelable = event.cancelable && isCellsRange && this.wtSettings.getSetting('isDataViewInstance'); // To prevent accidental redirects or other actions that the interactive elements (e.q "A" link) do
|
374
388
|
// while the cell is highlighted, all touch events that are triggered on different cells are
|
375
389
|
// "preventDefault"'ed. The user can interact with the element (e.q. click on the link that opens
|
376
390
|
// a new page) only when the same cell was previously selected (see related PR #7980).
|
@@ -392,7 +406,26 @@ var Event = /*#__PURE__*/function () {
|
|
392
406
|
}
|
393
407
|
|
394
408
|
this.onMouseUp(event);
|
395
|
-
this.
|
409
|
+
this.touchApplied = false;
|
410
|
+
}
|
411
|
+
/**
|
412
|
+
* Call listener with backward compatibility.
|
413
|
+
*
|
414
|
+
* @private
|
415
|
+
* @param {string} name Name of listener.
|
416
|
+
* @param {MouseEvent} event The event object.
|
417
|
+
* @param {CellCoords} coords Coordinates.
|
418
|
+
* @param {HTMLElement} target Event target.
|
419
|
+
*/
|
420
|
+
|
421
|
+
}, {
|
422
|
+
key: "callListener",
|
423
|
+
value: function callListener(name, event, coords, target) {
|
424
|
+
var listener = this.wtSettings.getSettingPure(name);
|
425
|
+
|
426
|
+
if (listener) {
|
427
|
+
listener(event, coords, target, this.facadeGetter());
|
428
|
+
}
|
396
429
|
}
|
397
430
|
/**
|
398
431
|
* Clears double-click timeouts and destroys the internal eventManager instance.
|
@@ -11,11 +11,10 @@ import "core-js/modules/es.weak-map.js";
|
|
11
11
|
import "core-js/modules/web.dom-collections.iterator.js";
|
12
12
|
import "core-js/modules/web.timers.js";
|
13
13
|
import "core-js/modules/es.array.includes.js";
|
14
|
-
import { closestDown, hasClass, isChildOf, getParent } from "
|
15
|
-
import { partial } from "
|
16
|
-
import { isTouchSupported } from "
|
17
|
-
import { isMobileBrowser, isChromeWebKit, isFirefoxWebKit, isIOS } from "
|
18
|
-
import EventManager from "./../../../eventManager.mjs";
|
14
|
+
import { closestDown, hasClass, isChildOf, getParent } from "../../../helpers/dom/element.mjs";
|
15
|
+
import { partial } from "../../../helpers/function.mjs";
|
16
|
+
import { isTouchSupported } from "../../../helpers/feature.mjs";
|
17
|
+
import { isMobileBrowser, isChromeWebKit, isFirefoxWebKit, isIOS } from "../../../helpers/browser.mjs";
|
19
18
|
import { isDefined } from "../../../helpers/mixed.mjs";
|
20
19
|
var privatePool = new WeakMap();
|
21
20
|
/**
|
@@ -24,26 +23,44 @@ var privatePool = new WeakMap();
|
|
24
23
|
|
25
24
|
var Event = /*#__PURE__*/function () {
|
26
25
|
/**
|
27
|
-
* @param {
|
26
|
+
* @param {FacadeGetter} facadeGetter Gets an instance facade.
|
27
|
+
* @param {DomBindings} domBindings Bindings into dom.
|
28
|
+
* @param {Settings} wtSettings The walkontable settings.
|
29
|
+
* @param {EventManager} eventManager The walkontable event manager.
|
30
|
+
* @param {Table} wtTable The table.
|
31
|
+
* @param {Selections} selections Selections.
|
32
|
+
* @param {Event} [parent=null] The main Event instance.
|
28
33
|
*/
|
29
|
-
function Event(
|
34
|
+
function Event(facadeGetter, domBindings, wtSettings, eventManager, wtTable, selections) {
|
35
|
+
var parent = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : null;
|
36
|
+
|
30
37
|
_classCallCheck(this, Event);
|
31
38
|
|
39
|
+
this.wtSettings = wtSettings;
|
40
|
+
this.domBindings = domBindings;
|
41
|
+
this.wtTable = wtTable;
|
42
|
+
this.selections = selections;
|
43
|
+
this.parent = parent;
|
32
44
|
/**
|
33
|
-
* Instance of {@link
|
45
|
+
* Instance of {@link EventManager}.
|
34
46
|
*
|
35
47
|
* @private
|
36
|
-
* @type {
|
48
|
+
* @type {EventManager}
|
37
49
|
*/
|
38
|
-
|
50
|
+
|
51
|
+
this.eventManager = eventManager;
|
39
52
|
/**
|
40
|
-
*
|
53
|
+
* Should be use only for passing face called external origin methods, like registered event listeners.
|
54
|
+
* It provides backward compatibility by getting instance facade.
|
55
|
+
*
|
56
|
+
* @todo Consider about removing this from Event class, because it make relationship into facade (implicit circular dependency).
|
57
|
+
* @todo Con. Maybe passing listener caller as an ioc from faced resolves this issue. To rethink later.
|
41
58
|
*
|
59
|
+
* @type {FacadeGetter}
|
42
60
|
* @private
|
43
|
-
* @type {EventManager}
|
44
61
|
*/
|
45
62
|
|
46
|
-
this.
|
63
|
+
this.facadeGetter = facadeGetter;
|
47
64
|
privatePool.set(this, {
|
48
65
|
selectedCellBeforeTouchEnd: void 0,
|
49
66
|
dblClickTimeout: [null, null],
|
@@ -63,53 +80,53 @@ var Event = /*#__PURE__*/function () {
|
|
63
80
|
value: function registerEvents() {
|
64
81
|
var _this = this;
|
65
82
|
|
66
|
-
this.eventManager.addEventListener(this.
|
83
|
+
this.eventManager.addEventListener(this.wtTable.holder, 'contextmenu', function (event) {
|
67
84
|
return _this.onContextMenu(event);
|
68
85
|
});
|
69
|
-
this.eventManager.addEventListener(this.
|
86
|
+
this.eventManager.addEventListener(this.wtTable.TABLE, 'mouseover', function (event) {
|
70
87
|
return _this.onMouseOver(event);
|
71
88
|
});
|
72
|
-
this.eventManager.addEventListener(this.
|
89
|
+
this.eventManager.addEventListener(this.wtTable.TABLE, 'mouseout', function (event) {
|
73
90
|
return _this.onMouseOut(event);
|
74
91
|
});
|
75
92
|
|
76
93
|
var initTouchEvents = function initTouchEvents() {
|
77
|
-
_this.eventManager.addEventListener(_this.
|
94
|
+
_this.eventManager.addEventListener(_this.wtTable.holder, 'touchstart', function (event) {
|
78
95
|
return _this.onTouchStart(event);
|
79
96
|
});
|
80
97
|
|
81
|
-
_this.eventManager.addEventListener(_this.
|
98
|
+
_this.eventManager.addEventListener(_this.wtTable.holder, 'touchend', function (event) {
|
82
99
|
return _this.onTouchEnd(event);
|
83
100
|
});
|
84
101
|
|
85
|
-
if (!_this.
|
86
|
-
_this.
|
102
|
+
if (!_this.momentumScrolling) {
|
103
|
+
_this.momentumScrolling = {};
|
87
104
|
}
|
88
105
|
|
89
|
-
_this.eventManager.addEventListener(_this.
|
90
|
-
clearTimeout(_this.
|
106
|
+
_this.eventManager.addEventListener(_this.wtTable.holder, 'scroll', function () {
|
107
|
+
clearTimeout(_this.momentumScrolling._timeout);
|
91
108
|
|
92
|
-
if (!_this.
|
93
|
-
_this.
|
109
|
+
if (!_this.momentumScrolling.ongoing) {
|
110
|
+
_this.wtSettings.getSetting('onBeforeTouchScroll');
|
94
111
|
}
|
95
112
|
|
96
|
-
_this.
|
97
|
-
_this.
|
98
|
-
if (!_this.
|
99
|
-
_this.
|
113
|
+
_this.momentumScrolling.ongoing = true;
|
114
|
+
_this.momentumScrolling._timeout = setTimeout(function () {
|
115
|
+
if (!_this.touchApplied) {
|
116
|
+
_this.momentumScrolling.ongoing = false;
|
100
117
|
|
101
|
-
_this.
|
118
|
+
_this.wtSettings.getSetting('onAfterMomentumScroll');
|
102
119
|
}
|
103
120
|
}, 200);
|
104
121
|
});
|
105
122
|
};
|
106
123
|
|
107
124
|
var initMouseEvents = function initMouseEvents() {
|
108
|
-
_this.eventManager.addEventListener(_this.
|
125
|
+
_this.eventManager.addEventListener(_this.wtTable.holder, 'mouseup', function (event) {
|
109
126
|
return _this.onMouseUp(event);
|
110
127
|
});
|
111
128
|
|
112
|
-
_this.eventManager.addEventListener(_this.
|
129
|
+
_this.eventManager.addEventListener(_this.wtTable.holder, 'mousedown', function (event) {
|
113
130
|
return _this.onMouseDown(event);
|
114
131
|
});
|
115
132
|
};
|
@@ -164,19 +181,19 @@ var Event = /*#__PURE__*/function () {
|
|
164
181
|
key: "parentCell",
|
165
182
|
value: function parentCell(elem) {
|
166
183
|
var cell = {};
|
167
|
-
var TABLE = this.
|
184
|
+
var TABLE = this.wtTable.TABLE;
|
168
185
|
var TD = closestDown(elem, ['TD', 'TH'], TABLE);
|
169
186
|
|
170
187
|
if (TD) {
|
171
|
-
cell.coords = this.
|
188
|
+
cell.coords = this.wtTable.getCoords(TD);
|
172
189
|
cell.TD = TD;
|
173
190
|
} else if (hasClass(elem, 'wtBorder') && hasClass(elem, 'current')) {
|
174
|
-
cell.coords = this.
|
175
|
-
cell.TD = this.
|
191
|
+
cell.coords = this.selections.getCell().cellRange.highlight;
|
192
|
+
cell.TD = this.wtTable.getCell(cell.coords);
|
176
193
|
} else if (hasClass(elem, 'wtBorder') && hasClass(elem, 'area')) {
|
177
|
-
if (this.
|
178
|
-
cell.coords = this.
|
179
|
-
cell.TD = this.
|
194
|
+
if (this.selections.createOrGetArea().cellRange) {
|
195
|
+
cell.coords = this.selections.createOrGetArea().cellRange.to;
|
196
|
+
cell.TD = this.wtTable.getCell(cell.coords);
|
180
197
|
}
|
181
198
|
}
|
182
199
|
|
@@ -193,7 +210,7 @@ var Event = /*#__PURE__*/function () {
|
|
193
210
|
key: "onMouseDown",
|
194
211
|
value: function onMouseDown(event) {
|
195
212
|
var priv = privatePool.get(this);
|
196
|
-
var activeElement = this.
|
213
|
+
var activeElement = this.domBindings.rootDocument.activeElement;
|
197
214
|
var getParentNode = partial(getParent, event.target);
|
198
215
|
var realTarget = event.target; // ignore focusable element from mouse down processing (https://github.com/handsontable/handsontable/issues/3555)
|
199
216
|
|
@@ -204,13 +221,13 @@ var Event = /*#__PURE__*/function () {
|
|
204
221
|
var cell = this.parentCell(realTarget);
|
205
222
|
|
206
223
|
if (hasClass(realTarget, 'corner')) {
|
207
|
-
this.
|
208
|
-
} else if (cell.TD && this.
|
209
|
-
this.
|
224
|
+
this.wtSettings.getSetting('onCellCornerMouseDown', event, realTarget);
|
225
|
+
} else if (cell.TD && this.wtSettings.has('onCellMouseDown')) {
|
226
|
+
this.callListener('onCellMouseDown', event, cell.coords, cell.TD);
|
210
227
|
} // doubleclick reacts only for left mouse button or from touch events
|
211
228
|
|
212
229
|
|
213
|
-
if ((event.button === 0 || this.
|
230
|
+
if ((event.button === 0 || this.touchApplied) && cell.TD) {
|
214
231
|
priv.dblClickOrigin[0] = cell.TD;
|
215
232
|
clearTimeout(priv.dblClickTimeout[0]);
|
216
233
|
priv.dblClickTimeout[0] = setTimeout(function () {
|
@@ -228,11 +245,11 @@ var Event = /*#__PURE__*/function () {
|
|
228
245
|
}, {
|
229
246
|
key: "onContextMenu",
|
230
247
|
value: function onContextMenu(event) {
|
231
|
-
if (this.
|
248
|
+
if (this.wtSettings.has('onCellContextMenu')) {
|
232
249
|
var cell = this.parentCell(event.target);
|
233
250
|
|
234
251
|
if (cell.TD) {
|
235
|
-
this.
|
252
|
+
this.callListener('onCellContextMenu', event, cell.coords, cell.TD);
|
236
253
|
}
|
237
254
|
}
|
238
255
|
}
|
@@ -246,17 +263,17 @@ var Event = /*#__PURE__*/function () {
|
|
246
263
|
}, {
|
247
264
|
key: "onMouseOver",
|
248
265
|
value: function onMouseOver(event) {
|
249
|
-
if (!this.
|
266
|
+
if (!this.wtSettings.has('onCellMouseOver')) {
|
250
267
|
return;
|
251
268
|
}
|
252
269
|
|
253
|
-
var table = this.
|
270
|
+
var table = this.wtTable.TABLE;
|
254
271
|
var td = closestDown(event.target, ['TD', 'TH'], table);
|
255
|
-
var
|
272
|
+
var parent = this.parent || this;
|
256
273
|
|
257
|
-
if (td && td !==
|
258
|
-
|
259
|
-
this.
|
274
|
+
if (td && td !== parent.lastMouseOver && isChildOf(td, table)) {
|
275
|
+
parent.lastMouseOver = td;
|
276
|
+
this.callListener('onCellMouseOver', event, this.wtTable.getCoords(td), td);
|
260
277
|
}
|
261
278
|
}
|
262
279
|
/**
|
@@ -269,16 +286,16 @@ var Event = /*#__PURE__*/function () {
|
|
269
286
|
}, {
|
270
287
|
key: "onMouseOut",
|
271
288
|
value: function onMouseOut(event) {
|
272
|
-
if (!this.
|
289
|
+
if (!this.wtSettings.has('onCellMouseOut')) {
|
273
290
|
return;
|
274
291
|
}
|
275
292
|
|
276
|
-
var table = this.
|
293
|
+
var table = this.wtTable.TABLE;
|
277
294
|
var lastTD = closestDown(event.target, ['TD', 'TH'], table);
|
278
295
|
var nextTD = closestDown(event.relatedTarget, ['TD', 'TH'], table);
|
279
296
|
|
280
297
|
if (lastTD && lastTD !== nextTD && isChildOf(lastTD, table)) {
|
281
|
-
this.
|
298
|
+
this.callListener('onCellMouseOut', event, this.wtTable.getCoords(lastTD), lastTD);
|
282
299
|
}
|
283
300
|
}
|
284
301
|
/**
|
@@ -294,20 +311,20 @@ var Event = /*#__PURE__*/function () {
|
|
294
311
|
var priv = privatePool.get(this);
|
295
312
|
var cell = this.parentCell(event.target);
|
296
313
|
|
297
|
-
if (cell.TD && this.
|
298
|
-
this.
|
314
|
+
if (cell.TD && this.wtSettings.has('onCellMouseUp')) {
|
315
|
+
this.callListener('onCellMouseUp', event, cell.coords, cell.TD);
|
299
316
|
} // if not left mouse button, and the origin event is not comes from touch
|
300
317
|
|
301
318
|
|
302
|
-
if (event.button !== 0 && !this.
|
319
|
+
if (event.button !== 0 && !this.touchApplied) {
|
303
320
|
return;
|
304
321
|
}
|
305
322
|
|
306
323
|
if (cell.TD === priv.dblClickOrigin[0] && cell.TD === priv.dblClickOrigin[1]) {
|
307
324
|
if (hasClass(event.target, 'corner')) {
|
308
|
-
this.
|
325
|
+
this.callListener('onCellCornerDblClick', event, cell.coords, cell.TD);
|
309
326
|
} else {
|
310
|
-
this.
|
327
|
+
this.callListener('onCellDblClick', event, cell.coords, cell.TD);
|
311
328
|
}
|
312
329
|
|
313
330
|
priv.dblClickOrigin[0] = null;
|
@@ -331,8 +348,8 @@ var Event = /*#__PURE__*/function () {
|
|
331
348
|
key: "onTouchStart",
|
332
349
|
value: function onTouchStart(event) {
|
333
350
|
var priv = privatePool.get(this);
|
334
|
-
priv.selectedCellBeforeTouchEnd = this.
|
335
|
-
this.
|
351
|
+
priv.selectedCellBeforeTouchEnd = this.selections.getCell().cellRange;
|
352
|
+
this.touchApplied = true;
|
336
353
|
this.onMouseDown(event);
|
337
354
|
}
|
338
355
|
/**
|
@@ -350,7 +367,7 @@ var Event = /*#__PURE__*/function () {
|
|
350
367
|
var target = event.target;
|
351
368
|
var parentCellCoords = (_this$parentCell = this.parentCell(target)) === null || _this$parentCell === void 0 ? void 0 : _this$parentCell.coords;
|
352
369
|
var isCellsRange = isDefined(parentCellCoords) && parentCellCoords.row >= 0 && parentCellCoords.col >= 0;
|
353
|
-
var isEventCancelable = event.cancelable && isCellsRange && this.
|
370
|
+
var isEventCancelable = event.cancelable && isCellsRange && this.wtSettings.getSetting('isDataViewInstance'); // To prevent accidental redirects or other actions that the interactive elements (e.q "A" link) do
|
354
371
|
// while the cell is highlighted, all touch events that are triggered on different cells are
|
355
372
|
// "preventDefault"'ed. The user can interact with the element (e.q. click on the link that opens
|
356
373
|
// a new page) only when the same cell was previously selected (see related PR #7980).
|
@@ -372,7 +389,26 @@ var Event = /*#__PURE__*/function () {
|
|
372
389
|
}
|
373
390
|
|
374
391
|
this.onMouseUp(event);
|
375
|
-
this.
|
392
|
+
this.touchApplied = false;
|
393
|
+
}
|
394
|
+
/**
|
395
|
+
* Call listener with backward compatibility.
|
396
|
+
*
|
397
|
+
* @private
|
398
|
+
* @param {string} name Name of listener.
|
399
|
+
* @param {MouseEvent} event The event object.
|
400
|
+
* @param {CellCoords} coords Coordinates.
|
401
|
+
* @param {HTMLElement} target Event target.
|
402
|
+
*/
|
403
|
+
|
404
|
+
}, {
|
405
|
+
key: "callListener",
|
406
|
+
value: function callListener(name, event, coords, target) {
|
407
|
+
var listener = this.wtSettings.getSettingPure(name);
|
408
|
+
|
409
|
+
if (listener) {
|
410
|
+
listener(event, coords, target, this.facadeGetter());
|
411
|
+
}
|
376
412
|
}
|
377
413
|
/**
|
378
414
|
* Clears double-click timeouts and destroys the internal eventManager instance.
|