@watermarkinsights/ripple 3.25.0-2 → 3.25.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-9dce0ea3.js → chartFunctions-2f04ab6a.js} +591 -591
- package/dist/cjs/chartFunctions-2f04ab6a.js.map +1 -0
- package/dist/cjs/{functions-53aff314.js → functions-d2d99997.js} +478 -478
- package/dist/cjs/{functions-53aff314.js.map → functions-d2d99997.js.map} +1 -1
- package/dist/cjs/{global-c22b1249.js → global-d0584d18.js} +63 -63
- package/dist/cjs/global-d0584d18.js.map +1 -0
- package/dist/cjs/{http-service-494d81de.js → http-service-9e8c4dd5.js} +50 -50
- package/dist/cjs/http-service-9e8c4dd5.js.map +1 -0
- package/dist/cjs/{interfaces-a3338581.js → interfaces-30a74c1f.js} +30 -30
- package/dist/cjs/interfaces-30a74c1f.js.map +1 -0
- package/dist/cjs/intl-a1ccf587.js +140 -0
- package/dist/cjs/intl-a1ccf587.js.map +1 -0
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/cjs/priv-chart-popover.cjs.entry.js +91 -91
- package/dist/cjs/priv-chart-popover.cjs.entry.js.map +1 -1
- package/dist/cjs/priv-datepicker.cjs.entry.js +657 -657
- package/dist/cjs/priv-datepicker.cjs.entry.js.map +1 -1
- package/dist/cjs/priv-navigator-button.cjs.entry.js +19 -19
- package/dist/cjs/priv-navigator-button.cjs.entry.js.map +1 -1
- package/dist/cjs/priv-navigator-item.cjs.entry.js +23 -23
- package/dist/cjs/priv-navigator-item.cjs.entry.js.map +1 -1
- package/dist/cjs/ripple.cjs.js +2 -2
- package/dist/cjs/wm-action-menu_2.cjs.entry.js +334 -334
- package/dist/cjs/wm-action-menu_2.cjs.entry.js.map +1 -1
- package/dist/cjs/wm-button.cjs.entry.js +260 -260
- package/dist/cjs/wm-button.cjs.entry.js.map +1 -1
- package/dist/cjs/wm-chart-slice.cjs.entry.js +18 -18
- package/dist/cjs/wm-chart-slice.cjs.entry.js.map +1 -1
- package/dist/cjs/wm-chart.cjs.entry.js +179 -179
- package/dist/cjs/wm-chart.cjs.entry.js.map +1 -1
- package/dist/cjs/wm-datepicker.cjs.entry.js +264 -264
- package/dist/cjs/wm-datepicker.cjs.entry.js.map +1 -1
- package/dist/cjs/wm-file-list.cjs.entry.js +35 -35
- package/dist/cjs/wm-file-list.cjs.entry.js.map +1 -1
- package/dist/cjs/wm-file.cjs.entry.js +201 -201
- package/dist/cjs/wm-file.cjs.entry.js.map +1 -1
- package/dist/cjs/wm-input.cjs.entry.js +124 -140
- package/dist/cjs/wm-input.cjs.entry.js.map +1 -1
- package/dist/cjs/wm-modal-footer.cjs.entry.js +33 -33
- package/dist/cjs/wm-modal-footer.cjs.entry.js.map +1 -1
- package/dist/cjs/wm-modal-header.cjs.entry.js +32 -32
- package/dist/cjs/wm-modal-header.cjs.entry.js.map +1 -1
- package/dist/cjs/wm-modal.cjs.entry.js +152 -152
- package/dist/cjs/wm-modal.cjs.entry.js.map +1 -1
- package/dist/cjs/wm-navigation_3.cjs.entry.js +225 -230
- package/dist/cjs/wm-navigation_3.cjs.entry.js.map +1 -1
- package/dist/cjs/wm-navigator.cjs.entry.js +264 -264
- package/dist/cjs/wm-navigator.cjs.entry.js.map +1 -1
- package/dist/cjs/wm-network-uploader.cjs.entry.js +465 -467
- package/dist/cjs/wm-network-uploader.cjs.entry.js.map +1 -1
- package/dist/cjs/wm-option_2.cjs.entry.js +769 -772
- package/dist/cjs/wm-option_2.cjs.entry.js.map +1 -1
- package/dist/cjs/wm-pagination.cjs.entry.js +179 -179
- package/dist/cjs/wm-pagination.cjs.entry.js.map +1 -1
- package/dist/cjs/wm-progress-indicator_3.cjs.entry.js +155 -155
- package/dist/cjs/wm-progress-indicator_3.cjs.entry.js.map +1 -1
- package/dist/cjs/wm-search.cjs.entry.js +185 -192
- package/dist/cjs/wm-search.cjs.entry.js.map +1 -1
- package/dist/cjs/wm-snackbar.cjs.entry.js +155 -159
- package/dist/cjs/wm-snackbar.cjs.entry.js.map +1 -1
- package/dist/cjs/wm-tab-item_3.cjs.entry.js +264 -264
- package/dist/cjs/wm-tab-item_3.cjs.entry.js.map +1 -1
- package/dist/cjs/wm-tag-input-row.cjs.entry.js +14 -14
- package/dist/cjs/wm-tag-input-row.cjs.entry.js.map +1 -1
- package/dist/cjs/wm-tag-input.cjs.entry.js +912 -924
- package/dist/cjs/wm-tag-input.cjs.entry.js.map +1 -1
- package/dist/cjs/wm-timepicker.cjs.entry.js +386 -386
- package/dist/cjs/wm-timepicker.cjs.entry.js.map +1 -1
- package/dist/cjs/wm-toggletip.cjs.entry.js +130 -130
- package/dist/cjs/wm-toggletip.cjs.entry.js.map +1 -1
- package/dist/cjs/wm-uploader.cjs.entry.js +441 -510
- package/dist/cjs/wm-uploader.cjs.entry.js.map +1 -1
- package/dist/cjs/wm-wrapper.cjs.entry.js +12 -12
- package/dist/cjs/wm-wrapper.cjs.entry.js.map +1 -1
- package/dist/collection/components/charts/chartFunctions.js +557 -557
- package/dist/collection/components/charts/chartFunctions.js.map +1 -1
- package/dist/collection/components/charts/priv-chart-popover/priv-chart-popover.js +268 -270
- package/dist/collection/components/charts/priv-chart-popover/priv-chart-popover.js.map +1 -1
- package/dist/collection/components/charts/wm-chart/wm-chart-slice.js +126 -126
- package/dist/collection/components/charts/wm-chart/wm-chart-slice.js.map +1 -1
- package/dist/collection/components/charts/wm-chart/wm-chart.js +447 -447
- package/dist/collection/components/charts/wm-chart/wm-chart.js.map +1 -1
- package/dist/collection/components/charts/wm-progress-monitor/wm-progress-indicator.js +208 -208
- package/dist/collection/components/charts/wm-progress-monitor/wm-progress-indicator.js.map +1 -1
- package/dist/collection/components/charts/wm-progress-monitor/wm-progress-monitor.js +144 -144
- package/dist/collection/components/charts/wm-progress-monitor/wm-progress-monitor.js.map +1 -1
- package/dist/collection/components/charts/wm-progress-monitor/wm-progress-slice.js +122 -122
- package/dist/collection/components/charts/wm-progress-monitor/wm-progress-slice.js.map +1 -1
- package/dist/collection/components/wm-action-menu/wm-action-menu.js +473 -473
- package/dist/collection/components/wm-action-menu/wm-action-menu.js.map +1 -1
- package/dist/collection/components/wm-button/wm-button.js +576 -576
- package/dist/collection/components/wm-button/wm-button.js.map +1 -1
- package/dist/collection/components/wm-datepicker/priv-datepicker/priv-datepicker.js +984 -984
- package/dist/collection/components/wm-datepicker/priv-datepicker/priv-datepicker.js.map +1 -1
- package/dist/collection/components/wm-datepicker/wm-datepicker.css +4 -4
- package/dist/collection/components/wm-datepicker/wm-datepicker.js +492 -492
- package/dist/collection/components/wm-datepicker/wm-datepicker.js.map +1 -1
- package/dist/collection/components/wm-file/wm-file.js +334 -334
- package/dist/collection/components/wm-file/wm-file.js.map +1 -1
- package/dist/collection/components/wm-file-list/wm-file-list.js +153 -153
- package/dist/collection/components/wm-file-list/wm-file-list.js.map +1 -1
- package/dist/collection/components/wm-input/wm-input.css +4 -4
- package/dist/collection/components/wm-input/wm-input.js +428 -444
- package/dist/collection/components/wm-input/wm-input.js.map +1 -1
- package/dist/collection/components/wm-menuitem/wm-menuitem.js +455 -455
- package/dist/collection/components/wm-menuitem/wm-menuitem.js.map +1 -1
- package/dist/collection/components/wm-modal/wm-modal-footer.js +139 -139
- package/dist/collection/components/wm-modal/wm-modal-footer.js.map +1 -1
- package/dist/collection/components/wm-modal/wm-modal-header.js +83 -83
- package/dist/collection/components/wm-modal/wm-modal-header.js.map +1 -1
- package/dist/collection/components/wm-modal/wm-modal.js +463 -463
- package/dist/collection/components/wm-modal/wm-modal.js.map +1 -1
- package/dist/collection/components/wm-navigation/wm-navigation-hamburger.js +177 -177
- package/dist/collection/components/wm-navigation/wm-navigation-hamburger.js.map +1 -1
- package/dist/collection/components/wm-navigation/wm-navigation-item.js +131 -131
- package/dist/collection/components/wm-navigation/wm-navigation-item.js.map +1 -1
- package/dist/collection/components/wm-navigation/wm-navigation.js +218 -223
- package/dist/collection/components/wm-navigation/wm-navigation.js.map +1 -1
- package/dist/collection/components/wm-navigator/priv-navigator-button/priv-navigator-button.js +107 -107
- package/dist/collection/components/wm-navigator/priv-navigator-button/priv-navigator-button.js.map +1 -1
- package/dist/collection/components/wm-navigator/priv-navigator-item/priv-navigator-item.js +124 -124
- package/dist/collection/components/wm-navigator/priv-navigator-item/priv-navigator-item.js.map +1 -1
- package/dist/collection/components/wm-navigator/wm-navigator.js +468 -468
- package/dist/collection/components/wm-navigator/wm-navigator.js.map +1 -1
- package/dist/collection/components/wm-option/wm-option.js +436 -436
- package/dist/collection/components/wm-option/wm-option.js.map +1 -1
- package/dist/collection/components/wm-pagination/wm-pagination.js +371 -371
- package/dist/collection/components/wm-pagination/wm-pagination.js.map +1 -1
- package/dist/collection/components/wm-search/wm-search.css +5 -3
- package/dist/collection/components/wm-search/wm-search.js +440 -447
- package/dist/collection/components/wm-search/wm-search.js.map +1 -1
- package/dist/collection/components/wm-select/wm-select.css +4 -4
- package/dist/collection/components/wm-select/wm-select.js +1055 -1058
- package/dist/collection/components/wm-select/wm-select.js.map +1 -1
- package/dist/collection/components/wm-snackbar/wm-snackbar.js +283 -287
- package/dist/collection/components/wm-snackbar/wm-snackbar.js.map +1 -1
- package/dist/collection/components/wm-tabs/wm-tab-item/wm-tab-item.js +212 -212
- package/dist/collection/components/wm-tabs/wm-tab-item/wm-tab-item.js.map +1 -1
- package/dist/collection/components/wm-tabs/wm-tab-list/wm-tab-list.js +328 -328
- package/dist/collection/components/wm-tabs/wm-tab-list/wm-tab-list.js.map +1 -1
- package/dist/collection/components/wm-tabs/wm-tab-panel/wm-tab-panel.js +109 -109
- package/dist/collection/components/wm-tabs/wm-tab-panel/wm-tab-panel.js.map +1 -1
- package/dist/collection/components/wm-tag-input/wm-tag-input-row/wm-tag-input-row.js +123 -123
- package/dist/collection/components/wm-tag-input/wm-tag-input-row/wm-tag-input-row.js.map +1 -1
- package/dist/collection/components/wm-tag-input/wm-tag-input.css +4 -4
- package/dist/collection/components/wm-tag-input/wm-tag-input.js +1267 -1279
- package/dist/collection/components/wm-tag-input/wm-tag-input.js.map +1 -1
- package/dist/collection/components/wm-timepicker/wm-timepicker.css +4 -4
- package/dist/collection/components/wm-timepicker/wm-timepicker.js +606 -606
- package/dist/collection/components/wm-timepicker/wm-timepicker.js.map +1 -1
- package/dist/collection/components/wm-toggletip/wm-toggletip.js +254 -254
- package/dist/collection/components/wm-toggletip/wm-toggletip.js.map +1 -1
- package/dist/collection/components/wm-uploader/wm-network-uploader/wm-network-uploader.js +773 -775
- package/dist/collection/components/wm-uploader/wm-network-uploader/wm-network-uploader.js.map +1 -1
- package/dist/collection/components/wm-uploader/wm-uploader.js +965 -1034
- package/dist/collection/components/wm-uploader/wm-uploader.js.map +1 -1
- package/dist/collection/components/wm-wrapper/wm-wrapper.js +29 -29
- package/dist/collection/components/wm-wrapper/wm-wrapper.js.map +1 -1
- package/dist/collection/dev/scripts.js +20 -20
- package/dist/collection/global/__mocks__/functions.js +7 -7
- package/dist/collection/global/__mocks__/functions.js.map +1 -1
- package/dist/collection/global/functions.js +521 -521
- package/dist/collection/global/functions.js.map +1 -1
- package/dist/collection/global/global.js +70 -70
- package/dist/collection/global/global.js.map +1 -1
- package/dist/collection/global/interfaces.js +50 -50
- package/dist/collection/global/interfaces.js.map +1 -1
- package/dist/collection/global/intl.js +133 -7
- package/dist/collection/global/intl.js.map +1 -1
- package/dist/collection/global/services/__mocks__/http-service.js +131 -131
- package/dist/collection/global/services/__mocks__/http-service.js.map +1 -1
- package/dist/collection/global/services/http-service.js +51 -51
- package/dist/collection/global/services/http-service.js.map +1 -1
- package/dist/collection/lang/lang.js +6 -6
- package/dist/collection/lang/lang.js.map +1 -1
- package/dist/collection/lang/missing.js +43 -43
- package/dist/collection/lang/piglatin.js +93 -93
- package/dist/esm/{chartFunctions-1df8043a.js → chartFunctions-a72f5835.js} +591 -591
- package/dist/esm/chartFunctions-a72f5835.js.map +1 -0
- package/dist/esm/{functions-bb1309d0.js → functions-dc9964aa.js} +478 -478
- package/dist/esm/{functions-bb1309d0.js.map → functions-dc9964aa.js.map} +1 -1
- package/dist/esm/{global-2c5c2727.js → global-3d0ef32b.js} +63 -63
- package/dist/esm/global-3d0ef32b.js.map +1 -0
- package/dist/esm/{http-service-3dc3b3e7.js → http-service-5d037e16.js} +50 -50
- package/dist/esm/http-service-5d037e16.js.map +1 -0
- package/dist/esm/{interfaces-2b97fab2.js → interfaces-61c6305b.js} +30 -30
- package/dist/esm/interfaces-61c6305b.js.map +1 -0
- package/dist/esm/intl-4d4826dd.js +137 -0
- package/dist/esm/intl-4d4826dd.js.map +1 -0
- package/dist/esm/loader.js +2 -2
- package/dist/esm/polyfills/core-js.js +0 -0
- 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 +91 -91
- package/dist/esm/priv-chart-popover.entry.js.map +1 -1
- package/dist/esm/priv-datepicker.entry.js +657 -657
- package/dist/esm/priv-datepicker.entry.js.map +1 -1
- package/dist/esm/priv-navigator-button.entry.js +19 -19
- package/dist/esm/priv-navigator-button.entry.js.map +1 -1
- package/dist/esm/priv-navigator-item.entry.js +23 -23
- package/dist/esm/priv-navigator-item.entry.js.map +1 -1
- package/dist/esm/ripple.js +2 -2
- package/dist/esm/wm-action-menu_2.entry.js +334 -334
- package/dist/esm/wm-action-menu_2.entry.js.map +1 -1
- package/dist/esm/wm-button.entry.js +260 -260
- package/dist/esm/wm-button.entry.js.map +1 -1
- package/dist/esm/wm-chart-slice.entry.js +18 -18
- package/dist/esm/wm-chart-slice.entry.js.map +1 -1
- package/dist/esm/wm-chart.entry.js +179 -179
- package/dist/esm/wm-chart.entry.js.map +1 -1
- package/dist/esm/wm-datepicker.entry.js +264 -264
- package/dist/esm/wm-datepicker.entry.js.map +1 -1
- package/dist/esm/wm-file-list.entry.js +35 -35
- package/dist/esm/wm-file-list.entry.js.map +1 -1
- package/dist/esm/wm-file.entry.js +201 -201
- package/dist/esm/wm-file.entry.js.map +1 -1
- package/dist/esm/wm-input.entry.js +124 -140
- package/dist/esm/wm-input.entry.js.map +1 -1
- package/dist/esm/wm-modal-footer.entry.js +33 -33
- package/dist/esm/wm-modal-footer.entry.js.map +1 -1
- package/dist/esm/wm-modal-header.entry.js +32 -32
- package/dist/esm/wm-modal-header.entry.js.map +1 -1
- package/dist/esm/wm-modal.entry.js +152 -152
- package/dist/esm/wm-modal.entry.js.map +1 -1
- package/dist/esm/wm-navigation_3.entry.js +225 -230
- package/dist/esm/wm-navigation_3.entry.js.map +1 -1
- package/dist/esm/wm-navigator.entry.js +264 -264
- package/dist/esm/wm-navigator.entry.js.map +1 -1
- package/dist/esm/wm-network-uploader.entry.js +465 -467
- package/dist/esm/wm-network-uploader.entry.js.map +1 -1
- package/dist/esm/wm-option_2.entry.js +769 -772
- package/dist/esm/wm-option_2.entry.js.map +1 -1
- package/dist/esm/wm-pagination.entry.js +179 -179
- package/dist/esm/wm-pagination.entry.js.map +1 -1
- package/dist/esm/wm-progress-indicator_3.entry.js +155 -155
- package/dist/esm/wm-progress-indicator_3.entry.js.map +1 -1
- package/dist/esm/wm-search.entry.js +185 -192
- package/dist/esm/wm-search.entry.js.map +1 -1
- package/dist/esm/wm-snackbar.entry.js +155 -159
- package/dist/esm/wm-snackbar.entry.js.map +1 -1
- package/dist/esm/wm-tab-item_3.entry.js +264 -264
- package/dist/esm/wm-tab-item_3.entry.js.map +1 -1
- package/dist/esm/wm-tag-input-row.entry.js +14 -14
- package/dist/esm/wm-tag-input-row.entry.js.map +1 -1
- package/dist/esm/wm-tag-input.entry.js +912 -924
- package/dist/esm/wm-tag-input.entry.js.map +1 -1
- package/dist/esm/wm-timepicker.entry.js +386 -386
- package/dist/esm/wm-timepicker.entry.js.map +1 -1
- package/dist/esm/wm-toggletip.entry.js +130 -130
- package/dist/esm/wm-toggletip.entry.js.map +1 -1
- package/dist/esm/wm-uploader.entry.js +441 -510
- package/dist/esm/wm-uploader.entry.js.map +1 -1
- package/dist/esm/wm-wrapper.entry.js +12 -12
- package/dist/esm/wm-wrapper.entry.js.map +1 -1
- package/dist/esm-es5/{chartFunctions-1df8043a.js → chartFunctions-a72f5835.js} +2 -2
- package/dist/esm-es5/chartFunctions-a72f5835.js.map +1 -0
- package/dist/esm-es5/{functions-bb1309d0.js → functions-dc9964aa.js} +1 -1
- package/dist/esm-es5/{functions-bb1309d0.js.map → functions-dc9964aa.js.map} +1 -1
- package/dist/esm-es5/global-3d0ef32b.js +2 -0
- package/dist/esm-es5/global-3d0ef32b.js.map +1 -0
- package/dist/esm-es5/{http-service-3dc3b3e7.js → http-service-5d037e16.js} +1 -1
- package/dist/esm-es5/http-service-5d037e16.js.map +1 -0
- package/dist/esm-es5/{interfaces-2b97fab2.js → interfaces-61c6305b.js} +1 -1
- package/dist/esm-es5/interfaces-61c6305b.js.map +1 -0
- package/dist/esm-es5/intl-4d4826dd.js +2 -0
- package/dist/esm-es5/intl-4d4826dd.js.map +1 -0
- package/dist/esm-es5/loader.js +1 -1
- package/dist/esm-es5/loader.js.map +1 -1
- package/dist/esm-es5/priv-chart-popover.entry.js +1 -1
- package/dist/esm-es5/priv-chart-popover.entry.js.map +1 -1
- package/dist/esm-es5/priv-datepicker.entry.js +1 -1
- package/dist/esm-es5/priv-datepicker.entry.js.map +1 -1
- package/dist/esm-es5/priv-navigator-button.entry.js.map +1 -1
- package/dist/esm-es5/priv-navigator-item.entry.js.map +1 -1
- package/dist/esm-es5/ripple.js +1 -1
- package/dist/esm-es5/ripple.js.map +1 -1
- package/dist/esm-es5/wm-action-menu_2.entry.js +1 -1
- package/dist/esm-es5/wm-action-menu_2.entry.js.map +1 -1
- package/dist/esm-es5/wm-button.entry.js +1 -1
- package/dist/esm-es5/wm-button.entry.js.map +1 -1
- package/dist/esm-es5/wm-chart-slice.entry.js.map +1 -1
- package/dist/esm-es5/wm-chart.entry.js +1 -1
- package/dist/esm-es5/wm-chart.entry.js.map +1 -1
- package/dist/esm-es5/wm-datepicker.entry.js +1 -1
- package/dist/esm-es5/wm-datepicker.entry.js.map +1 -1
- package/dist/esm-es5/wm-file-list.entry.js.map +1 -1
- package/dist/esm-es5/wm-file.entry.js +1 -1
- package/dist/esm-es5/wm-file.entry.js.map +1 -1
- package/dist/esm-es5/wm-input.entry.js +1 -1
- package/dist/esm-es5/wm-input.entry.js.map +1 -1
- package/dist/esm-es5/wm-modal-footer.entry.js.map +1 -1
- package/dist/esm-es5/wm-modal-header.entry.js +1 -1
- package/dist/esm-es5/wm-modal-header.entry.js.map +1 -1
- package/dist/esm-es5/wm-modal.entry.js +1 -1
- package/dist/esm-es5/wm-modal.entry.js.map +1 -1
- package/dist/esm-es5/wm-navigation_3.entry.js +1 -1
- package/dist/esm-es5/wm-navigation_3.entry.js.map +1 -1
- package/dist/esm-es5/wm-navigator.entry.js +1 -1
- package/dist/esm-es5/wm-navigator.entry.js.map +1 -1
- package/dist/esm-es5/wm-network-uploader.entry.js +1 -1
- package/dist/esm-es5/wm-network-uploader.entry.js.map +1 -1
- package/dist/esm-es5/wm-option_2.entry.js +1 -1
- package/dist/esm-es5/wm-option_2.entry.js.map +1 -1
- package/dist/esm-es5/wm-pagination.entry.js +1 -1
- package/dist/esm-es5/wm-pagination.entry.js.map +1 -1
- package/dist/esm-es5/wm-progress-indicator_3.entry.js +1 -1
- package/dist/esm-es5/wm-progress-indicator_3.entry.js.map +1 -1
- package/dist/esm-es5/wm-search.entry.js +1 -1
- package/dist/esm-es5/wm-search.entry.js.map +1 -1
- package/dist/esm-es5/wm-snackbar.entry.js +1 -1
- package/dist/esm-es5/wm-snackbar.entry.js.map +1 -1
- package/dist/esm-es5/wm-tab-item_3.entry.js +1 -1
- package/dist/esm-es5/wm-tab-item_3.entry.js.map +1 -1
- package/dist/esm-es5/wm-tag-input-row.entry.js.map +1 -1
- package/dist/esm-es5/wm-tag-input.entry.js +1 -1
- package/dist/esm-es5/wm-tag-input.entry.js.map +1 -1
- package/dist/esm-es5/wm-timepicker.entry.js +1 -1
- package/dist/esm-es5/wm-timepicker.entry.js.map +1 -1
- package/dist/esm-es5/wm-toggletip.entry.js +1 -1
- package/dist/esm-es5/wm-toggletip.entry.js.map +1 -1
- package/dist/esm-es5/wm-uploader.entry.js +1 -1
- package/dist/esm-es5/wm-uploader.entry.js.map +1 -1
- package/dist/esm-es5/wm-wrapper.entry.js.map +1 -1
- package/dist/ripple/{p-3f6c7e6c.entry.js → p-002d067e.entry.js} +2 -2
- package/dist/ripple/p-002d067e.entry.js.map +1 -0
- package/dist/ripple/p-02a1000a.entry.js +2 -0
- package/dist/ripple/p-02a1000a.entry.js.map +1 -0
- package/dist/ripple/{p-21bb563a.system.entry.js → p-04ae66fd.system.entry.js} +2 -2
- package/dist/ripple/p-04ae66fd.system.entry.js.map +1 -0
- package/dist/ripple/{p-c38f6103.system.js → p-0826dc64.system.js} +2 -2
- package/dist/ripple/{p-c38f6103.system.js.map → p-0826dc64.system.js.map} +1 -1
- package/dist/ripple/{p-f5df5903.system.js → p-08b7ec08.system.js} +1 -1
- package/dist/ripple/p-08b7ec08.system.js.map +1 -0
- package/dist/ripple/{p-d5b0809e.entry.js → p-0ad3a708.entry.js} +2 -2
- package/dist/ripple/p-0ad3a708.entry.js.map +1 -0
- package/dist/ripple/p-0cd13c7d.system.entry.js +2 -0
- package/dist/ripple/p-0cd13c7d.system.entry.js.map +1 -0
- package/dist/ripple/p-0d7bccf7.entry.js.map +1 -1
- package/dist/ripple/p-0eb7b1b7.system.entry.js +2 -0
- package/dist/ripple/p-0eb7b1b7.system.entry.js.map +1 -0
- package/dist/ripple/{p-70768add.entry.js → p-11124a23.entry.js} +2 -2
- package/dist/ripple/p-11124a23.entry.js.map +1 -0
- package/dist/ripple/p-1808b90a.entry.js +2 -0
- package/dist/ripple/p-1808b90a.entry.js.map +1 -0
- package/dist/ripple/p-1fd20e05.system.entry.js +2 -0
- package/dist/ripple/p-1fd20e05.system.entry.js.map +1 -0
- package/dist/ripple/{p-f36b1c58.system.entry.js → p-23fa1ff6.system.entry.js} +2 -2
- package/dist/ripple/p-23fa1ff6.system.entry.js.map +1 -0
- package/dist/ripple/p-24a4cb11.system.entry.js.map +1 -1
- package/dist/ripple/p-2c2a7092.system.entry.js.map +1 -1
- package/dist/ripple/{p-9d02957d.system.js → p-313b6073.system.js} +1 -1
- package/dist/ripple/p-313b6073.system.js.map +1 -0
- package/dist/ripple/p-33558ec4.system.entry.js.map +1 -1
- package/dist/ripple/{p-28c12986.system.entry.js → p-33ec18d4.system.entry.js} +2 -2
- package/dist/ripple/p-33ec18d4.system.entry.js.map +1 -0
- package/dist/ripple/{p-7d0f3abe.entry.js → p-341aa131.entry.js} +2 -2
- package/dist/ripple/p-341aa131.entry.js.map +1 -0
- package/dist/ripple/p-3759b7af.system.entry.js.map +1 -1
- package/dist/ripple/p-38449dff.system.entry.js +2 -0
- package/dist/ripple/p-38449dff.system.entry.js.map +1 -0
- package/dist/ripple/{p-ee97c3f6.entry.js → p-384c4981.entry.js} +2 -2
- package/dist/ripple/p-384c4981.entry.js.map +1 -0
- package/dist/ripple/{p-b81ce905.system.entry.js → p-3869a69e.system.entry.js} +2 -2
- package/dist/ripple/p-3869a69e.system.entry.js.map +1 -0
- package/dist/ripple/p-4391166c.entry.js.map +1 -1
- package/dist/ripple/{p-e6e7cb2d.entry.js → p-43be123d.entry.js} +2 -2
- package/dist/ripple/p-43be123d.entry.js.map +1 -0
- package/dist/ripple/p-4a014591.entry.js.map +1 -1
- package/dist/ripple/p-4a06d0a9.system.entry.js +2 -0
- package/dist/ripple/p-4a06d0a9.system.entry.js.map +1 -0
- package/dist/ripple/p-4e02e2ae.entry.js +2 -0
- package/dist/ripple/p-4e02e2ae.entry.js.map +1 -0
- package/dist/ripple/p-56cd4d5e.entry.js +2 -0
- package/dist/ripple/p-56cd4d5e.entry.js.map +1 -0
- package/dist/ripple/p-59654f8e.entry.js.map +1 -1
- package/dist/ripple/p-5cc287d2.entry.js +2 -0
- package/dist/ripple/p-5cc287d2.entry.js.map +1 -0
- package/dist/ripple/{p-8eebf787.entry.js → p-7e0e6b00.entry.js} +2 -2
- package/dist/ripple/p-7e0e6b00.entry.js.map +1 -0
- package/dist/ripple/{p-0400599e.system.entry.js → p-833c622f.system.entry.js} +2 -2
- package/dist/ripple/p-833c622f.system.entry.js.map +1 -0
- package/dist/ripple/{p-b00991d9.system.entry.js → p-8613600d.system.entry.js} +2 -2
- package/dist/ripple/p-8613600d.system.entry.js.map +1 -0
- package/dist/ripple/{p-43f1298b.js → p-888bec42.js} +1 -1
- package/dist/ripple/p-888bec42.js.map +1 -0
- package/dist/ripple/p-889579fc.entry.js +2 -0
- package/dist/ripple/p-889579fc.entry.js.map +1 -0
- package/dist/ripple/p-8c51e9f8.system.entry.js.map +1 -1
- package/dist/ripple/{p-42158d44.entry.js → p-8db604d2.entry.js} +2 -2
- package/dist/ripple/p-8db604d2.entry.js.map +1 -0
- package/dist/ripple/{p-24ef6556.system.entry.js → p-91deb45f.system.entry.js} +2 -2
- package/dist/ripple/p-91deb45f.system.entry.js.map +1 -0
- package/dist/ripple/p-9338011f.system.entry.js +2 -0
- package/dist/ripple/p-9338011f.system.entry.js.map +1 -0
- package/dist/ripple/p-976b2789.system.entry.js.map +1 -1
- package/dist/ripple/{p-1aa16d42.js → p-994303f2.js} +2 -2
- package/dist/ripple/p-994303f2.js.map +1 -0
- package/dist/ripple/p-9b2dfb54.js +2 -0
- package/dist/ripple/p-9b2dfb54.js.map +1 -0
- package/dist/ripple/p-9b9eb944.entry.js.map +1 -1
- package/dist/ripple/{p-980afed1.system.entry.js → p-a6d64d8a.system.entry.js} +2 -2
- package/dist/ripple/p-a6d64d8a.system.entry.js.map +1 -0
- package/dist/ripple/{p-fd8070fb.js → p-a6d6eae7.js} +1 -1
- package/dist/ripple/p-a6d6eae7.js.map +1 -0
- package/dist/ripple/{p-219fbe2b.system.entry.js → p-a73cf968.system.entry.js} +2 -2
- package/dist/ripple/p-a73cf968.system.entry.js.map +1 -0
- package/dist/ripple/{p-76aafb99.system.entry.js → p-aed625c1.system.entry.js} +2 -2
- package/dist/ripple/p-aed625c1.system.entry.js.map +1 -0
- package/dist/ripple/{p-0d36ceba.system.entry.js → p-b5b521e4.system.entry.js} +2 -2
- package/dist/ripple/p-b5b521e4.system.entry.js.map +1 -0
- package/dist/ripple/{p-47d223f1.system.entry.js → p-b7451e73.system.entry.js} +2 -2
- package/dist/ripple/p-b7451e73.system.entry.js.map +1 -0
- package/dist/ripple/p-bafdcb4e.system.entry.js +2 -0
- package/dist/ripple/p-bafdcb4e.system.entry.js.map +1 -0
- package/dist/ripple/{p-262713b9.entry.js → p-bb45e122.entry.js} +2 -2
- package/dist/ripple/p-bb45e122.entry.js.map +1 -0
- package/dist/ripple/p-bd84628c.system.entry.js +2 -0
- package/dist/ripple/p-bd84628c.system.entry.js.map +1 -0
- package/dist/ripple/p-bf569af0.entry.js.map +1 -1
- package/dist/ripple/p-c094f6a8.entry.js +2 -0
- package/dist/ripple/p-c094f6a8.entry.js.map +1 -0
- package/dist/ripple/p-c36002b6.system.js +2 -0
- package/dist/ripple/p-c36002b6.system.js.map +1 -0
- package/dist/ripple/p-c5bf7db8.entry.js +2 -0
- package/dist/ripple/p-c5bf7db8.entry.js.map +1 -0
- package/dist/ripple/p-c68b3798.system.js +2 -0
- package/dist/ripple/p-c68b3798.system.js.map +1 -0
- package/dist/ripple/{p-05e0f901.js → p-c6a0f7e5.js} +1 -1
- package/dist/ripple/{p-05e0f901.js.map → p-c6a0f7e5.js.map} +1 -1
- package/dist/ripple/{p-bcba3ce8.entry.js → p-d46f5794.entry.js} +2 -2
- package/dist/ripple/p-d46f5794.entry.js.map +1 -0
- package/dist/ripple/{p-d7ffac2f.entry.js → p-d48313e0.entry.js} +2 -2
- package/dist/ripple/p-d48313e0.entry.js.map +1 -0
- package/dist/ripple/p-d939cb54.entry.js.map +1 -1
- package/dist/ripple/p-dbfd1640.system.entry.js.map +1 -1
- package/dist/ripple/{p-d7c55ce1.entry.js → p-e22854c1.entry.js} +2 -2
- package/dist/ripple/p-e22854c1.entry.js.map +1 -0
- package/dist/ripple/p-e70bb79f.js +2 -0
- package/dist/ripple/p-e70bb79f.js.map +1 -0
- package/dist/ripple/{p-e99a7f36.entry.js → p-ed82573a.entry.js} +2 -2
- package/dist/ripple/p-ed82573a.entry.js.map +1 -0
- package/dist/ripple/{p-bc28c815.system.js → p-f0fd8695.system.js} +1 -1
- package/dist/ripple/{p-bc28c815.system.js.map → p-f0fd8695.system.js.map} +1 -1
- package/dist/ripple/{p-e5f84104.system.entry.js → p-f312d59a.system.entry.js} +2 -2
- package/dist/ripple/p-f312d59a.system.entry.js.map +1 -0
- package/dist/ripple/{p-c19ddc00.system.entry.js → p-f59a495a.system.entry.js} +2 -2
- package/dist/ripple/p-f59a495a.system.entry.js.map +1 -0
- package/dist/ripple/{p-cc8ca6bd.system.js → p-f80eb8a5.system.js} +2 -2
- package/dist/ripple/p-f80eb8a5.system.js.map +1 -0
- package/dist/ripple/{p-1be55579.system.entry.js → p-fb67c39e.system.entry.js} +2 -2
- package/dist/ripple/p-fb67c39e.system.entry.js.map +1 -0
- package/dist/ripple/{p-20d0d019.entry.js → p-fc08d5e1.entry.js} +2 -2
- package/dist/ripple/p-fc08d5e1.entry.js.map +1 -0
- package/dist/ripple/{p-d7b946ed.entry.js → p-fe7da854.entry.js} +2 -2
- package/dist/ripple/p-fe7da854.entry.js.map +1 -0
- package/dist/ripple/ripple.esm.js +1 -1
- package/dist/ripple/ripple.esm.js.map +1 -1
- package/dist/ripple/ripple.js +1 -1
- package/dist/types/components/charts/chartFunctions.d.ts +37 -37
- 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 +47 -0
- package/dist/types/components/charts/wm-progress-monitor/wm-progress-indicator.d.ts +29 -0
- package/dist/types/components/charts/wm-progress-monitor/wm-progress-monitor.d.ts +20 -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 +49 -0
- package/dist/types/components/wm-button/wm-button.d.ts +49 -0
- package/dist/types/components/wm-datepicker/priv-datepicker/priv-datepicker.d.ts +80 -0
- package/dist/types/components/wm-datepicker/wm-datepicker.d.ts +42 -0
- package/dist/types/components/wm-file/wm-file.d.ts +42 -0
- package/dist/types/components/wm-file-list/wm-file-list.d.ts +16 -0
- package/dist/types/components/wm-input/wm-input.d.ts +45 -0
- package/dist/types/components/wm-menuitem/wm-menuitem.d.ts +34 -0
- package/dist/types/components/wm-modal/wm-modal-footer.d.ts +14 -14
- package/dist/types/components/wm-modal/wm-modal-header.d.ts +10 -10
- package/dist/types/components/wm-modal/wm-modal.d.ts +40 -0
- package/dist/types/components/wm-navigation/wm-navigation-hamburger.d.ts +21 -0
- package/dist/types/components/wm-navigation/wm-navigation-item.d.ts +13 -0
- package/dist/types/components/wm-navigation/wm-navigation.d.ts +26 -0
- 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 -0
- package/dist/types/components/wm-navigator/wm-navigator.d.ts +61 -0
- package/dist/types/components/wm-option/wm-option.d.ts +34 -0
- package/dist/types/components/wm-pagination/wm-pagination.d.ts +32 -32
- package/dist/types/components/wm-search/wm-search.d.ts +77 -0
- package/dist/types/components/wm-select/wm-select.d.ts +101 -0
- package/dist/types/components/wm-snackbar/wm-snackbar.d.ts +31 -32
- package/dist/types/components/wm-tabs/wm-tab-item/wm-tab-item.d.ts +37 -0
- package/dist/types/components/wm-tabs/wm-tab-list/wm-tab-list.d.ts +52 -0
- package/dist/types/components/wm-tabs/wm-tab-panel/wm-tab-panel.d.ts +20 -0
- package/dist/types/components/wm-tag-input/wm-tag-input-row/wm-tag-input-row.d.ts +11 -0
- package/dist/types/components/wm-tag-input/wm-tag-input.d.ts +135 -0
- package/dist/types/components/wm-timepicker/wm-timepicker.d.ts +62 -0
- package/dist/types/components/wm-toggletip/wm-toggletip.d.ts +28 -0
- package/dist/types/components/wm-uploader/wm-network-uploader/wm-network-uploader.d.ts +85 -0
- package/dist/types/components/wm-uploader/wm-uploader.d.ts +99 -0
- package/dist/types/components/wm-wrapper/wm-wrapper.d.ts +7 -7
- package/dist/types/components.d.ts +27 -27
- package/dist/types/global/__mocks__/functions.d.ts +6 -6
- package/dist/types/global/functions.d.ts +48 -48
- package/dist/types/global/global.d.ts +1 -1
- package/dist/types/global/interfaces.d.ts +74 -74
- package/dist/types/global/intl.d.ts +29 -1
- 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/package.json +46 -46
- package/dist/cjs/chartFunctions-9dce0ea3.js.map +0 -1
- package/dist/cjs/global-c22b1249.js.map +0 -1
- package/dist/cjs/http-service-494d81de.js.map +0 -1
- package/dist/cjs/interfaces-a3338581.js.map +0 -1
- package/dist/cjs/intl-e14dc0a1.js +0 -13
- package/dist/cjs/intl-e14dc0a1.js.map +0 -1
- package/dist/esm/chartFunctions-1df8043a.js.map +0 -1
- package/dist/esm/global-2c5c2727.js.map +0 -1
- package/dist/esm/http-service-3dc3b3e7.js.map +0 -1
- package/dist/esm/interfaces-2b97fab2.js.map +0 -1
- package/dist/esm/intl-4153b9ef.js +0 -11
- package/dist/esm/intl-4153b9ef.js.map +0 -1
- package/dist/esm-es5/chartFunctions-1df8043a.js.map +0 -1
- package/dist/esm-es5/global-2c5c2727.js +0 -2
- package/dist/esm-es5/global-2c5c2727.js.map +0 -1
- package/dist/esm-es5/http-service-3dc3b3e7.js.map +0 -1
- package/dist/esm-es5/interfaces-2b97fab2.js.map +0 -1
- package/dist/esm-es5/intl-4153b9ef.js +0 -2
- package/dist/esm-es5/intl-4153b9ef.js.map +0 -1
- package/dist/ripple/p-0400599e.system.entry.js.map +0 -1
- package/dist/ripple/p-075607ac.entry.js +0 -2
- package/dist/ripple/p-075607ac.entry.js.map +0 -1
- package/dist/ripple/p-08d17d5a.entry.js +0 -2
- package/dist/ripple/p-08d17d5a.entry.js.map +0 -1
- package/dist/ripple/p-0d36ceba.system.entry.js.map +0 -1
- package/dist/ripple/p-124da634.entry.js +0 -2
- package/dist/ripple/p-124da634.entry.js.map +0 -1
- package/dist/ripple/p-1aa16d42.js.map +0 -1
- package/dist/ripple/p-1be55579.system.entry.js.map +0 -1
- package/dist/ripple/p-20d0d019.entry.js.map +0 -1
- package/dist/ripple/p-219fbe2b.system.entry.js.map +0 -1
- package/dist/ripple/p-21bb563a.system.entry.js.map +0 -1
- package/dist/ripple/p-241d4d41.system.entry.js +0 -2
- package/dist/ripple/p-241d4d41.system.entry.js.map +0 -1
- package/dist/ripple/p-24ef6556.system.entry.js.map +0 -1
- package/dist/ripple/p-262713b9.entry.js.map +0 -1
- package/dist/ripple/p-28c12986.system.entry.js.map +0 -1
- package/dist/ripple/p-3f6c7e6c.entry.js.map +0 -1
- package/dist/ripple/p-42158d44.entry.js.map +0 -1
- package/dist/ripple/p-43f1298b.js.map +0 -1
- package/dist/ripple/p-47d223f1.system.entry.js.map +0 -1
- package/dist/ripple/p-4d30004f.entry.js +0 -2
- package/dist/ripple/p-4d30004f.entry.js.map +0 -1
- package/dist/ripple/p-58b1415e.system.js +0 -2
- package/dist/ripple/p-58b1415e.system.js.map +0 -1
- package/dist/ripple/p-5cda4e9c.system.entry.js +0 -2
- package/dist/ripple/p-5cda4e9c.system.entry.js.map +0 -1
- package/dist/ripple/p-64f15a9e.system.entry.js +0 -2
- package/dist/ripple/p-64f15a9e.system.entry.js.map +0 -1
- package/dist/ripple/p-6e6b5b2c.system.entry.js +0 -2
- package/dist/ripple/p-6e6b5b2c.system.entry.js.map +0 -1
- package/dist/ripple/p-70768add.entry.js.map +0 -1
- package/dist/ripple/p-76aafb99.system.entry.js.map +0 -1
- package/dist/ripple/p-7d0f3abe.entry.js.map +0 -1
- package/dist/ripple/p-8aa85021.system.entry.js +0 -2
- package/dist/ripple/p-8aa85021.system.entry.js.map +0 -1
- package/dist/ripple/p-8eebf787.entry.js.map +0 -1
- package/dist/ripple/p-96b0ca93.system.js +0 -2
- package/dist/ripple/p-96b0ca93.system.js.map +0 -1
- package/dist/ripple/p-980afed1.system.entry.js.map +0 -1
- package/dist/ripple/p-9d02957d.system.js.map +0 -1
- package/dist/ripple/p-adbeb6a8.system.entry.js +0 -2
- package/dist/ripple/p-adbeb6a8.system.entry.js.map +0 -1
- package/dist/ripple/p-b00991d9.system.entry.js.map +0 -1
- package/dist/ripple/p-b81ce905.system.entry.js.map +0 -1
- package/dist/ripple/p-bcba3ce8.entry.js.map +0 -1
- package/dist/ripple/p-bf808ec4.entry.js +0 -2
- package/dist/ripple/p-bf808ec4.entry.js.map +0 -1
- package/dist/ripple/p-c19ddc00.system.entry.js.map +0 -1
- package/dist/ripple/p-cc8ca6bd.system.js.map +0 -1
- package/dist/ripple/p-ce52357e.js +0 -2
- package/dist/ripple/p-ce52357e.js.map +0 -1
- package/dist/ripple/p-d0f5773a.entry.js +0 -2
- package/dist/ripple/p-d0f5773a.entry.js.map +0 -1
- package/dist/ripple/p-d5b0809e.entry.js.map +0 -1
- package/dist/ripple/p-d7b946ed.entry.js.map +0 -1
- package/dist/ripple/p-d7c55ce1.entry.js.map +0 -1
- package/dist/ripple/p-d7ffac2f.entry.js.map +0 -1
- package/dist/ripple/p-dbf657c5.js +0 -2
- package/dist/ripple/p-dbf657c5.js.map +0 -1
- package/dist/ripple/p-e1b812ed.entry.js +0 -2
- package/dist/ripple/p-e1b812ed.entry.js.map +0 -1
- package/dist/ripple/p-e5f84104.system.entry.js.map +0 -1
- package/dist/ripple/p-e6e7cb2d.entry.js.map +0 -1
- package/dist/ripple/p-e99a7f36.entry.js.map +0 -1
- package/dist/ripple/p-ed14d37c.system.entry.js +0 -2
- package/dist/ripple/p-ed14d37c.system.entry.js.map +0 -1
- package/dist/ripple/p-ee97c3f6.entry.js.map +0 -1
- package/dist/ripple/p-f3130941.entry.js +0 -2
- package/dist/ripple/p-f3130941.entry.js.map +0 -1
- package/dist/ripple/p-f36b1c58.system.entry.js.map +0 -1
- package/dist/ripple/p-f4a622a9.system.entry.js +0 -2
- package/dist/ripple/p-f4a622a9.system.entry.js.map +0 -1
- package/dist/ripple/p-f5df5903.system.js.map +0 -1
- package/dist/ripple/p-fd8070fb.js.map +0 -1
package/dist/collection/components/wm-uploader/wm-network-uploader/wm-network-uploader.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wm-network-uploader.js","sourceRoot":"","sources":["../../../../../src/components/wm-uploader/wm-network-uploader/wm-network-uploader.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Element, h, Host, Prop, State, Listen, Watch, Event, EventEmitter } from \"@stencil/core\";\r\nimport { forceUpdate } from \"@stencil/core\";\r\nimport { getRequest, postRequest, putRequest, deleteRequest } from \"../../../global/services/http-service\";\r\nimport { intl, generateId, hasValidType } from \"../../../global/functions\";\r\n//\r\n// Web API File interface => for FileList on input element, sending to AWS\r\n// Custom FileInfo interface (below) => for our server\r\nexport interface FileInfo {\r\n file_name: string;\r\n file_path?: string;\r\n mime_type: string;\r\n updated_at?: string;\r\n\r\n uuid?: string; // AWS guid\r\n document_uuid?: string; // aka file uuid. how is that different from the uuid above?\r\n // organization_uuid: string; // aka node uuid\r\n}\r\n\r\ninterface FileInProgress extends File {\r\n progress?: number;\r\n}\r\n\r\ninterface ErrorInfo {\r\n file_name: string;\r\n message: string;\r\n}\r\n\r\ninterface AWSData {\r\n url: string;\r\n updated_at: string;\r\n path: string;\r\n guid: string;\r\n}\r\n\r\ninterface Notification {\r\n message: string;\r\n id: string;\r\n link: string;\r\n}\r\n\r\n@Component({\r\n tag: \"wm-network-uploader\",\r\n styleUrl: \"wm-network-uploader.scss\",\r\n shadow: true,\r\n})\r\nexport class NetworkUploader {\r\n @Element() el!: HTMLWmNetworkUploaderElement;\r\n private liveRegion?: HTMLDivElement;\r\n\r\n @State() isTabbing: boolean = false;\r\n\r\n @State() fileList: FileInfo[] = [];\r\n @State() inProgressList: FileInProgress[] = [];\r\n @State() errorList: ErrorInfo[] = []; // for errors on a particular file\r\n @State() notif?: { id: number; message: string } | null; // for global errors, e.g. user tries uploading too many files, and upload notifications\r\n @State() snackbar: Notification[] = [];\r\n @State() numFilesInProgress?: number | null; // null when not uploading != 0 (when all files are done uploading) != undefined (original state)\r\n private srProgress?: any; // setInterval for SR to announce the aggregate progress percentage when things take a long time. stored here so it can be stopped when upload is finished.\r\n\r\n @Prop() getPath!: string;\r\n @Prop() requestUploadPath!: string;\r\n @Prop() uploadPath!: string; // used for POST request (create db entry)\r\n @Prop() requestDownloadPath!: string;\r\n @Prop() deletePath!: string;\r\n\r\n @Prop() associatedData?: string;\r\n @Prop() buttonText!: string;\r\n @Prop() emptyStateText!: string;\r\n @Prop() icon!: string;\r\n @Prop() fileTypes: string = \"pdf txt log xml doc docx xls xlsx ppt pptx gif jpg jpeg png csv\";\r\n @Prop({ mutable: true }) maxSize: number = 100; // in Mb\r\n @Prop() maxFiles?: number;\r\n @Prop() sortBy: \"name\" | \"date\" = \"date\"; // name is descending (a -> z), date is ascending (earlier -> later)\r\n\r\n @Event() wmNetworkUploaderFilesChanged!: EventEmitter<Object[]>;\r\n\r\n private inputId = generateId();\r\n\r\n @Listen(\"wmUserIsTabbing\", { target: \"window\" })\r\n toggleTabbingOn() {\r\n this.isTabbing = true;\r\n }\r\n\r\n @Listen(\"wmUserIsNotTabbing\", { target: \"window\" })\r\n toggleTabbingOff() {\r\n this.isTabbing = false;\r\n }\r\n\r\n @Listen(\"wmUploadProgress\")\r\n handleUploadProgress(ev: CustomEvent) {\r\n this.inProgressList.map((i) => {\r\n if (i.name === ev.detail.file_name) {\r\n i.progress = ev.detail.progress;\r\n forceUpdate(this.el);\r\n }\r\n });\r\n\r\n if (ev.detail.progress === 100) {\r\n // inProgressList is not a perfect reflection of how many files are uploading\r\n // because even after progress reached 100% the item should remain in the array\r\n // (should only be removed once it appears in fileList)\r\n this.numFilesInProgress! -= 1;\r\n }\r\n\r\n // aggregate the percentages for SR to announce progress\r\n if (!this.srProgress && this.numFilesInProgress) {\r\n const total = this.numFilesInProgress; // if we don't reassign this number changes when a file is done and the percentage becomes wrong\r\n this.srProgress = setInterval(() => {\r\n const aggregate = this.inProgressList.reduce((avg, item) => (item.progress ? avg + item.progress : avg), 0);\r\n if (this.liveRegion) {\r\n this.liveRegion.innerHTML = intl.formatMessage(\r\n {\r\n id: \"uploader.uploadProgress\",\r\n defaultMessage: \"Upload progress: {percentage}%\",\r\n },\r\n { percentage: Math.floor(aggregate / total) }\r\n );\r\n }\r\n }, 5000);\r\n }\r\n }\r\n\r\n @Listen(\"userFinishedSnack\")\r\n handleFinishedSnack(ev: CustomEvent) {\r\n this.snackbar = this.snackbar.filter((n) => n.id !== ev.detail.id);\r\n }\r\n\r\n @Watch(\"maxSize\")\r\n setMaxSize() {\r\n // Max size can't be set above 100Mb\r\n this.maxSize = this.maxSize > 100 ? 100 : this.maxSize;\r\n }\r\n\r\n @Watch(\"numFilesInProgress\")\r\n uploadNotifications(newNum: number, oldNum: number) {\r\n if (oldNum > 0 && newNum === 0) {\r\n setTimeout(() => {\r\n this.notif = null;\r\n }, 20 * 1000);\r\n const message = intl.formatMessage({\r\n id: \"uploader.finishedUploading\",\r\n defaultMessage: \"Finished uploading\",\r\n });\r\n this.notif = { id: 5, message };\r\n if (this.liveRegion) {\r\n this.liveRegion.innerHTML = message;\r\n }\r\n this.numFilesInProgress = null;\r\n clearInterval(this.srProgress);\r\n forceUpdate(this.el);\r\n } else if (newNum > 0 && newNum != oldNum) {\r\n const message = intl.formatMessage(\r\n {\r\n id: \"uploader.filesUploading\",\r\n defaultMessage: \"{num, plural, one {1 file uploading} other {# files uploading}}\",\r\n },\r\n { num: newNum }\r\n );\r\n this.notif = { id: 6, message };\r\n if (this.liveRegion) {\r\n this.liveRegion.innerHTML = message;\r\n }\r\n forceUpdate(this.el);\r\n }\r\n }\r\n\r\n @Watch(\"fileList\")\r\n emitFileListEvent() {\r\n this.wmNetworkUploaderFilesChanged.emit(this.fileList);\r\n }\r\n\r\n formatDate(isoDate: string, locale: string, timezone: string) {\r\n const timestamp = Date.parse(isoDate);\r\n if (locale.match(/^[a-zA-Z]*(-[a-zA-Z0-9]*)*$/g)) {\r\n // make sure locale is valid, otherwise set default locale\r\n try {\r\n //@ts-ignore\r\n Intl.getCanonicalLocales(locale);\r\n } catch {\r\n locale = \"en-us\";\r\n }\r\n } else {\r\n return isoDate;\r\n }\r\n\r\n if (!!timestamp) {\r\n const date = new Date(timestamp);\r\n const year = date.getFullYear();\r\n const month = (\"0\" + (date.getMonth() + 1)).substr(-2);\r\n const day = (\"0\" + date.getDate()).substr(-2);\r\n const time = date.toLocaleTimeString([locale, \"en-us\"], {\r\n timeZone: timezone,\r\n hour: \"numeric\",\r\n minute: \"numeric\",\r\n });\r\n return `${year}/${month}/${day} ${time}`;\r\n } else {\r\n return isoDate;\r\n }\r\n }\r\n\r\n isValidSize(size: number) {\r\n // https://stackoverflow.com/questions/2365100/converting-bytes-to-megabytes\r\n return size / 1024 / 1024 <= this.maxSize;\r\n }\r\n\r\n isDuplicate(name: string) {\r\n return this.fileList.find((f) => f.file_name === name);\r\n }\r\n\r\n isEmpty() {\r\n return !this.fileList.length && !this.inProgressList.length && !this.errorList.length;\r\n }\r\n\r\n get isDisabled() {\r\n const isMax = !!this.maxFiles && this.fileList.length >= this.maxFiles;\r\n\r\n if (!this.notif) {\r\n if (isMax) {\r\n const errMessage = intl.formatMessage({\r\n id: \"uploader.fileUploadLimitExceeded\",\r\n defaultMessage: \"Upload unsuccessful because file selection would exceed the maximum number of files\",\r\n description: \"Message displayed when trying to upload too many files\",\r\n });\r\n this.notif = { id: 1, message: errMessage };\r\n if (this.liveRegion) {\r\n this.liveRegion.innerHTML = errMessage;\r\n }\r\n } else {\r\n this.notif = null;\r\n }\r\n } else if (this.notif.id === 1) {\r\n // to make sure SR don't repeat the error, don't reset it if it already is showing\r\n // just dismiss it if isMax is not true anymore\r\n if (!isMax) {\r\n this.notif = null;\r\n }\r\n // finally do nothing if error 2 is showing (special case when user selects too many files)\r\n }\r\n // disable if is the uploader is maxed out or if something is uploading\r\n return isMax || this.numFilesInProgress! > 0;\r\n }\r\n\r\n purgeProgressList(item: FileInfo) {\r\n // If a file is retrieved from the server because it was just uploaded\r\n // it should be removed from inProgressList\r\n this.inProgressList = this.inProgressList.filter((i) => i.progress !== 100 && i.name !== item.file_name);\r\n }\r\n\r\n getExistingFiles() {\r\n getRequest(this.getPath)\r\n .then((reply: FileInfo[]) => {\r\n reply.map((item) => this.purgeProgressList(item));\r\n if (this.sortBy === \"name\") {\r\n reply.sort((a, b) => a.file_name.localeCompare(b.file_name));\r\n }\r\n this.fileList = reply;\r\n })\r\n .catch((errStatus) => {\r\n console.error(errStatus);\r\n });\r\n }\r\n\r\n clearErrors() {\r\n this.errorList = [];\r\n this.notif = null;\r\n }\r\n\r\n handleFiles(ev: Event) {\r\n const files = Array.from((ev.target! as HTMLInputElement).files!);\r\n const validTypes = this.fileTypes.split(\" \").join(\", \");\r\n\r\n if (!!this.maxFiles && this.fileList.length + files.length > this.maxFiles) {\r\n const errMessage = intl.formatMessage({\r\n id: \"uploader.fileUploadLimitExceeded\",\r\n defaultMessage: \"Upload unsuccessful because file selection would exceed the maximum number of files\",\r\n description: \"Message displayed when trying to upload too many files\",\r\n });\r\n this.notif = { id: 2, message: errMessage };\r\n if (this.liveRegion) {\r\n this.liveRegion.innerHTML = errMessage;\r\n }\r\n } else {\r\n // map to create inProgress items so they can be displayed immediately\r\n files &&\r\n files.map((file) => {\r\n if (!hasValidType(file, this.fileTypes)) {\r\n const error = {\r\n file_name: file.name,\r\n message: intl.formatMessage(\r\n {\r\n id: \"uploader.invalidFileType\",\r\n defaultMessage: \"The file type is invalid. Accepted types: {validTypes}\",\r\n },\r\n { validTypes }\r\n ),\r\n };\r\n this.errorList.push(error);\r\n } else if (!this.isValidSize(file.size)) {\r\n const error = {\r\n file_name: file.name,\r\n message: intl.formatMessage(\r\n {\r\n id: \"uploader.fileTooLarge\",\r\n defaultMessage: \"The selected file is too large. Maximum file size is {size}Mb\",\r\n },\r\n { size: this.maxSize }\r\n ),\r\n };\r\n this.errorList.push(error);\r\n } else if (this.isDuplicate(file.name)) {\r\n const error = {\r\n file_name: file.name,\r\n message: intl.formatMessage({\r\n id: \"uploader.duplicateName\",\r\n defaultMessage: \"A file with this name already exists.\",\r\n }),\r\n };\r\n this.errorList.push(error);\r\n } else {\r\n this.inProgressList.push(file);\r\n }\r\n forceUpdate(this.el);\r\n });\r\n\r\n if (this.inProgressList.length > 0) {\r\n this.numFilesInProgress = this.inProgressList.length;\r\n\r\n // map over \"uploadable\" files for actual upload\r\n // this happens separately otherwise at each pass we'd have to wait for the requests to complete before displaying things\r\n this.inProgressList.map((file, i) => {\r\n this.uploadFile(file, i); // = input.files file\r\n });\r\n }\r\n }\r\n (ev.target! as HTMLInputElement).value = \"\"; // reset to ensure that onChange is triggered when the same file is selected a second time\r\n }\r\n\r\n uploadFile(file: File, i: number) {\r\n // get upload link\r\n getRequest(this.requestUploadPath + i.toString())\r\n .then(async (reply: AWSData) => {\r\n const assData = JSON.parse(this.associatedData!);\r\n const fileInfo: FileInfo = {\r\n ...assData,\r\n file_name: file.name,\r\n mime_type: file.type,\r\n file_path: reply.path,\r\n document_uuid: reply.guid,\r\n };\r\n\r\n // onProgress is passed as a callback to the ev listener inside putRequest (http service),\r\n // so we can't change component things directly => custom event to pass data to uploader component.\r\n const onProgress = (ev: ProgressEvent) => {\r\n const progress = ev.lengthComputable && ev.total !== 0 ? (ev.loaded / ev.total) * 100 : 0;\r\n const event = new CustomEvent(\"wmUploadProgress\", {\r\n detail: { file_name: file.name, progress },\r\n });\r\n\r\n this.el.dispatchEvent(event);\r\n };\r\n\r\n // upload to AWS s3 to url we just fetched\r\n await putRequest(reply.url, file, onProgress);\r\n\r\n // create the db entry\r\n await postRequest(this.uploadPath, fileInfo);\r\n\r\n // get files from server again\r\n this.getExistingFiles();\r\n })\r\n .catch((err) => {\r\n // do not show toast on error\r\n this.numFilesInProgress = null;\r\n // do not show in progress item on error\r\n this.inProgressList = [];\r\n this.notif = {\r\n id: 3,\r\n message: intl.formatMessage({\r\n id: \"global.genericError\",\r\n defaultMessage: \"An error occurred. Please try again.\",\r\n }),\r\n };\r\n console.error(err);\r\n });\r\n }\r\n\r\n downloadFile(uuid: string, path: string) {\r\n this.clearErrors();\r\n\r\n // POST request to get temporary download link\r\n const payload = {\r\n file_path: path,\r\n file_uuid: uuid,\r\n };\r\n postRequest(this.requestDownloadPath, payload)\r\n .then((reply: { url: string }) => {\r\n // we got the download link, now download the file\r\n window.location.assign(reply.url);\r\n })\r\n .catch((err) => {\r\n console.error(err);\r\n });\r\n }\r\n\r\n deleteFile(file: FileInfo) {\r\n this.clearErrors();\r\n\r\n this.snackbar.push({\r\n message: intl.formatMessage(\r\n {\r\n id: \"uploader.fileDeleted\",\r\n defaultMessage: \"{fileName} was deleted.\",\r\n },\r\n { fileName: file.file_name }\r\n ),\r\n id: file.uuid!,\r\n link: \"\",\r\n });\r\n\r\n // rm file from list immediately.\r\n this.fileList = this.fileList.filter((i) => i.uuid !== file.uuid);\r\n\r\n deleteRequest(`${this.deletePath}/${file.uuid}`).catch((err) => {\r\n this.notif = {\r\n id: 4,\r\n message: intl.formatMessage(\r\n {\r\n id: \"uploader.fileNotDeleted\",\r\n defaultMessage: \"{fileName} could not be deleted.\",\r\n },\r\n { fileName: file.file_name }\r\n ),\r\n };\r\n this.getExistingFiles();\r\n console.error(err);\r\n });\r\n }\r\n\r\n componentWillLoad() {\r\n if (!this.getPath) {\r\n throw new Error(\"wm-network-uploader: get-path is a required prop\");\r\n }\r\n if (!this.requestUploadPath) {\r\n throw new Error(\"wm-network-uploader: request-upload-path is a required prop\");\r\n }\r\n if (!this.uploadPath) {\r\n throw new Error(\"wm-network-uploader: upload-path is a required prop\");\r\n }\r\n if (!this.requestDownloadPath) {\r\n throw new Error(\"wm-network-uploader: request-download-path is a required prop\");\r\n }\r\n if (!this.deletePath) {\r\n throw new Error(\"wm-network-uploader: delete-path is a required prop\");\r\n }\r\n if (!this.buttonText) {\r\n throw new Error(\"wm-network-uploader: button-text is a required prop\");\r\n }\r\n if (!this.emptyStateText) {\r\n throw new Error(\"wm-network-uploader: empty-state-text is a required prop\");\r\n }\r\n if (!this.associatedData) {\r\n throw new Error(\"wm-network-uploader: associated-data is a required prop\");\r\n }\r\n\r\n this.setMaxSize();\r\n this.clearErrors();\r\n }\r\n\r\n componentDidLoad() {\r\n this.getExistingFiles();\r\n\r\n if (document.body.classList.contains(\"wmcl-user-is-tabbing\")) {\r\n this.toggleTabbingOn();\r\n }\r\n }\r\n\r\n uploadButtonOnClick(ev: Event) {\r\n if (this.isDisabled) {\r\n // this is a temporary fix.\r\n // we need the disabled button to be programmatically focusable\r\n // to allow return focus after closing the browser file panel\r\n // since it's focusable the button should respond when activated\r\n // it looks disabled, and announces the reason why the action cannot\r\n // be taken when activated.\r\n // this is not pretty duplicating a intl message + the logic of isDisabled,\r\n // but not worth a bigger refactor since this is only until we get the UX for disabled elements and refactor all interactive els.\r\n ev.preventDefault();\r\n if (this.liveRegion) {\r\n const isMax = !!this.maxFiles && this.fileList.length >= this.maxFiles;\r\n let errMsg: string = \"\";\r\n if (this.numFilesInProgress! > 0) {\r\n errMsg = intl.formatMessage({\r\n id: \"uploader.waitToUpload\",\r\n defaultMessage: \"Please wait for current upload to complete before uploading new files.\",\r\n description: \"Message for screen reader users\",\r\n });\r\n } else if (isMax) {\r\n errMsg = intl.formatMessage({\r\n id: \"uploader.fileUploadLimitExceeded\",\r\n defaultMessage: \"Upload unsuccessful because file selection would exceed the maximum number of files\",\r\n description: \"Message displayed when trying to upload too many files\",\r\n });\r\n }\r\n\r\n if (errMsg) {\r\n // clear and set again to re-announce if button is clicked several times\r\n // (can't be done inside setTimeout because of scope, hence the promise)\r\n this.liveRegion.innerHTML = \"\";\r\n new Promise((resolve) => {\r\n setTimeout(() => {\r\n resolve(\"\");\r\n }, 500);\r\n }).then(() => (this.liveRegion!.innerHTML = errMsg));\r\n }\r\n }\r\n } else {\r\n this.clearErrors();\r\n }\r\n }\r\n\r\n renderUploadSvg() {\r\n return (\r\n <svg class=\"upload-file\" width=\"91\" height=\"84\" viewBox=\"0 0 91 84\">\r\n <path\r\n transform=\"rotate(-180.000000) translate(-452, -255.5)\"\r\n fill=\"#eae8ec\"\r\n d=\"M361,249.681818 L361,197.318182 C361,194.118182 365.555061,191.5 371.122358,191.5 L391.316463,191.5 L391.286495,200.562515 L369.871211,200.600292 L369.885404,200.622146 L369.886423,246.655947 L443.657038,246.840767 L443.657038,200.622146 L421.683537,200.622146 L421.683537,191.5 L441.978865,191.5 C447.546162,191.5 452,194.118182 452,197.318182 L452,249.681818 C452,252.881818 447.546162,255.5 441.978865,255.5 L371.122358,255.5 C365.504449,255.5 361,252.881818 361,249.681818 Z M391.5,207 L406,221 L420.5,207 L409.625,207 L409.625,172 L402.375,172 L402.375,207 L391.5,207 Z\"\r\n ></path>\r\n </svg>\r\n );\r\n }\r\n\r\n renderIcon() {\r\n // mdi attachment icon (paper clip) is horizontal but we want it vertical\r\n const rotate = this.icon && this.icon === \"f066\";\r\n return (\r\n this.icon && (\r\n <span class={`mdi ${rotate ? \"rotate\" : \"\"}`}>{String.fromCodePoint(parseInt(`0x${this.icon}`))}</span>\r\n )\r\n );\r\n }\r\n\r\n renderNotif() {\r\n return this.notif ? <span class=\"notif\">{this.notif.message}</span> : \"\";\r\n }\r\n\r\n renderUploadButton(classes: string) {\r\n return (\r\n <div class=\"notif-wrapper\">\r\n <input\r\n name={this.inputId}\r\n id={this.inputId}\r\n class=\"sr-only\"\r\n type=\"file\"\r\n multiple\r\n onClick={(ev) => this.uploadButtonOnClick(ev)}\r\n onChange={(e) => this.handleFiles(e)}\r\n />\r\n <label htmlFor={this.inputId} class={`wm-button ${classes}${this.isTabbing ? \" user-is-tabbing\" : \"\"}`}>\r\n {this.renderIcon()}\r\n {this.buttonText}\r\n </label>\r\n {this.renderNotif()}\r\n </div>\r\n );\r\n }\r\n\r\n renderWithItems() {\r\n return (\r\n <div>\r\n <div class=\"header\">\r\n <div class=\"descr\">\r\n <slot />\r\n </div>\r\n {this.renderUploadButton(this.isDisabled ? \"disabled\" : \"\")}\r\n </div>\r\n {this.renderErrorList()}\r\n {this.renderInProgressList()}\r\n {this.renderFileList()}\r\n </div>\r\n );\r\n }\r\n\r\n renderEmptyState() {\r\n return (\r\n <div>\r\n <div class=\"header\">\r\n <div class=\"descr\">\r\n <slot />\r\n </div>\r\n </div>\r\n <div class=\"empty-block\">\r\n {this.renderUploadSvg()}\r\n <div class=\"empty-message\">{this.emptyStateText}</div>\r\n {this.renderUploadButton(\"-primary empty-button\")}\r\n </div>\r\n </div>\r\n );\r\n }\r\n\r\n renderErrorList() {\r\n if (!!this.errorList.length) {\r\n if (this.liveRegion) {\r\n let srMessage = this.errorList.reduce(function (acc, err) {\r\n return acc + `${err.file_name}: ${err.message} `;\r\n }, \"\");\r\n this.liveRegion.innerHTML = srMessage;\r\n }\r\n\r\n return (\r\n <ul class=\"error-list\">\r\n {this.errorList.map((err) => (\r\n <li>\r\n <div class=\"file --error\">\r\n <div class=\"file-info\">\r\n <span class=\"filename\">{err.file_name}</span>\r\n </div>\r\n </div>\r\n <div class=\"error-message\">{err.message}</div>\r\n </li>\r\n ))}\r\n </ul>\r\n );\r\n }\r\n }\r\n\r\n renderInProgressList() {\r\n return (\r\n <ul class=\"inprogress-list\">\r\n {this.inProgressList.map((item) => {\r\n return (\r\n <li>\r\n <div class=\"file --progress\">\r\n <div\r\n class=\"progress\"\r\n style={{\r\n background: `linear-gradient(to right, rgba(67, 126, 142, 1) ${item.progress}%, transparent ${item.progress}%)`,\r\n }}\r\n ></div>\r\n <div class=\"file-info\">\r\n <span class=\"filename\">\r\n {item.name} <span class=\"sr-only\">uploading</span>\r\n </span>\r\n </div>\r\n </div>\r\n </li>\r\n );\r\n })}\r\n </ul>\r\n );\r\n }\r\n\r\n renderFile(item: FileInfo) {\r\n return (\r\n <li>\r\n <div class=\"file --saved\">\r\n <div class=\"file-info\">\r\n <span class=\"filename\">{item.file_name}</span>\r\n <span class=\"filedate\">\r\n {this.formatDate(item.updated_at!, intl.locale, Intl.DateTimeFormat().resolvedOptions().timeZone)}\r\n </span>\r\n </div>\r\n <div class=\"file-controls\">\r\n <wm-button\r\n class=\"download-button\"\r\n button-type=\"icononly\"\r\n tooltip=\"download\"\r\n label-for-identical-buttons={`download ${item.file_name}`}\r\n icon=\"f1da\"\r\n onClick={() => this.downloadFile(item.uuid!, item.file_path!)}\r\n ></wm-button>\r\n <wm-button\r\n class=\"delete-button\"\r\n button-type=\"icononly\"\r\n tooltip=\"remove\"\r\n label-for-identical-buttons={`remove ${item.file_name}`}\r\n icon=\"f1c0\"\r\n onClick={() => this.deleteFile(item)}\r\n ></wm-button>\r\n </div>\r\n </div>\r\n </li>\r\n );\r\n }\r\n\r\n renderFileList() {\r\n return <ul class=\"file-list\">{this.fileList.map((item) => this.renderFile(item))}</ul>;\r\n }\r\n\r\n render() {\r\n return (\r\n <Host>\r\n {this.isEmpty() ? this.renderEmptyState() : this.renderWithItems()}\r\n <wm-snackbar notifications={JSON.stringify(this.snackbar)}></wm-snackbar>\r\n <div\r\n ref={(el) => (this.liveRegion = el as HTMLDivElement)}\r\n class=\"live-region sr-only\"\r\n aria-live=\"assertive\" // since it's directly linked to the action the user took, it should be read in priority. With polite, some messages get dismissed in favor of the page title\r\n aria-atomic=\"true\"\r\n ></div>\r\n </Host>\r\n );\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"wm-network-uploader.js","sourceRoot":"","sources":["../../../../../src/components/wm-uploader/wm-network-uploader/wm-network-uploader.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Element, h, Host, Prop, State, Listen, Watch, Event, EventEmitter } from \"@stencil/core\";\nimport { forceUpdate } from \"@stencil/core\";\nimport { getRequest, postRequest, putRequest, deleteRequest } from \"../../../global/services/http-service\";\nimport { intl, generateId, hasValidType } from \"../../../global/functions\";\nimport { globalMessages } from \"../../../global/intl\";\n//\n// Web API File interface => for FileList on input element, sending to AWS\n// Custom FileInfo interface (below) => for our server\nexport interface FileInfo {\n file_name: string;\n file_path?: string;\n mime_type: string;\n updated_at?: string;\n\n uuid?: string; // AWS guid\n document_uuid?: string; // aka file uuid. how is that different from the uuid above?\n // organization_uuid: string; // aka node uuid\n}\n\ninterface FileInProgress extends File {\n progress?: number;\n}\n\ninterface ErrorInfo {\n file_name: string;\n message: string;\n}\n\ninterface AWSData {\n url: string;\n updated_at: string;\n path: string;\n guid: string;\n}\n\ninterface Notification {\n message: string;\n id: string;\n link: string;\n}\n\n@Component({\n tag: \"wm-network-uploader\",\n styleUrl: \"wm-network-uploader.scss\",\n shadow: true,\n})\nexport class NetworkUploader {\n @Element() el!: HTMLWmNetworkUploaderElement;\n private liveRegion?: HTMLDivElement;\n\n @State() isTabbing: boolean = false;\n\n @State() fileList: FileInfo[] = [];\n @State() inProgressList: FileInProgress[] = [];\n @State() errorList: ErrorInfo[] = []; // for errors on a particular file\n @State() notif?: { id: number; message: string } | null; // for global errors, e.g. user tries uploading too many files, and upload notifications\n @State() snackbar: Notification[] = [];\n @State() numFilesInProgress?: number | null; // null when not uploading != 0 (when all files are done uploading) != undefined (original state)\n private srProgress?: any; // setInterval for SR to announce the aggregate progress percentage when things take a long time. stored here so it can be stopped when upload is finished.\n\n @Prop() getPath!: string;\n @Prop() requestUploadPath!: string;\n @Prop() uploadPath!: string; // used for POST request (create db entry)\n @Prop() requestDownloadPath!: string;\n @Prop() deletePath!: string;\n\n @Prop() associatedData?: string;\n @Prop() buttonText!: string;\n @Prop() emptyStateText!: string;\n @Prop() icon!: string;\n @Prop() fileTypes: string = \"pdf txt log xml doc docx xls xlsx ppt pptx gif jpg jpeg png csv\";\n @Prop({ mutable: true }) maxSize: number = 100; // in Mb\n @Prop() maxFiles?: number;\n @Prop() sortBy: \"name\" | \"date\" = \"date\"; // name is descending (a -> z), date is ascending (earlier -> later)\n\n @Event() wmNetworkUploaderFilesChanged!: EventEmitter<Object[]>;\n\n private inputId = generateId();\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(\"wmUploadProgress\")\n handleUploadProgress(ev: CustomEvent) {\n this.inProgressList.map((i) => {\n if (i.name === ev.detail.file_name) {\n i.progress = ev.detail.progress;\n forceUpdate(this.el);\n }\n });\n\n if (ev.detail.progress === 100) {\n // inProgressList is not a perfect reflection of how many files are uploading\n // because even after progress reached 100% the item should remain in the array\n // (should only be removed once it appears in fileList)\n this.numFilesInProgress! -= 1;\n }\n\n // aggregate the percentages for SR to announce progress\n if (!this.srProgress && this.numFilesInProgress) {\n const total = this.numFilesInProgress; // if we don't reassign this number changes when a file is done and the percentage becomes wrong\n this.srProgress = setInterval(() => {\n const aggregate = this.inProgressList.reduce((avg, item) => (item.progress ? avg + item.progress : avg), 0);\n if (this.liveRegion) {\n this.liveRegion.innerHTML = intl.formatMessage(\n {\n id: \"uploader.uploadProgress\",\n defaultMessage: \"Upload progress: {percentage}%\",\n },\n { percentage: Math.floor(aggregate / total) }\n );\n }\n }, 5000);\n }\n }\n\n @Listen(\"userFinishedSnack\")\n handleFinishedSnack(ev: CustomEvent) {\n this.snackbar = this.snackbar.filter((n) => n.id !== ev.detail.id);\n }\n\n @Watch(\"maxSize\")\n setMaxSize() {\n // Max size can't be set above 100Mb\n this.maxSize = this.maxSize > 100 ? 100 : this.maxSize;\n }\n\n @Watch(\"numFilesInProgress\")\n uploadNotifications(newNum: number, oldNum: number) {\n if (oldNum > 0 && newNum === 0) {\n setTimeout(() => {\n this.notif = null;\n }, 20 * 1000);\n const message = intl.formatMessage({\n id: \"uploader.finishedUploading\",\n defaultMessage: \"Finished uploading\",\n });\n this.notif = { id: 5, message };\n if (this.liveRegion) {\n this.liveRegion.innerHTML = message;\n }\n this.numFilesInProgress = null;\n clearInterval(this.srProgress);\n forceUpdate(this.el);\n } else if (newNum > 0 && newNum != oldNum) {\n const message = intl.formatMessage(\n {\n id: \"uploader.filesUploading\",\n defaultMessage: \"{num, plural, one {1 file uploading} other {# files uploading}}\",\n },\n { num: newNum }\n );\n this.notif = { id: 6, message };\n if (this.liveRegion) {\n this.liveRegion.innerHTML = message;\n }\n forceUpdate(this.el);\n }\n }\n\n @Watch(\"fileList\")\n emitFileListEvent() {\n this.wmNetworkUploaderFilesChanged.emit(this.fileList);\n }\n\n formatDate(isoDate: string, locale: string, timezone: string) {\n const timestamp = Date.parse(isoDate);\n if (locale.match(/^[a-zA-Z]*(-[a-zA-Z0-9]*)*$/g)) {\n // make sure locale is valid, otherwise set default locale\n try {\n //@ts-ignore\n Intl.getCanonicalLocales(locale);\n } catch {\n locale = \"en-us\";\n }\n } else {\n return isoDate;\n }\n\n if (!!timestamp) {\n const date = new Date(timestamp);\n const year = date.getFullYear();\n const month = (\"0\" + (date.getMonth() + 1)).substr(-2);\n const day = (\"0\" + date.getDate()).substr(-2);\n const time = date.toLocaleTimeString([locale, \"en-us\"], {\n timeZone: timezone,\n hour: \"numeric\",\n minute: \"numeric\",\n });\n return `${year}/${month}/${day} ${time}`;\n } else {\n return isoDate;\n }\n }\n\n isValidSize(size: number) {\n // https://stackoverflow.com/questions/2365100/converting-bytes-to-megabytes\n return size / 1024 / 1024 <= this.maxSize;\n }\n\n isDuplicate(name: string) {\n return this.fileList.find((f) => f.file_name === name);\n }\n\n isEmpty() {\n return !this.fileList.length && !this.inProgressList.length && !this.errorList.length;\n }\n\n get isDisabled() {\n const isMax = !!this.maxFiles && this.fileList.length >= this.maxFiles;\n\n if (!this.notif) {\n if (isMax) {\n const errMessage = intl.formatMessage({\n id: \"uploader.fileUploadLimitExceeded\",\n defaultMessage: \"Upload unsuccessful because file selection would exceed the maximum number of files\",\n description: \"Message displayed when trying to upload too many files\",\n });\n this.notif = { id: 1, message: errMessage };\n if (this.liveRegion) {\n this.liveRegion.innerHTML = errMessage;\n }\n } else {\n this.notif = null;\n }\n } else if (this.notif.id === 1) {\n // to make sure SR don't repeat the error, don't reset it if it already is showing\n // just dismiss it if isMax is not true anymore\n if (!isMax) {\n this.notif = null;\n }\n // finally do nothing if error 2 is showing (special case when user selects too many files)\n }\n // disable if is the uploader is maxed out or if something is uploading\n return isMax || this.numFilesInProgress! > 0;\n }\n\n purgeProgressList(item: FileInfo) {\n // If a file is retrieved from the server because it was just uploaded\n // it should be removed from inProgressList\n this.inProgressList = this.inProgressList.filter((i) => i.progress !== 100 && i.name !== item.file_name);\n }\n\n getExistingFiles() {\n getRequest(this.getPath)\n .then((reply: FileInfo[]) => {\n reply.map((item) => this.purgeProgressList(item));\n if (this.sortBy === \"name\") {\n reply.sort((a, b) => a.file_name.localeCompare(b.file_name));\n }\n this.fileList = reply;\n })\n .catch((errStatus) => {\n console.error(errStatus);\n });\n }\n\n clearErrors() {\n this.errorList = [];\n this.notif = null;\n }\n\n handleFiles(ev: Event) {\n const files = Array.from((ev.target! as HTMLInputElement).files!);\n const validTypes = this.fileTypes.split(\" \").join(\", \");\n\n if (!!this.maxFiles && this.fileList.length + files.length > this.maxFiles) {\n const errMessage = intl.formatMessage({\n id: \"uploader.fileUploadLimitExceeded\",\n defaultMessage: \"Upload unsuccessful because file selection would exceed the maximum number of files\",\n description: \"Message displayed when trying to upload too many files\",\n });\n this.notif = { id: 2, message: errMessage };\n if (this.liveRegion) {\n this.liveRegion.innerHTML = errMessage;\n }\n } else {\n // map to create inProgress items so they can be displayed immediately\n files &&\n files.map((file) => {\n if (!hasValidType(file, this.fileTypes)) {\n const error = {\n file_name: file.name,\n message: intl.formatMessage(\n {\n id: \"uploader.invalidFileType\",\n defaultMessage: \"The file type is invalid. Accepted types: {validTypes}\",\n },\n { validTypes }\n ),\n };\n this.errorList.push(error);\n } else if (!this.isValidSize(file.size)) {\n const error = {\n file_name: file.name,\n message: intl.formatMessage(\n {\n id: \"uploader.fileTooLarge\",\n defaultMessage: \"The selected file is too large. Maximum file size is {size}Mb\",\n },\n { size: this.maxSize }\n ),\n };\n this.errorList.push(error);\n } else if (this.isDuplicate(file.name)) {\n const error = {\n file_name: file.name,\n message: intl.formatMessage({\n id: \"uploader.duplicateName\",\n defaultMessage: \"A file with this name already exists.\",\n }),\n };\n this.errorList.push(error);\n } else {\n this.inProgressList.push(file);\n }\n forceUpdate(this.el);\n });\n\n if (this.inProgressList.length > 0) {\n this.numFilesInProgress = this.inProgressList.length;\n\n // map over \"uploadable\" files for actual upload\n // this happens separately otherwise at each pass we'd have to wait for the requests to complete before displaying things\n this.inProgressList.map((file, i) => {\n this.uploadFile(file, i); // = input.files file\n });\n }\n }\n (ev.target! as HTMLInputElement).value = \"\"; // reset to ensure that onChange is triggered when the same file is selected a second time\n }\n\n uploadFile(file: File, i: number) {\n // get upload link\n getRequest(this.requestUploadPath + i.toString())\n .then(async (reply: AWSData) => {\n const assData = JSON.parse(this.associatedData!);\n const fileInfo: FileInfo = {\n ...assData,\n file_name: file.name,\n mime_type: file.type,\n file_path: reply.path,\n document_uuid: reply.guid,\n };\n\n // onProgress is passed as a callback to the ev listener inside putRequest (http service),\n // so we can't change component things directly => custom event to pass data to uploader component.\n const onProgress = (ev: ProgressEvent) => {\n const progress = ev.lengthComputable && ev.total !== 0 ? (ev.loaded / ev.total) * 100 : 0;\n const event = new CustomEvent(\"wmUploadProgress\", {\n detail: { file_name: file.name, progress },\n });\n\n this.el.dispatchEvent(event);\n };\n\n // upload to AWS s3 to url we just fetched\n await putRequest(reply.url, file, onProgress);\n\n // create the db entry\n await postRequest(this.uploadPath, fileInfo);\n\n // get files from server again\n this.getExistingFiles();\n })\n .catch((err) => {\n // do not show toast on error\n this.numFilesInProgress = null;\n // do not show in progress item on error\n this.inProgressList = [];\n this.notif = {\n id: 3,\n message: globalMessages.genericError,\n };\n console.error(err);\n });\n }\n\n downloadFile(uuid: string, path: string) {\n this.clearErrors();\n\n // POST request to get temporary download link\n const payload = {\n file_path: path,\n file_uuid: uuid,\n };\n postRequest(this.requestDownloadPath, payload)\n .then((reply: { url: string }) => {\n // we got the download link, now download the file\n window.location.assign(reply.url);\n })\n .catch((err) => {\n console.error(err);\n });\n }\n\n deleteFile(file: FileInfo) {\n this.clearErrors();\n\n this.snackbar.push({\n message: intl.formatMessage(\n {\n id: \"uploader.fileDeleted\",\n defaultMessage: \"{fileName} was deleted.\",\n },\n { fileName: file.file_name }\n ),\n id: file.uuid!,\n link: \"\",\n });\n\n // rm file from list immediately.\n this.fileList = this.fileList.filter((i) => i.uuid !== file.uuid);\n\n deleteRequest(`${this.deletePath}/${file.uuid}`).catch((err) => {\n this.notif = {\n id: 4,\n message: intl.formatMessage(\n {\n id: \"uploader.fileNotDeleted\",\n defaultMessage: \"{fileName} could not be deleted.\",\n },\n { fileName: file.file_name }\n ),\n };\n this.getExistingFiles();\n console.error(err);\n });\n }\n\n componentWillLoad() {\n if (!this.getPath) {\n throw new Error(\"wm-network-uploader: get-path is a required prop\");\n }\n if (!this.requestUploadPath) {\n throw new Error(\"wm-network-uploader: request-upload-path is a required prop\");\n }\n if (!this.uploadPath) {\n throw new Error(\"wm-network-uploader: upload-path is a required prop\");\n }\n if (!this.requestDownloadPath) {\n throw new Error(\"wm-network-uploader: request-download-path is a required prop\");\n }\n if (!this.deletePath) {\n throw new Error(\"wm-network-uploader: delete-path is a required prop\");\n }\n if (!this.buttonText) {\n throw new Error(\"wm-network-uploader: button-text is a required prop\");\n }\n if (!this.emptyStateText) {\n throw new Error(\"wm-network-uploader: empty-state-text is a required prop\");\n }\n if (!this.associatedData) {\n throw new Error(\"wm-network-uploader: associated-data is a required prop\");\n }\n\n this.setMaxSize();\n this.clearErrors();\n }\n\n componentDidLoad() {\n this.getExistingFiles();\n\n if (document.body.classList.contains(\"wmcl-user-is-tabbing\")) {\n this.toggleTabbingOn();\n }\n }\n\n uploadButtonOnClick(ev: Event) {\n if (this.isDisabled) {\n // this is a temporary fix.\n // we need the disabled button to be programmatically focusable\n // to allow return focus after closing the browser file panel\n // since it's focusable the button should respond when activated\n // it looks disabled, and announces the reason why the action cannot\n // be taken when activated.\n // this is not pretty duplicating a intl message + the logic of isDisabled,\n // but not worth a bigger refactor since this is only until we get the UX for disabled elements and refactor all interactive els.\n ev.preventDefault();\n if (this.liveRegion) {\n const isMax = !!this.maxFiles && this.fileList.length >= this.maxFiles;\n let errMsg: string = \"\";\n if (this.numFilesInProgress! > 0) {\n errMsg = intl.formatMessage({\n id: \"uploader.waitToUpload\",\n defaultMessage: \"Please wait for current upload to complete before uploading new files.\",\n description: \"Message for screen reader users\",\n });\n } else if (isMax) {\n errMsg = intl.formatMessage({\n id: \"uploader.fileUploadLimitExceeded\",\n defaultMessage: \"Upload unsuccessful because file selection would exceed the maximum number of files\",\n description: \"Message displayed when trying to upload too many files\",\n });\n }\n\n if (errMsg) {\n // clear and set again to re-announce if button is clicked several times\n // (can't be done inside setTimeout because of scope, hence the promise)\n this.liveRegion.innerHTML = \"\";\n new Promise((resolve) => {\n setTimeout(() => {\n resolve(\"\");\n }, 500);\n }).then(() => (this.liveRegion!.innerHTML = errMsg));\n }\n }\n } else {\n this.clearErrors();\n }\n }\n\n renderUploadSvg() {\n return (\n <svg class=\"upload-file\" width=\"91\" height=\"84\" viewBox=\"0 0 91 84\">\n <path\n transform=\"rotate(-180.000000) translate(-452, -255.5)\"\n fill=\"#eae8ec\"\n d=\"M361,249.681818 L361,197.318182 C361,194.118182 365.555061,191.5 371.122358,191.5 L391.316463,191.5 L391.286495,200.562515 L369.871211,200.600292 L369.885404,200.622146 L369.886423,246.655947 L443.657038,246.840767 L443.657038,200.622146 L421.683537,200.622146 L421.683537,191.5 L441.978865,191.5 C447.546162,191.5 452,194.118182 452,197.318182 L452,249.681818 C452,252.881818 447.546162,255.5 441.978865,255.5 L371.122358,255.5 C365.504449,255.5 361,252.881818 361,249.681818 Z M391.5,207 L406,221 L420.5,207 L409.625,207 L409.625,172 L402.375,172 L402.375,207 L391.5,207 Z\"\n ></path>\n </svg>\n );\n }\n\n renderIcon() {\n // mdi attachment icon (paper clip) is horizontal but we want it vertical\n const rotate = this.icon && this.icon === \"f066\";\n return (\n this.icon && (\n <span class={`mdi ${rotate ? \"rotate\" : \"\"}`}>{String.fromCodePoint(parseInt(`0x${this.icon}`))}</span>\n )\n );\n }\n\n renderNotif() {\n return this.notif ? <span class=\"notif\">{this.notif.message}</span> : \"\";\n }\n\n renderUploadButton(classes: string) {\n return (\n <div class=\"notif-wrapper\">\n <input\n name={this.inputId}\n id={this.inputId}\n class=\"sr-only\"\n type=\"file\"\n multiple\n onClick={(ev) => this.uploadButtonOnClick(ev)}\n onChange={(e) => this.handleFiles(e)}\n />\n <label htmlFor={this.inputId} class={`wm-button ${classes}${this.isTabbing ? \" user-is-tabbing\" : \"\"}`}>\n {this.renderIcon()}\n {this.buttonText}\n </label>\n {this.renderNotif()}\n </div>\n );\n }\n\n renderWithItems() {\n return (\n <div>\n <div class=\"header\">\n <div class=\"descr\">\n <slot />\n </div>\n {this.renderUploadButton(this.isDisabled ? \"disabled\" : \"\")}\n </div>\n {this.renderErrorList()}\n {this.renderInProgressList()}\n {this.renderFileList()}\n </div>\n );\n }\n\n renderEmptyState() {\n return (\n <div>\n <div class=\"header\">\n <div class=\"descr\">\n <slot />\n </div>\n </div>\n <div class=\"empty-block\">\n {this.renderUploadSvg()}\n <div class=\"empty-message\">{this.emptyStateText}</div>\n {this.renderUploadButton(\"-primary empty-button\")}\n </div>\n </div>\n );\n }\n\n renderErrorList() {\n if (!!this.errorList.length) {\n if (this.liveRegion) {\n let srMessage = this.errorList.reduce(function (acc, err) {\n return acc + `${err.file_name}: ${err.message} `;\n }, \"\");\n this.liveRegion.innerHTML = srMessage;\n }\n\n return (\n <ul class=\"error-list\">\n {this.errorList.map((err) => (\n <li>\n <div class=\"file --error\">\n <div class=\"file-info\">\n <span class=\"filename\">{err.file_name}</span>\n </div>\n </div>\n <div class=\"error-message\">{err.message}</div>\n </li>\n ))}\n </ul>\n );\n }\n }\n\n renderInProgressList() {\n return (\n <ul class=\"inprogress-list\">\n {this.inProgressList.map((item) => {\n return (\n <li>\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 <div class=\"file-info\">\n <span class=\"filename\">\n {item.name} <span class=\"sr-only\">uploading</span>\n </span>\n </div>\n </div>\n </li>\n );\n })}\n </ul>\n );\n }\n\n renderFile(item: FileInfo) {\n return (\n <li>\n <div class=\"file --saved\">\n <div class=\"file-info\">\n <span class=\"filename\">{item.file_name}</span>\n <span class=\"filedate\">\n {this.formatDate(item.updated_at!, intl.locale, Intl.DateTimeFormat().resolvedOptions().timeZone)}\n </span>\n </div>\n <div class=\"file-controls\">\n <wm-button\n class=\"download-button\"\n button-type=\"icononly\"\n tooltip=\"download\"\n label-for-identical-buttons={`download ${item.file_name}`}\n icon=\"f1da\"\n onClick={() => this.downloadFile(item.uuid!, item.file_path!)}\n ></wm-button>\n <wm-button\n class=\"delete-button\"\n button-type=\"icononly\"\n tooltip=\"remove\"\n label-for-identical-buttons={`remove ${item.file_name}`}\n icon=\"f1c0\"\n onClick={() => this.deleteFile(item)}\n ></wm-button>\n </div>\n </div>\n </li>\n );\n }\n\n renderFileList() {\n return <ul class=\"file-list\">{this.fileList.map((item) => this.renderFile(item))}</ul>;\n }\n\n render() {\n return (\n <Host>\n {this.isEmpty() ? this.renderEmptyState() : this.renderWithItems()}\n <wm-snackbar notifications={JSON.stringify(this.snackbar)}></wm-snackbar>\n <div\n ref={(el) => (this.liveRegion = el as HTMLDivElement)}\n class=\"live-region sr-only\"\n aria-live=\"assertive\" // since it's directly linked to the action the user took, it should be read in priority. With polite, some messages get dismissed in favor of the page title\n aria-atomic=\"true\"\n ></div>\n </Host>\n );\n }\n}\n"]}
|