@oiz/stzh-components 3.8.0-beta1 → 3.8.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/dist/cjs/{app-globals-02553278.js → app-globals-0e887dd2.js} +2 -2
- package/dist/cjs/{app-globals-02553278.js.map → app-globals-0e887dd2.js.map} +1 -1
- package/dist/cjs/{axios-69bcb71f.js → axios-bd44344d.js} +51 -96
- package/dist/cjs/axios-bd44344d.js.map +1 -0
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/cjs/stzh-accordion_3.cjs.entry.js +2 -7
- package/dist/cjs/stzh-accordion_3.cjs.entry.js.map +1 -1
- package/dist/cjs/stzh-badge_3.cjs.entry.js +1 -1
- package/dist/cjs/stzh-badge_3.cjs.entry.js.map +1 -1
- package/dist/cjs/stzh-bathstatus-list.cjs.entry.js +1 -1
- package/dist/cjs/stzh-checkboxgroup.cjs.entry.js +12 -11
- package/dist/cjs/stzh-checkboxgroup.cjs.entry.js.map +1 -1
- package/dist/cjs/stzh-chipselect.cjs.entry.js +1 -1
- package/dist/cjs/stzh-chipselect.cjs.entry.js.map +1 -1
- package/dist/cjs/stzh-components.cjs.js +2 -2
- package/dist/cjs/stzh-contact.cjs.entry.js +2 -8
- package/dist/cjs/stzh-contact.cjs.entry.js.map +1 -1
- package/dist/cjs/stzh-datalist_2.cjs.entry.js +1 -1
- package/dist/cjs/stzh-datalist_2.cjs.entry.js.map +1 -1
- package/dist/cjs/stzh-dialog.cjs.entry.js +1 -1
- package/dist/cjs/stzh-dialog.cjs.entry.js.map +1 -1
- package/dist/cjs/stzh-dropdown.cjs.entry.js +1 -1
- package/dist/cjs/stzh-dropdown.cjs.entry.js.map +1 -1
- package/dist/cjs/stzh-eventdata.cjs.entry.js +1 -1
- package/dist/cjs/stzh-eventdata.cjs.entry.js.map +1 -1
- package/dist/cjs/stzh-microsite-teaserlist.cjs.entry.js +3 -2
- package/dist/cjs/stzh-microsite-teaserlist.cjs.entry.js.map +1 -1
- package/dist/cjs/stzh-poilist.cjs.entry.js +1 -1
- package/dist/cjs/stzh-progressbar.cjs.entry.js +23 -0
- package/dist/cjs/stzh-progressbar.cjs.entry.js.map +1 -1
- package/dist/cjs/stzh-search.cjs.entry.js +2 -2
- package/dist/cjs/stzh-search.cjs.entry.js.map +1 -1
- package/dist/cjs/stzh-upload.cjs.entry.js +23 -10
- package/dist/cjs/stzh-upload.cjs.entry.js.map +1 -1
- package/dist/cjs/stzh-vbz-majorticker.cjs.entry.js +1 -1
- package/dist/cjs/stzh-vbz-ticker.cjs.entry.js +1 -1
- package/dist/collection/assets/i18n/de.json +9 -5
- package/dist/collection/assets/i18n/en.json +9 -5
- package/dist/collection/components/stzh-accordion/stzh-accordion.e2e.js +1 -0
- package/dist/collection/components/stzh-accordion/stzh-accordion.e2e.js.map +1 -1
- package/dist/collection/components/stzh-accordion/stzh-accordion.stories.js +86 -0
- package/dist/collection/components/stzh-accordion-item/stzh-accordion-item.js +2 -7
- package/dist/collection/components/stzh-accordion-item/stzh-accordion-item.js.map +1 -1
- package/dist/collection/components/stzh-button/stzh-button.css +13 -4
- package/dist/collection/components/stzh-button/stzh-button.e2e.js +6 -3
- package/dist/collection/components/stzh-button/stzh-button.e2e.js.map +1 -1
- package/dist/collection/components/stzh-button/stzh-button.stories.js +191 -15
- package/dist/collection/components/stzh-checkboxgroup/stzh-checkboxgroup.js +31 -14
- package/dist/collection/components/stzh-checkboxgroup/stzh-checkboxgroup.js.map +1 -1
- package/dist/collection/components/stzh-chip/stzh-chip.stories.js +11 -0
- package/dist/collection/components/stzh-chipselect/stzh-chipselect.css +1 -6
- package/dist/collection/components/stzh-contact/stzh-contact.css +11 -0
- package/dist/collection/components/stzh-contact/stzh-contact.js +1 -7
- package/dist/collection/components/stzh-contact/stzh-contact.js.map +1 -1
- package/dist/collection/components/stzh-datalist/stzh-datalist.e2e.js +1 -0
- package/dist/collection/components/stzh-datalist/stzh-datalist.e2e.js.map +1 -1
- package/dist/collection/components/stzh-datalist/stzh-datalist.stories.js +32 -0
- package/dist/collection/components/stzh-datalist-item/stzh-datalist-item.css +2 -1
- package/dist/collection/components/stzh-datepicker/stzh-datepicker.stories.js +1 -1
- package/dist/collection/components/stzh-dialog/stzh-dialog.css +2 -1
- package/dist/collection/components/stzh-dropdown/stzh-dropdown.css +8 -1
- package/dist/collection/components/stzh-dropdown/stzh-dropdown.stories.js +107 -5
- package/dist/collection/components/stzh-eventdata/stzh-eventdata.css +0 -5
- package/dist/collection/components/stzh-input/stzh-input.stories.js +1 -1
- package/dist/collection/components/stzh-microsite-teaserlist/stzh-microsite-teaserlist.js +3 -2
- package/dist/collection/components/stzh-microsite-teaserlist/stzh-microsite-teaserlist.js.map +1 -1
- package/dist/collection/components/stzh-progressbar/stzh-progressbar.js +27 -2
- package/dist/collection/components/stzh-progressbar/stzh-progressbar.js.map +1 -1
- package/dist/collection/components/stzh-search/stzh-search.js +1 -1
- package/dist/collection/components/stzh-search/stzh-search.js.map +1 -1
- package/dist/collection/components/stzh-search/stzh-search.stories.js +51 -83
- package/dist/collection/components/stzh-skiplink/stzh-skiplink.stories.js +0 -1
- package/dist/collection/components/stzh-upload/models/stzh-photographing-url-details.dto.js.map +1 -1
- package/dist/collection/components/stzh-upload/stzh-upload.css +5 -0
- package/dist/collection/components/stzh-upload/stzh-upload.js +26 -10
- package/dist/collection/components/stzh-upload/stzh-upload.js.map +1 -1
- package/dist/collection/components/stzh-upload/stzh-upload.localization.js.map +1 -1
- package/dist/collection/components/stzh-upload/stzh-upload.stories.js +3 -1
- package/dist/components/index.js +1 -1
- package/dist/components/{p-ed75de26.js → p-16940157.js} +3 -3
- package/dist/components/{p-ed75de26.js.map → p-16940157.js.map} +1 -1
- package/dist/components/{p-2fe2c81f.js → p-1d21ac10.js} +3 -3
- package/dist/components/{p-2fe2c81f.js.map → p-1d21ac10.js.map} +1 -1
- package/dist/components/{p-16892790.js → p-345a1e99.js} +51 -96
- package/dist/components/p-345a1e99.js.map +1 -0
- package/dist/components/{p-3aefa2e3.js → p-37367a31.js} +5 -5
- package/dist/components/{p-3aefa2e3.js.map → p-37367a31.js.map} +1 -1
- package/dist/components/{p-74755a90.js → p-408a1562.js} +2 -2
- package/dist/components/{p-74755a90.js.map → p-408a1562.js.map} +1 -1
- package/dist/components/{p-7e9f4f9f.js → p-497e2db0.js} +2 -2
- package/dist/components/{p-7e9f4f9f.js.map → p-497e2db0.js.map} +1 -1
- package/dist/components/p-4d000b5b.js +265 -0
- package/dist/components/p-4d000b5b.js.map +1 -0
- package/dist/components/{p-866cf184.js → p-4e5ccabd.js} +2 -2
- package/dist/components/{p-866cf184.js.map → p-4e5ccabd.js.map} +1 -1
- package/dist/components/{p-bd7d15a6.js → p-541e8c61.js} +2 -2
- package/dist/components/{p-bd7d15a6.js.map → p-541e8c61.js.map} +1 -1
- package/dist/components/{p-d4aabf9c.js → p-60b9f94a.js} +3 -3
- package/dist/components/p-60b9f94a.js.map +1 -0
- package/dist/components/{p-82c163e4.js → p-62e6cd61.js} +3 -3
- package/dist/components/{p-82c163e4.js.map → p-62e6cd61.js.map} +1 -1
- package/dist/components/{p-13c3319c.js → p-6956beb9.js} +2 -2
- package/dist/components/{p-13c3319c.js.map → p-6956beb9.js.map} +1 -1
- package/dist/components/{p-2a870524.js → p-6c754f8f.js} +3 -8
- package/dist/components/p-6c754f8f.js.map +1 -0
- package/dist/components/{p-9b0832ca.js → p-70f62e8e.js} +3 -3
- package/dist/components/{p-9b0832ca.js.map → p-70f62e8e.js.map} +1 -1
- package/dist/components/{p-c9ddf923.js → p-8ed7a61b.js} +2 -2
- package/dist/components/{p-c9ddf923.js.map → p-8ed7a61b.js.map} +1 -1
- package/dist/components/{p-3890d846.js → p-96416f66.js} +3 -3
- package/dist/components/p-96416f66.js.map +1 -0
- package/dist/components/{p-435e0ef4.js → p-c73125e2.js} +3 -3
- package/dist/components/{p-435e0ef4.js.map → p-c73125e2.js.map} +1 -1
- package/dist/components/{p-d1623b2e.js → p-dd072a49.js} +2 -2
- package/dist/components/{p-d1623b2e.js.map → p-dd072a49.js.map} +1 -1
- package/dist/components/{p-4039ba55.js → p-e5edc56d.js} +2 -2
- package/dist/components/{p-4039ba55.js.map → p-e5edc56d.js.map} +1 -1
- package/dist/components/{p-e0e4416e.js → p-ebbe78de.js} +2 -2
- package/dist/components/p-ebbe78de.js.map +1 -0
- package/dist/components/{p-e197115b.js → p-fa14b406.js} +2 -2
- package/dist/components/{p-e197115b.js.map → p-fa14b406.js.map} +1 -1
- package/dist/components/stzh-accordion-item.js +1 -1
- package/dist/components/stzh-actionset.js +1 -1
- package/dist/components/stzh-amount.js +3 -3
- package/dist/components/stzh-appointments.js +5 -5
- package/dist/components/stzh-archivelist.js +1 -1
- package/dist/components/stzh-banner.js +1 -1
- package/dist/components/stzh-bathstatus-list.js +1 -1
- package/dist/components/stzh-button.js +1 -1
- package/dist/components/stzh-calendar.js +1 -1
- package/dist/components/stzh-card-searchresult.js +3 -3
- package/dist/components/stzh-card-superteaser.js +3 -3
- package/dist/components/stzh-card.js +1 -1
- package/dist/components/stzh-checkboxgroup.js +13 -12
- package/dist/components/stzh-checkboxgroup.js.map +1 -1
- package/dist/components/stzh-chipselect.js +1 -1
- package/dist/components/stzh-contact.js +2 -8
- package/dist/components/stzh-contact.js.map +1 -1
- package/dist/components/stzh-datalist-item.js +1 -1
- package/dist/components/stzh-datalist.js +1 -1
- package/dist/components/stzh-datamessagelist-item.js +1 -1
- package/dist/components/stzh-datatable.js +7 -7
- package/dist/components/stzh-datepicker.js +1 -1
- package/dist/components/stzh-dialog.js +1 -1
- package/dist/components/stzh-disturber.js +1 -1
- package/dist/components/stzh-dropdown.js +1 -1
- package/dist/components/stzh-eventdata.js +1 -1
- package/dist/components/stzh-eventdata.js.map +1 -1
- package/dist/components/stzh-feedreader.js +2 -2
- package/dist/components/stzh-gallery.js +1 -1
- package/dist/components/stzh-geo-ref-data.js +6 -6
- package/dist/components/stzh-ghettobox.js +1 -1
- package/dist/components/stzh-header.js +1 -1
- package/dist/components/stzh-http-error.js +1 -1
- package/dist/components/stzh-iframe.js +1 -1
- package/dist/components/stzh-input.js +1 -1
- package/dist/components/stzh-message.js +1 -1
- package/dist/components/stzh-microsite-teaserlist.js +7 -6
- package/dist/components/stzh-microsite-teaserlist.js.map +1 -1
- package/dist/components/stzh-monthyearpicker.js +1 -1
- package/dist/components/stzh-offline-indicator.js +3 -3
- package/dist/components/stzh-pagebottom.js +2 -2
- package/dist/components/stzh-pagination.js +1 -1
- package/dist/components/stzh-panorama.js +2 -2
- package/dist/components/stzh-poilist.js +4 -4
- package/dist/components/stzh-progressbar.js +26 -2
- package/dist/components/stzh-progressbar.js.map +1 -1
- package/dist/components/stzh-readspeaker.js +1 -1
- package/dist/components/stzh-saptcha.js +2 -2
- package/dist/components/stzh-search.js +6 -6
- package/dist/components/stzh-search.js.map +1 -1
- package/dist/components/stzh-share.js +1 -1
- package/dist/components/stzh-sitemap.js +3 -3
- package/dist/components/stzh-timepicker.js +1 -1
- package/dist/components/stzh-toast.js +1 -1
- package/dist/components/stzh-toastbar.js +1 -1
- package/dist/components/stzh-upload.js +31 -15
- package/dist/components/stzh-upload.js.map +1 -1
- package/dist/components/stzh-vbz-majorticker.js +3 -3
- package/dist/components/stzh-vbz-ticker.js +1 -1
- package/dist/components/stzh-youtube.js +2 -2
- package/dist/esm/{app-globals-30dc1fec.js → app-globals-1e3146bc.js} +2 -2
- package/dist/esm/{app-globals-30dc1fec.js.map → app-globals-1e3146bc.js.map} +1 -1
- package/dist/esm/{axios-e0a35239.js → axios-0cc95004.js} +51 -96
- package/dist/esm/axios-0cc95004.js.map +1 -0
- package/dist/esm/loader.js +2 -2
- package/dist/esm/stzh-accordion_3.entry.js +2 -7
- package/dist/esm/stzh-accordion_3.entry.js.map +1 -1
- package/dist/esm/stzh-badge_3.entry.js +1 -1
- package/dist/esm/stzh-badge_3.entry.js.map +1 -1
- package/dist/esm/stzh-bathstatus-list.entry.js +1 -1
- package/dist/esm/stzh-checkboxgroup.entry.js +12 -11
- package/dist/esm/stzh-checkboxgroup.entry.js.map +1 -1
- package/dist/esm/stzh-chipselect.entry.js +1 -1
- package/dist/esm/stzh-chipselect.entry.js.map +1 -1
- package/dist/esm/stzh-components.js +2 -2
- package/dist/esm/stzh-contact.entry.js +2 -8
- package/dist/esm/stzh-contact.entry.js.map +1 -1
- package/dist/esm/stzh-datalist_2.entry.js +1 -1
- package/dist/esm/stzh-datalist_2.entry.js.map +1 -1
- package/dist/esm/stzh-dialog.entry.js +1 -1
- package/dist/esm/stzh-dialog.entry.js.map +1 -1
- package/dist/esm/stzh-dropdown.entry.js +1 -1
- package/dist/esm/stzh-dropdown.entry.js.map +1 -1
- package/dist/esm/stzh-eventdata.entry.js +1 -1
- package/dist/esm/stzh-eventdata.entry.js.map +1 -1
- package/dist/esm/stzh-microsite-teaserlist.entry.js +3 -2
- package/dist/esm/stzh-microsite-teaserlist.entry.js.map +1 -1
- package/dist/esm/stzh-poilist.entry.js +1 -1
- package/dist/esm/stzh-progressbar.entry.js +24 -1
- package/dist/esm/stzh-progressbar.entry.js.map +1 -1
- package/dist/esm/stzh-search.entry.js +2 -2
- package/dist/esm/stzh-search.entry.js.map +1 -1
- package/dist/esm/stzh-upload.entry.js +23 -10
- package/dist/esm/stzh-upload.entry.js.map +1 -1
- package/dist/esm/stzh-vbz-majorticker.entry.js +1 -1
- package/dist/esm/stzh-vbz-ticker.entry.js +1 -1
- package/dist/stzh-components/assets/i18n/de.json +9 -5
- package/dist/stzh-components/assets/i18n/en.json +9 -5
- package/dist/stzh-components/p-129faf7d.entry.js +2 -0
- package/dist/stzh-components/p-129faf7d.entry.js.map +1 -0
- package/dist/stzh-components/{p-68dee00d.entry.js → p-23678dfc.entry.js} +2 -2
- package/dist/stzh-components/{p-68dee00d.entry.js.map → p-23678dfc.entry.js.map} +1 -1
- package/dist/stzh-components/p-345a1e99.js +2 -0
- package/dist/stzh-components/p-345a1e99.js.map +1 -0
- package/dist/stzh-components/{p-e5a451a0.entry.js → p-646958e0.entry.js} +2 -2
- package/dist/stzh-components/{p-025a5c2e.entry.js → p-66c866e5.entry.js} +2 -2
- package/dist/stzh-components/p-66c866e5.entry.js.map +1 -0
- package/dist/stzh-components/{p-232d017c.entry.js → p-6a3db3bd.entry.js} +2 -2
- package/dist/stzh-components/p-6a3db3bd.entry.js.map +1 -0
- package/dist/stzh-components/{p-ef38e1fe.entry.js → p-6f9626d1.entry.js} +2 -2
- package/dist/stzh-components/p-6f9626d1.entry.js.map +1 -0
- package/dist/stzh-components/p-75143e35.entry.js +2 -0
- package/dist/stzh-components/p-75143e35.entry.js.map +1 -0
- package/dist/stzh-components/{p-8aab9098.entry.js → p-7c5e34db.entry.js} +2 -2
- package/dist/stzh-components/{p-b2986e24.entry.js → p-809076ff.entry.js} +2 -2
- package/dist/stzh-components/p-84cedd61.entry.js +2 -0
- package/dist/stzh-components/p-84cedd61.entry.js.map +1 -0
- package/dist/stzh-components/{p-5bafa548.entry.js → p-84f8307b.entry.js} +2 -2
- package/dist/stzh-components/p-84f8307b.entry.js.map +1 -0
- package/dist/stzh-components/{p-7b2bd184.entry.js → p-8856651e.entry.js} +2 -2
- package/dist/stzh-components/{p-7b2bd184.entry.js.map → p-8856651e.entry.js.map} +1 -1
- package/dist/stzh-components/p-8c5fb0e2.entry.js +2 -0
- package/dist/stzh-components/{p-f156650a.entry.js.map → p-8c5fb0e2.entry.js.map} +1 -1
- package/dist/stzh-components/p-9f91ca1f.entry.js +2 -0
- package/dist/stzh-components/p-9f91ca1f.entry.js.map +1 -0
- package/dist/stzh-components/p-d41803d1.js +2 -0
- package/dist/stzh-components/{p-64ba89a2.js.map → p-d41803d1.js.map} +1 -1
- package/dist/stzh-components/{p-6f0cf6e3.entry.js → p-d97fbf1f.entry.js} +2 -2
- package/dist/stzh-components/p-fa4595c8.entry.js +2 -0
- package/dist/stzh-components/p-fa4595c8.entry.js.map +1 -0
- package/dist/stzh-components/p-fcc75797.entry.js +2 -0
- package/dist/stzh-components/p-fcc75797.entry.js.map +1 -0
- package/dist/stzh-components/stzh-components.esm.js +1 -1
- package/dist/stzh-components/stzh-components.esm.js.map +1 -1
- package/dist/types/components/stzh-accordion-item/stzh-accordion-item.d.ts +0 -1
- package/dist/types/components/stzh-checkboxgroup/stzh-checkboxgroup.d.ts +3 -3
- package/dist/types/components/stzh-microsite-teaserlist/stzh-microsite-teaserlist.d.ts +2 -2
- package/dist/types/components/stzh-progressbar/stzh-progressbar.d.ts +4 -0
- package/dist/types/components/stzh-upload/models/stzh-photographing-url-details.dto.d.ts +1 -0
- package/dist/types/components/stzh-upload/stzh-upload.d.ts +3 -0
- package/dist/types/components/stzh-upload/stzh-upload.localization.d.ts +2 -0
- package/dist/types/components.d.ts +8 -0
- package/dist/vscode-data.json +4 -0
- package/package.json +9 -5
- package/dist/cjs/axios-69bcb71f.js.map +0 -1
- package/dist/components/p-16892790.js.map +0 -1
- package/dist/components/p-20c7b76b.js +0 -265
- package/dist/components/p-20c7b76b.js.map +0 -1
- package/dist/components/p-2a870524.js.map +0 -1
- package/dist/components/p-3890d846.js.map +0 -1
- package/dist/components/p-d4aabf9c.js.map +0 -1
- package/dist/components/p-e0e4416e.js.map +0 -1
- package/dist/esm/axios-e0a35239.js.map +0 -1
- package/dist/stzh-components/p-025a5c2e.entry.js.map +0 -1
- package/dist/stzh-components/p-11abc40a.entry.js +0 -2
- package/dist/stzh-components/p-11abc40a.entry.js.map +0 -1
- package/dist/stzh-components/p-16892790.js +0 -2
- package/dist/stzh-components/p-16892790.js.map +0 -1
- package/dist/stzh-components/p-232d017c.entry.js.map +0 -1
- package/dist/stzh-components/p-5ac0220a.entry.js +0 -2
- package/dist/stzh-components/p-5ac0220a.entry.js.map +0 -1
- package/dist/stzh-components/p-5bafa548.entry.js.map +0 -1
- package/dist/stzh-components/p-64ba89a2.js +0 -2
- package/dist/stzh-components/p-95427be2.entry.js +0 -2
- package/dist/stzh-components/p-95427be2.entry.js.map +0 -1
- package/dist/stzh-components/p-973c5df2.entry.js +0 -2
- package/dist/stzh-components/p-973c5df2.entry.js.map +0 -1
- package/dist/stzh-components/p-aff2ca5f.entry.js +0 -2
- package/dist/stzh-components/p-aff2ca5f.entry.js.map +0 -1
- package/dist/stzh-components/p-da2c88a2.entry.js +0 -2
- package/dist/stzh-components/p-da2c88a2.entry.js.map +0 -1
- package/dist/stzh-components/p-ef38e1fe.entry.js.map +0 -1
- package/dist/stzh-components/p-f156650a.entry.js +0 -2
- /package/dist/stzh-components/{p-e5a451a0.entry.js.map → p-646958e0.entry.js.map} +0 -0
- /package/dist/stzh-components/{p-8aab9098.entry.js.map → p-7c5e34db.entry.js.map} +0 -0
- /package/dist/stzh-components/{p-b2986e24.entry.js.map → p-809076ff.entry.js.map} +0 -0
- /package/dist/stzh-components/{p-6f0cf6e3.entry.js.map → p-d97fbf1f.entry.js.map} +0 -0
|
@@ -124,6 +124,9 @@ export class StzhUpload {
|
|
|
124
124
|
this.environment = undefined;
|
|
125
125
|
this.totalFileSize = 0;
|
|
126
126
|
this.duplicateDetected = false;
|
|
127
|
+
this.totalTooBig = false;
|
|
128
|
+
this.totalTooBigMessageHeading = "";
|
|
129
|
+
this.totalTooBigMessageBody = "";
|
|
127
130
|
this.totalFilesState = [];
|
|
128
131
|
this.duplicateFileName = "";
|
|
129
132
|
this.duplicateFileSize = "";
|
|
@@ -207,7 +210,9 @@ export class StzhUpload {
|
|
|
207
210
|
if (input === "" || input === undefined) {
|
|
208
211
|
input = this.localization.photographingLabelDefault;
|
|
209
212
|
}
|
|
210
|
-
|
|
213
|
+
let cleanStr = input.replaceAll('/', '-');
|
|
214
|
+
// @ts-ignore
|
|
215
|
+
return encodeURIComponent(cleanStr.replaceAll('%', ''));
|
|
211
216
|
}
|
|
212
217
|
async getToken() {
|
|
213
218
|
if (this.photographingToken &&
|
|
@@ -257,10 +262,11 @@ export class StzhUpload {
|
|
|
257
262
|
const params = new URLSearchParams(urlObject.search);
|
|
258
263
|
this.photographingUrlDetails = {
|
|
259
264
|
url: url.url,
|
|
260
|
-
userId: params.get("id")
|
|
265
|
+
userId: params.get("id"),
|
|
266
|
+
label: this.cleanLabel(this.label)
|
|
261
267
|
};
|
|
262
268
|
try {
|
|
263
|
-
await QRCode.toCanvas(this.photographingQrcodeElement, url.url);
|
|
269
|
+
await QRCode.toCanvas(this.photographingQrcodeElement, url.url + '&label=' + this.cleanLabel(this.label));
|
|
264
270
|
}
|
|
265
271
|
catch (error) {
|
|
266
272
|
console.error("Error generating QR code:", error);
|
|
@@ -509,6 +515,7 @@ export class StzhUpload {
|
|
|
509
515
|
}
|
|
510
516
|
if (self.preventDuplicateFileNames) {
|
|
511
517
|
if (self.totalFilesState.length > 0) {
|
|
518
|
+
self.duplicateDetected = false; // reset
|
|
512
519
|
self.totalFilesState.forEach((f) => {
|
|
513
520
|
if (file.name === f.name && file._id !== f._id) {
|
|
514
521
|
self.duplicateDetected = true;
|
|
@@ -525,11 +532,19 @@ export class StzhUpload {
|
|
|
525
532
|
}
|
|
526
533
|
const fileSizeInMiB = file.size / (1024 * 1024);
|
|
527
534
|
if (self.totalFileSize + fileSizeInMiB > self.maxFilesizeTotal) {
|
|
528
|
-
self.
|
|
529
|
-
|
|
530
|
-
|
|
535
|
+
self.totalTooBig = true;
|
|
536
|
+
self.totalTooBigMessageHeading = self.localization.fileTooBigTotal.replace("{{totalFilesize}}", `${(self.totalFileSize + fileSizeInMiB).toFixed(1)}`);
|
|
537
|
+
self.totalTooBigMessageBody = self.localization.fileTooBigTotal2.replace("{{maxFilesizeTotal}}", `${self.maxFilesizeTotal}`);
|
|
538
|
+
self.totalFilesState = self.totalFilesState.filter(f => f.name !== file.name);
|
|
539
|
+
let sessCheck = sessionStorage.getItem("totalFilesState");
|
|
540
|
+
if (sessCheck) {
|
|
541
|
+
sessionStorage.setItem("totalFilesState", JSON.stringify(self.totalFilesState));
|
|
542
|
+
}
|
|
531
543
|
return;
|
|
532
544
|
}
|
|
545
|
+
else {
|
|
546
|
+
self.totalTooBig = false;
|
|
547
|
+
}
|
|
533
548
|
self.totalFileSize += fileSizeInMiB;
|
|
534
549
|
if (this.previewsContainer && !this.options.disablePreviews) {
|
|
535
550
|
file.previewElement = window.Dropzone.createElement(this.options.previewTemplate.trim());
|
|
@@ -879,9 +894,7 @@ export class StzhUpload {
|
|
|
879
894
|
const descriptionTotalFileSizeLimit = this.localization.descriptionTotalFileSizeLimit;
|
|
880
895
|
return (h(Host, { "is-invalid": this.invalid || errorUsed }, h("stzh-toastbar", null), h("div", { class: classes, ref: el => (this.dropzoneElement = el) }, h("div", { ref: el => (this.hiddenInputContainerElement = el) }), h("div", { id: `${this.uploadId}-label` }, this.label && h("div", { class: "stzh-upload__label" }, this.label)), h("div", { class: "stzh-upload__clickarea", ref: el => (this.clickareaElement = el) }, h("div", { class: "stzh-upload__heading-wrapper" }, h("div", { class: "stzh-upload__heading-inner-wrapper" }, h("div", { class: "stzh-upload__heading" }, this.heading ? this.heading : this.localization.heading), h("div", { class: "stzh-upload__buttons-wrapper" }, h("stzh-button", { class: "stzh-upload__button", variant: "secondary", size: "small", ref: el => (this.linkElement = el), label: this.button ? this.button : this.localization.button, a11yDescribedby: `${this.uploadId}-label ${this.uploadId}-instruction ${this.uploadId}-description`, disabled: this.disabled, a11yControls: `${this.uploadId}-previews` }, h("stzh-icon", { slot: "icon", name: "upload" })), this.isPhotographingAvailable && (h("stzh-button", { class: "stzh-upload__button-scan", variant: "secondary", size: "small", label: this.buttonScan ? this.buttonScan : this.localization.buttonScan, onClick: this.onButtonScanClick }, h("stzh-icon", { slot: "icon", name: "camera" })))), h("div", { class: "stzh-upload__hint-wrapper" }, h("span", null, this.localization.buttonIntro)))), h("div", { class: "stzh-upload__instructions", id: `${this.uploadId}-instruction` }, h("p", null, description
|
|
881
896
|
.replace("{{fileformats}}", this.acceptedFiles ? this.acceptedFiles : "Alle")
|
|
882
|
-
.replace("{{filesize}}", `${this.maxFilesize}`), h("br", null), descriptionTotalFileSizeLimit.replace("{{maxFilesizeTotal}}", `${this.maxFilesizeTotal}`)))), h("div", { class: "stzh-upload__description-wrapper" }, ((_b = this._error) === null || _b === void 0 ? void 0 : _b.length) > 0 && (h(StzhInputDescription, { classPrefix: "stzh-upload", id: `${this.uploadId}-description`, error: this._error }))), h("div", { id: `${this.uploadId}-previews`, class: "stzh-upload__previews-wrapper" }, h("div", { class: "stzh-upload__previews-inner-wrapper" }, h("div", { class: "stzh-upload__errors", ref: el => (this.errorsElement = el) }), h("div", { class: "stzh-upload__previews dropzone-previews", ref: el => (this.previewsElement = el) })))), this.duplicateDetected && (h("div", { class: "stzh-upload__previews-message-wrapper" }, h("stzh-message", { type: "error", label: this.localization.duplicateFileUploadHeading, onStzhClose: () => this.duplicateDetected = false }, h("stzh-text", null, h("p", null, "\u00AB", this.duplicateFileName, "\u00BB (", this.duplicateFileSize, ")"), h("p", null, this.localization.duplicateFileUploadParagraph))))), h("stzh-dialog", { ref: el => (this.photographingOverlayElement = el), onStzhClose: this.closePhotographingWebsocketConnection, class: this.isPhotographingAvailable && "stzh-dialog--fit-content" }, h("stzh-button", { class: "stzh-upload-photographing__back-button", icon: "arrow-left", size: "small", variant: "tertiary-plain", "no-padding-left": "true", "no-padding-right": "true", onClick: this.closePhotographingOverlay }, this.localization.back), this.isPhotographingAvailable && (h(Fragment, null, h("div", { class: "stzh-upload-photographing__info" }, h("stzh-heading", { level: "3" }, this.localization.photographingTitle1), h("div", { class: "stzh-upload-photographing__text-qrcode" }, h("div", { class: "stzh-upload-photographing-qrlink-container" }, h("stzh-text", null, this.localization.photographingText1), !!this.photographingUrlDetails && (h("stzh-link", { class: "stzh-upload-photographing-link",
|
|
883
|
-
// href={this.photographingUrlDetails.url + "&label=" + encodeURIComponent(this.label)}
|
|
884
|
-
href: this.photographingUrlDetails.url + "&label=" + this.cleanLabel(this.label), target: "_blank" }, this.photographingUrlDetails.url + "&label=" + this.cleanLabel(this.label)))), h("div", { class: "stzh-upload-photographing-qrcode-container" }, h("canvas", { class: "stzh-upload-photographing-qrcode", ref: el => (this.photographingQrcodeElement = el) })))), h("div", { class: "stzh-upload-photographing__info" }, h("stzh-heading", { level: "3" }, this.localization.photographingTitle2), h("stzh-text", null, this.localization.photographingText2)))))));
|
|
897
|
+
.replace("{{filesize}}", `${this.maxFilesize}`), h("br", null), descriptionTotalFileSizeLimit.replace("{{maxFilesizeTotal}}", `${this.maxFilesizeTotal}`)))), h("div", { class: "stzh-upload__description-wrapper" }, ((_b = this._error) === null || _b === void 0 ? void 0 : _b.length) > 0 && (h(StzhInputDescription, { classPrefix: "stzh-upload", id: `${this.uploadId}-description`, error: this._error }))), h("div", { id: `${this.uploadId}-previews`, class: "stzh-upload__previews-wrapper" }, h("div", { class: "stzh-upload__previews-inner-wrapper" }, h("div", { class: "stzh-upload__errors", ref: el => (this.errorsElement = el) }), h("div", { class: "stzh-upload__previews dropzone-previews", ref: el => (this.previewsElement = el) })))), this.duplicateDetected && (h("div", { class: "stzh-upload__previews-message-wrapper" }, h("stzh-message", { type: "error", label: this.localization.duplicateFileUploadHeading, onStzhClose: () => this.duplicateDetected = false }, h("stzh-text", null, h("p", null, "\u00AB", this.duplicateFileName, "\u00BB (", this.duplicateFileSize, ")"), h("p", null, this.localization.duplicateFileUploadParagraph))))), this.totalTooBig && (h("div", { class: "stzh-upload__previews-message-wrapper" }, h("stzh-message", { type: "error", label: this.totalTooBigMessageHeading, onStzhClose: () => this.totalTooBig = false }, h("stzh-text", null, h("p", null, this.totalTooBigMessageBody))))), h("stzh-dialog", { ref: el => (this.photographingOverlayElement = el), onStzhClose: this.closePhotographingWebsocketConnection, class: this.isPhotographingAvailable && "stzh-dialog--fit-content" }, h("stzh-button", { class: "stzh-upload-photographing__back-button", icon: "arrow-left", size: "small", variant: "tertiary-plain", "no-padding-left": "true", "no-padding-right": "true", onClick: this.closePhotographingOverlay }, this.localization.back), this.isPhotographingAvailable && (h(Fragment, null, h("div", { class: "stzh-upload-photographing__info" }, h("stzh-heading", { level: "3" }, this.localization.photographingTitle1), h("div", { class: "stzh-upload-photographing__text-qrcode" }, h("div", { class: "stzh-upload-photographing-qrlink-container" }, h("stzh-text", null, this.localization.photographingText1)), h("div", { class: "stzh-upload-photographing-qrcode-container" }, h("canvas", { class: "stzh-upload-photographing-qrcode", ref: el => (this.photographingQrcodeElement = el) })))), h("div", { class: "stzh-upload-photographing__info" }, h("stzh-heading", { level: "3" }, this.localization.photographingTitle2), h("stzh-text", null, this.localization.photographingText2)), h("div", { class: "stzh-upload-photographing__continue" }, !!this.photographingUrlDetails && (h("stzh-link", { class: "stzh-upload-photographing-link", href: this.photographingUrlDetails.url + "&label=" + this.cleanLabel(this.label), target: "_blank" }, this.localization.photographingContinue))))))));
|
|
885
898
|
}
|
|
886
899
|
static get is() { return "stzh-upload"; }
|
|
887
900
|
static get originalStyleUrls() {
|
|
@@ -1665,7 +1678,7 @@ export class StzhUpload {
|
|
|
1665
1678
|
"mutable": false,
|
|
1666
1679
|
"complexType": {
|
|
1667
1680
|
"original": "StzhUploadLocalizedText",
|
|
1668
|
-
"resolved": "StzhLocaleComponent & { heading: string; description: string; descriptionTotalFileSizeLimit: string; buttonIntro: string; button: string; buttonScan: string; cancelUpload: string; uploadCanceled: string; cancelUploadConfirmation: string; removeFile: string; deleteFile: string; downloadFile: string; maxFilesExceeded: string; serverError: string; accessError: string; responseError: string; invalidFileType: string; fileTooBig: string; fileTooBigTotal: string; fileTooBigServer: string; photographingTitle1: string; photographingText1: string; photographingTitle2: string; photographingText2: string; back: string; uploadSuccessToast: string; uploadErrorToast: string; photographingLabelDefault: string; duplicateFileUploadHeading: string; duplicateFileUploadParagraph: string; }",
|
|
1681
|
+
"resolved": "StzhLocaleComponent & { heading: string; description: string; descriptionTotalFileSizeLimit: string; buttonIntro: string; button: string; buttonScan: string; cancelUpload: string; uploadCanceled: string; cancelUploadConfirmation: string; removeFile: string; deleteFile: string; downloadFile: string; maxFilesExceeded: string; serverError: string; accessError: string; responseError: string; invalidFileType: string; fileTooBig: string; fileTooBigTotal: string; fileTooBigTotal2: string; fileTooBigServer: string; photographingTitle1: string; photographingText1: string; photographingTitle2: string; photographingText2: string; photographingContinue: string; back: string; uploadSuccessToast: string; uploadErrorToast: string; photographingLabelDefault: string; duplicateFileUploadHeading: string; duplicateFileUploadParagraph: string; }",
|
|
1669
1682
|
"references": {
|
|
1670
1683
|
"StzhUploadLocalizedText": {
|
|
1671
1684
|
"location": "import",
|
|
@@ -1688,6 +1701,9 @@ export class StzhUpload {
|
|
|
1688
1701
|
"environment": {},
|
|
1689
1702
|
"totalFileSize": {},
|
|
1690
1703
|
"duplicateDetected": {},
|
|
1704
|
+
"totalTooBig": {},
|
|
1705
|
+
"totalTooBigMessageHeading": {},
|
|
1706
|
+
"totalTooBigMessageBody": {},
|
|
1691
1707
|
"totalFilesState": {},
|
|
1692
1708
|
"duplicateFileName": {},
|
|
1693
1709
|
"duplicateFileSize": {},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stzh-upload.js","sourceRoot":"","sources":["../../../../src/components/stzh-upload/stzh-upload.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Element,\n Event,\n EventEmitter,\n Fragment,\n h,\n Host,\n Listen,\n Method,\n Prop,\n State,\n Watch\n} from \"@stencil/core\";\n\nimport {\n StzhToastType,\n StzhUploadCanceledEvent,\n StzhUploadCanceledMultipleEvent,\n StzhUploadCompleteEvent,\n StzhUploadCompleteMultipleEvent,\n StzhUploadErrorEvent,\n StzhUploadErrorMultipleEvent,\n StzhUploadFile,\n StzhUploadFileAddedEvent,\n StzhUploadFileRemovedEvent,\n StzhUploadFileRemoveEvent,\n StzhUploadFilesAddedEvent,\n StzhUploadFilesItem,\n StzhUploadProcessingEvent,\n StzhUploadProcessingMultipleEvent,\n StzhUploadProgressEvent,\n StzhUploadProgressTotalEvent,\n StzhUploadSendingEvent,\n StzhUploadSendingMultipleEvent,\n StzhUploadSuccessEvent,\n StzhUploadSuccessMultipleEvent\n} from \"../../index\";\n\nimport { getStzhEnvironment, hasSlot, isStzhElement, StzhEnvironmentEnum } from \"../../utils/utils\";\nimport { StzhUploadLocalizedText } from \"./stzh-upload.localization\";\nimport { StzhInputDescription } from \"../stzh-input/stzh-input-description\";\n\nimport \"../../libraries/dropzone/dropzone\";\nimport { StzhPhotographingUrlDetailsDto } from \"./models/stzh-photographing-url-details.dto\";\nimport { StzhPhotographingConfigurationDto } from \"./models/stzh-photographing-configuration.dto\";\nimport QRCode from \"qrcode\";\nimport { StzhPhotographingPdfFileDto } from \"./models/stzh-photographing-pdf-file.dto\";\n\nwindow.Dropzone.autoDiscover = false;\n\nconst ATTR_NAME = \"data-dz-name\";\nconst ATTR_TYPE = \"data-dz-type\";\nconst ATTR_SIZE = \"data-dz-size\";\nconst ATTR_LINK = \"data-dz-link\";\nconst ATTR_EXTENSION = \"data-dz-extension\";\nconst ATTR_META_ID = \"data-dz-meta-id\";\nconst ATTR_ERROR_MESSAGE_ID = \"data-dz-error-message-id\";\nconst ATTR_PROGRESS_TEXT = \"data-dz-progress-text\";\nconst ATTR_REMOVE = \"data-dz-remove\";\n\nlet uploadCounter = 0;\nlet previewCounter = 0;\n\n// Most properties taken over from:\n// https://github.com/dropzone/dropzone/blob/v5.9.3/src/options.js\n\n// Possible events to listen to:\n// https://github.com/dropzone/dropzone/blob/v5.9.3/src/dropzone.js#L17\n\n/**\n * @slot error - Slot for error\n */\n@Component({\n tag: \"stzh-upload\",\n styleUrl: \"stzh-upload.scss\"\n})\nexport class StzhUpload {\n /**\n * Initially pre-existing files (e.g. already uploaded by the user).\n * Array of objects that must at least include `name` and `size` attribute:\n * `[{\"name\":\"file1.txt\", \"size\": 12345}, {\"name\":\"file2.txt\", \"size\": 12345}]`\n */\n @Prop() existingFiles: StzhUploadFilesItem[] | string = [];\n private _existingFiles: StzhUploadFilesItem[] = [];\n\n /** Name of hidden input field */\n @Prop() name: string = \"\";\n\n /** Label */\n @Prop() label: string = \"\";\n\n /** Instructions heading */\n @Prop() heading: string = \"\";\n\n /** Instructions description */\n @Prop() description: string = \"\";\n\n /** Button text */\n @Prop() button: string = \"\";\n\n /** Scan Button text */\n @Prop() buttonScan: string = \"\";\n\n /** Scan Button text */\n @Prop({ mutable: true }) photographingEnabled: boolean = false;\n\n /** Disable toasts on upload success and error */\n @Prop() disableToasts: boolean = false;\n\n /**\n * URL the files are processed to.\n *\n * You can also provide a function that will be called with `files` and\n * `dataBlocks` and must return the url as string.\n */\n @Prop() url: string | Function = \"\";\n\n /**\n * Can be changed to `\"put\"` if necessary. You can also provide a function\n * that will be called with `files` and must return the method.\n */\n @Prop() method: \"post\" | \"put\" | Function = \"post\";\n\n /**\n * Will be set on the XHRequest.\n */\n @Prop() withCredentials: boolean = false;\n\n /**\n * Whether the upload is disabled or not.\n */\n @Prop({ reflect: true }) disabled: boolean = false;\n\n /**\n * Whether the upload is marked as invalid.\n */\n @Prop({ reflect: true }) invalid: boolean = false;\n\n /** Whether download functionality should be disabled. */\n @Prop() downloadDisabled: boolean = false;\n\n /** Whether download functionality should only be shown to completed files. */\n @Prop() downloadDisabledWhileProcessing: boolean = false;\n\n /** One or multiple error message (use error slot as alternative) */\n @Prop() error: string | string[];\n private _error: string[];\n\n /**\n * The default implementation of `accept` checks the file's mime type or\n * extension against this list. This is a comma separated list of mime\n * types or file extensions.\n *\n * Eg.: `image/*,application/pdf,.psd`\n *\n * This option will also be used as\n * [`accept`](https://developer.mozilla.org/en-US/docs/HTML/Element/input#attr-accept)\n * parameter on the hidden file input as well.\n */\n @Prop() acceptedFiles: string | null = null;\n\n /**\n * If false, files will be added to the queue but the queue will not be\n * processed automatically.\n * This can be useful if you need some additional user input before sending\n * files (or if you want want all files sent at once).\n * If you're ready to send the file simply call `element.processQueue()`.\n */\n @Prop() autoProcessQueue: boolean = true;\n\n /**\n * Hide progress (bars and text).\n */\n @Prop() hideProgress: boolean = false;\n\n /**\n * Hide progress (bars) only while idle (will show them as soon as upload starts).\n * Can be used together with `autoProcessQueue`, e.g. if files are uploaded at form submit to prevent showing empty progressbar.\n */\n @Prop() hideProgressWhileIdle: boolean = false;\n\n /**\n * If not `null` defines how many files this dropzone handles. If it exceeds,\n * the event `stzhMaxfilesexceeded` will be called.\n */\n @Prop() maxFiles: number | null = null;\n\n /**\n * The maximum filesize (in MiB) that is allowed to be uploaded per file.\n */\n @Prop() maxFilesize: number = 25;\n\n /**\n * The maximum filesize (in MiB) that is allowed to be uploaded over all files.\n */\n @Prop() maxFilesizeTotal: number = 100;\n\n /**\n * How many file uploads to process in parallel.\n */\n @Prop() parallelUploads: number = 2;\n\n /**\n * Whether to send multiple files in one request. If\n * this it set to true, then the fallback file input element will\n * have the `multiple` attribute as well. This option will\n * also trigger additional events (like `stzhSuccessMultiple`). See the events\n * documentation section for more information.\n */\n @Prop() uploadMultiple: boolean = false;\n\n /**\n * Whether you want files to be uploaded in chunks to your server. This can't be\n * used in combination with `uploadMultiple`.\n *\n * See `chunksUploaded` prop for the callback to finalise an upload.\n */\n @Prop() chunking: boolean = false;\n\n /**\n * If `chunking` is enabled, this defines whether **every** file should be chunked,\n * even if the file size is below chunkSize. This means, that the additional chunk\n * form data will be submitted and the `chunksUploaded` callback will be invoked.\n */\n @Prop() forceChunking: boolean = false;\n\n /**\n * If `chunking` is `true`, then this defines the chunk size in bytes.\n */\n @Prop() chunkSize: number = 2 * 1024 * 1024;\n\n /**\n * If `true`, the individual chunks of a file are being uploaded simultaneously.\n */\n @Prop() parallelChunkUploads: boolean = false;\n\n /**\n * Whether a chunk should be retried if it fails.\n */\n @Prop() retryChunks: boolean = false;\n\n /**\n * If `retryChunks` is true, how many times should it be retried.\n */\n @Prop() retryChunksLimit: number = 3;\n\n /**\n * The base that is used to calculate the **displayed** filesize. You can\n * change this to 1024 if you would rather display kibibytes, mebibytes,\n * etc... 1024 is technically incorrect, because `1024 bytes` are `1 kibibyte`\n * not `1 kilobyte`. You can change this to `1024` if you don't care about\n * validity.\n */\n @Prop() filesizeBase: number = 1024;\n\n /**\n * An optional object to send additional headers to the server. Eg:\n * `{ \"My-Awesome-Header\": \"header value\" }`\n *\n * Can also be set as function returning the headers object dynamically.\n * If you want to use an async function, use \"headersAsync\" prop.\n */\n @Prop() headers: object | ((Dropzone: any) => { [key: string]: string }) | null = null;\n\n /**\n * An optional function providing headers asynchronously. If you use that,\n * it will automatically set 'autoProcessQueue' to 'false'.\n * The component will still automatically process the queue, but in a different\n * way (workaround since dropzone not supporting async headers).\n */\n @Prop() headersAsync: (() => Promise<{ [key: string]: string }>) | null = null;\n\n /**\n * Should the default headers be set or not?\n * Accept: application/json <- for requesting json response\n * Cache-Control: no-cache <- Request shouldnt be cached\n * X-Requested-With: XMLHttpRequest <- We sent the request via XMLHttpRequest\n */\n @Prop() defaultHeaders: boolean = true;\n\n /**\n * Whether it is possible to upload files with identical names.\n */\n @Prop() preventDuplicateFileNames: boolean = false;\n\n /**\n * A function that gets a [file](https://developer.mozilla.org/en-US/docs/DOM/File)\n * and a `done` function as parameters.\n *\n * If the done function is invoked without arguments, the file is \"accepted\" and will\n * be processed. If you pass an error message, the file is rejected, and the error\n * message will be displayed.\n * This function will not be called if the file is too big or doesn't match the mime types.\n */\n @Prop() accept: Function = function(_file, done) {\n return done();\n };\n\n /**\n * The callback that will be invoked when all chunks have been uploaded for a file.\n * It gets the file for which the chunks have been uploaded as the first parameter,\n * and the `done` function as second. `done()` needs to be invoked when everything\n * needed to finish the upload process is done.\n */\n @Prop() chunksUploaded: Function = function(_file, done) {\n done();\n };\n\n /**\n * This is the element the hidden input field (which is used when clicking on the\n * dropzone to trigger file selection) will be appended to. This might\n * be important in case you use frameworks to switch the content of your page.\n *\n * Can be a selector string, or an element directly. Will be rendered into element by default.\n */\n @Prop() hiddenInputContainer: string | HTMLElement;\n\n /**\n * Prevent clearing hidden input after adding a new file.\n * (use if you want to send the hidden input field with native form instead of ajax)\n */\n @Prop() preventHiddenInputClear: boolean = false;\n\n /** Translation strings. */\n @Prop() localization: StzhUploadLocalizedText;\n\n @State() environment: StzhEnvironmentEnum | undefined;\n @State() totalFileSize: number = 0;\n @State() duplicateDetected: boolean = false;\n @State() totalFilesState: Array<any> = [];\n @State() duplicateFileName: string = \"\";\n @State() duplicateFileSize: string = \"\";\n\n @Element() element: HTMLStzhUploadElement;\n\n @Listen(\"reset\", { target: \"document\" })\n resetListener(event: Event) {\n if ((event.target as HTMLElement).contains(this.element)) {\n requestAnimationFrame(() => {\n this.handleReset();\n });\n }\n }\n\n @Watch(\"name\")\n nameWatcher(newValue: string) {\n const input = this.hiddenInputContainerElement?.querySelector(\"input\");\n\n if (input) {\n input.setAttribute(\"name\", newValue);\n }\n }\n\n @Watch(\"maxFiles\")\n maxFilesWatcher(newMaxFiles: number | null) {\n this.dropzone.options.maxFiles = newMaxFiles;\n }\n\n @Watch(\"maxFilesize\")\n maxFilesizeWatcher(newMaxFilesize: number) {\n this.dropzone.options.maxFilesize = newMaxFilesize;\n }\n\n @Watch(\"existingFiles\")\n existingFilesWatcher(newValue: StzhUploadFilesItem[] | string) {\n if (typeof newValue === \"string\") {\n this._existingFiles = JSON.parse(newValue);\n } else {\n this._existingFiles = newValue;\n }\n }\n\n @Watch(\"disabled\")\n disabledWatcher() {\n if (!this.dropzone) {\n return;\n }\n\n if (this.disabled) {\n this.dropzone.disable();\n } else {\n this.dropzone.enable();\n }\n }\n\n @Watch(\"error\")\n errorWatcher(newValue: string | string[]) {\n if (typeof newValue === \"string\") {\n try {\n this._error = JSON.parse(newValue);\n } catch (e) {\n if (newValue) {\n this._error = [newValue];\n } else {\n this._error = [];\n }\n }\n } else if (newValue) {\n this._error = newValue;\n } else {\n this._error = [];\n }\n }\n\n /** File added */\n @Event() stzhFileAdded: EventEmitter<StzhUploadFileAddedEvent>;\n\n /** Files added (multiple) */\n @Event() stzhFilesAdded: EventEmitter<StzhUploadFilesAddedEvent>;\n\n /** File remove (before, cancelable) */\n @Event() stzhFileRemove: EventEmitter<StzhUploadFileRemoveEvent>;\n\n /** File removed */\n @Event() stzhFileRemoved: EventEmitter<StzhUploadFileRemovedEvent>;\n\n /** Before sending file (add additional data before request if necessary) */\n @Event() stzhSending: EventEmitter<StzhUploadSendingEvent>;\n\n /** Before sending multiple files (add additional data before request if necessary) */\n @Event() stzhSendingMultiple: EventEmitter<StzhUploadSendingMultipleEvent>;\n\n /** Files starting to get processed */\n @Event() stzhProcessing: EventEmitter<StzhUploadProcessingEvent>;\n\n /** Files starting to get processed (multiple) */\n @Event() stzhProcessingMultiple: EventEmitter<StzhUploadProcessingMultipleEvent>;\n\n /** Upload file progress during upload */\n @Event() stzhProgress: EventEmitter<StzhUploadProgressEvent>;\n\n /** Upload total file progress during upload */\n @Event() stzhProgressTotal: EventEmitter<StzhUploadProgressTotalEvent>;\n\n /** File error */\n @Event() stzhError: EventEmitter<StzhUploadErrorEvent>;\n\n /** Files error (multiple files) */\n @Event() stzhErrorMultiple: EventEmitter<StzhUploadErrorMultipleEvent>;\n\n /** File successfully uploaded */\n @Event() stzhSuccess: EventEmitter<StzhUploadSuccessEvent>;\n\n /** Files successfully uploaded (multiple files) */\n @Event() stzhSuccessMultiple: EventEmitter<StzhUploadSuccessMultipleEvent>;\n\n /** Canceled file upload */\n @Event() stzhCanceled: EventEmitter<StzhUploadCanceledEvent>;\n\n /** Canceled file upload (multiple files) */\n @Event() stzhCanceledMultiple: EventEmitter<StzhUploadCanceledMultipleEvent>;\n\n /** Completed upload (successfully or with error) */\n @Event() stzhComplete: EventEmitter<StzhUploadCompleteEvent>;\n\n /** Completed upload (successfully or with error, multiple files) */\n @Event() stzhCompleteMultiple: EventEmitter<StzhUploadCompleteMultipleEvent>;\n\n @Method()\n async processQueue() {\n return this.dropzone.processQueue();\n }\n\n @Method()\n async removeFile(file, force = false) {\n return this.dropzone.removeFile(file, force);\n }\n\n @Method()\n async removeAllFiles(cancelIfNecessary = false, force = false) {\n return this.dropzone.removeAllFiles(cancelIfNecessary, force);\n }\n\n private dropzone: any;\n private dropzoneElement: HTMLElement;\n private linkElement: HTMLStzhButtonElement;\n private clickareaElement: HTMLElement;\n private previewsElement: HTMLElement;\n private errorsElement: HTMLElement;\n private hiddenInputContainerElement: HTMLElement;\n private uploadId: string;\n\n /* Photographing */\n private photographingOverlayElement: HTMLStzhOverlayElement;\n private photographingQrcodeElement: HTMLCanvasElement;\n private PHOTOGRAPHING_BASE_URL = \"/appl/mobiscan/rs\";\n private PHOTOGRAPHING_ENDPOINTS = {\n PING: \"/ping\",\n URL: \"/url\",\n IMAGE: \"/image\",\n CONFIG: \"/config\",\n AUTH: \"/auth\"\n };\n @State() isPhotographingAvailable: boolean = false;\n @State() photographingUrlDetails: StzhPhotographingUrlDetailsDto | undefined;\n @State() photographingHost: string;\n @State() photographingConfig: StzhPhotographingConfigurationDto | undefined;\n @State() photographingWebsocket: WebSocket | undefined;\n @State() photographingToken: { access_token: string; expires_in: number } | undefined;\n\n private handleReset = () => {\n this.removeAllFiles(true);\n };\n\n private cleanLabel(input) {\n if(input === \"\" || input === undefined) {\n input = this.localization.photographingLabelDefault;\n }\n return encodeURIComponent(input.replaceAll('%', ''));\n }\n\n private async getToken() {\n if (\n this.photographingToken &&\n this.photographingToken.access_token &&\n Date.now() < this.photographingToken.expires_in\n ) {\n return this.photographingToken;\n } else {\n return await this.requestPhotographingToken();\n }\n }\n\n private async requestPhotographingToken() {\n try {\n const response = await fetch(\n `${this.photographingHost}${this.PHOTOGRAPHING_BASE_URL}${this.PHOTOGRAPHING_ENDPOINTS.AUTH}`\n );\n if (!response.ok) {\n throw new Error(\"Token retrieval failed\");\n }\n const parsedResponse = await response.json();\n this.photographingToken = {\n access_token: parsedResponse.access_token,\n expires_in: Date.now() + parsedResponse.expires_in * 1000\n };\n return this.photographingToken;\n } catch (error) {\n console.error(\"Token retrieval failed\", error);\n throw new Error(\"Token retrieval failed\");\n }\n }\n\n private async initializePhotographingWithEnvironment(environment: StzhEnvironmentEnum) {\n this.photographingHost = this.getPhotographingHostForEnvironment(environment);\n await this.setPhotographingConfig();\n // if (this.photographingConfig) {\n if (this.photographingConfig && this.photographingEnabled === true) {\n await this.checkPhotographingAvailability();\n }\n }\n\n private async startPhotographingUserSession() {\n try {\n const response = await fetch(\n `${this.photographingConfig.publicEndpoint}${this.PHOTOGRAPHING_ENDPOINTS.URL}`,\n await this.getPhotographingHttpOptionsWithToken()\n );\n if (!response.ok) {\n // Nothing to do here. Just don't show the photographing button.\n } else {\n const url: StzhPhotographingUrlDetailsDto = await response.json();\n const urlObject = new URL(url.url);\n const params = new URLSearchParams(urlObject.search);\n this.photographingUrlDetails = {\n url: url.url,\n userId: params.get(\"id\")\n };\n try {\n await QRCode.toCanvas(this.photographingQrcodeElement, url.url);\n } catch (error) {\n console.error(\"Error generating QR code:\", error);\n }\n await this.establishPhotographingWebsocketConnection();\n }\n } catch (startPhotographingUserSessionException) {\n console.error(\n `StzhUpload.startPhotographingUserSession() - startPhotographingUserSessionException:`,\n startPhotographingUserSessionException\n );\n }\n }\n\n private async retrievePhotographingPdf() {\n try {\n const response = await fetch(\n `${this.photographingConfig.publicEndpoint}${this.PHOTOGRAPHING_ENDPOINTS.IMAGE}/retrieve-pdf?id=${this.photographingUrlDetails.userId}&label=${this.cleanLabel(this.label)}`,\n await this.getPhotographingHttpOptionsWithToken()\n );\n if (!response.ok) {\n console.error(`StzhUpload.retrievePhotographingPdf() - HTTP error! status: ${response.status}`);\n } else {\n const parsedResponse: StzhPhotographingPdfFileDto = await response.json();\n const file = await this.fetchFile(parsedResponse.downloadLink);\n this.dropzone.addFile(file);\n await this.closePhotographingOverlay();\n }\n } catch (retrievePhotographingPdfException) {\n console.error(\n `StzhUpload.retrievePhotographingPdf() - retrievePhotographingPdfException:`,\n retrievePhotographingPdfException\n );\n }\n }\n\n private async fetchFile(url) {\n const response = await fetch(url);\n const blob = await response.blob();\n const fileName = url.split(\"/\").pop();\n const cleanFileName: string = decodeURIComponent(fileName.split(\"?\")[0]);\n if (blob.type === \"application/octet-stream\") {\n return new File([blob], cleanFileName, { type: \"application/pdf\" });\n }\n return new File([blob], cleanFileName, { type: blob.type });\n }\n\n private async establishPhotographingWebsocketConnection() {\n this.photographingWebsocket = new WebSocket(\n `${this.photographingConfig.wsClientUrl}${this.photographingUrlDetails.userId}`,\n [\"chat\", (await this.getToken()).access_token]\n );\n\n this.photographingWebsocket.onopen = () => {\n setInterval(() => {\n this.sendPhotographingWebsocketMessage(\"Ping\");\n }, 20000);\n };\n\n this.photographingWebsocket.onmessage = async event => {\n const message = event.data;\n\n if (message === \"retrievePdf\") {\n await this.retrievePhotographingPdf();\n }\n };\n\n this.photographingWebsocket.onerror = error => {\n console.error(\"WebSocket error: \", error);\n };\n }\n\n private closePhotographingWebsocketConnection = () => {\n this.photographingWebsocket.close();\n };\n\n private sendPhotographingWebsocketMessage(message: any) {\n this.photographingWebsocket.send(message);\n }\n\n private async getPhotographingHttpOptionsWithToken() {\n const token = await this.getToken();\n return {\n headers: {\n Authorization: `Bearer ${token.access_token}`\n }\n };\n }\n\n private async checkPhotographingAvailability() {\n try {\n const response = await fetch(\n `${this.photographingConfig.publicEndpoint}${this.PHOTOGRAPHING_ENDPOINTS.PING}`,\n await this.getPhotographingHttpOptionsWithToken()\n );\n if (!response.ok) {\n console.error(`StzhUpload.isAvailable() - HTTP error! status: ${response.status}`);\n this.isPhotographingAvailable = false;\n } else {\n this.isPhotographingAvailable = true;\n }\n } catch (isAvailableException) {\n console.error(`StzhUpload.isAvailable() - isAvailableException:`, isAvailableException);\n this.isPhotographingAvailable = false;\n }\n }\n\n private async setPhotographingConfig() {\n try {\n const response = await fetch(\n `${this.photographingHost}${this.PHOTOGRAPHING_BASE_URL}${this.PHOTOGRAPHING_ENDPOINTS.CONFIG}`\n );\n if (!response.ok) {\n console.error(`StzhUpload.setPhotographingConfig() - HTTP error! status: ${response.status}`);\n } else {\n this.photographingConfig = await response.json();\n }\n } catch (getConfigException) {\n console.error(`StzhUpload.setPhotographingConfig() - getConfigException:`, getConfigException);\n }\n }\n\n private getPhotographingHostForEnvironment(environment: \"DEV\" | \"UAT\" | \"PROD\" | \"UNKNOWN\") {\n switch (environment) {\n case \"DEV\":\n return \"https://www.test.stadt-zuerich.loc\";\n case \"UAT\":\n return \"https://www.integ.stadt-zuerich.ch\";\n case \"PROD\":\n return \"https://www.stadt-zuerich.ch\";\n case \"UNKNOWN\":\n this.PHOTOGRAPHING_BASE_URL = `/stzh-components/assets/mock${this.PHOTOGRAPHING_BASE_URL}`;\n return `${window.location.origin}`;\n }\n }\n\n private onButtonScanClick = event => {\n event.preventDefault();\n event.stopPropagation();\n this.photographingOverlayElement.show().then();\n if (this.isPhotographingAvailable) {\n this.startPhotographingUserSession()\n .then()\n .catch(photographingUserSessionException => {\n console.error(\"photographingUserSessionException\", photographingUserSessionException);\n });\n }\n };\n\n private closePhotographingOverlay = async () => {\n this.photographingOverlayElement.hide().catch();\n };\n\n private filesize = function(size) {\n let selectedSize = 0;\n let selectedUnit = \"b\";\n\n if (size > 0) {\n let units = [\"tb\", \"gb\", \"mb\", \"kb\", \"b\"];\n\n for (let i = 0; i < units.length; i++) {\n let unit = units[i];\n let cutoff = Math.pow(this.options.filesizeBase, 4 - i) / 10;\n\n if (size >= cutoff) {\n selectedSize = size / Math.pow(this.options.filesizeBase, 4 - i);\n selectedUnit = unit;\n break;\n }\n }\n\n selectedSize = Math.round(selectedSize * 100) / 100; // Cutting of digits\n }\n\n return `<strong>${selectedSize}</strong> ${this.options.dictFileSizeUnits[selectedUnit]}`;\n };\n\n private filePreviewId = function(file): string {\n return `${this.uploadId}-${file._id}`;\n };\n\n async componentWillLoad() {\n this.uploadId = `stzh-upload-${uploadCounter++}`;\n\n this.existingFilesWatcher(this.existingFiles);\n this.errorWatcher(this.error);\n\n if (!this.localization) {\n this.localization = await window.stzhComponents.utils.fetchTranslations(this.element, \"upload\");\n }\n\n this.environment = getStzhEnvironment();\n if (this.photographingEnabled) {\n this.initializePhotographingWithEnvironment(this.environment).catch(\n initializePhotographingWithEnvironmentException => {\n console.error(\n \"initializePhotographingWithEnvironmentException\",\n initializePhotographingWithEnvironmentException\n );\n }\n );\n }\n }\n\n private toggleToast(message: string, type: StzhToastType) {\n if (!this.disableToasts) {\n document.querySelector(\"stzh-upload\").querySelector(\"stzh-toastbar\").toast(message, {\n type: type\n });\n }\n }\n\n componentDidRender() {\n if (this.dropzone) {\n return;\n }\n\n const self = this;\n\n function enableDownload(file) {\n let fileHref = file.url || \"\";\n\n if (file.upload) {\n fileHref = URL.createObjectURL(file);\n }\n\n if (fileHref) {\n for (var node of file.previewElement.querySelectorAll(`[${ATTR_LINK}]`)) {\n node.setAttribute(\"href\", fileHref);\n node.setAttribute(\"download\", file.name);\n\n const isStzh = isStzhElement(node);\n const fileId = self.filePreviewId(file);\n\n node.setAttribute(isStzh ? \"analytics-id\" : \"s-object-id\", `${self.localization.downloadFile} ${file.name}`);\n node.setAttribute(isStzh ? \"a11y-label\" : \"aria-label\", `${self.localization.downloadFile} ${file.name}`);\n node.setAttribute(isStzh ? \"a11y-describedby\" : \"aria-describedby\", `${fileId}-error-message ${fileId}-meta`);\n }\n }\n }\n\n async function prepareRemovalTransition(id: string): Promise<void> {\n const wrapper: HTMLElement = document.getElementById(id);\n if (wrapper) {\n wrapper.classList.add(\"stzh-upload__fade-out\");\n }\n }\n\n async function removeFileByClick(id: string): Promise<void> {\n const wrapper: HTMLElement = document.getElementById(id);\n if (wrapper) {\n const button: HTMLElement = wrapper.querySelector(\".stzh-button\");\n if (button) {\n button.click();\n }\n }\n }\n\n if (this.headersAsync !== null) {\n this.autoProcessQueue = false;\n }\n\n this.dropzone = new window.Dropzone(this.dropzoneElement, {\n accept: this.accept,\n acceptedFiles: this.acceptedFiles,\n autoProcessQueue: this.autoProcessQueue,\n chunking: this.chunking,\n chunkSize: this.chunkSize,\n chunksUploaded: this.chunksUploaded,\n clickable: [this.clickareaElement],\n createImageThumbnails: false,\n defaultHeaders: this.defaultHeaders,\n defaultLabel: this.localization.photographingLabelDefault,\n dictCancelUpload: this.localization.cancelUpload,\n dictCancelUploadConfirmation: this.localization.cancelUploadConfirmation,\n dictDeleteFile: this.localization.deleteFile,\n dictFileSizeUnits: { tb: \"TiB\", gb: \"GiB\", mb: \"MiB\", kb: \"KiB\", b: \"b\" },\n dictFileTooBig: this.localization.fileTooBig,\n dictInvalidFileType: this.localization.invalidFileType,\n dictMaxFilesExceeded: this.localization.maxFilesExceeded,\n dictRemoveFile: this.localization.removeFile,\n dictRemoveFileConfirmation: null,\n dictResponseError: this.localization.responseError,\n dictUploadCanceled: this.localization.uploadCanceled,\n duplicateFileName: this.duplicateFileName,\n duplicateFileSize: this.duplicateFileSize,\n duplicateFileUploadHeading: this.localization.duplicateFileUploadHeading,\n duplicateFileUploadParagraph: this.localization.duplicateFileUploadParagraph,\n filesize: this.filesize,\n filesizeBase: this.filesizeBase,\n forceChunking: this.forceChunking,\n headers: this.headers,\n hiddenInputContainer: this.hiddenInputContainer ? this.hiddenInputContainer : this.hiddenInputContainerElement,\n maxFiles: this.maxFiles,\n maxFilesize: this.maxFilesize,\n method: this.method,\n parallelChunkUploads: this.parallelChunkUploads,\n parallelUploads: this.parallelUploads,\n preventDuplicateFileNames: this.preventDuplicateFileNames,\n preventHiddenInputClear: this.preventHiddenInputClear,\n previewsContainer: this.previewsElement,\n retryChunks: this.retryChunks,\n retryChunksLimit: this.retryChunksLimit,\n totalFilesState: this.totalFilesState,\n uploadMultiple: this.uploadMultiple,\n url: this.url,\n withCredentials: this.withCredentials,\n // Called when a file is dropped to the dropzone\n // Receives `event`\n drop: e => {\n // Merge files in hidden input.\n if (this.preventHiddenInputClear) {\n const hiddenFileInput = this.hiddenInputContainerElement?.querySelector(\"input\");\n const dataTransfer = new DataTransfer();\n for (let i = 0; i < hiddenFileInput.files.length; i++) {\n dataTransfer.items.add(hiddenFileInput.files[i]);\n }\n for (const file of e.dataTransfer.files) {\n dataTransfer.items.add(file);\n }\n hiddenFileInput.files = dataTransfer.files;\n }\n return this.element.classList.remove(\"dz-drag-hover\");\n },\n\n // Called when a file is added to the queue\n // Receives `file`\n // Taken from https://github.com/dropzone/dropzone/blob/v5.9.3/src/options.js#L594\n async addedfile(file) {\n file._id = previewCounter++;\n\n self.totalFilesState.push(file);\n\n let sessCheck = sessionStorage.getItem(\"totalFilesState\");\n if(!sessCheck) {\n sessionStorage.setItem(\"totalFilesState\", JSON.stringify(file));\n } else {\n sessionStorage.setItem(\"totalFilesState\", JSON.stringify(self.totalFilesState));\n }\n\n if (self.preventDuplicateFileNames) {\n\n if (self.totalFilesState.length > 0) {\n self.totalFilesState.forEach((f) => {\n if (file.name === f.name && file._id !== f._id) {\n self.duplicateDetected = true;\n self.duplicateFileName = file.name;\n self.duplicateFileSize = (file.size / (1024 * 1024)).toFixed(2) + \" MiB\";\n setTimeout(prepareRemovalTransition, 10, \"_\" + file._id);\n setTimeout(removeFileByClick, 2000, \"_\" + file._id);\n }\n });\n }\n }\n\n if (this.element === this.previewsContainer) {\n this.element.classList.add(\"dz-started\");\n }\n\n const fileSizeInMiB = file.size / (1024 * 1024);\n if (self.totalFileSize + fileSizeInMiB > self.maxFilesizeTotal) {\n self.toggleToast(\n self.localization.fileTooBigTotal\n .replace(\"{{totalFilesize}}\", `${(self.totalFileSize + fileSizeInMiB).toFixed(1)}`)\n .replace(\"{{maxFilesizeTotal}}\", `${self.maxFilesizeTotal}`),\n \"error\"\n );\n return;\n }\n\n self.totalFileSize += fileSizeInMiB;\n\n if (this.previewsContainer && !this.options.disablePreviews) {\n file.previewElement = window.Dropzone.createElement(this.options.previewTemplate.trim());\n file.previewElement.setAttribute(\"id\", \"_\" + file._id);\n file.previewTemplate = file.previewElement; // Backwards compatibility\n this.previewsContainer.appendChild(file.previewElement);\n\n if (!file.size) {\n file.previewElement.classList.add(\"dz-empty\");\n }\n\n for (var node of file.previewElement.querySelectorAll(`[${ATTR_NAME}]`)) {\n node.textContent = file.name;\n }\n\n for (node of file.previewElement.querySelectorAll(`[${ATTR_SIZE}]`)) {\n node.innerHTML = self.filesize.call(this, file.size);\n }\n\n for (node of file.previewElement.querySelectorAll(`[${ATTR_META_ID}]`)) {\n node.setAttribute(\"id\", `${self.filePreviewId(file)}-meta`);\n }\n\n for (node of file.previewElement.querySelectorAll(`[${ATTR_ERROR_MESSAGE_ID}]`)) {\n node.setAttribute(\"id\", `${self.filePreviewId(file)}-error-message`);\n }\n\n if (this.options.addRemoveLinks) {\n file._removeLink = window.Dropzone.createElement(\n `<a class=\"dz-remove\" href=\"javascript:undefined;\" ${ATTR_REMOVE}>\n ${this.options.dictRemoveFile}\n </a>`\n );\n file.previewElement.appendChild(file._removeLink);\n }\n\n let removeFileEvent = e => {\n e.preventDefault();\n e.stopPropagation();\n if (file.status === window.Dropzone.UPLOADING) {\n return window.Dropzone.confirm(this.options.dictCancelUploadConfirmation, () => this.removeFile(file));\n } else {\n if (this.options.dictRemoveFileConfirmation) {\n return window.Dropzone.confirm(this.options.dictRemoveFileConfirmation, () => this.removeFile(file));\n } else {\n return this.removeFile(file);\n }\n }\n };\n\n for (let removeLink of file.previewElement.querySelectorAll(`[${ATTR_REMOVE}]`)) {\n removeLink.addEventListener(\"click\", removeFileEvent);\n\n const isStzh = isStzhElement(removeLink);\n const fileId = self.filePreviewId(file);\n\n removeLink.setAttribute(isStzh ? \"analytics-id\" : \"s-object-id\", `${this.options.dictRemoveFile}`);\n removeLink.setAttribute(\n isStzh ? \"a11y-label\" : \"aria-label\",\n `${this.options.dictRemoveFile} ${file.name}`\n );\n removeLink.setAttribute(\n isStzh ? \"a11y-describedby\" : \"aria-describedby\",\n `${fileId}-error-message ${fileId}-meta`\n );\n }\n\n if (!self.downloadDisabled && !self.downloadDisabledWhileProcessing) {\n enableDownload(file);\n }\n }\n\n // Support async headers.\n if (self.headersAsync !== null) {\n self.dropzone.options.headers = await self.headersAsync();\n self.dropzone.processQueue();\n }\n },\n\n // When the upload is finished, either with success or an error.\n // Taken from https://github.com/dropzone/dropzone/blob/v5.9.3/src/options.js#L752\n complete(file) {\n for (let node of file.previewElement.querySelectorAll(`[${ATTR_REMOVE}]`)) {\n const hasErrorState = file.status === \"error\";\n const removeOrDeleteLabel = hasErrorState ? this.options.dictRemoveFile : this.options.dictDeleteFile;\n const isStzh = isStzhElement(node);\n const fileId = self.filePreviewId(file);\n\n node.setAttribute(isStzh ? \"a11y-label\" : \"aria-label\", `${removeOrDeleteLabel} ${file.name}`);\n node.setAttribute(isStzh ? \"a11y-describedby\" : \"aria-describedby\", `${fileId}-error-message ${fileId}-meta`);\n }\n\n // move file uploads with errors to another element, so they are grouped together\n if (file.status === \"error\") {\n self.errorsElement.appendChild(file.previewElement);\n } else if (!self.downloadDisabled && self.downloadDisabledWhileProcessing) {\n enableDownload(file);\n }\n\n if (file._removeLink) {\n file._removeLink.innerHTML = this.options.dictRemoveFile;\n }\n\n if (file.previewElement) {\n return file.previewElement.classList.add(\"dz-complete\");\n }\n },\n\n // Called whenever a file is removed.\n // Taken fom https://github.com/dropzone/dropzone/blob/v5.9.3/src/options.js#L649\n removedfile(file) {\n if (file.previewElement != null && file.previewElement.parentNode != null) {\n file.previewElement.parentNode.removeChild(file.previewElement);\n }\n\n const fileSizeInMiB = file.size / (1024 * 1024);\n self.totalFileSize -= fileSizeInMiB;\n\n // set focus to upload\n self.linkElement.focus();\n\n return this._updateMaxFilesReachedClass();\n },\n error(file, message, xhr) {\n if (file.previewElement) {\n file.previewElement.classList.add(\"dz-error\");\n\n if (typeof message !== \"string\" && message.error) {\n message = message.error;\n } else if (xhr) {\n if (xhr.status === 401 || xhr.status === 403) {\n message = self.localization.accessError;\n } else if (xhr.status === 413) {\n message = self.localization.fileTooBigServer;\n } else if (xhr.status === 415) {\n message = self.localization.invalidFileType;\n } else if (xhr.status >= 500) {\n message = self.localization.serverError;\n } else {\n const defaultError = self.localization.responseError.replace(\"{{statusCode}}\", xhr.status);\n\n message = defaultError;\n }\n }\n\n for (let node of file.previewElement.querySelectorAll(\"[data-dz-errormessage]\")) {\n node.textContent = message;\n }\n }\n },\n previewTemplate: `\n <div class=\"stzh-upload__preview\">\n <div class=\"stzh-upload__image\">\n <img data-dz-thumbnail />\n </div>\n\n <div class=\"stzh-upload__details\">\n <div class=\"stzh-upload__info-wrapper\">\n <div class=\"stzh-upload__info-wrapper-processing\">\n <div class=\"stzh-upload__infos\">\n <div class=\"stzh-upload__subtitle\">\n <a class=\"stzh-upload__link\" ${ATTR_NAME} ${ATTR_LINK}></a>\n </div>\n <div class=\"stzh-upload__progress-text\">\n <span ${ATTR_PROGRESS_TEXT}></span>\n </div>\n </div>\n <div class=\"stzh-upload__meta\">\n <span class=\"stzh-upload__extension\" ${ATTR_EXTENSION}></span>\n <span class=\"stzh-upload__separator\"></span>\n <span class=\"stzh-upload__size\" ${ATTR_SIZE}></span>\n </div>\n <div class=\"stzh-upload__progress\">\n <span class=\"stzh-upload__progress-bar\" data-dz-uploadprogress></span>\n </div>\n </div>\n <div class=\"stzh-upload__info-wrapper-complete\">\n <div class=\"stzh-upload__title\">\n <a class=\"stzh-upload__link\" ${ATTR_NAME} ${ATTR_LINK}></a>\n </div>\n <div class=\"stzh-upload__meta\" ${ATTR_META_ID}>\n <span class=\"stzh-upload__extension\" ${ATTR_EXTENSION}></span>\n <span class=\"stzh-upload__separator\"></span>\n <span class=\"stzh-upload__size\" ${ATTR_SIZE}></span>\n </div>\n <div class=\"stzh-upload__error-message\" ${ATTR_ERROR_MESSAGE_ID}>\n <span data-dz-errormessage></span>\n </div>\n </div>\n </div>\n <div class=\"stzh-upload__actions\">\n <!-- <stzh-button variant=\"tertiary\" size=\"small\" icon-only icon=\"download\" class=\"stzh-upload__download\" ${ATTR_LINK}></stzh-button> -->\n <stzh-button variant=\"tertiary\" size=\"small\" icon-only class=\"stzh-upload__delete\" ${ATTR_REMOVE}>\n <stzh-icon slot=\"icon\" class=\"stzh-upload__delete-icon\" name=\"delete\"></stzh-icon>\n <stzh-icon slot=\"icon\" class=\"stzh-upload__delete-icon-error\" name=\"close\"></stzh-icon>\n </stzh-button>\n </div>\n </div>\n </div>\n </div>\n `\n });\n\n this.nameWatcher(this.name);\n this.disabledWatcher();\n\n this.dropzone.on(\"addedfile\", (file: StzhUploadFile) =>\n this.stzhFileAdded.emit({\n component: \"stzh-upload\",\n file\n })\n );\n\n this.dropzone.on(\"addedfiles\", (files: StzhUploadFile[]) =>\n this.stzhFilesAdded.emit({\n component: \"stzh-upload\",\n files\n })\n );\n\n this.dropzone.on(\"removefile\", (file: StzhUploadFile) => {\n\n this.totalFilesState = this.totalFilesState.filter(f => f._id !== file._id);\n\n if(sessionStorage.getItem(\"totalFilesState\")) {\n let oldStorage = JSON.parse(sessionStorage.getItem(\"totalFilesState\"));\n let newStorage = oldStorage.filter((f) => f._id !== file._id);\n sessionStorage.setItem(\"totalFilesState\", JSON.stringify(newStorage));\n } else {\n sessionStorage.setItem(\"totalFilesState\", JSON.stringify(this.totalFilesState));\n }\n\n if (this.preventHiddenInputClear) {\n const hiddenFileInput = this.hiddenInputContainerElement?.querySelector(\"input\");\n const dataTransfer = new DataTransfer();\n for (let i = 0; i < hiddenFileInput.files.length; i++) {\n if (hiddenFileInput.files[i].name !== file.name) {\n dataTransfer.items.add(hiddenFileInput.files[i]);\n }\n }\n hiddenFileInput.files = dataTransfer.files;\n }\n return (\n this.stzhFileRemove.emit({\n component: \"stzh-upload\",\n file\n }).defaultPrevented === false\n );\n });\n\n this.dropzone.on(\"removedfile\", (file: StzhUploadFile, force: boolean) =>\n this.stzhFileRemoved.emit({\n component: \"stzh-upload\",\n file,\n force\n })\n );\n\n this.dropzone.on(\"sending\", (file: StzhUploadFile, xhr: XMLHttpRequest, formData: FormData) =>\n this.stzhSending.emit({\n component: \"stzh-upload\",\n file,\n xhr,\n formData\n })\n );\n\n this.dropzone.on(\"sendingmultiple\", (files: StzhUploadFile[], xhr: XMLHttpRequest, formData: FormData) =>\n this.stzhSendingMultiple.emit({\n component: \"stzh-upload\",\n files,\n xhr,\n formData\n })\n );\n\n this.dropzone.on(\"processing\", (file: StzhUploadFile) =>\n this.stzhProcessing.emit({\n component: \"stzh-upload\",\n file\n })\n );\n\n this.dropzone.on(\"processingmultiple\", (files: StzhUploadFile[]) =>\n this.stzhProcessingMultiple.emit({\n component: \"stzh-upload\",\n files\n })\n );\n\n this.dropzone.on(\"uploadprogress\", (file: StzhUploadFile, progress: number, bytesSent: number) =>\n this.stzhProgress.emit({\n component: \"stzh-upload\",\n file,\n progress,\n bytesSent\n })\n );\n\n this.dropzone.on(\"totaluploadprogress\", (totalUploadProgress: number, totalBytes: number, totalBytesSent: number) =>\n this.stzhProgressTotal.emit({\n component: \"stzh-upload\",\n totalUploadProgress,\n totalBytes,\n totalBytesSent\n })\n );\n\n this.dropzone.on(\"error\", (file: StzhUploadFile, message: string, xhr: XMLHttpRequest) => {\n if (xhr && xhr.status >= 400) {\n this.toggleToast(this.localization.uploadErrorToast, \"error\");\n }\n this.stzhError.emit({\n component: \"stzh-upload\",\n file,\n message,\n xhr\n });\n });\n\n this.dropzone.on(\"errormultiple\", (files: StzhUploadFile[], message: string, xhr: XMLHttpRequest) => {\n if (xhr && xhr.status >= 400) {\n this.toggleToast(this.localization.uploadErrorToast, \"error\");\n }\n this.stzhErrorMultiple.emit({\n component: \"stzh-upload\",\n files,\n message,\n xhr\n });\n });\n\n this.dropzone.on(\"success\", (file: StzhUploadFile, responseText: string, event: ProgressEvent) => {\n this.toggleToast(this.localization.uploadSuccessToast, \"success\");\n this.stzhSuccess.emit({\n component: \"stzh-upload\",\n file,\n responseText,\n event\n });\n });\n\n this.dropzone.on(\"successmultiple\", (files: StzhUploadFile[], responseText: string, event: ProgressEvent) => {\n this.toggleToast(this.localization.uploadSuccessToast, \"success\");\n this.stzhSuccessMultiple.emit({\n component: \"stzh-upload\",\n files,\n responseText,\n event\n });\n });\n\n this.dropzone.on(\"canceled\", (file: StzhUploadFile) =>\n this.stzhCanceled.emit({\n component: \"stzh-upload\",\n file\n })\n );\n\n this.dropzone.on(\"canceledmultiple\", (files: StzhUploadFile[]) =>\n this.stzhCanceledMultiple.emit({\n component: \"stzh-upload\",\n files\n })\n );\n\n this.dropzone.on(\"complete\", (file: StzhUploadFile) =>\n this.stzhComplete.emit({\n component: \"stzh-upload\",\n file\n })\n );\n\n this.dropzone.on(\"completemultiple\", (files: StzhUploadFile[]) =>\n this.stzhCompleteMultiple.emit({\n component: \"stzh-upload\",\n files\n })\n );\n\n this.dropzone.on(\"addedfile\", (file: StzhUploadFile) => {\n\n file.previewElement.querySelectorAll(`[${ATTR_NAME}]`).forEach((name: HTMLElement) => {\n name.setAttribute(\"title\", file.name);\n });\n\n file.previewElement.querySelectorAll(`[${ATTR_TYPE}]`).forEach((type: HTMLElement) => {\n type.innerText = file.type;\n });\n\n file.previewElement.querySelectorAll(`[${ATTR_EXTENSION}]`).forEach((extension: HTMLElement) => {\n extension.innerText = file.name.split(\".\").pop();\n });\n\n });\n\n this.dropzone.on(\"uploadprogress\", (file: StzhUploadFile, progress: number) => {\n file.previewElement.querySelectorAll(`[${ATTR_PROGRESS_TEXT}]`).forEach((progressText: HTMLElement) => {\n progressText.innerText = `${progress.toString()}%`;\n });\n });\n\n this._existingFiles.forEach(file => {\n this.dropzone.displayExistingFile(file, null, null, null, null);\n });\n }\n\n disconnectedCallback() {\n if (this.dropzone) {\n this.dropzone.destroy();\n this.dropzone = null;\n }\n }\n\n render() {\n const errorUsed = hasSlot(this.element, \"error\") || this._error?.length > 0;\n\n const description = this.description ? this.description : this.localization.description;\n\n const classes = {\n \"stzh-upload\": true,\n \"stzh-upload--is-invalid\": this.invalid || errorUsed,\n \"stzh-upload--is-disabled\": this.disabled,\n \"stzh-upload--has-hidden-progress\": this.hideProgress,\n \"stzh-upload--has-hidden-progress-while-idle\": this.hideProgressWhileIdle,\n \"stzh-upload--has-error\": errorUsed,\n \"stzh-upload--has-instructions\": !!this.description || !!this.localization.description\n };\n\n const descriptionTotalFileSizeLimit = this.localization.descriptionTotalFileSizeLimit;\n\n return (\n <Host is-invalid={this.invalid || errorUsed}>\n <stzh-toastbar />\n <div class={classes} ref={el => (this.dropzoneElement = el as HTMLDivElement)}>\n <div ref={el => (this.hiddenInputContainerElement = el as HTMLElement)}></div>\n\n <div id={`${this.uploadId}-label`}>{this.label && <div class=\"stzh-upload__label\">{this.label}</div>}</div>\n\n <div class=\"stzh-upload__clickarea\" ref={el => (this.clickareaElement = el as HTMLDivElement)}>\n <div class=\"stzh-upload__heading-wrapper\">\n <div class=\"stzh-upload__heading-inner-wrapper\">\n <div class=\"stzh-upload__heading\">{this.heading ? this.heading : this.localization.heading}</div>\n <div class=\"stzh-upload__buttons-wrapper\">\n <stzh-button\n class=\"stzh-upload__button\"\n variant=\"secondary\"\n size=\"small\"\n ref={el => (this.linkElement = el as HTMLStzhButtonElement)}\n label={this.button ? this.button : this.localization.button}\n a11yDescribedby={`${this.uploadId}-label ${this.uploadId}-instruction ${this.uploadId}-description`}\n disabled={this.disabled}\n a11yControls={`${this.uploadId}-previews`}\n >\n <stzh-icon slot=\"icon\" name=\"upload\"></stzh-icon>\n </stzh-button>\n {this.isPhotographingAvailable && (\n <stzh-button\n class=\"stzh-upload__button-scan\"\n variant=\"secondary\"\n size=\"small\"\n label={this.buttonScan ? this.buttonScan : this.localization.buttonScan}\n onClick={this.onButtonScanClick}\n >\n <stzh-icon slot=\"icon\" name=\"camera\"></stzh-icon>\n </stzh-button>\n )}\n </div>\n <div class=\"stzh-upload__hint-wrapper\">\n <span>{this.localization.buttonIntro}</span>\n </div>\n </div>\n </div>\n <div class=\"stzh-upload__instructions\" id={`${this.uploadId}-instruction`}>\n <p>\n {description\n .replace(\"{{fileformats}}\", this.acceptedFiles ? this.acceptedFiles : \"Alle\")\n .replace(\"{{filesize}}\", `${this.maxFilesize}`)}\n <br />\n {descriptionTotalFileSizeLimit.replace(\"{{maxFilesizeTotal}}\", `${this.maxFilesizeTotal}`)}\n </p>\n </div>\n </div>\n\n <div class=\"stzh-upload__description-wrapper\">\n {this._error?.length > 0 && (\n <StzhInputDescription classPrefix=\"stzh-upload\" id={`${this.uploadId}-description`} error={this._error} />\n )}\n </div>\n\n <div id={`${this.uploadId}-previews`} class=\"stzh-upload__previews-wrapper\">\n <div class=\"stzh-upload__previews-inner-wrapper\">\n <div class=\"stzh-upload__errors\" ref={el => (this.errorsElement = el as HTMLElement)}></div>\n <div\n class=\"stzh-upload__previews dropzone-previews\"\n ref={el => (this.previewsElement = el as HTMLElement)}\n ></div>\n </div>\n </div>\n </div>\n\n {this.duplicateDetected && (\n <div class=\"stzh-upload__previews-message-wrapper\">\n <stzh-message type=\"error\" label={this.localization.duplicateFileUploadHeading} onStzhClose={() => this.duplicateDetected = false}>\n <stzh-text>\n <p>«{this.duplicateFileName}» ({this.duplicateFileSize})</p>\n <p>{this.localization.duplicateFileUploadParagraph}</p>\n </stzh-text>\n </stzh-message>\n </div>\n )}\n\n <stzh-dialog\n ref={el => (this.photographingOverlayElement = el as HTMLStzhOverlayElement)}\n onStzhClose={this.closePhotographingWebsocketConnection}\n class={this.isPhotographingAvailable && \"stzh-dialog--fit-content\"}\n >\n <stzh-button\n class=\"stzh-upload-photographing__back-button\"\n icon=\"arrow-left\"\n size=\"small\"\n variant=\"tertiary-plain\"\n no-padding-left=\"true\"\n no-padding-right=\"true\"\n onClick={this.closePhotographingOverlay}\n >\n {this.localization.back}\n </stzh-button>\n {this.isPhotographingAvailable && (\n <Fragment>\n <div class=\"stzh-upload-photographing__info\">\n <stzh-heading level=\"3\">{this.localization.photographingTitle1}</stzh-heading>\n <div class=\"stzh-upload-photographing__text-qrcode\">\n <div class=\"stzh-upload-photographing-qrlink-container\">\n <stzh-text>{this.localization.photographingText1}</stzh-text>\n {!!this.photographingUrlDetails && (\n <stzh-link\n class=\"stzh-upload-photographing-link\"\n // href={this.photographingUrlDetails.url + \"&label=\" + encodeURIComponent(this.label)}\n href={this.photographingUrlDetails.url + \"&label=\" + this.cleanLabel(this.label)}\n target=\"_blank\"\n >\n {this.photographingUrlDetails.url + \"&label=\" + this.cleanLabel(this.label)}\n </stzh-link>\n )}\n </div>\n <div class=\"stzh-upload-photographing-qrcode-container\">\n <canvas\n class=\"stzh-upload-photographing-qrcode\"\n ref={el => (this.photographingQrcodeElement = el as HTMLCanvasElement)}\n ></canvas>\n </div>\n </div>\n </div>\n <div class=\"stzh-upload-photographing__info\">\n <stzh-heading level=\"3\">{this.localization.photographingTitle2}</stzh-heading>\n <stzh-text>{this.localization.photographingText2}</stzh-text>\n </div>\n </Fragment>\n )}\n </stzh-dialog>\n </Host>\n );\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"stzh-upload.js","sourceRoot":"","sources":["../../../../src/components/stzh-upload/stzh-upload.tsx"],"names":[],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import {\n Component,\n Element,\n Event,\n EventEmitter,\n Fragment,\n h,\n Host,\n Listen,\n Method,\n Prop,\n State,\n Watch\n} from \"@stencil/core\";\n\nimport {\n StzhToastType,\n StzhUploadCanceledEvent,\n StzhUploadCanceledMultipleEvent,\n StzhUploadCompleteEvent,\n StzhUploadCompleteMultipleEvent,\n StzhUploadErrorEvent,\n StzhUploadErrorMultipleEvent,\n StzhUploadFile,\n StzhUploadFileAddedEvent,\n StzhUploadFileRemovedEvent,\n StzhUploadFileRemoveEvent,\n StzhUploadFilesAddedEvent,\n StzhUploadFilesItem,\n StzhUploadProcessingEvent,\n StzhUploadProcessingMultipleEvent,\n StzhUploadProgressEvent,\n StzhUploadProgressTotalEvent,\n StzhUploadSendingEvent,\n StzhUploadSendingMultipleEvent,\n StzhUploadSuccessEvent,\n StzhUploadSuccessMultipleEvent\n} from \"../../index\";\n\nimport { getStzhEnvironment, hasSlot, isStzhElement, StzhEnvironmentEnum } from \"../../utils/utils\";\nimport { StzhUploadLocalizedText } from \"./stzh-upload.localization\";\nimport { StzhInputDescription } from \"../stzh-input/stzh-input-description\";\n\nimport \"../../libraries/dropzone/dropzone\";\nimport { StzhPhotographingUrlDetailsDto } from \"./models/stzh-photographing-url-details.dto\";\nimport { StzhPhotographingConfigurationDto } from \"./models/stzh-photographing-configuration.dto\";\nimport QRCode from \"qrcode\";\nimport { StzhPhotographingPdfFileDto } from \"./models/stzh-photographing-pdf-file.dto\";\n\nwindow.Dropzone.autoDiscover = false;\n\nconst ATTR_NAME = \"data-dz-name\";\nconst ATTR_TYPE = \"data-dz-type\";\nconst ATTR_SIZE = \"data-dz-size\";\nconst ATTR_LINK = \"data-dz-link\";\nconst ATTR_EXTENSION = \"data-dz-extension\";\nconst ATTR_META_ID = \"data-dz-meta-id\";\nconst ATTR_ERROR_MESSAGE_ID = \"data-dz-error-message-id\";\nconst ATTR_PROGRESS_TEXT = \"data-dz-progress-text\";\nconst ATTR_REMOVE = \"data-dz-remove\";\n\nlet uploadCounter = 0;\nlet previewCounter = 0;\n\n// Most properties taken over from:\n// https://github.com/dropzone/dropzone/blob/v5.9.3/src/options.js\n\n// Possible events to listen to:\n// https://github.com/dropzone/dropzone/blob/v5.9.3/src/dropzone.js#L17\n\n/**\n * @slot error - Slot for error\n */\n@Component({\n tag: \"stzh-upload\",\n styleUrl: \"stzh-upload.scss\"\n})\nexport class StzhUpload {\n /**\n * Initially pre-existing files (e.g. already uploaded by the user).\n * Array of objects that must at least include `name` and `size` attribute:\n * `[{\"name\":\"file1.txt\", \"size\": 12345}, {\"name\":\"file2.txt\", \"size\": 12345}]`\n */\n @Prop() existingFiles: StzhUploadFilesItem[] | string = [];\n private _existingFiles: StzhUploadFilesItem[] = [];\n\n /** Name of hidden input field */\n @Prop() name: string = \"\";\n\n /** Label */\n @Prop() label: string = \"\";\n\n /** Instructions heading */\n @Prop() heading: string = \"\";\n\n /** Instructions description */\n @Prop() description: string = \"\";\n\n /** Button text */\n @Prop() button: string = \"\";\n\n /** Scan Button text */\n @Prop() buttonScan: string = \"\";\n\n /** Scan Button text */\n @Prop({ mutable: true }) photographingEnabled: boolean = false;\n\n /** Disable toasts on upload success and error */\n @Prop() disableToasts: boolean = false;\n\n /**\n * URL the files are processed to.\n *\n * You can also provide a function that will be called with `files` and\n * `dataBlocks` and must return the url as string.\n */\n @Prop() url: string | Function = \"\";\n\n /**\n * Can be changed to `\"put\"` if necessary. You can also provide a function\n * that will be called with `files` and must return the method.\n */\n @Prop() method: \"post\" | \"put\" | Function = \"post\";\n\n /**\n * Will be set on the XHRequest.\n */\n @Prop() withCredentials: boolean = false;\n\n /**\n * Whether the upload is disabled or not.\n */\n @Prop({ reflect: true }) disabled: boolean = false;\n\n /**\n * Whether the upload is marked as invalid.\n */\n @Prop({ reflect: true }) invalid: boolean = false;\n\n /** Whether download functionality should be disabled. */\n @Prop() downloadDisabled: boolean = false;\n\n /** Whether download functionality should only be shown to completed files. */\n @Prop() downloadDisabledWhileProcessing: boolean = false;\n\n /** One or multiple error message (use error slot as alternative) */\n @Prop() error: string | string[];\n private _error: string[];\n\n /**\n * The default implementation of `accept` checks the file's mime type or\n * extension against this list. This is a comma separated list of mime\n * types or file extensions.\n *\n * Eg.: `image/*,application/pdf,.psd`\n *\n * This option will also be used as\n * [`accept`](https://developer.mozilla.org/en-US/docs/HTML/Element/input#attr-accept)\n * parameter on the hidden file input as well.\n */\n @Prop() acceptedFiles: string | null = null;\n\n /**\n * If false, files will be added to the queue but the queue will not be\n * processed automatically.\n * This can be useful if you need some additional user input before sending\n * files (or if you want want all files sent at once).\n * If you're ready to send the file simply call `element.processQueue()`.\n */\n @Prop() autoProcessQueue: boolean = true;\n\n /**\n * Hide progress (bars and text).\n */\n @Prop() hideProgress: boolean = false;\n\n /**\n * Hide progress (bars) only while idle (will show them as soon as upload starts).\n * Can be used together with `autoProcessQueue`, e.g. if files are uploaded at form submit to prevent showing empty progressbar.\n */\n @Prop() hideProgressWhileIdle: boolean = false;\n\n /**\n * If not `null` defines how many files this dropzone handles. If it exceeds,\n * the event `stzhMaxfilesexceeded` will be called.\n */\n @Prop() maxFiles: number | null = null;\n\n /**\n * The maximum filesize (in MiB) that is allowed to be uploaded per file.\n */\n @Prop() maxFilesize: number = 25;\n\n /**\n * The maximum filesize (in MiB) that is allowed to be uploaded over all files.\n */\n @Prop() maxFilesizeTotal: number = 100;\n\n /**\n * How many file uploads to process in parallel.\n */\n @Prop() parallelUploads: number = 2;\n\n /**\n * Whether to send multiple files in one request. If\n * this it set to true, then the fallback file input element will\n * have the `multiple` attribute as well. This option will\n * also trigger additional events (like `stzhSuccessMultiple`). See the events\n * documentation section for more information.\n */\n @Prop() uploadMultiple: boolean = false;\n\n /**\n * Whether you want files to be uploaded in chunks to your server. This can't be\n * used in combination with `uploadMultiple`.\n *\n * See `chunksUploaded` prop for the callback to finalise an upload.\n */\n @Prop() chunking: boolean = false;\n\n /**\n * If `chunking` is enabled, this defines whether **every** file should be chunked,\n * even if the file size is below chunkSize. This means, that the additional chunk\n * form data will be submitted and the `chunksUploaded` callback will be invoked.\n */\n @Prop() forceChunking: boolean = false;\n\n /**\n * If `chunking` is `true`, then this defines the chunk size in bytes.\n */\n @Prop() chunkSize: number = 2 * 1024 * 1024;\n\n /**\n * If `true`, the individual chunks of a file are being uploaded simultaneously.\n */\n @Prop() parallelChunkUploads: boolean = false;\n\n /**\n * Whether a chunk should be retried if it fails.\n */\n @Prop() retryChunks: boolean = false;\n\n /**\n * If `retryChunks` is true, how many times should it be retried.\n */\n @Prop() retryChunksLimit: number = 3;\n\n /**\n * The base that is used to calculate the **displayed** filesize. You can\n * change this to 1024 if you would rather display kibibytes, mebibytes,\n * etc... 1024 is technically incorrect, because `1024 bytes` are `1 kibibyte`\n * not `1 kilobyte`. You can change this to `1024` if you don't care about\n * validity.\n */\n @Prop() filesizeBase: number = 1024;\n\n /**\n * An optional object to send additional headers to the server. Eg:\n * `{ \"My-Awesome-Header\": \"header value\" }`\n *\n * Can also be set as function returning the headers object dynamically.\n * If you want to use an async function, use \"headersAsync\" prop.\n */\n @Prop() headers: object | ((Dropzone: any) => { [key: string]: string }) | null = null;\n\n /**\n * An optional function providing headers asynchronously. If you use that,\n * it will automatically set 'autoProcessQueue' to 'false'.\n * The component will still automatically process the queue, but in a different\n * way (workaround since dropzone not supporting async headers).\n */\n @Prop() headersAsync: (() => Promise<{ [key: string]: string }>) | null = null;\n\n /**\n * Should the default headers be set or not?\n * Accept: application/json <- for requesting json response\n * Cache-Control: no-cache <- Request shouldnt be cached\n * X-Requested-With: XMLHttpRequest <- We sent the request via XMLHttpRequest\n */\n @Prop() defaultHeaders: boolean = true;\n\n /**\n * Whether it is possible to upload files with identical names.\n */\n @Prop() preventDuplicateFileNames: boolean = false;\n\n /**\n * A function that gets a [file](https://developer.mozilla.org/en-US/docs/DOM/File)\n * and a `done` function as parameters.\n *\n * If the done function is invoked without arguments, the file is \"accepted\" and will\n * be processed. If you pass an error message, the file is rejected, and the error\n * message will be displayed.\n * This function will not be called if the file is too big or doesn't match the mime types.\n */\n @Prop() accept: Function = function(_file, done) {\n return done();\n };\n\n /**\n * The callback that will be invoked when all chunks have been uploaded for a file.\n * It gets the file for which the chunks have been uploaded as the first parameter,\n * and the `done` function as second. `done()` needs to be invoked when everything\n * needed to finish the upload process is done.\n */\n @Prop() chunksUploaded: Function = function(_file, done) {\n done();\n };\n\n /**\n * This is the element the hidden input field (which is used when clicking on the\n * dropzone to trigger file selection) will be appended to. This might\n * be important in case you use frameworks to switch the content of your page.\n *\n * Can be a selector string, or an element directly. Will be rendered into element by default.\n */\n @Prop() hiddenInputContainer: string | HTMLElement;\n\n /**\n * Prevent clearing hidden input after adding a new file.\n * (use if you want to send the hidden input field with native form instead of ajax)\n */\n @Prop() preventHiddenInputClear: boolean = false;\n\n /** Translation strings. */\n @Prop() localization: StzhUploadLocalizedText;\n\n @State() environment: StzhEnvironmentEnum | undefined;\n @State() totalFileSize: number = 0;\n @State() duplicateDetected: boolean = false;\n @State() totalTooBig: boolean = false;\n @State() totalTooBigMessageHeading: string = \"\";\n @State() totalTooBigMessageBody: string = \"\";\n @State() totalFilesState: Array<any> = [];\n @State() duplicateFileName: string = \"\";\n @State() duplicateFileSize: string = \"\";\n\n @Element() element: HTMLStzhUploadElement;\n\n @Listen(\"reset\", { target: \"document\" })\n resetListener(event: Event) {\n if ((event.target as HTMLElement).contains(this.element)) {\n requestAnimationFrame(() => {\n this.handleReset();\n });\n }\n }\n\n @Watch(\"name\")\n nameWatcher(newValue: string) {\n const input = this.hiddenInputContainerElement?.querySelector(\"input\");\n\n if (input) {\n input.setAttribute(\"name\", newValue);\n }\n }\n\n @Watch(\"maxFiles\")\n maxFilesWatcher(newMaxFiles: number | null) {\n this.dropzone.options.maxFiles = newMaxFiles;\n }\n\n @Watch(\"maxFilesize\")\n maxFilesizeWatcher(newMaxFilesize: number) {\n this.dropzone.options.maxFilesize = newMaxFilesize;\n }\n\n @Watch(\"existingFiles\")\n existingFilesWatcher(newValue: StzhUploadFilesItem[] | string) {\n if (typeof newValue === \"string\") {\n this._existingFiles = JSON.parse(newValue);\n } else {\n this._existingFiles = newValue;\n }\n }\n\n @Watch(\"disabled\")\n disabledWatcher() {\n if (!this.dropzone) {\n return;\n }\n\n if (this.disabled) {\n this.dropzone.disable();\n } else {\n this.dropzone.enable();\n }\n }\n\n @Watch(\"error\")\n errorWatcher(newValue: string | string[]) {\n if (typeof newValue === \"string\") {\n try {\n this._error = JSON.parse(newValue);\n } catch (e) {\n if (newValue) {\n this._error = [newValue];\n } else {\n this._error = [];\n }\n }\n } else if (newValue) {\n this._error = newValue;\n } else {\n this._error = [];\n }\n }\n\n /** File added */\n @Event() stzhFileAdded: EventEmitter<StzhUploadFileAddedEvent>;\n\n /** Files added (multiple) */\n @Event() stzhFilesAdded: EventEmitter<StzhUploadFilesAddedEvent>;\n\n /** File remove (before, cancelable) */\n @Event() stzhFileRemove: EventEmitter<StzhUploadFileRemoveEvent>;\n\n /** File removed */\n @Event() stzhFileRemoved: EventEmitter<StzhUploadFileRemovedEvent>;\n\n /** Before sending file (add additional data before request if necessary) */\n @Event() stzhSending: EventEmitter<StzhUploadSendingEvent>;\n\n /** Before sending multiple files (add additional data before request if necessary) */\n @Event() stzhSendingMultiple: EventEmitter<StzhUploadSendingMultipleEvent>;\n\n /** Files starting to get processed */\n @Event() stzhProcessing: EventEmitter<StzhUploadProcessingEvent>;\n\n /** Files starting to get processed (multiple) */\n @Event() stzhProcessingMultiple: EventEmitter<StzhUploadProcessingMultipleEvent>;\n\n /** Upload file progress during upload */\n @Event() stzhProgress: EventEmitter<StzhUploadProgressEvent>;\n\n /** Upload total file progress during upload */\n @Event() stzhProgressTotal: EventEmitter<StzhUploadProgressTotalEvent>;\n\n /** File error */\n @Event() stzhError: EventEmitter<StzhUploadErrorEvent>;\n\n /** Files error (multiple files) */\n @Event() stzhErrorMultiple: EventEmitter<StzhUploadErrorMultipleEvent>;\n\n /** File successfully uploaded */\n @Event() stzhSuccess: EventEmitter<StzhUploadSuccessEvent>;\n\n /** Files successfully uploaded (multiple files) */\n @Event() stzhSuccessMultiple: EventEmitter<StzhUploadSuccessMultipleEvent>;\n\n /** Canceled file upload */\n @Event() stzhCanceled: EventEmitter<StzhUploadCanceledEvent>;\n\n /** Canceled file upload (multiple files) */\n @Event() stzhCanceledMultiple: EventEmitter<StzhUploadCanceledMultipleEvent>;\n\n /** Completed upload (successfully or with error) */\n @Event() stzhComplete: EventEmitter<StzhUploadCompleteEvent>;\n\n /** Completed upload (successfully or with error, multiple files) */\n @Event() stzhCompleteMultiple: EventEmitter<StzhUploadCompleteMultipleEvent>;\n\n @Method()\n async processQueue() {\n return this.dropzone.processQueue();\n }\n\n @Method()\n async removeFile(file, force = false) {\n return this.dropzone.removeFile(file, force);\n }\n\n @Method()\n async removeAllFiles(cancelIfNecessary = false, force = false) {\n return this.dropzone.removeAllFiles(cancelIfNecessary, force);\n }\n\n private dropzone: any;\n private dropzoneElement: HTMLElement;\n private linkElement: HTMLStzhButtonElement;\n private clickareaElement: HTMLElement;\n private previewsElement: HTMLElement;\n private errorsElement: HTMLElement;\n private hiddenInputContainerElement: HTMLElement;\n private uploadId: string;\n\n /* Photographing */\n private photographingOverlayElement: HTMLStzhOverlayElement;\n private photographingQrcodeElement: HTMLCanvasElement;\n private PHOTOGRAPHING_BASE_URL = \"/appl/mobiscan/rs\";\n private PHOTOGRAPHING_ENDPOINTS = {\n PING: \"/ping\",\n URL: \"/url\",\n IMAGE: \"/image\",\n CONFIG: \"/config\",\n AUTH: \"/auth\"\n };\n @State() isPhotographingAvailable: boolean = false;\n @State() photographingUrlDetails: StzhPhotographingUrlDetailsDto | undefined;\n @State() photographingHost: string;\n @State() photographingConfig: StzhPhotographingConfigurationDto | undefined;\n @State() photographingWebsocket: WebSocket | undefined;\n @State() photographingToken: { access_token: string; expires_in: number } | undefined;\n\n private handleReset = () => {\n this.removeAllFiles(true);\n };\n\n private cleanLabel(input) {\n if(input === \"\" || input === undefined) {\n input = this.localization.photographingLabelDefault;\n }\n let cleanStr: string = input.replaceAll('/', '-');\n // @ts-ignore\n return encodeURIComponent(cleanStr.replaceAll('%', ''));\n }\n\n private async getToken() {\n if (\n this.photographingToken &&\n this.photographingToken.access_token &&\n Date.now() < this.photographingToken.expires_in\n ) {\n return this.photographingToken;\n } else {\n return await this.requestPhotographingToken();\n }\n }\n\n private async requestPhotographingToken() {\n try {\n const response = await fetch(\n `${this.photographingHost}${this.PHOTOGRAPHING_BASE_URL}${this.PHOTOGRAPHING_ENDPOINTS.AUTH}`\n );\n if (!response.ok) {\n throw new Error(\"Token retrieval failed\");\n }\n const parsedResponse = await response.json();\n this.photographingToken = {\n access_token: parsedResponse.access_token,\n expires_in: Date.now() + parsedResponse.expires_in * 1000\n };\n return this.photographingToken;\n } catch (error) {\n console.error(\"Token retrieval failed\", error);\n throw new Error(\"Token retrieval failed\");\n }\n }\n\n private async initializePhotographingWithEnvironment(environment: StzhEnvironmentEnum) {\n this.photographingHost = this.getPhotographingHostForEnvironment(environment);\n await this.setPhotographingConfig();\n // if (this.photographingConfig) {\n if (this.photographingConfig && this.photographingEnabled === true) {\n await this.checkPhotographingAvailability();\n }\n }\n\n private async startPhotographingUserSession() {\n try {\n const response = await fetch(\n `${this.photographingConfig.publicEndpoint}${this.PHOTOGRAPHING_ENDPOINTS.URL}`,\n await this.getPhotographingHttpOptionsWithToken()\n );\n if (!response.ok) {\n // Nothing to do here. Just don't show the photographing button.\n } else {\n const url: StzhPhotographingUrlDetailsDto = await response.json();\n const urlObject = new URL(url.url);\n const params = new URLSearchParams(urlObject.search);\n this.photographingUrlDetails = {\n url: url.url,\n userId: params.get(\"id\"),\n label: this.cleanLabel(this.label)\n };\n try {\n await QRCode.toCanvas(this.photographingQrcodeElement, url.url + '&label=' + this.cleanLabel(this.label));\n } catch (error) {\n console.error(\"Error generating QR code:\", error);\n }\n await this.establishPhotographingWebsocketConnection();\n }\n } catch (startPhotographingUserSessionException) {\n console.error(\n `StzhUpload.startPhotographingUserSession() - startPhotographingUserSessionException:`,\n startPhotographingUserSessionException\n );\n }\n }\n\n private async retrievePhotographingPdf() {\n try {\n const response = await fetch(\n `${this.photographingConfig.publicEndpoint}${this.PHOTOGRAPHING_ENDPOINTS.IMAGE}/retrieve-pdf?id=${this.photographingUrlDetails.userId}&label=${this.cleanLabel(this.label)}`,\n await this.getPhotographingHttpOptionsWithToken()\n );\n if (!response.ok) {\n console.error(`StzhUpload.retrievePhotographingPdf() - HTTP error! status: ${response.status}`);\n } else {\n const parsedResponse: StzhPhotographingPdfFileDto = await response.json();\n const file = await this.fetchFile(parsedResponse.downloadLink);\n this.dropzone.addFile(file);\n await this.closePhotographingOverlay();\n }\n } catch (retrievePhotographingPdfException) {\n console.error(\n `StzhUpload.retrievePhotographingPdf() - retrievePhotographingPdfException:`,\n retrievePhotographingPdfException\n );\n }\n }\n\n private async fetchFile(url) {\n const response = await fetch(url);\n const blob = await response.blob();\n const fileName = url.split(\"/\").pop();\n const cleanFileName: string = decodeURIComponent(fileName.split(\"?\")[0]);\n if (blob.type === \"application/octet-stream\") {\n return new File([blob], cleanFileName, { type: \"application/pdf\" });\n }\n return new File([blob], cleanFileName, { type: blob.type });\n }\n\n private async establishPhotographingWebsocketConnection() {\n this.photographingWebsocket = new WebSocket(\n `${this.photographingConfig.wsClientUrl}${this.photographingUrlDetails.userId}`,\n [\"chat\", (await this.getToken()).access_token]\n );\n\n this.photographingWebsocket.onopen = () => {\n setInterval(() => {\n this.sendPhotographingWebsocketMessage(\"Ping\");\n }, 20000);\n };\n\n this.photographingWebsocket.onmessage = async event => {\n const message = event.data;\n\n if (message === \"retrievePdf\") {\n await this.retrievePhotographingPdf();\n }\n };\n\n this.photographingWebsocket.onerror = error => {\n console.error(\"WebSocket error: \", error);\n };\n }\n\n private closePhotographingWebsocketConnection = () => {\n this.photographingWebsocket.close();\n };\n\n private sendPhotographingWebsocketMessage(message: any) {\n this.photographingWebsocket.send(message);\n }\n\n private async getPhotographingHttpOptionsWithToken() {\n const token = await this.getToken();\n return {\n headers: {\n Authorization: `Bearer ${token.access_token}`\n }\n };\n }\n\n private async checkPhotographingAvailability() {\n try {\n const response = await fetch(\n `${this.photographingConfig.publicEndpoint}${this.PHOTOGRAPHING_ENDPOINTS.PING}`,\n await this.getPhotographingHttpOptionsWithToken()\n );\n if (!response.ok) {\n console.error(`StzhUpload.isAvailable() - HTTP error! status: ${response.status}`);\n this.isPhotographingAvailable = false;\n } else {\n this.isPhotographingAvailable = true;\n }\n } catch (isAvailableException) {\n console.error(`StzhUpload.isAvailable() - isAvailableException:`, isAvailableException);\n this.isPhotographingAvailable = false;\n }\n }\n\n private async setPhotographingConfig() {\n try {\n const response = await fetch(\n `${this.photographingHost}${this.PHOTOGRAPHING_BASE_URL}${this.PHOTOGRAPHING_ENDPOINTS.CONFIG}`\n );\n if (!response.ok) {\n console.error(`StzhUpload.setPhotographingConfig() - HTTP error! status: ${response.status}`);\n } else {\n this.photographingConfig = await response.json();\n }\n } catch (getConfigException) {\n console.error(`StzhUpload.setPhotographingConfig() - getConfigException:`, getConfigException);\n }\n }\n\n private getPhotographingHostForEnvironment(environment: \"DEV\" | \"UAT\" | \"PROD\" | \"UNKNOWN\") {\n switch (environment) {\n case \"DEV\":\n return \"https://www.test.stadt-zuerich.loc\";\n case \"UAT\":\n return \"https://www.integ.stadt-zuerich.ch\";\n case \"PROD\":\n return \"https://www.stadt-zuerich.ch\";\n case \"UNKNOWN\":\n this.PHOTOGRAPHING_BASE_URL = `/stzh-components/assets/mock${this.PHOTOGRAPHING_BASE_URL}`;\n return `${window.location.origin}`;\n }\n }\n\n private onButtonScanClick = event => {\n event.preventDefault();\n event.stopPropagation();\n this.photographingOverlayElement.show().then();\n if (this.isPhotographingAvailable) {\n this.startPhotographingUserSession()\n .then()\n .catch(photographingUserSessionException => {\n console.error(\"photographingUserSessionException\", photographingUserSessionException);\n });\n }\n };\n\n private closePhotographingOverlay = async () => {\n this.photographingOverlayElement.hide().catch();\n };\n\n private filesize = function(size) {\n let selectedSize = 0;\n let selectedUnit = \"b\";\n\n if (size > 0) {\n let units = [\"tb\", \"gb\", \"mb\", \"kb\", \"b\"];\n\n for (let i = 0; i < units.length; i++) {\n let unit = units[i];\n let cutoff = Math.pow(this.options.filesizeBase, 4 - i) / 10;\n\n if (size >= cutoff) {\n selectedSize = size / Math.pow(this.options.filesizeBase, 4 - i);\n selectedUnit = unit;\n break;\n }\n }\n\n selectedSize = Math.round(selectedSize * 100) / 100; // Cutting of digits\n }\n\n return `<strong>${selectedSize}</strong> ${this.options.dictFileSizeUnits[selectedUnit]}`;\n };\n\n private filePreviewId = function(file): string {\n return `${this.uploadId}-${file._id}`;\n };\n\n async componentWillLoad() {\n this.uploadId = `stzh-upload-${uploadCounter++}`;\n\n this.existingFilesWatcher(this.existingFiles);\n this.errorWatcher(this.error);\n\n if (!this.localization) {\n this.localization = await window.stzhComponents.utils.fetchTranslations(this.element, \"upload\");\n }\n\n this.environment = getStzhEnvironment();\n if (this.photographingEnabled) {\n this.initializePhotographingWithEnvironment(this.environment).catch(\n initializePhotographingWithEnvironmentException => {\n console.error(\n \"initializePhotographingWithEnvironmentException\",\n initializePhotographingWithEnvironmentException\n );\n }\n );\n }\n }\n\n private toggleToast(message: string, type: StzhToastType) {\n if (!this.disableToasts) {\n document.querySelector(\"stzh-upload\").querySelector(\"stzh-toastbar\").toast(message, {\n type: type\n });\n }\n }\n\n componentDidRender() {\n if (this.dropzone) {\n return;\n }\n\n const self = this;\n\n function enableDownload(file) {\n let fileHref = file.url || \"\";\n\n if (file.upload) {\n fileHref = URL.createObjectURL(file);\n }\n\n if (fileHref) {\n for (var node of file.previewElement.querySelectorAll(`[${ATTR_LINK}]`)) {\n node.setAttribute(\"href\", fileHref);\n node.setAttribute(\"download\", file.name);\n\n const isStzh = isStzhElement(node);\n const fileId = self.filePreviewId(file);\n\n node.setAttribute(isStzh ? \"analytics-id\" : \"s-object-id\", `${self.localization.downloadFile} ${file.name}`);\n node.setAttribute(isStzh ? \"a11y-label\" : \"aria-label\", `${self.localization.downloadFile} ${file.name}`);\n node.setAttribute(isStzh ? \"a11y-describedby\" : \"aria-describedby\", `${fileId}-error-message ${fileId}-meta`);\n }\n }\n }\n\n async function prepareRemovalTransition(id: string): Promise<void> {\n const wrapper: HTMLElement = document.getElementById(id);\n if (wrapper) {\n wrapper.classList.add(\"stzh-upload__fade-out\");\n }\n }\n\n async function removeFileByClick(id: string): Promise<void> {\n const wrapper: HTMLElement = document.getElementById(id);\n if (wrapper) {\n const button: HTMLElement = wrapper.querySelector(\".stzh-button\");\n if (button) {\n button.click();\n }\n }\n }\n\n if (this.headersAsync !== null) {\n this.autoProcessQueue = false;\n }\n\n this.dropzone = new window.Dropzone(this.dropzoneElement, {\n accept: this.accept,\n acceptedFiles: this.acceptedFiles,\n autoProcessQueue: this.autoProcessQueue,\n chunking: this.chunking,\n chunkSize: this.chunkSize,\n chunksUploaded: this.chunksUploaded,\n clickable: [this.clickareaElement],\n createImageThumbnails: false,\n defaultHeaders: this.defaultHeaders,\n defaultLabel: this.localization.photographingLabelDefault,\n dictCancelUpload: this.localization.cancelUpload,\n dictCancelUploadConfirmation: this.localization.cancelUploadConfirmation,\n dictDeleteFile: this.localization.deleteFile,\n dictFileSizeUnits: { tb: \"TiB\", gb: \"GiB\", mb: \"MiB\", kb: \"KiB\", b: \"b\" },\n dictFileTooBig: this.localization.fileTooBig,\n dictInvalidFileType: this.localization.invalidFileType,\n dictMaxFilesExceeded: this.localization.maxFilesExceeded,\n dictRemoveFile: this.localization.removeFile,\n dictRemoveFileConfirmation: null,\n dictResponseError: this.localization.responseError,\n dictUploadCanceled: this.localization.uploadCanceled,\n duplicateFileName: this.duplicateFileName,\n duplicateFileSize: this.duplicateFileSize,\n duplicateFileUploadHeading: this.localization.duplicateFileUploadHeading,\n duplicateFileUploadParagraph: this.localization.duplicateFileUploadParagraph,\n filesize: this.filesize,\n filesizeBase: this.filesizeBase,\n forceChunking: this.forceChunking,\n headers: this.headers,\n hiddenInputContainer: this.hiddenInputContainer ? this.hiddenInputContainer : this.hiddenInputContainerElement,\n maxFiles: this.maxFiles,\n maxFilesize: this.maxFilesize,\n method: this.method,\n parallelChunkUploads: this.parallelChunkUploads,\n parallelUploads: this.parallelUploads,\n preventDuplicateFileNames: this.preventDuplicateFileNames,\n preventHiddenInputClear: this.preventHiddenInputClear,\n previewsContainer: this.previewsElement,\n retryChunks: this.retryChunks,\n retryChunksLimit: this.retryChunksLimit,\n totalFilesState: this.totalFilesState,\n uploadMultiple: this.uploadMultiple,\n url: this.url,\n withCredentials: this.withCredentials,\n // Called when a file is dropped to the dropzone\n // Receives `event`\n drop: e => {\n // Merge files in hidden input.\n if (this.preventHiddenInputClear) {\n const hiddenFileInput = this.hiddenInputContainerElement?.querySelector(\"input\");\n const dataTransfer = new DataTransfer();\n for (let i = 0; i < hiddenFileInput.files.length; i++) {\n dataTransfer.items.add(hiddenFileInput.files[i]);\n }\n for (const file of e.dataTransfer.files) {\n dataTransfer.items.add(file);\n }\n hiddenFileInput.files = dataTransfer.files;\n }\n return this.element.classList.remove(\"dz-drag-hover\");\n },\n\n // Called when a file is added to the queue\n // Receives `file`\n // Taken from https://github.com/dropzone/dropzone/blob/v5.9.3/src/options.js#L594\n async addedfile(file) {\n file._id = previewCounter++;\n\n self.totalFilesState.push(file);\n\n let sessCheck = sessionStorage.getItem(\"totalFilesState\");\n if(!sessCheck) {\n sessionStorage.setItem(\"totalFilesState\", JSON.stringify(file));\n } else {\n sessionStorage.setItem(\"totalFilesState\", JSON.stringify(self.totalFilesState));\n }\n\n if (self.preventDuplicateFileNames) {\n\n if (self.totalFilesState.length > 0) {\n self.duplicateDetected = false; // reset\n self.totalFilesState.forEach((f) => {\n if (file.name === f.name && file._id !== f._id) {\n self.duplicateDetected = true;\n self.duplicateFileName = file.name;\n self.duplicateFileSize = (file.size / (1024 * 1024)).toFixed(2) + \" MiB\";\n setTimeout(prepareRemovalTransition, 10, \"_\" + file._id);\n setTimeout(removeFileByClick, 2000, \"_\" + file._id);\n }\n });\n }\n }\n\n if (this.element === this.previewsContainer) {\n this.element.classList.add(\"dz-started\");\n }\n\n const fileSizeInMiB = file.size / (1024 * 1024);\n\n if (self.totalFileSize + fileSizeInMiB > self.maxFilesizeTotal) {\n self.totalTooBig = true;\n self.totalTooBigMessageHeading = self.localization.fileTooBigTotal.replace(\"{{totalFilesize}}\", `${(self.totalFileSize + fileSizeInMiB).toFixed(1)}`);\n self.totalTooBigMessageBody = self.localization.fileTooBigTotal2.replace(\"{{maxFilesizeTotal}}\", `${self.maxFilesizeTotal}`);\n\n self.totalFilesState = self.totalFilesState.filter(f => f.name !== file.name);\n let sessCheck = sessionStorage.getItem(\"totalFilesState\");\n if(sessCheck) {\n sessionStorage.setItem(\"totalFilesState\", JSON.stringify(self.totalFilesState));\n }\n return;\n } else {\n self.totalTooBig = false;\n }\n\n self.totalFileSize += fileSizeInMiB;\n\n if (this.previewsContainer && !this.options.disablePreviews) {\n file.previewElement = window.Dropzone.createElement(this.options.previewTemplate.trim());\n file.previewElement.setAttribute(\"id\", \"_\" + file._id);\n file.previewTemplate = file.previewElement; // Backwards compatibility\n this.previewsContainer.appendChild(file.previewElement);\n\n if (!file.size) {\n file.previewElement.classList.add(\"dz-empty\");\n }\n\n for (var node of file.previewElement.querySelectorAll(`[${ATTR_NAME}]`)) {\n node.textContent = file.name;\n }\n\n for (node of file.previewElement.querySelectorAll(`[${ATTR_SIZE}]`)) {\n node.innerHTML = self.filesize.call(this, file.size);\n }\n\n for (node of file.previewElement.querySelectorAll(`[${ATTR_META_ID}]`)) {\n node.setAttribute(\"id\", `${self.filePreviewId(file)}-meta`);\n }\n\n for (node of file.previewElement.querySelectorAll(`[${ATTR_ERROR_MESSAGE_ID}]`)) {\n node.setAttribute(\"id\", `${self.filePreviewId(file)}-error-message`);\n }\n\n if (this.options.addRemoveLinks) {\n file._removeLink = window.Dropzone.createElement(\n `<a class=\"dz-remove\" href=\"javascript:undefined;\" ${ATTR_REMOVE}>\n ${this.options.dictRemoveFile}\n </a>`\n );\n file.previewElement.appendChild(file._removeLink);\n }\n\n let removeFileEvent = e => {\n e.preventDefault();\n e.stopPropagation();\n if (file.status === window.Dropzone.UPLOADING) {\n return window.Dropzone.confirm(this.options.dictCancelUploadConfirmation, () => this.removeFile(file));\n } else {\n if (this.options.dictRemoveFileConfirmation) {\n return window.Dropzone.confirm(this.options.dictRemoveFileConfirmation, () => this.removeFile(file));\n } else {\n return this.removeFile(file);\n }\n }\n };\n\n for (let removeLink of file.previewElement.querySelectorAll(`[${ATTR_REMOVE}]`)) {\n removeLink.addEventListener(\"click\", removeFileEvent);\n\n const isStzh = isStzhElement(removeLink);\n const fileId = self.filePreviewId(file);\n\n removeLink.setAttribute(isStzh ? \"analytics-id\" : \"s-object-id\", `${this.options.dictRemoveFile}`);\n removeLink.setAttribute(\n isStzh ? \"a11y-label\" : \"aria-label\",\n `${this.options.dictRemoveFile} ${file.name}`\n );\n removeLink.setAttribute(\n isStzh ? \"a11y-describedby\" : \"aria-describedby\",\n `${fileId}-error-message ${fileId}-meta`\n );\n }\n\n if (!self.downloadDisabled && !self.downloadDisabledWhileProcessing) {\n enableDownload(file);\n }\n }\n\n // Support async headers.\n if (self.headersAsync !== null) {\n self.dropzone.options.headers = await self.headersAsync();\n self.dropzone.processQueue();\n }\n },\n\n // When the upload is finished, either with success or an error.\n // Taken from https://github.com/dropzone/dropzone/blob/v5.9.3/src/options.js#L752\n complete(file) {\n for (let node of file.previewElement.querySelectorAll(`[${ATTR_REMOVE}]`)) {\n const hasErrorState = file.status === \"error\";\n const removeOrDeleteLabel = hasErrorState ? this.options.dictRemoveFile : this.options.dictDeleteFile;\n const isStzh = isStzhElement(node);\n const fileId = self.filePreviewId(file);\n\n node.setAttribute(isStzh ? \"a11y-label\" : \"aria-label\", `${removeOrDeleteLabel} ${file.name}`);\n node.setAttribute(isStzh ? \"a11y-describedby\" : \"aria-describedby\", `${fileId}-error-message ${fileId}-meta`);\n }\n\n // move file uploads with errors to another element, so they are grouped together\n if (file.status === \"error\") {\n self.errorsElement.appendChild(file.previewElement);\n } else if (!self.downloadDisabled && self.downloadDisabledWhileProcessing) {\n enableDownload(file);\n }\n\n if (file._removeLink) {\n file._removeLink.innerHTML = this.options.dictRemoveFile;\n }\n\n if (file.previewElement) {\n return file.previewElement.classList.add(\"dz-complete\");\n }\n },\n\n // Called whenever a file is removed.\n // Taken fom https://github.com/dropzone/dropzone/blob/v5.9.3/src/options.js#L649\n removedfile(file) {\n if (file.previewElement != null && file.previewElement.parentNode != null) {\n file.previewElement.parentNode.removeChild(file.previewElement);\n }\n\n const fileSizeInMiB = file.size / (1024 * 1024);\n self.totalFileSize -= fileSizeInMiB;\n\n // set focus to upload\n self.linkElement.focus();\n return this._updateMaxFilesReachedClass();\n },\n error(file, message, xhr) {\n if (file.previewElement) {\n file.previewElement.classList.add(\"dz-error\");\n\n if (typeof message !== \"string\" && message.error) {\n message = message.error;\n } else if (xhr) {\n if (xhr.status === 401 || xhr.status === 403) {\n message = self.localization.accessError;\n } else if (xhr.status === 413) {\n message = self.localization.fileTooBigServer;\n } else if (xhr.status === 415) {\n message = self.localization.invalidFileType;\n } else if (xhr.status >= 500) {\n message = self.localization.serverError;\n } else {\n const defaultError = self.localization.responseError.replace(\"{{statusCode}}\", xhr.status);\n\n message = defaultError;\n }\n }\n\n for (let node of file.previewElement.querySelectorAll(\"[data-dz-errormessage]\")) {\n node.textContent = message;\n }\n }\n },\n previewTemplate: `\n <div class=\"stzh-upload__preview\">\n <div class=\"stzh-upload__image\">\n <img data-dz-thumbnail />\n </div>\n\n <div class=\"stzh-upload__details\">\n <div class=\"stzh-upload__info-wrapper\">\n <div class=\"stzh-upload__info-wrapper-processing\">\n <div class=\"stzh-upload__infos\">\n <div class=\"stzh-upload__subtitle\">\n <a class=\"stzh-upload__link\" ${ATTR_NAME} ${ATTR_LINK}></a>\n </div>\n <div class=\"stzh-upload__progress-text\">\n <span ${ATTR_PROGRESS_TEXT}></span>\n </div>\n </div>\n <div class=\"stzh-upload__meta\">\n <span class=\"stzh-upload__extension\" ${ATTR_EXTENSION}></span>\n <span class=\"stzh-upload__separator\"></span>\n <span class=\"stzh-upload__size\" ${ATTR_SIZE}></span>\n </div>\n <div class=\"stzh-upload__progress\">\n <span class=\"stzh-upload__progress-bar\" data-dz-uploadprogress></span>\n </div>\n </div>\n <div class=\"stzh-upload__info-wrapper-complete\">\n <div class=\"stzh-upload__title\">\n <a class=\"stzh-upload__link\" ${ATTR_NAME} ${ATTR_LINK}></a>\n </div>\n <div class=\"stzh-upload__meta\" ${ATTR_META_ID}>\n <span class=\"stzh-upload__extension\" ${ATTR_EXTENSION}></span>\n <span class=\"stzh-upload__separator\"></span>\n <span class=\"stzh-upload__size\" ${ATTR_SIZE}></span>\n </div>\n <div class=\"stzh-upload__error-message\" ${ATTR_ERROR_MESSAGE_ID}>\n <span data-dz-errormessage></span>\n </div>\n </div>\n </div>\n <div class=\"stzh-upload__actions\">\n <!-- <stzh-button variant=\"tertiary\" size=\"small\" icon-only icon=\"download\" class=\"stzh-upload__download\" ${ATTR_LINK}></stzh-button> -->\n <stzh-button variant=\"tertiary\" size=\"small\" icon-only class=\"stzh-upload__delete\" ${ATTR_REMOVE}>\n <stzh-icon slot=\"icon\" class=\"stzh-upload__delete-icon\" name=\"delete\"></stzh-icon>\n <stzh-icon slot=\"icon\" class=\"stzh-upload__delete-icon-error\" name=\"close\"></stzh-icon>\n </stzh-button>\n </div>\n </div>\n </div>\n </div>\n `\n });\n\n this.nameWatcher(this.name);\n this.disabledWatcher();\n\n this.dropzone.on(\"addedfile\", (file: StzhUploadFile) =>\n this.stzhFileAdded.emit({\n component: \"stzh-upload\",\n file\n })\n );\n\n this.dropzone.on(\"addedfiles\", (files: StzhUploadFile[]) =>\n this.stzhFilesAdded.emit({\n component: \"stzh-upload\",\n files\n })\n );\n\n this.dropzone.on(\"removefile\", (file: StzhUploadFile) => {\n\n this.totalFilesState = this.totalFilesState.filter(f => f._id !== file._id);\n\n if(sessionStorage.getItem(\"totalFilesState\")) {\n let oldStorage = JSON.parse(sessionStorage.getItem(\"totalFilesState\"));\n let newStorage = oldStorage.filter((f) => f._id !== file._id);\n sessionStorage.setItem(\"totalFilesState\", JSON.stringify(newStorage));\n } else {\n sessionStorage.setItem(\"totalFilesState\", JSON.stringify(this.totalFilesState));\n }\n\n if (this.preventHiddenInputClear) {\n const hiddenFileInput = this.hiddenInputContainerElement?.querySelector(\"input\");\n const dataTransfer = new DataTransfer();\n for (let i = 0; i < hiddenFileInput.files.length; i++) {\n if (hiddenFileInput.files[i].name !== file.name) {\n dataTransfer.items.add(hiddenFileInput.files[i]);\n }\n }\n hiddenFileInput.files = dataTransfer.files;\n }\n return (\n this.stzhFileRemove.emit({\n component: \"stzh-upload\",\n file\n }).defaultPrevented === false\n );\n });\n\n this.dropzone.on(\"removedfile\", (file: StzhUploadFile, force: boolean) =>\n this.stzhFileRemoved.emit({\n component: \"stzh-upload\",\n file,\n force\n })\n );\n\n this.dropzone.on(\"sending\", (file: StzhUploadFile, xhr: XMLHttpRequest, formData: FormData) =>\n this.stzhSending.emit({\n component: \"stzh-upload\",\n file,\n xhr,\n formData\n })\n );\n\n this.dropzone.on(\"sendingmultiple\", (files: StzhUploadFile[], xhr: XMLHttpRequest, formData: FormData) =>\n this.stzhSendingMultiple.emit({\n component: \"stzh-upload\",\n files,\n xhr,\n formData\n })\n );\n\n this.dropzone.on(\"processing\", (file: StzhUploadFile) =>\n this.stzhProcessing.emit({\n component: \"stzh-upload\",\n file\n })\n );\n\n this.dropzone.on(\"processingmultiple\", (files: StzhUploadFile[]) =>\n this.stzhProcessingMultiple.emit({\n component: \"stzh-upload\",\n files\n })\n );\n\n this.dropzone.on(\"uploadprogress\", (file: StzhUploadFile, progress: number, bytesSent: number) =>\n this.stzhProgress.emit({\n component: \"stzh-upload\",\n file,\n progress,\n bytesSent\n })\n );\n\n this.dropzone.on(\"totaluploadprogress\", (totalUploadProgress: number, totalBytes: number, totalBytesSent: number) =>\n this.stzhProgressTotal.emit({\n component: \"stzh-upload\",\n totalUploadProgress,\n totalBytes,\n totalBytesSent\n })\n );\n\n this.dropzone.on(\"error\", (file: StzhUploadFile, message: string, xhr: XMLHttpRequest) => {\n if (xhr && xhr.status >= 400) {\n this.toggleToast(this.localization.uploadErrorToast, \"error\");\n }\n this.stzhError.emit({\n component: \"stzh-upload\",\n file,\n message,\n xhr\n });\n });\n\n this.dropzone.on(\"errormultiple\", (files: StzhUploadFile[], message: string, xhr: XMLHttpRequest) => {\n if (xhr && xhr.status >= 400) {\n this.toggleToast(this.localization.uploadErrorToast, \"error\");\n }\n this.stzhErrorMultiple.emit({\n component: \"stzh-upload\",\n files,\n message,\n xhr\n });\n });\n\n this.dropzone.on(\"success\", (file: StzhUploadFile, responseText: string, event: ProgressEvent) => {\n this.toggleToast(this.localization.uploadSuccessToast, \"success\");\n this.stzhSuccess.emit({\n component: \"stzh-upload\",\n file,\n responseText,\n event\n });\n });\n\n this.dropzone.on(\"successmultiple\", (files: StzhUploadFile[], responseText: string, event: ProgressEvent) => {\n this.toggleToast(this.localization.uploadSuccessToast, \"success\");\n this.stzhSuccessMultiple.emit({\n component: \"stzh-upload\",\n files,\n responseText,\n event\n });\n });\n\n this.dropzone.on(\"canceled\", (file: StzhUploadFile) =>\n this.stzhCanceled.emit({\n component: \"stzh-upload\",\n file\n })\n );\n\n this.dropzone.on(\"canceledmultiple\", (files: StzhUploadFile[]) =>\n this.stzhCanceledMultiple.emit({\n component: \"stzh-upload\",\n files\n })\n );\n\n this.dropzone.on(\"complete\", (file: StzhUploadFile) =>\n this.stzhComplete.emit({\n component: \"stzh-upload\",\n file\n })\n );\n\n this.dropzone.on(\"completemultiple\", (files: StzhUploadFile[]) =>\n this.stzhCompleteMultiple.emit({\n component: \"stzh-upload\",\n files\n })\n );\n\n this.dropzone.on(\"addedfile\", (file: StzhUploadFile) => {\n\n file.previewElement.querySelectorAll(`[${ATTR_NAME}]`).forEach((name: HTMLElement) => {\n name.setAttribute(\"title\", file.name);\n });\n\n file.previewElement.querySelectorAll(`[${ATTR_TYPE}]`).forEach((type: HTMLElement) => {\n type.innerText = file.type;\n });\n\n file.previewElement.querySelectorAll(`[${ATTR_EXTENSION}]`).forEach((extension: HTMLElement) => {\n extension.innerText = file.name.split(\".\").pop();\n });\n\n });\n\n this.dropzone.on(\"uploadprogress\", (file: StzhUploadFile, progress: number) => {\n file.previewElement.querySelectorAll(`[${ATTR_PROGRESS_TEXT}]`).forEach((progressText: HTMLElement) => {\n progressText.innerText = `${progress.toString()}%`;\n });\n });\n\n this._existingFiles.forEach(file => {\n this.dropzone.displayExistingFile(file, null, null, null, null);\n });\n }\n\n disconnectedCallback() {\n if (this.dropzone) {\n this.dropzone.destroy();\n this.dropzone = null;\n }\n }\n\n render() {\n const errorUsed = hasSlot(this.element, \"error\") || this._error?.length > 0;\n\n const description = this.description ? this.description : this.localization.description;\n\n const classes = {\n \"stzh-upload\": true,\n \"stzh-upload--is-invalid\": this.invalid || errorUsed,\n \"stzh-upload--is-disabled\": this.disabled,\n \"stzh-upload--has-hidden-progress\": this.hideProgress,\n \"stzh-upload--has-hidden-progress-while-idle\": this.hideProgressWhileIdle,\n \"stzh-upload--has-error\": errorUsed,\n \"stzh-upload--has-instructions\": !!this.description || !!this.localization.description\n };\n\n const descriptionTotalFileSizeLimit = this.localization.descriptionTotalFileSizeLimit;\n\n return (\n <Host is-invalid={this.invalid || errorUsed}>\n <stzh-toastbar />\n <div class={classes} ref={el => (this.dropzoneElement = el as HTMLDivElement)}>\n <div ref={el => (this.hiddenInputContainerElement = el as HTMLElement)}></div>\n\n <div id={`${this.uploadId}-label`}>{this.label && <div class=\"stzh-upload__label\">{this.label}</div>}</div>\n\n <div class=\"stzh-upload__clickarea\" ref={el => (this.clickareaElement = el as HTMLDivElement)}>\n <div class=\"stzh-upload__heading-wrapper\">\n <div class=\"stzh-upload__heading-inner-wrapper\">\n <div class=\"stzh-upload__heading\">{this.heading ? this.heading : this.localization.heading}</div>\n <div class=\"stzh-upload__buttons-wrapper\">\n <stzh-button\n class=\"stzh-upload__button\"\n variant=\"secondary\"\n size=\"small\"\n ref={el => (this.linkElement = el as HTMLStzhButtonElement)}\n label={this.button ? this.button : this.localization.button}\n a11yDescribedby={`${this.uploadId}-label ${this.uploadId}-instruction ${this.uploadId}-description`}\n disabled={this.disabled}\n a11yControls={`${this.uploadId}-previews`}\n >\n <stzh-icon slot=\"icon\" name=\"upload\"></stzh-icon>\n </stzh-button>\n {this.isPhotographingAvailable && (\n <stzh-button\n class=\"stzh-upload__button-scan\"\n variant=\"secondary\"\n size=\"small\"\n label={this.buttonScan ? this.buttonScan : this.localization.buttonScan}\n onClick={this.onButtonScanClick}\n >\n <stzh-icon slot=\"icon\" name=\"camera\"></stzh-icon>\n </stzh-button>\n )}\n </div>\n <div class=\"stzh-upload__hint-wrapper\">\n <span>{this.localization.buttonIntro}</span>\n </div>\n </div>\n </div>\n <div class=\"stzh-upload__instructions\" id={`${this.uploadId}-instruction`}>\n <p>\n {description\n .replace(\"{{fileformats}}\", this.acceptedFiles ? this.acceptedFiles : \"Alle\")\n .replace(\"{{filesize}}\", `${this.maxFilesize}`)}\n <br />\n {descriptionTotalFileSizeLimit.replace(\"{{maxFilesizeTotal}}\", `${this.maxFilesizeTotal}`)}\n </p>\n </div>\n </div>\n\n <div class=\"stzh-upload__description-wrapper\">\n {this._error?.length > 0 && (\n <StzhInputDescription classPrefix=\"stzh-upload\" id={`${this.uploadId}-description`} error={this._error} />\n )}\n </div>\n\n <div id={`${this.uploadId}-previews`} class=\"stzh-upload__previews-wrapper\">\n <div class=\"stzh-upload__previews-inner-wrapper\">\n <div class=\"stzh-upload__errors\" ref={el => (this.errorsElement = el as HTMLElement)}></div>\n <div\n class=\"stzh-upload__previews dropzone-previews\"\n ref={el => (this.previewsElement = el as HTMLElement)}\n ></div>\n </div>\n </div>\n </div>\n\n {this.duplicateDetected && (\n <div class=\"stzh-upload__previews-message-wrapper\">\n <stzh-message type=\"error\" label={this.localization.duplicateFileUploadHeading} onStzhClose={() => this.duplicateDetected = false}>\n <stzh-text>\n <p>«{this.duplicateFileName}» ({this.duplicateFileSize})</p>\n <p>{this.localization.duplicateFileUploadParagraph}</p>\n </stzh-text>\n </stzh-message>\n </div>\n )}\n\n {this.totalTooBig && (\n <div class=\"stzh-upload__previews-message-wrapper\">\n <stzh-message type=\"error\" label={this.totalTooBigMessageHeading}\n onStzhClose={() => this.totalTooBig = false}\n >\n <stzh-text>\n <p>{this.totalTooBigMessageBody}</p>\n </stzh-text>\n </stzh-message>\n </div>\n )}\n\n <stzh-dialog\n ref={el => (this.photographingOverlayElement = el as HTMLStzhOverlayElement)}\n onStzhClose={this.closePhotographingWebsocketConnection}\n class={this.isPhotographingAvailable && \"stzh-dialog--fit-content\"}\n >\n <stzh-button\n class=\"stzh-upload-photographing__back-button\"\n icon=\"arrow-left\"\n size=\"small\"\n variant=\"tertiary-plain\"\n no-padding-left=\"true\"\n no-padding-right=\"true\"\n onClick={this.closePhotographingOverlay}\n >\n {this.localization.back}\n </stzh-button>\n {this.isPhotographingAvailable && (\n <Fragment>\n <div class=\"stzh-upload-photographing__info\">\n <stzh-heading level=\"3\">{this.localization.photographingTitle1}</stzh-heading>\n <div class=\"stzh-upload-photographing__text-qrcode\">\n <div class=\"stzh-upload-photographing-qrlink-container\">\n <stzh-text>{this.localization.photographingText1}</stzh-text>\n </div>\n <div class=\"stzh-upload-photographing-qrcode-container\">\n <canvas\n class=\"stzh-upload-photographing-qrcode\"\n ref={el => (this.photographingQrcodeElement = el as HTMLCanvasElement)}\n ></canvas>\n </div>\n </div>\n </div>\n <div class=\"stzh-upload-photographing__info\">\n <stzh-heading level=\"3\">{this.localization.photographingTitle2}</stzh-heading>\n <stzh-text>{this.localization.photographingText2}</stzh-text>\n </div>\n <div class=\"stzh-upload-photographing__continue\">\n {!!this.photographingUrlDetails && (\n <stzh-link\n class=\"stzh-upload-photographing-link\"\n href={this.photographingUrlDetails.url + \"&label=\" + this.cleanLabel(this.label)}\n target=\"_blank\"\n >\n {this.localization.photographingContinue}\n </stzh-link>\n )}\n </div>\n </Fragment>\n )}\n </stzh-dialog>\n </Host>\n );\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stzh-upload.localization.js","sourceRoot":"","sources":["../../../../src/components/stzh-upload/stzh-upload.localization.ts"],"names":[],"mappings":"","sourcesContent":["import { StzhLocaleComponent } from \"../../index\";\n\nexport type StzhUploadLocalizedText = StzhLocaleComponent & {\n heading: string;\n description: string;\n descriptionTotalFileSizeLimit: string;\n buttonIntro: string;\n button: string;\n buttonScan: string;\n cancelUpload: string;\n uploadCanceled: string;\n cancelUploadConfirmation: string;\n removeFile: string;\n deleteFile: string;\n downloadFile: string;\n maxFilesExceeded: string;\n serverError: string;\n accessError: string;\n responseError: string;\n invalidFileType: string;\n fileTooBig: string;\n fileTooBigTotal: string;\n fileTooBigServer: string;\n photographingTitle1: string;\n photographingText1: string;\n photographingTitle2: string;\n photographingText2: string;\n back: string;\n uploadSuccessToast: string;\n uploadErrorToast: string;\n photographingLabelDefault: string;\n duplicateFileUploadHeading: string;\n duplicateFileUploadParagraph: string;\n};\n"]}
|
|
1
|
+
{"version":3,"file":"stzh-upload.localization.js","sourceRoot":"","sources":["../../../../src/components/stzh-upload/stzh-upload.localization.ts"],"names":[],"mappings":"","sourcesContent":["import { StzhLocaleComponent } from \"../../index\";\n\nexport type StzhUploadLocalizedText = StzhLocaleComponent & {\n heading: string;\n description: string;\n descriptionTotalFileSizeLimit: string;\n buttonIntro: string;\n button: string;\n buttonScan: string;\n cancelUpload: string;\n uploadCanceled: string;\n cancelUploadConfirmation: string;\n removeFile: string;\n deleteFile: string;\n downloadFile: string;\n maxFilesExceeded: string;\n serverError: string;\n accessError: string;\n responseError: string;\n invalidFileType: string;\n fileTooBig: string;\n fileTooBigTotal: string;\n fileTooBigTotal2: string;\n fileTooBigServer: string;\n photographingTitle1: string;\n photographingText1: string;\n photographingTitle2: string;\n photographingText2: string;\n photographingContinue: string;\n back: string;\n uploadSuccessToast: string;\n uploadErrorToast: string;\n photographingLabelDefault: string;\n duplicateFileUploadHeading: string;\n duplicateFileUploadParagraph: string;\n};\n"]}
|
package/dist/components/index.js
CHANGED
|
@@ -2,7 +2,7 @@ export { g as getAssetPath, s as setAssetPath, a as setNonce, b as setPlatformOp
|
|
|
2
2
|
export { S as StzhSocialmediastreamItemActionVariant, V as VBZ, t as tc } from './p-f8d9bc8a.js';
|
|
3
3
|
|
|
4
4
|
const name = "@oiz/stzh-components";
|
|
5
|
-
const version = "3.8.0
|
|
5
|
+
const version = "3.8.0";
|
|
6
6
|
|
|
7
7
|
const packageName = name.substring(name.indexOf('/')+1);
|
|
8
8
|
// let focused = false;
|