@revolist/revogrid 4.9.41 → 4.9.42
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/dist/cjs/app-globals-c0b20747.js.map +1 -1
- package/dist/cjs/{column.drag.plugin-fcd892ec.js → column.drag.plugin-a6ef25bf.js} +1034 -149
- package/dist/cjs/column.drag.plugin-a6ef25bf.js.map +1 -0
- package/dist/cjs/column.service-831e1c92.js +1321 -0
- package/dist/cjs/column.service-831e1c92.js.map +1 -0
- package/dist/cjs/{column.service-26c61ed6.js → dimension.helpers-1927ad24.js} +490 -1273
- package/dist/cjs/dimension.helpers-1927ad24.js.map +1 -0
- package/dist/cjs/{edit.utils-179c0800.js → edit.utils-e51411f6.js} +3 -3
- package/dist/cjs/{edit.utils-179c0800.js.map → edit.utils-e51411f6.js.map} +1 -1
- package/dist/cjs/{header-cell-renderer-d879d95e.js → header-cell-renderer-53ecdcdb.js} +2 -2
- package/dist/cjs/{header-cell-renderer-d879d95e.js.map → header-cell-renderer-53ecdcdb.js.map} +1 -1
- package/dist/cjs/index.cjs.js +127 -69
- package/dist/cjs/index.cjs.js.map +1 -1
- package/dist/cjs/key.utils-96d0bc42.js +101 -0
- package/dist/cjs/key.utils-96d0bc42.js.map +1 -0
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/revo-grid.cjs.entry.js +310 -941
- package/dist/cjs/revo-grid.cjs.entry.js.map +1 -1
- package/dist/cjs/revo-grid.cjs.js +1 -1
- package/dist/cjs/revogr-attribution_7.cjs.entry.js +100 -70
- package/dist/cjs/revogr-attribution_7.cjs.entry.js.map +1 -1
- package/dist/cjs/revogr-clipboard_3.cjs.entry.js +11 -10
- package/dist/cjs/revogr-clipboard_3.cjs.entry.js.map +1 -1
- package/dist/cjs/revogr-data_4.cjs.entry.js +88 -78
- package/dist/cjs/revogr-data_4.cjs.entry.js.map +1 -1
- package/dist/cjs/revogr-filter-panel.cjs.entry.js +33 -13
- package/dist/cjs/revogr-filter-panel.cjs.entry.js.map +1 -1
- package/dist/cjs/{text-editor-b756d6b3.js → text-editor-1afffaf1.js} +6 -6
- package/dist/cjs/text-editor-1afffaf1.js.map +1 -0
- package/dist/cjs/{throttle-a57f51f9.js → throttle-bb713c73.js} +4 -4
- package/dist/cjs/{throttle-a57f51f9.js.map → throttle-bb713c73.js.map} +1 -1
- package/dist/cjs/{row-header-utils-c37f76e4.js → viewport.store-69b45f22.js} +15 -14
- package/dist/cjs/viewport.store-69b45f22.js.map +1 -0
- package/dist/collection/components/attribution/revogr-attribution.js +1 -1
- package/dist/collection/components/attribution/revogr-attribution.js.map +1 -1
- package/dist/collection/components/data/cell-renderer.js +11 -9
- package/dist/collection/components/data/cell-renderer.js.map +1 -1
- package/dist/collection/components/data/column.service.js +7 -19
- package/dist/collection/components/data/column.service.js.map +1 -1
- package/dist/collection/components/data/revogr-data-style.css +10 -5
- package/dist/collection/components/data/revogr-data.js +50 -28
- package/dist/collection/components/data/revogr-data.js.map +1 -1
- package/dist/collection/components/data/row-highlight.plugin.js.map +1 -1
- package/dist/collection/components/data/row-renderer.js.map +1 -1
- package/dist/collection/components/editors/revogr-edit-style.css +8 -5
- package/dist/collection/components/editors/revogr-edit.js +2 -2
- package/dist/collection/components/editors/revogr-edit.js.map +1 -1
- package/dist/collection/components/editors/text-editor.js +2 -2
- package/dist/collection/components/editors/text-editor.js.map +1 -1
- package/dist/collection/components/extra/revogr-extra.js +44 -6
- package/dist/collection/components/extra/revogr-extra.js.map +1 -1
- package/dist/collection/components/header/header-cell-renderer.js.map +1 -1
- package/dist/collection/components/header/header-renderer.js.map +1 -1
- package/dist/collection/components/header/resizable.element.js.map +1 -1
- package/dist/collection/components/header/revogr-header-style.css +8 -5
- package/dist/collection/components/header/revogr-header.js +9 -9
- package/dist/collection/components/header/revogr-header.js.map +1 -1
- package/dist/collection/components/order/order-renderer.js.map +1 -1
- package/dist/collection/components/order/revogr-order-editor.js +12 -24
- package/dist/collection/components/order/revogr-order-editor.js.map +1 -1
- package/dist/collection/components/overlay/autofill.service.js +7 -5
- package/dist/collection/components/overlay/autofill.service.js.map +1 -1
- package/dist/collection/components/overlay/keyboard.service.js +1 -4
- package/dist/collection/components/overlay/keyboard.service.js.map +1 -1
- package/dist/collection/components/overlay/revogr-overlay-selection.js +88 -72
- package/dist/collection/components/overlay/revogr-overlay-selection.js.map +1 -1
- package/dist/collection/components/overlay/revogr-overlay-style.css +8 -5
- package/dist/collection/components/overlay/selection.utils.js.map +1 -1
- 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 +18 -11
- package/dist/collection/components/revoGrid/revo-grid.js +289 -140
- package/dist/collection/components/revoGrid/revo-grid.js.map +1 -1
- package/dist/collection/components/revoGrid/viewport.service.js +9 -9
- package/dist/collection/components/revoGrid/viewport.service.js.map +1 -1
- package/dist/collection/components/rowHeaders/revogr-row-headers.js +1 -1
- package/dist/collection/components/rowHeaders/revogr-row-headers.js.map +1 -1
- package/dist/collection/components/rowHeaders/row-header-render.js.map +1 -1
- package/dist/collection/components/scroll/revogr-viewport-scroll-style.css +8 -5
- package/dist/collection/components/scroll/revogr-viewport-scroll.js +26 -20
- package/dist/collection/components/scroll/revogr-viewport-scroll.js.map +1 -1
- package/dist/collection/components/scrollable/revogr-scroll-style.css +10 -7
- package/dist/collection/components/scrollable/revogr-scroll-virtual.js +10 -8
- package/dist/collection/components/scrollable/revogr-scroll-virtual.js.map +1 -1
- package/dist/collection/components/selectionFocus/revogr-focus-style.css +8 -5
- package/dist/collection/components/selectionFocus/revogr-focus.js +10 -10
- package/dist/collection/components/selectionFocus/revogr-focus.js.map +1 -1
- package/dist/collection/components/selectionTempRange/revogr-temp-range-style.css +8 -5
- package/dist/collection/components/selectionTempRange/revogr-temp-range.js +6 -6
- package/dist/collection/components/selectionTempRange/revogr-temp-range.js.map +1 -1
- package/dist/collection/components/vnode/vnode-converter.js +1 -1
- package/dist/collection/components/vnode/vnode-converter.js.map +1 -1
- package/dist/collection/components/vnode/vnode.utils.js.map +1 -1
- package/dist/collection/index.js.map +1 -1
- 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.map +1 -1
- package/dist/collection/plugins/column.auto-size.plugin.js +1 -1
- package/dist/collection/plugins/column.auto-size.plugin.js.map +1 -1
- package/dist/collection/plugins/column.stretch.plugin.js +1 -1
- package/dist/collection/plugins/column.stretch.plugin.js.map +1 -1
- package/dist/collection/plugins/export/csv.js +1 -1
- package/dist/collection/plugins/export/csv.js.map +1 -1
- package/dist/collection/plugins/export/export.plugin.js +4 -2
- package/dist/collection/plugins/export/export.plugin.js.map +1 -1
- package/dist/collection/plugins/filter/filter.indexed.js +1 -0
- package/dist/collection/plugins/filter/filter.indexed.js.map +1 -1
- package/dist/collection/plugins/filter/filter.panel.js +35 -35
- package/dist/collection/plugins/filter/filter.panel.js.map +1 -1
- package/dist/collection/plugins/filter/filter.plugin.js +117 -77
- package/dist/collection/plugins/filter/filter.plugin.js.map +1 -1
- package/dist/collection/plugins/filter/filter.style.css +19 -5
- package/dist/collection/plugins/filter/filter.types.js.map +1 -1
- package/dist/collection/plugins/groupingColumn/columnGroupsRenderer.js.map +1 -1
- package/dist/collection/plugins/groupingColumn/headerGroupRenderer.js.map +1 -1
- package/dist/collection/plugins/groupingRow/grouping.const.js +1 -0
- package/dist/collection/plugins/groupingRow/grouping.const.js.map +1 -1
- package/dist/collection/plugins/groupingRow/grouping.row.plugin.js +64 -79
- package/dist/collection/plugins/groupingRow/grouping.row.plugin.js.map +1 -1
- package/dist/collection/plugins/groupingRow/grouping.row.renderer.js +3 -3
- package/dist/collection/plugins/groupingRow/grouping.row.renderer.js.map +1 -1
- package/dist/collection/plugins/groupingRow/grouping.row.types.js.map +1 -1
- package/dist/collection/plugins/groupingRow/grouping.service.js +40 -6
- package/dist/collection/plugins/groupingRow/grouping.service.js.map +1 -1
- package/dist/collection/plugins/index.js +2 -0
- package/dist/collection/plugins/index.js.map +1 -1
- package/dist/collection/plugins/moveColumn/column.drag.plugin.js +12 -6
- package/dist/collection/plugins/moveColumn/column.drag.plugin.js.map +1 -1
- package/dist/collection/plugins/sorting/sorting.func.js +42 -0
- package/dist/collection/plugins/sorting/sorting.func.js.map +1 -0
- package/dist/collection/plugins/sorting/sorting.plugin.js +71 -69
- package/dist/collection/plugins/sorting/sorting.plugin.js.map +1 -1
- package/dist/collection/plugins/sorting/sorting.types.js +2 -0
- package/dist/collection/plugins/sorting/sorting.types.js.map +1 -0
- package/dist/collection/serve/controller.js +32 -15
- package/dist/collection/serve/data.js +18 -11
- package/dist/collection/services/column.data.provider.js +5 -2
- package/dist/collection/services/column.data.provider.js.map +1 -1
- package/dist/collection/services/data.provider.js +18 -7
- package/dist/collection/services/data.provider.js.map +1 -1
- package/dist/collection/services/dimension.provider.js +32 -33
- package/dist/collection/services/dimension.provider.js.map +1 -1
- package/dist/collection/services/selection.store.connector.js +1 -1
- package/dist/collection/services/selection.store.connector.js.map +1 -1
- package/dist/collection/store/dataSource/data.proxy.js +9 -15
- package/dist/collection/store/dataSource/data.proxy.js.map +1 -1
- package/dist/collection/store/dataSource/data.store.js +1 -1
- package/dist/collection/store/dataSource/data.store.js.map +1 -1
- package/dist/collection/store/dataSource/trimmed.plugin.js +5 -8
- package/dist/collection/store/dataSource/trimmed.plugin.js.map +1 -1
- package/dist/collection/store/dimension/dimension.helpers.js +7 -9
- package/dist/collection/store/dimension/dimension.helpers.js.map +1 -1
- 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 +47 -67
- package/dist/collection/store/dimension/dimension.store.js.map +1 -1
- 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/selection/selection.store.js +1 -1
- package/dist/collection/store/selection/selection.store.js.map +1 -1
- package/dist/collection/store/vp/viewport.store.js +4 -2
- package/dist/collection/store/vp/viewport.store.js.map +1 -1
- package/dist/collection/types/events.js +6 -2
- package/dist/collection/types/events.js.map +1 -1
- package/dist/collection/types/interfaces.js +4 -0
- package/dist/collection/types/interfaces.js.map +1 -1
- package/dist/collection/types/plugin.types.js.map +1 -1
- package/dist/collection/types/selection.js.map +1 -1
- package/dist/collection/types/viewport.interfaces.js.map +1 -1
- package/dist/collection/utils/column.utils.js +13 -3
- package/dist/collection/utils/column.utils.js.map +1 -1
- package/dist/esm/app-globals-3a760941.js.map +1 -1
- package/dist/esm/{column.drag.plugin-3cc77986.js → column.drag.plugin-50f49fa9.js} +1012 -130
- package/dist/esm/column.drag.plugin-50f49fa9.js.map +1 -0
- package/dist/esm/column.service-a6a7c415.js +1281 -0
- package/dist/esm/column.service-a6a7c415.js.map +1 -0
- package/dist/esm/{debounce-72878ced.js → debounce-b3166f78.js} +2 -2
- package/dist/esm/{debounce-72878ced.js.map → debounce-b3166f78.js.map} +1 -1
- package/dist/esm/{column.service-751345b2.js → dimension.helpers-d0d709c4.js} +450 -1234
- package/dist/esm/dimension.helpers-d0d709c4.js.map +1 -0
- package/dist/esm/{edit.utils-6fc686b9.js → edit.utils-0ae0db50.js} +2 -2
- package/dist/esm/{edit.utils-6fc686b9.js.map → edit.utils-0ae0db50.js.map} +1 -1
- package/dist/esm/{header-cell-renderer-32d2ed96.js → header-cell-renderer-36ecbdef.js} +2 -2
- package/dist/esm/{header-cell-renderer-32d2ed96.js.map → header-cell-renderer-36ecbdef.js.map} +1 -1
- package/dist/esm/index.js +52 -11
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/{key.utils-17273f42.js → key.utils-7c3218d4.js} +2 -2
- package/dist/esm/{key.utils-17273f42.js.map → key.utils-7c3218d4.js.map} +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm/revo-grid.entry.js +246 -877
- package/dist/esm/revo-grid.entry.js.map +1 -1
- package/dist/esm/revo-grid.js +1 -1
- package/dist/esm/revogr-attribution_7.entry.js +63 -33
- package/dist/esm/revogr-attribution_7.entry.js.map +1 -1
- package/dist/esm/revogr-clipboard_3.entry.js +7 -6
- package/dist/esm/revogr-clipboard_3.entry.js.map +1 -1
- package/dist/esm/revogr-data_4.entry.js +60 -50
- package/dist/esm/revogr-data_4.entry.js.map +1 -1
- package/dist/esm/revogr-filter-panel.entry.js +34 -14
- package/dist/esm/revogr-filter-panel.entry.js.map +1 -1
- package/dist/esm/{text-editor-901c3eb8.js → text-editor-148a17c1.js} +5 -5
- package/dist/esm/text-editor-148a17c1.js.map +1 -0
- package/dist/esm/{throttle-138d69c3.js → throttle-394e489c.js} +3 -3
- package/dist/esm/{throttle-138d69c3.js.map → throttle-394e489c.js.map} +1 -1
- package/dist/esm/{row-header-utils-3dfbb81f.js → viewport.store-afa8c4fe.js} +11 -10
- package/dist/esm/viewport.store-afa8c4fe.js.map +1 -0
- package/dist/revo-grid/app-globals-3a760941.js +8 -1
- package/dist/revo-grid/app-globals-3a760941.js.map +1 -1
- package/dist/revo-grid/column.drag.plugin-50f49fa9.js +2541 -0
- package/dist/revo-grid/column.drag.plugin-50f49fa9.js.map +1 -0
- package/dist/revo-grid/column.service-a6a7c415.js +1281 -0
- package/dist/revo-grid/column.service-a6a7c415.js.map +1 -0
- package/dist/revo-grid/debounce-b3166f78.js +495 -0
- package/dist/revo-grid/debounce-b3166f78.js.map +1 -0
- package/dist/revo-grid/dimension.helpers-d0d709c4.js +3611 -0
- package/dist/revo-grid/dimension.helpers-d0d709c4.js.map +1 -0
- package/dist/revo-grid/edit.utils-0ae0db50.js +17 -0
- package/dist/revo-grid/edit.utils-0ae0db50.js.map +1 -0
- package/dist/revo-grid/events-cf0893a3.js +38 -1
- package/dist/revo-grid/events-cf0893a3.js.map +1 -1
- package/dist/revo-grid/filter.button-d40ab17b.js +34 -1
- package/dist/revo-grid/filter.button-d40ab17b.js.map +1 -1
- package/dist/revo-grid/header-cell-renderer-36ecbdef.js +339 -0
- package/dist/revo-grid/header-cell-renderer-36ecbdef.js.map +1 -0
- package/dist/revo-grid/index-a61f225b.js +1845 -2
- package/dist/revo-grid/index-a61f225b.js.map +1 -1
- package/dist/revo-grid/index.esm.js +160 -1
- package/dist/revo-grid/index.esm.js.map +1 -1
- package/dist/revo-grid/key.utils-7c3218d4.js +89 -0
- package/dist/revo-grid/key.utils-7c3218d4.js.map +1 -0
- package/dist/revo-grid/resize-observer-83c9e167.js +501 -1
- package/dist/revo-grid/resize-observer-83c9e167.js.map +1 -1
- package/dist/revo-grid/revo-grid.entry.js +1934 -1
- package/dist/revo-grid/revo-grid.entry.js.map +1 -1
- package/dist/revo-grid/revo-grid.esm.js +21 -1
- package/dist/revo-grid/revo-grid.esm.js.map +1 -1
- package/dist/revo-grid/revogr-attribution_7.entry.js +1431 -1
- package/dist/revo-grid/revogr-attribution_7.entry.js.map +1 -1
- package/dist/revo-grid/revogr-clipboard_3.entry.js +455 -1
- package/dist/revo-grid/revogr-clipboard_3.entry.js.map +1 -1
- package/dist/revo-grid/revogr-data_4.entry.js +974 -1
- package/dist/revo-grid/revogr-data_4.entry.js.map +1 -1
- package/dist/revo-grid/revogr-filter-panel.entry.js +340 -1
- package/dist/revo-grid/revogr-filter-panel.entry.js.map +1 -1
- package/dist/revo-grid/sorting.sign-1a675bf7.js +9 -1
- package/dist/revo-grid/sorting.sign-1a675bf7.js.map +1 -1
- package/dist/revo-grid/text-editor-148a17c1.js +80 -0
- package/dist/revo-grid/text-editor-148a17c1.js.map +1 -0
- package/dist/revo-grid/throttle-394e489c.js +230 -0
- package/dist/revo-grid/throttle-394e489c.js.map +1 -0
- package/dist/revo-grid/viewport.helpers-7e7f9dad.js +48 -1
- package/dist/revo-grid/viewport.helpers-7e7f9dad.js.map +1 -1
- package/dist/revo-grid/viewport.store-afa8c4fe.js +406 -0
- package/dist/revo-grid/viewport.store-afa8c4fe.js.map +1 -0
- package/dist/types/components/data/cell-renderer.d.ts +3 -5
- package/dist/types/components/data/column.service.d.ts +2 -3
- package/dist/types/components/data/revogr-data.d.ts +10 -6
- package/dist/types/components/data/row-highlight.plugin.d.ts +1 -1
- package/dist/types/components/data/row-renderer.d.ts +1 -1
- package/dist/types/components/editors/revogr-edit.d.ts +2 -2
- package/dist/types/components/editors/text-editor.d.ts +5 -6
- package/dist/types/components/extra/revogr-extra.d.ts +17 -3
- package/dist/types/components/header/header-cell-renderer.d.ts +1 -1
- package/dist/types/components/header/header-renderer.d.ts +2 -2
- package/dist/types/components/header/resizable.element.d.ts +1 -1
- package/dist/types/components/header/revogr-header.d.ts +2 -3
- package/dist/types/components/order/order-renderer.d.ts +1 -1
- package/dist/types/components/order/revogr-order-editor.d.ts +4 -10
- package/dist/types/components/overlay/autofill.service.d.ts +2 -2
- package/dist/types/components/overlay/keyboard.service.d.ts +1 -1
- package/dist/types/components/overlay/revogr-overlay-selection.d.ts +16 -13
- package/dist/types/components/overlay/selection.utils.d.ts +1 -1
- package/dist/types/components/revoGrid/plugin.service.d.ts +37 -0
- package/dist/types/components/revoGrid/revo-grid.d.ts +105 -61
- package/dist/types/components/revoGrid/viewport.service.d.ts +2 -2
- package/dist/types/components/rowHeaders/row-header-render.d.ts +2 -2
- package/dist/types/components/scroll/revogr-viewport-scroll.d.ts +2 -5
- package/dist/types/components/scrollable/revogr-scroll-virtual.d.ts +2 -3
- package/dist/types/components/selectionFocus/revogr-focus.d.ts +2 -2
- package/dist/types/components/selectionTempRange/revogr-temp-range.d.ts +2 -3
- package/dist/types/components/vnode/vnode-converter.d.ts +1 -1
- package/dist/types/components/vnode/vnode.utils.d.ts +2 -2
- package/dist/types/components.d.ts +191 -108
- package/dist/types/index.d.ts +1 -1
- package/dist/types/plugins/add-rows-on-paste.plugin.d.ts +14 -0
- package/dist/types/plugins/base.plugin.d.ts +3 -4
- package/dist/types/plugins/column.auto-size.plugin.d.ts +1 -1
- package/dist/types/plugins/column.stretch.plugin.d.ts +1 -1
- package/dist/types/plugins/export/csv.d.ts +1 -1
- package/dist/types/plugins/export/export.plugin.d.ts +4 -3
- package/dist/types/plugins/filter/filter.panel.d.ts +2 -2
- package/dist/types/plugins/filter/filter.plugin.d.ts +25 -7
- package/dist/types/plugins/filter/filter.types.d.ts +32 -10
- package/dist/types/plugins/groupingColumn/columnGroupsRenderer.d.ts +2 -2
- package/dist/types/plugins/groupingColumn/headerGroupRenderer.d.ts +3 -4
- package/dist/types/plugins/groupingRow/grouping.const.d.ts +3 -1
- package/dist/types/plugins/groupingRow/grouping.row.plugin.d.ts +15 -10
- package/dist/types/plugins/groupingRow/grouping.row.types.d.ts +38 -4
- package/dist/types/plugins/groupingRow/grouping.service.d.ts +9 -12
- package/dist/types/plugins/index.d.ts +2 -0
- package/dist/types/plugins/moveColumn/column.drag.plugin.d.ts +2 -2
- package/dist/types/plugins/sorting/sorting.func.d.ts +3 -0
- package/dist/types/plugins/sorting/sorting.plugin.d.ts +14 -13
- package/dist/types/plugins/sorting/sorting.types.d.ts +13 -0
- package/dist/types/services/column.data.provider.d.ts +5 -2
- package/dist/types/services/data.provider.d.ts +3 -1
- package/dist/types/services/dimension.provider.d.ts +9 -4
- package/dist/types/services/selection.store.connector.d.ts +4 -4
- package/dist/types/store/dataSource/data.proxy.d.ts +7 -9
- package/dist/types/store/dataSource/data.store.d.ts +2 -3
- package/dist/types/store/dataSource/trimmed.plugin.d.ts +1 -1
- package/dist/types/store/dimension/dimension.helpers.d.ts +1 -4
- package/dist/types/store/dimension/dimension.recalculate.plugin.d.ts +9 -0
- package/dist/types/store/dimension/dimension.store.d.ts +3 -2
- package/dist/types/store/dimension/dimension.trim.plugin.d.ts +13 -0
- package/dist/types/store/selection/selection.store.d.ts +1 -1
- package/dist/types/store/vp/viewport.store.d.ts +1 -1
- package/dist/types/types/events.d.ts +1 -1
- package/dist/types/types/interfaces.d.ts +36 -12
- package/dist/types/types/plugin.types.d.ts +17 -1
- package/dist/types/types/selection.d.ts +23 -17
- package/dist/types/types/viewport.interfaces.d.ts +1 -3
- package/dist/types/utils/column.utils.d.ts +1 -0
- package/hydrate/index.js +2490 -2135
- package/hydrate/index.mjs +2490 -2135
- package/package.json +20 -19
- package/readme.md +15 -17
- package/standalone/column.service.js +192 -160
- package/standalone/column.service.js.map +1 -1
- package/standalone/data.store.js +36 -25
- package/standalone/data.store.js.map +1 -1
- package/standalone/dimension.helpers.js +8 -10
- package/standalone/dimension.helpers.js.map +1 -1
- package/standalone/index.js +46 -6
- package/standalone/index.js.map +1 -1
- package/standalone/revo-grid.js +1275 -1022
- package/standalone/revo-grid.js.map +1 -1
- package/standalone/revogr-attribution2.js +1 -1
- package/standalone/revogr-attribution2.js.map +1 -1
- package/standalone/revogr-data2.js +26 -22
- package/standalone/revogr-data2.js.map +1 -1
- package/standalone/revogr-edit2.js +3 -3
- package/standalone/revogr-edit2.js.map +1 -1
- package/standalone/revogr-extra2.js +25 -4
- package/standalone/revogr-extra2.js.map +1 -1
- package/standalone/revogr-filter-panel.js +34 -14
- package/standalone/revogr-filter-panel.js.map +1 -1
- package/standalone/revogr-focus2.js +2 -1
- package/standalone/revogr-focus2.js.map +1 -1
- package/standalone/revogr-header2.js +6 -5
- package/standalone/revogr-header2.js.map +1 -1
- package/standalone/revogr-order-editor2.js +3 -0
- package/standalone/revogr-order-editor2.js.map +1 -1
- package/standalone/revogr-overlay-selection2.js +29 -17
- package/standalone/revogr-overlay-selection2.js.map +1 -1
- package/standalone/revogr-row-headers2.js +12 -9
- package/standalone/revogr-row-headers2.js.map +1 -1
- package/standalone/revogr-scroll-virtual2.js +6 -4
- package/standalone/revogr-scroll-virtual2.js.map +1 -1
- package/standalone/revogr-temp-range2.js +1 -1
- package/standalone/revogr-temp-range2.js.map +1 -1
- package/standalone/revogr-viewport-scroll2.js +27 -21
- package/standalone/revogr-viewport-scroll2.js.map +1 -1
- package/standalone/selection.utils.js +1 -0
- package/standalone/selection.utils.js.map +1 -1
- package/standalone/vnode-converter.js +1 -1
- package/standalone/vnode-converter.js.map +1 -1
- package/dist/cjs/column.drag.plugin-fcd892ec.js.map +0 -1
- package/dist/cjs/column.service-26c61ed6.js.map +0 -1
- package/dist/cjs/index-3ab26ab9.js +0 -513
- package/dist/cjs/index-3ab26ab9.js.map +0 -1
- package/dist/cjs/key.utils-f49d7bee.js +0 -101
- package/dist/cjs/key.utils-f49d7bee.js.map +0 -1
- package/dist/cjs/row-header-utils-c37f76e4.js.map +0 -1
- package/dist/cjs/text-editor-b756d6b3.js.map +0 -1
- package/dist/esm/column.drag.plugin-3cc77986.js.map +0 -1
- package/dist/esm/column.service-751345b2.js.map +0 -1
- package/dist/esm/index-1dcad6ef.js +0 -476
- package/dist/esm/index-1dcad6ef.js.map +0 -1
- package/dist/esm/row-header-utils-3dfbb81f.js.map +0 -1
- package/dist/esm/text-editor-901c3eb8.js.map +0 -1
- package/dist/revo-grid/column.drag.plugin-3cc77986.js +0 -5
- package/dist/revo-grid/column.drag.plugin-3cc77986.js.map +0 -1
- package/dist/revo-grid/column.service-751345b2.js +0 -5
- package/dist/revo-grid/column.service-751345b2.js.map +0 -1
- package/dist/revo-grid/debounce-72878ced.js +0 -5
- package/dist/revo-grid/debounce-72878ced.js.map +0 -1
- package/dist/revo-grid/edit.utils-6fc686b9.js +0 -5
- package/dist/revo-grid/edit.utils-6fc686b9.js.map +0 -1
- package/dist/revo-grid/header-cell-renderer-32d2ed96.js +0 -5
- package/dist/revo-grid/header-cell-renderer-32d2ed96.js.map +0 -1
- package/dist/revo-grid/index-1dcad6ef.js +0 -5
- package/dist/revo-grid/index-1dcad6ef.js.map +0 -1
- package/dist/revo-grid/key.utils-17273f42.js +0 -5
- package/dist/revo-grid/key.utils-17273f42.js.map +0 -1
- package/dist/revo-grid/row-header-utils-3dfbb81f.js +0 -5
- package/dist/revo-grid/row-header-utils-3dfbb81f.js.map +0 -1
- package/dist/revo-grid/text-editor-901c3eb8.js +0 -5
- package/dist/revo-grid/text-editor-901c3eb8.js.map +0 -1
- package/dist/revo-grid/throttle-138d69c3.js +0 -5
- package/dist/revo-grid/throttle-138d69c3.js.map +0 -1
- package/standalone/identity.js +0 -26
- package/standalone/identity.js.map +0 -1
|
@@ -5,16 +5,16 @@
|
|
|
5
5
|
|
|
6
6
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
7
7
|
|
|
8
|
-
const index
|
|
9
|
-
const column_service = require('./column.service-
|
|
10
|
-
const column_drag_plugin = require('./column.drag.plugin-
|
|
8
|
+
const index = require('./index-10d10c55.js');
|
|
9
|
+
const column_service = require('./column.service-831e1c92.js');
|
|
10
|
+
const column_drag_plugin = require('./column.drag.plugin-a6ef25bf.js');
|
|
11
|
+
const dimension_helpers = require('./dimension.helpers-1927ad24.js');
|
|
11
12
|
const debounce = require('./debounce-ec7a04b4.js');
|
|
12
|
-
const
|
|
13
|
-
const rowHeaderUtils = require('./row-header-utils-c37f76e4.js');
|
|
13
|
+
const viewport_store = require('./viewport.store-69b45f22.js');
|
|
14
14
|
const viewport_helpers = require('./viewport.helpers-e59a544e.js');
|
|
15
15
|
const events = require('./events-af8f6914.js');
|
|
16
16
|
require('./filter.button-b8debe72.js');
|
|
17
|
-
require('./header-cell-renderer-
|
|
17
|
+
require('./header-cell-renderer-53ecdcdb.js');
|
|
18
18
|
|
|
19
19
|
class ThemeCompact {
|
|
20
20
|
constructor() {
|
|
@@ -81,750 +81,6 @@ function getTheme(theme) {
|
|
|
81
81
|
return DEFAULT_THEME;
|
|
82
82
|
}
|
|
83
83
|
|
|
84
|
-
// provide collapse data
|
|
85
|
-
function doCollapse(pIndex, source) {
|
|
86
|
-
const model = source[pIndex];
|
|
87
|
-
const collapseValue = model[column_service.PSEUDO_GROUP_ITEM_VALUE];
|
|
88
|
-
const trimmed = {};
|
|
89
|
-
let i = pIndex + 1;
|
|
90
|
-
const total = source.length;
|
|
91
|
-
while (i < total) {
|
|
92
|
-
const currentModel = source[i];
|
|
93
|
-
if (column_service.isGrouping(currentModel)) {
|
|
94
|
-
const currentValue = currentModel[column_service.PSEUDO_GROUP_ITEM_VALUE];
|
|
95
|
-
if (!currentValue.length || !currentValue.startsWith(collapseValue + ',')) {
|
|
96
|
-
break;
|
|
97
|
-
}
|
|
98
|
-
currentModel[column_service.GROUP_EXPANDED] = false;
|
|
99
|
-
}
|
|
100
|
-
trimmed[i++] = true;
|
|
101
|
-
}
|
|
102
|
-
model[column_service.GROUP_EXPANDED] = false;
|
|
103
|
-
return { trimmed };
|
|
104
|
-
}
|
|
105
|
-
/**
|
|
106
|
-
*
|
|
107
|
-
* @param pIndex - physical index
|
|
108
|
-
* @param vIndex - virtual index, need to update item collection
|
|
109
|
-
* @param source - data source
|
|
110
|
-
* @param rowItemsIndexes - rgRow indexes
|
|
111
|
-
*/
|
|
112
|
-
function doExpand(vIndex, source, rowItemsIndexes) {
|
|
113
|
-
const physicalIndex = rowItemsIndexes[vIndex];
|
|
114
|
-
const model = source[physicalIndex];
|
|
115
|
-
const currentGroup = column_service.getParsedGroup(model[column_service.PSEUDO_GROUP_ITEM_ID]);
|
|
116
|
-
const trimmed = {};
|
|
117
|
-
// no group found
|
|
118
|
-
if (!currentGroup) {
|
|
119
|
-
return { trimmed };
|
|
120
|
-
}
|
|
121
|
-
const groupItems = [];
|
|
122
|
-
model[column_service.GROUP_EXPANDED] = true;
|
|
123
|
-
let i = physicalIndex + 1;
|
|
124
|
-
const total = source.length;
|
|
125
|
-
let groupLevelOnly = 0;
|
|
126
|
-
// go through all rows
|
|
127
|
-
while (i < total) {
|
|
128
|
-
const currentModel = source[i];
|
|
129
|
-
const isGroup = column_service.isGrouping(currentModel);
|
|
130
|
-
// group found
|
|
131
|
-
if (isGroup) {
|
|
132
|
-
if (!column_service.isSameGroup(currentGroup, model, currentModel)) {
|
|
133
|
-
break;
|
|
134
|
-
}
|
|
135
|
-
else if (!groupLevelOnly) {
|
|
136
|
-
// if get group first it's group only level
|
|
137
|
-
groupLevelOnly = currentModel[column_service.GROUP_DEPTH];
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
// level 0 or same depth
|
|
141
|
-
if (!groupLevelOnly || (isGroup && groupLevelOnly === currentModel[column_service.GROUP_DEPTH])) {
|
|
142
|
-
trimmed[i] = false;
|
|
143
|
-
groupItems.push(i);
|
|
144
|
-
}
|
|
145
|
-
i++;
|
|
146
|
-
}
|
|
147
|
-
const result = {
|
|
148
|
-
trimmed,
|
|
149
|
-
};
|
|
150
|
-
if (groupItems.length) {
|
|
151
|
-
const items = [...rowItemsIndexes];
|
|
152
|
-
items.splice(vIndex + 1, 0, ...groupItems);
|
|
153
|
-
result.items = items;
|
|
154
|
-
}
|
|
155
|
-
return result;
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
const TRIMMED_GROUPING = 'grouping';
|
|
159
|
-
/**
|
|
160
|
-
* Prepare trimming updated indexes for grouping
|
|
161
|
-
* @param initiallyTrimed
|
|
162
|
-
* @param firstLevelMap
|
|
163
|
-
* @param secondLevelMap
|
|
164
|
-
*/
|
|
165
|
-
function processDoubleConversionTrimmed(initiallyTrimed, firstLevelMap, secondLevelMap) {
|
|
166
|
-
const trimemedOptionsToUpgrade = {};
|
|
167
|
-
/**
|
|
168
|
-
* go through all groups except grouping
|
|
169
|
-
*/
|
|
170
|
-
for (let type in initiallyTrimed) {
|
|
171
|
-
if (type === TRIMMED_GROUPING) {
|
|
172
|
-
continue;
|
|
173
|
-
}
|
|
174
|
-
const items = initiallyTrimed[type];
|
|
175
|
-
const newItems = {};
|
|
176
|
-
for (let initialIndex in items) {
|
|
177
|
-
/**
|
|
178
|
-
* if item exists we find it in collection
|
|
179
|
-
* we support 2 level of conversions
|
|
180
|
-
*/
|
|
181
|
-
let newConversionIndex = firstLevelMap[initialIndex];
|
|
182
|
-
if (secondLevelMap) {
|
|
183
|
-
newConversionIndex = secondLevelMap[newConversionIndex];
|
|
184
|
-
}
|
|
185
|
-
/**
|
|
186
|
-
* if item was trimmed previously
|
|
187
|
-
* trimming makes sense to apply
|
|
188
|
-
*/
|
|
189
|
-
if (items[initialIndex]) {
|
|
190
|
-
newItems[newConversionIndex] = true;
|
|
191
|
-
/**
|
|
192
|
-
* If changes present apply changes to new source
|
|
193
|
-
*/
|
|
194
|
-
if (newConversionIndex !== parseInt(initialIndex, 10)) {
|
|
195
|
-
trimemedOptionsToUpgrade[type] = newItems;
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
|
-
return trimemedOptionsToUpgrade;
|
|
201
|
-
}
|
|
202
|
-
|
|
203
|
-
class GroupingRowPlugin extends column_drag_plugin.BasePlugin {
|
|
204
|
-
get hasProps() {
|
|
205
|
-
var _a, _b, _c;
|
|
206
|
-
return ((_a = this.options) === null || _a === void 0 ? void 0 : _a.props) && ((_c = (_b = this.options) === null || _b === void 0 ? void 0 : _b.props) === null || _c === void 0 ? void 0 : _c.length);
|
|
207
|
-
}
|
|
208
|
-
get store() {
|
|
209
|
-
return this.providers.data.stores[column_service.GROUPING_ROW_TYPE].store;
|
|
210
|
-
}
|
|
211
|
-
// proxy for items get
|
|
212
|
-
get rowItems() {
|
|
213
|
-
return this.store.get('items');
|
|
214
|
-
}
|
|
215
|
-
get trimmed() {
|
|
216
|
-
return this.store.get('trimmed');
|
|
217
|
-
}
|
|
218
|
-
constructor(revogrid, providers) {
|
|
219
|
-
super(revogrid, providers);
|
|
220
|
-
this.revogrid = revogrid;
|
|
221
|
-
this.providers = providers;
|
|
222
|
-
}
|
|
223
|
-
// befoce cell focus
|
|
224
|
-
onFocus(e) {
|
|
225
|
-
if (column_service.isGrouping(e.detail.model)) {
|
|
226
|
-
e.preventDefault();
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
// expand event triggered
|
|
230
|
-
onExpand({ virtualIndex }) {
|
|
231
|
-
const { source } = this.getSource();
|
|
232
|
-
let newTrimmed = this.trimmed[TRIMMED_GROUPING];
|
|
233
|
-
let i = column_service.getPhysical(this.store, virtualIndex);
|
|
234
|
-
const model = source[i];
|
|
235
|
-
const prevExpanded = model[column_service.GROUP_EXPANDED];
|
|
236
|
-
if (!prevExpanded) {
|
|
237
|
-
const { trimmed, items } = doExpand(virtualIndex, source, this.rowItems);
|
|
238
|
-
newTrimmed = Object.assign(Object.assign({}, newTrimmed), trimmed);
|
|
239
|
-
if (items) {
|
|
240
|
-
column_service.setItems(this.store, items);
|
|
241
|
-
}
|
|
242
|
-
}
|
|
243
|
-
else {
|
|
244
|
-
const { trimmed } = doCollapse(i, source);
|
|
245
|
-
newTrimmed = Object.assign(Object.assign({}, newTrimmed), trimmed);
|
|
246
|
-
this.revogrid.clearFocus();
|
|
247
|
-
}
|
|
248
|
-
this.store.set('source', source);
|
|
249
|
-
this.revogrid.addTrimmed(newTrimmed, TRIMMED_GROUPING);
|
|
250
|
-
}
|
|
251
|
-
// get source based on proxy item collection to preserve rgRow order
|
|
252
|
-
getSource(withoutGrouping = false) {
|
|
253
|
-
const source = this.store.get('source');
|
|
254
|
-
const items = this.store.get('proxyItems');
|
|
255
|
-
let index = 0;
|
|
256
|
-
// order important here, expected parent is first, then others
|
|
257
|
-
return items.reduce((result, i) => {
|
|
258
|
-
const model = source[i];
|
|
259
|
-
if (!withoutGrouping) {
|
|
260
|
-
result.source.push(model);
|
|
261
|
-
return result;
|
|
262
|
-
}
|
|
263
|
-
// grouping filter
|
|
264
|
-
if (column_service.isGrouping(model)) {
|
|
265
|
-
if (model[column_service.GROUP_EXPANDED]) {
|
|
266
|
-
result.prevExpanded[model[column_service.PSEUDO_GROUP_ITEM_VALUE]] = true;
|
|
267
|
-
}
|
|
268
|
-
}
|
|
269
|
-
else {
|
|
270
|
-
result.source.push(model);
|
|
271
|
-
result.oldNewIndexes[i] = index;
|
|
272
|
-
index++;
|
|
273
|
-
}
|
|
274
|
-
return result;
|
|
275
|
-
}, {
|
|
276
|
-
source: [],
|
|
277
|
-
prevExpanded: {},
|
|
278
|
-
oldNewIndexes: {},
|
|
279
|
-
});
|
|
280
|
-
}
|
|
281
|
-
setColumnGrouping(cols) {
|
|
282
|
-
// if 0 column as holder
|
|
283
|
-
if (cols === null || cols === void 0 ? void 0 : cols.length) {
|
|
284
|
-
cols[0][column_service.PSEUDO_GROUP_COLUMN] = true;
|
|
285
|
-
return true;
|
|
286
|
-
}
|
|
287
|
-
return false;
|
|
288
|
-
}
|
|
289
|
-
setColumns({ columns }) {
|
|
290
|
-
for (let type of column_drag_plugin.columnTypes) {
|
|
291
|
-
if (this.setColumnGrouping(columns[type])) {
|
|
292
|
-
break;
|
|
293
|
-
}
|
|
294
|
-
}
|
|
295
|
-
}
|
|
296
|
-
// evaluate drag between groups
|
|
297
|
-
onDrag(e) {
|
|
298
|
-
const { from, to } = e.detail;
|
|
299
|
-
const isDown = to - from >= 0;
|
|
300
|
-
const { source } = this.getSource();
|
|
301
|
-
const items = this.rowItems;
|
|
302
|
-
let i = isDown ? from : to;
|
|
303
|
-
const end = isDown ? to : from;
|
|
304
|
-
for (; i < end; i++) {
|
|
305
|
-
const model = source[items[i]];
|
|
306
|
-
const isGroup = column_service.isGrouping(model);
|
|
307
|
-
if (isGroup) {
|
|
308
|
-
e.preventDefault();
|
|
309
|
-
return;
|
|
310
|
-
}
|
|
311
|
-
}
|
|
312
|
-
}
|
|
313
|
-
beforeTrimmedApply(trimmed, type) {
|
|
314
|
-
/** Before filter apply remove grouping filtering */
|
|
315
|
-
if (type === column_drag_plugin.FILTER_TRIMMED_TYPE) {
|
|
316
|
-
const source = this.store.get('source');
|
|
317
|
-
for (let index in trimmed) {
|
|
318
|
-
if (trimmed[index] && column_service.isGrouping(source[index])) {
|
|
319
|
-
trimmed[index] = false;
|
|
320
|
-
}
|
|
321
|
-
}
|
|
322
|
-
}
|
|
323
|
-
}
|
|
324
|
-
// subscribe to grid events to process them accordingly
|
|
325
|
-
subscribe() {
|
|
326
|
-
/** if grouping present and new data source arrived */
|
|
327
|
-
this.addEventListener('beforesourceset', ({ detail }) => this.onDataSet(detail));
|
|
328
|
-
this.addEventListener('beforecolumnsset', ({ detail }) => this.setColumns(detail));
|
|
329
|
-
/**
|
|
330
|
-
* filter applied need to clear grouping and apply again
|
|
331
|
-
* based on new results can be new grouping
|
|
332
|
-
*/
|
|
333
|
-
this.addEventListener('beforetrimmed', ({ detail: { trimmed, trimmedType } }) => this.beforeTrimmedApply(trimmed, trimmedType));
|
|
334
|
-
/**
|
|
335
|
-
* sorting applied need to clear grouping and apply again
|
|
336
|
-
* based on new results whole grouping order will changed
|
|
337
|
-
*/
|
|
338
|
-
this.addEventListener('aftersortingapply', () => this.doSourceUpdate(Object.assign({}, this.options)));
|
|
339
|
-
/**
|
|
340
|
-
* Apply logic for focus inside of grouping
|
|
341
|
-
* We can't focus on grouping rows, navigation only inside of groups for now
|
|
342
|
-
*/
|
|
343
|
-
this.addEventListener('beforecellfocus', e => this.onFocus(e));
|
|
344
|
-
/**
|
|
345
|
-
* Prevent rgRow drag outside the group
|
|
346
|
-
*/
|
|
347
|
-
this.addEventListener('roworderchanged', e => this.onDrag(e));
|
|
348
|
-
/**
|
|
349
|
-
* When grouping expand icon was clicked
|
|
350
|
-
*/
|
|
351
|
-
this.addEventListener(column_service.GROUP_EXPAND_EVENT, ({ detail }) => this.onExpand(detail));
|
|
352
|
-
}
|
|
353
|
-
/**
|
|
354
|
-
* Starts global source update with group clearing and applying new one
|
|
355
|
-
* Initiated when need to reapply grouping
|
|
356
|
-
*/
|
|
357
|
-
doSourceUpdate(options) {
|
|
358
|
-
var _a;
|
|
359
|
-
if (!this.hasProps) {
|
|
360
|
-
return;
|
|
361
|
-
}
|
|
362
|
-
/**
|
|
363
|
-
* Get source without grouping
|
|
364
|
-
* @param newOldIndexMap - provides us mapping with new indexes vs old indexes, we would use it for trimmed mapping
|
|
365
|
-
*/
|
|
366
|
-
const { source, prevExpanded, oldNewIndexes } = this.getSource(true);
|
|
367
|
-
/**
|
|
368
|
-
* Group again
|
|
369
|
-
* @param oldNewIndexMap - provides us mapping with new indexes vs old indexes
|
|
370
|
-
*/
|
|
371
|
-
const { sourceWithGroups, depth, trimmed, oldNewIndexMap, childrenByGroup, } = column_service.gatherGrouping(source, ((_a = this.options) === null || _a === void 0 ? void 0 : _a.props) || [], Object.assign({ prevExpanded }, options));
|
|
372
|
-
// setup source
|
|
373
|
-
this.providers.data.setData(sourceWithGroups, column_service.GROUPING_ROW_TYPE, this.revogrid.disableVirtualY, { depth, customRenderer: options === null || options === void 0 ? void 0 : options.groupLabelTemplate }, true);
|
|
374
|
-
this.updateTrimmed(trimmed, childrenByGroup, oldNewIndexes !== null && oldNewIndexes !== void 0 ? oldNewIndexes : {}, oldNewIndexMap);
|
|
375
|
-
}
|
|
376
|
-
/**
|
|
377
|
-
* Apply grouping on data set
|
|
378
|
-
* Clear grouping from source
|
|
379
|
-
* If source came from other plugin
|
|
380
|
-
*/
|
|
381
|
-
onDataSet(data) {
|
|
382
|
-
var _a;
|
|
383
|
-
if (!this.hasProps || !(data === null || data === void 0 ? void 0 : data.source) || !data.source.length) {
|
|
384
|
-
return;
|
|
385
|
-
}
|
|
386
|
-
const source = data.source.filter(s => !column_service.isGrouping(s));
|
|
387
|
-
const expanded = this.revogrid.grouping || {};
|
|
388
|
-
const { sourceWithGroups, depth, trimmed, oldNewIndexMap, childrenByGroup, } = column_service.gatherGrouping(source, ((_a = this.options) === null || _a === void 0 ? void 0 : _a.props) || [], Object.assign({}, (expanded || {})));
|
|
389
|
-
data.source = sourceWithGroups;
|
|
390
|
-
this.providers.data.setGrouping({ depth });
|
|
391
|
-
this.updateTrimmed(trimmed, childrenByGroup, oldNewIndexMap);
|
|
392
|
-
}
|
|
393
|
-
// apply grouping
|
|
394
|
-
setGrouping(options) {
|
|
395
|
-
// unsubscribe from all events when group applied
|
|
396
|
-
this.clearSubscriptions();
|
|
397
|
-
this.options = options;
|
|
398
|
-
// clear props, no grouping exists
|
|
399
|
-
if (!options.props || !Object.keys(options.props).length) {
|
|
400
|
-
this.clearGrouping();
|
|
401
|
-
return;
|
|
402
|
-
}
|
|
403
|
-
// props exist and source inited
|
|
404
|
-
const { source } = this.getSource();
|
|
405
|
-
if (source.length) {
|
|
406
|
-
this.doSourceUpdate(Object.assign({}, options));
|
|
407
|
-
}
|
|
408
|
-
// props exist and columns inited
|
|
409
|
-
for (let t of column_drag_plugin.columnTypes) {
|
|
410
|
-
if (this.setColumnGrouping(this.providers.column.getColumns(t))) {
|
|
411
|
-
this.providers.column.refreshByType(t);
|
|
412
|
-
break;
|
|
413
|
-
}
|
|
414
|
-
}
|
|
415
|
-
// if has any grouping subscribe to events again
|
|
416
|
-
this.subscribe();
|
|
417
|
-
}
|
|
418
|
-
// clear grouping
|
|
419
|
-
clearGrouping() {
|
|
420
|
-
// clear columns
|
|
421
|
-
column_drag_plugin.columnTypes.forEach(t => {
|
|
422
|
-
const cols = this.providers.column.getColumns(t);
|
|
423
|
-
let deleted = false;
|
|
424
|
-
cols.forEach(c => {
|
|
425
|
-
if (column_service.isGroupingColumn(c)) {
|
|
426
|
-
delete c[column_service.PSEUDO_GROUP_COLUMN];
|
|
427
|
-
deleted = true;
|
|
428
|
-
}
|
|
429
|
-
});
|
|
430
|
-
// if column store had grouping clear and refresh
|
|
431
|
-
if (deleted) {
|
|
432
|
-
this.providers.column.refreshByType(t);
|
|
433
|
-
}
|
|
434
|
-
});
|
|
435
|
-
// clear rows
|
|
436
|
-
const { source, oldNewIndexes } = this.getSource(true);
|
|
437
|
-
this.providers.data.setData(source, column_service.GROUPING_ROW_TYPE, this.revogrid.disableVirtualY, undefined, true);
|
|
438
|
-
this.updateTrimmed(undefined, undefined, oldNewIndexes);
|
|
439
|
-
}
|
|
440
|
-
updateTrimmed(trimmedGroup = {}, _childrenByGroup = {}, firstLevelMap = {}, secondLevelMap) {
|
|
441
|
-
// map previously trimmed data
|
|
442
|
-
const trimemedOptionsToUpgrade = processDoubleConversionTrimmed(this.trimmed, firstLevelMap, secondLevelMap);
|
|
443
|
-
for (let type in trimemedOptionsToUpgrade) {
|
|
444
|
-
this.revogrid.addTrimmed(trimemedOptionsToUpgrade[type], type);
|
|
445
|
-
}
|
|
446
|
-
// const emptyGroups = this.filterOutEmptyGroups(trimemedOptionsToUpgrade, childrenByGroup);
|
|
447
|
-
// setup trimmed data for grouping
|
|
448
|
-
this.revogrid.addTrimmed(Object.assign({}, trimmedGroup), TRIMMED_GROUPING);
|
|
449
|
-
}
|
|
450
|
-
}
|
|
451
|
-
|
|
452
|
-
/** `Object#toString` result references. */
|
|
453
|
-
var stringTag = '[object String]';
|
|
454
|
-
|
|
455
|
-
/**
|
|
456
|
-
* Checks if `value` is classified as a `String` primitive or object.
|
|
457
|
-
*
|
|
458
|
-
* @static
|
|
459
|
-
* @since 0.1.0
|
|
460
|
-
* @memberOf _
|
|
461
|
-
* @category Lang
|
|
462
|
-
* @param {*} value The value to check.
|
|
463
|
-
* @returns {boolean} Returns `true` if `value` is a string, else `false`.
|
|
464
|
-
* @example
|
|
465
|
-
*
|
|
466
|
-
* _.isString('abc');
|
|
467
|
-
* // => true
|
|
468
|
-
*
|
|
469
|
-
* _.isString(1);
|
|
470
|
-
* // => false
|
|
471
|
-
*/
|
|
472
|
-
function isString(value) {
|
|
473
|
-
return typeof value == 'string' ||
|
|
474
|
-
(!column_service.isArray(value) && debounce.isObjectLike(value) && debounce.baseGetTag(value) == stringTag);
|
|
475
|
-
}
|
|
476
|
-
|
|
477
|
-
/**
|
|
478
|
-
* Gets the size of an ASCII `string`.
|
|
479
|
-
*
|
|
480
|
-
* @private
|
|
481
|
-
* @param {string} string The string inspect.
|
|
482
|
-
* @returns {number} Returns the string size.
|
|
483
|
-
*/
|
|
484
|
-
var asciiSize = column_service.baseProperty('length');
|
|
485
|
-
|
|
486
|
-
const asciiSize$1 = asciiSize;
|
|
487
|
-
|
|
488
|
-
/** Used to compose unicode character classes. */
|
|
489
|
-
var rsAstralRange$1 = '\\ud800-\\udfff',
|
|
490
|
-
rsComboMarksRange$1 = '\\u0300-\\u036f',
|
|
491
|
-
reComboHalfMarksRange$1 = '\\ufe20-\\ufe2f',
|
|
492
|
-
rsComboSymbolsRange$1 = '\\u20d0-\\u20ff',
|
|
493
|
-
rsComboRange$1 = rsComboMarksRange$1 + reComboHalfMarksRange$1 + rsComboSymbolsRange$1,
|
|
494
|
-
rsVarRange$1 = '\\ufe0e\\ufe0f';
|
|
495
|
-
|
|
496
|
-
/** Used to compose unicode capture groups. */
|
|
497
|
-
var rsZWJ$1 = '\\u200d';
|
|
498
|
-
|
|
499
|
-
/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */
|
|
500
|
-
var reHasUnicode = RegExp('[' + rsZWJ$1 + rsAstralRange$1 + rsComboRange$1 + rsVarRange$1 + ']');
|
|
501
|
-
|
|
502
|
-
/**
|
|
503
|
-
* Checks if `string` contains Unicode symbols.
|
|
504
|
-
*
|
|
505
|
-
* @private
|
|
506
|
-
* @param {string} string The string to inspect.
|
|
507
|
-
* @returns {boolean} Returns `true` if a symbol is found, else `false`.
|
|
508
|
-
*/
|
|
509
|
-
function hasUnicode(string) {
|
|
510
|
-
return reHasUnicode.test(string);
|
|
511
|
-
}
|
|
512
|
-
|
|
513
|
-
/** Used to compose unicode character classes. */
|
|
514
|
-
var rsAstralRange = '\\ud800-\\udfff',
|
|
515
|
-
rsComboMarksRange = '\\u0300-\\u036f',
|
|
516
|
-
reComboHalfMarksRange = '\\ufe20-\\ufe2f',
|
|
517
|
-
rsComboSymbolsRange = '\\u20d0-\\u20ff',
|
|
518
|
-
rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,
|
|
519
|
-
rsVarRange = '\\ufe0e\\ufe0f';
|
|
520
|
-
|
|
521
|
-
/** Used to compose unicode capture groups. */
|
|
522
|
-
var rsAstral = '[' + rsAstralRange + ']',
|
|
523
|
-
rsCombo = '[' + rsComboRange + ']',
|
|
524
|
-
rsFitz = '\\ud83c[\\udffb-\\udfff]',
|
|
525
|
-
rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',
|
|
526
|
-
rsNonAstral = '[^' + rsAstralRange + ']',
|
|
527
|
-
rsRegional = '(?:\\ud83c[\\udde6-\\uddff]){2}',
|
|
528
|
-
rsSurrPair = '[\\ud800-\\udbff][\\udc00-\\udfff]',
|
|
529
|
-
rsZWJ = '\\u200d';
|
|
530
|
-
|
|
531
|
-
/** Used to compose unicode regexes. */
|
|
532
|
-
var reOptMod = rsModifier + '?',
|
|
533
|
-
rsOptVar = '[' + rsVarRange + ']?',
|
|
534
|
-
rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',
|
|
535
|
-
rsSeq = rsOptVar + reOptMod + rsOptJoin,
|
|
536
|
-
rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';
|
|
537
|
-
|
|
538
|
-
/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */
|
|
539
|
-
var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');
|
|
540
|
-
|
|
541
|
-
/**
|
|
542
|
-
* Gets the size of a Unicode `string`.
|
|
543
|
-
*
|
|
544
|
-
* @private
|
|
545
|
-
* @param {string} string The string inspect.
|
|
546
|
-
* @returns {number} Returns the string size.
|
|
547
|
-
*/
|
|
548
|
-
function unicodeSize(string) {
|
|
549
|
-
var result = reUnicode.lastIndex = 0;
|
|
550
|
-
while (reUnicode.test(string)) {
|
|
551
|
-
++result;
|
|
552
|
-
}
|
|
553
|
-
return result;
|
|
554
|
-
}
|
|
555
|
-
|
|
556
|
-
/**
|
|
557
|
-
* Gets the number of symbols in `string`.
|
|
558
|
-
*
|
|
559
|
-
* @private
|
|
560
|
-
* @param {string} string The string to inspect.
|
|
561
|
-
* @returns {number} Returns the string size.
|
|
562
|
-
*/
|
|
563
|
-
function stringSize(string) {
|
|
564
|
-
return hasUnicode(string)
|
|
565
|
-
? unicodeSize(string)
|
|
566
|
-
: asciiSize$1(string);
|
|
567
|
-
}
|
|
568
|
-
|
|
569
|
-
/** `Object#toString` result references. */
|
|
570
|
-
var mapTag = '[object Map]',
|
|
571
|
-
setTag = '[object Set]';
|
|
572
|
-
|
|
573
|
-
/**
|
|
574
|
-
* Gets the size of `collection` by returning its length for array-like
|
|
575
|
-
* values or the number of own enumerable string keyed properties for objects.
|
|
576
|
-
*
|
|
577
|
-
* @static
|
|
578
|
-
* @memberOf _
|
|
579
|
-
* @since 0.1.0
|
|
580
|
-
* @category Collection
|
|
581
|
-
* @param {Array|Object|string} collection The collection to inspect.
|
|
582
|
-
* @returns {number} Returns the collection size.
|
|
583
|
-
* @example
|
|
584
|
-
*
|
|
585
|
-
* _.size([1, 2, 3]);
|
|
586
|
-
* // => 3
|
|
587
|
-
*
|
|
588
|
-
* _.size({ 'a': 1, 'b': 2 });
|
|
589
|
-
* // => 2
|
|
590
|
-
*
|
|
591
|
-
* _.size('pebbles');
|
|
592
|
-
* // => 7
|
|
593
|
-
*/
|
|
594
|
-
function size(collection) {
|
|
595
|
-
if (collection == null) {
|
|
596
|
-
return 0;
|
|
597
|
-
}
|
|
598
|
-
if (column_service.isArrayLike(collection)) {
|
|
599
|
-
return isString(collection) ? stringSize(collection) : collection.length;
|
|
600
|
-
}
|
|
601
|
-
var tag = column_service.getTag(collection);
|
|
602
|
-
if (tag == mapTag || tag == setTag) {
|
|
603
|
-
return collection.size;
|
|
604
|
-
}
|
|
605
|
-
return column_service.baseKeys(collection).length;
|
|
606
|
-
}
|
|
607
|
-
|
|
608
|
-
/**
|
|
609
|
-
* Lifecycle
|
|
610
|
-
* 1. @event `beforesorting` - Triggered when sorting just starts. Nothing has happened yet. This can be triggered from a column or from the source. If the type is from rows, the column will be undefined.
|
|
611
|
-
* 2. @method `updateColumnSorting` - Updates the column sorting icon on the grid and the column itself, but the data remains untouched.
|
|
612
|
-
* 3. @event `beforesortingapply` - Triggered before the sorting data is applied to the data source. You can prevent this event, and the data will not be sorted. This event is only called from a column sorting click.
|
|
613
|
-
* 4. @event `aftersortingapply` - Triggered after sorting has been applied and completed. This event occurs for both row and column sorting.
|
|
614
|
-
*
|
|
615
|
-
* Note: If you prevent an event, it will not proceed to the subsequent steps.
|
|
616
|
-
*/
|
|
617
|
-
class SortingPlugin extends column_drag_plugin.BasePlugin {
|
|
618
|
-
runSorting(order, comparison) {
|
|
619
|
-
var _a;
|
|
620
|
-
this.sort(order, comparison);
|
|
621
|
-
(_a = this.sortingPromise) === null || _a === void 0 ? void 0 : _a.call(this);
|
|
622
|
-
this.sortingPromise = null;
|
|
623
|
-
}
|
|
624
|
-
constructor(revogrid, providers) {
|
|
625
|
-
super(revogrid, providers);
|
|
626
|
-
this.revogrid = revogrid;
|
|
627
|
-
this.sortingPromise = null;
|
|
628
|
-
this.postponeSort = debounce.debounce((order, comparison) => this.runSorting(order, comparison), 50);
|
|
629
|
-
const beforeanysource = ({ detail: { type }, }) => {
|
|
630
|
-
// if sorting was provided - sort data
|
|
631
|
-
if (!!this.sorting && this.sortingFunc) {
|
|
632
|
-
const beforeEvent = this.emit('beforesorting', { type });
|
|
633
|
-
if (beforeEvent.defaultPrevented) {
|
|
634
|
-
return;
|
|
635
|
-
}
|
|
636
|
-
this.startSorting(this.sorting, this.sortingFunc);
|
|
637
|
-
}
|
|
638
|
-
};
|
|
639
|
-
const aftercolumnsset = ({ detail: { order }, }) => {
|
|
640
|
-
const columns = this.providers.column.getColumns();
|
|
641
|
-
const sortingFunc = {};
|
|
642
|
-
for (let prop in order) {
|
|
643
|
-
const cmp = this.getComparer(column_service.getColumnByProp(columns, prop), order[prop]);
|
|
644
|
-
sortingFunc[prop] = cmp;
|
|
645
|
-
}
|
|
646
|
-
this.runSorting(order, sortingFunc);
|
|
647
|
-
};
|
|
648
|
-
const headerclick = (e) => {
|
|
649
|
-
var _a, _b;
|
|
650
|
-
if (e.defaultPrevented) {
|
|
651
|
-
return;
|
|
652
|
-
}
|
|
653
|
-
if (!e.detail.column.sortable) {
|
|
654
|
-
return;
|
|
655
|
-
}
|
|
656
|
-
this.headerclick(e.detail.column, e.detail.index, (_b = (_a = e.detail) === null || _a === void 0 ? void 0 : _a.originalEvent) === null || _b === void 0 ? void 0 : _b.shiftKey);
|
|
657
|
-
};
|
|
658
|
-
this.addEventListener('beforeanysource', beforeanysource);
|
|
659
|
-
this.addEventListener('aftercolumnsset', aftercolumnsset);
|
|
660
|
-
this.addEventListener('beforeheaderclick', headerclick);
|
|
661
|
-
}
|
|
662
|
-
startSorting(order, sortingFunc) {
|
|
663
|
-
if (!this.sortingPromise) {
|
|
664
|
-
this.revogrid.jobsBeforeRender.push(new Promise(resolve => {
|
|
665
|
-
this.sortingPromise = resolve;
|
|
666
|
-
}));
|
|
667
|
-
}
|
|
668
|
-
this.postponeSort(order, sortingFunc);
|
|
669
|
-
}
|
|
670
|
-
getComparer(column, order) {
|
|
671
|
-
var _a;
|
|
672
|
-
const cellCmp = ((_a = column === null || column === void 0 ? void 0 : column.cellCompare) === null || _a === void 0 ? void 0 : _a.bind({ order })) || this.defaultCellCompare;
|
|
673
|
-
if (order == 'asc') {
|
|
674
|
-
return cellCmp;
|
|
675
|
-
}
|
|
676
|
-
if (order == 'desc') {
|
|
677
|
-
return this.descCellCompare(cellCmp);
|
|
678
|
-
}
|
|
679
|
-
return undefined;
|
|
680
|
-
}
|
|
681
|
-
/**
|
|
682
|
-
* Apply sorting to data on header click
|
|
683
|
-
* If additive - add to existing sorting, multiple columns can be sorted
|
|
684
|
-
*/
|
|
685
|
-
headerclick(column, index, additive) {
|
|
686
|
-
var _a, _b;
|
|
687
|
-
let order = this.getNextOrder(column.order);
|
|
688
|
-
const beforeEvent = this.emit('beforesorting', { column, order, additive });
|
|
689
|
-
if (beforeEvent.defaultPrevented) {
|
|
690
|
-
return;
|
|
691
|
-
}
|
|
692
|
-
order = beforeEvent.detail.order;
|
|
693
|
-
const newCol = this.providers.column.updateColumnSorting(beforeEvent.detail.column, index, order, additive);
|
|
694
|
-
// apply sort data
|
|
695
|
-
const beforeApplyEvent = this.emit('beforesortingapply', {
|
|
696
|
-
column: newCol,
|
|
697
|
-
order,
|
|
698
|
-
additive,
|
|
699
|
-
});
|
|
700
|
-
if (beforeApplyEvent.defaultPrevented) {
|
|
701
|
-
return;
|
|
702
|
-
}
|
|
703
|
-
order = beforeApplyEvent.detail.order;
|
|
704
|
-
const cmp = this.getComparer(column, order);
|
|
705
|
-
if (additive && this.sorting) {
|
|
706
|
-
const sorting = {};
|
|
707
|
-
const sortingFunc = {};
|
|
708
|
-
this.sorting = Object.assign(Object.assign({}, this.sorting), sorting);
|
|
709
|
-
// extend sorting function with new sorting for multiple columns sorting
|
|
710
|
-
this.sortingFunc = Object.assign(Object.assign({}, this.sortingFunc), sortingFunc);
|
|
711
|
-
if (column.prop in sorting && size(sorting) > 1 && order === undefined) {
|
|
712
|
-
delete sorting[column.prop];
|
|
713
|
-
delete sortingFunc[column.prop];
|
|
714
|
-
}
|
|
715
|
-
else {
|
|
716
|
-
sorting[column.prop] = order;
|
|
717
|
-
sortingFunc[column.prop] = cmp;
|
|
718
|
-
}
|
|
719
|
-
}
|
|
720
|
-
else {
|
|
721
|
-
if (order) {
|
|
722
|
-
// reset sorting
|
|
723
|
-
this.sorting = { [column.prop]: order };
|
|
724
|
-
this.sortingFunc = { [column.prop]: cmp };
|
|
725
|
-
}
|
|
726
|
-
else {
|
|
727
|
-
(_a = this.sorting) === null || _a === void 0 ? true : delete _a[column.prop];
|
|
728
|
-
(_b = this.sortingFunc) === null || _b === void 0 ? true : delete _b[column.prop];
|
|
729
|
-
}
|
|
730
|
-
}
|
|
731
|
-
this.startSorting(this.sorting, this.sortingFunc);
|
|
732
|
-
}
|
|
733
|
-
/**
|
|
734
|
-
* Sort items by sorting function
|
|
735
|
-
* @requires proxyItems applied to row store
|
|
736
|
-
* @requires source applied to row store
|
|
737
|
-
*
|
|
738
|
-
* @param sorting - per column sorting
|
|
739
|
-
* @param data - this.stores['rgRow'].store.get('source')
|
|
740
|
-
*/
|
|
741
|
-
sort(sorting, sortingFunc, types = column_drag_plugin.rowTypes) {
|
|
742
|
-
// if no sorting - reset
|
|
743
|
-
if (!size(sorting)) {
|
|
744
|
-
this.sorting = undefined;
|
|
745
|
-
this.sortingFunc = undefined;
|
|
746
|
-
for (let type of types) {
|
|
747
|
-
const storeService = this.providers.data.stores[type];
|
|
748
|
-
// row data
|
|
749
|
-
const source = storeService.store.get('source');
|
|
750
|
-
// row indexes
|
|
751
|
-
const proxyItems = storeService.store.get('proxyItems');
|
|
752
|
-
// row indexes
|
|
753
|
-
const newItemsOrder = storeService.store.get('items'); // recover indexes range(0, source.length)
|
|
754
|
-
this.providers.dimension.updateSizesPositionByNewDataIndexes(type, newItemsOrder, proxyItems);
|
|
755
|
-
storeService.setData({ proxyItems: newItemsOrder, source: [...source] });
|
|
756
|
-
}
|
|
757
|
-
}
|
|
758
|
-
else {
|
|
759
|
-
// set sorting
|
|
760
|
-
this.sorting = sorting;
|
|
761
|
-
this.sortingFunc = sortingFunc;
|
|
762
|
-
for (let type of types) {
|
|
763
|
-
const storeService = this.providers.data.stores[type];
|
|
764
|
-
// row data
|
|
765
|
-
const source = storeService.store.get('source');
|
|
766
|
-
// row indexes
|
|
767
|
-
const proxyItems = storeService.store.get('proxyItems');
|
|
768
|
-
const newItemsOrder = this.sortIndexByItems([...proxyItems], source, sortingFunc);
|
|
769
|
-
this.providers.dimension.updateSizesPositionByNewDataIndexes(type, newItemsOrder, proxyItems);
|
|
770
|
-
storeService.setData({
|
|
771
|
-
proxyItems: newItemsOrder,
|
|
772
|
-
source: [...source],
|
|
773
|
-
});
|
|
774
|
-
}
|
|
775
|
-
}
|
|
776
|
-
this.emit('aftersortingapply');
|
|
777
|
-
}
|
|
778
|
-
defaultCellCompare(prop, a, b) {
|
|
779
|
-
var _a, _b;
|
|
780
|
-
const av = (_a = a === null || a === void 0 ? void 0 : a[prop]) === null || _a === void 0 ? void 0 : _a.toString().toLowerCase();
|
|
781
|
-
const bv = (_b = b === null || b === void 0 ? void 0 : b[prop]) === null || _b === void 0 ? void 0 : _b.toString().toLowerCase();
|
|
782
|
-
return av == bv ? 0 : av > bv ? 1 : -1;
|
|
783
|
-
}
|
|
784
|
-
descCellCompare(cmp) {
|
|
785
|
-
return (prop, a, b) => {
|
|
786
|
-
return -1 * cmp(prop, a, b);
|
|
787
|
-
};
|
|
788
|
-
}
|
|
789
|
-
sortIndexByItems(indexes, source, sortingFunc = {}) {
|
|
790
|
-
// if no sorting - return unsorted indexes
|
|
791
|
-
if (Object.entries(sortingFunc).length === 0) {
|
|
792
|
-
// Unsorted indexes
|
|
793
|
-
return [...Array(indexes.length).keys()];
|
|
794
|
-
}
|
|
795
|
-
//
|
|
796
|
-
/**
|
|
797
|
-
* go through all indexes and align in new order
|
|
798
|
-
* performs a multi-level sorting by applying multiple comparison functions to determine the order of the items based on different properties.
|
|
799
|
-
*/
|
|
800
|
-
return indexes.sort((a, b) => {
|
|
801
|
-
for (const [prop, cmp] of Object.entries(sortingFunc)) {
|
|
802
|
-
const itemA = source[a];
|
|
803
|
-
const itemB = source[b];
|
|
804
|
-
/**
|
|
805
|
-
* If the comparison function returns a non-zero value (sorted), it means that the items should be sorted based on the given property. In such a case, the function immediately returns the sorted value, indicating the order in which the items should be arranged.
|
|
806
|
-
* If none of the comparison functions result in a non-zero value, indicating that the items are equal or should remain in the same order, the function eventually returns 0.
|
|
807
|
-
*/
|
|
808
|
-
const sorted = cmp === null || cmp === void 0 ? void 0 : cmp(prop, itemA, itemB);
|
|
809
|
-
if (sorted) {
|
|
810
|
-
return sorted;
|
|
811
|
-
}
|
|
812
|
-
}
|
|
813
|
-
return 0;
|
|
814
|
-
});
|
|
815
|
-
}
|
|
816
|
-
getNextOrder(currentOrder) {
|
|
817
|
-
switch (currentOrder) {
|
|
818
|
-
case undefined:
|
|
819
|
-
return 'asc';
|
|
820
|
-
case 'asc':
|
|
821
|
-
return 'desc';
|
|
822
|
-
case 'desc':
|
|
823
|
-
return undefined;
|
|
824
|
-
}
|
|
825
|
-
}
|
|
826
|
-
}
|
|
827
|
-
|
|
828
84
|
class ColumnDataProvider {
|
|
829
85
|
get order() {
|
|
830
86
|
const order = {};
|
|
@@ -843,15 +99,15 @@ class ColumnDataProvider {
|
|
|
843
99
|
this.sorting = null;
|
|
844
100
|
this.collection = null;
|
|
845
101
|
this.dataSources = column_drag_plugin.columnTypes.reduce((sources, k) => {
|
|
846
|
-
sources[k] = new
|
|
102
|
+
sources[k] = new dimension_helpers.DataStore(k);
|
|
847
103
|
return sources;
|
|
848
104
|
}, {});
|
|
849
105
|
}
|
|
850
|
-
column(c,
|
|
851
|
-
return this.getColumn(c,
|
|
106
|
+
column(c, type = 'rgCol') {
|
|
107
|
+
return this.getColumn(c, type);
|
|
852
108
|
}
|
|
853
109
|
getColumn(virtualIndex, type) {
|
|
854
|
-
return
|
|
110
|
+
return dimension_helpers.getSourceItem(this.dataSources[type].store, virtualIndex);
|
|
855
111
|
}
|
|
856
112
|
getRawColumns() {
|
|
857
113
|
return column_service.reduce(this.dataSources, (result, item, type) => {
|
|
@@ -871,7 +127,7 @@ class ColumnDataProvider {
|
|
|
871
127
|
return column_drag_plugin.columnTypes.reduce((r, t) => [...r, ...columnsByType[t]], []);
|
|
872
128
|
}
|
|
873
129
|
getColumnIndexByProp(prop, type) {
|
|
874
|
-
return
|
|
130
|
+
return dimension_helpers.getSourceItemVirtualIndexByProp(this.dataSources[type].store, prop);
|
|
875
131
|
}
|
|
876
132
|
getColumnByProp(prop) {
|
|
877
133
|
var _a;
|
|
@@ -880,6 +136,9 @@ class ColumnDataProvider {
|
|
|
880
136
|
refreshByType(type) {
|
|
881
137
|
this.dataSources[type].refresh();
|
|
882
138
|
}
|
|
139
|
+
/**
|
|
140
|
+
* Main method to set columns
|
|
141
|
+
*/
|
|
883
142
|
setColumns(data) {
|
|
884
143
|
column_drag_plugin.columnTypes.forEach(k => {
|
|
885
144
|
// set columns data
|
|
@@ -938,12 +197,12 @@ class ColumnDataProvider {
|
|
|
938
197
|
continue;
|
|
939
198
|
}
|
|
940
199
|
const type = t;
|
|
941
|
-
|
|
200
|
+
dimension_helpers.setSourceByPhysicalIndex(this.dataSources[type].store, colByIndex[type] || {});
|
|
942
201
|
}
|
|
943
202
|
}
|
|
944
203
|
updateColumn(column, index) {
|
|
945
204
|
const type = column_service.getColumnType(column);
|
|
946
|
-
|
|
205
|
+
dimension_helpers.setSourceByVirtualIndex(this.dataSources[type].store, { [index]: column });
|
|
947
206
|
}
|
|
948
207
|
updateColumnSorting(column, index, sorting, additive) {
|
|
949
208
|
if (!additive) {
|
|
@@ -974,12 +233,14 @@ class ColumnDataProvider {
|
|
|
974
233
|
|
|
975
234
|
/**
|
|
976
235
|
* Data source provider
|
|
236
|
+
*
|
|
237
|
+
* @dependsOn DimensionProvider
|
|
977
238
|
*/
|
|
978
239
|
class DataProvider {
|
|
979
240
|
constructor(dimensionProvider) {
|
|
980
241
|
this.dimensionProvider = dimensionProvider;
|
|
981
242
|
this.stores = column_service.reduce(column_drag_plugin.rowTypes, (sources, k) => {
|
|
982
|
-
sources[k] = new
|
|
243
|
+
sources[k] = new dimension_helpers.DataStore(k);
|
|
983
244
|
return sources;
|
|
984
245
|
}, {});
|
|
985
246
|
}
|
|
@@ -993,16 +254,25 @@ class DataProvider {
|
|
|
993
254
|
}
|
|
994
255
|
getModel(virtualIndex, type = 'rgRow') {
|
|
995
256
|
const store = this.stores[type].store;
|
|
996
|
-
return
|
|
257
|
+
return dimension_helpers.getSourceItem(store, virtualIndex);
|
|
997
258
|
}
|
|
998
259
|
changeOrder({ rowType = 'rgRow', from, to }) {
|
|
999
|
-
const
|
|
1000
|
-
|
|
1001
|
-
const
|
|
1002
|
-
const
|
|
1003
|
-
|
|
1004
|
-
|
|
1005
|
-
|
|
260
|
+
const storeService = this.stores[rowType];
|
|
261
|
+
// take currently visible row indexes
|
|
262
|
+
const newItemsOrder = [...storeService.store.get('proxyItems')];
|
|
263
|
+
const prevItems = storeService.store.get('items');
|
|
264
|
+
// take out
|
|
265
|
+
const toMove = newItemsOrder.splice(newItemsOrder.indexOf(prevItems[from]), // get index in proxy
|
|
266
|
+
1);
|
|
267
|
+
// insert before
|
|
268
|
+
newItemsOrder.splice(newItemsOrder.indexOf(prevItems[to]), // get index in proxy
|
|
269
|
+
0, ...toMove);
|
|
270
|
+
storeService.setData({
|
|
271
|
+
proxyItems: newItemsOrder,
|
|
272
|
+
});
|
|
273
|
+
// take currently visible row indexes
|
|
274
|
+
const newItems = storeService.store.get('items');
|
|
275
|
+
this.dimensionProvider.updateSizesPositionByNewDataIndexes(rowType, newItems, prevItems);
|
|
1006
276
|
}
|
|
1007
277
|
setCellData({ type, rowIndex, prop, val }, mutate = true) {
|
|
1008
278
|
const model = this.getModel(rowIndex, type);
|
|
@@ -1012,7 +282,7 @@ class DataProvider {
|
|
|
1012
282
|
setRangeData(data, type) {
|
|
1013
283
|
const items = {};
|
|
1014
284
|
for (let rowIndex in data) {
|
|
1015
|
-
const oldModel = (items[rowIndex] =
|
|
285
|
+
const oldModel = (items[rowIndex] = dimension_helpers.getSourceItem(this.stores[type].store, parseInt(rowIndex, 10)));
|
|
1016
286
|
if (!oldModel) {
|
|
1017
287
|
continue;
|
|
1018
288
|
}
|
|
@@ -1040,7 +310,7 @@ class DataProvider {
|
|
|
1040
310
|
store.addTrimmed(trimmed);
|
|
1041
311
|
this.dimensionProvider.setTrimmed(trimmed, type);
|
|
1042
312
|
if (type === 'rgRow') {
|
|
1043
|
-
this.dimensionProvider.setData(
|
|
313
|
+
this.dimensionProvider.setData(dimension_helpers.getVisibleSourceItem(store.store).length, type);
|
|
1044
314
|
}
|
|
1045
315
|
}
|
|
1046
316
|
}
|
|
@@ -1048,11 +318,13 @@ class DataProvider {
|
|
|
1048
318
|
/**
|
|
1049
319
|
* Dimension provider
|
|
1050
320
|
* Stores dimension information and custom sizes
|
|
321
|
+
*
|
|
322
|
+
* @dependsOn ViewportProvider
|
|
1051
323
|
*/
|
|
1052
324
|
class DimensionProvider {
|
|
1053
325
|
constructor(viewports, config) {
|
|
1054
326
|
this.viewports = viewports;
|
|
1055
|
-
const sizeChanged = debounce.debounce((k) => config.realSizeChanged(k),
|
|
327
|
+
const sizeChanged = debounce.debounce((k) => config.realSizeChanged(k), dimension_helpers.RESIZE_INTERVAL);
|
|
1056
328
|
this.stores = column_service.reduce([...column_drag_plugin.rowTypes, ...column_drag_plugin.columnTypes], (sources, t) => {
|
|
1057
329
|
sources[t] = new column_drag_plugin.DimensionStore(t);
|
|
1058
330
|
sources[t].store.onChange('realSize', () => sizeChanged(t));
|
|
@@ -1083,7 +355,11 @@ class DimensionProvider {
|
|
|
1083
355
|
newSizes = Object.assign(Object.assign({}, oldSizes), sizes);
|
|
1084
356
|
}
|
|
1085
357
|
this.stores[type].setDimensionSize(newSizes);
|
|
1086
|
-
this.
|
|
358
|
+
this.setViewPortCoordinate({
|
|
359
|
+
coordinate: this.viewports.stores[type].lastCoordinate,
|
|
360
|
+
type,
|
|
361
|
+
force: true,
|
|
362
|
+
});
|
|
1087
363
|
}
|
|
1088
364
|
setItemCount(realCount, type) {
|
|
1089
365
|
this.viewports.stores[type].setViewport({ realCount });
|
|
@@ -1095,13 +371,17 @@ class DimensionProvider {
|
|
|
1095
371
|
* @param type
|
|
1096
372
|
*/
|
|
1097
373
|
setTrimmed(trimmed, type) {
|
|
1098
|
-
const allTrimmed =
|
|
374
|
+
const allTrimmed = dimension_helpers.gatherTrimmedItems(trimmed);
|
|
1099
375
|
const dimStoreType = this.stores[type];
|
|
1100
376
|
dimStoreType.setStore({ trimmed: allTrimmed });
|
|
1101
|
-
this.
|
|
377
|
+
this.setViewPortCoordinate({
|
|
378
|
+
coordinate: this.viewports.stores[type].lastCoordinate,
|
|
379
|
+
type,
|
|
380
|
+
force: true,
|
|
381
|
+
});
|
|
1102
382
|
}
|
|
1103
383
|
/**
|
|
1104
|
-
* Sets dimension data and
|
|
384
|
+
* Sets dimension data and viewport coordinate
|
|
1105
385
|
* @param itemCount
|
|
1106
386
|
* @param type - dimension type
|
|
1107
387
|
* @param noVirtual - disable virtual data
|
|
@@ -1115,18 +395,23 @@ class DimensionProvider {
|
|
|
1115
395
|
virtualSize: dimension.realSize,
|
|
1116
396
|
});
|
|
1117
397
|
}
|
|
1118
|
-
this.
|
|
398
|
+
this.setViewPortCoordinate({
|
|
399
|
+
coordinate: this.viewports.stores[type].lastCoordinate,
|
|
400
|
+
type,
|
|
401
|
+
});
|
|
1119
402
|
}
|
|
1120
403
|
/**
|
|
1121
404
|
* Applies new columns to the dimension provider
|
|
1122
405
|
* @param columns - new columns data
|
|
1123
406
|
* @param disableVirtualX - disable virtual data for X axis
|
|
1124
407
|
*/
|
|
1125
|
-
applyNewColumns(columns, disableVirtualX) {
|
|
408
|
+
applyNewColumns(columns, disableVirtualX, keepOld = false) {
|
|
1126
409
|
// Apply new columns to dimension provider
|
|
1127
410
|
for (let type of column_drag_plugin.columnTypes) {
|
|
1128
|
-
|
|
1129
|
-
|
|
411
|
+
if (!keepOld) {
|
|
412
|
+
// Clear existing data in the dimension provider
|
|
413
|
+
this.stores[type].drop();
|
|
414
|
+
}
|
|
1130
415
|
// Get the new columns for the current type
|
|
1131
416
|
const items = columns[type];
|
|
1132
417
|
// Determine if virtual data should be disabled for the current type
|
|
@@ -1153,6 +438,10 @@ class DimensionProvider {
|
|
|
1153
438
|
});
|
|
1154
439
|
}
|
|
1155
440
|
}
|
|
441
|
+
/**
|
|
442
|
+
* Gets the full size of the grid by summing up the sizes of all dimensions
|
|
443
|
+
* Goes through all dimensions columnTypes (x) and rowTypes (y) and sums up their sizes
|
|
444
|
+
*/
|
|
1156
445
|
getFullSize() {
|
|
1157
446
|
var _a, _b;
|
|
1158
447
|
let x = 0;
|
|
@@ -1165,20 +454,13 @@ class DimensionProvider {
|
|
|
1165
454
|
}
|
|
1166
455
|
return { y, x };
|
|
1167
456
|
}
|
|
1168
|
-
updateViewport(type, force = false) {
|
|
1169
|
-
this.setViewPortCoordinate({
|
|
1170
|
-
coordinate: this.viewports.stores[type].lastCoordinate,
|
|
1171
|
-
type,
|
|
1172
|
-
force,
|
|
1173
|
-
});
|
|
1174
|
-
}
|
|
1175
457
|
setViewPortCoordinate({ coordinate, type, force = false, }) {
|
|
1176
458
|
const dimension = this.stores[type].getCurrentState();
|
|
1177
459
|
this.viewports.stores[type].setViewPortCoordinate(coordinate, dimension, force);
|
|
1178
460
|
}
|
|
1179
461
|
getViewPortPos(e) {
|
|
1180
462
|
const dimension = this.stores[e.dimension].getCurrentState();
|
|
1181
|
-
const item =
|
|
463
|
+
const item = dimension_helpers.getItemByIndex(dimension, e.coordinate);
|
|
1182
464
|
return item.start;
|
|
1183
465
|
}
|
|
1184
466
|
setSettings(data, dimensionType) {
|
|
@@ -1197,32 +479,19 @@ class DimensionProvider {
|
|
|
1197
479
|
}
|
|
1198
480
|
updateSizesPositionByNewDataIndexes(type, newItemsOrder, prevItemsOrder = []) {
|
|
1199
481
|
// Move custom sizes to new order
|
|
1200
|
-
|
|
1201
|
-
|
|
1202
|
-
|
|
1203
|
-
|
|
1204
|
-
|
|
1205
|
-
|
|
1206
|
-
});
|
|
1207
|
-
const newSizes = {};
|
|
1208
|
-
newItemsOrder.forEach((value, newIndex) => {
|
|
1209
|
-
const originalIndex = originalIndices.get(value);
|
|
1210
|
-
if (originalIndex !== newIndex && customSizes[originalIndex]) {
|
|
1211
|
-
newSizes[newIndex] = customSizes[originalIndex];
|
|
1212
|
-
delete customSizes[originalIndex];
|
|
1213
|
-
}
|
|
1214
|
-
});
|
|
1215
|
-
if (Object.keys(newSizes).length) {
|
|
1216
|
-
this.setCustomSizes(type, Object.assign(Object.assign({}, customSizes), newSizes));
|
|
1217
|
-
}
|
|
1218
|
-
}
|
|
482
|
+
this.stores[type].updateSizesPositionByIndexes(newItemsOrder, prevItemsOrder);
|
|
483
|
+
this.setViewPortCoordinate({
|
|
484
|
+
coordinate: this.viewports.stores[type].lastCoordinate,
|
|
485
|
+
type,
|
|
486
|
+
force: true,
|
|
487
|
+
});
|
|
1219
488
|
}
|
|
1220
489
|
}
|
|
1221
490
|
|
|
1222
491
|
class ViewportProvider {
|
|
1223
492
|
constructor() {
|
|
1224
493
|
this.stores = column_service.reduce([...column_drag_plugin.rowTypes, ...column_drag_plugin.columnTypes], (sources, k) => {
|
|
1225
|
-
sources[k] = new
|
|
494
|
+
sources[k] = new viewport_store.ViewportStore(k);
|
|
1226
495
|
return sources;
|
|
1227
496
|
}, {});
|
|
1228
497
|
}
|
|
@@ -1246,7 +515,7 @@ function gatherColumnData(data) {
|
|
|
1246
515
|
style: data.fixWidth ? { minWidth: `${realWidth}px` } : undefined,
|
|
1247
516
|
};
|
|
1248
517
|
const headerProp = {
|
|
1249
|
-
colData:
|
|
518
|
+
colData: dimension_helpers.getVisibleSourceItem(data.colStore),
|
|
1250
519
|
dimensionCol: colDimension,
|
|
1251
520
|
type: data.colType,
|
|
1252
521
|
groups: data.colStore.get('groups'),
|
|
@@ -1292,15 +561,15 @@ class ViewportService {
|
|
|
1292
561
|
if (val === 'rgCol') {
|
|
1293
562
|
column.onResizeviewport = (e) => {
|
|
1294
563
|
var _a;
|
|
1295
|
-
|
|
1296
|
-
|
|
1297
|
-
}
|
|
1298
|
-
|
|
1299
|
-
|
|
564
|
+
const vpState = {
|
|
565
|
+
clientSize: e.detail.size,
|
|
566
|
+
};
|
|
567
|
+
// virtual size will be handled by dimension provider if disabled
|
|
568
|
+
if ((e.detail.dimension === 'rgRow' && !config.disableVirtualY)
|
|
569
|
+
|| (e.detail.dimension === 'rgCol' && !config.disableVirtualX)) {
|
|
570
|
+
vpState.virtualSize = e.detail.size;
|
|
1300
571
|
}
|
|
1301
|
-
(_a = config.viewportProvider) === null || _a === void 0 ? void 0 : _a.setViewport(e.detail.dimension,
|
|
1302
|
-
virtualSize: e.detail.size,
|
|
1303
|
-
});
|
|
572
|
+
(_a = config.viewportProvider) === null || _a === void 0 ? void 0 : _a.setViewport(e.detail.dimension, vpState);
|
|
1304
573
|
};
|
|
1305
574
|
}
|
|
1306
575
|
const colData = gatherColumnData(column);
|
|
@@ -1312,7 +581,7 @@ class ViewportService {
|
|
|
1312
581
|
segmentSelection.setLastCell(rgRow.lastCell);
|
|
1313
582
|
// register selection store for Row
|
|
1314
583
|
const rowSelectionStore = this.registerRow(rgRow.position.y, rgRow.type);
|
|
1315
|
-
const rowDef = Object.assign(Object.assign({ colType: val }, rgRow), { rowSelectionStore,
|
|
584
|
+
const rowDef = Object.assign(Object.assign({ colType: val }, rgRow), { rowSelectionStore, selectionStore: segmentSelection.store, ref: (e) => config.selectionStoreConnector.registerSection(e), onSetrange: e => {
|
|
1316
585
|
segmentSelection.setRangeArea(e.detail);
|
|
1317
586
|
}, onSettemprange: e => segmentSelection.setTempArea(e.detail), onFocuscell: e => {
|
|
1318
587
|
// todo: multi focus
|
|
@@ -1338,7 +607,7 @@ class ViewportService {
|
|
|
1338
607
|
const changedItems = {};
|
|
1339
608
|
for (const [i, size] of Object.entries(detail || {})) {
|
|
1340
609
|
const virtualIndex = parseInt(i, 10);
|
|
1341
|
-
const item =
|
|
610
|
+
const item = dimension_helpers.getSourceItem(store, virtualIndex);
|
|
1342
611
|
if (item) {
|
|
1343
612
|
changedItems[virtualIndex] = Object.assign(Object.assign({}, item), { size });
|
|
1344
613
|
}
|
|
@@ -1577,11 +846,11 @@ class OrdererService {
|
|
|
1577
846
|
const OrderRenderer = ({ ref }) => {
|
|
1578
847
|
const service = new OrdererService();
|
|
1579
848
|
ref(service);
|
|
1580
|
-
return (index
|
|
1581
|
-
index
|
|
1582
|
-
index
|
|
1583
|
-
index
|
|
1584
|
-
index
|
|
849
|
+
return (index.h("div", { class: "draggable-wrapper hidden", ref: e => (service.el = e) },
|
|
850
|
+
index.h("div", { class: "draggable", ref: el => (service.draggable = el) },
|
|
851
|
+
index.h("span", { class: "revo-alt-icon" }),
|
|
852
|
+
index.h("span", { ref: e => (service.text = e) })),
|
|
853
|
+
index.h("div", { class: "drag-position", ref: e => (service.rgRow = e) })));
|
|
1585
854
|
};
|
|
1586
855
|
|
|
1587
856
|
const rowDefinitionByType = (newVal = []) => {
|
|
@@ -1699,57 +968,134 @@ class WCAGPlugin extends column_drag_plugin.BasePlugin {
|
|
|
1699
968
|
}
|
|
1700
969
|
}
|
|
1701
970
|
|
|
1702
|
-
const revoGridStyleCss = ".revo-drag-icon{width:11px;opacity:0.8}.revo-drag-icon::before{content:\"::\"}.revo-alt-icon{-webkit-mask-image:url(\"data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3Csvg viewBox='0 0 384 383' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Cg%3E%3Cpath d='M192.4375,383 C197.424479,383 201.663411,381.254557 205.154297,377.763672 L205.154297,377.763672 L264.25,318.667969 C270.234375,312.683594 271.605794,306.075846 268.364258,298.844727 C265.122721,291.613607 259.51237,287.998047 251.533203,287.998047 L251.533203,287.998047 L213.382812,287.998047 L213.382812,212.445312 L288.935547,212.445312 L288.935547,250.595703 C288.935547,258.57487 292.551107,264.185221 299.782227,267.426758 C307.013346,270.668294 313.621094,269.296875 319.605469,263.3125 L319.605469,263.3125 L378.701172,204.216797 C382.192057,200.725911 383.9375,196.486979 383.9375,191.5 C383.9375,186.513021 382.192057,182.274089 378.701172,178.783203 L378.701172,178.783203 L319.605469,119.6875 C313.621094,114.201823 307.013346,112.955078 299.782227,115.947266 C292.551107,118.939453 288.935547,124.42513 288.935547,132.404297 L288.935547,132.404297 L288.935547,170.554688 L213.382812,170.554688 L213.382812,95.0019531 L251.533203,95.0019531 C259.51237,95.0019531 264.998047,91.3863932 267.990234,84.1552734 C270.982422,76.9241536 269.735677,70.3164062 264.25,64.3320312 L264.25,64.3320312 L205.154297,5.23632812 C201.663411,1.74544271 197.424479,0 192.4375,0 C187.450521,0 183.211589,1.74544271 179.720703,5.23632812 L179.720703,5.23632812 L120.625,64.3320312 C114.640625,70.3164062 113.269206,76.9241536 116.510742,84.1552734 C119.752279,91.3863932 125.36263,95.0019531 133.341797,95.0019531 L133.341797,95.0019531 L171.492188,95.0019531 L171.492188,170.554688 L95.9394531,170.554688 L95.9394531,132.404297 C95.9394531,124.42513 92.3238932,118.814779 85.0927734,115.573242 C77.8616536,112.331706 71.2539062,113.703125 65.2695312,119.6875 L65.2695312,119.6875 L6.17382812,178.783203 C2.68294271,182.274089 0.9375,186.513021 0.9375,191.5 C0.9375,196.486979 2.68294271,200.725911 6.17382812,204.216797 L6.17382812,204.216797 L65.2695312,263.3125 C71.2539062,268.798177 77.8616536,270.044922 85.0927734,267.052734 C92.3238932,264.060547 95.9394531,258.57487 95.9394531,250.595703 L95.9394531,250.595703 L95.9394531,212.445312 L171.492188,212.445312 L171.492188,287.998047 L133.341797,287.998047 C125.36263,287.998047 119.876953,291.613607 116.884766,298.844727 C113.892578,306.075846 115.139323,312.683594 120.625,318.667969 L120.625,318.667969 L179.720703,377.763672 C183.211589,381.254557 187.450521,383 192.4375,383 Z'%3E%3C/path%3E%3C/g%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3Csvg viewBox='0 0 384 383' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Cg%3E%3Cpath d='M192.4375,383 C197.424479,383 201.663411,381.254557 205.154297,377.763672 L205.154297,377.763672 L264.25,318.667969 C270.234375,312.683594 271.605794,306.075846 268.364258,298.844727 C265.122721,291.613607 259.51237,287.998047 251.533203,287.998047 L251.533203,287.998047 L213.382812,287.998047 L213.382812,212.445312 L288.935547,212.445312 L288.935547,250.595703 C288.935547,258.57487 292.551107,264.185221 299.782227,267.426758 C307.013346,270.668294 313.621094,269.296875 319.605469,263.3125 L319.605469,263.3125 L378.701172,204.216797 C382.192057,200.725911 383.9375,196.486979 383.9375,191.5 C383.9375,186.513021 382.192057,182.274089 378.701172,178.783203 L378.701172,178.783203 L319.605469,119.6875 C313.621094,114.201823 307.013346,112.955078 299.782227,115.947266 C292.551107,118.939453 288.935547,124.42513 288.935547,132.404297 L288.935547,132.404297 L288.935547,170.554688 L213.382812,170.554688 L213.382812,95.0019531 L251.533203,95.0019531 C259.51237,95.0019531 264.998047,91.3863932 267.990234,84.1552734 C270.982422,76.9241536 269.735677,70.3164062 264.25,64.3320312 L264.25,64.3320312 L205.154297,5.23632812 C201.663411,1.74544271 197.424479,0 192.4375,0 C187.450521,0 183.211589,1.74544271 179.720703,5.23632812 L179.720703,5.23632812 L120.625,64.3320312 C114.640625,70.3164062 113.269206,76.9241536 116.510742,84.1552734 C119.752279,91.3863932 125.36263,95.0019531 133.341797,95.0019531 L133.341797,95.0019531 L171.492188,95.0019531 L171.492188,170.554688 L95.9394531,170.554688 L95.9394531,132.404297 C95.9394531,124.42513 92.3238932,118.814779 85.0927734,115.573242 C77.8616536,112.331706 71.2539062,113.703125 65.2695312,119.6875 L65.2695312,119.6875 L6.17382812,178.783203 C2.68294271,182.274089 0.9375,186.513021 0.9375,191.5 C0.9375,196.486979 2.68294271,200.725911 6.17382812,204.216797 L6.17382812,204.216797 L65.2695312,263.3125 C71.2539062,268.798177 77.8616536,270.044922 85.0927734,267.052734 C92.3238932,264.060547 95.9394531,258.57487 95.9394531,250.595703 L95.9394531,250.595703 L95.9394531,212.445312 L171.492188,212.445312 L171.492188,287.998047 L133.341797,287.998047 C125.36263,287.998047 119.876953,291.613607 116.884766,298.844727 C113.892578,306.075846 115.139323,312.683594 120.625,318.667969 L120.625,318.667969 L179.720703,377.763672 C183.211589,381.254557 187.450521,383 192.4375,383 Z'%3E%3C/path%3E%3C/g%3E%3C/svg%3E\");width:11px;height:11px;background-size:cover;background-repeat:no-repeat}.arrow-down{position:absolute;right:5px;top:0}.arrow-down svg{width:8px;margin-top:5px;margin-left:5px;opacity:0.4}.cell-value-wrapper{margin-right:10px;overflow:hidden;text-overflow:ellipsis}.revo-button{position:relative;overflow:hidden;color:#fff;background-color:#6200ee;height:32px;line-height:32px;padding:0 15px;outline:0;border:0;border-radius:7px;box-sizing:border-box;cursor:pointer}.revo-button.green{background-color:#009037;border:1px solid #00772d}.revo-button.red{background-color:#E0662E;border:1px solid #d55920}.revo-button:disabled,.revo-button[disabled]{cursor:not-allowed !important;filter:opacity(0.35) !important}.revo-button.light{border:1px solid #cedefa;line-height:30px;background:none;color:#000;box-shadow:none}revo-grid[theme=default],revo-grid:not([theme]){border:1px solid #cecece;font-size:12px}revo-grid[theme=default] revogr-header,revo-grid:not([theme]) revogr-header{text-align:center;line-height:30px;background-color:#f8f9fa}revo-grid[theme=default] revogr-header .group-rgRow,revo-grid:not([theme]) revogr-header .group-rgRow{box-shadow:none}revo-grid[theme=default] revogr-header .header-rgRow,revo-grid[theme=default] revogr-header .group-rgRow,revo-grid:not([theme]) revogr-header .header-rgRow,revo-grid:not([theme]) revogr-header .group-rgRow{text-transform:uppercase;font-size:12px;color:#000}revo-grid[theme=default] revogr-header .header-rgRow,revo-grid:not([theme]) revogr-header .header-rgRow{height:30px;box-shadow:0 -1px 0 0 #cecece inset}revo-grid[theme=default] revogr-header .rgHeaderCell,revo-grid:not([theme]) revogr-header .rgHeaderCell{box-shadow:-1px 0 0 0 #cecece inset, 0 -1px 0 0 #cecece, 0 -1px 0 0 #cecece inset}revo-grid[theme=default] revogr-header .rgHeaderCell.focused-cell,revo-grid:not([theme]) revogr-header .rgHeaderCell.focused-cell{background:rgba(233, 234, 237, 0.5)}revo-grid[theme=default] .rowHeaders,revo-grid:not([theme]) .rowHeaders{background-color:#f8f9fa}revo-grid[theme=default] .rowHeaders revogr-data .rgCell,revo-grid:not([theme]) .rowHeaders revogr-data .rgCell{color:#000}revo-grid[theme=default] .rowHeaders revogr-data .rgCell:first-child,revo-grid:not([theme]) .rowHeaders revogr-data .rgCell:first-child{box-shadow:0 -1px 0 0 #cecece inset}revo-grid[theme=default] .rowHeaders revogr-data .rgCell:not(:first-child),revo-grid:not([theme]) .rowHeaders revogr-data .rgCell:not(:first-child){box-shadow:0 -1px 0 0 #cecece inset, 1px 0 0 0 #cecece inset}revo-grid[theme=default] .rowHeaders revogr-data .rgCell:last-child,revo-grid:not([theme]) .rowHeaders revogr-data .rgCell:last-child{border-right:1px solid #cecece}revo-grid[theme=default] .rowHeaders revogr-data revogr-header,revo-grid:not([theme]) .rowHeaders revogr-data revogr-header{box-shadow:0 -1px 0 0 #cecece inset}revo-grid[theme=default] revogr-viewport-scroll.colPinStart revogr-data .rgRow .rgCell:last-child,revo-grid:not([theme]) revogr-viewport-scroll.colPinStart revogr-data .rgRow .rgCell:last-child{box-shadow:0 -1px 0 0 #e2e3e3 inset, -1px 0 0 0 #cecece inset}revo-grid[theme=default] revogr-viewport-scroll.colPinStart .footer-wrapper revogr-data .rgRow:first-child .rgCell,revo-grid:not([theme]) revogr-viewport-scroll.colPinStart .footer-wrapper revogr-data .rgRow:first-child .rgCell{box-shadow:0 1px 0 0 #cecece inset, -1px 0 0 0 #cecece inset}revo-grid[theme=default] revogr-viewport-scroll.colPinEnd,revo-grid[theme=default] revogr-viewport-scroll.colPinEnd revogr-header,revo-grid:not([theme]) revogr-viewport-scroll.colPinEnd,revo-grid:not([theme]) revogr-viewport-scroll.colPinEnd revogr-header{box-shadow:1px 0 0 #cecece inset}revo-grid[theme=default] .footer-wrapper revogr-data .rgRow:first-child .rgCell,revo-grid:not([theme]) .footer-wrapper revogr-data .rgRow:first-child .rgCell{box-shadow:0 1px 0 0 #e2e3e3 inset, -1px 0 0 0 #e2e3e3 inset, 0 -1px 0 0 #e2e3e3 inset}revo-grid[theme=default] revogr-data,revo-grid:not([theme]) revogr-data{text-align:center}revo-grid[theme=default] revogr-data .revo-draggable,revo-grid:not([theme]) revogr-data .revo-draggable{float:left}revo-grid[theme=default] revogr-data .rgRow,revo-grid:not([theme]) revogr-data .rgRow{line-height:27px}revo-grid[theme=default] revogr-data .rgRow.focused-rgRow,revo-grid:not([theme]) revogr-data .rgRow.focused-rgRow{background-color:rgba(233, 234, 237, 0.5)}revo-grid[theme=default] revogr-data .rgCell,revo-grid:not([theme]) revogr-data .rgCell{box-shadow:0 -1px 0 0 #e2e3e3 inset, -1px 0 0 0 #e2e3e3 inset}revo-grid[theme=default] revogr-data .rgCell.disabled,revo-grid:not([theme]) revogr-data .rgCell.disabled{background-color:0 -1px 0 0 #e2e3e3 inset, -1px 0 0 0 #e2e3e3 inset}revo-grid[theme=material]{font-family:Nunito, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\"}revo-grid[theme=material] revogr-header{line-height:50px;font-weight:600;text-align:left}revo-grid[theme=material] revogr-header .rgHeaderCell{padding:0 15px;text-overflow:ellipsis}revo-grid[theme=material] revogr-header .header-rgRow{height:50px}revo-grid[theme=material] revogr-data{text-align:left}revo-grid[theme=material] revogr-data .rgRow{line-height:42px}revo-grid[theme=material] revogr-data .rgCell{padding:0 15px}revo-grid[theme=material] .rowHeaders{background-color:#f7faff}revo-grid[theme=material] .rowHeaders revogr-data .rgCell{color:#757a82}revo-grid[theme=material] revogr-header .header-rgRow.group{box-shadow:0 -1px 0 0 #f1f1f1 inset}revo-grid[theme=material] revogr-header .header-rgRow:not(.group){box-shadow:0 -1px 0 0 #f1f1f1, 0 -1px 0 0 #f1f1f1 inset}revo-grid[theme=material] revogr-header .rgHeaderCell.sortable:hover{background-color:#f1f1f1}revo-grid[theme=material] revogr-header .rgHeaderCell.focused-cell{background:rgba(233, 234, 237, 0.5)}revo-grid[theme=material] .footer-wrapper revogr-data{box-shadow:0 -1px 0 #f1f1f1}revo-grid[theme=material] revogr-viewport-scroll.colPinStart{box-shadow:-1px 0 0 #f1f1f1 inset}revo-grid[theme=material] revogr-viewport-scroll.colPinEnd{box-shadow:-1px 0 0 #f1f1f1}revo-grid[theme=material] revogr-data .rgRow{box-shadow:0 -1px 0 0 #f1f1f1 inset}revo-grid[theme=material] revogr-data .rgRow.focused-rgRow{background-color:rgba(233, 234, 237, 0.5)}revo-grid[theme=material] revogr-data .rgCell{color:rgba(0, 0, 0, 0.87)}revo-grid[theme=material] revogr-data .rgCell.disabled{background-color:#f7f7f7}revo-grid[theme=darkMaterial]{font-family:Nunito, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";color:#d8d8d8}revo-grid[theme=darkMaterial] revogr-header{line-height:50px;font-weight:600;text-align:left}revo-grid[theme=darkMaterial] revogr-header .rgHeaderCell{padding:0 15px;text-overflow:ellipsis}revo-grid[theme=darkMaterial] revogr-header .header-rgRow{height:50px}revo-grid[theme=darkMaterial] revogr-data{text-align:left}revo-grid[theme=darkMaterial] revogr-data .rgRow{line-height:42px}revo-grid[theme=darkMaterial] revogr-data .rgCell{padding:0 15px}revo-grid[theme=darkMaterial] .rowHeaders{background-color:rgba(40, 39, 43, 0.8)}revo-grid[theme=darkMaterial] .rowHeaders revogr-data .rgCell{color:rgba(216, 216, 216, 0.8)}revo-grid[theme=darkMaterial] revogr-edit{background-color:#28272b}revo-grid[theme=darkMaterial] revogr-header .header-rgRow.group{box-shadow:0 -1px 0 0 #404040 inset}revo-grid[theme=darkMaterial] revogr-header .header-rgRow:not(.group){box-shadow:0 -1px 0 0 #404040, 0 -1px 0 0 #404040 inset}revo-grid[theme=darkMaterial] revogr-header .rgHeaderCell.sortable:hover{background-color:rgba(64, 64, 64, 0.5)}revo-grid[theme=darkMaterial] revogr-header .rgHeaderCell.focused-cell{background:rgba(115, 148, 160, 0.15)}revo-grid[theme=darkMaterial] .footer-wrapper revogr-data{box-shadow:0 -1px 0 #404040}revo-grid[theme=darkMaterial] revogr-data .rgCell{color:rgba(216, 216, 216, 0.9)}revo-grid[theme=darkMaterial] revogr-data .rgRow{box-shadow:0 -1px 0 0 #404040 inset}revo-grid[theme=darkMaterial] revogr-data .rgRow.focused-rgRow{background-color:rgba(115, 148, 160, 0.15)}revo-grid[theme=darkMaterial] revogr-viewport-scroll.colPinStart{box-shadow:-1px 0 0 #404040 inset}revo-grid[theme=darkMaterial] revogr-viewport-scroll.colPinEnd{box-shadow:-1px 0 0 #404040}revo-grid[theme=darkCompact]{font-family:Nunito, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";color:#d8d8d8}revo-grid[theme=darkCompact] revogr-header{line-height:45px;font-weight:600;text-align:left}revo-grid[theme=darkCompact] revogr-header .rgHeaderCell{padding:0 15px;text-overflow:ellipsis}revo-grid[theme=darkCompact] revogr-header .header-rgRow{height:45px}revo-grid[theme=darkCompact] revogr-data{text-align:left}revo-grid[theme=darkCompact] revogr-data .rgRow{line-height:32px}revo-grid[theme=darkCompact] revogr-data .rgCell{padding:0 15px}revo-grid[theme=darkCompact] .rowHeaders{background-color:rgba(40, 39, 43, 0.8)}revo-grid[theme=darkCompact] .rowHeaders revogr-data .rgCell{color:rgba(216, 216, 216, 0.8)}revo-grid[theme=darkCompact] revogr-edit{background-color:#28272b}revo-grid[theme=darkCompact] revogr-header .header-rgRow.group{box-shadow:0 -1px 0 0 #404040 inset}revo-grid[theme=darkCompact] revogr-header .header-rgRow:not(.group){box-shadow:0 -1px 0 0 #404040, 0 -1px 0 0 #404040 inset}revo-grid[theme=darkCompact] revogr-header .rgHeaderCell.sortable:hover{background-color:rgba(64, 64, 64, 0.5)}revo-grid[theme=darkCompact] revogr-header .rgHeaderCell.focused-cell{background:rgba(115, 148, 160, 0.15)}revo-grid[theme=darkCompact] .footer-wrapper revogr-data{box-shadow:0 -1px 0 #404040}revo-grid[theme=darkCompact] revogr-data .rgCell{color:rgba(216, 216, 216, 0.9)}revo-grid[theme=darkCompact] revogr-data .rgRow{box-shadow:0 -1px 0 0 #404040 inset}revo-grid[theme=darkCompact] revogr-data .rgRow.focused-rgRow{background-color:rgba(115, 148, 160, 0.15)}revo-grid[theme=darkCompact] revogr-viewport-scroll.colPinStart{box-shadow:-1px 0 0 #404040 inset}revo-grid[theme=darkCompact] revogr-viewport-scroll.colPinEnd{box-shadow:-1px 0 0 #404040}revo-grid[theme=compact]{font-family:Nunito, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\"}revo-grid[theme=compact] revogr-header{line-height:45px;font-weight:600;text-align:left}revo-grid[theme=compact] revogr-header .rgHeaderCell{padding:0 15px;text-overflow:ellipsis}revo-grid[theme=compact] revogr-header .header-rgRow{height:45px}revo-grid[theme=compact] revogr-data{text-align:left}revo-grid[theme=compact] revogr-data .rgRow{line-height:32px}revo-grid[theme=compact] revogr-data .rgCell{padding:0 15px}revo-grid[theme=compact] .rowHeaders{background-color:#f7faff}revo-grid[theme=compact] .rowHeaders revogr-data .rgCell{color:#757a82}revo-grid[theme=compact] revogr-header .header-rgRow.group{box-shadow:0 -1px 0 0 #f1f1f1 inset}revo-grid[theme=compact] revogr-header .header-rgRow:not(.group){box-shadow:0 -1px 0 0 #f1f1f1, 0 -1px 0 0 #f1f1f1 inset}revo-grid[theme=compact] revogr-header .rgHeaderCell.sortable:hover{background-color:#f1f1f1}revo-grid[theme=compact] revogr-header .rgHeaderCell.focused-cell{background:rgba(233, 234, 237, 0.5)}revo-grid[theme=compact] .footer-wrapper revogr-data{box-shadow:0 -1px 0 #f1f1f1}revo-grid[theme=compact] revogr-viewport-scroll.colPinStart{box-shadow:-1px 0 0 #f1f1f1 inset}revo-grid[theme=compact] revogr-viewport-scroll.colPinEnd{box-shadow:-1px 0 0 #f1f1f1}revo-grid[theme=compact] revogr-data .rgRow{box-shadow:0 -1px 0 0 #f1f1f1 inset}revo-grid[theme=compact] revogr-data .rgRow.focused-rgRow{background-color:rgba(233, 234, 237, 0.5)}revo-grid[theme=compact] revogr-data .rgCell{color:rgba(0, 0, 0, 0.87)}revo-grid[theme=compact] revogr-data .rgCell.disabled{background-color:#f7f7f7}revo-grid[theme=compact] revo-dropdown .rv-dr-root{padding:0px 9px}revo-grid{display:block;height:100%;min-height:300px;font-family:Helvetica, Arial, Sans-Serif, serif;font-size:14px;position:relative;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;display:flex;flex-direction:column;width:100%;height:100%}revo-grid .attribution{position:absolute;top:0;left:0;right:0;z-index:100;width:0;height:0;border-left:4px solid rgba(38, 106, 232, 0.6);border-top:4px solid rgba(38, 106, 232, 0.6);border-bottom:4px solid transparent;border-right:4px solid transparent;cursor:pointer}revo-grid .attribution .value{position:absolute;top:0;left:0;background-color:rgba(255, 255, 255, 0.9);padding:4px;border-radius:4px;box-shadow:0 1px 10px rgba(0, 0, 0, 0.2);white-space:nowrap;text-decoration:none;color:black;letter-spacing:0.3px;font-size:11px;opacity:0;width:4px;overflow:hidden;transition:opacity 0.5s ease-in-out, width 0.3s ease-in-out}revo-grid .attribution:hover .value{width:63px;opacity:1}revo-grid.column-draggable.column-drag-start:hover,revo-grid.column-draggable.column-drag-start *:hover{cursor:grabbing}revo-grid .footer-wrapper,revo-grid .header-wrapper{width:100%}revo-grid .footer-wrapper revogr-data,revo-grid .header-wrapper revogr-data{z-index:3}revo-grid revo-dropdown{width:100%}revo-grid revo-dropdown .rv-dr-root{max-height:100%}revo-grid revo-dropdown.shrink label{opacity:0}revo-grid .viewports{max-width:100%;display:flex;flex-direction:row;align-items:flex-start;flex-grow:1}revo-grid .main-viewport{flex-grow:1;height:0;display:flex;justify-content:space-between;flex-direction:row}revo-grid .draggable{position:fixed;height:30px;line-height:30px;background:#fff;border-radius:3px;display:block;z-index:100;margin-top:5px;margin-right:-20px;box-shadow:0 4px 20px 0 rgba(0, 0, 0, 0.15);padding-left:20px;padding-right:5px}revo-grid .draggable.hidden{display:none}revo-grid .draggable .revo-alt-icon{background-color:black;position:absolute;left:5px;top:10px}revo-grid .draggable-wrapper.hidden{display:none}revo-grid .drag-position{position:absolute;left:0;right:0;height:1px;z-index:2;background:gray;pointer-events:none}revo-grid .drag-position-y{position:absolute;top:0;left:0;bottom:0;width:1px;z-index:2;background:gray;pointer-events:none}revo-grid .drag-auto-scroll-y{pointer-events:none;position:absolute;left:0;top:0;height:50px;width:1px}revo-grid .clipboard{position:absolute;left:0;top:0}revo-grid revogr-scroll-virtual{position:relative}revo-grid revogr-scroll-virtual.vertical,revo-grid revogr-scroll-virtual.horizontal{z-index:3}";
|
|
971
|
+
/**
|
|
972
|
+
* Plugin service
|
|
973
|
+
* Manages plugins
|
|
974
|
+
*/
|
|
975
|
+
class PluginService {
|
|
976
|
+
constructor() {
|
|
977
|
+
/**
|
|
978
|
+
* Plugins
|
|
979
|
+
* Define plugins collection
|
|
980
|
+
*/
|
|
981
|
+
this.internalPlugins = [];
|
|
982
|
+
}
|
|
983
|
+
/**
|
|
984
|
+
* Get all plugins
|
|
985
|
+
*/
|
|
986
|
+
get() {
|
|
987
|
+
return [...this.internalPlugins];
|
|
988
|
+
}
|
|
989
|
+
/**
|
|
990
|
+
* Add plugin to collection
|
|
991
|
+
*/
|
|
992
|
+
add(plugin) {
|
|
993
|
+
this.internalPlugins.push(plugin);
|
|
994
|
+
}
|
|
995
|
+
/**
|
|
996
|
+
* Add user plugins and create
|
|
997
|
+
*/
|
|
998
|
+
addUserPluginsAndCreate(element, plugins = [], prevPlugins, pluginData) {
|
|
999
|
+
if (!pluginData) {
|
|
1000
|
+
return;
|
|
1001
|
+
}
|
|
1002
|
+
// Step 1: Identify plugins to remove, compare new and old plugins
|
|
1003
|
+
const pluginsToRemove = (prevPlugins === null || prevPlugins === void 0 ? void 0 : prevPlugins.filter(prevPlugin => !plugins.some(userPlugin => userPlugin === prevPlugin))) || [];
|
|
1004
|
+
// Step 2: Remove old plugins
|
|
1005
|
+
pluginsToRemove.forEach(plugin => {
|
|
1006
|
+
var _a, _b;
|
|
1007
|
+
const index = this.internalPlugins.findIndex(createdPlugin => createdPlugin instanceof plugin);
|
|
1008
|
+
if (index !== -1) {
|
|
1009
|
+
(_b = (_a = this.internalPlugins[index]).destroy) === null || _b === void 0 ? void 0 : _b.call(_a);
|
|
1010
|
+
this.internalPlugins.splice(index, 1); // Remove the plugin
|
|
1011
|
+
}
|
|
1012
|
+
});
|
|
1013
|
+
// Step 3: Register user plugins
|
|
1014
|
+
plugins === null || plugins === void 0 ? void 0 : plugins.forEach(userPlugin => {
|
|
1015
|
+
// check if plugin already exists, if so, skip
|
|
1016
|
+
const existingPlugin = this.internalPlugins.find(createdPlugin => createdPlugin instanceof userPlugin);
|
|
1017
|
+
if (existingPlugin) {
|
|
1018
|
+
return;
|
|
1019
|
+
}
|
|
1020
|
+
this.add(new userPlugin(element, pluginData));
|
|
1021
|
+
});
|
|
1022
|
+
}
|
|
1023
|
+
/**
|
|
1024
|
+
* Get plugin by class
|
|
1025
|
+
*/
|
|
1026
|
+
getByClass(pluginClass) {
|
|
1027
|
+
return this.internalPlugins.find(p => p instanceof pluginClass);
|
|
1028
|
+
}
|
|
1029
|
+
/**
|
|
1030
|
+
* Remove plugin
|
|
1031
|
+
*/
|
|
1032
|
+
remove(plugin) {
|
|
1033
|
+
var _a, _b;
|
|
1034
|
+
const index = this.internalPlugins.indexOf(plugin);
|
|
1035
|
+
if (index > -1) {
|
|
1036
|
+
(_b = (_a = this.internalPlugins[index]).destroy) === null || _b === void 0 ? void 0 : _b.call(_a);
|
|
1037
|
+
this.internalPlugins.splice(index, 1);
|
|
1038
|
+
}
|
|
1039
|
+
}
|
|
1040
|
+
/**
|
|
1041
|
+
* Remove all plugins
|
|
1042
|
+
*/
|
|
1043
|
+
destroy() {
|
|
1044
|
+
this.internalPlugins.forEach(p => { var _a; return (_a = p.destroy) === null || _a === void 0 ? void 0 : _a.call(p); });
|
|
1045
|
+
this.internalPlugins = [];
|
|
1046
|
+
}
|
|
1047
|
+
}
|
|
1048
|
+
|
|
1049
|
+
const revoGridStyleCss = ".revo-drag-icon{width:11px;opacity:0.8}.revo-drag-icon::before{content:\"::\"}.revo-alt-icon{-webkit-mask-image:url(\"data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3Csvg viewBox='0 0 384 383' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Cg%3E%3Cpath d='M192.4375,383 C197.424479,383 201.663411,381.254557 205.154297,377.763672 L205.154297,377.763672 L264.25,318.667969 C270.234375,312.683594 271.605794,306.075846 268.364258,298.844727 C265.122721,291.613607 259.51237,287.998047 251.533203,287.998047 L251.533203,287.998047 L213.382812,287.998047 L213.382812,212.445312 L288.935547,212.445312 L288.935547,250.595703 C288.935547,258.57487 292.551107,264.185221 299.782227,267.426758 C307.013346,270.668294 313.621094,269.296875 319.605469,263.3125 L319.605469,263.3125 L378.701172,204.216797 C382.192057,200.725911 383.9375,196.486979 383.9375,191.5 C383.9375,186.513021 382.192057,182.274089 378.701172,178.783203 L378.701172,178.783203 L319.605469,119.6875 C313.621094,114.201823 307.013346,112.955078 299.782227,115.947266 C292.551107,118.939453 288.935547,124.42513 288.935547,132.404297 L288.935547,132.404297 L288.935547,170.554688 L213.382812,170.554688 L213.382812,95.0019531 L251.533203,95.0019531 C259.51237,95.0019531 264.998047,91.3863932 267.990234,84.1552734 C270.982422,76.9241536 269.735677,70.3164062 264.25,64.3320312 L264.25,64.3320312 L205.154297,5.23632812 C201.663411,1.74544271 197.424479,0 192.4375,0 C187.450521,0 183.211589,1.74544271 179.720703,5.23632812 L179.720703,5.23632812 L120.625,64.3320312 C114.640625,70.3164062 113.269206,76.9241536 116.510742,84.1552734 C119.752279,91.3863932 125.36263,95.0019531 133.341797,95.0019531 L133.341797,95.0019531 L171.492188,95.0019531 L171.492188,170.554688 L95.9394531,170.554688 L95.9394531,132.404297 C95.9394531,124.42513 92.3238932,118.814779 85.0927734,115.573242 C77.8616536,112.331706 71.2539062,113.703125 65.2695312,119.6875 L65.2695312,119.6875 L6.17382812,178.783203 C2.68294271,182.274089 0.9375,186.513021 0.9375,191.5 C0.9375,196.486979 2.68294271,200.725911 6.17382812,204.216797 L6.17382812,204.216797 L65.2695312,263.3125 C71.2539062,268.798177 77.8616536,270.044922 85.0927734,267.052734 C92.3238932,264.060547 95.9394531,258.57487 95.9394531,250.595703 L95.9394531,250.595703 L95.9394531,212.445312 L171.492188,212.445312 L171.492188,287.998047 L133.341797,287.998047 C125.36263,287.998047 119.876953,291.613607 116.884766,298.844727 C113.892578,306.075846 115.139323,312.683594 120.625,318.667969 L120.625,318.667969 L179.720703,377.763672 C183.211589,381.254557 187.450521,383 192.4375,383 Z'%3E%3C/path%3E%3C/g%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3Csvg viewBox='0 0 384 383' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Cg%3E%3Cpath d='M192.4375,383 C197.424479,383 201.663411,381.254557 205.154297,377.763672 L205.154297,377.763672 L264.25,318.667969 C270.234375,312.683594 271.605794,306.075846 268.364258,298.844727 C265.122721,291.613607 259.51237,287.998047 251.533203,287.998047 L251.533203,287.998047 L213.382812,287.998047 L213.382812,212.445312 L288.935547,212.445312 L288.935547,250.595703 C288.935547,258.57487 292.551107,264.185221 299.782227,267.426758 C307.013346,270.668294 313.621094,269.296875 319.605469,263.3125 L319.605469,263.3125 L378.701172,204.216797 C382.192057,200.725911 383.9375,196.486979 383.9375,191.5 C383.9375,186.513021 382.192057,182.274089 378.701172,178.783203 L378.701172,178.783203 L319.605469,119.6875 C313.621094,114.201823 307.013346,112.955078 299.782227,115.947266 C292.551107,118.939453 288.935547,124.42513 288.935547,132.404297 L288.935547,132.404297 L288.935547,170.554688 L213.382812,170.554688 L213.382812,95.0019531 L251.533203,95.0019531 C259.51237,95.0019531 264.998047,91.3863932 267.990234,84.1552734 C270.982422,76.9241536 269.735677,70.3164062 264.25,64.3320312 L264.25,64.3320312 L205.154297,5.23632812 C201.663411,1.74544271 197.424479,0 192.4375,0 C187.450521,0 183.211589,1.74544271 179.720703,5.23632812 L179.720703,5.23632812 L120.625,64.3320312 C114.640625,70.3164062 113.269206,76.9241536 116.510742,84.1552734 C119.752279,91.3863932 125.36263,95.0019531 133.341797,95.0019531 L133.341797,95.0019531 L171.492188,95.0019531 L171.492188,170.554688 L95.9394531,170.554688 L95.9394531,132.404297 C95.9394531,124.42513 92.3238932,118.814779 85.0927734,115.573242 C77.8616536,112.331706 71.2539062,113.703125 65.2695312,119.6875 L65.2695312,119.6875 L6.17382812,178.783203 C2.68294271,182.274089 0.9375,186.513021 0.9375,191.5 C0.9375,196.486979 2.68294271,200.725911 6.17382812,204.216797 L6.17382812,204.216797 L65.2695312,263.3125 C71.2539062,268.798177 77.8616536,270.044922 85.0927734,267.052734 C92.3238932,264.060547 95.9394531,258.57487 95.9394531,250.595703 L95.9394531,250.595703 L95.9394531,212.445312 L171.492188,212.445312 L171.492188,287.998047 L133.341797,287.998047 C125.36263,287.998047 119.876953,291.613607 116.884766,298.844727 C113.892578,306.075846 115.139323,312.683594 120.625,318.667969 L120.625,318.667969 L179.720703,377.763672 C183.211589,381.254557 187.450521,383 192.4375,383 Z'%3E%3C/path%3E%3C/g%3E%3C/svg%3E\");width:11px;height:11px;background-size:cover;background-repeat:no-repeat}.arrow-down{position:absolute;right:5px;top:0}.arrow-down svg{width:8px;margin-top:5px;margin-left:5px;opacity:0.4}.cell-value-wrapper{margin-right:10px;overflow:hidden;text-overflow:ellipsis}.revo-button{position:relative;overflow:hidden;color:#fff;background-color:#4545ff;height:32px;line-height:32px;padding:0 15px;outline:0;border:0;border-radius:7px;box-sizing:border-box;cursor:pointer}.revo-button.green{background-color:#009037}.revo-button.red{background-color:#E0662E}.revo-button:disabled,.revo-button[disabled]{cursor:not-allowed !important;filter:opacity(0.35) !important}.revo-button.outline{border:1px solid #dbdbdb;line-height:30px;background:none;color:#000;box-shadow:none}revo-grid[theme^=dark] .revo-button.outline{border:1px solid #404040;color:#d8d8d8}revo-grid[theme=default],revo-grid:not([theme]){border:1px solid #cecece;font-size:12px}revo-grid[theme=default] .rowHeaders revogr-header,revo-grid:not([theme]) .rowHeaders revogr-header{box-shadow:-1px 0 0 0 #cecece inset}revo-grid[theme=default] revogr-header,revo-grid:not([theme]) revogr-header{text-align:center;line-height:30px;background-color:#f8f9fa}revo-grid[theme=default] revogr-header .group-rgRow,revo-grid:not([theme]) revogr-header .group-rgRow{box-shadow:none}revo-grid[theme=default] revogr-header .header-rgRow,revo-grid[theme=default] revogr-header .group-rgRow,revo-grid:not([theme]) revogr-header .header-rgRow,revo-grid:not([theme]) revogr-header .group-rgRow{text-transform:uppercase;font-size:12px;color:#000}revo-grid[theme=default] revogr-header .header-rgRow,revo-grid:not([theme]) revogr-header .header-rgRow{height:30px;box-shadow:0 -1px 0 0 #cecece inset}revo-grid[theme=default] revogr-header .rgHeaderCell,revo-grid:not([theme]) revogr-header .rgHeaderCell{box-shadow:-1px 0 0 0 #cecece inset, 0 -1px 0 0 #cecece, 0 -1px 0 0 #cecece inset}revo-grid[theme=default] revogr-header .rgHeaderCell.focused-cell,revo-grid:not([theme]) revogr-header .rgHeaderCell.focused-cell{background:rgba(233, 234, 237, 0.5)}revo-grid[theme=default] .rowHeaders,revo-grid:not([theme]) .rowHeaders{background-color:#f8f9fa}revo-grid[theme=default] .rowHeaders revogr-data .rgCell,revo-grid:not([theme]) .rowHeaders revogr-data .rgCell{color:#000}revo-grid[theme=default] .rowHeaders revogr-data .rgCell:first-child,revo-grid:not([theme]) .rowHeaders revogr-data .rgCell:first-child{box-shadow:0 -1px 0 0 #cecece inset}revo-grid[theme=default] .rowHeaders revogr-data .rgCell:not(:first-child),revo-grid:not([theme]) .rowHeaders revogr-data .rgCell:not(:first-child){box-shadow:0 -1px 0 0 #cecece inset, 1px 0 0 0 #cecece inset}revo-grid[theme=default] .rowHeaders revogr-data .rgCell:last-child,revo-grid:not([theme]) .rowHeaders revogr-data .rgCell:last-child{border-right:1px solid #cecece}revo-grid[theme=default] .rowHeaders revogr-data revogr-header,revo-grid:not([theme]) .rowHeaders revogr-data revogr-header{box-shadow:0 -1px 0 0 #cecece inset}revo-grid[theme=default] revogr-viewport-scroll.colPinStart revogr-data .rgRow .rgCell:last-child,revo-grid:not([theme]) revogr-viewport-scroll.colPinStart revogr-data .rgRow .rgCell:last-child{box-shadow:0 -1px 0 0 #e2e3e3 inset, -1px 0 0 0 #cecece inset}revo-grid[theme=default] revogr-viewport-scroll.colPinStart .footer-wrapper revogr-data .rgRow:first-child .rgCell,revo-grid:not([theme]) revogr-viewport-scroll.colPinStart .footer-wrapper revogr-data .rgRow:first-child .rgCell{box-shadow:0 1px 0 0 #cecece inset, -1px 0 0 0 #cecece inset}revo-grid[theme=default] revogr-viewport-scroll.colPinEnd,revo-grid[theme=default] revogr-viewport-scroll.colPinEnd revogr-header,revo-grid:not([theme]) revogr-viewport-scroll.colPinEnd,revo-grid:not([theme]) revogr-viewport-scroll.colPinEnd revogr-header{box-shadow:1px 0 0 #cecece inset}revo-grid[theme=default] .footer-wrapper revogr-data .rgRow:first-child .rgCell,revo-grid:not([theme]) .footer-wrapper revogr-data .rgRow:first-child .rgCell{box-shadow:0 1px 0 0 #e2e3e3 inset, -1px 0 0 0 #e2e3e3 inset, 0 -1px 0 0 #e2e3e3 inset}revo-grid[theme=default] revogr-data,revo-grid:not([theme]) revogr-data{text-align:center}revo-grid[theme=default] revogr-data .revo-draggable,revo-grid:not([theme]) revogr-data .revo-draggable{float:left}revo-grid[theme=default] revogr-data .rgRow,revo-grid:not([theme]) revogr-data .rgRow{line-height:27px}revo-grid[theme=default] revogr-data .rgRow.focused-rgRow,revo-grid:not([theme]) revogr-data .rgRow.focused-rgRow{background-color:rgba(233, 234, 237, 0.5)}revo-grid[theme=default] revogr-data .rgCell,revo-grid:not([theme]) revogr-data .rgCell{box-shadow:0 -1px 0 0 #e2e3e3 inset, -1px 0 0 0 #e2e3e3 inset}revo-grid[theme=default] revogr-data .rgCell.disabled,revo-grid:not([theme]) revogr-data .rgCell.disabled{background-color:0 -1px 0 0 #e2e3e3 inset, -1px 0 0 0 #e2e3e3 inset}revo-grid[theme=material]{font-family:Nunito, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\"}revo-grid[theme=material] revogr-header{line-height:50px;font-weight:600;text-align:left}revo-grid[theme=material] revogr-header .rgHeaderCell{padding:0 15px;text-overflow:ellipsis}revo-grid[theme=material] revogr-header .header-rgRow{height:50px}revo-grid[theme=material] revogr-data{text-align:left}revo-grid[theme=material] revogr-data .rgRow{line-height:42px}revo-grid[theme=material] revogr-data .rgCell{padding:0 15px}revo-grid[theme=material] .rowHeaders{background-color:#f7faff}revo-grid[theme=material] .rowHeaders revogr-data .rgCell{color:#757a82}revo-grid[theme=material] revogr-header .header-rgRow.group{box-shadow:0 -1px 0 0 #f1f1f1 inset}revo-grid[theme=material] revogr-header .header-rgRow:not(.group){box-shadow:0 -1px 0 0 #f1f1f1, 0 -1px 0 0 #f1f1f1 inset}revo-grid[theme=material] revogr-header .rgHeaderCell.sortable:hover{background-color:#f1f1f1}revo-grid[theme=material] revogr-header .rgHeaderCell.focused-cell{background:rgba(233, 234, 237, 0.5)}revo-grid[theme=material] .footer-wrapper revogr-data{box-shadow:0 -1px 0 #f1f1f1}revo-grid[theme=material] revogr-viewport-scroll.colPinStart{box-shadow:-1px 0 0 #f1f1f1 inset}revo-grid[theme=material] revogr-viewport-scroll.colPinEnd{box-shadow:-1px 0 0 #f1f1f1}revo-grid[theme=material] revogr-data .rgRow{box-shadow:0 -1px 0 0 #f1f1f1 inset}revo-grid[theme=material] revogr-data .rgRow.focused-rgRow{background-color:rgba(233, 234, 237, 0.5)}revo-grid[theme=material] revogr-data .rgCell{color:rgba(0, 0, 0, 0.87)}revo-grid[theme=material] revogr-data .rgCell.disabled{background-color:#f7f7f7}revo-grid[theme=darkMaterial]{font-family:Nunito, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";color:#d8d8d8}revo-grid[theme=darkMaterial] revogr-header{line-height:50px;font-weight:600;text-align:left}revo-grid[theme=darkMaterial] revogr-header .rgHeaderCell{padding:0 15px;text-overflow:ellipsis}revo-grid[theme=darkMaterial] revogr-header .header-rgRow{height:50px}revo-grid[theme=darkMaterial] revogr-data{text-align:left}revo-grid[theme=darkMaterial] revogr-data .rgRow{line-height:42px}revo-grid[theme=darkMaterial] revogr-data .rgCell{padding:0 15px}revo-grid[theme=darkMaterial] .rowHeaders{background-color:rgba(40, 39, 43, 0.8)}revo-grid[theme=darkMaterial] .rowHeaders revogr-data .rgCell{color:rgba(216, 216, 216, 0.8)}revo-grid[theme=darkMaterial] revogr-edit{background-color:#28272b}revo-grid[theme=darkMaterial] revogr-header .header-rgRow.group{box-shadow:0 -1px 0 0 #404040 inset}revo-grid[theme=darkMaterial] revogr-header .header-rgRow:not(.group){box-shadow:0 -1px 0 0 #404040, 0 -1px 0 0 #404040 inset}revo-grid[theme=darkMaterial] revogr-header .rgHeaderCell.sortable:hover{background-color:rgba(64, 64, 64, 0.5)}revo-grid[theme=darkMaterial] revogr-header .rgHeaderCell.focused-cell{background:rgba(115, 148, 160, 0.15)}revo-grid[theme=darkMaterial] .footer-wrapper revogr-data{box-shadow:0 -1px 0 #404040}revo-grid[theme=darkMaterial] revogr-data .rgCell{color:rgba(216, 216, 216, 0.9)}revo-grid[theme=darkMaterial] revogr-data .rgRow{box-shadow:0 -1px 0 0 #404040 inset}revo-grid[theme=darkMaterial] revogr-data .rgRow.focused-rgRow{background-color:rgba(115, 148, 160, 0.15)}revo-grid[theme=darkMaterial] revogr-viewport-scroll.colPinStart{box-shadow:-1px 0 0 #404040 inset}revo-grid[theme=darkMaterial] revogr-viewport-scroll.colPinEnd{box-shadow:-1px 0 0 #404040}revo-grid[theme=darkCompact]{font-family:Nunito, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";color:#d8d8d8}revo-grid[theme=darkCompact] revogr-header{line-height:45px;font-weight:600;text-align:left}revo-grid[theme=darkCompact] revogr-header .rgHeaderCell{padding:0 15px;text-overflow:ellipsis}revo-grid[theme=darkCompact] revogr-header .header-rgRow{height:45px}revo-grid[theme=darkCompact] revogr-data{text-align:left}revo-grid[theme=darkCompact] revogr-data .rgRow{line-height:32px}revo-grid[theme=darkCompact] revogr-data .rgCell{padding:0 15px}revo-grid[theme=darkCompact] .rowHeaders{background-color:rgba(40, 39, 43, 0.8)}revo-grid[theme=darkCompact] .rowHeaders revogr-data .rgCell{color:rgba(216, 216, 216, 0.8)}revo-grid[theme=darkCompact] revogr-edit{background-color:#28272b}revo-grid[theme=darkCompact] revogr-header .header-rgRow.group{box-shadow:0 -1px 0 0 #404040 inset}revo-grid[theme=darkCompact] revogr-header .header-rgRow:not(.group){box-shadow:0 -1px 0 0 #404040, 0 -1px 0 0 #404040 inset}revo-grid[theme=darkCompact] revogr-header .rgHeaderCell.sortable:hover{background-color:rgba(64, 64, 64, 0.5)}revo-grid[theme=darkCompact] revogr-header .rgHeaderCell.focused-cell{background:rgba(115, 148, 160, 0.15)}revo-grid[theme=darkCompact] .footer-wrapper revogr-data{box-shadow:0 -1px 0 #404040}revo-grid[theme=darkCompact] revogr-data .rgCell{color:rgba(216, 216, 216, 0.9)}revo-grid[theme=darkCompact] revogr-data .rgRow{box-shadow:0 -1px 0 0 #404040 inset}revo-grid[theme=darkCompact] revogr-data .rgRow.focused-rgRow{background-color:rgba(115, 148, 160, 0.15)}revo-grid[theme=darkCompact] revogr-viewport-scroll.colPinStart{box-shadow:-1px 0 0 #404040 inset}revo-grid[theme=darkCompact] revogr-viewport-scroll.colPinEnd{box-shadow:-1px 0 0 #404040}revo-grid[theme=compact]{font-family:Nunito, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\"}revo-grid[theme=compact] revogr-header{line-height:45px;font-weight:600;text-align:left}revo-grid[theme=compact] revogr-header .rgHeaderCell{padding:0 15px;text-overflow:ellipsis}revo-grid[theme=compact] revogr-header .header-rgRow{height:45px}revo-grid[theme=compact] revogr-data{text-align:left}revo-grid[theme=compact] revogr-data .rgRow{line-height:32px}revo-grid[theme=compact] revogr-data .rgCell{padding:0 15px}revo-grid[theme=compact] .rowHeaders{background-color:#f7faff}revo-grid[theme=compact] .rowHeaders revogr-data .rgCell{color:#757a82}revo-grid[theme=compact] revogr-header .header-rgRow.group{box-shadow:0 -1px 0 0 #f1f1f1 inset}revo-grid[theme=compact] revogr-header .header-rgRow:not(.group){box-shadow:0 -1px 0 0 #f1f1f1, 0 -1px 0 0 #f1f1f1 inset}revo-grid[theme=compact] revogr-header .rgHeaderCell.sortable:hover{background-color:#f1f1f1}revo-grid[theme=compact] revogr-header .rgHeaderCell.focused-cell{background:rgba(233, 234, 237, 0.5)}revo-grid[theme=compact] .footer-wrapper revogr-data{box-shadow:0 -1px 0 #f1f1f1}revo-grid[theme=compact] revogr-viewport-scroll.colPinStart{box-shadow:-1px 0 0 #f1f1f1 inset}revo-grid[theme=compact] revogr-viewport-scroll.colPinEnd{box-shadow:-1px 0 0 #f1f1f1}revo-grid[theme=compact] revogr-data .rgRow{box-shadow:0 -1px 0 0 #f1f1f1 inset}revo-grid[theme=compact] revogr-data .rgRow.focused-rgRow{background-color:rgba(233, 234, 237, 0.5)}revo-grid[theme=compact] revogr-data .rgCell{color:rgba(0, 0, 0, 0.87)}revo-grid[theme=compact] revogr-data .rgCell.disabled{background-color:#f7f7f7}revo-grid[theme=compact] revo-dropdown .rv-dr-root{padding:0px 9px}revo-grid{display:block;height:100%;min-height:300px;font-family:Helvetica, Arial, Sans-Serif, serif;font-size:14px;position:relative;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;display:flex;flex-direction:column;width:100%;height:100%}revo-grid .attribution{position:absolute;bottom:0;left:0;right:0;z-index:1000;width:0;height:0;border-left:4px solid rgba(38, 106, 232, 0.9);border-bottom:4px solid rgba(38, 106, 232, 0.9);border-top:4px solid transparent;border-right:4px solid transparent;cursor:pointer}revo-grid .attribution .value{position:absolute;bottom:0;left:0;background-color:rgba(255, 255, 255, 0.9);padding:4px;border-radius:4px;box-shadow:0 1px 10px rgba(0, 0, 0, 0.2);white-space:nowrap;text-decoration:none;color:black;letter-spacing:0.3px;font-size:11px;opacity:0;width:4px;overflow:hidden;transition:opacity 0.5s ease-in-out, width 0.3s ease-in-out}revo-grid .attribution:hover .value{width:63px;opacity:1}revo-grid.column-draggable.column-drag-start:hover,revo-grid.column-draggable.column-drag-start *:hover{cursor:grabbing}revo-grid .footer-wrapper,revo-grid .header-wrapper{width:100%}revo-grid .footer-wrapper revogr-data,revo-grid .header-wrapper revogr-data{z-index:3}revo-grid revo-dropdown{width:100%}revo-grid revo-dropdown .rv-dr-root{max-height:100%}revo-grid revo-dropdown.shrink label{opacity:0}revo-grid .viewports{max-width:100%;display:flex;flex-direction:row;align-items:flex-start;flex-grow:1}revo-grid .main-viewport{flex-grow:1;height:0;display:flex;justify-content:space-between;flex-direction:row}revo-grid .draggable{position:fixed;height:30px;line-height:30px;background:#fff;border-radius:3px;display:block;z-index:100;margin-top:5px;margin-right:-20px;box-shadow:0 4px 20px 0 rgba(0, 0, 0, 0.15);padding-left:20px;padding-right:5px}revo-grid .draggable.hidden{display:none}revo-grid .draggable .revo-alt-icon{background-color:black;position:absolute;left:5px;top:10px}revo-grid .draggable-wrapper.hidden{display:none}revo-grid .drag-position{position:absolute;left:0;right:0;height:1px;z-index:2;background:gray;pointer-events:none}revo-grid .drag-position-y{position:absolute;top:0;left:0;bottom:0;width:1px;z-index:2;background:gray;pointer-events:none}revo-grid .drag-auto-scroll-y{pointer-events:none;position:absolute;left:0;top:0;height:50px;width:1px}revo-grid .clipboard{position:absolute;left:0;top:0}revo-grid revogr-scroll-virtual{position:relative}revo-grid revogr-scroll-virtual.vertical,revo-grid revogr-scroll-virtual.horizontal{z-index:3}";
|
|
1703
1050
|
const RevoGridStyle0 = revoGridStyleCss;
|
|
1704
1051
|
|
|
1705
1052
|
const RevoGridComponent = class {
|
|
1706
1053
|
constructor(hostRef) {
|
|
1707
|
-
index
|
|
1708
|
-
this.contentsizechanged = index
|
|
1709
|
-
this.beforeedit = index
|
|
1710
|
-
this.beforerangeedit = index
|
|
1711
|
-
this.afteredit = index
|
|
1712
|
-
this.beforeautofill = index
|
|
1713
|
-
this.beforerange = index
|
|
1714
|
-
this.afterfocus = index
|
|
1715
|
-
this.roworderchanged = index
|
|
1716
|
-
this.
|
|
1717
|
-
this.
|
|
1718
|
-
this.
|
|
1719
|
-
this.
|
|
1720
|
-
this.
|
|
1721
|
-
this.
|
|
1722
|
-
this.
|
|
1723
|
-
this.
|
|
1724
|
-
this.
|
|
1725
|
-
this.
|
|
1726
|
-
this.
|
|
1727
|
-
this.
|
|
1728
|
-
this.
|
|
1729
|
-
this.
|
|
1730
|
-
this.
|
|
1731
|
-
this.
|
|
1732
|
-
this.
|
|
1733
|
-
this.
|
|
1734
|
-
this.
|
|
1735
|
-
this.
|
|
1736
|
-
this.
|
|
1737
|
-
this.
|
|
1738
|
-
this.
|
|
1739
|
-
this.
|
|
1740
|
-
this.
|
|
1741
|
-
this.
|
|
1742
|
-
this.
|
|
1743
|
-
this.
|
|
1744
|
-
this.
|
|
1054
|
+
index.registerInstance(this, hostRef);
|
|
1055
|
+
this.contentsizechanged = index.createEvent(this, "contentsizechanged", 7);
|
|
1056
|
+
this.beforeedit = index.createEvent(this, "beforeedit", 7);
|
|
1057
|
+
this.beforerangeedit = index.createEvent(this, "beforerangeedit", 7);
|
|
1058
|
+
this.afteredit = index.createEvent(this, "afteredit", 7);
|
|
1059
|
+
this.beforeautofill = index.createEvent(this, "beforeautofill", 7);
|
|
1060
|
+
this.beforerange = index.createEvent(this, "beforerange", 7);
|
|
1061
|
+
this.afterfocus = index.createEvent(this, "afterfocus", 7);
|
|
1062
|
+
this.roworderchanged = index.createEvent(this, "roworderchanged", 7);
|
|
1063
|
+
this.beforesorting = index.createEvent(this, "beforesorting", 7);
|
|
1064
|
+
this.beforesourcesortingapply = index.createEvent(this, "beforesourcesortingapply", 7);
|
|
1065
|
+
this.beforesortingapply = index.createEvent(this, "beforesortingapply", 7);
|
|
1066
|
+
this.rowdragstart = index.createEvent(this, "rowdragstart", 7);
|
|
1067
|
+
this.headerclick = index.createEvent(this, "headerclick", 7);
|
|
1068
|
+
this.beforecellfocus = index.createEvent(this, "beforecellfocus", 7);
|
|
1069
|
+
this.beforefocuslost = index.createEvent(this, "beforefocuslost", 7);
|
|
1070
|
+
this.beforesourceset = index.createEvent(this, "beforesourceset", 7);
|
|
1071
|
+
this.beforeanysource = index.createEvent(this, "beforeanysource", 7);
|
|
1072
|
+
this.aftersourceset = index.createEvent(this, "aftersourceset", 7);
|
|
1073
|
+
this.afteranysource = index.createEvent(this, "afteranysource", 7);
|
|
1074
|
+
this.beforecolumnsset = index.createEvent(this, "beforecolumnsset", 7);
|
|
1075
|
+
this.beforecolumnapplied = index.createEvent(this, "beforecolumnapplied", 7);
|
|
1076
|
+
this.aftercolumnsset = index.createEvent(this, "aftercolumnsset", 7);
|
|
1077
|
+
this.beforefilterapply = index.createEvent(this, "beforefilterapply", 7);
|
|
1078
|
+
this.beforefiltertrimmed = index.createEvent(this, "beforefiltertrimmed", 7);
|
|
1079
|
+
this.beforetrimmed = index.createEvent(this, "beforetrimmed", 7);
|
|
1080
|
+
this.aftertrimmed = index.createEvent(this, "aftertrimmed", 7);
|
|
1081
|
+
this.viewportscroll = index.createEvent(this, "viewportscroll", 7);
|
|
1082
|
+
this.beforeexport = index.createEvent(this, "beforeexport", 7);
|
|
1083
|
+
this.beforeeditstart = index.createEvent(this, "beforeeditstart", 7);
|
|
1084
|
+
this.aftercolumnresize = index.createEvent(this, "aftercolumnresize", 7);
|
|
1085
|
+
this.beforerowdefinition = index.createEvent(this, "beforerowdefinition", 7);
|
|
1086
|
+
this.filterconfigchanged = index.createEvent(this, "filterconfigchanged", 7);
|
|
1087
|
+
this.sortingconfigchanged = index.createEvent(this, "sortingconfigchanged", 7);
|
|
1088
|
+
this.rowheaderschanged = index.createEvent(this, "rowheaderschanged", 7);
|
|
1089
|
+
this.beforegridrender = index.createEvent(this, "beforegridrender", 7);
|
|
1090
|
+
this.aftergridrender = index.createEvent(this, "aftergridrender", 7);
|
|
1091
|
+
this.aftergridinit = index.createEvent(this, "aftergridinit", 7);
|
|
1092
|
+
this.additionaldatachanged = index.createEvent(this, "additionaldatachanged", 7);
|
|
1093
|
+
this.afterthemechanged = index.createEvent(this, "afterthemechanged", 7);
|
|
1094
|
+
this.created = index.createEvent(this, "created", 7);
|
|
1745
1095
|
this.extraElements = [];
|
|
1096
|
+
this.pluginService = new PluginService();
|
|
1746
1097
|
this.viewport = null;
|
|
1747
1098
|
this.isInited = false;
|
|
1748
|
-
/**
|
|
1749
|
-
* Plugins
|
|
1750
|
-
* Define plugins collection
|
|
1751
|
-
*/
|
|
1752
|
-
this.internalPlugins = [];
|
|
1753
1099
|
this.rowHeaders = undefined;
|
|
1754
1100
|
this.frameSize = 1;
|
|
1755
1101
|
this.rowSize = 0;
|
|
@@ -1772,6 +1118,7 @@ const RevoGridComponent = class {
|
|
|
1772
1118
|
this.rowClass = '';
|
|
1773
1119
|
this.autoSizeColumn = false;
|
|
1774
1120
|
this.filter = false;
|
|
1121
|
+
this.sorting = undefined;
|
|
1775
1122
|
this.focusTemplate = undefined;
|
|
1776
1123
|
this.canMoveColumns = false;
|
|
1777
1124
|
this.trimmedRows = {};
|
|
@@ -1799,15 +1146,31 @@ const RevoGridComponent = class {
|
|
|
1799
1146
|
this.dataProvider.refresh(type);
|
|
1800
1147
|
}
|
|
1801
1148
|
/**
|
|
1802
|
-
*
|
|
1149
|
+
* Refreshes data at specified cell.
|
|
1803
1150
|
* Useful for performance optimization.
|
|
1804
1151
|
* No viewport update will be triggered.
|
|
1152
|
+
*
|
|
1153
|
+
* @example
|
|
1154
|
+
* const grid = document.querySelector('revo-grid');
|
|
1155
|
+
* grid.setDataAt({ row: 0, col: 0, val: 'test' }); // refresh
|
|
1805
1156
|
*/
|
|
1806
|
-
async setDataAt(
|
|
1807
|
-
|
|
1157
|
+
async setDataAt({ row, col, colType = 'rgCol', rowType = 'rgRow', val, skipDataUpdate = false }) {
|
|
1158
|
+
var _a;
|
|
1159
|
+
if (this.dataProvider && this.columnProvider && !skipDataUpdate) {
|
|
1160
|
+
const columnProp = (_a = this.columnProvider.getColumn(col, colType)) === null || _a === void 0 ? void 0 : _a.prop;
|
|
1161
|
+
if (typeof columnProp !== 'undefined') {
|
|
1162
|
+
this.dataProvider.setCellData({
|
|
1163
|
+
type: rowType,
|
|
1164
|
+
rowIndex: row,
|
|
1165
|
+
prop: columnProp,
|
|
1166
|
+
val,
|
|
1167
|
+
}, false);
|
|
1168
|
+
}
|
|
1169
|
+
}
|
|
1170
|
+
const dataElement = this.element.querySelector(`revogr-data[type="${rowType}"][col-type="${colType}"]`);
|
|
1808
1171
|
return dataElement === null || dataElement === void 0 ? void 0 : dataElement.updateCell({
|
|
1809
|
-
row
|
|
1810
|
-
col
|
|
1172
|
+
row,
|
|
1173
|
+
col,
|
|
1811
1174
|
});
|
|
1812
1175
|
}
|
|
1813
1176
|
/**
|
|
@@ -1888,7 +1251,7 @@ const RevoGridComponent = class {
|
|
|
1888
1251
|
if (!rgCol) {
|
|
1889
1252
|
return;
|
|
1890
1253
|
}
|
|
1891
|
-
await
|
|
1254
|
+
await dimension_helpers.timeout();
|
|
1892
1255
|
const colGroup = rgCol.pin || 'rgCol';
|
|
1893
1256
|
if (!this.columnProvider) {
|
|
1894
1257
|
throw new Error('Not connected');
|
|
@@ -1916,7 +1279,7 @@ const RevoGridComponent = class {
|
|
|
1916
1279
|
if (!this.dataProvider) {
|
|
1917
1280
|
throw new Error('Not connected');
|
|
1918
1281
|
}
|
|
1919
|
-
return
|
|
1282
|
+
return dimension_helpers.getVisibleSourceItem(this.dataProvider.stores[type].store);
|
|
1920
1283
|
}
|
|
1921
1284
|
/**
|
|
1922
1285
|
* Provides access to rows internal store observer
|
|
@@ -1975,19 +1338,19 @@ const RevoGridComponent = class {
|
|
|
1975
1338
|
* Clear current grid focus. Grid has no longer focus on it.
|
|
1976
1339
|
*/
|
|
1977
1340
|
async clearFocus() {
|
|
1978
|
-
var _a;
|
|
1341
|
+
var _a, _b;
|
|
1979
1342
|
const focused = (_a = this.viewport) === null || _a === void 0 ? void 0 : _a.getFocused();
|
|
1980
1343
|
const event = this.beforefocuslost.emit(focused);
|
|
1981
1344
|
if (event.defaultPrevented) {
|
|
1982
1345
|
return;
|
|
1983
1346
|
}
|
|
1984
|
-
this.selectionStoreConnector.clearAll();
|
|
1347
|
+
(_b = this.selectionStoreConnector) === null || _b === void 0 ? void 0 : _b.clearAll();
|
|
1985
1348
|
}
|
|
1986
1349
|
/**
|
|
1987
1350
|
* Get all active plugins instances
|
|
1988
1351
|
*/
|
|
1989
1352
|
async getPlugins() {
|
|
1990
|
-
return
|
|
1353
|
+
return this.pluginService.get();
|
|
1991
1354
|
}
|
|
1992
1355
|
/**
|
|
1993
1356
|
* Get the currently focused cell.
|
|
@@ -2014,6 +1377,15 @@ const RevoGridComponent = class {
|
|
|
2014
1377
|
var _a, _b;
|
|
2015
1378
|
return (_b = (_a = this.viewport) === null || _a === void 0 ? void 0 : _a.getSelectedRange()) !== null && _b !== void 0 ? _b : null;
|
|
2016
1379
|
}
|
|
1380
|
+
/**
|
|
1381
|
+
* Refresh extra elements. Triggers re-rendering of extra elements and functions.
|
|
1382
|
+
* Part of extraElements and registerVNode methods.
|
|
1383
|
+
* Useful for plugins.
|
|
1384
|
+
*/
|
|
1385
|
+
async refreshExtraElements() {
|
|
1386
|
+
var _a;
|
|
1387
|
+
(_a = this.extraService) === null || _a === void 0 ? void 0 : _a.refresh();
|
|
1388
|
+
}
|
|
2017
1389
|
mousedownHandle(event) {
|
|
2018
1390
|
const screenX = events.getPropertyFromEvent(event, 'screenX');
|
|
2019
1391
|
const screenY = events.getPropertyFromEvent(event, 'screenY');
|
|
@@ -2080,7 +1452,7 @@ const RevoGridComponent = class {
|
|
|
2080
1452
|
async onCellEdit(e) {
|
|
2081
1453
|
var _a;
|
|
2082
1454
|
const { defaultPrevented, detail } = this.beforeedit.emit(e.detail);
|
|
2083
|
-
await
|
|
1455
|
+
await dimension_helpers.timeout();
|
|
2084
1456
|
// apply data
|
|
2085
1457
|
if (!defaultPrevented) {
|
|
2086
1458
|
(_a = this.dataProvider) === null || _a === void 0 ? void 0 : _a.setCellData(detail);
|
|
@@ -2142,7 +1514,7 @@ const RevoGridComponent = class {
|
|
|
2142
1514
|
// Column format change will trigger column structure update
|
|
2143
1515
|
this.columnChanged(this.columns);
|
|
2144
1516
|
}
|
|
2145
|
-
columnChanged(newVal = []) {
|
|
1517
|
+
columnChanged(newVal = [], _prevVal = undefined, __watchName = 'columns', init = false) {
|
|
2146
1518
|
if (!this.dimensionProvider || !this.columnProvider) {
|
|
2147
1519
|
return;
|
|
2148
1520
|
}
|
|
@@ -2151,7 +1523,7 @@ const RevoGridComponent = class {
|
|
|
2151
1523
|
if (beforeSetEvent.defaultPrevented) {
|
|
2152
1524
|
return;
|
|
2153
1525
|
}
|
|
2154
|
-
this.dimensionProvider.applyNewColumns(beforeSetEvent.detail.columns, this.disableVirtualX);
|
|
1526
|
+
this.dimensionProvider.applyNewColumns(beforeSetEvent.detail.columns, this.disableVirtualX, init);
|
|
2155
1527
|
const beforeApplyEvent = this.beforecolumnapplied.emit(columnGather);
|
|
2156
1528
|
if (beforeApplyEvent.defaultPrevented) {
|
|
2157
1529
|
return;
|
|
@@ -2207,7 +1579,9 @@ const RevoGridComponent = class {
|
|
|
2207
1579
|
break;
|
|
2208
1580
|
case 'source':
|
|
2209
1581
|
type = 'rgRow';
|
|
2210
|
-
/**
|
|
1582
|
+
/**
|
|
1583
|
+
* Applied for source only for cross compatability between plugins
|
|
1584
|
+
*/
|
|
2211
1585
|
const beforesourceset = this.beforesourceset.emit({
|
|
2212
1586
|
type,
|
|
2213
1587
|
source: newVal,
|
|
@@ -2221,7 +1595,9 @@ const RevoGridComponent = class {
|
|
|
2221
1595
|
});
|
|
2222
1596
|
const newSource = [...beforesourceset.detail.source];
|
|
2223
1597
|
this.dataProvider.setData(newSource, type, this.disableVirtualY);
|
|
2224
|
-
/**
|
|
1598
|
+
/**
|
|
1599
|
+
* Applied for source only for cross compatability between plugins
|
|
1600
|
+
*/
|
|
2225
1601
|
if (watchName === 'source') {
|
|
2226
1602
|
this.aftersourceset.emit({
|
|
2227
1603
|
type,
|
|
@@ -2280,15 +1656,8 @@ const RevoGridComponent = class {
|
|
|
2280
1656
|
* Grouping
|
|
2281
1657
|
*/
|
|
2282
1658
|
groupingChanged(newVal = {}) {
|
|
2283
|
-
|
|
2284
|
-
|
|
2285
|
-
const isGrouping = p;
|
|
2286
|
-
if (!!isGrouping.setGrouping) {
|
|
2287
|
-
grPlugin = isGrouping;
|
|
2288
|
-
break;
|
|
2289
|
-
}
|
|
2290
|
-
}
|
|
2291
|
-
grPlugin === null || grPlugin === void 0 ? void 0 : grPlugin.setGrouping(newVal || {});
|
|
1659
|
+
var _a;
|
|
1660
|
+
(_a = this.pluginService.getByClass(column_drag_plugin.GroupingRowPlugin)) === null || _a === void 0 ? void 0 : _a.setGrouping(newVal || {});
|
|
2292
1661
|
}
|
|
2293
1662
|
/**
|
|
2294
1663
|
* Stretch Plugin Apply
|
|
@@ -2300,30 +1669,29 @@ const RevoGridComponent = class {
|
|
|
2300
1669
|
if (isStretch === 'false') {
|
|
2301
1670
|
isStretch = false;
|
|
2302
1671
|
}
|
|
2303
|
-
|
|
1672
|
+
const pluginData = this.getPluginData();
|
|
1673
|
+
if (!pluginData) {
|
|
1674
|
+
return;
|
|
1675
|
+
}
|
|
1676
|
+
const stretch = this.pluginService.getByClass(column_drag_plugin.StretchColumn);
|
|
2304
1677
|
if ((typeof isStretch === 'boolean' && isStretch) || isStretch === 'true') {
|
|
2305
1678
|
if (!stretch) {
|
|
2306
|
-
|
|
2307
|
-
data: this.dataProvider,
|
|
2308
|
-
column: this.columnProvider,
|
|
2309
|
-
dimension: this.dimensionProvider,
|
|
2310
|
-
viewport: this.viewportProvider,
|
|
2311
|
-
selection: this.selectionStoreConnector,
|
|
2312
|
-
};
|
|
2313
|
-
this.internalPlugins.push(new column_drag_plugin.StretchColumn(this.element, pluginData));
|
|
1679
|
+
this.pluginService.add(new column_drag_plugin.StretchColumn(this.element, pluginData));
|
|
2314
1680
|
}
|
|
2315
1681
|
else if (column_drag_plugin.isStretchPlugin(stretch)) {
|
|
2316
1682
|
stretch.applyStretch(this.columnProvider.getRawColumns());
|
|
2317
1683
|
}
|
|
2318
1684
|
}
|
|
2319
1685
|
else if (stretch) {
|
|
2320
|
-
|
|
2321
|
-
this.internalPlugins.splice(index, 1);
|
|
1686
|
+
this.pluginService.remove(stretch);
|
|
2322
1687
|
}
|
|
2323
1688
|
}
|
|
2324
1689
|
applyFilter(cfg) {
|
|
2325
1690
|
this.filterconfigchanged.emit(cfg);
|
|
2326
1691
|
}
|
|
1692
|
+
applySorting(cfg) {
|
|
1693
|
+
this.sortingconfigchanged.emit(cfg);
|
|
1694
|
+
}
|
|
2327
1695
|
rowHeadersChange(rowHeaders) {
|
|
2328
1696
|
this.rowheaderschanged.emit(rowHeaders);
|
|
2329
1697
|
}
|
|
@@ -2331,26 +1699,16 @@ const RevoGridComponent = class {
|
|
|
2331
1699
|
* Register external VNodes
|
|
2332
1700
|
*/
|
|
2333
1701
|
registerOutsideVNodes(elements = []) {
|
|
2334
|
-
this.extraElements =
|
|
1702
|
+
this.extraElements = elements;
|
|
2335
1703
|
}
|
|
2336
1704
|
additionalDataChanged(data) {
|
|
2337
1705
|
this.additionaldatachanged.emit(data);
|
|
2338
1706
|
}
|
|
2339
|
-
|
|
2340
|
-
|
|
2341
|
-
|
|
2342
|
-
|
|
2343
|
-
|
|
2344
|
-
}
|
|
2345
|
-
// todo: remove old plugins if any was removed based on _prevPlugins
|
|
2346
|
-
// register user plugins
|
|
2347
|
-
plugins === null || plugins === void 0 ? void 0 : plugins.forEach(userPlugin => {
|
|
2348
|
-
const existingPlugin = this.internalPlugins.find(createdPlugin => createdPlugin instanceof userPlugin);
|
|
2349
|
-
if (existingPlugin) {
|
|
2350
|
-
return;
|
|
2351
|
-
}
|
|
2352
|
-
this.internalPlugins.push(new userPlugin(this.element, pluginData));
|
|
2353
|
-
});
|
|
1707
|
+
/**
|
|
1708
|
+
* User can add plugins via plugins property
|
|
1709
|
+
*/
|
|
1710
|
+
pluginsChanged(plugins = [], prevPlugins) {
|
|
1711
|
+
this.pluginService.addUserPluginsAndCreate(this.element, plugins, prevPlugins, this.getPluginData());
|
|
2354
1712
|
}
|
|
2355
1713
|
// #endregion
|
|
2356
1714
|
// #region Plugins
|
|
@@ -2362,35 +1720,39 @@ const RevoGridComponent = class {
|
|
|
2362
1720
|
if (!pluginData) {
|
|
2363
1721
|
return;
|
|
2364
1722
|
}
|
|
1723
|
+
// register system plugins
|
|
1724
|
+
this.setCorePlugins(pluginData);
|
|
1725
|
+
// register user plugins
|
|
1726
|
+
this.pluginsChanged(this.plugins);
|
|
1727
|
+
}
|
|
1728
|
+
setCorePlugins(pluginData) {
|
|
2365
1729
|
if (this.accessible) {
|
|
2366
|
-
this.
|
|
1730
|
+
this.pluginService.add(new WCAGPlugin(this.element, pluginData));
|
|
2367
1731
|
}
|
|
2368
1732
|
// register auto size plugin
|
|
2369
1733
|
if (this.autoSizeColumn) {
|
|
2370
|
-
this.
|
|
1734
|
+
this.pluginService.add(new column_drag_plugin.AutoSizeColumnPlugin(this.element, pluginData, typeof this.autoSizeColumn === 'object'
|
|
2371
1735
|
? this.autoSizeColumn
|
|
2372
1736
|
: undefined));
|
|
2373
1737
|
}
|
|
2374
1738
|
// register filter plugin
|
|
2375
1739
|
if (this.filter) {
|
|
2376
|
-
this.
|
|
1740
|
+
this.pluginService.add(new column_drag_plugin.FilterPlugin(this.element, pluginData, typeof this.filter === 'object' ? this.filter : undefined));
|
|
2377
1741
|
}
|
|
2378
1742
|
// register export plugin
|
|
2379
1743
|
if (this.exporting) {
|
|
2380
|
-
this.
|
|
1744
|
+
this.pluginService.add(new column_drag_plugin.ExportFilePlugin(this.element, pluginData));
|
|
2381
1745
|
}
|
|
2382
1746
|
// register sorting plugin
|
|
2383
|
-
this.
|
|
1747
|
+
this.pluginService.add(new column_drag_plugin.SortingPlugin(this.element, pluginData));
|
|
2384
1748
|
// register grouping plugin
|
|
2385
|
-
this.
|
|
1749
|
+
this.pluginService.add(new column_drag_plugin.GroupingRowPlugin(this.element, pluginData));
|
|
2386
1750
|
if (this.canMoveColumns) {
|
|
2387
|
-
this.
|
|
1751
|
+
this.pluginService.add(new column_drag_plugin.ColumnMovePlugin(this.element, pluginData));
|
|
2388
1752
|
}
|
|
2389
|
-
// register user plugins
|
|
2390
|
-
this.pluginsChanged(this.plugins);
|
|
2391
1753
|
}
|
|
2392
1754
|
getPluginData() {
|
|
2393
|
-
if (!this.dimensionProvider || !this.dataProvider || !this.columnProvider || !this.viewportProvider) {
|
|
1755
|
+
if (!this.dimensionProvider || !this.dataProvider || !this.columnProvider || !this.viewportProvider || !this.selectionStoreConnector) {
|
|
2394
1756
|
return;
|
|
2395
1757
|
}
|
|
2396
1758
|
// pass data provider to plugins
|
|
@@ -2400,12 +1762,12 @@ const RevoGridComponent = class {
|
|
|
2400
1762
|
dimension: this.dimensionProvider,
|
|
2401
1763
|
viewport: this.viewportProvider,
|
|
2402
1764
|
selection: this.selectionStoreConnector,
|
|
1765
|
+
plugins: this.pluginService,
|
|
2403
1766
|
};
|
|
2404
1767
|
return pluginData;
|
|
2405
1768
|
}
|
|
2406
1769
|
removePlugins() {
|
|
2407
|
-
this.
|
|
2408
|
-
this.internalPlugins = [];
|
|
1770
|
+
this.pluginService.destroy();
|
|
2409
1771
|
}
|
|
2410
1772
|
// #endregion
|
|
2411
1773
|
// if reconnect to dom we need to set up plugins
|
|
@@ -2413,6 +1775,7 @@ const RevoGridComponent = class {
|
|
|
2413
1775
|
if (this.isInited) {
|
|
2414
1776
|
this.setPlugins();
|
|
2415
1777
|
}
|
|
1778
|
+
this.created.emit();
|
|
2416
1779
|
}
|
|
2417
1780
|
/**
|
|
2418
1781
|
* Called once just after the component is first connected to the DOM.
|
|
@@ -2440,7 +1803,7 @@ const RevoGridComponent = class {
|
|
|
2440
1803
|
// set data
|
|
2441
1804
|
this.applyStretch(this.stretch);
|
|
2442
1805
|
this.themeChanged(this.theme, undefined, undefined, true);
|
|
2443
|
-
this.columnChanged(this.columns);
|
|
1806
|
+
this.columnChanged(this.columns, undefined, undefined, true);
|
|
2444
1807
|
this.dataSourceChanged(this.source, undefined, 'source');
|
|
2445
1808
|
this.dataSourceChanged(this.pinnedTopSource, undefined, 'pinnedTopSource');
|
|
2446
1809
|
this.dataSourceChanged(this.pinnedBottomSource, undefined, 'pinnedBottomSource');
|
|
@@ -2448,7 +1811,10 @@ const RevoGridComponent = class {
|
|
|
2448
1811
|
this.trimmedRowsChanged(this.trimmedRows);
|
|
2449
1812
|
}
|
|
2450
1813
|
this.rowDefChanged(this.rowDefinitions);
|
|
2451
|
-
|
|
1814
|
+
// init grouping
|
|
1815
|
+
if (this.grouping && Object.keys(this.grouping).length > 0) {
|
|
1816
|
+
this.groupingChanged(this.grouping);
|
|
1817
|
+
}
|
|
2452
1818
|
// init scrolling service
|
|
2453
1819
|
this.scrollingService = new GridScrollingService((e) => {
|
|
2454
1820
|
var _a;
|
|
@@ -2473,7 +1839,7 @@ const RevoGridComponent = class {
|
|
|
2473
1839
|
this.aftergridrender.emit();
|
|
2474
1840
|
}
|
|
2475
1841
|
render() {
|
|
2476
|
-
if (!this.dimensionProvider || !this.dataProvider || !this.columnProvider || !this.viewportProvider) {
|
|
1842
|
+
if (!this.dimensionProvider || !this.dataProvider || !this.columnProvider || !this.viewportProvider || !this.selectionStoreConnector) {
|
|
2477
1843
|
return;
|
|
2478
1844
|
}
|
|
2479
1845
|
const contentHeight = this.dimensionProvider.stores['rgRow'].store.get('realSize');
|
|
@@ -2501,7 +1867,7 @@ const RevoGridComponent = class {
|
|
|
2501
1867
|
// Row headers setting
|
|
2502
1868
|
if (this.rowHeaders && this.viewport.columns.length) {
|
|
2503
1869
|
const anyView = this.viewport.columns[0];
|
|
2504
|
-
viewportSections.push(index
|
|
1870
|
+
viewportSections.push(index.h("revogr-row-headers", { additionalData: this.additionalData, height: contentHeight, rowClass: this.rowClass, resize: this.resize, dataPorts: anyView.dataPorts, headerProp: anyView.headerProp, jobsBeforeRender: this.jobsBeforeRender, rowHeaderColumn: typeof this.rowHeaders === 'object' ? this.rowHeaders : undefined, onScrollview: ({ detail: e }) => this.scrollingService.proxyScroll(e, 'headerRow'), onRef: ({ detail: e }) => this.scrollingService.registerElement(e, 'headerRow') }));
|
|
2505
1871
|
}
|
|
2506
1872
|
// Viewport section render
|
|
2507
1873
|
const isMobile = isMobileDevice();
|
|
@@ -2511,21 +1877,22 @@ const RevoGridComponent = class {
|
|
|
2511
1877
|
const headerProperties = Object.assign(Object.assign({}, view.headerProp), { type: view.type, additionalData: this.additionalData, viewportCol: view.viewportCol, selectionStore: view.columnSelectionStore, canResize: this.resize, readonly: this.readonly, columnFilter: !!this.filter });
|
|
2512
1878
|
// Column headers
|
|
2513
1879
|
const dataViews = [
|
|
2514
|
-
index
|
|
1880
|
+
index.h("revogr-header", Object.assign({}, headerProperties, { slot: viewport_helpers.HEADER_SLOT })),
|
|
2515
1881
|
];
|
|
2516
1882
|
// Render viewport data (vertical sections)
|
|
2517
1883
|
view.dataPorts.forEach(data => {
|
|
2518
1884
|
const key = `${data.type}_${view.type}`;
|
|
2519
|
-
const dataView = (index
|
|
1885
|
+
const dataView = (index.h("revogr-overlay-selection", Object.assign({}, data, { isMobileDevice: isMobile, onSelectall: () => { var _a; return (_a = this.selectionStoreConnector) === null || _a === void 0 ? void 0 : _a.selectAll(); }, editors: this.editors, readonly: this.readonly, range: this.range, useClipboard: this.useClipboard, applyChangesOnClose: this.applyOnClose, additionalData: this.additionalData, slot: data.slot, onBeforenextvpfocus: (e) => { var _a; return (_a = this.selectionStoreConnector) === null || _a === void 0 ? void 0 : _a.beforeNextFocusCell(e.detail); }, onCanceledit: () => { var _a; return (_a = this.selectionStoreConnector) === null || _a === void 0 ? void 0 : _a.setEdit(false); }, onSetedit: ({ detail }) => {
|
|
1886
|
+
var _a;
|
|
2520
1887
|
const event = this.beforeeditstart.emit(detail);
|
|
2521
1888
|
if (!event.defaultPrevented) {
|
|
2522
|
-
this.selectionStoreConnector.setEdit(detail.val);
|
|
1889
|
+
(_a = this.selectionStoreConnector) === null || _a === void 0 ? void 0 : _a.setEdit(detail.val);
|
|
2523
1890
|
}
|
|
2524
|
-
} }), index
|
|
1891
|
+
} }), index.h("revogr-data", Object.assign({}, data, { colType: view.type, key: key, readonly: this.readonly, range: this.range, rowClass: this.rowClass, rowSelectionStore: data.rowSelectionStore, additionalData: this.additionalData, jobsBeforeRender: this.jobsBeforeRender, slot: viewport_helpers.DATA_SLOT }), index.h("slot", { name: `data-${view.type}-${data.type}` })), index.h("revogr-temp-range", { selectionStore: data.selectionStore, dimensionRow: data.dimensionRow, dimensionCol: data.dimensionCol }), index.h("revogr-focus", { colData: data.colData, dataStore: data.dataStore, focusTemplate: this.focusTemplate, rowType: data.type, colType: view.type, selectionStore: data.selectionStore, dimensionRow: data.dimensionRow, dimensionCol: data.dimensionCol }, index.h("slot", { name: `focus-${view.type}-${data.type}` }))));
|
|
2525
1892
|
dataViews.push(dataView);
|
|
2526
1893
|
});
|
|
2527
1894
|
// Add viewport scroll in the end
|
|
2528
|
-
viewPortHtml.push(index
|
|
1895
|
+
viewPortHtml.push(index.h("revogr-viewport-scroll", Object.assign({}, view.prop, { ref: el => this.scrollingService.registerElement(el, `${view.prop.key}`), onScrollviewport: e => this.scrollingService.proxyScroll(e.detail, `${view.prop.key}`), onScrollviewportsilent: e => this.scrollingService.scrollSilentService(e.detail, `${view.prop.key}`) }), dataViews));
|
|
2529
1896
|
}
|
|
2530
1897
|
viewportSections.push(viewPortHtml);
|
|
2531
1898
|
// #endregion
|
|
@@ -2533,18 +1900,19 @@ const RevoGridComponent = class {
|
|
|
2533
1900
|
const typeCol = 'rgCol';
|
|
2534
1901
|
const viewports = this.viewportProvider.stores;
|
|
2535
1902
|
const dimensions = this.dimensionProvider.stores;
|
|
2536
|
-
return (index
|
|
1903
|
+
return (index.h(index.Host, null, this.hideAttribution ? null : (index.h("revogr-attribution", { class: "attribution" })), index.h("slot", { name: "header" }), index.h("div", { class: "main-viewport", onClick: (e) => {
|
|
2537
1904
|
var _a;
|
|
2538
1905
|
if (e.currentTarget === e.target) {
|
|
2539
1906
|
(_a = this.viewport) === null || _a === void 0 ? void 0 : _a.clearEdit();
|
|
2540
1907
|
}
|
|
2541
|
-
} }, index
|
|
1908
|
+
} }, index.h("div", { class: "viewports" }, index.h("slot", { name: "viewport" }), viewportSections, index.h("revogr-scroll-virtual", { class: "vertical", dimension: typeRow, viewportStore: viewports[typeRow].store, dimensionStore: dimensions[typeRow].store, ref: el => this.scrollingService.registerElement(el, 'rowScroll'), onScrollvirtual: e => this.scrollingService.proxyScroll(e.detail) }), index.h(OrderRenderer, { ref: e => (this.orderService = e) }))), index.h("revogr-scroll-virtual", { class: "horizontal", dimension: typeCol, viewportStore: viewports[typeCol].store, dimensionStore: dimensions[typeCol].store, ref: el => this.scrollingService.registerElement(el, 'colScroll'), onScrollvirtual: e => this.scrollingService.proxyScroll(e.detail) }), index.h("revogr-extra", { ref: el => (this.extraService = el), nodes: this.extraElements }), index.h("slot", { name: "footer" })));
|
|
2542
1909
|
}
|
|
2543
1910
|
disconnectedCallback() {
|
|
2544
|
-
// Remove all plugins, to avoid memory leaks
|
|
1911
|
+
// Remove all plugins, to avoid memory leaks
|
|
1912
|
+
// and unexpected behaviour when the component is removed
|
|
2545
1913
|
this.removePlugins();
|
|
2546
1914
|
}
|
|
2547
|
-
get element() { return index
|
|
1915
|
+
get element() { return index.getElement(this); }
|
|
2548
1916
|
static get watchers() { return {
|
|
2549
1917
|
"columnTypes": ["columnTypesChanged"],
|
|
2550
1918
|
"columns": ["columnChanged"],
|
|
@@ -2560,6 +1928,7 @@ const RevoGridComponent = class {
|
|
|
2560
1928
|
"grouping": ["groupingChanged"],
|
|
2561
1929
|
"stretch": ["applyStretch"],
|
|
2562
1930
|
"filter": ["applyFilter"],
|
|
1931
|
+
"sorting": ["applySorting"],
|
|
2563
1932
|
"rowHeaders": ["rowHeadersChange"],
|
|
2564
1933
|
"registerVNode": ["registerOutsideVNodes"],
|
|
2565
1934
|
"additionalData": ["additionalDataChanged"],
|