@nanoporetech-digital/components 1.13.21 → 1.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +653 -14
- package/README.md +3 -2
- package/dist/cjs/{algolia-data-771a61ea.js → algolia-data-a98ccf4f.js} +2 -2
- package/dist/cjs/algolia-data-a98ccf4f.js.map +1 -0
- package/dist/cjs/algoliasearch.umd-5dc661c5.js +12 -0
- package/dist/cjs/algoliasearch.umd-5dc661c5.js.map +1 -0
- package/dist/cjs/{component-store-c8440fd7.js → component-store-8d99743e.js} +2 -2
- package/dist/cjs/{component-store-c8440fd7.js.map → component-store-8d99743e.js.map} +1 -1
- package/dist/cjs/{css-shim-208c6c2d.js → css-shim-8983f2ba.js} +2 -2
- package/dist/cjs/{css-shim-208c6c2d.js.map → css-shim-8983f2ba.js.map} +1 -1
- package/dist/cjs/{dom-1b5e30a5.js → dom-28d4395c.js} +2 -2
- package/dist/cjs/{dom-1b5e30a5.js.map → dom-28d4395c.js.map} +1 -1
- package/dist/cjs/{global-befb7a64.js → global-aa92d50f.js} +5 -3
- package/dist/cjs/global-aa92d50f.js.map +1 -0
- package/dist/cjs/{utils-e9e37c80.js → index-e517a673.js} +1 -1
- package/dist/cjs/{utils-e9e37c80.js.map → index-e517a673.js.map} +1 -1
- package/dist/cjs/{index-43791691.js → index-f12395b8.js} +10 -3
- package/dist/cjs/index-f12395b8.js.map +1 -0
- package/dist/cjs/index.cjs.js +4 -4
- package/dist/cjs/index.cjs.js.map +1 -1
- package/dist/cjs/loader.cjs.js +5 -5
- package/dist/cjs/loader.cjs.js.map +1 -1
- package/dist/cjs/nano-accordion.cjs.entry.js +1 -1
- package/dist/cjs/nano-accordion.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-alert.cjs.entry.js +7 -7
- package/dist/cjs/nano-alert.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-algolia-filter.cjs.entry.js +3 -3
- package/dist/cjs/nano-algolia-filter.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-algolia-input.cjs.entry.js +5 -5
- package/dist/cjs/nano-algolia-input.cjs.entry.js.map +1 -1
- 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 +5 -5
- package/dist/cjs/nano-algolia.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-aspect-ratio.cjs.entry.js +12 -4
- package/dist/cjs/nano-aspect-ratio.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-checkbox-group.cjs.entry.js +31 -16
- package/dist/cjs/nano-checkbox-group.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-checkbox.cjs.entry.js +33 -15
- package/dist/cjs/nano-checkbox.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-components.cjs.js +5 -5
- package/dist/cjs/nano-components.cjs.js.map +1 -1
- package/dist/cjs/nano-date-input.cjs.entry.js +45 -13
- package/dist/cjs/nano-date-input.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-date-picker_2.cjs.entry.js +117 -72
- package/dist/cjs/nano-date-picker_2.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-details.cjs.entry.js +16 -10
- package/dist/cjs/nano-details.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-dialog.cjs.entry.js +5 -9
- package/dist/cjs/nano-dialog.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-drawer.cjs.entry.js +1 -1
- package/dist/cjs/nano-file-upload.cjs.entry.js +7 -14
- package/dist/cjs/nano-file-upload.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-global-nav.cjs.entry.js +6 -6
- package/dist/cjs/nano-global-nav.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-global-search-results.cjs.entry.js +2 -2
- package/dist/cjs/nano-grid_3.cjs.entry.js +1 -1
- package/dist/cjs/nano-grid_3.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-hero.cjs.entry.js +3 -3
- package/dist/cjs/nano-hero.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-icon-button.cjs.entry.js +2 -2
- package/dist/cjs/nano-icon.cjs.entry.js +1 -1
- package/dist/cjs/nano-input.cjs.entry.js +12 -2
- package/dist/cjs/nano-input.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-menu-drawer.cjs.entry.js +1 -1
- package/dist/cjs/nano-menu-drawer.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-menu.cjs.entry.js +2 -2
- package/dist/cjs/nano-menu.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-nav-item_2.cjs.entry.js +6 -6
- package/dist/cjs/nano-nav-item_2.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-range.cjs.entry.js +11 -11
- package/dist/cjs/nano-range.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-rating.cjs.entry.js +3 -3
- 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-resize-observe_2.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-select-option.cjs.entry.js +1 -1
- package/dist/cjs/nano-slide.cjs.entry.js +1 -1
- package/dist/cjs/nano-slides.cjs.entry.js +2 -2
- package/dist/cjs/nano-spinner.cjs.entry.js +2 -2
- package/dist/cjs/nano-sticker.cjs.entry.js +9 -9
- package/dist/cjs/nano-sticker.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-tab-content.cjs.entry.js +1 -1
- package/dist/cjs/nano-tab-group.cjs.entry.js +6 -6
- package/dist/cjs/nano-tab-group.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-tab.cjs.entry.js +2 -2
- package/dist/cjs/nano-tooltip.cjs.entry.js +49 -35
- package/dist/cjs/nano-tooltip.cjs.entry.js.map +1 -1
- package/dist/cjs/{popover-eccc07bd.js → popover-9289f217.js} +32 -32
- package/dist/cjs/popover-9289f217.js.map +1 -0
- package/dist/cjs/{shadow-css-c5dce0c8.js → shadow-css-a482ec93.js} +2 -2
- package/dist/cjs/shadow-css-a482ec93.js.map +1 -0
- package/dist/collection/collection-manifest.json +1 -1
- package/dist/collection/components/accordion/accordion.js +2 -2
- package/dist/collection/components/accordion/accordion.js.map +1 -1
- package/dist/collection/components/alert/alert.css +3 -3
- package/dist/collection/components/alert/alert.helpers.js +1 -1
- package/dist/collection/components/alert/alert.helpers.js.map +1 -1
- package/dist/collection/components/alert/alert.js +2 -2
- package/dist/collection/components/alert/alert.js.map +1 -1
- package/dist/collection/components/algolia/algolia-data.js.map +1 -1
- package/dist/collection/components/algolia/algolia-filter.js +3 -3
- package/dist/collection/components/algolia/algolia-filter.js.map +1 -1
- package/dist/collection/components/algolia/algolia-input.js +7 -7
- package/dist/collection/components/algolia/algolia-input.js.map +1 -1
- package/dist/collection/components/algolia/algolia-results.js +1 -1
- package/dist/collection/components/algolia/algolia.js +8 -8
- package/dist/collection/components/algolia/algolia.js.map +1 -1
- package/dist/collection/components/aspect-ratio/aspect-ratio.js +9 -1
- package/dist/collection/components/aspect-ratio/aspect-ratio.js.map +1 -1
- package/dist/collection/components/checkbox/__tests__/__fixtures__/checkbox-templates.js +117 -0
- package/dist/collection/components/checkbox/__tests__/__fixtures__/checkbox-templates.js.map +1 -0
- package/dist/collection/components/checkbox/checkbox-group.css +3 -3
- package/dist/collection/components/checkbox/checkbox-group.js +39 -26
- package/dist/collection/components/checkbox/checkbox-group.js.map +1 -1
- package/dist/collection/components/checkbox/checkbox.css +13 -2
- package/dist/collection/components/checkbox/checkbox.js +63 -28
- package/dist/collection/components/checkbox/checkbox.js.map +1 -1
- package/dist/collection/components/date-input/date-input.css +2 -4
- package/dist/collection/components/date-input/date-input.js +81 -29
- package/dist/collection/components/date-input/date-input.js.map +1 -1
- package/dist/collection/components/date-picker/date-picker.css +15 -4
- package/dist/collection/components/date-picker/date-picker.js +45 -17
- package/dist/collection/components/date-picker/date-picker.js.map +1 -1
- package/dist/collection/components/details/details.css +3 -3
- package/dist/collection/components/details/details.js +14 -8
- package/dist/collection/components/details/details.js.map +1 -1
- package/dist/collection/components/dialog/dialog.css +2 -3
- package/dist/collection/components/dialog/dialog.js +6 -10
- package/dist/collection/components/dialog/dialog.js.map +1 -1
- package/dist/collection/components/dropdown/dropdown.js +134 -85
- package/dist/collection/components/dropdown/dropdown.js.map +1 -1
- package/dist/collection/components/file-upload/file-upload-interface.js.map +1 -1
- package/dist/collection/components/file-upload/file-upload.css +9 -17
- package/dist/collection/components/file-upload/file-upload.js +17 -20
- package/dist/collection/components/file-upload/file-upload.js.map +1 -1
- package/dist/collection/components/global-nav/global-nav.css +2 -2
- package/dist/collection/components/global-nav/global-nav.js +5 -5
- package/dist/collection/components/global-nav/global-nav.js.map +1 -1
- package/dist/collection/components/global-search-results/global-search-results.css +3 -3
- package/dist/collection/components/grid/grid-item.js +1 -1
- package/dist/collection/components/grid/grid.js +1 -1
- package/dist/collection/components/grid/grid.js.map +1 -1
- package/dist/collection/components/hero/hero.js +1 -1
- package/dist/collection/components/hero/hero.js.map +1 -1
- package/dist/collection/components/icon/icon.js +1 -1
- package/dist/collection/components/icon-button/icon-button.css +2 -2
- package/dist/collection/components/input/input.css +9 -11
- package/dist/collection/components/input/input.js +26 -7
- package/dist/collection/components/input/input.js.map +1 -1
- package/dist/collection/components/menu/menu.css +7 -7
- package/dist/collection/components/menu/menu.js +1 -1
- package/dist/collection/components/menu/menu.js.map +1 -1
- package/dist/collection/components/menu-drawer/menu-drawer.js +1 -1
- package/dist/collection/components/menu-drawer/menu-drawer.js.map +1 -1
- package/dist/collection/components/nav-item/nav-item.js +5 -5
- package/dist/collection/components/nav-item/nav-item.js.map +1 -1
- package/dist/collection/components/range/range.css +4 -4
- package/dist/collection/components/range/range.js +5 -5
- package/dist/collection/components/range/range.js.map +1 -1
- package/dist/collection/components/rating/rating.js +1 -1
- package/dist/collection/components/rating/rating.js.map +1 -1
- package/dist/collection/components/resize-observe/resize-observe.js +2 -2
- package/dist/collection/components/resize-observe/resize-observe.js.map +1 -1
- package/dist/collection/components/select/select.css +4 -4
- package/dist/collection/components/select/select.js +6 -6
- package/dist/collection/components/select/select.js.map +1 -1
- package/dist/collection/components/slides/slides.css +2 -2
- package/dist/collection/components/slides/slides.js +7 -7
- package/dist/collection/components/spinner/spinner.css +2 -2
- package/dist/collection/components/sticky/sticker.js +1 -1
- package/dist/collection/components/sticky/sticker.js.map +1 -1
- package/dist/collection/components/tabs/tab-group.css +6 -6
- package/dist/collection/components/tabs/tab-group.js +3 -3
- package/dist/collection/components/tabs/tab-group.js.map +1 -1
- package/dist/collection/components/tabs/tab.css +2 -2
- package/dist/collection/components/tooltip/tooltip.css +15 -13
- package/dist/collection/components/tooltip/tooltip.js +50 -34
- package/dist/collection/components/tooltip/tooltip.js.map +1 -1
- package/dist/collection/global/script/global.js +4 -2
- package/dist/collection/global/script/global.js.map +1 -1
- package/dist/collection/index.js +1 -1
- package/dist/collection/index.js.map +1 -1
- package/dist/collection/utils/gesture/swipe-back.js +1 -1
- package/dist/collection/utils/gesture/swipe-back.js.map +1 -1
- package/dist/collection/utils/{utils.js → index.js} +1 -1
- package/dist/collection/utils/{utils.js.map → index.js.map} +1 -1
- package/dist/collection/utils/store/component-store.js +1 -1
- package/dist/collection/utils/store/component-store.js.map +1 -1
- package/dist/collection/utils/testing/index.js +242 -0
- package/dist/collection/utils/testing/index.js.map +1 -0
- package/dist/custom-elements/index.js +374 -228
- package/dist/custom-elements/index.js.map +1 -1
- package/dist/esm/{algolia-data-a84aeef1.js → algolia-data-b31a9800.js} +2 -2
- package/dist/esm/algolia-data-b31a9800.js.map +1 -0
- package/dist/esm/algoliasearch.umd-7ecbe0e9.js +10 -0
- package/dist/esm/algoliasearch.umd-7ecbe0e9.js.map +1 -0
- package/dist/esm/{component-store-182d1931.js → component-store-93172454.js} +2 -2
- package/dist/esm/{component-store-182d1931.js.map → component-store-93172454.js.map} +1 -1
- package/dist/esm/{css-shim-f12af614.js → css-shim-4e602522.js} +2 -2
- package/dist/esm/{css-shim-f12af614.js.map → css-shim-4e602522.js.map} +1 -1
- package/dist/esm/{dom-2f25dd5a.js → dom-acc01cc2.js} +2 -2
- package/dist/esm/{dom-2f25dd5a.js.map → dom-acc01cc2.js.map} +1 -1
- package/dist/esm/{global-c85d24a2.js → global-118ae701.js} +5 -3
- package/dist/esm/global-118ae701.js.map +1 -0
- package/dist/esm/{utils-fd1ada22.js → index-269c88a9.js} +1 -1
- package/dist/esm/{utils-fd1ada22.js.map → index-269c88a9.js.map} +1 -1
- package/dist/esm/{index-20becda2.js → index-912ef959.js} +10 -3
- package/dist/esm/index-912ef959.js.map +1 -0
- package/dist/esm/index.js +2 -2
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/loader.js +5 -5
- package/dist/esm/loader.js.map +1 -1
- package/dist/esm/nano-accordion.entry.js +1 -1
- package/dist/esm/nano-accordion.entry.js.map +1 -1
- package/dist/esm/nano-alert.entry.js +3 -3
- package/dist/esm/nano-alert.entry.js.map +1 -1
- package/dist/esm/nano-algolia-filter.entry.js +3 -3
- package/dist/esm/nano-algolia-filter.entry.js.map +1 -1
- package/dist/esm/nano-algolia-input.entry.js +5 -5
- package/dist/esm/nano-algolia-input.entry.js.map +1 -1
- 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 +5 -5
- package/dist/esm/nano-algolia.entry.js.map +1 -1
- package/dist/esm/nano-aspect-ratio.entry.js +12 -4
- package/dist/esm/nano-aspect-ratio.entry.js.map +1 -1
- package/dist/esm/nano-checkbox-group.entry.js +31 -16
- package/dist/esm/nano-checkbox-group.entry.js.map +1 -1
- package/dist/esm/nano-checkbox.entry.js +33 -15
- package/dist/esm/nano-checkbox.entry.js.map +1 -1
- package/dist/esm/nano-components.js +5 -5
- package/dist/esm/nano-components.js.map +1 -1
- package/dist/esm/nano-date-input.entry.js +45 -13
- package/dist/esm/nano-date-input.entry.js.map +1 -1
- package/dist/esm/nano-date-picker_2.entry.js +116 -71
- package/dist/esm/nano-date-picker_2.entry.js.map +1 -1
- package/dist/esm/nano-details.entry.js +15 -9
- package/dist/esm/nano-details.entry.js.map +1 -1
- package/dist/esm/nano-dialog.entry.js +5 -9
- package/dist/esm/nano-dialog.entry.js.map +1 -1
- package/dist/esm/nano-drawer.entry.js +1 -1
- package/dist/esm/nano-file-upload.entry.js +7 -14
- package/dist/esm/nano-file-upload.entry.js.map +1 -1
- package/dist/esm/nano-global-nav.entry.js +5 -5
- package/dist/esm/nano-global-nav.entry.js.map +1 -1
- package/dist/esm/nano-global-search-results.entry.js +2 -2
- package/dist/esm/nano-grid_3.entry.js +1 -1
- package/dist/esm/nano-grid_3.entry.js.map +1 -1
- package/dist/esm/nano-hero.entry.js +2 -2
- package/dist/esm/nano-hero.entry.js.map +1 -1
- package/dist/esm/nano-icon-button.entry.js +2 -2
- package/dist/esm/nano-icon.entry.js +1 -1
- package/dist/esm/nano-input.entry.js +12 -2
- package/dist/esm/nano-input.entry.js.map +1 -1
- package/dist/esm/nano-menu-drawer.entry.js +1 -1
- package/dist/esm/nano-menu-drawer.entry.js.map +1 -1
- package/dist/esm/nano-menu.entry.js +2 -2
- package/dist/esm/nano-menu.entry.js.map +1 -1
- package/dist/esm/nano-nav-item_2.entry.js +4 -4
- package/dist/esm/nano-nav-item_2.entry.js.map +1 -1
- package/dist/esm/nano-range.entry.js +3 -3
- package/dist/esm/nano-range.entry.js.map +1 -1
- package/dist/esm/nano-rating.entry.js +2 -2
- 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-resize-observe_2.entry.js.map +1 -1
- package/dist/esm/nano-select-option.entry.js +1 -1
- package/dist/esm/nano-slide.entry.js +1 -1
- package/dist/esm/nano-slides.entry.js +2 -2
- package/dist/esm/nano-spinner.entry.js +2 -2
- package/dist/esm/nano-sticker.entry.js +2 -2
- package/dist/esm/nano-sticker.entry.js.map +1 -1
- package/dist/esm/nano-tab-content.entry.js +1 -1
- package/dist/esm/nano-tab-group.entry.js +4 -4
- package/dist/esm/nano-tab-group.entry.js.map +1 -1
- package/dist/esm/nano-tab.entry.js +2 -2
- package/dist/esm/nano-tooltip.entry.js +49 -35
- package/dist/esm/nano-tooltip.entry.js.map +1 -1
- package/dist/esm/{popover-05f61b5f.js → popover-a57d8413.js} +32 -32
- package/dist/esm/popover-a57d8413.js.map +1 -0
- package/dist/esm/{shadow-css-70953e54.js → shadow-css-460f0f5c.js} +2 -2
- package/dist/esm/shadow-css-460f0f5c.js.map +1 -0
- package/dist/esm-es5/{algolia-data-a84aeef1.js → algolia-data-b31a9800.js} +2 -2
- package/dist/esm-es5/algolia-data-b31a9800.js.map +1 -0
- package/dist/esm-es5/algoliasearch.umd-7ecbe0e9.js +4 -0
- package/dist/esm-es5/algoliasearch.umd-7ecbe0e9.js.map +1 -0
- package/dist/esm-es5/{component-store-182d1931.js → component-store-93172454.js} +2 -2
- package/dist/esm-es5/{component-store-182d1931.js.map → component-store-93172454.js.map} +1 -1
- package/dist/esm-es5/{css-shim-f12af614.js → css-shim-4e602522.js} +1 -1
- package/dist/esm-es5/{css-shim-f12af614.js.map → css-shim-4e602522.js.map} +1 -1
- package/dist/esm-es5/{dom-2f25dd5a.js → dom-acc01cc2.js} +1 -1
- package/dist/esm-es5/{dom-2f25dd5a.js.map → dom-acc01cc2.js.map} +1 -1
- package/dist/esm-es5/{global-c85d24a2.js → global-118ae701.js} +2 -2
- package/dist/esm-es5/global-118ae701.js.map +1 -0
- package/dist/esm-es5/{utils-fd1ada22.js → index-269c88a9.js} +1 -1
- package/dist/esm-es5/{utils-fd1ada22.js.map → index-269c88a9.js.map} +1 -1
- package/dist/esm-es5/index-912ef959.js +2 -0
- package/dist/esm-es5/index-912ef959.js.map +1 -0
- package/dist/esm-es5/index.js +1 -1
- package/dist/esm-es5/index.js.map +1 -1
- package/dist/esm-es5/loader.js +1 -1
- package/dist/esm-es5/loader.js.map +1 -1
- package/dist/esm-es5/nano-accordion.entry.js +1 -1
- package/dist/esm-es5/nano-accordion.entry.js.map +1 -1
- package/dist/esm-es5/nano-alert.entry.js +1 -1
- package/dist/esm-es5/nano-alert.entry.js.map +1 -1
- package/dist/esm-es5/nano-algolia-filter.entry.js +1 -1
- package/dist/esm-es5/nano-algolia-filter.entry.js.map +1 -1
- package/dist/esm-es5/nano-algolia-input.entry.js +1 -1
- package/dist/esm-es5/nano-algolia-input.entry.js.map +1 -1
- package/dist/esm-es5/nano-algolia-pagination.entry.js +1 -1
- package/dist/esm-es5/nano-algolia-results.entry.js +1 -1
- package/dist/esm-es5/nano-algolia.entry.js +1 -1
- package/dist/esm-es5/nano-algolia.entry.js.map +1 -1
- package/dist/esm-es5/nano-aspect-ratio.entry.js +1 -1
- package/dist/esm-es5/nano-aspect-ratio.entry.js.map +1 -1
- package/dist/esm-es5/nano-checkbox-group.entry.js +1 -1
- package/dist/esm-es5/nano-checkbox-group.entry.js.map +1 -1
- package/dist/esm-es5/nano-checkbox.entry.js +1 -1
- package/dist/esm-es5/nano-checkbox.entry.js.map +1 -1
- package/dist/esm-es5/nano-components.js +1 -1
- package/dist/esm-es5/nano-components.js.map +1 -1
- package/dist/esm-es5/nano-date-input.entry.js +1 -1
- package/dist/esm-es5/nano-date-input.entry.js.map +1 -1
- package/dist/esm-es5/nano-date-picker_2.entry.js +1 -1
- package/dist/esm-es5/nano-date-picker_2.entry.js.map +1 -1
- package/dist/esm-es5/nano-details.entry.js +1 -1
- package/dist/esm-es5/nano-details.entry.js.map +1 -1
- package/dist/esm-es5/nano-dialog.entry.js +1 -1
- package/dist/esm-es5/nano-dialog.entry.js.map +1 -1
- package/dist/esm-es5/nano-drawer.entry.js +1 -1
- package/dist/esm-es5/nano-file-upload.entry.js +1 -1
- package/dist/esm-es5/nano-file-upload.entry.js.map +1 -1
- package/dist/esm-es5/nano-global-nav.entry.js +1 -1
- package/dist/esm-es5/nano-global-nav.entry.js.map +1 -1
- package/dist/esm-es5/nano-global-search-results.entry.js +1 -1
- package/dist/esm-es5/nano-grid_3.entry.js +1 -1
- package/dist/esm-es5/nano-grid_3.entry.js.map +1 -1
- package/dist/esm-es5/nano-hero.entry.js +1 -1
- package/dist/esm-es5/nano-hero.entry.js.map +1 -1
- package/dist/esm-es5/nano-icon-button.entry.js +1 -1
- package/dist/esm-es5/nano-icon.entry.js +1 -1
- package/dist/esm-es5/nano-input.entry.js +1 -1
- package/dist/esm-es5/nano-input.entry.js.map +1 -1
- package/dist/esm-es5/nano-menu-drawer.entry.js +1 -1
- package/dist/esm-es5/nano-menu-drawer.entry.js.map +1 -1
- package/dist/esm-es5/nano-menu.entry.js +1 -1
- package/dist/esm-es5/nano-menu.entry.js.map +1 -1
- package/dist/esm-es5/nano-nav-item_2.entry.js +1 -1
- package/dist/esm-es5/nano-nav-item_2.entry.js.map +1 -1
- package/dist/esm-es5/nano-range.entry.js +1 -1
- package/dist/esm-es5/nano-range.entry.js.map +1 -1
- package/dist/esm-es5/nano-rating.entry.js +1 -1
- package/dist/esm-es5/nano-rating.entry.js.map +1 -1
- package/dist/esm-es5/nano-resize-observe_2.entry.js +1 -1
- package/dist/esm-es5/nano-resize-observe_2.entry.js.map +1 -1
- package/dist/esm-es5/nano-select-option.entry.js +1 -1
- package/dist/esm-es5/nano-slide.entry.js +1 -1
- package/dist/esm-es5/nano-slides.entry.js +2 -2
- package/dist/esm-es5/nano-spinner.entry.js +1 -1
- package/dist/esm-es5/nano-sticker.entry.js +1 -1
- package/dist/esm-es5/nano-sticker.entry.js.map +1 -1
- package/dist/esm-es5/nano-tab-content.entry.js +1 -1
- package/dist/esm-es5/nano-tab-group.entry.js +1 -1
- package/dist/esm-es5/nano-tab-group.entry.js.map +1 -1
- package/dist/esm-es5/nano-tab.entry.js +1 -1
- package/dist/esm-es5/nano-tooltip.entry.js +1 -1
- package/dist/esm-es5/nano-tooltip.entry.js.map +1 -1
- package/dist/esm-es5/popover-a57d8413.js +2 -0
- package/dist/{esm/popover-05f61b5f.js.map → esm-es5/popover-a57d8413.js.map} +1 -1
- package/dist/esm-es5/{shadow-css-70953e54.js → shadow-css-460f0f5c.js} +1 -1
- package/dist/esm-es5/shadow-css-460f0f5c.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/nano-components.esm.js +1 -1
- package/dist/nano-components/nano-components.esm.js.map +1 -1
- package/dist/nano-components/nano-components.js +1 -1
- package/dist/nano-components/{p-c8ff45ab.system.entry.js → p-007c6041.system.entry.js} +2 -2
- package/dist/nano-components/{p-c8ff45ab.system.entry.js.map → p-007c6041.system.entry.js.map} +0 -0
- package/dist/nano-components/{p-1ce90ea4.entry.js → p-02177814.entry.js} +2 -2
- package/dist/nano-components/p-02177814.entry.js.map +1 -0
- package/dist/nano-components/{p-9b9ca075.system.entry.js → p-046af455.system.entry.js} +2 -2
- package/dist/nano-components/p-046af455.system.entry.js.map +1 -0
- package/dist/nano-components/p-05c062ae.js +4 -0
- package/dist/nano-components/p-05c062ae.js.map +1 -0
- package/dist/nano-components/{p-4365edc6.js → p-0c9eb057.js} +1 -1
- package/dist/nano-components/{p-4365edc6.js.map → p-0c9eb057.js.map} +1 -1
- package/dist/nano-components/{p-dce1f547.entry.js → p-104a9d64.entry.js} +2 -2
- package/dist/nano-components/p-104a9d64.entry.js.map +1 -0
- package/dist/nano-components/{p-8611e764.system.entry.js → p-10f24f67.system.entry.js} +2 -2
- package/dist/nano-components/{p-8611e764.system.entry.js.map → p-10f24f67.system.entry.js.map} +0 -0
- package/dist/nano-components/p-1477b91d.system.js +2 -0
- package/dist/nano-components/p-1477b91d.system.js.map +1 -0
- package/dist/nano-components/{p-461c539f.system.entry.js → p-1c7614c4.system.entry.js} +2 -2
- package/dist/nano-components/p-1c7614c4.system.entry.js.map +1 -0
- package/dist/nano-components/{p-8a41ccd9.system.entry.js → p-1d16e897.system.entry.js} +2 -2
- package/dist/nano-components/{p-8a41ccd9.system.entry.js.map → p-1d16e897.system.entry.js.map} +0 -0
- package/dist/nano-components/{p-4042379b.system.entry.js → p-21a6f295.system.entry.js} +2 -2
- package/dist/nano-components/p-21a6f295.system.entry.js.map +1 -0
- package/dist/nano-components/{p-9a456956.system.js → p-2671d998.system.js} +2 -2
- package/dist/nano-components/p-2671d998.system.js.map +1 -0
- package/dist/nano-components/{p-7367dfd5.system.entry.js → p-273b19b0.system.entry.js} +2 -2
- package/dist/nano-components/{p-7367dfd5.system.entry.js.map → p-273b19b0.system.entry.js.map} +0 -0
- package/dist/nano-components/p-28123e6e.entry.js +2 -0
- package/dist/nano-components/p-28123e6e.entry.js.map +1 -0
- package/dist/nano-components/{p-7b3de191.entry.js → p-2ae39fa1.entry.js} +2 -2
- package/dist/nano-components/p-2ae39fa1.entry.js.map +1 -0
- package/dist/nano-components/{p-47d2a49e.system.js → p-2d0b8da6.system.js} +1 -1
- package/dist/nano-components/{p-47d2a49e.system.js.map → p-2d0b8da6.system.js.map} +1 -1
- package/dist/nano-components/{p-6a9fe61f.system.entry.js → p-2edaf0eb.system.entry.js} +3 -3
- package/dist/nano-components/{p-6a9fe61f.system.entry.js.map → p-2edaf0eb.system.entry.js.map} +0 -0
- package/dist/nano-components/{p-be430309.system.entry.js → p-2f876f68.system.entry.js} +2 -2
- package/dist/nano-components/{p-be430309.system.entry.js.map → p-2f876f68.system.entry.js.map} +1 -1
- package/dist/nano-components/{p-e1429ff0.system.entry.js → p-305ba54b.system.entry.js} +2 -2
- package/dist/nano-components/p-305ba54b.system.entry.js.map +1 -0
- package/dist/nano-components/{p-e142f6b6.system.entry.js → p-30a22cd0.system.entry.js} +2 -2
- package/dist/nano-components/p-30a22cd0.system.entry.js.map +1 -0
- package/dist/nano-components/{p-a897cfae.system.entry.js → p-31c52d0a.system.entry.js} +2 -2
- package/dist/nano-components/p-31c52d0a.system.entry.js.map +1 -0
- package/dist/nano-components/{p-f578998d.system.entry.js → p-325f32b3.system.entry.js} +2 -2
- package/dist/nano-components/p-325f32b3.system.entry.js.map +1 -0
- package/dist/nano-components/{p-bc09eba8.entry.js → p-3b2ea5fd.entry.js} +2 -2
- package/dist/nano-components/p-3b2ea5fd.entry.js.map +1 -0
- package/dist/nano-components/{p-0283a2ec.js → p-4370f8ae.js} +2 -2
- package/dist/nano-components/p-4370f8ae.js.map +1 -0
- package/dist/nano-components/{p-d7eb8c22.system.js → p-4647a31f.system.js} +2 -2
- package/dist/nano-components/{p-d7eb8c22.system.js.map → p-4647a31f.system.js.map} +1 -1
- package/dist/nano-components/{p-79e11525.system.entry.js → p-491096f0.system.entry.js} +2 -2
- package/dist/nano-components/p-491096f0.system.entry.js.map +1 -0
- package/dist/nano-components/{p-fb8aa0a7.system.entry.js → p-4e21bfe1.system.entry.js} +2 -2
- package/dist/nano-components/{p-fb8aa0a7.system.entry.js.map → p-4e21bfe1.system.entry.js.map} +0 -0
- package/dist/nano-components/{p-847ce50c.entry.js → p-4fa0b560.entry.js} +2 -2
- package/dist/nano-components/{p-847ce50c.entry.js.map → p-4fa0b560.entry.js.map} +0 -0
- package/dist/nano-components/{p-1bd92497.system.entry.js → p-4fbc3c8b.system.entry.js} +2 -2
- package/dist/nano-components/{p-1bd92497.system.entry.js.map → p-4fbc3c8b.system.entry.js.map} +0 -0
- package/dist/nano-components/{p-5198e4c6.system.js → p-508484f8.system.js} +2 -2
- package/dist/nano-components/p-508484f8.system.js.map +1 -0
- package/dist/nano-components/p-5672ebbb.system.entry.js +2 -0
- package/dist/nano-components/p-5672ebbb.system.entry.js.map +1 -0
- package/dist/nano-components/{p-405d92a0.entry.js → p-574143b5.entry.js} +2 -2
- package/dist/nano-components/{p-405d92a0.entry.js.map → p-574143b5.entry.js.map} +0 -0
- package/dist/nano-components/{p-346f0d8c.system.entry.js → p-57434dc5.system.entry.js} +2 -2
- package/dist/nano-components/{p-346f0d8c.system.entry.js.map → p-57434dc5.system.entry.js.map} +0 -0
- package/dist/nano-components/{p-7b94cd1c.entry.js → p-574f1393.entry.js} +2 -2
- package/dist/nano-components/p-574f1393.entry.js.map +1 -0
- package/dist/nano-components/{p-6b22f5db.entry.js → p-580eac05.entry.js} +2 -2
- package/dist/nano-components/p-580eac05.entry.js.map +1 -0
- package/dist/nano-components/{p-fa884269.entry.js → p-59aba360.entry.js} +2 -2
- package/dist/nano-components/{p-fa884269.entry.js.map → p-59aba360.entry.js.map} +0 -0
- package/dist/nano-components/{p-e886b71e.system.js → p-698a8ab3.system.js} +2 -2
- package/dist/nano-components/p-698a8ab3.system.js.map +1 -0
- package/dist/nano-components/{p-6ba91d36.entry.js → p-6a3eee01.entry.js} +2 -2
- package/dist/nano-components/p-6a3eee01.entry.js.map +1 -0
- package/dist/nano-components/{p-1ed74370.entry.js → p-6aab52a0.entry.js} +2 -2
- package/dist/nano-components/p-6aab52a0.entry.js.map +1 -0
- package/dist/nano-components/{p-e5a19e7f.entry.js → p-6dc59ae8.entry.js} +2 -2
- package/dist/nano-components/{p-e5a19e7f.entry.js.map → p-6dc59ae8.entry.js.map} +0 -0
- package/dist/nano-components/{p-c171b273.entry.js → p-6eba639a.entry.js} +3 -3
- package/dist/nano-components/{p-c171b273.entry.js.map → p-6eba639a.entry.js.map} +0 -0
- package/dist/nano-components/{p-4739c706.system.entry.js → p-73d969d0.system.entry.js} +2 -2
- package/dist/nano-components/{p-4739c706.system.entry.js.map → p-73d969d0.system.entry.js.map} +1 -1
- package/dist/nano-components/{p-a50ca06f.system.entry.js → p-7dc79f13.system.entry.js} +2 -2
- package/dist/nano-components/{p-a50ca06f.system.entry.js.map → p-7dc79f13.system.entry.js.map} +0 -0
- package/dist/nano-components/{p-ba59977d.entry.js → p-7df31b1c.entry.js} +2 -2
- package/dist/nano-components/{p-ba59977d.entry.js.map → p-7df31b1c.entry.js.map} +0 -0
- package/dist/nano-components/{p-60b2ba81.system.entry.js → p-7e208086.system.entry.js} +2 -2
- package/dist/nano-components/p-7e208086.system.entry.js.map +1 -0
- package/dist/nano-components/{p-63cc5e0d.system.entry.js → p-7e4129b4.system.entry.js} +2 -2
- package/dist/nano-components/{p-63cc5e0d.system.entry.js.map → p-7e4129b4.system.entry.js.map} +0 -0
- package/dist/nano-components/{p-7fdff708.entry.js → p-7e68796f.entry.js} +2 -2
- package/dist/nano-components/p-7e68796f.entry.js.map +1 -0
- package/dist/nano-components/{p-027c5ed7.entry.js → p-81d7fd45.entry.js} +2 -2
- package/dist/nano-components/{p-027c5ed7.entry.js.map → p-81d7fd45.entry.js.map} +0 -0
- package/dist/nano-components/{p-d795cbd4.entry.js → p-82571543.entry.js} +2 -2
- package/dist/nano-components/p-82571543.entry.js.map +1 -0
- package/dist/nano-components/{p-7a0e9c6f.system.entry.js → p-844a1134.system.entry.js} +2 -2
- package/dist/nano-components/{p-7a0e9c6f.system.entry.js.map → p-844a1134.system.entry.js.map} +0 -0
- package/dist/nano-components/p-8535a942.entry.js +2 -0
- package/dist/nano-components/p-8535a942.entry.js.map +1 -0
- package/dist/nano-components/{p-c6796f75.entry.js → p-8c1d85ae.entry.js} +2 -2
- package/dist/nano-components/p-8c1d85ae.entry.js.map +1 -0
- package/dist/nano-components/{p-b6f5e5ef.system.js → p-8d24287e.system.js} +1 -1
- package/dist/nano-components/{p-b6f5e5ef.system.js.map → p-8d24287e.system.js.map} +1 -1
- package/dist/nano-components/{p-20ad4e90.system.entry.js → p-8ed6acea.system.entry.js} +2 -2
- package/dist/nano-components/{p-20ad4e90.system.entry.js.map → p-8ed6acea.system.entry.js.map} +0 -0
- package/dist/nano-components/p-9164e5e2.system.entry.js +2 -0
- package/dist/nano-components/p-9164e5e2.system.entry.js.map +1 -0
- package/dist/nano-components/{p-9920e725.system.js → p-9348c301.system.js} +1 -1
- package/dist/nano-components/p-9348c301.system.js.map +1 -0
- package/dist/nano-components/p-9371d81b.system.entry.js +2 -0
- package/dist/nano-components/p-9371d81b.system.entry.js.map +1 -0
- package/dist/nano-components/{p-89a5c54a.system.js → p-94f03788.system.js} +1 -1
- package/dist/nano-components/{p-89a5c54a.system.js.map → p-94f03788.system.js.map} +1 -1
- package/dist/nano-components/{p-fa926d02.system.entry.js → p-95a4c3f2.system.entry.js} +2 -2
- package/dist/nano-components/p-95a4c3f2.system.entry.js.map +1 -0
- package/dist/nano-components/p-96ba0d00.entry.js +2 -0
- package/dist/nano-components/p-96ba0d00.entry.js.map +1 -0
- package/dist/nano-components/p-99637978.entry.js +2 -0
- package/dist/nano-components/p-99637978.entry.js.map +1 -0
- package/dist/nano-components/{p-f5f76780.entry.js → p-9ccd832b.entry.js} +2 -2
- package/dist/nano-components/p-9ccd832b.entry.js.map +1 -0
- package/dist/nano-components/{p-e1fd68eb.js → p-a1680208.js} +2 -2
- package/dist/nano-components/{p-e1fd68eb.js.map → p-a1680208.js.map} +1 -1
- package/dist/nano-components/{p-fb7ae92c.entry.js → p-a53a193c.entry.js} +2 -2
- package/dist/nano-components/p-a53a193c.entry.js.map +1 -0
- package/dist/nano-components/p-a7ac7964.system.entry.js +2 -0
- package/dist/nano-components/p-a7ac7964.system.entry.js.map +1 -0
- package/dist/nano-components/{p-ec01a0ad.system.entry.js → p-aadd8c31.system.entry.js} +2 -2
- package/dist/nano-components/p-aadd8c31.system.entry.js.map +1 -0
- package/dist/nano-components/p-ab666582.entry.js +2 -0
- package/dist/nano-components/p-ab666582.entry.js.map +1 -0
- package/dist/nano-components/p-acd5d0f0.system.entry.js +2 -0
- package/dist/nano-components/p-acd5d0f0.system.entry.js.map +1 -0
- package/dist/nano-components/p-af9f6453.system.js +2 -0
- package/dist/nano-components/p-af9f6453.system.js.map +1 -0
- package/dist/nano-components/p-b1d3ab54.system.entry.js +2 -0
- package/dist/nano-components/p-b1d3ab54.system.entry.js.map +1 -0
- package/dist/nano-components/{p-27520572.entry.js → p-b3131821.entry.js} +2 -2
- package/dist/nano-components/{p-27520572.entry.js.map → p-b3131821.entry.js.map} +0 -0
- package/dist/nano-components/{p-e24d3e8a.entry.js → p-b7a58722.entry.js} +2 -2
- package/dist/nano-components/p-b7a58722.entry.js.map +1 -0
- package/dist/nano-components/p-bb0619e6.js +2 -0
- package/dist/nano-components/p-bb0619e6.js.map +1 -0
- package/dist/nano-components/{p-d0c501a0.entry.js → p-c3f861c5.entry.js} +2 -2
- package/dist/nano-components/{p-d0c501a0.entry.js.map → p-c3f861c5.entry.js.map} +1 -1
- package/dist/nano-components/{p-21f484a3.system.entry.js → p-c655e010.system.entry.js} +2 -2
- package/dist/nano-components/{p-21f484a3.system.entry.js.map → p-c655e010.system.entry.js.map} +1 -1
- package/dist/nano-components/p-c72b22be.entry.js +2 -0
- package/dist/nano-components/p-c72b22be.entry.js.map +1 -0
- package/dist/nano-components/p-d112948c.js +2 -0
- package/dist/nano-components/p-d112948c.js.map +1 -0
- package/dist/nano-components/{p-09b702fb.entry.js → p-d250987a.entry.js} +2 -2
- package/dist/nano-components/{p-09b702fb.entry.js.map → p-d250987a.entry.js.map} +0 -0
- package/dist/nano-components/p-d393d10a.system.entry.js +2 -0
- package/dist/nano-components/p-d393d10a.system.entry.js.map +1 -0
- package/dist/nano-components/p-db271541.entry.js +2 -0
- package/dist/nano-components/p-db271541.entry.js.map +1 -0
- package/dist/nano-components/p-dccd86ec.system.js +4 -0
- package/dist/nano-components/p-dccd86ec.system.js.map +1 -0
- package/dist/nano-components/p-e0cc37fb.entry.js +2 -0
- package/dist/nano-components/{p-2e1f6c4a.entry.js.map → p-e0cc37fb.entry.js.map} +1 -1
- package/dist/nano-components/{p-76bf0452.system.entry.js → p-e28536b4.system.entry.js} +2 -2
- package/dist/nano-components/p-e28536b4.system.entry.js.map +1 -0
- package/dist/nano-components/{p-acfe1b68.entry.js → p-ebf34764.entry.js} +2 -2
- package/dist/nano-components/{p-acfe1b68.entry.js.map → p-ebf34764.entry.js.map} +0 -0
- package/dist/nano-components/{p-e33dd8b9.js → p-ed174626.js} +1 -1
- package/dist/nano-components/p-ed174626.js.map +1 -0
- package/dist/nano-components/{p-c930d4f5.js → p-ed2efbeb.js} +1 -1
- package/dist/nano-components/{p-c930d4f5.js.map → p-ed2efbeb.js.map} +1 -1
- package/dist/nano-components/p-edddeaae.system.js +2 -0
- package/dist/nano-components/p-edddeaae.system.js.map +1 -0
- package/dist/nano-components/p-ef5d9308.entry.js +2 -0
- package/dist/nano-components/p-ef5d9308.entry.js.map +1 -0
- package/dist/nano-components/p-f234e064.system.entry.js +2 -0
- package/dist/nano-components/p-f234e064.system.entry.js.map +1 -0
- package/dist/nano-components/{p-507490fc.system.entry.js → p-f27c9429.system.entry.js} +2 -2
- package/dist/nano-components/{p-507490fc.system.entry.js.map → p-f27c9429.system.entry.js.map} +1 -1
- package/dist/nano-components/{p-372ce425.entry.js → p-f3688bce.entry.js} +2 -2
- package/dist/nano-components/{p-372ce425.entry.js.map → p-f3688bce.entry.js.map} +0 -0
- package/dist/nano-components/{p-35eb8352.system.entry.js → p-f86db7c0.system.entry.js} +2 -2
- package/dist/nano-components/{p-35eb8352.system.entry.js.map → p-f86db7c0.system.entry.js.map} +1 -1
- package/dist/nano-components/{p-6747f517.system.entry.js → p-fa86645d.system.entry.js} +2 -2
- package/dist/nano-components/p-fa86645d.system.entry.js.map +1 -0
- package/dist/nano-components/{p-9c26b459.js → p-fd0fca23.js} +1 -1
- package/dist/nano-components/{p-9c26b459.js.map → p-fd0fca23.js.map} +1 -1
- package/dist/nano-components/p-fdfa03d7.entry.js +2 -0
- package/dist/nano-components/p-fdfa03d7.entry.js.map +1 -0
- package/dist/nano-components/p-ff2ff5b0.js +2 -0
- package/dist/nano-components/p-ff2ff5b0.js.map +1 -0
- package/dist/nano-components/p-ff5890b4.entry.js +2 -0
- package/dist/nano-components/p-ff5890b4.entry.js.map +1 -0
- package/dist/nano-components/{p-23e9f09e.entry.js → p-ffab923c.entry.js} +2 -2
- package/dist/nano-components/p-ffab923c.entry.js.map +1 -0
- package/dist/themes/nanopore.css +1 -1
- package/dist/types/components/aspect-ratio/aspect-ratio.d.ts +1 -1
- package/dist/types/components/checkbox/__tests__/__fixtures__/checkbox-templates.d.ts +8 -0
- package/dist/types/components/checkbox/checkbox-group.d.ts +4 -2
- package/dist/types/components/checkbox/checkbox.d.ts +9 -5
- package/dist/types/components/date-input/date-input.d.ts +9 -0
- package/dist/types/components/date-picker/date-picker.d.ts +9 -4
- package/dist/types/components/details/details.d.ts +1 -0
- package/dist/types/components/dropdown/dropdown.d.ts +21 -14
- package/dist/types/components/file-upload/file-upload-interface.d.ts +4 -3
- package/dist/types/components/file-upload/file-upload.d.ts +2 -12
- package/dist/types/components/input/input.d.ts +2 -1
- package/dist/types/components/tooltip/tooltip.d.ts +10 -7
- package/dist/types/components.d.ts +40 -14
- package/dist/types/index.d.ts +1 -1
- package/dist/types/utils/{utils.d.ts → index.d.ts} +0 -0
- package/dist/types/utils/testing/index.d.ts +49 -0
- package/docs-json.json +125 -47
- package/docs-vscode.json +9 -1
- package/package.json +10 -8
- package/dist/cjs/algolia-data-771a61ea.js.map +0 -1
- package/dist/cjs/algoliasearch.umd-51f0001d.js +0 -12
- package/dist/cjs/algoliasearch.umd-51f0001d.js.map +0 -1
- package/dist/cjs/global-befb7a64.js.map +0 -1
- package/dist/cjs/index-43791691.js.map +0 -1
- package/dist/cjs/popover-eccc07bd.js.map +0 -1
- package/dist/cjs/shadow-css-c5dce0c8.js.map +0 -1
- package/dist/collection/utils/testing-utils.js +0 -156
- package/dist/collection/utils/testing-utils.js.map +0 -1
- package/dist/esm/algolia-data-a84aeef1.js.map +0 -1
- package/dist/esm/algoliasearch.umd-2c129faa.js +0 -10
- package/dist/esm/algoliasearch.umd-2c129faa.js.map +0 -1
- package/dist/esm/global-c85d24a2.js.map +0 -1
- package/dist/esm/index-20becda2.js.map +0 -1
- package/dist/esm/shadow-css-70953e54.js.map +0 -1
- package/dist/esm-es5/algolia-data-a84aeef1.js.map +0 -1
- package/dist/esm-es5/algoliasearch.umd-2c129faa.js +0 -4
- package/dist/esm-es5/algoliasearch.umd-2c129faa.js.map +0 -1
- package/dist/esm-es5/global-c85d24a2.js.map +0 -1
- package/dist/esm-es5/index-20becda2.js +0 -2
- package/dist/esm-es5/index-20becda2.js.map +0 -1
- package/dist/esm-es5/popover-05f61b5f.js +0 -2
- package/dist/esm-es5/popover-05f61b5f.js.map +0 -1
- package/dist/esm-es5/shadow-css-70953e54.js.map +0 -1
- package/dist/nano-components/p-0283a2ec.js.map +0 -1
- package/dist/nano-components/p-1ce90ea4.entry.js.map +0 -1
- package/dist/nano-components/p-1ed74370.entry.js.map +0 -1
- package/dist/nano-components/p-1f7502fa.js +0 -2
- package/dist/nano-components/p-1f7502fa.js.map +0 -1
- package/dist/nano-components/p-1fd60eec.system.js +0 -2
- package/dist/nano-components/p-1fd60eec.system.js.map +0 -1
- package/dist/nano-components/p-201b5f5b.entry.js +0 -2
- package/dist/nano-components/p-201b5f5b.entry.js.map +0 -1
- package/dist/nano-components/p-214ad382.entry.js +0 -2
- package/dist/nano-components/p-214ad382.entry.js.map +0 -1
- package/dist/nano-components/p-23da4de5.js +0 -4
- package/dist/nano-components/p-23da4de5.js.map +0 -1
- package/dist/nano-components/p-23e9f09e.entry.js.map +0 -1
- package/dist/nano-components/p-2d59dda3.system.js +0 -2
- package/dist/nano-components/p-2d59dda3.system.js.map +0 -1
- package/dist/nano-components/p-2e1f6c4a.entry.js +0 -2
- package/dist/nano-components/p-4042379b.system.entry.js.map +0 -1
- package/dist/nano-components/p-45e06083.system.entry.js +0 -2
- package/dist/nano-components/p-45e06083.system.entry.js.map +0 -1
- package/dist/nano-components/p-461c539f.system.entry.js.map +0 -1
- package/dist/nano-components/p-4bca8761.entry.js +0 -2
- package/dist/nano-components/p-4bca8761.entry.js.map +0 -1
- package/dist/nano-components/p-4ee095f3.js +0 -2
- package/dist/nano-components/p-4ee095f3.js.map +0 -1
- package/dist/nano-components/p-5198e4c6.system.js.map +0 -1
- package/dist/nano-components/p-568be88a.entry.js +0 -2
- package/dist/nano-components/p-568be88a.entry.js.map +0 -1
- package/dist/nano-components/p-5918ac51.entry.js +0 -2
- package/dist/nano-components/p-5918ac51.entry.js.map +0 -1
- package/dist/nano-components/p-5f716719.system.entry.js +0 -2
- package/dist/nano-components/p-5f716719.system.entry.js.map +0 -1
- package/dist/nano-components/p-60b2ba81.system.entry.js.map +0 -1
- package/dist/nano-components/p-6747f517.system.entry.js.map +0 -1
- package/dist/nano-components/p-6b22f5db.entry.js.map +0 -1
- package/dist/nano-components/p-6ba91d36.entry.js.map +0 -1
- package/dist/nano-components/p-76bf0452.system.entry.js.map +0 -1
- package/dist/nano-components/p-79e11525.system.entry.js.map +0 -1
- package/dist/nano-components/p-7b3de191.entry.js.map +0 -1
- package/dist/nano-components/p-7b94cd1c.entry.js.map +0 -1
- package/dist/nano-components/p-7f3b4f80.entry.js +0 -2
- package/dist/nano-components/p-7f3b4f80.entry.js.map +0 -1
- package/dist/nano-components/p-7fdff708.entry.js.map +0 -1
- package/dist/nano-components/p-8fe04c5c.system.entry.js +0 -2
- package/dist/nano-components/p-8fe04c5c.system.entry.js.map +0 -1
- package/dist/nano-components/p-93b1eeea.system.js +0 -2
- package/dist/nano-components/p-93b1eeea.system.js.map +0 -1
- package/dist/nano-components/p-9920e725.system.js.map +0 -1
- package/dist/nano-components/p-9a456956.system.js.map +0 -1
- package/dist/nano-components/p-9b9ca075.system.entry.js.map +0 -1
- package/dist/nano-components/p-a897cfae.system.entry.js.map +0 -1
- package/dist/nano-components/p-bc09eba8.entry.js.map +0 -1
- package/dist/nano-components/p-c3401b82.entry.js +0 -2
- package/dist/nano-components/p-c3401b82.entry.js.map +0 -1
- package/dist/nano-components/p-c4edcfc5.system.entry.js +0 -2
- package/dist/nano-components/p-c4edcfc5.system.entry.js.map +0 -1
- package/dist/nano-components/p-c6796f75.entry.js.map +0 -1
- package/dist/nano-components/p-c8792b54.system.entry.js +0 -2
- package/dist/nano-components/p-c8792b54.system.entry.js.map +0 -1
- package/dist/nano-components/p-cb750e49.system.js +0 -4
- package/dist/nano-components/p-cb750e49.system.js.map +0 -1
- package/dist/nano-components/p-cc5080df.entry.js +0 -2
- package/dist/nano-components/p-cc5080df.entry.js.map +0 -1
- package/dist/nano-components/p-d2ae5ac1.entry.js +0 -2
- package/dist/nano-components/p-d2ae5ac1.entry.js.map +0 -1
- package/dist/nano-components/p-d795cbd4.entry.js.map +0 -1
- package/dist/nano-components/p-da9f75d2.system.entry.js +0 -2
- package/dist/nano-components/p-da9f75d2.system.entry.js.map +0 -1
- package/dist/nano-components/p-dce1f547.entry.js.map +0 -1
- package/dist/nano-components/p-dd66cc74.entry.js +0 -2
- package/dist/nano-components/p-dd66cc74.entry.js.map +0 -1
- package/dist/nano-components/p-e1429ff0.system.entry.js.map +0 -1
- package/dist/nano-components/p-e142f6b6.system.entry.js.map +0 -1
- package/dist/nano-components/p-e24d3e8a.entry.js.map +0 -1
- package/dist/nano-components/p-e2848c8a.system.entry.js +0 -2
- package/dist/nano-components/p-e2848c8a.system.entry.js.map +0 -1
- package/dist/nano-components/p-e33dd8b9.js.map +0 -1
- package/dist/nano-components/p-e886b71e.system.js.map +0 -1
- package/dist/nano-components/p-e8a97250.system.entry.js +0 -2
- package/dist/nano-components/p-e8a97250.system.entry.js.map +0 -1
- package/dist/nano-components/p-ec01a0ad.system.entry.js.map +0 -1
- package/dist/nano-components/p-f55560d3.js +0 -2
- package/dist/nano-components/p-f55560d3.js.map +0 -1
- package/dist/nano-components/p-f578998d.system.entry.js.map +0 -1
- package/dist/nano-components/p-f5f76780.entry.js.map +0 -1
- package/dist/nano-components/p-fa926d02.system.entry.js.map +0 -1
- package/dist/nano-components/p-fb7ae92c.entry.js.map +0 -1
- package/dist/types/utils/testing-utils.d.ts +0 -41
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"algolia.js","sourceRoot":"","sources":["../../../src/components/algolia/algolia.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n h,\n Element,\n Host,\n Prop,\n Watch,\n State,\n Listen,\n Method,\n EventEmitter,\n Event,\n Build,\n writeTask,\n ComponentInterface,\n readTask,\n} from '@stencil/core';\nimport {\n AlgoliaMultiResult,\n IndexResult,\n AlgoliaResultHit,\n FilterChangeEventDetail,\n PageChangeEventDetail,\n AppliedFilter,\n AlgoliaFacet,\n SearchIndex,\n} from '../../interface';\nimport { Universe, SearchChangeEvent } from './algolia-data';\nimport { debounce, getDirectChildren } from '../../utils/utils';\nimport algoliasearch, {\n SearchClient as AlgoliaClient,\n SearchIndex as AlgoliaIndex,\n} from 'algoliasearch';\nimport { Squirrel } from '../../utils/template';\nimport {\n ComponentStore,\n StorageMethods,\n} from '../../utils/store/component-store';\nimport { PromiseQueue } from '../../utils/promise-queue';\n\ninterface FacetFilterQueryBlock {\n or: Array<string>;\n and: Array<string>;\n not: Array<string>;\n name: string;\n}\ninterface FacetFilter extends FilterChangeEventDetail {\n element: HTMLNanoAlgoliaFilterElement;\n}\ntype FilterGroup = { [prop: string]: FacetFilter };\n\nconst CANSHADOW = !!document.head.attachShadow;\n\n/**\n * Algolia search container to contain and sync nano-algolia-results and nano-algolia-filter components.\n * Can optionally contain nano-algolia-input components or use them as a 'resultsEmitter'\n * @slot search-input - optional. Should contain an algolia-input component.\n * @slot loader - optional. Elements to show when search results are loading.\n * @slot template - optional. Template string (format depends on 'tplEngine' property). May contain other algolia-... components with nested templates.\n * @slot output - Search result output. Will be a placeholder for template output or optionally nest algolia-... components.\n */\n@Component({\n tag: 'nano-algolia',\n shadow: true,\n styleUrl: 'algolia.scss',\n})\nexport class Algolia implements ComponentInterface {\n // filters that have an initial value\n private staticFacetFilters: FilterGroup = {};\n private dynFacetFilters: FilterGroup = {};\n private tplSlot: HTMLElement;\n private outputSlot: HTMLElement;\n private slottedInput: HTMLElement;\n private hasLoadSlot: boolean = false;\n private resultsDiv: HTMLDivElement;\n private defaultDiv: HTMLDivElement;\n private tpl: string;\n private facets: AlgoliaFacet;\n private placedAlgoliaEles: Element[] = [];\n private algoliaClient: AlgoliaClient;\n // lots of stuff happens asynchronously. This makes sure they fire in the corrent order\n private promiseQueue = new PromiseQueue();\n\n @Element() host: HTMLNanoAlgoliaElement;\n\n // Internal state\n\n // filters that change via a template. They have no initial value\n @State() _dynFacetFilters: FilterGroup = {};\n @State() inputField: HTMLNanoInputElement | HTMLInputElement;\n @State() algoliaIndex: AlgoliaIndex;\n @State() indeces: IndexResult[] = [];\n @State() resultsEmitterEle: HTMLElement;\n @State() indexResults: IndexResult;\n @State() filterChanged: string = '';\n @State() currentHits: AlgoliaResultHit[];\n @State() changeEvent: SearchChangeEvent = SearchChangeEvent.Init;\n @State() isLoading: boolean = false;\n @State() wormholeState: any = this;\n\n // Public props\n\n /**\n * Show the result panel. By default it will automatically show when the result receives new hits.\n */\n @Prop({ mutable: true }) showResults: boolean = false;\n\n /**\n * The current algolia page of results currently being viewed or to get.\n */\n @Prop({ mutable: true }) resultsPage: number = 0;\n\n /**\n * An Algolia App ID key. Used in conjunction with 'searchIndex' & 'apiKey'.\n */\n @Prop() appId: string;\n\n /**\n * An Algolia API Key. Used in conjunction with 'searchIndex' & 'appId'.\n */\n @Prop() apiKey: string;\n\n /**\n * Algolia search index. Used in conjunction with 'apiKey' & 'appId'.\n * ```\n * { index: string, // algolia index name\n * domain?: string, // used in template filters to resolve incomplete url fields\n * filters?: [string], // algolia facets to retrive\n * hitsPerPage?: number,\n * name?: string // human readable index name\n * }\n * ```\n */\n @Prop() searchIndex: SearchIndex = {} as SearchIndex;\n\n /**\n * Algolia search index name. Alternative to 'searchIndex'.\n * A simplified shortcut for setting an index.\n * Properties such as hitsPerPage and facets will come from the algolia index\n */\n @Prop({ mutable: true }) searchIndexName: string = '';\n\n /**\n * JS querSelector string of a `nano-input` / `input` element from which\n * to listen to `nano-change` or `change` events and change the `query` prop.\n * Not required if an appropriate field is in the 'search-input' slot\n */\n @Prop() listenTo?: string = null;\n\n /**\n * The query string used to search the index. Will automtically be set with any slotted\n * `search-input` input elements or from elements linked to from `listen-to`\n */\n @Prop({ mutable: true }) query: string = '';\n\n /**\n * The external operator joining filter values.\n */\n @Prop() operator: 'or' | 'and' = 'and';\n\n /**\n * Query filters to apply to all searches.\n * Refer to https://www.algolia.com/doc/api-reference/api-parameters/filters for format.\n */\n @Prop() filters: Array<string> = [];\n\n /**\n * Template engine to use when rendering results and filters.\n * Defaults to Squirrel v8 (https://squirrelly.js.org/). This gives you access\n * to the underlying squirrel object allowing you to modify it's configuration / add filters.\n */\n @Prop() tplEngine: Object = Squirrel;\n\n /**\n * Template engine render function to use when rendering results and filters.\n * Defaults to Squirrel v8's render (https://squirrelly.js.org/).\n */\n @Prop() tplRenderFn: (...args: any[]) => string = Squirrel.render;\n\n /**\n * Changes the index without removing any current filters. Most appropriate for algolia replicas.\n */\n @Prop() replicaIndex: string = '';\n\n /**\n * Will maintain a search all / '*' on init and reset allowing for a view\n * then filter experience rather than a search first experience\n */\n @Prop() browseIndex: boolean = false;\n\n /**\n * Minimum number of characters before performing a search\n */\n @Prop() minChars: number = 2;\n\n /**\n * Store search queries (against this ID) to the component store.\n * Use in conjunction with storeMethod\n */\n @Prop() storeId?: string;\n\n /**\n * The method of storage.\n * Either session storage, url hash (after the '#') or url query (after the '?').\n */\n @Prop() storeMethod: StorageMethods = 'session';\n\n // Events\n\n /**\n * Emitted when the algolia element has been created.\n */\n @Event() nanoDidLoad!: EventEmitter<HTMLNanoAlgoliaElement>;\n\n /**\n * Emitted when results and all filters are shown and have loaded.\n */\n @Event({ bubbles: false }) nanoResultsShown!: EventEmitter<IndexResult>;\n\n /**\n * Emitted before an algolia search.\n */\n @Event() nanoBeforeQuery!: EventEmitter<IndexResult>;\n\n /**\n * Emitted after an algolia search.\n */\n @Event() nanoAfterQuery!: EventEmitter<IndexResult>;\n\n // Public methods\n\n /**\n * @param facetName - will clear all filter selections of that type\n * @param facetValue - will remove a single filter selection\n * Remove facet filters (as set from nano-algolia-filter elements).\n * The omission or both will remove all facet filters\n */\n @Method()\n async removeFilters(facetName?: string, facetValue?: string) {\n if (!facetName && !facetValue) this.clearAllFacetFilters();\n else {\n Object.keys(this._dynFacetFilters).forEach((filterId) => {\n if (\n facetName &&\n this._dynFacetFilters[filterId].facetName === facetName\n ) {\n if (!facetValue) this._dynFacetFilters[filterId].element.value = '';\n else {\n this._dynFacetFilters[filterId].element.value =\n this._dynFacetFilters[filterId].value.filter(\n (val) => val !== facetValue\n );\n }\n }\n });\n }\n }\n\n // Listeners to external events\n\n // a child nano-algolia-... updated their template\n @Listen('nanoTplUpdated')\n onAllTplUpdate(ev: CustomEvent) {\n ev.stopPropagation();\n }\n\n // a nano-algolia-pagination or nano-algolia-results changed the page\n @Listen('nanoPageChanged')\n async onPageChange(ev?: CustomEvent) {\n if (!this.indexResults) return;\n let page = this.resultsPage;\n if (ev) {\n ev.stopPropagation();\n page = (ev.detail as PageChangeEventDetail).page;\n }\n\n page = Math.min(this.indexResults.totalPages - 1, page);\n page = Math.max(page, 0);\n\n if (this.indexResults.currentPage === page) return;\n\n this.indexResults.currentPage = page;\n await this.algoliaSearch(SearchChangeEvent.Page);\n }\n\n /**\n * nano-algolia-filter changed value.\n * If that happened before a indexResults were setup, it was a static filter.\n * Static filters persist accross search changes\n */\n @Listen('nanoFilterChanged')\n async onFilterChange(ev: CustomEvent) {\n ev.stopPropagation();\n\n let dynFilterObj: FilterGroup = {};\n let filter = ev.detail as FacetFilter;\n filter.element = ev.target as HTMLNanoAlgoliaFilterElement;\n\n if (this.indexResults) {\n if (this.staticFacetFilters[filter.filterId])\n this.staticFacetFilters[filter.filterId] = filter;\n else {\n dynFilterObj[filter.filterId] = filter;\n this._dynFacetFilters = { ...this._dynFacetFilters, ...dynFilterObj };\n }\n\n this.indexResults.appliedFilters = this.makeAppliedFilters();\n } else this.staticFacetFilters[filter.filterId] = filter;\n\n this.filterChanged =\n filter.value && filter.value.length ? filter.filterId : 'all';\n\n this.resetPage();\n this.algoliaSearch(SearchChangeEvent.Filter);\n }\n\n // Internal state watchers\n\n // Filters can fire a change event, cause a re-render then get detached.\n // This can cause filter dupes. Check to see if the original element is still in the DOM.\n @Watch('_dynFacetFilters')\n dynFacetFiltersChange() {\n Object.values(this._dynFacetFilters).forEach((filter) => {\n if (this.host.ownerDocument === filter.element.ownerDocument)\n this.dynFacetFilters[filter.filterId] = filter;\n else delete this.dynFacetFilters[filter.filterId];\n });\n }\n\n @Watch('browseIndex')\n browseIndexChange() {\n if (\n this.browseIndex &&\n (!this.query || this.query.length < this.minChars)\n ) {\n this.query = '*';\n }\n }\n\n @Watch('inputField')\n inputFieldSet() {\n if (!this.inputField) return;\n if (\n this.query !== '*' &&\n this.inputField &&\n this.inputField.value !== this.query\n )\n this.inputField.value = this.query;\n }\n\n @Watch('query')\n queryChange() {\n this.searchChange();\n }\n private searchChange = async () => {\n if (!this.algoliaIndex) return;\n\n if (!this.query || this.query.length < this.minChars) {\n if (!this.browseIndex) {\n if (!this.query || this.query.length === 0) {\n this.handleSearchReset();\n return;\n } else return;\n } else if (this.query !== '*') {\n this.query = '*';\n return;\n }\n }\n // Do an initialise search (setup searchIndex)\n this.isLoading = true;\n\n setTimeout(async () => {\n // Clear dynamic filters and reset page\n this.resetPage();\n\n await this.algoliaSearch(SearchChangeEvent.Init);\n // Populate master content - optionally from template\n await this.updateContent();\n\n setTimeout((_) => (this.isLoading = false), 800);\n this.showResults = true;\n this.nanoResultsShown.emit(this.indexResults);\n }, 200);\n };\n\n @Watch('replicaIndex')\n async internalIndexSwitch() {\n if (\n !this.replicaIndex ||\n !this.indexResults ||\n this.indexResults.index === this.replicaIndex\n )\n return;\n this.indexResults.index = this.replicaIndex;\n this.algoliaIndex = this.algoliaClient.initIndex(this.indexResults.index);\n this.resetPage();\n this.algoliaSearch(SearchChangeEvent.Replica);\n }\n\n @Watch('resultsPage')\n pageChange() {\n this.onPageChange();\n }\n\n @Watch('searchIndexName')\n searchIndexNameChange() {\n if (\n !this.searchIndexName ||\n !this.searchIndexName.length ||\n (this.searchIndex && this.searchIndex.index === this.searchIndexName)\n )\n return;\n this.searchIndex = { index: this.searchIndexName };\n }\n\n @Watch('apiKey')\n @Watch('appId')\n initAlgoliaClient() {\n if (!this.appId || !this.apiKey) return;\n this.algoliaClient = algoliasearch(this.appId, this.apiKey);\n }\n\n @Watch('searchIndex')\n initAlgoliaIndex() {\n if (!this.algoliaClient || !this.searchIndex) return;\n if (this.searchIndex.index) {\n if (this.replicaIndex) this.searchIndex.index = this.replicaIndex;\n this.searchIndexName = this.searchIndex.index;\n this.algoliaIndex = this.algoliaClient.initIndex(this.searchIndex.index);\n this.searchChange();\n }\n }\n\n @Watch('listenTo')\n newListenTo() {\n if (!this.listenTo) this.attachInputListener(false);\n else {\n setTimeout(() => {\n this.inputField = document.querySelector(this.listenTo);\n if (this.inputField) this.attachInputListener(true);\n }, 50);\n }\n }\n\n @Watch('showResults')\n showResultsChange() {\n if (!this.resultsDiv || !this.defaultDiv) return;\n\n if (this.showResults) {\n this.resultsDiv.style.width = this.host.scrollWidth + 'px';\n this.resultsDiv.style.minHeight = this.host.scrollHeight + 'px';\n\n writeTask(() => {\n this.resultsDiv.addEventListener('transitionend', this.onResultDisplay);\n this.resultsDiv.style.display = 'block';\n setTimeout(() => this.resultsDiv.classList.add('show'), 50);\n });\n } else {\n writeTask(() => {\n this.resultsDiv.classList.remove('shown');\n this.defaultDiv.style.display = 'block';\n setTimeout(() => {\n this.resultsDiv.addEventListener(\n 'transitionend',\n this.onResultDisplay\n );\n this.resultsDiv.classList.remove('show');\n\n if (!!this.slottedInput)\n this.slottedInput.focus({ preventScroll: true });\n else this.defaultDiv.focus({ preventScroll: true });\n }, 50);\n });\n }\n }\n\n // Internal methods\n\n private fixDomain(results: AlgoliaMultiResult) {\n if (!this.searchIndex || !this.searchIndex.domain) return results;\n results.hits.map((hit) => {\n if (hit.url && !hit.url.match(/^http/))\n hit.url = location.protocol + '//' + this.searchIndex.domain + hit.url;\n });\n return results;\n }\n\n // Takes all current filters (dynamic and static)\n // and merges common filters' values togther\n private makeAppliedFilters = (): AppliedFilter[] => {\n let appliedFtrs: AppliedFilter[] = [];\n\n const makeAppliedFilter = (facetFilters: {\n [prop: string]: FacetFilter;\n }) => {\n Object.values(facetFilters).forEach((filter) => {\n if (filter.value && filter.value.length) {\n let found = appliedFtrs.find(\n (appFilter) => appFilter.name === filter.facetName\n );\n if (!found)\n appliedFtrs.push({\n name: filter.facetName,\n values: [...filter.value],\n });\n else found.values = [...found.values, ...filter.value];\n }\n });\n };\n makeAppliedFilter(this.dynFacetFilters);\n makeAppliedFilter(this.staticFacetFilters);\n\n if (appliedFtrs.length) return appliedFtrs;\n return null;\n };\n\n // Queue up a search\n private algoliaSearch = async (eventType: SearchChangeEvent) => {\n return this.promiseQueue.enqueue(() => this.queueSearch(eventType));\n };\n\n // Do a search\n private queueSearch = async (eventType: SearchChangeEvent) => {\n if (\n !this.algoliaIndex ||\n !this.query ||\n !this.searchIndex ||\n !this.searchIndex.index\n )\n return;\n\n this.nanoBeforeQuery.emit(this.indexResults);\n\n // clear all facet filters on init (new query)\n if (SearchChangeEvent.Init === eventType) this.clearAllFacetFilters();\n\n let searchParams: any = {\n filters: this.algoliaFilterStr(),\n page: this.indexResults ? this.indexResults.currentPage : 0,\n };\n\n if (this.searchIndex.filters)\n searchParams.facets = this.searchIndex.filters;\n if (this.searchIndex.hitsPerPage)\n searchParams.hitsPerPage = this.searchIndex.hitsPerPage;\n\n let result = (await this.algoliaIndex.search(\n this.query,\n searchParams\n )) as AlgoliaMultiResult;\n result = this.fixDomain(result);\n\n // set event type - this informs children components why things changed\n this.changeEvent = eventType;\n\n // Setup initial meta on new queries. Some of it should not change on filter / pagination\n if (eventType === SearchChangeEvent.Init || !this.indexResults) {\n this.indexResults = {\n currentPage: 0,\n totalHits: result.nbHits,\n hitsPerPage: null,\n origFilters: result.facets,\n query: this.query,\n domain: this.searchIndex.domain || null,\n legacy: !CANSHADOW,\n totalHitsWithFilters: 0,\n results: [],\n totalPages: 0,\n appliedFilters: this.makeAppliedFilters(),\n indexName: this.searchIndex.name || null,\n index: this.searchIndex.index,\n };\n }\n\n this.indexResults.dynFilters = result.facets;\n this.indexResults.results = result.hits as AlgoliaResultHit[];\n this.indexResults.totalHitsWithFilters = result.nbHits;\n this.indexResults.currentPage = result.page;\n this.indexResults.totalPages = result.nbPages;\n this.indexResults.hitsPerPage = result.hitsPerPage;\n this.indexResults.query = result.query;\n // console.log('I GOT NEW RESULTS', eventType, this.query, this.algoliaFilterStr(), this.indexResults.results.length, this.indexResults.currentPage )\n\n if (\n this.changeEvent !== SearchChangeEvent.Page &&\n this.changeEvent !== SearchChangeEvent.Replica\n ) {\n this.facets = result.facets;\n }\n this.nanoAfterQuery.emit(this.indexResults);\n\n // current hits and page will cause re-renders in children components.\n // Wait a tick before firing otherwise events can fire in the wrong order\n return new Promise((resolve) => {\n setTimeout(() => resolve('tpl updated'), 20);\n }).then((_) => {\n this.currentHits = this.indexResults.results;\n this.resultsPage = this.indexResults.currentPage;\n });\n };\n\n private resetPage() {\n if (!this.indexResults) return;\n this.indexResults.currentPage = 0;\n }\n\n private clearAllFacetFilters() {\n Object.values(this._dynFacetFilters).forEach((filter) => {\n filter.element.value = '';\n });\n this._dynFacetFilters = {};\n }\n\n private algoliaFilterStr() {\n // groups applied facet filters (from algolia-filter components)\n // with their applied, 'internal' operators (and, or, not)\n\n let facetFilterObj: { [prop: string]: FacetFilterQueryBlock } = {};\n\n const groupFilters = (facetFilters: { [prop: string]: FacetFilter }) => {\n let filter: FilterChangeEventDetail;\n let filterOp: Array<string>;\n\n Object.keys(facetFilters).forEach((filterId) => {\n filter = facetFilters[filterId];\n facetFilterObj[filterId] = facetFilterObj[filterId] || {\n name: filter.facetName,\n or: [],\n and: [],\n not: [],\n };\n\n filterOp = facetFilterObj[filterId][filter.operator];\n if (filter.value && filter.value.length) {\n facetFilterObj[filterId][filter.operator] = [\n ...filterOp,\n ...filter.value,\n ];\n }\n });\n };\n\n groupFilters(this.dynFacetFilters);\n groupFilters(this.staticFacetFilters);\n\n const formatVal = (name: string, val: string) => {\n if (val.indexOf(' ') > -1) return name + ':\"' + val + '\"';\n else return name + ':' + val;\n };\n let filterStrParts: Array<string> = [];\n let operatorGrp: FacetFilterQueryBlock;\n let filterName: string;\n // let processedFilters: string[] = [];\n\n // joins all applied facet filter operator groups with the set 'outer'\n // operator into an algolia filter query string\n Object.values(facetFilterObj).forEach(function (filter) {\n Object.keys(filter)\n .filter((filterProp) => filterProp.match(/(or|and|not)/))\n .forEach((operator) => {\n operatorGrp = filter;\n filterName = filter.name;\n\n if (operator === 'or' || operator === 'and') {\n if (operatorGrp[operator].length) {\n filterStrParts.push(\n '( \\\n ' +\n operatorGrp[operator]\n .map((val) => {\n if (val.length) return formatVal(filterName, val);\n })\n .join(' ' + operator.toLocaleUpperCase() + ' ') +\n ' \\\n )'\n );\n }\n } else {\n if (operatorGrp.not.length) {\n filterStrParts.push(\n '( \\\n ' +\n operatorGrp[operator]\n .map((val) => {\n if (val.length)\n return 'NOT ' + formatVal(filterName, val);\n })\n .join(' AND ') +\n ' \\\n )'\n );\n }\n }\n });\n });\n\n // add in any static applied filters from filters prop\n filterStrParts = [...this.filters, ...filterStrParts];\n // console.log('filterStr:', filterStrParts.join(' ' + this.operator.toLocaleUpperCase() + ' '))\n return filterStrParts.join(' ' + this.operator.toLocaleUpperCase() + ' ');\n }\n\n private attachInputListener(setup: boolean = true) {\n if (!this.inputField) return;\n let eventName =\n this.inputField.tagName.toLocaleLowerCase() === 'nano-input'\n ? 'nanoChange'\n : 'change';\n\n if (setup)\n this.inputField.addEventListener(eventName, this.handleInputChange);\n else this.inputField.removeEventListener(eventName, this.handleInputChange);\n }\n\n private handleInputChange = (ev) => {\n if (ev.target !== this.inputField) return;\n this.query = this.inputField.value;\n };\n\n private handleSearchReset = () => {\n this.showResults = false;\n this.indexResults = null;\n };\n\n private onResultDisplay = () => {\n writeTask(() => {\n this.resultsDiv.removeEventListener(\n 'transitionend',\n this.onResultDisplay\n );\n if (!this.showResults) this.resultsDiv.style.display = 'none';\n else {\n this.defaultDiv.style.display = 'none';\n this.resultsDiv.classList.add('shown');\n this.resultsDiv.style.minHeight = '';\n this.resultsDiv.style.width = '';\n }\n });\n };\n\n private async updateContent() {\n return this.promiseQueue.enqueue(() => this.updateContentQueue());\n }\n\n private async updateContentQueue() {\n let outputTo = this.outputSlot || this.resultsDiv;\n\n if (!outputTo || !this.tpl) return 'no tpl';\n\n let tmpCont = document.createElement('div');\n tmpCont.innerHTML = this.tpl;\n\n let algoliaEles: Element[] = [];\n this.placedAlgoliaEles = [];\n\n // take out children algolia elements 'cos they have their own templates\n // don't want to swap in their templates\n Array.from(\n tmpCont.querySelectorAll(\n 'nano-algolia, nano-algolia-filter, nano-algolia-results'\n )\n ).forEach((el, i) => {\n let placeholder = document.createElement('div');\n placeholder.dataset.placeholderId = i.toString();\n placeholder.classList.add('nano-ele-placeholder');\n algoliaEles.push(el);\n el.parentNode.replaceChild(placeholder, el);\n });\n\n // swap in template content\n // (all this nonsense htmlencodes any < or >)\n\n outputTo.innerHTML = this.tplRenderFn(\n tmpCont.innerHTML\n .replace(/>/gm, '>')\n .replace(/</gm, '<')\n .replace(/&/gm, '&'),\n this.indexResults\n );\n\n // put back in algolia elements\n Array.from(outputTo.querySelectorAll('div.nano-ele-placeholder')).forEach(\n (el: HTMLDivElement) => {\n el.parentNode.replaceChild(\n algoliaEles[parseInt(el.dataset.placeholderId)],\n el\n );\n this.placedAlgoliaEles.push(\n algoliaEles[parseInt(el.dataset.placeholderId)]\n );\n }\n );\n\n if (!this.placedAlgoliaEles.length) return Promise.resolve('algolia setup');\n\n // wait for all children algolia elements to resolve before calling 'done'\n return new Promise((resolve) => {\n const childrenResolver = (ev: CustomEvent) => {\n this.placedAlgoliaEles = this.placedAlgoliaEles.filter(\n (ele) => ele !== (ev.detail as HTMLElement)\n );\n if (!this.placedAlgoliaEles.length) {\n setTimeout(() => resolve('tpl updated'), 500);\n outputTo.removeEventListener('nanoTplUpdated', childrenResolver);\n }\n };\n outputTo.addEventListener('nanoTplUpdated', childrenResolver);\n });\n }\n\n // Stencil hooks\n\n componentWillLoad() {\n readTask((_) => {\n this.tplSlot = getDirectChildren(this.host, '[slot=\"template\"]')[0];\n this.outputSlot = getDirectChildren(this.host, '[slot=\"output\"]')[0];\n this.slottedInput = getDirectChildren(\n this.host,\n '[slot=\"search-input\"]'\n )[0];\n this.hasLoadSlot = !!getDirectChildren(this.host, '[slot=\"loader\"]')[0];\n if (!!this.tplSlot) this.tpl = this.tplSlot.innerHTML;\n\n // get input field to listen to\n if (\n this.slottedInput &&\n (this.slottedInput.tagName.toLocaleLowerCase() === 'nano-input' ||\n this.slottedInput instanceof HTMLInputElement)\n ) {\n this.inputField = this.slottedInput as HTMLNanoInputElement;\n } else if (this.slottedInput) {\n this.inputField = this.slottedInput.querySelector(\n 'nano-input, input:not([type=\"radio\"]):not([type=\"checkbox\"])'\n );\n }\n if (!this.inputField && this.listenTo)\n this.inputField = document.querySelector(this.listenTo);\n if (this.inputField) this.attachInputListener(true);\n\n writeTask((_) => {\n if (this.showResults && this.tpl) this.searchChange();\n });\n });\n\n this.searchIndexNameChange();\n this.initAlgoliaClient();\n this.initAlgoliaIndex();\n\n // Create wormwhole shared 'universe' (https://github.com/mihar-22/stencil-wormhole)\n Universe.create(this, this.wormholeState);\n\n if (this.storeId) {\n ComponentStore.init(\n this,\n ['query', 'replicaIndex'],\n this.storeMethod,\n this.storeId\n );\n ComponentStore.init(\n this,\n ['apiKey', 'appId', 'searchIndex'],\n 'session',\n this.storeId + '_api'\n );\n }\n this.internalIndexSwitch();\n }\n\n connectedCallback() {\n this.searchChange = debounce(this.searchChange, 300);\n this.browseIndexChange();\n\n if (!Build.isBrowser) return;\n this.host.dispatchEvent(\n new CustomEvent('nanoDidLoad', {\n detail: this.host,\n })\n );\n }\n\n render() {\n const wormholeState = {\n indexResults: this.indexResults,\n results: this.currentHits,\n filterChanged: this.filterChanged,\n tplRenderFn: this.tplRenderFn,\n resultsPage: this.resultsPage,\n changeEvent: this.changeEvent,\n facets: this.facets,\n algoliaIndex: this.algoliaIndex,\n searchIndex: this.searchIndex,\n globalStoreMethod: this.storeMethod,\n isLoading: this.isLoading,\n };\n return (\n <Host\n class={{\n 'show-results': this.showResults,\n 'is-loading': this.isLoading,\n }}\n aria-busy={this.isLoading}\n >\n {this.hasLoadSlot && (\n <div hidden={!this.isLoading}>\n <slot name=\"loader\" />\n </div>\n )}\n {!this.hasLoadSlot && (\n <div\n class={{\n loader: true,\n loading: this.isLoading,\n }}\n >\n <nano-spinner overlay={true} type=\"circle\"></nano-spinner>\n </div>\n )}\n\n <Universe.Provider state={wormholeState}>\n <slot name=\"search-input\"></slot>\n <div class=\"results-container\" aria-live=\"polite\">\n <div ref={(div) => (this.resultsDiv = div)} class=\"results\">\n <slot name=\"output\" />\n </div>\n </div>\n </Universe.Provider>\n\n <div\n ref={(div) => (this.defaultDiv = div)}\n class=\"default\"\n tabindex=\"-1\"\n >\n <slot />\n </div>\n </Host>\n );\n }\n}\n"]}
|
1
|
+
{"version":3,"file":"algolia.js","sourceRoot":"","sources":["../../../src/components/algolia/algolia.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,CAAC,EACD,OAAO,EACP,IAAI,EACJ,IAAI,EACJ,KAAK,EACL,KAAK,EACL,MAAM,EACN,MAAM,EAEN,KAAK,EACL,KAAK,EACL,SAAS,EAET,QAAQ,GACT,MAAM,eAAe,CAAC;AAWvB,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,aAGN,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EACL,cAAc,GAEf,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAazD,MAAM,SAAS,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC;AAE/C;;;;;;;GAOG;AAMH,MAAM,OAAO,OAAO;EALpB;IAME,qCAAqC;IAC7B,uBAAkB,GAAgB,EAAE,CAAC;IACrC,oBAAe,GAAgB,EAAE,CAAC;IAIlC,gBAAW,GAAY,KAAK,CAAC;IAK7B,sBAAiB,GAAc,EAAE,CAAC;IAE1C,uFAAuF;IAC/E,iBAAY,GAAG,IAAI,YAAY,EAAE,CAAC;IAI1C,iBAAiB;IAEjB,iEAAiE;IACxD,qBAAgB,GAAgB,EAAE,CAAC;IAGnC,YAAO,GAAkB,EAAE,CAAC;IAG5B,kBAAa,GAAW,EAAE,CAAC;IAE3B,gBAAW,GAAsB,iBAAiB,CAAC,IAAI,CAAC;IACxD,cAAS,GAAY,KAAK,CAAC;IAC3B,kBAAa,GAAQ,IAAI,CAAC;IAEnC,eAAe;IAEf;;OAEG;IACsB,gBAAW,GAAY,KAAK,CAAC;IAEtD;;OAEG;IACsB,gBAAW,GAAW,CAAC,CAAC;IAYjD;;;;;;;;;;OAUG;IACK,gBAAW,GAAgB,EAAiB,CAAC;IAErD;;;;OAIG;IACsB,oBAAe,GAAW,EAAE,CAAC;IAEtD;;;;OAIG;IACK,aAAQ,GAAY,IAAI,CAAC;IAEjC;;;OAGG;IACsB,UAAK,GAAW,EAAE,CAAC;IAE5C;;OAEG;IACK,aAAQ,GAAiB,KAAK,CAAC;IAEvC;;;OAGG;IACK,YAAO,GAAkB,EAAE,CAAC;IAEpC;;;;OAIG;IACK,cAAS,GAAW,QAAQ,CAAC;IAErC;;;OAGG;IACK,gBAAW,GAA+B,QAAQ,CAAC,MAAM,CAAC;IAElE;;OAEG;IACK,iBAAY,GAAW,EAAE,CAAC;IAElC;;;OAGG;IACsB,gBAAW,GAAY,KAAK,CAAC,CAAC,8CAA8C;IAErG;;OAEG;IACK,aAAQ,GAAW,CAAC,CAAC;IAQ7B;;;OAGG;IACK,gBAAW,GAAmB,SAAS,CAAC;IAqJxC,iBAAY,GAAG,KAAK,IAAI,EAAE;MAChC,IAAI,CAAC,IAAI,CAAC,YAAY;QAAE,OAAO;MAE/B,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE;QACpD,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;UACrB,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;YAC1C,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACzB,OAAO;WACR;;YAAM,OAAO;SACf;aAAM,IAAI,IAAI,CAAC,KAAK,KAAK,GAAG,EAAE;UAC7B,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;UACjB,OAAO;SACR;OACF;MACD,8CAA8C;MAC9C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;MAEtB,UAAU,CAAC,KAAK,IAAI,EAAE;QACpB,uCAAuC;QACvC,IAAI,CAAC,SAAS,EAAE,CAAC;QAEjB,MAAM,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACjD,qDAAqD;QACrD,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAE3B,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC;QACjD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;MAChD,CAAC,EAAE,GAAG,CAAC,CAAC;IACV,CAAC,CAAC;IAwGF,iDAAiD;IACjD,4CAA4C;IACpC,uBAAkB,GAAG,GAAoB,EAAE;MACjD,IAAI,WAAW,GAAoB,EAAE,CAAC;MAEtC,MAAM,iBAAiB,GAAG,CAAC,YAE1B,EAAE,EAAE;QACH,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;UAC7C,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE;YACvC,IAAI,KAAK,GAAG,WAAW,CAAC,IAAI,CAC1B,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,KAAK,MAAM,CAAC,SAAS,CACnD,CAAC;YACF,IAAI,CAAC,KAAK;cACR,WAAW,CAAC,IAAI,CAAC;gBACf,IAAI,EAAE,MAAM,CAAC,SAAS;gBACtB,MAAM,EAAE,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;eAC1B,CAAC,CAAC;;cACA,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;WACxD;QACH,CAAC,CAAC,CAAC;MACL,CAAC,CAAC;MACF,iBAAiB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;MACxC,iBAAiB,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;MAE3C,IAAI,WAAW,CAAC,MAAM;QAAE,OAAO,WAAW,CAAC;MAC3C,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IAEF,oBAAoB;IACZ,kBAAa,GAAG,KAAK,EAAE,SAA4B,EAAE,EAAE;MAC7D,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC;IACtE,CAAC,CAAC;IAEF,cAAc;IACN,gBAAW,GAAG,KAAK,EAAE,SAA4B,EAAE,EAAE;MAC3D,IACE,CAAC,IAAI,CAAC,YAAY;QAClB,CAAC,IAAI,CAAC,KAAK;QACX,CAAC,IAAI,CAAC,WAAW;QACjB,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK;QAEvB,OAAO;MAET,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;MAE7C,8CAA8C;MAC9C,IAAI,iBAAiB,CAAC,IAAI,KAAK,SAAS;QAAE,IAAI,CAAC,oBAAoB,EAAE,CAAC;MAEtE,IAAI,YAAY,GAAQ;QACtB,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAAE;QAChC,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;OAC5D,CAAC;MAEF,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO;QAC1B,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;MACjD,IAAI,IAAI,CAAC,WAAW,CAAC,WAAW;QAC9B,YAAY,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC;MAE1D,IAAI,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAC1C,IAAI,CAAC,KAAK,EACV,YAAY,CACb,CAAuB,CAAC;MACzB,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;MAEhC,uEAAuE;MACvE,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;MAE7B,yFAAyF;MACzF,IAAI,SAAS,KAAK,iBAAiB,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;QAC9D,IAAI,CAAC,YAAY,GAAG;UAClB,WAAW,EAAE,CAAC;UACd,SAAS,EAAE,MAAM,CAAC,MAAM;UACxB,WAAW,EAAE,IAAI;UACjB,WAAW,EAAE,MAAM,CAAC,MAAM;UAC1B,KAAK,EAAE,IAAI,CAAC,KAAK;UACjB,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM,IAAI,IAAI;UACvC,MAAM,EAAE,CAAC,SAAS;UAClB,oBAAoB,EAAE,CAAC;UACvB,OAAO,EAAE,EAAE;UACX,UAAU,EAAE,CAAC;UACb,cAAc,EAAE,IAAI,CAAC,kBAAkB,EAAE;UACzC,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,IAAI;UACxC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK;SAC9B,CAAC;OACH;MAED,IAAI,CAAC,YAAY,CAAC,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC;MAC7C,IAAI,CAAC,YAAY,CAAC,OAAO,GAAG,MAAM,CAAC,IAA0B,CAAC;MAC9D,IAAI,CAAC,YAAY,CAAC,oBAAoB,GAAG,MAAM,CAAC,MAAM,CAAC;MACvD,IAAI,CAAC,YAAY,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC;MAC5C,IAAI,CAAC,YAAY,CAAC,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC;MAC9C,IAAI,CAAC,YAAY,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;MACnD,IAAI,CAAC,YAAY,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;MACvC,qJAAqJ;MAErJ,IACE,IAAI,CAAC,WAAW,KAAK,iBAAiB,CAAC,IAAI;QAC3C,IAAI,CAAC,WAAW,KAAK,iBAAiB,CAAC,OAAO,EAC9C;QACA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;OAC7B;MACD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;MAE5C,sEAAsE;MACtE,yEAAyE;MACzE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,EAAE,CAAC,CAAC;MAC/C,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;QACZ,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;QAC7C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC;MACnD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAmHM,sBAAiB,GAAG,CAAC,EAAE,EAAE,EAAE;MACjC,IAAI,EAAE,CAAC,MAAM,KAAK,IAAI,CAAC,UAAU;QAAE,OAAO;MAC1C,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;IACrC,CAAC,CAAC;IAEM,sBAAiB,GAAG,GAAG,EAAE;MAC/B,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;MACzB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;IAC3B,CAAC,CAAC;IAEM,oBAAe,GAAG,GAAG,EAAE;MAC7B,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,UAAU,CAAC,mBAAmB,CACjC,eAAe,EACf,IAAI,CAAC,eAAe,CACrB,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,WAAW;UAAE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;aACzD;UACH,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;UACvC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;UACvC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,SAAS,GAAG,EAAE,CAAC;UACrC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC;SAClC;MACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;GAuMH;EApsBC,iBAAiB;EAEjB;;;;;KAKG;EAEH,KAAK,CAAC,aAAa,CAAC,SAAkB,EAAE,UAAmB;IACzD,IAAI,CAAC,SAAS,IAAI,CAAC,UAAU;MAAE,IAAI,CAAC,oBAAoB,EAAE,CAAC;SACtD;MACH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;QACtD,IACE,SAAS;UACT,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,SAAS,KAAK,SAAS,EACvD;UACA,IAAI,CAAC,UAAU;YAAE,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,KAAK,GAAG,EAAE,CAAC;eAC/D;YACH,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,KAAK;cAC3C,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,MAAM,CAC1C,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,UAAU,CAC5B,CAAC;WACL;SACF;MACH,CAAC,CAAC,CAAC;KACJ;EACH,CAAC;EAED,+BAA+B;EAE/B,kDAAkD;EAElD,cAAc,CAAC,EAAe;IAC5B,EAAE,CAAC,eAAe,EAAE,CAAC;EACvB,CAAC;EAED,qEAAqE;EAErE,KAAK,CAAC,YAAY,CAAC,EAAgB;IACjC,IAAI,CAAC,IAAI,CAAC,YAAY;MAAE,OAAO;IAC/B,IAAI,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC;IAC5B,IAAI,EAAE,EAAE;MACN,EAAE,CAAC,eAAe,EAAE,CAAC;MACrB,IAAI,GAAI,EAAE,CAAC,MAAgC,CAAC,IAAI,CAAC;KAClD;IAED,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;IACxD,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAEzB,IAAI,IAAI,CAAC,YAAY,CAAC,WAAW,KAAK,IAAI;MAAE,OAAO;IAEnD,IAAI,CAAC,YAAY,CAAC,WAAW,GAAG,IAAI,CAAC;IACrC,MAAM,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;EACnD,CAAC;EAED;;;;KAIG;EAEH,KAAK,CAAC,cAAc,CAAC,EAAe;IAClC,EAAE,CAAC,eAAe,EAAE,CAAC;IAErB,IAAI,YAAY,GAAgB,EAAE,CAAC;IACnC,IAAI,MAAM,GAAG,EAAE,CAAC,MAAqB,CAAC;IACtC,MAAM,CAAC,OAAO,GAAG,EAAE,CAAC,MAAsC,CAAC;IAE3D,IAAI,IAAI,CAAC,YAAY,EAAE;MACrB,IAAI,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,QAAQ,CAAC;QAC1C,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC;WAC/C;QACH,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC;QACvC,IAAI,CAAC,gBAAgB,mCAAQ,IAAI,CAAC,gBAAgB,GAAK,YAAY,CAAE,CAAC;OACvE;MAED,IAAI,CAAC,YAAY,CAAC,cAAc,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;KAC9D;;MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC;IAEzD,IAAI,CAAC,aAAa;MAChB,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC;IAEhE,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;EAC/C,CAAC;EAED,0BAA0B;EAE1B,wEAAwE;EACxE,yFAAyF;EAEzF,qBAAqB;IACnB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;MACtD,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,KAAK,MAAM,CAAC,OAAO,CAAC,aAAa;QAC1D,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC;;QAC5C,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;EACL,CAAC;EAGD,iBAAiB;IACf,IACE,IAAI,CAAC,WAAW;MAChB,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,EAClD;MACA,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;KAClB;EACH,CAAC;EAGD,aAAa;IACX,IAAI,CAAC,IAAI,CAAC,UAAU;MAAE,OAAO;IAC7B,IACE,IAAI,CAAC,KAAK,KAAK,GAAG;MAClB,IAAI,CAAC,UAAU;MACf,IAAI,CAAC,UAAU,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK;MAEpC,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;EACvC,CAAC;EAGD,WAAW;IACT,IAAI,CAAC,YAAY,EAAE,CAAC;EACtB,CAAC;EAiCD,KAAK,CAAC,mBAAmB;IACvB,IACE,CAAC,IAAI,CAAC,YAAY;MAClB,CAAC,IAAI,CAAC,YAAY;MAClB,IAAI,CAAC,YAAY,CAAC,KAAK,KAAK,IAAI,CAAC,YAAY;MAE7C,OAAO;IACT,IAAI,CAAC,YAAY,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC;IAC5C,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAC1E,IAAI,CAAC,SAAS,EAAE,CAAC;IACjB,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;EAChD,CAAC;EAGD,UAAU;IACR,IAAI,CAAC,YAAY,EAAE,CAAC;EACtB,CAAC;EAGD,qBAAqB;IACnB,IACE,CAAC,IAAI,CAAC,eAAe;MACrB,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM;MAC5B,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,KAAK,IAAI,CAAC,eAAe,CAAC;MAErE,OAAO;IACT,IAAI,CAAC,WAAW,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC;EACrD,CAAC;EAID,iBAAiB;IACf,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM;MAAE,OAAO;IACxC,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;EAC9D,CAAC;EAGD,gBAAgB;IACd,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,WAAW;MAAE,OAAO;IACrD,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE;MAC1B,IAAI,IAAI,CAAC,YAAY;QAAE,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC;MAClE,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;MAC9C,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;MACzE,IAAI,CAAC,YAAY,EAAE,CAAC;KACrB;EACH,CAAC;EAGD,WAAW;IACT,IAAI,CAAC,IAAI,CAAC,QAAQ;MAAE,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;SAC/C;MACH,UAAU,CAAC,GAAG,EAAE;QACd,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxD,IAAI,IAAI,CAAC,UAAU;UAAE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;MACtD,CAAC,EAAE,EAAE,CAAC,CAAC;KACR;EACH,CAAC;EAGD,iBAAiB;IACf,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,UAAU;MAAE,OAAO;IAEjD,IAAI,IAAI,CAAC,WAAW,EAAE;MACpB,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;MAC3D,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;MAEhE,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,eAAe,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;QACxE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;QACxC,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;MAC9D,CAAC,CAAC,CAAC;KACJ;SAAM;MACL,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC1C,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;QACxC,UAAU,CAAC,GAAG,EAAE;UACd,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAC9B,eAAe,EACf,IAAI,CAAC,eAAe,CACrB,CAAC;UACF,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;UAEzC,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY;YACrB,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;;YAC9C,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QACtD,CAAC,EAAE,EAAE,CAAC,CAAC;MACT,CAAC,CAAC,CAAC;KACJ;EACH,CAAC;EAED,mBAAmB;EAEX,SAAS,CAAC,OAA2B;IAC3C,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM;MAAE,OAAO,OAAO,CAAC;IAClE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;MACvB,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC;QACpC,GAAG,CAAC,GAAG,GAAG,QAAQ,CAAC,QAAQ,GAAG,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC;IAC3E,CAAC,CAAC,CAAC;IACH,OAAO,OAAO,CAAC;EACjB,CAAC;EAoHO,SAAS;IACf,IAAI,CAAC,IAAI,CAAC,YAAY;MAAE,OAAO;IAC/B,IAAI,CAAC,YAAY,CAAC,WAAW,GAAG,CAAC,CAAC;EACpC,CAAC;EAEO,oBAAoB;IAC1B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;MACtD,MAAM,CAAC,OAAO,CAAC,KAAK,GAAG,EAAE,CAAC;IAC5B,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;EAC7B,CAAC;EAEO,gBAAgB;IACtB,gEAAgE;IAChE,0DAA0D;IAE1D,IAAI,cAAc,GAA8C,EAAE,CAAC;IAEnE,MAAM,YAAY,GAAG,CAAC,YAA6C,EAAE,EAAE;MACrE,IAAI,MAA+B,CAAC;MACpC,IAAI,QAAuB,CAAC;MAE5B,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;QAC7C,MAAM,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;QAChC,cAAc,CAAC,QAAQ,CAAC,GAAG,cAAc,CAAC,QAAQ,CAAC,IAAI;UACrD,IAAI,EAAE,MAAM,CAAC,SAAS;UACtB,EAAE,EAAE,EAAE;UACN,GAAG,EAAE,EAAE;UACP,GAAG,EAAE,EAAE;SACR,CAAC;QAEF,QAAQ,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACrD,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE;UACvC,cAAc,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG;YAC1C,GAAG,QAAQ;YACX,GAAG,MAAM,CAAC,KAAK;WAChB,CAAC;SACH;MACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IACnC,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAEtC,MAAM,SAAS,GAAG,CAAC,IAAY,EAAE,GAAW,EAAE,EAAE;MAC9C,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAAE,OAAO,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,CAAC;;QACrD,OAAO,IAAI,GAAG,GAAG,GAAG,GAAG,CAAC;IAC/B,CAAC,CAAC;IACF,IAAI,cAAc,GAAkB,EAAE,CAAC;IACvC,IAAI,WAAkC,CAAC;IACvC,IAAI,UAAkB,CAAC;IACvB,uCAAuC;IAEvC,sEAAsE;IACtE,+CAA+C;IAC/C,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,UAAU,MAAM;MACpD,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;SAChB,MAAM,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;SACxD,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;QACpB,WAAW,GAAG,MAAM,CAAC;QACrB,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC;QAEzB,IAAI,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,KAAK,EAAE;UAC3C,IAAI,WAAW,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE;YAChC,cAAc,CAAC,IAAI,CACjB;iBACC;cACC,WAAW,CAAC,QAAQ,CAAC;iBAClB,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;gBACX,IAAI,GAAG,CAAC,MAAM;kBAAE,OAAO,SAAS,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;cACpD,CAAC,CAAC;iBACD,IAAI,CAAC,GAAG,GAAG,QAAQ,CAAC,iBAAiB,EAAE,GAAG,GAAG,CAAC;cACjD;gBACF,CACD,CAAC;WACH;SACF;aAAM;UACL,IAAI,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE;YAC1B,cAAc,CAAC,IAAI,CACjB;iBACC;cACC,WAAW,CAAC,QAAQ,CAAC;iBAClB,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;gBACX,IAAI,GAAG,CAAC,MAAM;kBACZ,OAAO,MAAM,GAAG,SAAS,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;cAC/C,CAAC,CAAC;iBACD,IAAI,CAAC,OAAO,CAAC;cAChB;gBACF,CACD,CAAC;WACH;SACF;MACH,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,sDAAsD;IACtD,cAAc,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,cAAc,CAAC,CAAC;IACtD,gGAAgG;IAChG,OAAO,cAAc,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE,GAAG,GAAG,CAAC,CAAC;EAC5E,CAAC;EAEO,mBAAmB,CAAC,QAAiB,IAAI;IAC/C,IAAI,CAAC,IAAI,CAAC,UAAU;MAAE,OAAO;IAC7B,IAAI,SAAS,GACX,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,iBAAiB,EAAE,KAAK,YAAY;MAC1D,CAAC,CAAC,YAAY;MACd,CAAC,CAAC,QAAQ,CAAC;IAEf,IAAI,KAAK;MACP,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;;MACjE,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;EAC9E,CAAC;EA4BO,KAAK,CAAC,aAAa;IACzB,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC;EACpE,CAAC;EAEO,KAAK,CAAC,kBAAkB;IAC9B,IAAI,QAAQ,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC;IAElD,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,GAAG;MAAE,OAAO,QAAQ,CAAC;IAE5C,IAAI,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC5C,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC;IAE7B,IAAI,WAAW,GAAc,EAAE,CAAC;IAChC,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;IAE5B,wEAAwE;IACxE,wCAAwC;IACxC,KAAK,CAAC,IAAI,CACR,OAAO,CAAC,gBAAgB,CACtB,yDAAyD,CAC1D,CACF,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE;MAClB,IAAI,WAAW,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;MAChD,WAAW,CAAC,OAAO,CAAC,aAAa,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;MACjD,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;MAClD,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;MACrB,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,2BAA2B;IAC3B,6CAA6C;IAE7C,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,CACnC,OAAO,CAAC,SAAS;OACd,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC;OACtB,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC;OACtB,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,EAC1B,IAAI,CAAC,YAAY,CAClB,CAAC;IAEF,+BAA+B;IAC/B,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,0BAA0B,CAAC,CAAC,CAAC,OAAO,CACvE,CAAC,EAAkB,EAAE,EAAE;MACrB,EAAE,CAAC,UAAU,CAAC,YAAY,CACxB,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,EAC/C,EAAE,CACH,CAAC;MACF,IAAI,CAAC,iBAAiB,CAAC,IAAI,CACzB,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAChD,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM;MAAE,OAAO,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IAE5E,0EAA0E;IAC1E,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;MAC7B,MAAM,gBAAgB,GAAG,CAAC,EAAe,EAAE,EAAE;QAC3C,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CACpD,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAM,EAAE,CAAC,MAAsB,CAC5C,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE;UAClC,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,GAAG,CAAC,CAAC;UAC9C,QAAQ,CAAC,mBAAmB,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;SAClE;MACH,CAAC,CAAC;MACF,QAAQ,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;EACL,CAAC;EAED,gBAAgB;EAEhB,iBAAiB;IACf,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE;MACb,IAAI,CAAC,OAAO,GAAG,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC;MACpE,IAAI,CAAC,UAAU,GAAG,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;MACrE,IAAI,CAAC,YAAY,GAAG,iBAAiB,CACnC,IAAI,CAAC,IAAI,EACT,uBAAuB,CACxB,CAAC,CAAC,CAAC,CAAC;MACL,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;MACxE,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO;QAAE,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;MAEtD,+BAA+B;MAC/B,IACE,IAAI,CAAC,YAAY;QACjB,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,iBAAiB,EAAE,KAAK,YAAY;UAC7D,IAAI,CAAC,YAAY,YAAY,gBAAgB,CAAC,EAChD;QACA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,YAAoC,CAAC;OAC7D;WAAM,IAAI,IAAI,CAAC,YAAY,EAAE;QAC5B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,CAC/C,8DAA8D,CAC/D,CAAC;OACH;MACD,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ;QACnC,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;MAC1D,IAAI,IAAI,CAAC,UAAU;QAAE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;MAEpD,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE;QACd,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,GAAG;UAAE,IAAI,CAAC,YAAY,EAAE,CAAC;MACxD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC7B,IAAI,CAAC,iBAAiB,EAAE,CAAC;IACzB,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAExB,oFAAoF;IACpF,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IAE1C,IAAI,IAAI,CAAC,OAAO,EAAE;MAChB,cAAc,CAAC,IAAI,CACjB,IAAI,EACJ,CAAC,OAAO,EAAE,cAAc,CAAC,EACzB,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,OAAO,CACb,CAAC;MACF,cAAc,CAAC,IAAI,CACjB,IAAI,EACJ,CAAC,QAAQ,EAAE,OAAO,EAAE,aAAa,CAAC,EAClC,SAAS,EACT,IAAI,CAAC,OAAO,GAAG,MAAM,CACtB,CAAC;KACH;IACD,IAAI,CAAC,mBAAmB,EAAE,CAAC;EAC7B,CAAC;EAED,iBAAiB;IACf,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;IACrD,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAEzB,IAAI,CAAC,KAAK,CAAC,SAAS;MAAE,OAAO;IAC7B,IAAI,CAAC,IAAI,CAAC,aAAa,CACrB,IAAI,WAAW,CAAC,aAAa,EAAE;MAC7B,MAAM,EAAE,IAAI,CAAC,IAAI;KAClB,CAAC,CACH,CAAC;EACJ,CAAC;EAED,MAAM;IACJ,MAAM,aAAa,GAAG;MACpB,YAAY,EAAE,IAAI,CAAC,YAAY;MAC/B,OAAO,EAAE,IAAI,CAAC,WAAW;MACzB,aAAa,EAAE,IAAI,CAAC,aAAa;MACjC,WAAW,EAAE,IAAI,CAAC,WAAW;MAC7B,WAAW,EAAE,IAAI,CAAC,WAAW;MAC7B,WAAW,EAAE,IAAI,CAAC,WAAW;MAC7B,MAAM,EAAE,IAAI,CAAC,MAAM;MACnB,YAAY,EAAE,IAAI,CAAC,YAAY;MAC/B,WAAW,EAAE,IAAI,CAAC,WAAW;MAC7B,iBAAiB,EAAE,IAAI,CAAC,WAAW;MACnC,SAAS,EAAE,IAAI,CAAC,SAAS;KAC1B,CAAC;IACF,OAAO,CACL,EAAC,IAAI,IACH,KAAK,EAAE;QACL,cAAc,EAAE,IAAI,CAAC,WAAW;QAChC,YAAY,EAAE,IAAI,CAAC,SAAS;OAC7B,eACU,IAAI,CAAC,SAAS;MAExB,IAAI,CAAC,WAAW,IAAI,CACnB,WAAK,MAAM,EAAE,CAAC,IAAI,CAAC,SAAS;QAC1B,YAAM,IAAI,EAAC,QAAQ,GAAG,CAClB,CACP;MACA,CAAC,IAAI,CAAC,WAAW,IAAI,CACpB,WACE,KAAK,EAAE;UACL,MAAM,EAAE,IAAI;UACZ,OAAO,EAAE,IAAI,CAAC,SAAS;SACxB;QAED,oBAAc,OAAO,EAAE,IAAI,EAAE,IAAI,EAAC,QAAQ,GAAgB,CACtD,CACP;MAED,EAAC,QAAQ,CAAC,QAAQ,IAAC,KAAK,EAAE,aAAa;QACrC,YAAM,IAAI,EAAC,cAAc,GAAQ;QACjC,WAAK,KAAK,EAAC,mBAAmB,eAAW,QAAQ;UAC/C,WAAK,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,EAAE,KAAK,EAAC,SAAS;YACzD,YAAM,IAAI,EAAC,QAAQ,GAAG,CAClB,CACF,CACY;MAEpB,WACE,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,EACrC,KAAK,EAAC,SAAS,EACf,QAAQ,EAAC,IAAI;QAEb,eAAQ,CACJ,CACD,CACR,CAAC;EACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import {\n Component,\n h,\n Element,\n Host,\n Prop,\n Watch,\n State,\n Listen,\n Method,\n EventEmitter,\n Event,\n Build,\n writeTask,\n ComponentInterface,\n readTask,\n} from '@stencil/core';\nimport {\n AlgoliaMultiResult,\n IndexResult,\n AlgoliaResultHit,\n FilterChangeEventDetail,\n PageChangeEventDetail,\n AppliedFilter,\n AlgoliaFacet,\n SearchIndex,\n} from '../../interface';\nimport { Universe, SearchChangeEvent } from './algolia-data';\nimport { debounce, getDirectChildren } from '../../utils';\nimport algoliasearch, {\n SearchClient as AlgoliaClient,\n SearchIndex as AlgoliaIndex,\n} from 'algoliasearch';\nimport { Squirrel } from '../../utils/template';\nimport {\n ComponentStore,\n StorageMethods,\n} from '../../utils/store/component-store';\nimport { PromiseQueue } from '../../utils/promise-queue';\n\ninterface FacetFilterQueryBlock {\n or: Array<string>;\n and: Array<string>;\n not: Array<string>;\n name: string;\n}\ninterface FacetFilter extends FilterChangeEventDetail {\n element: HTMLNanoAlgoliaFilterElement;\n}\ntype FilterGroup = { [prop: string]: FacetFilter };\n\nconst CANSHADOW = !!document.head.attachShadow;\n\n/**\n * Algolia search container to contain and sync nano-algolia-results and nano-algolia-filter components.\n * Can optionally contain nano-algolia-input components or use them as a 'resultsEmitter'\n * @slot search-input - optional. Should contain an algolia-input component.\n * @slot loader - optional. Elements to show when search results are loading.\n * @slot template - optional. Template string (format depends on 'tplEngine' property). May contain other algolia-... components with nested templates.\n * @slot output - Search result output. Will be a placeholder for template output or optionally nest algolia-... components.\n */\n@Component({\n tag: 'nano-algolia',\n shadow: true,\n styleUrl: 'algolia.scss',\n})\nexport class Algolia implements ComponentInterface {\n // filters that have an initial value\n private staticFacetFilters: FilterGroup = {};\n private dynFacetFilters: FilterGroup = {};\n private tplSlot: HTMLElement;\n private outputSlot: HTMLElement;\n private slottedInput: HTMLElement;\n private hasLoadSlot: boolean = false;\n private resultsDiv: HTMLDivElement;\n private defaultDiv: HTMLDivElement;\n private tpl: string;\n private facets: AlgoliaFacet;\n private placedAlgoliaEles: Element[] = [];\n private algoliaClient: AlgoliaClient;\n // lots of stuff happens asynchronously. This makes sure they fire in the corrent order\n private promiseQueue = new PromiseQueue();\n\n @Element() host: HTMLNanoAlgoliaElement;\n\n // Internal state\n\n // filters that change via a template. They have no initial value\n @State() _dynFacetFilters: FilterGroup = {};\n @State() inputField: HTMLNanoInputElement | HTMLInputElement;\n @State() algoliaIndex: AlgoliaIndex;\n @State() indeces: IndexResult[] = [];\n @State() resultsEmitterEle: HTMLElement;\n @State() indexResults: IndexResult;\n @State() filterChanged: string = '';\n @State() currentHits: AlgoliaResultHit[];\n @State() changeEvent: SearchChangeEvent = SearchChangeEvent.Init;\n @State() isLoading: boolean = false;\n @State() wormholeState: any = this;\n\n // Public props\n\n /**\n * Show the result panel. By default it will automatically show when the result receives new hits.\n */\n @Prop({ mutable: true }) showResults: boolean = false;\n\n /**\n * The current algolia page of results currently being viewed or to get.\n */\n @Prop({ mutable: true }) resultsPage: number = 0;\n\n /**\n * An Algolia App ID key. Used in conjunction with 'searchIndex' & 'apiKey'.\n */\n @Prop() appId: string;\n\n /**\n * An Algolia API Key. Used in conjunction with 'searchIndex' & 'appId'.\n */\n @Prop() apiKey: string;\n\n /**\n * Algolia search index. Used in conjunction with 'apiKey' & 'appId'.\n * ```\n * { index: string, // algolia index name\n * domain?: string, // used in template filters to resolve incomplete url fields\n * filters?: [string], // algolia facets to retrive\n * hitsPerPage?: number,\n * name?: string // human readable index name\n * }\n * ```\n */\n @Prop() searchIndex: SearchIndex = {} as SearchIndex;\n\n /**\n * Algolia search index name. Alternative to 'searchIndex'.\n * A simplified shortcut for setting an index.\n * Properties such as hitsPerPage and facets will come from the algolia index\n */\n @Prop({ mutable: true }) searchIndexName: string = '';\n\n /**\n * JS querSelector string of a `nano-input` / `input` element from which\n * to listen to `nano-change` or `change` events and change the `query` prop.\n * Not required if an appropriate field is in the 'search-input' slot\n */\n @Prop() listenTo?: string = null;\n\n /**\n * The query string used to search the index. Will automtically be set with any slotted\n * `search-input` input elements or from elements linked to from `listen-to`\n */\n @Prop({ mutable: true }) query: string = '';\n\n /**\n * The external operator joining filter values.\n */\n @Prop() operator: 'or' | 'and' = 'and';\n\n /**\n * Query filters to apply to all searches.\n * Refer to https://www.algolia.com/doc/api-reference/api-parameters/filters for format.\n */\n @Prop() filters: Array<string> = [];\n\n /**\n * Template engine to use when rendering results and filters.\n * Defaults to Squirrel v8 (https://squirrelly.js.org/). This gives you access\n * to the underlying squirrel object allowing you to modify it's configuration / add filters.\n */\n @Prop() tplEngine: Object = Squirrel;\n\n /**\n * Template engine render function to use when rendering results and filters.\n * Defaults to Squirrel v8's render (https://squirrelly.js.org/).\n */\n @Prop() tplRenderFn: (...args: any[]) => string = Squirrel.render;\n\n /**\n * Changes the index without removing any current filters. Most appropriate for algolia replicas.\n */\n @Prop() replicaIndex: string = '';\n\n /**\n * Will maintain a search all / '*' on init and reset allowing for a view\n * then filter experience rather than a search first experience\n */\n @Prop({ mutable: true }) browseIndex: boolean = false; // eslint-disable-line @stencil/strict-mutable\n\n /**\n * Minimum number of characters before performing a search\n */\n @Prop() minChars: number = 2;\n\n /**\n * Store search queries (against this ID) to the component store.\n * Use in conjunction with storeMethod\n */\n @Prop() storeId?: string;\n\n /**\n * The method of storage.\n * Either session storage, url hash (after the '#') or url query (after the '?').\n */\n @Prop() storeMethod: StorageMethods = 'session';\n\n // Events\n\n /**\n * Emitted when the algolia element has been created.\n */\n @Event() nanoDidLoad!: EventEmitter<HTMLNanoAlgoliaElement>;\n\n /**\n * Emitted when results and all filters are shown and have loaded.\n */\n @Event({ bubbles: false }) nanoResultsShown!: EventEmitter<IndexResult>;\n\n /**\n * Emitted before an algolia search.\n */\n @Event() nanoBeforeQuery!: EventEmitter<IndexResult>;\n\n /**\n * Emitted after an algolia search.\n */\n @Event() nanoAfterQuery!: EventEmitter<IndexResult>;\n\n // Public methods\n\n /**\n * @param facetName - will clear all filter selections of that type\n * @param facetValue - will remove a single filter selection\n * Remove facet filters (as set from nano-algolia-filter elements).\n * The omission or both will remove all facet filters\n */\n @Method()\n async removeFilters(facetName?: string, facetValue?: string) {\n if (!facetName && !facetValue) this.clearAllFacetFilters();\n else {\n Object.keys(this._dynFacetFilters).forEach((filterId) => {\n if (\n facetName &&\n this._dynFacetFilters[filterId].facetName === facetName\n ) {\n if (!facetValue) this._dynFacetFilters[filterId].element.value = '';\n else {\n this._dynFacetFilters[filterId].element.value =\n this._dynFacetFilters[filterId].value.filter(\n (val) => val !== facetValue\n );\n }\n }\n });\n }\n }\n\n // Listeners to external events\n\n // a child nano-algolia-... updated their template\n @Listen('nanoTplUpdated')\n onAllTplUpdate(ev: CustomEvent) {\n ev.stopPropagation();\n }\n\n // a nano-algolia-pagination or nano-algolia-results changed the page\n @Listen('nanoPageChanged')\n async onPageChange(ev?: CustomEvent) {\n if (!this.indexResults) return;\n let page = this.resultsPage;\n if (ev) {\n ev.stopPropagation();\n page = (ev.detail as PageChangeEventDetail).page;\n }\n\n page = Math.min(this.indexResults.totalPages - 1, page);\n page = Math.max(page, 0);\n\n if (this.indexResults.currentPage === page) return;\n\n this.indexResults.currentPage = page;\n await this.algoliaSearch(SearchChangeEvent.Page);\n }\n\n /**\n * nano-algolia-filter changed value.\n * If that happened before a indexResults were setup, it was a static filter.\n * Static filters persist accross search changes\n */\n @Listen('nanoFilterChanged')\n async onFilterChange(ev: CustomEvent) {\n ev.stopPropagation();\n\n let dynFilterObj: FilterGroup = {};\n let filter = ev.detail as FacetFilter;\n filter.element = ev.target as HTMLNanoAlgoliaFilterElement;\n\n if (this.indexResults) {\n if (this.staticFacetFilters[filter.filterId])\n this.staticFacetFilters[filter.filterId] = filter;\n else {\n dynFilterObj[filter.filterId] = filter;\n this._dynFacetFilters = { ...this._dynFacetFilters, ...dynFilterObj };\n }\n\n this.indexResults.appliedFilters = this.makeAppliedFilters();\n } else this.staticFacetFilters[filter.filterId] = filter;\n\n this.filterChanged =\n filter.value && filter.value.length ? filter.filterId : 'all';\n\n this.resetPage();\n this.algoliaSearch(SearchChangeEvent.Filter);\n }\n\n // Internal state watchers\n\n // Filters can fire a change event, cause a re-render then get detached.\n // This can cause filter dupes. Check to see if the original element is still in the DOM.\n @Watch('_dynFacetFilters')\n dynFacetFiltersChange() {\n Object.values(this._dynFacetFilters).forEach((filter) => {\n if (this.host.ownerDocument === filter.element.ownerDocument)\n this.dynFacetFilters[filter.filterId] = filter;\n else delete this.dynFacetFilters[filter.filterId];\n });\n }\n\n @Watch('browseIndex')\n browseIndexChange() {\n if (\n this.browseIndex &&\n (!this.query || this.query.length < this.minChars)\n ) {\n this.query = '*';\n }\n }\n\n @Watch('inputField')\n inputFieldSet() {\n if (!this.inputField) return;\n if (\n this.query !== '*' &&\n this.inputField &&\n this.inputField.value !== this.query\n )\n this.inputField.value = this.query;\n }\n\n @Watch('query')\n queryChange() {\n this.searchChange();\n }\n private searchChange = async () => {\n if (!this.algoliaIndex) return;\n\n if (!this.query || this.query.length < this.minChars) {\n if (!this.browseIndex) {\n if (!this.query || this.query.length === 0) {\n this.handleSearchReset();\n return;\n } else return;\n } else if (this.query !== '*') {\n this.query = '*';\n return;\n }\n }\n // Do an initialise search (setup searchIndex)\n this.isLoading = true;\n\n setTimeout(async () => {\n // Clear dynamic filters and reset page\n this.resetPage();\n\n await this.algoliaSearch(SearchChangeEvent.Init);\n // Populate master content - optionally from template\n await this.updateContent();\n\n setTimeout((_) => (this.isLoading = false), 800);\n this.showResults = true;\n this.nanoResultsShown.emit(this.indexResults);\n }, 200);\n };\n\n @Watch('replicaIndex')\n async internalIndexSwitch() {\n if (\n !this.replicaIndex ||\n !this.indexResults ||\n this.indexResults.index === this.replicaIndex\n )\n return;\n this.indexResults.index = this.replicaIndex;\n this.algoliaIndex = this.algoliaClient.initIndex(this.indexResults.index);\n this.resetPage();\n this.algoliaSearch(SearchChangeEvent.Replica);\n }\n\n @Watch('resultsPage')\n pageChange() {\n this.onPageChange();\n }\n\n @Watch('searchIndexName')\n searchIndexNameChange() {\n if (\n !this.searchIndexName ||\n !this.searchIndexName.length ||\n (this.searchIndex && this.searchIndex.index === this.searchIndexName)\n )\n return;\n this.searchIndex = { index: this.searchIndexName };\n }\n\n @Watch('apiKey')\n @Watch('appId')\n initAlgoliaClient() {\n if (!this.appId || !this.apiKey) return;\n this.algoliaClient = algoliasearch(this.appId, this.apiKey);\n }\n\n @Watch('searchIndex')\n initAlgoliaIndex() {\n if (!this.algoliaClient || !this.searchIndex) return;\n if (this.searchIndex.index) {\n if (this.replicaIndex) this.searchIndex.index = this.replicaIndex;\n this.searchIndexName = this.searchIndex.index;\n this.algoliaIndex = this.algoliaClient.initIndex(this.searchIndex.index);\n this.searchChange();\n }\n }\n\n @Watch('listenTo')\n newListenTo() {\n if (!this.listenTo) this.attachInputListener(false);\n else {\n setTimeout(() => {\n this.inputField = document.querySelector(this.listenTo);\n if (this.inputField) this.attachInputListener(true);\n }, 50);\n }\n }\n\n @Watch('showResults')\n showResultsChange() {\n if (!this.resultsDiv || !this.defaultDiv) return;\n\n if (this.showResults) {\n this.resultsDiv.style.width = this.host.scrollWidth + 'px';\n this.resultsDiv.style.minHeight = this.host.scrollHeight + 'px';\n\n writeTask(() => {\n this.resultsDiv.addEventListener('transitionend', this.onResultDisplay);\n this.resultsDiv.style.display = 'block';\n setTimeout(() => this.resultsDiv.classList.add('show'), 50);\n });\n } else {\n writeTask(() => {\n this.resultsDiv.classList.remove('shown');\n this.defaultDiv.style.display = 'block';\n setTimeout(() => {\n this.resultsDiv.addEventListener(\n 'transitionend',\n this.onResultDisplay\n );\n this.resultsDiv.classList.remove('show');\n\n if (!!this.slottedInput)\n this.slottedInput.focus({ preventScroll: true });\n else this.defaultDiv.focus({ preventScroll: true });\n }, 50);\n });\n }\n }\n\n // Internal methods\n\n private fixDomain(results: AlgoliaMultiResult) {\n if (!this.searchIndex || !this.searchIndex.domain) return results;\n results.hits.map((hit) => {\n if (hit.url && !hit.url.match(/^http/))\n hit.url = location.protocol + '//' + this.searchIndex.domain + hit.url;\n });\n return results;\n }\n\n // Takes all current filters (dynamic and static)\n // and merges common filters' values togther\n private makeAppliedFilters = (): AppliedFilter[] => {\n let appliedFtrs: AppliedFilter[] = [];\n\n const makeAppliedFilter = (facetFilters: {\n [prop: string]: FacetFilter;\n }) => {\n Object.values(facetFilters).forEach((filter) => {\n if (filter.value && filter.value.length) {\n let found = appliedFtrs.find(\n (appFilter) => appFilter.name === filter.facetName\n );\n if (!found)\n appliedFtrs.push({\n name: filter.facetName,\n values: [...filter.value],\n });\n else found.values = [...found.values, ...filter.value];\n }\n });\n };\n makeAppliedFilter(this.dynFacetFilters);\n makeAppliedFilter(this.staticFacetFilters);\n\n if (appliedFtrs.length) return appliedFtrs;\n return null;\n };\n\n // Queue up a search\n private algoliaSearch = async (eventType: SearchChangeEvent) => {\n return this.promiseQueue.enqueue(() => this.queueSearch(eventType));\n };\n\n // Do a search\n private queueSearch = async (eventType: SearchChangeEvent) => {\n if (\n !this.algoliaIndex ||\n !this.query ||\n !this.searchIndex ||\n !this.searchIndex.index\n )\n return;\n\n this.nanoBeforeQuery.emit(this.indexResults);\n\n // clear all facet filters on init (new query)\n if (SearchChangeEvent.Init === eventType) this.clearAllFacetFilters();\n\n let searchParams: any = {\n filters: this.algoliaFilterStr(),\n page: this.indexResults ? this.indexResults.currentPage : 0,\n };\n\n if (this.searchIndex.filters)\n searchParams.facets = this.searchIndex.filters;\n if (this.searchIndex.hitsPerPage)\n searchParams.hitsPerPage = this.searchIndex.hitsPerPage;\n\n let result = (await this.algoliaIndex.search(\n this.query,\n searchParams\n )) as AlgoliaMultiResult;\n result = this.fixDomain(result);\n\n // set event type - this informs children components why things changed\n this.changeEvent = eventType;\n\n // Setup initial meta on new queries. Some of it should not change on filter / pagination\n if (eventType === SearchChangeEvent.Init || !this.indexResults) {\n this.indexResults = {\n currentPage: 0,\n totalHits: result.nbHits,\n hitsPerPage: null,\n origFilters: result.facets,\n query: this.query,\n domain: this.searchIndex.domain || null,\n legacy: !CANSHADOW,\n totalHitsWithFilters: 0,\n results: [],\n totalPages: 0,\n appliedFilters: this.makeAppliedFilters(),\n indexName: this.searchIndex.name || null,\n index: this.searchIndex.index,\n };\n }\n\n this.indexResults.dynFilters = result.facets;\n this.indexResults.results = result.hits as AlgoliaResultHit[];\n this.indexResults.totalHitsWithFilters = result.nbHits;\n this.indexResults.currentPage = result.page;\n this.indexResults.totalPages = result.nbPages;\n this.indexResults.hitsPerPage = result.hitsPerPage;\n this.indexResults.query = result.query;\n // console.log('I GOT NEW RESULTS', eventType, this.query, this.algoliaFilterStr(), this.indexResults.results.length, this.indexResults.currentPage )\n\n if (\n this.changeEvent !== SearchChangeEvent.Page &&\n this.changeEvent !== SearchChangeEvent.Replica\n ) {\n this.facets = result.facets;\n }\n this.nanoAfterQuery.emit(this.indexResults);\n\n // current hits and page will cause re-renders in children components.\n // Wait a tick before firing otherwise events can fire in the wrong order\n return new Promise((resolve) => {\n setTimeout(() => resolve('tpl updated'), 20);\n }).then((_) => {\n this.currentHits = this.indexResults.results;\n this.resultsPage = this.indexResults.currentPage;\n });\n };\n\n private resetPage() {\n if (!this.indexResults) return;\n this.indexResults.currentPage = 0;\n }\n\n private clearAllFacetFilters() {\n Object.values(this._dynFacetFilters).forEach((filter) => {\n filter.element.value = '';\n });\n this._dynFacetFilters = {};\n }\n\n private algoliaFilterStr() {\n // groups applied facet filters (from algolia-filter components)\n // with their applied, 'internal' operators (and, or, not)\n\n let facetFilterObj: { [prop: string]: FacetFilterQueryBlock } = {};\n\n const groupFilters = (facetFilters: { [prop: string]: FacetFilter }) => {\n let filter: FilterChangeEventDetail;\n let filterOp: Array<string>;\n\n Object.keys(facetFilters).forEach((filterId) => {\n filter = facetFilters[filterId];\n facetFilterObj[filterId] = facetFilterObj[filterId] || {\n name: filter.facetName,\n or: [],\n and: [],\n not: [],\n };\n\n filterOp = facetFilterObj[filterId][filter.operator];\n if (filter.value && filter.value.length) {\n facetFilterObj[filterId][filter.operator] = [\n ...filterOp,\n ...filter.value,\n ];\n }\n });\n };\n\n groupFilters(this.dynFacetFilters);\n groupFilters(this.staticFacetFilters);\n\n const formatVal = (name: string, val: string) => {\n if (val.indexOf(' ') > -1) return name + ':\"' + val + '\"';\n else return name + ':' + val;\n };\n let filterStrParts: Array<string> = [];\n let operatorGrp: FacetFilterQueryBlock;\n let filterName: string;\n // let processedFilters: string[] = [];\n\n // joins all applied facet filter operator groups with the set 'outer'\n // operator into an algolia filter query string\n Object.values(facetFilterObj).forEach(function (filter) {\n Object.keys(filter)\n .filter((filterProp) => filterProp.match(/(or|and|not)/))\n .forEach((operator) => {\n operatorGrp = filter;\n filterName = filter.name;\n\n if (operator === 'or' || operator === 'and') {\n if (operatorGrp[operator].length) {\n filterStrParts.push(\n '( \\\n ' +\n operatorGrp[operator]\n .map((val) => {\n if (val.length) return formatVal(filterName, val);\n })\n .join(' ' + operator.toLocaleUpperCase() + ' ') +\n ' \\\n )'\n );\n }\n } else {\n if (operatorGrp.not.length) {\n filterStrParts.push(\n '( \\\n ' +\n operatorGrp[operator]\n .map((val) => {\n if (val.length)\n return 'NOT ' + formatVal(filterName, val);\n })\n .join(' AND ') +\n ' \\\n )'\n );\n }\n }\n });\n });\n\n // add in any static applied filters from filters prop\n filterStrParts = [...this.filters, ...filterStrParts];\n // console.log('filterStr:', filterStrParts.join(' ' + this.operator.toLocaleUpperCase() + ' '))\n return filterStrParts.join(' ' + this.operator.toLocaleUpperCase() + ' ');\n }\n\n private attachInputListener(setup: boolean = true) {\n if (!this.inputField) return;\n let eventName =\n this.inputField.tagName.toLocaleLowerCase() === 'nano-input'\n ? 'nanoChange'\n : 'change';\n\n if (setup)\n this.inputField.addEventListener(eventName, this.handleInputChange);\n else this.inputField.removeEventListener(eventName, this.handleInputChange);\n }\n\n private handleInputChange = (ev) => {\n if (ev.target !== this.inputField) return;\n this.query = this.inputField.value;\n };\n\n private handleSearchReset = () => {\n this.showResults = false;\n this.indexResults = null;\n };\n\n private onResultDisplay = () => {\n writeTask(() => {\n this.resultsDiv.removeEventListener(\n 'transitionend',\n this.onResultDisplay\n );\n if (!this.showResults) this.resultsDiv.style.display = 'none';\n else {\n this.defaultDiv.style.display = 'none';\n this.resultsDiv.classList.add('shown');\n this.resultsDiv.style.minHeight = '';\n this.resultsDiv.style.width = '';\n }\n });\n };\n\n private async updateContent() {\n return this.promiseQueue.enqueue(() => this.updateContentQueue());\n }\n\n private async updateContentQueue() {\n let outputTo = this.outputSlot || this.resultsDiv;\n\n if (!outputTo || !this.tpl) return 'no tpl';\n\n let tmpCont = document.createElement('div');\n tmpCont.innerHTML = this.tpl;\n\n let algoliaEles: Element[] = [];\n this.placedAlgoliaEles = [];\n\n // take out children algolia elements 'cos they have their own templates\n // don't want to swap in their templates\n Array.from(\n tmpCont.querySelectorAll(\n 'nano-algolia, nano-algolia-filter, nano-algolia-results'\n )\n ).forEach((el, i) => {\n let placeholder = document.createElement('div');\n placeholder.dataset.placeholderId = i.toString();\n placeholder.classList.add('nano-ele-placeholder');\n algoliaEles.push(el);\n el.parentNode.replaceChild(placeholder, el);\n });\n\n // swap in template content\n // (all this nonsense htmlencodes any < or >)\n\n outputTo.innerHTML = this.tplRenderFn(\n tmpCont.innerHTML\n .replace(/>/gm, '>')\n .replace(/</gm, '<')\n .replace(/&/gm, '&'),\n this.indexResults\n );\n\n // put back in algolia elements\n Array.from(outputTo.querySelectorAll('div.nano-ele-placeholder')).forEach(\n (el: HTMLDivElement) => {\n el.parentNode.replaceChild(\n algoliaEles[parseInt(el.dataset.placeholderId)],\n el\n );\n this.placedAlgoliaEles.push(\n algoliaEles[parseInt(el.dataset.placeholderId)]\n );\n }\n );\n\n if (!this.placedAlgoliaEles.length) return Promise.resolve('algolia setup');\n\n // wait for all children algolia elements to resolve before calling 'done'\n return new Promise((resolve) => {\n const childrenResolver = (ev: CustomEvent) => {\n this.placedAlgoliaEles = this.placedAlgoliaEles.filter(\n (ele) => ele !== (ev.detail as HTMLElement)\n );\n if (!this.placedAlgoliaEles.length) {\n setTimeout(() => resolve('tpl updated'), 500);\n outputTo.removeEventListener('nanoTplUpdated', childrenResolver);\n }\n };\n outputTo.addEventListener('nanoTplUpdated', childrenResolver);\n });\n }\n\n // Stencil hooks\n\n componentWillLoad() {\n readTask((_) => {\n this.tplSlot = getDirectChildren(this.host, '[slot=\"template\"]')[0];\n this.outputSlot = getDirectChildren(this.host, '[slot=\"output\"]')[0];\n this.slottedInput = getDirectChildren(\n this.host,\n '[slot=\"search-input\"]'\n )[0];\n this.hasLoadSlot = !!getDirectChildren(this.host, '[slot=\"loader\"]')[0];\n if (!!this.tplSlot) this.tpl = this.tplSlot.innerHTML;\n\n // get input field to listen to\n if (\n this.slottedInput &&\n (this.slottedInput.tagName.toLocaleLowerCase() === 'nano-input' ||\n this.slottedInput instanceof HTMLInputElement)\n ) {\n this.inputField = this.slottedInput as HTMLNanoInputElement;\n } else if (this.slottedInput) {\n this.inputField = this.slottedInput.querySelector(\n 'nano-input, input:not([type=\"radio\"]):not([type=\"checkbox\"])'\n );\n }\n if (!this.inputField && this.listenTo)\n this.inputField = document.querySelector(this.listenTo);\n if (this.inputField) this.attachInputListener(true);\n\n writeTask((_) => {\n if (this.showResults && this.tpl) this.searchChange();\n });\n });\n\n this.searchIndexNameChange();\n this.initAlgoliaClient();\n this.initAlgoliaIndex();\n\n // Create wormwhole shared 'universe' (https://github.com/mihar-22/stencil-wormhole)\n Universe.create(this, this.wormholeState);\n\n if (this.storeId) {\n ComponentStore.init(\n this,\n ['query', 'replicaIndex'],\n this.storeMethod,\n this.storeId\n );\n ComponentStore.init(\n this,\n ['apiKey', 'appId', 'searchIndex'],\n 'session',\n this.storeId + '_api'\n );\n }\n this.internalIndexSwitch();\n }\n\n connectedCallback() {\n this.searchChange = debounce(this.searchChange, 300);\n this.browseIndexChange();\n\n if (!Build.isBrowser) return;\n this.host.dispatchEvent(\n new CustomEvent('nanoDidLoad', {\n detail: this.host,\n })\n );\n }\n\n render() {\n const wormholeState = {\n indexResults: this.indexResults,\n results: this.currentHits,\n filterChanged: this.filterChanged,\n tplRenderFn: this.tplRenderFn,\n resultsPage: this.resultsPage,\n changeEvent: this.changeEvent,\n facets: this.facets,\n algoliaIndex: this.algoliaIndex,\n searchIndex: this.searchIndex,\n globalStoreMethod: this.storeMethod,\n isLoading: this.isLoading,\n };\n return (\n <Host\n class={{\n 'show-results': this.showResults,\n 'is-loading': this.isLoading,\n }}\n aria-busy={this.isLoading}\n >\n {this.hasLoadSlot && (\n <div hidden={!this.isLoading}>\n <slot name=\"loader\" />\n </div>\n )}\n {!this.hasLoadSlot && (\n <div\n class={{\n loader: true,\n loading: this.isLoading,\n }}\n >\n <nano-spinner overlay={true} type=\"circle\"></nano-spinner>\n </div>\n )}\n\n <Universe.Provider state={wormholeState}>\n <slot name=\"search-input\"></slot>\n <div class=\"results-container\" aria-live=\"polite\">\n <div ref={(div) => (this.resultsDiv = div)} class=\"results\">\n <slot name=\"output\" />\n </div>\n </div>\n </Universe.Provider>\n\n <div\n ref={(div) => (this.defaultDiv = div)}\n class=\"default\"\n tabindex=\"-1\"\n >\n <slot />\n </div>\n </Host>\n );\n }\n}\n"]}
|
@@ -5,7 +5,7 @@ import { Component, Prop, Watch, h } from '@stencil/core';
|
|
5
5
|
* As the element's width changes, its height will resize proportionally. Only one element should be slotted into the container.
|
6
6
|
* The default aspect ratio is 16:9.
|
7
7
|
*/
|
8
|
-
export class
|
8
|
+
export class AspectRatio {
|
9
9
|
constructor() {
|
10
10
|
/** The aspect ratio of the embedded media in the format of `width:height`, e.g. `16:9`, `4:3`, or `1:1`.
|
11
11
|
* Ratios not in this format will be ignored. */
|
@@ -20,6 +20,14 @@ export class AspectRadio {
|
|
20
20
|
this.setAspectRatio();
|
21
21
|
}
|
22
22
|
setAspectRatio() {
|
23
|
+
if (typeof this.aspectRatio !== 'string') {
|
24
|
+
console.warn('aspectRatio should be a string.');
|
25
|
+
return;
|
26
|
+
}
|
27
|
+
else if (!this.aspectRatio.match(/^([0-9]+:[0-9]+)$/)) {
|
28
|
+
console.warn('aspectRatio is an incorrect format. Should be e.g. "16:9"');
|
29
|
+
return;
|
30
|
+
}
|
23
31
|
const split = this.aspectRatio.split(':');
|
24
32
|
const x = parseInt(split[0]);
|
25
33
|
const y = parseInt(split[1]);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"aspect-ratio.js","sourceRoot":"","sources":["../../../src/components/aspect-ratio/aspect-ratio.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAsB,MAAM,eAAe,CAAC;AAE9E;;;;;GAKG;AAMH,MAAM,OAAO,WAAW;EALxB;IAQE;oDACgD;IACxC,gBAAW,GAAG,MAAM,CAAC;IAE7B,mEAAmE;IAC3D,QAAG,GAAwB,OAAO,CAAC;IAOnC,qBAAgB,GAAG,GAAG,EAAE;MAC9B,IAAI,CAAC,cAAc,EAAE,CAAC;IACxB,CAAC,CAAC;
|
1
|
+
{"version":3,"file":"aspect-ratio.js","sourceRoot":"","sources":["../../../src/components/aspect-ratio/aspect-ratio.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAsB,MAAM,eAAe,CAAC;AAE9E;;;;;GAKG;AAMH,MAAM,OAAO,WAAW;EALxB;IAQE;oDACgD;IACxC,gBAAW,GAAG,MAAM,CAAC;IAE7B,mEAAmE;IAC3D,QAAG,GAAwB,OAAO,CAAC;IAOnC,qBAAgB,GAAG,GAAG,EAAE;MAC9B,IAAI,CAAC,cAAc,EAAE,CAAC;IACxB,CAAC,CAAC;GA+BH;EArCC,uBAAuB;IACrB,IAAI,CAAC,cAAc,EAAE,CAAC;EACxB,CAAC;EAMO,cAAc;IACpB,IAAI,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ,EAAE;MACxC,OAAO,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;MAChD,OAAO;KACR;SAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,mBAAmB,CAAC,EAAE;MACvD,OAAO,CAAC,IAAI,CAAC,2DAA2D,CAAC,CAAC;MAC1E,OAAO;KACR;IACD,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC1C,MAAM,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7B,MAAM,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7B,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;EACtE,CAAC;EAED,MAAM;IACJ,OAAO,CACL,WACE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,EAC7B,IAAI,EAAC,MAAM,EACX,KAAK,EAAE;QACL,cAAc,EAAE,IAAI;QACpB,qBAAqB,EAAE,IAAI,CAAC,GAAG,KAAK,OAAO;QAC3C,uBAAuB,EAAE,IAAI,CAAC,GAAG,KAAK,SAAS;OAChD;MAED,YAAM,YAAY,EAAE,IAAI,CAAC,gBAAgB,GAAI,CACzC,CACP,CAAC;EACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import { Component, Prop, Watch, h, ComponentInterface } from '@stencil/core';\n\n/**\n * Displays media in the desired aspect ratio.\n * You can slot in any replaced element, including `<iframe>`, `<img>`, and `<video>`.\n * As the element's width changes, its height will resize proportionally. Only one element should be slotted into the container.\n * The default aspect ratio is 16:9.\n */\n@Component({\n tag: 'nano-aspect-ratio',\n styleUrl: 'aspect-ratio.scss',\n shadow: true,\n})\nexport class AspectRatio implements ComponentInterface {\n private base: HTMLElement;\n\n /** The aspect ratio of the embedded media in the format of `width:height`, e.g. `16:9`, `4:3`, or `1:1`.\n * Ratios not in this format will be ignored. */\n @Prop() aspectRatio = '16:9';\n\n /** Determines how content will be resized to fit its container. */\n @Prop() fit: 'cover' | 'contain' = 'cover';\n\n @Watch('aspectRatio')\n handleAspectRatioChange() {\n this.setAspectRatio();\n }\n\n private handleSlotChange = () => {\n this.setAspectRatio();\n };\n\n private setAspectRatio() {\n if (typeof this.aspectRatio !== 'string') {\n console.warn('aspectRatio should be a string.');\n return;\n } else if (!this.aspectRatio.match(/^([0-9]+:[0-9]+)$/)) {\n console.warn('aspectRatio is an incorrect format. Should be e.g. \"16:9\"');\n return;\n }\n const split = this.aspectRatio.split(':');\n const x = parseInt(split[0]);\n const y = parseInt(split[1]);\n this.base.style.paddingBottom = x && y ? `${(y / x) * 100}%` : null;\n }\n\n render() {\n return (\n <div\n ref={(el) => (this.base = el)}\n part=\"base\"\n class={{\n 'aspect-ratio': true,\n 'aspect-ratio--cover': this.fit === 'cover',\n 'aspect-ratio--contain': this.fit === 'contain',\n }}\n >\n <slot onSlotchange={this.handleSlotChange} />\n </div>\n );\n }\n}\n"]}
|
@@ -0,0 +1,117 @@
|
|
1
|
+
import { stringifyFormSnippet } from '../../../../utils/testing';
|
2
|
+
export const templates = {
|
3
|
+
default: `
|
4
|
+
<form>
|
5
|
+
<nano-checkbox {{ attrs }} value="Value 1"><strong>Slotted Label</strong></nano-checkbox>
|
6
|
+
<nano-checkbox {{ attrs }} value="Value 2"><strong>Slotted Label</strong></nano-checkbox>
|
7
|
+
<br>
|
8
|
+
<button class="button button--primary" type="submit">Submit</button>
|
9
|
+
<button class="button" type="reset">Reset</button>
|
10
|
+
</form>
|
11
|
+
${stringifyFormSnippet}
|
12
|
+
`,
|
13
|
+
checkbox: `
|
14
|
+
<style>
|
15
|
+
.cb {
|
16
|
+
display: block; margin: 1rem;
|
17
|
+
}
|
18
|
+
</style>
|
19
|
+
<nano-checkbox class="cb" label="Unchecked"></nano-checkbox>
|
20
|
+
<nano-checkbox class="cb" checked label="Checked"></nano-checkbox>
|
21
|
+
<nano-checkbox indeterminate class="cb" label="Indeterminate"></nano-checkbox>
|
22
|
+
<nano-checkbox class="cb" disabled label="Disabled"></nano-checkbox>
|
23
|
+
`,
|
24
|
+
radio: `
|
25
|
+
<style>
|
26
|
+
.rd {
|
27
|
+
display: block; margin: 1rem;
|
28
|
+
}
|
29
|
+
</style>
|
30
|
+
<nano-checkbox class="rd" label="Checked" checked name="radio" type="radio"></nano-checkbox>
|
31
|
+
<nano-checkbox class="rd" label="Unchecked" name="radio" type="radio"></nano-checkbox>
|
32
|
+
<nano-checkbox class="rd" label="Disabled" disabled name="radio" type="radio"></nano-checkbox>
|
33
|
+
`,
|
34
|
+
tags: `
|
35
|
+
<style>
|
36
|
+
.tags {
|
37
|
+
margin: 4px 0;
|
38
|
+
}
|
39
|
+
</style>
|
40
|
+
<div class="tags">
|
41
|
+
<nano-checkbox checked label="Checked" type="tag"></nano-checkbox>
|
42
|
+
<nano-checkbox label="Unchecked" type="tag"></nano-checkbox>
|
43
|
+
<nano-checkbox label="Disabled" type="tag" disabled></nano-checkbox>
|
44
|
+
</div>
|
45
|
+
<div class="tags">
|
46
|
+
<nano-checkbox checked color="primary" label="Checked" type="tag"></nano-checkbox>
|
47
|
+
<nano-checkbox color="primary" label="Unchecked" type="tag"></nano-checkbox>
|
48
|
+
<nano-checkbox color="primary" label="Disabled" type="tag" disabled></nano-checkbox>
|
49
|
+
</div>
|
50
|
+
<div class="tags">
|
51
|
+
<nano-checkbox checked color="tertiary" label="Checked" type="tag"></nano-checkbox>
|
52
|
+
<nano-checkbox color="tertiary" label="Unchecked" type="tag"></nano-checkbox>
|
53
|
+
<nano-checkbox color="tertiary" label="Disabled" type="tag" disabled></nano-checkbox>
|
54
|
+
</div>
|
55
|
+
<div class="tags">
|
56
|
+
<nano-checkbox checked color="warning" label="Checked" type="tag"></nano-checkbox>
|
57
|
+
<nano-checkbox color="warning" label="Unchecked" type="tag"></nano-checkbox>
|
58
|
+
<nano-checkbox color="warning" label="Disabled" type="tag" disabled></nano-checkbox>
|
59
|
+
</div>
|
60
|
+
<div class="tags">
|
61
|
+
<nano-checkbox checked color="danger" label="Checked" type="tag"></nano-checkbox>
|
62
|
+
<nano-checkbox color="danger" label="Unchecked" type="tag"></nano-checkbox>
|
63
|
+
<nano-checkbox color="danger" label="Disabled" type="tag" disabled></nano-checkbox>
|
64
|
+
</div>
|
65
|
+
<div class="tags">
|
66
|
+
<nano-checkbox checked color="success" label="Checked" type="tag"></nano-checkbox>
|
67
|
+
<nano-checkbox color="success" label="Unchecked" type="tag"></nano-checkbox>
|
68
|
+
<nano-checkbox color="success" label="Disabled" type="tag" disabled></nano-checkbox>
|
69
|
+
</div>
|
70
|
+
<div class="tags">
|
71
|
+
<nano-checkbox checked color="light" label="Checked" type="tag"></nano-checkbox>
|
72
|
+
<nano-checkbox color="light" label="Unchecked" type="tag"></nano-checkbox>
|
73
|
+
<nano-checkbox color="light" label="Disabled" type="tag" disabled></nano-checkbox>
|
74
|
+
</div>
|
75
|
+
<div class="tags">
|
76
|
+
<nano-checkbox checked color="medium" label="Checked" type="tag"></nano-checkbox>
|
77
|
+
<nano-checkbox color="medium" label="Unchecked" type="tag"></nano-checkbox>
|
78
|
+
<nano-checkbox color="medium" label="Disabled" type="tag" disabled></nano-checkbox>
|
79
|
+
</div>
|
80
|
+
<div class="tags">
|
81
|
+
<nano-checkbox checked color="dark" label="Checked" type="tag"></nano-checkbox>
|
82
|
+
<nano-checkbox color="dark" label="Unchecked" type="tag"></nano-checkbox>
|
83
|
+
<nano-checkbox color="dark" label="Disabled" type="tag" disabled></nano-checkbox>
|
84
|
+
</div>
|
85
|
+
`,
|
86
|
+
segment: `
|
87
|
+
<style>
|
88
|
+
.segment {
|
89
|
+
margin: 1rem 0;
|
90
|
+
}
|
91
|
+
</style>
|
92
|
+
<div class="segment">
|
93
|
+
<nano-checkbox checked label="Checked" type="segment"></nano-checkbox>
|
94
|
+
<nano-checkbox label="Unchecked" type="segment"></nano-checkbox>
|
95
|
+
<nano-checkbox disabled label="Disabled" type="segment"></nano-checkbox>
|
96
|
+
</div>
|
97
|
+
<div class="segment">
|
98
|
+
<nano-checkbox-group>
|
99
|
+
<nano-checkbox checked label="Checked" name="pill" type="segment-pill"></nano-checkbox>
|
100
|
+
<nano-checkbox label="Unchecked" name="pill" type="segment-pill"></nano-checkbox>
|
101
|
+
<nano-checkbox label="Unchecked 2" name="pill" type="segment-pill"></nano-checkbox>
|
102
|
+
<nano-checkbox disabled label="Disabled" name="pill" type="segment-pill"></nano-checkbox>
|
103
|
+
</nano-checkbox-group>
|
104
|
+
</div>
|
105
|
+
`,
|
106
|
+
group: `
|
107
|
+
<form>
|
108
|
+
<nano-checkbox-group {{ attrs }}>
|
109
|
+
<nano-checkbox name="checkbox-1" value="1" label="CB 1"></nano-checkbox>
|
110
|
+
<nano-checkbox name="checkbox-1" value="2" label="CB 2"></nano-checkbox>
|
111
|
+
<nano-checkbox name="checkbox-3" value="3" required label="CB 3"></nano-checkbox>
|
112
|
+
</nano-checkbox-group>
|
113
|
+
<button class="button" type="submit">Native Button</button>
|
114
|
+
</form>
|
115
|
+
`,
|
116
|
+
};
|
117
|
+
//# sourceMappingURL=checkbox-templates.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"checkbox-templates.js","sourceRoot":"","sources":["../../../../../src/components/checkbox/__tests__/__fixtures__/checkbox-templates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE,MAAM,CAAC,MAAM,SAAS,GAAG;EACvB,OAAO,EAAE;;;;;;;;MAQL,oBAAoB;GACvB;EACD,QAAQ,EAAE;;;;;;;;;;GAUT;EACD,KAAK,EAAE;;;;;;;;;GASN;EACD,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDL;EACD,OAAO,EAAE;;;;;;;;;;;;;;;;;;;GAmBR;EACD,KAAK,EAAE;;;;;;;;;GASN;CACF,CAAC","sourcesContent":["import { stringifyFormSnippet } from '../../../../utils/testing';\n\nexport const templates = {\n default: `\n <form>\n <nano-checkbox {{ attrs }} value=\"Value 1\"><strong>Slotted Label</strong></nano-checkbox>\n <nano-checkbox {{ attrs }} value=\"Value 2\"><strong>Slotted Label</strong></nano-checkbox>\n <br>\n <button class=\"button button--primary\" type=\"submit\">Submit</button>\n <button class=\"button\" type=\"reset\">Reset</button>\n </form>\n ${stringifyFormSnippet}\n `,\n checkbox: `\n <style>\n .cb {\n display: block; margin: 1rem;\n }\n </style>\n <nano-checkbox class=\"cb\" label=\"Unchecked\"></nano-checkbox>\n <nano-checkbox class=\"cb\" checked label=\"Checked\"></nano-checkbox>\n <nano-checkbox indeterminate class=\"cb\" label=\"Indeterminate\"></nano-checkbox>\n <nano-checkbox class=\"cb\" disabled label=\"Disabled\"></nano-checkbox>\n `,\n radio: `\n <style>\n .rd {\n display: block; margin: 1rem;\n }\n </style>\n <nano-checkbox class=\"rd\" label=\"Checked\" checked name=\"radio\" type=\"radio\"></nano-checkbox>\n <nano-checkbox class=\"rd\" label=\"Unchecked\" name=\"radio\" type=\"radio\"></nano-checkbox>\n <nano-checkbox class=\"rd\" label=\"Disabled\" disabled name=\"radio\" type=\"radio\"></nano-checkbox>\n `,\n tags: `\n <style>\n .tags {\n margin: 4px 0;\n }\n </style>\n <div class=\"tags\">\n <nano-checkbox checked label=\"Checked\" type=\"tag\"></nano-checkbox>\n <nano-checkbox label=\"Unchecked\" type=\"tag\"></nano-checkbox>\n <nano-checkbox label=\"Disabled\" type=\"tag\" disabled></nano-checkbox>\n </div>\n <div class=\"tags\">\n <nano-checkbox checked color=\"primary\" label=\"Checked\" type=\"tag\"></nano-checkbox>\n <nano-checkbox color=\"primary\" label=\"Unchecked\" type=\"tag\"></nano-checkbox>\n <nano-checkbox color=\"primary\" label=\"Disabled\" type=\"tag\" disabled></nano-checkbox>\n </div>\n <div class=\"tags\">\n <nano-checkbox checked color=\"tertiary\" label=\"Checked\" type=\"tag\"></nano-checkbox>\n <nano-checkbox color=\"tertiary\" label=\"Unchecked\" type=\"tag\"></nano-checkbox>\n <nano-checkbox color=\"tertiary\" label=\"Disabled\" type=\"tag\" disabled></nano-checkbox>\n </div>\n <div class=\"tags\">\n <nano-checkbox checked color=\"warning\" label=\"Checked\" type=\"tag\"></nano-checkbox>\n <nano-checkbox color=\"warning\" label=\"Unchecked\" type=\"tag\"></nano-checkbox>\n <nano-checkbox color=\"warning\" label=\"Disabled\" type=\"tag\" disabled></nano-checkbox>\n </div>\n <div class=\"tags\">\n <nano-checkbox checked color=\"danger\" label=\"Checked\" type=\"tag\"></nano-checkbox>\n <nano-checkbox color=\"danger\" label=\"Unchecked\" type=\"tag\"></nano-checkbox>\n <nano-checkbox color=\"danger\" label=\"Disabled\" type=\"tag\" disabled></nano-checkbox>\n </div>\n <div class=\"tags\">\n <nano-checkbox checked color=\"success\" label=\"Checked\" type=\"tag\"></nano-checkbox>\n <nano-checkbox color=\"success\" label=\"Unchecked\" type=\"tag\"></nano-checkbox>\n <nano-checkbox color=\"success\" label=\"Disabled\" type=\"tag\" disabled></nano-checkbox>\n </div>\n <div class=\"tags\">\n <nano-checkbox checked color=\"light\" label=\"Checked\" type=\"tag\"></nano-checkbox>\n <nano-checkbox color=\"light\" label=\"Unchecked\" type=\"tag\"></nano-checkbox>\n <nano-checkbox color=\"light\" label=\"Disabled\" type=\"tag\" disabled></nano-checkbox>\n </div>\n <div class=\"tags\">\n <nano-checkbox checked color=\"medium\" label=\"Checked\" type=\"tag\"></nano-checkbox>\n <nano-checkbox color=\"medium\" label=\"Unchecked\" type=\"tag\"></nano-checkbox>\n <nano-checkbox color=\"medium\" label=\"Disabled\" type=\"tag\" disabled></nano-checkbox>\n </div>\n <div class=\"tags\">\n <nano-checkbox checked color=\"dark\" label=\"Checked\" type=\"tag\"></nano-checkbox>\n <nano-checkbox color=\"dark\" label=\"Unchecked\" type=\"tag\"></nano-checkbox>\n <nano-checkbox color=\"dark\" label=\"Disabled\" type=\"tag\" disabled></nano-checkbox>\n </div>\n `,\n segment: `\n <style>\n .segment {\n margin: 1rem 0;\n }\n </style>\n <div class=\"segment\">\n <nano-checkbox checked label=\"Checked\" type=\"segment\"></nano-checkbox>\n <nano-checkbox label=\"Unchecked\" type=\"segment\"></nano-checkbox>\n <nano-checkbox disabled label=\"Disabled\" type=\"segment\"></nano-checkbox>\n </div>\n <div class=\"segment\">\n <nano-checkbox-group>\n <nano-checkbox checked label=\"Checked\" name=\"pill\" type=\"segment-pill\"></nano-checkbox>\n <nano-checkbox label=\"Unchecked\" name=\"pill\" type=\"segment-pill\"></nano-checkbox>\n <nano-checkbox label=\"Unchecked 2\" name=\"pill\" type=\"segment-pill\"></nano-checkbox>\n <nano-checkbox disabled label=\"Disabled\" name=\"pill\" type=\"segment-pill\"></nano-checkbox>\n </nano-checkbox-group>\n </div>\n `,\n group: `\n <form>\n <nano-checkbox-group {{ attrs }}>\n <nano-checkbox name=\"checkbox-1\" value=\"1\" label=\"CB 1\"></nano-checkbox>\n <nano-checkbox name=\"checkbox-1\" value=\"2\" label=\"CB 2\"></nano-checkbox>\n <nano-checkbox name=\"checkbox-3\" value=\"3\" required label=\"CB 3\"></nano-checkbox>\n </nano-checkbox-group>\n <button class=\"button\" type=\"submit\">Native Button</button>\n </form>\n `,\n};\n"]}
|
@@ -17,7 +17,7 @@
|
|
17
17
|
* @prop --invalid-msg-color: Default var(--nano-color-danger, #ef4135);
|
18
18
|
* @prop --invalid-msg-font-size: Default var(--nano-input-help-font-size, 0.75em);
|
19
19
|
|
20
|
-
* @prop --help-msg-color: Font color applied to slot="helper". Default var(--nano-input-help-color, #
|
20
|
+
* @prop --help-msg-color: Font color applied to slot="helper". Default var(--nano-input-help-color, #616d6e);
|
21
21
|
|
22
22
|
* @prop --label-color: Default var(--nano-input-label-color, "currentColor");
|
23
23
|
* @prop --label-color--invalid: Default var(--nano-input-label-color-invalid, "currentColor");
|
@@ -30,7 +30,7 @@
|
|
30
30
|
--control-margin-start: 0;
|
31
31
|
--invalid-msg-color: var(--nano-color-danger, #ef4135);
|
32
32
|
--invalid-msg-font-size: var(--nano-input-help-font-size, 0.75em);
|
33
|
-
--help-msg-color: var(--nano-input-help-color, #
|
33
|
+
--help-msg-color: var(--nano-input-help-color, #616d6e);
|
34
34
|
--label-color: var(--nano-input-label-color, "currentColor");
|
35
35
|
--label-color--invalid: var(--nano-input-label-color-invalid, "currentColor");
|
36
36
|
--label-font-size: var(--nano-input-label-color, 1em);
|
@@ -54,7 +54,7 @@
|
|
54
54
|
:host([types-radio]) {
|
55
55
|
--control-margin-top: 0;
|
56
56
|
--control-margin-end: 10px;
|
57
|
-
--control-margin-bottom:
|
57
|
+
--control-margin-bottom: 8px;
|
58
58
|
--control-margin-start: 0;
|
59
59
|
}
|
60
60
|
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import { Component, Prop, Element, h, State, Listen, Watch, Host, Method, forceUpdate, Event, } from '@stencil/core';
|
2
|
-
import { debounce, getClassMap } from '../../utils
|
2
|
+
import { debounce, getClassMap } from '../../utils';
|
3
3
|
/**
|
4
4
|
* `nano-checkbox-group` is an optional wrapper for all `nano-checkbox` controls.
|
5
5
|
* It provides a convenient place to anchor a collective label and any validation issues.
|
@@ -10,6 +10,7 @@ import { debounce, getClassMap } from '../../utils/utils';
|
|
10
10
|
export class CheckboxGroup {
|
11
11
|
constructor() {
|
12
12
|
this.grpId = `nano-checkbox-group-${grpIds++}`;
|
13
|
+
this._invalid = false;
|
13
14
|
this.errorMessage = '';
|
14
15
|
this.showErrorMsg = false;
|
15
16
|
this.hasHelperSlot = false;
|
@@ -41,9 +42,9 @@ export class CheckboxGroup {
|
|
41
42
|
*/
|
42
43
|
this.legend = '';
|
43
44
|
this.handleInvalid = (ev) => {
|
44
|
-
this.
|
45
|
+
this._invalid = true;
|
45
46
|
if (this.validateOn === 'submit') {
|
46
|
-
this.
|
47
|
+
this._invalid = this.showErrorMsg = this.customValidate();
|
47
48
|
}
|
48
49
|
if (!!this.showInlineError)
|
49
50
|
ev.preventDefault();
|
@@ -55,14 +56,15 @@ export class CheckboxGroup {
|
|
55
56
|
if (this.validateOn === 'submitThenDirty')
|
56
57
|
this.validateOn = 'dirty';
|
57
58
|
this.showErrorMsg = false;
|
58
|
-
this.
|
59
|
+
this._invalid = false;
|
59
60
|
this.nativeCbs.forEach((cb, i) => {
|
60
61
|
if (!cb.validity.valid) {
|
61
62
|
this.errorMessage = cb.validationMessage;
|
62
63
|
this.showErrorMsg = true;
|
63
|
-
this.
|
64
|
-
if (!!this.showInlineError)
|
64
|
+
this._invalid = true;
|
65
|
+
if (!!this.showInlineError) {
|
65
66
|
this.checkboxes[i].setFocus();
|
67
|
+
}
|
66
68
|
}
|
67
69
|
});
|
68
70
|
this.nanoValidate.emit({
|
@@ -72,6 +74,13 @@ export class CheckboxGroup {
|
|
72
74
|
});
|
73
75
|
};
|
74
76
|
}
|
77
|
+
/**
|
78
|
+
* This will be true when the control is in an invalid state.
|
79
|
+
* Validity is determined by the `required` prop. Or if custom validity message is set. @readonly
|
80
|
+
*/
|
81
|
+
get invalid() {
|
82
|
+
return this._invalid;
|
83
|
+
}
|
75
84
|
// Public methods
|
76
85
|
/**
|
77
86
|
* Get the current state of the control.
|
@@ -79,12 +88,16 @@ export class CheckboxGroup {
|
|
79
88
|
* @returns `{ isValid: boolean, errorMessage: string }`
|
80
89
|
*/
|
81
90
|
async reportValidity(validateFirst) {
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
91
|
+
return new Promise((resolve) => {
|
92
|
+
if (validateFirst)
|
93
|
+
this.showInlineValidation();
|
94
|
+
setTimeout(() => {
|
95
|
+
resolve({
|
96
|
+
isValid: !this.invalid,
|
97
|
+
errorMessage: this.errorMessage,
|
98
|
+
});
|
99
|
+
}, 20);
|
100
|
+
});
|
88
101
|
}
|
89
102
|
// listeners & watchers
|
90
103
|
/**
|
@@ -94,7 +107,7 @@ export class CheckboxGroup {
|
|
94
107
|
*/
|
95
108
|
handleCbChange() {
|
96
109
|
if (this.invalid)
|
97
|
-
this.showErrorMsg = this.
|
110
|
+
this.showErrorMsg = this._invalid = false;
|
98
111
|
this.customValidate();
|
99
112
|
if (this.validateOn !== 'dirty')
|
100
113
|
return;
|
@@ -110,9 +123,10 @@ export class CheckboxGroup {
|
|
110
123
|
let checked = onlyCbs.filter((cb) => cb.checked).length;
|
111
124
|
let invalid = false;
|
112
125
|
this.checkboxes.forEach((cb) => {
|
126
|
+
if (cb.required && !cb.checked) {
|
127
|
+
invalid = true;
|
128
|
+
}
|
113
129
|
cb.setError('');
|
114
|
-
if (invalid)
|
115
|
-
return;
|
116
130
|
if (this.min && checked < this.min) {
|
117
131
|
cb.setError(`You must select a minimum of ${this.min} values.`);
|
118
132
|
invalid = true;
|
@@ -151,6 +165,7 @@ export class CheckboxGroup {
|
|
151
165
|
componentWillLoad() {
|
152
166
|
this.showInlineValidation = debounce(this.showInlineValidation, 20);
|
153
167
|
this.customValidate = this.customValidate.bind(this);
|
168
|
+
this.handleDisabledChange();
|
154
169
|
}
|
155
170
|
connectedCallback() {
|
156
171
|
this.attachSlotObserver();
|
@@ -219,7 +234,7 @@ export class CheckboxGroup {
|
|
219
234
|
"getter": false,
|
220
235
|
"setter": false,
|
221
236
|
"attribute": "show-inline-error",
|
222
|
-
"reflect":
|
237
|
+
"reflect": false,
|
223
238
|
"defaultValue": "true"
|
224
239
|
},
|
225
240
|
"min": {
|
@@ -304,7 +319,7 @@ export class CheckboxGroup {
|
|
304
319
|
},
|
305
320
|
"invalid": {
|
306
321
|
"type": "boolean",
|
307
|
-
"mutable":
|
322
|
+
"mutable": false,
|
308
323
|
"complexType": {
|
309
324
|
"original": "boolean",
|
310
325
|
"resolved": "boolean",
|
@@ -313,16 +328,14 @@ export class CheckboxGroup {
|
|
313
328
|
"required": false,
|
314
329
|
"optional": false,
|
315
330
|
"docs": {
|
316
|
-
"tags": [
|
317
|
-
|
318
|
-
"name": "internal"
|
319
|
-
}],
|
320
|
-
"text": ""
|
331
|
+
"tags": [],
|
332
|
+
"text": "This will be true when the control is in an invalid state.\nValidity is determined by the `required` prop. Or if custom validity message is set. @readonly"
|
321
333
|
},
|
322
|
-
"getter":
|
334
|
+
"getter": true,
|
323
335
|
"setter": false,
|
324
336
|
"attribute": "invalid",
|
325
|
-
"reflect": true
|
337
|
+
"reflect": true,
|
338
|
+
"defaultValue": "false"
|
326
339
|
}
|
327
340
|
}; }
|
328
341
|
static get states() { return {
|
@@ -351,7 +364,7 @@ export class CheckboxGroup {
|
|
351
364
|
"references": {
|
352
365
|
"ControlValidityEventDetail": {
|
353
366
|
"location": "import",
|
354
|
-
"path": "/builds/
|
367
|
+
"path": "/builds/Xi7NpFYo/0/Digital/nano-components/packages/components/src/interface.d.ts"
|
355
368
|
}
|
356
369
|
}
|
357
370
|
}
|
@@ -373,7 +386,7 @@ export class CheckboxGroup {
|
|
373
386
|
},
|
374
387
|
"ControlValidity": {
|
375
388
|
"location": "import",
|
376
|
-
"path": "/builds/
|
389
|
+
"path": "/builds/Xi7NpFYo/0/Digital/nano-components/packages/components/src/interface.d.ts"
|
377
390
|
}
|
378
391
|
},
|
379
392
|
"return": "Promise<ControlValidity>"
|