handsontable 14.6.1-next-689aaa6-20241016 → 15.0.0-next-4472a60-20241203
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/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,8 +1,8 @@
|
|
1
|
-
import { addClass, hasClass, removeClass,
|
1
|
+
import { addClass, hasClass, removeClass, getTrimmingContainer, innerWidth, innerHeight, offset, outerHeight, outerWidth } from "../../../../../helpers/dom/element.mjs";
|
2
2
|
import { stopImmediatePropagation } from "../../../../../helpers/dom/event.mjs";
|
3
3
|
import { objectEach } from "../../../../../helpers/object.mjs";
|
4
4
|
import { isMobileBrowser } from "../../../../../helpers/browser.mjs";
|
5
|
-
import {
|
5
|
+
import { getCornerStyle } from "./utils.mjs";
|
6
6
|
/**
|
7
7
|
*
|
8
8
|
*/
|
@@ -32,9 +32,9 @@ class Border {
|
|
32
32
|
this.bottomStyle = null;
|
33
33
|
this.startStyle = null;
|
34
34
|
this.endStyle = null;
|
35
|
-
this.cornerDefaultStyle =
|
35
|
+
this.cornerDefaultStyle = getCornerStyle(this.instance);
|
36
36
|
// Offset to moving the corner to be centered relative to the grid.
|
37
|
-
this.cornerCenterPointOffset = -(parseInt(this.cornerDefaultStyle.width, 10) / 2);
|
37
|
+
this.cornerCenterPointOffset = -Math.ceil(parseInt(this.cornerDefaultStyle.width, 10) / 2);
|
38
38
|
this.corner = null;
|
39
39
|
this.cornerStyle = null;
|
40
40
|
this.createBorders(settings);
|
@@ -163,9 +163,9 @@ class Border {
|
|
163
163
|
this.corner = this.main.childNodes[4];
|
164
164
|
this.corner.className += ' corner';
|
165
165
|
this.cornerStyle = this.corner.style;
|
166
|
-
this.cornerStyle.width = this.cornerDefaultStyle.width
|
167
|
-
this.cornerStyle.height = this.cornerDefaultStyle.height
|
168
|
-
this.cornerStyle.border = [this.cornerDefaultStyle.borderWidth
|
166
|
+
this.cornerStyle.width = `${this.cornerDefaultStyle.width}px`;
|
167
|
+
this.cornerStyle.height = `${this.cornerDefaultStyle.height}px`;
|
168
|
+
this.cornerStyle.border = [`${this.cornerDefaultStyle.borderWidth}px`, this.cornerDefaultStyle.borderStyle, this.cornerDefaultStyle.borderColor].join(' ');
|
169
169
|
if (isMobileBrowser() && this.instance.getSetting('isDataViewInstance')) {
|
170
170
|
this.createMultipleSelectorHandles();
|
171
171
|
}
|
@@ -319,66 +319,52 @@ class Border {
|
|
319
319
|
if (this.disabled) {
|
320
320
|
return;
|
321
321
|
}
|
322
|
+
let [fromRow, fromColumn, toRow, toColumn] = corners;
|
323
|
+
|
324
|
+
// borders can not be rendered on headers so hide them
|
325
|
+
if (fromRow < 0 && toRow < 0 || fromColumn < 0 && toColumn < 0) {
|
326
|
+
this.disappear();
|
327
|
+
return;
|
328
|
+
}
|
322
329
|
const {
|
323
330
|
wtTable,
|
324
331
|
rootDocument,
|
325
332
|
rootWindow
|
326
|
-
} = this.wot;
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
let
|
333
|
-
|
334
|
-
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
-
|
339
|
-
|
340
|
-
|
341
|
-
}
|
342
|
-
for (let i = rowsCount - 1; i >= 0; i -= 1) {
|
343
|
-
const s = wtTable.rowFilter.renderedToSource(i);
|
344
|
-
if (s >= corners[0] && s <= corners[2]) {
|
345
|
-
toRow = s;
|
346
|
-
break;
|
347
|
-
}
|
348
|
-
}
|
349
|
-
const columnsCount = wtTable.getRenderedColumnsCount();
|
350
|
-
for (let i = 0; i < columnsCount; i += 1) {
|
351
|
-
const s = wtTable.columnFilter.renderedToSource(i);
|
352
|
-
if (s >= corners[1] && s <= corners[3]) {
|
353
|
-
fromColumn = s;
|
354
|
-
columnHeader = corners[1];
|
355
|
-
break;
|
333
|
+
} = this.wot;
|
334
|
+
const isMultiple = fromRow !== toRow || fromColumn !== toColumn;
|
335
|
+
const firstRenderedRow = wtTable.getFirstRenderedRow();
|
336
|
+
const lastRenderedRow = wtTable.getLastRenderedRow();
|
337
|
+
const firstRenderedColumn = wtTable.getFirstRenderedColumn();
|
338
|
+
const lastRenderedColumn = wtTable.getLastRenderedColumn();
|
339
|
+
let fromTD;
|
340
|
+
if (isMultiple) {
|
341
|
+
fromColumn = Math.max(fromColumn, firstRenderedColumn);
|
342
|
+
toColumn = Math.min(toColumn, lastRenderedColumn);
|
343
|
+
fromRow = Math.max(fromRow, firstRenderedRow);
|
344
|
+
toRow = Math.min(toRow, lastRenderedRow);
|
345
|
+
if (toColumn < fromColumn || toRow < fromRow) {
|
346
|
+
this.disappear();
|
347
|
+
return;
|
356
348
|
}
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
if (
|
361
|
-
|
362
|
-
|
349
|
+
fromTD = wtTable.getCell(this.wot.createCellCoords(fromRow, fromColumn));
|
350
|
+
} else {
|
351
|
+
fromTD = wtTable.getCell(this.wot.createCellCoords(fromRow, fromColumn));
|
352
|
+
if (!(fromTD instanceof HTMLElement)) {
|
353
|
+
this.disappear();
|
354
|
+
return;
|
363
355
|
}
|
364
356
|
}
|
365
|
-
if (fromRow === undefined || fromColumn === undefined) {
|
366
|
-
this.disappear();
|
367
|
-
return;
|
368
|
-
}
|
369
|
-
let fromTD = wtTable.getCell(this.wot.createCellCoords(fromRow, fromColumn));
|
370
|
-
const isMultiple = fromRow !== toRow || fromColumn !== toColumn;
|
371
357
|
const toTD = isMultiple ? wtTable.getCell(this.wot.createCellCoords(toRow, toColumn)) : fromTD;
|
372
358
|
const fromOffset = offset(fromTD);
|
373
359
|
const toOffset = isMultiple ? offset(toTD) : fromOffset;
|
374
360
|
const containerOffset = offset(wtTable.TABLE);
|
375
|
-
const containerWidth = outerWidth(wtTable.TABLE);
|
376
361
|
const minTop = fromOffset.top;
|
377
362
|
const minLeft = fromOffset.left;
|
378
363
|
const isRtl = this.wot.wtSettings.getSetting('rtlMode');
|
379
364
|
let inlineStartPos = 0;
|
380
365
|
let width = 0;
|
381
366
|
if (isRtl) {
|
367
|
+
const containerWidth = outerWidth(wtTable.TABLE);
|
382
368
|
const fromWidth = outerWidth(fromTD);
|
383
369
|
const gridRightPos = rootWindow.innerWidth - containerOffset.left - containerWidth;
|
384
370
|
width = minLeft + fromWidth - toOffset.left;
|
@@ -388,6 +374,7 @@ class Border {
|
|
388
374
|
inlineStartPos = minLeft - containerOffset.left - 1;
|
389
375
|
}
|
390
376
|
if (this.isEntireColumnSelected(fromRow, toRow)) {
|
377
|
+
const rowHeader = fromRow;
|
391
378
|
const modifiedValues = this.getDimensionsFromHeader('columns', fromColumn, toColumn, rowHeader, containerOffset);
|
392
379
|
let fromTH = null;
|
393
380
|
if (modifiedValues) {
|
@@ -400,6 +387,7 @@ class Border {
|
|
400
387
|
let top = minTop - containerOffset.top - 1;
|
401
388
|
let height = toOffset.top + outerHeight(toTD) - minTop;
|
402
389
|
if (this.isEntireRowSelected(fromColumn, toColumn)) {
|
390
|
+
const columnHeader = fromColumn;
|
403
391
|
const modifiedValues = this.getDimensionsFromHeader('rows', fromRow, toRow, columnHeader, containerOffset);
|
404
392
|
let fromTH = null;
|
405
393
|
if (modifiedValues) {
|
@@ -409,7 +397,7 @@ class Border {
|
|
409
397
|
fromTD = fromTH;
|
410
398
|
}
|
411
399
|
}
|
412
|
-
const style = getComputedStyle(fromTD
|
400
|
+
const style = rootWindow.getComputedStyle(fromTD);
|
413
401
|
if (parseInt(style.borderTopWidth, 10) > 0) {
|
414
402
|
top += 1;
|
415
403
|
height = height > 0 ? height - 1 : 0;
|
@@ -438,7 +426,7 @@ class Border {
|
|
438
426
|
this.endStyle.display = 'block';
|
439
427
|
let cornerVisibleSetting = this.settings.border.cornerVisible;
|
440
428
|
cornerVisibleSetting = typeof cornerVisibleSetting === 'function' ? cornerVisibleSetting(this.settings.layerLevel) : cornerVisibleSetting;
|
441
|
-
const hookResult = this.wot.getSetting('onModifyGetCellCoords', toRow, toColumn);
|
429
|
+
const hookResult = this.wot.getSetting('onModifyGetCellCoords', toRow, toColumn, false, 'render');
|
442
430
|
let [checkRow, checkCol] = [toRow, toColumn];
|
443
431
|
if (hookResult && Array.isArray(hookResult)) {
|
444
432
|
[,, checkRow, checkCol] = hookResult;
|
@@ -446,9 +434,11 @@ class Border {
|
|
446
434
|
if (isMobileBrowser() || !cornerVisibleSetting || this.isPartRange(checkRow, checkCol)) {
|
447
435
|
this.cornerStyle.display = 'none';
|
448
436
|
} else {
|
449
|
-
this.cornerStyle.top = `${top + height + this.cornerCenterPointOffset -
|
450
|
-
this.cornerStyle[inlinePosProperty] = `${inlineStartPos + width + this.cornerCenterPointOffset -
|
451
|
-
this.cornerStyle.borderRightWidth = this.cornerDefaultStyle.borderWidth
|
437
|
+
this.cornerStyle.top = `${top + height + this.cornerCenterPointOffset - this.cornerDefaultStyle.borderWidth}px`;
|
438
|
+
this.cornerStyle[inlinePosProperty] = `${inlineStartPos + width + this.cornerCenterPointOffset - this.cornerDefaultStyle.borderWidth}px`;
|
439
|
+
this.cornerStyle.borderRightWidth = `${this.cornerDefaultStyle.borderWidth}px`;
|
440
|
+
this.cornerStyle.borderLeftWidth = `${this.cornerDefaultStyle.borderWidth}px`;
|
441
|
+
this.cornerStyle.borderBottomWidth = `${this.cornerDefaultStyle.borderWidth}px`;
|
452
442
|
this.cornerStyle.width = this.cornerDefaultStyle.width;
|
453
443
|
|
454
444
|
// Hide the fill handle, so the possible further adjustments won't force unneeded scrollbars.
|
@@ -458,8 +448,12 @@ class Border {
|
|
458
448
|
if (trimToWindow) {
|
459
449
|
trimmingContainer = rootDocument.documentElement;
|
460
450
|
}
|
461
|
-
|
462
|
-
|
451
|
+
|
452
|
+
// -1 was initially removed from the base position to compansate for the table border. We need to exclude it from
|
453
|
+
// the corner width.
|
454
|
+
const cornerBorderCompensation = parseInt(this.cornerDefaultStyle.borderWidth, 10) - 1;
|
455
|
+
const cornerHalfWidth = Math.ceil(parseInt(this.cornerDefaultStyle.width, 10) / 2);
|
456
|
+
const cornerHalfHeight = Math.ceil(parseInt(this.cornerDefaultStyle.height, 10) / 2);
|
463
457
|
if (toColumn === this.wot.getSetting('totalColumns') - 1) {
|
464
458
|
const toTdOffsetLeft = trimToWindow ? toTD.getBoundingClientRect().left : toTD.offsetLeft;
|
465
459
|
let cornerOverlappingContainer = false;
|
@@ -472,7 +466,7 @@ class Border {
|
|
472
466
|
cornerOverlappingContainer = cornerEdge >= innerWidth(trimmingContainer);
|
473
467
|
}
|
474
468
|
if (cornerOverlappingContainer) {
|
475
|
-
this.cornerStyle[inlinePosProperty] = `${Math.floor(inlineStartPos + width + this.cornerCenterPointOffset - cornerHalfWidth)}px`;
|
469
|
+
this.cornerStyle[inlinePosProperty] = `${Math.floor(inlineStartPos + width + this.cornerCenterPointOffset - cornerHalfWidth - cornerBorderCompensation)}px`;
|
476
470
|
this.cornerStyle[isRtl ? 'borderLeftWidth' : 'borderRightWidth'] = 0;
|
477
471
|
}
|
478
472
|
}
|
@@ -481,7 +475,7 @@ class Border {
|
|
481
475
|
const cornerBottomEdge = toTdOffsetTop + outerHeight(toTD) + parseInt(this.cornerDefaultStyle.height, 10) / 2;
|
482
476
|
const cornerOverlappingContainer = cornerBottomEdge >= innerHeight(trimmingContainer);
|
483
477
|
if (cornerOverlappingContainer) {
|
484
|
-
this.cornerStyle.top = `${Math.floor(top + height + this.cornerCenterPointOffset - cornerHalfHeight)}px`;
|
478
|
+
this.cornerStyle.top = `${Math.floor(top + height + this.cornerCenterPointOffset - cornerHalfHeight - cornerBorderCompensation)}px`;
|
485
479
|
this.cornerStyle.borderBottomWidth = 0;
|
486
480
|
}
|
487
481
|
}
|
@@ -0,0 +1,26 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
exports.__esModule = true;
|
4
|
+
const getCornerStyle = wot => {
|
5
|
+
const stylesHandler = wot.stylesHandler;
|
6
|
+
if (stylesHandler.isClassicTheme()) {
|
7
|
+
return Object.freeze({
|
8
|
+
width: 6,
|
9
|
+
height: 6,
|
10
|
+
borderWidth: 1,
|
11
|
+
borderStyle: 'solid',
|
12
|
+
borderColor: '#FFF'
|
13
|
+
});
|
14
|
+
}
|
15
|
+
const cornerSizeFromVar = stylesHandler.getCSSVariableValue('cell-autofill-size');
|
16
|
+
const cornerBorderWidthFromVar = stylesHandler.getCSSVariableValue('cell-autofill-border-width');
|
17
|
+
const cornerColorFromVar = stylesHandler.getCSSVariableValue('cell-autofill-border-color');
|
18
|
+
return Object.freeze({
|
19
|
+
width: cornerSizeFromVar,
|
20
|
+
height: cornerSizeFromVar,
|
21
|
+
borderWidth: cornerBorderWidthFromVar,
|
22
|
+
borderStyle: 'solid',
|
23
|
+
borderColor: cornerColorFromVar
|
24
|
+
});
|
25
|
+
};
|
26
|
+
exports.getCornerStyle = getCornerStyle;
|
@@ -0,0 +1,22 @@
|
|
1
|
+
export const getCornerStyle = wot => {
|
2
|
+
const stylesHandler = wot.stylesHandler;
|
3
|
+
if (stylesHandler.isClassicTheme()) {
|
4
|
+
return Object.freeze({
|
5
|
+
width: 6,
|
6
|
+
height: 6,
|
7
|
+
borderWidth: 1,
|
8
|
+
borderStyle: 'solid',
|
9
|
+
borderColor: '#FFF'
|
10
|
+
});
|
11
|
+
}
|
12
|
+
const cornerSizeFromVar = stylesHandler.getCSSVariableValue('cell-autofill-size');
|
13
|
+
const cornerBorderWidthFromVar = stylesHandler.getCSSVariableValue('cell-autofill-border-width');
|
14
|
+
const cornerColorFromVar = stylesHandler.getCSSVariableValue('cell-autofill-border-color');
|
15
|
+
return Object.freeze({
|
16
|
+
width: cornerSizeFromVar,
|
17
|
+
height: cornerSizeFromVar,
|
18
|
+
borderWidth: cornerBorderWidthFromVar,
|
19
|
+
borderStyle: 'solid',
|
20
|
+
borderColor: cornerColorFromVar
|
21
|
+
});
|
22
|
+
};
|
@@ -1,5 +1,7 @@
|
|
1
1
|
"use strict";
|
2
2
|
|
3
|
+
require("core-js/modules/esnext.iterator.constructor.js");
|
4
|
+
require("core-js/modules/esnext.iterator.for-each.js");
|
3
5
|
exports.__esModule = true;
|
4
6
|
var _exportNames = {
|
5
7
|
SelectionManager: true,
|
@@ -14,12 +16,12 @@ Object.keys(_constants).forEach(function (key) {
|
|
14
16
|
if (key in exports && exports[key] === _constants[key]) return;
|
15
17
|
exports[key] = _constants[key];
|
16
18
|
});
|
17
|
-
var
|
18
|
-
Object.keys(
|
19
|
+
var _utils = require("./border/utils");
|
20
|
+
Object.keys(_utils).forEach(function (key) {
|
19
21
|
if (key === "default" || key === "__esModule") return;
|
20
22
|
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
21
|
-
if (key in exports && exports[key] ===
|
22
|
-
exports[key] =
|
23
|
+
if (key in exports && exports[key] === _utils[key]) return;
|
24
|
+
exports[key] = _utils[key];
|
23
25
|
});
|
24
26
|
var _manager = require("./manager");
|
25
27
|
exports.SelectionManager = _manager.SelectionManager;
|
@@ -11,6 +11,9 @@ require("core-js/modules/es.set.is-subset-of.v2.js");
|
|
11
11
|
require("core-js/modules/es.set.is-superset-of.v2.js");
|
12
12
|
require("core-js/modules/es.set.symmetric-difference.v2.js");
|
13
13
|
require("core-js/modules/es.set.union.v2.js");
|
14
|
+
require("core-js/modules/esnext.iterator.constructor.js");
|
15
|
+
require("core-js/modules/esnext.iterator.for-each.js");
|
16
|
+
require("core-js/modules/esnext.iterator.map.js");
|
14
17
|
var _element = require("../../../../helpers/dom/element");
|
15
18
|
var _scanner2 = require("./scanner");
|
16
19
|
var _border = _interopRequireDefault(require("./border/border"));
|
@@ -8,6 +8,9 @@ import "core-js/modules/es.set.is-subset-of.v2.js";
|
|
8
8
|
import "core-js/modules/es.set.is-superset-of.v2.js";
|
9
9
|
import "core-js/modules/es.set.symmetric-difference.v2.js";
|
10
10
|
import "core-js/modules/es.set.union.v2.js";
|
11
|
+
import "core-js/modules/esnext.iterator.constructor.js";
|
12
|
+
import "core-js/modules/esnext.iterator.for-each.js";
|
13
|
+
import "core-js/modules/esnext.iterator.map.js";
|
11
14
|
function _classPrivateMethodInitSpec(e, a) { _checkPrivateRedeclaration(e, a), a.add(e); }
|
12
15
|
function _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }
|
13
16
|
function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); }
|
@@ -195,21 +195,18 @@ class SelectionScanner {
|
|
195
195
|
* @param {function(HTMLTableElement): void} callback The callback function to trigger.
|
196
196
|
*/
|
197
197
|
scanCellsRange(callback) {
|
198
|
-
const [topRow, topColumn, bottomRow, bottomColumn] = _classPrivateFieldGet(_selection, this).getCorners();
|
199
198
|
const {
|
200
199
|
wtTable
|
201
200
|
} = _classPrivateFieldGet(_activeOverlaysWot, this);
|
202
201
|
_assertClassBrand(_SelectionScanner_brand, this, _scanCellsRange).call(this, (sourceRow, sourceColumn) => {
|
203
|
-
|
204
|
-
const cell = wtTable.getCell(_classPrivateFieldGet(_activeOverlaysWot, this).createCellCoords(sourceRow, sourceColumn));
|
202
|
+
const cell = wtTable.getCell(_classPrivateFieldGet(_activeOverlaysWot, this).createCellCoords(sourceRow, sourceColumn));
|
205
203
|
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
}
|
211
|
-
callback(cell);
|
204
|
+
// support for old API
|
205
|
+
const additionalSelectionClass = _classPrivateFieldGet(_activeOverlaysWot, this).getSetting('onAfterDrawSelection', sourceRow, sourceColumn, _classPrivateFieldGet(_selection, this).settings.layerLevel);
|
206
|
+
if (typeof additionalSelectionClass === 'string') {
|
207
|
+
(0, _element.addClass)(cell, additionalSelectionClass);
|
212
208
|
}
|
209
|
+
callback(cell);
|
213
210
|
});
|
214
211
|
}
|
215
212
|
|
@@ -225,7 +222,7 @@ class SelectionScanner {
|
|
225
222
|
const {
|
226
223
|
wtTable
|
227
224
|
} = _classPrivateFieldGet(_activeOverlaysWot, this);
|
228
|
-
_assertClassBrand(_SelectionScanner_brand, this,
|
225
|
+
_assertClassBrand(_SelectionScanner_brand, this, _scanViewportRange).call(this, (sourceRow, sourceColumn) => {
|
229
226
|
if (sourceRow >= topRow && sourceRow <= bottomRow) {
|
230
227
|
const cell = wtTable.getCell(_classPrivateFieldGet(_activeOverlaysWot, this).createCellCoords(sourceRow, sourceColumn));
|
231
228
|
callback(cell);
|
@@ -244,7 +241,7 @@ class SelectionScanner {
|
|
244
241
|
const {
|
245
242
|
wtTable
|
246
243
|
} = _classPrivateFieldGet(_activeOverlaysWot, this);
|
247
|
-
_assertClassBrand(_SelectionScanner_brand, this,
|
244
|
+
_assertClassBrand(_SelectionScanner_brand, this, _scanViewportRange).call(this, (sourceRow, sourceColumn) => {
|
248
245
|
if (sourceColumn >= topColumn && sourceColumn <= bottomColumn) {
|
249
246
|
const cell = wtTable.getCell(_classPrivateFieldGet(_activeOverlaysWot, this).createCellCoords(sourceRow, sourceColumn));
|
250
247
|
callback(cell);
|
@@ -254,6 +251,44 @@ class SelectionScanner {
|
|
254
251
|
}
|
255
252
|
exports.SelectionScanner = SelectionScanner;
|
256
253
|
function _scanCellsRange(callback) {
|
254
|
+
let [topRow, startColumn, bottomRow, endColumn] = _classPrivateFieldGet(_selection, this).getCorners();
|
255
|
+
if (topRow < 0 && bottomRow < 0 || startColumn < 0 && endColumn < 0) {
|
256
|
+
return;
|
257
|
+
}
|
258
|
+
const {
|
259
|
+
wtTable
|
260
|
+
} = _classPrivateFieldGet(_activeOverlaysWot, this);
|
261
|
+
const isMultiple = topRow !== bottomRow || startColumn !== endColumn;
|
262
|
+
startColumn = Math.max(startColumn, 0);
|
263
|
+
endColumn = Math.max(endColumn, 0);
|
264
|
+
topRow = Math.max(topRow, 0);
|
265
|
+
bottomRow = Math.max(bottomRow, 0);
|
266
|
+
if (isMultiple) {
|
267
|
+
startColumn = Math.max(startColumn, wtTable.getFirstRenderedColumn());
|
268
|
+
endColumn = Math.min(endColumn, wtTable.getLastRenderedColumn());
|
269
|
+
topRow = Math.max(topRow, wtTable.getFirstRenderedRow());
|
270
|
+
bottomRow = Math.min(bottomRow, wtTable.getLastRenderedRow());
|
271
|
+
if (endColumn < startColumn || bottomRow < topRow) {
|
272
|
+
return;
|
273
|
+
}
|
274
|
+
} else {
|
275
|
+
const cell = wtTable.getCell(_classPrivateFieldGet(_activeOverlaysWot, this).createCellCoords(topRow, startColumn));
|
276
|
+
if (!(cell instanceof HTMLElement)) {
|
277
|
+
return;
|
278
|
+
}
|
279
|
+
}
|
280
|
+
for (let row = topRow; row <= bottomRow; row += 1) {
|
281
|
+
for (let column = startColumn; column <= endColumn; column += 1) {
|
282
|
+
callback(row, column);
|
283
|
+
}
|
284
|
+
}
|
285
|
+
}
|
286
|
+
/**
|
287
|
+
* The method triggers a callback for each rendered cell including headers.
|
288
|
+
*
|
289
|
+
* @param {function(number, number): void} callback The callback function to trigger.
|
290
|
+
*/
|
291
|
+
function _scanViewportRange(callback) {
|
257
292
|
const {
|
258
293
|
wtTable
|
259
294
|
} = _classPrivateFieldGet(_activeOverlaysWot, this);
|
@@ -193,21 +193,18 @@ export class SelectionScanner {
|
|
193
193
|
* @param {function(HTMLTableElement): void} callback The callback function to trigger.
|
194
194
|
*/
|
195
195
|
scanCellsRange(callback) {
|
196
|
-
const [topRow, topColumn, bottomRow, bottomColumn] = _classPrivateFieldGet(_selection, this).getCorners();
|
197
196
|
const {
|
198
197
|
wtTable
|
199
198
|
} = _classPrivateFieldGet(_activeOverlaysWot, this);
|
200
199
|
_assertClassBrand(_SelectionScanner_brand, this, _scanCellsRange).call(this, (sourceRow, sourceColumn) => {
|
201
|
-
|
202
|
-
const cell = wtTable.getCell(_classPrivateFieldGet(_activeOverlaysWot, this).createCellCoords(sourceRow, sourceColumn));
|
200
|
+
const cell = wtTable.getCell(_classPrivateFieldGet(_activeOverlaysWot, this).createCellCoords(sourceRow, sourceColumn));
|
203
201
|
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
}
|
209
|
-
callback(cell);
|
202
|
+
// support for old API
|
203
|
+
const additionalSelectionClass = _classPrivateFieldGet(_activeOverlaysWot, this).getSetting('onAfterDrawSelection', sourceRow, sourceColumn, _classPrivateFieldGet(_selection, this).settings.layerLevel);
|
204
|
+
if (typeof additionalSelectionClass === 'string') {
|
205
|
+
addClass(cell, additionalSelectionClass);
|
210
206
|
}
|
207
|
+
callback(cell);
|
211
208
|
});
|
212
209
|
}
|
213
210
|
|
@@ -223,7 +220,7 @@ export class SelectionScanner {
|
|
223
220
|
const {
|
224
221
|
wtTable
|
225
222
|
} = _classPrivateFieldGet(_activeOverlaysWot, this);
|
226
|
-
_assertClassBrand(_SelectionScanner_brand, this,
|
223
|
+
_assertClassBrand(_SelectionScanner_brand, this, _scanViewportRange).call(this, (sourceRow, sourceColumn) => {
|
227
224
|
if (sourceRow >= topRow && sourceRow <= bottomRow) {
|
228
225
|
const cell = wtTable.getCell(_classPrivateFieldGet(_activeOverlaysWot, this).createCellCoords(sourceRow, sourceColumn));
|
229
226
|
callback(cell);
|
@@ -242,7 +239,7 @@ export class SelectionScanner {
|
|
242
239
|
const {
|
243
240
|
wtTable
|
244
241
|
} = _classPrivateFieldGet(_activeOverlaysWot, this);
|
245
|
-
_assertClassBrand(_SelectionScanner_brand, this,
|
242
|
+
_assertClassBrand(_SelectionScanner_brand, this, _scanViewportRange).call(this, (sourceRow, sourceColumn) => {
|
246
243
|
if (sourceColumn >= topColumn && sourceColumn <= bottomColumn) {
|
247
244
|
const cell = wtTable.getCell(_classPrivateFieldGet(_activeOverlaysWot, this).createCellCoords(sourceRow, sourceColumn));
|
248
245
|
callback(cell);
|
@@ -251,6 +248,44 @@ export class SelectionScanner {
|
|
251
248
|
}
|
252
249
|
}
|
253
250
|
function _scanCellsRange(callback) {
|
251
|
+
let [topRow, startColumn, bottomRow, endColumn] = _classPrivateFieldGet(_selection, this).getCorners();
|
252
|
+
if (topRow < 0 && bottomRow < 0 || startColumn < 0 && endColumn < 0) {
|
253
|
+
return;
|
254
|
+
}
|
255
|
+
const {
|
256
|
+
wtTable
|
257
|
+
} = _classPrivateFieldGet(_activeOverlaysWot, this);
|
258
|
+
const isMultiple = topRow !== bottomRow || startColumn !== endColumn;
|
259
|
+
startColumn = Math.max(startColumn, 0);
|
260
|
+
endColumn = Math.max(endColumn, 0);
|
261
|
+
topRow = Math.max(topRow, 0);
|
262
|
+
bottomRow = Math.max(bottomRow, 0);
|
263
|
+
if (isMultiple) {
|
264
|
+
startColumn = Math.max(startColumn, wtTable.getFirstRenderedColumn());
|
265
|
+
endColumn = Math.min(endColumn, wtTable.getLastRenderedColumn());
|
266
|
+
topRow = Math.max(topRow, wtTable.getFirstRenderedRow());
|
267
|
+
bottomRow = Math.min(bottomRow, wtTable.getLastRenderedRow());
|
268
|
+
if (endColumn < startColumn || bottomRow < topRow) {
|
269
|
+
return;
|
270
|
+
}
|
271
|
+
} else {
|
272
|
+
const cell = wtTable.getCell(_classPrivateFieldGet(_activeOverlaysWot, this).createCellCoords(topRow, startColumn));
|
273
|
+
if (!(cell instanceof HTMLElement)) {
|
274
|
+
return;
|
275
|
+
}
|
276
|
+
}
|
277
|
+
for (let row = topRow; row <= bottomRow; row += 1) {
|
278
|
+
for (let column = startColumn; column <= endColumn; column += 1) {
|
279
|
+
callback(row, column);
|
280
|
+
}
|
281
|
+
}
|
282
|
+
}
|
283
|
+
/**
|
284
|
+
* The method triggers a callback for each rendered cell including headers.
|
285
|
+
*
|
286
|
+
* @param {function(number, number): void} callback The callback function to trigger.
|
287
|
+
*/
|
288
|
+
function _scanViewportRange(callback) {
|
254
289
|
const {
|
255
290
|
wtTable
|
256
291
|
} = _classPrivateFieldGet(_activeOverlaysWot, this);
|
@@ -19,12 +19,10 @@ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e =
|
|
19
19
|
* @property {Option} currentRowClassName Option `currentRowClassName`.
|
20
20
|
* @property {Option} data Option `data`.
|
21
21
|
* @property {Option} defaultColumnWidth Option `defaultColumnWidth`.
|
22
|
-
* @property {Option} defaultRowHeight Option `defaultRowHeight`.
|
23
22
|
* @property {Option} externalRowCalculator Option `externalRowCalculator`.
|
24
23
|
* @property {Option} fixedColumnsStart Option `fixedColumnsStart`.
|
25
24
|
* @property {Option} fixedRowsBottom Option `fixedRowsBottom`.
|
26
25
|
* @property {Option} fixedRowsTop Option `fixedRowsTop`.
|
27
|
-
* @property {Option} freezeOverlays Option `freezeOverlays`.
|
28
26
|
* @property {Option} groups Option `groups`.
|
29
27
|
* @property {Option} hideBorderOnMouseDownOver Option `hideBorderOnMouseDownOver`.
|
30
28
|
* @property {Option} isRtl Option `isRtl`.
|
@@ -33,7 +31,6 @@ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e =
|
|
33
31
|
* @property {Option} onBeforeHighlightingColumnHeader Option `onBeforeHighlightingColumnHeader`.
|
34
32
|
* @property {Option} onBeforeHighlightingRowHeader Option `onBeforeHighlightingRowHeader`.
|
35
33
|
* @property {Option} onBeforeRemoveCellClassNames Option `onBeforeRemoveCellClassNames`.
|
36
|
-
* @property {Option} onBeforeStretchingColumnWidth Option `onBeforeStretchingColumnWidth`.
|
37
34
|
* @property {Option} preventOverflow Option `preventOverflow`.
|
38
35
|
* @property {Option} preventWheel Option `preventWheel`.
|
39
36
|
* @property {Option} renderAllColumns Option `renderAllColumns`.
|
@@ -44,7 +41,6 @@ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e =
|
|
44
41
|
* @property {Option} shouldRenderBottomOverlay Option `shouldRenderBottomOverlay`.
|
45
42
|
* @property {Option} shouldRenderInlineStartOverlay Option `shouldRenderInlineStartOverlay`.
|
46
43
|
* @property {Option} shouldRenderTopOverlay Option `shouldRenderTopOverlay`.
|
47
|
-
* @property {Option} stretchH Option `stretchH`.
|
48
44
|
* @property {Option} table Option `table`.
|
49
45
|
* @property {Option} totalColumns Option `totalColumns`.
|
50
46
|
* @property {Option} totalRows Option `totalRows`.
|
@@ -66,6 +62,8 @@ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e =
|
|
66
62
|
* @property {?Option} onCellMouseUp Option `onCellMouseUp`.
|
67
63
|
* @property {?Option} onDraw Option `onDraw`.
|
68
64
|
* @property {?Option} onModifyGetCellCoords Option `onModifyGetCellCoords`.
|
65
|
+
* @property {?Option} onModifyGetCoordsElement Option `onModifyGetCoordsElement`.
|
66
|
+
* @property {?Option} onModifyGetCoords Option `onModifyGetCoords`.
|
69
67
|
* @property {?Option} onModifyRowHeaderWidth Option `onModifyRowHeaderWidth`.
|
70
68
|
* @property {?Option} onBeforeViewportScrollHorizontally Option `onBeforeViewportScrollHorizontally`.
|
71
69
|
* @property {?Option} onBeforeViewportScrollVertically Option `onBeforeViewportScrollVertically`.
|
@@ -76,6 +74,8 @@ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e =
|
|
76
74
|
* @property {?Option} selections Option `selections`.
|
77
75
|
* @property {?Option} viewportColumnCalculatorOverride Option `viewportColumnCalculatorOverride`.
|
78
76
|
* @property {?Option} viewportRowCalculatorOverride Option `viewportRowCalculatorOverride`.
|
77
|
+
* @property {?Option} viewportColumnRenderingThreshold Option `viewportColumnRenderingThreshold`.
|
78
|
+
* @property {?Option} viewportRowRenderingThreshold Option `viewportRowRenderingThreshold`.
|
79
79
|
*/
|
80
80
|
|
81
81
|
/**
|
@@ -133,8 +133,6 @@ class Settings {
|
|
133
133
|
isDataViewInstance: true,
|
134
134
|
// presentation mode
|
135
135
|
externalRowCalculator: false,
|
136
|
-
stretchH: 'none',
|
137
|
-
// values: all, last, none
|
138
136
|
currentRowClassName: null,
|
139
137
|
currentColumnClassName: null,
|
140
138
|
preventOverflow() {
|
@@ -143,7 +141,6 @@ class Settings {
|
|
143
141
|
preventWheel: false,
|
144
142
|
// data source
|
145
143
|
data: undefined,
|
146
|
-
freezeOverlays: false,
|
147
144
|
// Number of renderable columns for the left overlay.
|
148
145
|
fixedColumnsStart: 0,
|
149
146
|
// Number of renderable rows for the top overlay.
|
@@ -187,12 +184,13 @@ class Settings {
|
|
187
184
|
rowHeightByOverlayName() {
|
188
185
|
// return undefined means use default size for the rendered cell content
|
189
186
|
},
|
190
|
-
defaultRowHeight: 23,
|
191
187
|
defaultColumnWidth: 50,
|
192
188
|
selections: null,
|
193
189
|
hideBorderOnMouseDownOver: false,
|
194
190
|
viewportRowCalculatorOverride: null,
|
195
191
|
viewportColumnCalculatorOverride: null,
|
192
|
+
viewportRowRenderingThreshold: null,
|
193
|
+
viewportColumnRenderingThreshold: null,
|
196
194
|
// callbacks
|
197
195
|
onCellMouseDown: null,
|
198
196
|
onCellContextMenu: null,
|
@@ -217,9 +215,10 @@ class Settings {
|
|
217
215
|
//
|
218
216
|
onBeforeTouchScroll: null,
|
219
217
|
onAfterMomentumScroll: null,
|
220
|
-
onBeforeStretchingColumnWidth: width => width,
|
221
218
|
onModifyRowHeaderWidth: null,
|
222
219
|
onModifyGetCellCoords: null,
|
220
|
+
onModifyGetCoordsElement: null,
|
221
|
+
onModifyGetCoords: null,
|
223
222
|
onBeforeHighlightingRowHeader: sourceRow => sourceRow,
|
224
223
|
onBeforeHighlightingColumnHeader: sourceCol => sourceCol,
|
225
224
|
onWindowResize: null,
|