@watermarkinsights/ripple 3.25.0 → 3.25.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/chartFunctions-2f04ab6a.js +0 -2
- package/dist/cjs/functions-d2d99997.js +0 -2
- package/dist/{esm/global-3d0ef32b.js → cjs/global-6acc957f.js} +3 -3
- package/dist/cjs/http-service-9e8c4dd5.js +0 -2
- package/dist/cjs/index-1f84c034.js +0 -2
- package/dist/cjs/index.cjs.js +0 -2
- package/dist/cjs/interfaces-30a74c1f.js +0 -2
- package/dist/cjs/intl-a1ccf587.js +0 -2
- package/dist/cjs/loader.cjs.js +1 -3
- package/dist/cjs/priv-chart-popover.cjs.entry.js +0 -2
- package/dist/cjs/priv-datepicker.cjs.entry.js +0 -2
- package/dist/cjs/priv-navigator-button.cjs.entry.js +0 -2
- package/dist/cjs/priv-navigator-item.cjs.entry.js +0 -2
- package/dist/cjs/ripple.cjs.js +1 -3
- package/dist/cjs/wm-action-menu_2.cjs.entry.js +0 -2
- package/dist/cjs/wm-button.cjs.entry.js +0 -2
- package/dist/cjs/wm-chart-slice.cjs.entry.js +0 -2
- package/dist/cjs/wm-chart.cjs.entry.js +0 -2
- package/dist/cjs/wm-datepicker.cjs.entry.js +0 -2
- package/dist/cjs/wm-file-list.cjs.entry.js +0 -2
- package/dist/cjs/wm-file.cjs.entry.js +0 -2
- package/dist/cjs/wm-input.cjs.entry.js +0 -2
- package/dist/cjs/wm-modal-footer.cjs.entry.js +0 -2
- package/dist/cjs/wm-modal-header.cjs.entry.js +0 -2
- package/dist/cjs/wm-modal.cjs.entry.js +0 -2
- package/dist/cjs/wm-navigation_3.cjs.entry.js +0 -2
- package/dist/cjs/wm-navigator.cjs.entry.js +0 -2
- package/dist/cjs/wm-network-uploader.cjs.entry.js +0 -2
- package/dist/cjs/wm-option_2.cjs.entry.js +0 -2
- package/dist/cjs/wm-pagination.cjs.entry.js +0 -2
- package/dist/cjs/wm-progress-indicator_3.cjs.entry.js +0 -2
- package/dist/cjs/wm-search.cjs.entry.js +0 -2
- package/dist/cjs/wm-snackbar.cjs.entry.js +0 -2
- package/dist/cjs/wm-tab-item_3.cjs.entry.js +0 -2
- package/dist/cjs/wm-tag-input-row.cjs.entry.js +0 -2
- package/dist/cjs/wm-tag-input.cjs.entry.js +0 -2
- package/dist/cjs/wm-timepicker.cjs.entry.js +0 -2
- package/dist/cjs/wm-toggletip.cjs.entry.js +0 -2
- package/dist/cjs/wm-uploader.cjs.entry.js +0 -2
- package/dist/cjs/wm-wrapper.cjs.entry.js +0 -2
- package/dist/collection/components/charts/chartFunctions.js +0 -1
- package/dist/collection/components/charts/priv-chart-popover/priv-chart-popover.js +0 -1
- package/dist/collection/components/charts/wm-chart/wm-chart-slice.js +0 -1
- package/dist/collection/components/charts/wm-chart/wm-chart.js +0 -1
- package/dist/collection/components/charts/wm-progress-monitor/wm-progress-indicator.js +0 -1
- package/dist/collection/components/charts/wm-progress-monitor/wm-progress-monitor.js +0 -1
- package/dist/collection/components/charts/wm-progress-monitor/wm-progress-slice.js +0 -1
- package/dist/collection/components/wm-action-menu/wm-action-menu.js +0 -1
- package/dist/collection/components/wm-button/wm-button.js +0 -1
- package/dist/collection/components/wm-datepicker/priv-datepicker/priv-datepicker.js +0 -1
- package/dist/collection/components/wm-datepicker/wm-datepicker.js +0 -1
- package/dist/collection/components/wm-file/wm-file.js +0 -1
- package/dist/collection/components/wm-file-list/wm-file-list.js +0 -1
- package/dist/collection/components/wm-input/wm-input.js +0 -1
- package/dist/collection/components/wm-menuitem/wm-menuitem.js +0 -1
- package/dist/collection/components/wm-modal/wm-modal-footer.js +0 -1
- package/dist/collection/components/wm-modal/wm-modal-header.js +0 -1
- package/dist/collection/components/wm-modal/wm-modal.js +0 -1
- package/dist/collection/components/wm-navigation/wm-navigation-hamburger.js +0 -1
- package/dist/collection/components/wm-navigation/wm-navigation-item.js +0 -1
- package/dist/collection/components/wm-navigation/wm-navigation.js +0 -1
- package/dist/collection/components/wm-navigator/priv-navigator-button/priv-navigator-button.js +0 -1
- package/dist/collection/components/wm-navigator/priv-navigator-item/priv-navigator-item.js +0 -1
- package/dist/collection/components/wm-navigator/wm-navigator.js +0 -1
- package/dist/collection/components/wm-option/wm-option.js +0 -1
- package/dist/collection/components/wm-pagination/wm-pagination.js +0 -1
- package/dist/collection/components/wm-search/wm-search.js +0 -1
- package/dist/collection/components/wm-select/wm-select.js +0 -1
- package/dist/collection/components/wm-snackbar/wm-snackbar.js +0 -1
- package/dist/collection/components/wm-tabs/wm-tab-item/wm-tab-item.js +0 -1
- package/dist/collection/components/wm-tabs/wm-tab-list/wm-tab-list.js +0 -1
- package/dist/collection/components/wm-tabs/wm-tab-panel/wm-tab-panel.js +0 -1
- package/dist/collection/components/wm-tag-input/wm-tag-input-row/wm-tag-input-row.js +0 -1
- package/dist/collection/components/wm-tag-input/wm-tag-input.js +0 -1
- package/dist/collection/components/wm-timepicker/wm-timepicker.js +0 -1
- package/dist/collection/components/wm-toggletip/wm-toggletip.js +0 -1
- package/dist/collection/components/wm-uploader/wm-network-uploader/wm-network-uploader.js +0 -1
- package/dist/collection/components/wm-uploader/wm-uploader.js +0 -1
- package/dist/collection/components/wm-wrapper/wm-wrapper.js +0 -1
- package/dist/collection/global/__mocks__/functions.js +0 -1
- package/dist/collection/global/functions.js +0 -1
- package/dist/collection/global/global.js +0 -1
- package/dist/collection/global/interfaces.js +0 -1
- package/dist/collection/global/intl.js +0 -1
- package/dist/collection/global/services/__mocks__/http-service.js +0 -1
- package/dist/collection/global/services/http-service.js +0 -1
- package/dist/collection/lang/lang.js +0 -1
- package/dist/esm/chartFunctions-a72f5835.js +0 -2
- package/dist/esm/functions-dc9964aa.js +0 -2
- package/dist/{cjs/global-d0584d18.js → esm/global-df3a199e.js} +1 -5
- package/dist/esm/http-service-5d037e16.js +0 -2
- package/dist/esm/index-84a6ae22.js +0 -2
- package/dist/esm/index.js +0 -2
- package/dist/esm/interfaces-61c6305b.js +0 -2
- package/dist/esm/intl-4d4826dd.js +0 -2
- package/dist/esm/loader.js +1 -3
- package/dist/esm/priv-chart-popover.entry.js +0 -2
- package/dist/esm/priv-datepicker.entry.js +0 -2
- package/dist/esm/priv-navigator-button.entry.js +0 -2
- package/dist/esm/priv-navigator-item.entry.js +0 -2
- package/dist/esm/ripple.js +1 -3
- package/dist/esm/wm-action-menu_2.entry.js +0 -2
- package/dist/esm/wm-button.entry.js +0 -2
- package/dist/esm/wm-chart-slice.entry.js +0 -2
- package/dist/esm/wm-chart.entry.js +0 -2
- package/dist/esm/wm-datepicker.entry.js +0 -2
- package/dist/esm/wm-file-list.entry.js +0 -2
- package/dist/esm/wm-file.entry.js +0 -2
- package/dist/esm/wm-input.entry.js +0 -2
- package/dist/esm/wm-modal-footer.entry.js +0 -2
- package/dist/esm/wm-modal-header.entry.js +0 -2
- package/dist/esm/wm-modal.entry.js +0 -2
- package/dist/esm/wm-navigation_3.entry.js +0 -2
- package/dist/esm/wm-navigator.entry.js +0 -2
- package/dist/esm/wm-network-uploader.entry.js +0 -2
- package/dist/esm/wm-option_2.entry.js +0 -2
- package/dist/esm/wm-pagination.entry.js +0 -2
- package/dist/esm/wm-progress-indicator_3.entry.js +0 -2
- package/dist/esm/wm-search.entry.js +0 -2
- package/dist/esm/wm-snackbar.entry.js +0 -2
- package/dist/esm/wm-tab-item_3.entry.js +0 -2
- package/dist/esm/wm-tag-input-row.entry.js +0 -2
- package/dist/esm/wm-tag-input.entry.js +0 -2
- package/dist/esm/wm-timepicker.entry.js +0 -2
- package/dist/esm/wm-toggletip.entry.js +0 -2
- package/dist/esm/wm-uploader.entry.js +0 -2
- package/dist/esm/wm-wrapper.entry.js +0 -2
- package/dist/esm-es5/chartFunctions-a72f5835.js +1 -2
- package/dist/esm-es5/functions-dc9964aa.js +1 -2
- package/dist/esm-es5/{global-3d0ef32b.js → global-df3a199e.js} +1 -2
- package/dist/esm-es5/http-service-5d037e16.js +1 -2
- package/dist/esm-es5/index-84a6ae22.js +1 -2
- package/dist/esm-es5/index.js +0 -2
- package/dist/esm-es5/interfaces-61c6305b.js +1 -2
- package/dist/esm-es5/intl-4d4826dd.js +1 -2
- package/dist/esm-es5/loader.js +1 -2
- package/dist/esm-es5/priv-chart-popover.entry.js +1 -2
- package/dist/esm-es5/priv-datepicker.entry.js +1 -2
- package/dist/esm-es5/priv-navigator-button.entry.js +1 -2
- package/dist/esm-es5/priv-navigator-item.entry.js +1 -2
- package/dist/esm-es5/ripple.js +1 -2
- package/dist/esm-es5/wm-action-menu_2.entry.js +1 -2
- package/dist/esm-es5/wm-button.entry.js +1 -2
- package/dist/esm-es5/wm-chart-slice.entry.js +1 -2
- package/dist/esm-es5/wm-chart.entry.js +1 -2
- package/dist/esm-es5/wm-datepicker.entry.js +1 -2
- package/dist/esm-es5/wm-file-list.entry.js +1 -2
- package/dist/esm-es5/wm-file.entry.js +1 -2
- package/dist/esm-es5/wm-input.entry.js +1 -2
- package/dist/esm-es5/wm-modal-footer.entry.js +1 -2
- package/dist/esm-es5/wm-modal-header.entry.js +1 -2
- package/dist/esm-es5/wm-modal.entry.js +1 -2
- package/dist/esm-es5/wm-navigation_3.entry.js +1 -2
- package/dist/esm-es5/wm-navigator.entry.js +1 -2
- package/dist/esm-es5/wm-network-uploader.entry.js +1 -2
- package/dist/esm-es5/wm-option_2.entry.js +1 -2
- package/dist/esm-es5/wm-pagination.entry.js +1 -2
- package/dist/esm-es5/wm-progress-indicator_3.entry.js +1 -2
- package/dist/esm-es5/wm-search.entry.js +1 -2
- package/dist/esm-es5/wm-snackbar.entry.js +1 -2
- package/dist/esm-es5/wm-tab-item_3.entry.js +1 -2
- package/dist/esm-es5/wm-tag-input-row.entry.js +1 -2
- package/dist/esm-es5/wm-tag-input.entry.js +1 -2
- package/dist/esm-es5/wm-timepicker.entry.js +1 -2
- package/dist/esm-es5/wm-toggletip.entry.js +1 -2
- package/dist/esm-es5/wm-uploader.entry.js +1 -2
- package/dist/esm-es5/wm-wrapper.entry.js +1 -2
- package/dist/ripple/index.esm.js +0 -2
- package/dist/ripple/p-0088b69e.entry.js +1 -0
- package/dist/ripple/p-03dc49f5.entry.js +1 -0
- package/dist/ripple/p-04ae66fd.system.entry.js +1 -2
- package/dist/ripple/p-08b7ec08.system.js +1 -2
- package/dist/ripple/p-0cd13c7d.system.entry.js +1 -2
- package/dist/ripple/p-0eb7b1b7.system.entry.js +1 -2
- package/dist/ripple/p-1c23de4a.js +2 -3
- package/dist/ripple/p-1fd20e05.system.entry.js +1 -2
- package/dist/ripple/p-23fa1ff6.system.entry.js +1 -2
- package/dist/ripple/{p-c68b3798.system.js → p-2420f4a7.system.js} +1 -2
- package/dist/ripple/p-24a4cb11.system.entry.js +1 -2
- package/dist/ripple/p-2c2a7092.system.entry.js +1 -2
- package/dist/ripple/p-2e6cb291.entry.js +1 -0
- package/dist/ripple/p-313b6073.system.js +1 -2
- package/dist/ripple/p-32a0290e.entry.js +1 -0
- package/dist/ripple/p-33558ec4.system.entry.js +1 -2
- package/dist/ripple/p-33ec18d4.system.entry.js +1 -2
- package/dist/ripple/p-3759b7af.system.entry.js +1 -2
- package/dist/ripple/p-38449dff.system.entry.js +1 -2
- package/dist/ripple/p-3869a69e.system.entry.js +1 -2
- package/dist/ripple/p-41317448.entry.js +1 -0
- package/dist/ripple/p-42678edc.entry.js +1 -0
- package/dist/ripple/p-43087c29.entry.js +1 -0
- package/dist/ripple/p-4a06d0a9.system.entry.js +1 -2
- package/dist/ripple/p-4d95f00e.entry.js +1 -0
- package/dist/ripple/p-4da9a006.entry.js +1 -0
- package/dist/ripple/p-4fc5e960.entry.js +1 -0
- package/dist/ripple/p-50ea2036.system.js +1 -2
- package/dist/ripple/p-53dc8244.js +1 -0
- package/dist/ripple/p-54750f05.entry.js +1 -0
- package/dist/ripple/p-5f8ab2e0.entry.js +1 -0
- package/dist/ripple/p-62db31c4.entry.js +1 -0
- package/dist/ripple/p-6bb88663.entry.js +1 -0
- package/dist/ripple/p-6ff7d4ff.entry.js +1 -0
- package/dist/ripple/p-7b2fc615.system.js +1 -2
- package/dist/ripple/p-833c622f.system.entry.js +1 -2
- package/dist/ripple/p-8613600d.system.entry.js +1 -2
- package/dist/ripple/p-888bec42.js +1 -2
- package/dist/ripple/p-8909ff66.entry.js +1 -0
- package/dist/ripple/p-8c51e9f8.system.entry.js +1 -2
- package/dist/ripple/p-91deb45f.system.entry.js +1 -2
- package/dist/ripple/p-9338011f.system.entry.js +1 -2
- package/dist/ripple/p-976b2789.system.entry.js +1 -2
- package/dist/ripple/p-994303f2.js +1 -2
- package/dist/ripple/p-9ad1819e.entry.js +1 -0
- package/dist/ripple/p-9b2dfb54.js +1 -2
- package/dist/ripple/p-a6d64d8a.system.entry.js +1 -2
- package/dist/ripple/p-a6d6eae7.js +1 -2
- package/dist/ripple/p-a73cf968.system.entry.js +1 -2
- package/dist/ripple/p-abf0a64f.entry.js +1 -0
- package/dist/ripple/p-aed625c1.system.entry.js +1 -2
- package/dist/ripple/{p-4391166c.entry.js → p-b0bc9fd4.entry.js} +1 -2
- package/dist/ripple/p-b5b521e4.system.entry.js +1 -2
- package/dist/ripple/p-b5ffe399.entry.js +1 -0
- package/dist/ripple/p-b7451e73.system.entry.js +1 -2
- package/dist/ripple/p-bafdcb4e.system.entry.js +1 -2
- package/dist/ripple/p-bd84628c.system.entry.js +1 -2
- package/dist/ripple/p-beac2d5d.entry.js +1 -0
- package/dist/ripple/p-bfb35465.entry.js +1 -0
- package/dist/ripple/p-c36002b6.system.js +1 -2
- package/dist/ripple/p-c6a0f7e5.js +1 -2
- package/dist/ripple/p-c733a478.entry.js +1 -0
- package/dist/ripple/p-d2c26e15.entry.js +1 -0
- package/dist/ripple/p-d81bea1e.entry.js +1 -0
- package/dist/ripple/p-d8bae6cb.entry.js +1 -0
- package/dist/ripple/p-d9d21df5.entry.js +1 -0
- package/dist/ripple/p-dbfd1640.system.entry.js +1 -2
- package/dist/ripple/{p-0826dc64.system.js → p-dc80494f.system.js} +1 -2
- package/dist/ripple/p-e2d947db.entry.js +1 -0
- package/dist/ripple/p-e8b38f36.entry.js +1 -0
- package/dist/ripple/p-f0fd8695.system.js +1 -2
- package/dist/ripple/p-f312d59a.system.entry.js +1 -2
- package/dist/ripple/p-f59a495a.system.entry.js +1 -2
- package/dist/ripple/p-f80eb8a5.system.js +1 -2
- package/dist/ripple/p-fb5fe2bd.entry.js +1 -0
- package/dist/ripple/p-fb67c39e.system.entry.js +1 -2
- package/dist/ripple/ripple.esm.js +1 -2
- package/dist/ripple/ripple.js +1 -1
- package/package.json +1 -1
- package/dist/cjs/chartFunctions-2f04ab6a.js.map +0 -1
- package/dist/cjs/functions-d2d99997.js.map +0 -1
- package/dist/cjs/global-d0584d18.js.map +0 -1
- package/dist/cjs/http-service-9e8c4dd5.js.map +0 -1
- package/dist/cjs/index-1f84c034.js.map +0 -1
- package/dist/cjs/index.cjs.js.map +0 -1
- package/dist/cjs/interfaces-30a74c1f.js.map +0 -1
- package/dist/cjs/intl-a1ccf587.js.map +0 -1
- package/dist/cjs/loader.cjs.js.map +0 -1
- package/dist/cjs/priv-chart-popover.cjs.entry.js.map +0 -1
- package/dist/cjs/priv-datepicker.cjs.entry.js.map +0 -1
- package/dist/cjs/priv-navigator-button.cjs.entry.js.map +0 -1
- package/dist/cjs/priv-navigator-item.cjs.entry.js.map +0 -1
- package/dist/cjs/ripple.cjs.js.map +0 -1
- package/dist/cjs/wm-action-menu_2.cjs.entry.js.map +0 -1
- package/dist/cjs/wm-button.cjs.entry.js.map +0 -1
- package/dist/cjs/wm-chart-slice.cjs.entry.js.map +0 -1
- package/dist/cjs/wm-chart.cjs.entry.js.map +0 -1
- package/dist/cjs/wm-datepicker.cjs.entry.js.map +0 -1
- package/dist/cjs/wm-file-list.cjs.entry.js.map +0 -1
- package/dist/cjs/wm-file.cjs.entry.js.map +0 -1
- package/dist/cjs/wm-input.cjs.entry.js.map +0 -1
- package/dist/cjs/wm-modal-footer.cjs.entry.js.map +0 -1
- package/dist/cjs/wm-modal-header.cjs.entry.js.map +0 -1
- package/dist/cjs/wm-modal.cjs.entry.js.map +0 -1
- package/dist/cjs/wm-navigation_3.cjs.entry.js.map +0 -1
- package/dist/cjs/wm-navigator.cjs.entry.js.map +0 -1
- package/dist/cjs/wm-network-uploader.cjs.entry.js.map +0 -1
- package/dist/cjs/wm-option_2.cjs.entry.js.map +0 -1
- package/dist/cjs/wm-pagination.cjs.entry.js.map +0 -1
- package/dist/cjs/wm-progress-indicator_3.cjs.entry.js.map +0 -1
- package/dist/cjs/wm-search.cjs.entry.js.map +0 -1
- package/dist/cjs/wm-snackbar.cjs.entry.js.map +0 -1
- package/dist/cjs/wm-tab-item_3.cjs.entry.js.map +0 -1
- package/dist/cjs/wm-tag-input-row.cjs.entry.js.map +0 -1
- package/dist/cjs/wm-tag-input.cjs.entry.js.map +0 -1
- package/dist/cjs/wm-timepicker.cjs.entry.js.map +0 -1
- package/dist/cjs/wm-toggletip.cjs.entry.js.map +0 -1
- package/dist/cjs/wm-uploader.cjs.entry.js.map +0 -1
- package/dist/cjs/wm-wrapper.cjs.entry.js.map +0 -1
- package/dist/collection/components/charts/chartFunctions.js.map +0 -1
- package/dist/collection/components/charts/priv-chart-popover/priv-chart-popover.js.map +0 -1
- package/dist/collection/components/charts/wm-chart/wm-chart-slice.js.map +0 -1
- package/dist/collection/components/charts/wm-chart/wm-chart.js.map +0 -1
- package/dist/collection/components/charts/wm-progress-monitor/wm-progress-indicator.js.map +0 -1
- package/dist/collection/components/charts/wm-progress-monitor/wm-progress-monitor.js.map +0 -1
- package/dist/collection/components/charts/wm-progress-monitor/wm-progress-slice.js.map +0 -1
- package/dist/collection/components/wm-action-menu/wm-action-menu.js.map +0 -1
- package/dist/collection/components/wm-button/wm-button.js.map +0 -1
- package/dist/collection/components/wm-datepicker/priv-datepicker/priv-datepicker.js.map +0 -1
- package/dist/collection/components/wm-datepicker/wm-datepicker.js.map +0 -1
- package/dist/collection/components/wm-file/wm-file.js.map +0 -1
- package/dist/collection/components/wm-file-list/wm-file-list.js.map +0 -1
- package/dist/collection/components/wm-input/wm-input.js.map +0 -1
- package/dist/collection/components/wm-menuitem/wm-menuitem.js.map +0 -1
- package/dist/collection/components/wm-modal/wm-modal-footer.js.map +0 -1
- package/dist/collection/components/wm-modal/wm-modal-header.js.map +0 -1
- package/dist/collection/components/wm-modal/wm-modal.js.map +0 -1
- package/dist/collection/components/wm-navigation/wm-navigation-hamburger.js.map +0 -1
- package/dist/collection/components/wm-navigation/wm-navigation-item.js.map +0 -1
- package/dist/collection/components/wm-navigation/wm-navigation.js.map +0 -1
- package/dist/collection/components/wm-navigator/priv-navigator-button/priv-navigator-button.js.map +0 -1
- package/dist/collection/components/wm-navigator/priv-navigator-item/priv-navigator-item.js.map +0 -1
- package/dist/collection/components/wm-navigator/wm-navigator.js.map +0 -1
- package/dist/collection/components/wm-option/wm-option.js.map +0 -1
- package/dist/collection/components/wm-pagination/wm-pagination.js.map +0 -1
- package/dist/collection/components/wm-search/wm-search.js.map +0 -1
- package/dist/collection/components/wm-select/wm-select.js.map +0 -1
- package/dist/collection/components/wm-snackbar/wm-snackbar.js.map +0 -1
- package/dist/collection/components/wm-tabs/wm-tab-item/wm-tab-item.js.map +0 -1
- package/dist/collection/components/wm-tabs/wm-tab-list/wm-tab-list.js.map +0 -1
- package/dist/collection/components/wm-tabs/wm-tab-panel/wm-tab-panel.js.map +0 -1
- package/dist/collection/components/wm-tag-input/wm-tag-input-row/wm-tag-input-row.js.map +0 -1
- package/dist/collection/components/wm-tag-input/wm-tag-input.js.map +0 -1
- package/dist/collection/components/wm-timepicker/wm-timepicker.js.map +0 -1
- package/dist/collection/components/wm-toggletip/wm-toggletip.js.map +0 -1
- package/dist/collection/components/wm-uploader/wm-network-uploader/wm-network-uploader.js.map +0 -1
- package/dist/collection/components/wm-uploader/wm-uploader.js.map +0 -1
- package/dist/collection/components/wm-wrapper/wm-wrapper.js.map +0 -1
- package/dist/collection/global/__mocks__/functions.js.map +0 -1
- package/dist/collection/global/functions.js.map +0 -1
- package/dist/collection/global/global.js.map +0 -1
- package/dist/collection/global/interfaces.js.map +0 -1
- package/dist/collection/global/intl.js.map +0 -1
- package/dist/collection/global/services/__mocks__/http-service.js.map +0 -1
- package/dist/collection/global/services/http-service.js.map +0 -1
- package/dist/collection/lang/lang.js.map +0 -1
- package/dist/esm/chartFunctions-a72f5835.js.map +0 -1
- package/dist/esm/functions-dc9964aa.js.map +0 -1
- package/dist/esm/global-3d0ef32b.js.map +0 -1
- package/dist/esm/http-service-5d037e16.js.map +0 -1
- package/dist/esm/index-84a6ae22.js.map +0 -1
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/interfaces-61c6305b.js.map +0 -1
- package/dist/esm/intl-4d4826dd.js.map +0 -1
- package/dist/esm/loader.js.map +0 -1
- package/dist/esm/priv-chart-popover.entry.js.map +0 -1
- package/dist/esm/priv-datepicker.entry.js.map +0 -1
- package/dist/esm/priv-navigator-button.entry.js.map +0 -1
- package/dist/esm/priv-navigator-item.entry.js.map +0 -1
- package/dist/esm/ripple.js.map +0 -1
- package/dist/esm/wm-action-menu_2.entry.js.map +0 -1
- package/dist/esm/wm-button.entry.js.map +0 -1
- package/dist/esm/wm-chart-slice.entry.js.map +0 -1
- package/dist/esm/wm-chart.entry.js.map +0 -1
- package/dist/esm/wm-datepicker.entry.js.map +0 -1
- package/dist/esm/wm-file-list.entry.js.map +0 -1
- package/dist/esm/wm-file.entry.js.map +0 -1
- package/dist/esm/wm-input.entry.js.map +0 -1
- package/dist/esm/wm-modal-footer.entry.js.map +0 -1
- package/dist/esm/wm-modal-header.entry.js.map +0 -1
- package/dist/esm/wm-modal.entry.js.map +0 -1
- package/dist/esm/wm-navigation_3.entry.js.map +0 -1
- package/dist/esm/wm-navigator.entry.js.map +0 -1
- package/dist/esm/wm-network-uploader.entry.js.map +0 -1
- package/dist/esm/wm-option_2.entry.js.map +0 -1
- package/dist/esm/wm-pagination.entry.js.map +0 -1
- package/dist/esm/wm-progress-indicator_3.entry.js.map +0 -1
- package/dist/esm/wm-search.entry.js.map +0 -1
- package/dist/esm/wm-snackbar.entry.js.map +0 -1
- package/dist/esm/wm-tab-item_3.entry.js.map +0 -1
- package/dist/esm/wm-tag-input-row.entry.js.map +0 -1
- package/dist/esm/wm-tag-input.entry.js.map +0 -1
- package/dist/esm/wm-timepicker.entry.js.map +0 -1
- package/dist/esm/wm-toggletip.entry.js.map +0 -1
- package/dist/esm/wm-uploader.entry.js.map +0 -1
- package/dist/esm/wm-wrapper.entry.js.map +0 -1
- package/dist/esm-es5/chartFunctions-a72f5835.js.map +0 -1
- package/dist/esm-es5/functions-dc9964aa.js.map +0 -1
- package/dist/esm-es5/global-3d0ef32b.js.map +0 -1
- package/dist/esm-es5/http-service-5d037e16.js.map +0 -1
- package/dist/esm-es5/index-84a6ae22.js.map +0 -1
- package/dist/esm-es5/index.js.map +0 -1
- package/dist/esm-es5/interfaces-61c6305b.js.map +0 -1
- package/dist/esm-es5/intl-4d4826dd.js.map +0 -1
- package/dist/esm-es5/loader.js.map +0 -1
- package/dist/esm-es5/priv-chart-popover.entry.js.map +0 -1
- package/dist/esm-es5/priv-datepicker.entry.js.map +0 -1
- package/dist/esm-es5/priv-navigator-button.entry.js.map +0 -1
- package/dist/esm-es5/priv-navigator-item.entry.js.map +0 -1
- package/dist/esm-es5/ripple.js.map +0 -1
- package/dist/esm-es5/wm-action-menu_2.entry.js.map +0 -1
- package/dist/esm-es5/wm-button.entry.js.map +0 -1
- package/dist/esm-es5/wm-chart-slice.entry.js.map +0 -1
- package/dist/esm-es5/wm-chart.entry.js.map +0 -1
- package/dist/esm-es5/wm-datepicker.entry.js.map +0 -1
- package/dist/esm-es5/wm-file-list.entry.js.map +0 -1
- package/dist/esm-es5/wm-file.entry.js.map +0 -1
- package/dist/esm-es5/wm-input.entry.js.map +0 -1
- package/dist/esm-es5/wm-modal-footer.entry.js.map +0 -1
- package/dist/esm-es5/wm-modal-header.entry.js.map +0 -1
- package/dist/esm-es5/wm-modal.entry.js.map +0 -1
- package/dist/esm-es5/wm-navigation_3.entry.js.map +0 -1
- package/dist/esm-es5/wm-navigator.entry.js.map +0 -1
- package/dist/esm-es5/wm-network-uploader.entry.js.map +0 -1
- package/dist/esm-es5/wm-option_2.entry.js.map +0 -1
- package/dist/esm-es5/wm-pagination.entry.js.map +0 -1
- package/dist/esm-es5/wm-progress-indicator_3.entry.js.map +0 -1
- package/dist/esm-es5/wm-search.entry.js.map +0 -1
- package/dist/esm-es5/wm-snackbar.entry.js.map +0 -1
- package/dist/esm-es5/wm-tab-item_3.entry.js.map +0 -1
- package/dist/esm-es5/wm-tag-input-row.entry.js.map +0 -1
- package/dist/esm-es5/wm-tag-input.entry.js.map +0 -1
- package/dist/esm-es5/wm-timepicker.entry.js.map +0 -1
- package/dist/esm-es5/wm-toggletip.entry.js.map +0 -1
- package/dist/esm-es5/wm-uploader.entry.js.map +0 -1
- package/dist/esm-es5/wm-wrapper.entry.js.map +0 -1
- package/dist/ripple/index.esm.js.map +0 -1
- package/dist/ripple/p-002d067e.entry.js +0 -2
- package/dist/ripple/p-002d067e.entry.js.map +0 -1
- package/dist/ripple/p-02a1000a.entry.js +0 -2
- package/dist/ripple/p-02a1000a.entry.js.map +0 -1
- package/dist/ripple/p-04ae66fd.system.entry.js.map +0 -1
- package/dist/ripple/p-0826dc64.system.js.map +0 -1
- package/dist/ripple/p-08b7ec08.system.js.map +0 -1
- package/dist/ripple/p-0ad3a708.entry.js +0 -2
- package/dist/ripple/p-0ad3a708.entry.js.map +0 -1
- package/dist/ripple/p-0cd13c7d.system.entry.js.map +0 -1
- package/dist/ripple/p-0d7bccf7.entry.js +0 -2
- package/dist/ripple/p-0d7bccf7.entry.js.map +0 -1
- package/dist/ripple/p-0eb7b1b7.system.entry.js.map +0 -1
- package/dist/ripple/p-11124a23.entry.js +0 -2
- package/dist/ripple/p-11124a23.entry.js.map +0 -1
- package/dist/ripple/p-1808b90a.entry.js +0 -2
- package/dist/ripple/p-1808b90a.entry.js.map +0 -1
- package/dist/ripple/p-1c23de4a.js.map +0 -1
- package/dist/ripple/p-1fd20e05.system.entry.js.map +0 -1
- package/dist/ripple/p-23fa1ff6.system.entry.js.map +0 -1
- package/dist/ripple/p-24a4cb11.system.entry.js.map +0 -1
- package/dist/ripple/p-2c2a7092.system.entry.js.map +0 -1
- package/dist/ripple/p-313b6073.system.js.map +0 -1
- package/dist/ripple/p-33558ec4.system.entry.js.map +0 -1
- package/dist/ripple/p-33ec18d4.system.entry.js.map +0 -1
- package/dist/ripple/p-341aa131.entry.js +0 -2
- package/dist/ripple/p-341aa131.entry.js.map +0 -1
- package/dist/ripple/p-3759b7af.system.entry.js.map +0 -1
- package/dist/ripple/p-38449dff.system.entry.js.map +0 -1
- package/dist/ripple/p-384c4981.entry.js +0 -2
- package/dist/ripple/p-384c4981.entry.js.map +0 -1
- package/dist/ripple/p-3869a69e.system.entry.js.map +0 -1
- package/dist/ripple/p-4391166c.entry.js.map +0 -1
- package/dist/ripple/p-43be123d.entry.js +0 -2
- package/dist/ripple/p-43be123d.entry.js.map +0 -1
- package/dist/ripple/p-4a014591.entry.js +0 -2
- package/dist/ripple/p-4a014591.entry.js.map +0 -1
- package/dist/ripple/p-4a06d0a9.system.entry.js.map +0 -1
- package/dist/ripple/p-4e02e2ae.entry.js +0 -2
- package/dist/ripple/p-4e02e2ae.entry.js.map +0 -1
- package/dist/ripple/p-50ea2036.system.js.map +0 -1
- package/dist/ripple/p-56cd4d5e.entry.js +0 -2
- package/dist/ripple/p-56cd4d5e.entry.js.map +0 -1
- package/dist/ripple/p-59654f8e.entry.js +0 -2
- package/dist/ripple/p-59654f8e.entry.js.map +0 -1
- package/dist/ripple/p-5cc287d2.entry.js +0 -2
- package/dist/ripple/p-5cc287d2.entry.js.map +0 -1
- package/dist/ripple/p-7b2fc615.system.js.map +0 -1
- package/dist/ripple/p-7e0e6b00.entry.js +0 -2
- package/dist/ripple/p-7e0e6b00.entry.js.map +0 -1
- package/dist/ripple/p-833c622f.system.entry.js.map +0 -1
- package/dist/ripple/p-8613600d.system.entry.js.map +0 -1
- package/dist/ripple/p-888bec42.js.map +0 -1
- package/dist/ripple/p-889579fc.entry.js +0 -2
- package/dist/ripple/p-889579fc.entry.js.map +0 -1
- package/dist/ripple/p-8c51e9f8.system.entry.js.map +0 -1
- package/dist/ripple/p-8db604d2.entry.js +0 -2
- package/dist/ripple/p-8db604d2.entry.js.map +0 -1
- package/dist/ripple/p-91deb45f.system.entry.js.map +0 -1
- package/dist/ripple/p-9338011f.system.entry.js.map +0 -1
- package/dist/ripple/p-976b2789.system.entry.js.map +0 -1
- package/dist/ripple/p-994303f2.js.map +0 -1
- package/dist/ripple/p-9b2dfb54.js.map +0 -1
- package/dist/ripple/p-9b9eb944.entry.js +0 -2
- package/dist/ripple/p-9b9eb944.entry.js.map +0 -1
- package/dist/ripple/p-a6d64d8a.system.entry.js.map +0 -1
- package/dist/ripple/p-a6d6eae7.js.map +0 -1
- package/dist/ripple/p-a73cf968.system.entry.js.map +0 -1
- package/dist/ripple/p-aed625c1.system.entry.js.map +0 -1
- package/dist/ripple/p-b5b521e4.system.entry.js.map +0 -1
- package/dist/ripple/p-b7451e73.system.entry.js.map +0 -1
- package/dist/ripple/p-bafdcb4e.system.entry.js.map +0 -1
- package/dist/ripple/p-bb45e122.entry.js +0 -2
- package/dist/ripple/p-bb45e122.entry.js.map +0 -1
- package/dist/ripple/p-bd84628c.system.entry.js.map +0 -1
- package/dist/ripple/p-bf569af0.entry.js +0 -2
- package/dist/ripple/p-bf569af0.entry.js.map +0 -1
- package/dist/ripple/p-c094f6a8.entry.js +0 -2
- package/dist/ripple/p-c094f6a8.entry.js.map +0 -1
- package/dist/ripple/p-c36002b6.system.js.map +0 -1
- package/dist/ripple/p-c5bf7db8.entry.js +0 -2
- package/dist/ripple/p-c5bf7db8.entry.js.map +0 -1
- package/dist/ripple/p-c68b3798.system.js.map +0 -1
- package/dist/ripple/p-c6a0f7e5.js.map +0 -1
- package/dist/ripple/p-d46f5794.entry.js +0 -2
- package/dist/ripple/p-d46f5794.entry.js.map +0 -1
- package/dist/ripple/p-d48313e0.entry.js +0 -2
- package/dist/ripple/p-d48313e0.entry.js.map +0 -1
- package/dist/ripple/p-d939cb54.entry.js +0 -2
- package/dist/ripple/p-d939cb54.entry.js.map +0 -1
- package/dist/ripple/p-dbfd1640.system.entry.js.map +0 -1
- package/dist/ripple/p-e22854c1.entry.js +0 -2
- package/dist/ripple/p-e22854c1.entry.js.map +0 -1
- package/dist/ripple/p-e70bb79f.js +0 -2
- package/dist/ripple/p-e70bb79f.js.map +0 -1
- package/dist/ripple/p-ed82573a.entry.js +0 -2
- package/dist/ripple/p-ed82573a.entry.js.map +0 -1
- package/dist/ripple/p-f0fd8695.system.js.map +0 -1
- package/dist/ripple/p-f312d59a.system.entry.js.map +0 -1
- package/dist/ripple/p-f59a495a.system.entry.js.map +0 -1
- package/dist/ripple/p-f80eb8a5.system.js.map +0 -1
- package/dist/ripple/p-fb67c39e.system.entry.js.map +0 -1
- package/dist/ripple/p-fc08d5e1.entry.js +0 -2
- package/dist/ripple/p-fc08d5e1.entry.js.map +0 -1
- package/dist/ripple/p-fe7da854.entry.js +0 -2
- package/dist/ripple/p-fe7da854.entry.js.map +0 -1
- package/dist/ripple/ripple.esm.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["wmProgressIndicatorCss","ProgressIndicator","exports","this","uid","generateId","slicesDetails","barLabelsWidth","el","parentElement","Object","defineProperty","class_1","prototype","shadowRoot","querySelector","Array","from","querySelectorAll","mode","allChartsDetails","undefined","text","concat","label","subinfo","intl","formatMessage","id","defaultMessage","description","toggleTabbingOn","isTabbing","toggleTabbingOff","handleKeydown","ev","handleChartKeydown","call","componentWillLoad","_this","console","error","children","length","warn","addEventListener","detail","handleSliceUpdate","getDetails","_a","sent","forceUpdate","handleModeUpdate","renderBarOrDoughnut","total","renderStackedBar","renderDoughnut","render","h","Host","onBlur","exitChart","ref","componentWrapperEl","class","userIsNavigating","role","ariaLabelText","tabindex","chartRoleDescription","style","htmlFor","renderLegend","renderCompletionMessage","renderInstructionsText","wmProgressMonitorCss","ProgressMonitor","doughnutWidth","modeInitialized","debouncedUpdate","debounce","class_2","asNumber","parseToNum","breakpoint","asPixels","clientWidth","parsedBreakpoint","resizeObserver","ResizeObserver","observe","componentDidLoad","wmProgressMonitorModeChange","emit","componentWillUpdate","prevMode","num","asString","toString","withoutPx","replace","parseInt","keys","csvToArray","groupLegend","colors","bar","map","key","idx","legendItem","color","renderLegendItem","ProgressSlice","class_3","componentDidUpdate","wmProgressSliceUpdated"],"sources":["src/components/charts/wm-progress-monitor/wm-progress-indicator.scss?tag=wm-progress-indicator&encapsulation=shadow","src/components/charts/wm-progress-monitor/wm-progress-indicator.tsx","src/components/charts/wm-progress-monitor/wm-progress-monitor.scss?tag=wm-progress-monitor&encapsulation=shadow","src/components/charts/wm-progress-monitor/wm-progress-monitor.tsx","src/components/charts/wm-progress-monitor/wm-progress-slice.tsx"],"sourcesContent":[":host,\nwm-progress-indicator {\n @extend %chart-styles;\n}\n\n:host(:focus) {\n @extend %chart-focus-styles;\n}\n","import { Component, Element, h, Host, Prop, State, Listen, forceUpdate, Watch } from \"@stencil/core\";\nimport { ChartDetails } from \"../../../global/interfaces\";\nimport { generateId, intl } from \"../../../global/functions\";\nimport {\n exitChart,\n getDetails,\n handleChartKeydown,\n renderStackedBar,\n renderCompletionMessage,\n renderDoughnut,\n renderInstructionsText,\n renderLegend,\n allChartsDetails,\n} from \"../chartFunctions\";\n\n@Component({\n tag: \"wm-progress-indicator\",\n shadow: { delegatesFocus: true },\n styleUrl: \"wm-progress-indicator.scss\",\n})\nexport class ProgressIndicator {\n @Element() el!: HTMLWmProgressIndicatorElement;\n // @ts-ignore-- TS warns this is unused, but its needed in chartFunctions\n private componentWrapperEl!: HTMLDivElement;\n\n @Prop() label?: string;\n @Prop() subinfo?: string;\n @Prop() completionMessage?: string;\n @Prop() showLegend: boolean = true;\n\n @State() isTabbing: boolean = false;\n @State() mode?: \"doughnut\" | \"bar\";\n @State() userIsNavigating: boolean = false;\n\n private uid: string = generateId();\n private total!: number;\n // @ts-ignore-- TS warns this is unused, but its needed in the chartFunctions\n private slicesDetails: SliceDetails[] = [];\n private barLabelsWidth?: string = (this.el.parentElement as HTMLWmProgressMonitorElement).barLabelsWidth;\n\n get popoverEl() {\n return this.el.shadowRoot!.querySelector(\"priv-chart-popover\");\n }\n get sliceEls(): (SVGElement | HTMLElement)[] | undefined {\n return Array.from(this.el.shadowRoot!.querySelectorAll(\".segment\")) as HTMLElement[];\n }\n get chartDetails(): ChartDetails | undefined {\n return this.mode ? allChartsDetails[this.mode] : undefined;\n }\n get ariaLabelText() {\n let text = `${this.label}`;\n if (this.subinfo) {\n text += ` ${this.subinfo}`;\n }\n return text;\n }\n\n get chartRoleDescription(): string {\n return intl.formatMessage({\n id: \"chart.roleDescription\",\n defaultMessage: \"Interactive chart\",\n description: \"For screen readers only, a description clarifying the role of the chart widget\",\n });\n }\n\n @Listen(\"wmUserIsTabbing\", { target: \"window\" })\n toggleTabbingOn() {\n this.isTabbing = true;\n }\n\n @Listen(\"wmUserIsNotTabbing\", { target: \"window\" })\n toggleTabbingOff() {\n this.isTabbing = false;\n }\n\n @Listen(\"keydown\")\n handleKeydown(ev: KeyboardEvent) {\n handleChartKeydown.call(this, ev);\n }\n\n componentWillLoad() {\n if (!this.label) {\n console.error(\n \"For accessibility purposes, you must provide a label for the chart. See https://components.watermarkinsights.com/chart for more information.\"\n );\n }\n\n if (this.el.children.length !== 2) {\n console.warn(\"wm-progress-indicator component must have 2 wm-progress-slice children.\");\n }\n\n // Listen to parent for initial mode, and future changes\n this.el.parentElement!.addEventListener(\n \"wmProgressMonitorModeChange\",\n (ev) => (this.mode = (ev as CustomEvent).detail)\n );\n }\n\n @Listen(\"wmProgressSliceUpdated\")\n async handleSliceUpdate() {\n await getDetails.call(this, this.mode!);\n forceUpdate(this.el);\n }\n\n @Watch(\"mode\")\n handleModeUpdate() {\n if (this.mode) {\n getDetails.call(this, this.mode);\n }\n }\n\n renderBarOrDoughnut() {\n if (this.total > 0 && this.mode === \"bar\") {\n return renderStackedBar.call(this, this.mode!);\n } else {\n return renderDoughnut.call(this, this.mode!);\n }\n }\n\n render() {\n return (\n <Host onBlur={() => exitChart.call(this)}>\n <div\n ref={(el) => (this.componentWrapperEl = el as HTMLDivElement)}\n class={`component-wrapper ${this.mode} ${this.isTabbing && !this.userIsNavigating ? \"user-is-tabbing\" : \"\"}`}\n role=\"application\"\n aria-label={this.ariaLabelText}\n tabindex=\"0\"\n aria-roledescription={this.chartRoleDescription}\n aria-describedby={`chart-instructions`}\n >\n <label\n id={`label-${this.uid}`}\n class={`label ${this.barLabelsWidth && this.mode === \"bar\" ? \"custom-width\" : \"\"}`}\n style={{ \"--custom-label-width\": this.barLabelsWidth }}\n htmlFor={`graphic-${this.uid}`}\n >\n <span class=\"label-text\">{this.label}</span>\n {this.subinfo ? <span class=\"subinfo\">{this.subinfo}</span> : \"\"}\n </label>\n {this.mode && this.renderBarOrDoughnut()}\n {this.mode === \"doughnut\" ? renderLegend.call(this, this.mode) : \"\"}\n <priv-chart-popover class={this.isTabbing ? \"user-is-tabbing\" : \"\"}></priv-chart-popover>\n {this.mode === \"doughnut\" ? renderCompletionMessage.call(this) : \"\"}\n </div>\n {renderInstructionsText()}\n </Host>\n );\n }\n}\n",":host,\nwm-progress-monitor {\n display: flex;\n\n .legend-wrapper {\n @extend %chart-legend-styles;\n align-items: flex-start;\n padding: 0 1.25rem;\n }\n}\n\n:host(.row) {\n flex-direction: row;\n}\n\n:host(.column) {\n flex-direction: column;\n}\n","import { Component, h, Host, Element, Prop, Event, EventEmitter, forceUpdate } from \"@stencil/core\";\nimport { csvToArray, debounce } from \"../../../global/functions\";\nimport { renderLegendItem, allChartsDetails } from \"../chartFunctions\";\nimport { LegendItem } from \"../../../global/interfaces\";\n@Component({\n tag: \"wm-progress-monitor\",\n shadow: { delegatesFocus: true },\n styleUrl: \"wm-progress-monitor.scss\",\n})\nexport class ProgressMonitor {\n @Element() el!: HTMLWmProgressMonitorElement;\n @Prop() breakpoint?: number | string;\n @Prop() groupLegend?: string;\n @Prop() barLabelsWidth?: string;\n @Event() wmProgressMonitorModeChange!: EventEmitter;\n private doughnutWidth = 300;\n private prevMode?: string;\n private modeInitialized: boolean = false;\n\n get parsedBreakpoint() {\n const asNumber = this.parseToNum(this.breakpoint ? this.breakpoint : this.el.children.length);\n // if number < 20, it is treated as width in terms of # of indicators. Otherwise it is a pixel value\n // e.g. 4 -> 1200px, while 768 -> 768 px\n const asPixels = asNumber >= 20 ? asNumber : asNumber * this.doughnutWidth;\n return asPixels;\n }\n\n get mode(): \"doughnut\" | \"bar\" {\n return this.el.clientWidth > this.parsedBreakpoint ? \"doughnut\" : \"bar\";\n }\n\n componentWillLoad() {\n // rerender on resize in case layout needs to change\n const resizeObserver = new ResizeObserver(() => this.debouncedUpdate());\n resizeObserver.observe(this.el);\n }\n\n componentDidLoad() {\n // emit initial mode for Indicators, must happen post-load as this.el measurement is needed\n this.wmProgressMonitorModeChange.emit(this.mode);\n this.modeInitialized = true;\n }\n\n componentWillUpdate() {\n // store prevMode before every render except first to determine when it has changed\n if (this.prevMode !== this.mode) {\n this.wmProgressMonitorModeChange.emit(this.mode);\n }\n this.prevMode = this.mode;\n }\n\n debouncedUpdate = debounce(() => forceUpdate(this.el), 50);\n\n parseToNum(num: string | number): number {\n const asString = num.toString();\n const withoutPx = asString.replace(\"px\", \"\");\n return parseInt(withoutPx);\n }\n\n renderLegend() {\n const keys = csvToArray(this.groupLegend!);\n const colors = allChartsDetails.bar.colors;\n\n return (\n <div class=\"legend-wrapper\">\n <div class=\"legend\">\n {keys.map((key, idx) => {\n const legendItem: LegendItem = { key: key, color: colors[idx] };\n return renderLegendItem(legendItem);\n })}\n </div>\n </div>\n );\n }\n\n render() {\n return (\n <Host class={this.mode === \"doughnut\" ? \"row\" : \"column\"}>\n {/* don't render Indicators until mode is determined otherwise content flashes*/}\n {this.modeInitialized && this.groupLegend && this.mode === \"bar\" && this.renderLegend()}\n {this.modeInitialized && <slot />}\n </Host>\n );\n }\n}\n","import { Component, Prop, Event, EventEmitter } from \"@stencil/core\";\n\n@Component({\n tag: \"wm-progress-slice\",\n shadow: true,\n})\nexport class ProgressSlice {\n @Prop() legend?: string;\n @Prop() amount?: string;\n @Prop() popoverTitle?: string;\n @Prop() popoverText?: string;\n @Prop() popoverButtonText?: string;\n\n @Event() wmProgressSliceUpdated!: EventEmitter<void>;\n componentDidUpdate() {\n this.wmProgressSliceUpdated.emit();\n }\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["wmPaginationCss","Pagination","exports","this","totalPages","debouncedResize","debounce","_this","isLargeViewport","window","innerWidth","getMiddlePageNums","coreBtns","currentPage","undefined","class_1","prototype","toggleTabbingOn","isTabbing","toggleTabbingOff","maintainFocusOnNumberChange","el","requestAnimationFrame","shadowRoot","querySelector","focus","concat","handleResize","calculateTotalPages","Math","ceil","totalItems","itemsPerPage","componentWillLoad","Error","document","body","classList","contains","getElementById","updatePageDisplayed","pageNum","value","wmPaginationPageClicked","emit","pageClicked","srAnnouncement","getCurrentPagesInView","displayShortPagination","pages","i","push","displayPageNumber","displayLongPagination","view","__spreadArray","displayEllipsis","map","page","h","id","class","onClick","end","begin","renderLarge","disabled","renderSmall","width","height","xmlns","d","render"],"sources":["src/components/wm-pagination/wm-pagination.scss?tag=wm-pagination&encapsulation=shadow","src/components/wm-pagination/wm-pagination.tsx"],"sourcesContent":["nav .largescreen,\nnav .smallscreen {\n margin-bottom: rem-calc(10);\n @include displayFlex();\n @include alignItems(center);\n @include justifyContent(flex-end);\n @include type-level-4;\n\n .pageview {\n @include type-level-4;\n margin: rem-calc(0 10);\n }\n\n .paginationbtn {\n position: relative;\n @include box-shadow(none); // fix for Edge\n @include transition(none);\n border: none;\n color: $button-default-text;\n background-color: transparent;\n margin: 0;\n padding: 0;\n height: rem-calc(40);\n width: rem-calc(40);\n font-family: inherit;\n letter-spacing: 0.3px;\n font-size: rem-calc(14);\n font-weight: 500;\n cursor: pointer;\n text-transform: none; //For Edge\n\n svg * {\n fill: #565397;\n }\n\n &:hover:not([aria-current=\"page\"]):not([disabled]) {\n text-decoration: underline;\n }\n\n &:focus {\n outline: none;\n }\n\n &::-moz-focus-inner {\n border: 0;\n outline: none;\n }\n\n &[disabled] {\n color: #9f9f9f;\n pointer-events: none;\n svg * {\n fill: #9f9f9f;\n }\n }\n }\n\n .previousbtn {\n margin-right: rem-calc(10);\n width: auto !important;\n }\n\n .nextbtn {\n margin-left: rem-calc(10);\n margin-right: 0;\n width: auto !important;\n }\n\n .previousbtn,\n .nextbtn {\n @include transition(none);\n }\n\n .ellipsis {\n display: inline-block;\n width: rem-calc(40);\n text-align: center;\n }\n\n .pagebtncontainer {\n &.user-is-tabbing {\n :focus:not(.-disabled):not([aria-current=\"page\"]) {\n @include box-shadow(none); // fix for Edge\n\n &:before {\n position: absolute;\n content: \"\";\n height: auto;\n width: 16px;\n top: 0;\n bottom: 0;\n left: 12px;\n right: 0;\n background: linear-gradient(90deg, #3862e9 66%, transparent 0) repeat-x;\n background-size: 6px 2px;\n background-position: 0 2em;\n border-radius: 0;\n line-height: normal;\n }\n\n &.previousbtn:focus:before {\n left: 0 !important;\n }\n\n &.nextbtn:focus:before {\n left: 0 !important;\n }\n }\n\n [aria-current=\"page\"]:focus {\n @include focus-style;\n }\n }\n }\n}\n\nnav .largescreen {\n & .user-is-tabbing {\n :focus:not(.-disabled):not([aria-current=\"page\"]) {\n // to make focus indicator as wide as text \"previous\" and \"next\"\n &.previousbtn:focus:before {\n width: 56px !important;\n }\n &.nextbtn:focus:before {\n width: 32px !important;\n }\n }\n }\n .paginationbtn {\n &[aria-current=\"page\"] {\n @include border-radius(50%);\n @include box-shadow(0 2px 2px 0 rgba(87, 81, 149, 0.12), 0 2px 2px 0 rgba(0, 0, 0, 0.2));\n background-color: $button-primary-background;\n color: $button-primary-text;\n\n &:hover {\n @include box-shadow(0 4px 2px 0 rgba(87, 81, 149, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.2));\n background: mix(black, $button-primary-background, 10%);\n }\n }\n }\n}\n\n.sr-only {\n @include srOnly;\n}\n","import { h, Component, EventEmitter, Prop, Watch, Event, Element, Listen, State } from \"@stencil/core\";\nimport { debounce } from \"../../global/functions\";\n\n@Component({\n tag: \"wm-pagination\",\n styleUrl: \"wm-pagination.scss\",\n shadow: { delegatesFocus: true },\n})\nexport class Pagination {\n @Element() el!: any;\n\n @Prop() currentPage: number = 1;\n @Prop() totalItems?: number = undefined;\n @Prop() itemsPerPage?: number = undefined;\n @Prop() value = 1;\n @Prop() isLargeViewport: boolean = window.innerWidth > 600;\n @State() isTabbing: boolean = false;\n @State() srAnnouncement: string = \"\";\n\n private totalPages: number = 0;\n\n @Event() wmPaginationPageClicked!: EventEmitter<String>;\n @Event() pageClicked!: EventEmitter<String>; // deprecated in favor of wmPaginationPageClicked\n @Event() focusCurrentPage!: EventEmitter;\n\n @Listen(\"wmUserIsTabbing\", { target: \"window\" })\n toggleTabbingOn() {\n this.isTabbing = true;\n }\n\n @Listen(\"wmUserIsNotTabbing\", { target: \"window\" })\n toggleTabbingOff() {\n this.isTabbing = false;\n }\n\n maintainFocusOnNumberChange(el: \"previous\" | \"next\" | \"prev-arrow\" | \"next-arrow\" | \"page\") {\n window.requestAnimationFrame(() => {\n switch (el) {\n case \"previous\":\n this.currentPage === 1 && this.el.shadowRoot.querySelector(`button#wm-1`).focus(); //Only shift focus from previous button to page 1 if page 1 is reached, which disables previous button. Otherwise, maintain focus on previous button.\n break;\n case \"next\":\n this.currentPage === this.totalPages &&\n this.el.shadowRoot.querySelector(`button#wm-${this.totalPages}`).focus(); //Only shift focus from next button if last page is reached, disabling next button. Otherwise, maintain focus on next button.\n break;\n case \"prev-arrow\":\n this.currentPage === 1 && this.el.shadowRoot.querySelector(\"#next-arw\").focus(); //Only shift focus if page 1 is reached, disabling previous buttons. Otherwise, maintain focus on previous buttons.\n break;\n case \"next-arrow\":\n this.currentPage === this.totalPages && this.el.shadowRoot.querySelector(\"#previous-arw\").focus(); //Only shift focus if last page is reached, disabling next buttons. Otherwise, maintain focus on next buttons.\n break;\n case \"page\":\n this.el.shadowRoot.querySelector(`button#wm-${this.currentPage}`).focus();\n default:\n return;\n }\n });\n }\n\n debouncedResize = debounce(() => {\n this.isLargeViewport = window.innerWidth > 600;\n }, 250);\n\n @Listen(\"resize\", { target: \"window\" })\n handleResize() {\n this.debouncedResize();\n }\n\n @Watch(\"totalItems\")\n @Watch(\"itemsPerPage\")\n calculateTotalPages() {\n this.totalPages = Math.ceil(this.totalItems! / this.itemsPerPage!);\n }\n\n componentWillLoad() {\n if (!this.totalItems || !this.itemsPerPage || !this.currentPage) {\n throw new Error(\"Please check the required attributes\");\n }\n\n this.calculateTotalPages();\n\n if (document.body.classList.contains(\"wmcl-user-is-tabbing\")) {\n this.toggleTabbingOn();\n }\n\n this.el.focus = () => {\n // in addition to delegatesFocus, we need to highjack the focus method to send focus to the appropriate element based on the components's state\n if (this.isLargeViewport) {\n this.el.shadowRoot.getElementById(`wm-${this.currentPage}`).focus();\n } else {\n this.currentPage === 1\n ? this.el.shadowRoot.getElementById(\"next-arw\").focus()\n : this.el.shadowRoot.getElementById(\"wm-1-arw\").focus();\n }\n };\n }\n\n updatePageDisplayed(pageNum: any) {\n this.value = pageNum;\n this.wmPaginationPageClicked.emit();\n this.pageClicked.emit(); // deprecated\n this.srAnnouncement = `Current page, ${this.currentPage}. ${this.getCurrentPagesInView()}`;\n }\n\n displayShortPagination() {\n let pages = [];\n for (let i = 1; i <= this.totalPages; i++) {\n pages.push(this.displayPageNumber(i));\n }\n return pages;\n }\n\n displayLongPagination() {\n let view = [\n this.displayPageNumber(1),\n this.currentPage > 3 && this.displayEllipsis(),\n ...this.getMiddlePageNums().map((page) => this.displayPageNumber(page)),\n this.currentPage + 2 < this.totalPages && this.displayEllipsis(),\n this.displayPageNumber(this.totalPages),\n ];\n return view;\n }\n\n displayPageNumber(pageNum: number) {\n return (\n <button\n id={`wm-${pageNum}`}\n class=\"paginationbtn\"\n onClick={() => {\n this.currentPage = pageNum;\n this.updatePageDisplayed(pageNum);\n this.maintainFocusOnNumberChange(\"page\");\n }}\n value={pageNum}\n aria-label={this.currentPage !== pageNum ? `Go to page ${pageNum}` : \"\"}\n aria-current={this.currentPage === pageNum ? \"page\" : undefined}\n >\n {pageNum}\n </button>\n );\n }\n\n displayEllipsis() {\n return <span class=\"ellipsis\">...</span>;\n }\n\n getMiddlePageNums = () => {\n let coreBtns;\n // if pg is 1, 2 or 3\n if (this.currentPage < 4) {\n coreBtns = [2, 3, 4];\n } else if (this.currentPage > this.totalPages - 3) {\n coreBtns = [this.totalPages - 3, this.totalPages - 2, this.totalPages - 1];\n } else {\n coreBtns = [this.currentPage - 1, this.currentPage, this.currentPage + 1];\n }\n return coreBtns;\n };\n\n // displayPageView = () => {\n // // let end = this.itemsPerPage! * this.currentPage;\n // // const begin = end - this.itemsPerPage! + 1;\n // // if (end > this.totalItems!) {\n // // end = this.totalItems!;\n // // }\n // return <div class=\"pageview\">{this.getCurrentView()}</div>;\n // };\n\n getCurrentPagesInView() {\n let end = this.itemsPerPage! * this.currentPage;\n const begin = end - this.itemsPerPage! + 1;\n if (end > this.totalItems!) {\n end = this.totalItems!;\n }\n return \"Viewing \" + (begin === end ? `${begin}` : `${begin}–${end} of ${this.totalItems}`);\n }\n\n renderLarge() {\n return (\n <div class=\"largescreen\">\n <div class=\"pageview\">{this.getCurrentPagesInView()}</div>\n <div class={`pagebtncontainer ${this.isTabbing ? \"user-is-tabbing\" : \"\"}`}>\n <button\n id=\"previous\"\n class=\"paginationbtn previousbtn\"\n onClick={() => {\n this.currentPage = this.currentPage - 1;\n this.updatePageDisplayed(this.currentPage);\n this.maintainFocusOnNumberChange(\"previous\");\n }}\n disabled={this.currentPage === 1}\n aria-label=\"Go to previous page\"\n aria-controls=\"status\"\n >\n Previous\n </button>\n {this.totalPages < 6 ? this.displayShortPagination() : this.displayLongPagination()}\n <button\n id=\"next\"\n class=\"paginationbtn nextbtn\"\n onClick={() => {\n this.currentPage = this.currentPage + 1;\n this.updatePageDisplayed(this.currentPage);\n this.maintainFocusOnNumberChange(\"next\");\n }}\n disabled={this.currentPage === this.totalPages}\n aria-label=\"Go to next page\"\n aria-controls=\"status\"\n >\n Next\n </button>\n </div>\n </div>\n );\n }\n\n renderSmall() {\n return (\n <div class=\"smallscreen\">\n <div class={`pagebtncontainer ${this.isTabbing ? \"user-is-tabbing\" : \"\"}`}>\n <button\n id={`wm-1-arw`}\n class=\"paginationbtn\"\n onClick={() => {\n this.currentPage = 1;\n this.updatePageDisplayed(1);\n this.maintainFocusOnNumberChange(\"prev-arrow\");\n }}\n value={1}\n aria-current={this.currentPage === 1 ? \"page\" : undefined}\n aria-label={`Go to page 1`}\n aria-controls=\"status\"\n disabled={this.currentPage === 1}\n >\n <svg width=\"16\" height=\"12\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M7.41 10.59L2.83 6l4.58-4.59L6 0 0 6l6 6zM15.41 10.59L10.83 6l4.58-4.59L14 0 8 6l6 6z\" />\n </svg>\n </button>\n <button\n id=\"previous-arw\"\n class=\"paginationbtn previousbtn\"\n onClick={() => {\n this.currentPage -= 1;\n this.updatePageDisplayed(this.currentPage);\n this.maintainFocusOnNumberChange(\"prev-arrow\");\n }}\n disabled={this.currentPage === 1}\n aria-label=\"Go to previous page\"\n >\n <svg width=\"8\" height=\"12\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M7.41 10.59L2.83 6l4.58-4.59L6 0 0 6l6 6z\" />\n </svg>\n </button>\n Page {this.currentPage} of {this.totalPages}\n <button\n id=\"next-arw\"\n class=\"paginationbtn nextbtn\"\n onClick={() => {\n this.currentPage += 1;\n this.updatePageDisplayed(this.currentPage);\n this.maintainFocusOnNumberChange(\"next-arrow\");\n }}\n disabled={this.currentPage === this.totalPages}\n aria-label=\"Go to next page\"\n >\n <svg width=\"8\" height=\"12\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M.59 10.59L5.17 6 .59 1.41 2 0l6 6-6 6z\" />\n </svg>\n </button>\n <button\n id={`wm-${this.totalPages}-arw`}\n class=\"paginationbtn\"\n onClick={() => {\n this.currentPage = this.totalPages;\n this.updatePageDisplayed(this.totalPages);\n this.maintainFocusOnNumberChange(\"next-arrow\");\n }}\n value={this.totalPages}\n aria-current={this.currentPage === this.totalPages ? \"page\" : undefined}\n aria-label={`Go to last page, page ${this.totalPages}`}\n aria-controls=\"status\"\n disabled={this.currentPage === this.totalPages}\n >\n <svg width=\"17\" height=\"12\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M.59 10.59L5.17 6 .59 1.41 2 0l6 6-6 6zM9.59 10.59L14.17 6 9.59 1.41 11 0l6 6-6 6z\" />\n </svg>\n </button>\n </div>\n </div>\n );\n }\n\n render() {\n return (\n // do not render the component if there's only one page\n this.totalItems! > this.itemsPerPage! && (\n <nav aria-label={`Pagination Navigation. ${this.getCurrentPagesInView()}. Current page, ${this.currentPage}.`}>\n {/* both \"desktop\" and \"mobile\" versions are renderered. media queries hide the unnecessary stuff */}\n {this.isLargeViewport ? this.renderLarge() : this.renderSmall()}\n {/* The below is for screenreader purposes, ensuring it announces the new current page.*/}\n <div id=\"status\" class=\"sr-only\" aria-live=\"polite\" aria-relevant=\"text\" aria-atomic=\"true\">\n {this.srAnnouncement}\n </div>\n </nav>\n )\n );\n }\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["colors","salmon","cyan","forest","sleet","midnight","lavender","periwinkle","gray","allChartsDetails","exports","doughnut","size","thickness","padding","category","doughnut0","doughnut1","doughnut2","doughnut2plus","doughnut3","bar","bar1","bar2","bar3","bar4","bar5","bar6","bar7","showValue","valueFormat","textHiddenMessage","intl","formatMessage","id","defaultMessage","description","seeDetailsMessage","abbrNumber","num","Math","round","amountToPercent","val","total","asInt","amountToDegree","toFixed","number","parseFloat","floor","polarToCartesian","half","radius","startAngle","endAngle","x","cos","PI","y","sin","undefined","x2","y2","x1","y1","getArc","largeArcFlag","chartSize","z","concat","scale","inMin","inMax","outMin","outMax","scaled","minSpacing","width","getMaxTicks","getInterval","largest","maxticks","minimum","magnitude","pow","log10","residual","interval","handleSliceKeyDown","ev","this","popoverEl","open","key","popoverBtn","querySelector","click","handleSliceClick","s","isTabbing","coords","clientX","clientY","openPopover","call","handleSliceFocus","getPosition","target","handleChartKeydown","preventDefault","focusPrevious","focusNext","exitChart","userIsNavigating","title","text","popoverTitle","popoverText","buttonText","sliceRef","window","setTimeout","_this","debouncedClosePopover_1","debounce","__awaiter","document","addEventListener","scrollableParent","findParentWithScrollbar","el","activeEl","checkForActiveElInShadow","activeElement","index","sliceEls","indexOf","length","focusSlice","componentWrapperEl","tabIndex","focusable","map","p","focus","getDetails","chartType","slicesDetails","acc","children","Array","from","reduce","slice","parseInt","getAttribute","forEach","c","i","amount","perc","colorIndex","notStartedColor","color","sliceDetails","legend","offset","uid","inSmallCluster","push","sortSlicesDetails","sortedSlicesDetails","__spreadArray","sort","a","b","idx","prev","next","prevPerc","nextPerc","isInSmallCluster","isSmall","prevIsSmall","nextIsSmall","lessThanOnePerc","getPathData","activeAngle","largeArcFlagOuter","largeArcFlagInner","chartDetails","innerRadius","outerRadius","isHybridDoughnut","outerSeparatorOffset","innerSeparatorOffset","outerCoords","innerCoords","moveTo","arc1","line","arc2","renderInstructionsText","chartInstructions","h","renderFilter","stdDeviation","result","operator","in2","in","renderDoughnut","outerSize","class","height","renderPath","transform","renderDoughnutText","fill","d","onClick","onFocus","onKeyDown","role","arcMiddle","_a","renderStackedBar","isHybridBar","drawAxis","tempValueFormat","renderBarText","renderStackedBarSegment","renderCompletionMessage","isLastSlice","style","backgroundColor","renderSimpleBar","labelWidth","getComputedStyle","getPropertyValue","chartPadding","componentWidth","getBoundingClientRect","chartWidth","numTicks","lastTickVal","extraTicks","setProperty","showBarLegend","rows","renderSimpleBarLegend","renderSimpleBarItem","ticks","tickVal","showGrid","show","hidden","chartMaxVal","currentChartType","cssWidth","amt","displayValue","renderLegend","showLegend","hasCluster","isBar","cur","mode","renderLegendItem","renderHiddenValuesMessage","legendItem","completionMessage"],"sources":["src/components/charts/chartFunctions.tsx"],"sourcesContent":["import { h } from \"@stencil/core\";\nimport { checkForActiveElInShadow, debounce, findParentWithScrollbar, getPosition, intl } from \"../../global/functions\";\nimport { LegendItem, ChartType, ChartDetails, SliceDetails, SliceElement } from \"../../global/interfaces\";\n\nconst colors = {\n salmon: \"#ff5f4e\",\n cyan: \"#19a1a9\",\n forest: \"#088000\",\n sleet: \"#7f97ad\",\n midnight: \"#2e1b46\",\n lavender: \"#8b86ca\",\n periwinkle: \"#575195\",\n gray: \"#6b6b6b\",\n};\n\nexport const allChartsDetails: { [Key in ChartType]: ChartDetails } = {\n // for progress monitor\n doughnut: {\n size: 155,\n colors: [colors.forest, colors.gray],\n thickness: 0.73,\n padding: 25,\n category: \"doughnut\",\n },\n // deprecated hybrid chart type, should use Progress Indicator's \"doughnut\" instead\n doughnut0: {\n size: 155,\n colors: [colors.forest, colors.gray],\n thickness: 0.73,\n padding: 25,\n category: \"doughnut\",\n },\n doughnut1: {\n size: 130,\n colors: [colors.lavender, colors.midnight, colors.gray],\n thickness: 0.5,\n padding: 90,\n category: \"doughnut\",\n },\n doughnut2: {\n size: 130,\n colors: [colors.cyan, colors.salmon, colors.gray],\n thickness: 0.5,\n padding: 90,\n category: \"doughnut\",\n },\n // an internal type only for use when doughnut 2 is populated with 4 slices\n // in this case, the first slice is colored purple\n doughnut2plus: {\n size: 130,\n colors: [colors.periwinkle, colors.cyan, colors.salmon, colors.gray],\n thickness: 0.5,\n padding: 90,\n category: \"doughnut\",\n },\n doughnut3: {\n size: 130,\n colors: [colors.lavender, colors.midnight, \"#0089e4\", colors.forest, \"#ea8500\", \"#d54f41\", \"#146ca9\"],\n thickness: 0.5,\n padding: 90,\n category: \"doughnut\",\n },\n // for progress monitor\n bar: {\n size: 350,\n colors: [colors.forest, colors.gray],\n padding: 0,\n category: \"stackedBar\",\n },\n // deprecated hybrid chart type, should use Progress Indicator's \"bar\" instead\n bar1: {\n size: 350,\n colors: [colors.forest, colors.gray],\n padding: 0,\n category: \"stackedBar\",\n },\n bar2: {\n size: 400,\n colors: [colors.gray, colors.periwinkle, colors.cyan, colors.salmon],\n padding: 0,\n category: \"stackedBar\",\n },\n bar3: {\n size: 300,\n colors: [\"#0d696e\", colors.cyan, \"#8e4129\", colors.salmon],\n padding: 0,\n category: \"stackedBar\",\n },\n bar4: {\n size: 400,\n colors: [colors.salmon, colors.cyan, colors.periwinkle],\n padding: 0,\n category: \"stackedBar\",\n },\n bar5: {\n size: 400,\n colors: [\n colors.gray, // this is only used if prop notStartedColor is set\n colors.lavender,\n colors.midnight,\n \"#0089e4\",\n colors.forest,\n \"#ea8500\",\n \"#d54f41\",\n \"#146ca9\",\n ],\n padding: 0,\n category: \"stackedBar\",\n },\n bar6: {\n size: 400,\n colors: [colors.lavender],\n padding: 0,\n category: \"simpleBar\",\n },\n bar7: {\n size: 400,\n colors: [colors.periwinkle, colors.cyan, colors.salmon, colors.gray],\n padding: 0,\n category: \"simpleBar\",\n },\n};\n\nfunction showValue(valueFormat: string): string {\n return valueFormat === \"percentage\" || valueFormat === \"amount\" ? \"show-values\" : \"\";\n}\n\nexport const textHiddenMessage = intl.formatMessage({\n id: \"chart.hiddenValues\",\n defaultMessage: \"Values are not shown when too close to each other.\",\n description: \"Text displayed when a chart has some values hidden\",\n});\n\nexport const seeDetailsMessage = intl.formatMessage({\n id: \"chart.clickToSeeDetails\",\n defaultMessage: \"Click or use arrow keys to see details.\",\n description: \"Text displayed, guiding user to interact to see more details.\",\n});\n\nfunction abbrNumber(num: number) {\n return num > 999 ? Math.round(num / 100) / 10 + \"K\" : num;\n}\n\nexport function amountToPercent(val: number, total: number, asInt: boolean) {\n return asInt ? Math.round((val * 100) / total) : Math.round((val * 10000) / total) / 100; // with 2 decimals\n}\n\nexport function amountToDegree(val: number, total: number) {\n // In a circle of {total}, determine degrees of slice {val}\n return (val * 360) / total;\n}\n\nexport function toFixed(number: number) {\n return parseFloat((Math.floor(number * 100) / 100).toFixed(2));\n}\n\nexport function polarToCartesian(half: number, radius: number, startAngle: number, endAngle?: number) {\n var x = toFixed(half + half * radius * Math.cos((Math.PI * startAngle) / 180));\n var y = toFixed(half + half * radius * Math.sin((Math.PI * startAngle) / 180));\n if (endAngle !== undefined) {\n // if a 2nd angle value was passed, return 2 pairs of coords\n var x2 = toFixed(half + half * radius * Math.cos((Math.PI * endAngle) / 180));\n var y2 = toFixed(half + half * radius * Math.sin((Math.PI * endAngle) / 180));\n return { x1: x, y1: y, x2, y2 };\n }\n return { x, y };\n}\n\nfunction getArc(radius: number, largeArcFlag: string, x: number, y: number, chartSize: number) {\n var z = toFixed((chartSize / 2) * radius);\n return `A ${z}, ${z} 0 ${largeArcFlag} ${toFixed(x)}, ${toFixed(y)}`;\n}\n\nfunction scale(val: number, inMin: number, inMax: number, outMin: number, outMax: number) {\n let scaled = ((val - inMin) * (outMax - outMin)) / (inMax - inMin) + outMin;\n // clip the values so that whatever is passed in the output is never smaller than outMin or greater than outMax\n return scaled < outMin ? outMin : scaled > outMax ? outMax : scaled;\n}\n\nfunction minSpacing(width: number) {\n // minimum spacing between 2 ticks, in px\n return scale(width, 300, 900, 70, 150);\n}\n\nfunction getMaxTicks(width: number) {\n return Math.round(width / minSpacing(width));\n}\n\nfunction getInterval(largest: number, maxticks: number) {\n const minimum = largest / maxticks;\n const magnitude = 10 ** Math.floor(Math.log10(minimum));\n const residual = minimum / magnitude;\n let interval;\n if (residual > 5) {\n interval = 10 * magnitude;\n } else if (residual > 3) {\n interval = 5 * magnitude;\n } else if (residual > 2) {\n interval = 3 * magnitude;\n } else if (residual > 1.5) {\n interval = 2 * magnitude;\n } else if (residual > 1) {\n interval = 1.5 * magnitude;\n } else {\n interval = magnitude;\n }\n return interval;\n}\n\nfunction handleSliceKeyDown(this: any, ev: KeyboardEvent) {\n if (this.popoverEl && this.popoverEl.open && ev.key === \"Enter\") {\n const popoverBtn = this.popoverEl.querySelector(\"button\");\n popoverBtn && popoverBtn.click();\n }\n}\n\nexport function handleSliceClick(this: any, ev: MouseEvent, s: SliceDetails) {\n if (this.popoverEl && !this.isTabbing) {\n s.coords = { x: ev.clientX, y: ev.clientY };\n openPopover.call(this, s);\n }\n}\n\nfunction handleSliceFocus(this: any, ev: FocusEvent, s: SliceDetails) {\n if (this.popoverEl && this.isTabbing) {\n s.coords = getPosition(ev.target as HTMLElement);\n openPopover.call(this, s);\n }\n}\n\nexport function handleChartKeydown(this: any, ev: KeyboardEvent) {\n switch (ev.key) {\n // arrow up / left\n case \"ArrowUp\":\n case \"ArrowLeft\":\n ev.preventDefault();\n this.isTabbing = true; // shd already be true. just in case user clicked on chart then pressed an arrow key\n focusPrevious.call(this);\n break;\n // arrow right / down\n case \"ArrowRight\":\n case \"ArrowDown\":\n ev.preventDefault();\n this.isTabbing = true; // shd already be true. just in case user clicked on chart then pressed an arrow key\n focusNext.call(this);\n break;\n // tab\n case \"Tab\":\n exitChart.call(this);\n break;\n case \"Escape\":\n this.popoverEl!.open = false;\n this.userIsNavigating = false;\n break;\n }\n}\n\nexport function openPopover(this: any, s: SliceDetails) {\n if (!!this.popoverEl && !!s.title && !!s.text) {\n this.popoverEl.popoverTitle = s.title;\n this.popoverEl.popoverText = s.text;\n this.popoverEl.buttonText = s.buttonText;\n this.popoverEl.coords = s.coords;\n this.popoverEl.sliceRef = s.sliceRef;\n window.setTimeout(() => {\n if (this.popoverEl) {\n this.popoverEl.open = true;\n }\n }, 30);\n\n const debouncedClosePopover = debounce(async () => {\n this.popoverEl!.open = false;\n }, 10);\n\n // set up event listeners for scrolling\n // to close popover on page scroll\n document.addEventListener(\"scroll\", () => {\n debouncedClosePopover();\n });\n\n // ... and on parent scroll\n const scrollableParent = findParentWithScrollbar(this.el as HTMLElement);\n if (!!scrollableParent) {\n scrollableParent.addEventListener(\"scroll\", () => {\n debouncedClosePopover();\n });\n }\n }\n}\n\nfunction focusNext(this: any) {\n const activeEl = checkForActiveElInShadow(document.activeElement as HTMLElement);\n const index =\n // if the active el is not in the array the first element gets focused\n (this.sliceEls!.indexOf(activeEl as HTMLElement) + 1) % this.sliceEls!.length;\n focusSlice.call(this, index);\n}\n\nfunction focusPrevious(this: any) {\n if (this.sliceEls) {\n const activeEl = checkForActiveElInShadow(document.activeElement as HTMLElement);\n let index = this.sliceEls.indexOf(activeEl as SliceElement);\n\n if (index === -1) {\n // not in the array : focus the first slice\n index = 0;\n } else if (index === 0) {\n // first slice : focus the last slice\n index = this.sliceEls.length - 1;\n } else {\n // anything else: focus previous\n index -= 1;\n }\n focusSlice.call(this, index);\n }\n}\n\nfunction focusSlice(this: any, index: number) {\n if (this.sliceEls && this.el) {\n this.userIsNavigating = true;\n if (this.popoverEl) {\n this.popoverEl.open = false;\n }\n // set tabindex of the wrapper to -1 while slices are being focused, to allow for shft-tabbing out of the component directly\n this.componentWrapperEl.tabIndex = -1;\n // @ts-ignore\n this.el.focusable = false; // for Edge\n this.sliceEls.map((p: SliceElement) => {\n p.tabIndex = -1;\n // @ts-ignore\n p.focusable = false; // for Edge\n });\n this.sliceEls[index].tabIndex = 0;\n // @ts-ignore\n this.sliceEls[index].focusable = true; // for Edge\n this.sliceEls[index].focus();\n window.setTimeout(() => {\n if (this.popoverEl) {\n this.popoverEl.open = true;\n }\n }, 10);\n }\n}\n\nexport function exitChart(this: any) {\n this.sliceEls &&\n this.sliceEls.map((p: SliceElement) => {\n p.tabIndex = -1;\n // @ts-ignore\n p.focusable = false; // for Edge\n });\n this.userIsNavigating = false;\n // delay so that we can tab out of component before chart becomes focusable again\n // and in case user was still pressing an arrow key when they pressed tab\n window.setTimeout(() => {\n this.componentWrapperEl.tabIndex = 0;\n // @ts-ignore\n this.el.focusable = true; // for Edge\n if (this.popoverEl) {\n this.popoverEl.open = false;\n }\n }, 100);\n}\n\nexport async function getDetails(this: any, chartType: ChartType) {\n this.slicesDetails = [];\n let acc = 0;\n const children = Array.from(this.el.children) as Array<HTMLWmChartSliceElement>;\n\n this.total = children.reduce(\n (total: number, slice: SliceElement) => (total += parseInt(slice.getAttribute(\"amount\") || \"0\")),\n 0\n );\n\n children.forEach((c: Element, i: number) => {\n const amount = parseInt(c.getAttribute(\"amount\") || \"0\");\n const perc = amountToPercent(amount, this.total, true);\n\n let colorIndex = i;\n\n // for bar5, first color should be skipped unless notStartedColor is set to true\n if (chartType === \"bar5\") {\n colorIndex = this.notStartedColor ? i : i + 1;\n }\n\n // bars in bar6 are all the same color\n if (chartType === \"bar6\") {\n colorIndex = 0;\n }\n\n const color = allChartsDetails[chartType].colors[colorIndex];\n\n const sliceDetails: SliceDetails = {\n amount: amount,\n perc: perc,\n legend: c.getAttribute(\"legend\"),\n color: color || colors.gray,\n offset: acc,\n id: `${this.uid}-${i + 1}`,\n title: c.getAttribute(\"popover-title\"),\n text: c.getAttribute(\"popover-text\"),\n buttonText: c.getAttribute(\"popover-button-text\"),\n sliceRef: c,\n inSmallCluster: false,\n };\n acc += amount;\n this.slicesDetails.push(sliceDetails);\n });\n}\n\nfunction sortSlicesDetails(slicesDetails: SliceDetails[], total: number): SliceDetails[] {\n // sort slices by decreasing amount\n let sortedSlicesDetails = [...slicesDetails].sort((a: SliceDetails, b: SliceDetails) =>\n a.amount === b.amount ? 0 : a.amount > b.amount ? -1 : 1\n );\n\n let acc = 0;\n\n sortedSlicesDetails.forEach((s: SliceDetails, idx: number) => {\n const prev = sortedSlicesDetails[idx === 0 ? sortedSlicesDetails.length - 1 : idx - 1];\n const next = sortedSlicesDetails[idx === sortedSlicesDetails.length - 1 ? 0 : idx + 1];\n const prevPerc = amountToPercent(prev.amount, total, true);\n const nextPerc = amountToPercent(next.amount, total, true);\n\n s.offset = acc;\n acc += s.amount;\n s.inSmallCluster = isInSmallCluster(prevPerc, s.perc, s.amount, nextPerc);\n });\n return sortedSlicesDetails;\n}\n\nfunction isInSmallCluster(prevPerc: number, perc: number, amount: number, nextPerc: number): boolean {\n // determine whether the slice is in a cluster of small values\n // to avoid percentage text overlap for small values\n const isSmall = perc < 4;\n const prevIsSmall = prevPerc < 5;\n const nextIsSmall = nextPerc < 5;\n let inSmallCluster = isSmall && (prevIsSmall || nextIsSmall);\n\n // because <1% slice percentage text has an additional character\n // the inSmallCluster threshold needs to be widened for that slice only\n const lessThanOnePerc = perc === 0 && amount > 0;\n if (lessThanOnePerc && (nextPerc < 8 || prevPerc < 8)) {\n inSmallCluster = true;\n }\n\n return inSmallCluster;\n}\n\nfunction getPathData(this: any, amount: number, offset: number, chartType: ChartType) {\n const startAngle = amountToDegree(offset, this.total) - 90; // start at noon, not at 3 o'clock\n const activeAngle = (amount / this.total) * 360;\n let endAngle = startAngle + activeAngle;\n const largeArcFlagOuter = activeAngle > 180 ? \"1 1\" : \"0 1\";\n const largeArcFlagInner = activeAngle > 180 ? \"1 0\" : \"0 0\";\n const half = this.chartDetails.size / 2;\n const innerRadius = this.chartDetails.thickness!;\n const outerRadius = 1;\n\n const isHybridDoughnut = chartType === \"doughnut0\" || chartType === \"doughnut\";\n const outerSeparatorOffset = 1.5;\n const innerSeparatorOffset = isHybridDoughnut ? 2.25 : 3;\n\n if (activeAngle === 360) {\n // fix to avoid bad svg shape when the path goes all around (100%)\n endAngle -= 0.01;\n }\n\n const outerCoords = polarToCartesian(\n half,\n outerRadius,\n startAngle + outerSeparatorOffset, // Addition for slice separator\n endAngle\n );\n const innerCoords = polarToCartesian(\n half,\n innerRadius,\n startAngle + innerSeparatorOffset, // Addition for slice separator\n endAngle\n );\n\n const moveTo = `M ${outerCoords.x1}, ${outerCoords.y1} `;\n const arc1 = getArc(outerRadius, largeArcFlagOuter, outerCoords.x2!, outerCoords.y2!, this.chartDetails.size);\n const line = ` L ${innerCoords.x2}, ${innerCoords.y2} `;\n const arc2 = getArc(innerRadius, largeArcFlagInner, innerCoords.x1!, innerCoords.y1!, this.chartDetails.size);\n\n return moveTo + arc1 + line + arc2 + \" z\";\n}\n\nexport function renderInstructionsText() {\n const chartInstructions = intl.formatMessage({\n id: \"chart.instructions\",\n defaultMessage: \"Use arrow keys to browse elements, press Tab to exit.\",\n description: \"For screen readers only, instructions on how to interact with the chart component\",\n });\n\n return <div id=\"chart-instructions\">{chartInstructions}</div>;\n}\n\nfunction renderFilter() {\n return (\n <defs>\n <filter id=\"wmHoverDropShadow\">\n <feGaussianBlur stdDeviation=\"3\"></feGaussianBlur>\n <feOffset result=\"offsetblur\"></feOffset>\n <feFlood flood-color=\"#333\"></feFlood>\n <feComposite operator=\"in\" in2=\"offsetblur\"></feComposite>\n <feMerge>\n <feMergeNode></feMergeNode>\n <feMergeNode in=\"SourceGraphic\"></feMergeNode>\n </feMerge>\n </filter>\n </defs>\n );\n}\n\nexport function renderDoughnut(this: any, chartType: ChartType) {\n const outerSize = this.chartDetails.size + this.chartDetails.padding;\n const isHybridDoughnut = chartType === \"doughnut0\" || chartType === \"doughnut\";\n // no sorting in progress indicators\n let slicesDetails = isHybridDoughnut ? this.slicesDetails : sortSlicesDetails(this.slicesDetails, this.total);\n\n return (\n <div class=\"chart-wrapper doughnut-wrapper\">\n <svg width={outerSize + \"px\"} height={outerSize + \"px\"} id={`graphic-${this.uid}`} class=\"doughnut-svg\">\n {renderFilter()}\n {slicesDetails.map((s: SliceDetails) => renderPath.call(this, s, chartType))}\n {isHybridDoughnut ? (\n <text\n class=\"value\"\n x=\"50%\"\n y=\"50%\"\n font-size=\"1.5rem\"\n font-weight=\"500\"\n text-anchor=\"middle\"\n dominant-baseline=\"middle\"\n >\n {amountToPercent(slicesDetails[0].amount, this.total, true) + \"%\"}\n </text>\n ) : (\n <g\n transform={`translate(${this.chartDetails.padding / 2}, ${this.chartDetails.padding / 2})`}\n text-anchor=\"middle\"\n dominant-baseline=\"middle\"\n >\n {slicesDetails.map((s: SliceDetails) =>\n s.amount > 0 && !s.inSmallCluster ? renderDoughnutText.call(this, s) : \"\"\n )}\n </g>\n )}\n </svg>\n </div>\n );\n}\n\nfunction renderPath(this: any, s: SliceDetails, chartType: ChartType) {\n return (\n <g transform={`translate(${this.chartDetails.padding / 2}, ${this.chartDetails.padding / 2})`}>\n <path\n id={s.id}\n class=\"segment doughnut-segment\"\n fill={s.amount ? s.color : \"transparent\"}\n d={getPathData.call(this, s.amount, s.offset, chartType)}\n onClick={(ev) => handleSliceClick.call(this, ev, s)}\n onFocus={(ev) => handleSliceFocus.call(this, ev, s)}\n onKeyDown={(ev) => handleSliceKeyDown.call(this, ev)}\n role=\"img\"\n aria-label={s.legend}\n ></path>\n </g>\n );\n}\n\nfunction renderDoughnutText(this: any, s: SliceDetails) {\n const arcMiddle = amountToDegree(s.offset + s.amount / 2, this.total);\n let { x, y } = polarToCartesian(this.chartDetails.size / 2, 1.4, arcMiddle - 90);\n return (\n <text class=\"value\" x={x + \"px\"} y={y + \"px\"}>\n {`${s.perc > 0 ? s.perc : \"<1\"}%`}\n </text>\n );\n}\n\nexport function renderStackedBar(this: any, chartType: ChartType) {\n const isHybridBar = chartType === \"bar1\" || chartType === \"bar\";\n return (\n <div class=\"chart-wrapper bar-wrapper\">\n {isHybridBar ? (\n <div class=\"single-perc\">{amountToPercent(this.slicesDetails[0].amount, this.total, true) + \"%\"}</div>\n ) : (\n \"\"\n )}\n {this.chartType === \"bar3\" && this.drawAxis()}\n <div class={`inner-stacked-bar-wrapper ${showValue(this.tempValueFormat)}`}>\n {!isHybridBar ? (\n <div class=\"values\">\n {this.slicesDetails.map((s: SliceDetails, idx: number) => this.renderBarText(s, idx))}\n </div>\n ) : (\n \"\"\n )}\n <div class=\"stacked-bar-segments-wrapper\">\n {this.slicesDetails.map((s: SliceDetails, idx: number) => renderStackedBarSegment.call(this, s, idx))}\n </div>\n {isHybridBar ? renderCompletionMessage.call(this) : \"\"}\n </div>\n </div>\n );\n}\n\nfunction renderStackedBarSegment(this: any, s: SliceDetails, idx: number) {\n const isLastSlice = idx !== this.slicesDetails.length - 1;\n const width = `calc(${amountToPercent(s.amount, this.total, false)}%${isLastSlice ? \" - 2px\" : \"\"})`;\n\n return (\n <div\n class={`segment stacked-bar-segment ${amountToPercent(s.amount, this.total, false) === 0 ? \"zero\" : \"\"}`}\n style={{\n backgroundColor: s.color,\n width: width,\n }}\n onClick={(ev) => handleSliceClick.call(this, ev, s)}\n onFocus={(ev) => handleSliceFocus.call(this, ev, s)}\n onKeyDown={(ev) => handleSliceKeyDown.call(this, ev)}\n >\n <span class=\"sr-only\">{s.legend}</span>\n </div>\n );\n}\n\nexport function renderSimpleBar(this: any, chartType: ChartType) {\n // find largest number and get interval, numTicks, chartMaxVal for all.\n const largest = this.slicesDetails\n .map((s: SliceDetails) => s.amount)\n .reduce((a: number, b: number) => {\n return a > b ? a : b;\n });\n const labelWidth = parseInt(getComputedStyle(this.el).getPropertyValue(\"--labelWidth\"), 10);\n const chartPadding = 48; \n const componentWidth = this.el.getBoundingClientRect().width;\n const chartWidth = componentWidth - labelWidth - chartPadding;\n let numTicks = getMaxTicks(chartWidth);\n let interval = getInterval(largest, numTicks);\n // after the algorithm finds an interval, remove extra ticks so that the greater number is always between the last tick and the one before that\n const lastTickVal = numTicks * interval;\n const extraTicks = Math.floor((lastTickVal - largest) / interval);\n numTicks -= extraTicks;\n\n this.el.style.setProperty(\"--backgroundSize\", 100 / numTicks + \"%\");\n this.el.style.setProperty(\"--labelWidth\", this.labelWidth);\n\n if (chartType === \"bar7\" && !this.showBarLegend) {\n this.el.style.setProperty(\"--labelWidth\", \"0px\");\n }\n\n // we have to prep the data here rather than iterate directly in the return statement\n // because CSS grid needs a flat structure, and return functions must\n // have a single parent element\n const rows: HTMLElement[] = [];\n this.slicesDetails.forEach((s: SliceDetails) => {\n s.legend && rows.push(renderSimpleBarLegend(s.legend, this.showBarLegend, chartType));\n rows.push(renderSimpleBarItem.call(this, s, interval, numTicks, largest));\n });\n\n const ticks = [];\n for (let i = 1; i <= numTicks; i++) {\n const tickVal: number | string = abbrNumber(i * interval);\n ticks.push(\n <div class=\"tick\">\n <span>{tickVal}</span>\n </div>\n );\n }\n\n const showGrid = chartType === \"bar6\" && this.showGrid && this.el.getBoundingClientRect().width > 300;\n\n return (\n <div class=\"chart-wrapper simple-bar-wrapper\">\n <div class={`chart ${showValue(this.tempValueFormat)}`}>\n {showGrid && <div class=\"gridlines\"></div>}\n <div class=\"rows\">{rows}</div>\n </div>\n {showGrid && (\n <div class=\"x-axis\" aria-hidden=\"true\">\n <div class=\"zero\">\n <span>0</span>\n </div>\n {ticks}\n </div>\n )}\n </div>\n );\n}\n\nfunction renderSimpleBarLegend(legend: string, show: boolean, chartType: ChartType): HTMLLabelElement {\n // not sure how to collapse the left column to 0 width with CSS grid. text should still be available to SR.\n const hidden = chartType === \"bar7\" && !show ? \" hidden\" : \"\";\n return <label class={`label${hidden}`}>{legend}</label>;\n}\n\nfunction renderSimpleBarItem(\n this: any,\n s: SliceDetails,\n interval: number,\n ticks: number,\n largest: number\n): HTMLDivElement {\n const chartMaxVal = this.currentChartType === \"bar6\" ? interval * ticks : largest;\n const width = amountToPercent(s.amount, chartMaxVal, false);\n const cssWidth: string = width ? width + \"%\" : \"1px\";\n const amt = abbrNumber(s.amount);\n let displayValue = this.tempValueFormat === \"amount\" ? amt : \"\";\n if (this.currentChartType === \"bar6\" && this.tempValueFormat === \"percentage\") {\n displayValue = s.amount + \"%\";\n } else if (this.currentChartType === \"bar7\" && this.tempValueFormat === \"percentage\") {\n displayValue = amountToPercent(s.amount, this.total, true) + \"%\";\n }\n\n return (\n <div\n class={\"bar segment\"}\n style={{\n backgroundColor: s.color,\n width: cssWidth,\n }}\n onClick={(ev) => handleSliceClick.call(this, ev, s)}\n onFocus={(ev) => handleSliceFocus.call(this, ev, s)}\n onKeyDown={(ev) => handleSliceKeyDown.call(this, ev)}\n >\n <div class=\"value\">{displayValue}</div>\n </div>\n );\n}\n\nexport function renderLegend(this: any, chartType: ChartType) {\n // legend is hidden for bar1 and bar6 types regardless of showLegend value\n if (this.showLegend) {\n const hasCluster =\n !this.chartDetails.isBar &&\n this.slicesDetails.reduce(\n (hasCluster: boolean, cur: SliceDetails) => (hasCluster = cur.inSmallCluster ? true : hasCluster),\n false\n );\n return (\n <div class=\"legend-wrapper\">\n <div class={`legend ${chartType} ${this.mode === \"bar\" ? \"--top\" : \"--bottom\"}`} aria-hidden=\"true\">\n {this.total > 0\n ? this.slicesDetails.map((s: SliceDetails) => {\n // when both legend and amount are omitted, the legend is not shown for that particular option (it's been deactivated by the user)\n if (!!s.amount || !!s.legend) {\n return renderLegendItem({ key: s.legend!, color: s.color });\n }\n })\n : \"\"}\n </div>\n {hasCluster && renderHiddenValuesMessage()}\n </div>\n );\n }\n}\n\nexport function renderLegendItem(legendItem: LegendItem) {\n return (\n <div class=\"legend-item\">\n <div class=\"legend-color\" style={{ backgroundColor: legendItem.color }}></div>\n <div class=\"legend-text\">{legendItem.key}</div>\n </div>\n );\n}\n\nexport function renderCompletionMessage(this: any) {\n if (this.completionMessage) {\n return <div class=\"completion-message\">{this.completionMessage}</div>;\n }\n}\n\nexport function renderHiddenValuesMessage() {\n return (\n <div class=\"hidden-values-warning\">\n {textHiddenMessage}\n <br />\n {seeDetailsMessage}\n </div>\n );\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["wmFileCss","File","exports","this","isWithinLegacyUploader","debouncedResize","debounce","_this","isCondensed","el","clientWidth","forceUpdate","Object","defineProperty","class_1","prototype","data","file","JSON","parse","progress","match","parseInt","toString","fileData","hasOwnProperty","shadowRoot","querySelector","intl","formatMessage","id","defaultMessage","description","generateClearButtonLabel","filename","fileName","componentWillLoad","shadowRootHost","getRootNode","host","nodeName","type","uploaderType","resizeObserver","ResizeObserver","observe","componentDidRender","truncateFileName","previewFile","wmIntFilePreviewed","emit","downloadFile","wmIntFileDownloaded","deleteFile","wmIntFileDeleted","leftGroup","leftBoundary","getBoundingClientRect","left","rightGroup","rightBoundary","right","filenameEl","availableSpace","dataset","canFitText","length","singleCharacterWidth","extension","slice","lastIndexOf","numFittingCharacters","Math","floor","postEllipsesLength","preEllipsesLength","max","preEllipsesText","postEllipsesText","indexOf","concat","trim","textContent","handleFilenameMouseEnter","ev","target","includes","showTooltip","renderFileName","isUploading","h","class","onMouseEnter","onMouseLeave","hideTooltip","renderFileInfo","item","showInfo","displayedInfo","lastUpdated","size","renderActionMenu","defaultFileActions","availableActions","fileActions","previewItem","icon","onClick","previewActionMessage","downloadItem","downloadActionMessage","deleteItem","deleteActionMessage","tooltip","actionMenuLabel","name","renderFileActionButtons","previewButton","previewButtonTooltip","downloadButton","downloadButtonTooltip","deleteButton","deleteButtonTooltip","renderFileInProgress","style","background","renderFileControls","hasSingleFileAction","split","showActionMenu","renderFile","showCheckmark","errorMessage","wmFileClearErrorClicked","clearButtonText","render","Host","role"],"sources":["src/components/wm-file/wm-file.scss?tag=wm-file&encapsulation=shadow","src/components/wm-file/wm-file.tsx"],"sourcesContent":[":host,\nwm-file {\n display: block;\n width: 100%;\n}\n.file-wrapper {\n font-size: rem-calc(14);\n position: relative;\n list-style: none;\n\n .file {\n min-width: 300px;\n @include border-radius(3px);\n height: rem-calc(56);\n padding: 0 rem-calc(20);\n position: relative; // for progress bar\n background: $background;\n border: 1px solid rgb(107, 107, 107);\n\n display: flex;\n justify-content: space-between;\n align-items: center;\n\n .filename {\n white-space: nowrap;\n }\n\n .left-group {\n overflow: hidden;\n }\n\n .right-group {\n display: flex;\n align-items: center;\n padding-left: rem-calc(80);\n gap: rem-calc(16);\n\n &.condensed {\n padding-left: rem-calc(40);\n }\n\n .file-controls {\n display: flex;\n gap: rem-calc(16);\n }\n .file-info {\n white-space: nowrap;\n }\n }\n\n &.--error {\n border: 1px solid $error-color;\n background-color: #f5ebea;\n height: rem-calc(60);\n }\n }\n\n &.checked {\n .file:after {\n @include mdi-icon;\n content: \"\\f133\";\n position: absolute;\n right: calc(-16px + -28px);\n color: $uploader-checkmark-background;\n font-size: 28px;\n line-height: 1;\n }\n }\n}\n\n.name-wrapper {\n overflow: hidden;\n}\n\n.progress {\n position: absolute;\n left: 0;\n top: 0;\n right: 0;\n height: 8px;\n}\n\n.error-message {\n @include errorMessage;\n}\n\n.sr-only {\n @include srOnly;\n}\n\n.ch-measure {\n // used to get the measurement of a single character, for truncation calculations\n width: 1ch !important;\n visibility: hidden;\n}\n","import { h, Component, Element, Event, EventEmitter, Prop, State, Host, forceUpdate } from \"@stencil/core\";\nimport { debounce, hideTooltip, intl, showTooltip } from \"../../global/functions\";\nimport { UploadedFile } from \"../../global/interfaces\";\n\n@Component({\n tag: \"wm-file\",\n styleUrl: \"wm-file.scss\",\n shadow: { delegatesFocus: true },\n})\nexport class File {\n @Element() el!: HTMLWmFileElement;\n @Prop() file?: string;\n @Prop() showInfo: \"time\" | \"size\" | \"none\" = \"time\";\n @Prop() errorMessage?: string;\n @State() isCondensed: boolean = false;\n @Event() wmIntFilePreviewed!: EventEmitter<string>;\n @Event() wmIntFileDownloaded!: EventEmitter<string>;\n @Event() wmIntFileDeleted!: EventEmitter<string>;\n @Event() wmFileClearErrorClicked!: EventEmitter; // undocumented event, for communication with wm-uploader\n // the file component is used within wm-uploader, which still includes legacy types 1 and 2\n // some new features are not included in these legacy types, and must use the below in conditions\n private isWithinLegacyUploader: boolean = false;\n\n get fileData(): UploadedFile {\n let data = this.file ? JSON.parse(this.file) : null;\n\n // sometimes JSON numbers can be received as strings, make sure progress is always a number\n if (data && data.progress && typeof data.progress === \"string\" && data.progress.match(/^[0-9]+$/)) {\n data.progress = parseInt(data.progress.toString());\n }\n return data;\n }\n\n get isUploading(): boolean {\n return this.fileData && this.fileData.hasOwnProperty(\"progress\") && this.fileData.progress! < 100;\n }\n\n get singleCharacterWidth() {\n return this.el.shadowRoot!.querySelector(\".ch-measure\")!.clientWidth;\n }\n\n get previewButtonTooltip() {\n return intl.formatMessage({\n id: \"file.previewButtonTooltip\",\n defaultMessage: \"Preview\",\n description: \"Tooltip of a button that triggers a file to be previewed\",\n });\n }\n\n get downloadButtonTooltip() {\n return intl.formatMessage({\n id: \"file.downloadButtonTooltip\",\n defaultMessage: \"Download\",\n description: \"Tooltip of a button that triggers a file to be downloaded\",\n });\n }\n\n get deleteButtonTooltip() {\n return intl.formatMessage({\n id: \"file.deleteButtonTooltip\",\n defaultMessage: \"Delete\",\n description: \"Tooltip of a button that triggers a file to be deleted\",\n });\n }\n\n get previewActionMessage() {\n return intl.formatMessage({\n id: \"file.previewAction\",\n defaultMessage: \"Preview File\",\n description: \"Label of a button that triggers a file to be previewed\",\n });\n }\n\n get downloadActionMessage() {\n return intl.formatMessage({\n id: \"file.downloadAction\",\n defaultMessage: \"Download File\",\n description: \"Label of a button that triggers a file to be downloaded\",\n });\n }\n\n get deleteActionMessage() {\n return intl.formatMessage({\n id: \"file.deleteAction\",\n defaultMessage: \"Delete File\",\n description: \"Label of a button that triggers a file to be delete\",\n });\n }\n\n get actionMenuLabel() {\n return intl.formatMessage({\n id: \"file.actionMenuLabel\",\n defaultMessage: \"Actions\",\n description: \"Label of a button that opens a menu of file actions\",\n });\n }\n\n get clearButtonText() {\n return intl.formatMessage({\n id: \"file.clearErrorText\",\n defaultMessage: \"Clear\",\n description: \"Text for a button used to clear an error\",\n });\n }\n\n generateClearButtonLabel(filename: string) {\n return intl.formatMessage(\n {\n id: \"file.clearErrorLabel\",\n defaultMessage: \"Clear {fileName} error\",\n description: \"Label for a button used to clear an error, including filename\",\n },\n { fileName: filename }\n );\n }\n\n componentWillLoad() {\n const shadowRootHost = (this.el.getRootNode() as ShadowRoot).host;\n\n if (shadowRootHost && shadowRootHost.nodeName === \"WM-UPLOADER\") {\n if ((shadowRootHost as HTMLWmUploaderElement).type || (shadowRootHost as HTMLWmUploaderElement).uploaderType) {\n this.isWithinLegacyUploader = true;\n }\n }\n\n // rerender on resize in case layout needs to change\n const resizeObserver = new ResizeObserver(() => this.debouncedResize());\n resizeObserver.observe(this.el);\n }\n\n componentDidRender() {\n this.truncateFileName(this.el.shadowRoot!.querySelector(\".file\")!);\n }\n\n debouncedResize = debounce(() => {\n this.isCondensed = this.el.clientWidth < 500;\n // rerender to show filename truncation changes\n forceUpdate(this.el);\n }, 50);\n\n previewFile(file: UploadedFile) {\n this.wmIntFilePreviewed.emit(file.id);\n }\n\n downloadFile(file: UploadedFile) {\n this.wmIntFileDownloaded.emit(file.id);\n }\n\n deleteFile(file: UploadedFile) {\n this.wmIntFileDeleted.emit(file.id);\n }\n\n truncateFileName(file: Element) {\n const leftGroup = file.querySelector(\".left-group\");\n const leftBoundary = leftGroup!.getBoundingClientRect().left;\n const rightGroup = file.querySelector(\".right-group\");\n const rightBoundary = rightGroup\n ? rightGroup.getBoundingClientRect().left\n : file.getBoundingClientRect().right - 20;\n const filenameEl = file.querySelector(\".filename\") as HTMLElement;\n const availableSpace = rightBoundary - leftBoundary;\n\n let filename = filenameEl.dataset.filename!;\n const canFitText = availableSpace > filename.length * this.singleCharacterWidth;\n\n if (!canFitText) {\n const extension = filename.slice(filename.lastIndexOf(\".\"));\n const numFittingCharacters = Math.floor(availableSpace / this.singleCharacterWidth);\n\n // three ellipses, three constant characters, extension\n const postEllipsesLength = 3 + 3 + extension.length;\n let preEllipsesLength = Math.max(2, numFittingCharacters - postEllipsesLength);\n const preEllipsesText = filename.slice(0, preEllipsesLength);\n const postEllipsesText = filename.slice(filename.indexOf(extension) - 3, filename.length);\n filename = `${preEllipsesText.trim()}...${postEllipsesText.trim()}`;\n }\n\n filenameEl.textContent = filename;\n }\n\n handleFilenameMouseEnter(ev: MouseEvent, filename: string) {\n // only show tooltip if file name is being truncated (has ellipses)\n if ((ev.target as HTMLElement).textContent!.includes(\"...\")) {\n showTooltip(\"bottom\", ev.target as HTMLElement, filename);\n }\n }\n\n renderFileName(filename: string, isUploading: boolean) {\n return (\n <div class=\"left-group\">\n <div class=\"name-wrapper\">\n <span class=\"sr-only\">{filename}</span>\n <span\n aria-hidden=\"true\"\n class=\"filename\"\n data-filename={filename}\n onMouseEnter={(ev) => this.handleFilenameMouseEnter(ev, filename)}\n onMouseLeave={() => hideTooltip()}\n ></span>\n {isUploading && <span class=\"sr-only\">uploading</span>}\n <div class=\"ch-measure\"></div>\n </div>\n </div>\n );\n }\n\n renderFileInfo(item: UploadedFile, showInfo: string) {\n let displayedInfo = \"\";\n if (showInfo === \"time\" && item.lastUpdated) {\n displayedInfo = item.lastUpdated;\n } else if (showInfo === \"size\" && item.size) {\n displayedInfo = item.size;\n }\n\n return <div class=\"file-info\">{displayedInfo}</div>;\n }\n\n renderActionMenu(item: UploadedFile) {\n const defaultFileActions = \"download delete\";\n const availableActions = item.fileActions || defaultFileActions;\n const previewItem = (\n <wm-menuitem icon=\"f208\" onClick={() => this.previewFile(item)}>\n {this.previewActionMessage}\n </wm-menuitem>\n );\n const downloadItem = (\n <wm-menuitem icon=\"f1da\" onClick={() => this.downloadFile(item)}>\n {this.downloadActionMessage}\n </wm-menuitem>\n );\n const deleteItem = (\n <wm-menuitem icon=\"f1c0\" onClick={() => this.deleteFile(item)}>\n {this.deleteActionMessage}\n </wm-menuitem>\n );\n return (\n <wm-action-menu\n action-menu-type=\"icon\"\n tooltip={this.actionMenuLabel}\n tooltip-position=\"bottom\"\n label-for-identical-buttons={`${item.name} ${this.actionMenuLabel}`}\n >\n {availableActions.includes(\"preview\") && previewItem}\n {availableActions.includes(\"download\") && downloadItem}\n {availableActions.includes(\"delete\") && deleteItem}\n </wm-action-menu>\n );\n }\n\n renderFileActionButtons(item: UploadedFile) {\n const defaultFileActions = \"download delete\";\n const availableActions = item.fileActions || defaultFileActions;\n\n const previewButton = (\n <wm-button\n class=\"preview-button\"\n button-type=\"icononly\"\n tooltip={this.previewButtonTooltip}\n tooltip-position=\"bottom\"\n label-for-identical-buttons={`preview ${item.name}`}\n icon=\"f208\"\n onClick={() => this.previewFile(item)}\n ></wm-button>\n );\n const downloadButton = (\n <wm-button\n class=\"download-button\"\n button-type=\"icononly\"\n tooltip={this.downloadButtonTooltip}\n tooltip-position=\"bottom\"\n label-for-identical-buttons={`download ${item.name}`}\n icon=\"f1da\"\n onClick={() => this.downloadFile(item)}\n ></wm-button>\n );\n const deleteButton = (\n <wm-button\n class=\"delete-button\"\n button-type=\"icononly\"\n tooltip={this.deleteButtonTooltip}\n tooltip-position=\"bottom\"\n label-for-identical-buttons={`delete ${item.name}`}\n icon=\"f1c0\"\n onClick={() => this.deleteFile(item)}\n ></wm-button>\n );\n\n return (\n <div class=\"file-controls\">\n {availableActions.includes(\"preview\") && previewButton}\n {availableActions.includes(\"download\") && downloadButton}\n {availableActions.includes(\"delete\") && deleteButton}\n </div>\n );\n }\n\n renderFileInProgress(item: UploadedFile) {\n const filename = item.type ? `${item.name}.${item.type}` : item.name;\n return (\n <div class=\"file-wrapper\">\n <div class=\"file --progress\">\n <div\n class=\"progress\"\n style={{\n background: `linear-gradient(to right, rgba(67, 126, 142, 1) ${item.progress}%, transparent ${item.progress}%)`,\n }}\n ></div>\n {this.renderFileName(filename, this.isUploading)}\n </div>\n </div>\n );\n }\n\n renderFileControls(item: UploadedFile) {\n const hasSingleFileAction = item.fileActions && item.fileActions.split(\" \").length === 1;\n const showActionMenu = this.isCondensed && !hasSingleFileAction;\n\n return showActionMenu ? this.renderActionMenu(item) : this.renderFileActionButtons(item);\n }\n\n renderFile(item: UploadedFile) {\n const filename = item.type ? `${item.name}.${item.type}` : item.name;\n const showCheckmark = !this.isWithinLegacyUploader && item.progress === 100;\n\n return (\n <div class={`file-wrapper ${showCheckmark ? \"checked\" : \"\"}`}>\n <div class={`file ${this.errorMessage ? \"--error\" : \"\"}`}>\n {this.renderFileName(filename, this.isUploading)}\n {!this.errorMessage && (\n <div class={`right-group ${this.isCondensed ? \"condensed\" : \"\"}`}>\n {this.showInfo !== \"none\" && this.renderFileInfo(item, this.showInfo)}\n {item.fileActions !== \"\" && this.renderFileControls(item)}\n </div>\n )}\n {this.errorMessage && (\n <wm-button\n permanently-delete\n button-type=\"textonly\"\n label-for-identical-buttons={this.generateClearButtonLabel(item.name)}\n onClick={() => this.wmFileClearErrorClicked.emit({ name: item.name })}\n >\n {this.clearButtonText}\n </wm-button>\n )}\n </div>\n {this.errorMessage && <div class=\"error-message\">{this.errorMessage}</div>}\n </div>\n );\n }\n\n render() {\n return (\n <Host role=\"listitem\">\n {this.isUploading ? this.renderFileInProgress(this.fileData) : this.renderFile(this.fileData)}\n </Host>\n );\n }\n}\n"],"mappings":"gPAAA,IAAMA,EAAY,80D,ICSLC,EAAIC,EAAA,qB,uQAYPC,KAAAC,uBAAkC,MAiH1CD,KAAAE,gBAAkBC,GAAS,WACzBC,EAAKC,YAAcD,EAAKE,GAAGC,YAAc,IAEzCC,EAAYJ,EAAKE,G,GAChB,I,kCA9H0C,O,6CAEb,K,CAShCG,OAAAC,eAAIC,EAAAC,UAAA,WAAQ,C,IAAZ,WACE,IAAIC,EAAOb,KAAKc,KAAOC,KAAKC,MAAMhB,KAAKc,MAAQ,KAG/C,GAAID,GAAQA,EAAKI,iBAAmBJ,EAAKI,WAAa,UAAYJ,EAAKI,SAASC,MAAM,YAAa,CACjGL,EAAKI,SAAWE,SAASN,EAAKI,SAASG,W,CAEzC,OAAOP,C,uCAGTJ,OAAAC,eAAIC,EAAAC,UAAA,cAAW,C,IAAf,WACE,OAAOZ,KAAKqB,UAAYrB,KAAKqB,SAASC,eAAe,aAAetB,KAAKqB,SAASJ,SAAY,G,uCAGhGR,OAAAC,eAAIC,EAAAC,UAAA,uBAAoB,C,IAAxB,WACE,OAAOZ,KAAKM,GAAGiB,WAAYC,cAAc,eAAgBjB,W,uCAG3DE,OAAAC,eAAIC,EAAAC,UAAA,uBAAoB,C,IAAxB,WACE,OAAOa,EAAKC,cAAc,CACxBC,GAAI,4BACJC,eAAgB,UAChBC,YAAa,4D,uCAIjBpB,OAAAC,eAAIC,EAAAC,UAAA,wBAAqB,C,IAAzB,WACE,OAAOa,EAAKC,cAAc,CACxBC,GAAI,6BACJC,eAAgB,WAChBC,YAAa,6D,uCAIjBpB,OAAAC,eAAIC,EAAAC,UAAA,sBAAmB,C,IAAvB,WACE,OAAOa,EAAKC,cAAc,CACxBC,GAAI,2BACJC,eAAgB,SAChBC,YAAa,0D,uCAIjBpB,OAAAC,eAAIC,EAAAC,UAAA,uBAAoB,C,IAAxB,WACE,OAAOa,EAAKC,cAAc,CACxBC,GAAI,qBACJC,eAAgB,eAChBC,YAAa,0D,uCAIjBpB,OAAAC,eAAIC,EAAAC,UAAA,wBAAqB,C,IAAzB,WACE,OAAOa,EAAKC,cAAc,CACxBC,GAAI,sBACJC,eAAgB,gBAChBC,YAAa,2D,uCAIjBpB,OAAAC,eAAIC,EAAAC,UAAA,sBAAmB,C,IAAvB,WACE,OAAOa,EAAKC,cAAc,CACxBC,GAAI,oBACJC,eAAgB,cAChBC,YAAa,uD,uCAIjBpB,OAAAC,eAAIC,EAAAC,UAAA,kBAAe,C,IAAnB,WACE,OAAOa,EAAKC,cAAc,CACxBC,GAAI,uBACJC,eAAgB,UAChBC,YAAa,uD,uCAIjBpB,OAAAC,eAAIC,EAAAC,UAAA,kBAAe,C,IAAnB,WACE,OAAOa,EAAKC,cAAc,CACxBC,GAAI,sBACJC,eAAgB,QAChBC,YAAa,4C,uCAIjBlB,EAAAC,UAAAkB,yBAAA,SAAyBC,GACvB,OAAON,EAAKC,cACV,CACEC,GAAI,uBACJC,eAAgB,yBAChBC,YAAa,iEAEf,CAAEG,SAAUD,G,EAIhBpB,EAAAC,UAAAqB,kBAAA,eAAA7B,EAAAJ,KACE,IAAMkC,EAAkBlC,KAAKM,GAAG6B,cAA6BC,KAE7D,GAAIF,GAAkBA,EAAeG,WAAa,cAAe,CAC/D,GAAKH,EAAyCI,MAASJ,EAAyCK,aAAc,CAC5GvC,KAAKC,uBAAyB,I,EAKlC,IAAMuC,EAAiB,IAAIC,gBAAe,WAAM,OAAArC,EAAKF,iBAAL,IAChDsC,EAAeE,QAAQ1C,KAAKM,G,EAG9BK,EAAAC,UAAA+B,mBAAA,WACE3C,KAAK4C,iBAAiB5C,KAAKM,GAAGiB,WAAYC,cAAc,S,EAS1Db,EAAAC,UAAAiC,YAAA,SAAY/B,GACVd,KAAK8C,mBAAmBC,KAAKjC,EAAKa,G,EAGpChB,EAAAC,UAAAoC,aAAA,SAAalC,GACXd,KAAKiD,oBAAoBF,KAAKjC,EAAKa,G,EAGrChB,EAAAC,UAAAsC,WAAA,SAAWpC,GACTd,KAAKmD,iBAAiBJ,KAAKjC,EAAKa,G,EAGlChB,EAAAC,UAAAgC,iBAAA,SAAiB9B,GACf,IAAMsC,EAAYtC,EAAKU,cAAc,eACrC,IAAM6B,EAAeD,EAAWE,wBAAwBC,KACxD,IAAMC,EAAa1C,EAAKU,cAAc,gBACtC,IAAMiC,EAAgBD,EAClBA,EAAWF,wBAAwBC,KACnCzC,EAAKwC,wBAAwBI,MAAQ,GACzC,IAAMC,EAAa7C,EAAKU,cAAc,aACtC,IAAMoC,EAAiBH,EAAgBJ,EAEvC,IAAItB,EAAW4B,EAAWE,QAAQ9B,SAClC,IAAM+B,EAAaF,EAAiB7B,EAASgC,OAAS/D,KAAKgE,qBAE3D,IAAKF,EAAY,CACf,IAAMG,EAAYlC,EAASmC,MAAMnC,EAASoC,YAAY,MACtD,IAAMC,EAAuBC,KAAKC,MAAMV,EAAiB5D,KAAKgE,sBAG9D,IAAMO,EAAqB,EAAI,EAAIN,EAAUF,OAC7C,IAAIS,EAAoBH,KAAKI,IAAI,EAAGL,EAAuBG,GAC3D,IAAMG,EAAkB3C,EAASmC,MAAM,EAAGM,GAC1C,IAAMG,EAAmB5C,EAASmC,MAAMnC,EAAS6C,QAAQX,GAAa,EAAGlC,EAASgC,QAClFhC,EAAW,GAAA8C,OAAGH,EAAgBI,OAAM,OAAAD,OAAMF,EAAiBG,O,CAG7DnB,EAAWoB,YAAchD,C,EAG3BpB,EAAAC,UAAAoE,yBAAA,SAAyBC,EAAgBlD,GAEvC,GAAKkD,EAAGC,OAAuBH,YAAaI,SAAS,OAAQ,CAC3DC,EAAY,SAAUH,EAAGC,OAAuBnD,E,GAIpDpB,EAAAC,UAAAyE,eAAA,SAAetD,EAAkBuD,GAAjC,IAAAlF,EAAAJ,KACE,OACEuF,EAAA,OAAKC,MAAM,cACTD,EAAA,OAAKC,MAAM,gBACTD,EAAA,QAAMC,MAAM,WAAWzD,GACvBwD,EAAA,sBACc,OACZC,MAAM,WAAU,gBACDzD,EACf0D,aAAc,SAACR,GAAO,OAAA7E,EAAK4E,yBAAyBC,EAAIlD,EAAlC,EACtB2D,aAAc,WAAM,OAAAC,GAAA,IAErBL,GAAeC,EAAA,QAAMC,MAAM,WAAS,aACrCD,EAAA,OAAKC,MAAM,gB,EAMnB7E,EAAAC,UAAAgF,eAAA,SAAeC,EAAoBC,GACjC,IAAIC,EAAgB,GACpB,GAAID,IAAa,QAAUD,EAAKG,YAAa,CAC3CD,EAAgBF,EAAKG,W,MAChB,GAAIF,IAAa,QAAUD,EAAKI,KAAM,CAC3CF,EAAgBF,EAAKI,I,CAGvB,OAAOV,EAAA,OAAKC,MAAM,aAAaO,E,EAGjCpF,EAAAC,UAAAsF,iBAAA,SAAiBL,GAAjB,IAAAzF,EAAAJ,KACE,IAAMmG,EAAqB,kBAC3B,IAAMC,EAAmBP,EAAKQ,aAAeF,EAC7C,IAAMG,EACJf,EAAA,eAAagB,KAAK,OAAOC,QAAS,WAAM,OAAApG,EAAKyC,YAAYgD,EAAjB,GACrC7F,KAAKyG,sBAGV,IAAMC,EACJnB,EAAA,eAAagB,KAAK,OAAOC,QAAS,WAAM,OAAApG,EAAK4C,aAAa6C,EAAlB,GACrC7F,KAAK2G,uBAGV,IAAMC,EACJrB,EAAA,eAAagB,KAAK,OAAOC,QAAS,WAAM,OAAApG,EAAK8C,WAAW2C,EAAhB,GACrC7F,KAAK6G,qBAGV,OACEtB,EAAA,qCACmB,OACjBuB,QAAS9G,KAAK+G,gBAAe,mBACZ,SAAQ,8BACI,GAAAlC,OAAGgB,EAAKmB,KAAI,KAAAnC,OAAI7E,KAAK+G,kBAEjDX,EAAiBjB,SAAS,YAAcmB,EACxCF,EAAiBjB,SAAS,aAAeuB,EACzCN,EAAiBjB,SAAS,WAAayB,E,EAK9CjG,EAAAC,UAAAqG,wBAAA,SAAwBpB,GAAxB,IAAAzF,EAAAJ,KACE,IAAMmG,EAAqB,kBAC3B,IAAMC,EAAmBP,EAAKQ,aAAeF,EAE7C,IAAMe,EACJ3B,EAAA,aACEC,MAAM,iBAAgB,cACV,WACZsB,QAAS9G,KAAKmH,qBAAoB,mBACjB,SAAQ,8BACI,WAAAtC,OAAWgB,EAAKmB,MAC7CT,KAAK,OACLC,QAAS,WAAM,OAAApG,EAAKyC,YAAYgD,EAAjB,IAGnB,IAAMuB,EACJ7B,EAAA,aACEC,MAAM,kBAAiB,cACX,WACZsB,QAAS9G,KAAKqH,sBAAqB,mBAClB,SAAQ,8BACI,YAAAxC,OAAYgB,EAAKmB,MAC9CT,KAAK,OACLC,QAAS,WAAM,OAAApG,EAAK4C,aAAa6C,EAAlB,IAGnB,IAAMyB,EACJ/B,EAAA,aACEC,MAAM,gBAAe,cACT,WACZsB,QAAS9G,KAAKuH,oBAAmB,mBAChB,SAAQ,8BACI,UAAA1C,OAAUgB,EAAKmB,MAC5CT,KAAK,OACLC,QAAS,WAAM,OAAApG,EAAK8C,WAAW2C,EAAhB,IAInB,OACEN,EAAA,OAAKC,MAAM,iBACRY,EAAiBjB,SAAS,YAAc+B,EACxCd,EAAiBjB,SAAS,aAAeiC,EACzChB,EAAiBjB,SAAS,WAAamC,E,EAK9C3G,EAAAC,UAAA4G,qBAAA,SAAqB3B,GACnB,IAAM9D,EAAW8D,EAAKvD,KAAO,GAAAuC,OAAGgB,EAAKmB,KAAI,KAAAnC,OAAIgB,EAAKvD,MAASuD,EAAKmB,KAChE,OACEzB,EAAA,OAAKC,MAAM,gBACTD,EAAA,OAAKC,MAAM,mBACTD,EAAA,OACEC,MAAM,WACNiC,MAAO,CACLC,WAAY,mDAAA7C,OAAmDgB,EAAK5E,SAAQ,mBAAA4D,OAAkBgB,EAAK5E,SAAQ,SAG9GjB,KAAKqF,eAAetD,EAAU/B,KAAKsF,c,EAM5C3E,EAAAC,UAAA+G,mBAAA,SAAmB9B,GACjB,IAAM+B,EAAsB/B,EAAKQ,aAAeR,EAAKQ,YAAYwB,MAAM,KAAK9D,SAAW,EACvF,IAAM+D,EAAiB9H,KAAKK,cAAgBuH,EAE5C,OAAOE,EAAiB9H,KAAKkG,iBAAiBL,GAAQ7F,KAAKiH,wBAAwBpB,E,EAGrFlF,EAAAC,UAAAmH,WAAA,SAAWlC,GAAX,IAAAzF,EAAAJ,KACE,IAAM+B,EAAW8D,EAAKvD,KAAO,GAAAuC,OAAGgB,EAAKmB,KAAI,KAAAnC,OAAIgB,EAAKvD,MAASuD,EAAKmB,KAChE,IAAMgB,GAAiBhI,KAAKC,wBAA0B4F,EAAK5E,WAAa,IAExE,OACEsE,EAAA,OAAKC,MAAO,gBAAAX,OAAgBmD,EAAgB,UAAY,KACtDzC,EAAA,OAAKC,MAAO,QAAAX,OAAQ7E,KAAKiI,aAAe,UAAY,KACjDjI,KAAKqF,eAAetD,EAAU/B,KAAKsF,cAClCtF,KAAKiI,cACL1C,EAAA,OAAKC,MAAO,eAAAX,OAAe7E,KAAKK,YAAc,YAAc,KACzDL,KAAK8F,WAAa,QAAU9F,KAAK4F,eAAeC,EAAM7F,KAAK8F,UAC3DD,EAAKQ,cAAgB,IAAMrG,KAAK2H,mBAAmB9B,IAGvD7F,KAAKiI,cACJ1C,EAAA,qDAEc,WAAU,8BACOvF,KAAK8B,yBAAyB+D,EAAKmB,MAChER,QAAS,WAAM,OAAApG,EAAK8H,wBAAwBnF,KAAK,CAAEiE,KAAMnB,EAAKmB,MAA/C,GAEdhH,KAAKmI,kBAIXnI,KAAKiI,cAAgB1C,EAAA,OAAKC,MAAM,iBAAiBxF,KAAKiI,c,EAK7DtH,EAAAC,UAAAwH,OAAA,WACE,OACE7C,EAAC8C,EAAI,CAACC,KAAK,YACRtI,KAAKsF,YAActF,KAAKwH,qBAAqBxH,KAAKqB,UAAYrB,KAAK+H,WAAW/H,KAAKqB,U,kOAxV3E,I"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{r as t,c as e,h as a,g as n}from"./p-1c23de4a.js";import{d as i}from"./p-c6a0f7e5.js";const s='nav .largescreen,nav .smallscreen{margin-bottom:0.625rem;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:flex-end;-ms-flex-pack:flex-end;-webkit-justify-content:flex-end;justify-content:flex-end;font-size:0.875rem}nav .largescreen .pageview,nav .smallscreen .pageview{font-size:0.875rem;margin:0 0.625rem}nav .largescreen .paginationbtn,nav .smallscreen .paginationbtn{position:relative;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;-ms-transition:none;-webkit-transition:none;-moz-transition:none;transition:none;border:none;color:#575195;background-color:transparent;margin:0;padding:0;height:2.5rem;width:2.5rem;font-family:inherit;letter-spacing:0.3px;font-size:0.875rem;font-weight:500;cursor:pointer;text-transform:none}nav .largescreen .paginationbtn svg *,nav .smallscreen .paginationbtn svg *{fill:#565397}nav .largescreen .paginationbtn:hover:not([aria-current=page]):not([disabled]),nav .smallscreen .paginationbtn:hover:not([aria-current=page]):not([disabled]){text-decoration:underline}nav .largescreen .paginationbtn:focus,nav .smallscreen .paginationbtn:focus{outline:none}nav .largescreen .paginationbtn::-moz-focus-inner,nav .smallscreen .paginationbtn::-moz-focus-inner{border:0;outline:none}nav .largescreen .paginationbtn[disabled],nav .smallscreen .paginationbtn[disabled]{color:#9f9f9f;pointer-events:none}nav .largescreen .paginationbtn[disabled] svg *,nav .smallscreen .paginationbtn[disabled] svg *{fill:#9f9f9f}nav .largescreen .previousbtn,nav .smallscreen .previousbtn{margin-right:0.625rem;width:auto !important}nav .largescreen .nextbtn,nav .smallscreen .nextbtn{margin-left:0.625rem;margin-right:0;width:auto !important}nav .largescreen .previousbtn,nav .largescreen .nextbtn,nav .smallscreen .previousbtn,nav .smallscreen .nextbtn{-ms-transition:none;-webkit-transition:none;-moz-transition:none;transition:none}nav .largescreen .ellipsis,nav .smallscreen .ellipsis{display:inline-block;width:2.5rem;text-align:center}nav .largescreen .pagebtncontainer.user-is-tabbing :focus:not(.-disabled):not([aria-current=page]),nav .smallscreen .pagebtncontainer.user-is-tabbing :focus:not(.-disabled):not([aria-current=page]){-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}nav .largescreen .pagebtncontainer.user-is-tabbing :focus:not(.-disabled):not([aria-current=page]):before,nav .smallscreen .pagebtncontainer.user-is-tabbing :focus:not(.-disabled):not([aria-current=page]):before{position:absolute;content:"";height:auto;width:16px;top:0;bottom:0;left:12px;right:0;background:-webkit-gradient(linear, left top, right top, color-stop(66%, #3862e9), color-stop(0, transparent)) repeat-x;background:linear-gradient(90deg, #3862e9 66%, transparent 0) repeat-x;background-size:6px 2px;background-position:0 2em;border-radius:0;line-height:normal}nav .largescreen .pagebtncontainer.user-is-tabbing :focus:not(.-disabled):not([aria-current=page]).previousbtn:focus:before,nav .smallscreen .pagebtncontainer.user-is-tabbing :focus:not(.-disabled):not([aria-current=page]).previousbtn:focus:before{left:0 !important}nav .largescreen .pagebtncontainer.user-is-tabbing :focus:not(.-disabled):not([aria-current=page]).nextbtn:focus:before,nav .smallscreen .pagebtncontainer.user-is-tabbing :focus:not(.-disabled):not([aria-current=page]).nextbtn:focus:before{left:0 !important}nav .largescreen .pagebtncontainer.user-is-tabbing [aria-current=page]:focus,nav .smallscreen .pagebtncontainer.user-is-tabbing [aria-current=page]:focus{-webkit-box-shadow:0 2px 2px 0 rgba(244, 243, 246, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.1), 0 0 4px 3px #61279e;-moz-box-shadow:0 2px 2px 0 rgba(244, 243, 246, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.1), 0 0 4px 3px #61279e;box-shadow:0 2px 2px 0 rgba(244, 243, 246, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.1), 0 0 4px 3px #61279e}nav .largescreen .pagebtncontainer.user-is-tabbing [aria-current=page]:focus::-moz-focus-inner,nav .smallscreen .pagebtncontainer.user-is-tabbing [aria-current=page]:focus::-moz-focus-inner{border:0}nav .largescreen .user-is-tabbing :focus:not(.-disabled):not([aria-current=page]).previousbtn:focus:before{width:56px !important}nav .largescreen .user-is-tabbing :focus:not(.-disabled):not([aria-current=page]).nextbtn:focus:before{width:32px !important}nav .largescreen .paginationbtn[aria-current=page]{-webkit-border-radius:50%;-moz-border-radius:50%;-ms-border-radius:50%;border-radius:50%;-webkit-box-shadow:0 2px 2px 0 rgba(87, 81, 149, 0.12), 0 2px 2px 0 rgba(0, 0, 0, 0.2);-moz-box-shadow:0 2px 2px 0 rgba(87, 81, 149, 0.12), 0 2px 2px 0 rgba(0, 0, 0, 0.2);box-shadow:0 2px 2px 0 rgba(87, 81, 149, 0.12), 0 2px 2px 0 rgba(0, 0, 0, 0.2);background-color:#575195;color:#fff}nav .largescreen .paginationbtn[aria-current=page]:hover{-webkit-box-shadow:0 4px 2px 0 rgba(87, 81, 149, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.2);-moz-box-shadow:0 4px 2px 0 rgba(87, 81, 149, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.2);box-shadow:0 4px 2px 0 rgba(87, 81, 149, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.2);background:#4e4986}.sr-only{position:absolute !important;width:1px !important;height:1px !important;padding:0 !important;border:0 !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;-webkit-clip-path:inset(50%) !important;clip-path:inset(50%) !important;white-space:nowrap !important;margin:-1px !important}';const r=class{constructor(a){t(this,a);this.wmPaginationPageClicked=e(this,"wmPaginationPageClicked",7);this.pageClicked=e(this,"pageClicked",7);this.focusCurrentPage=e(this,"focusCurrentPage",7);this.totalPages=0;this.debouncedResize=i((()=>{this.isLargeViewport=window.innerWidth>600}),250);this.getMiddlePageNums=()=>{let t;if(this.currentPage<4){t=[2,3,4]}else if(this.currentPage>this.totalPages-3){t=[this.totalPages-3,this.totalPages-2,this.totalPages-1]}else{t=[this.currentPage-1,this.currentPage,this.currentPage+1]}return t};this.currentPage=1;this.totalItems=undefined;this.itemsPerPage=undefined;this.value=1;this.isLargeViewport=window.innerWidth>600;this.isTabbing=false;this.srAnnouncement=""}toggleTabbingOn(){this.isTabbing=true}toggleTabbingOff(){this.isTabbing=false}maintainFocusOnNumberChange(t){window.requestAnimationFrame((()=>{switch(t){case"previous":this.currentPage===1&&this.el.shadowRoot.querySelector(`button#wm-1`).focus();break;case"next":this.currentPage===this.totalPages&&this.el.shadowRoot.querySelector(`button#wm-${this.totalPages}`).focus();break;case"prev-arrow":this.currentPage===1&&this.el.shadowRoot.querySelector("#next-arw").focus();break;case"next-arrow":this.currentPage===this.totalPages&&this.el.shadowRoot.querySelector("#previous-arw").focus();break;case"page":this.el.shadowRoot.querySelector(`button#wm-${this.currentPage}`).focus();default:return}}))}handleResize(){this.debouncedResize()}calculateTotalPages(){this.totalPages=Math.ceil(this.totalItems/this.itemsPerPage)}componentWillLoad(){if(!this.totalItems||!this.itemsPerPage||!this.currentPage){throw new Error("Please check the required attributes")}this.calculateTotalPages();if(document.body.classList.contains("wmcl-user-is-tabbing")){this.toggleTabbingOn()}this.el.focus=()=>{if(this.isLargeViewport){this.el.shadowRoot.getElementById(`wm-${this.currentPage}`).focus()}else{this.currentPage===1?this.el.shadowRoot.getElementById("next-arw").focus():this.el.shadowRoot.getElementById("wm-1-arw").focus()}}}updatePageDisplayed(t){this.value=t;this.wmPaginationPageClicked.emit();this.pageClicked.emit();this.srAnnouncement=`Current page, ${this.currentPage}. ${this.getCurrentPagesInView()}`}displayShortPagination(){let t=[];for(let e=1;e<=this.totalPages;e++){t.push(this.displayPageNumber(e))}return t}displayLongPagination(){let t=[this.displayPageNumber(1),this.currentPage>3&&this.displayEllipsis(),...this.getMiddlePageNums().map((t=>this.displayPageNumber(t))),this.currentPage+2<this.totalPages&&this.displayEllipsis(),this.displayPageNumber(this.totalPages)];return t}displayPageNumber(t){return a("button",{id:`wm-${t}`,class:"paginationbtn",onClick:()=>{this.currentPage=t;this.updatePageDisplayed(t);this.maintainFocusOnNumberChange("page")},value:t,"aria-label":this.currentPage!==t?`Go to page ${t}`:"","aria-current":this.currentPage===t?"page":undefined},t)}displayEllipsis(){return a("span",{class:"ellipsis"},"...")}getCurrentPagesInView(){let t=this.itemsPerPage*this.currentPage;const e=t-this.itemsPerPage+1;if(t>this.totalItems){t=this.totalItems}return"Viewing "+(e===t?`${e}`:`${e}–${t} of ${this.totalItems}`)}renderLarge(){return a("div",{class:"largescreen"},a("div",{class:"pageview"},this.getCurrentPagesInView()),a("div",{class:`pagebtncontainer ${this.isTabbing?"user-is-tabbing":""}`},a("button",{id:"previous",class:"paginationbtn previousbtn",onClick:()=>{this.currentPage=this.currentPage-1;this.updatePageDisplayed(this.currentPage);this.maintainFocusOnNumberChange("previous")},disabled:this.currentPage===1,"aria-label":"Go to previous page","aria-controls":"status"},"Previous"),this.totalPages<6?this.displayShortPagination():this.displayLongPagination(),a("button",{id:"next",class:"paginationbtn nextbtn",onClick:()=>{this.currentPage=this.currentPage+1;this.updatePageDisplayed(this.currentPage);this.maintainFocusOnNumberChange("next")},disabled:this.currentPage===this.totalPages,"aria-label":"Go to next page","aria-controls":"status"},"Next")))}renderSmall(){return a("div",{class:"smallscreen"},a("div",{class:`pagebtncontainer ${this.isTabbing?"user-is-tabbing":""}`},a("button",{id:`wm-1-arw`,class:"paginationbtn",onClick:()=>{this.currentPage=1;this.updatePageDisplayed(1);this.maintainFocusOnNumberChange("prev-arrow")},value:1,"aria-current":this.currentPage===1?"page":undefined,"aria-label":`Go to page 1`,"aria-controls":"status",disabled:this.currentPage===1},a("svg",{width:"16",height:"12",xmlns:"http://www.w3.org/2000/svg"},a("path",{d:"M7.41 10.59L2.83 6l4.58-4.59L6 0 0 6l6 6zM15.41 10.59L10.83 6l4.58-4.59L14 0 8 6l6 6z"}))),a("button",{id:"previous-arw",class:"paginationbtn previousbtn",onClick:()=>{this.currentPage-=1;this.updatePageDisplayed(this.currentPage);this.maintainFocusOnNumberChange("prev-arrow")},disabled:this.currentPage===1,"aria-label":"Go to previous page"},a("svg",{width:"8",height:"12",xmlns:"http://www.w3.org/2000/svg"},a("path",{d:"M7.41 10.59L2.83 6l4.58-4.59L6 0 0 6l6 6z"}))),"Page ",this.currentPage," of ",this.totalPages,a("button",{id:"next-arw",class:"paginationbtn nextbtn",onClick:()=>{this.currentPage+=1;this.updatePageDisplayed(this.currentPage);this.maintainFocusOnNumberChange("next-arrow")},disabled:this.currentPage===this.totalPages,"aria-label":"Go to next page"},a("svg",{width:"8",height:"12",xmlns:"http://www.w3.org/2000/svg"},a("path",{d:"M.59 10.59L5.17 6 .59 1.41 2 0l6 6-6 6z"}))),a("button",{id:`wm-${this.totalPages}-arw`,class:"paginationbtn",onClick:()=>{this.currentPage=this.totalPages;this.updatePageDisplayed(this.totalPages);this.maintainFocusOnNumberChange("next-arrow")},value:this.totalPages,"aria-current":this.currentPage===this.totalPages?"page":undefined,"aria-label":`Go to last page, page ${this.totalPages}`,"aria-controls":"status",disabled:this.currentPage===this.totalPages},a("svg",{width:"17",height:"12",xmlns:"http://www.w3.org/2000/svg"},a("path",{d:"M.59 10.59L5.17 6 .59 1.41 2 0l6 6-6 6zM9.59 10.59L14.17 6 9.59 1.41 11 0l6 6-6 6z"})))))}render(){return this.totalItems>this.itemsPerPage&&a("nav",{"aria-label":`Pagination Navigation. ${this.getCurrentPagesInView()}. Current page, ${this.currentPage}.`},this.isLargeViewport?this.renderLarge():this.renderSmall(),a("div",{id:"status",class:"sr-only","aria-live":"polite","aria-relevant":"text","aria-atomic":"true"},this.srAnnouncement))}static get delegatesFocus(){return true}get el(){return n(this)}static get watchers(){return{totalItems:["calculateTotalPages"],itemsPerPage:["calculateTotalPages"]}}};r.style=s;export{r as wm_pagination};
|
|
2
|
-
//# sourceMappingURL=p-fc08d5e1.entry.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["wmPaginationCss","Pagination","this","totalPages","debouncedResize","debounce","isLargeViewport","window","innerWidth","getMiddlePageNums","coreBtns","currentPage","undefined","toggleTabbingOn","isTabbing","toggleTabbingOff","maintainFocusOnNumberChange","el","requestAnimationFrame","shadowRoot","querySelector","focus","handleResize","calculateTotalPages","Math","ceil","totalItems","itemsPerPage","componentWillLoad","Error","document","body","classList","contains","getElementById","updatePageDisplayed","pageNum","value","wmPaginationPageClicked","emit","pageClicked","srAnnouncement","getCurrentPagesInView","displayShortPagination","pages","i","push","displayPageNumber","displayLongPagination","view","displayEllipsis","map","page","h","id","class","onClick","end","begin","renderLarge","disabled","renderSmall","width","height","xmlns","d","render"],"sources":["./src/components/wm-pagination/wm-pagination.scss?tag=wm-pagination&encapsulation=shadow","./src/components/wm-pagination/wm-pagination.tsx"],"sourcesContent":["nav .largescreen,\nnav .smallscreen {\n margin-bottom: rem-calc(10);\n @include displayFlex();\n @include alignItems(center);\n @include justifyContent(flex-end);\n @include type-level-4;\n\n .pageview {\n @include type-level-4;\n margin: rem-calc(0 10);\n }\n\n .paginationbtn {\n position: relative;\n @include box-shadow(none); // fix for Edge\n @include transition(none);\n border: none;\n color: $button-default-text;\n background-color: transparent;\n margin: 0;\n padding: 0;\n height: rem-calc(40);\n width: rem-calc(40);\n font-family: inherit;\n letter-spacing: 0.3px;\n font-size: rem-calc(14);\n font-weight: 500;\n cursor: pointer;\n text-transform: none; //For Edge\n\n svg * {\n fill: #565397;\n }\n\n &:hover:not([aria-current=\"page\"]):not([disabled]) {\n text-decoration: underline;\n }\n\n &:focus {\n outline: none;\n }\n\n &::-moz-focus-inner {\n border: 0;\n outline: none;\n }\n\n &[disabled] {\n color: #9f9f9f;\n pointer-events: none;\n svg * {\n fill: #9f9f9f;\n }\n }\n }\n\n .previousbtn {\n margin-right: rem-calc(10);\n width: auto !important;\n }\n\n .nextbtn {\n margin-left: rem-calc(10);\n margin-right: 0;\n width: auto !important;\n }\n\n .previousbtn,\n .nextbtn {\n @include transition(none);\n }\n\n .ellipsis {\n display: inline-block;\n width: rem-calc(40);\n text-align: center;\n }\n\n .pagebtncontainer {\n &.user-is-tabbing {\n :focus:not(.-disabled):not([aria-current=\"page\"]) {\n @include box-shadow(none); // fix for Edge\n\n &:before {\n position: absolute;\n content: \"\";\n height: auto;\n width: 16px;\n top: 0;\n bottom: 0;\n left: 12px;\n right: 0;\n background: linear-gradient(90deg, #3862e9 66%, transparent 0) repeat-x;\n background-size: 6px 2px;\n background-position: 0 2em;\n border-radius: 0;\n line-height: normal;\n }\n\n &.previousbtn:focus:before {\n left: 0 !important;\n }\n\n &.nextbtn:focus:before {\n left: 0 !important;\n }\n }\n\n [aria-current=\"page\"]:focus {\n @include focus-style;\n }\n }\n }\n}\n\nnav .largescreen {\n & .user-is-tabbing {\n :focus:not(.-disabled):not([aria-current=\"page\"]) {\n // to make focus indicator as wide as text \"previous\" and \"next\"\n &.previousbtn:focus:before {\n width: 56px !important;\n }\n &.nextbtn:focus:before {\n width: 32px !important;\n }\n }\n }\n .paginationbtn {\n &[aria-current=\"page\"] {\n @include border-radius(50%);\n @include box-shadow(0 2px 2px 0 rgba(87, 81, 149, 0.12), 0 2px 2px 0 rgba(0, 0, 0, 0.2));\n background-color: $button-primary-background;\n color: $button-primary-text;\n\n &:hover {\n @include box-shadow(0 4px 2px 0 rgba(87, 81, 149, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.2));\n background: mix(black, $button-primary-background, 10%);\n }\n }\n }\n}\n\n.sr-only {\n @include srOnly;\n}\n","import { h, Component, EventEmitter, Prop, Watch, Event, Element, Listen, State } from \"@stencil/core\";\nimport { debounce } from \"../../global/functions\";\n\n@Component({\n tag: \"wm-pagination\",\n styleUrl: \"wm-pagination.scss\",\n shadow: { delegatesFocus: true },\n})\nexport class Pagination {\n @Element() el!: any;\n\n @Prop() currentPage: number = 1;\n @Prop() totalItems?: number = undefined;\n @Prop() itemsPerPage?: number = undefined;\n @Prop() value = 1;\n @Prop() isLargeViewport: boolean = window.innerWidth > 600;\n @State() isTabbing: boolean = false;\n @State() srAnnouncement: string = \"\";\n\n private totalPages: number = 0;\n\n @Event() wmPaginationPageClicked!: EventEmitter<String>;\n @Event() pageClicked!: EventEmitter<String>; // deprecated in favor of wmPaginationPageClicked\n @Event() focusCurrentPage!: EventEmitter;\n\n @Listen(\"wmUserIsTabbing\", { target: \"window\" })\n toggleTabbingOn() {\n this.isTabbing = true;\n }\n\n @Listen(\"wmUserIsNotTabbing\", { target: \"window\" })\n toggleTabbingOff() {\n this.isTabbing = false;\n }\n\n maintainFocusOnNumberChange(el: \"previous\" | \"next\" | \"prev-arrow\" | \"next-arrow\" | \"page\") {\n window.requestAnimationFrame(() => {\n switch (el) {\n case \"previous\":\n this.currentPage === 1 && this.el.shadowRoot.querySelector(`button#wm-1`).focus(); //Only shift focus from previous button to page 1 if page 1 is reached, which disables previous button. Otherwise, maintain focus on previous button.\n break;\n case \"next\":\n this.currentPage === this.totalPages &&\n this.el.shadowRoot.querySelector(`button#wm-${this.totalPages}`).focus(); //Only shift focus from next button if last page is reached, disabling next button. Otherwise, maintain focus on next button.\n break;\n case \"prev-arrow\":\n this.currentPage === 1 && this.el.shadowRoot.querySelector(\"#next-arw\").focus(); //Only shift focus if page 1 is reached, disabling previous buttons. Otherwise, maintain focus on previous buttons.\n break;\n case \"next-arrow\":\n this.currentPage === this.totalPages && this.el.shadowRoot.querySelector(\"#previous-arw\").focus(); //Only shift focus if last page is reached, disabling next buttons. Otherwise, maintain focus on next buttons.\n break;\n case \"page\":\n this.el.shadowRoot.querySelector(`button#wm-${this.currentPage}`).focus();\n default:\n return;\n }\n });\n }\n\n debouncedResize = debounce(() => {\n this.isLargeViewport = window.innerWidth > 600;\n }, 250);\n\n @Listen(\"resize\", { target: \"window\" })\n handleResize() {\n this.debouncedResize();\n }\n\n @Watch(\"totalItems\")\n @Watch(\"itemsPerPage\")\n calculateTotalPages() {\n this.totalPages = Math.ceil(this.totalItems! / this.itemsPerPage!);\n }\n\n componentWillLoad() {\n if (!this.totalItems || !this.itemsPerPage || !this.currentPage) {\n throw new Error(\"Please check the required attributes\");\n }\n\n this.calculateTotalPages();\n\n if (document.body.classList.contains(\"wmcl-user-is-tabbing\")) {\n this.toggleTabbingOn();\n }\n\n this.el.focus = () => {\n // in addition to delegatesFocus, we need to highjack the focus method to send focus to the appropriate element based on the components's state\n if (this.isLargeViewport) {\n this.el.shadowRoot.getElementById(`wm-${this.currentPage}`).focus();\n } else {\n this.currentPage === 1\n ? this.el.shadowRoot.getElementById(\"next-arw\").focus()\n : this.el.shadowRoot.getElementById(\"wm-1-arw\").focus();\n }\n };\n }\n\n updatePageDisplayed(pageNum: any) {\n this.value = pageNum;\n this.wmPaginationPageClicked.emit();\n this.pageClicked.emit(); // deprecated\n this.srAnnouncement = `Current page, ${this.currentPage}. ${this.getCurrentPagesInView()}`;\n }\n\n displayShortPagination() {\n let pages = [];\n for (let i = 1; i <= this.totalPages; i++) {\n pages.push(this.displayPageNumber(i));\n }\n return pages;\n }\n\n displayLongPagination() {\n let view = [\n this.displayPageNumber(1),\n this.currentPage > 3 && this.displayEllipsis(),\n ...this.getMiddlePageNums().map((page) => this.displayPageNumber(page)),\n this.currentPage + 2 < this.totalPages && this.displayEllipsis(),\n this.displayPageNumber(this.totalPages),\n ];\n return view;\n }\n\n displayPageNumber(pageNum: number) {\n return (\n <button\n id={`wm-${pageNum}`}\n class=\"paginationbtn\"\n onClick={() => {\n this.currentPage = pageNum;\n this.updatePageDisplayed(pageNum);\n this.maintainFocusOnNumberChange(\"page\");\n }}\n value={pageNum}\n aria-label={this.currentPage !== pageNum ? `Go to page ${pageNum}` : \"\"}\n aria-current={this.currentPage === pageNum ? \"page\" : undefined}\n >\n {pageNum}\n </button>\n );\n }\n\n displayEllipsis() {\n return <span class=\"ellipsis\">...</span>;\n }\n\n getMiddlePageNums = () => {\n let coreBtns;\n // if pg is 1, 2 or 3\n if (this.currentPage < 4) {\n coreBtns = [2, 3, 4];\n } else if (this.currentPage > this.totalPages - 3) {\n coreBtns = [this.totalPages - 3, this.totalPages - 2, this.totalPages - 1];\n } else {\n coreBtns = [this.currentPage - 1, this.currentPage, this.currentPage + 1];\n }\n return coreBtns;\n };\n\n // displayPageView = () => {\n // // let end = this.itemsPerPage! * this.currentPage;\n // // const begin = end - this.itemsPerPage! + 1;\n // // if (end > this.totalItems!) {\n // // end = this.totalItems!;\n // // }\n // return <div class=\"pageview\">{this.getCurrentView()}</div>;\n // };\n\n getCurrentPagesInView() {\n let end = this.itemsPerPage! * this.currentPage;\n const begin = end - this.itemsPerPage! + 1;\n if (end > this.totalItems!) {\n end = this.totalItems!;\n }\n return \"Viewing \" + (begin === end ? `${begin}` : `${begin}–${end} of ${this.totalItems}`);\n }\n\n renderLarge() {\n return (\n <div class=\"largescreen\">\n <div class=\"pageview\">{this.getCurrentPagesInView()}</div>\n <div class={`pagebtncontainer ${this.isTabbing ? \"user-is-tabbing\" : \"\"}`}>\n <button\n id=\"previous\"\n class=\"paginationbtn previousbtn\"\n onClick={() => {\n this.currentPage = this.currentPage - 1;\n this.updatePageDisplayed(this.currentPage);\n this.maintainFocusOnNumberChange(\"previous\");\n }}\n disabled={this.currentPage === 1}\n aria-label=\"Go to previous page\"\n aria-controls=\"status\"\n >\n Previous\n </button>\n {this.totalPages < 6 ? this.displayShortPagination() : this.displayLongPagination()}\n <button\n id=\"next\"\n class=\"paginationbtn nextbtn\"\n onClick={() => {\n this.currentPage = this.currentPage + 1;\n this.updatePageDisplayed(this.currentPage);\n this.maintainFocusOnNumberChange(\"next\");\n }}\n disabled={this.currentPage === this.totalPages}\n aria-label=\"Go to next page\"\n aria-controls=\"status\"\n >\n Next\n </button>\n </div>\n </div>\n );\n }\n\n renderSmall() {\n return (\n <div class=\"smallscreen\">\n <div class={`pagebtncontainer ${this.isTabbing ? \"user-is-tabbing\" : \"\"}`}>\n <button\n id={`wm-1-arw`}\n class=\"paginationbtn\"\n onClick={() => {\n this.currentPage = 1;\n this.updatePageDisplayed(1);\n this.maintainFocusOnNumberChange(\"prev-arrow\");\n }}\n value={1}\n aria-current={this.currentPage === 1 ? \"page\" : undefined}\n aria-label={`Go to page 1`}\n aria-controls=\"status\"\n disabled={this.currentPage === 1}\n >\n <svg width=\"16\" height=\"12\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M7.41 10.59L2.83 6l4.58-4.59L6 0 0 6l6 6zM15.41 10.59L10.83 6l4.58-4.59L14 0 8 6l6 6z\" />\n </svg>\n </button>\n <button\n id=\"previous-arw\"\n class=\"paginationbtn previousbtn\"\n onClick={() => {\n this.currentPage -= 1;\n this.updatePageDisplayed(this.currentPage);\n this.maintainFocusOnNumberChange(\"prev-arrow\");\n }}\n disabled={this.currentPage === 1}\n aria-label=\"Go to previous page\"\n >\n <svg width=\"8\" height=\"12\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M7.41 10.59L2.83 6l4.58-4.59L6 0 0 6l6 6z\" />\n </svg>\n </button>\n Page {this.currentPage} of {this.totalPages}\n <button\n id=\"next-arw\"\n class=\"paginationbtn nextbtn\"\n onClick={() => {\n this.currentPage += 1;\n this.updatePageDisplayed(this.currentPage);\n this.maintainFocusOnNumberChange(\"next-arrow\");\n }}\n disabled={this.currentPage === this.totalPages}\n aria-label=\"Go to next page\"\n >\n <svg width=\"8\" height=\"12\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M.59 10.59L5.17 6 .59 1.41 2 0l6 6-6 6z\" />\n </svg>\n </button>\n <button\n id={`wm-${this.totalPages}-arw`}\n class=\"paginationbtn\"\n onClick={() => {\n this.currentPage = this.totalPages;\n this.updatePageDisplayed(this.totalPages);\n this.maintainFocusOnNumberChange(\"next-arrow\");\n }}\n value={this.totalPages}\n aria-current={this.currentPage === this.totalPages ? \"page\" : undefined}\n aria-label={`Go to last page, page ${this.totalPages}`}\n aria-controls=\"status\"\n disabled={this.currentPage === this.totalPages}\n >\n <svg width=\"17\" height=\"12\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M.59 10.59L5.17 6 .59 1.41 2 0l6 6-6 6zM9.59 10.59L14.17 6 9.59 1.41 11 0l6 6-6 6z\" />\n </svg>\n </button>\n </div>\n </div>\n );\n }\n\n render() {\n return (\n // do not render the component if there's only one page\n this.totalItems! > this.itemsPerPage! && (\n <nav aria-label={`Pagination Navigation. ${this.getCurrentPagesInView()}. Current page, ${this.currentPage}.`}>\n {/* both \"desktop\" and \"mobile\" versions are renderered. media queries hide the unnecessary stuff */}\n {this.isLargeViewport ? this.renderLarge() : this.renderSmall()}\n {/* The below is for screenreader purposes, ensuring it announces the new current page.*/}\n <div id=\"status\" class=\"sr-only\" aria-live=\"polite\" aria-relevant=\"text\" aria-atomic=\"true\">\n {this.srAnnouncement}\n </div>\n </nav>\n )\n );\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{r as t,c as i,h as s,H as e,g as n}from"./p-1c23de4a.js";import{o,g as r,m as h,w as a}from"./p-c6a0f7e5.js";import{g as m}from"./p-888bec42.js";const l=":host{position:relative;display:inline-block;width:-moz-fit-content;width:-webkit-fit-content;width:fit-content;color:#575195;font-family:inherit}:host .sr-only{position:absolute !important;width:1px !important;height:1px !important;padding:0 !important;border:0 !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;-webkit-clip-path:inset(50%) !important;clip-path:inset(50%) !important;white-space:nowrap !important;margin:-1px !important}:host(:focus){outline:none}wm-action-menu:focus{outline:none}.dropdown{position:absolute;padding:0;margin:0.25rem 0;border-radius:3px 3px 3px 3px;min-width:11.4375rem;-ms-transform:scale(1, 0);-webkit-transform:scale(1, 0);-moz-transform:scale(1, 0);transform:scale(1, 0);-ms-transition:transform 0.25s ease;-webkit-transition:transform 0.25s ease;-moz-transition:transform 0.25s ease;-webkit-transition:-webkit-transform 0.25s ease;transition:-webkit-transform 0.25s ease;transition:transform 0.25s ease;transition:transform 0.25s ease, -webkit-transform 0.25s ease;-ms-transform-origin:center top;-webkit-transform-origin:center top;-moz-transform-origin:center top;transform-origin:center top;visibility:hidden;-webkit-box-shadow:0 3px 14px 3px rgba(5, 3, 3, 0.12), 0 4px 15px 0 rgba(0, 0, 0, 0.2);-moz-box-shadow:0 3px 14px 3px rgba(5, 3, 3, 0.12), 0 4px 15px 0 rgba(0, 0, 0, 0.2);box-shadow:0 3px 14px 3px rgba(5, 3, 3, 0.12), 0 4px 15px 0 rgba(0, 0, 0, 0.2);background:#fff;z-index:10;text-align:left;white-space:nowrap}.dropdown:focus{outline:none}.dropdown.open{-ms-transform:scale(1, 1);-webkit-transform:scale(1, 1);-moz-transform:scale(1, 1);transform:scale(1, 1);visibility:visible}.dropdown.open-up{bottom:2.5rem;top:auto;-ms-transform-origin:center bottom;-webkit-transform-origin:center bottom;-moz-transform-origin:center bottom;transform-origin:center bottom}.dropdown.right{left:0}.dropdown.left{right:0}";const d=class{constructor(s){t(this,s);this.wmActionMenuLoaded=i(this,"wmActionMenuLoaded",7);this.menuLoaded=i(this,"menuLoaded",7);this.openUp=false;this.keysSoFar="";this.searchIndex=0;this.keyClear=null;this.isExpanded=false;this.tooltipPosition=undefined;this.actionMenuType=null;this.buttonType=null;this.buttonText=undefined;this.disabled=false;this.tooltip=undefined;this.labelForIdenticalButtons=undefined;this.darkMode=undefined}get horizontalPosition(){return!!this.el&&!!this.itemsEl&&o(this.el,this.itemsEl)?"right":"left"}get childItems(){return Array.from(this.el.querySelectorAll("wm-menuitem"))}get internalButtonType(){return this.tempActionMenuType==="icon"||this.tempActionMenuType==="text"?this.tempActionMenuType+"only":this.tempActionMenuType}get tempActionMenuType(){return this.actionMenuType||this.buttonType||"icon"}handleClickedItem(){this.close()}handleKeyUp(t){this.moveUp(t.target)}handleKeyDown(t){this.moveDown(t.detail)}handleHomeKey(){this.focusFirstItem()}handleEndKey(){this.focusLastItem()}handleTabKey(){if(this.isExpanded){this.close()}}handleEscKey(){this.close();this.wmButtonEl.focus()}handleKey(t){switch(t.key){case"ArrowDown":if(!this.isExpanded){t.preventDefault();this.open();window.requestAnimationFrame((()=>this.focusFirstItem()))}break;case"ArrowUp":if(!this.isExpanded){t.preventDefault();this.open();window.requestAnimationFrame((()=>this.focusLastItem()))}break}}handleMenuitemBlur(t){const i=t.detail.relatedTarget===this.el||this.el.contains(t.detail.relatedTarget);if(!i){const i=new CustomEvent("blur");i.relatedTarget=t.detail.relatedTarget;this.el.dispatchEvent(i)}}handleButtonBlur(t){const i=t.relatedTarget===this.el||this.el.contains(t.relatedTarget);if(i){t.stopPropagation()}}componentWillLoad(){this.uid=this.el.id?this.el.id:r();if(this.buttonType){console.warn("wm-action-menu: button-type has been deprecated as of v3.1.0. Please use action-menu-type instead.")}}componentDidLoad(){if(this.tempActionMenuType!=="icon"&&!this.buttonText){console.error("wm-action-menu should have a valid button-text property when action-menu-type is set to 'text' or 'selector'")}if(this.tempActionMenuType==="icon"&&!this.tooltip){console.error("wm-action-menu should have a valid tooltip when action-menu-type is set to 'icon'")}this.wmActionMenuLoaded.emit();this.menuLoaded.emit()}moveUp(t){const i=this.childItems.indexOf(t);if(i===0){this.focusLastItem()}else{this.focusItem(this.childItems[i-1])}}moveDown(t){const i=this.childItems.indexOf(t);if(i===this.childItems.length-1){this.focusFirstItem()}else{this.focusItem(this.childItems[i+1])}}open(){if(!this.disabled){this.openUp=h(this.el,this.itemsEl);this.isExpanded=true;this.itemsEl.classList.remove("hidden");window.requestAnimationFrame((()=>this.focusFirstItem()))}}close(t=true){this.isExpanded=false;this.childItems.forEach((t=>t.focused=false));window.setTimeout((()=>{this.itemsEl.classList.add("hidden")}),150);window.setTimeout((()=>{if(t&&(document.activeElement.tagName==="BODY"||document.activeElement.tagName==="WM-MENUITEM")){this.wmButtonEl.focus()}}),250)}focusItem(t){this.childItems.map((i=>i.focused=i===t));t.focus&&t.focus()}focusFirstItem(){this.focusItem(this.childItems[0])}focusLastItem(){this.focusItem(this.childItems[this.childItems.length-1])}findAndFocusItem(t){const i=t.detail.toUpperCase();this.focusFirstItem();if(!this.keysSoFar){for(var s=0;s<this.childItems.length;s++){if(this.childItems[s]===document.activeElement){this.searchIndex=s}}}this.keysSoFar+=i;this.clearKeysSoFarAfterDelay();var e=this.findMatchInRange(this.childItems,this.searchIndex+1,this.childItems.length);if(!e){e=this.findMatchInRange(this.childItems,0,this.searchIndex)}if(e){this.focusItem(e)}}clearKeysSoFarAfterDelay(){if(this.keyClear){window.clearTimeout(this.keyClear);this.keyClear=null}this.keyClear=window.setTimeout(function(){this.keysSoFar="";this.keyClear=null}.bind(this),500)}findMatchInRange(t,i,s){for(var e=i;e<s;e++){var n=t[e].innerText;if(n&&n.toUpperCase().indexOf(this.keysSoFar)===0){return t[e]}}return null}render(){return s(e,{onBlur:()=>this.close(false)},s("div",{class:a()},s("wm-button",{"button-type":this.internalButtonType,tooltip:this.tooltip,"custom-background":this.darkMode?"dark":undefined,"label-for-identical-buttons":this.labelForIdenticalButtons,icon:this.tempActionMenuType==="icon"?"f1d9":"",id:`menubtn-${this.uid}`,onClick:()=>this.isExpanded?this.close():this.open(),onBlur:t=>this.handleButtonBlur(t),disabled:this.disabled,ref:t=>this.wmButtonEl=t,"tooltip-position":this.tooltipPosition||this.horizontalPosition,"aria-haspopup":"true","aria-expanded":this.isExpanded?"true":"false","aria-controls":`menu-${this.uid}`},this.buttonText),s("div",{class:`dropdown ${this.openUp?"open-up":""} ${this.horizontalPosition} ${this.isExpanded?"open":""} hidden`,id:`menu-${this.uid}`,tabindex:-1,role:"menu",ref:t=>this.itemsEl=t},s("slot",null))))}static get delegatesFocus(){return true}get el(){return n(this)}};d.style=l;const c=':host,wm-menuitem{contain:content;font-family:inherit}:host .wrapper,wm-menuitem .wrapper{display:block;min-width:8.75rem;cursor:pointer;padding:1.25rem;border-radius:0px 0px 0px 0px;background:#fff;font-family:inherit;font-weight:500;list-style:none;border-bottom:2px solid rgba(46, 27, 70, 0.05);color:#575195;font-weight:700}:host .wrapper:focus,:host .wrapper.focus,wm-menuitem .wrapper:focus,wm-menuitem .wrapper.focus{outline:none;background:#f4f3f6}:host .wrapper:hover,wm-menuitem .wrapper:hover{background:#f4f3f6;outline:none}:host .wrapper .description,wm-menuitem .wrapper .description{color:#4a4a4a;font-size:0.875rem;padding-top:0.5rem;white-space:normal;font-weight:400}:host .wrapper[aria-disabled=true],wm-menuitem .wrapper[aria-disabled=true]{font-style:italic;color:#6b6b6b}:host .wrapper:not(:last-child),wm-menuitem .wrapper:not(:last-child){border-bottom:2px solid rgba(46, 27, 70, 0.05)}:host ::slotted,wm-menuitem ::slotted{font-family:inherit}:host .mdi,wm-menuitem .mdi{display:inline-block;font:normal normal normal 24px/1 "Material Design Icons";font-size:inherit;text-rendering:auto;line-height:inherit;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;margin-right:0.625rem;pointer-events:none}:host(:focus),wm-menuitem:focus{outline:none;background:#f4f3f6}:host([aria-disabled=true]),wm-menuitem[aria-disabled=true]{pointer-events:none}';const p=class{constructor(s){t(this,s);this.wmMenuitemClicked=i(this,"wmMenuitemClicked",7);this.wmKeyUpPressed=i(this,"wmKeyUpPressed",7);this.wmKeyDownPressed=i(this,"wmKeyDownPressed",7);this.wmEscKeyPressed=i(this,"wmEscKeyPressed",7);this.wmHomeKeyPressed=i(this,"wmHomeKeyPressed",7);this.wmEndKeyPressed=i(this,"wmEndKeyPressed",7);this.wmPageDownItems=i(this,"wmPageDownItems",7);this.wmPageUpItems=i(this,"wmPageUpItems",7);this.wmTabKeyPressed=i(this,"wmTabKeyPressed",7);this.wmLetterPressed=i(this,"wmLetterPressed",7);this.wmMenuitemBlurred=i(this,"wmMenuitemBlurred",7);this.descriptionCharLimit=100;this.disabled=false;this.focused=false;this.icon=undefined;this.description=undefined;this.isKeying=false}toggleKeyingOn(){this.isKeying=true}toggleKeyingOff(){this.isKeying=false}handleKeydown(t){const i=t.altKey||t.ctrlKey||t.metaKey;const s=/^.$/.test(t.key);const e=s&&!i;switch(t.key){case"ArrowUp":t.preventDefault();this.wmKeyUpPressed.emit(this.el);break;case"ArrowDown":t.preventDefault();this.wmKeyDownPressed.emit(this.el);break;case"Enter":t.preventDefault();if(!this.disabled){this.el.click()}break;case"Escape":t.preventDefault();t.stopPropagation();this.wmEscKeyPressed.emit();break;case"Home":t.preventDefault();this.wmHomeKeyPressed.emit();break;case"End":t.preventDefault();this.wmEndKeyPressed.emit();break;case"Tab":this.wmTabKeyPressed.emit();break;default:if(e){t.preventDefault();this.wmLetterPressed.emit(t.key)}}}handleClick(){if(!this.disabled){this.wmMenuitemClicked.emit()}}handleBlur(t){this.wmMenuitemBlurred.emit({relatedTarget:t.relatedTarget})}setOnClick(){if(this.disabled&&this.el.onclick){this.onClickFunc=this.el.onclick;this.el.onclick=null}else if(!this.disabled&&this.onClickFunc){this.el.onclick=this.onClickFunc}}componentWillLoad(){if(this.icon){this.icon=m(this.icon)}if(this.description){if(this.description.length>this.descriptionCharLimit){console.error(`wm-menuitem description is above the character limit of ${this.descriptionCharLimit}`)}if(this.icon){console.error("wm-menuitems with descriptions do not support the use of icons")}}this.setOnClick()}componentDidLoad(){if(this.icon){this.iconEl.classList.add("mdi");this.iconEl.innerHTML=`&#x${this.icon};`}}render(){return s(e,{tabindex:-1,role:"menuitem","aria-disabled":this.disabled?"true":null},s("div",{class:`wrapper ${this.focused&&this.isKeying?"focus":""}`,"aria-disabled":this.disabled?"true":null},s("span",{ref:t=>this.iconEl=t}),s("slot",null),this.description?s("div",{class:"description"},this.description):""))}get el(){return n(this)}static get watchers(){return{disabled:["setOnClick"]}}};p.style=c;export{d as wm_action_menu,p as wm_menuitem};
|
|
2
|
-
//# sourceMappingURL=p-fe7da854.entry.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["wmActionMenuCss","ActionMenu","this","openUp","keysSoFar","searchIndex","keyClear","horizontalPosition","el","itemsEl","shouldShiftRight","childItems","Array","from","querySelectorAll","internalButtonType","tempActionMenuType","actionMenuType","buttonType","handleClickedItem","close","handleKeyUp","ev","moveUp","target","handleKeyDown","moveDown","detail","handleHomeKey","focusFirstItem","handleEndKey","focusLastItem","handleTabKey","isExpanded","handleEscKey","wmButtonEl","focus","handleKey","key","preventDefault","open","window","requestAnimationFrame","handleMenuitemBlur","toElOrChild","relatedTarget","contains","event","CustomEvent","dispatchEvent","handleButtonBlur","stopPropagation","componentWillLoad","uid","id","generateId","console","warn","componentDidLoad","buttonText","error","tooltip","wmActionMenuLoaded","emit","menuLoaded","index","indexOf","focusItem","length","disabled","shouldOpenUp","classList","remove","returnFocus","forEach","i","focused","setTimeout","add","document","activeElement","tagName","item","map","findAndFocusItem","character","toUpperCase","clearKeysSoFarAfterDelay","nextMatch","findMatchInRange","clearTimeout","bind","list","startIndex","endIndex","n","label","innerText","render","h","Host","onBlur","class","getTextDir","darkMode","undefined","labelForIdenticalButtons","icon","onClick","ref","tooltipPosition","tabindex","role","wmMenuitemCss","Menuitem","descriptionCharLimit","toggleKeyingOn","isKeying","toggleKeyingOff","handleKeydown","modifierKeyUsed","altKey","ctrlKey","metaKey","isSingleCharacter","test","isCharacterEntry","wmKeyUpPressed","wmKeyDownPressed","click","wmEscKeyPressed","wmHomeKeyPressed","wmEndKeyPressed","wmTabKeyPressed","wmLetterPressed","handleClick","wmMenuitemClicked","handleBlur","wmMenuitemBlurred","setOnClick","onclick","onClickFunc","getIconCodeFromName","description","iconEl","innerHTML"],"sources":["./src/components/wm-action-menu/wm-action-menu.scss?tag=wm-action-menu&encapsulation=shadow","./src/components/wm-action-menu/wm-action-menu.tsx","./src/components/wm-menuitem/wm-menuitem.scss?tag=wm-menuitem&encapsulation=shadow","./src/components/wm-menuitem/wm-menuitem.tsx"],"sourcesContent":[":host {\n position: relative;\n display: inline-block;\n width: -moz-fit-content;\n width: fit-content;\n color: #575195;\n font-family: inherit;\n\n .sr-only {\n @include srOnly;\n }\n}\n\n:host(:focus) {\n outline: none;\n}\n\nwm-action-menu:focus {\n outline: none;\n}\n\n.dropdown {\n position: absolute;\n padding: 0;\n margin: rem-calc(4) 0;\n border-radius: 3px 3px 3px 3px;\n min-width: rem-calc(183);\n @include scale($xVal: 1, $yVal: 0);\n @include transition(transform 0.25s ease);\n @include transformOrigin(center top);\n visibility: hidden;\n\n &:focus {\n outline: none;\n }\n\n @include box-shadow(0 3px 14px 3px rgba(5, 3, 3, 0.12), 0 4px 15px 0 rgba(0, 0, 0, 0.2));\n background: #fff;\n z-index: 10;\n text-align: left;\n\n &.open {\n @include scale($xVal: 1, $yVal: 1);\n visibility: visible;\n }\n\n &.open-up {\n bottom: 2.5rem;\n top: auto;\n @include transformOrigin(center bottom);\n }\n\n &.right {\n // anchoring to left corner means it opens on the right side\n left: 0;\n }\n\n &.left {\n right: 0;\n }\n\n white-space: nowrap;\n}\n","import { h, Component, Element, Listen, Prop, State, Event, EventEmitter, Host } from \"@stencil/core\";\nimport { generateId, getTextDir, shouldOpenUp, shouldShiftRight } from \"../../global/functions\";\n\n@Component({\n tag: \"wm-action-menu\",\n styleUrl: \"wm-action-menu.scss\",\n shadow: { delegatesFocus: true },\n})\nexport class ActionMenu {\n @Element() el!: HTMLWmActionMenuElement;\n private wmButtonEl!: HTMLWmButtonElement;\n private itemsEl?: HTMLDivElement;\n private uid!: string;\n private openUp: boolean = false;\n get horizontalPosition(): \"right\" | \"left\" {\n return !!this.el && !!this.itemsEl && shouldShiftRight(this.el, this.itemsEl!) ? \"right\" : \"left\";\n }\n get childItems(): HTMLWmMenuitemElement[] {\n return Array.from(this.el.querySelectorAll(\"wm-menuitem\"));\n }\n get internalButtonType(): string {\n return this.tempActionMenuType === \"icon\" || this.tempActionMenuType === \"text\"\n ? this.tempActionMenuType + \"only\"\n : this.tempActionMenuType;\n }\n\n @State() isExpanded = false;\n @Prop() tooltipPosition?:\n | \"top\"\n | \"bottom\"\n | \"left\"\n | \"right\"\n | \"bottom-left\"\n | \"bottom-right\"\n | \"top-right\"\n | \"top-left\";\n @Prop() actionMenuType: \"icon\" | \"text\" | \"selector\" | \"selector-primary\" | null = null;\n @Prop() buttonType: \"icon\" | \"text\" | \"selector\" | null = null; // deprecated in favor of actionMenuType\n get tempActionMenuType(): \"icon\" | \"text\" | \"selector\" | \"selector-primary\" {\n // uses of this getter should be replaced with this.actionMenuType when buttonType is fully phased out\n // don't forget to reset this.actionMenuTypes's default value to icon\n return this.actionMenuType || this.buttonType || \"icon\";\n }\n @Prop() buttonText?: string;\n @Prop({ reflect: true }) disabled: boolean = false;\n @Prop() tooltip?: string;\n @Prop() labelForIdenticalButtons?: string;\n @Prop() darkMode?: boolean;\n @Event({ composed: true, bubbles: true }) wmActionMenuLoaded!: EventEmitter;\n @Event({ composed: true, bubbles: true }) menuLoaded!: EventEmitter; // deprecated in favor of wmActionMenuLoaded\n\n private keysSoFar: string = \"\";\n private searchIndex: number = 0;\n private keyClear: number | null = null;\n\n @Listen(\"wmMenuitemClicked\")\n handleClickedItem() {\n this.close();\n }\n\n @Listen(\"wmKeyUpPressed\")\n handleKeyUp(ev: CustomEvent) {\n this.moveUp(ev.target as HTMLWmMenuitemElement);\n }\n\n @Listen(\"wmKeyDownPressed\")\n handleKeyDown(ev: CustomEvent) {\n this.moveDown(ev.detail);\n }\n\n @Listen(\"wmHomeKeyPressed\")\n handleHomeKey() {\n this.focusFirstItem();\n }\n\n @Listen(\"wmEndKeyPressed\")\n handleEndKey() {\n this.focusLastItem();\n }\n\n @Listen(\"wmTabKeyPressed\")\n handleTabKey() {\n if (this.isExpanded) {\n this.close();\n }\n }\n\n @Listen(\"wmEscKeyPressed\")\n handleEscKey() {\n this.close();\n this.wmButtonEl.focus();\n }\n\n @Listen(\"keydown\")\n handleKey(ev: KeyboardEvent) {\n switch (ev.key) {\n case \"ArrowDown\":\n if (!this.isExpanded) {\n ev.preventDefault();\n this.open();\n window.requestAnimationFrame(() => this.focusFirstItem());\n }\n break;\n case \"ArrowUp\":\n if (!this.isExpanded) {\n ev.preventDefault();\n this.open();\n window.requestAnimationFrame(() => this.focusLastItem());\n }\n break;\n }\n }\n\n @Listen(\"wmMenuitemBlurred\")\n handleMenuitemBlur(ev: CustomEvent): void {\n const toElOrChild = ev.detail.relatedTarget === this.el || this.el.contains(ev.detail.relatedTarget as Node);\n // if the Menuitem is blurred to something other than the component, emit a blur event with the appropriate relatedTarget\n // keeps our component's blur events accurate, and closes when focusing browser address bar\n if (!toElOrChild) {\n const event = new CustomEvent(\"blur\");\n // @ts-ignore\n event.relatedTarget = ev.detail.relatedTarget;\n this.el.dispatchEvent(event);\n }\n }\n\n handleButtonBlur(ev: FocusEvent) {\n const toElOrChild = ev.relatedTarget === this.el || this.el.contains(ev.relatedTarget as Node);\n if (toElOrChild) {\n // do not emit a blur event when opening the dropdown and focusing the Menuitems\n ev.stopPropagation();\n }\n }\n\n componentWillLoad() {\n this.uid = this.el.id ? this.el.id : generateId();\n\n if (this.buttonType) {\n console.warn(\n \"wm-action-menu: button-type has been deprecated as of v3.1.0. Please use action-menu-type instead.\"\n );\n }\n }\n\n componentDidLoad() {\n if (this.tempActionMenuType !== \"icon\" && !this.buttonText) {\n console.error(\n \"wm-action-menu should have a valid button-text property when action-menu-type is set to 'text' or 'selector'\"\n );\n }\n\n if (this.tempActionMenuType === \"icon\" && !this.tooltip) {\n console.error(\"wm-action-menu should have a valid tooltip when action-menu-type is set to 'icon'\");\n }\n\n this.wmActionMenuLoaded.emit();\n this.menuLoaded.emit(); // deprecated\n }\n\n moveUp(el: HTMLWmMenuitemElement) {\n const index = this.childItems.indexOf(el);\n if (index === 0) {\n this.focusLastItem();\n } else {\n this.focusItem(this.childItems[index - 1]);\n }\n }\n\n moveDown(el: HTMLWmMenuitemElement) {\n const index = this.childItems.indexOf(el);\n if (index === this.childItems.length - 1) {\n this.focusFirstItem();\n } else {\n this.focusItem(this.childItems[index + 1]);\n }\n }\n\n open() {\n if (!this.disabled) {\n this.openUp = shouldOpenUp(this.el, this.itemsEl!);\n // action menu usually is on the right side of the screen,\n // so dropdown opens to the left (is anchored on the right corner)\n // if there is not enough space on the left and enough on the right though,\n // it will open on the right side\n\n this.isExpanded = true;\n this.itemsEl!.classList.remove(\"hidden\");\n window.requestAnimationFrame(() => this.focusFirstItem());\n }\n }\n\n close(returnFocus: boolean = true) {\n this.isExpanded = false;\n this.childItems.forEach((i) => (i.focused = false));\n\n window.setTimeout(() => {\n this.itemsEl!.classList.add(\"hidden\");\n }, 150);\n\n window.setTimeout(() => {\n // if dev omits to assign focus after an action is triggered,\n // the component brings the focus back on the button\n // Focus will only be lost (and go to the body) once the menuitem\n // is not visible anymore, so we need to wait for the transition to\n // finish and the hidden class to be applied.\n // also checking if focus stayed on the menuitem\n if (\n returnFocus &&\n (document.activeElement!.tagName === \"BODY\" || document.activeElement!.tagName === \"WM-MENUITEM\")\n ) {\n this.wmButtonEl.focus();\n }\n }, 250);\n }\n\n focusItem(item: HTMLWmMenuitemElement) {\n this.childItems.map((i: HTMLWmMenuitemElement) => (i.focused = i === item));\n item.focus && item.focus();\n }\n\n focusFirstItem() {\n this.focusItem(this.childItems[0]);\n }\n\n focusLastItem() {\n this.focusItem(this.childItems[this.childItems.length - 1]);\n }\n\n @Listen(\"wmLetterPressed\")\n findAndFocusItem(ev: CustomEvent) {\n const character = ev.detail.toUpperCase();\n this.focusFirstItem();\n if (!this.keysSoFar) {\n for (var i = 0; i < this.childItems.length; i++) {\n if (this.childItems[i] === document.activeElement) {\n this.searchIndex = i;\n }\n }\n }\n\n this.keysSoFar += character;\n this.clearKeysSoFarAfterDelay();\n\n var nextMatch = this.findMatchInRange(this.childItems, this.searchIndex + 1, this.childItems.length);\n if (!nextMatch) {\n nextMatch = this.findMatchInRange(this.childItems, 0, this.searchIndex);\n }\n if (nextMatch) {\n this.focusItem(nextMatch as HTMLWmMenuitemElement);\n }\n }\n\n clearKeysSoFarAfterDelay() {\n if (this.keyClear) {\n window.clearTimeout(this.keyClear);\n this.keyClear = null;\n }\n this.keyClear = window.setTimeout(\n function (this: ActionMenu) {\n this.keysSoFar = \"\";\n this.keyClear = null;\n }.bind(this),\n 500\n );\n }\n\n findMatchInRange(list: HTMLWmMenuitemElement[], startIndex: number, endIndex: number) {\n // Find the first item starting with the keysSoFar substring, searching in\n // the specified range of items\n for (var n = startIndex; n < endIndex; n++) {\n var label = list[n].innerText;\n if (label && label.toUpperCase().indexOf(this.keysSoFar) === 0) {\n return list[n];\n }\n }\n return null;\n }\n\n render() {\n return (\n <Host onBlur={() => this.close(false)}>\n <div class={getTextDir()}>\n <wm-button\n button-type={this.internalButtonType}\n tooltip={this.tooltip}\n custom-background={this.darkMode ? \"dark\" : undefined}\n label-for-identical-buttons={this.labelForIdenticalButtons}\n icon={this.tempActionMenuType === \"icon\" ? \"f1d9\" : \"\"}\n id={`menubtn-${this.uid}`}\n onClick={() => (this.isExpanded ? this.close() : this.open())}\n onBlur={(ev) => this.handleButtonBlur(ev)}\n disabled={this.disabled}\n ref={(el) => (this.wmButtonEl = el as HTMLWmButtonElement)}\n tooltip-position={this.tooltipPosition || this.horizontalPosition}\n aria-haspopup=\"true\"\n aria-expanded={this.isExpanded ? \"true\" : \"false\"}\n aria-controls={`menu-${this.uid}`}\n >\n {this.buttonText}\n </wm-button>\n <div\n class={`dropdown ${this.openUp ? \"open-up\" : \"\"} ${this.horizontalPosition} ${\n this.isExpanded ? \"open\" : \"\"\n } hidden`}\n id={`menu-${this.uid}`}\n tabindex={-1}\n role=\"menu\"\n ref={(el) => (this.itemsEl = el)}\n >\n <slot />\n </div>\n </div>\n </Host>\n );\n }\n}\n",":host,\nwm-menuitem {\n contain: content;\n font-family: inherit;\n\n .wrapper {\n display: block;\n min-width: rem-calc(140);\n cursor: pointer;\n padding: rem-calc(20);\n border-radius: 0px 0px 0px 0px;\n background: #fff;\n font-family: inherit;\n font-weight: 500;\n list-style: none;\n border-bottom: 2px solid rgba(#2e1b46, 0.05);\n color: $button-default-text;\n font-weight: 700;\n\n &:focus,\n &.focus {\n outline: none;\n background: #f4f3f6;\n }\n\n &:hover {\n background: #f4f3f6;\n outline: none;\n }\n\n .description {\n color: $charcoal;\n font-size: rem-calc(14);\n padding-top: rem-calc(8);\n white-space: normal;\n font-weight: 400;\n }\n\n &[aria-disabled=\"true\"] {\n font-style: italic;\n color: #6b6b6b;\n }\n\n &:not(:last-child) {\n border-bottom: 2px solid rgba(#2e1b46, 0.05);\n }\n }\n\n ::slotted {\n font-family: inherit;\n }\n\n .mdi {\n @include mdi-icon;\n display: inline-block;\n margin-right: rem-calc(10);\n pointer-events: none;\n }\n}\n\n:host(:focus),\nwm-menuitem:focus {\n outline: none;\n background: #f4f3f6;\n}\n\n//Set pointer events to none on host and element in shadow dom to disable menuitem\n:host([aria-disabled=\"true\"]),\nwm-menuitem[aria-disabled=\"true\"] {\n pointer-events: none;\n}\n","import { h, Component, Element, Event, EventEmitter, Listen, Prop, State, Host, Watch } from \"@stencil/core\";\nimport { getIconCodeFromName } from \"../../global/interfaces\";\n\n@Component({\n tag: \"wm-menuitem\",\n styleUrl: \"wm-menuitem.scss\",\n shadow: true,\n})\nexport class Menuitem {\n @Element() el!: HTMLWmMenuitemElement;\n private iconEl?: HTMLSpanElement;\n\n @Prop() disabled = false;\n @Prop() focused = false;\n @Prop({ mutable: true }) icon?: string = undefined;\n @Prop() description?: string = undefined;\n\n @Event() wmMenuitemClicked!: EventEmitter<HTMLWmMenuitemElement>;\n @Event() wmKeyUpPressed!: EventEmitter<HTMLWmMenuitemElement>;\n @Event() wmKeyDownPressed!: EventEmitter<HTMLWmMenuitemElement>;\n @Event() wmEscKeyPressed!: EventEmitter<HTMLWmMenuitemElement>;\n @Event() wmHomeKeyPressed!: EventEmitter<HTMLWmMenuitemElement>;\n @Event() wmEndKeyPressed!: EventEmitter<HTMLWmMenuitemElement>;\n @Event() wmPageDownItems!: EventEmitter<HTMLWmMenuitemElement>;\n @Event() wmPageUpItems!: EventEmitter<HTMLWmMenuitemElement>;\n @Event() wmTabKeyPressed!: EventEmitter<HTMLWmMenuitemElement>;\n @Event() wmLetterPressed!: EventEmitter;\n @Event() wmMenuitemBlurred!: EventEmitter<{ relatedTarget: EventTarget | null }>;\n private onClickFunc!: (this: GlobalEventHandlers, ev: MouseEvent) => any;\n private descriptionCharLimit = 100;\n\n @State() isKeying: boolean = false;\n\n @Listen(\"wmUserIsKeying\", { target: \"window\" })\n @Listen(\"wmUserIsTabbing\", { target: \"window\" })\n toggleKeyingOn() {\n this.isKeying = true;\n }\n\n @Listen(\"wmUserIsNotKeying\", { target: \"window\" })\n @Listen(\"wmUserIsNotTabbing\", { target: \"window\" })\n toggleKeyingOff() {\n this.isKeying = false;\n }\n\n @Listen(\"keydown\")\n handleKeydown(ev: KeyboardEvent) {\n const modifierKeyUsed = ev.altKey || ev.ctrlKey || ev.metaKey;\n const isSingleCharacter = /^.$/.test(ev.key);\n const isCharacterEntry = isSingleCharacter && !modifierKeyUsed;\n switch (ev.key) {\n case \"ArrowUp\":\n ev.preventDefault();\n this.wmKeyUpPressed.emit(this.el as HTMLWmMenuitemElement);\n break;\n case \"ArrowDown\":\n ev.preventDefault();\n this.wmKeyDownPressed.emit(this.el as HTMLWmMenuitemElement);\n break;\n case \"Enter\":\n ev.preventDefault();\n if (!this.disabled) {\n this.el.click();\n }\n break;\n case \"Escape\":\n ev.preventDefault();\n ev.stopPropagation(); // prevents closing of parent modal\n this.wmEscKeyPressed.emit();\n break;\n case \"Home\":\n ev.preventDefault();\n this.wmHomeKeyPressed.emit();\n break;\n case \"End\":\n ev.preventDefault();\n this.wmEndKeyPressed.emit();\n break;\n case \"Tab\":\n this.wmTabKeyPressed.emit();\n break;\n default:\n if (isCharacterEntry) {\n ev.preventDefault();\n this.wmLetterPressed.emit(ev.key);\n }\n }\n }\n\n @Listen(\"click\")\n handleClick() {\n if (!this.disabled) {\n this.wmMenuitemClicked.emit();\n }\n }\n\n @Listen(\"blur\")\n handleBlur(ev: FocusEvent) {\n this.wmMenuitemBlurred.emit({ relatedTarget: ev.relatedTarget });\n }\n\n @Watch(\"disabled\")\n setOnClick() {\n if (this.disabled && this.el.onclick) {\n this.onClickFunc = this.el.onclick;\n this.el.onclick = null;\n } else if (!this.disabled && this.onClickFunc) {\n this.el.onclick = this.onClickFunc;\n }\n }\n\n componentWillLoad() {\n if (this.icon) {\n // in case a name was passed instead of a code, convert it to code (for backwards compatibility)\n this.icon = getIconCodeFromName(this.icon);\n }\n\n if (this.description) {\n if (this.description.length > this.descriptionCharLimit) {\n console.error(`wm-menuitem description is above the character limit of ${this.descriptionCharLimit}`);\n }\n if (this.icon) {\n console.error(\"wm-menuitems with descriptions do not support the use of icons\");\n }\n }\n\n this.setOnClick();\n }\n\n componentDidLoad() {\n if (this.icon) {\n this.iconEl!.classList.add(\"mdi\");\n this.iconEl!.innerHTML = `&#x${this.icon};`;\n }\n }\n\n render() {\n return (\n <Host tabindex={-1} role=\"menuitem\" aria-disabled={this.disabled ? \"true\" : null}>\n <div\n class={`wrapper ${this.focused && this.isKeying ? \"focus\" : \"\"}`}\n aria-disabled={this.disabled ? \"true\" : null}\n >\n <span ref={(el) => (this.iconEl = el)} />\n <slot />\n {this.description ? <div class=\"description\">{this.description}</div> : \"\"}\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["patchBrowser","importMeta","import","meta","url","opts","resourcesUrl","URL","href","promiseResolve","then","options","bootstrapLazy","JSON","parse"],"sources":["./node_modules/@stencil/core/internal/client/patch-browser.js","@lazy-browser-entrypoint?app-data=conditional"],"sourcesContent":["/*\n Stencil Client Patch Browser v3.0.0 | MIT Licensed | https://stenciljs.com\n */\nimport { BUILD, NAMESPACE } from '@stencil/core/internal/app-data';\nimport { consoleDevInfo, plt, win, doc, promiseResolve, H } from '@stencil/core';\n/**\n * Helper method for querying a `meta` tag that contains a nonce value\n * out of a DOM's head.\n *\n * @param doc The DOM containing the `head` to query against\n * @returns The content of the meta tag representing the nonce value, or `undefined` if no tag\n * exists or the tag has no content.\n */\nfunction queryNonceMetaTagContent(doc) {\n var _a, _b, _c;\n return (_c = (_b = (_a = doc.head) === null || _a === void 0 ? void 0 : _a.querySelector('meta[name=\"csp-nonce\"]')) === null || _b === void 0 ? void 0 : _b.getAttribute('content')) !== null && _c !== void 0 ? _c : undefined;\n}\n// TODO(STENCIL-661): Remove code related to the dynamic import shim\nconst getDynamicImportFunction = (namespace) => `__sc_import_${namespace.replace(/\\s|-/g, '_')}`;\nconst patchBrowser = () => {\n // NOTE!! This fn cannot use async/await!\n if (BUILD.isDev && !BUILD.isTesting) {\n consoleDevInfo('Running in development mode.');\n }\n // TODO(STENCIL-659): Remove code implementing the CSS variable shim\n if (BUILD.cssVarShim) {\n // shim css vars\n // TODO(STENCIL-659): Remove code implementing the CSS variable shim\n plt.$cssShim$ = win.__cssshim;\n }\n if (BUILD.cloneNodeFix) {\n // opted-in to polyfill cloneNode() for slot polyfilled components\n patchCloneNodeFix(H.prototype);\n }\n if (BUILD.profile && !performance.mark) {\n // not all browsers support performance.mark/measure (Safari 10)\n // because the mark/measure APIs are designed to write entries to a buffer in the browser that does not exist,\n // simply stub the implementations out.\n // TODO(STENCIL-323): Remove this patch when support for older browsers is removed (breaking)\n // @ts-ignore\n performance.mark = performance.measure = () => {\n /*noop*/\n };\n performance.getEntriesByName = () => [];\n }\n // @ts-ignore\n const scriptElm = \n // TODO(STENCIL-661): Remove code related to the dynamic import shim\n // TODO(STENCIL-663): Remove code related to deprecated `safari10` field.\n BUILD.scriptDataOpts || BUILD.safari10 || BUILD.dynamicImportShim\n ? Array.from(doc.querySelectorAll('script')).find((s) => new RegExp(`\\/${NAMESPACE}(\\\\.esm)?\\\\.js($|\\\\?|#)`).test(s.src) ||\n s.getAttribute('data-stencil-namespace') === NAMESPACE)\n : null;\n const importMeta = import.meta.url;\n const opts = BUILD.scriptDataOpts ? scriptElm['data-opts'] || {} : {};\n // TODO(STENCIL-663): Remove code related to deprecated `safari10` field.\n if (BUILD.safari10 && 'onbeforeload' in scriptElm && !history.scrollRestoration /* IS_ESM_BUILD */) {\n // Safari < v11 support: This IF is true if it's Safari below v11.\n // This fn cannot use async/await since Safari didn't support it until v11,\n // however, Safari 10 did support modules. Safari 10 also didn't support \"nomodule\",\n // so both the ESM file and nomodule file would get downloaded. Only Safari\n // has 'onbeforeload' in the script, and \"history.scrollRestoration\" was added\n // to Safari in v11. Return a noop then() so the async/await ESM code doesn't continue.\n // IS_ESM_BUILD is replaced at build time so this check doesn't happen in systemjs builds.\n return {\n then() {\n /* promise noop */\n },\n };\n }\n // TODO(STENCIL-663): Remove code related to deprecated `safari10` field.\n if (!BUILD.safari10 && importMeta !== '') {\n opts.resourcesUrl = new URL('.', importMeta).href;\n // TODO(STENCIL-661): Remove code related to the dynamic import shim\n // TODO(STENCIL-663): Remove code related to deprecated `safari10` field.\n }\n else if (BUILD.dynamicImportShim || BUILD.safari10) {\n opts.resourcesUrl = new URL('.', new URL(scriptElm.getAttribute('data-resources-url') || scriptElm.src, win.location.href)).href;\n // TODO(STENCIL-661): Remove code related to the dynamic import shim\n if (BUILD.dynamicImportShim) {\n patchDynamicImport(opts.resourcesUrl, scriptElm);\n }\n // TODO(STENCIL-661): Remove code related to the dynamic import shim\n if (BUILD.dynamicImportShim && !win.customElements) {\n // module support, but no custom elements support (Old Edge)\n // @ts-ignore\n return import(/* webpackChunkName: \"polyfills-dom\" */ './dom.js').then(() => opts);\n }\n }\n return promiseResolve(opts);\n};\n// TODO(STENCIL-661): Remove code related to the dynamic import shim\nconst patchDynamicImport = (base, orgScriptElm) => {\n const importFunctionName = getDynamicImportFunction(NAMESPACE);\n try {\n // test if this browser supports dynamic imports\n // There is a caching issue in V8, that breaks using import() in Function\n // By generating a random string, we can workaround it\n // Check https://bugs.chromium.org/p/chromium/issues/detail?id=990810 for more info\n win[importFunctionName] = new Function('w', `return import(w);//${Math.random()}`);\n }\n catch (e) {\n // this shim is specifically for browsers that do support \"esm\" imports\n // however, they do NOT support \"dynamic\" imports\n // basically this code is for old Edge, v18 and below\n const moduleMap = new Map();\n win[importFunctionName] = (src) => {\n var _a;\n const url = new URL(src, base).href;\n let mod = moduleMap.get(url);\n if (!mod) {\n const script = doc.createElement('script');\n script.type = 'module';\n script.crossOrigin = orgScriptElm.crossOrigin;\n script.src = URL.createObjectURL(new Blob([`import * as m from '${url}'; window.${importFunctionName}.m = m;`], {\n type: 'application/javascript',\n }));\n // Apply CSP nonce to the script tag if it exists\n const nonce = (_a = plt.$nonce$) !== null && _a !== void 0 ? _a : queryNonceMetaTagContent(doc);\n if (nonce != null) {\n script.setAttribute('nonce', nonce);\n }\n mod = new Promise((resolve) => {\n script.onload = () => {\n resolve(win[importFunctionName].m);\n script.remove();\n };\n });\n moduleMap.set(url, mod);\n doc.head.appendChild(script);\n }\n return mod;\n };\n }\n};\nconst patchCloneNodeFix = (HTMLElementPrototype) => {\n const nativeCloneNodeFn = HTMLElementPrototype.cloneNode;\n HTMLElementPrototype.cloneNode = function (deep) {\n if (this.nodeName === 'TEMPLATE') {\n return nativeCloneNodeFn.call(this, deep);\n }\n const clonedNode = nativeCloneNodeFn.call(this, false);\n const srcChildNodes = this.childNodes;\n if (deep) {\n for (let i = 0; i < srcChildNodes.length; i++) {\n // Node.ATTRIBUTE_NODE === 2, and checking because IE11\n if (srcChildNodes[i].nodeType !== 2) {\n clonedNode.appendChild(srcChildNodes[i].cloneNode(true));\n }\n }\n }\n return clonedNode;\n };\n};\nexport { patchBrowser };\n","export { setNonce } from '@stencil/core';\nimport { bootstrapLazy } from '@stencil/core';\nimport { patchBrowser } from '@stencil/core/internal/client/patch-browser';\nimport { globalScripts } from '@stencil/core/internal/app-globals';\npatchBrowser().then(options => {\n globalScripts();\n return bootstrapLazy([/*!__STENCIL_LAZY_DATA__*/], options);\n});\n"],"mappings":"8GAmBA,MAAMA,EAAe,KAkCjB,MAAMC,EAAaC,OAAOC,KAAKC,IAC/B,MAAMC,EAA6D,GAiBnE,GAAuBJ,IAAe,GAAI,CACtCI,EAAKC,aAAe,IAAIC,IAAI,IAAKN,GAAYO,IAGrD,CAcI,OAAOC,EAAeJ,EAAK,ECrF/BL,IAAeU,MAAKC,GAEXC,EAAcC,KAAAC,MAAA,ivaAAuCH"}
|