@revolist/revogrid 4.16.0 → 4.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/{app-globals-CnL-iuWZ.js → app-globals-D67EXhgK.js} +3 -3
- package/dist/cjs/{app-globals-CnL-iuWZ.js.map → app-globals-D67EXhgK.js.map} +1 -1
- package/dist/cjs/{cell-renderer-RYPxTSX7.js → cell-renderer-TmNnqu7r.js} +5 -5
- package/dist/cjs/{cell-renderer-RYPxTSX7.js.map → cell-renderer-TmNnqu7r.js.map} +1 -1
- package/dist/cjs/{column.drag.plugin-CxKQ-GqY.js → column.drag.plugin-pCfjUQwZ.js} +13 -13
- package/dist/cjs/column.drag.plugin-pCfjUQwZ.js.map +1 -0
- package/dist/cjs/{column.service-urln-gkz.js → column.service-euEyR799.js} +4 -4
- package/dist/cjs/{column.service-urln-gkz.js.map → column.service-euEyR799.js.map} +1 -1
- package/dist/cjs/{dimension.helpers-BmZOxsgq.js → dimension.helpers-C5PvAWJW.js} +24 -8
- package/dist/cjs/dimension.helpers-C5PvAWJW.js.map +1 -0
- package/dist/cjs/{edit.utils-Bx3jy_dC.js → edit.utils-T20rr-g4.js} +3 -3
- package/dist/cjs/{edit.utils-Bx3jy_dC.js.map → edit.utils-T20rr-g4.js.map} +1 -1
- package/dist/cjs/{filter.button-rIn9mDMT.js → filter.button-DSsWNs23.js} +3 -3
- package/dist/cjs/{filter.button-rIn9mDMT.js.map → filter.button-DSsWNs23.js.map} +1 -1
- package/dist/cjs/{header-cell-renderer-c5sd3ee7.js → header-cell-renderer-BwHvC5YY.js} +4 -4
- package/dist/cjs/{header-cell-renderer-c5sd3ee7.js.map → header-cell-renderer-BwHvC5YY.js.map} +1 -1
- package/dist/cjs/{index-BbtPQ4Br.js → index-BF1c1pO3.js} +196 -133
- package/dist/cjs/index-BF1c1pO3.js.map +1 -0
- package/dist/cjs/index.cjs.js +10 -10
- package/dist/cjs/loader.cjs.js +3 -3
- package/dist/cjs/revo-grid.cjs.entry.js +8 -8
- package/dist/cjs/revo-grid.cjs.entry.js.map +1 -1
- package/dist/cjs/revo-grid.cjs.js +4 -4
- package/dist/cjs/revo-grid.cjs.js.map +1 -1
- package/dist/cjs/revo-grid.entry.cjs.js.map +1 -1
- package/dist/cjs/revogr-attribution.revogr-extra.revogr-focus.revogr-overlay-selection.revogr-row-headers.revogr-scroll-virtual.revogr-temp-range.entry.cjs.js.map +1 -1
- package/dist/cjs/revogr-attribution_7.cjs.entry.js +10 -10
- package/dist/cjs/revogr-attribution_7.cjs.entry.js.map +1 -1
- package/dist/cjs/revogr-clipboard.revogr-edit.revogr-order-editor.entry.cjs.js.map +1 -1
- package/dist/cjs/revogr-clipboard_3.cjs.entry.js +5 -5
- package/dist/cjs/revogr-clipboard_3.cjs.entry.js.map +1 -1
- package/dist/cjs/revogr-data.revogr-header.revogr-viewport-scroll.vnode-html.entry.cjs.js.map +1 -1
- package/dist/cjs/revogr-data_4.cjs.entry.js +10 -10
- package/dist/cjs/revogr-data_4.cjs.entry.js.map +1 -1
- package/dist/cjs/revogr-filter-panel.cjs.entry.js +3 -3
- package/dist/cjs/revogr-filter-panel.cjs.entry.js.map +1 -1
- package/dist/cjs/revogr-filter-panel.entry.cjs.js.map +1 -1
- package/dist/cjs/{text-editor-pxAtbkyc.js → text-editor-C6fUGszl.js} +4 -4
- package/dist/cjs/{text-editor-pxAtbkyc.js.map → text-editor-C6fUGszl.js.map} +1 -1
- package/dist/cjs/{throttle-CQppnhEi.js → throttle-BBq2OiCM.js} +3 -3
- package/dist/cjs/{throttle-CQppnhEi.js.map → throttle-BBq2OiCM.js.map} +1 -1
- package/dist/cjs/{viewport.store-BrZDEt69.js → viewport.store-BQqAGkuJ.js} +3 -3
- package/dist/cjs/{viewport.store-BrZDEt69.js.map → viewport.store-BQqAGkuJ.js.map} +1 -1
- package/dist/collection/collection-manifest.json +1 -1
- package/dist/collection/components/data/revogr-data-style.css +0 -72
- package/dist/collection/components/editors/revogr-edit-style.css +0 -72
- package/dist/collection/components/header/revogr-header-style.css +0 -72
- package/dist/collection/components/overlay/revogr-overlay-style.css +0 -72
- package/dist/collection/components/revoGrid/revo-grid-style.css +3 -75
- package/dist/collection/components/scroll/revogr-viewport-scroll-style.css +0 -72
- package/dist/collection/components/scrollable/revogr-scroll-style.css +0 -72
- package/dist/collection/components/selectionFocus/revogr-focus-style.css +0 -72
- package/dist/collection/components/selectionTempRange/revogr-temp-range-style.css +0 -72
- package/dist/collection/plugins/filter/filter.style.css +0 -72
- package/dist/collection/plugins/sorting/sorting.func.js +2 -2
- package/dist/collection/plugins/sorting/sorting.func.js.map +1 -1
- package/dist/collection/plugins/sorting/sorting.plugin.js +3 -3
- package/dist/collection/plugins/sorting/sorting.plugin.js.map +1 -1
- package/dist/esm/{app-globals-Bp4Vbqcr.js → app-globals-C3ZHKjnB.js} +3 -3
- package/dist/esm/{app-globals-Bp4Vbqcr.js.map → app-globals-C3ZHKjnB.js.map} +1 -1
- package/dist/{revo-grid/cell-renderer-C6x60eGs.js → esm/cell-renderer-AeQIe3qD.js} +5 -5
- package/dist/{revo-grid/cell-renderer-C6x60eGs.js.map → esm/cell-renderer-AeQIe3qD.js.map} +1 -1
- package/dist/esm/{column.drag.plugin-Capa_0kN.js → column.drag.plugin-Dc7h1kmS.js} +13 -13
- package/dist/esm/column.drag.plugin-Dc7h1kmS.js.map +1 -0
- package/dist/esm/{column.service-QLZCp9EY.js → column.service-DyqJ8oYq.js} +4 -4
- package/dist/{revo-grid/column.service-QLZCp9EY.js.map → esm/column.service-DyqJ8oYq.js.map} +1 -1
- package/dist/{revo-grid/dimension.helpers-pcKIUO61.js → esm/dimension.helpers-D5lwLPzd.js} +24 -8
- package/dist/{revo-grid/dimension.helpers-pcKIUO61.js.map → esm/dimension.helpers-D5lwLPzd.js.map} +1 -1
- package/dist/esm/{edit.utils-BBbK2wbv.js → edit.utils-B6bLKSQh.js} +3 -3
- package/dist/esm/{edit.utils-BBbK2wbv.js.map → edit.utils-B6bLKSQh.js.map} +1 -1
- package/dist/{revo-grid/filter.button-BpZR0kGU.js → esm/filter.button-DmOE7VCJ.js} +3 -3
- package/dist/esm/{filter.button-BpZR0kGU.js.map → filter.button-DmOE7VCJ.js.map} +1 -1
- package/dist/esm/{header-cell-renderer-AAPG96e2.js → header-cell-renderer-XxSVxgM5.js} +4 -4
- package/dist/esm/{header-cell-renderer-AAPG96e2.js.map → header-cell-renderer-XxSVxgM5.js.map} +1 -1
- package/dist/esm/{index-gUcGIzDv.js → index-Dyptvvxf.js} +196 -133
- package/dist/esm/index-Dyptvvxf.js.map +1 -0
- package/dist/esm/index.js +11 -11
- package/dist/esm/loader.js +4 -4
- package/dist/esm/revo-grid.entry.js +8 -8
- package/dist/esm/revo-grid.entry.js.map +1 -1
- package/dist/esm/revo-grid.js +5 -5
- package/dist/esm/revo-grid.js.map +1 -1
- package/dist/esm/revogr-attribution.revogr-extra.revogr-focus.revogr-overlay-selection.revogr-row-headers.revogr-scroll-virtual.revogr-temp-range.entry.js.map +1 -1
- package/dist/esm/revogr-attribution_7.entry.js +10 -10
- package/dist/esm/revogr-attribution_7.entry.js.map +1 -1
- package/dist/esm/revogr-clipboard.revogr-edit.revogr-order-editor.entry.js.map +1 -1
- package/dist/esm/revogr-clipboard_3.entry.js +5 -5
- package/dist/esm/revogr-clipboard_3.entry.js.map +1 -1
- package/dist/esm/revogr-data.revogr-header.revogr-viewport-scroll.vnode-html.entry.js.map +1 -1
- package/dist/esm/revogr-data_4.entry.js +10 -10
- package/dist/esm/revogr-data_4.entry.js.map +1 -1
- package/dist/esm/revogr-filter-panel.entry.js +3 -3
- package/dist/esm/revogr-filter-panel.entry.js.map +1 -1
- package/dist/esm/{text-editor-92MGc5Bc.js → text-editor-DlCRmV75.js} +4 -4
- package/dist/esm/{text-editor-92MGc5Bc.js.map → text-editor-DlCRmV75.js.map} +1 -1
- package/dist/esm/{throttle-Dshl76F1.js → throttle-DcjZyclk.js} +3 -3
- package/dist/{revo-grid/throttle-Dshl76F1.js.map → esm/throttle-DcjZyclk.js.map} +1 -1
- package/dist/{revo-grid/viewport.store-C89n4AEU.js → esm/viewport.store-2mQugd8S.js} +3 -3
- package/dist/{revo-grid/viewport.store-C89n4AEU.js.map → esm/viewport.store-2mQugd8S.js.map} +1 -1
- package/dist/revo-grid/{app-globals-Bp4Vbqcr.js → app-globals-C3ZHKjnB.js} +3 -3
- package/dist/revo-grid/{app-globals-Bp4Vbqcr.js.map → app-globals-C3ZHKjnB.js.map} +1 -1
- package/dist/{esm/cell-renderer-C6x60eGs.js → revo-grid/cell-renderer-AeQIe3qD.js} +5 -5
- package/dist/{esm/cell-renderer-C6x60eGs.js.map → revo-grid/cell-renderer-AeQIe3qD.js.map} +1 -1
- package/dist/revo-grid/{column.drag.plugin-Capa_0kN.js → column.drag.plugin-Dc7h1kmS.js} +13 -13
- package/dist/revo-grid/column.drag.plugin-Dc7h1kmS.js.map +1 -0
- package/dist/revo-grid/{column.service-QLZCp9EY.js → column.service-DyqJ8oYq.js} +4 -4
- package/dist/{esm/column.service-QLZCp9EY.js.map → revo-grid/column.service-DyqJ8oYq.js.map} +1 -1
- package/dist/{esm/dimension.helpers-pcKIUO61.js → revo-grid/dimension.helpers-D5lwLPzd.js} +24 -8
- package/dist/{esm/dimension.helpers-pcKIUO61.js.map → revo-grid/dimension.helpers-D5lwLPzd.js.map} +1 -1
- package/dist/revo-grid/{edit.utils-BBbK2wbv.js → edit.utils-B6bLKSQh.js} +3 -3
- package/dist/revo-grid/{edit.utils-BBbK2wbv.js.map → edit.utils-B6bLKSQh.js.map} +1 -1
- package/dist/{esm/filter.button-BpZR0kGU.js → revo-grid/filter.button-DmOE7VCJ.js} +3 -3
- package/dist/revo-grid/{filter.button-BpZR0kGU.js.map → filter.button-DmOE7VCJ.js.map} +1 -1
- package/dist/revo-grid/{header-cell-renderer-AAPG96e2.js → header-cell-renderer-XxSVxgM5.js} +4 -4
- package/dist/revo-grid/{header-cell-renderer-AAPG96e2.js.map → header-cell-renderer-XxSVxgM5.js.map} +1 -1
- package/dist/revo-grid/{index-gUcGIzDv.js → index-Dyptvvxf.js} +196 -133
- package/dist/revo-grid/index-Dyptvvxf.js.map +1 -0
- package/dist/revo-grid/index.esm.js +11 -11
- package/dist/revo-grid/revo-grid.entry.esm.js.map +1 -1
- package/dist/revo-grid/revo-grid.entry.js +8 -8
- package/dist/revo-grid/revo-grid.entry.js.map +1 -1
- package/dist/revo-grid/revo-grid.esm.js +5 -5
- package/dist/revo-grid/revo-grid.esm.js.map +1 -1
- package/dist/revo-grid/revogr-attribution.revogr-extra.revogr-focus.revogr-overlay-selection.revogr-row-headers.revogr-scroll-virtual.revogr-temp-range.entry.esm.js.map +1 -1
- package/dist/revo-grid/revogr-attribution_7.entry.js +10 -10
- package/dist/revo-grid/revogr-attribution_7.entry.js.map +1 -1
- package/dist/revo-grid/revogr-clipboard.revogr-edit.revogr-order-editor.entry.esm.js.map +1 -1
- package/dist/revo-grid/revogr-clipboard_3.entry.js +5 -5
- package/dist/revo-grid/revogr-clipboard_3.entry.js.map +1 -1
- package/dist/revo-grid/revogr-data.revogr-header.revogr-viewport-scroll.vnode-html.entry.esm.js.map +1 -1
- package/dist/revo-grid/revogr-data_4.entry.js +10 -10
- package/dist/revo-grid/revogr-data_4.entry.js.map +1 -1
- package/dist/revo-grid/revogr-filter-panel.entry.esm.js.map +1 -1
- package/dist/revo-grid/revogr-filter-panel.entry.js +3 -3
- package/dist/revo-grid/revogr-filter-panel.entry.js.map +1 -1
- package/dist/revo-grid/{text-editor-92MGc5Bc.js → text-editor-DlCRmV75.js} +4 -4
- package/dist/revo-grid/{text-editor-92MGc5Bc.js.map → text-editor-DlCRmV75.js.map} +1 -1
- package/dist/revo-grid/{throttle-Dshl76F1.js → throttle-DcjZyclk.js} +3 -3
- package/dist/{esm/throttle-Dshl76F1.js.map → revo-grid/throttle-DcjZyclk.js.map} +1 -1
- package/dist/{esm/viewport.store-C89n4AEU.js → revo-grid/viewport.store-2mQugd8S.js} +3 -3
- package/dist/{esm/viewport.store-C89n4AEU.js.map → revo-grid/viewport.store-2mQugd8S.js.map} +1 -1
- package/dist/types/stencil-public-runtime.d.ts +12 -5
- package/hydrate/index.js +275 -158
- package/hydrate/index.mjs +275 -158
- package/package.json +4 -4
- package/standalone/data.store.js +21 -5
- package/standalone/data.store.js.map +1 -1
- package/standalone/revo-grid.js +7 -7
- package/standalone/revo-grid.js.map +1 -1
- package/standalone/revogr-attribution2.js +1 -1
- package/standalone/revogr-data2.js +2 -2
- package/standalone/revogr-data2.js.map +1 -1
- package/standalone/revogr-edit2.js +2 -2
- package/standalone/revogr-edit2.js.map +1 -1
- package/standalone/revogr-extra2.js +1 -1
- package/standalone/revogr-filter-panel.js +2 -2
- package/standalone/revogr-filter-panel.js.map +1 -1
- package/standalone/revogr-focus2.js +2 -2
- package/standalone/revogr-focus2.js.map +1 -1
- package/standalone/revogr-header2.js +2 -2
- package/standalone/revogr-header2.js.map +1 -1
- package/standalone/revogr-overlay-selection2.js +2 -2
- package/standalone/revogr-overlay-selection2.js.map +1 -1
- package/standalone/revogr-row-headers2.js +1 -1
- package/standalone/revogr-scroll-virtual2.js +2 -2
- package/standalone/revogr-scroll-virtual2.js.map +1 -1
- package/standalone/revogr-temp-range2.js +2 -2
- package/standalone/revogr-temp-range2.js.map +1 -1
- package/standalone/revogr-viewport-scroll2.js +2 -2
- package/standalone/revogr-viewport-scroll2.js.map +1 -1
- package/standalone/vnode-converter.js +1 -1
- package/dist/cjs/column.drag.plugin-CxKQ-GqY.js.map +0 -1
- package/dist/cjs/dimension.helpers-BmZOxsgq.js.map +0 -1
- package/dist/cjs/index-BbtPQ4Br.js.map +0 -1
- package/dist/esm/column.drag.plugin-Capa_0kN.js.map +0 -1
- package/dist/esm/index-gUcGIzDv.js.map +0 -1
- package/dist/revo-grid/column.drag.plugin-Capa_0kN.js.map +0 -1
- package/dist/revo-grid/index-gUcGIzDv.js.map +0 -1
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* Built by Revolist OU ❤️
|
|
3
3
|
*/
|
|
4
|
-
import { r as registerInstance, c as createEvent, h, H as Host, g as getElement } from './index-
|
|
4
|
+
import { r as registerInstance, c as createEvent, h, H as Host, g as getElement } from './index-Dyptvvxf.js';
|
|
5
5
|
import { d as debounce } from './debounce-BfO9dz9v.js';
|
|
6
|
-
import { i as isFilterBtn, e as AndOrButton, d as TrashButton } from './filter.button-
|
|
6
|
+
import { i as isFilterBtn, e as AndOrButton, d as TrashButton } from './filter.button-DmOE7VCJ.js';
|
|
7
7
|
|
|
8
8
|
(function closest() {
|
|
9
9
|
if (!Element.prototype.matches) {
|
|
@@ -24,7 +24,7 @@ import { i as isFilterBtn, e as AndOrButton, d as TrashButton } from './filter.b
|
|
|
24
24
|
}
|
|
25
25
|
})();
|
|
26
26
|
|
|
27
|
-
const filterStyleCss = ".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}revogr-filter-panel{position:absolute;display:block;top:0;left:0;z-index:100;max-height:calc(100% - 80px);min-width:250px;overflow:auto;opacity:1;transform:none;background-color:var(--revo-grid-filter-panel-bg, #fff);border:1px solid var(--revo-grid-filter-panel-border, #cecece);transform-origin:62px 0px;box-shadow:0 5px 18px -2px var(--revo-grid-filter-panel-shadow, rgba(0, 0, 0, 0.15));padding:10px;border-radius:8px;min-width:220px;text-align:left}revogr-filter-panel .filter-holder>div{display:flex;flex-direction:column}revogr-filter-panel label{font-size:13px;display:block;padding:8px 0}revogr-filter-panel select{width:100%}revogr-filter-panel input[type=text]{border:0;min-height:34px;margin:5px 0;background:var(--revo-grid-filter-panel-input-bg, #f3f3f3);border-radius:5px;padding:0 10px;box-sizing:border-box;width:100%}revogr-filter-panel button{margin-top:10px;margin-right:5px}revogr-filter-panel .filter-actions{text-align:right;margin-right:-5px}.rgHeaderCell:hover .rv-filter{transition:opacity 267ms cubic-bezier(0.4, 0, 0.2, 1) 0ms, transform 178ms cubic-bezier(0.4, 0, 0.2, 1) 0ms}.rgHeaderCell:hover .rv-filter,.rgHeaderCell .rv-filter.active{opacity:1}.rgHeaderCell .rv-filter{height:24px;width:24px;background:none;border:0;opacity:0;visibility:visible;cursor:pointer;border-radius:4px}.rgHeaderCell .rv-filter.active{color:#10224a}.rgHeaderCell .rv-filter .filter-img{color:gray;width:11px}.select-css{display:block;font-family:sans-serif;line-height:1.3;padding:0.6em 1.4em 0.5em 0.8em;width:100%;max-width:100%;box-sizing:border-box;margin:0;border:1px solid var(--revo-grid-filter-panel-select-border, #d9d9d9);box-shadow:transparent;border-radius:0.5em;appearance:none;background-color:var(--revo-grid-filter-panel-input-bg, #f3f3f3);background-image:url(\"data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22292.4%22%20height%3D%22292.4%22%3E%3Cpath%20fill%3D%22%23007CB2%22%20d%3D%22M287%2069.4a17.6%2017.6%200%200%200-13-5.4H18.4c-5%200-9.3%201.8-12.9%205.4A17.6%2017.6%200%200%200%200%2082.2c0%205%201.8%209.3%205.4%2012.9l128%20127.9c3.6%203.6%207.8%205.4%2012.8%205.4s9.2-1.8%2012.8-5.4L287%2095c3.5-3.5%205.4-7.8%205.4-12.8%200-5-1.9-9.2-5.5-12.8z%22%2F%3E%3C%2Fsvg%3E\");background-repeat:no-repeat, repeat;background-position:right 0.7em top 50%, 0 0;background-size:0.65em auto, 100%;}.select-css::-ms-expand{display:none}.select-css:hover{border-color:var(--revo-grid-filter-panel-select-border, #d9d9d9)}.select-css:focus{border-color:var(--revo-grid-filter-panel-select-border-hover, #d9d9d9);box-shadow:0 0 1px 3px rgba(59, 153, 252, 0.7);box-shadow:0 0 0 3px -moz-mac-focusring;outline:none}.select-css option{font-weight:normal}.select-css:disabled,.select-css[aria-disabled=true]{color:gray;background-image:url(\"data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22292.4%22%20height%3D%22292.4%22%3E%3Cpath%20fill%3D%22graytext%22%20d%3D%22M287%2069.4a17.6%2017.6%200%200%200-13-5.4H18.4c-5%200-9.3%201.8-12.9%205.4A17.6%2017.6%200%200%200%200%2082.2c0%205%201.8%209.3%205.4%2012.9l128%20127.9c3.6%203.6%207.8%205.4%2012.8%205.4s9.2-1.8%2012.8-5.4L287%2095c3.5-3.5%205.4-7.8%205.4-12.8%200-5-1.9-9.2-5.5-12.8z%22%2F%3E%3C%2Fsvg%3E\"), linear-gradient(to bottom, #ffffff 0%, #ffffff 100%)}.select-css:disabled:hover,.select-css[aria-disabled=true]{border-color:var(--revo-grid-filter-panel-select-border, #d9d9d9)}.multi-filter-list{margin-top:5px;margin-bottom:5px}.multi-filter-list div{white-space:nowrap}.multi-filter-list .multi-filter-list-action{display:flex;justify-content:space-between;align-items:center}.multi-filter-list .and-or-button{margin:0 0 0 10px;min-width:58px;cursor:pointer}.multi-filter-list .trash-button{margin:0 0 -2px 6px;cursor:pointer;width:22px;height:100%;font-size:16px}.multi-filter-list .trash-button .trash-img{width:1em}.add-filter-divider{display:block;margin:0 -10px 10px -10px;border-bottom:1px solid var(--revo-grid-filter-panel-divider, #d9d9d9);height:10px}.select-input{display:flex;justify-content:space-between;align-items:center}";
|
|
27
|
+
const filterStyleCss = "revogr-filter-panel{position:absolute;display:block;top:0;left:0;z-index:100;max-height:calc(100% - 80px);min-width:250px;overflow:auto;opacity:1;transform:none;background-color:var(--revo-grid-filter-panel-bg, #fff);border:1px solid var(--revo-grid-filter-panel-border, #cecece);transform-origin:62px 0px;box-shadow:0 5px 18px -2px var(--revo-grid-filter-panel-shadow, rgba(0, 0, 0, 0.15));padding:10px;border-radius:8px;min-width:220px;text-align:left}revogr-filter-panel .filter-holder>div{display:flex;flex-direction:column}revogr-filter-panel label{font-size:13px;display:block;padding:8px 0}revogr-filter-panel select{width:100%}revogr-filter-panel input[type=text]{border:0;min-height:34px;margin:5px 0;background:var(--revo-grid-filter-panel-input-bg, #f3f3f3);border-radius:5px;padding:0 10px;box-sizing:border-box;width:100%}revogr-filter-panel button{margin-top:10px;margin-right:5px}revogr-filter-panel .filter-actions{text-align:right;margin-right:-5px}.rgHeaderCell:hover .rv-filter{transition:opacity 267ms cubic-bezier(0.4, 0, 0.2, 1) 0ms, transform 178ms cubic-bezier(0.4, 0, 0.2, 1) 0ms}.rgHeaderCell:hover .rv-filter,.rgHeaderCell .rv-filter.active{opacity:1}.rgHeaderCell .rv-filter{height:24px;width:24px;background:none;border:0;opacity:0;visibility:visible;cursor:pointer;border-radius:4px}.rgHeaderCell .rv-filter.active{color:#10224a}.rgHeaderCell .rv-filter .filter-img{color:gray;width:11px}.select-css{display:block;font-family:sans-serif;line-height:1.3;padding:0.6em 1.4em 0.5em 0.8em;width:100%;max-width:100%;box-sizing:border-box;margin:0;border:1px solid var(--revo-grid-filter-panel-select-border, #d9d9d9);box-shadow:transparent;border-radius:0.5em;appearance:none;background-color:var(--revo-grid-filter-panel-input-bg, #f3f3f3);background-image:url(\"data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22292.4%22%20height%3D%22292.4%22%3E%3Cpath%20fill%3D%22%23007CB2%22%20d%3D%22M287%2069.4a17.6%2017.6%200%200%200-13-5.4H18.4c-5%200-9.3%201.8-12.9%205.4A17.6%2017.6%200%200%200%200%2082.2c0%205%201.8%209.3%205.4%2012.9l128%20127.9c3.6%203.6%207.8%205.4%2012.8%205.4s9.2-1.8%2012.8-5.4L287%2095c3.5-3.5%205.4-7.8%205.4-12.8%200-5-1.9-9.2-5.5-12.8z%22%2F%3E%3C%2Fsvg%3E\");background-repeat:no-repeat, repeat;background-position:right 0.7em top 50%, 0 0;background-size:0.65em auto, 100%;}.select-css::-ms-expand{display:none}.select-css:hover{border-color:var(--revo-grid-filter-panel-select-border, #d9d9d9)}.select-css:focus{border-color:var(--revo-grid-filter-panel-select-border-hover, #d9d9d9);box-shadow:0 0 1px 3px rgba(59, 153, 252, 0.7);box-shadow:0 0 0 3px -moz-mac-focusring;outline:none}.select-css option{font-weight:normal}.select-css:disabled,.select-css[aria-disabled=true]{color:gray;background-image:url(\"data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22292.4%22%20height%3D%22292.4%22%3E%3Cpath%20fill%3D%22graytext%22%20d%3D%22M287%2069.4a17.6%2017.6%200%200%200-13-5.4H18.4c-5%200-9.3%201.8-12.9%205.4A17.6%2017.6%200%200%200%200%2082.2c0%205%201.8%209.3%205.4%2012.9l128%20127.9c3.6%203.6%207.8%205.4%2012.8%205.4s9.2-1.8%2012.8-5.4L287%2095c3.5-3.5%205.4-7.8%205.4-12.8%200-5-1.9-9.2-5.5-12.8z%22%2F%3E%3C%2Fsvg%3E\"), linear-gradient(to bottom, #ffffff 0%, #ffffff 100%)}.select-css:disabled:hover,.select-css[aria-disabled=true]{border-color:var(--revo-grid-filter-panel-select-border, #d9d9d9)}.multi-filter-list{margin-top:5px;margin-bottom:5px}.multi-filter-list div{white-space:nowrap}.multi-filter-list .multi-filter-list-action{display:flex;justify-content:space-between;align-items:center}.multi-filter-list .and-or-button{margin:0 0 0 10px;min-width:58px;cursor:pointer}.multi-filter-list .trash-button{margin:0 0 -2px 6px;cursor:pointer;width:22px;height:100%;font-size:16px}.multi-filter-list .trash-button .trash-img{width:1em}.add-filter-divider{display:block;margin:0 -10px 10px -10px;border-bottom:1px solid var(--revo-grid-filter-panel-divider, #d9d9d9);height:10px}.select-input{display:flex;justify-content:space-between;align-items:center}";
|
|
28
28
|
|
|
29
29
|
const defaultType = 'none';
|
|
30
30
|
const FILTER_LIST_CLASS = 'multi-filter-list';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"file":"revogr-filter-panel.entry.esm.js","mappings":"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","names":[],"sources":["src/utils/closest.polifill.ts","src/plugins/filter/filter.style.scss?tag=revogr-filter-panel","src/plugins/filter/filter.panel.tsx"],"sourcesContent":["(function closest() {\n if (!Element.prototype.matches) {\n Element.prototype.matches =\n ((Element.prototype as unknown) as { msMatchesSelector: (selectors: string) => boolean }).msMatchesSelector || Element.prototype.webkitMatchesSelector;\n }\n\n if (!Element.prototype.closest) {\n Element.prototype.closest = function (s: string) {\n let el: HTMLElement | Element | (Node & ParentNode) | null = this;\n\n do {\n if (Element.prototype.matches.call(el, s)) {\n return el;\n }\n el = el.parentElement || el.parentNode;\n } while (el !== null && el.nodeType === 1);\n return null;\n };\n }\n})();\n","revogr-filter-panel {\n position: absolute;\n display: block;\n top: 0;\n left: 0;\n z-index: 100;\n max-height: calc(100% - 80px);\n min-width: 250px;\n overflow: auto;\n\n opacity: 1;\n transform: none;\n background-color: var(--revo-grid-filter-panel-bg, #fff);\n border: 1px solid var(--revo-grid-filter-panel-border, #cecece);\n transform-origin: 62px 0px;\n box-shadow: 0 5px 18px -2px var(--revo-grid-filter-panel-shadow, rgba(0, 0, 0, 0.15));\n padding: 10px;\n border-radius: 8px;\n\n min-width: 220px;\n text-align: left;\n\n .filter-holder > div {\n display: flex;\n flex-direction: column;\n }\n\n label {\n font-size: 13px;\n display: block;\n padding: 8px 0;\n }\n\n select {\n width: 100%;\n }\n\n input[type='text'] {\n border: 0;\n min-height: 34px;\n margin: 5px 0;\n background: var(--revo-grid-filter-panel-input-bg, #f3f3f3);\n border-radius: 5px;\n padding: 0 10px;\n box-sizing: border-box;\n width: 100%;\n }\n\n button {\n margin-top: 10px;\n margin-right: 5px;\n }\n\n .filter-actions {\n text-align: right;\n margin-right: -5px;\n }\n}\n\n.rgHeaderCell {\n &:hover .rv-filter {\n transition:\n opacity 267ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,\n transform 178ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;\n }\n &:hover .rv-filter,\n .rv-filter.active {\n opacity: 1;\n }\n\n .rv-filter {\n $btn-size: 24px;\n height: $btn-size;\n width: $btn-size;\n background: none;\n border: 0;\n opacity: 0;\n visibility: visible;\n cursor: pointer;\n border-radius: 4px;\n\n &.active {\n color: #10224a;\n }\n\n .filter-img {\n $img-size: 11px;\n color: gray;\n width: $img-size;\n }\n }\n}\n\n.select-css {\n $gradient: 'data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22292.4%22%20height%3D%22292.4%22%3E%3Cpath%20fill%3D%22%23007CB2%22%20d%3D%22M287%2069.4a17.6%2017.6%200%200%200-13-5.4H18.4c-5%200-9.3%201.8-12.9%205.4A17.6%2017.6%200%200%200%200%2082.2c0%205%201.8%209.3%205.4%2012.9l128%20127.9c3.6%203.6%207.8%205.4%2012.8%205.4s9.2-1.8%2012.8-5.4L287%2095c3.5-3.5%205.4-7.8%205.4-12.8%200-5-1.9-9.2-5.5-12.8z%22%2F%3E%3C%2Fsvg%3E';\n\n display: block;\n font-family: sans-serif;\n line-height: 1.3;\n padding: 0.6em 1.4em 0.5em 0.8em;\n width: 100%;\n max-width: 100%; /* useful when width is set to anything other than 100% */\n box-sizing: border-box;\n margin: 0;\n border: 1px solid var(--revo-grid-filter-panel-select-border, #d9d9d9);\n box-shadow: transparent;\n border-radius: 0.5em;\n appearance: none;\n background-color: var(--revo-grid-filter-panel-input-bg, #f3f3f3);\n background-image: url($gradient);\n background-repeat: no-repeat, repeat;\n /* arrow icon position (1em from the right, 50% vertical) , then gradient position*/\n background-position:\n right 0.7em top 50%,\n 0 0;\n /* icon size, then gradient */\n background-size:\n 0.65em auto,\n 100%;\n\n /* Hide arrow icon in IE browsers */\n &::-ms-expand {\n display: none;\n }\n /* Hover style */\n &:hover {\n border-color: var(--revo-grid-filter-panel-select-border, #d9d9d9);\n }\n /* Focus style */\n &:focus {\n border-color: var(--revo-grid-filter-panel-select-border-hover, #d9d9d9);\n box-shadow: 0 0 1px 3px rgba(59, 153, 252, 0.7);\n box-shadow: 0 0 0 3px -moz-mac-focusring;\n outline: none;\n }\n\n /* Set options to normal weight */\n option {\n font-weight: normal;\n }\n\n /* Disabled styles */\n &:disabled,\n &[aria-disabled='true'] {\n color: gray;\n background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22292.4%22%20height%3D%22292.4%22%3E%3Cpath%20fill%3D%22graytext%22%20d%3D%22M287%2069.4a17.6%2017.6%200%200%200-13-5.4H18.4c-5%200-9.3%201.8-12.9%205.4A17.6%2017.6%200%200%200%200%2082.2c0%205%201.8%209.3%205.4%2012.9l128%20127.9c3.6%203.6%207.8%205.4%2012.8%205.4s9.2-1.8%2012.8-5.4L287%2095c3.5-3.5%205.4-7.8%205.4-12.8%200-5-1.9-9.2-5.5-12.8z%22%2F%3E%3C%2Fsvg%3E'),\n linear-gradient(to bottom, #ffffff 0%, #ffffff 100%);\n }\n\n &:disabled:hover,\n &[aria-disabled='true'] {\n border-color: var(--revo-grid-filter-panel-select-border, #d9d9d9);\n }\n}\n\n.multi-filter-list {\n margin-top: 5px;\n margin-bottom: 5px;\n\n div {\n white-space: nowrap;\n }\n\n .multi-filter-list-action {\n display: flex;\n\n justify-content: space-between;\n align-items: center;\n }\n\n .and-or-button {\n margin: 0 0 0 10px;\n min-width: 58px;\n cursor: pointer;\n }\n .trash-button {\n $btn-remove-size: 22px;\n margin: 0 0 -2px 6px;\n cursor: pointer;\n\n width: $btn-remove-size;\n height: 100%;\n font-size: 16px;\n\n .trash-img {\n width: 1em;\n }\n }\n}\n\n.add-filter-divider {\n display: block;\n margin: 0 -10px 10px -10px;\n\n border-bottom: 1px solid var(--revo-grid-filter-panel-divider, #d9d9d9);\n height: 10px;\n}\n\n.select-input {\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n","// filter.panel.tsx\n\nimport {\n h,\n Component,\n Event,\n EventEmitter,\n Host,\n Listen,\n Method,\n Prop,\n State,\n type VNode,\n Element,\n} from '@stencil/core';\nimport debounce from 'lodash/debounce';\n\nimport { AndOrButton, isFilterBtn, TrashButton } from './filter.button';\nimport '../../utils/closest.polifill';\nimport {\n FilterCaptions,\n LogicFunction,\n MultiFilterItem,\n ShowData,\n} from './filter.types';\nimport type { ColumnProp } from '@type';\nimport { FilterType } from './filter.indexed';\n\nconst defaultType: FilterType = 'none';\n\nconst FILTER_LIST_CLASS = 'multi-filter-list';\nconst FILTER_LIST_CLASS_ACTION = 'multi-filter-list-action';\nconst FILTER_ID = 'add-filter';\n\n/**\n * Filter panel for editing filters\n */\n/**\n * @internal\n */\n@Component({\n tag: 'revogr-filter-panel',\n styleUrl: 'filter.style.scss',\n})\nexport class FilterPanel {\n private filterCaptionsInternal: FilterCaptions = {\n title: 'Filter by',\n ok: 'Close',\n save: 'Save',\n // drops the filter\n reset: 'Reset',\n cancel: 'Cancel',\n add: 'Add condition',\n placeholder: 'Enter value...',\n and: 'and',\n or: 'or',\n };\n\n @Element() element!: HTMLElement;\n @State() isFilterIdSet = false;\n @State() filterId = 0;\n @State() currentFilterId = -1;\n @State() currentFilterType: FilterType = defaultType;\n @State() changes: ShowData | undefined;\n @State() filterItems: MultiFilterItem = {};\n @Prop() filterNames: Record<string, string> = {};\n @Prop() filterEntities: Record<string, LogicFunction> = {};\n @Prop() filterCaptions: Partial<FilterCaptions> | undefined;\n /**\n * Disables dynamic filtering. A way to apply filters on Save only\n */\n @Prop() disableDynamicFiltering = false;\n /**\n * If true, closes the filter panel when clicking outside\n */\n @Prop() closeOnOutsideClick = true;\n @Event() filterChange: EventEmitter<MultiFilterItem>;\n @Event() resetChange: EventEmitter<ColumnProp>;\n\n @Listen('mousedown', { target: 'document' }) onMouseDown(e: MouseEvent) {\n // click on anything then select drops values to default\n if (!this.changes) {\n return;\n }\n const path = e.composedPath();\n const select = document.getElementById(FILTER_ID);\n if (select instanceof HTMLSelectElement) {\n // click on select should be skipped\n if (path.includes(select)) {\n return;\n }\n select.value = defaultType;\n }\n this.currentFilterType = defaultType;\n if (this.changes) {\n this.changes.type = defaultType;\n }\n this.currentFilterId = -1;\n\n const isOutside = !path.includes(this.element);\n\n if (\n e.target instanceof HTMLElement &&\n isOutside &&\n !isFilterBtn(e.target) &&\n this.closeOnOutsideClick\n ) {\n this.changes = undefined;\n }\n }\n\n @Method() async show(newEntity?: ShowData) {\n this.changes = newEntity;\n this.filterItems = newEntity?.filterItems || {};\n if (this.changes) {\n this.changes.type = this.changes.type || defaultType;\n }\n }\n\n @Method() async getChanges() {\n return this.changes;\n }\n\n componentWillRender() {\n if (!this.isFilterIdSet) {\n this.isFilterIdSet = true;\n const filterItems = Object.keys(this.filterItems);\n for (const prop of filterItems) {\n // we set the proper filterId so there won't be any conflict when removing filters\n this.filterId += this.filterItems[prop].length;\n }\n }\n }\n\n getFilterItemsList() {\n const prop = this.changes?.prop;\n if (typeof prop === 'undefined') return '';\n\n const propFilters = this.filterItems[prop] ?? [];\n const capts = Object.assign(\n this.filterCaptionsInternal,\n this.filterCaptions,\n );\n return (\n <div key={this.filterId}>\n {propFilters.map((filter, index) => {\n let andOrButton;\n if (filter.hidden) {\n return;\n }\n\n // hide toggle button if there is only one filter and the last one\n if (index !== this.filterItems[prop].length - 1) {\n andOrButton = (\n <div onClick={() => this.toggleFilterAndOr(filter.id)}>\n <AndOrButton\n text={filter.relation === 'and' ? capts.and : capts.or}\n />\n </div>\n );\n }\n\n return (\n <div key={filter.id} class={FILTER_LIST_CLASS}>\n <div class={{ 'select-input': true }}>\n <select\n class=\"select-css select-filter\"\n onChange={e => this.onFilterTypeChange(e, prop, index)}\n >\n {this.renderSelectOptions(\n this.filterItems[prop][index].type,\n true,\n )}\n </select>\n <div class={FILTER_LIST_CLASS_ACTION}>{andOrButton}</div>\n <div onClick={() => this.onRemoveFilter(filter.id)}>\n <TrashButton />\n </div>\n </div>\n <div>{this.renderExtra(prop, index)}</div>\n </div>\n );\n })}\n\n {propFilters.filter(f => !f.hidden).length > 0 ? <div class=\"add-filter-divider\" /> : ''}\n </div>\n );\n }\n\n private autoCorrect(el?: HTMLElement | null) {\n if (!el) {\n return;\n }\n\n const revoGrid = el.closest('revo-grid');\n if (!revoGrid) {\n return;\n }\n\n const pos = el.getBoundingClientRect();\n const gridPos = revoGrid.getBoundingClientRect();\n const maxLeft = gridPos.right - pos.width;\n\n if (pos.left > maxLeft && el.offsetLeft) {\n el.style.left = `${maxLeft - (el.parentElement?.getBoundingClientRect().left ?? 0)}px`;\n }\n }\n\n private onFilterTypeChange(e: Event, prop: ColumnProp, index: number) {\n if (!(e.target instanceof HTMLSelectElement)) {\n return;\n }\n this.filterItems[prop][index].type = e.target.value as FilterType;\n\n // this re-renders the input to know if we need extra input\n this.filterId++;\n\n // adding setTimeout will wait for the next tick DOM update then focus on input\n setTimeout(() => {\n const input = document.getElementById(\n 'filter-input-' + this.filterItems[prop][index].id,\n );\n if (input instanceof HTMLInputElement) {\n input.focus();\n }\n }, 0);\n\n if (!this.disableDynamicFiltering) {\n this.debouncedApplyFilter();\n }\n }\n\n private debouncedApplyFilter = debounce(() => {\n this.filterChange.emit(this.filterItems);\n }, 400);\n\n private onAddNewFilter(e: Event) {\n const el = e.target as HTMLSelectElement;\n this.currentFilterType = el.value as FilterType;\n this.addNewFilterToProp();\n\n // reset value after adding new filter\n const select = document.getElementById('add-filter') as HTMLSelectElement;\n if (select) {\n select.value = defaultType;\n this.currentFilterType = defaultType;\n }\n\n if (!this.disableDynamicFiltering) {\n this.debouncedApplyFilter();\n }\n }\n\n private addNewFilterToProp() {\n const prop = this.changes?.prop;\n if (!(prop || prop === 0)) return;\n\n if (!this.filterItems[prop]) {\n this.filterItems[prop] = [];\n }\n\n if (this.currentFilterType === 'none') return;\n\n this.filterId++;\n this.currentFilterId = this.filterId;\n\n this.filterItems[prop].push({\n id: this.currentFilterId,\n type: this.currentFilterType,\n value: '',\n relation: 'and',\n });\n\n // adding setTimeout will wait for the next tick DOM update then focus on input\n setTimeout(() => {\n const input = document.getElementById(\n 'filter-input-' + this.currentFilterId,\n ) as HTMLInputElement;\n if (input) input.focus();\n }, 0);\n }\n\n private onSave() {\n this.filterChange.emit(this.filterItems);\n }\n\n private onCancel() {\n this.changes = undefined;\n }\n\n private onReset() {\n this.assertChanges();\n\n this.resetChange.emit(this.changes?.prop);\n\n // this updates the DOM which is used by getFilterItemsList() key\n this.filterId++;\n }\n\n private onRemoveFilter(id: number) {\n this.assertChanges();\n\n // this is for reactivity issues for getFilterItemsList()\n this.filterId++;\n\n const prop = this.changes?.prop;\n\n const items = this.filterItems[prop ?? ''];\n if (!items) return;\n\n const index = items.findIndex(d => d.id === id);\n if (index === -1) return;\n items.splice(index, 1);\n\n // let's remove the prop if no more filters so the filter icon will be removed\n if (items.length === 0) delete this.filterItems[prop ?? ''];\n\n if (!this.disableDynamicFiltering) {\n this.debouncedApplyFilter();\n }\n }\n\n private toggleFilterAndOr(id: number) {\n this.assertChanges();\n\n // this is for reactivity issues for getFilterItemsList()\n this.filterId++;\n\n const prop = this.changes?.prop;\n\n const items = this.filterItems[prop ?? ''];\n if (!items) return;\n\n const index = items.findIndex(d => d.id === id);\n if (index === -1) return;\n\n items[index].relation = items[index].relation === 'and' ? 'or' : 'and';\n if (!this.disableDynamicFiltering) {\n this.debouncedApplyFilter();\n }\n }\n\n private assertChanges() {\n if (!this.changes) {\n throw new Error('Changes required per edit');\n }\n }\n\n renderSelectOptions(type: FilterType, isDefaultTypeRemoved = false) {\n if (!this.changes) {\n return;\n }\n const options: VNode[] = [];\n const prop = this.changes.prop;\n\n const hidden = new Set<string>();\n Object.entries(this.filterItems).forEach(([_, values]) => {\n values.forEach((filter) => {\n if (filter.hidden) {\n hidden.add(filter.type);\n }\n })\n });\n\n if (!isDefaultTypeRemoved) {\n const capts = Object.assign(\n this.filterCaptionsInternal,\n this.filterCaptions,\n );\n\n options.push(\n <option\n selected={this.currentFilterType === defaultType}\n value={defaultType}\n >\n {prop && this.filterItems[prop] && this.filterItems[prop].length > 0\n ? capts.add\n : this.filterNames[defaultType]}\n </option>,\n );\n }\n\n for (let gIndex in this.changes.filterTypes) {\n const group = this.changes.filterTypes[gIndex].filter(k => !hidden.has(k));\n if (group.length) {\n options.push(\n ...group.map(k => (\n <option value={k} selected={type === k}>\n {this.filterNames[k]}\n </option>\n )),\n );\n options.push(<option disabled></option>);\n }\n }\n return options;\n }\n\n renderExtra(prop: ColumnProp, index: number) {\n const currentFilter = this.filterItems[prop];\n\n if (!currentFilter) return '';\n\n const applyFilter = (value?: any) => {\n this.filterItems[prop][index].value = value;\n if (!this.disableDynamicFiltering) {\n this.debouncedApplyFilter();\n }\n };\n\n const focusNext = () => {\n const select = document.getElementById('add-filter') as HTMLSelectElement;\n if (select) {\n select.value = defaultType;\n this.currentFilterType = defaultType;\n this.addNewFilterToProp();\n select.focus();\n }\n };\n\n const capts = Object.assign(\n this.filterCaptionsInternal,\n this.filterCaptions,\n );\n const extra = this.filterEntities[currentFilter[index].type].extra;\n if (typeof extra === 'function') {\n return extra(h, {\n value: currentFilter[index].value,\n filter: currentFilter[index],\n prop,\n index,\n placeholder: capts.placeholder,\n onInput: (value: any) => {\n applyFilter(value);\n },\n onFocus: () => {\n focusNext();\n }\n });\n }\n if (extra !== 'input' && extra !== 'datepicker') {\n return '';\n }\n return (\n <input\n id={`filter-input-${currentFilter[index].id}`}\n placeholder={capts.placeholder}\n type={extra === 'datepicker' ? 'date' : 'text'}\n value={currentFilter[index].value}\n onInput={(e) => {\n if (e.target instanceof HTMLInputElement) {\n applyFilter(e.target.value);\n }\n }}\n onKeyDown={e => {\n if (e.key.toLowerCase() === 'enter') {\n const select = document.getElementById('add-filter') as HTMLSelectElement;\n if (select) {\n focusNext();\n }\n return;\n }\n // keep event local, don't escalate farther to dom\n e.stopPropagation();\n }}\n />\n );\n }\n\n render() {\n if (!this.changes) {\n return <Host style={{ display: 'none' }}></Host>;\n }\n const style = {\n display: 'block',\n left: `${this.changes.x}px`,\n top: `${this.changes.y}px`,\n };\n\n const capts = Object.assign(\n this.filterCaptionsInternal,\n this.filterCaptions,\n );\n\n return (\n <Host\n style={style}\n ref={el => {\n this.changes?.autoCorrect !== false && this.autoCorrect(el);\n }}\n >\n <slot slot=\"header\" />\n { this.changes.extraContent?.(this.changes) || '' }\n\n { this.changes?.hideDefaultFilters !== true && (\n [\n <label>{capts.title}</label>,\n <div class=\"filter-holder\">{this.getFilterItemsList()}</div>,\n <div class=\"add-filter\">\n <select\n id={FILTER_ID}\n class=\"select-css\"\n onChange={e => this.onAddNewFilter(e)}\n >\n {this.renderSelectOptions(this.currentFilterType)}\n </select>\n </div>\n ]\n )}\n\n <slot />\n <div class=\"filter-actions\">\n {this.disableDynamicFiltering && [\n <button\n id=\"revo-button-save\"\n aria-label=\"save\"\n class=\"revo-button green\"\n onClick={() => this.onSave()}\n >\n {capts.save}\n </button>,\n <button\n id=\"revo-button-ok\"\n aria-label=\"ok\"\n class=\"revo-button green\"\n onClick={() => this.onCancel()}\n >\n {capts.cancel}\n </button>,\n ]}\n {!this.disableDynamicFiltering && [\n <button\n id=\"revo-button-ok\"\n aria-label=\"ok\"\n class=\"revo-button green\"\n onClick={() => this.onCancel()}\n >\n {capts.ok}\n </button>,\n\n <button\n id=\"revo-button-reset\"\n aria-label=\"reset\"\n class=\"revo-button outline\"\n onClick={() => this.onReset()}\n >\n {capts.reset}\n </button>,\n ]}\n </div>\n <slot slot=\"footer\" />\n </Host>\n );\n }\n}\n"],"version":3}
|
|
1
|
+
{"file":"revogr-filter-panel.entry.esm.js","mappings":"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","names":[],"sources":["src/utils/closest.polifill.ts","src/plugins/filter/filter.style.scss?tag=revogr-filter-panel","src/plugins/filter/filter.panel.tsx"],"sourcesContent":["(function closest() {\n if (!Element.prototype.matches) {\n Element.prototype.matches =\n ((Element.prototype as unknown) as { msMatchesSelector: (selectors: string) => boolean }).msMatchesSelector || Element.prototype.webkitMatchesSelector;\n }\n\n if (!Element.prototype.closest) {\n Element.prototype.closest = function (s: string) {\n let el: HTMLElement | Element | (Node & ParentNode) | null = this;\n\n do {\n if (Element.prototype.matches.call(el, s)) {\n return el;\n }\n el = el.parentElement || el.parentNode;\n } while (el !== null && el.nodeType === 1);\n return null;\n };\n }\n})();\n","revogr-filter-panel {\n position: absolute;\n display: block;\n top: 0;\n left: 0;\n z-index: 100;\n max-height: calc(100% - 80px);\n min-width: 250px;\n overflow: auto;\n\n opacity: 1;\n transform: none;\n background-color: var(--revo-grid-filter-panel-bg, #fff);\n border: 1px solid var(--revo-grid-filter-panel-border, #cecece);\n transform-origin: 62px 0px;\n box-shadow: 0 5px 18px -2px var(--revo-grid-filter-panel-shadow, rgba(0, 0, 0, 0.15));\n padding: 10px;\n border-radius: 8px;\n\n min-width: 220px;\n text-align: left;\n\n .filter-holder > div {\n display: flex;\n flex-direction: column;\n }\n\n label {\n font-size: 13px;\n display: block;\n padding: 8px 0;\n }\n\n select {\n width: 100%;\n }\n\n input[type='text'] {\n border: 0;\n min-height: 34px;\n margin: 5px 0;\n background: var(--revo-grid-filter-panel-input-bg, #f3f3f3);\n border-radius: 5px;\n padding: 0 10px;\n box-sizing: border-box;\n width: 100%;\n }\n\n button {\n margin-top: 10px;\n margin-right: 5px;\n }\n\n .filter-actions {\n text-align: right;\n margin-right: -5px;\n }\n}\n\n.rgHeaderCell {\n &:hover .rv-filter {\n transition:\n opacity 267ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,\n transform 178ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;\n }\n &:hover .rv-filter,\n .rv-filter.active {\n opacity: 1;\n }\n\n .rv-filter {\n $btn-size: 24px;\n height: $btn-size;\n width: $btn-size;\n background: none;\n border: 0;\n opacity: 0;\n visibility: visible;\n cursor: pointer;\n border-radius: 4px;\n\n &.active {\n color: #10224a;\n }\n\n .filter-img {\n $img-size: 11px;\n color: gray;\n width: $img-size;\n }\n }\n}\n\n.select-css {\n $gradient: 'data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22292.4%22%20height%3D%22292.4%22%3E%3Cpath%20fill%3D%22%23007CB2%22%20d%3D%22M287%2069.4a17.6%2017.6%200%200%200-13-5.4H18.4c-5%200-9.3%201.8-12.9%205.4A17.6%2017.6%200%200%200%200%2082.2c0%205%201.8%209.3%205.4%2012.9l128%20127.9c3.6%203.6%207.8%205.4%2012.8%205.4s9.2-1.8%2012.8-5.4L287%2095c3.5-3.5%205.4-7.8%205.4-12.8%200-5-1.9-9.2-5.5-12.8z%22%2F%3E%3C%2Fsvg%3E';\n\n display: block;\n font-family: sans-serif;\n line-height: 1.3;\n padding: 0.6em 1.4em 0.5em 0.8em;\n width: 100%;\n max-width: 100%; /* useful when width is set to anything other than 100% */\n box-sizing: border-box;\n margin: 0;\n border: 1px solid var(--revo-grid-filter-panel-select-border, #d9d9d9);\n box-shadow: transparent;\n border-radius: 0.5em;\n appearance: none;\n background-color: var(--revo-grid-filter-panel-input-bg, #f3f3f3);\n background-image: url($gradient);\n background-repeat: no-repeat, repeat;\n /* arrow icon position (1em from the right, 50% vertical) , then gradient position*/\n background-position:\n right 0.7em top 50%,\n 0 0;\n /* icon size, then gradient */\n background-size:\n 0.65em auto,\n 100%;\n\n /* Hide arrow icon in IE browsers */\n &::-ms-expand {\n display: none;\n }\n /* Hover style */\n &:hover {\n border-color: var(--revo-grid-filter-panel-select-border, #d9d9d9);\n }\n /* Focus style */\n &:focus {\n border-color: var(--revo-grid-filter-panel-select-border-hover, #d9d9d9);\n box-shadow: 0 0 1px 3px rgba(59, 153, 252, 0.7);\n box-shadow: 0 0 0 3px -moz-mac-focusring;\n outline: none;\n }\n\n /* Set options to normal weight */\n option {\n font-weight: normal;\n }\n\n /* Disabled styles */\n &:disabled,\n &[aria-disabled='true'] {\n color: gray;\n background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22292.4%22%20height%3D%22292.4%22%3E%3Cpath%20fill%3D%22graytext%22%20d%3D%22M287%2069.4a17.6%2017.6%200%200%200-13-5.4H18.4c-5%200-9.3%201.8-12.9%205.4A17.6%2017.6%200%200%200%200%2082.2c0%205%201.8%209.3%205.4%2012.9l128%20127.9c3.6%203.6%207.8%205.4%2012.8%205.4s9.2-1.8%2012.8-5.4L287%2095c3.5-3.5%205.4-7.8%205.4-12.8%200-5-1.9-9.2-5.5-12.8z%22%2F%3E%3C%2Fsvg%3E'),\n linear-gradient(to bottom, #ffffff 0%, #ffffff 100%);\n }\n\n &:disabled:hover,\n &[aria-disabled='true'] {\n border-color: var(--revo-grid-filter-panel-select-border, #d9d9d9);\n }\n}\n\n.multi-filter-list {\n margin-top: 5px;\n margin-bottom: 5px;\n\n div {\n white-space: nowrap;\n }\n\n .multi-filter-list-action {\n display: flex;\n\n justify-content: space-between;\n align-items: center;\n }\n\n .and-or-button {\n margin: 0 0 0 10px;\n min-width: 58px;\n cursor: pointer;\n }\n .trash-button {\n $btn-remove-size: 22px;\n margin: 0 0 -2px 6px;\n cursor: pointer;\n\n width: $btn-remove-size;\n height: 100%;\n font-size: 16px;\n\n .trash-img {\n width: 1em;\n }\n }\n}\n\n.add-filter-divider {\n display: block;\n margin: 0 -10px 10px -10px;\n\n border-bottom: 1px solid var(--revo-grid-filter-panel-divider, #d9d9d9);\n height: 10px;\n}\n\n.select-input {\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n","// filter.panel.tsx\n\nimport {\n h,\n Component,\n Event,\n EventEmitter,\n Host,\n Listen,\n Method,\n Prop,\n State,\n type VNode,\n Element,\n} from '@stencil/core';\nimport debounce from 'lodash/debounce';\n\nimport { AndOrButton, isFilterBtn, TrashButton } from './filter.button';\nimport '../../utils/closest.polifill';\nimport {\n FilterCaptions,\n LogicFunction,\n MultiFilterItem,\n ShowData,\n} from './filter.types';\nimport type { ColumnProp } from '@type';\nimport { FilterType } from './filter.indexed';\n\nconst defaultType: FilterType = 'none';\n\nconst FILTER_LIST_CLASS = 'multi-filter-list';\nconst FILTER_LIST_CLASS_ACTION = 'multi-filter-list-action';\nconst FILTER_ID = 'add-filter';\n\n/**\n * Filter panel for editing filters\n */\n/**\n * @internal\n */\n@Component({\n tag: 'revogr-filter-panel',\n styleUrl: 'filter.style.scss',\n})\nexport class FilterPanel {\n private filterCaptionsInternal: FilterCaptions = {\n title: 'Filter by',\n ok: 'Close',\n save: 'Save',\n // drops the filter\n reset: 'Reset',\n cancel: 'Cancel',\n add: 'Add condition',\n placeholder: 'Enter value...',\n and: 'and',\n or: 'or',\n };\n\n @Element() element!: HTMLElement;\n @State() isFilterIdSet = false;\n @State() filterId = 0;\n @State() currentFilterId = -1;\n @State() currentFilterType: FilterType = defaultType;\n @State() changes: ShowData | undefined;\n @State() filterItems: MultiFilterItem = {};\n @Prop() filterNames: Record<string, string> = {};\n @Prop() filterEntities: Record<string, LogicFunction> = {};\n @Prop() filterCaptions: Partial<FilterCaptions> | undefined;\n /**\n * Disables dynamic filtering. A way to apply filters on Save only\n */\n @Prop() disableDynamicFiltering = false;\n /**\n * If true, closes the filter panel when clicking outside\n */\n @Prop() closeOnOutsideClick = true;\n @Event() filterChange: EventEmitter<MultiFilterItem>;\n @Event() resetChange: EventEmitter<ColumnProp>;\n\n @Listen('mousedown', { target: 'document' }) onMouseDown(e: MouseEvent) {\n // click on anything then select drops values to default\n if (!this.changes) {\n return;\n }\n const path = e.composedPath();\n const select = document.getElementById(FILTER_ID);\n if (select instanceof HTMLSelectElement) {\n // click on select should be skipped\n if (path.includes(select)) {\n return;\n }\n select.value = defaultType;\n }\n this.currentFilterType = defaultType;\n if (this.changes) {\n this.changes.type = defaultType;\n }\n this.currentFilterId = -1;\n\n const isOutside = !path.includes(this.element);\n\n if (\n e.target instanceof HTMLElement &&\n isOutside &&\n !isFilterBtn(e.target) &&\n this.closeOnOutsideClick\n ) {\n this.changes = undefined;\n }\n }\n\n @Method() async show(newEntity?: ShowData) {\n this.changes = newEntity;\n this.filterItems = newEntity?.filterItems || {};\n if (this.changes) {\n this.changes.type = this.changes.type || defaultType;\n }\n }\n\n @Method() async getChanges() {\n return this.changes;\n }\n\n componentWillRender() {\n if (!this.isFilterIdSet) {\n this.isFilterIdSet = true;\n const filterItems = Object.keys(this.filterItems);\n for (const prop of filterItems) {\n // we set the proper filterId so there won't be any conflict when removing filters\n this.filterId += this.filterItems[prop].length;\n }\n }\n }\n\n getFilterItemsList() {\n const prop = this.changes?.prop;\n if (typeof prop === 'undefined') return '';\n\n const propFilters = this.filterItems[prop] ?? [];\n const capts = Object.assign(\n this.filterCaptionsInternal,\n this.filterCaptions,\n );\n return (\n <div key={this.filterId}>\n {propFilters.map((filter, index) => {\n let andOrButton;\n if (filter.hidden) {\n return;\n }\n\n // hide toggle button if there is only one filter and the last one\n if (index !== this.filterItems[prop].length - 1) {\n andOrButton = (\n <div onClick={() => this.toggleFilterAndOr(filter.id)}>\n <AndOrButton\n text={filter.relation === 'and' ? capts.and : capts.or}\n />\n </div>\n );\n }\n\n return (\n <div key={filter.id} class={FILTER_LIST_CLASS}>\n <div class={{ 'select-input': true }}>\n <select\n class=\"select-css select-filter\"\n onChange={e => this.onFilterTypeChange(e, prop, index)}\n >\n {this.renderSelectOptions(\n this.filterItems[prop][index].type,\n true,\n )}\n </select>\n <div class={FILTER_LIST_CLASS_ACTION}>{andOrButton}</div>\n <div onClick={() => this.onRemoveFilter(filter.id)}>\n <TrashButton />\n </div>\n </div>\n <div>{this.renderExtra(prop, index)}</div>\n </div>\n );\n })}\n\n {propFilters.filter(f => !f.hidden).length > 0 ? <div class=\"add-filter-divider\" /> : ''}\n </div>\n );\n }\n\n private autoCorrect(el?: HTMLElement | null) {\n if (!el) {\n return;\n }\n\n const revoGrid = el.closest('revo-grid');\n if (!revoGrid) {\n return;\n }\n\n const pos = el.getBoundingClientRect();\n const gridPos = revoGrid.getBoundingClientRect();\n const maxLeft = gridPos.right - pos.width;\n\n if (pos.left > maxLeft && el.offsetLeft) {\n el.style.left = `${maxLeft - (el.parentElement?.getBoundingClientRect().left ?? 0)}px`;\n }\n }\n\n private onFilterTypeChange(e: Event, prop: ColumnProp, index: number) {\n if (!(e.target instanceof HTMLSelectElement)) {\n return;\n }\n this.filterItems[prop][index].type = e.target.value as FilterType;\n\n // this re-renders the input to know if we need extra input\n this.filterId++;\n\n // adding setTimeout will wait for the next tick DOM update then focus on input\n setTimeout(() => {\n const input = document.getElementById(\n 'filter-input-' + this.filterItems[prop][index].id,\n );\n if (input instanceof HTMLInputElement) {\n input.focus();\n }\n }, 0);\n\n if (!this.disableDynamicFiltering) {\n this.debouncedApplyFilter();\n }\n }\n\n private debouncedApplyFilter = debounce(() => {\n this.filterChange.emit(this.filterItems);\n }, 400);\n\n private onAddNewFilter(e: Event) {\n const el = e.target as HTMLSelectElement;\n this.currentFilterType = el.value as FilterType;\n this.addNewFilterToProp();\n\n // reset value after adding new filter\n const select = document.getElementById('add-filter') as HTMLSelectElement;\n if (select) {\n select.value = defaultType;\n this.currentFilterType = defaultType;\n }\n\n if (!this.disableDynamicFiltering) {\n this.debouncedApplyFilter();\n }\n }\n\n private addNewFilterToProp() {\n const prop = this.changes?.prop;\n if (!(prop || prop === 0)) return;\n\n if (!this.filterItems[prop]) {\n this.filterItems[prop] = [];\n }\n\n if (this.currentFilterType === 'none') return;\n\n this.filterId++;\n this.currentFilterId = this.filterId;\n\n this.filterItems[prop].push({\n id: this.currentFilterId,\n type: this.currentFilterType,\n value: '',\n relation: 'and',\n });\n\n // adding setTimeout will wait for the next tick DOM update then focus on input\n setTimeout(() => {\n const input = document.getElementById(\n 'filter-input-' + this.currentFilterId,\n ) as HTMLInputElement;\n if (input) input.focus();\n }, 0);\n }\n\n private onSave() {\n this.filterChange.emit(this.filterItems);\n }\n\n private onCancel() {\n this.changes = undefined;\n }\n\n private onReset() {\n this.assertChanges();\n\n this.resetChange.emit(this.changes?.prop);\n\n // this updates the DOM which is used by getFilterItemsList() key\n this.filterId++;\n }\n\n private onRemoveFilter(id: number) {\n this.assertChanges();\n\n // this is for reactivity issues for getFilterItemsList()\n this.filterId++;\n\n const prop = this.changes?.prop;\n\n const items = this.filterItems[prop ?? ''];\n if (!items) return;\n\n const index = items.findIndex(d => d.id === id);\n if (index === -1) return;\n items.splice(index, 1);\n\n // let's remove the prop if no more filters so the filter icon will be removed\n if (items.length === 0) delete this.filterItems[prop ?? ''];\n\n if (!this.disableDynamicFiltering) {\n this.debouncedApplyFilter();\n }\n }\n\n private toggleFilterAndOr(id: number) {\n this.assertChanges();\n\n // this is for reactivity issues for getFilterItemsList()\n this.filterId++;\n\n const prop = this.changes?.prop;\n\n const items = this.filterItems[prop ?? ''];\n if (!items) return;\n\n const index = items.findIndex(d => d.id === id);\n if (index === -1) return;\n\n items[index].relation = items[index].relation === 'and' ? 'or' : 'and';\n if (!this.disableDynamicFiltering) {\n this.debouncedApplyFilter();\n }\n }\n\n private assertChanges() {\n if (!this.changes) {\n throw new Error('Changes required per edit');\n }\n }\n\n renderSelectOptions(type: FilterType, isDefaultTypeRemoved = false) {\n if (!this.changes) {\n return;\n }\n const options: VNode[] = [];\n const prop = this.changes.prop;\n\n const hidden = new Set<string>();\n Object.entries(this.filterItems).forEach(([_, values]) => {\n values.forEach((filter) => {\n if (filter.hidden) {\n hidden.add(filter.type);\n }\n })\n });\n\n if (!isDefaultTypeRemoved) {\n const capts = Object.assign(\n this.filterCaptionsInternal,\n this.filterCaptions,\n );\n\n options.push(\n <option\n selected={this.currentFilterType === defaultType}\n value={defaultType}\n >\n {prop && this.filterItems[prop] && this.filterItems[prop].length > 0\n ? capts.add\n : this.filterNames[defaultType]}\n </option>,\n );\n }\n\n for (let gIndex in this.changes.filterTypes) {\n const group = this.changes.filterTypes[gIndex].filter(k => !hidden.has(k));\n if (group.length) {\n options.push(\n ...group.map(k => (\n <option value={k} selected={type === k}>\n {this.filterNames[k]}\n </option>\n )),\n );\n options.push(<option disabled></option>);\n }\n }\n return options;\n }\n\n renderExtra(prop: ColumnProp, index: number) {\n const currentFilter = this.filterItems[prop];\n\n if (!currentFilter) return '';\n\n const applyFilter = (value?: any) => {\n this.filterItems[prop][index].value = value;\n if (!this.disableDynamicFiltering) {\n this.debouncedApplyFilter();\n }\n };\n\n const focusNext = () => {\n const select = document.getElementById('add-filter') as HTMLSelectElement;\n if (select) {\n select.value = defaultType;\n this.currentFilterType = defaultType;\n this.addNewFilterToProp();\n select.focus();\n }\n };\n\n const capts = Object.assign(\n this.filterCaptionsInternal,\n this.filterCaptions,\n );\n const extra = this.filterEntities[currentFilter[index].type].extra;\n if (typeof extra === 'function') {\n return extra(h, {\n value: currentFilter[index].value,\n filter: currentFilter[index],\n prop,\n index,\n placeholder: capts.placeholder,\n onInput: (value: any) => {\n applyFilter(value);\n },\n onFocus: () => {\n focusNext();\n }\n });\n }\n if (extra !== 'input' && extra !== 'datepicker') {\n return '';\n }\n return (\n <input\n id={`filter-input-${currentFilter[index].id}`}\n placeholder={capts.placeholder}\n type={extra === 'datepicker' ? 'date' : 'text'}\n value={currentFilter[index].value}\n onInput={(e) => {\n if (e.target instanceof HTMLInputElement) {\n applyFilter(e.target.value);\n }\n }}\n onKeyDown={e => {\n if (e.key.toLowerCase() === 'enter') {\n const select = document.getElementById('add-filter') as HTMLSelectElement;\n if (select) {\n focusNext();\n }\n return;\n }\n // keep event local, don't escalate farther to dom\n e.stopPropagation();\n }}\n />\n );\n }\n\n render() {\n if (!this.changes) {\n return <Host style={{ display: 'none' }}></Host>;\n }\n const style = {\n display: 'block',\n left: `${this.changes.x}px`,\n top: `${this.changes.y}px`,\n };\n\n const capts = Object.assign(\n this.filterCaptionsInternal,\n this.filterCaptions,\n );\n\n return (\n <Host\n style={style}\n ref={el => {\n this.changes?.autoCorrect !== false && this.autoCorrect(el);\n }}\n >\n <slot slot=\"header\" />\n { this.changes.extraContent?.(this.changes) || '' }\n\n { this.changes?.hideDefaultFilters !== true && (\n [\n <label>{capts.title}</label>,\n <div class=\"filter-holder\">{this.getFilterItemsList()}</div>,\n <div class=\"add-filter\">\n <select\n id={FILTER_ID}\n class=\"select-css\"\n onChange={e => this.onAddNewFilter(e)}\n >\n {this.renderSelectOptions(this.currentFilterType)}\n </select>\n </div>\n ]\n )}\n\n <slot />\n <div class=\"filter-actions\">\n {this.disableDynamicFiltering && [\n <button\n id=\"revo-button-save\"\n aria-label=\"save\"\n class=\"revo-button green\"\n onClick={() => this.onSave()}\n >\n {capts.save}\n </button>,\n <button\n id=\"revo-button-ok\"\n aria-label=\"ok\"\n class=\"revo-button green\"\n onClick={() => this.onCancel()}\n >\n {capts.cancel}\n </button>,\n ]}\n {!this.disableDynamicFiltering && [\n <button\n id=\"revo-button-ok\"\n aria-label=\"ok\"\n class=\"revo-button green\"\n onClick={() => this.onCancel()}\n >\n {capts.ok}\n </button>,\n\n <button\n id=\"revo-button-reset\"\n aria-label=\"reset\"\n class=\"revo-button outline\"\n onClick={() => this.onReset()}\n >\n {capts.reset}\n </button>,\n ]}\n </div>\n <slot slot=\"footer\" />\n </Host>\n );\n }\n}\n"],"version":3}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* Built by Revolist OU ❤️
|
|
3
3
|
*/
|
|
4
|
-
import { d as isTab, f as isEnterKeyValue } from './edit.utils-
|
|
5
|
-
import { u as timeout } from './dimension.helpers-
|
|
4
|
+
import { d as isTab, f as isEnterKeyValue } from './edit.utils-B6bLKSQh.js';
|
|
5
|
+
import { u as timeout } from './dimension.helpers-D5lwLPzd.js';
|
|
6
6
|
|
|
7
7
|
class TextEditor {
|
|
8
8
|
constructor(data, saveCallback) {
|
|
@@ -74,6 +74,6 @@ class TextEditor {
|
|
|
74
74
|
}
|
|
75
75
|
|
|
76
76
|
export { TextEditor as T };
|
|
77
|
-
//# sourceMappingURL=text-editor-
|
|
77
|
+
//# sourceMappingURL=text-editor-DlCRmV75.js.map
|
|
78
78
|
|
|
79
|
-
//# sourceMappingURL=text-editor-
|
|
79
|
+
//# sourceMappingURL=text-editor-DlCRmV75.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"text-editor-
|
|
1
|
+
{"version":3,"file":"text-editor-DlCRmV75.js","sources":["src/components/editors/text-editor.ts"],"sourcesContent":["import { type VNode, h as createElement } from '@stencil/core';\nimport { isEnterKeyValue, isTab } from '../../utils/key.utils';\nimport { timeout } from '../../utils';\nimport type { EditCell, EditorBase, ColumnDataSchemaModel } from '@type';\n\n/**\n * Represents a cell editor in a grid.\n *\n * It's a good place to start with your own editor.\n * It manages the editing of cells by handling events, saving data, rendering the editor UI, and managing the lifecycle of the editor instance.\n */\n\n/**\n * Callback triggered on cell editor save\n * Closes editor when called\n * @param preventFocus - if true editor will not be closed and next cell will not be focused\n */\nexport type SaveCallback = (value: any, preventFocus: boolean) => void;\n\nexport class TextEditor implements EditorBase {\n editInput: HTMLInputElement | null = null;\n\n element: Element | null = null;\n editCell?: EditCell = undefined;\n\n constructor(\n public data: ColumnDataSchemaModel,\n private saveCallback?: SaveCallback,\n ) {}\n\n /**\n * Callback triggered on cell editor render\n */\n async componentDidRender(): Promise<void> {\n if (this.editInput) {\n await timeout();\n this.editInput?.focus();\n }\n }\n\n onKeyDown(e: KeyboardEvent) {\n const isEnter = isEnterKeyValue(e.key);\n const isKeyTab = isTab(e.key);\n\n if (\n (isKeyTab || isEnter) &&\n e.target &&\n this.saveCallback &&\n !e.isComposing\n ) {\n // blur is needed to avoid autoscroll\n this.beforeDisconnect();\n // request callback which will close cell after all\n this.saveCallback(this.getValue(), isKeyTab);\n }\n }\n\n /**\n * IMPORTANT: Prevent scroll glitches when editor is closed and focus is on current input element.\n */\n beforeDisconnect() {\n this.editInput?.blur();\n }\n\n /**\n * Get value from input\n */\n getValue() {\n return this.editInput?.value;\n }\n\n /**\n * Render method for Editor plugin.\n * Renders input element with passed data from cell.\n * @param {Function} h - h function from stencil render.\n * @param {Object} _additionalData - additional data from plugin.\n * @returns {VNode} - input element.\n */\n render(h: typeof createElement, _additionalData: any): VNode | VNode[] {\n return h('input', {\n type: 'text',\n enterKeyHint: 'enter',\n // set input value from cell data\n value: this.editCell?.val ?? '',\n // save input element as ref for further usage\n ref: (el: HTMLInputElement | null) => {\n this.editInput = el;\n },\n // listen to keydown event on input element\n onKeyDown: (e: KeyboardEvent) => this.onKeyDown(e),\n });\n }\n}\n"],"names":[],"mappings":";;;;;;MAmBa,UAAU,CAAA;IAMrB,WACS,CAAA,IAA2B,EAC1B,YAA2B,EAAA;QAD5B,IAAI,CAAA,IAAA,GAAJ,IAAI;QACH,IAAY,CAAA,YAAA,GAAZ,YAAY;QAPtB,IAAS,CAAA,SAAA,GAA4B,IAAI;QAEzC,IAAO,CAAA,OAAA,GAAmB,IAAI;QAC9B,IAAQ,CAAA,QAAA,GAAc,SAAS;;AAO/B;;AAEG;AACH,IAAA,MAAM,kBAAkB,GAAA;;AACtB,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,MAAM,OAAO,EAAE;AACf,YAAA,CAAA,EAAA,GAAA,IAAI,CAAC,SAAS,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,KAAK,EAAE;;;AAI3B,IAAA,SAAS,CAAC,CAAgB,EAAA;QACxB,MAAM,OAAO,GAAG,eAAe,CAAC,CAAC,CAAC,GAAG,CAAC;QACtC,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC;AAE7B,QAAA,IACE,CAAC,QAAQ,IAAI,OAAO;AACpB,YAAA,CAAC,CAAC,MAAM;AACR,YAAA,IAAI,CAAC,YAAY;AACjB,YAAA,CAAC,CAAC,CAAC,WAAW,EACd;;YAEA,IAAI,CAAC,gBAAgB,EAAE;;YAEvB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,QAAQ,CAAC;;;AAIhD;;AAEG;IACH,gBAAgB,GAAA;;AACd,QAAA,CAAA,EAAA,GAAA,IAAI,CAAC,SAAS,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,IAAI,EAAE;;AAGxB;;AAEG;IACH,QAAQ,GAAA;;AACN,QAAA,OAAO,MAAA,IAAI,CAAC,SAAS,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,KAAK;;AAG9B;;;;;;AAMG;IACH,MAAM,CAAC,CAAuB,EAAE,eAAoB,EAAA;;QAClD,OAAO,CAAC,CAAC,OAAO,EAAE;AAChB,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,YAAY,EAAE,OAAO;;YAErB,KAAK,EAAE,MAAA,CAAA,EAAA,GAAA,IAAI,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,GAAG,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,EAAE;;AAE/B,YAAA,GAAG,EAAE,CAAC,EAA2B,KAAI;AACnC,gBAAA,IAAI,CAAC,SAAS,GAAG,EAAE;aACpB;;YAED,SAAS,EAAE,CAAC,CAAgB,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;AACnD,SAAA,CAAC;;AAEL;;;;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* Built by Revolist OU ❤️
|
|
3
3
|
*/
|
|
4
|
-
import { q as scaleValue } from './dimension.helpers-
|
|
4
|
+
import { q as scaleValue } from './dimension.helpers-D5lwLPzd.js';
|
|
5
5
|
import { d as debounce, a as isObject } from './debounce-BfO9dz9v.js';
|
|
6
6
|
|
|
7
7
|
const initialParams = {
|
|
@@ -268,6 +268,6 @@ function throttle(func, wait, options) {
|
|
|
268
268
|
}
|
|
269
269
|
|
|
270
270
|
export { LocalScrollTimer as L, LocalScrollService as a, getContentSize as g, throttle as t };
|
|
271
|
-
//# sourceMappingURL=throttle-
|
|
271
|
+
//# sourceMappingURL=throttle-DcjZyclk.js.map
|
|
272
272
|
|
|
273
|
-
//# sourceMappingURL=throttle-
|
|
273
|
+
//# sourceMappingURL=throttle-DcjZyclk.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"throttle-Dshl76F1.js","sources":["src/services/local.scroll.service.ts","src/services/local.scroll.timer.ts","node_modules/lodash/throttle.js"],"sourcesContent":["import type { DimensionType, ViewPortScrollEvent } from '@type';\nimport { scaleValue } from '../utils';\n\ninterface Config {\n skipAnimationFrame?: boolean;\n // scroll event inited and direction cached\n // scrollingService.proxyScroll get tiggered\n // setScroll event called from scrollingService\n runScroll(e: ViewPortScrollEvent): void;\n // all operation finished, apply scroll values\n applyScroll(e: ViewPortScrollEvent): void;\n}\n\ntype Params = {\n contentSize: number;\n virtualContentSize?: number;\n clientSize: number;\n virtualSize: number;\n maxSize?: number;\n};\n\nconst initialParams: Params = {\n contentSize: 0,\n clientSize: 0,\n virtualSize: 0,\n maxSize: 0,\n};\nconst NO_COORDINATE = -1;\n\n/**\n * Based on content size, client size and virtual size\n * return full size\n */\nexport function getContentSize(\n contentSize: number,\n clientSize: number,\n virtualSize = 0,\n): number {\n if (virtualSize > contentSize) {\n return 0;\n }\n return contentSize + (virtualSize ? clientSize - virtualSize : 0);\n}\n\nexport default class LocalScrollService {\n private preventArtificialScroll: Record<DimensionType, (() => void) | null> = {\n rgRow: null,\n rgCol: null,\n };\n // to check if scroll changed\n private previousScroll: Record<DimensionType, number> = {\n rgRow: NO_COORDINATE,\n rgCol: NO_COORDINATE,\n };\n private params: Record<DimensionType, Params> = {\n rgRow: { ...initialParams },\n rgCol: { ...initialParams },\n };\n\n constructor(private cfg: Config) {}\n\n setParams(params: Params, dimension: DimensionType) {\n const virtualContentSize = getContentSize(\n params.contentSize,\n params.clientSize,\n params.virtualSize,\n );\n this.params[dimension] = {\n ...params,\n maxSize: virtualContentSize - params.clientSize,\n virtualContentSize,\n };\n }\n\n // apply scroll values after scroll done\n async setScroll(e: ViewPortScrollEvent) {\n this.cancelScroll(e.dimension);\n\n // start frame animation\n const frameAnimation = new Promise<void>((resolve, reject) => {\n // for example safari desktop has issues with animation frame\n if (this.cfg.skipAnimationFrame) {\n return resolve();\n }\n const animationId = window.requestAnimationFrame(() => {\n resolve();\n });\n this.preventArtificialScroll[e.dimension] = reject.bind(\n null,\n animationId,\n );\n });\n\n try {\n await frameAnimation;\n const params = this.getParams(e.dimension);\n e.coordinate = Math.ceil(e.coordinate);\n this.previousScroll[e.dimension] = this.wrapCoordinate(\n e.coordinate,\n params,\n );\n this.preventArtificialScroll[e.dimension] = null;\n this.cfg.applyScroll({\n ...e,\n coordinate: params.virtualSize\n ? this.convert(e.coordinate, params, false)\n : e.coordinate,\n });\n } catch (id) {\n window.cancelAnimationFrame(id);\n }\n }\n\n /**\n * On scroll event started\n */\n scroll(\n coordinate: number,\n dimension: DimensionType,\n force = false,\n delta?: number,\n outside = false,\n ) {\n // cancel all previous scrolls for same dimension\n this.cancelScroll(dimension);\n\n // drop if no change\n if (!force && this.previousScroll[dimension] === coordinate) {\n this.previousScroll[dimension] = NO_COORDINATE;\n return;\n }\n\n const param = this.getParams(dimension);\n // let component know about scroll event started\n this.cfg.runScroll({\n dimension: dimension,\n coordinate: param.virtualSize\n ? this.convert(coordinate, param)\n : coordinate,\n delta,\n outside,\n });\n }\n\n private getParams(dimension: DimensionType): Params {\n return this.params[dimension];\n }\n\n // check if scroll outside of region to avoid looping\n private wrapCoordinate(c: number, param: Params): number {\n if (c < 0) {\n return NO_COORDINATE;\n }\n\n if (typeof param.maxSize === 'number' && c > param.maxSize) {\n return param.maxSize;\n }\n return c;\n }\n\n // prevent already started scroll, performance optimization\n private cancelScroll(dimension: DimensionType) {\n this.preventArtificialScroll[dimension]?.();\n this.preventArtificialScroll[dimension] = null;\n }\n\n /* convert virtual to real and back, scale range */\n private convert(pos: number, param: Params, toReal = true): number {\n const minRange = param.clientSize;\n const from: [number, number] = [0, (param.virtualContentSize ?? minRange) - minRange];\n const to: [number, number] = [0, param.contentSize - param.virtualSize];\n if (toReal) {\n return scaleValue(pos, from, to);\n }\n return scaleValue(pos, to, from);\n }\n}\n","import type { DimensionType } from '@type';\n/**\n * Apply changes only if mousewheel event happened some time ago (scrollThrottling)\n */\nexport class LocalScrollTimer {\n /**\n * Last mw event time for trigger scroll function below\n * If mousewheel function was ignored we still need to trigger render\n */\n private mouseWheelScrollTimestamp: Record<DimensionType, number> = {\n rgCol: 0,\n rgRow: 0,\n };\n private lastKnownScrollCoordinate: Record<DimensionType, number> = {\n rgCol: 0,\n rgRow: 0,\n };\n\n constructor(private scrollThrottling = 10) {}\n\n setCoordinate(e: { dimension: DimensionType; coordinate: number }) {\n this.lastKnownScrollCoordinate[e.dimension] = e.coordinate;\n }\n\n /**\n * Remember last mw event time\n */\n latestScrollUpdate(dimension: DimensionType) {\n this.mouseWheelScrollTimestamp[dimension] = new Date().getTime();\n }\n\n isReady(type: DimensionType, coordinate: number) {\n // if there is a callback, clear it\n if (this.lastScrollUpdateCallbacks[type]) {\n this.clearLastScrollUpdate(type)\n }\n // apply after throttling\n return this.verifyChange(type, coordinate);\n }\n\n private verifyChange(type: DimensionType, coordinate: number) {\n const now = new Date().getTime();\n const change = now - this.mouseWheelScrollTimestamp[type];\n return change > this.scrollThrottling &&\n coordinate !== this.lastKnownScrollCoordinate[type];\n }\n\n /**\n * Check if scroll is ready to accept new value\n * this is an edge case for scroll events\n * when we need to apply scroll after throttling\n */\n private lastScrollUpdateCallbacks: Partial<Record<DimensionType, {\n callback: () => void;\n timestamp: number;\n coordinate: number;\n timeout: number;\n }>> = {};\n\n private clearLastScrollUpdate(type: DimensionType) {\n clearTimeout(this.lastScrollUpdateCallbacks[type]?.timeout ?? 0);\n delete this.lastScrollUpdateCallbacks[type];\n }\n\n throttleLastScrollUpdate(type: DimensionType, coordinate: number, lastScrollUpdate: () => void) {\n // if scrollThrottling is set\n // we need to throttle the last scroll event\n if (this.scrollThrottling) {\n this.clearLastScrollUpdate(type)\n // save lastScrollUpdate callback\n const callback = this.lastScrollUpdateCallbacks[type] = {\n callback: lastScrollUpdate,\n timestamp: new Date().getTime(),\n coordinate,\n timeout: 0 as any,\n };\n callback.timeout = setTimeout(() => {\n // clear timeout\n this.clearLastScrollUpdate(type)\n // if scrollThrottling is set, and the last scroll event happened before the timeout started\n // we need to throttle the last scroll event\n if (this.mouseWheelScrollTimestamp[type] < callback.timestamp && this.verifyChange(type, callback.coordinate)) {\n callback.callback();\n }\n }, this.scrollThrottling + 50);\n }\n }\n}\n","import debounce from './debounce.js';\nimport isObject from './isObject.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n\nexport default throttle;\n"],"names":[],"mappings":"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","x_google_ignoreList":[2]}
|
|
1
|
+
{"version":3,"file":"throttle-DcjZyclk.js","sources":["src/services/local.scroll.service.ts","src/services/local.scroll.timer.ts","node_modules/lodash/throttle.js"],"sourcesContent":["import type { DimensionType, ViewPortScrollEvent } from '@type';\nimport { scaleValue } from '../utils';\n\ninterface Config {\n skipAnimationFrame?: boolean;\n // scroll event inited and direction cached\n // scrollingService.proxyScroll get tiggered\n // setScroll event called from scrollingService\n runScroll(e: ViewPortScrollEvent): void;\n // all operation finished, apply scroll values\n applyScroll(e: ViewPortScrollEvent): void;\n}\n\ntype Params = {\n contentSize: number;\n virtualContentSize?: number;\n clientSize: number;\n virtualSize: number;\n maxSize?: number;\n};\n\nconst initialParams: Params = {\n contentSize: 0,\n clientSize: 0,\n virtualSize: 0,\n maxSize: 0,\n};\nconst NO_COORDINATE = -1;\n\n/**\n * Based on content size, client size and virtual size\n * return full size\n */\nexport function getContentSize(\n contentSize: number,\n clientSize: number,\n virtualSize = 0,\n): number {\n if (virtualSize > contentSize) {\n return 0;\n }\n return contentSize + (virtualSize ? clientSize - virtualSize : 0);\n}\n\nexport default class LocalScrollService {\n private preventArtificialScroll: Record<DimensionType, (() => void) | null> = {\n rgRow: null,\n rgCol: null,\n };\n // to check if scroll changed\n private previousScroll: Record<DimensionType, number> = {\n rgRow: NO_COORDINATE,\n rgCol: NO_COORDINATE,\n };\n private params: Record<DimensionType, Params> = {\n rgRow: { ...initialParams },\n rgCol: { ...initialParams },\n };\n\n constructor(private cfg: Config) {}\n\n setParams(params: Params, dimension: DimensionType) {\n const virtualContentSize = getContentSize(\n params.contentSize,\n params.clientSize,\n params.virtualSize,\n );\n this.params[dimension] = {\n ...params,\n maxSize: virtualContentSize - params.clientSize,\n virtualContentSize,\n };\n }\n\n // apply scroll values after scroll done\n async setScroll(e: ViewPortScrollEvent) {\n this.cancelScroll(e.dimension);\n\n // start frame animation\n const frameAnimation = new Promise<void>((resolve, reject) => {\n // for example safari desktop has issues with animation frame\n if (this.cfg.skipAnimationFrame) {\n return resolve();\n }\n const animationId = window.requestAnimationFrame(() => {\n resolve();\n });\n this.preventArtificialScroll[e.dimension] = reject.bind(\n null,\n animationId,\n );\n });\n\n try {\n await frameAnimation;\n const params = this.getParams(e.dimension);\n e.coordinate = Math.ceil(e.coordinate);\n this.previousScroll[e.dimension] = this.wrapCoordinate(\n e.coordinate,\n params,\n );\n this.preventArtificialScroll[e.dimension] = null;\n this.cfg.applyScroll({\n ...e,\n coordinate: params.virtualSize\n ? this.convert(e.coordinate, params, false)\n : e.coordinate,\n });\n } catch (id) {\n window.cancelAnimationFrame(id);\n }\n }\n\n /**\n * On scroll event started\n */\n scroll(\n coordinate: number,\n dimension: DimensionType,\n force = false,\n delta?: number,\n outside = false,\n ) {\n // cancel all previous scrolls for same dimension\n this.cancelScroll(dimension);\n\n // drop if no change\n if (!force && this.previousScroll[dimension] === coordinate) {\n this.previousScroll[dimension] = NO_COORDINATE;\n return;\n }\n\n const param = this.getParams(dimension);\n // let component know about scroll event started\n this.cfg.runScroll({\n dimension: dimension,\n coordinate: param.virtualSize\n ? this.convert(coordinate, param)\n : coordinate,\n delta,\n outside,\n });\n }\n\n private getParams(dimension: DimensionType): Params {\n return this.params[dimension];\n }\n\n // check if scroll outside of region to avoid looping\n private wrapCoordinate(c: number, param: Params): number {\n if (c < 0) {\n return NO_COORDINATE;\n }\n\n if (typeof param.maxSize === 'number' && c > param.maxSize) {\n return param.maxSize;\n }\n return c;\n }\n\n // prevent already started scroll, performance optimization\n private cancelScroll(dimension: DimensionType) {\n this.preventArtificialScroll[dimension]?.();\n this.preventArtificialScroll[dimension] = null;\n }\n\n /* convert virtual to real and back, scale range */\n private convert(pos: number, param: Params, toReal = true): number {\n const minRange = param.clientSize;\n const from: [number, number] = [0, (param.virtualContentSize ?? minRange) - minRange];\n const to: [number, number] = [0, param.contentSize - param.virtualSize];\n if (toReal) {\n return scaleValue(pos, from, to);\n }\n return scaleValue(pos, to, from);\n }\n}\n","import type { DimensionType } from '@type';\n/**\n * Apply changes only if mousewheel event happened some time ago (scrollThrottling)\n */\nexport class LocalScrollTimer {\n /**\n * Last mw event time for trigger scroll function below\n * If mousewheel function was ignored we still need to trigger render\n */\n private mouseWheelScrollTimestamp: Record<DimensionType, number> = {\n rgCol: 0,\n rgRow: 0,\n };\n private lastKnownScrollCoordinate: Record<DimensionType, number> = {\n rgCol: 0,\n rgRow: 0,\n };\n\n constructor(private scrollThrottling = 10) {}\n\n setCoordinate(e: { dimension: DimensionType; coordinate: number }) {\n this.lastKnownScrollCoordinate[e.dimension] = e.coordinate;\n }\n\n /**\n * Remember last mw event time\n */\n latestScrollUpdate(dimension: DimensionType) {\n this.mouseWheelScrollTimestamp[dimension] = new Date().getTime();\n }\n\n isReady(type: DimensionType, coordinate: number) {\n // if there is a callback, clear it\n if (this.lastScrollUpdateCallbacks[type]) {\n this.clearLastScrollUpdate(type)\n }\n // apply after throttling\n return this.verifyChange(type, coordinate);\n }\n\n private verifyChange(type: DimensionType, coordinate: number) {\n const now = new Date().getTime();\n const change = now - this.mouseWheelScrollTimestamp[type];\n return change > this.scrollThrottling &&\n coordinate !== this.lastKnownScrollCoordinate[type];\n }\n\n /**\n * Check if scroll is ready to accept new value\n * this is an edge case for scroll events\n * when we need to apply scroll after throttling\n */\n private lastScrollUpdateCallbacks: Partial<Record<DimensionType, {\n callback: () => void;\n timestamp: number;\n coordinate: number;\n timeout: number;\n }>> = {};\n\n private clearLastScrollUpdate(type: DimensionType) {\n clearTimeout(this.lastScrollUpdateCallbacks[type]?.timeout ?? 0);\n delete this.lastScrollUpdateCallbacks[type];\n }\n\n throttleLastScrollUpdate(type: DimensionType, coordinate: number, lastScrollUpdate: () => void) {\n // if scrollThrottling is set\n // we need to throttle the last scroll event\n if (this.scrollThrottling) {\n this.clearLastScrollUpdate(type)\n // save lastScrollUpdate callback\n const callback = this.lastScrollUpdateCallbacks[type] = {\n callback: lastScrollUpdate,\n timestamp: new Date().getTime(),\n coordinate,\n timeout: 0 as any,\n };\n callback.timeout = setTimeout(() => {\n // clear timeout\n this.clearLastScrollUpdate(type)\n // if scrollThrottling is set, and the last scroll event happened before the timeout started\n // we need to throttle the last scroll event\n if (this.mouseWheelScrollTimestamp[type] < callback.timestamp && this.verifyChange(type, callback.coordinate)) {\n callback.callback();\n }\n }, this.scrollThrottling + 50);\n }\n }\n}\n","import debounce from './debounce.js';\nimport isObject from './isObject.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n\nexport default throttle;\n"],"names":[],"mappings":"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","x_google_ignoreList":[2]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* Built by Revolist OU ❤️
|
|
3
3
|
*/
|
|
4
|
-
import { j as getItemByPosition, W as createStore, w as setStore } from './dimension.helpers-
|
|
4
|
+
import { j as getItemByPosition, W as createStore, w as setStore } from './dimension.helpers-D5lwLPzd.js';
|
|
5
5
|
|
|
6
6
|
const LETTER_BLOCK_SIZE = 10;
|
|
7
7
|
const calculateRowHeaderSize = (itemsLength, rowHeaderColumn, minWidth = 50) => {
|
|
@@ -402,6 +402,6 @@ class ViewportStore {
|
|
|
402
402
|
}
|
|
403
403
|
|
|
404
404
|
export { ViewportStore as V, addMissingItems as a, getItems as b, isActiveRangeOutsideLastItem as c, getFirstItem as d, getLastItem as e, calculateRowHeaderSize as f, getUpdatedItemsByPosition as g, isActiveRange as i, recombineByOffset as r, setItemSizes as s, updateMissingAndRange as u };
|
|
405
|
-
//# sourceMappingURL=viewport.store-
|
|
405
|
+
//# sourceMappingURL=viewport.store-2mQugd8S.js.map
|
|
406
406
|
|
|
407
|
-
//# sourceMappingURL=viewport.store-
|
|
407
|
+
//# sourceMappingURL=viewport.store-2mQugd8S.js.map
|
package/dist/{esm/viewport.store-C89n4AEU.js.map → revo-grid/viewport.store-2mQugd8S.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"viewport.store-C89n4AEU.js","sources":["src/utils/row-header-utils.ts","src/store/vp/viewport.helpers.ts","src/store/vp/viewport.store.ts"],"sourcesContent":["import { RowHeaders } from '..';\n\nconst LETTER_BLOCK_SIZE = 10;\nexport const calculateRowHeaderSize = (\n itemsLength: number,\n rowHeaderColumn?: RowHeaders,\n minWidth = 50,\n) => {\n return (\n rowHeaderColumn?.size ||\n Math.max((itemsLength.toString().length + 1) * LETTER_BLOCK_SIZE, minWidth)\n );\n};\n","import type {\n DimensionSettingsState,\n PositionItem,\n ViewSettingSizeProp,\n ViewportStateItems,\n VirtualPositionItem,\n Range,\n} from '@type';\n\nimport { getItemByPosition } from '../dimension/dimension.helpers';\n\nexport type DimensionDataViewport = Pick<\n DimensionSettingsState,\n | 'indexes'\n | 'positionIndexes'\n | 'positionIndexToItem'\n | 'sizes'\n | 'originItemSize'\n | 'realSize'\n>;\n\nexport type ItemsToUpdate = Pick<ViewportStateItems, 'items' | 'start' | 'end'>;\n/**\n * Update items based on new scroll position\n * If viewport wasn't changed fully simple recombination of positions\n * Otherwise rebuild viewport items\n */\nexport function getUpdatedItemsByPosition<T extends ItemsToUpdate>(\n pos: number, // coordinate\n items: T,\n realCount: number,\n virtualSize: number,\n dimension: DimensionDataViewport,\n): ItemsToUpdate {\n const activeItem: PositionItem = getItemByPosition(dimension, pos);\n const firstItem = getFirstItem(items);\n let toUpdate: ItemsToUpdate | undefined;\n // do simple position recombination if items already present in viewport\n if (firstItem) {\n let changedOffsetStart = activeItem.itemIndex - (firstItem.itemIndex || 0);\n // if item changed\n if (changedOffsetStart) {\n // simple recombination\n toUpdate = recombineByOffset(Math.abs(changedOffsetStart), {\n positiveDirection: changedOffsetStart > -1,\n ...dimension,\n ...items,\n });\n }\n }\n\n const maxSizeVirtualSize = getMaxVirtualSize(\n virtualSize,\n dimension.realSize,\n activeItem,\n );\n // if partial recombination add items if revo-viewport has some space left\n if (toUpdate) {\n const extra = addMissingItems(\n activeItem,\n realCount,\n maxSizeVirtualSize,\n toUpdate,\n dimension,\n );\n if (extra.length) {\n updateMissingAndRange(toUpdate.items, extra, toUpdate);\n }\n }\n\n // new collection if no items after replacement full replacement\n if (!toUpdate) {\n const items = getItems({\n firstItemStart: activeItem.start,\n firstItemIndex: activeItem.itemIndex,\n origSize: dimension.originItemSize,\n maxSize: maxSizeVirtualSize,\n maxCount: realCount,\n sizes: dimension.sizes,\n });\n\n // range now comes from 0 to length - 1\n toUpdate = {\n items,\n start: 0,\n end: items.length - 1,\n };\n }\n return toUpdate;\n}\n\n// virtual size can differ based on scroll position if some big items are present\n// scroll can be in the middle of item and virtual size will be larger\n// so we need to exclude this part from virtual size hence it's already passed\nfunction getMaxVirtualSize(\n virtualSize: number,\n realSize: number,\n activeItem: PositionItem,\n) {\n return Math.min(virtualSize + (activeItem.end - activeItem.start), realSize);\n}\n\nexport function updateMissingAndRange(\n items: VirtualPositionItem[],\n missing: VirtualPositionItem[],\n range: Range,\n) {\n items.splice(range.end + 1, 0, ...missing);\n // update range if start larger after recombination\n if (\n range.start >= range.end &&\n !(range.start === range.end && range.start === 0)\n ) {\n range.start += missing.length;\n }\n range.end += missing.length;\n}\n\n/**\n * If partial replacement\n * this function adds items if viewport has some space left\n */\nexport function addMissingItems<T extends ItemsToUpdate>(\n firstItem: PositionItem,\n realCount: number,\n virtualSize: number,\n existingCollection: T,\n dimension: Pick<DimensionSettingsState, 'sizes' | 'originItemSize'>,\n): VirtualPositionItem[] {\n const lastItem: VirtualPositionItem = getLastItem(existingCollection);\n const items = getItems({\n sizes: dimension.sizes,\n firstItemStart: lastItem.end,\n firstItemIndex: lastItem.itemIndex + 1,\n origSize: dimension.originItemSize,\n maxSize: virtualSize - (lastItem.end - firstItem.start),\n maxCount: realCount,\n });\n return items;\n}\n\n/**\n * Get wiewport items parameters\n * caching position and calculating items count in viewport\n */\nexport function getItems(\n opt: {\n firstItemIndex: number;\n firstItemStart: number;\n origSize: number;\n maxSize: number; // virtual size\n maxCount: number; // real item count, where the last item\n sizes?: ViewSettingSizeProp;\n },\n currentSize = 0,\n) {\n const items: VirtualPositionItem[] = [];\n\n let index = opt.firstItemIndex;\n let size = currentSize;\n\n // max size or max count\n while (size <= opt.maxSize && index < opt.maxCount) {\n const newSize = getItemSize(index, opt.sizes, opt.origSize);\n items.push({\n start: opt.firstItemStart + size,\n end: opt.firstItemStart + size + newSize,\n itemIndex: index,\n size: newSize,\n });\n size += newSize;\n index++;\n }\n return items;\n}\n\n/**\n * Do batch items recombination\n * If items not overlapped with existing viewport returns null\n */\ntype RecombindDimensionData = Pick<\n DimensionSettingsState,\n 'sizes' | 'realSize' | 'originItemSize'\n>;\ntype RecombineOffsetData = {\n positiveDirection: boolean;\n} & ItemsToUpdate &\n RecombindDimensionData;\nexport function recombineByOffset(\n offset: number,\n data: RecombineOffsetData,\n): ItemsToUpdate | undefined {\n const newItems = [...data.items];\n const itemsCount = newItems.length;\n let newRange = {\n start: data.start,\n end: data.end,\n };\n\n // if offset out of revo-viewport, makes sense whole redraw\n if (offset > itemsCount) {\n return undefined;\n }\n\n // is direction of scroll positive\n if (data.positiveDirection) {\n // push item to the end\n let lastItem: VirtualPositionItem = getLastItem(data);\n\n let i = newRange.start;\n const length = i + offset;\n for (; i < length; i++) {\n const newIndex = lastItem.itemIndex + 1;\n const size = getItemSize(\n newIndex,\n data.sizes,\n data.originItemSize,\n );\n\n // if item overlapped limit break a loop\n if (lastItem.end + size > data.realSize) {\n break;\n }\n\n // new item index to recombine\n let newEnd = i % itemsCount;\n\n // item should always present, we do not create new item, we recombine them\n if (!newItems[newEnd]) {\n throw new Error('incorrect index');\n }\n\n // do recombination\n newItems[newEnd] = lastItem = {\n start: lastItem.end,\n end: lastItem.end + size,\n itemIndex: newIndex,\n size: size,\n };\n // update range\n newRange.start++;\n newRange.end = newEnd;\n }\n\n // direction is negative\n } else {\n // push item to the start\n let firstItem = getFirstItem(data);\n\n const end = newRange.end;\n for (let i = 0; i < offset; i++) {\n const newIndex = (firstItem?.itemIndex ?? 0) - 1;\n const size = getItemSize(\n newIndex,\n data.sizes,\n data.originItemSize,\n );\n\n // new item index to recombine\n let newStart = end - i;\n newStart = (newStart < 0 ? itemsCount + newStart : newStart) % itemsCount;\n\n // item should always present, we do not create new item, we recombine them\n if (!newItems[newStart]) {\n console.error('incorrect index');\n break;\n }\n\n // do recombination\n const firstItemStart = firstItem?.start ?? 0;\n newItems[newStart] = firstItem = {\n start: firstItemStart - size,\n end: firstItemStart,\n itemIndex: newIndex,\n size: size,\n };\n // update range\n newRange.start = newStart;\n newRange.end--;\n }\n }\n const range = {\n start:\n (newRange.start < 0 ? itemsCount + newRange.start : newRange.start) %\n itemsCount,\n end:\n (newRange.end < 0 ? itemsCount + newRange.end : newRange.end) %\n itemsCount,\n };\n return {\n items: newItems,\n ...range,\n };\n}\n\nfunction getItemSize(\n index: number,\n sizes?: ViewSettingSizeProp,\n origSize = 0,\n): number {\n if (sizes && sizes[index]) {\n return sizes[index];\n }\n return origSize;\n}\n\n/**\n * Verify if position is in range of the PositionItem, start and end are included\n */\nexport function isActiveRange(\n pos: number,\n realSize: number,\n first?: PositionItem,\n last?: PositionItem,\n): boolean {\n if (!first || !last) {\n return false;\n }\n // if position is in range of first item\n // or position is after first item and last item is the last item in real size\n return (\n (pos >= first.start && pos <= first.end) ||\n (pos > first.end && last.end === realSize)\n );\n}\n\nexport function isActiveRangeOutsideLastItem(\n pos: number,\n virtualSize: number,\n firstItem?: PositionItem,\n lastItem?: PositionItem,\n) {\n // if no first item, means no items in viewport\n if (!firstItem) {\n return false;\n }\n return virtualSize + pos > (lastItem?.end ?? 0);\n}\n\nexport function getFirstItem(\n s: ItemsToUpdate,\n) {\n return s.items[s.start];\n}\n\nexport function getLastItem(s: ItemsToUpdate): VirtualPositionItem {\n return s.items[s.end];\n}\n\n/**\n * Set items sizes from start index to end\n * @param vpItems\n * @param start\n * @param size\n * @param lastCoordinate\n * @returns\n */\nexport function setItemSizes(\n vpItems: VirtualPositionItem[],\n initialIndex: number,\n size: number,\n lastCoordinate: number,\n) {\n const items = [...vpItems];\n const count = items.length;\n\n let pos = lastCoordinate;\n let i = 0;\n let start = initialIndex;\n\n // viewport not inited\n if (!count) {\n return [];\n }\n // loop through array from initial item after recombination\n while (i < count) {\n const item = items[start];\n item.start = pos;\n item.size = size;\n item.end = item.start + size;\n pos = item.end;\n // loop by start index\n start++;\n i++;\n\n // if start index out of array, reset it\n if (start === count) {\n start = 0;\n }\n }\n return items;\n}\n","import {\n DimensionDataViewport,\n addMissingItems,\n getFirstItem,\n getLastItem,\n getUpdatedItemsByPosition,\n isActiveRange,\n setItemSizes,\n updateMissingAndRange,\n isActiveRangeOutsideLastItem,\n ItemsToUpdate,\n} from './viewport.helpers';\nimport { createStore } from '@stencil/store';\nimport { type Observable, setStore } from '../../utils';\nimport type {\n VirtualPositionItem,\n ViewportState,\n MultiDimensionType,\n} from '@type';\n\n/**\n * Viewport store\n * Used for virtualization (process of rendering only visible part of data)\n * Redraws viewport based on position and dimension\n */\nfunction initialState(): ViewportState {\n return {\n // virtual item information per rendered item\n items: [],\n // virtual dom item order to render\n start: 0,\n end: 0,\n\n // size of virtual viewport in px\n virtualSize: 0,\n\n // total number of items\n realCount: 0,\n\n // size of viewport in px\n clientSize: 0,\n };\n}\n\n/**\n * Viewport store class\n */\nexport class ViewportStore {\n readonly store: Observable<ViewportState>;\n\n // last coordinate for store position restore\n private lastKnownScroll = 0;\n\n get lastCoordinate() {\n return this.lastKnownScroll;\n }\n set lastCoordinate(value: number) {\n this.lastKnownScroll = value;\n }\n constructor(readonly type: MultiDimensionType) {\n this.store = createStore(initialState());\n }\n\n /**\n * Render viewport based on coordinate\n * It's the main method for draw\n * Use force if you want to re-render viewport\n */\n setViewPortCoordinate(\n position: number,\n dimension: DimensionDataViewport,\n force = false,\n ) {\n const viewportSize = this.store.get('virtualSize');\n // no visible data to calculate\n if (!viewportSize) {\n return;\n }\n\n const frameOffset = 1;\n const singleOffsetInPx = dimension.originItemSize * frameOffset;\n // add offset to virtual size from both sides\n const outsize = singleOffsetInPx * 2;\n // math virtual size is based on visible area + 2 items outside of visible area\n const virtualSize = viewportSize + outsize;\n\n // expected no scroll if real size less than virtual size, position is 0\n let maxCoordinate = 0;\n // if there is nodes outside of viewport, max coordinate has to be adjusted\n if (dimension.realSize > viewportSize) {\n // max coordinate is real size minus virtual/rendered space\n maxCoordinate = dimension.realSize - viewportSize - singleOffsetInPx;\n }\n\n let pos = position;\n // limit position to max and min coordinates\n if (pos < 0) {\n pos = 0;\n } else if (pos > maxCoordinate) {\n pos = maxCoordinate;\n }\n\n // store last coordinate for further restore on redraw\n this.lastCoordinate = pos;\n\n // actual position is less than first item start based on offset\n pos -= singleOffsetInPx;\n pos = pos < 0 ? 0 : pos < maxCoordinate ? pos : maxCoordinate;\n\n let allItems: ItemsToUpdate;\n // if force clear all items and start from 0\n if (force) {\n allItems = {\n items: [],\n start: 0,\n end: 0,\n };\n } else {\n allItems = this.getItems();\n }\n\n const firstItem: VirtualPositionItem | undefined = getFirstItem(allItems);\n const lastItem: VirtualPositionItem | undefined = getLastItem(allItems);\n\n let toUpdate: Partial<ViewportState> = {};\n\n // left position changed\n // verify if new position is in range of previously rendered first item\n if (!isActiveRange(pos, dimension.realSize, firstItem, lastItem)) {\n toUpdate = {\n ...toUpdate,\n ...getUpdatedItemsByPosition(\n pos,\n allItems,\n this.store.get('realCount'),\n virtualSize,\n dimension,\n ),\n };\n this.setViewport({ ...toUpdate });\n // verify is render area is outside of last item\n } else if (\n isActiveRangeOutsideLastItem(pos, virtualSize, firstItem, lastItem)\n ) {\n const items = [...allItems.items];\n // check is any item missing for fulfill content\n const missing = addMissingItems(\n firstItem,\n this.store.get('realCount'),\n virtualSize + pos - firstItem.start,\n allItems,\n {\n sizes: dimension.sizes,\n originItemSize: dimension.originItemSize,\n },\n );\n\n // update missing items\n if (missing.length) {\n const range = {\n start: this.store.get('start'),\n end: this.store.get('end'),\n };\n updateMissingAndRange(items, missing, range);\n toUpdate = {\n ...toUpdate,\n items: [...items],\n ...range,\n };\n this.setViewport({ ...toUpdate });\n }\n }\n }\n\n /**\n * Set sizes for existing items\n */\n setOriginalSizes(size: number) {\n const items = this.store.get('items');\n const count = items.length;\n // viewport not inited\n if (!count) {\n return;\n }\n\n setStore(this.store, {\n items: setItemSizes(\n items,\n this.store.get('start'),\n size,\n this.lastCoordinate,\n ),\n });\n }\n\n getItems(): ItemsToUpdate {\n return {\n items: this.store.get('items'),\n start: this.store.get('start'),\n end: this.store.get('end'),\n };\n }\n\n setViewport(data: Partial<ViewportState>) {\n // drop items on virtual size change, require a new item set\n // drop items on real size change, require a new item set\n if (typeof data.realCount === 'number' || typeof data.virtualSize === 'number') {\n data = { ...data, items: data.items || [] };\n }\n setStore(this.store, data);\n }\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"viewport.store-2mQugd8S.js","sources":["src/utils/row-header-utils.ts","src/store/vp/viewport.helpers.ts","src/store/vp/viewport.store.ts"],"sourcesContent":["import { RowHeaders } from '..';\n\nconst LETTER_BLOCK_SIZE = 10;\nexport const calculateRowHeaderSize = (\n itemsLength: number,\n rowHeaderColumn?: RowHeaders,\n minWidth = 50,\n) => {\n return (\n rowHeaderColumn?.size ||\n Math.max((itemsLength.toString().length + 1) * LETTER_BLOCK_SIZE, minWidth)\n );\n};\n","import type {\n DimensionSettingsState,\n PositionItem,\n ViewSettingSizeProp,\n ViewportStateItems,\n VirtualPositionItem,\n Range,\n} from '@type';\n\nimport { getItemByPosition } from '../dimension/dimension.helpers';\n\nexport type DimensionDataViewport = Pick<\n DimensionSettingsState,\n | 'indexes'\n | 'positionIndexes'\n | 'positionIndexToItem'\n | 'sizes'\n | 'originItemSize'\n | 'realSize'\n>;\n\nexport type ItemsToUpdate = Pick<ViewportStateItems, 'items' | 'start' | 'end'>;\n/**\n * Update items based on new scroll position\n * If viewport wasn't changed fully simple recombination of positions\n * Otherwise rebuild viewport items\n */\nexport function getUpdatedItemsByPosition<T extends ItemsToUpdate>(\n pos: number, // coordinate\n items: T,\n realCount: number,\n virtualSize: number,\n dimension: DimensionDataViewport,\n): ItemsToUpdate {\n const activeItem: PositionItem = getItemByPosition(dimension, pos);\n const firstItem = getFirstItem(items);\n let toUpdate: ItemsToUpdate | undefined;\n // do simple position recombination if items already present in viewport\n if (firstItem) {\n let changedOffsetStart = activeItem.itemIndex - (firstItem.itemIndex || 0);\n // if item changed\n if (changedOffsetStart) {\n // simple recombination\n toUpdate = recombineByOffset(Math.abs(changedOffsetStart), {\n positiveDirection: changedOffsetStart > -1,\n ...dimension,\n ...items,\n });\n }\n }\n\n const maxSizeVirtualSize = getMaxVirtualSize(\n virtualSize,\n dimension.realSize,\n activeItem,\n );\n // if partial recombination add items if revo-viewport has some space left\n if (toUpdate) {\n const extra = addMissingItems(\n activeItem,\n realCount,\n maxSizeVirtualSize,\n toUpdate,\n dimension,\n );\n if (extra.length) {\n updateMissingAndRange(toUpdate.items, extra, toUpdate);\n }\n }\n\n // new collection if no items after replacement full replacement\n if (!toUpdate) {\n const items = getItems({\n firstItemStart: activeItem.start,\n firstItemIndex: activeItem.itemIndex,\n origSize: dimension.originItemSize,\n maxSize: maxSizeVirtualSize,\n maxCount: realCount,\n sizes: dimension.sizes,\n });\n\n // range now comes from 0 to length - 1\n toUpdate = {\n items,\n start: 0,\n end: items.length - 1,\n };\n }\n return toUpdate;\n}\n\n// virtual size can differ based on scroll position if some big items are present\n// scroll can be in the middle of item and virtual size will be larger\n// so we need to exclude this part from virtual size hence it's already passed\nfunction getMaxVirtualSize(\n virtualSize: number,\n realSize: number,\n activeItem: PositionItem,\n) {\n return Math.min(virtualSize + (activeItem.end - activeItem.start), realSize);\n}\n\nexport function updateMissingAndRange(\n items: VirtualPositionItem[],\n missing: VirtualPositionItem[],\n range: Range,\n) {\n items.splice(range.end + 1, 0, ...missing);\n // update range if start larger after recombination\n if (\n range.start >= range.end &&\n !(range.start === range.end && range.start === 0)\n ) {\n range.start += missing.length;\n }\n range.end += missing.length;\n}\n\n/**\n * If partial replacement\n * this function adds items if viewport has some space left\n */\nexport function addMissingItems<T extends ItemsToUpdate>(\n firstItem: PositionItem,\n realCount: number,\n virtualSize: number,\n existingCollection: T,\n dimension: Pick<DimensionSettingsState, 'sizes' | 'originItemSize'>,\n): VirtualPositionItem[] {\n const lastItem: VirtualPositionItem = getLastItem(existingCollection);\n const items = getItems({\n sizes: dimension.sizes,\n firstItemStart: lastItem.end,\n firstItemIndex: lastItem.itemIndex + 1,\n origSize: dimension.originItemSize,\n maxSize: virtualSize - (lastItem.end - firstItem.start),\n maxCount: realCount,\n });\n return items;\n}\n\n/**\n * Get wiewport items parameters\n * caching position and calculating items count in viewport\n */\nexport function getItems(\n opt: {\n firstItemIndex: number;\n firstItemStart: number;\n origSize: number;\n maxSize: number; // virtual size\n maxCount: number; // real item count, where the last item\n sizes?: ViewSettingSizeProp;\n },\n currentSize = 0,\n) {\n const items: VirtualPositionItem[] = [];\n\n let index = opt.firstItemIndex;\n let size = currentSize;\n\n // max size or max count\n while (size <= opt.maxSize && index < opt.maxCount) {\n const newSize = getItemSize(index, opt.sizes, opt.origSize);\n items.push({\n start: opt.firstItemStart + size,\n end: opt.firstItemStart + size + newSize,\n itemIndex: index,\n size: newSize,\n });\n size += newSize;\n index++;\n }\n return items;\n}\n\n/**\n * Do batch items recombination\n * If items not overlapped with existing viewport returns null\n */\ntype RecombindDimensionData = Pick<\n DimensionSettingsState,\n 'sizes' | 'realSize' | 'originItemSize'\n>;\ntype RecombineOffsetData = {\n positiveDirection: boolean;\n} & ItemsToUpdate &\n RecombindDimensionData;\nexport function recombineByOffset(\n offset: number,\n data: RecombineOffsetData,\n): ItemsToUpdate | undefined {\n const newItems = [...data.items];\n const itemsCount = newItems.length;\n let newRange = {\n start: data.start,\n end: data.end,\n };\n\n // if offset out of revo-viewport, makes sense whole redraw\n if (offset > itemsCount) {\n return undefined;\n }\n\n // is direction of scroll positive\n if (data.positiveDirection) {\n // push item to the end\n let lastItem: VirtualPositionItem = getLastItem(data);\n\n let i = newRange.start;\n const length = i + offset;\n for (; i < length; i++) {\n const newIndex = lastItem.itemIndex + 1;\n const size = getItemSize(\n newIndex,\n data.sizes,\n data.originItemSize,\n );\n\n // if item overlapped limit break a loop\n if (lastItem.end + size > data.realSize) {\n break;\n }\n\n // new item index to recombine\n let newEnd = i % itemsCount;\n\n // item should always present, we do not create new item, we recombine them\n if (!newItems[newEnd]) {\n throw new Error('incorrect index');\n }\n\n // do recombination\n newItems[newEnd] = lastItem = {\n start: lastItem.end,\n end: lastItem.end + size,\n itemIndex: newIndex,\n size: size,\n };\n // update range\n newRange.start++;\n newRange.end = newEnd;\n }\n\n // direction is negative\n } else {\n // push item to the start\n let firstItem = getFirstItem(data);\n\n const end = newRange.end;\n for (let i = 0; i < offset; i++) {\n const newIndex = (firstItem?.itemIndex ?? 0) - 1;\n const size = getItemSize(\n newIndex,\n data.sizes,\n data.originItemSize,\n );\n\n // new item index to recombine\n let newStart = end - i;\n newStart = (newStart < 0 ? itemsCount + newStart : newStart) % itemsCount;\n\n // item should always present, we do not create new item, we recombine them\n if (!newItems[newStart]) {\n console.error('incorrect index');\n break;\n }\n\n // do recombination\n const firstItemStart = firstItem?.start ?? 0;\n newItems[newStart] = firstItem = {\n start: firstItemStart - size,\n end: firstItemStart,\n itemIndex: newIndex,\n size: size,\n };\n // update range\n newRange.start = newStart;\n newRange.end--;\n }\n }\n const range = {\n start:\n (newRange.start < 0 ? itemsCount + newRange.start : newRange.start) %\n itemsCount,\n end:\n (newRange.end < 0 ? itemsCount + newRange.end : newRange.end) %\n itemsCount,\n };\n return {\n items: newItems,\n ...range,\n };\n}\n\nfunction getItemSize(\n index: number,\n sizes?: ViewSettingSizeProp,\n origSize = 0,\n): number {\n if (sizes && sizes[index]) {\n return sizes[index];\n }\n return origSize;\n}\n\n/**\n * Verify if position is in range of the PositionItem, start and end are included\n */\nexport function isActiveRange(\n pos: number,\n realSize: number,\n first?: PositionItem,\n last?: PositionItem,\n): boolean {\n if (!first || !last) {\n return false;\n }\n // if position is in range of first item\n // or position is after first item and last item is the last item in real size\n return (\n (pos >= first.start && pos <= first.end) ||\n (pos > first.end && last.end === realSize)\n );\n}\n\nexport function isActiveRangeOutsideLastItem(\n pos: number,\n virtualSize: number,\n firstItem?: PositionItem,\n lastItem?: PositionItem,\n) {\n // if no first item, means no items in viewport\n if (!firstItem) {\n return false;\n }\n return virtualSize + pos > (lastItem?.end ?? 0);\n}\n\nexport function getFirstItem(\n s: ItemsToUpdate,\n) {\n return s.items[s.start];\n}\n\nexport function getLastItem(s: ItemsToUpdate): VirtualPositionItem {\n return s.items[s.end];\n}\n\n/**\n * Set items sizes from start index to end\n * @param vpItems\n * @param start\n * @param size\n * @param lastCoordinate\n * @returns\n */\nexport function setItemSizes(\n vpItems: VirtualPositionItem[],\n initialIndex: number,\n size: number,\n lastCoordinate: number,\n) {\n const items = [...vpItems];\n const count = items.length;\n\n let pos = lastCoordinate;\n let i = 0;\n let start = initialIndex;\n\n // viewport not inited\n if (!count) {\n return [];\n }\n // loop through array from initial item after recombination\n while (i < count) {\n const item = items[start];\n item.start = pos;\n item.size = size;\n item.end = item.start + size;\n pos = item.end;\n // loop by start index\n start++;\n i++;\n\n // if start index out of array, reset it\n if (start === count) {\n start = 0;\n }\n }\n return items;\n}\n","import {\n DimensionDataViewport,\n addMissingItems,\n getFirstItem,\n getLastItem,\n getUpdatedItemsByPosition,\n isActiveRange,\n setItemSizes,\n updateMissingAndRange,\n isActiveRangeOutsideLastItem,\n ItemsToUpdate,\n} from './viewport.helpers';\nimport { createStore } from '@stencil/store';\nimport { type Observable, setStore } from '../../utils';\nimport type {\n VirtualPositionItem,\n ViewportState,\n MultiDimensionType,\n} from '@type';\n\n/**\n * Viewport store\n * Used for virtualization (process of rendering only visible part of data)\n * Redraws viewport based on position and dimension\n */\nfunction initialState(): ViewportState {\n return {\n // virtual item information per rendered item\n items: [],\n // virtual dom item order to render\n start: 0,\n end: 0,\n\n // size of virtual viewport in px\n virtualSize: 0,\n\n // total number of items\n realCount: 0,\n\n // size of viewport in px\n clientSize: 0,\n };\n}\n\n/**\n * Viewport store class\n */\nexport class ViewportStore {\n readonly store: Observable<ViewportState>;\n\n // last coordinate for store position restore\n private lastKnownScroll = 0;\n\n get lastCoordinate() {\n return this.lastKnownScroll;\n }\n set lastCoordinate(value: number) {\n this.lastKnownScroll = value;\n }\n constructor(readonly type: MultiDimensionType) {\n this.store = createStore(initialState());\n }\n\n /**\n * Render viewport based on coordinate\n * It's the main method for draw\n * Use force if you want to re-render viewport\n */\n setViewPortCoordinate(\n position: number,\n dimension: DimensionDataViewport,\n force = false,\n ) {\n const viewportSize = this.store.get('virtualSize');\n // no visible data to calculate\n if (!viewportSize) {\n return;\n }\n\n const frameOffset = 1;\n const singleOffsetInPx = dimension.originItemSize * frameOffset;\n // add offset to virtual size from both sides\n const outsize = singleOffsetInPx * 2;\n // math virtual size is based on visible area + 2 items outside of visible area\n const virtualSize = viewportSize + outsize;\n\n // expected no scroll if real size less than virtual size, position is 0\n let maxCoordinate = 0;\n // if there is nodes outside of viewport, max coordinate has to be adjusted\n if (dimension.realSize > viewportSize) {\n // max coordinate is real size minus virtual/rendered space\n maxCoordinate = dimension.realSize - viewportSize - singleOffsetInPx;\n }\n\n let pos = position;\n // limit position to max and min coordinates\n if (pos < 0) {\n pos = 0;\n } else if (pos > maxCoordinate) {\n pos = maxCoordinate;\n }\n\n // store last coordinate for further restore on redraw\n this.lastCoordinate = pos;\n\n // actual position is less than first item start based on offset\n pos -= singleOffsetInPx;\n pos = pos < 0 ? 0 : pos < maxCoordinate ? pos : maxCoordinate;\n\n let allItems: ItemsToUpdate;\n // if force clear all items and start from 0\n if (force) {\n allItems = {\n items: [],\n start: 0,\n end: 0,\n };\n } else {\n allItems = this.getItems();\n }\n\n const firstItem: VirtualPositionItem | undefined = getFirstItem(allItems);\n const lastItem: VirtualPositionItem | undefined = getLastItem(allItems);\n\n let toUpdate: Partial<ViewportState> = {};\n\n // left position changed\n // verify if new position is in range of previously rendered first item\n if (!isActiveRange(pos, dimension.realSize, firstItem, lastItem)) {\n toUpdate = {\n ...toUpdate,\n ...getUpdatedItemsByPosition(\n pos,\n allItems,\n this.store.get('realCount'),\n virtualSize,\n dimension,\n ),\n };\n this.setViewport({ ...toUpdate });\n // verify is render area is outside of last item\n } else if (\n isActiveRangeOutsideLastItem(pos, virtualSize, firstItem, lastItem)\n ) {\n const items = [...allItems.items];\n // check is any item missing for fulfill content\n const missing = addMissingItems(\n firstItem,\n this.store.get('realCount'),\n virtualSize + pos - firstItem.start,\n allItems,\n {\n sizes: dimension.sizes,\n originItemSize: dimension.originItemSize,\n },\n );\n\n // update missing items\n if (missing.length) {\n const range = {\n start: this.store.get('start'),\n end: this.store.get('end'),\n };\n updateMissingAndRange(items, missing, range);\n toUpdate = {\n ...toUpdate,\n items: [...items],\n ...range,\n };\n this.setViewport({ ...toUpdate });\n }\n }\n }\n\n /**\n * Set sizes for existing items\n */\n setOriginalSizes(size: number) {\n const items = this.store.get('items');\n const count = items.length;\n // viewport not inited\n if (!count) {\n return;\n }\n\n setStore(this.store, {\n items: setItemSizes(\n items,\n this.store.get('start'),\n size,\n this.lastCoordinate,\n ),\n });\n }\n\n getItems(): ItemsToUpdate {\n return {\n items: this.store.get('items'),\n start: this.store.get('start'),\n end: this.store.get('end'),\n };\n }\n\n setViewport(data: Partial<ViewportState>) {\n // drop items on virtual size change, require a new item set\n // drop items on real size change, require a new item set\n if (typeof data.realCount === 'number' || typeof data.virtualSize === 'number') {\n data = { ...data, items: data.items || [] };\n }\n setStore(this.store, data);\n }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -846,7 +846,7 @@ export declare namespace JSXBase {
|
|
|
846
846
|
interface DetailsHTMLAttributes<T> extends HTMLAttributes<T> {
|
|
847
847
|
open?: boolean;
|
|
848
848
|
name?: string;
|
|
849
|
-
onToggle?: (event:
|
|
849
|
+
onToggle?: (event: ToggleEvent) => void;
|
|
850
850
|
}
|
|
851
851
|
interface DelHTMLAttributes<T> extends HTMLAttributes<T> {
|
|
852
852
|
cite?: string;
|
|
@@ -1552,6 +1552,13 @@ export declare namespace JSXBase {
|
|
|
1552
1552
|
z?: number | string;
|
|
1553
1553
|
zoomAndPan?: string;
|
|
1554
1554
|
}
|
|
1555
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/ToggleEvent) */
|
|
1556
|
+
interface ToggleEvent extends Event {
|
|
1557
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/ToggleEvent/newState) */
|
|
1558
|
+
readonly newState: string;
|
|
1559
|
+
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/ToggleEvent/oldState) */
|
|
1560
|
+
readonly oldState: string;
|
|
1561
|
+
}
|
|
1555
1562
|
interface DOMAttributes<T> extends JSXAttributes<T> {
|
|
1556
1563
|
slot?: string;
|
|
1557
1564
|
part?: string;
|
|
@@ -1568,6 +1575,10 @@ export declare namespace JSXBase {
|
|
|
1568
1575
|
onCompositionstartCapture?: (event: CompositionEvent) => void;
|
|
1569
1576
|
onCompositionupdate?: (event: CompositionEvent) => void;
|
|
1570
1577
|
onCompositionupdateCapture?: (event: CompositionEvent) => void;
|
|
1578
|
+
onBeforeToggle?: (event: ToggleEvent) => void;
|
|
1579
|
+
onBeforeToggleCapture?: (event: ToggleEvent) => void;
|
|
1580
|
+
onToggle?: (event: ToggleEvent) => void;
|
|
1581
|
+
onToggleCapture?: (event: ToggleEvent) => void;
|
|
1571
1582
|
onFocus?: (event: FocusEvent) => void;
|
|
1572
1583
|
onFocusCapture?: (event: FocusEvent) => void;
|
|
1573
1584
|
onFocusin?: (event: FocusEvent) => void;
|
|
@@ -1586,10 +1597,6 @@ export declare namespace JSXBase {
|
|
|
1586
1597
|
onSubmitCapture?: (event: Event) => void;
|
|
1587
1598
|
onInvalid?: (event: Event) => void;
|
|
1588
1599
|
onInvalidCapture?: (event: Event) => void;
|
|
1589
|
-
onBeforeToggle?: (event: Event) => void;
|
|
1590
|
-
onBeforeToggleCapture?: (event: Event) => void;
|
|
1591
|
-
onToggle?: (event: Event) => void;
|
|
1592
|
-
onToggleCapture?: (event: Event) => void;
|
|
1593
1600
|
onLoad?: (event: Event) => void;
|
|
1594
1601
|
onLoadCapture?: (event: Event) => void;
|
|
1595
1602
|
onError?: (event: Event) => void;
|