handsontable 14.6.1 → 15.0.0-next-fdd4480-20241205
Sign up to get free protection for your applications and to get access to all the features.
- package/3rdparty/walkontable/src/calculator/calculationType/renderedColumns.js +23 -0
- package/3rdparty/walkontable/src/calculator/calculationType/renderedColumns.mjs +23 -0
- package/3rdparty/walkontable/src/calculator/calculationType/renderedRows.js +23 -0
- package/3rdparty/walkontable/src/calculator/calculationType/renderedRows.mjs +23 -0
- package/3rdparty/walkontable/src/calculator/index.js +1 -2
- package/3rdparty/walkontable/src/calculator/index.mjs +2 -2
- package/3rdparty/walkontable/src/calculator/viewportBase.js +2 -0
- package/3rdparty/walkontable/src/calculator/viewportBase.mjs +2 -0
- package/3rdparty/walkontable/src/calculator/viewportRows.js +3 -3
- package/3rdparty/walkontable/src/calculator/viewportRows.mjs +3 -3
- package/3rdparty/walkontable/src/core/_base.js +29 -23
- package/3rdparty/walkontable/src/core/_base.mjs +29 -23
- package/3rdparty/walkontable/src/core/clone.js +1 -0
- package/3rdparty/walkontable/src/core/clone.mjs +1 -0
- package/3rdparty/walkontable/src/core/core.js +2 -0
- package/3rdparty/walkontable/src/core/core.mjs +2 -0
- package/3rdparty/walkontable/src/facade/core.js +12 -6
- package/3rdparty/walkontable/src/facade/core.mjs +12 -6
- package/3rdparty/walkontable/src/index.js +0 -1
- package/3rdparty/walkontable/src/index.mjs +2 -2
- package/3rdparty/walkontable/src/overlay/_base.js +8 -1
- package/3rdparty/walkontable/src/overlay/_base.mjs +8 -1
- package/3rdparty/walkontable/src/overlay/bottom.js +5 -6
- package/3rdparty/walkontable/src/overlay/bottom.mjs +5 -6
- package/3rdparty/walkontable/src/overlay/index.js +2 -0
- package/3rdparty/walkontable/src/overlay/inlineStart.js +8 -7
- package/3rdparty/walkontable/src/overlay/inlineStart.mjs +9 -8
- package/3rdparty/walkontable/src/overlay/top.js +9 -8
- package/3rdparty/walkontable/src/overlay/top.mjs +10 -9
- package/3rdparty/walkontable/src/overlays.js +10 -26
- package/3rdparty/walkontable/src/overlays.mjs +10 -26
- package/3rdparty/walkontable/src/renderer/colGroup.js +1 -1
- package/3rdparty/walkontable/src/renderer/colGroup.mjs +1 -1
- package/3rdparty/walkontable/src/renderer/index.js +4 -2
- package/3rdparty/walkontable/src/renderer/index.mjs +4 -2
- package/3rdparty/walkontable/src/renderer/table.js +13 -4
- package/3rdparty/walkontable/src/renderer/table.mjs +13 -4
- package/3rdparty/walkontable/src/scroll.js +46 -37
- package/3rdparty/walkontable/src/scroll.mjs +46 -37
- package/3rdparty/walkontable/src/selection/border/border.js +52 -58
- package/3rdparty/walkontable/src/selection/border/border.mjs +53 -59
- package/3rdparty/walkontable/src/selection/border/utils.js +26 -0
- package/3rdparty/walkontable/src/selection/border/utils.mjs +22 -0
- package/3rdparty/walkontable/src/selection/index.js +6 -4
- package/3rdparty/walkontable/src/selection/index.mjs +1 -1
- package/3rdparty/walkontable/src/selection/manager.js +3 -0
- package/3rdparty/walkontable/src/selection/manager.mjs +3 -0
- package/3rdparty/walkontable/src/selection/scanner.js +46 -11
- package/3rdparty/walkontable/src/selection/scanner.mjs +46 -11
- package/3rdparty/walkontable/src/settings.js +8 -9
- package/3rdparty/walkontable/src/settings.mjs +8 -9
- package/3rdparty/walkontable/src/table/master.js +1 -1
- package/3rdparty/walkontable/src/table/master.mjs +2 -2
- package/3rdparty/walkontable/src/table.js +25 -36
- package/3rdparty/walkontable/src/table.mjs +25 -36
- package/3rdparty/walkontable/src/types.js +1 -0
- package/3rdparty/walkontable/src/types.mjs +1 -0
- package/3rdparty/walkontable/src/utils/column.js +1 -43
- package/3rdparty/walkontable/src/utils/column.mjs +1 -43
- package/3rdparty/walkontable/src/utils/stylesHandler.js +295 -0
- package/3rdparty/walkontable/src/utils/stylesHandler.mjs +291 -0
- package/3rdparty/walkontable/src/viewport.js +94 -91
- package/3rdparty/walkontable/src/viewport.mjs +95 -92
- package/CHANGELOG.md +36 -0
- package/README.md +1 -1
- package/base.js +4 -4
- package/base.mjs +3 -3
- package/core/focusCatcher/focusDetector.js +1 -0
- package/core/focusCatcher/focusDetector.mjs +1 -0
- package/core/hooks/bucket.js +184 -0
- package/core/hooks/bucket.mjs +180 -0
- package/{pluginHooks.mjs → core/hooks/constants.js} +38 -486
- package/{pluginHooks.js → core/hooks/constants.mjs} +34 -489
- package/{pluginHooks.d.ts → core/hooks/index.d.ts} +22 -25
- package/core/hooks/index.js +385 -0
- package/core/hooks/index.mjs +381 -0
- package/core/index.js +2 -0
- package/core.d.ts +5 -3
- package/core.js +77 -35
- package/core.mjs +69 -27
- package/dataMap/dataMap.js +3 -0
- package/dataMap/dataMap.mjs +3 -0
- package/dataMap/dataSource.js +2 -0
- package/dataMap/dataSource.mjs +2 -0
- package/dataMap/metaManager/index.js +2 -0
- package/dataMap/metaManager/index.mjs +2 -0
- package/dataMap/metaManager/metaSchema.js +91 -5
- package/dataMap/metaManager/metaSchema.mjs +91 -5
- package/dataMap/metaManager/mods/dynamicCellMeta.js +2 -3
- package/dataMap/metaManager/mods/dynamicCellMeta.mjs +1 -1
- package/dataMap/metaManager/mods/extendMetaProperties.js +2 -0
- package/dataMap/metaManager/mods/extendMetaProperties.mjs +2 -0
- package/dist/handsontable.css +84 -72
- package/dist/handsontable.full.css +317 -304
- package/dist/handsontable.full.js +14826 -7294
- package/dist/handsontable.full.min.css +15 -10
- package/dist/handsontable.full.min.js +262 -69
- package/dist/handsontable.js +7826 -5552
- package/dist/handsontable.min.css +10 -6
- package/dist/handsontable.min.js +33 -33
- package/dist/languages/all.js +1 -1
- package/dist/languages/ar-AR.js +1 -1
- package/dist/languages/cs-CZ.js +1 -1
- package/dist/languages/de-CH.js +1 -1
- package/dist/languages/de-DE.js +1 -1
- package/dist/languages/en-US.js +1 -1
- package/dist/languages/es-MX.js +1 -1
- package/dist/languages/fr-FR.js +1 -1
- package/dist/languages/hr-HR.js +1 -1
- package/dist/languages/it-IT.js +1 -1
- package/dist/languages/ja-JP.js +1 -1
- package/dist/languages/ko-KR.js +1 -1
- package/dist/languages/lv-LV.js +1 -1
- package/dist/languages/nb-NO.js +1 -1
- package/dist/languages/nl-NL.js +1 -1
- package/dist/languages/pl-PL.js +1 -1
- package/dist/languages/pt-BR.js +1 -1
- package/dist/languages/ru-RU.js +1 -1
- package/dist/languages/sr-SP.js +1 -1
- package/dist/languages/zh-CN.js +1 -1
- package/dist/languages/zh-TW.js +1 -1
- package/editorManager.js +2 -2
- package/editorManager.mjs +2 -2
- package/editors/autocompleteEditor/autocompleteEditor.js +34 -16
- package/editors/autocompleteEditor/autocompleteEditor.mjs +34 -16
- package/editors/baseEditor/baseEditor.js +25 -18
- package/editors/baseEditor/baseEditor.mjs +26 -19
- package/editors/dateEditor/dateEditor.js +9 -0
- package/editors/dateEditor/dateEditor.mjs +10 -1
- package/editors/dropdownEditor/dropdownEditor.js +4 -3
- package/editors/dropdownEditor/dropdownEditor.mjs +3 -1
- package/editors/handsontableEditor/handsontableEditor.js +36 -2
- package/editors/handsontableEditor/handsontableEditor.mjs +36 -2
- package/editors/passwordEditor/passwordEditor.js +18 -0
- package/editors/passwordEditor/passwordEditor.mjs +18 -0
- package/editors/registry.js +2 -2
- package/editors/registry.mjs +1 -1
- package/editors/selectEditor/selectEditor.js +20 -9
- package/editors/selectEditor/selectEditor.mjs +20 -9
- package/editors/textEditor/textEditor.js +5 -12
- package/editors/textEditor/textEditor.mjs +6 -13
- package/focusManager.js +5 -7
- package/focusManager.mjs +5 -7
- package/helpers/array.js +2 -0
- package/helpers/array.mjs +2 -0
- package/helpers/data.js +3 -0
- package/helpers/data.mjs +3 -0
- package/helpers/dom/element.js +39 -18
- package/helpers/dom/element.mjs +38 -17
- package/helpers/mixed.js +3 -3
- package/helpers/mixed.mjs +3 -3
- package/helpers/moves.js +3 -0
- package/helpers/moves.mjs +3 -0
- package/helpers/number.js +1 -0
- package/helpers/number.mjs +1 -0
- package/helpers/object.js +2 -0
- package/helpers/object.mjs +2 -0
- package/helpers/themes.js +17 -0
- package/helpers/themes.mjs +13 -0
- package/i18n/index.js +2 -0
- package/i18n/languages/index.d.ts +8 -0
- package/i18n/languages/ja-JP.d.ts +1 -1
- package/i18n/phraseFormatters/substituteVariables.js +1 -0
- package/i18n/phraseFormatters/substituteVariables.mjs +1 -0
- package/index.d.ts +9 -1
- package/languages/all.js +1 -1
- package/languages/ar-AR.js +1 -1
- package/languages/cs-CZ.js +1 -1
- package/languages/de-CH.js +1 -1
- package/languages/de-DE.js +1 -1
- package/languages/en-US.js +1 -1
- package/languages/es-MX.js +1 -1
- package/languages/fr-FR.js +1 -1
- package/languages/hr-HR.js +1 -1
- package/languages/index.js +1 -1
- package/languages/it-IT.js +1 -1
- package/languages/ja-JP.js +1 -1
- package/languages/ko-KR.js +1 -1
- package/languages/lv-LV.js +1 -1
- package/languages/nb-NO.js +1 -1
- package/languages/nl-NL.js +1 -1
- package/languages/pl-PL.js +1 -1
- package/languages/pt-BR.js +1 -1
- package/languages/ru-RU.js +1 -1
- package/languages/sr-SP.js +1 -1
- package/languages/zh-CN.js +1 -1
- package/languages/zh-TW.js +1 -1
- package/package.json +22 -7
- package/plugins/autoColumnSize/autoColumnSize.js +22 -27
- package/plugins/autoColumnSize/autoColumnSize.mjs +22 -27
- package/plugins/autoRowSize/autoRowSize.js +20 -22
- package/plugins/autoRowSize/autoRowSize.mjs +21 -23
- package/plugins/autofill/autofill.js +4 -5
- package/plugins/autofill/autofill.mjs +1 -1
- package/plugins/base/base.d.ts +1 -1
- package/plugins/base/base.js +41 -0
- package/plugins/base/base.mjs +42 -1
- package/plugins/base/index.js +2 -1
- package/plugins/base/index.mjs +1 -1
- package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.js +2 -5
- package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.mjs +2 -5
- package/plugins/columnSorting/columnSorting.js +5 -4
- package/plugins/columnSorting/columnSorting.mjs +3 -1
- package/plugins/columnSorting/columnStatesManager.js +1 -0
- package/plugins/columnSorting/columnStatesManager.mjs +1 -0
- package/plugins/columnSorting/utils.js +3 -0
- package/plugins/columnSorting/utils.mjs +3 -0
- package/plugins/columnSummary/endpoints.js +3 -0
- package/plugins/columnSummary/endpoints.mjs +3 -0
- package/plugins/comments/commentEditor.js +9 -0
- package/plugins/comments/commentEditor.mjs +9 -0
- package/plugins/comments/comments.js +24 -18
- package/plugins/comments/comments.mjs +26 -20
- package/plugins/comments/editorResizeObserver.js +2 -0
- package/plugins/comments/editorResizeObserver.mjs +2 -0
- package/plugins/contextMenu/contextMenu.d.ts +2 -1
- package/plugins/contextMenu/contextMenu.js +6 -7
- package/plugins/contextMenu/contextMenu.mjs +1 -1
- package/plugins/contextMenu/menu/index.js +2 -0
- package/plugins/contextMenu/menu/menu.js +10 -5
- package/plugins/contextMenu/menu/menu.mjs +11 -6
- package/plugins/contextMenu/menu/positioner.js +4 -2
- package/plugins/contextMenu/menu/positioner.mjs +4 -2
- package/plugins/contextMenu/menu/shortcuts.js +3 -1
- package/plugins/contextMenu/menu/shortcuts.mjs +3 -1
- package/plugins/contextMenu/predefinedItems/alignment.js +7 -84
- package/plugins/contextMenu/predefinedItems/alignment.mjs +8 -85
- package/plugins/contextMenu/utils.js +0 -10
- package/plugins/contextMenu/utils.mjs +0 -9
- package/plugins/copyPaste/copyPaste.d.ts +1 -0
- package/plugins/copyPaste/copyPaste.js +32 -23
- package/plugins/copyPaste/copyPaste.mjs +24 -15
- package/plugins/customBorders/utils.js +2 -0
- package/plugins/customBorders/utils.mjs +2 -0
- package/plugins/dropdownMenu/dropdownMenu.d.ts +2 -1
- package/plugins/dropdownMenu/dropdownMenu.js +6 -7
- package/plugins/dropdownMenu/dropdownMenu.mjs +1 -1
- package/plugins/exportFile/types/csv.js +1 -0
- package/plugins/exportFile/types/csv.mjs +1 -0
- package/plugins/filters/component/condition.js +2 -0
- package/plugins/filters/component/condition.mjs +2 -0
- package/plugins/filters/component/operators.js +2 -0
- package/plugins/filters/component/operators.mjs +2 -0
- package/plugins/filters/component/value.js +3 -0
- package/plugins/filters/component/value.mjs +3 -0
- package/plugins/filters/conditionCollection.js +3 -0
- package/plugins/filters/conditionCollection.mjs +3 -0
- package/plugins/filters/conditionUpdateObserver.js +2 -0
- package/plugins/filters/conditionUpdateObserver.mjs +2 -0
- package/plugins/filters/filters.js +43 -13
- package/plugins/filters/filters.mjs +43 -13
- package/plugins/filters/logicalOperations/conjunction.js +2 -0
- package/plugins/filters/logicalOperations/conjunction.mjs +2 -0
- package/plugins/filters/logicalOperations/disjunction.js +2 -0
- package/plugins/filters/logicalOperations/disjunction.mjs +2 -0
- package/plugins/filters/logicalOperations/disjunctionWithExtraCondition.js +2 -0
- package/plugins/filters/logicalOperations/disjunctionWithExtraCondition.mjs +2 -0
- package/plugins/filters/menu/focusController.js +38 -14
- package/plugins/filters/menu/focusController.mjs +38 -14
- package/plugins/filters/ui/multipleSelect.js +10 -0
- package/plugins/filters/ui/multipleSelect.mjs +10 -0
- package/plugins/formulas/engine/register.js +3 -0
- package/plugins/formulas/engine/register.mjs +3 -0
- package/plugins/formulas/engine/settings.js +3 -0
- package/plugins/formulas/engine/settings.mjs +3 -0
- package/plugins/formulas/formulas.js +12 -7
- package/plugins/formulas/formulas.mjs +6 -1
- package/plugins/formulas/indexSyncer/axisSyncer.js +3 -0
- package/plugins/formulas/indexSyncer/axisSyncer.mjs +3 -0
- package/plugins/hiddenColumns/contextMenuItem/showColumn.js +2 -0
- package/plugins/hiddenColumns/contextMenuItem/showColumn.mjs +2 -0
- package/plugins/hiddenColumns/hiddenColumns.js +22 -30
- package/plugins/hiddenColumns/hiddenColumns.mjs +18 -26
- package/plugins/hiddenRows/contextMenuItem/showRow.js +2 -0
- package/plugins/hiddenRows/contextMenuItem/showRow.mjs +2 -0
- package/plugins/hiddenRows/hiddenRows.js +21 -29
- package/plugins/hiddenRows/hiddenRows.mjs +17 -25
- package/plugins/index.d.ts +3 -0
- package/plugins/index.js +3 -0
- package/plugins/index.mjs +3 -1
- package/plugins/manualColumnFreeze/manualColumnFreeze.js +7 -5
- package/plugins/manualColumnFreeze/manualColumnFreeze.mjs +3 -1
- package/plugins/manualColumnMove/manualColumnMove.js +6 -6
- package/plugins/manualColumnMove/manualColumnMove.mjs +4 -4
- package/plugins/manualColumnResize/manualColumnResize.js +26 -12
- package/plugins/manualColumnResize/manualColumnResize.mjs +26 -12
- package/plugins/manualRowMove/manualRowMove.js +8 -6
- package/plugins/manualRowMove/manualRowMove.mjs +6 -4
- package/plugins/manualRowResize/manualRowResize.js +3 -2
- package/plugins/manualRowResize/manualRowResize.mjs +4 -3
- package/plugins/mergeCells/cellsCollection.js +19 -3
- package/plugins/mergeCells/cellsCollection.mjs +20 -4
- package/plugins/mergeCells/mergeCells.d.ts +6 -2
- package/plugins/mergeCells/mergeCells.js +84 -56
- package/plugins/mergeCells/mergeCells.mjs +82 -54
- package/plugins/mergeCells/renderer.js +13 -3
- package/plugins/mergeCells/renderer.mjs +13 -3
- package/plugins/multiColumnSorting/domHelpers.js +2 -0
- package/plugins/multiColumnSorting/domHelpers.mjs +2 -0
- package/plugins/nestedHeaders/nestedHeaders.js +63 -16
- package/plugins/nestedHeaders/nestedHeaders.mjs +63 -16
- package/plugins/nestedHeaders/stateManager/index.js +1 -0
- package/plugins/nestedHeaders/stateManager/index.mjs +1 -0
- package/plugins/nestedRows/nestedRows.js +3 -0
- package/plugins/nestedRows/nestedRows.mjs +3 -0
- package/plugins/nestedRows/ui/headers.js +7 -1
- package/plugins/nestedRows/ui/headers.mjs +7 -1
- package/plugins/nestedRows/utils/rowMoveController.js +4 -0
- package/plugins/nestedRows/utils/rowMoveController.mjs +4 -0
- package/plugins/persistentState/persistentState.js +4 -4
- package/plugins/persistentState/persistentState.mjs +1 -1
- package/plugins/stretchColumns/calculator.js +162 -0
- package/plugins/stretchColumns/calculator.mjs +158 -0
- package/plugins/stretchColumns/index.d.ts +1 -0
- package/plugins/stretchColumns/index.js +7 -0
- package/plugins/stretchColumns/index.mjs +1 -0
- package/plugins/stretchColumns/strategies/_base.js +85 -0
- package/plugins/stretchColumns/strategies/_base.mjs +81 -0
- package/plugins/stretchColumns/strategies/all.js +71 -0
- package/plugins/stretchColumns/strategies/all.mjs +67 -0
- package/plugins/stretchColumns/strategies/last.js +79 -0
- package/plugins/stretchColumns/strategies/last.mjs +75 -0
- package/plugins/stretchColumns/stretchColumns.d.ts +11 -0
- package/plugins/stretchColumns/stretchColumns.js +222 -0
- package/plugins/stretchColumns/stretchColumns.mjs +218 -0
- package/plugins/trimRows/trimRows.js +2 -0
- package/plugins/trimRows/trimRows.mjs +2 -0
- package/plugins/undoRedo/undoRedo.js +9 -5
- package/plugins/undoRedo/undoRedo.mjs +8 -3
- package/renderers/checkboxRenderer/checkboxRenderer.js +19 -8
- package/renderers/checkboxRenderer/checkboxRenderer.mjs +18 -7
- package/selection/index.js +2 -0
- package/selection/range.js +2 -0
- package/selection/range.mjs +2 -0
- package/selection/selection.js +7 -2
- package/selection/selection.mjs +7 -2
- package/selection/utils.js +2 -0
- package/selection/utils.mjs +2 -0
- package/settings.d.ts +4 -1
- package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.js +1 -1
- package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.mjs +1 -1
- package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.js +1 -1
- package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.mjs +1 -1
- package/shortcutContexts/commands/index.js +2 -0
- package/shortcutContexts/commands/index.mjs +2 -0
- package/shortcutContexts/commands/scrollToFocusedCell.js +4 -4
- package/shortcutContexts/commands/scrollToFocusedCell.mjs +4 -4
- package/shortcutContexts/index.js +2 -0
- package/shortcutContexts/index.mjs +2 -0
- package/shortcuts/context.js +3 -0
- package/shortcuts/context.mjs +3 -0
- package/shortcuts/recorder.js +3 -3
- package/shortcuts/recorder.mjs +3 -3
- package/shortcuts/utils.js +1 -0
- package/shortcuts/utils.mjs +1 -0
- package/styles/handsontable.css +2307 -0
- package/styles/handsontable.min.css +30 -0
- package/styles/ht-theme-horizon.css +607 -0
- package/styles/ht-theme-horizon.min.css +30 -0
- package/styles/ht-theme-main.css +613 -0
- package/styles/ht-theme-main.min.css +30 -0
- package/tableView.js +205 -33
- package/tableView.mjs +206 -34
- package/translations/changesObservable/observable.js +2 -0
- package/translations/changesObservable/observable.mjs +2 -0
- package/translations/index.js +2 -0
- package/translations/indexMapper.js +4 -0
- package/translations/indexMapper.mjs +4 -0
- package/translations/mapCollections/index.js +2 -0
- package/translations/mapCollections/mapCollection.js +2 -0
- package/translations/mapCollections/mapCollection.mjs +2 -0
- package/translations/maps/index.js +2 -0
- package/translations/maps/linkedPhysicalIndexToValueMap.js +1 -0
- package/translations/maps/linkedPhysicalIndexToValueMap.mjs +1 -0
- package/translations/maps/utils/actionsOnIndexes.js +2 -0
- package/translations/maps/utils/actionsOnIndexes.mjs +2 -0
- package/translations/maps/utils/physicallyIndexed.js +1 -0
- package/translations/maps/utils/physicallyIndexed.mjs +1 -0
- package/utils/autoResize.js +11 -3
- package/utils/autoResize.mjs +11 -3
- package/utils/dataStructures/priorityMap.js +1 -0
- package/utils/dataStructures/priorityMap.mjs +1 -0
- package/utils/dataStructures/uniqueMap.js +2 -0
- package/utils/dataStructures/uniqueMap.mjs +2 -0
- package/utils/ghostTable.js +7 -3
- package/utils/ghostTable.mjs +7 -3
- package/utils/parseTable.js +4 -0
- package/utils/parseTable.mjs +4 -0
- package/3rdparty/walkontable/src/selection/border/constants.js +0 -15
- package/3rdparty/walkontable/src/selection/border/constants.mjs +0 -12
- package/3rdparty/walkontable/src/utils/columnStretching.js +0 -197
- package/3rdparty/walkontable/src/utils/columnStretching.mjs +0 -193
@@ -1,15 +1,6 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
5
|
-
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
6
|
-
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
7
|
-
import { arrayEach } from "./helpers/array.mjs";
|
8
|
-
import { objectEach } from "./helpers/object.mjs";
|
9
|
-
import { substitute } from "./helpers/string.mjs";
|
10
|
-
import { warn } from "./helpers/console.mjs";
|
11
|
-
import { toSingleLine } from "./helpers/templateLiteralTag.mjs";
|
12
|
-
import { fastCall } from "./helpers/function.mjs";
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
exports.__esModule = true;
|
13
4
|
/* eslint-disable jsdoc/require-description-complete-sentence */
|
14
5
|
/**
|
15
6
|
* @description
|
@@ -121,8 +112,8 @@ import { fastCall } from "./helpers/function.mjs";
|
|
121
112
|
* :::
|
122
113
|
* ...
|
123
114
|
*/
|
124
|
-
|
125
|
-
const REGISTERED_HOOKS = [/* eslint-disable jsdoc/require-description-complete-sentence */
|
115
|
+
|
116
|
+
const REGISTERED_HOOKS = exports.REGISTERED_HOOKS = [/* eslint-disable jsdoc/require-description-complete-sentence */
|
126
117
|
/**
|
127
118
|
* Fired after resetting a cell's meta. This happens when the {@link Core#updateSettings} method is called.
|
128
119
|
*
|
@@ -552,6 +543,10 @@ const REGISTERED_HOOKS = [/* eslint-disable jsdoc/require-description-complete-s
|
|
552
543
|
* @since 14.0.0
|
553
544
|
* @event Hooks#beforeViewportScrollVertically
|
554
545
|
* @param {number} visualRow Visual row index.
|
546
|
+
* @param {'auto' | 'top' | 'bottom'} [snapping='auto'] If `'top'`, viewport is scrolled to show
|
547
|
+
* the cell on the top of the table. If `'bottom'`, viewport is scrolled to show the cell on
|
548
|
+
* the bottom of the table. When `'auto'`, the viewport is scrolled only when the row is outside of
|
549
|
+
* the viewport.
|
555
550
|
* @returns {number | boolean} Returns modified row index (or the same as passed in the method argument) to which
|
556
551
|
* the viewport will be scrolled. If the returned value is `false`, the scrolling will be canceled.
|
557
552
|
*/
|
@@ -563,6 +558,9 @@ const REGISTERED_HOOKS = [/* eslint-disable jsdoc/require-description-complete-s
|
|
563
558
|
* @since 14.0.0
|
564
559
|
* @event Hooks#beforeViewportScrollHorizontally
|
565
560
|
* @param {number} visualColumn Visual column index.
|
561
|
+
* @param {'auto' | 'start' | 'end'} [snapping='auto'] If `'start'`, viewport is scrolled to show
|
562
|
+
* the cell on the left of the table. If `'end'`, viewport is scrolled to show the cell on the right of
|
563
|
+
* the table. When `'auto'`, the viewport is scrolled only when the column is outside of the viewport.
|
566
564
|
* @returns {number | boolean} Returns modified column index (or the same as passed in the method argument) to which
|
567
565
|
* the viewport will be scrolled. If the returned value is `false`, the scrolling will be canceled.
|
568
566
|
*/
|
@@ -874,6 +872,15 @@ const REGISTERED_HOOKS = [/* eslint-disable jsdoc/require-description-complete-s
|
|
874
872
|
* @param {string} [source] String that identifies source of hook call.
|
875
873
|
*/
|
876
874
|
'afterSetSourceDataAtCell',
|
875
|
+
/**
|
876
|
+
* Fired after a theme is enabled, changed, or disabled.
|
877
|
+
*
|
878
|
+
* @since 15.0.0
|
879
|
+
* @event Hooks#afterSetTheme
|
880
|
+
* @param {string|boolean|undefined} themeName The theme name.
|
881
|
+
* @param {boolean} firstRun `true` if it's the initial setting of the theme, `false` otherwise.
|
882
|
+
*/
|
883
|
+
'afterSetTheme',
|
877
884
|
/**
|
878
885
|
* Fired after calling the [`updateSettings`](@/api/core.md#updatesettings) method.
|
879
886
|
*
|
@@ -1377,6 +1384,7 @@ const REGISTERED_HOOKS = [/* eslint-disable jsdoc/require-description-complete-s
|
|
1377
1384
|
* @event Hooks#modifyColWidth
|
1378
1385
|
* @param {number} width Current column width.
|
1379
1386
|
* @param {number} column Visual column index.
|
1387
|
+
* @param {string} [source] String that identifies source of hook call.
|
1380
1388
|
*/
|
1381
1389
|
'modifyColWidth',
|
1382
1390
|
/**
|
@@ -1413,6 +1421,7 @@ const REGISTERED_HOOKS = [/* eslint-disable jsdoc/require-description-complete-s
|
|
1413
1421
|
* @event Hooks#modifyRowHeight
|
1414
1422
|
* @param {number} height Row height.
|
1415
1423
|
* @param {number} row Visual row index.
|
1424
|
+
* @param {string} [source] String that identifies source of hook call.
|
1416
1425
|
*/
|
1417
1426
|
'modifyRowHeight',
|
1418
1427
|
/**
|
@@ -1465,9 +1474,22 @@ const REGISTERED_HOOKS = [/* eslint-disable jsdoc/require-description-complete-s
|
|
1465
1474
|
* @param {boolean} topmost If set to `true`, it returns the TD element from the topmost overlay. For example,
|
1466
1475
|
* if the wanted cell is in the range of fixed rows, it will return a TD element
|
1467
1476
|
* from the `top` overlay.
|
1477
|
+
* @param {string} source String that identifies how this coords change will be processed. Possible values:
|
1478
|
+
* `meta` the change will affect the cell meta and data; `render` the change will affect the
|
1479
|
+
* DOM element that will be returned by the `getCell` method.
|
1468
1480
|
* @returns {undefined|number[]}
|
1469
1481
|
*/
|
1470
1482
|
'modifyGetCellCoords',
|
1483
|
+
/**
|
1484
|
+
* Used to modify the returned cell coordinates of clicked cells (TD or TH elements).
|
1485
|
+
*
|
1486
|
+
* @event Hooks#modifyGetCoordsElement
|
1487
|
+
* @since 14.6.0
|
1488
|
+
* @param {number} row Visual row index.
|
1489
|
+
* @param {number} column Visual column index.
|
1490
|
+
* @returns {undefined|number[]}
|
1491
|
+
*/
|
1492
|
+
'modifyGetCoordsElement',
|
1471
1493
|
/**
|
1472
1494
|
* Used to modify the cell coordinates when the table is activated (going into the listen mode).
|
1473
1495
|
*
|
@@ -2633,15 +2655,6 @@ const REGISTERED_HOOKS = [/* eslint-disable jsdoc/require-description-complete-s
|
|
2633
2655
|
*/
|
2634
2656
|
'modifyAutoColumnSizeSeed'];
|
2635
2657
|
|
2636
|
-
/**
|
2637
|
-
* Template warning message for removed hooks.
|
2638
|
-
*
|
2639
|
-
* @type {string}
|
2640
|
-
*/
|
2641
|
-
const REMOVED_MESSAGE = toSingleLine`The plugin hook "[hookName]" was removed in Handsontable [removedInVersion].\x20
|
2642
|
-
Please consult release notes https://github.com/handsontable/handsontable/releases/tag/[removedInVersion] to\x20
|
2643
|
-
learn about the migration path.`;
|
2644
|
-
|
2645
2658
|
/**
|
2646
2659
|
* The list of the hooks which are removed from the API. The warning message is printed out in
|
2647
2660
|
* the developer console when the hook is used.
|
@@ -2651,7 +2664,7 @@ const REMOVED_MESSAGE = toSingleLine`The plugin hook "[hookName]" was removed in
|
|
2651
2664
|
*
|
2652
2665
|
* @type {Map<string, string>}
|
2653
2666
|
*/
|
2654
|
-
const REMOVED_HOOKS = new Map([['modifyRow', '8.0.0'], ['modifyCol', '8.0.0'], ['unmodifyRow', '8.0.0'], ['unmodifyCol', '8.0.0'], ['skipLengthCache', '8.0.0'], ['hiddenColumn', '8.0.0'], ['hiddenRow', '8.0.0']]);
|
2667
|
+
const REMOVED_HOOKS = exports.REMOVED_HOOKS = new Map([['modifyRow', '8.0.0'], ['modifyCol', '8.0.0'], ['unmodifyRow', '8.0.0'], ['unmodifyCol', '8.0.0'], ['skipLengthCache', '8.0.0'], ['hiddenColumn', '8.0.0'], ['hiddenRow', '8.0.0']]);
|
2655
2668
|
|
2656
2669
|
/* eslint-disable jsdoc/require-description-complete-sentence */
|
2657
2670
|
/**
|
@@ -2674,465 +2687,4 @@ const REMOVED_HOOKS = new Map([['modifyRow', '8.0.0'], ['modifyCol', '8.0.0'], [
|
|
2674
2687
|
* @type {Map<string, string>}
|
2675
2688
|
*/
|
2676
2689
|
/* eslint-enable jsdoc/require-description-complete-sentence */
|
2677
|
-
const DEPRECATED_HOOKS = new Map([[]]);
|
2678
|
-
const callbackOrder = new WeakMap();
|
2679
|
-
class Hooks {
|
2680
|
-
static getSingleton() {
|
2681
|
-
return getGlobalSingleton();
|
2682
|
-
}
|
2683
|
-
|
2684
|
-
/**
|
2685
|
-
* @type {object}
|
2686
|
-
*/
|
2687
|
-
|
2688
|
-
/**
|
2689
|
-
*
|
2690
|
-
*/
|
2691
|
-
constructor() {
|
2692
|
-
_defineProperty(this, "globalBucket", void 0);
|
2693
|
-
this.globalBucket = this.createEmptyBucket();
|
2694
|
-
}
|
2695
|
-
|
2696
|
-
/**
|
2697
|
-
* Returns a new object with empty handlers related to every registered hook name.
|
2698
|
-
*
|
2699
|
-
* @returns {object} The empty bucket object.
|
2700
|
-
*
|
2701
|
-
* @example
|
2702
|
-
* ```js
|
2703
|
-
* Handsontable.hooks.createEmptyBucket();
|
2704
|
-
* // Results:
|
2705
|
-
* {
|
2706
|
-
* ...
|
2707
|
-
* afterCreateCol: [],
|
2708
|
-
* afterCreateRow: [],
|
2709
|
-
* beforeInit: [],
|
2710
|
-
* ...
|
2711
|
-
* }
|
2712
|
-
* ```
|
2713
|
-
*/
|
2714
|
-
createEmptyBucket() {
|
2715
|
-
const bucket = Object.create(null);
|
2716
|
-
|
2717
|
-
// eslint-disable-next-line no-return-assign
|
2718
|
-
arrayEach(REGISTERED_HOOKS, hook => {
|
2719
|
-
bucket[hook] = [];
|
2720
|
-
this.initOrderMap(bucket, hook);
|
2721
|
-
});
|
2722
|
-
return bucket;
|
2723
|
-
}
|
2724
|
-
|
2725
|
-
/**
|
2726
|
-
* Get hook bucket based on the context of the object or if argument is `undefined`, get the global hook bucket.
|
2727
|
-
*
|
2728
|
-
* @param {object} [context=null] A Handsontable instance.
|
2729
|
-
* @returns {object} Returns a global or Handsontable instance bucket.
|
2730
|
-
*/
|
2731
|
-
getBucket() {
|
2732
|
-
let context = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
|
2733
|
-
if (context) {
|
2734
|
-
if (!context.pluginHookBucket) {
|
2735
|
-
context.pluginHookBucket = this.createEmptyBucket();
|
2736
|
-
}
|
2737
|
-
return context.pluginHookBucket;
|
2738
|
-
}
|
2739
|
-
return this.globalBucket;
|
2740
|
-
}
|
2741
|
-
|
2742
|
-
/**
|
2743
|
-
* Adds a listener (globally or locally) to a specified hook name.
|
2744
|
-
* If the `context` parameter is provided, the hook will be added only to the instance it references.
|
2745
|
-
* Otherwise, the callback will be used everytime the hook fires on any Handsontable instance.
|
2746
|
-
* You can provide an array of callback functions as the `callback` argument, this way they will all be fired
|
2747
|
-
* once the hook is triggered.
|
2748
|
-
*
|
2749
|
-
* @see Core#addHook
|
2750
|
-
* @param {string} key Hook name.
|
2751
|
-
* @param {Function|Array} callback Callback function or an array of functions.
|
2752
|
-
* @param {object} [context=null] The context for the hook callback to be added - a Handsontable instance or leave empty.
|
2753
|
-
* @param {number} [orderIndex] Order index of the callback.
|
2754
|
-
* If > 0, the callback will be added after the others, for example, with an index of 1, the callback will be added before the ones with an index of 2, 3, etc., but after the ones with an index of 0 and lower.
|
2755
|
-
* If < 0, the callback will be added before the others, for example, with an index of -1, the callback will be added after the ones with an index of -2, -3, etc., but before the ones with an index of 0 and higher.
|
2756
|
-
* If 0 or no order index is provided, the callback will be added between the "negative" and "positive" indexes.
|
2757
|
-
* @returns {Hooks} Instance of Hooks.
|
2758
|
-
*
|
2759
|
-
* @example
|
2760
|
-
* ```js
|
2761
|
-
* // single callback, added locally
|
2762
|
-
* Handsontable.hooks.add('beforeInit', myCallback, hotInstance);
|
2763
|
-
*
|
2764
|
-
* // single callback, added globally
|
2765
|
-
* Handsontable.hooks.add('beforeInit', myCallback);
|
2766
|
-
*
|
2767
|
-
* // multiple callbacks, added locally
|
2768
|
-
* Handsontable.hooks.add('beforeInit', [myCallback, anotherCallback], hotInstance);
|
2769
|
-
*
|
2770
|
-
* // multiple callbacks, added globally
|
2771
|
-
* Handsontable.hooks.add('beforeInit', [myCallback, anotherCallback]);
|
2772
|
-
* ```
|
2773
|
-
*/
|
2774
|
-
add(key, callback) {
|
2775
|
-
let context = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
|
2776
|
-
let orderIndex = arguments.length > 3 ? arguments[3] : undefined;
|
2777
|
-
if (Array.isArray(callback)) {
|
2778
|
-
arrayEach(callback, c => this.add(key, c, context));
|
2779
|
-
} else {
|
2780
|
-
if (REMOVED_HOOKS.has(key)) {
|
2781
|
-
warn(substitute(REMOVED_MESSAGE, {
|
2782
|
-
hookName: key,
|
2783
|
-
removedInVersion: REMOVED_HOOKS.get(key)
|
2784
|
-
}));
|
2785
|
-
}
|
2786
|
-
if (DEPRECATED_HOOKS.has(key)) {
|
2787
|
-
warn(DEPRECATED_HOOKS.get(key));
|
2788
|
-
}
|
2789
|
-
const bucket = this.getBucket(context);
|
2790
|
-
if (typeof bucket[key] === 'undefined') {
|
2791
|
-
this.register(key);
|
2792
|
-
bucket[key] = [];
|
2793
|
-
this.initOrderMap(bucket, key);
|
2794
|
-
}
|
2795
|
-
callback.skip = false;
|
2796
|
-
if (bucket[key].indexOf(callback) === -1) {
|
2797
|
-
// only add a hook if it has not already been added (adding the same hook twice is now silently ignored)
|
2798
|
-
let foundInitialHook = false;
|
2799
|
-
if (callback.initialHook) {
|
2800
|
-
arrayEach(bucket[key], (cb, i) => {
|
2801
|
-
if (cb.initialHook) {
|
2802
|
-
bucket[key][i] = callback;
|
2803
|
-
foundInitialHook = true;
|
2804
|
-
return false;
|
2805
|
-
}
|
2806
|
-
});
|
2807
|
-
}
|
2808
|
-
if (!foundInitialHook) {
|
2809
|
-
bucket[key].push(callback);
|
2810
|
-
}
|
2811
|
-
}
|
2812
|
-
this.setCallbackOrderIndex(bucket, key, callback, orderIndex);
|
2813
|
-
this.orderBucketByOrderIndex(bucket, key);
|
2814
|
-
}
|
2815
|
-
return this;
|
2816
|
-
}
|
2817
|
-
|
2818
|
-
/**
|
2819
|
-
* Adds a listener to a specified hook. After the hook runs this listener will be automatically removed from the bucket.
|
2820
|
-
*
|
2821
|
-
* @see Core#addHookOnce
|
2822
|
-
* @param {string} key Hook/Event name.
|
2823
|
-
* @param {Function|Array} callback Callback function.
|
2824
|
-
* @param {object} [context=null] A Handsontable instance.
|
2825
|
-
* @param {number} [orderIndex] Order index of the callback.
|
2826
|
-
* If > 0, the callback will be added after the others, for example, with an index of 1, the callback will be added before the ones with an index of 2, 3, etc., but after the ones with an index of 0 and lower.
|
2827
|
-
* If < 0, the callback will be added before the others, for example, with an index of -1, the callback will be added after the ones with an index of -2, -3, etc., but before the ones with an index of 0 and higher.
|
2828
|
-
* If 0 or no order index is provided, the callback will be added between the "negative" and "positive" indexes.
|
2829
|
-
*
|
2830
|
-
* @example
|
2831
|
-
* ```js
|
2832
|
-
* Handsontable.hooks.once('beforeInit', myCallback, hotInstance);
|
2833
|
-
* ```
|
2834
|
-
*/
|
2835
|
-
once(key, callback) {
|
2836
|
-
let context = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
|
2837
|
-
let orderIndex = arguments.length > 3 ? arguments[3] : undefined;
|
2838
|
-
if (Array.isArray(callback)) {
|
2839
|
-
arrayEach(callback, c => this.once(key, c, context));
|
2840
|
-
} else {
|
2841
|
-
callback.runOnce = true;
|
2842
|
-
this.add(key, callback, context, orderIndex);
|
2843
|
-
}
|
2844
|
-
}
|
2845
|
-
|
2846
|
-
/**
|
2847
|
-
* Removes a listener from a hook with a given name. If the `context` argument is provided, it removes a listener from a local hook assigned to the given Handsontable instance.
|
2848
|
-
*
|
2849
|
-
* @see Core#removeHook
|
2850
|
-
* @param {string} key Hook/Event name.
|
2851
|
-
* @param {Function} callback Callback function (needs the be the function that was previously added to the hook).
|
2852
|
-
* @param {object} [context=null] Handsontable instance.
|
2853
|
-
* @returns {boolean} Returns `true` if hook was removed, `false` otherwise.
|
2854
|
-
*
|
2855
|
-
* @example
|
2856
|
-
* ```js
|
2857
|
-
* Handsontable.hooks.remove('beforeInit', myCallback);
|
2858
|
-
* ```
|
2859
|
-
*/
|
2860
|
-
remove(key, callback) {
|
2861
|
-
let context = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
|
2862
|
-
const bucket = this.getBucket(context);
|
2863
|
-
if (typeof bucket[key] !== 'undefined') {
|
2864
|
-
if (bucket[key].indexOf(callback) >= 0) {
|
2865
|
-
callback.skip = true;
|
2866
|
-
return true;
|
2867
|
-
}
|
2868
|
-
}
|
2869
|
-
return false;
|
2870
|
-
}
|
2871
|
-
|
2872
|
-
/**
|
2873
|
-
* Checks whether there are any registered listeners for the provided hook name.
|
2874
|
-
* If the `context` parameter is provided, it only checks for listeners assigned to the given Handsontable instance.
|
2875
|
-
*
|
2876
|
-
* @param {string} key Hook name.
|
2877
|
-
* @param {object} [context=null] A Handsontable instance.
|
2878
|
-
* @returns {boolean} `true` for success, `false` otherwise.
|
2879
|
-
*/
|
2880
|
-
has(key) {
|
2881
|
-
let context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
|
2882
|
-
const bucket = this.getBucket(context);
|
2883
|
-
return !!(bucket[key] !== undefined && bucket[key].length);
|
2884
|
-
}
|
2885
|
-
|
2886
|
-
/**
|
2887
|
-
* Runs all local and global callbacks assigned to the hook identified by the `key` parameter.
|
2888
|
-
* It returns either a return value from the last called callback or the first parameter (`p1`) passed to the `run` function.
|
2889
|
-
*
|
2890
|
-
* @see Core#runHooks
|
2891
|
-
* @param {object} context Handsontable instance.
|
2892
|
-
* @param {string} key Hook/Event name.
|
2893
|
-
* @param {*} [p1] Parameter to be passed as an argument to the callback function.
|
2894
|
-
* @param {*} [p2] Parameter to be passed as an argument to the callback function.
|
2895
|
-
* @param {*} [p3] Parameter to be passed as an argument to the callback function.
|
2896
|
-
* @param {*} [p4] Parameter to be passed as an argument to the callback function.
|
2897
|
-
* @param {*} [p5] Parameter to be passed as an argument to the callback function.
|
2898
|
-
* @param {*} [p6] Parameter to be passed as an argument to the callback function.
|
2899
|
-
* @returns {*} Either a return value from the last called callback or `p1`.
|
2900
|
-
*
|
2901
|
-
* @example
|
2902
|
-
* ```js
|
2903
|
-
* Handsontable.hooks.run(hot, 'beforeInit');
|
2904
|
-
* ```
|
2905
|
-
*/
|
2906
|
-
run(context, key, p1, p2, p3, p4, p5, p6) {
|
2907
|
-
{
|
2908
|
-
const globalHandlers = this.globalBucket[key];
|
2909
|
-
const length = globalHandlers ? globalHandlers.length : 0;
|
2910
|
-
let index = 0;
|
2911
|
-
if (length) {
|
2912
|
-
// Do not optimise this loop with arrayEach or arrow function! If you do You'll decrease perf because of GC.
|
2913
|
-
while (index < length) {
|
2914
|
-
if (!globalHandlers[index] || globalHandlers[index].skip) {
|
2915
|
-
index += 1;
|
2916
|
-
/* eslint-disable no-continue */
|
2917
|
-
continue;
|
2918
|
-
}
|
2919
|
-
const res = fastCall(globalHandlers[index], context, p1, p2, p3, p4, p5, p6);
|
2920
|
-
if (res !== undefined) {
|
2921
|
-
// eslint-disable-next-line no-param-reassign
|
2922
|
-
p1 = res;
|
2923
|
-
}
|
2924
|
-
if (globalHandlers[index] && globalHandlers[index].runOnce) {
|
2925
|
-
this.remove(key, globalHandlers[index]);
|
2926
|
-
}
|
2927
|
-
index += 1;
|
2928
|
-
}
|
2929
|
-
}
|
2930
|
-
}
|
2931
|
-
{
|
2932
|
-
const localHandlers = this.getBucket(context)[key];
|
2933
|
-
const length = localHandlers ? localHandlers.length : 0;
|
2934
|
-
let index = 0;
|
2935
|
-
if (length) {
|
2936
|
-
// Do not optimise this loop with arrayEach or arrow function! If you do You'll decrease perf because of GC.
|
2937
|
-
while (index < length) {
|
2938
|
-
if (!localHandlers[index] || localHandlers[index].skip) {
|
2939
|
-
index += 1;
|
2940
|
-
/* eslint-disable no-continue */
|
2941
|
-
continue;
|
2942
|
-
}
|
2943
|
-
const res = fastCall(localHandlers[index], context, p1, p2, p3, p4, p5, p6);
|
2944
|
-
if (res !== undefined) {
|
2945
|
-
// eslint-disable-next-line no-param-reassign
|
2946
|
-
p1 = res;
|
2947
|
-
}
|
2948
|
-
if (localHandlers[index] && localHandlers[index].runOnce) {
|
2949
|
-
this.remove(key, localHandlers[index], context);
|
2950
|
-
}
|
2951
|
-
index += 1;
|
2952
|
-
}
|
2953
|
-
}
|
2954
|
-
}
|
2955
|
-
return p1;
|
2956
|
-
}
|
2957
|
-
|
2958
|
-
/**
|
2959
|
-
* Destroy all listeners connected to the context. If no context is provided, the global listeners will be destroyed.
|
2960
|
-
*
|
2961
|
-
* @param {object} [context=null] A Handsontable instance.
|
2962
|
-
* @example
|
2963
|
-
* ```js
|
2964
|
-
* // destroy the global listeners
|
2965
|
-
* Handsontable.hooks.destroy();
|
2966
|
-
*
|
2967
|
-
* // destroy the local listeners
|
2968
|
-
* Handsontable.hooks.destroy(hotInstance);
|
2969
|
-
* ```
|
2970
|
-
*/
|
2971
|
-
destroy() {
|
2972
|
-
let context = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
|
2973
|
-
// eslint-disable-next-line no-return-assign
|
2974
|
-
objectEach(this.getBucket(context), (value, key, bucket) => bucket[key].length = 0);
|
2975
|
-
}
|
2976
|
-
|
2977
|
-
/**
|
2978
|
-
* Registers a hook name (adds it to the list of the known hook names). Used by plugins.
|
2979
|
-
* It is not necessary to call register, but if you use it, your plugin hook will be used returned by
|
2980
|
-
* the `getRegistered` method. (which itself is used in the [demo](@/guides/getting-started/events-and-hooks/events-and-hooks.md)).
|
2981
|
-
*
|
2982
|
-
* @param {string} key The hook name.
|
2983
|
-
*
|
2984
|
-
* @example
|
2985
|
-
* ```js
|
2986
|
-
* Handsontable.hooks.register('myHook');
|
2987
|
-
* ```
|
2988
|
-
*/
|
2989
|
-
register(key) {
|
2990
|
-
if (!this.isRegistered(key)) {
|
2991
|
-
REGISTERED_HOOKS.push(key);
|
2992
|
-
}
|
2993
|
-
}
|
2994
|
-
|
2995
|
-
/**
|
2996
|
-
* Deregisters a hook name (removes it from the list of known hook names).
|
2997
|
-
*
|
2998
|
-
* @param {string} key The hook name.
|
2999
|
-
*
|
3000
|
-
* @example
|
3001
|
-
* ```js
|
3002
|
-
* Handsontable.hooks.deregister('myHook');
|
3003
|
-
* ```
|
3004
|
-
*/
|
3005
|
-
deregister(key) {
|
3006
|
-
if (this.isRegistered(key)) {
|
3007
|
-
REGISTERED_HOOKS.splice(REGISTERED_HOOKS.indexOf(key), 1);
|
3008
|
-
}
|
3009
|
-
}
|
3010
|
-
|
3011
|
-
/**
|
3012
|
-
* Returns a boolean value depending on if a hook by such name has been removed or deprecated.
|
3013
|
-
*
|
3014
|
-
* @param {string} hookName The hook name to check.
|
3015
|
-
* @returns {boolean} Returns `true` if the provided hook name was marked as deprecated or
|
3016
|
-
* removed from API, `false` otherwise.
|
3017
|
-
* @example
|
3018
|
-
* ```js
|
3019
|
-
* Handsontable.hooks.isDeprecated('skipLengthCache');
|
3020
|
-
*
|
3021
|
-
* // Results:
|
3022
|
-
* true
|
3023
|
-
* ```
|
3024
|
-
*/
|
3025
|
-
isDeprecated(hookName) {
|
3026
|
-
return DEPRECATED_HOOKS.has(hookName) || REMOVED_HOOKS.has(hookName);
|
3027
|
-
}
|
3028
|
-
|
3029
|
-
/**
|
3030
|
-
* Returns a boolean depending on if a hook by such name has been registered.
|
3031
|
-
*
|
3032
|
-
* @param {string} hookName The hook name to check.
|
3033
|
-
* @returns {boolean} `true` for success, `false` otherwise.
|
3034
|
-
* @example
|
3035
|
-
* ```js
|
3036
|
-
* Handsontable.hooks.isRegistered('beforeInit');
|
3037
|
-
*
|
3038
|
-
* // Results:
|
3039
|
-
* true
|
3040
|
-
* ```
|
3041
|
-
*/
|
3042
|
-
isRegistered(hookName) {
|
3043
|
-
return REGISTERED_HOOKS.indexOf(hookName) >= 0;
|
3044
|
-
}
|
3045
|
-
|
3046
|
-
/**
|
3047
|
-
* Returns an array of registered hooks.
|
3048
|
-
*
|
3049
|
-
* @returns {Array} An array of registered hooks.
|
3050
|
-
*
|
3051
|
-
* @example
|
3052
|
-
* ```js
|
3053
|
-
* Handsontable.hooks.getRegistered();
|
3054
|
-
*
|
3055
|
-
* // Results:
|
3056
|
-
* [
|
3057
|
-
* ...
|
3058
|
-
* 'beforeInit',
|
3059
|
-
* 'beforeRender',
|
3060
|
-
* 'beforeSetRangeEnd',
|
3061
|
-
* 'beforeDrawBorders',
|
3062
|
-
* 'beforeChange',
|
3063
|
-
* ...
|
3064
|
-
* ]
|
3065
|
-
* ```
|
3066
|
-
*/
|
3067
|
-
getRegistered() {
|
3068
|
-
return REGISTERED_HOOKS;
|
3069
|
-
}
|
3070
|
-
|
3071
|
-
/**
|
3072
|
-
* Sets the order index of the callback in the bucket object.
|
3073
|
-
*
|
3074
|
-
* @private
|
3075
|
-
* @param {object} bucket The bucket object.
|
3076
|
-
* @param {string} key Hook name.
|
3077
|
-
* @param {Function} callback Callback function.
|
3078
|
-
* @param {number|undefined} orderIndex Order index of the callback.
|
3079
|
-
*/
|
3080
|
-
setCallbackOrderIndex(bucket, key, callback, orderIndex) {
|
3081
|
-
const normalizedOrderIndex = Number.isInteger(orderIndex) ? orderIndex : 0;
|
3082
|
-
const orderMap = this.getCallbackOrderMap(bucket, key);
|
3083
|
-
orderMap.set(normalizedOrderIndex, [...(orderMap.get(normalizedOrderIndex) || []), callback]);
|
3084
|
-
}
|
3085
|
-
|
3086
|
-
/**
|
3087
|
-
* Reorders the callbacks in the bucket object by their order index.
|
3088
|
-
*
|
3089
|
-
* @private
|
3090
|
-
* @param {objcet} bucket The bucket object.
|
3091
|
-
* @param {string} key Hook name.
|
3092
|
-
*/
|
3093
|
-
orderBucketByOrderIndex(bucket, key) {
|
3094
|
-
const orderMap = this.getCallbackOrderMap(bucket, key);
|
3095
|
-
if (orderMap === undefined || orderMap.size === 0 || orderMap.size === 1 && orderMap.has(0)) {
|
3096
|
-
return;
|
3097
|
-
}
|
3098
|
-
bucket[key] = [...orderMap].sort((a, b) => a[0] - b[0]).flatMap(_ref => {
|
3099
|
-
let [, callbacks] = _ref;
|
3100
|
-
return callbacks;
|
3101
|
-
});
|
3102
|
-
}
|
3103
|
-
|
3104
|
-
/**
|
3105
|
-
* Extends the bucket object with the order property.
|
3106
|
-
*
|
3107
|
-
* @private
|
3108
|
-
* @param {object} bucket The bucket object.
|
3109
|
-
* @param {string} hook The hook name.
|
3110
|
-
*/
|
3111
|
-
initOrderMap(bucket, hook) {
|
3112
|
-
if (!callbackOrder.has(bucket)) {
|
3113
|
-
callbackOrder.set(bucket, []);
|
3114
|
-
}
|
3115
|
-
callbackOrder.get(bucket)[hook] = new Map();
|
3116
|
-
}
|
3117
|
-
|
3118
|
-
/**
|
3119
|
-
* Returns the order map for the provided hook.
|
3120
|
-
*
|
3121
|
-
* @private
|
3122
|
-
* @param {object} bucket The bucket object.
|
3123
|
-
* @param {string} hook The hook name.
|
3124
|
-
* @returns {Map<number, Array<Function>>} Returns the order map for the provided hook.
|
3125
|
-
*/
|
3126
|
-
getCallbackOrderMap(bucket, hook) {
|
3127
|
-
return callbackOrder.get(bucket)[hook];
|
3128
|
-
}
|
3129
|
-
}
|
3130
|
-
const globalSingleton = new Hooks();
|
3131
|
-
|
3132
|
-
/**
|
3133
|
-
* @returns {Hooks}
|
3134
|
-
*/
|
3135
|
-
function getGlobalSingleton() {
|
3136
|
-
return globalSingleton;
|
3137
|
-
}
|
3138
|
-
export default Hooks;
|
2690
|
+
const DEPRECATED_HOOKS = exports.DEPRECATED_HOOKS = new Map([[]]);
|