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,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,
|