lsp-grid 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +34 -0
- package/dist/cjs/app-globals-Bfsg1bDt.js +16 -0
- package/dist/cjs/app-globals-Bfsg1bDt.js.map +1 -0
- package/dist/cjs/cell-renderer-DtuYp7tj.js +106 -0
- package/dist/cjs/cell-renderer-DtuYp7tj.js.map +1 -0
- package/dist/cjs/column.drag.plugin-BIptTmfz.js +2554 -0
- package/dist/cjs/column.drag.plugin-BIptTmfz.js.map +1 -0
- package/dist/cjs/column.service-BnVSAfcu.js +1391 -0
- package/dist/cjs/column.service-BnVSAfcu.js.map +1 -0
- package/dist/cjs/data.store-CrF4Nf9q.js +3615 -0
- package/dist/cjs/data.store-CrF4Nf9q.js.map +1 -0
- package/dist/cjs/debounce-DgeyTQM0.js +498 -0
- package/dist/cjs/debounce-DgeyTQM0.js.map +1 -0
- package/dist/cjs/edit.utils-Bw-E3Fj6.js +118 -0
- package/dist/cjs/edit.utils-Bw-E3Fj6.js.map +1 -0
- package/dist/cjs/events-D0Syn6ut.js +46 -0
- package/dist/cjs/events-D0Syn6ut.js.map +1 -0
- package/dist/cjs/filter.button-CaAAXq-6.js +49 -0
- package/dist/cjs/filter.button-CaAAXq-6.js.map +1 -0
- package/dist/cjs/header-cell-renderer-DhRJqZ-w.js +356 -0
- package/dist/cjs/header-cell-renderer-DhRJqZ-w.js.map +1 -0
- package/dist/cjs/index-VM40U6Gh.js +2549 -0
- package/dist/cjs/index-VM40U6Gh.js.map +1 -0
- package/dist/cjs/index.cjs.js +346 -0
- package/dist/cjs/index.cjs.js.map +1 -0
- package/dist/cjs/loader.cjs.js +19 -0
- package/dist/cjs/loader.cjs.js.map +1 -0
- package/dist/cjs/revo-grid.cjs.entry.js +2187 -0
- package/dist/cjs/revo-grid.cjs.entry.js.map +1 -0
- package/dist/cjs/revo-grid.cjs.js +31 -0
- package/dist/cjs/revo-grid.cjs.js.map +1 -0
- package/dist/cjs/revo-grid.entry.cjs.js.map +1 -0
- package/dist/cjs/revogr-attribution.revogr-extra.revogr-focus.revogr-overlay-selection.revogr-row-headers.revogr-scroll-virtual.revogr-temp-range.entry.cjs.js.map +1 -0
- package/dist/cjs/revogr-attribution_7.cjs.entry.js +1463 -0
- package/dist/cjs/revogr-attribution_7.cjs.entry.js.map +1 -0
- package/dist/cjs/revogr-clipboard.revogr-edit.revogr-order-editor.entry.cjs.js.map +1 -0
- package/dist/cjs/revogr-clipboard_3.cjs.entry.js +456 -0
- package/dist/cjs/revogr-clipboard_3.cjs.entry.js.map +1 -0
- package/dist/cjs/revogr-data.revogr-header.revogr-viewport-scroll.vnode-html.entry.cjs.js.map +1 -0
- package/dist/cjs/revogr-data_4.cjs.entry.js +948 -0
- package/dist/cjs/revogr-data_4.cjs.entry.js.map +1 -0
- package/dist/cjs/revogr-filter-panel.cjs.entry.js +382 -0
- package/dist/cjs/revogr-filter-panel.cjs.entry.js.map +1 -0
- package/dist/cjs/revogr-filter-panel.entry.cjs.js.map +1 -0
- package/dist/cjs/row-header-utils-DL640c7x.js +420 -0
- package/dist/cjs/row-header-utils-DL640c7x.js.map +1 -0
- package/dist/cjs/text-editor-DWChyeVV.js +81 -0
- package/dist/cjs/text-editor-DWChyeVV.js.map +1 -0
- package/dist/cjs/throttle-Bb1Bbfd1.js +278 -0
- package/dist/cjs/throttle-Bb1Bbfd1.js.map +1 -0
- package/dist/cjs/viewport.helpers-CI6uB8tu.js +59 -0
- package/dist/cjs/viewport.helpers-CI6uB8tu.js.map +1 -0
- package/dist/collection/collection-manifest.json +28 -0
- package/dist/collection/components/attribution/revogr-attribution.js +20 -0
- package/dist/collection/components/attribution/revogr-attribution.js.map +1 -0
- package/dist/collection/components/clipboard/revogr-clipboard.js +396 -0
- package/dist/collection/components/clipboard/revogr-clipboard.js.map +1 -0
- package/dist/collection/components/data/cell-renderer.js +44 -0
- package/dist/collection/components/data/cell-renderer.js.map +1 -0
- package/dist/collection/components/data/column.service.js +293 -0
- package/dist/collection/components/data/column.service.js.map +1 -0
- package/dist/collection/components/data/revogr-data-style.css +75 -0
- package/dist/collection/components/data/revogr-data.js +697 -0
- package/dist/collection/components/data/revogr-data.js.map +1 -0
- package/dist/collection/components/data/row-highlight.plugin.js +51 -0
- package/dist/collection/components/data/row-highlight.plugin.js.map +1 -0
- package/dist/collection/components/data/row-renderer.js +16 -0
- package/dist/collection/components/data/row-renderer.js.map +1 -0
- package/dist/collection/components/editors/edit.utils.js +13 -0
- package/dist/collection/components/editors/edit.utils.js.map +1 -0
- package/dist/collection/components/editors/revogr-edit-style.css +16 -0
- package/dist/collection/components/editors/revogr-edit.js +346 -0
- package/dist/collection/components/editors/revogr-edit.js.map +1 -0
- package/dist/collection/components/editors/text-editor.js +74 -0
- package/dist/collection/components/editors/text-editor.js.map +1 -0
- package/dist/collection/components/extra/revogr-extra.js +125 -0
- package/dist/collection/components/extra/revogr-extra.js.map +1 -0
- package/dist/collection/components/header/header-cell-renderer.js +34 -0
- package/dist/collection/components/header/header-cell-renderer.js.map +1 -0
- package/dist/collection/components/header/header-group-renderer.js +25 -0
- package/dist/collection/components/header/header-group-renderer.js.map +1 -0
- package/dist/collection/components/header/header-renderer.js +61 -0
- package/dist/collection/components/header/header-renderer.js.map +1 -0
- package/dist/collection/components/header/resizable.directive.js +237 -0
- package/dist/collection/components/header/resizable.directive.js.map +1 -0
- package/dist/collection/components/header/resizable.element.js +38 -0
- package/dist/collection/components/header/resizable.element.js.map +1 -0
- package/dist/collection/components/header/revogr-header-style.css +144 -0
- package/dist/collection/components/header/revogr-header.js +573 -0
- package/dist/collection/components/header/revogr-header.js.map +1 -0
- package/dist/collection/components/order/order-renderer.js +50 -0
- package/dist/collection/components/order/order-renderer.js.map +1 -0
- package/dist/collection/components/order/order-row.service.js +72 -0
- package/dist/collection/components/order/order-row.service.js.map +1 -0
- package/dist/collection/components/order/revogr-order-editor.js +461 -0
- package/dist/collection/components/order/revogr-order-editor.js.map +1 -0
- package/dist/collection/components/overlay/autofill.service.js +224 -0
- package/dist/collection/components/overlay/autofill.service.js.map +1 -0
- package/dist/collection/components/overlay/keyboard.service.js +158 -0
- package/dist/collection/components/overlay/keyboard.service.js.map +1 -0
- package/dist/collection/components/overlay/revogr-overlay-selection.js +1515 -0
- package/dist/collection/components/overlay/revogr-overlay-selection.js.map +1 -0
- package/dist/collection/components/overlay/revogr-overlay-style.css +95 -0
- package/dist/collection/components/overlay/selection.utils.js +136 -0
- package/dist/collection/components/overlay/selection.utils.js.map +1 -0
- package/dist/collection/components/revoGrid/grid.helpers.js +33 -0
- package/dist/collection/components/revoGrid/grid.helpers.js.map +1 -0
- package/dist/collection/components/revoGrid/plugin.service.js +81 -0
- package/dist/collection/components/revoGrid/plugin.service.js.map +1 -0
- package/dist/collection/components/revoGrid/revo-grid-style.css +567 -0
- package/dist/collection/components/revoGrid/revo-grid.js +3671 -0
- package/dist/collection/components/revoGrid/revo-grid.js.map +1 -0
- package/dist/collection/components/revoGrid/viewport.helpers.js +49 -0
- package/dist/collection/components/revoGrid/viewport.helpers.js.map +1 -0
- package/dist/collection/components/revoGrid/viewport.resize.service.js +55 -0
- package/dist/collection/components/revoGrid/viewport.resize.service.js.map +1 -0
- package/dist/collection/components/revoGrid/viewport.scrolling.service.js +90 -0
- package/dist/collection/components/revoGrid/viewport.scrolling.service.js.map +1 -0
- package/dist/collection/components/revoGrid/viewport.service.js +237 -0
- package/dist/collection/components/revoGrid/viewport.service.js.map +1 -0
- package/dist/collection/components/rowHeaders/revogr-row-headers.js +291 -0
- package/dist/collection/components/rowHeaders/revogr-row-headers.js.map +1 -0
- package/dist/collection/components/rowHeaders/row-header-render.js +5 -0
- package/dist/collection/components/rowHeaders/row-header-render.js.map +1 -0
- package/dist/collection/components/scroll/revogr-viewport-scroll-style.css +69 -0
- package/dist/collection/components/scroll/revogr-viewport-scroll.js +601 -0
- package/dist/collection/components/scroll/revogr-viewport-scroll.js.map +1 -0
- package/dist/collection/components/scrollable/autohide-scroll.plugin.js +44 -0
- package/dist/collection/components/scrollable/autohide-scroll.plugin.js.map +1 -0
- package/dist/collection/components/scrollable/revogr-scroll-style.css +34 -0
- package/dist/collection/components/scrollable/revogr-scroll-virtual.js +295 -0
- package/dist/collection/components/scrollable/revogr-scroll-virtual.js.map +1 -0
- package/dist/collection/components/selectionFocus/revogr-focus-style.css +7 -0
- package/dist/collection/components/selectionFocus/revogr-focus.js +400 -0
- package/dist/collection/components/selectionFocus/revogr-focus.js.map +1 -0
- package/dist/collection/components/selectionTempRange/revogr-temp-range-style.css +28 -0
- package/dist/collection/components/selectionTempRange/revogr-temp-range.js +171 -0
- package/dist/collection/components/selectionTempRange/revogr-temp-range.js.map +1 -0
- package/dist/collection/components/vnode/vnode-converter.js +84 -0
- package/dist/collection/components/vnode/vnode-converter.js.map +1 -0
- package/dist/collection/components/vnode/vnode.utils.js +18 -0
- package/dist/collection/components/vnode/vnode.utils.js.map +1 -0
- package/dist/collection/global/global.js +19 -0
- package/dist/collection/global/global.js.map +1 -0
- package/dist/collection/index.js +13 -0
- package/dist/collection/index.js.map +1 -0
- package/dist/collection/plugins/add-rows-on-paste.plugin.js +40 -0
- package/dist/collection/plugins/add-rows-on-paste.plugin.js.map +1 -0
- package/dist/collection/plugins/base.plugin.js +90 -0
- package/dist/collection/plugins/base.plugin.js.map +1 -0
- package/dist/collection/plugins/column.auto-size.plugin.js +225 -0
- package/dist/collection/plugins/column.auto-size.plugin.js.map +1 -0
- package/dist/collection/plugins/column.stretch.plugin.js +96 -0
- package/dist/collection/plugins/column.stretch.plugin.js.map +1 -0
- package/dist/collection/plugins/dispatcher.js +40 -0
- package/dist/collection/plugins/dispatcher.js.map +1 -0
- package/dist/collection/plugins/export/csv.js +72 -0
- package/dist/collection/plugins/export/csv.js.map +1 -0
- package/dist/collection/plugins/export/export.plugin.js +157 -0
- package/dist/collection/plugins/export/export.plugin.js.map +1 -0
- package/dist/collection/plugins/export/types.js +2 -0
- package/dist/collection/plugins/export/types.js.map +1 -0
- package/dist/collection/plugins/filter/conditions/equal.js +21 -0
- package/dist/collection/plugins/filter/conditions/equal.js.map +1 -0
- package/dist/collection/plugins/filter/conditions/number/greaterThan.js +14 -0
- package/dist/collection/plugins/filter/conditions/number/greaterThan.js.map +1 -0
- package/dist/collection/plugins/filter/conditions/number/greaterThanOrEqual.js +11 -0
- package/dist/collection/plugins/filter/conditions/number/greaterThanOrEqual.js.map +1 -0
- package/dist/collection/plugins/filter/conditions/number/lessThan.js +16 -0
- package/dist/collection/plugins/filter/conditions/number/lessThan.js.map +1 -0
- package/dist/collection/plugins/filter/conditions/number/lessThanOrEqual.js +11 -0
- package/dist/collection/plugins/filter/conditions/number/lessThanOrEqual.js.map +1 -0
- package/dist/collection/plugins/filter/conditions/set.js +7 -0
- package/dist/collection/plugins/filter/conditions/set.js.map +1 -0
- package/dist/collection/plugins/filter/conditions/string/beginswith.js +21 -0
- package/dist/collection/plugins/filter/conditions/string/beginswith.js.map +1 -0
- package/dist/collection/plugins/filter/conditions/string/contains.js +25 -0
- package/dist/collection/plugins/filter/conditions/string/contains.js.map +1 -0
- package/dist/collection/plugins/filter/filter.button.js +28 -0
- package/dist/collection/plugins/filter/filter.button.js.map +1 -0
- package/dist/collection/plugins/filter/filter.indexed.js +49 -0
- package/dist/collection/plugins/filter/filter.indexed.js.map +1 -0
- package/dist/collection/plugins/filter/filter.panel.js +610 -0
- package/dist/collection/plugins/filter/filter.panel.js.map +1 -0
- package/dist/collection/plugins/filter/filter.plugin.js +388 -0
- package/dist/collection/plugins/filter/filter.plugin.js.map +1 -0
- package/dist/collection/plugins/filter/filter.style.css +165 -0
- package/dist/collection/plugins/filter/filter.types.js +9 -0
- package/dist/collection/plugins/filter/filter.types.js.map +1 -0
- package/dist/collection/plugins/groupingRow/grouping.const.js +16 -0
- package/dist/collection/plugins/groupingRow/grouping.const.js.map +1 -0
- package/dist/collection/plugins/groupingRow/grouping.row.expand.service.js +79 -0
- package/dist/collection/plugins/groupingRow/grouping.row.expand.service.js.map +1 -0
- package/dist/collection/plugins/groupingRow/grouping.row.plugin.js +245 -0
- package/dist/collection/plugins/groupingRow/grouping.row.plugin.js.map +1 -0
- package/dist/collection/plugins/groupingRow/grouping.row.renderer.js +38 -0
- package/dist/collection/plugins/groupingRow/grouping.row.renderer.js.map +1 -0
- package/dist/collection/plugins/groupingRow/grouping.row.types.js +2 -0
- package/dist/collection/plugins/groupingRow/grouping.row.types.js.map +1 -0
- package/dist/collection/plugins/groupingRow/grouping.service.js +178 -0
- package/dist/collection/plugins/groupingRow/grouping.service.js.map +1 -0
- package/dist/collection/plugins/groupingRow/grouping.trimmed.service.js +61 -0
- package/dist/collection/plugins/groupingRow/grouping.trimmed.service.js.map +1 -0
- package/dist/collection/plugins/index.js +15 -0
- package/dist/collection/plugins/index.js.map +1 -0
- package/dist/collection/plugins/moveColumn/column.drag.plugin.js +175 -0
- package/dist/collection/plugins/moveColumn/column.drag.plugin.js.map +1 -0
- package/dist/collection/plugins/moveColumn/order-column.handler.js +71 -0
- package/dist/collection/plugins/moveColumn/order-column.handler.js.map +1 -0
- package/dist/collection/plugins/rtl/rtl.plugin.js +110 -0
- package/dist/collection/plugins/rtl/rtl.plugin.js.map +1 -0
- package/dist/collection/plugins/sorting/sorting.func.js +82 -0
- package/dist/collection/plugins/sorting/sorting.func.js.map +1 -0
- package/dist/collection/plugins/sorting/sorting.plugin.js +224 -0
- package/dist/collection/plugins/sorting/sorting.plugin.js.map +1 -0
- package/dist/collection/plugins/sorting/sorting.sign.js +9 -0
- package/dist/collection/plugins/sorting/sorting.sign.js.map +1 -0
- package/dist/collection/plugins/sorting/sorting.types.js +2 -0
- package/dist/collection/plugins/sorting/sorting.types.js.map +1 -0
- package/dist/collection/plugins/wcag/index.js +84 -0
- package/dist/collection/plugins/wcag/index.js.map +1 -0
- package/dist/collection/serve/controller.js +344 -0
- package/dist/collection/serve/data.js +201 -0
- package/dist/collection/services/cell.helpers.js +12 -0
- package/dist/collection/services/cell.helpers.js.map +1 -0
- package/dist/collection/services/column.data.provider.js +119 -0
- package/dist/collection/services/column.data.provider.js.map +1 -0
- package/dist/collection/services/data.provider.js +89 -0
- package/dist/collection/services/data.provider.js.map +1 -0
- package/dist/collection/services/dimension.provider.js +176 -0
- package/dist/collection/services/dimension.provider.js.map +1 -0
- package/dist/collection/services/local.scroll.service.js +124 -0
- package/dist/collection/services/local.scroll.service.js.map +1 -0
- package/dist/collection/services/local.scroll.timer.js +81 -0
- package/dist/collection/services/local.scroll.timer.js.map +1 -0
- package/dist/collection/services/selection.store.connector.js +307 -0
- package/dist/collection/services/selection.store.connector.js.map +1 -0
- package/dist/collection/services/viewport.provider.js +17 -0
- package/dist/collection/services/viewport.provider.js.map +1 -0
- package/dist/collection/store/dataSource/data.proxy.js +45 -0
- package/dist/collection/store/dataSource/data.proxy.js.map +1 -0
- package/dist/collection/store/dataSource/data.store.js +144 -0
- package/dist/collection/store/dataSource/data.store.js.map +1 -0
- package/dist/collection/store/dataSource/index.js +7 -0
- package/dist/collection/store/dataSource/index.js.map +1 -0
- package/dist/collection/store/dataSource/trimmed.plugin.js +34 -0
- package/dist/collection/store/dataSource/trimmed.plugin.js.map +1 -0
- package/dist/collection/store/dimension/dimension.helpers.js +101 -0
- package/dist/collection/store/dimension/dimension.helpers.js.map +1 -0
- package/dist/collection/store/dimension/dimension.recalculate.plugin.js +35 -0
- package/dist/collection/store/dimension/dimension.recalculate.plugin.js.map +1 -0
- package/dist/collection/store/dimension/dimension.store.js +109 -0
- package/dist/collection/store/dimension/dimension.store.js.map +1 -0
- package/dist/collection/store/dimension/dimension.trim.plugin.js +61 -0
- package/dist/collection/store/dimension/dimension.trim.plugin.js.map +1 -0
- package/dist/collection/store/dimension/index.js +6 -0
- package/dist/collection/store/dimension/index.js.map +1 -0
- package/dist/collection/store/index.js +17 -0
- package/dist/collection/store/index.js.map +1 -0
- package/dist/collection/store/selection/index.js +6 -0
- package/dist/collection/store/selection/index.js.map +1 -0
- package/dist/collection/store/selection/selection.helpers.js +53 -0
- package/dist/collection/store/selection/selection.helpers.js.map +1 -0
- package/dist/collection/store/selection/selection.store.js +85 -0
- package/dist/collection/store/selection/selection.store.js.map +1 -0
- package/dist/collection/store/vp/index.js +6 -0
- package/dist/collection/store/vp/index.js.map +1 -0
- package/dist/collection/store/vp/viewport.helpers.js +251 -0
- package/dist/collection/store/vp/viewport.helpers.js.map +1 -0
- package/dist/collection/store/vp/viewport.store.js +151 -0
- package/dist/collection/store/vp/viewport.store.js.map +1 -0
- package/dist/collection/themeManager/theme.compact.js +9 -0
- package/dist/collection/themeManager/theme.compact.js.map +1 -0
- package/dist/collection/themeManager/theme.default.js +9 -0
- package/dist/collection/themeManager/theme.default.js.map +1 -0
- package/dist/collection/themeManager/theme.material.js +9 -0
- package/dist/collection/themeManager/theme.material.js.map +1 -0
- package/dist/collection/themeManager/theme.service.js +53 -0
- package/dist/collection/themeManager/theme.service.js.map +1 -0
- package/dist/collection/types/dimension.js +2 -0
- package/dist/collection/types/dimension.js.map +1 -0
- package/dist/collection/types/events.js +118 -0
- package/dist/collection/types/events.js.map +1 -0
- package/dist/collection/types/index.js +12 -0
- package/dist/collection/types/index.js.map +1 -0
- package/dist/collection/types/interfaces.js +2 -0
- package/dist/collection/types/interfaces.js.map +1 -0
- package/dist/collection/types/plugin.js +2 -0
- package/dist/collection/types/plugin.js.map +1 -0
- package/dist/collection/types/plugin.types.js +2 -0
- package/dist/collection/types/plugin.types.js.map +1 -0
- package/dist/collection/types/selection.js +2 -0
- package/dist/collection/types/selection.js.map +1 -0
- package/dist/collection/types/theme.js +2 -0
- package/dist/collection/types/theme.js.map +1 -0
- package/dist/collection/types/viewport.interfaces.js +2 -0
- package/dist/collection/types/viewport.interfaces.js.map +1 -0
- package/dist/collection/utils/browser.js +7 -0
- package/dist/collection/utils/browser.js.map +1 -0
- package/dist/collection/utils/closest.polifill.js +22 -0
- package/dist/collection/utils/closest.polifill.js.map +1 -0
- package/dist/collection/utils/column.utils.js +153 -0
- package/dist/collection/utils/column.utils.js.map +1 -0
- package/dist/collection/utils/consts.js +26 -0
- package/dist/collection/utils/consts.js.map +1 -0
- package/dist/collection/utils/events.js +39 -0
- package/dist/collection/utils/events.js.map +1 -0
- package/dist/collection/utils/header.utils.js +24 -0
- package/dist/collection/utils/header.utils.js.map +1 -0
- package/dist/collection/utils/index.js +140 -0
- package/dist/collection/utils/index.js.map +1 -0
- package/dist/collection/utils/key.codes.js +80 -0
- package/dist/collection/utils/key.codes.js.map +1 -0
- package/dist/collection/utils/key.utils.js +90 -0
- package/dist/collection/utils/key.utils.js.map +1 -0
- package/dist/collection/utils/mobile.js +7 -0
- package/dist/collection/utils/mobile.js.map +1 -0
- package/dist/collection/utils/platform.js +9 -0
- package/dist/collection/utils/platform.js.map +1 -0
- package/dist/collection/utils/row-header-utils.js +9 -0
- package/dist/collection/utils/row-header-utils.js.map +1 -0
- package/dist/collection/utils/store.types.js +2 -0
- package/dist/collection/utils/store.types.js.map +1 -0
- package/dist/collection/utils/store.utils.js +15 -0
- package/dist/collection/utils/store.utils.js.map +1 -0
- package/dist/esm/app-globals-FBz64o-g.js +14 -0
- package/dist/esm/app-globals-FBz64o-g.js.map +1 -0
- package/dist/esm/cell-renderer-Ca_PCGjJ.js +98 -0
- package/dist/esm/cell-renderer-Ca_PCGjJ.js.map +1 -0
- package/dist/esm/column.drag.plugin-BtuUyB-2.js +2528 -0
- package/dist/esm/column.drag.plugin-BtuUyB-2.js.map +1 -0
- package/dist/esm/column.service-CTqFIQUy.js +1343 -0
- package/dist/esm/column.service-CTqFIQUy.js.map +1 -0
- package/dist/esm/data.store-B-lvmoFH.js +3553 -0
- package/dist/esm/data.store-B-lvmoFH.js.map +1 -0
- package/dist/esm/debounce-DTUQ1fY7.js +488 -0
- package/dist/esm/debounce-DTUQ1fY7.js.map +1 -0
- package/dist/esm/edit.utils-CyCANCLB.js +103 -0
- package/dist/esm/edit.utils-CyCANCLB.js.map +1 -0
- package/dist/esm/events-CKtYJJSv.js +43 -0
- package/dist/esm/events-CKtYJJSv.js.map +1 -0
- package/dist/esm/filter.button-CjABZQgg.js +39 -0
- package/dist/esm/filter.button-CjABZQgg.js.map +1 -0
- package/dist/esm/header-cell-renderer-DnjpJuXq.js +351 -0
- package/dist/esm/header-cell-renderer-DnjpJuXq.js.map +1 -0
- package/dist/esm/index-BAoInZ4V.js +2519 -0
- package/dist/esm/index-BAoInZ4V.js.map +1 -0
- package/dist/esm/index.js +181 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/loader.js +17 -0
- package/dist/esm/loader.js.map +1 -0
- package/dist/esm/revo-grid.entry.js +2185 -0
- package/dist/esm/revo-grid.entry.js.map +1 -0
- package/dist/esm/revo-grid.js +27 -0
- package/dist/esm/revo-grid.js.map +1 -0
- package/dist/esm/revogr-attribution.revogr-extra.revogr-focus.revogr-overlay-selection.revogr-row-headers.revogr-scroll-virtual.revogr-temp-range.entry.js.map +1 -0
- package/dist/esm/revogr-attribution_7.entry.js +1455 -0
- package/dist/esm/revogr-attribution_7.entry.js.map +1 -0
- package/dist/esm/revogr-clipboard.revogr-edit.revogr-order-editor.entry.js.map +1 -0
- package/dist/esm/revogr-clipboard_3.entry.js +452 -0
- package/dist/esm/revogr-clipboard_3.entry.js.map +1 -0
- package/dist/esm/revogr-data.revogr-header.revogr-viewport-scroll.vnode-html.entry.js.map +1 -0
- package/dist/esm/revogr-data_4.entry.js +943 -0
- package/dist/esm/revogr-data_4.entry.js.map +1 -0
- package/dist/esm/revogr-filter-panel.entry.js +380 -0
- package/dist/esm/revogr-filter-panel.entry.js.map +1 -0
- package/dist/esm/row-header-utils-vnoLGj5A.js +407 -0
- package/dist/esm/row-header-utils-vnoLGj5A.js.map +1 -0
- package/dist/esm/text-editor-Cp7lwBZi.js +79 -0
- package/dist/esm/text-editor-Cp7lwBZi.js.map +1 -0
- package/dist/esm/throttle-DiUrHjcY.js +273 -0
- package/dist/esm/throttle-DiUrHjcY.js.map +1 -0
- package/dist/esm/viewport.helpers-Ch4AQMMg.js +53 -0
- package/dist/esm/viewport.helpers-Ch4AQMMg.js.map +1 -0
- package/dist/index.cjs.js +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/revo-grid/app-globals-FBz64o-g.js +14 -0
- package/dist/revo-grid/app-globals-FBz64o-g.js.map +1 -0
- package/dist/revo-grid/cell-renderer-Ca_PCGjJ.js +98 -0
- package/dist/revo-grid/cell-renderer-Ca_PCGjJ.js.map +1 -0
- package/dist/revo-grid/column.drag.plugin-BtuUyB-2.js +2528 -0
- package/dist/revo-grid/column.drag.plugin-BtuUyB-2.js.map +1 -0
- package/dist/revo-grid/column.service-CTqFIQUy.js +1343 -0
- package/dist/revo-grid/column.service-CTqFIQUy.js.map +1 -0
- package/dist/revo-grid/data.store-B-lvmoFH.js +3553 -0
- package/dist/revo-grid/data.store-B-lvmoFH.js.map +1 -0
- package/dist/revo-grid/debounce-DTUQ1fY7.js +488 -0
- package/dist/revo-grid/debounce-DTUQ1fY7.js.map +1 -0
- package/dist/revo-grid/edit.utils-CyCANCLB.js +103 -0
- package/dist/revo-grid/edit.utils-CyCANCLB.js.map +1 -0
- package/dist/revo-grid/events-CKtYJJSv.js +43 -0
- package/dist/revo-grid/events-CKtYJJSv.js.map +1 -0
- package/dist/revo-grid/filter.button-CjABZQgg.js +39 -0
- package/dist/revo-grid/filter.button-CjABZQgg.js.map +1 -0
- package/dist/revo-grid/header-cell-renderer-DnjpJuXq.js +351 -0
- package/dist/revo-grid/header-cell-renderer-DnjpJuXq.js.map +1 -0
- package/dist/revo-grid/index-BAoInZ4V.js +2490 -0
- package/dist/revo-grid/index-BAoInZ4V.js.map +1 -0
- package/dist/revo-grid/index.esm.js +181 -0
- package/dist/revo-grid/index.esm.js.map +1 -0
- package/dist/revo-grid/loader.esm.js.map +1 -0
- package/dist/revo-grid/revo-grid.entry.esm.js.map +1 -0
- package/dist/revo-grid/revo-grid.entry.js +2185 -0
- package/dist/revo-grid/revo-grid.entry.js.map +1 -0
- package/dist/revo-grid/revo-grid.esm.js +27 -0
- package/dist/revo-grid/revo-grid.esm.js.map +1 -0
- package/dist/revo-grid/revogr-attribution.revogr-extra.revogr-focus.revogr-overlay-selection.revogr-row-headers.revogr-scroll-virtual.revogr-temp-range.entry.esm.js.map +1 -0
- package/dist/revo-grid/revogr-attribution_7.entry.js +1455 -0
- package/dist/revo-grid/revogr-attribution_7.entry.js.map +1 -0
- package/dist/revo-grid/revogr-clipboard.revogr-edit.revogr-order-editor.entry.esm.js.map +1 -0
- package/dist/revo-grid/revogr-clipboard_3.entry.js +452 -0
- package/dist/revo-grid/revogr-clipboard_3.entry.js.map +1 -0
- package/dist/revo-grid/revogr-data.revogr-header.revogr-viewport-scroll.vnode-html.entry.esm.js.map +1 -0
- package/dist/revo-grid/revogr-data_4.entry.js +943 -0
- package/dist/revo-grid/revogr-data_4.entry.js.map +1 -0
- package/dist/revo-grid/revogr-filter-panel.entry.esm.js.map +1 -0
- package/dist/revo-grid/revogr-filter-panel.entry.js +380 -0
- package/dist/revo-grid/revogr-filter-panel.entry.js.map +1 -0
- package/dist/revo-grid/row-header-utils-vnoLGj5A.js +407 -0
- package/dist/revo-grid/row-header-utils-vnoLGj5A.js.map +1 -0
- package/dist/revo-grid/text-editor-Cp7lwBZi.js +79 -0
- package/dist/revo-grid/text-editor-Cp7lwBZi.js.map +1 -0
- package/dist/revo-grid/throttle-DiUrHjcY.js +273 -0
- package/dist/revo-grid/throttle-DiUrHjcY.js.map +1 -0
- package/dist/revo-grid/viewport.helpers-Ch4AQMMg.js +53 -0
- package/dist/revo-grid/viewport.helpers-Ch4AQMMg.js.map +1 -0
- package/dist/types/components/attribution/revogr-attribution.d.ts +12 -0
- package/dist/types/components/clipboard/revogr-clipboard.d.ts +89 -0
- package/dist/types/components/data/cell-renderer.d.ts +12 -0
- package/dist/types/components/data/column.service.d.ts +61 -0
- package/dist/types/components/data/revogr-data.d.ts +107 -0
- package/dist/types/components/data/row-highlight.plugin.d.ts +10 -0
- package/dist/types/components/data/row-renderer.d.ts +12 -0
- package/dist/types/components/editors/edit.utils.d.ts +3 -0
- package/dist/types/components/editors/revogr-edit.d.ts +63 -0
- package/dist/types/components/editors/text-editor.d.ts +43 -0
- package/dist/types/components/extra/revogr-extra.d.ts +38 -0
- package/dist/types/components/header/header-cell-renderer.d.ts +9 -0
- package/dist/types/components/header/header-group-renderer.d.ts +15 -0
- package/dist/types/components/header/header-renderer.d.ts +16 -0
- package/dist/types/components/header/resizable.directive.d.ts +55 -0
- package/dist/types/components/header/resizable.element.d.ts +5 -0
- package/dist/types/components/header/revogr-header.d.ts +90 -0
- package/dist/types/components/order/order-renderer.d.ts +29 -0
- package/dist/types/components/order/order-row.service.d.ts +27 -0
- package/dist/types/components/order/revogr-order-editor.d.ts +56 -0
- package/dist/types/components/overlay/autofill.service.d.ts +80 -0
- package/dist/types/components/overlay/keyboard.service.d.ts +28 -0
- package/dist/types/components/overlay/revogr-overlay-selection.d.ts +278 -0
- package/dist/types/components/overlay/selection.utils.d.ts +47 -0
- package/dist/types/components/revoGrid/grid.helpers.d.ts +17 -0
- package/dist/types/components/revoGrid/plugin.service.d.ts +37 -0
- package/dist/types/components/revoGrid/revo-grid.d.ts +686 -0
- package/dist/types/components/revoGrid/viewport.helpers.d.ts +39 -0
- package/dist/types/components/revoGrid/viewport.resize.service.d.ts +17 -0
- package/dist/types/components/revoGrid/viewport.scrolling.service.d.ts +20 -0
- package/dist/types/components/revoGrid/viewport.service.d.ts +59 -0
- package/dist/types/components/rowHeaders/revogr-row-headers.d.ts +51 -0
- package/dist/types/components/rowHeaders/row-header-render.d.ts +9 -0
- package/dist/types/components/scroll/revogr-viewport-scroll.d.ts +117 -0
- package/dist/types/components/scrollable/autohide-scroll.plugin.d.ts +22 -0
- package/dist/types/components/scrollable/revogr-scroll-virtual.d.ts +43 -0
- package/dist/types/components/selectionFocus/revogr-focus.d.ts +58 -0
- package/dist/types/components/selectionTempRange/revogr-temp-range.d.ts +28 -0
- package/dist/types/components/vnode/vnode-converter.d.ts +19 -0
- package/dist/types/components/vnode/vnode.utils.d.ts +9 -0
- package/dist/types/components.d.ts +2583 -0
- package/dist/types/global/global.d.ts +1 -0
- package/dist/types/index.d.ts +9 -0
- package/dist/types/plugins/add-rows-on-paste.plugin.d.ts +14 -0
- package/dist/types/plugins/base.plugin.d.ts +51 -0
- package/dist/types/plugins/column.auto-size.plugin.d.ts +55 -0
- package/dist/types/plugins/column.stretch.plugin.d.ts +20 -0
- package/dist/types/plugins/dispatcher.d.ts +20 -0
- package/dist/types/plugins/export/csv.d.ts +9 -0
- package/dist/types/plugins/export/export.plugin.d.ts +24 -0
- package/dist/types/plugins/export/types.d.ts +23 -0
- package/dist/types/plugins/filter/conditions/equal.d.ts +4 -0
- package/dist/types/plugins/filter/conditions/number/greaterThan.d.ts +3 -0
- package/dist/types/plugins/filter/conditions/number/greaterThanOrEqual.d.ts +3 -0
- package/dist/types/plugins/filter/conditions/number/lessThan.d.ts +3 -0
- package/dist/types/plugins/filter/conditions/number/lessThanOrEqual.d.ts +3 -0
- package/dist/types/plugins/filter/conditions/set.d.ts +4 -0
- package/dist/types/plugins/filter/conditions/string/beginswith.d.ts +3 -0
- package/dist/types/plugins/filter/conditions/string/contains.d.ts +4 -0
- package/dist/types/plugins/filter/filter.button.d.ts +14 -0
- package/dist/types/plugins/filter/filter.indexed.d.ts +20 -0
- package/dist/types/plugins/filter/filter.panel.d.ts +53 -0
- package/dist/types/plugins/filter/filter.plugin.d.ts +73 -0
- package/dist/types/plugins/filter/filter.types.d.ts +129 -0
- package/dist/types/plugins/groupingRow/grouping.const.d.ts +12 -0
- package/dist/types/plugins/groupingRow/grouping.row.expand.service.d.ts +15 -0
- package/dist/types/plugins/groupingRow/grouping.row.plugin.d.ts +39 -0
- package/dist/types/plugins/groupingRow/grouping.row.renderer.d.ts +6 -0
- package/dist/types/plugins/groupingRow/grouping.row.types.d.ts +103 -0
- package/dist/types/plugins/groupingRow/grouping.service.d.ts +36 -0
- package/dist/types/plugins/groupingRow/grouping.trimmed.service.d.ts +10 -0
- package/dist/types/plugins/index.d.ts +11 -0
- package/dist/types/plugins/moveColumn/column.drag.plugin.d.ts +42 -0
- package/dist/types/plugins/moveColumn/order-column.handler.d.ts +16 -0
- package/dist/types/plugins/rtl/rtl.plugin.d.ts +37 -0
- package/dist/types/plugins/sorting/sorting.func.d.ts +9 -0
- package/dist/types/plugins/sorting/sorting.plugin.d.ts +48 -0
- package/dist/types/plugins/sorting/sorting.sign.d.ts +6 -0
- package/dist/types/plugins/sorting/sorting.types.d.ts +14 -0
- package/dist/types/plugins/wcag/index.d.ts +26 -0
- package/dist/types/services/cell.helpers.d.ts +2 -0
- package/dist/types/services/column.data.provider.d.ts +27 -0
- package/dist/types/services/data.provider.d.ts +36 -0
- package/dist/types/services/dimension.provider.d.ts +66 -0
- package/dist/types/services/local.scroll.service.d.ts +36 -0
- package/dist/types/services/local.scroll.timer.d.ts +32 -0
- package/dist/types/services/selection.store.connector.d.ts +79 -0
- package/dist/types/services/viewport.provider.d.ts +7 -0
- package/dist/types/stencil-public-runtime.d.ts +1709 -0
- package/dist/types/store/dataSource/data.proxy.d.ts +14 -0
- package/dist/types/store/dataSource/data.store.d.ts +74 -0
- package/dist/types/store/dataSource/index.d.ts +3 -0
- package/dist/types/store/dataSource/trimmed.plugin.d.ts +12 -0
- package/dist/types/store/dimension/dimension.helpers.d.ts +24 -0
- package/dist/types/store/dimension/dimension.recalculate.plugin.d.ts +9 -0
- package/dist/types/store/dimension/dimension.store.d.ts +21 -0
- package/dist/types/store/dimension/dimension.trim.plugin.d.ts +13 -0
- package/dist/types/store/dimension/index.d.ts +2 -0
- package/dist/types/store/index.d.ts +8 -0
- package/dist/types/store/selection/index.d.ts +2 -0
- package/dist/types/store/selection/selection.helpers.d.ts +6 -0
- package/dist/types/store/selection/selection.store.d.ts +22 -0
- package/dist/types/store/vp/index.d.ts +7 -0
- package/dist/types/store/vp/viewport.helpers.d.ts +54 -0
- package/dist/types/store/vp/viewport.store.d.ts +26 -0
- package/dist/types/themeManager/theme.compact.d.ts +4 -0
- package/dist/types/themeManager/theme.default.d.ts +4 -0
- package/dist/types/themeManager/theme.material.d.ts +4 -0
- package/dist/types/themeManager/theme.service.d.ts +13 -0
- package/dist/types/types/dimension.d.ts +8 -0
- package/dist/types/types/events.d.ts +2 -0
- package/dist/types/types/index.d.ts +8 -0
- package/dist/types/types/interfaces.d.ts +768 -0
- package/dist/types/types/plugin.d.ts +9 -0
- package/dist/types/types/plugin.types.d.ts +48 -0
- package/dist/types/types/selection.d.ts +178 -0
- package/dist/types/types/theme.d.ts +7 -0
- package/dist/types/types/viewport.interfaces.d.ts +45 -0
- package/dist/types/utils/browser.d.ts +1 -0
- package/dist/types/utils/closest.polifill.d.ts +0 -0
- package/dist/types/utils/column.utils.d.ts +52 -0
- package/dist/types/utils/consts.d.ts +22 -0
- package/dist/types/utils/events.d.ts +5 -0
- package/dist/types/utils/header.utils.d.ts +2 -0
- package/dist/types/utils/index.d.ts +32 -0
- package/dist/types/utils/key.codes.d.ts +73 -0
- package/dist/types/utils/key.utils.d.ts +13 -0
- package/dist/types/utils/mobile.d.ts +1 -0
- package/dist/types/utils/platform.d.ts +4 -0
- package/dist/types/utils/row-header-utils.d.ts +2 -0
- package/dist/types/utils/store.types.d.ts +97 -0
- package/dist/types/utils/store.utils.d.ts +10 -0
- package/hydrate/index.d.ts +273 -0
- package/hydrate/index.js +33890 -0
- package/hydrate/index.mjs +33882 -0
- package/hydrate/package.json +12 -0
- package/loader/cdn.js +4 -0
- package/loader/index.cjs.js +4 -0
- package/loader/index.d.ts +24 -0
- package/loader/index.es2017.js +4 -0
- package/loader/index.js +5 -0
- package/package.json +101 -0
- package/react/dist/index.d.ts +6191 -0
- package/react/dist/react-datagrid.js +260 -0
- package/react/dist/react-datagrid.umd.cjs +272 -0
- package/standalone/column.service.js +1345 -0
- package/standalone/column.service.js.map +1 -0
- package/standalone/consts.js +30 -0
- package/standalone/consts.js.map +1 -0
- package/standalone/data.store.js +3099 -0
- package/standalone/data.store.js.map +1 -0
- package/standalone/debounce.js +215 -0
- package/standalone/debounce.js.map +1 -0
- package/standalone/dimension.helpers.js +229 -0
- package/standalone/dimension.helpers.js.map +1 -0
- package/standalone/filter.button.js +39 -0
- package/standalone/filter.button.js.map +1 -0
- package/standalone/index.d.ts +68 -0
- package/standalone/index.js +217 -0
- package/standalone/index.js.map +1 -0
- package/standalone/index2.js +140 -0
- package/standalone/index2.js.map +1 -0
- package/standalone/local.scroll.timer.js +207 -0
- package/standalone/local.scroll.timer.js.map +1 -0
- package/standalone/platform.js +90 -0
- package/standalone/platform.js.map +1 -0
- package/standalone/revo-grid.d.ts +11 -0
- package/standalone/revo-grid.js +4884 -0
- package/standalone/revo-grid.js.map +1 -0
- package/standalone/revogr-attribution.d.ts +11 -0
- package/standalone/revogr-attribution.js +12 -0
- package/standalone/revogr-attribution.js.map +1 -0
- package/standalone/revogr-attribution2.js +32 -0
- package/standalone/revogr-attribution2.js.map +1 -0
- package/standalone/revogr-clipboard.d.ts +11 -0
- package/standalone/revogr-clipboard.js +12 -0
- package/standalone/revogr-clipboard.js.map +1 -0
- package/standalone/revogr-clipboard2.js +164 -0
- package/standalone/revogr-clipboard2.js.map +1 -0
- package/standalone/revogr-data.d.ts +11 -0
- package/standalone/revogr-data.js +12 -0
- package/standalone/revogr-data.js.map +1 -0
- package/standalone/revogr-data2.js +378 -0
- package/standalone/revogr-data2.js.map +1 -0
- package/standalone/revogr-edit.d.ts +11 -0
- package/standalone/revogr-edit.js +12 -0
- package/standalone/revogr-edit.js.map +1 -0
- package/standalone/revogr-edit2.js +334 -0
- package/standalone/revogr-edit2.js.map +1 -0
- package/standalone/revogr-extra.d.ts +11 -0
- package/standalone/revogr-extra.js +12 -0
- package/standalone/revogr-extra.js.map +1 -0
- package/standalone/revogr-extra2.js +73 -0
- package/standalone/revogr-extra2.js.map +1 -0
- package/standalone/revogr-filter-panel.d.ts +11 -0
- package/standalone/revogr-filter-panel.js +411 -0
- package/standalone/revogr-filter-panel.js.map +1 -0
- package/standalone/revogr-focus.d.ts +11 -0
- package/standalone/revogr-focus.js +12 -0
- package/standalone/revogr-focus.js.map +1 -0
- package/standalone/revogr-focus2.js +112 -0
- package/standalone/revogr-focus2.js.map +1 -0
- package/standalone/revogr-header.d.ts +11 -0
- package/standalone/revogr-header.js +12 -0
- package/standalone/revogr-header.js.map +1 -0
- package/standalone/revogr-header2.js +707 -0
- package/standalone/revogr-header2.js.map +1 -0
- package/standalone/revogr-order-editor.d.ts +11 -0
- package/standalone/revogr-order-editor.js +12 -0
- package/standalone/revogr-order-editor.js.map +1 -0
- package/standalone/revogr-order-editor2.js +201 -0
- package/standalone/revogr-order-editor2.js.map +1 -0
- package/standalone/revogr-overlay-selection.d.ts +11 -0
- package/standalone/revogr-overlay-selection.js +12 -0
- package/standalone/revogr-overlay-selection.js.map +1 -0
- package/standalone/revogr-overlay-selection2.js +972 -0
- package/standalone/revogr-overlay-selection2.js.map +1 -0
- package/standalone/revogr-row-headers.d.ts +11 -0
- package/standalone/revogr-row-headers.js +12 -0
- package/standalone/revogr-row-headers.js.map +1 -0
- package/standalone/revogr-row-headers2.js +520 -0
- package/standalone/revogr-row-headers2.js.map +1 -0
- package/standalone/revogr-scroll-virtual.d.ts +11 -0
- package/standalone/revogr-scroll-virtual.js +12 -0
- package/standalone/revogr-scroll-virtual.js.map +1 -0
- package/standalone/revogr-scroll-virtual2.js +184 -0
- package/standalone/revogr-scroll-virtual2.js.map +1 -0
- package/standalone/revogr-temp-range.d.ts +11 -0
- package/standalone/revogr-temp-range.js +12 -0
- package/standalone/revogr-temp-range.js.map +1 -0
- package/standalone/revogr-temp-range2.js +93 -0
- package/standalone/revogr-temp-range2.js.map +1 -0
- package/standalone/revogr-viewport-scroll.d.ts +11 -0
- package/standalone/revogr-viewport-scroll.js +12 -0
- package/standalone/revogr-viewport-scroll.js.map +1 -0
- package/standalone/revogr-viewport-scroll2.js +421 -0
- package/standalone/revogr-viewport-scroll2.js.map +1 -0
- package/standalone/selection.utils.js +179 -0
- package/standalone/selection.utils.js.map +1 -0
- package/standalone/throttle.js +75 -0
- package/standalone/throttle.js.map +1 -0
- package/standalone/toNumber.js +282 -0
- package/standalone/toNumber.js.map +1 -0
- package/standalone/vnode-converter.js +46 -0
- package/standalone/vnode-converter.js.map +1 -0
- package/standalone/vnode-html.d.ts +11 -0
- package/standalone/vnode-html.js +12 -0
- package/standalone/vnode-html.js.map +1 -0
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Built by LevelSkill.Pro
|
|
3
|
+
*/
|
|
4
|
+
import debounce from "lodash/debounce";
|
|
5
|
+
import { h } from "@stencil/core";
|
|
6
|
+
import { CELL_HANDLER_CLASS, MOBILE_CLASS } from "../../utils/consts";
|
|
7
|
+
import { collectModelsOfRange, getCell, getCurrentCell, isAfterLast, } from "./selection.utils";
|
|
8
|
+
import { getRange } from "../../store/index";
|
|
9
|
+
import { getPropertyFromEvent } from "../../utils/events";
|
|
10
|
+
export class AutoFillService {
|
|
11
|
+
constructor(sv) {
|
|
12
|
+
this.sv = sv;
|
|
13
|
+
this.autoFillType = null;
|
|
14
|
+
this.autoFillInitial = null;
|
|
15
|
+
this.autoFillStart = null;
|
|
16
|
+
this.autoFillLast = null;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Render autofill box
|
|
20
|
+
* @param range
|
|
21
|
+
* @param selectionFocus
|
|
22
|
+
*/
|
|
23
|
+
renderAutofill(range, selectionFocus, isMobile = false) {
|
|
24
|
+
let handlerStyle;
|
|
25
|
+
if (range) {
|
|
26
|
+
handlerStyle = getCell(range, this.sv.dimensionRow.state, this.sv.dimensionCol.state);
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
handlerStyle = getCell(Object.assign(Object.assign({}, selectionFocus), { x1: selectionFocus.x, y1: selectionFocus.y }), this.sv.dimensionRow.state, this.sv.dimensionCol.state);
|
|
30
|
+
}
|
|
31
|
+
return (h("div", { class: {
|
|
32
|
+
[CELL_HANDLER_CLASS]: true,
|
|
33
|
+
[MOBILE_CLASS]: isMobile,
|
|
34
|
+
}, style: {
|
|
35
|
+
left: `${handlerStyle.right}px`,
|
|
36
|
+
top: `${handlerStyle.bottom}px`,
|
|
37
|
+
}, onMouseDown: (e) => this.autoFillHandler(e), onTouchStart: (e) => this.autoFillHandler(e) }));
|
|
38
|
+
}
|
|
39
|
+
autoFillHandler(e, type = "AutoFill" /* AutoFillType.autoFill */) {
|
|
40
|
+
let target = null;
|
|
41
|
+
if (e.target instanceof Element) {
|
|
42
|
+
target = e.target;
|
|
43
|
+
}
|
|
44
|
+
if (!target) {
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
this.selectionStart(target, this.sv.getData(), type);
|
|
48
|
+
e.preventDefault();
|
|
49
|
+
}
|
|
50
|
+
get isAutoFill() {
|
|
51
|
+
return !!this.autoFillType;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Process mouse move events
|
|
55
|
+
*/
|
|
56
|
+
selectionMouseMove(e) {
|
|
57
|
+
// initiate mouse move debounce if not present
|
|
58
|
+
if (!this.onMouseMoveAutofill) {
|
|
59
|
+
this.onMouseMoveAutofill = debounce((e, data) => this.doAutofillMouseMove(e, data), 5);
|
|
60
|
+
}
|
|
61
|
+
if (this.isAutoFill) {
|
|
62
|
+
this.onMouseMoveAutofill(e, this.sv.getData());
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
getFocus(focus, range) {
|
|
66
|
+
// there was an issue that it was taking last cell from range but focus was out
|
|
67
|
+
if (!focus && range) {
|
|
68
|
+
focus = { x: range.x, y: range.y };
|
|
69
|
+
}
|
|
70
|
+
return focus || null;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Autofill logic:
|
|
74
|
+
* on mouse move apply based on previous direction (if present)
|
|
75
|
+
*/
|
|
76
|
+
doAutofillMouseMove(event, data) {
|
|
77
|
+
// if no initial - not started
|
|
78
|
+
if (!this.autoFillInitial) {
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
const x = getPropertyFromEvent(event, 'clientX', MOBILE_CLASS);
|
|
82
|
+
const y = getPropertyFromEvent(event, 'clientY', MOBILE_CLASS);
|
|
83
|
+
// skip touch
|
|
84
|
+
if (x === null || y === null) {
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
const current = getCurrentCell({ x, y }, data);
|
|
88
|
+
// first time or direction equal to start(same as first time)
|
|
89
|
+
if (!this.autoFillLast) {
|
|
90
|
+
if (!this.autoFillLast) {
|
|
91
|
+
this.autoFillLast = this.autoFillStart;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
// check if not the latest, if latest - do nothing
|
|
95
|
+
if (isAfterLast(current, data.lastCell)) {
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
this.autoFillLast = current;
|
|
99
|
+
const isSame = current.x === this.autoFillInitial.x &&
|
|
100
|
+
current.y === this.autoFillInitial.y;
|
|
101
|
+
// if same as initial - clear
|
|
102
|
+
if (isSame) {
|
|
103
|
+
this.sv.setTempRange(null);
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
const area = getRange(this.autoFillInitial, this.autoFillLast);
|
|
107
|
+
this.sv.setTempRange({
|
|
108
|
+
area,
|
|
109
|
+
type: this.autoFillType,
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Range selection started
|
|
115
|
+
* Mode @param type:
|
|
116
|
+
* Can be triggered from MouseDown selection on element
|
|
117
|
+
* Or can be triggered on corner square drag
|
|
118
|
+
*/
|
|
119
|
+
selectionStart(target, data, type = "Selection" /* AutoFillType.selection */) {
|
|
120
|
+
/** Get cell by autofill element */
|
|
121
|
+
const { top, left } = target.getBoundingClientRect();
|
|
122
|
+
this.autoFillInitial = this.getFocus(data.focus, data.range);
|
|
123
|
+
this.autoFillType = type;
|
|
124
|
+
this.autoFillStart = getCurrentCell({ x: left, y: top }, data);
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Clear current range selection on mouse up and mouse leave events
|
|
128
|
+
*/
|
|
129
|
+
clearAutoFillSelection(focus, oldRange) {
|
|
130
|
+
// If autofill was active, apply autofill values
|
|
131
|
+
if (this.autoFillInitial) {
|
|
132
|
+
// Fetch latest focus
|
|
133
|
+
this.autoFillInitial = this.getFocus(focus, oldRange);
|
|
134
|
+
// Apply range data if autofill mode is active
|
|
135
|
+
if (this.autoFillType === "AutoFill" /* AutoFillType.autoFill */) {
|
|
136
|
+
const range = getRange(this.autoFillInitial, this.autoFillLast);
|
|
137
|
+
// If range is present, apply data
|
|
138
|
+
if (range) {
|
|
139
|
+
const { defaultPrevented: stopApply, detail: { range: newRange }, } = this.sv.clearRangeDataApply({
|
|
140
|
+
range,
|
|
141
|
+
});
|
|
142
|
+
// If data apply was not prevented, apply new range
|
|
143
|
+
if (!stopApply && oldRange) {
|
|
144
|
+
this.applyRangeWithData(newRange, oldRange);
|
|
145
|
+
}
|
|
146
|
+
else {
|
|
147
|
+
// If data apply was prevented, clear temporary range
|
|
148
|
+
this.sv.setTempRange(null);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
else {
|
|
153
|
+
// If not autofill mode, apply range only
|
|
154
|
+
this.applyRangeOnly(this.autoFillInitial, this.autoFillLast);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
// Reset autofill state
|
|
158
|
+
this.resetAutoFillState();
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Reset autofill state
|
|
162
|
+
*/
|
|
163
|
+
resetAutoFillState() {
|
|
164
|
+
this.autoFillType = null;
|
|
165
|
+
this.autoFillInitial = null;
|
|
166
|
+
this.autoFillLast = null;
|
|
167
|
+
this.autoFillStart = null;
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Trigger range apply events and handle responses
|
|
171
|
+
*/
|
|
172
|
+
onRangeApply(newData, newRange, oldRange, copy = false, clear = false) {
|
|
173
|
+
this.sv.rangeDataApply({
|
|
174
|
+
data: newData,
|
|
175
|
+
models: collectModelsOfRange(newData, this.sv.dataStore),
|
|
176
|
+
type: this.sv.dataStore.get('type'),
|
|
177
|
+
oldRange,
|
|
178
|
+
newRange,
|
|
179
|
+
previousModels: null,
|
|
180
|
+
copy,
|
|
181
|
+
clearByKeyboard: clear,
|
|
182
|
+
});
|
|
183
|
+
this.sv.setRange(newRange);
|
|
184
|
+
}
|
|
185
|
+
/** Apply range and copy data during range application */
|
|
186
|
+
applyRangeWithData(newRange, rangeToCopy) {
|
|
187
|
+
const rangeData = {
|
|
188
|
+
type: this.sv.dataStore.get('type'),
|
|
189
|
+
colType: this.sv.columnService.type,
|
|
190
|
+
newData: {},
|
|
191
|
+
mapping: {},
|
|
192
|
+
newRange,
|
|
193
|
+
oldRange: rangeToCopy,
|
|
194
|
+
};
|
|
195
|
+
const { mapping, changed } = this.sv.columnService.getRangeData(rangeData, this.sv.columnService.columns);
|
|
196
|
+
rangeData.newData = changed;
|
|
197
|
+
rangeData.mapping = mapping;
|
|
198
|
+
let e = this.sv.selectionChanged(rangeData);
|
|
199
|
+
// if default prevented - clear range
|
|
200
|
+
if (e.defaultPrevented) {
|
|
201
|
+
this.sv.setTempRange(null);
|
|
202
|
+
return;
|
|
203
|
+
}
|
|
204
|
+
e = this.sv.rangeCopy(rangeData);
|
|
205
|
+
if (e.defaultPrevented) {
|
|
206
|
+
this.sv.setRange(newRange);
|
|
207
|
+
return;
|
|
208
|
+
}
|
|
209
|
+
this.onRangeApply(rangeData.newData, newRange, rangeToCopy);
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Update range selection only,
|
|
213
|
+
* no data change (mouse selection)
|
|
214
|
+
*/
|
|
215
|
+
applyRangeOnly(start, end) {
|
|
216
|
+
// no changes to apply
|
|
217
|
+
if (!start || !end) {
|
|
218
|
+
return;
|
|
219
|
+
}
|
|
220
|
+
const newRange = getRange(start, end);
|
|
221
|
+
this.sv.setRange(newRange);
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
//# sourceMappingURL=autofill.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"autofill.service.js","sourceRoot":"","sources":["../../../src/components/overlay/autofill.service.tsx"],"names":[],"mappings":"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","sourcesContent":["import debounce from 'lodash/debounce';\r\nimport { DebouncedFunc } from 'lodash';\r\n\r\nimport { h } from '@stencil/core';\r\nimport { CELL_HANDLER_CLASS, MOBILE_CLASS } from '../../utils/consts';\r\nimport {\r\n collectModelsOfRange,\r\n EventData,\r\n getCell,\r\n getCurrentCell,\r\n isAfterLast,\r\n} from './selection.utils';\r\nimport { DSourceState, getRange } from '@store';\r\nimport ColumnService from '../data/column.service';\r\nimport { getPropertyFromEvent } from '../../utils/events';\r\nimport {\r\n DataLookup,\r\n DataType,\r\n DimensionSettingsState,\r\n TempRange,\r\n ChangedRange,\r\n BeforeRangeSaveDataDetails,\r\n RangeArea,\r\n Cell,\r\n DimensionRows,\r\n Nullable,\r\n} from '@type';\r\nimport { Observable } from '../../utils';\r\n\r\ntype Config = {\r\n dimensionRow: Observable<DimensionSettingsState>;\r\n dimensionCol: Observable<DimensionSettingsState>;\r\n columnService: ColumnService;\r\n dataStore: Observable<DSourceState<DataType, DimensionRows>>;\r\n\r\n setTempRange(e: Nullable<TempRange> | null): Event | null;\r\n selectionChanged(e: ChangedRange): Event;\r\n rangeCopy(e: ChangedRange): Event;\r\n rangeDataApply(e: BeforeRangeSaveDataDetails): CustomEvent;\r\n setRange(e: RangeArea | null): boolean;\r\n clearRangeDataApply(e: { range: RangeArea }): CustomEvent<{\r\n range: RangeArea;\r\n }>;\r\n\r\n getData(): any;\r\n};\r\n\r\nconst enum AutoFillType {\r\n selection = 'Selection',\r\n autoFill = 'AutoFill',\r\n}\r\n\r\nexport class AutoFillService {\r\n private autoFillType: AutoFillType | null = null;\r\n private autoFillInitial: Cell | null = null;\r\n private autoFillStart: Cell | null = null;\r\n private autoFillLast: Cell | null = null;\r\n\r\n private onMouseMoveAutofill: DebouncedFunc<\r\n (e: MouseEvent | TouchEvent, data: EventData) => void\r\n >;\r\n\r\n constructor(private sv: Config) {}\r\n\r\n /**\r\n * Render autofill box\r\n * @param range\r\n * @param selectionFocus\r\n */\r\n renderAutofill(\r\n range: RangeArea | null,\r\n selectionFocus: Cell,\r\n isMobile = false,\r\n ) {\r\n let handlerStyle;\r\n if (range) {\r\n handlerStyle = getCell(\r\n range,\r\n this.sv.dimensionRow.state,\r\n this.sv.dimensionCol.state,\r\n );\r\n } else {\r\n handlerStyle = getCell(\r\n {\r\n ...selectionFocus,\r\n x1: selectionFocus.x,\r\n y1: selectionFocus.y,\r\n },\r\n this.sv.dimensionRow.state,\r\n this.sv.dimensionCol.state,\r\n );\r\n }\r\n return (\r\n <div\r\n class={{\r\n [CELL_HANDLER_CLASS]: true,\r\n [MOBILE_CLASS]: isMobile,\r\n }}\r\n style={{\r\n left: `${handlerStyle.right}px`,\r\n top: `${handlerStyle.bottom}px`,\r\n }}\r\n onMouseDown={(e: MouseEvent) => this.autoFillHandler(e)}\r\n onTouchStart={(e: TouchEvent) => this.autoFillHandler(e)}\r\n />\r\n );\r\n }\r\n\r\n private autoFillHandler(\r\n e: MouseEvent | TouchEvent,\r\n type = AutoFillType.autoFill,\r\n ) {\r\n let target: Element | null = null;\r\n if (e.target instanceof Element) {\r\n target = e.target;\r\n }\r\n if (!target) {\r\n return;\r\n }\r\n this.selectionStart(target, this.sv.getData(), type);\r\n e.preventDefault();\r\n }\r\n\r\n get isAutoFill() {\r\n return !!this.autoFillType;\r\n }\r\n\r\n /**\r\n * Process mouse move events\r\n */\r\n selectionMouseMove(e: MouseEvent | TouchEvent) {\r\n // initiate mouse move debounce if not present\r\n if (!this.onMouseMoveAutofill) {\r\n this.onMouseMoveAutofill = debounce(\r\n (e: MouseEvent | TouchEvent, data: EventData) =>\r\n this.doAutofillMouseMove(e, data),\r\n 5,\r\n );\r\n }\r\n if (this.isAutoFill) {\r\n this.onMouseMoveAutofill(e, this.sv.getData());\r\n }\r\n }\r\n\r\n private getFocus(focus: Cell | null, range: RangeArea | null) {\r\n // there was an issue that it was taking last cell from range but focus was out\r\n if (!focus && range) {\r\n focus = { x: range.x, y: range.y };\r\n }\r\n return focus || null;\r\n }\r\n\r\n /**\r\n * Autofill logic:\r\n * on mouse move apply based on previous direction (if present)\r\n */\r\n private doAutofillMouseMove(event: MouseEvent | TouchEvent, data: EventData) {\r\n // if no initial - not started\r\n if (!this.autoFillInitial) {\r\n return;\r\n }\r\n const x = getPropertyFromEvent(event, 'clientX', MOBILE_CLASS);\r\n const y = getPropertyFromEvent(event, 'clientY', MOBILE_CLASS);\r\n // skip touch\r\n if (x === null || y === null) {\r\n return;\r\n }\r\n const current = getCurrentCell({ x, y }, data);\r\n\r\n // first time or direction equal to start(same as first time)\r\n if (!this.autoFillLast) {\r\n if (!this.autoFillLast) {\r\n this.autoFillLast = this.autoFillStart;\r\n }\r\n }\r\n\r\n // check if not the latest, if latest - do nothing\r\n if (isAfterLast(current, data.lastCell)) {\r\n return;\r\n }\r\n this.autoFillLast = current;\r\n\r\n const isSame =\r\n current.x === this.autoFillInitial.x &&\r\n current.y === this.autoFillInitial.y;\r\n\r\n // if same as initial - clear\r\n if (isSame) {\r\n this.sv.setTempRange(null);\r\n } else {\r\n const area = getRange(this.autoFillInitial, this.autoFillLast);\r\n this.sv.setTempRange({\r\n area,\r\n type: this.autoFillType,\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Range selection started\r\n * Mode @param type:\r\n * Can be triggered from MouseDown selection on element\r\n * Or can be triggered on corner square drag\r\n */\r\n selectionStart(\r\n target: Element,\r\n data: EventData,\r\n type = AutoFillType.selection,\r\n ) {\r\n /** Get cell by autofill element */\r\n const { top, left } = target.getBoundingClientRect();\r\n this.autoFillInitial = this.getFocus(data.focus, data.range);\r\n this.autoFillType = type;\r\n this.autoFillStart = getCurrentCell({ x: left, y: top }, data);\r\n }\r\n\r\n /**\r\n * Clear current range selection on mouse up and mouse leave events\r\n */\r\n clearAutoFillSelection(focus: Cell | null, oldRange: RangeArea | null) {\r\n // If autofill was active, apply autofill values\r\n if (this.autoFillInitial) {\r\n // Fetch latest focus\r\n this.autoFillInitial = this.getFocus(focus, oldRange);\r\n\r\n // Apply range data if autofill mode is active\r\n if (this.autoFillType === AutoFillType.autoFill) {\r\n const range = getRange(this.autoFillInitial, this.autoFillLast);\r\n\r\n // If range is present, apply data\r\n if (range) {\r\n const {\r\n defaultPrevented: stopApply,\r\n detail: { range: newRange },\r\n } = this.sv.clearRangeDataApply({\r\n range,\r\n });\r\n\r\n // If data apply was not prevented, apply new range\r\n if (!stopApply && oldRange) {\r\n this.applyRangeWithData(newRange, oldRange);\r\n } else {\r\n // If data apply was prevented, clear temporary range\r\n this.sv.setTempRange(null);\r\n }\r\n }\r\n } else {\r\n // If not autofill mode, apply range only\r\n this.applyRangeOnly(this.autoFillInitial, this.autoFillLast);\r\n }\r\n }\r\n\r\n // Reset autofill state\r\n this.resetAutoFillState();\r\n }\r\n\r\n /**\r\n * Reset autofill state\r\n */\r\n private resetAutoFillState() {\r\n this.autoFillType = null;\r\n this.autoFillInitial = null;\r\n this.autoFillLast = null;\r\n this.autoFillStart = null;\r\n }\r\n\r\n /**\r\n * Trigger range apply events and handle responses\r\n */\r\n onRangeApply(\r\n newData: DataLookup,\r\n newRange: RangeArea | null,\r\n oldRange: RangeArea | null,\r\n copy: boolean = false,\r\n clear: boolean = false,\r\n ) {\r\n this.sv.rangeDataApply({\r\n data: newData,\r\n models: collectModelsOfRange(newData, this.sv.dataStore),\r\n type: this.sv.dataStore.get('type'),\r\n oldRange,\r\n newRange,\r\n previousModels: null,\r\n copy,\r\n clearByKeyboard: clear,\r\n });\r\n\r\n this.sv.setRange(newRange);\r\n }\r\n\r\n /** Apply range and copy data during range application */\r\n private applyRangeWithData(newRange: RangeArea, rangeToCopy: RangeArea) {\r\n const rangeData: ChangedRange = {\r\n type: this.sv.dataStore.get('type'),\r\n colType: this.sv.columnService.type,\r\n newData: {},\r\n mapping: {},\r\n newRange,\r\n oldRange: rangeToCopy,\r\n };\r\n const { mapping, changed } = this.sv.columnService.getRangeData(\r\n rangeData,\r\n this.sv.columnService.columns,\r\n );\r\n rangeData.newData = changed;\r\n rangeData.mapping = mapping;\r\n let e = this.sv.selectionChanged(rangeData);\r\n\r\n // if default prevented - clear range\r\n if (e.defaultPrevented) {\r\n this.sv.setTempRange(null);\r\n return;\r\n }\r\n\r\n e = this.sv.rangeCopy(rangeData);\r\n if (e.defaultPrevented) {\r\n this.sv.setRange(newRange);\r\n return;\r\n }\r\n this.onRangeApply(rangeData.newData, newRange, rangeToCopy);\r\n }\r\n\r\n /**\r\n * Update range selection only,\r\n * no data change (mouse selection)\r\n */\r\n private applyRangeOnly(start?: Cell | null, end?: Cell | null) {\r\n // no changes to apply\r\n if (!start || !end) {\r\n return;\r\n }\r\n\r\n const newRange = getRange(start, end);\r\n this.sv.setRange(newRange);\r\n }\r\n}\r\n"]}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Built by LevelSkill.Pro
|
|
3
|
+
*/
|
|
4
|
+
import { getRange } from "../../store/index";
|
|
5
|
+
import { codesLetter, isAll, isClear, isCopy, isCut, isEnterKeyValue, isPaste, isTab, timeout, RESIZE_INTERVAL, isBack, } from "../../utils";
|
|
6
|
+
import { getCoordinate, isAfterLast, isBeforeFirst, } from "./selection.utils";
|
|
7
|
+
const DIRECTION_CODES = [
|
|
8
|
+
codesLetter.TAB,
|
|
9
|
+
codesLetter.ARROW_UP,
|
|
10
|
+
codesLetter.ARROW_DOWN,
|
|
11
|
+
codesLetter.ARROW_LEFT,
|
|
12
|
+
codesLetter.ARROW_RIGHT,
|
|
13
|
+
];
|
|
14
|
+
export class KeyboardService {
|
|
15
|
+
constructor(sv) {
|
|
16
|
+
this.sv = sv;
|
|
17
|
+
}
|
|
18
|
+
async keyDown(e, canRange, isEditMode, { range, focus }) {
|
|
19
|
+
// IF EDIT MODE
|
|
20
|
+
if (isEditMode) {
|
|
21
|
+
switch (e.code) {
|
|
22
|
+
case codesLetter.ESCAPE:
|
|
23
|
+
this.sv.cancel();
|
|
24
|
+
break;
|
|
25
|
+
case codesLetter.TAB:
|
|
26
|
+
this.keyChangeSelection(e, canRange);
|
|
27
|
+
break;
|
|
28
|
+
}
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
// IF NOT EDIT MODE
|
|
32
|
+
// pressed clear key
|
|
33
|
+
if (range && isClear(e.code)) {
|
|
34
|
+
this.sv.clearCell();
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
// below works with focus only
|
|
38
|
+
if (!focus) {
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
// tab key means same as arrow right
|
|
42
|
+
if (isTab(e.code)) {
|
|
43
|
+
this.keyChangeSelection(e, canRange);
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
// pressed enter
|
|
47
|
+
if (isEnterKeyValue(e.key)) {
|
|
48
|
+
this.sv.change();
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
// copy operation
|
|
52
|
+
if (isCopy(e)) {
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
// cut operation
|
|
56
|
+
if (isCut(e)) {
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
// paste operation
|
|
60
|
+
if (isPaste(e)) {
|
|
61
|
+
this.sv.internalPaste();
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
if (isBack(e)) {
|
|
65
|
+
// rollback
|
|
66
|
+
e.preventDefault();
|
|
67
|
+
this.sv.rollback();
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
// select all
|
|
71
|
+
if (isAll(e)) {
|
|
72
|
+
e.preventDefault();
|
|
73
|
+
// if (canRange) {
|
|
74
|
+
// this.selectAll(e);
|
|
75
|
+
// }
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
// pressed letter key
|
|
79
|
+
if (e.key.length === 1) {
|
|
80
|
+
this.sv.change(e.key);
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
// pressed arrow, change selection position
|
|
84
|
+
if (await this.keyChangeSelection(e, canRange)) {
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
// private selectAll(e: KeyboardEvent) {
|
|
89
|
+
// const range = this.sv.selectionStore.get('range');
|
|
90
|
+
// const focus = this.sv.selectionStore.get('focus');
|
|
91
|
+
// // if no range or focus - do nothing
|
|
92
|
+
// if (!range || !focus) {
|
|
93
|
+
// return;
|
|
94
|
+
// }
|
|
95
|
+
// e.preventDefault();
|
|
96
|
+
// this.sv.selectAll();
|
|
97
|
+
// }
|
|
98
|
+
async keyChangeSelection(e, canRange) {
|
|
99
|
+
const data = this.changeDirectionKey(e, canRange);
|
|
100
|
+
if (!data) {
|
|
101
|
+
return false;
|
|
102
|
+
}
|
|
103
|
+
// this interval needed for several cases
|
|
104
|
+
// grid could be resized before next click
|
|
105
|
+
// at this case to avoid screen jump we use this interval
|
|
106
|
+
await timeout(RESIZE_INTERVAL + 30);
|
|
107
|
+
const range = this.sv.selectionStore.get('range');
|
|
108
|
+
const focus = this.sv.selectionStore.get('focus');
|
|
109
|
+
return this.keyPositionChange(data.changes, range, focus, data.isMulti);
|
|
110
|
+
}
|
|
111
|
+
keyPositionChange(changes, range, focus, isMulti = false) {
|
|
112
|
+
if (!range || !focus) {
|
|
113
|
+
return false;
|
|
114
|
+
}
|
|
115
|
+
const data = getCoordinate(range, focus, changes, isMulti);
|
|
116
|
+
if (!data) {
|
|
117
|
+
return false;
|
|
118
|
+
}
|
|
119
|
+
const eData = this.sv.getData();
|
|
120
|
+
if (isMulti) {
|
|
121
|
+
if (isAfterLast(data.end, eData.lastCell) || isBeforeFirst(data.start)) {
|
|
122
|
+
return false;
|
|
123
|
+
}
|
|
124
|
+
const range = getRange(data.start, data.end);
|
|
125
|
+
return this.sv.range(range);
|
|
126
|
+
}
|
|
127
|
+
return this.sv.focus(data.start, changes, isAfterLast(data.start, eData.lastCell)
|
|
128
|
+
? 1
|
|
129
|
+
: isBeforeFirst(data.start)
|
|
130
|
+
? -1
|
|
131
|
+
: 0);
|
|
132
|
+
}
|
|
133
|
+
/** Monitor key direction changes */
|
|
134
|
+
changeDirectionKey(e, canRange) {
|
|
135
|
+
const isMulti = canRange && e.shiftKey;
|
|
136
|
+
if (DIRECTION_CODES.includes(e.code)) {
|
|
137
|
+
e.preventDefault();
|
|
138
|
+
}
|
|
139
|
+
if (e.shiftKey) {
|
|
140
|
+
switch (e.code) {
|
|
141
|
+
case codesLetter.TAB:
|
|
142
|
+
return { changes: { x: -1 }, isMulti: false };
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
switch (e.code) {
|
|
146
|
+
case codesLetter.ARROW_UP:
|
|
147
|
+
return { changes: { y: -1 }, isMulti };
|
|
148
|
+
case codesLetter.ARROW_DOWN:
|
|
149
|
+
return { changes: { y: 1 }, isMulti };
|
|
150
|
+
case codesLetter.ARROW_LEFT:
|
|
151
|
+
return { changes: { x: -1 }, isMulti };
|
|
152
|
+
case codesLetter.TAB:
|
|
153
|
+
case codesLetter.ARROW_RIGHT:
|
|
154
|
+
return { changes: { x: 1 }, isMulti };
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
//# sourceMappingURL=keyboard.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keyboard.service.js","sourceRoot":"","sources":["../../../src/components/overlay/keyboard.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAClC,OAAO,EACL,WAAW,EACX,KAAK,EACL,OAAO,EACP,MAAM,EACN,KAAK,EACL,eAAe,EACf,OAAO,EACP,KAAK,EACL,OAAO,EACP,eAAe,EAEf,MAAM,GACP,MAAM,aAAa,CAAC;AACrB,OAAO,EAEL,aAAa,EACb,WAAW,EACX,aAAa,GACd,MAAM,mBAAmB,CAAC;AA0B3B,MAAM,eAAe,GAAa;IAChC,WAAW,CAAC,GAAG;IACf,WAAW,CAAC,QAAQ;IACpB,WAAW,CAAC,UAAU;IACtB,WAAW,CAAC,UAAU;IACtB,WAAW,CAAC,WAAW;CACxB,CAAC;AACF,MAAM,OAAO,eAAe;IAC1B,YAAoB,EAAU;QAAV,OAAE,GAAF,EAAE,CAAQ;IAAG,CAAC;IAElC,KAAK,CAAC,OAAO,CACX,CAAgB,EAChB,QAAiB,EACjB,UAAmB,EACnB,EAAE,KAAK,EAAE,KAAK,EAAgD;QAE9D,eAAe;QACf,IAAI,UAAU,EAAE,CAAC;YACf,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;gBACf,KAAK,WAAW,CAAC,MAAM;oBACrB,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC;oBACjB,MAAM;gBACR,KAAK,WAAW,CAAC,GAAG;oBAClB,IAAI,CAAC,kBAAkB,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;oBACrC,MAAM;YACV,CAAC;YACD,OAAO;QACT,CAAC;QAED,mBAAmB;QAEnB,oBAAoB;QACpB,IAAI,KAAK,IAAI,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7B,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC;YACpB,OAAO;QACT,CAAC;QAED,8BAA8B;QAC9B,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO;QACT,CAAC;QAED,oCAAoC;QACpC,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;YAClB,IAAI,CAAC,kBAAkB,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;YACrC,OAAO;QACT,CAAC;QAED,gBAAgB;QAChB,IAAI,eAAe,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC;YACjB,OAAO;QACT,CAAC;QAED,iBAAiB;QACjB,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;YACd,OAAO;QACT,CAAC;QAED,gBAAgB;QAChB,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YACb,OAAO;QACT,CAAC;QAED,kBAAkB;QAClB,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YACf,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC;YACxB,OAAO;QACT,CAAC;QAED,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;YACd,WAAW;YACX,CAAC,CAAC,cAAc,EAAE,CAAC;YACnB,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC;YACnB,OAAO;QACT,CAAC;QAED,aAAa;QACb,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YACb,CAAC,CAAC,cAAc,EAAE,CAAC;YACnB,kBAAkB;YAClB,uBAAuB;YACvB,IAAI;YACJ,OAAO;QACT,CAAC;QAED,qBAAqB;QACrB,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACtB,OAAO;QACT,CAAC;QAED,2CAA2C;QAC3C,IAAI,MAAM,IAAI,CAAC,kBAAkB,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC;YAC/C,OAAO;QACT,CAAC;IACH,CAAC;IAED,wCAAwC;IACxC,uDAAuD;IACvD,uDAAuD;IACvD,yCAAyC;IACzC,4BAA4B;IAC5B,cAAc;IACd,MAAM;IACN,wBAAwB;IACxB,yBAAyB;IACzB,IAAI;IAEJ,KAAK,CAAC,kBAAkB,CAAC,CAAgB,EAAE,QAAiB;QAC1D,MAAM,IAAI,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;QAClD,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,KAAK,CAAC;QACf,CAAC;QAED,yCAAyC;QACzC,0CAA0C;QAC1C,yDAAyD;QACzD,MAAM,OAAO,CAAC,eAAe,GAAG,EAAE,CAAC,CAAC;QAEpC,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAClD,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAClD,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC1E,CAAC;IAED,iBAAiB,CACf,OAAsB,EACtB,KAAuB,EACvB,KAAkB,EAClB,OAAO,GAAG,KAAK;QAEf,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC;YACrB,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAM,IAAI,GAAG,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAC3D,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAM,KAAK,GAAc,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC;QAC3C,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,QAAQ,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBACvE,OAAO,KAAK,CAAC;YACf,CAAC;YACD,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;YAC7C,OAAO,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;QACD,OAAO,IAAI,CAAC,EAAE,CAAC,KAAK,CAClB,IAAI,CAAC,KAAK,EACV,OAAO,EACP,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC;YACrC,CAAC,CAAC,CAAC;YACH,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;gBACzB,CAAC,CAAC,CAAC,CAAC;gBACJ,CAAC,CAAC,CAAC,CACR,CAAC;IACJ,CAAC;IAED,oCAAoC;IACpC,kBAAkB,CAChB,CAAgB,EAChB,QAAiB;QAEjB,MAAM,OAAO,GAAG,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC;QACvC,IAAI,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;YACrC,CAAC,CAAC,cAAc,EAAE,CAAC;QACrB,CAAC;QAED,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;YACf,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;gBACf,KAAK,WAAW,CAAC,GAAG;oBAClB,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;YAClD,CAAC;QACH,CAAC;QAED,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;YACf,KAAK,WAAW,CAAC,QAAQ;gBACvB,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC;YACzC,KAAK,WAAW,CAAC,UAAU;gBACzB,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC;YACxC,KAAK,WAAW,CAAC,UAAU;gBACzB,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC;YACzC,KAAK,WAAW,CAAC,GAAG,CAAC;YACrB,KAAK,WAAW,CAAC,WAAW;gBAC1B,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC;QAC1C,CAAC;IACH,CAAC;CACF","sourcesContent":["import { getRange } from '@store';\r\nimport {\r\n codesLetter,\r\n isAll,\r\n isClear,\r\n isCopy,\r\n isCut,\r\n isEnterKeyValue,\r\n isPaste,\r\n isTab,\r\n timeout,\r\n RESIZE_INTERVAL,\r\n type Observable,\r\n isBack,\r\n} from '../../utils';\r\nimport {\r\n EventData,\r\n getCoordinate,\r\n isAfterLast,\r\n isBeforeFirst,\r\n} from './selection.utils';\r\nimport { Cell, Nullable, RangeArea, SelectionStoreState } from '@type';\r\n\r\ntype Config = {\r\n selectionStore: Observable<SelectionStoreState>;\r\n\r\n // Apply changes from edit.\r\n change(val?: any): void;\r\n // Cancels edit. Escape changes.\r\n cancel(): void;\r\n\r\n clearCell(): void;\r\n focus(\r\n focus: Cell,\r\n changes: Partial<Cell>,\r\n focusNextViewport?: number,\r\n ): boolean;\r\n\r\n getData(): any;\r\n internalPaste(): void;\r\n range(range: RangeArea | null): boolean;\r\n selectAll(): void;\r\n\r\n rollback(): void;\r\n};\r\n\r\nconst DIRECTION_CODES: string[] = [\r\n codesLetter.TAB,\r\n codesLetter.ARROW_UP,\r\n codesLetter.ARROW_DOWN,\r\n codesLetter.ARROW_LEFT,\r\n codesLetter.ARROW_RIGHT,\r\n];\r\nexport class KeyboardService {\r\n constructor(private sv: Config) {}\r\n\r\n async keyDown(\r\n e: KeyboardEvent,\r\n canRange: boolean,\r\n isEditMode: boolean,\r\n { range, focus }: Nullable<Pick<EventData, 'range' | 'focus'>>,\r\n ) {\r\n // IF EDIT MODE\r\n if (isEditMode) {\r\n switch (e.code) {\r\n case codesLetter.ESCAPE:\r\n this.sv.cancel();\r\n break;\r\n case codesLetter.TAB:\r\n this.keyChangeSelection(e, canRange);\r\n break;\r\n }\r\n return;\r\n }\r\n\r\n // IF NOT EDIT MODE\r\n\r\n // pressed clear key\r\n if (range && isClear(e.code)) {\r\n this.sv.clearCell();\r\n return;\r\n }\r\n\r\n // below works with focus only\r\n if (!focus) {\r\n return;\r\n }\r\n\r\n // tab key means same as arrow right\r\n if (isTab(e.code)) {\r\n this.keyChangeSelection(e, canRange);\r\n return;\r\n }\r\n\r\n // pressed enter\r\n if (isEnterKeyValue(e.key)) {\r\n this.sv.change();\r\n return;\r\n }\r\n\r\n // copy operation\r\n if (isCopy(e)) {\r\n return;\r\n }\r\n\r\n // cut operation\r\n if (isCut(e)) {\r\n return;\r\n }\r\n\r\n // paste operation\r\n if (isPaste(e)) {\r\n this.sv.internalPaste();\r\n return;\r\n }\r\n\r\n if (isBack(e)) {\r\n // rollback\r\n e.preventDefault();\r\n this.sv.rollback();\r\n return;\r\n }\r\n\r\n // select all\r\n if (isAll(e)) {\r\n e.preventDefault();\r\n // if (canRange) {\r\n // this.selectAll(e);\r\n // }\r\n return;\r\n }\r\n\r\n // pressed letter key\r\n if (e.key.length === 1) {\r\n this.sv.change(e.key);\r\n return;\r\n }\r\n\r\n // pressed arrow, change selection position\r\n if (await this.keyChangeSelection(e, canRange)) {\r\n return;\r\n }\r\n }\r\n\r\n // private selectAll(e: KeyboardEvent) {\r\n // const range = this.sv.selectionStore.get('range');\r\n // const focus = this.sv.selectionStore.get('focus');\r\n // // if no range or focus - do nothing\r\n // if (!range || !focus) {\r\n // return;\r\n // }\r\n // e.preventDefault();\r\n // this.sv.selectAll();\r\n // }\r\n\r\n async keyChangeSelection(e: KeyboardEvent, canRange: boolean) {\r\n const data = this.changeDirectionKey(e, canRange);\r\n if (!data) {\r\n return false;\r\n }\r\n\r\n // this interval needed for several cases\r\n // grid could be resized before next click\r\n // at this case to avoid screen jump we use this interval\r\n await timeout(RESIZE_INTERVAL + 30);\r\n\r\n const range = this.sv.selectionStore.get('range');\r\n const focus = this.sv.selectionStore.get('focus');\r\n return this.keyPositionChange(data.changes, range, focus, data.isMulti);\r\n }\r\n\r\n keyPositionChange(\r\n changes: Partial<Cell>,\r\n range: RangeArea | null,\r\n focus: Cell | null,\r\n isMulti = false,\r\n ) {\r\n if (!range || !focus) {\r\n return false;\r\n }\r\n const data = getCoordinate(range, focus, changes, isMulti);\r\n if (!data) {\r\n return false;\r\n }\r\n const eData: EventData = this.sv.getData();\r\n if (isMulti) {\r\n if (isAfterLast(data.end, eData.lastCell) || isBeforeFirst(data.start)) {\r\n return false;\r\n }\r\n const range = getRange(data.start, data.end);\r\n return this.sv.range(range);\r\n }\r\n return this.sv.focus(\r\n data.start,\r\n changes,\r\n isAfterLast(data.start, eData.lastCell)\r\n ? 1\r\n : isBeforeFirst(data.start)\r\n ? -1\r\n : 0,\r\n );\r\n }\r\n\r\n /** Monitor key direction changes */\r\n changeDirectionKey(\r\n e: KeyboardEvent,\r\n canRange: boolean,\r\n ): { changes: Partial<Cell>; isMulti?: boolean } | void {\r\n const isMulti = canRange && e.shiftKey;\r\n if (DIRECTION_CODES.includes(e.code)) {\r\n e.preventDefault();\r\n }\r\n\r\n if (e.shiftKey) {\r\n switch (e.code) {\r\n case codesLetter.TAB:\r\n return { changes: { x: -1 }, isMulti: false };\r\n }\r\n }\r\n\r\n switch (e.code) {\r\n case codesLetter.ARROW_UP:\r\n return { changes: { y: -1 }, isMulti };\r\n case codesLetter.ARROW_DOWN:\r\n return { changes: { y: 1 }, isMulti };\r\n case codesLetter.ARROW_LEFT:\r\n return { changes: { x: -1 }, isMulti };\r\n case codesLetter.TAB:\r\n case codesLetter.ARROW_RIGHT:\r\n return { changes: { x: 1 }, isMulti };\r\n }\r\n }\r\n}\r\n"]}
|