@watermarkinsights/ripple 3.10.0-0 → 3.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -3
- package/dist/cjs/{chartFunctions-05b9dcc7.js → chartFunctions-829efa13.js} +420 -417
- package/dist/cjs/{functions-71c85bae.js → functions-3b1b7c26.js} +542 -512
- package/dist/cjs/{global-f98992f4.js → global-68b6a831.js} +60 -60
- package/dist/cjs/{http-service-494d81de.js → http-service-9e8c4dd5.js} +49 -49
- package/dist/cjs/{index-98c6524c.js → index-df6a3611.js} +100 -65
- package/dist/cjs/{interfaces-a3338581.js → interfaces-30a74c1f.js} +29 -29
- package/dist/cjs/loader.cjs.js +4 -4
- package/dist/cjs/priv-chart-popover.cjs.entry.js +87 -87
- package/dist/cjs/priv-datepicker.cjs.entry.js +659 -659
- package/dist/cjs/priv-navigator-button.cjs.entry.js +19 -19
- package/dist/cjs/priv-navigator-item.cjs.entry.js +24 -24
- package/dist/cjs/ripple.cjs.js +4 -4
- package/dist/cjs/wm-action-menu_2.cjs.entry.js +342 -342
- package/dist/cjs/wm-button.cjs.entry.js +228 -228
- package/dist/cjs/wm-chart-slice.cjs.entry.js +14 -14
- package/dist/cjs/wm-chart.cjs.entry.js +117 -116
- package/dist/cjs/wm-datepicker.cjs.entry.js +267 -267
- package/dist/cjs/wm-input.cjs.entry.js +136 -136
- package/dist/cjs/wm-modal-footer.cjs.entry.js +32 -32
- package/dist/cjs/wm-modal-header.cjs.entry.js +35 -35
- package/dist/cjs/wm-modal.cjs.entry.js +164 -164
- package/dist/cjs/wm-navigation_3.cjs.entry.js +229 -222
- package/dist/cjs/wm-navigator.cjs.entry.js +269 -269
- package/dist/cjs/wm-network-uploader.cjs.entry.js +454 -454
- package/dist/cjs/wm-option_2.cjs.entry.js +487 -487
- package/dist/cjs/wm-pagination.cjs.entry.js +168 -168
- package/dist/cjs/wm-progress-indicator_3.cjs.entry.js +136 -135
- package/dist/cjs/wm-search.cjs.entry.js +233 -233
- package/dist/cjs/wm-snackbar.cjs.entry.js +172 -172
- package/dist/cjs/wm-tab-item_3.cjs.entry.js +298 -298
- package/dist/cjs/wm-tag-input.cjs.entry.js +581 -581
- package/dist/cjs/wm-timepicker.cjs.entry.js +385 -385
- package/dist/cjs/wm-toggletip.cjs.entry.js +126 -126
- package/dist/cjs/wm-uploader.cjs.entry.js +380 -380
- package/dist/cjs/wm-wrapper.cjs.entry.js +13 -13
- package/dist/collection/collection-manifest.json +2 -2
- package/dist/collection/components/charts/priv-chart-popover/priv-chart-popover.js +258 -258
- package/dist/collection/components/charts/wm-chart/wm-chart-slice.js +115 -115
- package/dist/collection/components/charts/wm-chart/wm-chart.js +334 -332
- package/dist/collection/components/charts/wm-progress-monitor/wm-progress-indicator.js +201 -199
- package/dist/collection/components/charts/wm-progress-monitor/wm-progress-monitor.js +88 -88
- package/dist/collection/components/charts/wm-progress-monitor/wm-progress-slice.js +111 -111
- package/dist/collection/components/wm-action-menu/wm-action-menu.js +460 -460
- package/dist/collection/components/wm-button/wm-button.css +1 -2
- package/dist/collection/components/wm-button/wm-button.js +491 -491
- package/dist/collection/components/wm-datepicker/priv-datepicker/priv-datepicker.css +3 -4
- package/dist/collection/components/wm-datepicker/priv-datepicker/priv-datepicker.js +1024 -1024
- package/dist/collection/components/wm-datepicker/wm-datepicker.css +1 -2
- package/dist/collection/components/wm-datepicker/wm-datepicker.js +471 -471
- package/dist/collection/components/wm-input/wm-input.css +1 -2
- package/dist/collection/components/wm-input/wm-input.js +423 -423
- package/dist/collection/components/wm-menuitem/wm-menuitem.js +444 -444
- package/dist/collection/components/wm-modal/wm-modal-footer.js +141 -141
- package/dist/collection/components/wm-modal/wm-modal-header.js +92 -92
- package/dist/collection/components/wm-modal/wm-modal.js +461 -461
- package/dist/collection/components/wm-navigation/wm-navigation-hamburger.css +1 -2
- package/dist/collection/components/wm-navigation/wm-navigation-hamburger.js +162 -162
- package/dist/collection/components/wm-navigation/wm-navigation-item.js +121 -121
- package/dist/collection/components/wm-navigation/wm-navigation.js +218 -211
- package/dist/collection/components/wm-navigator/priv-navigator-button/priv-navigator-button.js +97 -97
- package/dist/collection/components/wm-navigator/priv-navigator-item/priv-navigator-item.js +114 -114
- package/dist/collection/components/wm-navigator/wm-navigator.js +468 -468
- package/dist/collection/components/wm-option/wm-option.css +2 -3
- package/dist/collection/components/wm-option/wm-option.js +414 -414
- package/dist/collection/components/wm-pagination/wm-pagination.js +368 -368
- package/dist/collection/components/wm-search/wm-search.js +480 -480
- package/dist/collection/components/wm-select/wm-select.css +2 -3
- package/dist/collection/components/wm-select/wm-select.js +718 -718
- package/dist/collection/components/wm-snackbar/wm-snackbar.css +2 -3
- package/dist/collection/components/wm-snackbar/wm-snackbar.js +297 -297
- package/dist/collection/components/wm-tabs/wm-tab-item/wm-tab-item.css +2 -2
- package/dist/collection/components/wm-tabs/wm-tab-item/wm-tab-item.js +216 -216
- package/dist/collection/components/wm-tabs/wm-tab-list/wm-tab-list.js +330 -330
- package/dist/collection/components/wm-tabs/wm-tab-panel/wm-tab-panel.js +104 -104
- package/dist/collection/components/wm-tag-input/wm-tag-input.css +2 -3
- package/dist/collection/components/wm-tag-input/wm-tag-input.js +810 -810
- package/dist/collection/components/wm-timepicker/wm-timepicker.css +2 -3
- package/dist/collection/components/wm-timepicker/wm-timepicker.js +583 -583
- package/dist/collection/components/wm-toggletip/wm-toggletip.css +1 -2
- package/dist/collection/components/wm-toggletip/wm-toggletip.js +241 -241
- package/dist/collection/components/wm-uploader/wm-network-uploader/wm-network-uploader.css +1 -2
- package/dist/collection/components/wm-uploader/wm-network-uploader/wm-network-uploader.js +785 -785
- package/dist/collection/components/wm-uploader/wm-uploader.css +1 -2
- package/dist/collection/components/wm-uploader/wm-uploader.js +780 -780
- package/dist/collection/components/wm-wrapper/wm-wrapper.js +27 -27
- package/dist/collection/dev/scripts.js +20 -20
- package/dist/collection/global/__mocks__/functions.js +6 -6
- package/dist/collection/global/chartFunctions.js +421 -418
- package/dist/collection/global/functions.js +468 -468
- package/dist/collection/global/global.js +67 -67
- package/dist/collection/global/interfaces.js +49 -49
- package/dist/collection/global/services/__mocks__/http-service.js +130 -130
- package/dist/collection/global/services/http-service.js +50 -50
- package/dist/collection/lang/lang.js +5 -5
- package/dist/collection/lang/missing.js +43 -43
- package/dist/collection/lang/piglatin.js +93 -93
- package/dist/esm/{chartFunctions-b24ba065.js → chartFunctions-1ea300b2.js} +420 -417
- package/dist/esm/{functions-117d1a51.js → functions-124ec8e6.js} +542 -512
- package/dist/esm/{global-6a9c8257.js → global-482afd31.js} +60 -60
- package/dist/esm/{http-service-3dc3b3e7.js → http-service-5d037e16.js} +49 -49
- package/dist/esm/{index-d649a861.js → index-17c79cc6.js} +100 -65
- package/dist/esm/{interfaces-2b97fab2.js → interfaces-61c6305b.js} +29 -29
- package/dist/esm/loader.js +4 -4
- package/dist/esm/polyfills/core-js.js +0 -0
- package/dist/esm/polyfills/css-shim.js +1 -1
- package/dist/esm/polyfills/dom.js +0 -0
- package/dist/esm/polyfills/es5-html-element.js +0 -0
- package/dist/esm/polyfills/index.js +0 -0
- package/dist/esm/polyfills/system.js +0 -0
- package/dist/esm/priv-chart-popover.entry.js +87 -87
- package/dist/esm/priv-datepicker.entry.js +659 -659
- package/dist/esm/priv-navigator-button.entry.js +19 -19
- package/dist/esm/priv-navigator-item.entry.js +24 -24
- package/dist/esm/ripple.js +4 -4
- package/dist/esm/wm-action-menu_2.entry.js +342 -342
- package/dist/esm/wm-button.entry.js +228 -228
- package/dist/esm/wm-chart-slice.entry.js +14 -14
- package/dist/esm/wm-chart.entry.js +117 -116
- package/dist/esm/wm-datepicker.entry.js +267 -267
- package/dist/esm/wm-input.entry.js +136 -136
- package/dist/esm/wm-modal-footer.entry.js +32 -32
- package/dist/esm/wm-modal-header.entry.js +35 -35
- package/dist/esm/wm-modal.entry.js +164 -164
- package/dist/esm/wm-navigation_3.entry.js +229 -222
- package/dist/esm/wm-navigator.entry.js +269 -269
- package/dist/esm/wm-network-uploader.entry.js +454 -454
- package/dist/esm/wm-option_2.entry.js +487 -487
- package/dist/esm/wm-pagination.entry.js +168 -168
- package/dist/esm/wm-progress-indicator_3.entry.js +136 -135
- package/dist/esm/wm-search.entry.js +233 -233
- package/dist/esm/wm-snackbar.entry.js +172 -172
- package/dist/esm/wm-tab-item_3.entry.js +298 -298
- package/dist/esm/wm-tag-input.entry.js +581 -581
- package/dist/esm/wm-timepicker.entry.js +385 -385
- package/dist/esm/wm-toggletip.entry.js +126 -126
- package/dist/esm/wm-uploader.entry.js +380 -380
- package/dist/esm/wm-wrapper.entry.js +13 -13
- package/dist/esm-es5/chartFunctions-1ea300b2.js +1 -0
- package/dist/esm-es5/functions-124ec8e6.js +15 -0
- package/dist/esm-es5/global-482afd31.js +1 -0
- package/dist/esm-es5/{http-service-3dc3b3e7.js → http-service-5d037e16.js} +1 -1
- package/dist/esm-es5/index-17c79cc6.js +1 -0
- package/dist/esm-es5/{interfaces-2b97fab2.js → interfaces-61c6305b.js} +0 -0
- package/dist/esm-es5/loader.js +1 -1
- package/dist/esm-es5/priv-chart-popover.entry.js +1 -1
- package/dist/esm-es5/priv-datepicker.entry.js +1 -1
- package/dist/esm-es5/priv-navigator-button.entry.js +1 -1
- package/dist/esm-es5/priv-navigator-item.entry.js +1 -1
- package/dist/esm-es5/ripple.js +1 -1
- package/dist/esm-es5/wm-action-menu_2.entry.js +1 -1
- package/dist/esm-es5/wm-button.entry.js +1 -1
- package/dist/esm-es5/wm-chart-slice.entry.js +1 -1
- package/dist/esm-es5/wm-chart.entry.js +1 -1
- package/dist/esm-es5/wm-datepicker.entry.js +1 -1
- package/dist/esm-es5/wm-input.entry.js +1 -1
- package/dist/esm-es5/wm-modal-footer.entry.js +1 -1
- package/dist/esm-es5/wm-modal-header.entry.js +1 -1
- package/dist/esm-es5/wm-modal.entry.js +1 -1
- package/dist/esm-es5/wm-navigation_3.entry.js +1 -1
- package/dist/esm-es5/wm-navigator.entry.js +1 -1
- package/dist/esm-es5/wm-network-uploader.entry.js +1 -1
- package/dist/esm-es5/wm-option_2.entry.js +1 -1
- package/dist/esm-es5/wm-pagination.entry.js +1 -1
- package/dist/esm-es5/wm-progress-indicator_3.entry.js +1 -1
- package/dist/esm-es5/wm-search.entry.js +1 -1
- package/dist/esm-es5/wm-snackbar.entry.js +1 -1
- package/dist/esm-es5/wm-tab-item_3.entry.js +1 -1
- package/dist/esm-es5/wm-tag-input.entry.js +1 -1
- package/dist/esm-es5/wm-timepicker.entry.js +1 -1
- package/dist/esm-es5/wm-toggletip.entry.js +1 -1
- package/dist/esm-es5/wm-uploader.entry.js +1 -1
- package/dist/esm-es5/wm-wrapper.entry.js +1 -1
- package/dist/loader/index.d.ts +0 -1
- package/dist/ripple/{p-f5df5903.system.js → p-08b7ec08.system.js} +0 -0
- package/dist/ripple/p-09f954eb.system.js +1 -0
- package/dist/ripple/p-0c7c9b89.entry.js +1 -0
- package/dist/ripple/{p-ddf157c8.system.entry.js → p-14eab45c.system.entry.js} +1 -1
- package/dist/ripple/{p-0ebed4b8.system.entry.js → p-1acaa65d.system.entry.js} +1 -1
- package/dist/ripple/p-1ace795c.system.entry.js +1 -0
- package/dist/ripple/p-1edf9946.system.entry.js +1 -0
- package/dist/ripple/p-1f35a8f1.js +16 -0
- package/dist/ripple/{p-6cf47163.entry.js → p-1fe3ad2b.entry.js} +1 -1
- package/dist/ripple/p-259f7450.system.entry.js +1 -0
- package/dist/ripple/{p-6c295beb.entry.js → p-262c75ff.entry.js} +1 -1
- package/dist/ripple/{p-099df7b7.system.entry.js → p-27253ed2.system.entry.js} +1 -1
- package/dist/ripple/p-28b051a3.system.entry.js +1 -0
- package/dist/ripple/p-2a66f447.entry.js +1 -0
- package/dist/ripple/p-313b6073.system.js +1 -0
- package/dist/ripple/{p-efe7728e.entry.js → p-37553d4e.entry.js} +1 -1
- package/dist/ripple/{p-570fb53b.entry.js → p-3a940fd1.entry.js} +1 -1
- package/dist/ripple/p-426b392a.entry.js +1 -0
- package/dist/ripple/p-557dd7f5.system.entry.js +1 -0
- package/dist/ripple/{p-2b6246d9.entry.js → p-57c94258.entry.js} +1 -1
- package/dist/ripple/{p-bfc1ab2e.system.entry.js → p-59678b70.system.entry.js} +1 -1
- package/dist/ripple/{p-7c2b1682.entry.js → p-5b213951.entry.js} +1 -1
- package/dist/ripple/p-5f4686a3.system.js +15 -0
- package/dist/ripple/p-68361541.entry.js +1 -0
- package/dist/ripple/p-6bf64cc9.system.entry.js +1 -0
- package/dist/ripple/p-726b9452.system.js +1 -0
- package/dist/ripple/{p-4f581ab3.entry.js → p-76e184fb.entry.js} +1 -1
- package/dist/ripple/p-77415d3b.entry.js +1 -0
- package/dist/ripple/p-7c2a8479.entry.js +1 -0
- package/dist/ripple/p-7ec83929.entry.js +1 -0
- package/dist/ripple/p-84a3d723.entry.js +1 -0
- package/dist/ripple/{p-269fa39c.system.entry.js → p-87a7ab75.system.entry.js} +1 -1
- package/dist/ripple/p-87c13bc7.js +1 -0
- package/dist/ripple/{p-43f1298b.js → p-888bec42.js} +0 -0
- package/dist/ripple/{p-1e7fc028.entry.js → p-962f51ff.entry.js} +1 -1
- package/dist/ripple/{p-e7a7d732.entry.js → p-96898754.entry.js} +1 -1
- package/dist/ripple/p-96b8d112.system.entry.js +1 -0
- package/dist/ripple/p-9a52566b.system.entry.js +1 -0
- package/dist/ripple/p-9a5281d9.system.js +1 -0
- package/dist/ripple/p-9bbdf766.entry.js +1 -0
- package/dist/ripple/{p-ffb97b6d.system.entry.js → p-9d3b13d8.system.entry.js} +1 -1
- package/dist/ripple/{p-03d6014a.system.entry.js → p-9debb1cd.system.entry.js} +1 -1
- package/dist/ripple/p-a0635779.entry.js +1 -0
- package/dist/ripple/p-a37fe057.system.entry.js +1 -0
- package/dist/ripple/{p-fd8070fb.js → p-a6d6eae7.js} +0 -0
- package/dist/ripple/{p-22759dd5.entry.js → p-aeda3309.entry.js} +1 -1
- package/dist/ripple/{p-6c751341.entry.js → p-b0536ddb.entry.js} +1 -1
- package/dist/ripple/{p-a5a47a23.entry.js → p-b5df33e3.entry.js} +1 -1
- package/dist/ripple/{p-57f2feb0.entry.js → p-bd5d5a76.entry.js} +1 -1
- package/dist/ripple/p-beb10404.system.entry.js +1 -0
- package/dist/ripple/{p-e8e2228d.system.entry.js → p-c02c7a93.system.entry.js} +1 -1
- package/dist/ripple/p-c2abdcba.js +1 -0
- package/dist/ripple/{p-210039cc.system.entry.js → p-c332f020.system.entry.js} +1 -1
- package/dist/ripple/p-caaae868.entry.js +1 -0
- package/dist/ripple/{p-25b81952.entry.js → p-ccf1547c.entry.js} +1 -1
- package/dist/ripple/p-d3438746.system.js +1 -0
- package/dist/ripple/{p-64e8fb6e.system.entry.js → p-d8544aaa.system.entry.js} +1 -1
- package/dist/ripple/p-daa4d5b2.system.entry.js +1 -0
- package/dist/ripple/{p-a1511315.system.entry.js → p-db44eb6f.system.entry.js} +1 -1
- package/dist/ripple/p-de192292.system.entry.js +1 -0
- package/dist/ripple/p-e8006085.system.entry.js +1 -0
- package/dist/ripple/{p-2b63995f.system.entry.js → p-f17076c4.system.entry.js} +1 -1
- package/dist/ripple/p-f1a93fa1.system.entry.js +1 -0
- package/dist/ripple/p-fc7bf66e.entry.js +1 -0
- package/dist/ripple/p-fd8883a5.entry.js +1 -0
- package/dist/ripple/p-fd9b3760.system.entry.js +1 -0
- package/dist/ripple/p-fe281d40.js +1 -0
- package/dist/ripple/ripple.esm.js +1 -1
- package/dist/ripple/ripple.js +1 -1
- package/dist/types/components/charts/priv-chart-popover/priv-chart-popover.d.ts +27 -0
- package/dist/types/components/charts/wm-chart/wm-chart-slice.d.ts +11 -11
- package/dist/types/components/charts/wm-chart/wm-chart.d.ts +36 -35
- package/dist/types/components/charts/wm-progress-monitor/wm-progress-indicator.d.ts +27 -0
- package/dist/types/components/charts/wm-progress-monitor/wm-progress-monitor.d.ts +17 -0
- package/dist/types/components/charts/wm-progress-monitor/wm-progress-slice.d.ts +10 -10
- package/dist/types/components/wm-action-menu/wm-action-menu.d.ts +48 -48
- package/dist/types/components/wm-button/wm-button.d.ts +43 -43
- package/dist/types/components/wm-datepicker/priv-datepicker/priv-datepicker.d.ts +80 -80
- package/dist/types/components/wm-datepicker/wm-datepicker.d.ts +41 -41
- package/dist/types/components/wm-input/wm-input.d.ts +46 -46
- package/dist/types/components/wm-menuitem/wm-menuitem.d.ts +34 -34
- package/dist/types/components/wm-modal/wm-modal-footer.d.ts +15 -15
- package/dist/types/components/wm-modal/wm-modal-header.d.ts +12 -12
- package/dist/types/components/wm-modal/wm-modal.d.ts +41 -41
- package/dist/types/components/wm-navigation/wm-navigation-hamburger.d.ts +21 -21
- package/dist/types/components/wm-navigation/wm-navigation-item.d.ts +13 -13
- package/dist/types/components/wm-navigation/wm-navigation.d.ts +28 -30
- package/dist/types/components/wm-navigator/priv-navigator-button/priv-navigator-button.d.ts +10 -10
- package/dist/types/components/wm-navigator/priv-navigator-item/priv-navigator-item.d.ts +13 -13
- package/dist/types/components/wm-navigator/wm-navigator.d.ts +61 -61
- package/dist/types/components/wm-option/wm-option.d.ts +32 -32
- package/dist/types/components/wm-pagination/wm-pagination.d.ts +32 -32
- package/dist/types/components/wm-search/wm-search.d.ts +86 -86
- package/dist/types/components/wm-select/wm-select.d.ts +66 -66
- package/dist/types/components/wm-snackbar/wm-snackbar.d.ts +35 -35
- package/dist/types/components/wm-tabs/wm-tab-item/wm-tab-item.d.ts +38 -38
- package/dist/types/components/wm-tabs/wm-tab-list/wm-tab-list.d.ts +53 -53
- package/dist/types/components/wm-tabs/wm-tab-panel/wm-tab-panel.d.ts +20 -20
- package/dist/types/components/wm-tag-input/wm-tag-input.d.ts +92 -92
- package/dist/types/components/wm-timepicker/wm-timepicker.d.ts +61 -61
- package/dist/types/components/wm-toggletip/wm-toggletip.d.ts +27 -27
- package/dist/types/components/wm-uploader/wm-network-uploader/wm-network-uploader.d.ts +85 -85
- package/dist/types/components/wm-uploader/wm-uploader.d.ts +80 -80
- package/dist/types/components/wm-wrapper/wm-wrapper.d.ts +7 -7
- package/dist/types/components.d.ts +24 -24
- package/dist/types/global/__mocks__/functions.d.ts +6 -6
- package/dist/types/global/chartFunctions.d.ts +29 -29
- package/dist/types/global/functions.d.ts +42 -42
- package/dist/types/global/global.d.ts +1 -1
- package/dist/types/global/interfaces.d.ts +44 -44
- package/dist/types/global/services/__mocks__/http-service.d.ts +6 -6
- package/dist/types/global/services/http-service.d.ts +4 -4
- package/dist/types/lang/lang.d.ts +5 -5
- package/dist/types/stencil-public-runtime.d.ts +6 -4
- package/package.json +47 -47
- package/dist/esm-es5/chartFunctions-b24ba065.js +0 -1
- package/dist/esm-es5/functions-117d1a51.js +0 -15
- package/dist/esm-es5/global-6a9c8257.js +0 -1
- package/dist/esm-es5/index-d649a861.js +0 -1
- package/dist/ripple/p-0cffec65.entry.js +0 -1
- package/dist/ripple/p-13e2891c.system.js +0 -1
- package/dist/ripple/p-18261104.system.entry.js +0 -1
- package/dist/ripple/p-1b1e006a.entry.js +0 -1
- package/dist/ripple/p-26c9f5af.entry.js +0 -1
- package/dist/ripple/p-276ed011.js +0 -16
- package/dist/ripple/p-2c8a26f2.js +0 -1
- package/dist/ripple/p-38bb7f05.system.entry.js +0 -1
- package/dist/ripple/p-50be3b44.js +0 -1
- package/dist/ripple/p-5176b826.system.js +0 -15
- package/dist/ripple/p-5627e44d.entry.js +0 -1
- package/dist/ripple/p-5d6cc9da.system.js +0 -1
- package/dist/ripple/p-5e164260.system.entry.js +0 -1
- package/dist/ripple/p-6f59ed45.js +0 -1
- package/dist/ripple/p-772576d7.system.entry.js +0 -1
- package/dist/ripple/p-7779bfbe.system.entry.js +0 -1
- package/dist/ripple/p-81ddf5a0.entry.js +0 -1
- package/dist/ripple/p-83d22032.system.entry.js +0 -1
- package/dist/ripple/p-846e9391.entry.js +0 -1
- package/dist/ripple/p-8a96b188.system.entry.js +0 -1
- package/dist/ripple/p-8cf7ce7e.system.entry.js +0 -1
- package/dist/ripple/p-969af068.system.entry.js +0 -1
- package/dist/ripple/p-9a4aca88.system.entry.js +0 -1
- package/dist/ripple/p-9aa6cd9f.entry.js +0 -1
- package/dist/ripple/p-9c20bc1f.system.entry.js +0 -1
- package/dist/ripple/p-9d02957d.system.js +0 -1
- package/dist/ripple/p-9d49f21e.entry.js +0 -1
- package/dist/ripple/p-9d8c246d.system.entry.js +0 -1
- package/dist/ripple/p-9df8a520.entry.js +0 -1
- package/dist/ripple/p-a1a2efca.system.entry.js +0 -1
- package/dist/ripple/p-a224d536.system.js +0 -1
- package/dist/ripple/p-b16373b9.system.entry.js +0 -1
- package/dist/ripple/p-b547bcf2.entry.js +0 -1
- package/dist/ripple/p-c8bb4b2b.entry.js +0 -1
- package/dist/ripple/p-d09fb6b5.entry.js +0 -1
- package/dist/ripple/p-e1b076be.entry.js +0 -1
- package/dist/ripple/p-ebae8cae.system.entry.js +0 -1
- package/dist/ripple/p-f54c4b0e.system.js +0 -1
|
@@ -3950,11 +3950,17 @@ function icuUnitToEcma(unit) {
|
|
|
3950
3950
|
return unit.replace(/^(.*?)-/, '');
|
|
3951
3951
|
}
|
|
3952
3952
|
var FRACTION_PRECISION_REGEX = /^\.(?:(0+)(\*)?|(#+)|(0+)(#+))$/g;
|
|
3953
|
-
var SIGNIFICANT_PRECISION_REGEX = /^(@+)?(\+|#+)?$/g;
|
|
3953
|
+
var SIGNIFICANT_PRECISION_REGEX = /^(@+)?(\+|#+)?[rs]?$/g;
|
|
3954
3954
|
var INTEGER_WIDTH_REGEX = /(\*)(0+)|(#+)(0+)|(0+)/g;
|
|
3955
3955
|
var CONCISE_INTEGER_WIDTH_REGEX = /^(0+)$/;
|
|
3956
3956
|
function parseSignificantPrecision(str) {
|
|
3957
3957
|
var result = {};
|
|
3958
|
+
if (str[str.length - 1] === 'r') {
|
|
3959
|
+
result.roundingPriority = 'morePrecision';
|
|
3960
|
+
}
|
|
3961
|
+
else if (str[str.length - 1] === 's') {
|
|
3962
|
+
result.roundingPriority = 'lessPrecision';
|
|
3963
|
+
}
|
|
3958
3964
|
str.replace(SIGNIFICANT_PRECISION_REGEX, function (_, g1, g2) {
|
|
3959
3965
|
// @@@ case
|
|
3960
3966
|
if (typeof g2 !== 'string') {
|
|
@@ -4181,8 +4187,13 @@ function parseNumberSkeleton(tokens) {
|
|
|
4181
4187
|
}
|
|
4182
4188
|
return '';
|
|
4183
4189
|
});
|
|
4184
|
-
|
|
4185
|
-
|
|
4190
|
+
var opt = token.options[0];
|
|
4191
|
+
// https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html#trailing-zero-display
|
|
4192
|
+
if (opt === 'w') {
|
|
4193
|
+
result = __assign(__assign({}, result), { trailingZeroDisplay: 'stripIfInteger' });
|
|
4194
|
+
}
|
|
4195
|
+
else if (opt) {
|
|
4196
|
+
result = __assign(__assign({}, result), parseSignificantPrecision(opt));
|
|
4186
4197
|
}
|
|
4187
4198
|
continue;
|
|
4188
4199
|
}
|
|
@@ -4204,8 +4215,8 @@ function parseNumberSkeleton(tokens) {
|
|
|
4204
4215
|
}
|
|
4205
4216
|
|
|
4206
4217
|
var _a;
|
|
4207
|
-
var SPACE_SEPARATOR_START_REGEX = new RegExp("^"
|
|
4208
|
-
var SPACE_SEPARATOR_END_REGEX = new RegExp(SPACE_SEPARATOR_REGEX.source
|
|
4218
|
+
var SPACE_SEPARATOR_START_REGEX = new RegExp("^".concat(SPACE_SEPARATOR_REGEX.source, "*"));
|
|
4219
|
+
var SPACE_SEPARATOR_END_REGEX = new RegExp("".concat(SPACE_SEPARATOR_REGEX.source, "*$"));
|
|
4209
4220
|
function createLocation(start, end) {
|
|
4210
4221
|
return { start: start, end: end };
|
|
4211
4222
|
}
|
|
@@ -4452,7 +4463,7 @@ var Parser = /** @class */ (function () {
|
|
|
4452
4463
|
return {
|
|
4453
4464
|
val: {
|
|
4454
4465
|
type: TYPE.literal,
|
|
4455
|
-
value: "<"
|
|
4466
|
+
value: "<".concat(tagName, "/>"),
|
|
4456
4467
|
location: createLocation(startPosition, this.clonePosition()),
|
|
4457
4468
|
},
|
|
4458
4469
|
err: null,
|
|
@@ -5057,7 +5068,7 @@ var Parser = /** @class */ (function () {
|
|
|
5057
5068
|
}
|
|
5058
5069
|
var code = codePointAt(this.message, offset);
|
|
5059
5070
|
if (code === undefined) {
|
|
5060
|
-
throw Error("Offset "
|
|
5071
|
+
throw Error("Offset ".concat(offset, " is at invalid UTF-16 code unit boundary"));
|
|
5061
5072
|
}
|
|
5062
5073
|
return code;
|
|
5063
5074
|
};
|
|
@@ -5125,7 +5136,7 @@ var Parser = /** @class */ (function () {
|
|
|
5125
5136
|
*/
|
|
5126
5137
|
Parser.prototype.bumpTo = function (targetOffset) {
|
|
5127
5138
|
if (this.offset() > targetOffset) {
|
|
5128
|
-
throw Error("targetOffset "
|
|
5139
|
+
throw Error("targetOffset ".concat(targetOffset, " must be greater than or equal to the current offset ").concat(this.offset()));
|
|
5129
5140
|
}
|
|
5130
5141
|
targetOffset = Math.min(targetOffset, this.message.length);
|
|
5131
5142
|
while (true) {
|
|
@@ -5134,7 +5145,7 @@ var Parser = /** @class */ (function () {
|
|
|
5134
5145
|
break;
|
|
5135
5146
|
}
|
|
5136
5147
|
if (offset > targetOffset) {
|
|
5137
|
-
throw Error("targetOffset "
|
|
5148
|
+
throw Error("targetOffset ".concat(targetOffset, " is at invalid UTF-16 code unit boundary"));
|
|
5138
5149
|
}
|
|
5139
5150
|
this.bump();
|
|
5140
5151
|
if (this.isEOF()) {
|
|
@@ -5600,28 +5611,28 @@ var FormatError = /** @class */ (function (_super) {
|
|
|
5600
5611
|
return _this;
|
|
5601
5612
|
}
|
|
5602
5613
|
FormatError.prototype.toString = function () {
|
|
5603
|
-
return "[formatjs Error: "
|
|
5614
|
+
return "[formatjs Error: ".concat(this.code, "] ").concat(this.message);
|
|
5604
5615
|
};
|
|
5605
5616
|
return FormatError;
|
|
5606
5617
|
}(Error));
|
|
5607
5618
|
var InvalidValueError = /** @class */ (function (_super) {
|
|
5608
5619
|
__extends(InvalidValueError, _super);
|
|
5609
5620
|
function InvalidValueError(variableId, value, options, originalMessage) {
|
|
5610
|
-
return _super.call(this, "Invalid values for \""
|
|
5621
|
+
return _super.call(this, "Invalid values for \"".concat(variableId, "\": \"").concat(value, "\". Options are \"").concat(Object.keys(options).join('", "'), "\""), ErrorCode.INVALID_VALUE, originalMessage) || this;
|
|
5611
5622
|
}
|
|
5612
5623
|
return InvalidValueError;
|
|
5613
5624
|
}(FormatError));
|
|
5614
5625
|
var InvalidValueTypeError = /** @class */ (function (_super) {
|
|
5615
5626
|
__extends(InvalidValueTypeError, _super);
|
|
5616
5627
|
function InvalidValueTypeError(value, type, originalMessage) {
|
|
5617
|
-
return _super.call(this, "Value for \""
|
|
5628
|
+
return _super.call(this, "Value for \"".concat(value, "\" must be of type ").concat(type), ErrorCode.INVALID_VALUE, originalMessage) || this;
|
|
5618
5629
|
}
|
|
5619
5630
|
return InvalidValueTypeError;
|
|
5620
5631
|
}(FormatError));
|
|
5621
5632
|
var MissingValueError = /** @class */ (function (_super) {
|
|
5622
5633
|
__extends(MissingValueError, _super);
|
|
5623
5634
|
function MissingValueError(variableId, originalMessage) {
|
|
5624
|
-
return _super.call(this, "The intl string context variable \""
|
|
5635
|
+
return _super.call(this, "The intl string context variable \"".concat(variableId, "\" was not provided to the string \"").concat(originalMessage, "\""), ErrorCode.MISSING_VALUE, originalMessage) || this;
|
|
5625
5636
|
}
|
|
5626
5637
|
return MissingValueError;
|
|
5627
5638
|
}(FormatError));
|
|
@@ -5727,7 +5738,7 @@ originalMessage) {
|
|
|
5727
5738
|
? formats.time[el.style]
|
|
5728
5739
|
: isDateTimeSkeleton(el.style)
|
|
5729
5740
|
? el.style.parsedOptions
|
|
5730
|
-
:
|
|
5741
|
+
: formats.time.medium;
|
|
5731
5742
|
result.push({
|
|
5732
5743
|
type: PART_TYPE.literal,
|
|
5733
5744
|
value: formatters
|
|
@@ -5782,7 +5793,7 @@ originalMessage) {
|
|
|
5782
5793
|
continue;
|
|
5783
5794
|
}
|
|
5784
5795
|
if (isPluralElement(el)) {
|
|
5785
|
-
var opt = el.options["="
|
|
5796
|
+
var opt = el.options["=".concat(value)];
|
|
5786
5797
|
if (!opt) {
|
|
5787
5798
|
if (!Intl.PluralRules) {
|
|
5788
5799
|
throw new FormatError("Intl.PluralRules is not available in this environment.\nTry polyfilling it using \"@formatjs/intl-pluralrules\"\n", ErrorCode.MISSING_INTL_API, originalMessage);
|
|
@@ -5853,7 +5864,7 @@ function createDefaultFormatters(cache) {
|
|
|
5853
5864
|
for (var _i = 0; _i < arguments.length; _i++) {
|
|
5854
5865
|
args[_i] = arguments[_i];
|
|
5855
5866
|
}
|
|
5856
|
-
return new ((_a = Intl.NumberFormat).bind.apply(_a, __spreadArray([void 0], args)))();
|
|
5867
|
+
return new ((_a = Intl.NumberFormat).bind.apply(_a, __spreadArray([void 0], args, false)))();
|
|
5857
5868
|
}, {
|
|
5858
5869
|
cache: createFastMemoizeCache$1(cache.number),
|
|
5859
5870
|
strategy: strategies.variadic,
|
|
@@ -5864,7 +5875,7 @@ function createDefaultFormatters(cache) {
|
|
|
5864
5875
|
for (var _i = 0; _i < arguments.length; _i++) {
|
|
5865
5876
|
args[_i] = arguments[_i];
|
|
5866
5877
|
}
|
|
5867
|
-
return new ((_a = Intl.DateTimeFormat).bind.apply(_a, __spreadArray([void 0], args)))();
|
|
5878
|
+
return new ((_a = Intl.DateTimeFormat).bind.apply(_a, __spreadArray([void 0], args, false)))();
|
|
5868
5879
|
}, {
|
|
5869
5880
|
cache: createFastMemoizeCache$1(cache.dateTime),
|
|
5870
5881
|
strategy: strategies.variadic,
|
|
@@ -5875,7 +5886,7 @@ function createDefaultFormatters(cache) {
|
|
|
5875
5886
|
for (var _i = 0; _i < arguments.length; _i++) {
|
|
5876
5887
|
args[_i] = arguments[_i];
|
|
5877
5888
|
}
|
|
5878
|
-
return new ((_a = Intl.PluralRules).bind.apply(_a, __spreadArray([void 0], args)))();
|
|
5889
|
+
return new ((_a = Intl.PluralRules).bind.apply(_a, __spreadArray([void 0], args, false)))();
|
|
5879
5890
|
}, {
|
|
5880
5891
|
cache: createFastMemoizeCache$1(cache.pluralRules),
|
|
5881
5892
|
strategy: strategies.variadic,
|
|
@@ -6033,7 +6044,13 @@ var IntlErrorCode;
|
|
|
6033
6044
|
var IntlError = /** @class */ (function (_super) {
|
|
6034
6045
|
__extends(IntlError, _super);
|
|
6035
6046
|
function IntlError(code, message, exception) {
|
|
6036
|
-
var _this =
|
|
6047
|
+
var _this = this;
|
|
6048
|
+
var err = exception
|
|
6049
|
+
? exception instanceof Error
|
|
6050
|
+
? exception
|
|
6051
|
+
: new Error(String(exception))
|
|
6052
|
+
: undefined;
|
|
6053
|
+
_this = _super.call(this, "[@formatjs/intl Error ".concat(code, "] ").concat(message, " \n").concat(err ? "\n".concat(err.message, "\n").concat(err.stack) : '')) || this;
|
|
6037
6054
|
_this.code = code;
|
|
6038
6055
|
// @ts-ignore just so we don't need to declare dep on @types/node
|
|
6039
6056
|
if (typeof Error.captureStackTrace === 'function') {
|
|
@@ -6065,28 +6082,35 @@ var MissingDataError = /** @class */ (function (_super) {
|
|
|
6065
6082
|
}
|
|
6066
6083
|
return MissingDataError;
|
|
6067
6084
|
}(IntlError));
|
|
6085
|
+
var IntlFormatError = /** @class */ (function (_super) {
|
|
6086
|
+
__extends(IntlFormatError, _super);
|
|
6087
|
+
function IntlFormatError(message, locale, exception) {
|
|
6088
|
+
return _super.call(this, IntlErrorCode.FORMAT_ERROR, "".concat(message, " \nLocale: ").concat(locale, "\n"), exception) || this;
|
|
6089
|
+
}
|
|
6090
|
+
return IntlFormatError;
|
|
6091
|
+
}(IntlError));
|
|
6068
6092
|
var MessageFormatError = /** @class */ (function (_super) {
|
|
6069
6093
|
__extends(MessageFormatError, _super);
|
|
6070
6094
|
function MessageFormatError(message, locale, descriptor, exception) {
|
|
6071
|
-
var _this = _super.call(this,
|
|
6095
|
+
var _this = _super.call(this, "".concat(message, " \nMessageID: ").concat(descriptor === null || descriptor === void 0 ? void 0 : descriptor.id, "\nDefault Message: ").concat(descriptor === null || descriptor === void 0 ? void 0 : descriptor.defaultMessage, "\nDescription: ").concat(descriptor === null || descriptor === void 0 ? void 0 : descriptor.description, " \n"), locale, exception) || this;
|
|
6072
6096
|
_this.descriptor = descriptor;
|
|
6073
6097
|
return _this;
|
|
6074
6098
|
}
|
|
6075
6099
|
return MessageFormatError;
|
|
6076
|
-
}(
|
|
6100
|
+
}(IntlFormatError));
|
|
6077
6101
|
var MissingTranslationError = /** @class */ (function (_super) {
|
|
6078
6102
|
__extends(MissingTranslationError, _super);
|
|
6079
6103
|
function MissingTranslationError(descriptor, locale) {
|
|
6080
|
-
var _this = _super.call(this, IntlErrorCode.MISSING_TRANSLATION, "Missing message: \""
|
|
6104
|
+
var _this = _super.call(this, IntlErrorCode.MISSING_TRANSLATION, "Missing message: \"".concat(descriptor.id, "\" for locale \"").concat(locale, "\", using ").concat(descriptor.defaultMessage ? 'default message' : 'id', " as fallback.")) || this;
|
|
6081
6105
|
_this.descriptor = descriptor;
|
|
6082
6106
|
return _this;
|
|
6083
6107
|
}
|
|
6084
6108
|
return MissingTranslationError;
|
|
6085
6109
|
}(IntlError));
|
|
6086
6110
|
|
|
6087
|
-
function filterProps(props,
|
|
6111
|
+
function filterProps(props, allowlist, defaults) {
|
|
6088
6112
|
if (defaults === void 0) { defaults = {}; }
|
|
6089
|
-
return
|
|
6113
|
+
return allowlist.reduce(function (filtered, name) {
|
|
6090
6114
|
if (name in props) {
|
|
6091
6115
|
filtered[name] = props[name];
|
|
6092
6116
|
}
|
|
@@ -6098,13 +6122,17 @@ function filterProps(props, whitelist, defaults) {
|
|
|
6098
6122
|
}
|
|
6099
6123
|
var defaultErrorHandler = function (error) {
|
|
6100
6124
|
};
|
|
6125
|
+
var defaultWarnHandler = function (warning) {
|
|
6126
|
+
};
|
|
6101
6127
|
var DEFAULT_INTL_CONFIG = {
|
|
6102
6128
|
formats: {},
|
|
6103
6129
|
messages: {},
|
|
6104
6130
|
timeZone: undefined,
|
|
6105
6131
|
defaultLocale: 'en',
|
|
6106
6132
|
defaultFormats: {},
|
|
6133
|
+
fallbackOnEmptyString: true,
|
|
6107
6134
|
onError: defaultErrorHandler,
|
|
6135
|
+
onWarn: defaultWarnHandler,
|
|
6108
6136
|
};
|
|
6109
6137
|
function createIntlCache() {
|
|
6110
6138
|
return {
|
|
@@ -6146,7 +6174,7 @@ function createFormatters(cache) {
|
|
|
6146
6174
|
for (var _i = 0; _i < arguments.length; _i++) {
|
|
6147
6175
|
args[_i] = arguments[_i];
|
|
6148
6176
|
}
|
|
6149
|
-
return new ((_a = Intl.DateTimeFormat).bind.apply(_a, __spreadArray([void 0], args)))();
|
|
6177
|
+
return new ((_a = Intl.DateTimeFormat).bind.apply(_a, __spreadArray([void 0], args, false)))();
|
|
6150
6178
|
}, {
|
|
6151
6179
|
cache: createFastMemoizeCache(cache.dateTime),
|
|
6152
6180
|
strategy: strategies.variadic,
|
|
@@ -6157,7 +6185,7 @@ function createFormatters(cache) {
|
|
|
6157
6185
|
for (var _i = 0; _i < arguments.length; _i++) {
|
|
6158
6186
|
args[_i] = arguments[_i];
|
|
6159
6187
|
}
|
|
6160
|
-
return new ((_a = Intl.NumberFormat).bind.apply(_a, __spreadArray([void 0], args)))();
|
|
6188
|
+
return new ((_a = Intl.NumberFormat).bind.apply(_a, __spreadArray([void 0], args, false)))();
|
|
6161
6189
|
}, {
|
|
6162
6190
|
cache: createFastMemoizeCache(cache.number),
|
|
6163
6191
|
strategy: strategies.variadic,
|
|
@@ -6168,7 +6196,7 @@ function createFormatters(cache) {
|
|
|
6168
6196
|
for (var _i = 0; _i < arguments.length; _i++) {
|
|
6169
6197
|
args[_i] = arguments[_i];
|
|
6170
6198
|
}
|
|
6171
|
-
return new ((_a = Intl.PluralRules).bind.apply(_a, __spreadArray([void 0], args)))();
|
|
6199
|
+
return new ((_a = Intl.PluralRules).bind.apply(_a, __spreadArray([void 0], args, false)))();
|
|
6172
6200
|
}, {
|
|
6173
6201
|
cache: createFastMemoizeCache(cache.pluralRules),
|
|
6174
6202
|
strategy: strategies.variadic,
|
|
@@ -6191,7 +6219,7 @@ function createFormatters(cache) {
|
|
|
6191
6219
|
for (var _i = 0; _i < arguments.length; _i++) {
|
|
6192
6220
|
args[_i] = arguments[_i];
|
|
6193
6221
|
}
|
|
6194
|
-
return new (RelativeTimeFormat.bind.apply(RelativeTimeFormat, __spreadArray([void 0], args)))();
|
|
6222
|
+
return new (RelativeTimeFormat.bind.apply(RelativeTimeFormat, __spreadArray([void 0], args, false)))();
|
|
6195
6223
|
}, {
|
|
6196
6224
|
cache: createFastMemoizeCache(cache.relativeTime),
|
|
6197
6225
|
strategy: strategies.variadic,
|
|
@@ -6202,7 +6230,7 @@ function createFormatters(cache) {
|
|
|
6202
6230
|
for (var _i = 0; _i < arguments.length; _i++) {
|
|
6203
6231
|
args[_i] = arguments[_i];
|
|
6204
6232
|
}
|
|
6205
|
-
return new (ListFormat.bind.apply(ListFormat, __spreadArray([void 0], args)))();
|
|
6233
|
+
return new (ListFormat.bind.apply(ListFormat, __spreadArray([void 0], args, false)))();
|
|
6206
6234
|
}, {
|
|
6207
6235
|
cache: createFastMemoizeCache(cache.list),
|
|
6208
6236
|
strategy: strategies.variadic,
|
|
@@ -6212,7 +6240,7 @@ function createFormatters(cache) {
|
|
|
6212
6240
|
for (var _i = 0; _i < arguments.length; _i++) {
|
|
6213
6241
|
args[_i] = arguments[_i];
|
|
6214
6242
|
}
|
|
6215
|
-
return new (DisplayNames.bind.apply(DisplayNames, __spreadArray([void 0], args)))();
|
|
6243
|
+
return new (DisplayNames.bind.apply(DisplayNames, __spreadArray([void 0], args, false)))();
|
|
6216
6244
|
}, {
|
|
6217
6245
|
cache: createFastMemoizeCache(cache.displayNames),
|
|
6218
6246
|
strategy: strategies.variadic,
|
|
@@ -6228,7 +6256,7 @@ function getNamedFormat(formats, type, name, onError) {
|
|
|
6228
6256
|
if (format) {
|
|
6229
6257
|
return format;
|
|
6230
6258
|
}
|
|
6231
|
-
onError(new UnsupportedFormatterError("No "
|
|
6259
|
+
onError(new UnsupportedFormatterError("No ".concat(type, " format named: ").concat(name)));
|
|
6232
6260
|
}
|
|
6233
6261
|
|
|
6234
6262
|
/**
|
|
@@ -6263,7 +6291,7 @@ function deepMergeFormatsAndSetTimeZone(f1, timeZone) {
|
|
|
6263
6291
|
return __assign(__assign(__assign({}, mfFormats), f1), { date: deepMergeOptions(setTimeZoneInOptions(mfFormats.date, timeZone), setTimeZoneInOptions(f1.date || {}, timeZone)), time: deepMergeOptions(setTimeZoneInOptions(mfFormats.time, timeZone), setTimeZoneInOptions(f1.time || {}, timeZone)) });
|
|
6264
6292
|
}
|
|
6265
6293
|
function formatMessage(_a, state, messageDescriptor, values, opts) {
|
|
6266
|
-
var locale = _a.locale, formats = _a.formats, messages = _a.messages, defaultLocale = _a.defaultLocale, defaultFormats = _a.defaultFormats, onError = _a.onError, timeZone = _a.timeZone, defaultRichTextElements = _a.defaultRichTextElements;
|
|
6294
|
+
var locale = _a.locale, formats = _a.formats, messages = _a.messages, defaultLocale = _a.defaultLocale, defaultFormats = _a.defaultFormats, fallbackOnEmptyString = _a.fallbackOnEmptyString, onError = _a.onError, timeZone = _a.timeZone, defaultRichTextElements = _a.defaultRichTextElements;
|
|
6267
6295
|
if (messageDescriptor === void 0) { messageDescriptor = { id: '' }; }
|
|
6268
6296
|
var msgId = messageDescriptor.id, defaultMessage = messageDescriptor.defaultMessage;
|
|
6269
6297
|
// `id` is a required field of a Message Descriptor.
|
|
@@ -6293,6 +6321,9 @@ function formatMessage(_a, state, messageDescriptor, values, opts) {
|
|
|
6293
6321
|
formats = deepMergeFormatsAndSetTimeZone(formats, timeZone);
|
|
6294
6322
|
defaultFormats = deepMergeFormatsAndSetTimeZone(defaultFormats, timeZone);
|
|
6295
6323
|
if (!message) {
|
|
6324
|
+
if (fallbackOnEmptyString === false && message === '') {
|
|
6325
|
+
return message;
|
|
6326
|
+
}
|
|
6296
6327
|
if (!defaultMessage ||
|
|
6297
6328
|
(locale && locale.toLowerCase() !== defaultLocale.toLowerCase())) {
|
|
6298
6329
|
// This prevents warnings from littering the console in development
|
|
@@ -6306,7 +6337,7 @@ function formatMessage(_a, state, messageDescriptor, values, opts) {
|
|
|
6306
6337
|
return formatter.format(values);
|
|
6307
6338
|
}
|
|
6308
6339
|
catch (e) {
|
|
6309
|
-
onError(new MessageFormatError("Error formatting default message for: \""
|
|
6340
|
+
onError(new MessageFormatError("Error formatting default message for: \"".concat(id, "\", rendering default message verbatim"), locale, messageDescriptor, e));
|
|
6310
6341
|
return typeof defaultMessage === 'string' ? defaultMessage : id;
|
|
6311
6342
|
}
|
|
6312
6343
|
}
|
|
@@ -6318,7 +6349,7 @@ function formatMessage(_a, state, messageDescriptor, values, opts) {
|
|
|
6318
6349
|
return formatter.format(values);
|
|
6319
6350
|
}
|
|
6320
6351
|
catch (e) {
|
|
6321
|
-
onError(new MessageFormatError("Error formatting message: \""
|
|
6352
|
+
onError(new MessageFormatError("Error formatting message: \"".concat(id, "\", using ").concat(defaultMessage ? 'default message' : 'id', " as fallback."), locale, messageDescriptor, e));
|
|
6322
6353
|
}
|
|
6323
6354
|
if (defaultMessage) {
|
|
6324
6355
|
try {
|
|
@@ -6326,7 +6357,7 @@ function formatMessage(_a, state, messageDescriptor, values, opts) {
|
|
|
6326
6357
|
return formatter.format(values);
|
|
6327
6358
|
}
|
|
6328
6359
|
catch (e) {
|
|
6329
|
-
onError(new MessageFormatError("Error formatting the default message for: \""
|
|
6360
|
+
onError(new MessageFormatError("Error formatting the default message for: \"".concat(id, "\", rendering message verbatim"), locale, messageDescriptor, e));
|
|
6330
6361
|
}
|
|
6331
6362
|
}
|
|
6332
6363
|
if (typeof message === 'string') {
|
|
@@ -6364,9 +6395,7 @@ function getFormatter$2(_a, type, getDateTimeFormat, options) {
|
|
|
6364
6395
|
if (options === void 0) { options = {}; }
|
|
6365
6396
|
var format = options.format;
|
|
6366
6397
|
var defaults = __assign(__assign({}, (timeZone && { timeZone: timeZone })), (format && getNamedFormat(formats, type, format, onError)));
|
|
6367
|
-
var filteredOptions = filterProps(options, DATE_TIME_FORMAT_OPTIONS,
|
|
6368
|
-
// @ts-expect-error es2020 has a lot stuff from es2021 bleed in
|
|
6369
|
-
defaults);
|
|
6398
|
+
var filteredOptions = filterProps(options, DATE_TIME_FORMAT_OPTIONS, defaults);
|
|
6370
6399
|
if (type === 'time' &&
|
|
6371
6400
|
!filteredOptions.hour &&
|
|
6372
6401
|
!filteredOptions.minute &&
|
|
@@ -6483,7 +6512,7 @@ var LIST_FORMAT_OPTIONS = [
|
|
|
6483
6512
|
];
|
|
6484
6513
|
var now = Date.now();
|
|
6485
6514
|
function generateToken(i) {
|
|
6486
|
-
return now
|
|
6515
|
+
return "".concat(now, "_").concat(i, "_").concat(now);
|
|
6487
6516
|
}
|
|
6488
6517
|
function formatList(opts, getListFormat, values, options) {
|
|
6489
6518
|
if (options === void 0) { options = {}; }
|
|
@@ -6550,7 +6579,7 @@ function formatPlural(_a, getPluralRules, value, options) {
|
|
|
6550
6579
|
return getPluralRules(locale, filteredOptions).select(value);
|
|
6551
6580
|
}
|
|
6552
6581
|
catch (e) {
|
|
6553
|
-
onError(new
|
|
6582
|
+
onError(new IntlFormatError('Error formatting plural.', locale, e));
|
|
6554
6583
|
}
|
|
6555
6584
|
return 'other';
|
|
6556
6585
|
}
|
|
@@ -6577,7 +6606,7 @@ function formatRelativeTime(config, getRelativeTimeFormat, value, unit, options)
|
|
|
6577
6606
|
return getFormatter$1(config, getRelativeTimeFormat, options).format(value, unit);
|
|
6578
6607
|
}
|
|
6579
6608
|
catch (e) {
|
|
6580
|
-
config.onError(new
|
|
6609
|
+
config.onError(new IntlFormatError('Error formatting relative time.', config.locale, e));
|
|
6581
6610
|
}
|
|
6582
6611
|
return String(value);
|
|
6583
6612
|
}
|
|
@@ -6641,9 +6670,10 @@ function messagesContainString(messages) {
|
|
|
6641
6670
|
return typeof firstMessage === 'string';
|
|
6642
6671
|
}
|
|
6643
6672
|
function verifyConfigMessages(config) {
|
|
6644
|
-
if (config.
|
|
6673
|
+
if (config.onWarn &&
|
|
6674
|
+
config.defaultRichTextElements &&
|
|
6645
6675
|
messagesContainString(config.messages || {})) {
|
|
6646
|
-
|
|
6676
|
+
config.onWarn("[@formatjs/intl] \"defaultRichTextElements\" was specified but \"message\" was not pre-compiled. \nPlease consider using \"@formatjs/cli\" to pre-compile your messages for performance.\nFor more details see https://formatjs.io/docs/getting-started/message-distribution");
|
|
6647
6677
|
}
|
|
6648
6678
|
}
|
|
6649
6679
|
/**
|
|
@@ -6657,7 +6687,7 @@ function createIntl(config, cache) {
|
|
|
6657
6687
|
var locale = resolvedConfig.locale, defaultLocale = resolvedConfig.defaultLocale, onError = resolvedConfig.onError;
|
|
6658
6688
|
if (!locale) {
|
|
6659
6689
|
if (onError) {
|
|
6660
|
-
onError(new InvalidConfigError("\"locale\" was not configured, using \""
|
|
6690
|
+
onError(new InvalidConfigError("\"locale\" was not configured, using \"".concat(defaultLocale, "\" as fallback. See https://formatjs.io/docs/react-intl/api#intlshape for more details")));
|
|
6661
6691
|
}
|
|
6662
6692
|
// Since there's no registered locale data for `locale`, this will
|
|
6663
6693
|
// fallback to the `defaultLocale` to make sure things can render.
|
|
@@ -6667,481 +6697,481 @@ function createIntl(config, cache) {
|
|
|
6667
6697
|
resolvedConfig.locale = resolvedConfig.defaultLocale || 'en';
|
|
6668
6698
|
}
|
|
6669
6699
|
else if (!Intl.NumberFormat.supportedLocalesOf(locale).length && onError) {
|
|
6670
|
-
onError(new MissingDataError("Missing locale data for locale: \""
|
|
6700
|
+
onError(new MissingDataError("Missing locale data for locale: \"".concat(locale, "\" in Intl.NumberFormat. Using default locale: \"").concat(defaultLocale, "\" as fallback. See https://formatjs.io/docs/react-intl#runtime-requirements for more details")));
|
|
6671
6701
|
}
|
|
6672
6702
|
else if (!Intl.DateTimeFormat.supportedLocalesOf(locale).length &&
|
|
6673
6703
|
onError) {
|
|
6674
|
-
onError(new MissingDataError("Missing locale data for locale: \""
|
|
6704
|
+
onError(new MissingDataError("Missing locale data for locale: \"".concat(locale, "\" in Intl.DateTimeFormat. Using default locale: \"").concat(defaultLocale, "\" as fallback. See https://formatjs.io/docs/react-intl#runtime-requirements for more details")));
|
|
6675
6705
|
}
|
|
6676
6706
|
verifyConfigMessages(resolvedConfig);
|
|
6677
|
-
return __assign(__assign({}, resolvedConfig), { formatters: formatters, formatNumber: formatNumber.bind(null, resolvedConfig, formatters.getNumberFormat), formatNumberToParts: formatNumberToParts.bind(null, resolvedConfig, formatters.getNumberFormat), formatRelativeTime: formatRelativeTime.bind(null, resolvedConfig, formatters.getRelativeTimeFormat), formatDate: formatDate.bind(null, resolvedConfig, formatters.getDateTimeFormat), formatDateToParts: formatDateToParts.bind(null, resolvedConfig, formatters.getDateTimeFormat), formatTime: formatTime.bind(null, resolvedConfig, formatters.getDateTimeFormat), formatDateTimeRange: formatDateTimeRange.bind(null, resolvedConfig, formatters.getDateTimeFormat), formatTimeToParts: formatTimeToParts.bind(null, resolvedConfig, formatters.getDateTimeFormat), formatPlural: formatPlural.bind(null, resolvedConfig, formatters.getPluralRules), formatMessage: formatMessage.bind(null, resolvedConfig, formatters), formatList: formatList.bind(null, resolvedConfig, formatters.getListFormat), formatListToParts: formatListToParts.bind(null, resolvedConfig, formatters.getListFormat), formatDisplayName: formatDisplayName.bind(null, resolvedConfig, formatters.getDisplayNames) });
|
|
6707
|
+
return __assign(__assign({}, resolvedConfig), { formatters: formatters, formatNumber: formatNumber.bind(null, resolvedConfig, formatters.getNumberFormat), formatNumberToParts: formatNumberToParts.bind(null, resolvedConfig, formatters.getNumberFormat), formatRelativeTime: formatRelativeTime.bind(null, resolvedConfig, formatters.getRelativeTimeFormat), formatDate: formatDate.bind(null, resolvedConfig, formatters.getDateTimeFormat), formatDateToParts: formatDateToParts.bind(null, resolvedConfig, formatters.getDateTimeFormat), formatTime: formatTime.bind(null, resolvedConfig, formatters.getDateTimeFormat), formatDateTimeRange: formatDateTimeRange.bind(null, resolvedConfig, formatters.getDateTimeFormat), formatTimeToParts: formatTimeToParts.bind(null, resolvedConfig, formatters.getDateTimeFormat), formatPlural: formatPlural.bind(null, resolvedConfig, formatters.getPluralRules), formatMessage: formatMessage.bind(null, resolvedConfig, formatters), $t: formatMessage.bind(null, resolvedConfig, formatters), formatList: formatList.bind(null, resolvedConfig, formatters.getListFormat), formatListToParts: formatListToParts.bind(null, resolvedConfig, formatters.getListFormat), formatDisplayName: formatDisplayName.bind(null, resolvedConfig, formatters.getDisplayNames) });
|
|
6678
6708
|
}
|
|
6679
6709
|
|
|
6680
|
-
const DEFAULT_LANGUAGE = "en";
|
|
6681
|
-
function getBrowserLang() {
|
|
6682
|
-
const langAttr = document.documentElement.getAttribute("lang");
|
|
6683
|
-
if (!!langAttr) {
|
|
6684
|
-
return langAttr;
|
|
6685
|
-
}
|
|
6686
|
-
else if (window.navigator && window.navigator.language) {
|
|
6687
|
-
const lang = window.navigator.languages ? window.navigator.languages[0] : window.navigator.language;
|
|
6688
|
-
return lang.slice(0, 2);
|
|
6689
|
-
}
|
|
6690
|
-
else {
|
|
6691
|
-
return DEFAULT_LANGUAGE;
|
|
6692
|
-
}
|
|
6693
|
-
}
|
|
6694
|
-
// prevents memory leak
|
|
6695
|
-
const cache = createIntlCache();
|
|
6696
|
-
const locale = getBrowserLang();
|
|
6697
|
-
const intl = createIntl({
|
|
6698
|
-
locale: locale,
|
|
6699
|
-
defaultLocale: "en",
|
|
6700
|
-
messages: lang[locale] || en,
|
|
6701
|
-
}, cache);
|
|
6702
|
-
function generateId() {
|
|
6703
|
-
return "wmcl-" + Math.random().toString(36).substr(2, 10);
|
|
6704
|
-
}
|
|
6705
|
-
// limits how many times a function fires
|
|
6706
|
-
// use when the function should run periodically, but not too often (e.g. window resize)
|
|
6707
|
-
function throttle(fn, wait) {
|
|
6708
|
-
let timeout;
|
|
6709
|
-
let shouldWait = false;
|
|
6710
|
-
return function () {
|
|
6711
|
-
const context = this;
|
|
6712
|
-
if (!shouldWait) {
|
|
6713
|
-
fn.apply(context, arguments);
|
|
6714
|
-
shouldWait = true;
|
|
6715
|
-
clearTimeout(timeout);
|
|
6716
|
-
timeout = setTimeout(function () {
|
|
6717
|
-
shouldWait = false;
|
|
6718
|
-
}, wait);
|
|
6719
|
-
}
|
|
6720
|
-
};
|
|
6721
|
-
}
|
|
6722
|
-
// waits until it hasn't been called for [timeout] ms.
|
|
6723
|
-
// use when the function should run only after something (event) is done firing
|
|
6724
|
-
function debounce(fn, wait) {
|
|
6725
|
-
let timeout;
|
|
6726
|
-
return function () {
|
|
6727
|
-
const context = this;
|
|
6728
|
-
const functionCall = () => fn.apply(context, arguments);
|
|
6729
|
-
clearTimeout(timeout);
|
|
6730
|
-
timeout = setTimeout(functionCall, wait);
|
|
6731
|
-
};
|
|
6732
|
-
}
|
|
6733
|
-
function getTextDir() {
|
|
6734
|
-
const dir = document.querySelector("html").getAttribute("dir");
|
|
6735
|
-
return dir ? dir.toLowerCase() : "";
|
|
6736
|
-
}
|
|
6737
|
-
function getPosition(el) {
|
|
6738
|
-
const coords = el.getBoundingClientRect();
|
|
6739
|
-
let x = coords.x;
|
|
6740
|
-
let y = coords.y;
|
|
6741
|
-
// Edge doesn't have x and y
|
|
6742
|
-
if (!x) {
|
|
6743
|
-
if (getTextDir() === "rtl") {
|
|
6744
|
-
x = coords.right;
|
|
6745
|
-
}
|
|
6746
|
-
else {
|
|
6747
|
-
x = coords.left;
|
|
6748
|
-
}
|
|
6749
|
-
y = coords.top;
|
|
6750
|
-
}
|
|
6751
|
-
return { x, y };
|
|
6752
|
-
}
|
|
6753
|
-
function findParentWithScrollbar(el) {
|
|
6754
|
-
while (!!el) {
|
|
6755
|
-
if (el.scrollHeight > el.clientHeight && ["scroll", "auto"].includes(window.getComputedStyle(el).overflowY)) {
|
|
6756
|
-
return el;
|
|
6757
|
-
}
|
|
6758
|
-
el = el.parentElement;
|
|
6759
|
-
}
|
|
6760
|
-
}
|
|
6761
|
-
function findParentWithHiddenOverflow(el) {
|
|
6762
|
-
while (!!el) {
|
|
6763
|
-
if (window.getComputedStyle(el).overflowY !== "visible") {
|
|
6764
|
-
return el;
|
|
6765
|
-
}
|
|
6766
|
-
el = el.parentElement;
|
|
6767
|
-
}
|
|
6768
|
-
}
|
|
6769
|
-
function getClosableElementMeasurements(fixedEl, closableEl) {
|
|
6770
|
-
const parent = findParentWithHiddenOverflow(fixedEl);
|
|
6771
|
-
// if parent is not found, measurements are checked against the viewport
|
|
6772
|
-
return {
|
|
6773
|
-
closableElHeight: closableEl.clientHeight,
|
|
6774
|
-
closableElWidth: closableEl.clientWidth,
|
|
6775
|
-
// NB boundingClientRect.bottom is space from top of viewport to bottom of el
|
|
6776
|
-
// to get space below the el -> height of viewport minus boundingClientRect.bottom
|
|
6777
|
-
spaceAbove: parent
|
|
6778
|
-
? fixedEl.getBoundingClientRect().top - parent.getBoundingClientRect().top
|
|
6779
|
-
: fixedEl.getBoundingClientRect().top,
|
|
6780
|
-
// NB boundingClientRect.bottom is space from top of viewport to bottom of el
|
|
6781
|
-
// to get space below the el -> height of viewport minus boundingClientRect.bottom
|
|
6782
|
-
spaceBelow: parent
|
|
6783
|
-
? parent.getBoundingClientRect().bottom - fixedEl.getBoundingClientRect().bottom
|
|
6784
|
-
: document.documentElement.clientHeight - fixedEl.getBoundingClientRect().bottom,
|
|
6785
|
-
spaceLeft: parent
|
|
6786
|
-
? fixedEl.getBoundingClientRect().left - parent.getBoundingClientRect().left
|
|
6787
|
-
: fixedEl.getBoundingClientRect().left,
|
|
6788
|
-
spaceRight: parent
|
|
6789
|
-
? parent.getBoundingClientRect().right - fixedEl.getBoundingClientRect().right
|
|
6790
|
-
: document.documentElement.clientWidth - fixedEl.getBoundingClientRect().right,
|
|
6791
|
-
};
|
|
6792
|
-
}
|
|
6793
|
-
function shouldOpenUp(fixedEl, //the element visible on the page when the component is closed
|
|
6794
|
-
closableEl, //the dropdown/popup/etc that becomes visible when the component is open
|
|
6795
|
-
offsetAbove = 0, // if closableEl covers a part of fixedEl, that part should be offset
|
|
6796
|
-
offsetBelow = 0 // if closableEl covers a part of fixedEl, that part should be offset
|
|
6797
|
-
) {
|
|
6798
|
-
const { closableElHeight, spaceAbove, spaceBelow } = getClosableElementMeasurements(fixedEl, closableEl);
|
|
6799
|
-
//we want to open up only if there's not enough space below AND there is enough space above
|
|
6800
|
-
const openUp = closableElHeight > spaceBelow + offsetBelow && closableElHeight <= spaceAbove + offsetAbove;
|
|
6801
|
-
return openUp;
|
|
6802
|
-
}
|
|
6803
|
-
function shouldOpenDown(fixedEl, //the element visible on the page when the component is closed
|
|
6804
|
-
closableEl, //the dropdown/popup/etc that becomes visible when the component is open
|
|
6805
|
-
offsetAbove = 0, // if closableEl covers a part of fixedEl, that part should be offset
|
|
6806
|
-
offsetBelow = 0 // if closableEl covers a part of fixedEl, that part should be offset
|
|
6807
|
-
) {
|
|
6808
|
-
const { closableElHeight, spaceAbove, spaceBelow } = getClosableElementMeasurements(fixedEl, closableEl);
|
|
6809
|
-
//we want to open up only if there's not enough space below AND there is enough space above
|
|
6810
|
-
const openDown = closableElHeight > spaceAbove + offsetAbove && closableElHeight <= spaceBelow + offsetBelow;
|
|
6811
|
-
return openDown;
|
|
6812
|
-
}
|
|
6813
|
-
function shouldShiftRight(fixedEl, closableEl) {
|
|
6814
|
-
const { closableElWidth, spaceLeft, spaceRight } = getClosableElementMeasurements(fixedEl, closableEl);
|
|
6815
|
-
const needsSpaceLeft = closableElWidth > spaceLeft && spaceRight > spaceLeft;
|
|
6816
|
-
return needsSpaceLeft;
|
|
6817
|
-
}
|
|
6818
|
-
function shouldShiftLeft(fixedEl, closableEl) {
|
|
6819
|
-
const { closableElWidth, spaceLeft, spaceRight } = getClosableElementMeasurements(fixedEl, closableEl);
|
|
6820
|
-
const needsSpaceRight = closableElWidth > spaceRight && spaceLeft > spaceRight;
|
|
6821
|
-
return needsSpaceRight;
|
|
6822
|
-
}
|
|
6823
|
-
function adjustTooltipPosition(tPos, el, tooltipEl) {
|
|
6824
|
-
// position must be reset before measurements are taken in adjustTooltipPosition
|
|
6825
|
-
// otherwise text-wrapping from previous position makes width measurement inconsistent
|
|
6826
|
-
tooltipEl.style.top = "";
|
|
6827
|
-
tooltipEl.style.left = "";
|
|
6828
|
-
const { spaceLeft, spaceRight, spaceBelow, spaceAbove } = getClosableElementMeasurements(el, tooltipEl);
|
|
6829
|
-
const tooltipWidth = tooltipEl.getBoundingClientRect().width;
|
|
6830
|
-
const tooltipHeight = tooltipEl.getBoundingClientRect().height;
|
|
6831
|
-
const enoughSpaceAbove = spaceAbove > tooltipHeight;
|
|
6832
|
-
const enoughSpaceBelow = spaceBelow > tooltipHeight;
|
|
6833
|
-
// a tooltip should never be closer than 24px to the edge of a screen
|
|
6834
|
-
const enoughSpaceLeft = spaceLeft - 24 > tooltipWidth;
|
|
6835
|
-
const enoughSpaceRight = spaceRight - 24 > tooltipWidth;
|
|
6836
|
-
const swapAbove = (position) => {
|
|
6837
|
-
return !enoughSpaceAbove ? position.replace("top", "bottom") : position;
|
|
6838
|
-
};
|
|
6839
|
-
const swapBelow = (position) => {
|
|
6840
|
-
return !enoughSpaceBelow && enoughSpaceAbove ? position.replace("bottom", "top") : position;
|
|
6841
|
-
};
|
|
6842
|
-
const swapLeft = (position, centeredPosition) => {
|
|
6843
|
-
if (!enoughSpaceLeft && enoughSpaceRight) {
|
|
6844
|
-
position = position.replace("left", "right");
|
|
6845
|
-
}
|
|
6846
|
-
else if (!enoughSpaceLeft && !enoughSpaceRight) {
|
|
6847
|
-
position = centeredPosition;
|
|
6848
|
-
}
|
|
6849
|
-
return position;
|
|
6850
|
-
};
|
|
6851
|
-
const swapRight = (position, centeredPosition) => {
|
|
6852
|
-
if (!enoughSpaceRight && enoughSpaceLeft) {
|
|
6853
|
-
position = position.replace("right", "left");
|
|
6854
|
-
}
|
|
6855
|
-
else if (!enoughSpaceRight && !enoughSpaceLeft) {
|
|
6856
|
-
position = centeredPosition;
|
|
6857
|
-
}
|
|
6858
|
-
return position;
|
|
6859
|
-
};
|
|
6860
|
-
// horizontal checks must occur before vertical checks, because horizontal can affect vertical positioning but not vice versa
|
|
6861
|
-
switch (tPos) {
|
|
6862
|
-
case "left":
|
|
6863
|
-
tPos = swapLeft(tPos, "bottom");
|
|
6864
|
-
case "right":
|
|
6865
|
-
tPos = swapRight(tPos, "bottom");
|
|
6866
|
-
case "top-left":
|
|
6867
|
-
tPos = swapLeft(tPos, "top");
|
|
6868
|
-
tPos = swapAbove(tPos);
|
|
6869
|
-
case "top-right":
|
|
6870
|
-
tPos = swapRight(tPos, "top");
|
|
6871
|
-
tPos = swapAbove(tPos);
|
|
6872
|
-
case "bottom-left":
|
|
6873
|
-
tPos = swapLeft(tPos, "bottom");
|
|
6874
|
-
tPos = swapBelow(tPos);
|
|
6875
|
-
case "bottom-right":
|
|
6876
|
-
tPos = swapRight(tPos, "bottom");
|
|
6877
|
-
tPos = swapBelow(tPos);
|
|
6878
|
-
case "top":
|
|
6879
|
-
tPos = swapAbove(tPos);
|
|
6880
|
-
case "bottom":
|
|
6881
|
-
tPos = swapBelow(tPos);
|
|
6882
|
-
}
|
|
6883
|
-
return tPos;
|
|
6884
|
-
}
|
|
6885
|
-
function hasRoomRight(x, spaceNeeded) {
|
|
6886
|
-
let horizOffset = 0;
|
|
6887
|
-
// if (getTextDir() === "ltr") {
|
|
6888
|
-
if (x.type === "click") {
|
|
6889
|
-
// if it's a mouse event, deal with mouse coords
|
|
6890
|
-
horizOffset = x.clientX;
|
|
6891
|
-
// if it's a focus event, the offset is 0
|
|
6892
|
-
}
|
|
6893
|
-
else if (x.type === "focus") {
|
|
6894
|
-
horizOffset = 0;
|
|
6895
|
-
}
|
|
6896
|
-
else {
|
|
6897
|
-
// otherwise an element was passed, calculate how far it is from the edge of the window
|
|
6898
|
-
let el = x; // re-assignment is for clarity
|
|
6899
|
-
while (el) {
|
|
6900
|
-
if (el.tagName == "BODY") {
|
|
6901
|
-
// deal with browser quirks with body/window/document and page scroll
|
|
6902
|
-
var xScroll = el.scrollLeft || document.documentElement.scrollLeft;
|
|
6903
|
-
horizOffset += el.offsetLeft - xScroll + el.clientLeft;
|
|
6904
|
-
}
|
|
6905
|
-
else {
|
|
6906
|
-
// for all other non-BODY elements
|
|
6907
|
-
horizOffset += el.offsetLeft - el.scrollLeft + el.clientLeft;
|
|
6908
|
-
}
|
|
6909
|
-
el = el.offsetParent;
|
|
6910
|
-
}
|
|
6911
|
-
// }
|
|
6912
|
-
}
|
|
6913
|
-
return window.innerWidth - horizOffset >= spaceNeeded;
|
|
6914
|
-
}
|
|
6915
|
-
function checkForActiveElInShadow(element) {
|
|
6916
|
-
while (element && element.shadowRoot) {
|
|
6917
|
-
element = element.shadowRoot.activeElement;
|
|
6918
|
-
}
|
|
6919
|
-
return element;
|
|
6920
|
-
}
|
|
6921
|
-
function checkForFocusableElInShadow(element) {
|
|
6922
|
-
const selectors = [
|
|
6923
|
-
"button",
|
|
6924
|
-
"a",
|
|
6925
|
-
"input",
|
|
6926
|
-
"select",
|
|
6927
|
-
"textarea",
|
|
6928
|
-
"wm-button",
|
|
6929
|
-
"wm-search",
|
|
6930
|
-
"wm-select",
|
|
6931
|
-
"wm-action-menu",
|
|
6932
|
-
"wm-tab-item",
|
|
6933
|
-
"wm-datepicker",
|
|
6934
|
-
];
|
|
6935
|
-
let focusableEl = element;
|
|
6936
|
-
selectors.forEach((selector) => {
|
|
6937
|
-
if (focusableEl && focusableEl.shadowRoot) {
|
|
6938
|
-
let elInShadow = focusableEl.shadowRoot.querySelector(selector);
|
|
6939
|
-
if (elInShadow) {
|
|
6940
|
-
if (selector.startsWith("wm-")) {
|
|
6941
|
-
focusableEl = checkForFocusableElInShadow(elInShadow);
|
|
6942
|
-
}
|
|
6943
|
-
else {
|
|
6944
|
-
focusableEl = elInShadow;
|
|
6945
|
-
}
|
|
6946
|
-
}
|
|
6947
|
-
}
|
|
6948
|
-
});
|
|
6949
|
-
return focusableEl;
|
|
6950
|
-
}
|
|
6951
|
-
function isFocusable(element) {
|
|
6952
|
-
if (element.tabIndex > 0 || (element.tabIndex === 0 && element.getAttribute("tabIndex") !== null)) {
|
|
6953
|
-
return true;
|
|
6954
|
-
}
|
|
6955
|
-
if (element.disabled) {
|
|
6956
|
-
return false;
|
|
6957
|
-
}
|
|
6958
|
-
switch (element.nodeName) {
|
|
6959
|
-
case "A":
|
|
6960
|
-
return !!element.href && element.rel != "ignore";
|
|
6961
|
-
case "INPUT":
|
|
6962
|
-
return element.type != "hidden" && element.type != "file";
|
|
6963
|
-
case "BUTTON":
|
|
6964
|
-
case "SELECT":
|
|
6965
|
-
case "TEXTAREA":
|
|
6966
|
-
case "WM-BUTTON":
|
|
6967
|
-
case "WM-SELECT":
|
|
6968
|
-
case "WM-ACTION-MENU":
|
|
6969
|
-
case "WM-DATEPICKER":
|
|
6970
|
-
case "WM-TIMEPICKER":
|
|
6971
|
-
case "WM-INPUT":
|
|
6972
|
-
case "WM-TAG-INPUT":
|
|
6973
|
-
case "WM-TAB-ITEM":
|
|
6974
|
-
case "WM-SEARCH":
|
|
6975
|
-
return true;
|
|
6976
|
-
default:
|
|
6977
|
-
return false;
|
|
6978
|
-
}
|
|
6979
|
-
}
|
|
6980
|
-
function getFirstFocusableDescendant(element) {
|
|
6981
|
-
if (isFocusable(element)) {
|
|
6982
|
-
return checkForFocusableElInShadow(element);
|
|
6983
|
-
}
|
|
6984
|
-
else if (element.childNodes.length > 0) {
|
|
6985
|
-
element.childNodes.forEach((i) => {
|
|
6986
|
-
const childEl = getFirstFocusableDescendant(i);
|
|
6987
|
-
return childEl && checkForFocusableElInShadow(childEl);
|
|
6988
|
-
});
|
|
6989
|
-
}
|
|
6990
|
-
}
|
|
6991
|
-
function hasValidType(file, types) {
|
|
6992
|
-
const acceptedExtensions = types.split(" ");
|
|
6993
|
-
const parts = file.name && file.name.split(".");
|
|
6994
|
-
const ext = parts && parts.length > 1 && parts[parts.length - 1];
|
|
6995
|
-
return ext
|
|
6996
|
-
? acceptedExtensions.includes(ext.toLowerCase())
|
|
6997
|
-
: // fallback: if we couldn't obtain an extension,
|
|
6998
|
-
// validate based on MIME type...
|
|
6999
|
-
!!file.type
|
|
7000
|
-
? getAcceptedMimeTypesList(acceptedExtensions).includes(file.type)
|
|
7001
|
-
: // ...and if that failed too, accept the file
|
|
7002
|
-
// as it's preferable to accept an invalid file
|
|
7003
|
-
// than refusing a valid one (back-end will take care of what slips through)
|
|
7004
|
-
true;
|
|
7005
|
-
}
|
|
7006
|
-
// takes a string (space separated list of extensions), returns an array of strings (corresponding MIME types)
|
|
7007
|
-
function getAcceptedMimeTypesList(acceptedExtensions) {
|
|
7008
|
-
// this is just a list of common file types (regardless of whether they are/can be valid or not)
|
|
7009
|
-
// front end checks are just a convenience to users, independent of security.
|
|
7010
|
-
// it allows users to be notified of an invalid type as soon as they select the file, rather than when it gets uploaded
|
|
7011
|
-
const lookupTable = {
|
|
7012
|
-
aac: ["audio/aac"],
|
|
7013
|
-
abw: ["application/x-abiword"],
|
|
7014
|
-
arc: ["application/x-freearc"],
|
|
7015
|
-
avi: ["video/x-msvideo"],
|
|
7016
|
-
azw: ["application/vnd.amazon.ebook"],
|
|
7017
|
-
bin: ["application/octet-stream"],
|
|
7018
|
-
bmp: ["image/bmp"],
|
|
7019
|
-
bz: ["application/x-bzip"],
|
|
7020
|
-
bz2: ["application/x-bzip2"],
|
|
7021
|
-
csh: ["application/x-csh"],
|
|
7022
|
-
css: ["text/css"],
|
|
7023
|
-
csv: ["text/csv"],
|
|
7024
|
-
doc: ["application/msword"],
|
|
7025
|
-
docx: ["application/vnd.openxmlformats-officedocument.wordprocessingml.document"],
|
|
7026
|
-
eot: ["application/vnd.ms-fontobject"],
|
|
7027
|
-
epub: ["application/epub+zip"],
|
|
7028
|
-
gz: ["application/gzip"],
|
|
7029
|
-
gif: ["image/gif"],
|
|
7030
|
-
htm: ["text/html"],
|
|
7031
|
-
html: ["text/html"],
|
|
7032
|
-
ico: ["image/vnd.microsoft.icon"],
|
|
7033
|
-
ics: ["text/calendar"],
|
|
7034
|
-
jar: ["application/java-archive"],
|
|
7035
|
-
jpeg: ["image/jpeg"],
|
|
7036
|
-
jpg: ["image/jpeg"],
|
|
7037
|
-
js: ["text/javascript"],
|
|
7038
|
-
json: ["application/json"],
|
|
7039
|
-
jsonld: ["application/ld+json"],
|
|
7040
|
-
log: ["text/plain"],
|
|
7041
|
-
mid: ["audio/x-midi"],
|
|
7042
|
-
midi: ["audio/x-midi"],
|
|
7043
|
-
mjs: ["text/javascript"],
|
|
7044
|
-
mp3: ["audio/mpeg"],
|
|
7045
|
-
mpeg: ["video/mpeg"],
|
|
7046
|
-
mpkg: ["application/vnd.apple.installer+xml"],
|
|
7047
|
-
odp: ["application/vnd.oasis.opendocument.presentation"],
|
|
7048
|
-
ods: ["application/vnd.oasis.opendocument.spreadsheet"],
|
|
7049
|
-
odt: ["application/vnd.oasis.opendocument.text"],
|
|
7050
|
-
oga: ["audio/ogg"],
|
|
7051
|
-
ogv: ["video/ogg"],
|
|
7052
|
-
ogx: ["application/ogg"],
|
|
7053
|
-
opus: ["audio/opus"],
|
|
7054
|
-
otf: ["font/otf"],
|
|
7055
|
-
png: ["image/png"],
|
|
7056
|
-
pdf: ["application/pdf"],
|
|
7057
|
-
php: ["application/php"],
|
|
7058
|
-
ppt: ["application/vnd.ms-powerpoint"],
|
|
7059
|
-
pptx: ["application/vnd.openxmlformats-officedocument.presentationml.presentation"],
|
|
7060
|
-
rar: ["application/vnd.rar", "application/x-rar", "application/x-rar-compressed"],
|
|
7061
|
-
rtf: ["application/rtf"],
|
|
7062
|
-
sh: ["application/x-sh"],
|
|
7063
|
-
svg: ["image/svg+xml"],
|
|
7064
|
-
swf: ["application/x-shockwave-flash"],
|
|
7065
|
-
tar: ["application/x-tar"],
|
|
7066
|
-
tif: ["image/tiff"],
|
|
7067
|
-
tiff: ["image/tiff"],
|
|
7068
|
-
ts: ["video/mp2t"],
|
|
7069
|
-
ttf: ["font/ttf"],
|
|
7070
|
-
txt: ["text/plain"],
|
|
7071
|
-
vsd: ["application/vnd.visio"],
|
|
7072
|
-
wav: ["audio/wav"],
|
|
7073
|
-
weba: ["audio/webm"],
|
|
7074
|
-
webm: ["video/webm"],
|
|
7075
|
-
webp: ["image/webp"],
|
|
7076
|
-
woff: ["font/woff"],
|
|
7077
|
-
woff2: ["font/woff2"],
|
|
7078
|
-
xhtml: ["application/xhtml+xml"],
|
|
7079
|
-
xls: ["application/vnd.ms-excel"],
|
|
7080
|
-
xlsx: ["application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"],
|
|
7081
|
-
xml: ["application/xml", "text/xml"],
|
|
7082
|
-
xul: ["application/vnd.mozilla.xul+xml"],
|
|
7083
|
-
zip: ["application/zip", "application/x-zip-compressed", "multipart/x-zip"],
|
|
7084
|
-
"3gp": ["video/3gpp", "audio/3gpp"],
|
|
7085
|
-
"3g2": ["video/3gpp2", "audio/3gpp2"],
|
|
7086
|
-
"7z": ["application/x-7z-compressed"],
|
|
7087
|
-
};
|
|
7088
|
-
return acceptedExtensions.reduce((acc, ext) => acc.concat(lookupTable[ext]), []);
|
|
7089
|
-
}
|
|
7090
|
-
function snakeCaseToCamelCase(str) {
|
|
7091
|
-
const snakeCaseRegexp = /^([a-z0-9]*)(_[a-z0-9]*)*$/g;
|
|
7092
|
-
if (snakeCaseRegexp.test(str)) {
|
|
7093
|
-
let camelCase = "";
|
|
7094
|
-
let arr = str.split("_");
|
|
7095
|
-
arr.forEach((word, idx) => {
|
|
7096
|
-
camelCase += idx === 0 ? word.toLowerCase() : word.charAt(0).toUpperCase() + word.slice(1);
|
|
7097
|
-
});
|
|
7098
|
-
return camelCase;
|
|
7099
|
-
}
|
|
7100
|
-
else {
|
|
7101
|
-
return str;
|
|
7102
|
-
}
|
|
7103
|
-
}
|
|
7104
|
-
function getNewIndexToFocus(currentIndex, direction, listLength) {
|
|
7105
|
-
let newIndex = currentIndex;
|
|
7106
|
-
if (direction === "ArrowDown") {
|
|
7107
|
-
newIndex = (currentIndex + 1) % listLength;
|
|
7108
|
-
}
|
|
7109
|
-
if (direction === "ArrowUp") {
|
|
7110
|
-
newIndex = currentIndex === 0 ? listLength - 1 : currentIndex - 1;
|
|
7111
|
-
}
|
|
7112
|
-
return newIndex;
|
|
7113
|
-
}
|
|
7114
|
-
function isRelatedTarget(ev, id) {
|
|
7115
|
-
// used for onBlur events to check the element that has been clicked
|
|
7116
|
-
const ids = id.split(" ");
|
|
7117
|
-
return ev.relatedTarget && ids.includes(ev.relatedTarget.id);
|
|
7118
|
-
}
|
|
7119
|
-
function toBool(val) {
|
|
7120
|
-
// string "false" needs to be treated as bool False because react wrappers convert bool to string.
|
|
7121
|
-
return val == "false" ? false : !!val;
|
|
7122
|
-
}
|
|
7123
|
-
/*
|
|
7124
|
-
* this is going to be needed to solve the extra tabbing on navigator
|
|
7125
|
-
* and for programmatic focus of tabs
|
|
7126
|
-
* Here's a draft, not bug proof, see:
|
|
7127
|
-
* https://stackoverflow.com/a/10730308/3741713
|
|
7128
|
-
|
|
7129
|
-
function getKeyboardFocusableElements(element = document) {
|
|
7130
|
-
const els = Array.from(element.querySelectorAll('a, button, input, textarea, select, details, [tabindex]:not([tabindex="-1"]), wm-search, wm-timepicker, wm-tab-list, wm-tab-item, wm-button, wm-action-menu'));
|
|
7131
|
-
return els.filter((el: Element) => !el.hasAttribute("disabled")) as HTMLElement[];
|
|
7132
|
-
}
|
|
7133
|
-
|
|
7134
|
-
export function getPreviousKeyboardFocusableElement(element: HTMLElement) {
|
|
7135
|
-
const els = getKeyboardFocusableElements();
|
|
7136
|
-
const current = els.indexOf(element);
|
|
7137
|
-
return els[current - 1] as HTMLElement;
|
|
7138
|
-
}
|
|
7139
|
-
|
|
7140
|
-
export function getNextKeyboardFocusableElement(element: HTMLElement) {
|
|
7141
|
-
const els = getKeyboardFocusableElements();
|
|
7142
|
-
const current = els.indexOf(element);
|
|
7143
|
-
return els[current + 1] as HTMLElement;
|
|
7144
|
-
}
|
|
6710
|
+
const DEFAULT_LANGUAGE = "en";
|
|
6711
|
+
function getBrowserLang() {
|
|
6712
|
+
const langAttr = document.documentElement.getAttribute("lang");
|
|
6713
|
+
if (!!langAttr) {
|
|
6714
|
+
return langAttr;
|
|
6715
|
+
}
|
|
6716
|
+
else if (window.navigator && window.navigator.language) {
|
|
6717
|
+
const lang = window.navigator.languages ? window.navigator.languages[0] : window.navigator.language;
|
|
6718
|
+
return lang.slice(0, 2);
|
|
6719
|
+
}
|
|
6720
|
+
else {
|
|
6721
|
+
return DEFAULT_LANGUAGE;
|
|
6722
|
+
}
|
|
6723
|
+
}
|
|
6724
|
+
// prevents memory leak
|
|
6725
|
+
const cache = createIntlCache();
|
|
6726
|
+
const locale = getBrowserLang();
|
|
6727
|
+
const intl = createIntl({
|
|
6728
|
+
locale: locale,
|
|
6729
|
+
defaultLocale: "en",
|
|
6730
|
+
messages: lang[locale] || en,
|
|
6731
|
+
}, cache);
|
|
6732
|
+
function generateId() {
|
|
6733
|
+
return "wmcl-" + Math.random().toString(36).substr(2, 10);
|
|
6734
|
+
}
|
|
6735
|
+
// limits how many times a function fires
|
|
6736
|
+
// use when the function should run periodically, but not too often (e.g. window resize)
|
|
6737
|
+
function throttle(fn, wait) {
|
|
6738
|
+
let timeout;
|
|
6739
|
+
let shouldWait = false;
|
|
6740
|
+
return function () {
|
|
6741
|
+
const context = this;
|
|
6742
|
+
if (!shouldWait) {
|
|
6743
|
+
fn.apply(context, arguments);
|
|
6744
|
+
shouldWait = true;
|
|
6745
|
+
clearTimeout(timeout);
|
|
6746
|
+
timeout = setTimeout(function () {
|
|
6747
|
+
shouldWait = false;
|
|
6748
|
+
}, wait);
|
|
6749
|
+
}
|
|
6750
|
+
};
|
|
6751
|
+
}
|
|
6752
|
+
// waits until it hasn't been called for [timeout] ms.
|
|
6753
|
+
// use when the function should run only after something (event) is done firing
|
|
6754
|
+
function debounce(fn, wait) {
|
|
6755
|
+
let timeout;
|
|
6756
|
+
return function () {
|
|
6757
|
+
const context = this;
|
|
6758
|
+
const functionCall = () => fn.apply(context, arguments);
|
|
6759
|
+
clearTimeout(timeout);
|
|
6760
|
+
timeout = setTimeout(functionCall, wait);
|
|
6761
|
+
};
|
|
6762
|
+
}
|
|
6763
|
+
function getTextDir() {
|
|
6764
|
+
const dir = document.querySelector("html").getAttribute("dir");
|
|
6765
|
+
return dir ? dir.toLowerCase() : "";
|
|
6766
|
+
}
|
|
6767
|
+
function getPosition(el) {
|
|
6768
|
+
const coords = el.getBoundingClientRect();
|
|
6769
|
+
let x = coords.x;
|
|
6770
|
+
let y = coords.y;
|
|
6771
|
+
// Edge doesn't have x and y
|
|
6772
|
+
if (!x) {
|
|
6773
|
+
if (getTextDir() === "rtl") {
|
|
6774
|
+
x = coords.right;
|
|
6775
|
+
}
|
|
6776
|
+
else {
|
|
6777
|
+
x = coords.left;
|
|
6778
|
+
}
|
|
6779
|
+
y = coords.top;
|
|
6780
|
+
}
|
|
6781
|
+
return { x, y };
|
|
6782
|
+
}
|
|
6783
|
+
function findParentWithScrollbar(el) {
|
|
6784
|
+
while (!!el) {
|
|
6785
|
+
if (el.scrollHeight > el.clientHeight && ["scroll", "auto"].includes(window.getComputedStyle(el).overflowY)) {
|
|
6786
|
+
return el;
|
|
6787
|
+
}
|
|
6788
|
+
el = el.parentElement;
|
|
6789
|
+
}
|
|
6790
|
+
}
|
|
6791
|
+
function findParentWithHiddenOverflow(el) {
|
|
6792
|
+
while (!!el) {
|
|
6793
|
+
if (window.getComputedStyle(el).overflowY !== "visible") {
|
|
6794
|
+
return el;
|
|
6795
|
+
}
|
|
6796
|
+
el = el.parentElement;
|
|
6797
|
+
}
|
|
6798
|
+
}
|
|
6799
|
+
function getClosableElementMeasurements(fixedEl, closableEl) {
|
|
6800
|
+
const parent = findParentWithHiddenOverflow(fixedEl);
|
|
6801
|
+
// if parent is not found, measurements are checked against the viewport
|
|
6802
|
+
return {
|
|
6803
|
+
closableElHeight: closableEl.clientHeight,
|
|
6804
|
+
closableElWidth: closableEl.clientWidth,
|
|
6805
|
+
// NB boundingClientRect.bottom is space from top of viewport to bottom of el
|
|
6806
|
+
// to get space below the el -> height of viewport minus boundingClientRect.bottom
|
|
6807
|
+
spaceAbove: parent
|
|
6808
|
+
? fixedEl.getBoundingClientRect().top - parent.getBoundingClientRect().top
|
|
6809
|
+
: fixedEl.getBoundingClientRect().top,
|
|
6810
|
+
// NB boundingClientRect.bottom is space from top of viewport to bottom of el
|
|
6811
|
+
// to get space below the el -> height of viewport minus boundingClientRect.bottom
|
|
6812
|
+
spaceBelow: parent
|
|
6813
|
+
? parent.getBoundingClientRect().bottom - fixedEl.getBoundingClientRect().bottom
|
|
6814
|
+
: document.documentElement.clientHeight - fixedEl.getBoundingClientRect().bottom,
|
|
6815
|
+
spaceLeft: parent
|
|
6816
|
+
? fixedEl.getBoundingClientRect().left - parent.getBoundingClientRect().left
|
|
6817
|
+
: fixedEl.getBoundingClientRect().left,
|
|
6818
|
+
spaceRight: parent
|
|
6819
|
+
? parent.getBoundingClientRect().right - fixedEl.getBoundingClientRect().right
|
|
6820
|
+
: document.documentElement.clientWidth - fixedEl.getBoundingClientRect().right,
|
|
6821
|
+
};
|
|
6822
|
+
}
|
|
6823
|
+
function shouldOpenUp(fixedEl, //the element visible on the page when the component is closed
|
|
6824
|
+
closableEl, //the dropdown/popup/etc that becomes visible when the component is open
|
|
6825
|
+
offsetAbove = 0, // if closableEl covers a part of fixedEl, that part should be offset
|
|
6826
|
+
offsetBelow = 0 // if closableEl covers a part of fixedEl, that part should be offset
|
|
6827
|
+
) {
|
|
6828
|
+
const { closableElHeight, spaceAbove, spaceBelow } = getClosableElementMeasurements(fixedEl, closableEl);
|
|
6829
|
+
//we want to open up only if there's not enough space below AND there is enough space above
|
|
6830
|
+
const openUp = closableElHeight > spaceBelow + offsetBelow && closableElHeight <= spaceAbove + offsetAbove;
|
|
6831
|
+
return openUp;
|
|
6832
|
+
}
|
|
6833
|
+
function shouldOpenDown(fixedEl, //the element visible on the page when the component is closed
|
|
6834
|
+
closableEl, //the dropdown/popup/etc that becomes visible when the component is open
|
|
6835
|
+
offsetAbove = 0, // if closableEl covers a part of fixedEl, that part should be offset
|
|
6836
|
+
offsetBelow = 0 // if closableEl covers a part of fixedEl, that part should be offset
|
|
6837
|
+
) {
|
|
6838
|
+
const { closableElHeight, spaceAbove, spaceBelow } = getClosableElementMeasurements(fixedEl, closableEl);
|
|
6839
|
+
//we want to open up only if there's not enough space below AND there is enough space above
|
|
6840
|
+
const openDown = closableElHeight > spaceAbove + offsetAbove && closableElHeight <= spaceBelow + offsetBelow;
|
|
6841
|
+
return openDown;
|
|
6842
|
+
}
|
|
6843
|
+
function shouldShiftRight(fixedEl, closableEl) {
|
|
6844
|
+
const { closableElWidth, spaceLeft, spaceRight } = getClosableElementMeasurements(fixedEl, closableEl);
|
|
6845
|
+
const needsSpaceLeft = closableElWidth > spaceLeft && spaceRight > spaceLeft;
|
|
6846
|
+
return needsSpaceLeft;
|
|
6847
|
+
}
|
|
6848
|
+
function shouldShiftLeft(fixedEl, closableEl) {
|
|
6849
|
+
const { closableElWidth, spaceLeft, spaceRight } = getClosableElementMeasurements(fixedEl, closableEl);
|
|
6850
|
+
const needsSpaceRight = closableElWidth > spaceRight && spaceLeft > spaceRight;
|
|
6851
|
+
return needsSpaceRight;
|
|
6852
|
+
}
|
|
6853
|
+
function adjustTooltipPosition(tPos, el, tooltipEl) {
|
|
6854
|
+
// position must be reset before measurements are taken in adjustTooltipPosition
|
|
6855
|
+
// otherwise text-wrapping from previous position makes width measurement inconsistent
|
|
6856
|
+
tooltipEl.style.top = "";
|
|
6857
|
+
tooltipEl.style.left = "";
|
|
6858
|
+
const { spaceLeft, spaceRight, spaceBelow, spaceAbove } = getClosableElementMeasurements(el, tooltipEl);
|
|
6859
|
+
const tooltipWidth = tooltipEl.getBoundingClientRect().width;
|
|
6860
|
+
const tooltipHeight = tooltipEl.getBoundingClientRect().height;
|
|
6861
|
+
const enoughSpaceAbove = spaceAbove > tooltipHeight;
|
|
6862
|
+
const enoughSpaceBelow = spaceBelow > tooltipHeight;
|
|
6863
|
+
// a tooltip should never be closer than 24px to the edge of a screen
|
|
6864
|
+
const enoughSpaceLeft = spaceLeft - 24 > tooltipWidth;
|
|
6865
|
+
const enoughSpaceRight = spaceRight - 24 > tooltipWidth;
|
|
6866
|
+
const swapAbove = (position) => {
|
|
6867
|
+
return !enoughSpaceAbove ? position.replace("top", "bottom") : position;
|
|
6868
|
+
};
|
|
6869
|
+
const swapBelow = (position) => {
|
|
6870
|
+
return !enoughSpaceBelow && enoughSpaceAbove ? position.replace("bottom", "top") : position;
|
|
6871
|
+
};
|
|
6872
|
+
const swapLeft = (position, centeredPosition) => {
|
|
6873
|
+
if (!enoughSpaceLeft && enoughSpaceRight) {
|
|
6874
|
+
position = position.replace("left", "right");
|
|
6875
|
+
}
|
|
6876
|
+
else if (!enoughSpaceLeft && !enoughSpaceRight) {
|
|
6877
|
+
position = centeredPosition;
|
|
6878
|
+
}
|
|
6879
|
+
return position;
|
|
6880
|
+
};
|
|
6881
|
+
const swapRight = (position, centeredPosition) => {
|
|
6882
|
+
if (!enoughSpaceRight && enoughSpaceLeft) {
|
|
6883
|
+
position = position.replace("right", "left");
|
|
6884
|
+
}
|
|
6885
|
+
else if (!enoughSpaceRight && !enoughSpaceLeft) {
|
|
6886
|
+
position = centeredPosition;
|
|
6887
|
+
}
|
|
6888
|
+
return position;
|
|
6889
|
+
};
|
|
6890
|
+
// horizontal checks must occur before vertical checks, because horizontal can affect vertical positioning but not vice versa
|
|
6891
|
+
switch (tPos) {
|
|
6892
|
+
case "left":
|
|
6893
|
+
tPos = swapLeft(tPos, "bottom");
|
|
6894
|
+
case "right":
|
|
6895
|
+
tPos = swapRight(tPos, "bottom");
|
|
6896
|
+
case "top-left":
|
|
6897
|
+
tPos = swapLeft(tPos, "top");
|
|
6898
|
+
tPos = swapAbove(tPos);
|
|
6899
|
+
case "top-right":
|
|
6900
|
+
tPos = swapRight(tPos, "top");
|
|
6901
|
+
tPos = swapAbove(tPos);
|
|
6902
|
+
case "bottom-left":
|
|
6903
|
+
tPos = swapLeft(tPos, "bottom");
|
|
6904
|
+
tPos = swapBelow(tPos);
|
|
6905
|
+
case "bottom-right":
|
|
6906
|
+
tPos = swapRight(tPos, "bottom");
|
|
6907
|
+
tPos = swapBelow(tPos);
|
|
6908
|
+
case "top":
|
|
6909
|
+
tPos = swapAbove(tPos);
|
|
6910
|
+
case "bottom":
|
|
6911
|
+
tPos = swapBelow(tPos);
|
|
6912
|
+
}
|
|
6913
|
+
return tPos;
|
|
6914
|
+
}
|
|
6915
|
+
function hasRoomRight(x, spaceNeeded) {
|
|
6916
|
+
let horizOffset = 0;
|
|
6917
|
+
// if (getTextDir() === "ltr") {
|
|
6918
|
+
if (x.type === "click") {
|
|
6919
|
+
// if it's a mouse event, deal with mouse coords
|
|
6920
|
+
horizOffset = x.clientX;
|
|
6921
|
+
// if it's a focus event, the offset is 0
|
|
6922
|
+
}
|
|
6923
|
+
else if (x.type === "focus") {
|
|
6924
|
+
horizOffset = 0;
|
|
6925
|
+
}
|
|
6926
|
+
else {
|
|
6927
|
+
// otherwise an element was passed, calculate how far it is from the edge of the window
|
|
6928
|
+
let el = x; // re-assignment is for clarity
|
|
6929
|
+
while (el) {
|
|
6930
|
+
if (el.tagName == "BODY") {
|
|
6931
|
+
// deal with browser quirks with body/window/document and page scroll
|
|
6932
|
+
var xScroll = el.scrollLeft || document.documentElement.scrollLeft;
|
|
6933
|
+
horizOffset += el.offsetLeft - xScroll + el.clientLeft;
|
|
6934
|
+
}
|
|
6935
|
+
else {
|
|
6936
|
+
// for all other non-BODY elements
|
|
6937
|
+
horizOffset += el.offsetLeft - el.scrollLeft + el.clientLeft;
|
|
6938
|
+
}
|
|
6939
|
+
el = el.offsetParent;
|
|
6940
|
+
}
|
|
6941
|
+
// }
|
|
6942
|
+
}
|
|
6943
|
+
return window.innerWidth - horizOffset >= spaceNeeded;
|
|
6944
|
+
}
|
|
6945
|
+
function checkForActiveElInShadow(element) {
|
|
6946
|
+
while (element && element.shadowRoot) {
|
|
6947
|
+
element = element.shadowRoot.activeElement;
|
|
6948
|
+
}
|
|
6949
|
+
return element;
|
|
6950
|
+
}
|
|
6951
|
+
function checkForFocusableElInShadow(element) {
|
|
6952
|
+
const selectors = [
|
|
6953
|
+
"button",
|
|
6954
|
+
"a",
|
|
6955
|
+
"input",
|
|
6956
|
+
"select",
|
|
6957
|
+
"textarea",
|
|
6958
|
+
"wm-button",
|
|
6959
|
+
"wm-search",
|
|
6960
|
+
"wm-select",
|
|
6961
|
+
"wm-action-menu",
|
|
6962
|
+
"wm-tab-item",
|
|
6963
|
+
"wm-datepicker",
|
|
6964
|
+
];
|
|
6965
|
+
let focusableEl = element;
|
|
6966
|
+
selectors.forEach((selector) => {
|
|
6967
|
+
if (focusableEl && focusableEl.shadowRoot) {
|
|
6968
|
+
let elInShadow = focusableEl.shadowRoot.querySelector(selector);
|
|
6969
|
+
if (elInShadow) {
|
|
6970
|
+
if (selector.startsWith("wm-")) {
|
|
6971
|
+
focusableEl = checkForFocusableElInShadow(elInShadow);
|
|
6972
|
+
}
|
|
6973
|
+
else {
|
|
6974
|
+
focusableEl = elInShadow;
|
|
6975
|
+
}
|
|
6976
|
+
}
|
|
6977
|
+
}
|
|
6978
|
+
});
|
|
6979
|
+
return focusableEl;
|
|
6980
|
+
}
|
|
6981
|
+
function isFocusable(element) {
|
|
6982
|
+
if (element.tabIndex > 0 || (element.tabIndex === 0 && element.getAttribute("tabIndex") !== null)) {
|
|
6983
|
+
return true;
|
|
6984
|
+
}
|
|
6985
|
+
if (element.disabled) {
|
|
6986
|
+
return false;
|
|
6987
|
+
}
|
|
6988
|
+
switch (element.nodeName) {
|
|
6989
|
+
case "A":
|
|
6990
|
+
return !!element.href && element.rel != "ignore";
|
|
6991
|
+
case "INPUT":
|
|
6992
|
+
return element.type != "hidden" && element.type != "file";
|
|
6993
|
+
case "BUTTON":
|
|
6994
|
+
case "SELECT":
|
|
6995
|
+
case "TEXTAREA":
|
|
6996
|
+
case "WM-BUTTON":
|
|
6997
|
+
case "WM-SELECT":
|
|
6998
|
+
case "WM-ACTION-MENU":
|
|
6999
|
+
case "WM-DATEPICKER":
|
|
7000
|
+
case "WM-TIMEPICKER":
|
|
7001
|
+
case "WM-INPUT":
|
|
7002
|
+
case "WM-TAG-INPUT":
|
|
7003
|
+
case "WM-TAB-ITEM":
|
|
7004
|
+
case "WM-SEARCH":
|
|
7005
|
+
return true;
|
|
7006
|
+
default:
|
|
7007
|
+
return false;
|
|
7008
|
+
}
|
|
7009
|
+
}
|
|
7010
|
+
function getFirstFocusableDescendant(element) {
|
|
7011
|
+
if (isFocusable(element)) {
|
|
7012
|
+
return checkForFocusableElInShadow(element);
|
|
7013
|
+
}
|
|
7014
|
+
else if (element.childNodes.length > 0) {
|
|
7015
|
+
element.childNodes.forEach((i) => {
|
|
7016
|
+
const childEl = getFirstFocusableDescendant(i);
|
|
7017
|
+
return childEl && checkForFocusableElInShadow(childEl);
|
|
7018
|
+
});
|
|
7019
|
+
}
|
|
7020
|
+
}
|
|
7021
|
+
function hasValidType(file, types) {
|
|
7022
|
+
const acceptedExtensions = types.split(" ");
|
|
7023
|
+
const parts = file.name && file.name.split(".");
|
|
7024
|
+
const ext = parts && parts.length > 1 && parts[parts.length - 1];
|
|
7025
|
+
return ext
|
|
7026
|
+
? acceptedExtensions.includes(ext.toLowerCase())
|
|
7027
|
+
: // fallback: if we couldn't obtain an extension,
|
|
7028
|
+
// validate based on MIME type...
|
|
7029
|
+
!!file.type
|
|
7030
|
+
? getAcceptedMimeTypesList(acceptedExtensions).includes(file.type)
|
|
7031
|
+
: // ...and if that failed too, accept the file
|
|
7032
|
+
// as it's preferable to accept an invalid file
|
|
7033
|
+
// than refusing a valid one (back-end will take care of what slips through)
|
|
7034
|
+
true;
|
|
7035
|
+
}
|
|
7036
|
+
// takes a string (space separated list of extensions), returns an array of strings (corresponding MIME types)
|
|
7037
|
+
function getAcceptedMimeTypesList(acceptedExtensions) {
|
|
7038
|
+
// this is just a list of common file types (regardless of whether they are/can be valid or not)
|
|
7039
|
+
// front end checks are just a convenience to users, independent of security.
|
|
7040
|
+
// it allows users to be notified of an invalid type as soon as they select the file, rather than when it gets uploaded
|
|
7041
|
+
const lookupTable = {
|
|
7042
|
+
aac: ["audio/aac"],
|
|
7043
|
+
abw: ["application/x-abiword"],
|
|
7044
|
+
arc: ["application/x-freearc"],
|
|
7045
|
+
avi: ["video/x-msvideo"],
|
|
7046
|
+
azw: ["application/vnd.amazon.ebook"],
|
|
7047
|
+
bin: ["application/octet-stream"],
|
|
7048
|
+
bmp: ["image/bmp"],
|
|
7049
|
+
bz: ["application/x-bzip"],
|
|
7050
|
+
bz2: ["application/x-bzip2"],
|
|
7051
|
+
csh: ["application/x-csh"],
|
|
7052
|
+
css: ["text/css"],
|
|
7053
|
+
csv: ["text/csv"],
|
|
7054
|
+
doc: ["application/msword"],
|
|
7055
|
+
docx: ["application/vnd.openxmlformats-officedocument.wordprocessingml.document"],
|
|
7056
|
+
eot: ["application/vnd.ms-fontobject"],
|
|
7057
|
+
epub: ["application/epub+zip"],
|
|
7058
|
+
gz: ["application/gzip"],
|
|
7059
|
+
gif: ["image/gif"],
|
|
7060
|
+
htm: ["text/html"],
|
|
7061
|
+
html: ["text/html"],
|
|
7062
|
+
ico: ["image/vnd.microsoft.icon"],
|
|
7063
|
+
ics: ["text/calendar"],
|
|
7064
|
+
jar: ["application/java-archive"],
|
|
7065
|
+
jpeg: ["image/jpeg"],
|
|
7066
|
+
jpg: ["image/jpeg"],
|
|
7067
|
+
js: ["text/javascript"],
|
|
7068
|
+
json: ["application/json"],
|
|
7069
|
+
jsonld: ["application/ld+json"],
|
|
7070
|
+
log: ["text/plain"],
|
|
7071
|
+
mid: ["audio/x-midi"],
|
|
7072
|
+
midi: ["audio/x-midi"],
|
|
7073
|
+
mjs: ["text/javascript"],
|
|
7074
|
+
mp3: ["audio/mpeg"],
|
|
7075
|
+
mpeg: ["video/mpeg"],
|
|
7076
|
+
mpkg: ["application/vnd.apple.installer+xml"],
|
|
7077
|
+
odp: ["application/vnd.oasis.opendocument.presentation"],
|
|
7078
|
+
ods: ["application/vnd.oasis.opendocument.spreadsheet"],
|
|
7079
|
+
odt: ["application/vnd.oasis.opendocument.text"],
|
|
7080
|
+
oga: ["audio/ogg"],
|
|
7081
|
+
ogv: ["video/ogg"],
|
|
7082
|
+
ogx: ["application/ogg"],
|
|
7083
|
+
opus: ["audio/opus"],
|
|
7084
|
+
otf: ["font/otf"],
|
|
7085
|
+
png: ["image/png"],
|
|
7086
|
+
pdf: ["application/pdf"],
|
|
7087
|
+
php: ["application/php"],
|
|
7088
|
+
ppt: ["application/vnd.ms-powerpoint"],
|
|
7089
|
+
pptx: ["application/vnd.openxmlformats-officedocument.presentationml.presentation"],
|
|
7090
|
+
rar: ["application/vnd.rar", "application/x-rar", "application/x-rar-compressed"],
|
|
7091
|
+
rtf: ["application/rtf"],
|
|
7092
|
+
sh: ["application/x-sh"],
|
|
7093
|
+
svg: ["image/svg+xml"],
|
|
7094
|
+
swf: ["application/x-shockwave-flash"],
|
|
7095
|
+
tar: ["application/x-tar"],
|
|
7096
|
+
tif: ["image/tiff"],
|
|
7097
|
+
tiff: ["image/tiff"],
|
|
7098
|
+
ts: ["video/mp2t"],
|
|
7099
|
+
ttf: ["font/ttf"],
|
|
7100
|
+
txt: ["text/plain"],
|
|
7101
|
+
vsd: ["application/vnd.visio"],
|
|
7102
|
+
wav: ["audio/wav"],
|
|
7103
|
+
weba: ["audio/webm"],
|
|
7104
|
+
webm: ["video/webm"],
|
|
7105
|
+
webp: ["image/webp"],
|
|
7106
|
+
woff: ["font/woff"],
|
|
7107
|
+
woff2: ["font/woff2"],
|
|
7108
|
+
xhtml: ["application/xhtml+xml"],
|
|
7109
|
+
xls: ["application/vnd.ms-excel"],
|
|
7110
|
+
xlsx: ["application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"],
|
|
7111
|
+
xml: ["application/xml", "text/xml"],
|
|
7112
|
+
xul: ["application/vnd.mozilla.xul+xml"],
|
|
7113
|
+
zip: ["application/zip", "application/x-zip-compressed", "multipart/x-zip"],
|
|
7114
|
+
"3gp": ["video/3gpp", "audio/3gpp"],
|
|
7115
|
+
"3g2": ["video/3gpp2", "audio/3gpp2"],
|
|
7116
|
+
"7z": ["application/x-7z-compressed"],
|
|
7117
|
+
};
|
|
7118
|
+
return acceptedExtensions.reduce((acc, ext) => acc.concat(lookupTable[ext]), []);
|
|
7119
|
+
}
|
|
7120
|
+
function snakeCaseToCamelCase(str) {
|
|
7121
|
+
const snakeCaseRegexp = /^([a-z0-9]*)(_[a-z0-9]*)*$/g;
|
|
7122
|
+
if (snakeCaseRegexp.test(str)) {
|
|
7123
|
+
let camelCase = "";
|
|
7124
|
+
let arr = str.split("_");
|
|
7125
|
+
arr.forEach((word, idx) => {
|
|
7126
|
+
camelCase += idx === 0 ? word.toLowerCase() : word.charAt(0).toUpperCase() + word.slice(1);
|
|
7127
|
+
});
|
|
7128
|
+
return camelCase;
|
|
7129
|
+
}
|
|
7130
|
+
else {
|
|
7131
|
+
return str;
|
|
7132
|
+
}
|
|
7133
|
+
}
|
|
7134
|
+
function getNewIndexToFocus(currentIndex, direction, listLength) {
|
|
7135
|
+
let newIndex = currentIndex;
|
|
7136
|
+
if (direction === "ArrowDown") {
|
|
7137
|
+
newIndex = (currentIndex + 1) % listLength;
|
|
7138
|
+
}
|
|
7139
|
+
if (direction === "ArrowUp") {
|
|
7140
|
+
newIndex = currentIndex === 0 ? listLength - 1 : currentIndex - 1;
|
|
7141
|
+
}
|
|
7142
|
+
return newIndex;
|
|
7143
|
+
}
|
|
7144
|
+
function isRelatedTarget(ev, id) {
|
|
7145
|
+
// used for onBlur events to check the element that has been clicked
|
|
7146
|
+
const ids = id.split(" ");
|
|
7147
|
+
return ev.relatedTarget && ids.includes(ev.relatedTarget.id);
|
|
7148
|
+
}
|
|
7149
|
+
function toBool(val) {
|
|
7150
|
+
// string "false" needs to be treated as bool False because react wrappers convert bool to string.
|
|
7151
|
+
return val == "false" ? false : !!val;
|
|
7152
|
+
}
|
|
7153
|
+
/*
|
|
7154
|
+
* this is going to be needed to solve the extra tabbing on navigator
|
|
7155
|
+
* and for programmatic focus of tabs
|
|
7156
|
+
* Here's a draft, not bug proof, see:
|
|
7157
|
+
* https://stackoverflow.com/a/10730308/3741713
|
|
7158
|
+
|
|
7159
|
+
function getKeyboardFocusableElements(element = document) {
|
|
7160
|
+
const els = Array.from(element.querySelectorAll('a, button, input, textarea, select, details, [tabindex]:not([tabindex="-1"]), wm-search, wm-timepicker, wm-tab-list, wm-tab-item, wm-button, wm-action-menu'));
|
|
7161
|
+
return els.filter((el: Element) => !el.hasAttribute("disabled")) as HTMLElement[];
|
|
7162
|
+
}
|
|
7163
|
+
|
|
7164
|
+
export function getPreviousKeyboardFocusableElement(element: HTMLElement) {
|
|
7165
|
+
const els = getKeyboardFocusableElements();
|
|
7166
|
+
const current = els.indexOf(element);
|
|
7167
|
+
return els[current - 1] as HTMLElement;
|
|
7168
|
+
}
|
|
7169
|
+
|
|
7170
|
+
export function getNextKeyboardFocusableElement(element: HTMLElement) {
|
|
7171
|
+
const els = getKeyboardFocusableElements();
|
|
7172
|
+
const current = els.indexOf(element);
|
|
7173
|
+
return els[current + 1] as HTMLElement;
|
|
7174
|
+
}
|
|
7145
7175
|
*/
|
|
7146
7176
|
|
|
7147
7177
|
export { adjustTooltipPosition as a, getPosition as b, checkForActiveElInShadow as c, debounce as d, isRelatedTarget as e, findParentWithScrollbar as f, generateId as g, checkForFocusableElInShadow as h, intl as i, getFirstFocusableDescendant as j, getNewIndexToFocus as k, shouldOpenUp as l, shouldOpenDown as m, shouldShiftRight as n, shouldShiftLeft as o, hasValidType as p, getTextDir as q, throttle as r, snakeCaseToCamelCase as s, toBool as t, hasRoomRight as u };
|