@nanoporetech-digital/components 7.4.5 → 7.5.1
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/{algolia-data-7444589a.js → algolia-data-0447757c.js} +2 -2
- package/dist/cjs/{algolia-data-7444589a.js.map → algolia-data-0447757c.js.map} +1 -1
- package/dist/cjs/app-globals-93d8b419.js.map +1 -1
- package/dist/cjs/{component-store-5d69aa2a.js → component-store-6a330cd1.js} +2 -2
- package/dist/cjs/{component-store-5d69aa2a.js.map → component-store-6a330cd1.js.map} +1 -1
- package/dist/cjs/{dom-9d327924.js → dom-756fcdac.js} +2 -2
- package/dist/cjs/{dom-9d327924.js.map → dom-756fcdac.js.map} +1 -1
- package/dist/cjs/{fade-7a47badb.js → fade-2dd9dd8b.js} +6 -4
- package/dist/cjs/fade-2dd9dd8b.js.map +1 -0
- package/dist/cjs/{form-control-574da2db.js → form-control-2d88adb2.js} +2 -2
- package/dist/cjs/{form-control-574da2db.js.map → form-control-2d88adb2.js.map} +1 -1
- package/dist/cjs/{fullscreen-31e27faa.js → fullscreen-5d0422de.js} +3 -3
- package/dist/cjs/{fullscreen-31e27faa.js.map → fullscreen-5d0422de.js.map} +1 -1
- package/dist/cjs/{index-7f89ccce.js → index-7795a8f6.js} +5 -6
- package/dist/cjs/index-7795a8f6.js.map +1 -0
- package/dist/cjs/{index-05605cc8.js → index-b6fa04fa.js} +3 -3
- package/dist/cjs/{index-05605cc8.js.map → index-b6fa04fa.js.map} +1 -1
- package/dist/cjs/index.cjs.js +2 -0
- package/dist/cjs/index.cjs.js.map +1 -1
- package/dist/cjs/{lazyload-77a7f763.js → lazyload-f181cb37.js} +3 -3
- package/dist/cjs/{lazyload-77a7f763.js.map → lazyload-f181cb37.js.map} +1 -1
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/cjs/nano-accordion.cjs.entry.js +2 -2
- package/dist/cjs/nano-alert.cjs.entry.js +3 -3
- package/dist/cjs/nano-algolia-filter.cjs.entry.js +3 -3
- package/dist/cjs/nano-algolia-pagination.cjs.entry.js +2 -2
- package/dist/cjs/nano-algolia-results.cjs.entry.js +2 -2
- package/dist/cjs/nano-algolia.cjs.entry.js +4 -4
- package/dist/cjs/nano-algolia.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-animation.cjs.entry.js +1 -1
- package/dist/cjs/nano-checkbox-group.cjs.entry.js +1 -1
- package/dist/cjs/nano-checkbox.cjs.entry.js +1 -1
- package/dist/cjs/nano-components.cjs.js +3 -3
- package/dist/cjs/nano-components.cjs.js.map +1 -1
- package/dist/cjs/nano-datalist_3.cjs.entry.js +13 -12
- package/dist/cjs/nano-datalist_3.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-date-input.cjs.entry.js +1 -1
- package/dist/cjs/nano-date-picker.cjs.entry.js +1 -1
- package/dist/cjs/nano-details.cjs.entry.js +1 -1
- package/dist/cjs/nano-dialog.cjs.entry.js +4 -4
- package/dist/cjs/nano-drawer.cjs.entry.js +5 -5
- package/dist/cjs/nano-drawer.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-dropdown.cjs.entry.js +5 -5
- package/dist/cjs/nano-dropdown.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-field-validator.cjs.entry.js +2 -2
- package/dist/cjs/nano-file-upload.cjs.entry.js +1 -1
- package/dist/cjs/nano-global-nav-user-profile_3.cjs.entry.js +4 -4
- package/dist/cjs/nano-global-nav-user-profile_3.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-global-nav.cjs.entry.js +2 -2
- package/dist/cjs/nano-global-search-results.cjs.entry.js +1 -1
- package/dist/cjs/nano-grid-item.cjs.entry.js +1 -1
- package/dist/cjs/nano-grid_2.cjs.entry.js +2 -2
- package/dist/cjs/nano-grid_2.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-hero.cjs.entry.js +1 -1
- package/dist/cjs/nano-icon-button_2.cjs.entry.js +1 -1
- package/dist/cjs/nano-icon.cjs.entry.js +1 -1
- package/dist/cjs/nano-input.cjs.entry.js +4 -4
- package/dist/cjs/nano-input.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-intersection-observe.cjs.entry.js +3 -3
- package/dist/cjs/nano-intersection-observe.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-menu-drawer.cjs.entry.js +2 -2
- package/dist/cjs/nano-more-less.cjs.entry.js +1 -1
- package/dist/cjs/nano-overflow-nav.cjs.entry.js +2 -2
- package/dist/cjs/nano-progress-bar.cjs.entry.js +1 -1
- package/dist/cjs/nano-range.cjs.entry.js +1 -1
- package/dist/cjs/nano-rating.cjs.entry.js +8 -7
- package/dist/cjs/nano-rating.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-resize-observe_2.cjs.entry.js +1 -1
- package/dist/cjs/nano-slide.cjs.entry.js +1 -1
- package/dist/cjs/{nano-slides-70182c35.js → nano-slides-612634dc.js} +1084 -16
- package/dist/cjs/nano-slides-612634dc.js.map +1 -0
- package/dist/cjs/nano-slides.cjs.entry.js +2 -2
- package/dist/cjs/nano-sortable.cjs.entry.js +1 -1
- package/dist/cjs/nano-spinner.cjs.entry.js +4 -4
- package/dist/cjs/nano-spinner.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-split-pane.cjs.entry.js +1 -1
- package/dist/cjs/nano-sticker.cjs.entry.js +2 -2
- package/dist/cjs/nano-tab-content.cjs.entry.js +1 -1
- package/dist/cjs/nano-tab-group.cjs.entry.js +5 -5
- package/dist/cjs/nano-tab-group.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-tab.cjs.entry.js +1 -1
- package/dist/cjs/{nano-table-0fdaeb8b.js → nano-table-fb9b584a.js} +16 -16
- package/dist/cjs/nano-table-fb9b584a.js.map +1 -0
- package/dist/cjs/nano-table.cjs.entry.js +3 -3
- package/dist/cjs/page-dots-99dd88f6.js +140 -0
- package/dist/cjs/page-dots-99dd88f6.js.map +1 -0
- package/dist/cjs/{scroll-6abe4d89.js → scroll-772f7d0d.js} +2 -2
- package/dist/cjs/{scroll-6abe4d89.js.map → scroll-772f7d0d.js.map} +1 -1
- package/dist/cjs/{table.worker-431042ce.js → table.worker-99a71d26.js} +5 -5
- package/dist/cjs/table.worker-99a71d26.js.map +1 -0
- package/dist/cjs/{table.worker-5b29550e.js → table.worker-da5412ed.js} +1 -1
- package/dist/collection/collection-manifest.json +1 -1
- package/dist/collection/components/alert/alert.helpers.js.map +1 -1
- package/dist/collection/components/datalist/datalist.js +12 -10
- package/dist/collection/components/datalist/datalist.js.map +1 -1
- package/dist/collection/components/drawer/drawer.css +8 -4
- package/dist/collection/components/dropdown/dropdown.js +5 -5
- package/dist/collection/components/dropdown/dropdown.js.map +1 -1
- package/dist/collection/components/field-validator/field-validator.js +1 -1
- package/dist/collection/components/grid/grid.css +3 -1
- package/dist/collection/components/input/input.css +1 -1
- package/dist/collection/components/intersection-observe/intersection-observe.js +3 -3
- package/dist/collection/components/intersection-observe/intersection-observe.js.map +1 -1
- package/dist/collection/components/rating/rating.js +7 -6
- package/dist/collection/components/rating/rating.js.map +1 -1
- package/dist/collection/components/select/select.css +1 -1
- package/dist/collection/components/slides/lib/js/drag.js +308 -305
- package/dist/collection/components/slides/lib/js/drag.js.map +1 -1
- package/dist/collection/components/slides/lib/js/fade.js +3 -1
- package/dist/collection/components/slides/lib/js/fade.js.map +1 -1
- package/dist/collection/components/slides/lib/js/index.js +6 -3
- package/dist/collection/components/slides/lib/js/index.js.map +1 -1
- package/dist/collection/components/slides/lib/js/player.js +123 -121
- package/dist/collection/components/slides/lib/js/player.js.map +1 -1
- package/dist/collection/components/slides/lib/js/prev-next-button.js +179 -178
- package/dist/collection/components/slides/lib/js/prev-next-button.js.map +1 -1
- package/dist/collection/components/slides/slides.js +7 -7
- package/dist/collection/components/slides/slides.js.map +1 -1
- package/dist/collection/components/sortable/sortable.js +5 -5
- package/dist/collection/components/spinner/spinner.js +5 -5
- package/dist/collection/components/spinner/spinner.js.map +1 -1
- package/dist/collection/components/table/table.js +12 -12
- package/dist/collection/components/table/table.js.map +1 -1
- package/dist/collection/components/table/table.worker.js +4 -5
- package/dist/collection/components/table/table.worker.js.map +1 -1
- package/dist/collection/components/tabs/tab-group.css +3 -0
- package/dist/collection/index.js +2 -0
- package/dist/collection/index.js.map +1 -1
- package/dist/components/algolia-data.js.map +1 -1
- package/dist/components/algolia.js.map +1 -1
- package/dist/components/datalist.js +13 -11
- package/dist/components/datalist.js.map +1 -1
- package/dist/components/dropdown.js +4 -4
- package/dist/components/dropdown.js.map +1 -1
- package/dist/components/fade.js +3 -1
- package/dist/components/fade.js.map +1 -1
- package/dist/components/grid.js +1 -1
- package/dist/components/grid.js.map +1 -1
- package/dist/components/index.js +1 -1
- package/dist/components/index.js.map +1 -1
- package/dist/components/index2.js +3 -4
- package/dist/components/index2.js.map +1 -1
- package/dist/components/input.js +1 -1
- package/dist/components/input.js.map +1 -1
- package/dist/components/nano-drawer.js +1 -1
- package/dist/components/nano-drawer.js.map +1 -1
- package/dist/components/nano-intersection-observe.js +2 -2
- package/dist/components/nano-intersection-observe.js.map +1 -1
- package/dist/components/nano-rating.js +7 -6
- package/dist/components/nano-rating.js.map +1 -1
- package/dist/components/nano-slides.js +1078 -10
- package/dist/components/nano-slides.js.map +1 -1
- package/dist/components/nano-tab-group.js +1 -1
- package/dist/components/nano-tab-group.js.map +1 -1
- package/dist/components/nano-table.js +12 -12
- package/dist/components/nano-table.js.map +1 -1
- package/dist/components/page-dots.js +1 -425
- package/dist/components/page-dots.js.map +1 -1
- package/dist/components/select.js +1 -1
- package/dist/components/select.js.map +1 -1
- package/dist/components/spinner.js +3 -3
- package/dist/components/spinner.js.map +1 -1
- package/dist/components/table.worker.js +1 -1
- package/dist/esm/{algolia-data-6fb6c60b.js → algolia-data-8fc24341.js} +2 -2
- package/dist/esm/{algolia-data-6fb6c60b.js.map → algolia-data-8fc24341.js.map} +1 -1
- package/dist/esm/app-globals-d4ab01f2.js.map +1 -1
- package/dist/esm/{component-store-a0eb3fb6.js → component-store-b798181b.js} +2 -2
- package/dist/esm/{component-store-a0eb3fb6.js.map → component-store-b798181b.js.map} +1 -1
- package/dist/esm/{dom-3db2202b.js → dom-d7f9f24c.js} +2 -2
- package/dist/esm/{dom-3db2202b.js.map → dom-d7f9f24c.js.map} +1 -1
- package/dist/esm/{fade-6d964000.js → fade-4ff5d9de.js} +6 -4
- package/dist/esm/fade-4ff5d9de.js.map +1 -0
- package/dist/esm/{form-control-53135184.js → form-control-812999d0.js} +2 -2
- package/dist/esm/{form-control-53135184.js.map → form-control-812999d0.js.map} +1 -1
- package/dist/esm/{fullscreen-a9c16b35.js → fullscreen-382d7890.js} +3 -3
- package/dist/esm/{fullscreen-a9c16b35.js.map → fullscreen-382d7890.js.map} +1 -1
- package/dist/esm/{index-815d3f98.js → index-3118109b.js} +3 -3
- package/dist/esm/{index-815d3f98.js.map → index-3118109b.js.map} +1 -1
- package/dist/esm/{index-32d24a05.js → index-d7a4a150.js} +5 -6
- package/dist/esm/index-d7a4a150.js.map +1 -0
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/{lazyload-07e752e9.js → lazyload-49b745e4.js} +3 -3
- package/dist/esm/{lazyload-07e752e9.js.map → lazyload-49b745e4.js.map} +1 -1
- package/dist/esm/loader.js +3 -3
- package/dist/esm/nano-accordion.entry.js +2 -2
- package/dist/esm/nano-alert.entry.js +3 -3
- package/dist/esm/nano-algolia-filter.entry.js +3 -3
- package/dist/esm/nano-algolia-pagination.entry.js +2 -2
- package/dist/esm/nano-algolia-results.entry.js +2 -2
- package/dist/esm/nano-algolia.entry.js +4 -4
- package/dist/esm/nano-algolia.entry.js.map +1 -1
- package/dist/esm/nano-animation.entry.js +1 -1
- package/dist/esm/nano-checkbox-group.entry.js +1 -1
- package/dist/esm/nano-checkbox.entry.js +1 -1
- package/dist/esm/nano-components.js +4 -4
- package/dist/esm/nano-components.js.map +1 -1
- package/dist/esm/nano-datalist_3.entry.js +13 -12
- package/dist/esm/nano-datalist_3.entry.js.map +1 -1
- package/dist/esm/nano-date-input.entry.js +1 -1
- package/dist/esm/nano-date-picker.entry.js +1 -1
- package/dist/esm/nano-details.entry.js +1 -1
- package/dist/esm/nano-dialog.entry.js +4 -4
- package/dist/esm/nano-drawer.entry.js +5 -5
- package/dist/esm/nano-drawer.entry.js.map +1 -1
- package/dist/esm/nano-dropdown.entry.js +5 -5
- package/dist/esm/nano-dropdown.entry.js.map +1 -1
- package/dist/esm/nano-field-validator.entry.js +2 -2
- package/dist/esm/nano-file-upload.entry.js +1 -1
- package/dist/esm/nano-global-nav-user-profile_3.entry.js +4 -4
- package/dist/esm/nano-global-nav-user-profile_3.entry.js.map +1 -1
- package/dist/esm/nano-global-nav.entry.js +2 -2
- package/dist/esm/nano-global-search-results.entry.js +1 -1
- package/dist/esm/nano-grid-item.entry.js +1 -1
- package/dist/esm/nano-grid_2.entry.js +2 -2
- package/dist/esm/nano-grid_2.entry.js.map +1 -1
- package/dist/esm/nano-hero.entry.js +1 -1
- package/dist/esm/nano-icon-button_2.entry.js +1 -1
- package/dist/esm/nano-icon.entry.js +1 -1
- package/dist/esm/nano-input.entry.js +4 -4
- package/dist/esm/nano-input.entry.js.map +1 -1
- package/dist/esm/nano-intersection-observe.entry.js +3 -3
- package/dist/esm/nano-intersection-observe.entry.js.map +1 -1
- package/dist/esm/nano-menu-drawer.entry.js +2 -2
- package/dist/esm/nano-more-less.entry.js +1 -1
- package/dist/esm/nano-overflow-nav.entry.js +2 -2
- package/dist/esm/nano-progress-bar.entry.js +1 -1
- package/dist/esm/nano-range.entry.js +1 -1
- package/dist/esm/nano-rating.entry.js +8 -7
- package/dist/esm/nano-rating.entry.js.map +1 -1
- package/dist/esm/nano-resize-observe_2.entry.js +1 -1
- package/dist/esm/nano-slide.entry.js +1 -1
- package/dist/esm/{nano-slides-3feab833.js → nano-slides-c3eb1afe.js} +1084 -16
- package/dist/esm/nano-slides-c3eb1afe.js.map +1 -0
- package/dist/esm/nano-slides.entry.js +2 -2
- package/dist/esm/nano-sortable.entry.js +1 -1
- package/dist/esm/nano-spinner.entry.js +4 -4
- package/dist/esm/nano-spinner.entry.js.map +1 -1
- package/dist/esm/nano-split-pane.entry.js +1 -1
- package/dist/esm/nano-sticker.entry.js +2 -2
- package/dist/esm/nano-tab-content.entry.js +1 -1
- package/dist/esm/nano-tab-group.entry.js +5 -5
- package/dist/esm/nano-tab-group.entry.js.map +1 -1
- package/dist/esm/nano-tab.entry.js +1 -1
- package/dist/esm/{nano-table-dd0b6aa3.js → nano-table-5b495a5e.js} +16 -16
- package/dist/esm/nano-table-5b495a5e.js.map +1 -0
- package/dist/esm/nano-table.entry.js +3 -3
- package/dist/esm/page-dots-986d3b32.js +138 -0
- package/dist/esm/page-dots-986d3b32.js.map +1 -0
- package/dist/esm/{scroll-913c51a0.js → scroll-f373a189.js} +2 -2
- package/dist/esm/{scroll-913c51a0.js.map → scroll-f373a189.js.map} +1 -1
- package/dist/esm/{table.worker-e6e796b0.js → table.worker-36e8d052.js} +5 -5
- package/dist/esm/table.worker-36e8d052.js.map +1 -0
- package/dist/esm/{table.worker-5b29550e.js → table.worker-da5412ed.js} +1 -1
- package/dist/nano-components/{algolia-data-6fb6c60b.js → algolia-data-8fc24341.js} +2 -2
- package/dist/nano-components/{algolia-data-6fb6c60b.js.map → algolia-data-8fc24341.js.map} +1 -1
- package/dist/nano-components/app-globals-d4ab01f2.js.map +1 -1
- package/dist/nano-components/{component-store-a0eb3fb6.js → component-store-b798181b.js} +2 -2
- package/dist/nano-components/{dom-3db2202b.js → dom-d7f9f24c.js} +2 -2
- package/dist/nano-components/fade-4ff5d9de.js +5 -0
- package/dist/nano-components/fade-4ff5d9de.js.map +1 -0
- package/dist/nano-components/{form-control-53135184.js → form-control-812999d0.js} +2 -2
- package/dist/nano-components/{fullscreen-a9c16b35.js → fullscreen-382d7890.js} +2 -2
- package/dist/nano-components/{index-815d3f98.js → index-3118109b.js} +2 -2
- package/dist/nano-components/{index-815d3f98.js.map → index-3118109b.js.map} +1 -1
- package/dist/nano-components/index-d7a4a150.js +5 -0
- package/dist/nano-components/index-d7a4a150.js.map +1 -0
- package/dist/nano-components/index.esm.js +1 -1
- package/dist/nano-components/index.esm.js.map +1 -1
- package/dist/nano-components/{lazyload-07e752e9.js → lazyload-49b745e4.js} +2 -2
- package/dist/nano-components/nano-accordion.entry.js +1 -1
- package/dist/nano-components/nano-alert.entry.js +1 -1
- package/dist/nano-components/nano-algolia-filter.entry.js +1 -1
- package/dist/nano-components/nano-algolia-pagination.entry.js +1 -1
- package/dist/nano-components/nano-algolia-results.entry.js +1 -1
- package/dist/nano-components/nano-algolia.entry.js +1 -1
- package/dist/nano-components/nano-algolia.entry.js.map +1 -1
- package/dist/nano-components/nano-animation.entry.js +1 -1
- package/dist/nano-components/nano-checkbox-group.entry.js +1 -1
- package/dist/nano-components/nano-checkbox.entry.js +1 -1
- package/dist/nano-components/nano-components.esm.js +1 -1
- package/dist/nano-components/nano-components.esm.js.map +1 -1
- package/dist/nano-components/nano-datalist_3.entry.js +1 -1
- package/dist/nano-components/nano-datalist_3.entry.js.map +1 -1
- package/dist/nano-components/nano-date-input.entry.js +1 -1
- package/dist/nano-components/nano-date-picker.entry.js +1 -1
- package/dist/nano-components/nano-details.entry.js +1 -1
- package/dist/nano-components/nano-dialog.entry.js +1 -1
- package/dist/nano-components/nano-drawer.entry.js +1 -1
- package/dist/nano-components/nano-drawer.entry.js.map +1 -1
- package/dist/nano-components/nano-dropdown.entry.js +1 -1
- package/dist/nano-components/nano-dropdown.entry.js.map +1 -1
- package/dist/nano-components/nano-field-validator.entry.js +1 -1
- package/dist/nano-components/nano-file-upload.entry.js +1 -1
- package/dist/nano-components/nano-global-nav-user-profile_3.entry.js +1 -1
- package/dist/nano-components/nano-global-nav-user-profile_3.entry.js.map +1 -1
- package/dist/nano-components/nano-global-nav.entry.js +1 -1
- package/dist/nano-components/nano-global-search-results.entry.js +1 -1
- package/dist/nano-components/nano-grid-item.entry.js +1 -1
- package/dist/nano-components/nano-grid_2.entry.js +1 -1
- package/dist/nano-components/nano-grid_2.entry.js.map +1 -1
- package/dist/nano-components/nano-hero.entry.js +1 -1
- package/dist/nano-components/nano-icon-button_2.entry.js +1 -1
- package/dist/nano-components/nano-icon.entry.js +1 -1
- package/dist/nano-components/nano-input.entry.js +1 -1
- package/dist/nano-components/nano-input.entry.js.map +1 -1
- package/dist/nano-components/nano-intersection-observe.entry.js +1 -1
- package/dist/nano-components/nano-intersection-observe.entry.js.map +1 -1
- package/dist/nano-components/nano-menu-drawer.entry.js +1 -1
- package/dist/nano-components/nano-more-less.entry.js +1 -1
- package/dist/nano-components/nano-overflow-nav.entry.js +1 -1
- package/dist/nano-components/nano-progress-bar.entry.js +1 -1
- package/dist/nano-components/nano-range.entry.js +1 -1
- package/dist/nano-components/nano-rating.entry.js +1 -1
- package/dist/nano-components/nano-rating.entry.js.map +1 -1
- package/dist/nano-components/nano-resize-observe_2.entry.js +1 -1
- package/dist/nano-components/nano-slide.entry.js +1 -1
- package/dist/nano-components/nano-slides-c3eb1afe.js +20 -0
- package/dist/nano-components/nano-slides-c3eb1afe.js.map +1 -0
- package/dist/nano-components/nano-slides.entry.js +1 -1
- package/dist/nano-components/nano-sortable.entry.js +1 -1
- package/dist/nano-components/nano-spinner.entry.js +1 -1
- package/dist/nano-components/nano-spinner.entry.js.map +1 -1
- package/dist/nano-components/nano-split-pane.entry.js +1 -1
- package/dist/nano-components/nano-sticker.entry.js +1 -1
- package/dist/nano-components/nano-tab-content.entry.js +1 -1
- package/dist/nano-components/nano-tab-group.entry.js +1 -1
- package/dist/nano-components/nano-tab-group.entry.js.map +1 -1
- package/dist/nano-components/nano-tab.entry.js +1 -1
- package/dist/nano-components/{nano-table-dd0b6aa3.js → nano-table-5b495a5e.js} +2 -2
- package/dist/nano-components/{nano-table-dd0b6aa3.js.map → nano-table-5b495a5e.js.map} +1 -1
- package/dist/nano-components/nano-table.entry.js +1 -1
- package/dist/nano-components/page-dots-986d3b32.js +5 -0
- package/dist/nano-components/page-dots-986d3b32.js.map +1 -0
- package/dist/nano-components/{scroll-913c51a0.js → scroll-f373a189.js} +2 -2
- package/dist/nano-components/table.worker-36e8d052.js +5 -0
- package/dist/nano-components/{table.worker-5b29550e.js → table.worker-da5412ed.js} +1 -1
- package/dist/themes/nanopore.css +1 -1
- package/dist/themes/nanopore.css.map +1 -1
- package/dist/types/components/alert/alert.helpers.d.ts +1 -1
- package/dist/types/components/datalist/datalist.d.ts +1 -1
- package/dist/types/components/intersection-observe/intersection-observe.d.ts +1 -1
- package/dist/types/components/slides/lib/js/drag.d.ts +2 -1
- package/dist/types/components/slides/lib/js/index.d.ts +0 -3
- package/dist/types/components/slides/lib/js/player.d.ts +2 -1
- package/dist/types/components/slides/lib/js/prev-next-button.d.ts +2 -1
- package/dist/types/components/spinner/spinner.d.ts +1 -1
- package/dist/types/components.d.ts +4 -1408
- package/dist/types/index.d.ts +2 -0
- package/docs-json.json +17 -17
- package/docs-vscode.json +2 -2
- package/hydrate/index.js +709 -63
- package/hydrate/index.mjs +709 -63
- package/package.json +24 -4
- package/themes/nanopore.css +1 -1
- package/themes/nanopore.css.map +1 -1
- package/dist/cjs/fade-7a47badb.js.map +0 -1
- package/dist/cjs/index-7f89ccce.js.map +0 -1
- package/dist/cjs/nano-slides-70182c35.js.map +0 -1
- package/dist/cjs/nano-table-0fdaeb8b.js.map +0 -1
- package/dist/cjs/page-dots-ad7c3b76.js +0 -564
- package/dist/cjs/page-dots-ad7c3b76.js.map +0 -1
- package/dist/cjs/table.worker-431042ce.js.map +0 -1
- package/dist/collection/components/alert/alert-interface.js +0 -2
- package/dist/collection/components/alert/alert-interface.js.map +0 -1
- package/dist/esm/fade-6d964000.js.map +0 -1
- package/dist/esm/index-32d24a05.js.map +0 -1
- package/dist/esm/nano-slides-3feab833.js.map +0 -1
- package/dist/esm/nano-table-dd0b6aa3.js.map +0 -1
- package/dist/esm/page-dots-ca0bbb51.js +0 -562
- package/dist/esm/page-dots-ca0bbb51.js.map +0 -1
- package/dist/esm/table.worker-e6e796b0.js.map +0 -1
- package/dist/nano-components/fade-6d964000.js +0 -5
- package/dist/nano-components/fade-6d964000.js.map +0 -1
- package/dist/nano-components/index-32d24a05.js +0 -5
- package/dist/nano-components/index-32d24a05.js.map +0 -1
- package/dist/nano-components/nano-slides-3feab833.js +0 -10
- package/dist/nano-components/nano-slides-3feab833.js.map +0 -1
- package/dist/nano-components/page-dots-ca0bbb51.js +0 -10
- package/dist/nano-components/page-dots-ca0bbb51.js.map +0 -1
- package/dist/nano-components/table.worker-e6e796b0.js +0 -5
- package/dist/types/components/alert/alert-interface.d.ts +0 -1
- /package/dist/nano-components/{component-store-a0eb3fb6.js.map → component-store-b798181b.js.map} +0 -0
- /package/dist/nano-components/{dom-3db2202b.js.map → dom-d7f9f24c.js.map} +0 -0
- /package/dist/nano-components/{form-control-53135184.js.map → form-control-812999d0.js.map} +0 -0
- /package/dist/nano-components/{fullscreen-a9c16b35.js.map → fullscreen-382d7890.js.map} +0 -0
- /package/dist/nano-components/{lazyload-07e752e9.js.map → lazyload-49b745e4.js.map} +0 -0
- /package/dist/nano-components/{scroll-913c51a0.js.map → scroll-f373a189.js.map} +0 -0
- /package/dist/nano-components/{table.worker-e6e796b0.js.map → table.worker-36e8d052.js.map} +0 -0
- /package/dist/types/builds/{_Jv_MA6J → QRg17M8b}/0/Digital/nano-components/packages/components/.stencil/generators/custom-element-doc-generator.d.ts +0 -0
- /package/dist/types/builds/{_Jv_MA6J → QRg17M8b}/0/Digital/nano-components/packages/components/.stencil/generators/vue/generate-vue-component.d.ts +0 -0
- /package/dist/types/builds/{_Jv_MA6J → QRg17M8b}/0/Digital/nano-components/packages/components/.stencil/generators/vue/index.d.ts +0 -0
- /package/dist/types/builds/{_Jv_MA6J → QRg17M8b}/0/Digital/nano-components/packages/components/.stencil/generators/vue/output-vue.d.ts +0 -0
- /package/dist/types/builds/{_Jv_MA6J → QRg17M8b}/0/Digital/nano-components/packages/components/.stencil/generators/vue/plugin.d.ts +0 -0
- /package/dist/types/builds/{_Jv_MA6J → QRg17M8b}/0/Digital/nano-components/packages/components/.stencil/generators/vue/types.d.ts +0 -0
- /package/dist/types/builds/{_Jv_MA6J → QRg17M8b}/0/Digital/nano-components/packages/components/.stencil/generators/vue/utils.d.ts +0 -0
- /package/dist/types/builds/{_Jv_MA6J → QRg17M8b}/0/Digital/nano-components/packages/components/.stencil/stencil.config.d.ts +0 -0
- /package/dist/types/builds/{_Jv_MA6J → QRg17M8b}/0/Digital/nano-components/packages/components/.stencil/stencil.config.prod.d.ts +0 -0
- /package/dist/types/builds/{_Jv_MA6J → QRg17M8b}/0/Digital/nano-components/packages/components/.stencil/testing/mocks/intersection-observer.d.ts +0 -0
- /package/dist/types/builds/{_Jv_MA6J → QRg17M8b}/0/Digital/nano-components/packages/components/.stencil/wdio.conf.d.ts +0 -0
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"table.js","sourceRoot":"","sources":["../../../../src/components/table/table.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,IAAI,EACJ,CAAC,EAED,OAAO,EACP,IAAI,EACJ,KAAK,EACL,KAAK,EACL,QAAQ,EACR,KAAK,EAEL,MAAM,GACP,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EACL,aAAa,EACb,WAAW,EACX,cAAc,EACd,YAAY,EACZ,SAAS,EACT,WAAW,GAEZ,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAKtD,MAAM,WAAW,GAAG,KAAK,CAAC;AAE1B,SAAS,OAAO,CAAC,IAAY,EAAE,MAAe,KAAK;IACjD,IAAI,CAAC,WAAW,IAAI,CAAC,WAAW;QAAE,OAAO;IACzC,IAAI,GAAG,EAAE,CAAC;QACR,WAAW,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;QAChC,WAAW,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,EAAE,KAAK,GAAG,IAAI,CAAC,CAAC;QACzD,MAAM,OAAO,GAAG,WAAW,EAAE,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACpD,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACjE,CAAC;SAAM,CAAC;QACN,WAAW,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IACpC,CAAC;AACH,CAAC;AAED,IAAI,EAAE,GAAG,CAAC,CAAC;AACX;;;;;;;;;;;;;GAaG;AAKH,MAAM,OAAO,KAAK;IAChB;QACE,IAAI,CAAC,kBAAkB,GAAG,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;KAC5E;IACD,aAAa;IAEb,QAAQ;IAER;;oGAEgG;IACxF,cAAc,CAGM;IAE5B,yEAAyE;IACjE,IAAI,GAAqB,OAAO,CAAC;IAEzC;qEACiE;IACzD,OAAO,CAAS;IAExB,iCAAiC;IACzB,WAAW,GAAY,KAAK,CAAC;IAErC;;;;4DAIwD;IAChD,OAAO,GAAY,SAAS,CAAC;IAErC,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC;IAC1E,CAAC;IACD,IAAI,QAAQ,CAAC,CAAU;QACrB,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS;YAAE,OAAO;QACvC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;IAC7B,CAAC;IACO,kBAAkB,CAAC,CAAU;QACnC,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;IAC3B,CAAC;IACQ,eAAe,GAAG,IAAI,CAAC;IAEhC,yFAAyF;IACjF,eAAe,GAAG,CAAC,CAAC;IAE5B,qCAAqC;IAC7B,IAAI,CAE8B;IAG1C,gBAAgB;QACd,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACf,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACrB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;YAC7C,MAAM,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAEpC,mBAAmB;YACnB,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;YACzB,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;YACtB,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;YAExB,IAAI,CAAC,IAAI,CAAC,OAAO;gBACf,qBAAqB,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,wBAAwB,EAAE,CAAC,CAAC;YAC/D,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;YACtB,IAAI,IAAI,CAAC,kBAAkB;gBAAE,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE,CAAC;QACpE,CAAC,CAAC,CAAC;IACL,CAAC;IAED,yDAAyD;IAChC,OAAO,GAAyC,EAAE,CAAC;IAG5E,KAAK,CAAC,gBAAgB;QACpB,MAAM,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9C,IAAI,IAAI,CAAC,OAAO;YAAE,IAAI,CAAC,UAAU,EAAE,CAAC;IACtC,CAAC;IAED,0CAA0C;IAClC,UAAU,GAAgC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IAEpE,oCAAoC;IAC5B,SAAS,CAAyB;IAE1C,0CAA0C;IAClC,UAAU,GAAgC,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;IAEvE,4CAA4C;IACpC,UAAU,GAAG,KAAK,CAAC;IAE3B;;;;sDAIkD;IAC1C,QAAQ,GAAG,EAAE,CAAC;IAEtB,4EAA4E;IAC5E,IACI,YAAY;QACd,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;IAC5B,CAAC;IAED,qCAAqC;IAC7B,UAAU,CAAS;IAE3B;;;;4EAIwE;IAChE,cAAc,CAEgB;IAEtC;;;;4EAIwE;IAChE,YAAY,CAGkB;IAEtC;;;;OAIG;IACK,WAAW,GAAG,IAAI,CAAC;IAG3B,sBAAsB;QACpB,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;IAED;;;;OAIG;IACK,iBAAiB,GAAW,CAAC,CAAC;IAGtC,8BAA8B;QAC5B,IAAI,CAAC,SAAS,EAAE,CAAC;IACnB,CAAC;IAED,sDAAsD;IACtD,IACI,cAAc;QAChB,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,+DAA+D;IACtD,YAAY,CAAe;IAEpC;;OAEG;IACM,oBAAoB,CAG1B;IAEH;oDACgD;IACvC,iBAAiB,CAGvB;IAEH,qCAAqC;IAC5B,gBAAgB,CAGtB;IAEH;qDACiD;IACxC,mBAAmB,CAAiD;IAE7E,qCAAqC;IAC5B,kBAAkB,CAAiD;IAE5E;sDACkD;IACzC,mBAAmB,CAAiC;IAE7D,kDAAkD;IACzC,kBAAkB,CAAiC;IAE5D;sDACkD;IACzC,iBAAiB,CAAiC;IAE3D;yDACqD;IAErD,KAAK,CAAC,YAAY;QAChB,MAAM,GAAG,GAAI,IAAI,CAAC,OAA2C,CAAC,IAAI,CAChE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CACjB,CAAC;QACF,IAAI,CAAC,GAAG;YAAE,OAAO;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;IAED;yDACqD;IAErD,KAAK,CAAC,OAAO,CAAC,MAAuB,EAAE,KAAuB;QAC5D,MAAM,GAAG,GAAI,IAAI,CAAC,OAA2C,CAAC,IAAI,CAChE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CACzB,CAAC;QACF,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,GAAG,MAAM,CAAC,CAAC;QAC/D,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;IAED;yDACqD;IAErD,KAAK,CAAC,YAAY;QAChB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAClB,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;IAC5B,CAAC;IAED;;;;OAIG;IAEH,KAAK,CAAC,UAAU,CAAC,OAA4B,EAAE,WAAoB,IAAI;QACrE,IAAI,CAAC,QAAQ;YAAE,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QACjC,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC7C,CAAC;IAED;;;OAGG;IAEH,KAAK,CAAC,aAAa,CAAC,WAA8B;QAChD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACzE,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;IAC5B,CAAC;IAED;;;OAGG;IAEH,KAAK,CAAC,SAAS,CAAC,GAAuB,EAAE,QAAgB;QACtD,IAAI,CAAC,IAAqC,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;QACrE,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAED,QAAQ;IACR,wCAAwC;IACxC,yEAAyE;IAEzE,MAAM;IACN,0CAA0C;IAC1C,2DAA2D;IAC3D,gFAAgF;IAChF,iDAAiD;IACjD,yCAAyC;IACzC,kCAAkC;IAClC,MAAM;IACN,aAAa;IACb,+EAA+E;IAC/E,uCAAuC;IACvC,gEAAgE;IAEhE,wDAAwD;IACxD,mDAAmD;IACnD,OAAO;IAEP,qGAAqG;IAErG,4BAA4B;IAC5B,eAAe;IAEf,6CAA6C;IAC7C,yFAAyF;IACzF,gCAAgC;IAChC,uCAAuC;IAEvC,yCAAyC;IACzC,KAAK;IAEL,gBAAgB;IAEL,IAAI,CAAuB;IAC9B,QAAQ,GAAG,MAAM,GAAG,EAAE,EAAE,CAAC;IACzB,KAAK,CAAc;IACnB,OAAO,GAAwB,EAAE,CAAC;IAClC,cAAc,GAAG,IAAI,CAAC;IACtB,WAAW,GAAG,EAAE,CAAC;IACjB,QAAQ,CAAmB;IAC3B,YAAY,CAAc;IAC1B,eAAe,CAAc;IAC7B,eAAe,CAAuB;IACtC,kBAAkB,CAAkB;IAE5C,wBAAwB;IAExB;yCACqC;IAC5B,MAAM,GAAuB,EAAE,CAAC;IAChC,YAAY,GAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAEjC,aAAa,GAAG,CAAC,CAAC;IAClB,aAAa,CAA4B;IACzC,YAAY,GAA6C,EAAE,CAAC;IAEpE,2DAA2D;IAC3D,IAAY,UAAU,CAAC,EAA2B;QAChD,IAAI,CAAC,EAAE;YAAE,OAAO;QAChB,MAAM,eAAe,GAAG,EAAE,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAC;QAC1D,IAAI,CAAC,aAAa;YAChB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,GAAG,eAAe,CAAC,GAAG,CAAC;gBAChD,CAAC,CAAC,IAAI,CAAC,aAAa;gBACpB,CAAC,CAAC,eAAe,CAAC;QACtB,IAAI,CAAC,UAAU;YACb,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,qBAAqB,EAAE,CAAC,MAAM,IAAI,IAAI,CAAC,UAAU,CAAC;IAC9E,CAAC;IAEO,UAAU,GAAG,CAAC,CAAC;IAEvB,IAAY,YAAY;QACtB,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED,IAAY,YAAY,CAAC,GAAgB;QACvC,IAAI,GAAG,KAAK,IAAI,CAAC,aAAa;YAAE,OAAO;QAEvC,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,CAAC,IAAI,CAAC,aAAa,KAAK,QAAQ,CAAC,eAAe;gBAC9C,CAAC,CAAC,QAAQ;gBACV,CAAC,CAAC,IAAI,CAAC,aAAa,CACrB,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QACtD,CAAC;QACD,CAAC,GAAG,KAAK,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,gBAAgB,CAClE,QAAQ,EACR,IAAI,CAAC,aAAa,CACnB,CAAC;QACF,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC;IAC3B,CAAC;IAEO,aAAa,CAAc;IAEnC,6DAA6D;IAC7D,IAAY,iBAAiB;QAC3B,OAAO,IAAI,CAAC,kBAAkB,CAAC;IACjC,CAAC;IAED,IAAY,iBAAiB,CAAC,UAAU;QACtC,IAAI,IAAI,CAAC,kBAAkB,KAAK,UAAU;YAAE,OAAO;QAEnD,IAAI,CAAC,kBAAkB,GAAG,UAAU,CAAC;QAErC,0BAA0B;QAC1B,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;YAC7B,KAAK,EAAE,UAAU;YACjB,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC,MAAM;SACvC,CAAC,CAAC;IACL,CAAC;IAEO,kBAAkB,CAAC;IAE3B,QAAQ;IAER,IAAY,OAAO;QACjB,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IACD,IAAY,OAAO,CAAC,KAAc;QAChC,IAAI,KAAK,KAAK,IAAI,CAAC,QAAQ;YAAE,OAAO;QACpC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,IAAI,IAAI,CAAC,OAAO;YAAE,qBAAqB,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;IACpE,CAAC;IACO,QAAQ,GAAG,KAAK,CAAC;IAEzB,gBAAgB;IAEhB,YAAY;IAEJ,WAAW;QACjB,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;QAClC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpB,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;gBAC3C,IAAI,KAAK;oBAAE,KAAK,CAAC,cAAc,EAAE,CAAC;gBAClC,oCAAoC;YACtC,CAAC;YAAC,OAAO,EAAE,EAAE,CAAC,CAAA,CAAC;QACjB,CAAC;QACD,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;IAC3B,CAAC;IAED;;;;;OAKG;IACK,SAAS,GAAG,KAAK,EACvB,KAAuB,EACvB,MAAuB,EACvB,OAAqB,EACrB,EAAE;QACF,oBAAoB;QACpB,IAAI,IAAI,CAAC,WAAW,KAAK,KAAK,GAAG,GAAG,GAAG,MAAM;YAAE,OAAO;QAEtD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QACzE,IAAI,SAAS,CAAC,gBAAgB;YAAE,OAAO;QACvC,OAAO,CAAC,MAAM,CAAC,CAAC;QAChB,IAAI,CAAC,WAAW,GAAG,KAAK,GAAG,GAAG,GAAG,MAAM,CAAC;QAExC,uDAAuD;QACvD,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAE1B,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;gBAEnD,4DAA4D;gBAC5D,6CAA6C;gBAC7C,kDAAkD;gBAClD,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;oBACjB,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;oBACjC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;oBACtB,OAAO;gBACT,CAAC;YACH,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,0CAA0C;gBAC1C,2BAA2B;gBAC3B,OAAO,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC;gBACtC,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;gBACtB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;gBACtB,OAAO;YACT,CAAC;QACH,CAAC;QAED,IAAI,CAAC;YACH,MAAM,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;YAC1C,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACnC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;YAC/B,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;QACxB,CAAC;gBAAS,CAAC;YACT,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM;gBAAE,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QAChD,CAAC;IACH,CAAC,CAAC;IAEF;;;;OAIG;IACK,YAAY,CAAC,KAAuB,EAAE,MAAuB;QACnE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACpC,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM;gBAAE,OAAO,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC;YAC9C,OAAO,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QAC/B,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QACtD,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACxB,CAAC;IAEO,KAAK,CAAC,WAAW;QACvB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,MAAM,SAAS,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;QAC3E,IAAI,SAAS,CAAC,gBAAgB;YAAE,OAAO;QACvC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAElB,yDAAyD;QACzD,IAAI,CAAC,WAAW,EAAE,CAAC;QAEnB,IAAI,CAAC;YACH,MAAM,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YAC9C,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;YACxD,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC1B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;QACnC,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACxB,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,WAAW,CACvB,OAA6B,EAC7B,WAAoB,IAAI;QAExB,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,QAAQ,EAAE,CAAC;gBACb,IAAI,CAAC,OAAO,GAAG;oBACb,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CACpB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,CACjD;oBACD,GAAG,OAAO;iBACX,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;YACzB,CAAC;QACH,CAAC;QAED,IAAI,IAAI,CAAC,cAAc,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC;YAAE,OAAO;QAEjE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,MAAM,SAAS,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QAC3E,IAAI,SAAS,CAAC,gBAAgB;YAAE,OAAO;QACvC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAClB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEnD,yDAAyD;QACzD,IAAI,CAAC,WAAW,EAAE,CAAC;QAEnB,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAEpD,8DAA8D;gBAC9D,6CAA6C;gBAC7C,mDAAmD;gBACnD,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;oBACjB,IAAI,CAAC,cAAc,EAAE,CAAC;oBACtB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;oBACtB,OAAO;gBACT,CAAC;YACH,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,0CAA0C;gBAC1C,2BAA2B;gBAC3B,OAAO,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC,CAAC,CAAC;gBACxC,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;gBACzB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;gBACtB,OAAO;YACT,CAAC;QACH,CAAC;QAED,IAAI,CAAC;YACH,MAAM,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YAC3C,IAAI,CAAC,cAAc,EAAE,CAAC;QACxB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;QACnC,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACxB,CAAC;IACH,CAAC;IAEO,cAAc;QACpB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACpC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;YAC5D,2BAA2B;YAC3B,4CAA4C;YAC5C,sBAAsB;YACtB,IACE,OAAO;gBACP,CAAC,CAAC,OAAO,OAAO,CAAC,MAAM,KAAK,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;oBAC7D,OAAO,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC;gBAEtC,CAAC,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;YAC5B,kCAAkC;YAClC,0CAA0C;iBACrC,IACH,CAAC,CAAC,CAAC,MAAM,KAAK,IAAI,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC;gBAC7C,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,OAAO,CAAC,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;gBAEjE,CAAC,CAAC,MAAM,GAAG,SAAS,CAAC;YAEvB,OAAO,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QACxD,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED,uEAAuE;IAC/D,WAAW,CAAC,OAAqB;QACvC,MAAM,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,cAAc,CAAC;QAChE,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC;QAC7C,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,cAAc,GAAG,MAAM,CAAC;QAEhD,IAAI,IAAI,CAAC,YAAY,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,CAAC,EAAE,CAAC;YAC/D,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;QAC7B,CAAC;QACD,IAAI,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,CAAC;YACtC,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;QAEpE,IAAI,OAAO;YAAE,IAAI,CAAC,YAAY,CAAC,UAAU,GAAG,OAAO,CAAC;QAEpD,IAAI,eAAe;YACjB,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,cAAc,GAAG,eAAe,CAAC;QAE3D,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAEO,iBAAiB;QACvB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,QAAQ,CAAC,GAAG,EAAE;gBACZ,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CACvC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,GAAG,YAAY,YAAY,CAAC,CAC5D,CAAC;gBACF,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;OAIG;IACK,wBAAwB;QAC9B,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM;YAAE,OAAO;QACxC,OAAO,CAAC,WAAW,CAAC,CAAC;QAErB,MAAM,iBAAiB,GAAG,KAAK,IAAI,EAAE;YACnC,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC/B,IAAI,IAAI,CAAC,UAAU;gBAAE,OAAO,IAAI,CAAC;YACjC,OAAO,KAAK,CAAC;QACf,CAAC,CAAC;QAEF,MAAM,eAAe,GAAkB,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7D,iBAAiB,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;gBACvC,IAAI,KAAK;oBAAE,OAAO,EAAE,CAAC;qBAChB,CAAC;oBACJ,+CAA+C;oBAC/C,qCAAqC;oBACrC,MAAM,QAAQ,GAAG,IAAI,oBAAoB,CACvC,KAAK,IAAI,EAAE;wBACT,IAAI,MAAM,iBAAiB,EAAE,EAAE,CAAC;4BAC9B,OAAO,EAAE,CAAC;4BACV,QAAQ,CAAC,UAAU,EAAE,CAAC;wBACxB,CAAC;oBACH,CAAC,EACD,EAAE,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,CAC5B,CAAC;oBACF,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAClC,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,sBAAsB;QACtB,eAAe,CAAC,IAAI,CAAC,GAAG,EAAE;YACxB,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;YAC3B,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YACtB,qBAAqB,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;IACL,CAAC;IAED,qCAAqC;IAC7B,KAAK,CAAC,UAAU;QACtB,IAAI,CAAC,OAAO,GAAI,IAAI,CAAC,OAA2C;aAC7D,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC;aAC1D,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACT,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;YAC3B,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;QAC1B,CAAC,CAAC,CAAC;QAEL,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QAC3B,CAAC;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YACxB,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QAC3B,CAAC;QACD,aAAa;QACb,MAAM,GAAG,GAAI,IAAI,CAAC,OAA2C,CAAC,IAAI,CAChE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CACjB,CAAC;QACF,IAAI,GAAG,EAAE,CAAC;YACR,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;QAC5C,CAAC;QACD,IAAI,IAAI,CAAC,kBAAkB;YAAE,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE,CAAC;IACpE,CAAC;IAED;;OAEG;IACK,SAAS;QACf,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;QACzC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YAClB,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;YACjB,OAAO;QACT,CAAC;QAED,OAAO,CAAC,WAAW,CAAC,CAAC;QACrB,wBAAwB;QACxB,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,MAAM,CAAC,GACL,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC,MAAM;YACnC,CAAC,CAAC,IAAI,CAAC,iBAAiB;YACxB,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;QACnB,IAAI,IAAI,GAAyB,EAAE,CAAC;QACpC,MAAM,MAAM,GAAuB,EAAE,CAAC;QAEtC,0BAA0B;QAC1B,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YACpB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;YAE/D,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;gBAC5B,oCAAoC;gBACpC,oBAAoB;gBACpB,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;gBACxE,IAAI,GAAG,EAAE,CAAC;YACZ,CAAC;QACH,CAAC;QAED,oBAAoB;QACpB,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1E,CAAC;QAED,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED;;;;;;;OAOG;IACK,cAAc,CAAC,UAAkB;QACvC,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;YAC7B,MAAM,iBAAiB,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAC9C,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,UAAU,KAAK,UAAU,CACrC,CAAC;YACF,IAAI,iBAAiB,IAAI,iBAAiB,CAAC,MAAM;gBAC/C,OAAO,iBAAiB,CAAC,MAAM,CAAC;QACpC,CAAC;QACD,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;QACxD,IAAI,WAAW,KAAK,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACxD,OAAO,IAAI,CAAC,aAAa,CAAC;QAC5B,CAAC;QACD,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC;IAC/D,CAAC;IAED,+DAA+D;IACvD,cAAc;QACpB,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE;YACvC,MAAM,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;YAC1C,IAAI,CAAC,EAAE;gBAAE,OAAO;YAEhB,QAAQ,CAAC,GAAG,EAAE;gBACZ,IAAI,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,YAAY,YAAY,CAAC;oBAAE,OAAO;gBAE/D,MAAM,MAAM,GAAG,EAAE,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAC;gBACjD,0CAA0C;gBAC1C,yBAAyB;gBACzB,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CACxC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,UAAU,KAAK,UAAU,CACrC,CAAC;gBACF,IAAI,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC;oBAChB,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;gBACrD,CAAC;;oBAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;YACxD,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;OAIG;IACK,aAAa,GAAG,GAAG,EAAE;QAC3B,IAAI,SAAS,GAAW,CAAC,CAAC;QAE1B,OAAO,CAAC,eAAe,CAAC,CAAC;QACzB,mDAAmD;QACnD,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,OAAO;QAC9D,IAAI,IAAI,CAAC,iBAAiB,KAAK,SAAS;YAAE,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;QAErE,QAAQ,CAAC,GAAG,EAAE;YACZ,SAAS;gBACP,OAAO,IAAI,CAAC,YAAY,CAAC,SAAS,KAAK,WAAW;oBAChD,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS;oBAC7B,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;YACrB,SAAS,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;YAEjC,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBAC5B,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC;oBAC/B,CAAC,EACC,OAAO,IAAI,CAAC,YAAY,CAAC,UAAU,KAAK,WAAW;wBACjD,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU;wBAC9B,CAAC,CAAC,MAAM,CAAC,OAAO;oBACpB,CAAC,EAAE,SAAS;iBACb,CAAC,CAAC;YACL,CAAC;YAED,IAAI,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;YAC3C,IAAI,UAAU,GAAG,CAAC,CAAC;YACnB,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;YAEpC,OAAO,UAAU,GAAG,QAAQ,IAAI,SAAS,IAAI,gBAAgB,EAAE,CAAC;gBAC9D,gBAAgB,IAAI,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;gBAEpD,IAAI,SAAS,GAAG,gBAAgB,EAAE,CAAC;oBACjC,MAAM,eAAe,GAAG;wBACtB,UAAU;wBACV,UAAU,GAAG,CAAC;wBACd,+BAA+B;qBAChC,CAAC;oBACF,IAAI,eAAe,CAAC,QAAQ,EAAE,KAAK,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,EAAE,CAAC;wBAChE,IAAI,CAAC,YAAY,GAAG,eAAe,CAAC;oBACtC,CAAC;oBACD,IAAI,CAAC,iBAAiB,GAAG,UAAU,CAAC;gBACtC,CAAC;gBACD,UAAU,EAAE,CAAC;YACf,CAAC;YACD,OAAO,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,8BAA8B;IACtB,YAAY;QAClB,8BAA8B;QAC9B,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,EAAE,CAAC;YAClE,OAAO,CAAC,KAAK,CACX,2EAA2E,CAC5E,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,kBAAkB,GAAG,CAC3B,CAA6D,EAC7D,EAAE;QACF,IAAI,CAAC,eAAe,CAAC,SAAS,GAAG,EAAE,CAAC;QAEpC,IAAI,OAAO,GAAa,CAAC,GAAG,YAAY,QAAQ,CAAC,CAAC;QAClD,IAAI,CAAC,CAAC,MAAM,EAAE,SAAS;YACrB,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC;QAE3D,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACtE,CAAC,CAAC;IAEF;kCAC8B;IACtB,kBAAkB;QACxB,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,OAAO;QAE5D,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC;YAClC,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;QACnC,CAAC;QACD,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,eAAe,GAAG,IAAI,oBAAoB,CACzD,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;YACN,IAAI,CAAC,CAAC,cAAc;gBAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;;gBAC1D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC;QACjD,CAAC,EACD,EAAE,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,SAAS,EAAE,CAAC,EAAE,CAC1C,CAAC,CAAC;QACH,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IAED,sBAAsB;IAEtB,KAAK,CAAC,iBAAiB;QACrB,OAAO,CAAC,MAAM,CAAC,CAAC;QAChB,eAAe;QACf,IAAI,CAAC,KAAK,GAAG,MAAM,aAAa,CAC9B,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,OAAO,CACb,CAAC;QACF,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;YAC3C,IAAI,CAAC,aAAa,EAAE,CAAC;QACvB,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;QAEzD,iCAAiC;QACjC,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,IAAI,CAAC,YAAY,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChD,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC5B,CAAC;IAED,iBAAiB;QACf,IAAI,CAAC,YAAY,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChD,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC5B,CAAC;IAED,gBAAgB;QACd,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAChC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC7B,IAAI,CAAC,kBAAkB,GAAG,IAAI,eAAe,CAC3C,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,YAAY,CAClB,CAAC;QACJ,CAAC;IACH,CAAC;IAED,qBAAqB,CAAC,OAAO,EAAE,OAAO,EAAE,SAAsB;QAC5D,oEAAoE;QACpE,0DAA0D;QAC1D,wCAAwC;QACxC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC;YAAE,OAAO,KAAK,CAAC;QAE1D,IAAI,WAAW;YAAE,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC7D,CAAC;IAED,mBAAmB;QACjB,OAAO,CAAC,QAAQ,CAAC,CAAC;IACpB,CAAC;IAED,kBAAkB;QAChB,IAAI,CAAC,iBAAiB,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;QAC3D,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED,oBAAoB;QAClB,IAAI,CAAC,IAAI,CAAC,eAAe;YAAE,OAAO;QAClC,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC;QAClC,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;QAEjC,CAAC,IAAI,CAAC,YAAY,KAAK,QAAQ,CAAC,eAAe;YAC7C,CAAC,CAAC,QAAQ;YACV,CAAC,CAAC,IAAI,CAAC,YAAY,CACpB,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IACtD,CAAC;IAED,MAAM;QACJ,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;QAExB,OAAO,CACL,EAAC,IAAI;YACH,4DACE,KAAK,EAAE,GAAG,YAAY,cAAc,EACpC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,aAG/B;YAEN,4EACE,MAAM,EAAC,kBAAkB,EACzB,KAAK,EAAC,OAAO,EACb,uBAAuB,EAAE,IAAI,CAAC,kBAAkB,EAChD,YAAY,EAAE,GAAG,EAAE;oBACjB,IAAI,IAAI,CAAC,kBAAkB;wBAAE,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,CAAC;gBAClE,CAAC,GACoB;YAEvB,4DACE,KAAK,EAAE,GAAG,YAAY,cAAc,EACpC,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,eAAe,GAAG,GAAG,CAAC,qBACzB,qBAAqB,GAAG,IAAI,CAAC,QAAQ,EACtD,QAAQ,EAAE,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS;gBAEhD,0EACE,aAAa,QACb,KAAK,EAAE;wBACL,CAAC,GAAG,YAAY,gBAAgB,CAAC,EAAE,IAAI;wBACvC,CAAC,GAAG,YAAY,sBAAsB,CAAC,EAAE,IAAI,CAAC,QAAQ;qBACvD,GACD;gBACF,8DACE,IAAI,EAAE,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,mBAChC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,mBACjC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EACrD,KAAK,EAAE,GAAG,YAAY,EAAE,EACxB,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,EACnC,EAAE,EAAE,aAAa,GAAG,IAAI,CAAC,QAAQ;oBAEjC,gEACE,KAAK,EAAE;4BACL,CAAC,GAAG,YAAY,WAAW,CAAC,EAAE,IAAI;4BAClC,CAAC,GAAG,YAAY,iBAAiB,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW;yBACtD,EACD,EAAE,EAAE,qBAAqB,GAAG,IAAI,CAAC,QAAQ;wBAEzC,6DAAM,IAAI,EAAC,SAAS,IAAE,IAAI,CAAC,OAAO,CAAQ,CAClC;oBAGV;wBACE,EAAC,gBAAgB,qDAAC,WAAW,EAAE,IAAI,CAAC,UAAU,IAC3C,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC;4BACjD,EAAC,YAAY,IACX,MAAM,EAAE,QAAQ,EAChB,YAAY,EAAE,IAAI,CAAC,UAAU,EAC7B,iBAAiB,EAAE,IAAI,CAAC,SAAS,EACjC,QAAQ,EAAE;oCACR,QAAQ,EAAE,IAAI,CAAC,WAAW;iCAC3B,GACD;yBACH,CAAC,CACe,CACb;oBAEP,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CACvC,8DAAO,KAAK,EAAE,GAAG,YAAY,YAAY,YAAY,WAAW,IAC7D,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CACvC,cACG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAClC,CAAC,SAAS,EAAE,QAAQ,EAAE,EAAE,CAAC,CACvB,EAAC,SAAS,IACR,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,aAAa,EAAE,GAAG,EAAE,CAAC,wBAAiB,GACtC,CACH,CACF,CACE,CACN,CAAC,CACI,CACT;oBAED,2DAAI,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM;wBACjD,2DACE,KAAK,EAAE,GAAG,YAAY,MAAM,EAC5B,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM;4BAE/C,4DAAK,KAAK,EAAC,0DAA0D;gCACnE,6DAAM,IAAI,EAAC,YAAY,uBAAwB,CAC3C,CACH,CACF;oBAGJ,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,CAAC,CACtC,aACE,GAAG,EAAE,KAAK,CAAC,MAAM,EACjB,EAAE,EAAE,SAAS,IAAI,CAAC,QAAQ,IAAI,UAAU,EAAE,EAC1C,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE;4BACV,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;wBAC9B,CAAC,EACD,KAAK,EAAE;4BACL,CAAC,GAAG,YAAY,YAAY,CAAC,EAC3B,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC;4BACzC,CAAC,GAAG,YAAY,UAAU,CAAC,EACzB,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC;yBACzC,IAEA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CACxC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;wBACxB,MAAM,QAAQ,GACZ,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;wBACtD,OAAO,CACL,EAAC,QAAQ,IACP,WAAW,EAAE,IAAI,CAAC,SAAS,EAC3B,QAAQ,EAAE,GAAG,EACb,QAAQ,EAAE,QAAQ,IAEjB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAClC,CAAC,SAAS,EAAE,QAAQ,EAAE,EAAE,CAAC,CACvB,EAAC,SAAS,IACR,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,GAClB,CACH,CACF,CACQ,CACZ,CAAC;oBACJ,CAAC,CAAC,CACH,CAAC,CAAC,CAAC,CACF,UAAI,KAAK,EAAE,GAAG,YAAY,mBAAmB;wBAC3C,UACE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAC/C,KAAK,EAAE;gCACL,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,GAAG,IAAI;6BAC/C,GACD,CACC,CACN,CACK,CACT,CAAC;oBAGD,IAAI,CAAC,UAAU,IAAI,CAClB;wBACE,EAAC,gBAAgB,qDAAC,WAAW,EAAE,IAAI,CAAC,UAAU,IAC3C,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC;4BACjD,EAAC,YAAY,IACX,MAAM,EAAE,QAAQ,EAChB,YAAY,EAAE,IAAI,CAAC,UAAU,EAC7B,iBAAiB,EAAE,IAAI,CAAC,SAAS,EACjC,QAAQ,EAAE;oCACR,QAAQ,EAAE,IAAI,CAAC,WAAW;iCAC3B,GACD;yBACH,CAAC,CACe,CACb,CACT,CACK;gBAEP,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CACvB,qEACE,IAAI,EAAC,QAAQ,EACb,KAAK,EAAE;wBACL,CAAC,GAAG,YAAY,WAAW,CAAC,EAAE,IAAI;wBAClC,CAAC,GAAG,YAAY,iBAAiB,CAAC,EAAE,IAAI,CAAC,QAAQ;qBAClD,GACD,CACH,CACG,CACD,CACR,CAAC;IACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import {\n Component,\n Prop,\n h,\n ComponentInterface,\n Element,\n Host,\n Watch,\n State,\n readTask,\n Event,\n EventEmitter,\n Method,\n} from '@stencil/core';\nimport { cyrb53 } from '../../utils/math';\nimport { debounce } from '../../utils/throttle';\nimport { findScrollParent } from '../../utils/scroll-parent';\nimport { TableColHead } from './table.header';\nimport { TableRow, TableHeadFootRow } from './table.row';\nimport { TableCell } from './table.cell';\nimport { CSSNAMESPACE } from './table.constants';\nimport {\n generateStore,\n storeSearch,\n storeSetConfig,\n storeSetData,\n storeSort,\n storeFilter,\n TableStores,\n} from './table.store';\nimport { isInViewport } from './table.utils';\nimport { TablePinService } from './table.pin-service';\nimport type { TableTypes } from './table-interface';\nimport type { ResizeStateChangeEventDetail } from '../resize-observe/resize-observe-interface';\nimport type { NanoResizeObserveCustomEvent } from '../../components';\n\nconst measurePerf = false;\n\nfunction perMark(name: string, end: boolean = false) {\n if (!performance || !measurePerf) return;\n if (end) {\n performance?.mark('end' + name);\n performance?.measure(name, 'start' + name, 'end' + name);\n const entries = performance?.getEntriesByName(name);\n console.info(entries[entries.length ? entries.length - 1 : 0]);\n } else {\n performance?.mark('start' + name);\n }\n}\n\nlet id = 0;\n/**\n * A performant, accessible and semantic (uses real html `<table />`, `<tr />` etc) table and data-grid solution.\n *\n *- Built-in search\n *- Built-in column filter\n *- Built-in column sort\n *- Easily swap in API / async based search / filter & sort\n *- Pin headers, footers, rows, columns\n *- Add custom rendering at every level\n *- Add custom properties at every level\n *\n * @slot caption - The table's caption. You must either use this or the `caption` attribute.\n * @slot no-results - text to display when search or filtering yields no results\n */\n@Component({\n tag: 'nano-table',\n styleUrl: 'table.scss',\n})\nexport class Table implements ComponentInterface {\n constructor() {\n this.debounceSetLoading = debounce(this.debounceSetLoading.bind(this), 50);\n }\n // Public API\n\n // Props\n\n /** Function called whenever `col.cellTemplate` renders an unknown object.\n * The function should render a valid HTMLElement to the cell arg.\n * Example usage - render JSX from a 3rd party lib and append the result to the cell element. */\n @Prop() customRenderer: (\n node: any,\n cell: HTMLElement | DocumentFragment\n ) => void | Promise<string>;\n\n /** The type of table. Grid type will make cells navigable by keyboard */\n @Prop() type: 'grid' | 'table' = 'table';\n\n /** A descriptive title of the table.\n * You must use this or the `slot=\"caption\"` for accessibility */\n @Prop() caption: string;\n\n /** Show the caption on-screen */\n @Prop() showCaption: boolean = false;\n\n /** Will show a loading state when set to true.\n * By default, will be shown automatically if `rows` is a promise waiting to resolve / or falsy\n * *or* when performing custom filtering or sorting.\n * *Note* when set manually, will overwrite any internal loading state.\n * Set to 'undefined' to revert to default behaviour. */\n @Prop() loading: boolean = undefined;\n\n get _loading() {\n return this.loading !== undefined ? this.loading : this.internalLoading;\n }\n set _loading(l: boolean) {\n if (this.loading !== undefined) return;\n this.debounceSetLoading(l);\n }\n private debounceSetLoading(l: boolean) {\n this.internalLoading = l;\n }\n @State() internalLoading = true;\n\n /** When loading rows asynchronously, this will render this number of placeholder rows */\n @Prop() placeholderSize = 5;\n\n /** The data to place in the table */\n @Prop() rows:\n | TableTypes.NanoTable['rows']\n | Promise<TableTypes.NanoTable['rows']>;\n\n @Watch('rows')\n handleRowsChange() {\n if (!this.rows) {\n this._loading = true;\n return;\n }\n\n this._loading = true;\n Promise.resolve(this.rows).then(async (rows) => {\n await storeSetData(this.host, rows);\n\n // reset everything\n this.currentFilters = '';\n this.currentSort = '';\n await this.columnInit();\n\n if (!this.isReady)\n requestAnimationFrame(() => this.setInitialBlockDimension());\n this._loading = false;\n if (this.tablePinnedService) this.tablePinnedService.assessRows();\n });\n }\n\n /** The column config used to present the rows of data */\n @Prop({ mutable: true }) columns: TableTypes.NanoTable<any>['columns'] = [];\n\n @Watch('columns')\n async handleColsChange() {\n await storeSetConfig(this.host, this.columns);\n if (this.isReady) this.columnInit();\n }\n\n /** Used for custom thead row rendering */\n @Prop() headRender: TableTypes.HeadFootRenderer = { pinned: 'top' };\n\n /** Used for custom row rendering */\n @Prop() rowRender: TableTypes.RowRenderer;\n\n /** Used for custom tfoot row rendering */\n @Prop() footRender: TableTypes.HeadFootRenderer = { pinned: 'bottom' };\n\n /** Whether to show a `<tfoot>` component */\n @Prop() showFooter = false;\n\n /** To improve performance, data is split into blocks\n * which are shown / hidden and rendered as they become visible.\n * Use this to control the number of hits within a block -\n * A block should fill a scrolling viewport.\n * The less perBlock the better for performance */\n @Prop() perBlock = 50;\n\n /** The number of total blocks currently rendered in the table. @readonly */\n @Prop()\n get blocksLength() {\n return this.blocks.length;\n }\n\n /** Term to search for in the data */\n @Prop() searchTerm: string;\n\n /** A custom filtering function. Should return a promise.\n * If the promise resolves as `true` the column UI will be updated.\n * If the promise resolves as falsy, the sort will be performed by the component.\n * A good use-case would be performing the filter on a server / via fetch.\n * Then on success, updating the table's data via the `rows` property */\n @Prop() customFilterFn?: (\n filters: TableTypes.Filter[]\n ) => Promise<true | TableTypes.Falsy>;\n\n /** A custom sorting function. Should return a promise.\n * If the promise resolves as `true` the column UI will be updated.\n * If the promise resolves as falsey, the sort will be performed by the component.\n * A good use-case would be performing the sort on a server / via fetch.\n * Then on success, updating the table's data via the `rows` property */\n @Prop() customSortFn?: (\n property: TableTypes.Prop,\n order: TableTypes.Order\n ) => Promise<true | TableTypes.Falsy>;\n\n /**\n * The default sortable option for all columns.\n * `true` will enable column sorting unless you set `sortable: false` on a column\n * `false` will disable column sorting unless you set `sortable: true` on a column\n */\n @Prop() defaultSort = true;\n\n @Watch('searchTerm')\n handleSearchTermChange() {\n this.searchStart();\n }\n\n /** Use this to render the table with roughly the correct dimensions.\n * a use-case might be; fetch a small initial dataset to minimise load-time,\n * render the table with the correct dimensions, the table becomes interactive,\n * load the rest of the data\n */\n @Prop() virtualTotalItems: number = 0;\n\n @Watch('virtualTotalItems')\n virtualTotalItemsChangeHandler() {\n this.setBlocks();\n }\n\n /** @readonly - shows the currently applied filters */\n @Prop()\n get appliedFilters() {\n return this.filters;\n }\n\n /** Fired when the table has done it's first complete render */\n @Event() nanoTblReady: EventEmitter;\n\n /** Fired whenever a block is activated by scrolling into view / becoming visible\n * This could be leveraged for infinite scrolling / to fetch more data.\n */\n @Event() nanoTblBlockRendered: EventEmitter<{\n block: number;\n totalBlocks: number;\n }>;\n\n /** Fired before a column is sorted.\n * `event.preventDefault()` to stop sorting. */\n @Event() nanoTblBeforeSort: EventEmitter<{\n column: TableTypes.Prop;\n order: TableTypes.Order;\n }>;\n\n /** Fired after a column is sorted */\n @Event() nanoTblAfterSort: EventEmitter<{\n column: TableTypes.Prop;\n order: TableTypes.Order;\n }>;\n\n /** Fired before a column is filtered.\n * `event.preventDefault()` to stop filtering. */\n @Event() nanoTblBeforeFilter: EventEmitter<{ filters: TableTypes.Filter[] }>;\n\n /** Fired after a column is sorted */\n @Event() nanoTblAfterFilter: EventEmitter<{ filters: TableTypes.Filter[] }>;\n\n /** Fired before a general search.\n * `event.preventDefault()` to stop searching. */\n @Event() nanoTblBeforeSearch: EventEmitter<{ term: string }>;\n\n /** Fired after a general / cross column search */\n @Event() nanoTblAfterSearch: EventEmitter<{ term: string }>;\n\n /** Fired before a general search.\n * `event.preventDefault()` to stop searching. */\n @Event() nanoTblBeforeEdit: EventEmitter<{ term: string }>;\n\n /** Remove any column sorts currently applied\n * @returns a promise which resolves when complete */\n @Method()\n async resetSorting() {\n const col = (this.columns as TableTypes.NanoTable['columns']).find(\n (c) => !!c.order\n );\n if (!col) return;\n return this.sortStart(null, col.prop);\n }\n\n /** Apply a sort on a column\n * @returns a promise which resolves when complete */\n @Method()\n async addSort(column: TableTypes.Prop, order: TableTypes.Order) {\n const col = (this.columns as TableTypes.NanoTable['columns']).find(\n (c) => c.prop === column\n );\n if (!col) throw new Error('Cannot find column with ' + column);\n return this.sortStart(order, col.prop);\n }\n\n /** Remove any column filters currently applied\n * @returns a promise which resolves when complete */\n @Method()\n async resetFilters() {\n this.filters = [];\n return this.filterStart();\n }\n\n /** Apply a filter on a column\n * @param filters - the filters to apply\n * @param additive - if true, will add the filters to any currently applied\n * @returns a promise which resolves when complete\n */\n @Method()\n async addFilters(filters: TableTypes.Filter[], additive: boolean = true) {\n if (!additive) this.filters = [];\n return this.filterStart(filters, additive);\n }\n\n /** Remove filters from a column\n * @param columnNames - the filters to apply\n * @returns a promise which resolves when complete\n */\n @Method()\n async removeFilters(columnNames: TableTypes.Prop[]) {\n this.filters = this.filters.filter((f) => !columnNames.includes(f.prop));\n return this.filterStart();\n }\n\n /** Updates a row model at a given index\n * @param row - the row to update.\n * @param rowIndex - the row index to insert this row\n */\n @Method()\n async updateRow(row: TableTypes.RowData, rowIndex: number) {\n (this.rows as TableTypes.NanoTable['rows']).splice(rowIndex, 1, row);\n this.handleRowsChange();\n }\n\n // TODO.\n // change this.rows to be a Map instead?\n // this will allow 'padding' < inserting row data at a non-adjacent index\n\n // /**\n // * During pagination or infinite scroll\n // * you may not always want to load data in serial order.\n // * This method allows you to insert a block of results at a particular index.\n // * Use in-conjunction with `virtualTotalItems`\n // * @param blockIndex - where to insert\n // * @param rows - what to insert\n // */\n // @Method()\n // async insertBlock(blockIndex: number, rows: TableTypes.NanoTable['rows']) {\n // this.pauseAutoBlockAssign = true;\n // const cRows = (this.rows as TableTypes.NanoTable['rows']);\n\n // if (cRows.length < (blockIndex * this.perBlock)) {\n // (this.rows as TableTypes.NanoTable['rows'])\n // }\n\n // (this.rows as TableTypes.NanoTable['rows']).splice((blockIndex * this.perBlock)-1, 0, ...rows);\n\n // console.log(this.rows)\n // debugger;\n\n // await this.handleRowsChange(this.rows);\n // this.blocks[blockIndex] = {rows, __uuid: cyrb53(rows.map((b) => b.__uuid).join())};\n // this.blocks = this.blocks;\n // this.pauseAutoBlockAssign = true;\n\n // console.log(this.rows, this.blocks)\n // }\n\n // Private State\n\n @Element() host: HTMLNanoTableElement;\n private renderId = 'tbl-' + id++;\n private store: TableStores;\n private filters: TableTypes.Filter[] = [];\n private currentFilters = '[]';\n private currentSort = '';\n private tableEle: HTMLTableElement;\n private topAnchorEle: HTMLElement;\n private tableWrapperEle: HTMLElement;\n private activeWatcherIo: IntersectionObserver;\n private tablePinnedService: TablePinService;\n\n // Block view management\n\n /** `tr` elements split into units - defined by `perBlock`\n These are show / hidden for perf */\n @State() blocks: TableTypes.TBody[] = [];\n @State() activeBlocks: number[] = [0, 1];\n\n private measureHeight = 0;\n private blockElements: HTMLTableSectionElement[];\n private blockHeights: { blockIndex: number; height: number }[] = [];\n\n // uses the first 'tr' of an active block as our yard stick\n private set measureEle(el: HTMLTableSectionElement) {\n if (!el) return;\n const potentialHeight = el.getBoundingClientRect().height;\n this.measureHeight =\n Math.abs(this.measureHeight - potentialHeight) < 5\n ? this.measureHeight\n : potentialHeight;\n this.unitHeight =\n el.querySelector('tr')?.getBoundingClientRect().height || this.unitHeight;\n }\n\n private unitHeight = 0;\n\n private get scrollParent() {\n return this._scrollParent;\n }\n\n private set scrollParent(ele: HTMLElement) {\n if (ele === this._scrollParent) return;\n\n if (this._scrollParent) {\n (this._scrollParent === document.documentElement\n ? document\n : this._scrollParent\n ).removeEventListener('scroll', this.scrollHandler);\n }\n (ele === document.documentElement ? document : ele).addEventListener(\n 'scroll',\n this.scrollHandler\n );\n this._scrollParent = ele;\n }\n\n private _scrollParent: HTMLElement;\n\n // used to fire `nanoTblBlockRendered` on block render change\n private get primaryBlockIndex() {\n return this._primaryBlockIndex;\n }\n\n private set primaryBlockIndex(blockIndex) {\n if (this._primaryBlockIndex === blockIndex) return;\n\n this._primaryBlockIndex = blockIndex;\n\n // fire block change event\n this.nanoTblBlockRendered.emit({\n block: blockIndex,\n totalBlocks: this.blockElements.length,\n });\n }\n\n private _primaryBlockIndex;\n\n // Misc.\n\n private get isReady() {\n return this._isReady;\n }\n private set isReady(ready: boolean) {\n if (ready === this._isReady) return;\n this._isReady = ready;\n if (this.isReady) requestAnimationFrame(() => this.handleReady());\n }\n private _isReady = false;\n\n // Private Logic\n\n // Listeners\n\n private handleReady() {\n const hash = window.location.hash;\n if (hash.length > 1) {\n try {\n const idRow = document.querySelector(hash);\n if (idRow) idRow.scrollIntoView();\n // eslint-disable-next-line no-empty\n } catch (_e) {}\n }\n this.nanoTblReady.emit();\n }\n\n /**\n * Start a sort - can be cancelled by `preventDefault`\n * @param order - column order\n * @param column - column config object\n * @returns A promise\n */\n private sortStart = async (\n order: TableTypes.Order,\n column: TableTypes.Prop,\n element?: HTMLElement\n ) => {\n // did order change?\n if (this.currentSort === order + ':' + column) return;\n\n this._loading = true;\n const sortEvent = this.nanoTblBeforeSort.emit({ column: column, order });\n if (sortEvent.defaultPrevented) return;\n perMark('sort');\n this.currentSort = order + ':' + column;\n\n // doesn't make sense to leave user in place for a sort\n this.scrollToTop(element);\n\n if (this.customSortFn) {\n try {\n const res = await this.customSortFn(column, order);\n\n // if the response is 'true', the custom sort did it's thing\n // handover to finish and stop loading state.\n // if response is falsey, carry on to do a FE sort\n if (res === true) {\n this.sortComplete(order, column);\n this._loading = false;\n return;\n }\n } catch (e) {\n // if response errored, stop loading state\n // clear current sort cache\n console.warn('custom sort failed', e);\n this.currentSort = '';\n this._loading = false;\n return;\n }\n }\n\n try {\n await storeSort(this.host, column, order);\n this.sortComplete(order, column);\n } catch (e) {\n console.warn('sort failed', e);\n this.currentSort = '';\n } finally {\n if (this.blocks.length) this._loading = false;\n }\n };\n\n /**\n * Complete a sort. Reflects the order to ui.\n * @param order - column order\n * @param column - column config object\n */\n private sortComplete(order: TableTypes.Order, column: TableTypes.Prop) {\n this.columns = this.columns.map((c) => {\n if (c.prop === column) return { ...c, order };\n return { ...c, order: null };\n });\n this.nanoTblAfterSort.emit({ column: column, order });\n perMark('sort', true);\n }\n\n private async searchStart() {\n this._loading = true;\n const sortEvent = this.nanoTblBeforeSearch.emit({ term: this.searchTerm });\n if (sortEvent.defaultPrevented) return;\n perMark('search');\n\n // doesn't make sense to leave user in place for a search\n this.scrollToTop();\n\n try {\n await storeSearch(this.host, this.searchTerm);\n this.nanoTblAfterSearch.emit({ term: this.searchTerm });\n perMark('search', true);\n } catch (e) {\n console.warn('search failed', e);\n } finally {\n this._loading = false;\n }\n }\n\n private async filterStart(\n filters?: TableTypes.Filter[],\n additive: boolean = true\n ) {\n if (filters) {\n if (additive) {\n this.filters = [\n ...this.filters.filter(\n (f) => !filters.find((ff) => ff.prop === f.prop)\n ),\n ...filters,\n ];\n } else {\n this.filters = filters;\n }\n }\n\n if (this.currentFilters === JSON.stringify(this.filters)) return;\n\n this._loading = true;\n const sortEvent = this.nanoTblBeforeFilter.emit({ filters: this.filters });\n if (sortEvent.defaultPrevented) return;\n perMark('filter');\n this.currentFilters = JSON.stringify(this.filters);\n\n // doesn't make sense to leave user in place for a search\n this.scrollToTop();\n\n if (this.customFilterFn) {\n try {\n const res = await this.customFilterFn(this.filters);\n\n // if the response is 'true', the custom filter did it's thing\n // handover to finish and stop loading state.\n // if response is falsy, carry on to do a FE filter\n if (res === true) {\n this.filterComplete();\n this._loading = false;\n return;\n }\n } catch (e) {\n // if response errored, stop loading state\n // clear current sort cache\n console.warn('custom filter failed', e);\n this.currentFilters = '';\n this._loading = false;\n return;\n }\n }\n\n try {\n await storeFilter(this.host, this.filters);\n this.filterComplete();\n } catch (e) {\n console.warn('filter failed', e);\n } finally {\n this._loading = false;\n }\n }\n\n private filterComplete() {\n this.columns = this.columns.map((c) => {\n const cFilter = this.filters.find((f) => f.prop === c.prop);\n // if we found a filter AND\n // it isn't true / false and has a length OR\n // it is true or false\n if (\n cFilter &&\n ((typeof cFilter.filter !== 'boolean' && cFilter.filter.length) ||\n typeof cFilter.filter === 'boolean')\n )\n c.filter = cFilter.filter;\n // if a filter value is not set OR\n // it isn't true / false and has no length\n else if (\n (c.filter !== null && c.filter !== undefined) ||\n (!!c.filter && typeof c.filter !== 'boolean' && !c.filter.length)\n )\n c.filter = undefined;\n\n return c;\n });\n this.nanoTblAfterFilter.emit({ filters: this.filters });\n perMark('filter', true);\n }\n\n /** Scrolls to the top immediately - used whilst sorting / filtering */\n private scrollToTop(element?: HTMLElement) {\n const scrollBehaviour = this.scrollParent.style?.scrollBehavior;\n const scrollX = this.scrollParent.scrollLeft;\n this.scrollParent.style.scrollBehavior = 'auto';\n\n if (this.topAnchorEle && !isInViewport(this.topAnchorEle, 0.1)) {\n this.host.scrollIntoView();\n }\n if (element && !isInViewport(element, 1))\n setTimeout(() => element.scrollIntoView({ block: 'start' }), 500);\n\n if (scrollX) this.scrollParent.scrollLeft = scrollX;\n\n if (scrollBehaviour)\n this.scrollParent.style.scrollBehavior = scrollBehaviour;\n\n this.scrollHandler();\n }\n\n private setMeasureElement(): Promise<void> {\n return new Promise((resolve) => {\n readTask(() => {\n this.measureEle = this.blockElements.find(\n (b) => !b?.classList?.contains(`${CSSNAMESPACE}__inactive`)\n );\n resolve();\n });\n });\n }\n\n /**\n * Makes sure we have dimensions on at least one, active tbody element.\n * We'll use this is a yard stick for inactive tbody elements in future.\n * These elements have no natural height (on account of all their rows being hidden)\n */\n private setInitialBlockDimension() {\n if (!this.blockElements?.length) return;\n perMark('blockDims');\n\n const testForDimensions = async () => {\n await this.setMeasureElement();\n if (this.unitHeight) return true;\n return false;\n };\n\n const dimensionsReady: Promise<void> = new Promise((resolve) => {\n testForDimensions().then(async (ready) => {\n if (ready) resolve();\n else {\n // it's likely this table is hidden in the dom.\n // we need to wait until it's visible\n const observer = new IntersectionObserver(\n async () => {\n if (await testForDimensions()) {\n resolve();\n observer.disconnect();\n }\n },\n { root: this.scrollParent }\n );\n observer.observe(this.tableEle);\n }\n });\n });\n\n // we're all finished.\n dimensionsReady.then(() => {\n perMark('blockDims', true);\n perMark('init', true);\n requestAnimationFrame(() => (this.isReady = true));\n });\n }\n\n /** Apply initial columns settings */\n private async columnInit() {\n this.filters = (this.columns as TableTypes.NanoTable['columns'])\n .filter((c) => c.filter !== undefined && c.filter !== null)\n .map((c) => {\n const { filter, prop } = c;\n return { filter, prop };\n });\n\n if (this.searchTerm) {\n await this.searchStart();\n }\n\n if (this.filters.length) {\n await this.filterStart();\n }\n // apply sort\n const col = (this.columns as TableTypes.NanoTable['columns']).find(\n (c) => !!c.order\n );\n if (col) {\n await this.sortStart(col.order, col.prop);\n }\n if (this.tablePinnedService) this.tablePinnedService.assessCols();\n }\n\n /** Split up all incoming rows into 'blocks' split amongst tbody elements.\n * These can then be hidden / shown to improve performance.\n */\n private setBlocks() {\n const dRows = this.store.data.state.rows;\n if (!dRows.length) {\n this.blocks = [];\n return;\n }\n\n perMark('setBlocks');\n // this.ignoreIO = true;\n let i = 1;\n const l =\n this.virtualTotalItems > dRows.length\n ? this.virtualTotalItems\n : dRows.length;\n let rows: TableTypes.RowData[] = [];\n const blocks: TableTypes.TBody[] = [];\n\n // old skool loop for perf\n for (i; i <= l; i++) {\n rows.push(this.store.data.state.rows[i - 1] || { __uuid: '' });\n\n if (i % this.perBlock === 0) {\n // assign a UUID for the whole block\n // for block diffing\n blocks.push({ rows, __uuid: cyrb53(rows.map((b) => b.__uuid).join()) });\n rows = [];\n }\n }\n\n // any leftover rows\n if (rows.length) {\n blocks.push({ rows, __uuid: cyrb53(rows.map((b) => b.__uuid).join()) });\n }\n\n this.blocks = blocks;\n perMark('setBlocks', true);\n }\n\n /**\n * Returns a block render height.\n * If it's currently active - let auto do it's thing\n * If we've rendered it before - return that\n * If all else fails, let's guess it\n * @param blockIndex\n * @returns a height string (incl px)\n */\n private getBlockHeight(blockIndex: number): number {\n if (this.blockHeights.length) {\n const cachedBlockHeight = this.blockHeights.find(\n (bh) => bh.blockIndex === blockIndex\n );\n if (cachedBlockHeight && cachedBlockHeight.height)\n return cachedBlockHeight.height;\n }\n const blockLength = this.blocks[blockIndex].rows.length;\n if (blockLength === this.perBlock && this.measureHeight) {\n return this.measureHeight;\n }\n return this.unitHeight ? this.unitHeight * blockLength : 100;\n }\n\n /** cache the height for all active blocks for later renders */\n private setBlockHeight() {\n this.activeBlocks.forEach((blockIndex) => {\n const el = this.blockElements[blockIndex];\n if (!el) return;\n\n readTask(() => {\n if (el.classList.contains(`${CSSNAMESPACE}__inactive`)) return;\n\n const height = el.getBoundingClientRect().height;\n // cache height to our block heights array\n // for subsequent renders\n const fBhIdx = this.blockHeights.findIndex(\n (bh) => bh.blockIndex === blockIndex\n );\n if (fBhIdx > -1) {\n this.blockHeights[fBhIdx] = { height, blockIndex };\n } else this.blockHeights.push({ height, blockIndex });\n });\n });\n }\n\n /**\n * On scroll, loop through all blocks' heights and cumulatively, add them together.\n * When we find that the scroll position is less than this cumulative block height -\n * stop loop - it's on the current active block.\n */\n private scrollHandler = () => {\n let scrollPos: number = 0;\n\n perMark('scrollHandler');\n // don't listen if this table isn't in the viewport\n if (!this.store?.general.state.isActive || !this.rows) return;\n if (this.primaryBlockIndex === undefined) this.primaryBlockIndex = 0;\n\n readTask(() => {\n scrollPos =\n typeof this.scrollParent.scrollTop !== 'undefined'\n ? this.scrollParent.scrollTop\n : window.scrollY;\n scrollPos += this.host.offsetTop;\n\n if (this.tablePinnedService) {\n this.tablePinnedService.onScroll({\n x:\n typeof this.scrollParent.scrollLeft !== 'undefined'\n ? this.scrollParent.scrollLeft\n : window.scrollX,\n y: scrollPos,\n });\n }\n\n let cumulativeHeight = this.host.offsetTop;\n let blockIndex = 0;\n const blockLen = this.blocks.length;\n\n while (blockIndex < blockLen && scrollPos >= cumulativeHeight) {\n cumulativeHeight += this.getBlockHeight(blockIndex);\n\n if (scrollPos < cumulativeHeight) {\n const potentialBlocks = [\n blockIndex,\n blockIndex + 1,\n // Math.max(0, blockIndex - 1),\n ];\n if (potentialBlocks.toString() !== this.activeBlocks.toString()) {\n this.activeBlocks = potentialBlocks;\n }\n this.primaryBlockIndex = blockIndex;\n }\n blockIndex++;\n }\n perMark('scrollHandler', true);\n });\n };\n\n /** Process slotted content */\n private processSlots() {\n // see if we have slot content\n if (!this.caption && !this.host.querySelector('[slot=\"caption\"]')) {\n console.error(\n 'For accessibility you must set a `caption` prop or use the `caption` slot'\n );\n }\n }\n\n private handleResizeChange = (\n e: NanoResizeObserveCustomEvent<ResizeStateChangeEventDetail>\n ) => {\n this.tableWrapperEle.className = '';\n\n let classes: string[] = [`${CSSNAMESPACE}__wrap`];\n if (e.target?.className)\n classes = [...e.target.className.split(' '), ...classes];\n\n this.tableWrapperEle.classList.add(...classes.filter((cl) => !!cl));\n };\n\n /** Adds an IO. Makes sure our scroll listener is only active when\n * the table is in viewport */\n private setupActiveWatcher() {\n if (!this.host || !this.scrollParent || !this.store) return;\n\n if (this.activeWatcherIo) {\n this.activeWatcherIo.disconnect();\n this.activeWatcherIo = undefined;\n }\n const io = (this.activeWatcherIo = new IntersectionObserver(\n ([e]) => {\n if (e.isIntersecting) this.store.general.state.isActive = true;\n else this.store.general.state.isActive = false;\n },\n { root: this.scrollParent, threshold: 0 }\n ));\n io.observe(this.host);\n }\n\n // Component lifecycle\n\n async componentWillLoad() {\n perMark('init');\n // setup stores\n this.store = await generateStore(\n this.host,\n this.columns,\n this.scrollParent,\n this.isReady\n );\n this.handleRowsChange();\n this.store.general.onChange('isActive', () => {\n this.scrollHandler();\n });\n this.store.data.onChange('rows', () => this.setBlocks());\n\n // setup dom and attach listeners\n this.processSlots();\n this.setBlocks();\n this.scrollParent = findScrollParent(this.host);\n this.setupActiveWatcher();\n }\n\n connectedCallback(): void {\n this.scrollParent = findScrollParent(this.host);\n this.setupActiveWatcher();\n }\n\n componentDidLoad(): void {\n this.setInitialBlockDimension();\n if (!this.tablePinnedService) {\n this.tablePinnedService = new TablePinService(\n this.tableEle,\n this.scrollParent\n );\n }\n }\n\n componentShouldUpdate(_newVal, _oldVal, stateName: keyof Table) {\n // stop double rendering - we use the store for rendering internally\n // the public facing props are kept in-sync with the store\n // but we don't want it to cause renders\n if (['rows', 'columns'].includes(stateName)) return false;\n\n if (measurePerf) console.info(stateName, _newVal, _oldVal);\n }\n\n componentWillRender(): void | Promise<void> {\n perMark('render');\n }\n\n componentDidRender(): void {\n this.setMeasureElement().then(() => this.setBlockHeight());\n perMark('render', true);\n }\n\n disconnectedCallback(): void {\n if (!this.activeWatcherIo) return;\n this.activeWatcherIo.disconnect();\n this.activeWatcherIo = undefined;\n\n (this.scrollParent === document.documentElement\n ? document\n : this.scrollParent\n ).removeEventListener('scroll', this.scrollHandler);\n }\n\n render() {\n this.blockElements = [];\n\n return (\n <Host>\n <div\n class={`${CSSNAMESPACE}__top-anchor`}\n ref={(a) => (this.topAnchorEle = a)}\n >\n \n </div>\n\n <nano-resize-observe\n states=\"576w sm, 768w md\"\n class=\"sm md\"\n onNanoResizeStateChange={this.handleResizeChange}\n onNanoResize={() => {\n if (this.tablePinnedService) this.tablePinnedService.onResize();\n }}\n ></nano-resize-observe>\n\n <div\n class={`${CSSNAMESPACE}__wrap sm md`}\n ref={(div) => (this.tableWrapperEle = div)}\n aria-labelledby={'nano-table-caption-' + this.renderId}\n tabindex={this.type === 'grid' ? '0' : undefined}\n >\n <nano-progress-bar\n indeterminate\n class={{\n [`${CSSNAMESPACE}__progress-bar`]: true,\n [`${CSSNAMESPACE}__progress-bar--show`]: this._loading,\n }}\n />\n <table\n role={this.type === 'grid' ? 'grid' : undefined}\n aria-rowcount={this.store.data.state.rows.length}\n aria-colcount={this.store.config.state.columns.length}\n class={`${CSSNAMESPACE}`}\n ref={(tbl) => (this.tableEle = tbl)}\n id={'nano-table-' + this.renderId}\n >\n <caption\n class={{\n [`${CSSNAMESPACE}__caption`]: true,\n [`${CSSNAMESPACE}__caption--hide`]: !this.showCaption,\n }}\n id={'nano-table-caption-' + this.renderId}\n >\n <slot name=\"caption\">{this.caption}</slot>\n </caption>\n\n {/* Header */}\n <thead>\n <TableHeadFootRow rowRenderer={this.headRender}>\n {this.store.config.state.columns.map((colModel) => [\n <TableColHead\n column={colModel}\n headRenderer={this.headRender}\n onColumnSortClick={this.sortStart}\n defaults={{\n sortable: this.defaultSort,\n }}\n />,\n ])}\n </TableHeadFootRow>\n </thead>\n\n {this._loading && !this.blocks.length && (\n <tbody class={`${CSSNAMESPACE}__active ${CSSNAMESPACE}__loading`}>\n {[...Array(10).keys()].map((rowIndex) => (\n <tr>\n {this.store.config.state.columns.map(\n (_colModel, colIndex) => (\n <TableCell\n rowIndex={rowIndex}\n colIndex={colIndex}\n nestedContent={() => <nano-skeleton />}\n />\n )\n )}\n </tr>\n ))}\n </tbody>\n )}\n\n <tr hidden={!!this._loading || !!this.blocks.length}>\n <th\n class={`${CSSNAMESPACE}__th`}\n colSpan={this.store.config.state.columns.length}\n >\n <div class=\"nano-tbl__cell-content nano-tbl__cell-content--no-result\">\n <slot name=\"no-results\">No results found</slot>\n </div>\n </th>\n </tr>\n\n {/* Body */}\n {this.blocks.map((block, blockIndex) => (\n <tbody\n key={block.__uuid}\n id={`tbody-${this.renderId}-${blockIndex}`}\n ref={(tb) => {\n this.blockElements.push(tb);\n }}\n class={{\n [`${CSSNAMESPACE}__inactive`]:\n !this.activeBlocks.includes(blockIndex),\n [`${CSSNAMESPACE}__active`]:\n this.activeBlocks.includes(blockIndex),\n }}\n >\n {this.activeBlocks.includes(blockIndex) ? (\n block.rows.map((row, i) => {\n const rowIndex =\n blockIndex > 0 ? blockIndex * this.perBlock + i : i;\n return (\n <TableRow\n rowRenderer={this.rowRender}\n rowModel={row}\n rowIndex={rowIndex}\n >\n {this.store.config.state.columns.map(\n (_colModel, colIndex) => (\n <TableCell\n rowIndex={rowIndex}\n colIndex={colIndex}\n />\n )\n )}\n </TableRow>\n );\n })\n ) : (\n <tr class={`${CSSNAMESPACE}__tr--placeholder`}>\n <td\n colSpan={this.store.config.state.columns.length}\n style={{\n height: this.getBlockHeight(blockIndex) + 'px',\n }}\n />\n </tr>\n )}\n </tbody>\n ))}\n\n {/* Footer */}\n {this.showFooter && (\n <tfoot>\n <TableHeadFootRow rowRenderer={this.footRender}>\n {this.store.config.state.columns.map((colModel) => [\n <TableColHead\n column={colModel}\n headRenderer={this.footRender}\n onColumnSortClick={this.sortStart}\n defaults={{\n sortable: this.defaultSort,\n }}\n />,\n ])}\n </TableHeadFootRow>\n </tfoot>\n )}\n </table>\n\n {!!this.blocks.length && (\n <nano-spinner\n type=\"circle\"\n class={{\n [`${CSSNAMESPACE}__spinner`]: true,\n [`${CSSNAMESPACE}__spinner--show`]: this._loading,\n }}\n />\n )}\n </div>\n </Host>\n );\n }\n}\n"]}
|
1
|
+
{"version":3,"file":"table.js","sourceRoot":"","sources":["../../../../src/components/table/table.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Prop,\n h,\n ComponentInterface,\n Element,\n Host,\n Watch,\n State,\n readTask,\n Event,\n EventEmitter,\n Method,\n} from '@stencil/core';\nimport { cyrb53 } from '../../utils/math';\nimport { debounce } from '../../utils/throttle';\nimport { findScrollParent } from '../../utils/scroll-parent';\nimport { TableColHead } from './table.header';\nimport { TableRow, TableHeadFootRow } from './table.row';\nimport { TableCell } from './table.cell';\nimport { CSSNAMESPACE } from './table.constants';\nimport {\n generateStore,\n storeSearch,\n storeSetConfig,\n storeSetData,\n storeSort,\n storeFilter,\n TableStores,\n} from './table.store';\nimport { isInViewport } from './table.utils';\nimport { TablePinService } from './table.pin-service';\nimport type { TableTypes } from './table-interface';\nimport type { ResizeStateChangeEventDetail } from '../resize-observe/resize-observe-interface';\nimport type { NanoResizeObserveCustomEvent } from '../../components';\n\nconst measurePerf = false;\n\nfunction perMark(name: string, end: boolean = false) {\n if (!performance || !measurePerf) return;\n if (end) {\n performance?.mark('end' + name);\n performance?.measure(name, 'start' + name, 'end' + name);\n const entries = performance?.getEntriesByName(name);\n console.info(entries[entries.length ? entries.length - 1 : 0]);\n } else {\n performance?.mark('start' + name);\n }\n}\n\nlet id = 0;\n/**\n * A performant, accessible and semantic (uses real html `<table />`, `<tr />` etc) table and data-grid solution.\n *\n *- Built-in search\n *- Built-in column filter\n *- Built-in column sort\n *- Easily swap in API / async based search / filter & sort\n *- Pin headers, footers, rows, columns\n *- Add custom rendering at every level\n *- Add custom properties at every level\n *\n * @slot caption - The table's caption. You must either use this or the `caption` attribute.\n * @slot no-results - text to display when search or filtering yields no results\n */\n@Component({\n tag: 'nano-table',\n styleUrl: 'table.scss',\n})\nexport class Table implements ComponentInterface {\n constructor() {\n this.debounceSetLoading = debounce(this.debounceSetLoading.bind(this), 50);\n }\n // Public API\n\n // Props\n\n /** Function called whenever `col.cellTemplate` renders an unknown object.\n * The function should render a valid HTMLElement to the cell arg.\n * Example usage - render JSX from a 3rd party lib and append the result to the cell element. */\n @Prop() customRenderer: (\n node: any,\n cell: HTMLElement | DocumentFragment\n ) => void | Promise<string>;\n\n /** The type of table. Grid type will make cells navigable by keyboard */\n @Prop() type: 'grid' | 'table' = 'table';\n\n /** A descriptive title of the table.\n * You must use this or the `slot=\"caption\"` for accessibility */\n @Prop() caption: string;\n\n /** Show the caption on-screen */\n @Prop() showCaption: boolean = false;\n\n /** Will show a loading state when set to true.\n * By default, will be shown automatically if `rows` is a promise waiting to resolve / or falsy\n * *or* when performing custom filtering or sorting.\n * *Note* when set manually, will overwrite any internal loading state.\n * Set to 'undefined' to revert to default behaviour. */\n @Prop() loading: boolean = undefined;\n\n get _loading() {\n return this.loading !== undefined ? this.loading : this.internalLoading;\n }\n set _loading(l: boolean) {\n if (this.loading !== undefined) return;\n this.debounceSetLoading(l);\n }\n private debounceSetLoading(l: boolean) {\n this.internalLoading = l;\n }\n @State() internalLoading = true;\n\n /** When loading rows asynchronously, this will render this number of placeholder rows */\n @Prop() placeholderSize = 5;\n\n /** The data to place in the table */\n @Prop() rows:\n | TableTypes.NanoTable['rows']\n | Promise<TableTypes.NanoTable['rows']>;\n\n @Watch('rows')\n handleRowsChange() {\n if (!this.rows) {\n this._loading = true;\n return;\n }\n\n this._loading = true;\n Promise.resolve(this.rows).then(async (rows) => {\n await storeSetData(this.host, rows);\n\n // reset everything\n this.currentFilters = '';\n this.currentSort = '';\n await this.columnInit();\n\n if (!this.isReady)\n requestAnimationFrame(() => this.setInitialBlockDimension());\n this._loading = false;\n if (this.tablePinnedService) this.tablePinnedService.assessRows();\n });\n }\n\n /** The column config used to present the rows of data */\n @Prop({ mutable: true }) columns: TableTypes.NanoTable<any>['columns'] = [];\n\n @Watch('columns')\n async handleColsChange() {\n await storeSetConfig(this.host, this.columns);\n if (this.isReady) this.columnInit();\n }\n\n /** Used for custom thead row rendering */\n @Prop() headRender: TableTypes.HeadFootRenderer = { pinned: 'top' };\n\n /** Used for custom row rendering */\n @Prop() rowRender: TableTypes.RowRenderer;\n\n /** Used for custom tfoot row rendering */\n @Prop() footRender: TableTypes.HeadFootRenderer = { pinned: 'bottom' };\n\n /** Whether to show a `<tfoot>` component */\n @Prop() showFooter = false;\n\n /** To improve performance, data is split into blocks\n * which are shown / hidden and rendered as they become visible.\n * Use this to control the number of hits within a block -\n * A block should fill a scrolling viewport.\n * The less perBlock the better for performance */\n @Prop() perBlock = 50;\n\n /** The number of total blocks currently rendered in the table. @readonly */\n @Prop()\n get blocksLength() {\n return this.blocks.length;\n }\n\n /** Term to search for in the data */\n @Prop() searchTerm: string;\n\n /** A custom filtering function. Should return a promise.\n * If the promise resolves as `true` the column UI will be updated.\n * If the promise resolves as falsy, the sort will be performed by the component.\n * A good use-case would be performing the filter on a server / via fetch.\n * Then on success, updating the table's data via the `rows` property */\n @Prop() customFilterFn?: (\n filters: TableTypes.Filter[]\n ) => Promise<true | TableTypes.Falsy>;\n\n /** A custom sorting function. Should return a promise.\n * If the promise resolves as `true` the column UI will be updated.\n * If the promise resolves as falsey, the sort will be performed by the component.\n * A good use-case would be performing the sort on a server / via fetch.\n * Then on success, updating the table's data via the `rows` property */\n @Prop() customSortFn?: (\n property: TableTypes.Prop,\n order: TableTypes.Order\n ) => Promise<true | TableTypes.Falsy>;\n\n /**\n * The default sortable option for all columns.\n * `true` will enable column sorting unless you set `sortable: false` on a column\n * `false` will disable column sorting unless you set `sortable: true` on a column\n */\n @Prop() defaultSort = true;\n\n @Watch('searchTerm')\n handleSearchTermChange() {\n this.searchStart();\n }\n\n /** Use this to render the table with roughly the correct dimensions.\n * a use-case might be; fetch a small initial dataset to minimise load-time,\n * render the table with the correct dimensions, the table becomes interactive,\n * load the rest of the data\n */\n @Prop() virtualTotalItems: number = 0;\n\n @Watch('virtualTotalItems')\n virtualTotalItemsChangeHandler() {\n this.setBlocks();\n }\n\n /** @readonly - shows the currently applied filters */\n @Prop()\n get appliedFilters() {\n return this.filters;\n }\n\n /** Fired when the table has done it's first complete render */\n @Event() nanoTblReady: EventEmitter;\n\n /** Fired whenever a block is activated by scrolling into view / becoming visible\n * This could be leveraged for infinite scrolling / to fetch more data.\n */\n @Event() nanoTblBlockRendered: EventEmitter<{\n block: number;\n totalBlocks: number;\n }>;\n\n /** Fired before a column is sorted.\n * `event.preventDefault()` to stop sorting. */\n @Event() nanoTblBeforeSort: EventEmitter<{\n column: TableTypes.Prop;\n order: TableTypes.Order;\n }>;\n\n /** Fired after a column is sorted */\n @Event() nanoTblAfterSort: EventEmitter<{\n column: TableTypes.Prop;\n order: TableTypes.Order;\n }>;\n\n /** Fired before a column is filtered.\n * `event.preventDefault()` to stop filtering. */\n @Event() nanoTblBeforeFilter: EventEmitter<{ filters: TableTypes.Filter[] }>;\n\n /** Fired after a column is sorted */\n @Event() nanoTblAfterFilter: EventEmitter<{ filters: TableTypes.Filter[] }>;\n\n /** Fired before a general search.\n * `event.preventDefault()` to stop searching. */\n @Event() nanoTblBeforeSearch: EventEmitter<{ term: string }>;\n\n /** Fired after a general / cross column search */\n @Event() nanoTblAfterSearch: EventEmitter<{ term: string }>;\n\n /** Fired before a general search.\n * `event.preventDefault()` to stop searching. */\n @Event() nanoTblBeforeEdit: EventEmitter<{ term: string }>;\n\n /** Remove any column sorts currently applied\n * @returns a promise which resolves when complete */\n @Method()\n async resetSorting() {\n const col = (this.columns as TableTypes.NanoTable['columns']).find(\n (c) => !!c.order\n );\n if (!col) return;\n return this.sortStart(null, col.prop);\n }\n\n /** Apply a sort on a column\n * @returns a promise which resolves when complete */\n @Method()\n async addSort(column: TableTypes.Prop, order: TableTypes.Order) {\n const col = (this.columns as TableTypes.NanoTable['columns']).find(\n (c) => c.prop === column\n );\n if (!col) throw new Error('Cannot find column with ' + column);\n return this.sortStart(order, col.prop);\n }\n\n /** Remove any column filters currently applied\n * @returns a promise which resolves when complete */\n @Method()\n async resetFilters() {\n this.filters = [];\n return this.filterStart();\n }\n\n /** Apply a filter on a column\n * @param filters - the filters to apply\n * @param additive - if true, will add the filters to any currently applied\n * @returns a promise which resolves when complete\n */\n @Method()\n async addFilters(filters: TableTypes.Filter[], additive: boolean = true) {\n if (!additive) this.filters = [];\n return this.filterStart(filters, additive);\n }\n\n /** Remove filters from a column\n * @param columnNames - the filters to apply\n * @returns a promise which resolves when complete\n */\n @Method()\n async removeFilters(columnNames: TableTypes.Prop[]) {\n this.filters = this.filters.filter((f) => !columnNames.includes(f.prop));\n return this.filterStart();\n }\n\n /** Updates a row model at a given index\n * @param row - the row to update.\n * @param rowIndex - the row index to insert this row\n */\n @Method()\n async updateRow(row: TableTypes.RowData, rowIndex: number) {\n (this.rows as TableTypes.NanoTable['rows']).splice(rowIndex, 1, row);\n this.handleRowsChange();\n }\n\n // TODO.\n // change this.rows to be a Map instead?\n // this will allow 'padding' < inserting row data at a non-adjacent index\n\n // /**\n // * During pagination or infinite scroll\n // * you may not always want to load data in serial order.\n // * This method allows you to insert a block of results at a particular index.\n // * Use in-conjunction with `virtualTotalItems`\n // * @param blockIndex - where to insert\n // * @param rows - what to insert\n // */\n // @Method()\n // async insertBlock(blockIndex: number, rows: TableTypes.NanoTable['rows']) {\n // this.pauseAutoBlockAssign = true;\n // const cRows = (this.rows as TableTypes.NanoTable['rows']);\n\n // if (cRows.length < (blockIndex * this.perBlock)) {\n // (this.rows as TableTypes.NanoTable['rows'])\n // }\n\n // (this.rows as TableTypes.NanoTable['rows']).splice((blockIndex * this.perBlock)-1, 0, ...rows);\n\n // console.log(this.rows)\n // debugger;\n\n // await this.handleRowsChange(this.rows);\n // this.blocks[blockIndex] = {rows, __uuid: cyrb53(rows.map((b) => b.__uuid).join())};\n // this.blocks = this.blocks;\n // this.pauseAutoBlockAssign = true;\n\n // console.log(this.rows, this.blocks)\n // }\n\n // Private State\n\n @Element() host: HTMLNanoTableElement;\n private renderId = 'tbl-' + id++;\n private store: TableStores;\n private filters: TableTypes.Filter[] = [];\n private currentFilters = '[]';\n private currentSort = '';\n private tableEle: HTMLTableElement;\n private topAnchorEle: HTMLElement;\n private tableWrapperEle: HTMLElement;\n private activeWatcherIo: IntersectionObserver;\n private tablePinnedService: TablePinService;\n\n // Block view management\n\n /** `tr` elements split into units - defined by `perBlock`\n These are show / hidden for perf */\n @State() blocks: TableTypes.TBody[] = [];\n @State() activeBlocks: number[] = [0, 1];\n\n private measureHeight = 0;\n private blockElements: HTMLTableSectionElement[];\n private blockHeights: { blockIndex: number; height: number }[] = [];\n\n // uses the first 'tr' of an active block as our yard stick\n private set measureEle(el: HTMLTableSectionElement) {\n if (!el) return;\n const potentialHeight = el.getBoundingClientRect().height;\n this.measureHeight =\n Math.abs(this.measureHeight - potentialHeight) < 5\n ? this.measureHeight\n : potentialHeight;\n this.unitHeight =\n el.querySelector('tr')?.getBoundingClientRect().height || this.unitHeight;\n }\n\n private unitHeight = 0;\n\n private get scrollParent() {\n return this._scrollParent;\n }\n\n private set scrollParent(ele: HTMLElement) {\n if (ele === this._scrollParent) return;\n\n if (this._scrollParent) {\n (this._scrollParent === document.documentElement\n ? document\n : this._scrollParent\n ).removeEventListener('scroll', this.scrollHandler);\n }\n (ele === document.documentElement ? document : ele).addEventListener(\n 'scroll',\n this.scrollHandler\n );\n this._scrollParent = ele;\n }\n\n private _scrollParent: HTMLElement;\n\n // used to fire `nanoTblBlockRendered` on block render change\n private get primaryBlockIndex() {\n return this._primaryBlockIndex;\n }\n\n private set primaryBlockIndex(blockIndex) {\n if (this._primaryBlockIndex === blockIndex) return;\n\n this._primaryBlockIndex = blockIndex;\n\n // fire block change event\n this.nanoTblBlockRendered.emit({\n block: blockIndex,\n totalBlocks: this.blockElements.length,\n });\n }\n\n private _primaryBlockIndex;\n\n // Misc.\n\n private get isReady() {\n return this._isReady;\n }\n private set isReady(ready: boolean) {\n if (ready === this._isReady) return;\n this._isReady = ready;\n if (this.isReady) requestAnimationFrame(() => this.handleReady());\n }\n private _isReady = false;\n\n // Private Logic\n\n // Listeners\n\n private handleReady() {\n const hash = window.location.hash;\n if (hash.length > 1) {\n try {\n const idRow = document.querySelector(hash);\n if (idRow) idRow.scrollIntoView();\n // eslint-disable-next-line no-empty\n } catch (_e) {}\n }\n this.nanoTblReady.emit();\n }\n\n /**\n * Start a sort - can be cancelled by `preventDefault`\n * @param order - column order\n * @param column - column config object\n * @returns A promise\n */\n private sortStart = async (\n order: TableTypes.Order,\n column: TableTypes.Prop,\n element?: HTMLElement\n ) => {\n // did order change?\n if (this.currentSort === order + ':' + column) return;\n\n this._loading = true;\n const sortEvent = this.nanoTblBeforeSort.emit({ column: column, order });\n if (sortEvent.defaultPrevented) return;\n perMark('sort');\n this.currentSort = order + ':' + column;\n\n // doesn't make sense to leave user in place for a sort\n this.scrollToTop(element);\n\n if (this.customSortFn) {\n try {\n const res = await this.customSortFn(column, order);\n\n // if the response is 'true', the custom sort did it's thing\n // handover to finish and stop loading state.\n // if response is falsey, carry on to do a FE sort\n if (res === true) {\n this.sortComplete(order, column);\n this._loading = false;\n return;\n }\n } catch (e) {\n // if response errored, stop loading state\n // clear current sort cache\n console.warn('custom sort failed', e);\n this.currentSort = '';\n this._loading = false;\n return;\n }\n }\n\n try {\n await storeSort(this.host, column, order);\n this.sortComplete(order, column);\n } catch (e) {\n console.warn('sort failed', e);\n this.currentSort = '';\n } finally {\n if (this.blocks.length) this._loading = false;\n }\n };\n\n /**\n * Complete a sort. Reflects the order to ui.\n * @param order - column order\n * @param column - column config object\n */\n private sortComplete(order: TableTypes.Order, column: TableTypes.Prop) {\n this.columns = this.columns.map((c) => {\n if (c.prop === column) return { ...c, order };\n return { ...c, order: null };\n });\n this.nanoTblAfterSort.emit({ column: column, order });\n perMark('sort', true);\n }\n\n private async searchStart() {\n this._loading = true;\n const sortEvent = this.nanoTblBeforeSearch.emit({ term: this.searchTerm });\n if (sortEvent.defaultPrevented) return;\n perMark('search');\n\n // doesn't make sense to leave user in place for a search\n this.scrollToTop();\n\n try {\n await storeSearch(this.host, this.searchTerm);\n this.nanoTblAfterSearch.emit({ term: this.searchTerm });\n perMark('search', true);\n } catch (e) {\n console.warn('search failed', e);\n } finally {\n this._loading = false;\n }\n }\n\n private async filterStart(\n filters?: TableTypes.Filter[],\n additive: boolean = true\n ) {\n if (filters) {\n if (additive) {\n this.filters = [\n ...this.filters.filter(\n (f) => !filters.find((ff) => ff.prop === f.prop)\n ),\n ...filters,\n ];\n } else {\n this.filters = filters;\n }\n }\n\n if (this.currentFilters === JSON.stringify(this.filters)) return;\n\n this._loading = true;\n const sortEvent = this.nanoTblBeforeFilter.emit({ filters: this.filters });\n if (sortEvent.defaultPrevented) return;\n perMark('filter');\n this.currentFilters = JSON.stringify(this.filters);\n\n // doesn't make sense to leave user in place for a search\n this.scrollToTop();\n\n if (this.customFilterFn) {\n try {\n const res = await this.customFilterFn(this.filters);\n\n // if the response is 'true', the custom filter did it's thing\n // handover to finish and stop loading state.\n // if response is falsy, carry on to do a FE filter\n if (res === true) {\n await this.filterComplete();\n this._loading = false;\n return;\n }\n } catch (e) {\n // if response errored, stop loading state\n // clear current sort cache\n console.warn('custom filter failed', e);\n this.currentFilters = '';\n this._loading = false;\n return;\n }\n }\n\n try {\n await this.filterComplete();\n } catch (e) {\n console.warn('filter failed', e);\n } finally {\n this._loading = false;\n }\n }\n\n private async filterComplete() {\n this.columns = this.columns.map((c) => {\n const cFilter = this.filters.find((f) => f.prop === c.prop);\n // if we found a filter AND\n // it isn't true / false and has a length OR\n // it is true or false\n if (\n cFilter &&\n ((typeof cFilter.filter !== 'boolean' && cFilter.filter.length) ||\n typeof cFilter.filter === 'boolean')\n )\n c.filter = cFilter.filter;\n // if a filter value is not set OR\n // it isn't true / false and has no length\n else if (\n (c.filter !== null && c.filter !== undefined) ||\n (!!c.filter && typeof c.filter !== 'boolean' && !c.filter.length)\n )\n c.filter = undefined;\n\n return c;\n });\n await storeFilter(this.host, this.filters);\n this.nanoTblAfterFilter.emit({ filters: this.filters });\n perMark('filter', true);\n }\n\n /** Scrolls to the top immediately - used whilst sorting / filtering */\n private scrollToTop(element?: HTMLElement) {\n const scrollBehaviour = this.scrollParent.style?.scrollBehavior;\n const scrollX = this.scrollParent.scrollLeft;\n this.scrollParent.style.scrollBehavior = 'auto';\n\n if (this.topAnchorEle && !isInViewport(this.topAnchorEle, 0.1)) {\n this.host.scrollIntoView();\n }\n if (element && !isInViewport(element, 1))\n setTimeout(() => element.scrollIntoView({ block: 'start' }), 500);\n\n if (scrollX) this.scrollParent.scrollLeft = scrollX;\n\n if (scrollBehaviour)\n this.scrollParent.style.scrollBehavior = scrollBehaviour;\n\n this.scrollHandler();\n }\n\n private setMeasureElement(): Promise<void> {\n return new Promise((resolve) => {\n readTask(() => {\n this.measureEle = this.blockElements.find(\n (b) => !b?.classList?.contains(`${CSSNAMESPACE}__inactive`)\n );\n resolve();\n });\n });\n }\n\n /**\n * Makes sure we have dimensions on at least one, active tbody element.\n * We'll use this is a yard stick for inactive tbody elements in future.\n * These elements have no natural height (on account of all their rows being hidden)\n */\n private setInitialBlockDimension() {\n if (!this.blockElements?.length) return;\n perMark('blockDims');\n\n const testForDimensions = async () => {\n await this.setMeasureElement();\n if (this.unitHeight) return true;\n return false;\n };\n\n const dimensionsReady: Promise<void> = new Promise((resolve) => {\n testForDimensions().then(async (ready) => {\n if (ready) resolve();\n else {\n // it's likely this table is hidden in the dom.\n // we need to wait until it's visible\n const observer = new IntersectionObserver(\n async () => {\n if (await testForDimensions()) {\n resolve();\n observer.disconnect();\n }\n },\n { root: this.scrollParent }\n );\n observer.observe(this.tableEle);\n }\n });\n });\n\n // we're all finished.\n dimensionsReady.then(() => {\n perMark('blockDims', true);\n perMark('init', true);\n requestAnimationFrame(() => (this.isReady = true));\n });\n }\n\n /** Apply initial columns settings */\n private async columnInit() {\n this.filters = (this.columns as TableTypes.NanoTable['columns'])\n .filter((c) => c.filter !== undefined && c.filter !== null)\n .map((c) => {\n const { filter, prop } = c;\n return { prop, filter };\n });\n\n if (this.searchTerm) {\n await this.searchStart();\n }\n\n if (this.filters.length) {\n await this.filterStart();\n }\n // apply sort\n const col = (this.columns as TableTypes.NanoTable['columns']).find(\n (c) => !!c.order\n );\n if (col) {\n await this.sortStart(col.order, col.prop);\n }\n if (this.tablePinnedService) this.tablePinnedService.assessCols();\n }\n\n /** Split up all incoming rows into 'blocks' split amongst tbody elements.\n * These can then be hidden / shown to improve performance.\n */\n private setBlocks() {\n const dRows = this.store.data.state.rows;\n if (!dRows.length) {\n this.blocks = [];\n return;\n }\n\n perMark('setBlocks');\n // this.ignoreIO = true;\n let i = 1;\n const l =\n this.virtualTotalItems > dRows.length\n ? this.virtualTotalItems\n : dRows.length;\n let rows: TableTypes.RowData[] = [];\n const blocks: TableTypes.TBody[] = [];\n\n // old skool loop for perf\n for (i; i <= l; i++) {\n rows.push(this.store.data.state.rows[i - 1] || { __uuid: '' });\n\n if (i % this.perBlock === 0) {\n // assign a UUID for the whole block\n // for block diffing\n blocks.push({ rows, __uuid: cyrb53(rows.map((b) => b.__uuid).join()) });\n rows = [];\n }\n }\n\n // any leftover rows\n if (rows.length) {\n blocks.push({ rows, __uuid: cyrb53(rows.map((b) => b.__uuid).join()) });\n }\n\n this.blocks = blocks;\n perMark('setBlocks', true);\n }\n\n /**\n * Returns a block render height.\n * If it's currently active - let auto do it's thing\n * If we've rendered it before - return that\n * If all else fails, let's guess it\n * @param blockIndex\n * @returns a height string (incl px)\n */\n private getBlockHeight(blockIndex: number): number {\n if (this.blockHeights.length) {\n const cachedBlockHeight = this.blockHeights.find(\n (bh) => bh.blockIndex === blockIndex\n );\n if (cachedBlockHeight && cachedBlockHeight.height)\n return cachedBlockHeight.height;\n }\n const blockLength = this.blocks[blockIndex].rows.length;\n if (blockLength === this.perBlock && this.measureHeight) {\n return this.measureHeight;\n }\n return this.unitHeight ? this.unitHeight * blockLength : 100;\n }\n\n /** cache the height for all active blocks for later renders */\n private setBlockHeight() {\n this.activeBlocks.forEach((blockIndex) => {\n const el = this.blockElements[blockIndex];\n if (!el) return;\n\n readTask(() => {\n if (el.classList.contains(`${CSSNAMESPACE}__inactive`)) return;\n\n const height = el.getBoundingClientRect().height;\n // cache height to our block heights array\n // for subsequent renders\n const fBhIdx = this.blockHeights.findIndex(\n (bh) => bh.blockIndex === blockIndex\n );\n if (fBhIdx > -1) {\n this.blockHeights[fBhIdx] = { height, blockIndex };\n } else this.blockHeights.push({ height, blockIndex });\n });\n });\n }\n\n /**\n * On scroll, loop through all blocks' heights and cumulatively, add them together.\n * When we find that the scroll position is less than this cumulative block height -\n * stop loop - it's on the current active block.\n */\n private scrollHandler = () => {\n let scrollPos: number = 0;\n\n perMark('scrollHandler');\n // don't listen if this table isn't in the viewport\n if (!this.store?.general.state.isActive || !this.rows) return;\n if (this.primaryBlockIndex === undefined) this.primaryBlockIndex = 0;\n\n readTask(() => {\n scrollPos =\n typeof this.scrollParent.scrollTop !== 'undefined'\n ? this.scrollParent.scrollTop\n : window.scrollY;\n scrollPos += this.host.offsetTop;\n\n if (this.tablePinnedService) {\n this.tablePinnedService.onScroll({\n x:\n typeof this.scrollParent.scrollLeft !== 'undefined'\n ? this.scrollParent.scrollLeft\n : window.scrollX,\n y: scrollPos,\n });\n }\n\n let cumulativeHeight = this.host.offsetTop;\n let blockIndex = 0;\n const blockLen = this.blocks.length;\n\n while (blockIndex < blockLen && scrollPos >= cumulativeHeight) {\n cumulativeHeight += this.getBlockHeight(blockIndex);\n\n if (scrollPos < cumulativeHeight) {\n const potentialBlocks = [\n blockIndex,\n blockIndex + 1,\n // Math.max(0, blockIndex - 1),\n ];\n if (potentialBlocks.toString() !== this.activeBlocks.toString()) {\n this.activeBlocks = potentialBlocks;\n }\n this.primaryBlockIndex = blockIndex;\n }\n blockIndex++;\n }\n perMark('scrollHandler', true);\n });\n };\n\n /** Process slotted content */\n private processSlots() {\n // see if we have slot content\n if (!this.caption && !this.host.querySelector('[slot=\"caption\"]')) {\n console.error(\n 'For accessibility you must set a `caption` prop or use the `caption` slot'\n );\n }\n }\n\n private handleResizeChange = (\n e: NanoResizeObserveCustomEvent<ResizeStateChangeEventDetail>\n ) => {\n this.tableWrapperEle.className = '';\n\n let classes: string[] = [`${CSSNAMESPACE}__wrap`];\n if (e.target?.className)\n classes = [...e.target.className.split(' '), ...classes];\n\n this.tableWrapperEle.classList.add(...classes.filter((cl) => !!cl));\n };\n\n /** Adds an IO. Makes sure our scroll listener is only active when\n * the table is in viewport */\n private setupActiveWatcher() {\n if (!this.host || !this.scrollParent || !this.store) return;\n\n if (this.activeWatcherIo) {\n this.activeWatcherIo.disconnect();\n this.activeWatcherIo = undefined;\n }\n const io = (this.activeWatcherIo = new IntersectionObserver(\n ([e]) => {\n if (e.isIntersecting) this.store.general.state.isActive = true;\n else this.store.general.state.isActive = false;\n },\n { root: this.scrollParent, threshold: 0 }\n ));\n io.observe(this.host);\n }\n\n // Component lifecycle\n\n async componentWillLoad() {\n perMark('init');\n // setup stores\n this.store = await generateStore(\n this.host,\n this.columns,\n this.scrollParent,\n this.isReady\n );\n this.handleRowsChange();\n this.store.general.onChange('isActive', () => {\n this.scrollHandler();\n });\n this.store.data.onChange('rows', () => this.setBlocks());\n\n // setup dom and attach listeners\n this.processSlots();\n this.setBlocks();\n this.scrollParent = findScrollParent(this.host);\n this.setupActiveWatcher();\n }\n\n connectedCallback(): void {\n this.scrollParent = findScrollParent(this.host);\n this.setupActiveWatcher();\n }\n\n componentDidLoad(): void {\n this.setInitialBlockDimension();\n if (!this.tablePinnedService) {\n this.tablePinnedService = new TablePinService(\n this.tableEle,\n this.scrollParent\n );\n }\n }\n\n componentShouldUpdate(_newVal, _oldVal, stateName: keyof Table) {\n // stop double rendering - we use the store for rendering internally\n // the public facing props are kept in-sync with the store\n // but we don't want it to cause renders\n if (['rows', 'columns'].includes(stateName)) return false;\n\n if (measurePerf) console.info(stateName, _newVal, _oldVal);\n }\n\n componentWillRender(): void | Promise<void> {\n perMark('render');\n }\n\n componentDidRender(): void {\n this.setMeasureElement().then(() => this.setBlockHeight());\n perMark('render', true);\n }\n\n disconnectedCallback(): void {\n if (!this.activeWatcherIo) return;\n this.activeWatcherIo.disconnect();\n this.activeWatcherIo = undefined;\n\n (this.scrollParent === document.documentElement\n ? document\n : this.scrollParent\n ).removeEventListener('scroll', this.scrollHandler);\n }\n\n render() {\n this.blockElements = [];\n\n return (\n <Host>\n <div\n class={`${CSSNAMESPACE}__top-anchor`}\n ref={(a) => (this.topAnchorEle = a)}\n >\n \n </div>\n\n <nano-resize-observe\n states=\"576w sm, 768w md\"\n class=\"sm md\"\n onNanoResizeStateChange={this.handleResizeChange}\n onNanoResize={() => {\n if (this.tablePinnedService) this.tablePinnedService.onResize();\n }}\n ></nano-resize-observe>\n\n <div\n class={`${CSSNAMESPACE}__wrap sm md`}\n ref={(div) => (this.tableWrapperEle = div)}\n aria-labelledby={'nano-table-caption-' + this.renderId}\n tabindex={this.type === 'grid' ? '0' : undefined}\n >\n <nano-progress-bar\n indeterminate\n class={{\n [`${CSSNAMESPACE}__progress-bar`]: true,\n [`${CSSNAMESPACE}__progress-bar--show`]: this._loading,\n }}\n />\n <table\n role={this.type === 'grid' ? 'grid' : undefined}\n aria-rowcount={this.store.data.state.rows.length}\n aria-colcount={this.store.config.state.columns.length}\n class={`${CSSNAMESPACE}`}\n ref={(tbl) => (this.tableEle = tbl)}\n id={'nano-table-' + this.renderId}\n >\n <caption\n class={{\n [`${CSSNAMESPACE}__caption`]: true,\n [`${CSSNAMESPACE}__caption--hide`]: !this.showCaption,\n }}\n id={'nano-table-caption-' + this.renderId}\n >\n <slot name=\"caption\">{this.caption}</slot>\n </caption>\n\n {/* Header */}\n <thead>\n <TableHeadFootRow rowRenderer={this.headRender}>\n {this.store.config.state.columns.map((colModel) => [\n <TableColHead\n column={colModel}\n headRenderer={this.headRender}\n onColumnSortClick={this.sortStart}\n defaults={{\n sortable: this.defaultSort,\n }}\n />,\n ])}\n </TableHeadFootRow>\n </thead>\n\n {this._loading && !this.blocks.length && (\n <tbody class={`${CSSNAMESPACE}__active ${CSSNAMESPACE}__loading`}>\n {[...Array(10).keys()].map((rowIndex) => (\n <tr>\n {this.store.config.state.columns.map(\n (_colModel, colIndex) => (\n <TableCell\n rowIndex={rowIndex}\n colIndex={colIndex}\n nestedContent={() => <nano-skeleton />}\n />\n )\n )}\n </tr>\n ))}\n </tbody>\n )}\n\n <tr hidden={!!this._loading || !!this.blocks.length}>\n <th\n class={`${CSSNAMESPACE}__th`}\n colSpan={this.store.config.state.columns.length}\n >\n <div class=\"nano-tbl__cell-content nano-tbl__cell-content--no-result\">\n <slot name=\"no-results\">No results found</slot>\n </div>\n </th>\n </tr>\n\n {/* Body */}\n {this.blocks.map((block, blockIndex) => (\n <tbody\n key={block.__uuid}\n id={`tbody-${this.renderId}-${blockIndex}`}\n ref={(tb) => {\n this.blockElements.push(tb);\n }}\n class={{\n [`${CSSNAMESPACE}__inactive`]:\n !this.activeBlocks.includes(blockIndex),\n [`${CSSNAMESPACE}__active`]:\n this.activeBlocks.includes(blockIndex),\n }}\n >\n {this.activeBlocks.includes(blockIndex) ? (\n block.rows.map((row, i) => {\n const rowIndex =\n blockIndex > 0 ? blockIndex * this.perBlock + i : i;\n return (\n <TableRow\n rowRenderer={this.rowRender}\n rowModel={row}\n rowIndex={rowIndex}\n >\n {this.store.config.state.columns.map(\n (_colModel, colIndex) => (\n <TableCell\n rowIndex={rowIndex}\n colIndex={colIndex}\n />\n )\n )}\n </TableRow>\n );\n })\n ) : (\n <tr class={`${CSSNAMESPACE}__tr--placeholder`}>\n <td\n colSpan={this.store.config.state.columns.length}\n style={{\n height: this.getBlockHeight(blockIndex) + 'px',\n }}\n />\n </tr>\n )}\n </tbody>\n ))}\n\n {/* Footer */}\n {this.showFooter && (\n <tfoot>\n <TableHeadFootRow rowRenderer={this.footRender}>\n {this.store.config.state.columns.map((colModel) => [\n <TableColHead\n column={colModel}\n headRenderer={this.footRender}\n onColumnSortClick={this.sortStart}\n defaults={{\n sortable: this.defaultSort,\n }}\n />,\n ])}\n </TableHeadFootRow>\n </tfoot>\n )}\n </table>\n\n {!!this.blocks.length && (\n <nano-spinner\n type=\"circle\"\n class={{\n [`${CSSNAMESPACE}__spinner`]: true,\n [`${CSSNAMESPACE}__spinner--show`]: this._loading,\n }}\n />\n )}\n </div>\n </Host>\n );\n }\n}\n"]}
|
@@ -84,8 +84,8 @@ function getCurrentFilters(workerStore) {
|
|
84
84
|
return filters;
|
85
85
|
}, []);
|
86
86
|
}
|
87
|
-
function filter(workerStore, rows, filters = []) {
|
88
|
-
if (!filters || !filters.length)
|
87
|
+
function filter(workerStore, rows, filters = [], force = false) {
|
88
|
+
if ((!filters || !filters.length) && !force)
|
89
89
|
filters = getCurrentFilters(workerStore);
|
90
90
|
if (!filters || !filters.length)
|
91
91
|
return rows;
|
@@ -120,7 +120,7 @@ export async function workerFilter(workerId, filters) {
|
|
120
120
|
: workerStore.searchTerm
|
121
121
|
? workerStore.filterRows
|
122
122
|
: workerStore.rows;
|
123
|
-
workerStore.filterRows = filter(workerStore, data, filters);
|
123
|
+
workerStore.filterRows = filter(workerStore, data, filters, true);
|
124
124
|
// apply sort
|
125
125
|
return sort(workerStore, workerStore.filterRows);
|
126
126
|
}
|
@@ -197,8 +197,7 @@ export async function workerSort(workerId, prop, order) {
|
|
197
197
|
return sort(workerStore, data, prop, order);
|
198
198
|
}
|
199
199
|
/** UTILS */
|
200
|
-
// used after a search
|
201
|
-
// (search acting like a filter 'reset' atm)
|
200
|
+
// used after a search
|
202
201
|
function applyFiltersAndSort(workerStore, rows) {
|
203
202
|
rows = filter(workerStore, rows);
|
204
203
|
return sort(workerStore, rows);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"table.worker.js","sourceRoot":"","sources":["../../../../src/components/table/table.worker.ts"],"names":[],"mappings":"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","sourcesContent":["import { filter as smartFilter } from 'smart-array-filter';\nimport type { TableTypes } from './table-interface';\n\n// we'll do ordering and filtering in here\n\n/** SETUP */\n\ninterface WorkerStore {\n rows: TableTypes.NanoTable['rows'];\n columns: Partial<TableTypes.ColumnConfig>[];\n filterRows?: TableTypes.NanoTable['rows'];\n searchTerm?: string;\n}\n\nconst dataWorkers: Map<string, WorkerStore> = new Map();\n\nfunction uid() {\n return Date.now().toString(36) + Math.random().toString(36).substring(2);\n}\n\n/**\n * Creates a new worker cache / store with the given data\n * @param rows\n * @param columns\n * @returns the newly created worker store ID\n */\nexport async function createWorkerStore(\n rows: TableTypes.NanoTable['rows'],\n columns: Partial<TableTypes.ColumnConfig>[]\n) {\n const id = uid();\n dataWorkers.set(id, { rows, columns: colsFromStore(columns) });\n return id;\n}\n\nexport async function syncDataToWorker(\n workerId: string,\n rows: TableTypes.NanoTable['rows']\n) {\n const workerStore = dataWorkers.get(workerId);\n if (!workerStore) throw new Error('cannot find worker with ID ' + workerId);\n\n workerStore.rows = rows;\n if (!workerStore.rows && !workerStore.columns) destroyWorkerStore(workerId);\n return true;\n}\n\n/**\n * Sync the column config to the worker store\n * @param workerId\n * @param columns\n * @returns `true` upon success\n */\nexport async function syncConfigToWorker(\n workerId: string,\n columns: Partial<TableTypes.ColumnConfig>[]\n) {\n const workerStore = dataWorkers.get(workerId);\n if (!workerStore) throw new Error('cannot find worker with ID ' + workerId);\n\n workerStore.columns = colsFromStore(columns);\n if (!workerStore.rows && !workerStore.columns) destroyWorkerStore(workerId);\n return true;\n}\n\n/** SEARCH */\n\n/**\n * A general text search across all table columns.\n * Search is the first thing we do. Cache the result for filtering / sorting\n * @param workerId\n * @param term\n * @returns the searched for data rows - with col filters / sorts also applied\n */\nexport async function workerSearch(workerId: string, term: string) {\n const workerStore = dataWorkers.get(workerId);\n if (!workerStore) throw new Error('cannot find worker with ID ' + workerId);\n\n workerStore.searchTerm = term;\n if (!term || !term.length) {\n workerStore.filterRows = workerStore.rows;\n return applyFiltersAndSort(workerStore, workerStore.rows);\n }\n\n const availCols = workerStore.columns.filter((c) => c.searchable !== false);\n // cache result\n workerStore.filterRows = smartFilter(workerStore.rows, {\n keywords: term,\n predicate: 'OR',\n includePaths: [...(availCols.map((c) => c.prop) as string[])],\n ignorePaths: ['__uuid', '__index'],\n });\n\n // apply filter and sort\n return applyFiltersAndSort(workerStore, workerStore.filterRows);\n}\n\n/** FILTER */\n\n/**\n * Finds any currently applied filter conditions from the column config\n * @param workerStore\n * @returns the found column filter object array\n */\nfunction getCurrentFilters(workerStore: WorkerStore) {\n return workerStore.columns\n .filter((c) => c.filter !== undefined && c.filter !== null)\n .reduce((filters, col) => {\n const { prop, filter } = col;\n filters.push({ prop, filter });\n return filters;\n }, [] as TableTypes.Filter[]);\n}\n\nfunction filter(\n workerStore: WorkerStore,\n rows: TableTypes.NanoTable['rows'],\n filters: TableTypes.Filter[] = []\n) {\n if (!filters || !filters.length) filters = getCurrentFilters(workerStore);\n if (!filters || !filters.length) return rows;\n\n filters.forEach((filter) => {\n if (typeof filter.filter === 'boolean') {\n rows = rows.filter((row) => row[filter.prop] === filter.filter);\n } else {\n rows = smartFilter(rows, {\n predicate: typeof filter.filter === 'string' ? 'AND' : 'OR',\n keywords: filter.filter,\n includePaths: [filter.prop as string],\n ignorePaths: ['__uuid', '__index'],\n });\n }\n });\n return rows;\n}\n\n/**\n * Filter the data rows based on the given filters\n * @param workerId\n * @param filters\n * @returns the filtered data rows\n */\nexport async function workerFilter(\n workerId: string,\n filters: TableTypes.Filter[]\n) {\n const workerStore = dataWorkers.get(workerId);\n if (!workerStore) throw new Error('cannot find worker with ID ' + workerId);\n\n // get cached results from a search\n const data =\n (!filters || !filters.length) && workerStore.searchTerm\n ? await workerSearch(workerId, workerStore.searchTerm)\n : workerStore.searchTerm\n ? workerStore.filterRows\n : workerStore.rows;\n workerStore.filterRows = filter(workerStore, data, filters);\n\n // apply sort\n return sort(workerStore, workerStore.filterRows);\n}\n\n/** SORT */\n\n/**\n * Finds any currently applied sort conditions from the column config\n * @param workerStore\n * @returns the found column name and it's sort direction\n */\nfunction getCurrentSort(workerStore: WorkerStore) {\n const foundSort = workerStore.columns.find((c) => !!c.order);\n\n if (foundSort) {\n const { prop, order } = foundSort;\n return { prop, order };\n }\n return null;\n}\n\nfunction sort(\n workerStore: WorkerStore,\n rows: TableTypes.NanoTable['rows'],\n prop?: TableTypes.Prop,\n order?: TableTypes.Order\n) {\n if (!prop && !order) {\n const currentSort = getCurrentSort(workerStore);\n if (currentSort) {\n ({ prop, order } = currentSort);\n }\n }\n if (!prop || !order || !rows.length) return rows;\n\n const col = workerStore.columns.find((c) => c.prop === prop);\n\n // custom sort\n if (!!col?.sortCompareFn && typeof col.sortCompareFn === 'function') {\n const sorted = rows.slice().sort(col.sortCompareFn(prop, order));\n return sorted;\n }\n\n // text sort\n if (col?.type === 'text' && typeof rows[0][prop] === 'string') {\n const sorted = rows.slice().sort((a, b) => {\n if (!a[prop]) return 1;\n if (!b[prop]) return -1;\n return order === 'asc'\n ? a[prop].localeCompare(b[prop])\n : b[prop].localeCompare(a[prop]);\n });\n return sorted;\n }\n\n // catch-all - number / date / string sort\n const sorted = rows.slice().sort((a, b) => {\n if (!a[prop]) return 1;\n if (!b[prop]) return -1;\n if (a[prop]! < b[prop]!) return order === 'asc' ? -1 : 1;\n if (a[prop]! > b[prop]!) return order === 'asc' ? 1 : -1;\n return 0;\n });\n return sorted;\n}\n\n/**\n * Finds and applies the sort conditions to the data rows\n * @param workerId\n * @param prop to sort by\n * @param order order to sort by\n * @returns the sorted data rows\n */\nexport async function workerSort(\n workerId: string,\n prop: TableTypes.Prop,\n order: TableTypes.Order\n) {\n // Sorting is the last thing we do - don't cache this, there's no point\n const workerStore = dataWorkers.get(workerId);\n if (!workerStore) throw new Error('cannot find worker with ID ' + workerId);\n\n // get cached results from a search / filter\n const data = workerStore.filterRows || workerStore.rows;\n return sort(workerStore, data, prop, order);\n}\n\n/** UTILS */\n\n// used after a search, it only sorts rn\n// (search acting like a filter 'reset' atm)\nfunction applyFiltersAndSort(\n workerStore: WorkerStore,\n rows: TableTypes.NanoTable['rows']\n) {\n rows = filter(workerStore, rows);\n return sort(workerStore, rows);\n}\n\nfunction colsFromStore(safeColumns: Partial<TableTypes.ColumnConfig>[]) {\n return safeColumns.map((c) => {\n if (c?.sortCompareFn && typeof c.sortCompareFn === 'string') {\n // eslint-disable-next-line @typescript-eslint/no-implied-eval\n c.sortCompareFn = new Function('return ' + c.sortCompareFn)();\n }\n return c;\n });\n}\n\n/**\n * Clean up\n * @param workerId\n */\nexport async function destroyWorkerStore(workerId: string) {\n dataWorkers.delete(workerId);\n}\n"]}
|
1
|
+
{"version":3,"file":"table.worker.js","sourceRoot":"","sources":["../../../../src/components/table/table.worker.ts"],"names":[],"mappings":"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","sourcesContent":["import { filter as smartFilter } from 'smart-array-filter';\nimport type { TableTypes } from './table-interface';\n\n// we'll do ordering and filtering in here\n\n/** SETUP */\n\ninterface WorkerStore {\n rows: TableTypes.NanoTable['rows'];\n columns: Partial<TableTypes.ColumnConfig>[];\n filterRows?: TableTypes.NanoTable['rows'];\n searchTerm?: string;\n}\n\nconst dataWorkers: Map<string, WorkerStore> = new Map();\n\nfunction uid() {\n return Date.now().toString(36) + Math.random().toString(36).substring(2);\n}\n\n/**\n * Creates a new worker cache / store with the given data\n * @param rows\n * @param columns\n * @returns the newly created worker store ID\n */\nexport async function createWorkerStore(\n rows: TableTypes.NanoTable['rows'],\n columns: Partial<TableTypes.ColumnConfig>[]\n) {\n const id = uid();\n dataWorkers.set(id, { rows, columns: colsFromStore(columns) });\n return id;\n}\n\nexport async function syncDataToWorker(\n workerId: string,\n rows: TableTypes.NanoTable['rows']\n) {\n const workerStore = dataWorkers.get(workerId);\n if (!workerStore) throw new Error('cannot find worker with ID ' + workerId);\n\n workerStore.rows = rows;\n if (!workerStore.rows && !workerStore.columns) destroyWorkerStore(workerId);\n return true;\n}\n\n/**\n * Sync the column config to the worker store\n * @param workerId\n * @param columns\n * @returns `true` upon success\n */\nexport async function syncConfigToWorker(\n workerId: string,\n columns: Partial<TableTypes.ColumnConfig>[]\n) {\n const workerStore = dataWorkers.get(workerId);\n if (!workerStore) throw new Error('cannot find worker with ID ' + workerId);\n\n workerStore.columns = colsFromStore(columns);\n if (!workerStore.rows && !workerStore.columns) destroyWorkerStore(workerId);\n return true;\n}\n\n/** SEARCH */\n\n/**\n * A general text search across all table columns.\n * Search is the first thing we do. Cache the result for filtering / sorting\n * @param workerId\n * @param term\n * @returns the searched for data rows - with col filters / sorts also applied\n */\nexport async function workerSearch(workerId: string, term: string) {\n const workerStore = dataWorkers.get(workerId);\n if (!workerStore) throw new Error('cannot find worker with ID ' + workerId);\n\n workerStore.searchTerm = term;\n if (!term || !term.length) {\n workerStore.filterRows = workerStore.rows;\n return applyFiltersAndSort(workerStore, workerStore.rows);\n }\n\n const availCols = workerStore.columns.filter((c) => c.searchable !== false);\n // cache result\n workerStore.filterRows = smartFilter(workerStore.rows, {\n keywords: term,\n predicate: 'OR',\n includePaths: [...(availCols.map((c) => c.prop) as string[])],\n ignorePaths: ['__uuid', '__index'],\n });\n\n // apply filter and sort\n return applyFiltersAndSort(workerStore, workerStore.filterRows);\n}\n\n/** FILTER */\n\n/**\n * Finds any currently applied filter conditions from the column config\n * @param workerStore\n * @returns the found column filter object array\n */\nfunction getCurrentFilters(workerStore: WorkerStore) {\n return workerStore.columns\n .filter((c) => c.filter !== undefined && c.filter !== null)\n .reduce((filters, col) => {\n const { prop, filter } = col;\n filters.push({ prop, filter });\n return filters;\n }, [] as TableTypes.Filter[]);\n}\n\nfunction filter(\n workerStore: WorkerStore,\n rows: TableTypes.NanoTable['rows'],\n filters: TableTypes.Filter[] = [],\n force = false\n) {\n if ((!filters || !filters.length) && !force)\n filters = getCurrentFilters(workerStore);\n if (!filters || !filters.length) return rows;\n\n filters.forEach((filter) => {\n if (typeof filter.filter === 'boolean') {\n rows = rows.filter((row) => row[filter.prop] === filter.filter);\n } else {\n rows = smartFilter(rows, {\n predicate: typeof filter.filter === 'string' ? 'AND' : 'OR',\n keywords: filter.filter,\n includePaths: [filter.prop as string],\n ignorePaths: ['__uuid', '__index'],\n });\n }\n });\n return rows;\n}\n\n/**\n * Filter the data rows based on the given filters\n * @param workerId\n * @param filters\n * @returns the filtered data rows\n */\nexport async function workerFilter(\n workerId: string,\n filters: TableTypes.Filter[]\n) {\n const workerStore = dataWorkers.get(workerId);\n if (!workerStore) throw new Error('cannot find worker with ID ' + workerId);\n\n // get cached results from a search\n const data =\n (!filters || !filters.length) && workerStore.searchTerm\n ? await workerSearch(workerId, workerStore.searchTerm)\n : workerStore.searchTerm\n ? workerStore.filterRows\n : workerStore.rows;\n\n workerStore.filterRows = filter(workerStore, data, filters, true);\n\n // apply sort\n return sort(workerStore, workerStore.filterRows);\n}\n\n/** SORT */\n\n/**\n * Finds any currently applied sort conditions from the column config\n * @param workerStore\n * @returns the found column name and it's sort direction\n */\nfunction getCurrentSort(workerStore: WorkerStore) {\n const foundSort = workerStore.columns.find((c) => !!c.order);\n\n if (foundSort) {\n const { prop, order } = foundSort;\n return { prop, order };\n }\n return null;\n}\n\nfunction sort(\n workerStore: WorkerStore,\n rows: TableTypes.NanoTable['rows'],\n prop?: TableTypes.Prop,\n order?: TableTypes.Order\n) {\n if (!prop && !order) {\n const currentSort = getCurrentSort(workerStore);\n if (currentSort) {\n ({ prop, order } = currentSort);\n }\n }\n if (!prop || !order || !rows.length) return rows;\n\n const col = workerStore.columns.find((c) => c.prop === prop);\n\n // custom sort\n if (!!col?.sortCompareFn && typeof col.sortCompareFn === 'function') {\n const sorted = rows.slice().sort(col.sortCompareFn(prop, order));\n return sorted;\n }\n\n // text sort\n if (col?.type === 'text' && typeof rows[0][prop] === 'string') {\n const sorted = rows.slice().sort((a, b) => {\n if (!a[prop]) return 1;\n if (!b[prop]) return -1;\n return order === 'asc'\n ? a[prop].localeCompare(b[prop])\n : b[prop].localeCompare(a[prop]);\n });\n return sorted;\n }\n\n // catch-all - number / date / string sort\n const sorted = rows.slice().sort((a, b) => {\n if (!a[prop]) return 1;\n if (!b[prop]) return -1;\n if (a[prop]! < b[prop]!) return order === 'asc' ? -1 : 1;\n if (a[prop]! > b[prop]!) return order === 'asc' ? 1 : -1;\n return 0;\n });\n return sorted;\n}\n\n/**\n * Finds and applies the sort conditions to the data rows\n * @param workerId\n * @param prop to sort by\n * @param order order to sort by\n * @returns the sorted data rows\n */\nexport async function workerSort(\n workerId: string,\n prop: TableTypes.Prop,\n order: TableTypes.Order\n) {\n // Sorting is the last thing we do - don't cache this, there's no point\n const workerStore = dataWorkers.get(workerId);\n if (!workerStore) throw new Error('cannot find worker with ID ' + workerId);\n\n // get cached results from a search / filter\n const data = workerStore.filterRows || workerStore.rows;\n return sort(workerStore, data, prop, order);\n}\n\n/** UTILS */\n\n// used after a search\nfunction applyFiltersAndSort(\n workerStore: WorkerStore,\n rows: TableTypes.NanoTable['rows']\n) {\n rows = filter(workerStore, rows);\n return sort(workerStore, rows);\n}\n\nfunction colsFromStore(safeColumns: Partial<TableTypes.ColumnConfig>[]) {\n return safeColumns.map((c) => {\n if (c?.sortCompareFn && typeof c.sortCompareFn === 'string') {\n // eslint-disable-next-line @typescript-eslint/no-implied-eval\n c.sortCompareFn = new Function('return ' + c.sortCompareFn)();\n }\n return c;\n });\n}\n\n/**\n * Clean up\n * @param workerId\n */\nexport async function destroyWorkerStore(workerId: string) {\n dataWorkers.delete(workerId);\n}\n"]}
|
package/dist/collection/index.js
CHANGED
@@ -6,6 +6,8 @@ export * from './components/alert/alert.helpers';
|
|
6
6
|
export * from './components/dialog/dialog.helpers';
|
7
7
|
export { debounce as nanoDebounce, throttle as nanoThrottle, } from './utils/throttle';
|
8
8
|
export { getTabbableElements as nanoGetTabElements } from './utils/tabbable';
|
9
|
+
export * from './components';
|
10
|
+
export { h } from '@stencil/core';
|
9
11
|
export const initialize = (helpers = {}) => {
|
10
12
|
if (typeof window === 'undefined') {
|
11
13
|
return;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,sDAAsD;AACtD,cAAc,kCAAkC,CAAC;AACjD,cAAc,oCAAoC,CAAC;AACnD,OAAO,EACL,QAAQ,IAAI,YAAY,EACxB,QAAQ,IAAI,YAAY,GACzB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,mBAAmB,IAAI,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,sDAAsD;AACtD,cAAc,kCAAkC,CAAC;AACjD,cAAc,oCAAoC,CAAC;AACnD,OAAO,EACL,QAAQ,IAAI,YAAY,EACxB,QAAQ,IAAI,YAAY,GACzB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,mBAAmB,IAAI,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC7E,cAAc,cAAc,CAAC;AAC7B,OAAO,EAAE,CAAC,EAAE,MAAM,eAAe,CAAC;AAElC,MAAM,CAAC,MAAM,UAAU,GAAG,CACxB,UAAiD,EAAE,EACnD,EAAE;IACF,IAAI,OAAQ,MAAc,KAAK,WAAW,EAAE,CAAC;QAC3C,OAAO;IACT,CAAC;IAED,MAAM,eAAe,GAAQ,EAAE,CAAC;IAChC,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,eAAe,CAAC,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IACrC,CAAC;IACD,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,eAAe,CAAC,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IACrC,CAAC;IACD,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,eAAe,CAAC,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC;IACnC,CAAC;IACD,uCAAuC;AACzC,CAAC,CAAC","sourcesContent":["// import { setPlatformHelpers } from '@stencil/core';\nexport * from './components/alert/alert.helpers';\nexport * from './components/dialog/dialog.helpers';\nexport {\n debounce as nanoDebounce,\n throttle as nanoThrottle,\n} from './utils/throttle';\nexport { getTabbableElements as nanoGetTabElements } from './utils/tabbable';\nexport * from './components';\nexport { h } from '@stencil/core';\n\nexport const initialize = (\n helpers: { _ael?: any; _ce?: any; _rel?: any } = {}\n) => {\n if (typeof (window as any) === 'undefined') {\n return;\n }\n\n const platformHelpers: any = {};\n if (helpers._ael) {\n platformHelpers.ael = helpers._ael;\n }\n if (helpers._rel) {\n platformHelpers.rel = helpers._rel;\n }\n if (helpers._ce) {\n platformHelpers.ce = helpers._ce;\n }\n // setPlatformHelpers(platformHelpers);\n};\n"]}
|
@@ -1 +1 @@
|
|
1
|
-
{"file":"algolia-data.js","mappings":";;;;;AAAO,IAAI,qBAAqB,GAAG,YAAY;AAC/C,IAAI,IAAI,OAAO,CAAC;AAChB,IAAI,IAAI,OAAO,GAAG,IAAI,OAAO,CAAC,UAAU,GAAG,EAAE,EAAE,OAAO,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;AACjE,IAAI,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AAClD,CAAC;;ACFM,IAAI,YAAY,GAAG,UAAU,SAAS,EAAE,KAAK,EAAE;AACtD,IAAI,IAAI,kBAAkB,GAAG,SAAS,CAAC,SAAS,CAAC;AACjD,IAAI,IAAI,iBAAiB,GAAG,kBAAkB,CAAC,iBAAiB,CAAC;AACjE,IAAI,kBAAkB,CAAC,iBAAiB,GAAG,YAAY;AACvD,QAAQ,IAAI,KAAK,GAAG,IAAI,CAAC;AACzB,QAAQ,IAAI,EAAE,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;AAClC,QAAQ,IAAI,MAAM,GAAG,qBAAqB,EAAE,CAAC;AAC7C,QAAQ,IAAI,KAAK,GAAG,IAAI,WAAW,CAAC,cAAc,EAAE;AACpD,YAAY,OAAO,EAAE,IAAI;AACzB,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,MAAM,EAAE;AACpB,gBAAgB,QAAQ,EAAE,IAAI;AAC9B,gBAAgB,MAAM,EAAE,KAAK;AAC7B,gBAAgB,OAAO,EAAE,UAAU,IAAI,EAAE,KAAK,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,EAAE;AACxE,gBAAgB,MAAM,EAAE,MAAM;AAC9B,aAAa;AACb,SAAS,CAAC,CAAC;AACX,QAAQ,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAChC,QAAQ,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY;AAC/C,YAAY,IAAI,iBAAiB,EAAE;AACnC,gBAAgB,OAAO,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACrD,aAAa;AACb,SAAS,CAAC,CAAC;AACX,KAAK,CAAC;AACN,CAAC;;ICbW;AAAZ,WAAY,iBAAiB;IAC3B,sCAAiB,CAAA;IACjB,kCAAa,CAAA;IACb,wCAAmB,CAAA;IACnB,kCAAa,CAAA;AACf,CAAC,EALW,iBAAiB,KAAjB,iBAAiB,QAK5B;MAqBY,QAAQ,GAAG,CACtB,SAAsC,EACtC,KAA8B,KAC3B,YAAY,CAAC,SAAS,EAAE,KAAK;;;;","names":[],"sources":["../../node_modules/.pnpm/stencil-wormhole@3.2.1_@stencil+core@4.27.
|
1
|
+
{"file":"algolia-data.js","mappings":";;;;;AAAO,IAAI,qBAAqB,GAAG,YAAY;AAC/C,IAAI,IAAI,OAAO,CAAC;AAChB,IAAI,IAAI,OAAO,GAAG,IAAI,OAAO,CAAC,UAAU,GAAG,EAAE,EAAE,OAAO,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;AACjE,IAAI,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AAClD,CAAC;;ACFM,IAAI,YAAY,GAAG,UAAU,SAAS,EAAE,KAAK,EAAE;AACtD,IAAI,IAAI,kBAAkB,GAAG,SAAS,CAAC,SAAS,CAAC;AACjD,IAAI,IAAI,iBAAiB,GAAG,kBAAkB,CAAC,iBAAiB,CAAC;AACjE,IAAI,kBAAkB,CAAC,iBAAiB,GAAG,YAAY;AACvD,QAAQ,IAAI,KAAK,GAAG,IAAI,CAAC;AACzB,QAAQ,IAAI,EAAE,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;AAClC,QAAQ,IAAI,MAAM,GAAG,qBAAqB,EAAE,CAAC;AAC7C,QAAQ,IAAI,KAAK,GAAG,IAAI,WAAW,CAAC,cAAc,EAAE;AACpD,YAAY,OAAO,EAAE,IAAI;AACzB,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,MAAM,EAAE;AACpB,gBAAgB,QAAQ,EAAE,IAAI;AAC9B,gBAAgB,MAAM,EAAE,KAAK;AAC7B,gBAAgB,OAAO,EAAE,UAAU,IAAI,EAAE,KAAK,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,EAAE;AACxE,gBAAgB,MAAM,EAAE,MAAM;AAC9B,aAAa;AACb,SAAS,CAAC,CAAC;AACX,QAAQ,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAChC,QAAQ,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY;AAC/C,YAAY,IAAI,iBAAiB,EAAE;AACnC,gBAAgB,OAAO,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACrD,aAAa;AACb,SAAS,CAAC,CAAC;AACX,KAAK,CAAC;AACN,CAAC;;ICbW;AAAZ,WAAY,iBAAiB;IAC3B,sCAAiB,CAAA;IACjB,kCAAa,CAAA;IACb,wCAAmB,CAAA;IACnB,kCAAa,CAAA;AACf,CAAC,EALW,iBAAiB,KAAjB,iBAAiB,QAK5B;MAqBY,QAAQ,GAAG,CACtB,SAAsC,EACtC,KAA8B,KAC3B,YAAY,CAAC,SAAS,EAAE,KAAK;;;;","names":[],"sources":["../../node_modules/.pnpm/stencil-wormhole@3.2.1_@stencil+core@4.27.2/node_modules/stencil-wormhole/dist/esm/deferred.js","../../node_modules/.pnpm/stencil-wormhole@3.2.1_@stencil+core@4.27.2/node_modules/stencil-wormhole/dist/esm/consumer.js","src/components/algolia/algolia-data.ts"],"sourcesContent":["export var createDeferredPromise = function () {\n var resolve;\n var promise = new Promise(function (res) { resolve = res; });\n return { promise: promise, resolve: resolve };\n};\n","import { getElement } from \"@stencil/core\";\nimport { createDeferredPromise } from \"./deferred\";\nexport var openWormhole = function (Component, props) {\n var ComponentPrototype = Component.prototype;\n var componentWillLoad = ComponentPrototype.componentWillLoad;\n ComponentPrototype.componentWillLoad = function () {\n var _this = this;\n var el = getElement(this);\n var onOpen = createDeferredPromise();\n var event = new CustomEvent('openWormhole', {\n bubbles: true,\n composed: true,\n detail: {\n consumer: this,\n fields: props,\n updater: function (prop, value) { _this[prop] = value; },\n onOpen: onOpen,\n },\n });\n el.dispatchEvent(event);\n return onOpen.promise.then(function () {\n if (componentWillLoad) {\n return componentWillLoad.call(_this);\n }\n });\n };\n};\n","import {\n openWormhole,\n type WormholeConsumerConstructor,\n} from 'stencil-wormhole';\nimport type { SearchIndex as AlgoliaIndex } from 'algoliasearch';\nimport type { StorageMethods } from '../../utils/store/component-store';\n\nimport type {\n IndexResult,\n AlgoliaResultHit,\n SearchIndex,\n} from './algolia-interface';\n\nexport enum SearchChangeEvent {\n Filter = 'filter',\n Page = 'page',\n Replica = 'replica',\n Init = 'init',\n}\n\nexport interface WormholeState {\n indexResults: IndexResult;\n filterChanged?: string;\n facets?: {\n [prop: string]: {\n [prop: string]: number;\n };\n };\n results: AlgoliaResultHit[];\n resultsPage: number;\n tplRenderFn?: (...args: any[]) => any;\n changeEvent: SearchChangeEvent;\n algoliaIndex: AlgoliaIndex;\n searchIndex: SearchIndex;\n browseIndex: boolean;\n globalStoreMethod: StorageMethods;\n isLoading: boolean;\n}\n\nexport const Wormhole = (\n Component: WormholeConsumerConstructor,\n props: (keyof WormholeState)[]\n) => openWormhole(Component, props);\n\nexport * from 'stencil-wormhole';\n"],"version":3}
|