@nanoporetech-digital/components 2.10.1 → 2.11.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 +20 -0
- package/dist/cjs/{date-utils-0ae9a12d.js → date-utils-b3af910d.js} +2 -2
- package/dist/cjs/date-utils-b3af910d.js.map +1 -0
- package/dist/cjs/{global-0d4f3b77.js → global-989678ec.js} +1 -8
- package/dist/cjs/global-989678ec.js.map +1 -0
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/cjs/nano-components.cjs.js +2 -2
- package/dist/cjs/nano-datalist_3.cjs.entry.js +3 -1
- package/dist/cjs/nano-datalist_3.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-date-input.cjs.entry.js +13 -5
- package/dist/cjs/nano-date-input.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-date-picker.cjs.entry.js +2 -2
- package/dist/cjs/nano-date-picker.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-details.cjs.entry.js +1 -2
- package/dist/cjs/nano-details.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-global-search-results.cjs.entry.js +1 -2
- package/dist/cjs/nano-global-search-results.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-grid_3.cjs.entry.js +1 -2
- package/dist/cjs/nano-grid_3.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-icon-button.cjs.entry.js +4 -0
- package/dist/cjs/nano-icon-button.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-resize-observe_2.cjs.entry.js +1 -2
- package/dist/cjs/nano-resize-observe_2.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-slides.cjs.entry.js +1 -2
- package/dist/cjs/nano-slides.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-sticker.cjs.entry.js +2 -3
- package/dist/cjs/nano-sticker.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-tab-group.cjs.entry.js +4 -2
- package/dist/cjs/nano-tab-group.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-tab.cjs.entry.js +5 -1
- package/dist/cjs/nano-tab.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-tooltip.cjs.entry.js +1 -1
- package/dist/cjs/nano-tooltip.cjs.entry.js.map +1 -1
- package/dist/collection/components/accordion/accordion.js +1 -1
- package/dist/collection/components/alert/alert.js +1 -1
- package/dist/collection/components/algolia/algolia-filter.js +2 -2
- package/dist/collection/components/algolia/algolia-input.js +5 -5
- package/dist/collection/components/algolia/algolia-results.js +1 -1
- package/dist/collection/components/algolia/algolia.js +6 -6
- package/dist/collection/components/checkbox/checkbox-group.js +2 -2
- package/dist/collection/components/checkbox/checkbox.js +3 -3
- package/dist/collection/components/datalist/datalist.js +4 -2
- package/dist/collection/components/datalist/datalist.js.map +1 -1
- package/dist/collection/components/date-input/date-input.js +62 -11
- package/dist/collection/components/date-input/date-input.js.map +1 -1
- package/dist/collection/components/date-picker/date-picker.css +1 -1
- package/dist/collection/components/date-picker/date-picker.js +5 -5
- package/dist/collection/components/details/details.js +1 -2
- package/dist/collection/components/details/details.js.map +1 -1
- package/dist/collection/components/dialog/dialog.js +1 -1
- package/dist/collection/components/dropdown/dropdown.js +1 -1
- package/dist/collection/components/file-upload/file-upload.js +4 -4
- package/dist/collection/components/global-nav/global-nav.js +4 -4
- package/dist/collection/components/global-search-results/global-search-results.js +0 -1
- package/dist/collection/components/global-search-results/global-search-results.js.map +1 -1
- package/dist/collection/components/grid/grid-item.js +1 -1
- package/dist/collection/components/grid/grid.js +0 -1
- package/dist/collection/components/grid/grid.js.map +1 -1
- package/dist/collection/components/icon/icon.js +1 -1
- package/dist/collection/components/icon-button/icon-button.js +23 -1
- package/dist/collection/components/icon-button/icon-button.js.map +1 -1
- package/dist/collection/components/input/input.js +5 -5
- package/dist/collection/components/nav-item/nav-item.js +4 -4
- package/dist/collection/components/range/range.js +4 -4
- package/dist/collection/components/resize-observe/resize-observe.js +1 -2
- package/dist/collection/components/resize-observe/resize-observe.js.map +1 -1
- package/dist/collection/components/select/select.js +7 -7
- package/dist/collection/components/slides/slides.js +7 -8
- package/dist/collection/components/slides/slides.js.map +1 -1
- package/dist/collection/components/sticker/sticker.js +0 -1
- package/dist/collection/components/sticker/sticker.js.map +1 -1
- package/dist/collection/components/tabs/tab-group.js +5 -3
- package/dist/collection/components/tabs/tab-group.js.map +1 -1
- package/dist/collection/components/tabs/tab.js +5 -1
- package/dist/collection/components/tabs/tab.js.map +1 -1
- package/dist/collection/components/tooltip/tooltip.css +0 -1
- package/dist/collection/global/script/global.js +0 -7
- package/dist/collection/global/script/global.js.map +1 -1
- package/dist/collection/utils/date-utils.js +1 -1
- package/dist/collection/utils/date-utils.js.map +1 -1
- package/dist/components/datalist.js +3 -1
- package/dist/components/datalist.js.map +1 -1
- package/dist/components/date-picker.js +2 -2
- package/dist/components/date-picker.js.map +1 -1
- package/dist/components/grid.js +1 -2
- package/dist/components/grid.js.map +1 -1
- package/dist/components/icon-button.js +6 -1
- package/dist/components/icon-button.js.map +1 -1
- package/dist/components/index.js +0 -7
- package/dist/components/index.js.map +1 -1
- package/dist/components/nano-date-input.js +14 -4
- package/dist/components/nano-date-input.js.map +1 -1
- package/dist/components/nano-details.js +1 -2
- package/dist/components/nano-details.js.map +1 -1
- package/dist/components/nano-global-search-results.js +1 -2
- package/dist/components/nano-global-search-results.js.map +1 -1
- package/dist/components/nano-slides.js +1 -2
- package/dist/components/nano-slides.js.map +1 -1
- package/dist/components/nano-tab-group.js +4 -2
- package/dist/components/nano-tab-group.js.map +1 -1
- package/dist/components/nano-tab.js +5 -1
- package/dist/components/nano-tab.js.map +1 -1
- package/dist/components/resize-observe.js +1 -2
- package/dist/components/resize-observe.js.map +1 -1
- package/dist/components/sticker.js +2 -3
- package/dist/components/sticker.js.map +1 -1
- package/dist/components/tooltip.js +1 -1
- package/dist/components/tooltip.js.map +1 -1
- package/dist/custom-elements/index.js +41 -1938
- package/dist/custom-elements/index.js.map +1 -1
- package/dist/esm/{date-utils-e4b757ff.js → date-utils-839cb010.js} +2 -2
- package/dist/esm/date-utils-839cb010.js.map +1 -0
- package/dist/esm/{global-d5ec4d53.js → global-8047b4ff.js} +1 -8
- package/dist/esm/global-8047b4ff.js.map +1 -0
- package/dist/esm/loader.js +2 -2
- package/dist/esm/nano-components.js +2 -2
- package/dist/esm/nano-datalist_3.entry.js +3 -1
- package/dist/esm/nano-datalist_3.entry.js.map +1 -1
- package/dist/esm/nano-date-input.entry.js +13 -5
- package/dist/esm/nano-date-input.entry.js.map +1 -1
- package/dist/esm/nano-date-picker.entry.js +2 -2
- package/dist/esm/nano-date-picker.entry.js.map +1 -1
- package/dist/esm/nano-details.entry.js +1 -2
- package/dist/esm/nano-details.entry.js.map +1 -1
- package/dist/esm/nano-global-search-results.entry.js +1 -2
- package/dist/esm/nano-global-search-results.entry.js.map +1 -1
- package/dist/esm/nano-grid_3.entry.js +1 -2
- package/dist/esm/nano-grid_3.entry.js.map +1 -1
- package/dist/esm/nano-icon-button.entry.js +4 -0
- package/dist/esm/nano-icon-button.entry.js.map +1 -1
- package/dist/esm/nano-resize-observe_2.entry.js +1 -2
- package/dist/esm/nano-resize-observe_2.entry.js.map +1 -1
- package/dist/esm/nano-slides.entry.js +1 -2
- package/dist/esm/nano-slides.entry.js.map +1 -1
- package/dist/esm/nano-sticker.entry.js +2 -3
- package/dist/esm/nano-sticker.entry.js.map +1 -1
- package/dist/esm/nano-tab-group.entry.js +4 -2
- package/dist/esm/nano-tab-group.entry.js.map +1 -1
- package/dist/esm/nano-tab.entry.js +5 -1
- package/dist/esm/nano-tab.entry.js.map +1 -1
- package/dist/esm/nano-tooltip.entry.js +1 -1
- package/dist/esm/nano-tooltip.entry.js.map +1 -1
- package/dist/esm-es5/date-utils-839cb010.js +5 -0
- package/dist/esm-es5/date-utils-839cb010.js.map +1 -0
- package/dist/esm-es5/{global-d5ec4d53.js → global-8047b4ff.js} +2 -2
- package/dist/esm-es5/global-8047b4ff.js.map +1 -0
- package/dist/esm-es5/loader.js +1 -1
- package/dist/esm-es5/loader.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-datalist_3.entry.js +1 -1
- package/dist/esm-es5/nano-datalist_3.entry.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.entry.js +1 -1
- package/dist/esm-es5/nano-date-picker.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-global-search-results.entry.js +1 -1
- package/dist/esm-es5/nano-global-search-results.entry.js.map +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-icon-button.entry.js +2 -2
- package/dist/esm-es5/nano-icon-button.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-slides.entry.js +2 -2
- package/dist/esm-es5/nano-slides.entry.js.map +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-group.entry.js +2 -2
- package/dist/esm-es5/nano-tab-group.entry.js.map +1 -1
- package/dist/esm-es5/nano-tab.entry.js +2 -2
- package/dist/esm-es5/nano-tab.entry.js.map +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/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-0193a282.entry.js +5 -0
- package/dist/nano-components/p-0193a282.entry.js.map +1 -0
- package/dist/nano-components/p-0320410c.entry.js +5 -0
- package/dist/nano-components/p-0320410c.entry.js.map +1 -0
- package/dist/nano-components/p-2720ee8f.entry.js +5 -0
- package/dist/nano-components/p-2720ee8f.entry.js.map +1 -0
- package/dist/nano-components/p-32900c91.entry.js +5 -0
- package/dist/nano-components/p-32900c91.entry.js.map +1 -0
- package/dist/nano-components/p-33fce1a6.js +5 -0
- package/dist/nano-components/p-33fce1a6.js.map +1 -0
- package/dist/nano-components/p-371aebe7.system.entry.js +23 -0
- package/dist/nano-components/p-371aebe7.system.entry.js.map +1 -0
- package/dist/nano-components/p-41899a31.system.entry.js +5 -0
- package/dist/nano-components/p-41899a31.system.entry.js.map +1 -0
- package/dist/nano-components/p-53957ec6.system.js +5 -0
- package/dist/nano-components/{p-e7140887.system.js.map → p-53957ec6.system.js.map} +1 -1
- package/dist/nano-components/p-561500f0.system.entry.js +5 -0
- package/dist/nano-components/p-561500f0.system.entry.js.map +1 -0
- package/dist/nano-components/p-70272eae.js +5 -0
- package/dist/nano-components/p-70272eae.js.map +1 -0
- package/dist/nano-components/p-755d9227.entry.js +5 -0
- package/dist/nano-components/p-755d9227.entry.js.map +1 -0
- package/dist/nano-components/p-7bd25494.entry.js +5 -0
- package/dist/nano-components/p-7bd25494.entry.js.map +1 -0
- package/dist/nano-components/p-7c837460.entry.js +5 -0
- package/dist/nano-components/p-7c837460.entry.js.map +1 -0
- package/dist/nano-components/{p-93880c28.system.js → p-82e28afd.system.js} +2 -2
- package/dist/nano-components/p-82e28afd.system.js.map +1 -0
- package/dist/nano-components/p-8378428e.system.js +5 -0
- package/dist/nano-components/p-8378428e.system.js.map +1 -0
- package/dist/nano-components/p-8df4f125.system.entry.js +5 -0
- package/dist/nano-components/p-8df4f125.system.entry.js.map +1 -0
- package/dist/nano-components/{p-d0385948.system.entry.js → p-93596c3d.system.entry.js} +2 -2
- package/dist/nano-components/p-93596c3d.system.entry.js.map +1 -0
- package/dist/nano-components/{p-3e930ac7.entry.js → p-9d9b0b66.entry.js} +2 -2
- package/dist/nano-components/p-9d9b0b66.entry.js.map +1 -0
- package/dist/nano-components/p-9ffdf6cc.entry.js +5 -0
- package/dist/nano-components/{p-222d8095.entry.js.map → p-9ffdf6cc.entry.js.map} +1 -1
- package/dist/nano-components/p-a1444980.entry.js +5 -0
- package/dist/nano-components/p-a1444980.entry.js.map +1 -0
- package/dist/nano-components/p-aa84c727.system.entry.js +5 -0
- package/dist/nano-components/p-aa84c727.system.entry.js.map +1 -0
- package/dist/nano-components/p-ac5e3775.system.entry.js +5 -0
- package/dist/nano-components/p-ac5e3775.system.entry.js.map +1 -0
- package/dist/nano-components/p-b85cf493.system.entry.js +5 -0
- package/dist/nano-components/{p-e817ab4a.system.entry.js.map → p-b85cf493.system.entry.js.map} +1 -1
- package/dist/nano-components/{p-1030797a.entry.js → p-d37e1489.entry.js} +2 -2
- package/dist/nano-components/p-d37e1489.entry.js.map +1 -0
- package/dist/nano-components/p-d61ae833.system.entry.js +5 -0
- package/dist/nano-components/p-d61ae833.system.entry.js.map +1 -0
- package/dist/nano-components/p-d93274de.entry.js +5 -0
- package/dist/nano-components/p-d93274de.entry.js.map +1 -0
- package/dist/nano-components/p-da88981f.entry.js +23 -0
- package/dist/nano-components/p-da88981f.entry.js.map +1 -0
- package/dist/nano-components/p-e8a913ac.system.entry.js +5 -0
- package/dist/nano-components/p-e8a913ac.system.entry.js.map +1 -0
- package/dist/nano-components/p-e9a279ee.system.entry.js +5 -0
- package/dist/nano-components/p-e9a279ee.system.entry.js.map +1 -0
- package/dist/nano-components/p-faba2fc1.system.entry.js +5 -0
- package/dist/nano-components/p-faba2fc1.system.entry.js.map +1 -0
- package/dist/nano-components/p-ff026352.system.entry.js +5 -0
- package/dist/nano-components/p-ff026352.system.entry.js.map +1 -0
- package/dist/types/components/date-input/date-input.d.ts +6 -1
- package/dist/types/components/icon-button/icon-button.d.ts +2 -0
- package/dist/types/components/tabs/tab.d.ts +1 -0
- package/dist/types/components.d.ts +20 -0
- package/docs-json.json +54 -2
- package/package.json +2 -4
- package/dist/cjs/ResizeObserver.es-09b81a1b.js +0 -935
- package/dist/cjs/ResizeObserver.es-09b81a1b.js.map +0 -1
- package/dist/cjs/date-utils-0ae9a12d.js.map +0 -1
- package/dist/cjs/global-0d4f3b77.js.map +0 -1
- package/dist/cjs/intersection-observer-1822c787.js +0 -987
- package/dist/cjs/intersection-observer-1822c787.js.map +0 -1
- package/dist/components/ResizeObserver.es.js +0 -933
- package/dist/components/ResizeObserver.es.js.map +0 -1
- package/dist/components/intersection-observer.js +0 -985
- package/dist/components/intersection-observer.js.map +0 -1
- package/dist/esm/ResizeObserver.es-724af9fd.js +0 -933
- package/dist/esm/ResizeObserver.es-724af9fd.js.map +0 -1
- package/dist/esm/date-utils-e4b757ff.js.map +0 -1
- package/dist/esm/global-d5ec4d53.js.map +0 -1
- package/dist/esm/intersection-observer-dff9fb5b.js +0 -985
- package/dist/esm/intersection-observer-dff9fb5b.js.map +0 -1
- package/dist/esm-es5/ResizeObserver.es-724af9fd.js +0 -5
- package/dist/esm-es5/ResizeObserver.es-724af9fd.js.map +0 -1
- package/dist/esm-es5/date-utils-e4b757ff.js +0 -5
- package/dist/esm-es5/date-utils-e4b757ff.js.map +0 -1
- package/dist/esm-es5/global-d5ec4d53.js.map +0 -1
- package/dist/esm-es5/intersection-observer-dff9fb5b.js +0 -5
- package/dist/esm-es5/intersection-observer-dff9fb5b.js.map +0 -1
- package/dist/nano-components/p-00eaa36a.entry.js +0 -5
- package/dist/nano-components/p-00eaa36a.entry.js.map +0 -1
- package/dist/nano-components/p-1030797a.entry.js.map +0 -1
- package/dist/nano-components/p-11a2dcce.js +0 -5
- package/dist/nano-components/p-11a2dcce.js.map +0 -1
- package/dist/nano-components/p-1a30dfdd.system.entry.js +0 -5
- package/dist/nano-components/p-1a30dfdd.system.entry.js.map +0 -1
- package/dist/nano-components/p-222d8095.entry.js +0 -5
- package/dist/nano-components/p-241d90eb.system.entry.js +0 -5
- package/dist/nano-components/p-241d90eb.system.entry.js.map +0 -1
- package/dist/nano-components/p-2c8d7273.entry.js +0 -5
- package/dist/nano-components/p-2c8d7273.entry.js.map +0 -1
- package/dist/nano-components/p-3093915f.entry.js +0 -5
- package/dist/nano-components/p-3093915f.entry.js.map +0 -1
- package/dist/nano-components/p-325c1cad.entry.js +0 -5
- package/dist/nano-components/p-325c1cad.entry.js.map +0 -1
- package/dist/nano-components/p-32f396c0.system.entry.js +0 -5
- package/dist/nano-components/p-32f396c0.system.entry.js.map +0 -1
- package/dist/nano-components/p-35108e08.entry.js +0 -5
- package/dist/nano-components/p-35108e08.entry.js.map +0 -1
- package/dist/nano-components/p-3ccb176c.system.entry.js +0 -5
- package/dist/nano-components/p-3ccb176c.system.entry.js.map +0 -1
- package/dist/nano-components/p-3e930ac7.entry.js.map +0 -1
- package/dist/nano-components/p-42cebbfe.system.entry.js +0 -5
- package/dist/nano-components/p-42cebbfe.system.entry.js.map +0 -1
- package/dist/nano-components/p-5d17cfbb.system.entry.js +0 -23
- package/dist/nano-components/p-5d17cfbb.system.entry.js.map +0 -1
- package/dist/nano-components/p-5d5ea4ab.system.entry.js +0 -5
- package/dist/nano-components/p-5d5ea4ab.system.entry.js.map +0 -1
- package/dist/nano-components/p-6722447c.entry.js +0 -5
- package/dist/nano-components/p-6722447c.entry.js.map +0 -1
- package/dist/nano-components/p-6d138abf.entry.js +0 -5
- package/dist/nano-components/p-6d138abf.entry.js.map +0 -1
- package/dist/nano-components/p-76d9d1d4.entry.js +0 -5
- package/dist/nano-components/p-76d9d1d4.entry.js.map +0 -1
- package/dist/nano-components/p-866f083f.system.entry.js +0 -5
- package/dist/nano-components/p-866f083f.system.entry.js.map +0 -1
- package/dist/nano-components/p-88779174.system.entry.js +0 -5
- package/dist/nano-components/p-88779174.system.entry.js.map +0 -1
- package/dist/nano-components/p-93880c28.system.js.map +0 -1
- package/dist/nano-components/p-97b13ad2.entry.js +0 -5
- package/dist/nano-components/p-97b13ad2.entry.js.map +0 -1
- package/dist/nano-components/p-b430a9b6.system.js +0 -5
- package/dist/nano-components/p-b430a9b6.system.js.map +0 -1
- package/dist/nano-components/p-d0385948.system.entry.js.map +0 -1
- package/dist/nano-components/p-debd9efc.js +0 -5
- package/dist/nano-components/p-debd9efc.js.map +0 -1
- package/dist/nano-components/p-e195ab77.system.js +0 -5
- package/dist/nano-components/p-e195ab77.system.js.map +0 -1
- package/dist/nano-components/p-e7140887.system.js +0 -5
- package/dist/nano-components/p-e817ab4a.system.entry.js +0 -5
- package/dist/nano-components/p-f5d4d13b.system.js +0 -5
- package/dist/nano-components/p-f5d4d13b.system.js.map +0 -1
- package/dist/nano-components/p-f66958c1.js +0 -5
- package/dist/nano-components/p-f66958c1.js.map +0 -1
- package/dist/nano-components/p-f710c763.system.entry.js +0 -5
- package/dist/nano-components/p-f710c763.system.entry.js.map +0 -1
- package/dist/nano-components/p-f9c7d961.js +0 -5
- package/dist/nano-components/p-f9c7d961.js.map +0 -1
- package/dist/nano-components/p-ffc2063a.entry.js +0 -23
- package/dist/nano-components/p-ffc2063a.entry.js.map +0 -1
- package/dist/nano-components/p-fff27907.system.entry.js +0 -5
- package/dist/nano-components/p-fff27907.system.entry.js.map +0 -1
@@ -2272,7 +2272,7 @@ const debounce$2 = (callback, wait = 0) => {
|
|
2272
2272
|
* @param delay how long to delay before calling the function
|
2273
2273
|
* @returns a throttled function to call as often as required
|
2274
2274
|
*/
|
2275
|
-
function throttle
|
2275
|
+
function throttle(callback, delay) {
|
2276
2276
|
let isThrottled = false;
|
2277
2277
|
let args;
|
2278
2278
|
let context;
|
@@ -4160,12 +4160,6 @@ const writeTask = /*@__PURE__*/ queueTask(queueDomWrites, true);
|
|
4160
4160
|
}
|
4161
4161
|
})();
|
4162
4162
|
|
4163
|
-
// Intersection observer
|
4164
|
-
if (!('IntersectionObserver' in window) ||
|
4165
|
-
!('IntersectionObserverEntry' in window) ||
|
4166
|
-
!('intersectionRatio' in window.IntersectionObserverEntry.prototype)) {
|
4167
|
-
Promise.resolve().then(function () { return intersectionObserver; });
|
4168
|
-
}
|
4169
4163
|
// scroll-behaviour
|
4170
4164
|
if (!('scrollBehavior' in document.documentElement.style)) {
|
4171
4165
|
setTimeout((_) => {
|
@@ -9025,8 +9019,10 @@ let DataList = class extends H {
|
|
9025
9019
|
this.shouldOpen = true;
|
9026
9020
|
// open dropdown if possible
|
9027
9021
|
this.manageDropdownDisplay();
|
9028
|
-
if (['ArrowDown', 'ArrowUp'].includes(e.key))
|
9022
|
+
if (['ArrowDown', 'ArrowUp'].includes(e.key)) {
|
9023
|
+
e.preventDefault();
|
9029
9024
|
this.shouldFocus = true;
|
9025
|
+
}
|
9030
9026
|
};
|
9031
9027
|
// handles key down on options. Either 'picks'
|
9032
9028
|
// an option or passes event back to input for search / filter
|
@@ -9413,7 +9409,7 @@ let DataList = class extends H {
|
|
9413
9409
|
static get style() { return datalistCss; }
|
9414
9410
|
};
|
9415
9411
|
|
9416
|
-
const ISO_DATE_FORMAT = /^(\d{4})-(\d{2})-(\d{2})
|
9412
|
+
const ISO_DATE_FORMAT = /^(\d{4})-(\d{2})-(\d{2})/;
|
9417
9413
|
var DaysOfWeek$1;
|
9418
9414
|
(function (DaysOfWeek) {
|
9419
9415
|
DaysOfWeek[DaysOfWeek["Sunday"] = 0] = "Sunday";
|
@@ -9638,6 +9634,9 @@ let DateInput = class extends H {
|
|
9638
9634
|
*/
|
9639
9635
|
this.closeAfterPicked = true;
|
9640
9636
|
this._dropDownConfig = {};
|
9637
|
+
/** Controls which days are disabled and therefore disallowed.
|
9638
|
+
* For example, this can be used to disallow selection of weekends. */
|
9639
|
+
this.isDateDisabled = () => false;
|
9641
9640
|
// Event handlers
|
9642
9641
|
this.onInputChange = (e) => {
|
9643
9642
|
e.stopPropagation();
|
@@ -9740,13 +9739,14 @@ let DateInput = class extends H {
|
|
9740
9739
|
'Date below the minimum: ' +
|
9741
9740
|
min.toLocaleDateString(this.locale, this.helperTextFormat);
|
9742
9741
|
}
|
9743
|
-
|
9744
|
-
(max = parseISODate(this.max)) &&
|
9745
|
-
valueDate > max) {
|
9742
|
+
if (this.max && (max = parseISODate(this.max)) && valueDate > max) {
|
9746
9743
|
error =
|
9747
9744
|
'Date above the maximum: ' +
|
9748
9745
|
max.toLocaleDateString(this.locale, this.helperTextFormat);
|
9749
9746
|
}
|
9747
|
+
if (this.isDateDisabled(valueDate)) {
|
9748
|
+
error = 'Date selected is disabled.';
|
9749
|
+
}
|
9750
9750
|
}
|
9751
9751
|
requestAnimationFrame(async (_) => {
|
9752
9752
|
if (!this.input)
|
@@ -9770,6 +9770,10 @@ let DateInput = class extends H {
|
|
9770
9770
|
set dropDownConfig(ddc) {
|
9771
9771
|
this._dropDownConfig = Object.assign(Object.assign({}, this._dropDownConfig), ddc);
|
9772
9772
|
}
|
9773
|
+
/** @readonly get the value as a `Date` */
|
9774
|
+
get dateValue() {
|
9775
|
+
return parseISODate(this.value);
|
9776
|
+
}
|
9773
9777
|
// Methods
|
9774
9778
|
/**
|
9775
9779
|
* Get the current state of the control.
|
@@ -9874,7 +9878,7 @@ let DateInput = class extends H {
|
|
9874
9878
|
const hasHelperSlot = !!this.host.querySelector('[slot="helper"]');
|
9875
9879
|
return (h$1(Host$1, { class: Object.assign({}, createColorClasses(this.color)) }, h$1("div", { class: "date-field" }, h$1("nano-input", { class: "date-field__input", slot: "trigger", required: this.required || undefined, showInlineError: this.showInlineError, validateOn: this.validateOn, placeholder: this.placeholder !== 'false' ? this.placeholder : undefined, pattern: this.pattern, label: this.label, disabled: this.disabled || undefined, color: this.color || undefined, autofocus: this.autofocus || undefined, clearInput: this.clearInput || undefined, onNanoChange: this.onInputChange, onNanoInput: this.onInputKey, onNanoValidate: this.onInputValidate, name: "", form: this.form || undefined, size: this.size || undefined, readonly: this.readonly, value: this.inputValue, ref: (input) => (this.input = input), floatLabel: this.floatLabel, hideLabel: this.hideLabel, inputmode: 'numeric', part: "input" }, h$1("slot", { name: "start", slot: "start" }), h$1("slot", { name: "label" }), h$1("slot", { name: "end", slot: "end" }), this.picker && [
|
9876
9880
|
h$1("button", { slot: "end", class: "date-field__open", type: "button", onKeyDown: this.onTriggerKey, onClick: this.onTriggerClick, ref: (trigger) => (this.trigger = trigger), disabled: this.disabled || this.readonly }, h$1("nano-icon", { name: "light/calendar-alt" })),
|
9877
|
-
h$1("nano-dropdown", Object.assign({ slot: "end", onNanoHide: this.onDropdownHide, onNanoShow: this.onDropdownShow, dialogTitle: "Choose a date", class: "date-field__dropdown", ref: (dropdown) => (this.dropdown = dropdown) }, this.dropDownConfig, { part: "dropdown" }), h$1("div", null, h$1("div", { class: "date-field__close-bar" }, h$1("button", { class: "date-field__close", type: "button", onMouseDown: this.onCloseClick, onKeyDown: this.onCloseKeyDown, ref: (pickerClose) => (this.pickerCloseBtn = pickerClose) }, h$1("nano-icon", { name: "light/times" }), h$1("span", { class: "vhidden" }, "Close window"))), h$1("nano-date-picker", { onNanoDatePicked: this.onDatePicked, min: this.min || undefined, max: this.max || undefined, "is-modal": true, ref: (picker) => (this.pickerEle = picker), localization: this.localization, selectedDate: this.value || this.initialPickerDate, firstDayOfWeek: this.firstDayOfWeek, color: this.color || undefined, part: "date-picker" }))),
|
9881
|
+
h$1("nano-dropdown", Object.assign({ slot: "end", onNanoHide: this.onDropdownHide, onNanoShow: this.onDropdownShow, dialogTitle: "Choose a date", class: "date-field__dropdown", ref: (dropdown) => (this.dropdown = dropdown) }, this.dropDownConfig, { part: "dropdown" }), h$1("div", null, h$1("div", { class: "date-field__close-bar" }, h$1("button", { class: "date-field__close", type: "button", onMouseDown: this.onCloseClick, onKeyDown: this.onCloseKeyDown, ref: (pickerClose) => (this.pickerCloseBtn = pickerClose) }, h$1("nano-icon", { name: "light/times" }), h$1("span", { class: "vhidden" }, "Close window"))), h$1("nano-date-picker", { isDateDisabled: this.isDateDisabled, onNanoDatePicked: this.onDatePicked, min: this.min || undefined, max: this.max || undefined, "is-modal": true, ref: (picker) => (this.pickerEle = picker), localization: this.localization, selectedDate: this.value || this.initialPickerDate, firstDayOfWeek: this.firstDayOfWeek, color: this.color || undefined, part: "date-picker" }))),
|
9878
9882
|
], (hasHelperSlot || this.helperText || this.showInlineError) && (h$1("span", { slot: "helper" }, h$1("span", { class: { vhidden: !!this.value.length } }, h$1("slot", { name: "helper" })), this.helperText && !!valueDate && (h$1("span", null, valueDate.toLocaleDateString(this.locale, this.helperTextFormat)))))), h$1("input", { type: "hidden", value: this.value, name: this.name }))));
|
9879
9883
|
}
|
9880
9884
|
get host() { return this; }
|
@@ -10078,7 +10082,7 @@ const localization = {
|
|
10078
10082
|
],
|
10079
10083
|
};
|
10080
10084
|
|
10081
|
-
const datePickerCss = ":host{-webkit-box-sizing:border-box;box-sizing:border-box}*,*::before,*::after{-webkit-box-sizing:border-box;box-sizing:border-box}[hidden]{display:none !important}:host{--background:var(--nano-layer-bg, #fff);--active-color:var(--nano-color-base, var(--nano-color-primary, #007495));--active-text-color:var(\n --nano-color-contrast,\n var(--nano-color-primary-contrast, #fff)\n );--focus-shadow:var(--nano-control-focus-shadow, 0 0 0 0.1875rem var(--nano-control-focus-color, rgba(144, 198, 231, 0.8)));--inactive-color:var(--nano-button-color, #f0efed);display:block;font-size:16px}:host(.nano-color){--active-color:var(--nano-color-base, var(--nano-color-primary, #007495));--active-text-color:var(--nano-color-contrast);--focus-shadow:0 0 0 0.1875rem rgba(var(--nano-color-tint-rgb), 0.56)}.duet-date *,.duet-date *::before,.duet-date *::after{-webkit-box-sizing:border-box;box-sizing:border-box;margin:0}.duet-date{-webkit-box-sizing:border-box;box-sizing:border-box;color:currentColor;display:block;margin:0;position:relative;text-align:left;width:100%}.duet-date__dialog{display:-webkit-box;display:-ms-flexbox;display:flex;top:100%;max-width:100%;width:100%}.duet-date__dialog.is-left{left:auto;right:0;width:auto}.duet-date__dialog-content{background:var(--background);min-width:290px;padding:16px 16px 20px;position:relative;-webkit-transform:none;transform:none;max-width:100%;width:100%}.duet-date__table{border-collapse:collapse;border-spacing:0;font-size:1em;line-height:1.25;text-align:center;width:100%}.duet-date__table-header{font-size:0.75em;font-weight:600;letter-spacing:1px;line-height:1.25;padding-bottom:8px;text-decoration:none;text-transform:uppercase}.duet-date__cell{text-align:center}.duet-date__day{-moz-appearance:none;-webkit-appearance:none;appearance:none;background:transparent;border:0;border-radius:50%;cursor:pointer;display:inline-block;font-size:0.875em;font-variant-numeric:tabular-nums;line-height:1.25;position:relative;text-align:center;vertical-align:middle;z-index:1;-webkit-transition:0.15s ease all;transition:0.15s ease all;height:2.5em;width:2.5em}.duet-date__day.is-today{-webkit-box-shadow:0 0 0 1px var(--active-color);box-shadow:0 0 0 1px var(--active-color);position:relative}.duet-date__day:hover::before,.duet-date__day.is-today::before{content:\"\";background:var(--active-color);border-radius:50%;bottom:0;left:0;opacity:0.16;position:absolute;right:0;top:0}[aria-selected=true] .duet-date__day{background:var(--active-color);color:var(--active-text-color);-webkit-box-shadow:none;box-shadow:none;outline:0}.duet-date__day:active{background:var(--active-color);-webkit-box-shadow:var(--focus-shadow);box-shadow:var(--focus-shadow);color:var(--active-text-color)}.duet-date__day:focus{-webkit-box-shadow:var(--focus-shadow);box-shadow:var(--focus-shadow);outline:0}.duet-date__day.is-disabled{background:transparent;-webkit-box-shadow:none;box-shadow:none;cursor:default;opacity:0.5}.duet-date__day.is-disabled::before{display:none}.duet-date__day.is-outside{background:var(--inactive-color);-webkit-box-shadow:none;box-shadow:none;cursor:default;opacity:0.6;pointer-events:none}.duet-date__day.is-outside::before{display:none}.duet-date__header{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:16px;width:100%}.duet-date__nav{white-space:nowrap}.duet-date__prev,.duet-date__next{background:var(--inactive-color);-moz-appearance:none;-webkit-appearance:none;-webkit-box-align:center;-ms-flex-align:center;align-items:center;appearance:none;border:0;border-radius:50%;cursor:pointer;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-pack:distribute;justify-content:space-around;margin-left:8px;padding:0;-webkit-transition:background-color 300ms ease;transition:background-color 300ms ease;font-size:0.9em;height:2.2em;width:2.2em}.duet-date__prev:focus,.duet-date__next:focus{-webkit-box-shadow:var(--focus-shadow);box-shadow:var(--focus-shadow);outline:0}.duet-date__prev:active:focus,.duet-date__next:active:focus{-webkit-box-shadow:none;box-shadow:none}.duet-date__prev:disabled,.duet-date__next:disabled{cursor:default;opacity:0.5}.duet-date__prev nano-icon,.duet-date__next nano-icon{margin:0 auto}.duet-date__select{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;margin-top:4px;position:relative}.duet-date__select span{margin-right:4px}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.duet-date__select span{margin-right:unset;-webkit-margin-end:4px;margin-inline-end:4px}}.duet-date__select select{cursor:pointer;font-size:1em;height:100%;left:0;opacity:0;position:absolute;top:0;width:100%;z-index:2}.duet-date__select select.focus-visible:focus+.duet-date__select-label{-webkit-box-shadow:var(--focus-shadow);box-shadow:var(--focus-shadow)}.duet-date__select-label{-webkit-box-align:center;-ms-flex-align:center;align-items:center;border-radius:4px;display:-webkit-box;display:-ms-flexbox;display:flex;font-size:1.25em;font-weight:600;line-height:1.25;padding:0 4px 0 8px;pointer-events:none;position:relative;width:100%;z-index:1}.duet-date__select-label nano-icon{font-size:0.55em}.duet-date__vhidden{border:0;clip:rect(1px, 1px, 1px, 1px);height:1px;overflow:hidden;padding:0;position:absolute;top:0;width:1px}";
|
10085
|
+
const datePickerCss = ":host{-webkit-box-sizing:border-box;box-sizing:border-box}*,*::before,*::after{-webkit-box-sizing:border-box;box-sizing:border-box}[hidden]{display:none !important}:host{--background:var(--nano-layer-bg, #fff);--active-color:var(--nano-color-base, var(--nano-color-primary, #007495));--active-text-color:var(\n --nano-color-contrast,\n var(--nano-color-primary-contrast, #fff)\n );--focus-shadow:var(--nano-control-focus-shadow, 0 0 0 0.1875rem var(--nano-control-focus-color, rgba(144, 198, 231, 0.8)));--inactive-color:var(--nano-button-color, #f0efed);display:block;font-size:16px}:host(.nano-color){--active-color:var(--nano-color-base, var(--nano-color-primary, #007495));--active-text-color:var(--nano-color-contrast);--focus-shadow:0 0 0 0.1875rem rgba(var(--nano-color-tint-rgb), 0.56)}.duet-date *,.duet-date *::before,.duet-date *::after{-webkit-box-sizing:border-box;box-sizing:border-box;margin:0}.duet-date{-webkit-box-sizing:border-box;box-sizing:border-box;color:currentColor;display:block;margin:0;position:relative;text-align:left;width:100%}.duet-date__dialog{display:-webkit-box;display:-ms-flexbox;display:flex;top:100%;max-width:100%;width:100%}.duet-date__dialog.is-left{left:auto;right:0;width:auto}.duet-date__dialog-content{background:var(--background);min-width:290px;padding:16px 16px 20px;position:relative;-webkit-transform:none;transform:none;max-width:100%;width:100%}.duet-date__table{border-collapse:collapse;border-spacing:0;font-size:1em;line-height:1.25;text-align:center;width:100%}.duet-date__table-header{font-size:0.75em;font-weight:600;letter-spacing:1px;line-height:1.25;padding-bottom:8px;text-decoration:none;text-transform:uppercase}.duet-date__cell{text-align:center}.duet-date__day{-moz-appearance:none;-webkit-appearance:none;appearance:none;background:transparent;border:0;border-radius:50%;cursor:pointer;display:inline-block;font-size:0.875em;font-variant-numeric:tabular-nums;line-height:1.25;position:relative;text-align:center;vertical-align:middle;z-index:1;-webkit-transition:0.15s ease all;transition:0.15s ease all;height:2.5em;width:2.5em}.duet-date__day.is-today{-webkit-box-shadow:0 0 0 1px var(--active-color);box-shadow:0 0 0 1px var(--active-color);position:relative}.duet-date__day:hover::before,.duet-date__day.is-today::before{content:\"\";background:var(--active-color);border-radius:50%;bottom:0;left:0;opacity:0.16;position:absolute;right:0;top:0}[aria-selected=true] .duet-date__day{background:var(--active-color) !important;color:var(--active-text-color);-webkit-box-shadow:none;box-shadow:none;outline:0}.duet-date__day:active{background:var(--active-color);-webkit-box-shadow:var(--focus-shadow);box-shadow:var(--focus-shadow);color:var(--active-text-color)}.duet-date__day:focus{-webkit-box-shadow:var(--focus-shadow);box-shadow:var(--focus-shadow);outline:0}.duet-date__day.is-disabled{background:transparent;-webkit-box-shadow:none;box-shadow:none;cursor:default;opacity:0.5}.duet-date__day.is-disabled::before{display:none}.duet-date__day.is-outside{background:var(--inactive-color);-webkit-box-shadow:none;box-shadow:none;cursor:default;opacity:0.6;pointer-events:none}.duet-date__day.is-outside::before{display:none}.duet-date__header{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:16px;width:100%}.duet-date__nav{white-space:nowrap}.duet-date__prev,.duet-date__next{background:var(--inactive-color);-moz-appearance:none;-webkit-appearance:none;-webkit-box-align:center;-ms-flex-align:center;align-items:center;appearance:none;border:0;border-radius:50%;cursor:pointer;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-pack:distribute;justify-content:space-around;margin-left:8px;padding:0;-webkit-transition:background-color 300ms ease;transition:background-color 300ms ease;font-size:0.9em;height:2.2em;width:2.2em}.duet-date__prev:focus,.duet-date__next:focus{-webkit-box-shadow:var(--focus-shadow);box-shadow:var(--focus-shadow);outline:0}.duet-date__prev:active:focus,.duet-date__next:active:focus{-webkit-box-shadow:none;box-shadow:none}.duet-date__prev:disabled,.duet-date__next:disabled{cursor:default;opacity:0.5}.duet-date__prev nano-icon,.duet-date__next nano-icon{margin:0 auto}.duet-date__select{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;margin-top:4px;position:relative}.duet-date__select span{margin-right:4px}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.duet-date__select span{margin-right:unset;-webkit-margin-end:4px;margin-inline-end:4px}}.duet-date__select select{cursor:pointer;font-size:1em;height:100%;left:0;opacity:0;position:absolute;top:0;width:100%;z-index:2}.duet-date__select select.focus-visible:focus+.duet-date__select-label{-webkit-box-shadow:var(--focus-shadow);box-shadow:var(--focus-shadow)}.duet-date__select-label{-webkit-box-align:center;-ms-flex-align:center;align-items:center;border-radius:4px;display:-webkit-box;display:-ms-flexbox;display:flex;font-size:1.25em;font-weight:600;line-height:1.25;padding:0 4px 0 8px;pointer-events:none;position:relative;width:100%;z-index:1}.duet-date__select-label nano-icon{font-size:0.55em}.duet-date__vhidden{border:0;clip:rect(1px, 1px, 1px, 1px);height:1px;overflow:hidden;padding:0;position:absolute;top:0;width:1px}";
|
10082
10086
|
|
10083
10087
|
function range(from, to) {
|
10084
10088
|
var result = [];
|
@@ -10341,933 +10345,6 @@ let DatePicker = class extends H {
|
|
10341
10345
|
static get style() { return datePickerCss; }
|
10342
10346
|
};
|
10343
10347
|
|
10344
|
-
/**
|
10345
|
-
* A collection of shims that provide minimal functionality of the ES6 collections.
|
10346
|
-
*
|
10347
|
-
* These implementations are not meant to be used outside of the ResizeObserver
|
10348
|
-
* modules as they cover only a limited range of use cases.
|
10349
|
-
*/
|
10350
|
-
/* eslint-disable require-jsdoc, valid-jsdoc */
|
10351
|
-
var MapShim = (function () {
|
10352
|
-
if (typeof Map !== 'undefined') {
|
10353
|
-
return Map;
|
10354
|
-
}
|
10355
|
-
/**
|
10356
|
-
* Returns index in provided array that matches the specified key.
|
10357
|
-
*
|
10358
|
-
* @param {Array<Array>} arr
|
10359
|
-
* @param {*} key
|
10360
|
-
* @returns {number}
|
10361
|
-
*/
|
10362
|
-
function getIndex(arr, key) {
|
10363
|
-
var result = -1;
|
10364
|
-
arr.some(function (entry, index) {
|
10365
|
-
if (entry[0] === key) {
|
10366
|
-
result = index;
|
10367
|
-
return true;
|
10368
|
-
}
|
10369
|
-
return false;
|
10370
|
-
});
|
10371
|
-
return result;
|
10372
|
-
}
|
10373
|
-
return /** @class */ (function () {
|
10374
|
-
function class_1() {
|
10375
|
-
this.__entries__ = [];
|
10376
|
-
}
|
10377
|
-
Object.defineProperty(class_1.prototype, "size", {
|
10378
|
-
/**
|
10379
|
-
* @returns {boolean}
|
10380
|
-
*/
|
10381
|
-
get: function () {
|
10382
|
-
return this.__entries__.length;
|
10383
|
-
},
|
10384
|
-
enumerable: true,
|
10385
|
-
configurable: true
|
10386
|
-
});
|
10387
|
-
/**
|
10388
|
-
* @param {*} key
|
10389
|
-
* @returns {*}
|
10390
|
-
*/
|
10391
|
-
class_1.prototype.get = function (key) {
|
10392
|
-
var index = getIndex(this.__entries__, key);
|
10393
|
-
var entry = this.__entries__[index];
|
10394
|
-
return entry && entry[1];
|
10395
|
-
};
|
10396
|
-
/**
|
10397
|
-
* @param {*} key
|
10398
|
-
* @param {*} value
|
10399
|
-
* @returns {void}
|
10400
|
-
*/
|
10401
|
-
class_1.prototype.set = function (key, value) {
|
10402
|
-
var index = getIndex(this.__entries__, key);
|
10403
|
-
if (~index) {
|
10404
|
-
this.__entries__[index][1] = value;
|
10405
|
-
}
|
10406
|
-
else {
|
10407
|
-
this.__entries__.push([key, value]);
|
10408
|
-
}
|
10409
|
-
};
|
10410
|
-
/**
|
10411
|
-
* @param {*} key
|
10412
|
-
* @returns {void}
|
10413
|
-
*/
|
10414
|
-
class_1.prototype.delete = function (key) {
|
10415
|
-
var entries = this.__entries__;
|
10416
|
-
var index = getIndex(entries, key);
|
10417
|
-
if (~index) {
|
10418
|
-
entries.splice(index, 1);
|
10419
|
-
}
|
10420
|
-
};
|
10421
|
-
/**
|
10422
|
-
* @param {*} key
|
10423
|
-
* @returns {void}
|
10424
|
-
*/
|
10425
|
-
class_1.prototype.has = function (key) {
|
10426
|
-
return !!~getIndex(this.__entries__, key);
|
10427
|
-
};
|
10428
|
-
/**
|
10429
|
-
* @returns {void}
|
10430
|
-
*/
|
10431
|
-
class_1.prototype.clear = function () {
|
10432
|
-
this.__entries__.splice(0);
|
10433
|
-
};
|
10434
|
-
/**
|
10435
|
-
* @param {Function} callback
|
10436
|
-
* @param {*} [ctx=null]
|
10437
|
-
* @returns {void}
|
10438
|
-
*/
|
10439
|
-
class_1.prototype.forEach = function (callback, ctx) {
|
10440
|
-
if (ctx === void 0) { ctx = null; }
|
10441
|
-
for (var _i = 0, _a = this.__entries__; _i < _a.length; _i++) {
|
10442
|
-
var entry = _a[_i];
|
10443
|
-
callback.call(ctx, entry[1], entry[0]);
|
10444
|
-
}
|
10445
|
-
};
|
10446
|
-
return class_1;
|
10447
|
-
}());
|
10448
|
-
})();
|
10449
|
-
|
10450
|
-
/**
|
10451
|
-
* Detects whether window and document objects are available in current environment.
|
10452
|
-
*/
|
10453
|
-
var isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && window.document === document;
|
10454
|
-
|
10455
|
-
// Returns global object of a current environment.
|
10456
|
-
var global$1 = (function () {
|
10457
|
-
if (typeof global !== 'undefined' && global.Math === Math) {
|
10458
|
-
return global;
|
10459
|
-
}
|
10460
|
-
if (typeof self !== 'undefined' && self.Math === Math) {
|
10461
|
-
return self;
|
10462
|
-
}
|
10463
|
-
if (typeof window !== 'undefined' && window.Math === Math) {
|
10464
|
-
return window;
|
10465
|
-
}
|
10466
|
-
// eslint-disable-next-line no-new-func
|
10467
|
-
return Function('return this')();
|
10468
|
-
})();
|
10469
|
-
|
10470
|
-
/**
|
10471
|
-
* A shim for the requestAnimationFrame which falls back to the setTimeout if
|
10472
|
-
* first one is not supported.
|
10473
|
-
*
|
10474
|
-
* @returns {number} Requests' identifier.
|
10475
|
-
*/
|
10476
|
-
var requestAnimationFrame$1 = (function () {
|
10477
|
-
if (typeof requestAnimationFrame === 'function') {
|
10478
|
-
// It's required to use a bounded function because IE sometimes throws
|
10479
|
-
// an "Invalid calling object" error if rAF is invoked without the global
|
10480
|
-
// object on the left hand side.
|
10481
|
-
return requestAnimationFrame.bind(global$1);
|
10482
|
-
}
|
10483
|
-
return function (callback) { return setTimeout(function () { return callback(Date.now()); }, 1000 / 60); };
|
10484
|
-
})();
|
10485
|
-
|
10486
|
-
// Defines minimum timeout before adding a trailing call.
|
10487
|
-
var trailingTimeout = 2;
|
10488
|
-
/**
|
10489
|
-
* Creates a wrapper function which ensures that provided callback will be
|
10490
|
-
* invoked only once during the specified delay period.
|
10491
|
-
*
|
10492
|
-
* @param {Function} callback - Function to be invoked after the delay period.
|
10493
|
-
* @param {number} delay - Delay after which to invoke callback.
|
10494
|
-
* @returns {Function}
|
10495
|
-
*/
|
10496
|
-
function throttle (callback, delay) {
|
10497
|
-
var leadingCall = false, trailingCall = false, lastCallTime = 0;
|
10498
|
-
/**
|
10499
|
-
* Invokes the original callback function and schedules new invocation if
|
10500
|
-
* the "proxy" was called during current request.
|
10501
|
-
*
|
10502
|
-
* @returns {void}
|
10503
|
-
*/
|
10504
|
-
function resolvePending() {
|
10505
|
-
if (leadingCall) {
|
10506
|
-
leadingCall = false;
|
10507
|
-
callback();
|
10508
|
-
}
|
10509
|
-
if (trailingCall) {
|
10510
|
-
proxy();
|
10511
|
-
}
|
10512
|
-
}
|
10513
|
-
/**
|
10514
|
-
* Callback invoked after the specified delay. It will further postpone
|
10515
|
-
* invocation of the original function delegating it to the
|
10516
|
-
* requestAnimationFrame.
|
10517
|
-
*
|
10518
|
-
* @returns {void}
|
10519
|
-
*/
|
10520
|
-
function timeoutCallback() {
|
10521
|
-
requestAnimationFrame$1(resolvePending);
|
10522
|
-
}
|
10523
|
-
/**
|
10524
|
-
* Schedules invocation of the original function.
|
10525
|
-
*
|
10526
|
-
* @returns {void}
|
10527
|
-
*/
|
10528
|
-
function proxy() {
|
10529
|
-
var timeStamp = Date.now();
|
10530
|
-
if (leadingCall) {
|
10531
|
-
// Reject immediately following calls.
|
10532
|
-
if (timeStamp - lastCallTime < trailingTimeout) {
|
10533
|
-
return;
|
10534
|
-
}
|
10535
|
-
// Schedule new call to be in invoked when the pending one is resolved.
|
10536
|
-
// This is important for "transitions" which never actually start
|
10537
|
-
// immediately so there is a chance that we might miss one if change
|
10538
|
-
// happens amids the pending invocation.
|
10539
|
-
trailingCall = true;
|
10540
|
-
}
|
10541
|
-
else {
|
10542
|
-
leadingCall = true;
|
10543
|
-
trailingCall = false;
|
10544
|
-
setTimeout(timeoutCallback, delay);
|
10545
|
-
}
|
10546
|
-
lastCallTime = timeStamp;
|
10547
|
-
}
|
10548
|
-
return proxy;
|
10549
|
-
}
|
10550
|
-
|
10551
|
-
// Minimum delay before invoking the update of observers.
|
10552
|
-
var REFRESH_DELAY = 20;
|
10553
|
-
// A list of substrings of CSS properties used to find transition events that
|
10554
|
-
// might affect dimensions of observed elements.
|
10555
|
-
var transitionKeys = ['top', 'right', 'bottom', 'left', 'width', 'height', 'size', 'weight'];
|
10556
|
-
// Check if MutationObserver is available.
|
10557
|
-
var mutationObserverSupported = typeof MutationObserver !== 'undefined';
|
10558
|
-
/**
|
10559
|
-
* Singleton controller class which handles updates of ResizeObserver instances.
|
10560
|
-
*/
|
10561
|
-
var ResizeObserverController = /** @class */ (function () {
|
10562
|
-
/**
|
10563
|
-
* Creates a new instance of ResizeObserverController.
|
10564
|
-
*
|
10565
|
-
* @private
|
10566
|
-
*/
|
10567
|
-
function ResizeObserverController() {
|
10568
|
-
/**
|
10569
|
-
* Indicates whether DOM listeners have been added.
|
10570
|
-
*
|
10571
|
-
* @private {boolean}
|
10572
|
-
*/
|
10573
|
-
this.connected_ = false;
|
10574
|
-
/**
|
10575
|
-
* Tells that controller has subscribed for Mutation Events.
|
10576
|
-
*
|
10577
|
-
* @private {boolean}
|
10578
|
-
*/
|
10579
|
-
this.mutationEventsAdded_ = false;
|
10580
|
-
/**
|
10581
|
-
* Keeps reference to the instance of MutationObserver.
|
10582
|
-
*
|
10583
|
-
* @private {MutationObserver}
|
10584
|
-
*/
|
10585
|
-
this.mutationsObserver_ = null;
|
10586
|
-
/**
|
10587
|
-
* A list of connected observers.
|
10588
|
-
*
|
10589
|
-
* @private {Array<ResizeObserverSPI>}
|
10590
|
-
*/
|
10591
|
-
this.observers_ = [];
|
10592
|
-
this.onTransitionEnd_ = this.onTransitionEnd_.bind(this);
|
10593
|
-
this.refresh = throttle(this.refresh.bind(this), REFRESH_DELAY);
|
10594
|
-
}
|
10595
|
-
/**
|
10596
|
-
* Adds observer to observers list.
|
10597
|
-
*
|
10598
|
-
* @param {ResizeObserverSPI} observer - Observer to be added.
|
10599
|
-
* @returns {void}
|
10600
|
-
*/
|
10601
|
-
ResizeObserverController.prototype.addObserver = function (observer) {
|
10602
|
-
if (!~this.observers_.indexOf(observer)) {
|
10603
|
-
this.observers_.push(observer);
|
10604
|
-
}
|
10605
|
-
// Add listeners if they haven't been added yet.
|
10606
|
-
if (!this.connected_) {
|
10607
|
-
this.connect_();
|
10608
|
-
}
|
10609
|
-
};
|
10610
|
-
/**
|
10611
|
-
* Removes observer from observers list.
|
10612
|
-
*
|
10613
|
-
* @param {ResizeObserverSPI} observer - Observer to be removed.
|
10614
|
-
* @returns {void}
|
10615
|
-
*/
|
10616
|
-
ResizeObserverController.prototype.removeObserver = function (observer) {
|
10617
|
-
var observers = this.observers_;
|
10618
|
-
var index = observers.indexOf(observer);
|
10619
|
-
// Remove observer if it's present in registry.
|
10620
|
-
if (~index) {
|
10621
|
-
observers.splice(index, 1);
|
10622
|
-
}
|
10623
|
-
// Remove listeners if controller has no connected observers.
|
10624
|
-
if (!observers.length && this.connected_) {
|
10625
|
-
this.disconnect_();
|
10626
|
-
}
|
10627
|
-
};
|
10628
|
-
/**
|
10629
|
-
* Invokes the update of observers. It will continue running updates insofar
|
10630
|
-
* it detects changes.
|
10631
|
-
*
|
10632
|
-
* @returns {void}
|
10633
|
-
*/
|
10634
|
-
ResizeObserverController.prototype.refresh = function () {
|
10635
|
-
var changesDetected = this.updateObservers_();
|
10636
|
-
// Continue running updates if changes have been detected as there might
|
10637
|
-
// be future ones caused by CSS transitions.
|
10638
|
-
if (changesDetected) {
|
10639
|
-
this.refresh();
|
10640
|
-
}
|
10641
|
-
};
|
10642
|
-
/**
|
10643
|
-
* Updates every observer from observers list and notifies them of queued
|
10644
|
-
* entries.
|
10645
|
-
*
|
10646
|
-
* @private
|
10647
|
-
* @returns {boolean} Returns "true" if any observer has detected changes in
|
10648
|
-
* dimensions of it's elements.
|
10649
|
-
*/
|
10650
|
-
ResizeObserverController.prototype.updateObservers_ = function () {
|
10651
|
-
// Collect observers that have active observations.
|
10652
|
-
var activeObservers = this.observers_.filter(function (observer) {
|
10653
|
-
return observer.gatherActive(), observer.hasActive();
|
10654
|
-
});
|
10655
|
-
// Deliver notifications in a separate cycle in order to avoid any
|
10656
|
-
// collisions between observers, e.g. when multiple instances of
|
10657
|
-
// ResizeObserver are tracking the same element and the callback of one
|
10658
|
-
// of them changes content dimensions of the observed target. Sometimes
|
10659
|
-
// this may result in notifications being blocked for the rest of observers.
|
10660
|
-
activeObservers.forEach(function (observer) { return observer.broadcastActive(); });
|
10661
|
-
return activeObservers.length > 0;
|
10662
|
-
};
|
10663
|
-
/**
|
10664
|
-
* Initializes DOM listeners.
|
10665
|
-
*
|
10666
|
-
* @private
|
10667
|
-
* @returns {void}
|
10668
|
-
*/
|
10669
|
-
ResizeObserverController.prototype.connect_ = function () {
|
10670
|
-
// Do nothing if running in a non-browser environment or if listeners
|
10671
|
-
// have been already added.
|
10672
|
-
if (!isBrowser || this.connected_) {
|
10673
|
-
return;
|
10674
|
-
}
|
10675
|
-
// Subscription to the "Transitionend" event is used as a workaround for
|
10676
|
-
// delayed transitions. This way it's possible to capture at least the
|
10677
|
-
// final state of an element.
|
10678
|
-
document.addEventListener('transitionend', this.onTransitionEnd_);
|
10679
|
-
window.addEventListener('resize', this.refresh);
|
10680
|
-
if (mutationObserverSupported) {
|
10681
|
-
this.mutationsObserver_ = new MutationObserver(this.refresh);
|
10682
|
-
this.mutationsObserver_.observe(document, {
|
10683
|
-
attributes: true,
|
10684
|
-
childList: true,
|
10685
|
-
characterData: true,
|
10686
|
-
subtree: true
|
10687
|
-
});
|
10688
|
-
}
|
10689
|
-
else {
|
10690
|
-
document.addEventListener('DOMSubtreeModified', this.refresh);
|
10691
|
-
this.mutationEventsAdded_ = true;
|
10692
|
-
}
|
10693
|
-
this.connected_ = true;
|
10694
|
-
};
|
10695
|
-
/**
|
10696
|
-
* Removes DOM listeners.
|
10697
|
-
*
|
10698
|
-
* @private
|
10699
|
-
* @returns {void}
|
10700
|
-
*/
|
10701
|
-
ResizeObserverController.prototype.disconnect_ = function () {
|
10702
|
-
// Do nothing if running in a non-browser environment or if listeners
|
10703
|
-
// have been already removed.
|
10704
|
-
if (!isBrowser || !this.connected_) {
|
10705
|
-
return;
|
10706
|
-
}
|
10707
|
-
document.removeEventListener('transitionend', this.onTransitionEnd_);
|
10708
|
-
window.removeEventListener('resize', this.refresh);
|
10709
|
-
if (this.mutationsObserver_) {
|
10710
|
-
this.mutationsObserver_.disconnect();
|
10711
|
-
}
|
10712
|
-
if (this.mutationEventsAdded_) {
|
10713
|
-
document.removeEventListener('DOMSubtreeModified', this.refresh);
|
10714
|
-
}
|
10715
|
-
this.mutationsObserver_ = null;
|
10716
|
-
this.mutationEventsAdded_ = false;
|
10717
|
-
this.connected_ = false;
|
10718
|
-
};
|
10719
|
-
/**
|
10720
|
-
* "Transitionend" event handler.
|
10721
|
-
*
|
10722
|
-
* @private
|
10723
|
-
* @param {TransitionEvent} event
|
10724
|
-
* @returns {void}
|
10725
|
-
*/
|
10726
|
-
ResizeObserverController.prototype.onTransitionEnd_ = function (_a) {
|
10727
|
-
var _b = _a.propertyName, propertyName = _b === void 0 ? '' : _b;
|
10728
|
-
// Detect whether transition may affect dimensions of an element.
|
10729
|
-
var isReflowProperty = transitionKeys.some(function (key) {
|
10730
|
-
return !!~propertyName.indexOf(key);
|
10731
|
-
});
|
10732
|
-
if (isReflowProperty) {
|
10733
|
-
this.refresh();
|
10734
|
-
}
|
10735
|
-
};
|
10736
|
-
/**
|
10737
|
-
* Returns instance of the ResizeObserverController.
|
10738
|
-
*
|
10739
|
-
* @returns {ResizeObserverController}
|
10740
|
-
*/
|
10741
|
-
ResizeObserverController.getInstance = function () {
|
10742
|
-
if (!this.instance_) {
|
10743
|
-
this.instance_ = new ResizeObserverController();
|
10744
|
-
}
|
10745
|
-
return this.instance_;
|
10746
|
-
};
|
10747
|
-
/**
|
10748
|
-
* Holds reference to the controller's instance.
|
10749
|
-
*
|
10750
|
-
* @private {ResizeObserverController}
|
10751
|
-
*/
|
10752
|
-
ResizeObserverController.instance_ = null;
|
10753
|
-
return ResizeObserverController;
|
10754
|
-
}());
|
10755
|
-
|
10756
|
-
/**
|
10757
|
-
* Defines non-writable/enumerable properties of the provided target object.
|
10758
|
-
*
|
10759
|
-
* @param {Object} target - Object for which to define properties.
|
10760
|
-
* @param {Object} props - Properties to be defined.
|
10761
|
-
* @returns {Object} Target object.
|
10762
|
-
*/
|
10763
|
-
var defineConfigurable = (function (target, props) {
|
10764
|
-
for (var _i = 0, _a = Object.keys(props); _i < _a.length; _i++) {
|
10765
|
-
var key = _a[_i];
|
10766
|
-
Object.defineProperty(target, key, {
|
10767
|
-
value: props[key],
|
10768
|
-
enumerable: false,
|
10769
|
-
writable: false,
|
10770
|
-
configurable: true
|
10771
|
-
});
|
10772
|
-
}
|
10773
|
-
return target;
|
10774
|
-
});
|
10775
|
-
|
10776
|
-
/**
|
10777
|
-
* Returns the global object associated with provided element.
|
10778
|
-
*
|
10779
|
-
* @param {Object} target
|
10780
|
-
* @returns {Object}
|
10781
|
-
*/
|
10782
|
-
var getWindowOf = (function (target) {
|
10783
|
-
// Assume that the element is an instance of Node, which means that it
|
10784
|
-
// has the "ownerDocument" property from which we can retrieve a
|
10785
|
-
// corresponding global object.
|
10786
|
-
var ownerGlobal = target && target.ownerDocument && target.ownerDocument.defaultView;
|
10787
|
-
// Return the local global object if it's not possible extract one from
|
10788
|
-
// provided element.
|
10789
|
-
return ownerGlobal || global$1;
|
10790
|
-
});
|
10791
|
-
|
10792
|
-
// Placeholder of an empty content rectangle.
|
10793
|
-
var emptyRect = createRectInit(0, 0, 0, 0);
|
10794
|
-
/**
|
10795
|
-
* Converts provided string to a number.
|
10796
|
-
*
|
10797
|
-
* @param {number|string} value
|
10798
|
-
* @returns {number}
|
10799
|
-
*/
|
10800
|
-
function toFloat(value) {
|
10801
|
-
return parseFloat(value) || 0;
|
10802
|
-
}
|
10803
|
-
/**
|
10804
|
-
* Extracts borders size from provided styles.
|
10805
|
-
*
|
10806
|
-
* @param {CSSStyleDeclaration} styles
|
10807
|
-
* @param {...string} positions - Borders positions (top, right, ...)
|
10808
|
-
* @returns {number}
|
10809
|
-
*/
|
10810
|
-
function getBordersSize(styles) {
|
10811
|
-
var positions = [];
|
10812
|
-
for (var _i = 1; _i < arguments.length; _i++) {
|
10813
|
-
positions[_i - 1] = arguments[_i];
|
10814
|
-
}
|
10815
|
-
return positions.reduce(function (size, position) {
|
10816
|
-
var value = styles['border-' + position + '-width'];
|
10817
|
-
return size + toFloat(value);
|
10818
|
-
}, 0);
|
10819
|
-
}
|
10820
|
-
/**
|
10821
|
-
* Extracts paddings sizes from provided styles.
|
10822
|
-
*
|
10823
|
-
* @param {CSSStyleDeclaration} styles
|
10824
|
-
* @returns {Object} Paddings box.
|
10825
|
-
*/
|
10826
|
-
function getPaddings(styles) {
|
10827
|
-
var positions = ['top', 'right', 'bottom', 'left'];
|
10828
|
-
var paddings = {};
|
10829
|
-
for (var _i = 0, positions_1 = positions; _i < positions_1.length; _i++) {
|
10830
|
-
var position = positions_1[_i];
|
10831
|
-
var value = styles['padding-' + position];
|
10832
|
-
paddings[position] = toFloat(value);
|
10833
|
-
}
|
10834
|
-
return paddings;
|
10835
|
-
}
|
10836
|
-
/**
|
10837
|
-
* Calculates content rectangle of provided SVG element.
|
10838
|
-
*
|
10839
|
-
* @param {SVGGraphicsElement} target - Element content rectangle of which needs
|
10840
|
-
* to be calculated.
|
10841
|
-
* @returns {DOMRectInit}
|
10842
|
-
*/
|
10843
|
-
function getSVGContentRect(target) {
|
10844
|
-
var bbox = target.getBBox();
|
10845
|
-
return createRectInit(0, 0, bbox.width, bbox.height);
|
10846
|
-
}
|
10847
|
-
/**
|
10848
|
-
* Calculates content rectangle of provided HTMLElement.
|
10849
|
-
*
|
10850
|
-
* @param {HTMLElement} target - Element for which to calculate the content rectangle.
|
10851
|
-
* @returns {DOMRectInit}
|
10852
|
-
*/
|
10853
|
-
function getHTMLElementContentRect(target) {
|
10854
|
-
// Client width & height properties can't be
|
10855
|
-
// used exclusively as they provide rounded values.
|
10856
|
-
var clientWidth = target.clientWidth, clientHeight = target.clientHeight;
|
10857
|
-
// By this condition we can catch all non-replaced inline, hidden and
|
10858
|
-
// detached elements. Though elements with width & height properties less
|
10859
|
-
// than 0.5 will be discarded as well.
|
10860
|
-
//
|
10861
|
-
// Without it we would need to implement separate methods for each of
|
10862
|
-
// those cases and it's not possible to perform a precise and performance
|
10863
|
-
// effective test for hidden elements. E.g. even jQuery's ':visible' filter
|
10864
|
-
// gives wrong results for elements with width & height less than 0.5.
|
10865
|
-
if (!clientWidth && !clientHeight) {
|
10866
|
-
return emptyRect;
|
10867
|
-
}
|
10868
|
-
var styles = getWindowOf(target).getComputedStyle(target);
|
10869
|
-
var paddings = getPaddings(styles);
|
10870
|
-
var horizPad = paddings.left + paddings.right;
|
10871
|
-
var vertPad = paddings.top + paddings.bottom;
|
10872
|
-
// Computed styles of width & height are being used because they are the
|
10873
|
-
// only dimensions available to JS that contain non-rounded values. It could
|
10874
|
-
// be possible to utilize the getBoundingClientRect if only it's data wasn't
|
10875
|
-
// affected by CSS transformations let alone paddings, borders and scroll bars.
|
10876
|
-
var width = toFloat(styles.width), height = toFloat(styles.height);
|
10877
|
-
// Width & height include paddings and borders when the 'border-box' box
|
10878
|
-
// model is applied (except for IE).
|
10879
|
-
if (styles.boxSizing === 'border-box') {
|
10880
|
-
// Following conditions are required to handle Internet Explorer which
|
10881
|
-
// doesn't include paddings and borders to computed CSS dimensions.
|
10882
|
-
//
|
10883
|
-
// We can say that if CSS dimensions + paddings are equal to the "client"
|
10884
|
-
// properties then it's either IE, and thus we don't need to subtract
|
10885
|
-
// anything, or an element merely doesn't have paddings/borders styles.
|
10886
|
-
if (Math.round(width + horizPad) !== clientWidth) {
|
10887
|
-
width -= getBordersSize(styles, 'left', 'right') + horizPad;
|
10888
|
-
}
|
10889
|
-
if (Math.round(height + vertPad) !== clientHeight) {
|
10890
|
-
height -= getBordersSize(styles, 'top', 'bottom') + vertPad;
|
10891
|
-
}
|
10892
|
-
}
|
10893
|
-
// Following steps can't be applied to the document's root element as its
|
10894
|
-
// client[Width/Height] properties represent viewport area of the window.
|
10895
|
-
// Besides, it's as well not necessary as the <html> itself neither has
|
10896
|
-
// rendered scroll bars nor it can be clipped.
|
10897
|
-
if (!isDocumentElement(target)) {
|
10898
|
-
// In some browsers (only in Firefox, actually) CSS width & height
|
10899
|
-
// include scroll bars size which can be removed at this step as scroll
|
10900
|
-
// bars are the only difference between rounded dimensions + paddings
|
10901
|
-
// and "client" properties, though that is not always true in Chrome.
|
10902
|
-
var vertScrollbar = Math.round(width + horizPad) - clientWidth;
|
10903
|
-
var horizScrollbar = Math.round(height + vertPad) - clientHeight;
|
10904
|
-
// Chrome has a rather weird rounding of "client" properties.
|
10905
|
-
// E.g. for an element with content width of 314.2px it sometimes gives
|
10906
|
-
// the client width of 315px and for the width of 314.7px it may give
|
10907
|
-
// 314px. And it doesn't happen all the time. So just ignore this delta
|
10908
|
-
// as a non-relevant.
|
10909
|
-
if (Math.abs(vertScrollbar) !== 1) {
|
10910
|
-
width -= vertScrollbar;
|
10911
|
-
}
|
10912
|
-
if (Math.abs(horizScrollbar) !== 1) {
|
10913
|
-
height -= horizScrollbar;
|
10914
|
-
}
|
10915
|
-
}
|
10916
|
-
return createRectInit(paddings.left, paddings.top, width, height);
|
10917
|
-
}
|
10918
|
-
/**
|
10919
|
-
* Checks whether provided element is an instance of the SVGGraphicsElement.
|
10920
|
-
*
|
10921
|
-
* @param {Element} target - Element to be checked.
|
10922
|
-
* @returns {boolean}
|
10923
|
-
*/
|
10924
|
-
var isSVGGraphicsElement = (function () {
|
10925
|
-
// Some browsers, namely IE and Edge, don't have the SVGGraphicsElement
|
10926
|
-
// interface.
|
10927
|
-
if (typeof SVGGraphicsElement !== 'undefined') {
|
10928
|
-
return function (target) { return target instanceof getWindowOf(target).SVGGraphicsElement; };
|
10929
|
-
}
|
10930
|
-
// If it's so, then check that element is at least an instance of the
|
10931
|
-
// SVGElement and that it has the "getBBox" method.
|
10932
|
-
// eslint-disable-next-line no-extra-parens
|
10933
|
-
return function (target) { return (target instanceof getWindowOf(target).SVGElement &&
|
10934
|
-
typeof target.getBBox === 'function'); };
|
10935
|
-
})();
|
10936
|
-
/**
|
10937
|
-
* Checks whether provided element is a document element (<html>).
|
10938
|
-
*
|
10939
|
-
* @param {Element} target - Element to be checked.
|
10940
|
-
* @returns {boolean}
|
10941
|
-
*/
|
10942
|
-
function isDocumentElement(target) {
|
10943
|
-
return target === getWindowOf(target).document.documentElement;
|
10944
|
-
}
|
10945
|
-
/**
|
10946
|
-
* Calculates an appropriate content rectangle for provided html or svg element.
|
10947
|
-
*
|
10948
|
-
* @param {Element} target - Element content rectangle of which needs to be calculated.
|
10949
|
-
* @returns {DOMRectInit}
|
10950
|
-
*/
|
10951
|
-
function getContentRect(target) {
|
10952
|
-
if (!isBrowser) {
|
10953
|
-
return emptyRect;
|
10954
|
-
}
|
10955
|
-
if (isSVGGraphicsElement(target)) {
|
10956
|
-
return getSVGContentRect(target);
|
10957
|
-
}
|
10958
|
-
return getHTMLElementContentRect(target);
|
10959
|
-
}
|
10960
|
-
/**
|
10961
|
-
* Creates rectangle with an interface of the DOMRectReadOnly.
|
10962
|
-
* Spec: https://drafts.fxtf.org/geometry/#domrectreadonly
|
10963
|
-
*
|
10964
|
-
* @param {DOMRectInit} rectInit - Object with rectangle's x/y coordinates and dimensions.
|
10965
|
-
* @returns {DOMRectReadOnly}
|
10966
|
-
*/
|
10967
|
-
function createReadOnlyRect(_a) {
|
10968
|
-
var x = _a.x, y = _a.y, width = _a.width, height = _a.height;
|
10969
|
-
// If DOMRectReadOnly is available use it as a prototype for the rectangle.
|
10970
|
-
var Constr = typeof DOMRectReadOnly !== 'undefined' ? DOMRectReadOnly : Object;
|
10971
|
-
var rect = Object.create(Constr.prototype);
|
10972
|
-
// Rectangle's properties are not writable and non-enumerable.
|
10973
|
-
defineConfigurable(rect, {
|
10974
|
-
x: x, y: y, width: width, height: height,
|
10975
|
-
top: y,
|
10976
|
-
right: x + width,
|
10977
|
-
bottom: height + y,
|
10978
|
-
left: x
|
10979
|
-
});
|
10980
|
-
return rect;
|
10981
|
-
}
|
10982
|
-
/**
|
10983
|
-
* Creates DOMRectInit object based on the provided dimensions and the x/y coordinates.
|
10984
|
-
* Spec: https://drafts.fxtf.org/geometry/#dictdef-domrectinit
|
10985
|
-
*
|
10986
|
-
* @param {number} x - X coordinate.
|
10987
|
-
* @param {number} y - Y coordinate.
|
10988
|
-
* @param {number} width - Rectangle's width.
|
10989
|
-
* @param {number} height - Rectangle's height.
|
10990
|
-
* @returns {DOMRectInit}
|
10991
|
-
*/
|
10992
|
-
function createRectInit(x, y, width, height) {
|
10993
|
-
return { x: x, y: y, width: width, height: height };
|
10994
|
-
}
|
10995
|
-
|
10996
|
-
/**
|
10997
|
-
* Class that is responsible for computations of the content rectangle of
|
10998
|
-
* provided DOM element and for keeping track of it's changes.
|
10999
|
-
*/
|
11000
|
-
var ResizeObservation = /** @class */ (function () {
|
11001
|
-
/**
|
11002
|
-
* Creates an instance of ResizeObservation.
|
11003
|
-
*
|
11004
|
-
* @param {Element} target - Element to be observed.
|
11005
|
-
*/
|
11006
|
-
function ResizeObservation(target) {
|
11007
|
-
/**
|
11008
|
-
* Broadcasted width of content rectangle.
|
11009
|
-
*
|
11010
|
-
* @type {number}
|
11011
|
-
*/
|
11012
|
-
this.broadcastWidth = 0;
|
11013
|
-
/**
|
11014
|
-
* Broadcasted height of content rectangle.
|
11015
|
-
*
|
11016
|
-
* @type {number}
|
11017
|
-
*/
|
11018
|
-
this.broadcastHeight = 0;
|
11019
|
-
/**
|
11020
|
-
* Reference to the last observed content rectangle.
|
11021
|
-
*
|
11022
|
-
* @private {DOMRectInit}
|
11023
|
-
*/
|
11024
|
-
this.contentRect_ = createRectInit(0, 0, 0, 0);
|
11025
|
-
this.target = target;
|
11026
|
-
}
|
11027
|
-
/**
|
11028
|
-
* Updates content rectangle and tells whether it's width or height properties
|
11029
|
-
* have changed since the last broadcast.
|
11030
|
-
*
|
11031
|
-
* @returns {boolean}
|
11032
|
-
*/
|
11033
|
-
ResizeObservation.prototype.isActive = function () {
|
11034
|
-
var rect = getContentRect(this.target);
|
11035
|
-
this.contentRect_ = rect;
|
11036
|
-
return (rect.width !== this.broadcastWidth ||
|
11037
|
-
rect.height !== this.broadcastHeight);
|
11038
|
-
};
|
11039
|
-
/**
|
11040
|
-
* Updates 'broadcastWidth' and 'broadcastHeight' properties with a data
|
11041
|
-
* from the corresponding properties of the last observed content rectangle.
|
11042
|
-
*
|
11043
|
-
* @returns {DOMRectInit} Last observed content rectangle.
|
11044
|
-
*/
|
11045
|
-
ResizeObservation.prototype.broadcastRect = function () {
|
11046
|
-
var rect = this.contentRect_;
|
11047
|
-
this.broadcastWidth = rect.width;
|
11048
|
-
this.broadcastHeight = rect.height;
|
11049
|
-
return rect;
|
11050
|
-
};
|
11051
|
-
return ResizeObservation;
|
11052
|
-
}());
|
11053
|
-
|
11054
|
-
var ResizeObserverEntry = /** @class */ (function () {
|
11055
|
-
/**
|
11056
|
-
* Creates an instance of ResizeObserverEntry.
|
11057
|
-
*
|
11058
|
-
* @param {Element} target - Element that is being observed.
|
11059
|
-
* @param {DOMRectInit} rectInit - Data of the element's content rectangle.
|
11060
|
-
*/
|
11061
|
-
function ResizeObserverEntry(target, rectInit) {
|
11062
|
-
var contentRect = createReadOnlyRect(rectInit);
|
11063
|
-
// According to the specification following properties are not writable
|
11064
|
-
// and are also not enumerable in the native implementation.
|
11065
|
-
//
|
11066
|
-
// Property accessors are not being used as they'd require to define a
|
11067
|
-
// private WeakMap storage which may cause memory leaks in browsers that
|
11068
|
-
// don't support this type of collections.
|
11069
|
-
defineConfigurable(this, { target: target, contentRect: contentRect });
|
11070
|
-
}
|
11071
|
-
return ResizeObserverEntry;
|
11072
|
-
}());
|
11073
|
-
|
11074
|
-
var ResizeObserverSPI = /** @class */ (function () {
|
11075
|
-
/**
|
11076
|
-
* Creates a new instance of ResizeObserver.
|
11077
|
-
*
|
11078
|
-
* @param {ResizeObserverCallback} callback - Callback function that is invoked
|
11079
|
-
* when one of the observed elements changes it's content dimensions.
|
11080
|
-
* @param {ResizeObserverController} controller - Controller instance which
|
11081
|
-
* is responsible for the updates of observer.
|
11082
|
-
* @param {ResizeObserver} callbackCtx - Reference to the public
|
11083
|
-
* ResizeObserver instance which will be passed to callback function.
|
11084
|
-
*/
|
11085
|
-
function ResizeObserverSPI(callback, controller, callbackCtx) {
|
11086
|
-
/**
|
11087
|
-
* Collection of resize observations that have detected changes in dimensions
|
11088
|
-
* of elements.
|
11089
|
-
*
|
11090
|
-
* @private {Array<ResizeObservation>}
|
11091
|
-
*/
|
11092
|
-
this.activeObservations_ = [];
|
11093
|
-
/**
|
11094
|
-
* Registry of the ResizeObservation instances.
|
11095
|
-
*
|
11096
|
-
* @private {Map<Element, ResizeObservation>}
|
11097
|
-
*/
|
11098
|
-
this.observations_ = new MapShim();
|
11099
|
-
if (typeof callback !== 'function') {
|
11100
|
-
throw new TypeError('The callback provided as parameter 1 is not a function.');
|
11101
|
-
}
|
11102
|
-
this.callback_ = callback;
|
11103
|
-
this.controller_ = controller;
|
11104
|
-
this.callbackCtx_ = callbackCtx;
|
11105
|
-
}
|
11106
|
-
/**
|
11107
|
-
* Starts observing provided element.
|
11108
|
-
*
|
11109
|
-
* @param {Element} target - Element to be observed.
|
11110
|
-
* @returns {void}
|
11111
|
-
*/
|
11112
|
-
ResizeObserverSPI.prototype.observe = function (target) {
|
11113
|
-
if (!arguments.length) {
|
11114
|
-
throw new TypeError('1 argument required, but only 0 present.');
|
11115
|
-
}
|
11116
|
-
// Do nothing if current environment doesn't have the Element interface.
|
11117
|
-
if (typeof Element === 'undefined' || !(Element instanceof Object)) {
|
11118
|
-
return;
|
11119
|
-
}
|
11120
|
-
if (!(target instanceof getWindowOf(target).Element)) {
|
11121
|
-
throw new TypeError('parameter 1 is not of type "Element".');
|
11122
|
-
}
|
11123
|
-
var observations = this.observations_;
|
11124
|
-
// Do nothing if element is already being observed.
|
11125
|
-
if (observations.has(target)) {
|
11126
|
-
return;
|
11127
|
-
}
|
11128
|
-
observations.set(target, new ResizeObservation(target));
|
11129
|
-
this.controller_.addObserver(this);
|
11130
|
-
// Force the update of observations.
|
11131
|
-
this.controller_.refresh();
|
11132
|
-
};
|
11133
|
-
/**
|
11134
|
-
* Stops observing provided element.
|
11135
|
-
*
|
11136
|
-
* @param {Element} target - Element to stop observing.
|
11137
|
-
* @returns {void}
|
11138
|
-
*/
|
11139
|
-
ResizeObserverSPI.prototype.unobserve = function (target) {
|
11140
|
-
if (!arguments.length) {
|
11141
|
-
throw new TypeError('1 argument required, but only 0 present.');
|
11142
|
-
}
|
11143
|
-
// Do nothing if current environment doesn't have the Element interface.
|
11144
|
-
if (typeof Element === 'undefined' || !(Element instanceof Object)) {
|
11145
|
-
return;
|
11146
|
-
}
|
11147
|
-
if (!(target instanceof getWindowOf(target).Element)) {
|
11148
|
-
throw new TypeError('parameter 1 is not of type "Element".');
|
11149
|
-
}
|
11150
|
-
var observations = this.observations_;
|
11151
|
-
// Do nothing if element is not being observed.
|
11152
|
-
if (!observations.has(target)) {
|
11153
|
-
return;
|
11154
|
-
}
|
11155
|
-
observations.delete(target);
|
11156
|
-
if (!observations.size) {
|
11157
|
-
this.controller_.removeObserver(this);
|
11158
|
-
}
|
11159
|
-
};
|
11160
|
-
/**
|
11161
|
-
* Stops observing all elements.
|
11162
|
-
*
|
11163
|
-
* @returns {void}
|
11164
|
-
*/
|
11165
|
-
ResizeObserverSPI.prototype.disconnect = function () {
|
11166
|
-
this.clearActive();
|
11167
|
-
this.observations_.clear();
|
11168
|
-
this.controller_.removeObserver(this);
|
11169
|
-
};
|
11170
|
-
/**
|
11171
|
-
* Collects observation instances the associated element of which has changed
|
11172
|
-
* it's content rectangle.
|
11173
|
-
*
|
11174
|
-
* @returns {void}
|
11175
|
-
*/
|
11176
|
-
ResizeObserverSPI.prototype.gatherActive = function () {
|
11177
|
-
var _this = this;
|
11178
|
-
this.clearActive();
|
11179
|
-
this.observations_.forEach(function (observation) {
|
11180
|
-
if (observation.isActive()) {
|
11181
|
-
_this.activeObservations_.push(observation);
|
11182
|
-
}
|
11183
|
-
});
|
11184
|
-
};
|
11185
|
-
/**
|
11186
|
-
* Invokes initial callback function with a list of ResizeObserverEntry
|
11187
|
-
* instances collected from active resize observations.
|
11188
|
-
*
|
11189
|
-
* @returns {void}
|
11190
|
-
*/
|
11191
|
-
ResizeObserverSPI.prototype.broadcastActive = function () {
|
11192
|
-
// Do nothing if observer doesn't have active observations.
|
11193
|
-
if (!this.hasActive()) {
|
11194
|
-
return;
|
11195
|
-
}
|
11196
|
-
var ctx = this.callbackCtx_;
|
11197
|
-
// Create ResizeObserverEntry instance for every active observation.
|
11198
|
-
var entries = this.activeObservations_.map(function (observation) {
|
11199
|
-
return new ResizeObserverEntry(observation.target, observation.broadcastRect());
|
11200
|
-
});
|
11201
|
-
this.callback_.call(ctx, entries, ctx);
|
11202
|
-
this.clearActive();
|
11203
|
-
};
|
11204
|
-
/**
|
11205
|
-
* Clears the collection of active observations.
|
11206
|
-
*
|
11207
|
-
* @returns {void}
|
11208
|
-
*/
|
11209
|
-
ResizeObserverSPI.prototype.clearActive = function () {
|
11210
|
-
this.activeObservations_.splice(0);
|
11211
|
-
};
|
11212
|
-
/**
|
11213
|
-
* Tells whether observer has active observations.
|
11214
|
-
*
|
11215
|
-
* @returns {boolean}
|
11216
|
-
*/
|
11217
|
-
ResizeObserverSPI.prototype.hasActive = function () {
|
11218
|
-
return this.activeObservations_.length > 0;
|
11219
|
-
};
|
11220
|
-
return ResizeObserverSPI;
|
11221
|
-
}());
|
11222
|
-
|
11223
|
-
// Registry of internal observers. If WeakMap is not available use current shim
|
11224
|
-
// for the Map collection as it has all required methods and because WeakMap
|
11225
|
-
// can't be fully polyfilled anyway.
|
11226
|
-
var observers = typeof WeakMap !== 'undefined' ? new WeakMap() : new MapShim();
|
11227
|
-
/**
|
11228
|
-
* ResizeObserver API. Encapsulates the ResizeObserver SPI implementation
|
11229
|
-
* exposing only those methods and properties that are defined in the spec.
|
11230
|
-
*/
|
11231
|
-
var ResizeObserver$1 = /** @class */ (function () {
|
11232
|
-
/**
|
11233
|
-
* Creates a new instance of ResizeObserver.
|
11234
|
-
*
|
11235
|
-
* @param {ResizeObserverCallback} callback - Callback that is invoked when
|
11236
|
-
* dimensions of the observed elements change.
|
11237
|
-
*/
|
11238
|
-
function ResizeObserver(callback) {
|
11239
|
-
if (!(this instanceof ResizeObserver)) {
|
11240
|
-
throw new TypeError('Cannot call a class as a function.');
|
11241
|
-
}
|
11242
|
-
if (!arguments.length) {
|
11243
|
-
throw new TypeError('1 argument required, but only 0 present.');
|
11244
|
-
}
|
11245
|
-
var controller = ResizeObserverController.getInstance();
|
11246
|
-
var observer = new ResizeObserverSPI(callback, controller, this);
|
11247
|
-
observers.set(this, observer);
|
11248
|
-
}
|
11249
|
-
return ResizeObserver;
|
11250
|
-
}());
|
11251
|
-
// Expose public methods of ResizeObserver.
|
11252
|
-
[
|
11253
|
-
'observe',
|
11254
|
-
'unobserve',
|
11255
|
-
'disconnect'
|
11256
|
-
].forEach(function (method) {
|
11257
|
-
ResizeObserver$1.prototype[method] = function () {
|
11258
|
-
var _a;
|
11259
|
-
return (_a = observers.get(this))[method].apply(_a, arguments);
|
11260
|
-
};
|
11261
|
-
});
|
11262
|
-
|
11263
|
-
var index$2 = (function () {
|
11264
|
-
// Export existing implementation if available.
|
11265
|
-
if (typeof global$1.ResizeObserver !== 'undefined') {
|
11266
|
-
return global$1.ResizeObserver;
|
11267
|
-
}
|
11268
|
-
return ResizeObserver$1;
|
11269
|
-
})();
|
11270
|
-
|
11271
10348
|
const detailsCss = ":host{-webkit-box-sizing:border-box;box-sizing:border-box}*,*::before,*::after{-webkit-box-sizing:border-box;box-sizing:border-box}[hidden]{display:none !important}:host{font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;letter-spacing:inherit;text-decoration:inherit;text-overflow:inherit;text-transform:inherit;text-align:inherit;white-space:inherit;color:inherit;--padding:1em;--btn-padding:var(--padding);--btn-bg-color:var(--nano-color-contrast, #dad6d3);--btn-bg-color--open:var(--nano-color-base, #dad6d3);--btn-bg-color--hover:var(--nano-color-tint, #f9f9fb);--btn-text-color:var(--nano-color-base, #455556);--btn-text-color--open:var(--nano-color-contrast, var(--btn-text-color));--btn-text-color--hover:var(--nano-color-contrast, var(--btn-text-color));--content-bg-color:transparent;--content-text-color:#455556;--content-transition:height 0.2s ease-out;--border-width:none;--border-color:none;--border-style:none;--border-radius:none;--box-shadow:none;--focus-style:var(--nano-control-focus-shadow, 0 0 0 0.1875rem var(--nano-control-focus-color, rgba(144, 198, 231, 0.8)));display:block;border-style:var(--border-style);border-width:var(--border-width-dims);border-color:var(--border-color);border-radius:var(--border-radius-dims);-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow)}:host(:last-of-type){--border-width-dims:0 var(--border-width) var(--border-width);--border-radius-dims:0 0 var(--border-radius) var(--border-radius)}:host(:last-of-type) .open .content{border-radius:0 0 var(--border-radius) var(--border-radius)}:host(:first-of-type){--border-radius-dims:var(--border-radius) var(--border-radius) 0 0;--border-width-dims:var(--border-width)}:host(:first-of-type:last-of-type){--border-radius-dims:var(--border-radius);--border-width-dims:var(--border-width)}:host(:not(:last-of-type):not(:first-of-type)){--border-width-dims:0 var(--border-width) var(--border-width)}:host(.nano-color){--btn-bg-color:var(--nano-color-contrast, var(--nano-color-primary-contrast, #fff));--btn-bg-color--open:var(--nano-color-base, var(--nano-color-primary, #007495));--btn-bg-color--hover:var(--nano-color-tint, var(--nano-color-primary-tint, #2689a5));--btn-text-color:var(--nano-color-base, var(--nano-color-primary, #007495));--btn-text-color--open:var(\n --nano-color-contrast,\n var(--nano-color-primary-contrast, #fff)\n );--btn-text-color--hover:var(\n --nano-color-contrast,\n var(--nano-color-primary-contrast, #fff)\n )}button{left:0;top:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;position:absolute;width:100%;height:100%;border:0;background:transparent;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;outline:none;padding:var(--btn-padding);text-align:inherit;position:relative;font-size:1em;margin:0;-webkit-transition:0.3s ease background, 0.3s ease color, 0.15s ease box-shadow;transition:0.3s ease background, 0.3s ease color, 0.15s ease box-shadow;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background:var(--btn-bg-color);color:var(--btn-text-color);border-radius:var(--border-radius-dims)}button[dir=rtl]{left:unset;right:unset;right:0}button::-moz-focus-inner{border:0}button:focus{-webkit-box-shadow:var(--focus-style);box-shadow:var(--focus-style);outline:none;position:relative;z-index:1}:hover button{background:var(--btn-bg-color--hover);color:var(--btn-text-color--hover)}.open button{background:var(--btn-bg-color--open);color:var(--btn-text-color--open);border-bottom-right-radius:0;border-bottom-left-radius:0}button .label{width:100%;max-width:100%;max-height:100%;-webkit-box-flex:1;-ms-flex:1;flex:1;display:inline-block}button .icon{line-height:0;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;display:inline-block;color:currentColor;-webkit-transition:0.3s ease transform;transition:0.3s ease transform;-webkit-transform-origin:center;transform-origin:center}button .icon--start{margin-left:0;margin-right:var(--padding);margin-top:0;margin-bottom:0}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){button .icon--start{margin-left:unset;margin-right:unset;-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:var(--padding);margin-inline-end:var(--padding)}}button .icon--end{margin-left:var(--padding);margin-right:0;margin-top:0;margin-bottom:0}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){button .icon--end{margin-left:unset;margin-right:unset;-webkit-margin-start:var(--padding);margin-inline-start:var(--padding);-webkit-margin-end:0;margin-inline-end:0}}button .icon ::slotted(nano-icon){--color:\"currentColor\"}.content{color:var(--content-text-color);background:var(--content-bg-color);height:0;overflow:hidden;-webkit-transition:0.2s ease border-radius;transition:0.2s ease border-radius;outline:none}.loaded .content{-webkit-transition:var(--content-transition), 0.2s ease border-radius;transition:var(--content-transition), 0.2s ease border-radius}.content>*{opacity:0;-webkit-transition:opacity 0.2s ease-out;transition:opacity 0.2s ease-out}.open .content>*{opacity:1}.content__area{padding:var(--padding)}";
|
11272
10349
|
|
11273
10350
|
let Details = class extends H {
|
@@ -11347,7 +10424,7 @@ let Details = class extends H {
|
|
11347
10424
|
attachRO() {
|
11348
10425
|
if (this.ro || !this.contentArea)
|
11349
10426
|
return;
|
11350
|
-
const ro = (this.ro = new
|
10427
|
+
const ro = (this.ro = new ResizeObserver(() => this.resize()));
|
11351
10428
|
ro.observe(this.contentArea);
|
11352
10429
|
}
|
11353
10430
|
componentWillLoad() {
|
@@ -16106,7 +15183,7 @@ let GlobalSearchResults = class extends H {
|
|
16106
15183
|
setTimeout(() => this.openFilterBtn.focus(), 20);
|
16107
15184
|
}
|
16108
15185
|
componentDidLoad() {
|
16109
|
-
this.ro = new
|
15186
|
+
this.ro = new ResizeObserver((entries) => {
|
16110
15187
|
for (const entry of entries) {
|
16111
15188
|
if (!entry.contentRect.width)
|
16112
15189
|
return;
|
@@ -16726,7 +15803,7 @@ let Grid = class extends H {
|
|
16726
15803
|
});
|
16727
15804
|
}
|
16728
15805
|
componentDidLoad() {
|
16729
|
-
this.ro = new
|
15806
|
+
this.ro = new ResizeObserver((entries) => {
|
16730
15807
|
for (const entry of entries) {
|
16731
15808
|
if (!entry.contentRect.width)
|
16732
15809
|
return;
|
@@ -17216,6 +16293,10 @@ let IconButton = class extends H {
|
|
17216
16293
|
/** Set to true to disable the button. */
|
17217
16294
|
this.disabled = false;
|
17218
16295
|
}
|
16296
|
+
/** Sets focus on the internal button */
|
16297
|
+
async setFocus() {
|
16298
|
+
this.button.focus();
|
16299
|
+
}
|
17219
16300
|
componentDidLoad() {
|
17220
16301
|
focusVisible.observe(this.button);
|
17221
16302
|
}
|
@@ -19294,7 +18375,7 @@ let ResizeObserve = class extends H {
|
|
19294
18375
|
return retObj;
|
19295
18376
|
}
|
19296
18377
|
attachRO() {
|
19297
|
-
this.ro = new
|
18378
|
+
this.ro = new ResizeObserver((entries) => {
|
19298
18379
|
for (const entry of entries) {
|
19299
18380
|
this.currentWidth = entry.contentRect.width;
|
19300
18381
|
this.currentHeight = entry.contentRect.height;
|
@@ -24154,7 +23235,7 @@ let Slides = class extends H {
|
|
24154
23235
|
// the slideshow has been initialised without any dimensions - let's add a one show
|
24155
23236
|
// resize observer to kick it off when it gets some dimensions
|
24156
23237
|
if (!this.host.getBoundingClientRect().height) {
|
24157
|
-
const ro = (this.resizeO = new
|
23238
|
+
const ro = (this.resizeO = new ResizeObserver(() => {
|
24158
23239
|
flick.resize();
|
24159
23240
|
this.resizeO.disconnect();
|
24160
23241
|
}));
|
@@ -24647,7 +23728,7 @@ let Sticker = class extends H {
|
|
24647
23728
|
this.parentSizeObserver.disconnect();
|
24648
23729
|
this.parentSizeObserver = undefined;
|
24649
23730
|
}
|
24650
|
-
this.parentSizeObserver = new
|
23731
|
+
this.parentSizeObserver = new ResizeObserver((entries) => {
|
24651
23732
|
for (const entry of entries) {
|
24652
23733
|
let height, width;
|
24653
23734
|
if (entry.contentRect.height)
|
@@ -24827,7 +23908,7 @@ let Sticker = class extends H {
|
|
24827
23908
|
this.contentSizeObserver.disconnect();
|
24828
23909
|
this.contentSizeObserver = undefined;
|
24829
23910
|
}
|
24830
|
-
this.contentSizeObserver = new
|
23911
|
+
this.contentSizeObserver = new ResizeObserver((entries) => {
|
24831
23912
|
for (const entry of entries) {
|
24832
23913
|
if (this.pauseResizeWatcher)
|
24833
23914
|
return;
|
@@ -25209,6 +24290,10 @@ let Tab = class extends H {
|
|
25209
24290
|
this.handleCloseClick = () => {
|
25210
24291
|
this.nanoTabClose.emit();
|
25211
24292
|
};
|
24293
|
+
this.handleCloseKeydown = (e) => {
|
24294
|
+
if (e.key === ' ')
|
24295
|
+
this.handleCloseClick();
|
24296
|
+
};
|
25212
24297
|
}
|
25213
24298
|
/** Sets focus to the tab. */
|
25214
24299
|
async setFocus() {
|
@@ -25224,7 +24309,7 @@ let Tab = class extends H {
|
|
25224
24309
|
'nanotab--active': this.active,
|
25225
24310
|
'nanotab--disabled': this.disabled,
|
25226
24311
|
'nanotab--closable': this.closable,
|
25227
|
-
}, role: "tab", "aria-disabled": this.disabled ? 'true' : 'false', "aria-selected": this.active ? 'true' : 'false', tabindex: this.disabled || !this.active ? '-1' : '0' }, h$1("slot", null), this.closable && (h$1("nano-icon-button", { label: "Close this tab", iconName: "light/times", class: "nanotab__close-button", onClick: this.handleCloseClick, tabIndex: -1 })))));
|
24312
|
+
}, role: "tab", "aria-disabled": this.disabled ? 'true' : 'false', "aria-selected": this.active ? 'true' : 'false', tabindex: this.disabled || !this.active ? '-1' : '0' }, h$1("slot", null), this.closable && (h$1("nano-icon-button", { label: "Close this tab", iconName: "light/times", class: "nanotab__close-button", onClick: this.handleCloseClick, onKeyDown: this.handleCloseKeydown, tabIndex: -1 })))));
|
25228
24313
|
}
|
25229
24314
|
get host() { return this; }
|
25230
24315
|
static get style() { return tabCss; }
|
@@ -25340,6 +24425,9 @@ let TabGroup = class extends H {
|
|
25340
24425
|
if (['top'].includes(this.placement)) {
|
25341
24426
|
scrollIntoView(tabs[index], this.nav, 'horizontal', 'center');
|
25342
24427
|
}
|
24428
|
+
// need to stop bubbling otherwise it will focus on parent tabs if nested
|
24429
|
+
event.stopPropagation();
|
24430
|
+
// stop the browser moving about
|
25343
24431
|
event.preventDefault();
|
25344
24432
|
}
|
25345
24433
|
}
|
@@ -25626,7 +24714,7 @@ let TabGroup = class extends H {
|
|
25626
24714
|
focusVisible.observe(this.leftBtn);
|
25627
24715
|
focusVisible.observe(this.rightBtn);
|
25628
24716
|
}
|
25629
|
-
this.resizeObserver = new
|
24717
|
+
this.resizeObserver = new ResizeObserver(() => {
|
25630
24718
|
setTimeout(() => {
|
25631
24719
|
this.updateScrollControls();
|
25632
24720
|
this.syncActiveTabIndicator();
|
@@ -25679,7 +24767,7 @@ let TabGroup = class extends H {
|
|
25679
24767
|
static get style() { return tabGroupCss; }
|
25680
24768
|
};
|
25681
24769
|
|
25682
|
-
const tooltipCss = ":host{-webkit-box-sizing:border-box;box-sizing:border-box}*,*::before,*::after{-webkit-box-sizing:border-box;box-sizing:border-box}[hidden]{display:none !important}:host{--max-width:20rem;--hide-delay:0s;--hide-duration:0.125s;--hide-timing-function:ease;--show-delay:0.125s;--show-duration:0.125s;--show-timing-function:ease;display:contents}.tooltip{max-width:var(--max-width);border-radius:var(--nano-tooltip-border-radius, var(--nano-border-radius-small, 2px));background-color:black;font-size:var(--nano-fontsize-small, 0.875rem);line-height:1.5;color:white;opacity:0;padding:var(--nano-tooltip-padding, var(--nano-spacing-xsmall, 4px) var(--nano-spacing-small, 8px));-webkit-transform:translateY(10px) translateZ(0);transform:translateY(10px) translateZ(0);-webkit-transform-origin:bottom;transform-origin:bottom;-webkit-transition-property:opacity, -webkit-transform;transition-property:opacity, -webkit-transform;transition-property:opacity, transform;transition-property:opacity, transform, -webkit-transform;-webkit-transition-delay:var(--hide-delay);transition-delay:var(--hide-delay);-webkit-transition-duration:var(--hide-duration);transition-duration:var(--hide-duration);-webkit-transition-timing-function:var(--hide-timing-function);transition-timing-function:var(--hide-timing-function);white-space:normal}.tooltip-arrow{content:\"\";position:absolute;width:0;height:0;color:black;-webkit-transition:0.2s ease transform;transition:0.2s ease transform}.tooltip-positioner{position:absolute;z-index:var(--nano-layer-index-tooltip, 1000)
|
24770
|
+
const tooltipCss = ":host{-webkit-box-sizing:border-box;box-sizing:border-box}*,*::before,*::after{-webkit-box-sizing:border-box;box-sizing:border-box}[hidden]{display:none !important}:host{--max-width:20rem;--hide-delay:0s;--hide-duration:0.125s;--hide-timing-function:ease;--show-delay:0.125s;--show-duration:0.125s;--show-timing-function:ease;display:contents}.tooltip{max-width:var(--max-width);border-radius:var(--nano-tooltip-border-radius, var(--nano-border-radius-small, 2px));background-color:black;font-size:var(--nano-fontsize-small, 0.875rem);line-height:1.5;color:white;opacity:0;padding:var(--nano-tooltip-padding, var(--nano-spacing-xsmall, 4px) var(--nano-spacing-small, 8px));-webkit-transform:translateY(10px) translateZ(0);transform:translateY(10px) translateZ(0);-webkit-transform-origin:bottom;transform-origin:bottom;-webkit-transition-property:opacity, -webkit-transform;transition-property:opacity, -webkit-transform;transition-property:opacity, transform;transition-property:opacity, transform, -webkit-transform;-webkit-transition-delay:var(--hide-delay);transition-delay:var(--hide-delay);-webkit-transition-duration:var(--hide-duration);transition-duration:var(--hide-duration);-webkit-transition-timing-function:var(--hide-timing-function);transition-timing-function:var(--hide-timing-function);white-space:normal}.tooltip-arrow{content:\"\";position:absolute;width:0;height:0;color:black;-webkit-transition:0.2s ease transform;transition:0.2s ease transform}.tooltip-positioner{position:absolute;z-index:var(--nano-layer-index-tooltip, 1000)}.tooltip-positioner[data-popper-placement^=top] .tooltip{-webkit-transform-origin:bottom;transform-origin:bottom;-webkit-transform:translateY(-10px) translateZ(0);transform:translateY(-10px) translateZ(0)}.tooltip-positioner[data-popper-placement^=bottom] .tooltip{-webkit-transform-origin:top;transform-origin:top}.tooltip-positioner[data-popper-placement^=left] .tooltip{-webkit-transform-origin:right;transform-origin:right}.tooltip-positioner[data-popper-placement^=right] .tooltip{-webkit-transform-origin:left;transform-origin:left}.tooltip-positioner.popover-visible .tooltip{opacity:1;-webkit-transform:none;transform:none;-webkit-transition-delay:var(--show-delay);transition-delay:var(--show-delay);-webkit-transition-duration:var(--show-duration);transition-duration:var(--show-duration);-webkit-transition-timing-function:var(--show-timing-function);transition-timing-function:var(--show-timing-function)}.tooltip-positioner[data-popper-placement^=bottom] .tooltip-arrow{bottom:100%;left:calc(50% - 5px);border-bottom:5px solid;border-left:5px solid transparent;border-right:5px solid transparent}.tooltip-positioner[data-popper-placement=bottom-start] .tooltip-arrow{left:5px}.tooltip-positioner[data-popper-placement=bottom-end] .tooltip-arrow{right:5px;left:auto}.tooltip-positioner[data-popper-placement^=top] .tooltip-arrow{top:100%;left:calc(50% - 5px);border-top:5px solid;border-left:5px solid transparent;border-right:5px solid transparent}.tooltip-positioner[data-popper-placement=top-start] .tooltip-arrow{left:5px}.tooltip-positioner[data-popper-placement=top-end] .tooltip-arrow{right:5px;left:auto}.tooltip-positioner[data-popper-placement^=left] .tooltip-arrow{top:calc(50% - 5px);left:100%;border-left:5px solid;border-top:5px solid transparent;border-bottom:5px solid transparent}.tooltip-positioner[data-popper-placement=left-start] .tooltip-arrow{top:5px}.tooltip-positioner[data-popper-placement=left-end] .tooltip-arrow{top:auto;bottom:5px}.tooltip-positioner[data-popper-placement^=right] .tooltip-arrow{top:calc(50% - 5px);right:100%;border-right:5px solid;border-top:5px solid transparent;border-bottom:5px solid transparent}.tooltip-positioner[data-popper-placement=right-start] .tooltip-arrow{top:5px}.tooltip-positioner[data-popper-placement=right-end] .tooltip-arrow{top:auto;bottom:5px}";
|
25683
24771
|
|
25684
24772
|
let id = 0;
|
25685
24773
|
let Tooltip = class extends H {
|
@@ -25873,7 +24961,7 @@ const NanoAspectRatio = /*@__PURE__*/proxyCustomElement(AspectRatio, [1,"nano-as
|
|
25873
24961
|
const NanoCheckbox = /*@__PURE__*/proxyCustomElement(Checkbox, [6,"nano-checkbox",{"hasFocus":[1540,"has-focus"],"checked":[1540],"disabled":[516],"value":[513],"name":[513],"required":[516],"type":[513],"label":[1],"indeterminate":[1540],"invalid":[2564],"validityMessage":[2049,"validity-message"],"color":[1],"form":[1],"inputType":[32],"_invalid":[32]},[[16,"reset","onReset"]]]);
|
25874
24962
|
const NanoCheckboxGroup = /*@__PURE__*/proxyCustomElement(CheckboxGroup, [6,"nano-checkbox-group",{"validateOn":[1025,"validate-on"],"showInlineError":[4,"show-inline-error"],"min":[2],"max":[2],"disabled":[516],"legend":[1],"invalid":[2564],"validityMessage":[2049,"validity-message"],"checkboxes":[32],"nativeCbs":[32],"errorMessage":[32],"showErrorMsg":[32],"hasHelperSlot":[32],"_invalid":[32]},[[0,"nanoChange","handleCbChange"]]]);
|
25875
24963
|
const NanoDatalist = /*@__PURE__*/proxyCustomElement(DataList, [1,"nano-datalist",{"selected":[1040],"dropDownConfig":[6160],"options":[16],"input":[1],"type":[1],"activeOptions":[2064],"open":[1028],"disableFilter":[4,"disable-filter"],"disabled":[4],"actvOptEles":[32],"connectedInput":[32],"inputLabel":[32],"hasNoResult":[32],"shouldOpen":[32],"canOpen":[32],"optionIds":[32]}]);
|
25876
|
-
const NanoDateInput = /*@__PURE__*/proxyCustomElement(DateInput, [6,"nano-date-input",{"invalid":[2564],"validityMessage":[2049,"validity-message"],"helperText":[4,"helper-text"],"helperTextFormat":[16],"floatLabel":[4,"float-label"],"name":[1],"readonly":[4],"size":[2],"form":[1],"firstDayOfWeek":[2,"first-day-of-week"],"localization":[16],"disabled":[4],"color":[1],"autofocus":[4],"clearInput":[4,"clear-input"],"label":[1],"placeholder":[1025],"value":[1537],"validateOn":[1,"validate-on"],"showInlineError":[516,"show-inline-error"],"dateOrder":[1,"date-order"],"required":[4],"min":[1],"max":[1],"hideLabel":[4,"hide-label"],"picker":[4],"initialPickerDate":[1,"initial-picker-date"],"pickerOpen":[1540,"picker-open"],"closeAfterPicked":[4,"close-after-picked"],"dropDownConfig":[6160],"pattern":[32],"inputValue":[32],"_invalid":[32]}]);
|
24964
|
+
const NanoDateInput = /*@__PURE__*/proxyCustomElement(DateInput, [6,"nano-date-input",{"invalid":[2564],"validityMessage":[2049,"validity-message"],"helperText":[4,"helper-text"],"helperTextFormat":[16],"floatLabel":[4,"float-label"],"name":[1],"readonly":[4],"size":[2],"form":[1],"firstDayOfWeek":[2,"first-day-of-week"],"localization":[16],"disabled":[4],"color":[1],"autofocus":[4],"clearInput":[4,"clear-input"],"label":[1],"placeholder":[1025],"value":[1537],"validateOn":[1,"validate-on"],"showInlineError":[516,"show-inline-error"],"dateOrder":[1,"date-order"],"required":[4],"min":[1],"max":[1],"hideLabel":[4,"hide-label"],"picker":[4],"initialPickerDate":[1,"initial-picker-date"],"pickerOpen":[1540,"picker-open"],"closeAfterPicked":[4,"close-after-picked"],"dropDownConfig":[6160],"dateValue":[2064],"isDateDisabled":[16],"pattern":[32],"inputValue":[32],"_invalid":[32]}]);
|
25877
24965
|
const NanoDatePicker = /*@__PURE__*/proxyCustomElement(DatePicker, [1,"nano-date-picker",{"selectedDate":[1025,"selected-date"],"min":[1],"max":[1],"firstDayOfWeek":[2,"first-day-of-week"],"localization":[16],"color":[1],"isDateDisabled":[16],"isModal":[4,"is-modal"],"firstFocusEle":[16],"activeFocus":[32],"focusedDay":[32]}]);
|
25878
24966
|
const NanoDetails = /*@__PURE__*/proxyCustomElement(Details, [1,"nano-details",{"label":[1],"open":[1540],"noHandle":[4,"no-handle"],"iconRotation":[2,"icon-rotation"],"color":[1],"isLoading":[32]}]);
|
25879
24967
|
const NanoDialog = /*@__PURE__*/proxyCustomElement(Dialog, [1,"nano-dialog",{"showRibbon":[4,"show-ribbon"],"open":[1540],"label":[1],"noHeader":[4,"no-header"],"noFooter":[4,"no-footer"],"noUserDismiss":[4,"no-user-dismiss"],"storeId":[1,"store-id"],"storeMethod":[1,"store-method"],"hoist":[4],"isVisible":[32],"noDismiss":[32],"hasFooter":[32]}]);
|
@@ -26357,991 +25445,6 @@ const shadowCss = /*#__PURE__*/Object.freeze({
|
|
26357
25445
|
scopeCss: scopeCss
|
26358
25446
|
});
|
26359
25447
|
|
26360
|
-
/**
|
26361
|
-
* Copyright 2016 Google Inc. All Rights Reserved.
|
26362
|
-
*
|
26363
|
-
* Licensed under the W3C SOFTWARE AND DOCUMENT NOTICE AND LICENSE.
|
26364
|
-
*
|
26365
|
-
* https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document
|
26366
|
-
*
|
26367
|
-
*/
|
26368
|
-
(function() {
|
26369
|
-
|
26370
|
-
// Exit early if we're not running in a browser.
|
26371
|
-
if (typeof window !== 'object') {
|
26372
|
-
return;
|
26373
|
-
}
|
26374
|
-
|
26375
|
-
// Exit early if all IntersectionObserver and IntersectionObserverEntry
|
26376
|
-
// features are natively supported.
|
26377
|
-
if ('IntersectionObserver' in window &&
|
26378
|
-
'IntersectionObserverEntry' in window &&
|
26379
|
-
'intersectionRatio' in window.IntersectionObserverEntry.prototype) {
|
26380
|
-
|
26381
|
-
// Minimal polyfill for Edge 15's lack of `isIntersecting`
|
26382
|
-
// See: https://github.com/w3c/IntersectionObserver/issues/211
|
26383
|
-
if (!('isIntersecting' in window.IntersectionObserverEntry.prototype)) {
|
26384
|
-
Object.defineProperty(window.IntersectionObserverEntry.prototype,
|
26385
|
-
'isIntersecting', {
|
26386
|
-
get: function () {
|
26387
|
-
return this.intersectionRatio > 0;
|
26388
|
-
}
|
26389
|
-
});
|
26390
|
-
}
|
26391
|
-
return;
|
26392
|
-
}
|
26393
|
-
|
26394
|
-
|
26395
|
-
/**
|
26396
|
-
* A local reference to the document.
|
26397
|
-
*/
|
26398
|
-
var document = window.document;
|
26399
|
-
|
26400
|
-
|
26401
|
-
/**
|
26402
|
-
* An IntersectionObserver registry. This registry exists to hold a strong
|
26403
|
-
* reference to IntersectionObserver instances currently observing a target
|
26404
|
-
* element. Without this registry, instances without another reference may be
|
26405
|
-
* garbage collected.
|
26406
|
-
*/
|
26407
|
-
var registry = [];
|
26408
|
-
|
26409
|
-
/**
|
26410
|
-
* The signal updater for cross-origin intersection. When not null, it means
|
26411
|
-
* that the polyfill is configured to work in a cross-origin mode.
|
26412
|
-
* @type {function(DOMRect|ClientRect, DOMRect|ClientRect)}
|
26413
|
-
*/
|
26414
|
-
var crossOriginUpdater = null;
|
26415
|
-
|
26416
|
-
/**
|
26417
|
-
* The current cross-origin intersection. Only used in the cross-origin mode.
|
26418
|
-
* @type {DOMRect|ClientRect}
|
26419
|
-
*/
|
26420
|
-
var crossOriginRect = null;
|
26421
|
-
|
26422
|
-
|
26423
|
-
/**
|
26424
|
-
* Creates the global IntersectionObserverEntry constructor.
|
26425
|
-
* https://w3c.github.io/IntersectionObserver/#intersection-observer-entry
|
26426
|
-
* @param {Object} entry A dictionary of instance properties.
|
26427
|
-
* @constructor
|
26428
|
-
*/
|
26429
|
-
function IntersectionObserverEntry(entry) {
|
26430
|
-
this.time = entry.time;
|
26431
|
-
this.target = entry.target;
|
26432
|
-
this.rootBounds = ensureDOMRect(entry.rootBounds);
|
26433
|
-
this.boundingClientRect = ensureDOMRect(entry.boundingClientRect);
|
26434
|
-
this.intersectionRect = ensureDOMRect(entry.intersectionRect || getEmptyRect());
|
26435
|
-
this.isIntersecting = !!entry.intersectionRect;
|
26436
|
-
|
26437
|
-
// Calculates the intersection ratio.
|
26438
|
-
var targetRect = this.boundingClientRect;
|
26439
|
-
var targetArea = targetRect.width * targetRect.height;
|
26440
|
-
var intersectionRect = this.intersectionRect;
|
26441
|
-
var intersectionArea = intersectionRect.width * intersectionRect.height;
|
26442
|
-
|
26443
|
-
// Sets intersection ratio.
|
26444
|
-
if (targetArea) {
|
26445
|
-
// Round the intersection ratio to avoid floating point math issues:
|
26446
|
-
// https://github.com/w3c/IntersectionObserver/issues/324
|
26447
|
-
this.intersectionRatio = Number((intersectionArea / targetArea).toFixed(4));
|
26448
|
-
} else {
|
26449
|
-
// If area is zero and is intersecting, sets to 1, otherwise to 0
|
26450
|
-
this.intersectionRatio = this.isIntersecting ? 1 : 0;
|
26451
|
-
}
|
26452
|
-
}
|
26453
|
-
|
26454
|
-
|
26455
|
-
/**
|
26456
|
-
* Creates the global IntersectionObserver constructor.
|
26457
|
-
* https://w3c.github.io/IntersectionObserver/#intersection-observer-interface
|
26458
|
-
* @param {Function} callback The function to be invoked after intersection
|
26459
|
-
* changes have queued. The function is not invoked if the queue has
|
26460
|
-
* been emptied by calling the `takeRecords` method.
|
26461
|
-
* @param {Object=} opt_options Optional configuration options.
|
26462
|
-
* @constructor
|
26463
|
-
*/
|
26464
|
-
function IntersectionObserver(callback, opt_options) {
|
26465
|
-
|
26466
|
-
var options = opt_options || {};
|
26467
|
-
|
26468
|
-
if (typeof callback != 'function') {
|
26469
|
-
throw new Error('callback must be a function');
|
26470
|
-
}
|
26471
|
-
|
26472
|
-
if (options.root && options.root.nodeType != 1) {
|
26473
|
-
throw new Error('root must be an Element');
|
26474
|
-
}
|
26475
|
-
|
26476
|
-
// Binds and throttles `this._checkForIntersections`.
|
26477
|
-
this._checkForIntersections = throttle(
|
26478
|
-
this._checkForIntersections.bind(this), this.THROTTLE_TIMEOUT);
|
26479
|
-
|
26480
|
-
// Private properties.
|
26481
|
-
this._callback = callback;
|
26482
|
-
this._observationTargets = [];
|
26483
|
-
this._queuedEntries = [];
|
26484
|
-
this._rootMarginValues = this._parseRootMargin(options.rootMargin);
|
26485
|
-
|
26486
|
-
// Public properties.
|
26487
|
-
this.thresholds = this._initThresholds(options.threshold);
|
26488
|
-
this.root = options.root || null;
|
26489
|
-
this.rootMargin = this._rootMarginValues.map(function(margin) {
|
26490
|
-
return margin.value + margin.unit;
|
26491
|
-
}).join(' ');
|
26492
|
-
|
26493
|
-
/** @private @const {!Array<!Document>} */
|
26494
|
-
this._monitoringDocuments = [];
|
26495
|
-
/** @private @const {!Array<function()>} */
|
26496
|
-
this._monitoringUnsubscribes = [];
|
26497
|
-
}
|
26498
|
-
|
26499
|
-
|
26500
|
-
/**
|
26501
|
-
* The minimum interval within which the document will be checked for
|
26502
|
-
* intersection changes.
|
26503
|
-
*/
|
26504
|
-
IntersectionObserver.prototype.THROTTLE_TIMEOUT = 100;
|
26505
|
-
|
26506
|
-
|
26507
|
-
/**
|
26508
|
-
* The frequency in which the polyfill polls for intersection changes.
|
26509
|
-
* this can be updated on a per instance basis and must be set prior to
|
26510
|
-
* calling `observe` on the first target.
|
26511
|
-
*/
|
26512
|
-
IntersectionObserver.prototype.POLL_INTERVAL = null;
|
26513
|
-
|
26514
|
-
/**
|
26515
|
-
* Use a mutation observer on the root element
|
26516
|
-
* to detect intersection changes.
|
26517
|
-
*/
|
26518
|
-
IntersectionObserver.prototype.USE_MUTATION_OBSERVER = true;
|
26519
|
-
|
26520
|
-
|
26521
|
-
/**
|
26522
|
-
* Sets up the polyfill in the cross-origin mode. The result is the
|
26523
|
-
* updater function that accepts two arguments: `boundingClientRect` and
|
26524
|
-
* `intersectionRect` - just as these fields would be available to the
|
26525
|
-
* parent via `IntersectionObserverEntry`. This function should be called
|
26526
|
-
* each time the iframe receives intersection information from the parent
|
26527
|
-
* window, e.g. via messaging.
|
26528
|
-
* @return {function(DOMRect|ClientRect, DOMRect|ClientRect)}
|
26529
|
-
*/
|
26530
|
-
IntersectionObserver._setupCrossOriginUpdater = function() {
|
26531
|
-
if (!crossOriginUpdater) {
|
26532
|
-
/**
|
26533
|
-
* @param {DOMRect|ClientRect} boundingClientRect
|
26534
|
-
* @param {DOMRect|ClientRect} intersectionRect
|
26535
|
-
*/
|
26536
|
-
crossOriginUpdater = function(boundingClientRect, intersectionRect) {
|
26537
|
-
if (!boundingClientRect || !intersectionRect) {
|
26538
|
-
crossOriginRect = getEmptyRect();
|
26539
|
-
} else {
|
26540
|
-
crossOriginRect = convertFromParentRect(boundingClientRect, intersectionRect);
|
26541
|
-
}
|
26542
|
-
registry.forEach(function(observer) {
|
26543
|
-
observer._checkForIntersections();
|
26544
|
-
});
|
26545
|
-
};
|
26546
|
-
}
|
26547
|
-
return crossOriginUpdater;
|
26548
|
-
};
|
26549
|
-
|
26550
|
-
|
26551
|
-
/**
|
26552
|
-
* Resets the cross-origin mode.
|
26553
|
-
*/
|
26554
|
-
IntersectionObserver._resetCrossOriginUpdater = function() {
|
26555
|
-
crossOriginUpdater = null;
|
26556
|
-
crossOriginRect = null;
|
26557
|
-
};
|
26558
|
-
|
26559
|
-
|
26560
|
-
/**
|
26561
|
-
* Starts observing a target element for intersection changes based on
|
26562
|
-
* the thresholds values.
|
26563
|
-
* @param {Element} target The DOM element to observe.
|
26564
|
-
*/
|
26565
|
-
IntersectionObserver.prototype.observe = function(target) {
|
26566
|
-
var isTargetAlreadyObserved = this._observationTargets.some(function(item) {
|
26567
|
-
return item.element == target;
|
26568
|
-
});
|
26569
|
-
|
26570
|
-
if (isTargetAlreadyObserved) {
|
26571
|
-
return;
|
26572
|
-
}
|
26573
|
-
|
26574
|
-
if (!(target && target.nodeType == 1)) {
|
26575
|
-
throw new Error('target must be an Element');
|
26576
|
-
}
|
26577
|
-
|
26578
|
-
this._registerInstance();
|
26579
|
-
this._observationTargets.push({element: target, entry: null});
|
26580
|
-
this._monitorIntersections(target.ownerDocument);
|
26581
|
-
this._checkForIntersections();
|
26582
|
-
};
|
26583
|
-
|
26584
|
-
|
26585
|
-
/**
|
26586
|
-
* Stops observing a target element for intersection changes.
|
26587
|
-
* @param {Element} target The DOM element to observe.
|
26588
|
-
*/
|
26589
|
-
IntersectionObserver.prototype.unobserve = function(target) {
|
26590
|
-
this._observationTargets =
|
26591
|
-
this._observationTargets.filter(function(item) {
|
26592
|
-
return item.element != target;
|
26593
|
-
});
|
26594
|
-
this._unmonitorIntersections(target.ownerDocument);
|
26595
|
-
if (this._observationTargets.length == 0) {
|
26596
|
-
this._unregisterInstance();
|
26597
|
-
}
|
26598
|
-
};
|
26599
|
-
|
26600
|
-
|
26601
|
-
/**
|
26602
|
-
* Stops observing all target elements for intersection changes.
|
26603
|
-
*/
|
26604
|
-
IntersectionObserver.prototype.disconnect = function() {
|
26605
|
-
this._observationTargets = [];
|
26606
|
-
this._unmonitorAllIntersections();
|
26607
|
-
this._unregisterInstance();
|
26608
|
-
};
|
26609
|
-
|
26610
|
-
|
26611
|
-
/**
|
26612
|
-
* Returns any queue entries that have not yet been reported to the
|
26613
|
-
* callback and clears the queue. This can be used in conjunction with the
|
26614
|
-
* callback to obtain the absolute most up-to-date intersection information.
|
26615
|
-
* @return {Array} The currently queued entries.
|
26616
|
-
*/
|
26617
|
-
IntersectionObserver.prototype.takeRecords = function() {
|
26618
|
-
var records = this._queuedEntries.slice();
|
26619
|
-
this._queuedEntries = [];
|
26620
|
-
return records;
|
26621
|
-
};
|
26622
|
-
|
26623
|
-
|
26624
|
-
/**
|
26625
|
-
* Accepts the threshold value from the user configuration object and
|
26626
|
-
* returns a sorted array of unique threshold values. If a value is not
|
26627
|
-
* between 0 and 1 and error is thrown.
|
26628
|
-
* @private
|
26629
|
-
* @param {Array|number=} opt_threshold An optional threshold value or
|
26630
|
-
* a list of threshold values, defaulting to [0].
|
26631
|
-
* @return {Array} A sorted list of unique and valid threshold values.
|
26632
|
-
*/
|
26633
|
-
IntersectionObserver.prototype._initThresholds = function(opt_threshold) {
|
26634
|
-
var threshold = opt_threshold || [0];
|
26635
|
-
if (!Array.isArray(threshold)) threshold = [threshold];
|
26636
|
-
|
26637
|
-
return threshold.sort().filter(function(t, i, a) {
|
26638
|
-
if (typeof t != 'number' || isNaN(t) || t < 0 || t > 1) {
|
26639
|
-
throw new Error('threshold must be a number between 0 and 1 inclusively');
|
26640
|
-
}
|
26641
|
-
return t !== a[i - 1];
|
26642
|
-
});
|
26643
|
-
};
|
26644
|
-
|
26645
|
-
|
26646
|
-
/**
|
26647
|
-
* Accepts the rootMargin value from the user configuration object
|
26648
|
-
* and returns an array of the four margin values as an object containing
|
26649
|
-
* the value and unit properties. If any of the values are not properly
|
26650
|
-
* formatted or use a unit other than px or %, and error is thrown.
|
26651
|
-
* @private
|
26652
|
-
* @param {string=} opt_rootMargin An optional rootMargin value,
|
26653
|
-
* defaulting to '0px'.
|
26654
|
-
* @return {Array<Object>} An array of margin objects with the keys
|
26655
|
-
* value and unit.
|
26656
|
-
*/
|
26657
|
-
IntersectionObserver.prototype._parseRootMargin = function(opt_rootMargin) {
|
26658
|
-
var marginString = opt_rootMargin || '0px';
|
26659
|
-
var margins = marginString.split(/\s+/).map(function(margin) {
|
26660
|
-
var parts = /^(-?\d*\.?\d+)(px|%)$/.exec(margin);
|
26661
|
-
if (!parts) {
|
26662
|
-
throw new Error('rootMargin must be specified in pixels or percent');
|
26663
|
-
}
|
26664
|
-
return {value: parseFloat(parts[1]), unit: parts[2]};
|
26665
|
-
});
|
26666
|
-
|
26667
|
-
// Handles shorthand.
|
26668
|
-
margins[1] = margins[1] || margins[0];
|
26669
|
-
margins[2] = margins[2] || margins[0];
|
26670
|
-
margins[3] = margins[3] || margins[1];
|
26671
|
-
|
26672
|
-
return margins;
|
26673
|
-
};
|
26674
|
-
|
26675
|
-
|
26676
|
-
/**
|
26677
|
-
* Starts polling for intersection changes if the polling is not already
|
26678
|
-
* happening, and if the page's visibility state is visible.
|
26679
|
-
* @param {!Document} doc
|
26680
|
-
* @private
|
26681
|
-
*/
|
26682
|
-
IntersectionObserver.prototype._monitorIntersections = function(doc) {
|
26683
|
-
var win = doc.defaultView;
|
26684
|
-
if (!win) {
|
26685
|
-
// Already destroyed.
|
26686
|
-
return;
|
26687
|
-
}
|
26688
|
-
if (this._monitoringDocuments.indexOf(doc) != -1) {
|
26689
|
-
// Already monitoring.
|
26690
|
-
return;
|
26691
|
-
}
|
26692
|
-
|
26693
|
-
// Private state for monitoring.
|
26694
|
-
var callback = this._checkForIntersections;
|
26695
|
-
var monitoringInterval = null;
|
26696
|
-
var domObserver = null;
|
26697
|
-
|
26698
|
-
// If a poll interval is set, use polling instead of listening to
|
26699
|
-
// resize and scroll events or DOM mutations.
|
26700
|
-
if (this.POLL_INTERVAL) {
|
26701
|
-
monitoringInterval = win.setInterval(callback, this.POLL_INTERVAL);
|
26702
|
-
} else {
|
26703
|
-
addEvent(win, 'resize', callback, true);
|
26704
|
-
addEvent(doc, 'scroll', callback, true);
|
26705
|
-
if (this.USE_MUTATION_OBSERVER && 'MutationObserver' in win) {
|
26706
|
-
domObserver = new win.MutationObserver(callback);
|
26707
|
-
domObserver.observe(doc, {
|
26708
|
-
attributes: true,
|
26709
|
-
childList: true,
|
26710
|
-
characterData: true,
|
26711
|
-
subtree: true
|
26712
|
-
});
|
26713
|
-
}
|
26714
|
-
}
|
26715
|
-
|
26716
|
-
this._monitoringDocuments.push(doc);
|
26717
|
-
this._monitoringUnsubscribes.push(function() {
|
26718
|
-
// Get the window object again. When a friendly iframe is destroyed, it
|
26719
|
-
// will be null.
|
26720
|
-
var win = doc.defaultView;
|
26721
|
-
|
26722
|
-
if (win) {
|
26723
|
-
if (monitoringInterval) {
|
26724
|
-
win.clearInterval(monitoringInterval);
|
26725
|
-
}
|
26726
|
-
removeEvent(win, 'resize', callback, true);
|
26727
|
-
}
|
26728
|
-
|
26729
|
-
removeEvent(doc, 'scroll', callback, true);
|
26730
|
-
if (domObserver) {
|
26731
|
-
domObserver.disconnect();
|
26732
|
-
}
|
26733
|
-
});
|
26734
|
-
|
26735
|
-
// Also monitor the parent.
|
26736
|
-
if (doc != (this.root && this.root.ownerDocument || document)) {
|
26737
|
-
var frame = getFrameElement(doc);
|
26738
|
-
if (frame) {
|
26739
|
-
this._monitorIntersections(frame.ownerDocument);
|
26740
|
-
}
|
26741
|
-
}
|
26742
|
-
};
|
26743
|
-
|
26744
|
-
|
26745
|
-
/**
|
26746
|
-
* Stops polling for intersection changes.
|
26747
|
-
* @param {!Document} doc
|
26748
|
-
* @private
|
26749
|
-
*/
|
26750
|
-
IntersectionObserver.prototype._unmonitorIntersections = function(doc) {
|
26751
|
-
var index = this._monitoringDocuments.indexOf(doc);
|
26752
|
-
if (index == -1) {
|
26753
|
-
return;
|
26754
|
-
}
|
26755
|
-
|
26756
|
-
var rootDoc = (this.root && this.root.ownerDocument || document);
|
26757
|
-
|
26758
|
-
// Check if any dependent targets are still remaining.
|
26759
|
-
var hasDependentTargets =
|
26760
|
-
this._observationTargets.some(function(item) {
|
26761
|
-
var itemDoc = item.element.ownerDocument;
|
26762
|
-
// Target is in this context.
|
26763
|
-
if (itemDoc == doc) {
|
26764
|
-
return true;
|
26765
|
-
}
|
26766
|
-
// Target is nested in this context.
|
26767
|
-
while (itemDoc && itemDoc != rootDoc) {
|
26768
|
-
var frame = getFrameElement(itemDoc);
|
26769
|
-
itemDoc = frame && frame.ownerDocument;
|
26770
|
-
if (itemDoc == doc) {
|
26771
|
-
return true;
|
26772
|
-
}
|
26773
|
-
}
|
26774
|
-
return false;
|
26775
|
-
});
|
26776
|
-
if (hasDependentTargets) {
|
26777
|
-
return;
|
26778
|
-
}
|
26779
|
-
|
26780
|
-
// Unsubscribe.
|
26781
|
-
var unsubscribe = this._monitoringUnsubscribes[index];
|
26782
|
-
this._monitoringDocuments.splice(index, 1);
|
26783
|
-
this._monitoringUnsubscribes.splice(index, 1);
|
26784
|
-
unsubscribe();
|
26785
|
-
|
26786
|
-
// Also unmonitor the parent.
|
26787
|
-
if (doc != rootDoc) {
|
26788
|
-
var frame = getFrameElement(doc);
|
26789
|
-
if (frame) {
|
26790
|
-
this._unmonitorIntersections(frame.ownerDocument);
|
26791
|
-
}
|
26792
|
-
}
|
26793
|
-
};
|
26794
|
-
|
26795
|
-
|
26796
|
-
/**
|
26797
|
-
* Stops polling for intersection changes.
|
26798
|
-
* @param {!Document} doc
|
26799
|
-
* @private
|
26800
|
-
*/
|
26801
|
-
IntersectionObserver.prototype._unmonitorAllIntersections = function() {
|
26802
|
-
var unsubscribes = this._monitoringUnsubscribes.slice(0);
|
26803
|
-
this._monitoringDocuments.length = 0;
|
26804
|
-
this._monitoringUnsubscribes.length = 0;
|
26805
|
-
for (var i = 0; i < unsubscribes.length; i++) {
|
26806
|
-
unsubscribes[i]();
|
26807
|
-
}
|
26808
|
-
};
|
26809
|
-
|
26810
|
-
|
26811
|
-
/**
|
26812
|
-
* Scans each observation target for intersection changes and adds them
|
26813
|
-
* to the internal entries queue. If new entries are found, it
|
26814
|
-
* schedules the callback to be invoked.
|
26815
|
-
* @private
|
26816
|
-
*/
|
26817
|
-
IntersectionObserver.prototype._checkForIntersections = function() {
|
26818
|
-
if (!this.root && crossOriginUpdater && !crossOriginRect) {
|
26819
|
-
// Cross origin monitoring, but no initial data available yet.
|
26820
|
-
return;
|
26821
|
-
}
|
26822
|
-
|
26823
|
-
var rootIsInDom = this._rootIsInDom();
|
26824
|
-
var rootRect = rootIsInDom ? this._getRootRect() : getEmptyRect();
|
26825
|
-
|
26826
|
-
this._observationTargets.forEach(function(item) {
|
26827
|
-
var target = item.element;
|
26828
|
-
var targetRect = getBoundingClientRect(target);
|
26829
|
-
var rootContainsTarget = this._rootContainsTarget(target);
|
26830
|
-
var oldEntry = item.entry;
|
26831
|
-
var intersectionRect = rootIsInDom && rootContainsTarget &&
|
26832
|
-
this._computeTargetAndRootIntersection(target, targetRect, rootRect);
|
26833
|
-
|
26834
|
-
var newEntry = item.entry = new IntersectionObserverEntry({
|
26835
|
-
time: now(),
|
26836
|
-
target: target,
|
26837
|
-
boundingClientRect: targetRect,
|
26838
|
-
rootBounds: crossOriginUpdater && !this.root ? null : rootRect,
|
26839
|
-
intersectionRect: intersectionRect
|
26840
|
-
});
|
26841
|
-
|
26842
|
-
if (!oldEntry) {
|
26843
|
-
this._queuedEntries.push(newEntry);
|
26844
|
-
} else if (rootIsInDom && rootContainsTarget) {
|
26845
|
-
// If the new entry intersection ratio has crossed any of the
|
26846
|
-
// thresholds, add a new entry.
|
26847
|
-
if (this._hasCrossedThreshold(oldEntry, newEntry)) {
|
26848
|
-
this._queuedEntries.push(newEntry);
|
26849
|
-
}
|
26850
|
-
} else {
|
26851
|
-
// If the root is not in the DOM or target is not contained within
|
26852
|
-
// root but the previous entry for this target had an intersection,
|
26853
|
-
// add a new record indicating removal.
|
26854
|
-
if (oldEntry && oldEntry.isIntersecting) {
|
26855
|
-
this._queuedEntries.push(newEntry);
|
26856
|
-
}
|
26857
|
-
}
|
26858
|
-
}, this);
|
26859
|
-
|
26860
|
-
if (this._queuedEntries.length) {
|
26861
|
-
this._callback(this.takeRecords(), this);
|
26862
|
-
}
|
26863
|
-
};
|
26864
|
-
|
26865
|
-
|
26866
|
-
/**
|
26867
|
-
* Accepts a target and root rect computes the intersection between then
|
26868
|
-
* following the algorithm in the spec.
|
26869
|
-
* TODO(philipwalton): at this time clip-path is not considered.
|
26870
|
-
* https://w3c.github.io/IntersectionObserver/#calculate-intersection-rect-algo
|
26871
|
-
* @param {Element} target The target DOM element
|
26872
|
-
* @param {Object} targetRect The bounding rect of the target.
|
26873
|
-
* @param {Object} rootRect The bounding rect of the root after being
|
26874
|
-
* expanded by the rootMargin value.
|
26875
|
-
* @return {?Object} The final intersection rect object or undefined if no
|
26876
|
-
* intersection is found.
|
26877
|
-
* @private
|
26878
|
-
*/
|
26879
|
-
IntersectionObserver.prototype._computeTargetAndRootIntersection =
|
26880
|
-
function(target, targetRect, rootRect) {
|
26881
|
-
// If the element isn't displayed, an intersection can't happen.
|
26882
|
-
if (window.getComputedStyle(target).display == 'none') return;
|
26883
|
-
|
26884
|
-
var intersectionRect = targetRect;
|
26885
|
-
var parent = getParentNode(target);
|
26886
|
-
var atRoot = false;
|
26887
|
-
|
26888
|
-
while (!atRoot && parent) {
|
26889
|
-
var parentRect = null;
|
26890
|
-
var parentComputedStyle = parent.nodeType == 1 ?
|
26891
|
-
window.getComputedStyle(parent) : {};
|
26892
|
-
|
26893
|
-
// If the parent isn't displayed, an intersection can't happen.
|
26894
|
-
if (parentComputedStyle.display == 'none') return null;
|
26895
|
-
|
26896
|
-
if (parent == this.root || parent.nodeType == /* DOCUMENT */ 9) {
|
26897
|
-
atRoot = true;
|
26898
|
-
if (parent == this.root || parent == document) {
|
26899
|
-
if (crossOriginUpdater && !this.root) {
|
26900
|
-
if (!crossOriginRect ||
|
26901
|
-
crossOriginRect.width == 0 && crossOriginRect.height == 0) {
|
26902
|
-
// A 0-size cross-origin intersection means no-intersection.
|
26903
|
-
parent = null;
|
26904
|
-
parentRect = null;
|
26905
|
-
intersectionRect = null;
|
26906
|
-
} else {
|
26907
|
-
parentRect = crossOriginRect;
|
26908
|
-
}
|
26909
|
-
} else {
|
26910
|
-
parentRect = rootRect;
|
26911
|
-
}
|
26912
|
-
} else {
|
26913
|
-
// Check if there's a frame that can be navigated to.
|
26914
|
-
var frame = getParentNode(parent);
|
26915
|
-
var frameRect = frame && getBoundingClientRect(frame);
|
26916
|
-
var frameIntersect =
|
26917
|
-
frame &&
|
26918
|
-
this._computeTargetAndRootIntersection(frame, frameRect, rootRect);
|
26919
|
-
if (frameRect && frameIntersect) {
|
26920
|
-
parent = frame;
|
26921
|
-
parentRect = convertFromParentRect(frameRect, frameIntersect);
|
26922
|
-
} else {
|
26923
|
-
parent = null;
|
26924
|
-
intersectionRect = null;
|
26925
|
-
}
|
26926
|
-
}
|
26927
|
-
} else {
|
26928
|
-
// If the element has a non-visible overflow, and it's not the <body>
|
26929
|
-
// or <html> element, update the intersection rect.
|
26930
|
-
// Note: <body> and <html> cannot be clipped to a rect that's not also
|
26931
|
-
// the document rect, so no need to compute a new intersection.
|
26932
|
-
var doc = parent.ownerDocument;
|
26933
|
-
if (parent != doc.body &&
|
26934
|
-
parent != doc.documentElement &&
|
26935
|
-
parentComputedStyle.overflow != 'visible') {
|
26936
|
-
parentRect = getBoundingClientRect(parent);
|
26937
|
-
}
|
26938
|
-
}
|
26939
|
-
|
26940
|
-
// If either of the above conditionals set a new parentRect,
|
26941
|
-
// calculate new intersection data.
|
26942
|
-
if (parentRect) {
|
26943
|
-
intersectionRect = computeRectIntersection(parentRect, intersectionRect);
|
26944
|
-
}
|
26945
|
-
if (!intersectionRect) break;
|
26946
|
-
parent = parent && getParentNode(parent);
|
26947
|
-
}
|
26948
|
-
return intersectionRect;
|
26949
|
-
};
|
26950
|
-
|
26951
|
-
|
26952
|
-
/**
|
26953
|
-
* Returns the root rect after being expanded by the rootMargin value.
|
26954
|
-
* @return {ClientRect} The expanded root rect.
|
26955
|
-
* @private
|
26956
|
-
*/
|
26957
|
-
IntersectionObserver.prototype._getRootRect = function() {
|
26958
|
-
var rootRect;
|
26959
|
-
if (this.root) {
|
26960
|
-
rootRect = getBoundingClientRect(this.root);
|
26961
|
-
} else {
|
26962
|
-
// Use <html>/<body> instead of window since scroll bars affect size.
|
26963
|
-
var html = document.documentElement;
|
26964
|
-
var body = document.body;
|
26965
|
-
rootRect = {
|
26966
|
-
top: 0,
|
26967
|
-
left: 0,
|
26968
|
-
right: html.clientWidth || body.clientWidth,
|
26969
|
-
width: html.clientWidth || body.clientWidth,
|
26970
|
-
bottom: html.clientHeight || body.clientHeight,
|
26971
|
-
height: html.clientHeight || body.clientHeight
|
26972
|
-
};
|
26973
|
-
}
|
26974
|
-
return this._expandRectByRootMargin(rootRect);
|
26975
|
-
};
|
26976
|
-
|
26977
|
-
|
26978
|
-
/**
|
26979
|
-
* Accepts a rect and expands it by the rootMargin value.
|
26980
|
-
* @param {DOMRect|ClientRect} rect The rect object to expand.
|
26981
|
-
* @return {ClientRect} The expanded rect.
|
26982
|
-
* @private
|
26983
|
-
*/
|
26984
|
-
IntersectionObserver.prototype._expandRectByRootMargin = function(rect) {
|
26985
|
-
var margins = this._rootMarginValues.map(function(margin, i) {
|
26986
|
-
return margin.unit == 'px' ? margin.value :
|
26987
|
-
margin.value * (i % 2 ? rect.width : rect.height) / 100;
|
26988
|
-
});
|
26989
|
-
var newRect = {
|
26990
|
-
top: rect.top - margins[0],
|
26991
|
-
right: rect.right + margins[1],
|
26992
|
-
bottom: rect.bottom + margins[2],
|
26993
|
-
left: rect.left - margins[3]
|
26994
|
-
};
|
26995
|
-
newRect.width = newRect.right - newRect.left;
|
26996
|
-
newRect.height = newRect.bottom - newRect.top;
|
26997
|
-
|
26998
|
-
return newRect;
|
26999
|
-
};
|
27000
|
-
|
27001
|
-
|
27002
|
-
/**
|
27003
|
-
* Accepts an old and new entry and returns true if at least one of the
|
27004
|
-
* threshold values has been crossed.
|
27005
|
-
* @param {?IntersectionObserverEntry} oldEntry The previous entry for a
|
27006
|
-
* particular target element or null if no previous entry exists.
|
27007
|
-
* @param {IntersectionObserverEntry} newEntry The current entry for a
|
27008
|
-
* particular target element.
|
27009
|
-
* @return {boolean} Returns true if a any threshold has been crossed.
|
27010
|
-
* @private
|
27011
|
-
*/
|
27012
|
-
IntersectionObserver.prototype._hasCrossedThreshold =
|
27013
|
-
function(oldEntry, newEntry) {
|
27014
|
-
|
27015
|
-
// To make comparing easier, an entry that has a ratio of 0
|
27016
|
-
// but does not actually intersect is given a value of -1
|
27017
|
-
var oldRatio = oldEntry && oldEntry.isIntersecting ?
|
27018
|
-
oldEntry.intersectionRatio || 0 : -1;
|
27019
|
-
var newRatio = newEntry.isIntersecting ?
|
27020
|
-
newEntry.intersectionRatio || 0 : -1;
|
27021
|
-
|
27022
|
-
// Ignore unchanged ratios
|
27023
|
-
if (oldRatio === newRatio) return;
|
27024
|
-
|
27025
|
-
for (var i = 0; i < this.thresholds.length; i++) {
|
27026
|
-
var threshold = this.thresholds[i];
|
27027
|
-
|
27028
|
-
// Return true if an entry matches a threshold or if the new ratio
|
27029
|
-
// and the old ratio are on the opposite sides of a threshold.
|
27030
|
-
if (threshold == oldRatio || threshold == newRatio ||
|
27031
|
-
threshold < oldRatio !== threshold < newRatio) {
|
27032
|
-
return true;
|
27033
|
-
}
|
27034
|
-
}
|
27035
|
-
};
|
27036
|
-
|
27037
|
-
|
27038
|
-
/**
|
27039
|
-
* Returns whether or not the root element is an element and is in the DOM.
|
27040
|
-
* @return {boolean} True if the root element is an element and is in the DOM.
|
27041
|
-
* @private
|
27042
|
-
*/
|
27043
|
-
IntersectionObserver.prototype._rootIsInDom = function() {
|
27044
|
-
return !this.root || containsDeep(document, this.root);
|
27045
|
-
};
|
27046
|
-
|
27047
|
-
|
27048
|
-
/**
|
27049
|
-
* Returns whether or not the target element is a child of root.
|
27050
|
-
* @param {Element} target The target element to check.
|
27051
|
-
* @return {boolean} True if the target element is a child of root.
|
27052
|
-
* @private
|
27053
|
-
*/
|
27054
|
-
IntersectionObserver.prototype._rootContainsTarget = function(target) {
|
27055
|
-
return containsDeep(this.root || document, target) &&
|
27056
|
-
(!this.root || this.root.ownerDocument == target.ownerDocument);
|
27057
|
-
};
|
27058
|
-
|
27059
|
-
|
27060
|
-
/**
|
27061
|
-
* Adds the instance to the global IntersectionObserver registry if it isn't
|
27062
|
-
* already present.
|
27063
|
-
* @private
|
27064
|
-
*/
|
27065
|
-
IntersectionObserver.prototype._registerInstance = function() {
|
27066
|
-
if (registry.indexOf(this) < 0) {
|
27067
|
-
registry.push(this);
|
27068
|
-
}
|
27069
|
-
};
|
27070
|
-
|
27071
|
-
|
27072
|
-
/**
|
27073
|
-
* Removes the instance from the global IntersectionObserver registry.
|
27074
|
-
* @private
|
27075
|
-
*/
|
27076
|
-
IntersectionObserver.prototype._unregisterInstance = function() {
|
27077
|
-
var index = registry.indexOf(this);
|
27078
|
-
if (index != -1) registry.splice(index, 1);
|
27079
|
-
};
|
27080
|
-
|
27081
|
-
|
27082
|
-
/**
|
27083
|
-
* Returns the result of the performance.now() method or null in browsers
|
27084
|
-
* that don't support the API.
|
27085
|
-
* @return {number} The elapsed time since the page was requested.
|
27086
|
-
*/
|
27087
|
-
function now() {
|
27088
|
-
return window.performance && performance.now && performance.now();
|
27089
|
-
}
|
27090
|
-
|
27091
|
-
|
27092
|
-
/**
|
27093
|
-
* Throttles a function and delays its execution, so it's only called at most
|
27094
|
-
* once within a given time period.
|
27095
|
-
* @param {Function} fn The function to throttle.
|
27096
|
-
* @param {number} timeout The amount of time that must pass before the
|
27097
|
-
* function can be called again.
|
27098
|
-
* @return {Function} The throttled function.
|
27099
|
-
*/
|
27100
|
-
function throttle(fn, timeout) {
|
27101
|
-
var timer = null;
|
27102
|
-
return function () {
|
27103
|
-
if (!timer) {
|
27104
|
-
timer = setTimeout(function() {
|
27105
|
-
fn();
|
27106
|
-
timer = null;
|
27107
|
-
}, timeout);
|
27108
|
-
}
|
27109
|
-
};
|
27110
|
-
}
|
27111
|
-
|
27112
|
-
|
27113
|
-
/**
|
27114
|
-
* Adds an event handler to a DOM node ensuring cross-browser compatibility.
|
27115
|
-
* @param {Node} node The DOM node to add the event handler to.
|
27116
|
-
* @param {string} event The event name.
|
27117
|
-
* @param {Function} fn The event handler to add.
|
27118
|
-
* @param {boolean} opt_useCapture Optionally adds the even to the capture
|
27119
|
-
* phase. Note: this only works in modern browsers.
|
27120
|
-
*/
|
27121
|
-
function addEvent(node, event, fn, opt_useCapture) {
|
27122
|
-
if (typeof node.addEventListener == 'function') {
|
27123
|
-
node.addEventListener(event, fn, opt_useCapture || false);
|
27124
|
-
}
|
27125
|
-
else if (typeof node.attachEvent == 'function') {
|
27126
|
-
node.attachEvent('on' + event, fn);
|
27127
|
-
}
|
27128
|
-
}
|
27129
|
-
|
27130
|
-
|
27131
|
-
/**
|
27132
|
-
* Removes a previously added event handler from a DOM node.
|
27133
|
-
* @param {Node} node The DOM node to remove the event handler from.
|
27134
|
-
* @param {string} event The event name.
|
27135
|
-
* @param {Function} fn The event handler to remove.
|
27136
|
-
* @param {boolean} opt_useCapture If the event handler was added with this
|
27137
|
-
* flag set to true, it should be set to true here in order to remove it.
|
27138
|
-
*/
|
27139
|
-
function removeEvent(node, event, fn, opt_useCapture) {
|
27140
|
-
if (typeof node.removeEventListener == 'function') {
|
27141
|
-
node.removeEventListener(event, fn, opt_useCapture || false);
|
27142
|
-
}
|
27143
|
-
else if (typeof node.detatchEvent == 'function') {
|
27144
|
-
node.detatchEvent('on' + event, fn);
|
27145
|
-
}
|
27146
|
-
}
|
27147
|
-
|
27148
|
-
|
27149
|
-
/**
|
27150
|
-
* Returns the intersection between two rect objects.
|
27151
|
-
* @param {Object} rect1 The first rect.
|
27152
|
-
* @param {Object} rect2 The second rect.
|
27153
|
-
* @return {?Object|?ClientRect} The intersection rect or undefined if no
|
27154
|
-
* intersection is found.
|
27155
|
-
*/
|
27156
|
-
function computeRectIntersection(rect1, rect2) {
|
27157
|
-
var top = Math.max(rect1.top, rect2.top);
|
27158
|
-
var bottom = Math.min(rect1.bottom, rect2.bottom);
|
27159
|
-
var left = Math.max(rect1.left, rect2.left);
|
27160
|
-
var right = Math.min(rect1.right, rect2.right);
|
27161
|
-
var width = right - left;
|
27162
|
-
var height = bottom - top;
|
27163
|
-
|
27164
|
-
return (width >= 0 && height >= 0) && {
|
27165
|
-
top: top,
|
27166
|
-
bottom: bottom,
|
27167
|
-
left: left,
|
27168
|
-
right: right,
|
27169
|
-
width: width,
|
27170
|
-
height: height
|
27171
|
-
} || null;
|
27172
|
-
}
|
27173
|
-
|
27174
|
-
|
27175
|
-
/**
|
27176
|
-
* Shims the native getBoundingClientRect for compatibility with older IE.
|
27177
|
-
* @param {Element} el The element whose bounding rect to get.
|
27178
|
-
* @return {DOMRect|ClientRect} The (possibly shimmed) rect of the element.
|
27179
|
-
*/
|
27180
|
-
function getBoundingClientRect(el) {
|
27181
|
-
var rect;
|
27182
|
-
|
27183
|
-
try {
|
27184
|
-
rect = el.getBoundingClientRect();
|
27185
|
-
} catch (err) {
|
27186
|
-
// Ignore Windows 7 IE11 "Unspecified error"
|
27187
|
-
// https://github.com/w3c/IntersectionObserver/pull/205
|
27188
|
-
}
|
27189
|
-
|
27190
|
-
if (!rect) return getEmptyRect();
|
27191
|
-
|
27192
|
-
// Older IE
|
27193
|
-
if (!(rect.width && rect.height)) {
|
27194
|
-
rect = {
|
27195
|
-
top: rect.top,
|
27196
|
-
right: rect.right,
|
27197
|
-
bottom: rect.bottom,
|
27198
|
-
left: rect.left,
|
27199
|
-
width: rect.right - rect.left,
|
27200
|
-
height: rect.bottom - rect.top
|
27201
|
-
};
|
27202
|
-
}
|
27203
|
-
return rect;
|
27204
|
-
}
|
27205
|
-
|
27206
|
-
|
27207
|
-
/**
|
27208
|
-
* Returns an empty rect object. An empty rect is returned when an element
|
27209
|
-
* is not in the DOM.
|
27210
|
-
* @return {ClientRect} The empty rect.
|
27211
|
-
*/
|
27212
|
-
function getEmptyRect() {
|
27213
|
-
return {
|
27214
|
-
top: 0,
|
27215
|
-
bottom: 0,
|
27216
|
-
left: 0,
|
27217
|
-
right: 0,
|
27218
|
-
width: 0,
|
27219
|
-
height: 0
|
27220
|
-
};
|
27221
|
-
}
|
27222
|
-
|
27223
|
-
|
27224
|
-
/**
|
27225
|
-
* Ensure that the result has all of the necessary fields of the DOMRect.
|
27226
|
-
* Specifically this ensures that `x` and `y` fields are set.
|
27227
|
-
*
|
27228
|
-
* @param {?DOMRect|?ClientRect} rect
|
27229
|
-
* @return {?DOMRect}
|
27230
|
-
*/
|
27231
|
-
function ensureDOMRect(rect) {
|
27232
|
-
// A `DOMRect` object has `x` and `y` fields.
|
27233
|
-
if (!rect || 'x' in rect) {
|
27234
|
-
return rect;
|
27235
|
-
}
|
27236
|
-
// A IE's `ClientRect` type does not have `x` and `y`. The same is the case
|
27237
|
-
// for internally calculated Rect objects. For the purposes of
|
27238
|
-
// `IntersectionObserver`, it's sufficient to simply mirror `left` and `top`
|
27239
|
-
// for these fields.
|
27240
|
-
return {
|
27241
|
-
top: rect.top,
|
27242
|
-
y: rect.top,
|
27243
|
-
bottom: rect.bottom,
|
27244
|
-
left: rect.left,
|
27245
|
-
x: rect.left,
|
27246
|
-
right: rect.right,
|
27247
|
-
width: rect.width,
|
27248
|
-
height: rect.height
|
27249
|
-
};
|
27250
|
-
}
|
27251
|
-
|
27252
|
-
|
27253
|
-
/**
|
27254
|
-
* Inverts the intersection and bounding rect from the parent (frame) BCR to
|
27255
|
-
* the local BCR space.
|
27256
|
-
* @param {DOMRect|ClientRect} parentBoundingRect The parent's bound client rect.
|
27257
|
-
* @param {DOMRect|ClientRect} parentIntersectionRect The parent's own intersection rect.
|
27258
|
-
* @return {ClientRect} The local root bounding rect for the parent's children.
|
27259
|
-
*/
|
27260
|
-
function convertFromParentRect(parentBoundingRect, parentIntersectionRect) {
|
27261
|
-
var top = parentIntersectionRect.top - parentBoundingRect.top;
|
27262
|
-
var left = parentIntersectionRect.left - parentBoundingRect.left;
|
27263
|
-
return {
|
27264
|
-
top: top,
|
27265
|
-
left: left,
|
27266
|
-
height: parentIntersectionRect.height,
|
27267
|
-
width: parentIntersectionRect.width,
|
27268
|
-
bottom: top + parentIntersectionRect.height,
|
27269
|
-
right: left + parentIntersectionRect.width
|
27270
|
-
};
|
27271
|
-
}
|
27272
|
-
|
27273
|
-
|
27274
|
-
/**
|
27275
|
-
* Checks to see if a parent element contains a child element (including inside
|
27276
|
-
* shadow DOM).
|
27277
|
-
* @param {Node} parent The parent element.
|
27278
|
-
* @param {Node} child The child element.
|
27279
|
-
* @return {boolean} True if the parent node contains the child node.
|
27280
|
-
*/
|
27281
|
-
function containsDeep(parent, child) {
|
27282
|
-
var node = child;
|
27283
|
-
while (node) {
|
27284
|
-
if (node == parent) return true;
|
27285
|
-
|
27286
|
-
node = getParentNode(node);
|
27287
|
-
}
|
27288
|
-
return false;
|
27289
|
-
}
|
27290
|
-
|
27291
|
-
|
27292
|
-
/**
|
27293
|
-
* Gets the parent node of an element or its host element if the parent node
|
27294
|
-
* is a shadow root.
|
27295
|
-
* @param {Node} node The node whose parent to get.
|
27296
|
-
* @return {Node|null} The parent node or null if no parent exists.
|
27297
|
-
*/
|
27298
|
-
function getParentNode(node) {
|
27299
|
-
var parent = node.parentNode;
|
27300
|
-
|
27301
|
-
if (node.nodeType == /* DOCUMENT */ 9 && node != document) {
|
27302
|
-
// If this node is a document node, look for the embedding frame.
|
27303
|
-
return getFrameElement(node);
|
27304
|
-
}
|
27305
|
-
|
27306
|
-
if (parent && parent.nodeType == 11 && parent.host) {
|
27307
|
-
// If the parent is a shadow root, return the host element.
|
27308
|
-
return parent.host;
|
27309
|
-
}
|
27310
|
-
|
27311
|
-
if (parent && parent.assignedSlot) {
|
27312
|
-
// If the parent is distributed in a <slot>, return the parent of a slot.
|
27313
|
-
return parent.assignedSlot.parentNode;
|
27314
|
-
}
|
27315
|
-
|
27316
|
-
return parent;
|
27317
|
-
}
|
27318
|
-
|
27319
|
-
|
27320
|
-
/**
|
27321
|
-
* Returns the embedding frame element, if any.
|
27322
|
-
* @param {!Document} doc
|
27323
|
-
* @return {!Element}
|
27324
|
-
*/
|
27325
|
-
function getFrameElement(doc) {
|
27326
|
-
try {
|
27327
|
-
return doc.defaultView && doc.defaultView.frameElement || null;
|
27328
|
-
} catch (e) {
|
27329
|
-
// Ignore the error.
|
27330
|
-
return null;
|
27331
|
-
}
|
27332
|
-
}
|
27333
|
-
|
27334
|
-
|
27335
|
-
// Exposes the constructors globally.
|
27336
|
-
window.IntersectionObserver = IntersectionObserver;
|
27337
|
-
window.IntersectionObserverEntry = IntersectionObserverEntry;
|
27338
|
-
|
27339
|
-
}());
|
27340
|
-
|
27341
|
-
const intersectionObserver = /*#__PURE__*/Object.freeze({
|
27342
|
-
__proto__: null
|
27343
|
-
});
|
27344
|
-
|
27345
25448
|
(function () {
|
27346
25449
|
|
27347
25450
|
var UNSUPPORTED_ENVIRONMENT = typeof window === "undefined";
|
@@ -29412,6 +27515,6 @@ const index = /*#__PURE__*/Object.freeze({
|
|
29412
27515
|
GESTURE_CONTROLLER: GESTURE_CONTROLLER
|
29413
27516
|
});
|
29414
27517
|
|
29415
|
-
export { NanoAccordion, NanoAlert, NanoAlgolia, NanoAlgoliaFilter, NanoAlgoliaInput, NanoAlgoliaPagination, NanoAlgoliaResults, NanoAspectRatio, NanoCheckbox, NanoCheckboxGroup, NanoDatalist, NanoDateInput, NanoDatePicker, NanoDetails, NanoDialog, NanoDrawer, NanoDropdown, NanoFieldValidator, NanoFileUpload, NanoGlobalNav, NanoGlobalSearchResults, NanoGrid, NanoGridItem, NanoHero, NanoIcon, NanoIconButton, NanoImg, NanoInput, NanoMenu, NanoMenuDrawer, NanoNavItem, NanoOption, NanoRange, NanoRating, NanoResizeObserve, NanoSelect, NanoSkeleton, NanoSlide, NanoSlides, NanoSpinner, NanoSplitPane, NanoSticker, NanoTab, NanoTabContent, NanoTabGroup, NanoTooltip, defineCustomElements, nanoCreateDialog, debounce$2 as nanoDebounce, raf as nanoRaf, nanoShowAlert, nanoShowToast, throttle
|
27518
|
+
export { NanoAccordion, NanoAlert, NanoAlgolia, NanoAlgoliaFilter, NanoAlgoliaInput, NanoAlgoliaPagination, NanoAlgoliaResults, NanoAspectRatio, NanoCheckbox, NanoCheckboxGroup, NanoDatalist, NanoDateInput, NanoDatePicker, NanoDetails, NanoDialog, NanoDrawer, NanoDropdown, NanoFieldValidator, NanoFileUpload, NanoGlobalNav, NanoGlobalSearchResults, NanoGrid, NanoGridItem, NanoHero, NanoIcon, NanoIconButton, NanoImg, NanoInput, NanoMenu, NanoMenuDrawer, NanoNavItem, NanoOption, NanoRange, NanoRating, NanoResizeObserve, NanoSelect, NanoSkeleton, NanoSlide, NanoSlides, NanoSpinner, NanoSplitPane, NanoSticker, NanoTab, NanoTabContent, NanoTabGroup, NanoTooltip, defineCustomElements, nanoCreateDialog, debounce$2 as nanoDebounce, raf as nanoRaf, nanoShowAlert, nanoShowToast, throttle as nanoThrottle, setAssetPath, setPlatformOptions };
|
29416
27519
|
|
29417
27520
|
//# sourceMappingURL=index.js.map
|