@volverjs/ui-vue 0.0.10-beta.11 → 0.0.10-beta.13

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.
Files changed (47) hide show
  1. package/auto-imports.d.ts +1 -0
  2. package/dist/components/VvInputFile/VvInputFile.es.js +1529 -0
  3. package/dist/components/VvInputFile/VvInputFile.umd.js +1 -0
  4. package/dist/components/VvInputFile/VvInputFile.vue.d.ts +141 -0
  5. package/dist/components/VvInputFile/index.d.ts +52 -0
  6. package/dist/components/VvTab/VvTab.es.js +2 -2
  7. package/dist/components/VvTab/VvTab.umd.js +1 -1
  8. package/dist/components/VvTab/VvTab.vue.d.ts +1 -0
  9. package/dist/components/index.d.ts +1 -0
  10. package/dist/components/index.es.js +635 -312
  11. package/dist/components/index.umd.js +1 -1
  12. package/dist/composables/index.d.ts +1 -0
  13. package/dist/composables/index.es.js +77 -1
  14. package/dist/composables/index.umd.js +1 -1
  15. package/dist/composables/useBlurhash.d.ts +7 -0
  16. package/dist/icons.es.js +3 -3
  17. package/dist/icons.umd.js +1 -1
  18. package/dist/stories/AlertGroup/AlertGroupWithComposable.stories.d.ts +1 -1
  19. package/dist/stories/Blurhash/BlurhashComposable.stories.d.ts +4 -0
  20. package/dist/stories/InputFile/InputFile.settings.d.ts +56 -0
  21. package/dist/stories/InputFile/InputFile.stories.d.ts +12 -0
  22. package/dist/stories/InputFile/InputFileModifiers.stories.d.ts +9 -0
  23. package/dist/stories/InputFile/InputFileSlots.stories.d.ts +6 -0
  24. package/dist/types/blurhash.d.ts +12 -0
  25. package/dist/types/index.d.ts +2 -0
  26. package/dist/types/input-file.d.ts +14 -0
  27. package/dist/workers/blurhash.d.ts +1 -0
  28. package/package.json +13 -1
  29. package/src/assets/icons/detailed.json +1 -1
  30. package/src/assets/icons/normal.json +1 -1
  31. package/src/assets/icons/simple.json +1 -1
  32. package/src/components/VvInputFile/VvInputFile.vue +274 -0
  33. package/src/components/VvInputFile/index.ts +36 -0
  34. package/src/components/VvTab/VvTab.vue +2 -2
  35. package/src/components/index.ts +1 -0
  36. package/src/composables/index.ts +1 -0
  37. package/src/composables/useBlurhash.ts +76 -0
  38. package/src/stories/AlertGroup/AlertGroupWithComposable.stories.ts +2 -2
  39. package/src/stories/Blurhash/BlurhashComposable.stories.ts +195 -0
  40. package/src/stories/InputFile/InputFile.settings.ts +36 -0
  41. package/src/stories/InputFile/InputFile.stories.ts +90 -0
  42. package/src/stories/InputFile/InputFileModifiers.stories.ts +51 -0
  43. package/src/stories/InputFile/InputFileSlots.stories.ts +25 -0
  44. package/src/types/blurhash.ts +21 -0
  45. package/src/types/index.ts +2 -0
  46. package/src/types/input-file.ts +16 -0
  47. package/src/workers/blurhash.ts +9 -0
@@ -1,4 +1,6 @@
1
1
  import { reactive, computed } from "vue";
2
+ import { wrap } from "comlink";
3
+ import pica from "pica";
2
4
  const DEFAULT_ALERT_AUTO_CLOSE = 1e4;
3
5
  const DEFAULT_ALERT_MODIFIERS = "info";
4
6
  const DEFAULT_ALERT_DISMISSABLE = true;
@@ -76,6 +78,80 @@ const useAlert = () => {
76
78
  getAlerts
77
79
  };
78
80
  };
81
+ const encodedJs = "IWZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiOwovKioKICAgKiBAbGljZW5zZQogICAqIENvcHlyaWdodCAyMDE5IEdvb2dsZSBMTEMKICAgKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMAogICAqL2NvbnN0IHQ9U3ltYm9sKCJDb21saW5rLnByb3h5IiksZT1TeW1ib2woIkNvbWxpbmsuZW5kcG9pbnQiKSxyPVN5bWJvbCgiQ29tbGluay5yZWxlYXNlUHJveHkiKSxuPVN5bWJvbCgiQ29tbGluay5maW5hbGl6ZXIiKSxhPVN5bWJvbCgiQ29tbGluay50aHJvd24iKSxvPXQ9PiJvYmplY3QiPT10eXBlb2YgdCYmbnVsbCE9PXR8fCJmdW5jdGlvbiI9PXR5cGVvZiB0LHM9bmV3IE1hcChbWyJwcm94eSIse2NhbkhhbmRsZTplPT5vKGUpJiZlW3RdLHNlcmlhbGl6ZSh0KXtjb25zdHtwb3J0MTplLHBvcnQyOnJ9PW5ldyBNZXNzYWdlQ2hhbm5lbDtyZXR1cm4gaSh0LGUpLFtyLFtyXV19LGRlc2VyaWFsaXplKHQpe3JldHVybiB0LnN0YXJ0KCksbSh0LFtdLGUpO3ZhciBlfX1dLFsidGhyb3ciLHtjYW5IYW5kbGU6dD0+byh0KSYmYSBpbiB0LHNlcmlhbGl6ZSh7dmFsdWU6dH0pe2xldCBlO3JldHVybiBlPXQgaW5zdGFuY2VvZiBFcnJvcj97aXNFcnJvcjohMCx2YWx1ZTp7bWVzc2FnZTp0Lm1lc3NhZ2UsbmFtZTp0Lm5hbWUsc3RhY2s6dC5zdGFja319Ontpc0Vycm9yOiExLHZhbHVlOnR9LFtlLFtdXX0sZGVzZXJpYWxpemUodCl7aWYodC5pc0Vycm9yKXRocm93IE9iamVjdC5hc3NpZ24obmV3IEVycm9yKHQudmFsdWUubWVzc2FnZSksdC52YWx1ZSk7dGhyb3cgdC52YWx1ZX19XV0pO2Z1bmN0aW9uIGkoZSxyPWdsb2JhbFRoaXMsbz1bIioiXSl7ci5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwoZnVuY3Rpb24gcyhoKXtpZighaHx8IWguZGF0YSlyZXR1cm47aWYoIWZ1bmN0aW9uKHQsZSl7Zm9yKGNvbnN0IHIgb2YgdCl7aWYoZT09PXJ8fCIqIj09PXIpcmV0dXJuITA7aWYociBpbnN0YW5jZW9mIFJlZ0V4cCYmci50ZXN0KGUpKXJldHVybiEwfXJldHVybiExfShvLGgub3JpZ2luKSlyZXR1cm4gdm9pZCBjb25zb2xlLndhcm4oYEludmFsaWQgb3JpZ2luICcke2gub3JpZ2lufScgZm9yIGNvbWxpbmsgcHJveHlgKTtjb25zdHtpZDpjLHR5cGU6dSxwYXRoOmZ9PU9iamVjdC5hc3NpZ24oe3BhdGg6W119LGguZGF0YSksbT0oaC5kYXRhLmFyZ3VtZW50TGlzdHx8W10pLm1hcChkKTtsZXQgcDt0cnl7Y29uc3Qgcj1mLnNsaWNlKDAsLTEpLnJlZHVjZSgoKHQsZSk9PnRbZV0pLGUpLG49Zi5yZWR1Y2UoKCh0LGUpPT50W2VdKSxlKTtzd2l0Y2godSl7Y2FzZSJHRVQiOnA9bjticmVhaztjYXNlIlNFVCI6cltmLnNsaWNlKC0xKVswXV09ZChoLmRhdGEudmFsdWUpLHA9ITA7YnJlYWs7Y2FzZSJBUFBMWSI6cD1uLmFwcGx5KHIsbSk7YnJlYWs7Y2FzZSJDT05TVFJVQ1QiOnA9ZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5hc3NpZ24oZSx7W3RdOiEwfSl9KG5ldyBuKC4uLm0pKTticmVhaztjYXNlIkVORFBPSU5UIjp7Y29uc3R7cG9ydDE6dCxwb3J0MjpyfT1uZXcgTWVzc2FnZUNoYW5uZWw7aShlLHIpLHA9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZy5zZXQodCxlKSx0fSh0LFt0XSl9YnJlYWs7Y2FzZSJSRUxFQVNFIjpwPXZvaWQgMDticmVhaztkZWZhdWx0OnJldHVybn19Y2F0Y2goeSl7cD17dmFsdWU6eSxbYV06MH19UHJvbWlzZS5yZXNvbHZlKHApLmNhdGNoKCh0PT4oe3ZhbHVlOnQsW2FdOjB9KSkpLnRoZW4oKHQ9Pntjb25zdFthLG9dPU0odCk7ci5wb3N0TWVzc2FnZShPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sYSkse2lkOmN9KSxvKSwiUkVMRUFTRSI9PT11JiYoci5yZW1vdmVFdmVudExpc3RlbmVyKCJtZXNzYWdlIixzKSxsKHIpLG4gaW4gZSYmImZ1bmN0aW9uIj09dHlwZW9mIGVbbl0mJmVbbl0oKSl9KSkuY2F0Y2goKHQ9Pntjb25zdFtlLG5dPU0oe3ZhbHVlOm5ldyBUeXBlRXJyb3IoIlVuc2VyaWFsaXphYmxlIHJldHVybiB2YWx1ZSIpLFthXTowfSk7ci5wb3N0TWVzc2FnZShPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sZSkse2lkOmN9KSxuKX0pKX0pKSxyLnN0YXJ0JiZyLnN0YXJ0KCl9ZnVuY3Rpb24gbCh0KXsoZnVuY3Rpb24odCl7cmV0dXJuIk1lc3NhZ2VQb3J0Ij09PXQuY29uc3RydWN0b3IubmFtZX0pKHQpJiZ0LmNsb3NlKCl9ZnVuY3Rpb24gaCh0KXtpZih0KXRocm93IG5ldyBFcnJvcigiUHJveHkgaGFzIGJlZW4gcmVsZWFzZWQgYW5kIGlzIG5vdCB1c2VhYmxlIil9ZnVuY3Rpb24gYyh0KXtyZXR1cm4geSh0LHt0eXBlOiJSRUxFQVNFIn0pLnRoZW4oKCgpPT57bCh0KX0pKX1jb25zdCB1PW5ldyBXZWFrTWFwLGY9IkZpbmFsaXphdGlvblJlZ2lzdHJ5ImluIGdsb2JhbFRoaXMmJm5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeSgodD0+e2NvbnN0IGU9KHUuZ2V0KHQpfHwwKS0xO3Uuc2V0KHQsZSksMD09PWUmJmModCl9KSk7ZnVuY3Rpb24gbSh0LG49W10sYT1mdW5jdGlvbigpe30pe2xldCBvPSExO2NvbnN0IHM9bmV3IFByb3h5KGEse2dldChlLGEpe2lmKGgobyksYT09PXIpcmV0dXJuKCk9PnshZnVuY3Rpb24odCl7ZiYmZi51bnJlZ2lzdGVyKHQpfShzKSxjKHQpLG89ITB9O2lmKCJ0aGVuIj09PWEpe2lmKDA9PT1uLmxlbmd0aClyZXR1cm57dGhlbjooKT0+c307Y29uc3QgZT15KHQse3R5cGU6IkdFVCIscGF0aDpuLm1hcCgodD0+dC50b1N0cmluZygpKSl9KS50aGVuKGQpO3JldHVybiBlLnRoZW4uYmluZChlKX1yZXR1cm4gbSh0LFsuLi5uLGFdKX0sc2V0KGUscixhKXtoKG8pO2NvbnN0W3MsaV09TShhKTtyZXR1cm4geSh0LHt0eXBlOiJTRVQiLHBhdGg6Wy4uLm4scl0ubWFwKCh0PT50LnRvU3RyaW5nKCkpKSx2YWx1ZTpzfSxpKS50aGVuKGQpfSxhcHBseShyLGEscyl7aChvKTtjb25zdCBpPW5bbi5sZW5ndGgtMV07aWYoaT09PWUpcmV0dXJuIHkodCx7dHlwZToiRU5EUE9JTlQifSkudGhlbihkKTtpZigiYmluZCI9PT1pKXJldHVybiBtKHQsbi5zbGljZSgwLC0xKSk7Y29uc3RbbCxjXT1wKHMpO3JldHVybiB5KHQse3R5cGU6IkFQUExZIixwYXRoOm4ubWFwKCh0PT50LnRvU3RyaW5nKCkpKSxhcmd1bWVudExpc3Q6bH0sYykudGhlbihkKX0sY29uc3RydWN0KGUscil7aChvKTtjb25zdFthLHNdPXAocik7cmV0dXJuIHkodCx7dHlwZToiQ09OU1RSVUNUIixwYXRoOm4ubWFwKCh0PT50LnRvU3RyaW5nKCkpKSxhcmd1bWVudExpc3Q6YX0scykudGhlbihkKX19KTtyZXR1cm4gZnVuY3Rpb24odCxlKXtjb25zdCByPSh1LmdldChlKXx8MCkrMTt1LnNldChlLHIpLGYmJmYucmVnaXN0ZXIodCxlLHQpfShzLHQpLHN9ZnVuY3Rpb24gcCh0KXtjb25zdCBlPXQubWFwKE0pO3JldHVybltlLm1hcCgodD0+dFswXSkpLChyPWUubWFwKCh0PT50WzFdKSksQXJyYXkucHJvdG90eXBlLmNvbmNhdC5hcHBseShbXSxyKSldO3ZhciByfWNvbnN0IGc9bmV3IFdlYWtNYXA7ZnVuY3Rpb24gTSh0KXtmb3IoY29uc3RbZSxyXW9mIHMpaWYoci5jYW5IYW5kbGUodCkpe2NvbnN0W24sYV09ci5zZXJpYWxpemUodCk7cmV0dXJuW3t0eXBlOiJIQU5ETEVSIixuYW1lOmUsdmFsdWU6bn0sYV19cmV0dXJuW3t0eXBlOiJSQVciLHZhbHVlOnR9LGcuZ2V0KHQpfHxbXV19ZnVuY3Rpb24gZCh0KXtzd2l0Y2godC50eXBlKXtjYXNlIkhBTkRMRVIiOnJldHVybiBzLmdldCh0Lm5hbWUpLmRlc2VyaWFsaXplKHQudmFsdWUpO2Nhc2UiUkFXIjpyZXR1cm4gdC52YWx1ZX19ZnVuY3Rpb24geSh0LGUscil7cmV0dXJuIG5ldyBQcm9taXNlKChuPT57Y29uc3QgYT1uZXcgQXJyYXkoNCkuZmlsbCgwKS5tYXAoKCgpPT5NYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIpLnRvU3RyaW5nKDE2KSkpLmpvaW4oIi0iKTt0LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLChmdW5jdGlvbiBlKHIpe3IuZGF0YSYmci5kYXRhLmlkJiZyLmRhdGEuaWQ9PT1hJiYodC5yZW1vdmVFdmVudExpc3RlbmVyKCJtZXNzYWdlIixlKSxuKHIuZGF0YSkpfSkpLHQuc3RhcnQmJnQuc3RhcnQoKSx0LnBvc3RNZXNzYWdlKE9iamVjdC5hc3NpZ24oe2lkOmF9LGUpLHIpfSkpfXZhciBiPVsiMCIsIjEiLCIyIiwiMyIsIjQiLCI1IiwiNiIsIjciLCI4IiwiOSIsIkEiLCJCIiwiQyIsIkQiLCJFIiwiRiIsIkciLCJIIiwiSSIsIkoiLCJLIiwiTCIsIk0iLCJOIiwiTyIsIlAiLCJRIiwiUiIsIlMiLCJUIiwiVSIsIlYiLCJXIiwiWCIsIlkiLCJaIiwiYSIsImIiLCJjIiwiZCIsImUiLCJmIiwiZyIsImgiLCJpIiwiaiIsImsiLCJsIiwibSIsIm4iLCJvIiwicCIsInEiLCJyIiwicyIsInQiLCJ1IiwidiIsInciLCJ4IiwieSIsInoiLCIjIiwiJCIsIiUiLCIqIiwiKyIsIiwiLCItIiwiLiIsIjoiLCI7IiwiPSIsIj8iLCJAIiwiWyIsIl0iLCJeIiwiXyIsInsiLCJ8IiwifSIsIn4iXSx3PXQ9PntsZXQgZT0wO2ZvcihsZXQgcj0wO3I8dC5sZW5ndGg7cisrKXtsZXQgbj10W3JdO2U9ODMqZStiLmluZGV4T2Yobil9cmV0dXJuIGV9LEU9KHQsZSk9Pnt2YXIgcj0iIjtmb3IobGV0IG49MTtuPD1lO24rKyl7bGV0IGE9TWF0aC5mbG9vcih0KS9NYXRoLnBvdyg4MyxlLW4pJTgzO3IrPWJbTWF0aC5mbG9vcihhKV19cmV0dXJuIHJ9LHY9dD0+e2xldCBlPXQvMjU1O3JldHVybiBlPD0uMDQwNDU/ZS8xMi45MjpNYXRoLnBvdygoZSsuMDU1KS8xLjA1NSwyLjQpfSxTPXQ9PntsZXQgZT1NYXRoLm1heCgwLE1hdGgubWluKDEsdCkpO3JldHVybiBlPD0uMDAzMTMwOD9NYXRoLnRydW5jKDEyLjkyKmUqMjU1Ky41KTpNYXRoLnRydW5jKDI1NSooMS4wNTUqTWF0aC5wb3coZSwuNDE2NjY2NjY2NjY2NjY2NyktLjA1NSkrLjUpfSx4PSh0LGUpPT4odD0+dDwwPy0xOjEpKHQpKk1hdGgucG93KE1hdGguYWJzKHQpLGUpLGs9Y2xhc3MgZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KSx0aGlzLm5hbWU9IlZhbGlkYXRpb25FcnJvciIsdGhpcy5tZXNzYWdlPXR9fSxQPXQ9PntpZighdHx8dC5sZW5ndGg8Nil0aHJvdyBuZXcgaygiVGhlIGJsdXJoYXNoIHN0cmluZyBtdXN0IGJlIGF0IGxlYXN0IDYgY2hhcmFjdGVycyIpO2xldCBlPXcodFswXSkscj1NYXRoLmZsb29yKGUvOSkrMSxuPWUlOSsxO2lmKHQubGVuZ3RoIT09NCsyKm4qcil0aHJvdyBuZXcgayhgYmx1cmhhc2ggbGVuZ3RoIG1pc21hdGNoOiBsZW5ndGggaXMgJHt0Lmxlbmd0aH0gYnV0IGl0IHNob3VsZCBiZSAkezQrMipuKnJ9YCl9LEE9dD0+e2xldCBlPXQ+PjgmMjU1LHI9MjU1JnQ7cmV0dXJuW3YodD4+MTYpLHYoZSksdihyKV19LFQ9KHQsZSk9PntsZXQgcj1NYXRoLmZsb29yKHQvMzYxKSxuPU1hdGguZmxvb3IodC8xOSklMTksYT10JTE5O3JldHVyblt4KChyLTkpLzksMikqZSx4KChuLTkpLzksMikqZSx4KChhLTkpLzksMikqZV19LEw9KHQsZSxyLG4pPT57bGV0IGE9MCxvPTAscz0wLGk9NCplO2ZvcihsZXQgaD0wO2g8ZTtoKyspe2xldCBlPTQqaDtmb3IobGV0IGw9MDtsPHI7bCsrKXtsZXQgcj1lK2wqaSxjPW4oaCxsKTthKz1jKnYodFtyXSksbys9Yyp2KHRbcisxXSkscys9Yyp2KHRbcisyXSl9fWxldCBsPTEvKGUqcik7cmV0dXJuW2EqbCxvKmwscypsXX0sUj0odCxlLHIsbixhKT0+e2lmKG48MXx8bj45fHxhPDF8fGE+OSl0aHJvdyBuZXcgaygiQmx1ckhhc2ggbXVzdCBoYXZlIGJldHdlZW4gMSBhbmQgOSBjb21wb25lbnRzIik7aWYoZSpyKjQhPT10Lmxlbmd0aCl0aHJvdyBuZXcgaygiV2lkdGggYW5kIGhlaWdodCBtdXN0IG1hdGNoIHRoZSBwaXhlbHMgYXJyYXkiKTtsZXQgbz1bXTtmb3IobGV0IGM9MDtjPGE7YysrKWZvcihsZXQgYT0wO2E8bjthKyspe2xldCBuPTA9PWEmJjA9PWM/MToyLHM9TCh0LGUsciwoKHQsbyk9Pm4qTWF0aC5jb3MoTWF0aC5QSSphKnQvZSkqTWF0aC5jb3MoTWF0aC5QSSpjKm8vcikpKTtvLnB1c2gocyl9bGV0IHMsaT1vWzBdLGw9by5zbGljZSgxKSxoPSIiO2lmKGgrPUUobi0xKzkqKGEtMSksMSksbC5sZW5ndGg+MCl7bGV0IHQ9TWF0aC5tYXgoLi4ubC5tYXAoKHQ9Pk1hdGgubWF4KC4uLnQpKSkpLGU9TWF0aC5mbG9vcihNYXRoLm1heCgwLE1hdGgubWluKDgyLE1hdGguZmxvb3IoMTY2KnQtLjUpKSkpO3M9KGUrMSkvMTY2LGgrPUUoZSwxKX1lbHNlIHM9MSxoKz1FKDAsMSk7cmV0dXJuIGgrPUUoKHQ9PihTKHRbMF0pPDwxNikrKFModFsxXSk8PDgpK1ModFsyXSkpKGkpLDQpLGwuZm9yRWFjaCgodD0+e2grPUUoKCh0LGUpPT4xOSpNYXRoLmZsb29yKE1hdGgubWF4KDAsTWF0aC5taW4oMTgsTWF0aC5mbG9vcig5KngodFswXS9lLC41KSs5LjUpKSkpKjE5KzE5Kk1hdGguZmxvb3IoTWF0aC5tYXgoMCxNYXRoLm1pbigxOCxNYXRoLmZsb29yKDkqeCh0WzFdL2UsLjUpKzkuNSkpKSkrTWF0aC5mbG9vcihNYXRoLm1heCgwLE1hdGgubWluKDE4LE1hdGguZmxvb3IoOSp4KHRbMl0vZSwuNSkrOS41KSkpKSkodCxzKSwyKX0pKSxofTtpKHtWYWxpZGF0aW9uRXJyb3I6ayxlbmNvZGU6UixkZWNvZGU6KHQsZSxyLG4pPT57UCh0KSxufD0xO2xldCBhPXcodFswXSksbz1NYXRoLmZsb29yKGEvOSkrMSxzPWElOSsxLGk9KHcodFsxXSkrMSkvMTY2LGw9bmV3IEFycmF5KHMqbyk7Zm9yKGxldCB1PTA7dTxsLmxlbmd0aDt1KyspaWYoMD09PXUpe2xldCBlPXcodC5zdWJzdHJpbmcoMiw2KSk7bFt1XT1BKGUpfWVsc2V7bGV0IGU9dyh0LnN1YnN0cmluZyg0KzIqdSw2KzIqdSkpO2xbdV09VChlLGkqbil9bGV0IGg9NCplLGM9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KGgqcik7Zm9yKGxldCB1PTA7dTxyO3UrKylmb3IobGV0IHQ9MDt0PGU7dCsrKXtsZXQgbj0wLGE9MCxpPTA7Zm9yKGxldCBoPTA7aDxvO2grKylmb3IobGV0IG89MDtvPHM7bysrKXtsZXQgYz1NYXRoLmNvcyhNYXRoLlBJKnQqby9lKSpNYXRoLmNvcyhNYXRoLlBJKnUqaC9yKSxmPWxbbytoKnNdO24rPWZbMF0qYyxhKz1mWzFdKmMsaSs9ZlsyXSpjfWxldCBmPVMobiksbT1TKGEpLHA9UyhpKTtjWzQqdCswK3UqaF09ZixjWzQqdCsxK3UqaF09bSxjWzQqdCsyK3UqaF09cCxjWzQqdCszK3UqaF09MjU1fXJldHVybiBjfSxpc0JsdXJoYXNoVmFsaWQ6dD0+e3RyeXtQKHQpfWNhdGNoKGUpe3JldHVybntyZXN1bHQ6ITEsZXJyb3JSZWFzb246ZS5tZXNzYWdlfX1yZXR1cm57cmVzdWx0OiEwfX19KX0oKTsK";
82
+ const blob = typeof window !== "undefined" && window.Blob && new Blob([atob(encodedJs)], { type: "text/javascript;charset=utf-8" });
83
+ function WorkerWrapper() {
84
+ let objURL;
85
+ try {
86
+ objURL = blob && (window.URL || window.webkitURL).createObjectURL(blob);
87
+ if (!objURL)
88
+ throw "";
89
+ return new Worker(objURL);
90
+ } catch (e) {
91
+ return new Worker("data:application/javascript;base64," + encodedJs);
92
+ } finally {
93
+ objURL && (window.URL || window.webkitURL).revokeObjectURL(objURL);
94
+ }
95
+ }
96
+ const remoteFunction = wrap(new WorkerWrapper());
97
+ function loadImage(src) {
98
+ return new Promise((resolve, reject) => {
99
+ const img = new Image();
100
+ img.onload = () => resolve(img);
101
+ img.onerror = (...args) => reject(args);
102
+ img.src = src;
103
+ });
104
+ }
105
+ const getWidthHeightFromMaxSize = (width, height, maxSize) => {
106
+ if (width > height) {
107
+ return {
108
+ width: maxSize,
109
+ height: Math.round(maxSize * (height / width))
110
+ };
111
+ }
112
+ return {
113
+ width: Math.round(maxSize * (width / height)),
114
+ height: maxSize
115
+ };
116
+ };
117
+ const resizeImage = async (image, width, height) => {
118
+ var _a;
119
+ const resizer = new pica();
120
+ const canvas = document.createElement("canvas");
121
+ canvas.width = width;
122
+ canvas.height = height;
123
+ const result = await resizer.resize(image, canvas);
124
+ return (_a = result.getContext("2d")) == null ? void 0 : _a.getImageData(0, 0, width, height).data;
125
+ };
126
+ const useBlurhash = () => {
127
+ async function encode(file) {
128
+ const imageUrl = URL.createObjectURL(file);
129
+ const image = await loadImage(imageUrl);
130
+ if ("width" in image && "height" in image) {
131
+ const { width: newWidth, height: newHeight } = getWidthHeightFromMaxSize(
132
+ image.width,
133
+ image.height,
134
+ 32
135
+ );
136
+ const imageData = await resizeImage(
137
+ image,
138
+ newWidth,
139
+ newHeight
140
+ );
141
+ if (imageData) {
142
+ return remoteFunction.encode(
143
+ imageData,
144
+ newWidth,
145
+ newHeight,
146
+ 4,
147
+ 4
148
+ );
149
+ }
150
+ }
151
+ }
152
+ return { encode, decode: remoteFunction.decode, loadImage };
153
+ };
79
154
  export {
80
- useAlert
155
+ useAlert,
156
+ useBlurhash
81
157
  };
@@ -1 +1 @@
1
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("vue")):"function"==typeof define&&define.amd?define(["exports","vue"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).composables={},e.vue)}(this,(function(e,t){"use strict";const o="default",n="information",i=new Map([["success","check-circle"],["info",n],["warning","warning"],["danger","error"]]),s=t.reactive(new Map([[o,new Map]]));e.useAlert=()=>{const e=(e=o)=>t.computed((()=>{const t=s.get(e);return t&&t instanceof Map?Array.from(null==t?void 0:t.values()).sort(((e,t)=>e.timestamp-t.timestamp)):[]}));return{groups:s,alerts:e(),addAlert:({id:e=crypto.randomUUID(),group:t=o,title:r,icon:a=n,content:l,footer:u,modifiers:c="info",dismissable:f=true,autoClose:d=1e4}={})=>{s.has(t)||s.set(t,new Map);const p=s.get(t),m="string"==typeof c?c.split(" "):c;if(!a){const e=m.find((e=>i.has(e)));e&&(a=i.get(e))}null==p||p.set(e.toString(),{id:e,group:t,title:r,icon:a,content:l,footer:u,modifiers:c,dismissable:f,autoClose:d,timestamp:Date.now()})},removeAlert:(e,t=o)=>{const n=s.get(t);null==n||n.delete(e.toString())},getAlerts:e}},Object.defineProperty(e,Symbol.toStringTag,{value:"Module"})}));
1
+ !function(i,d){"object"==typeof exports&&"undefined"!=typeof module?d(exports,require("vue"),require("comlink"),require("pica")):"function"==typeof define&&define.amd?define(["exports","vue","comlink","pica"],d):d((i="undefined"!=typeof globalThis?globalThis:i||self).composables={},i.vue,i.comlink,i.pica)}(this,(function(i,d,l,b){"use strict";const c="default",o="information",s=new Map([["success","check-circle"],["info",o],["warning","warning"],["danger","error"]]),K=d.reactive(new Map([[c,new Map]])),m="IWZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiOwovKioKICAgKiBAbGljZW5zZQogICAqIENvcHlyaWdodCAyMDE5IEdvb2dsZSBMTEMKICAgKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMAogICAqL2NvbnN0IHQ9U3ltYm9sKCJDb21saW5rLnByb3h5IiksZT1TeW1ib2woIkNvbWxpbmsuZW5kcG9pbnQiKSxyPVN5bWJvbCgiQ29tbGluay5yZWxlYXNlUHJveHkiKSxuPVN5bWJvbCgiQ29tbGluay5maW5hbGl6ZXIiKSxhPVN5bWJvbCgiQ29tbGluay50aHJvd24iKSxvPXQ9PiJvYmplY3QiPT10eXBlb2YgdCYmbnVsbCE9PXR8fCJmdW5jdGlvbiI9PXR5cGVvZiB0LHM9bmV3IE1hcChbWyJwcm94eSIse2NhbkhhbmRsZTplPT5vKGUpJiZlW3RdLHNlcmlhbGl6ZSh0KXtjb25zdHtwb3J0MTplLHBvcnQyOnJ9PW5ldyBNZXNzYWdlQ2hhbm5lbDtyZXR1cm4gaSh0LGUpLFtyLFtyXV19LGRlc2VyaWFsaXplKHQpe3JldHVybiB0LnN0YXJ0KCksbSh0LFtdLGUpO3ZhciBlfX1dLFsidGhyb3ciLHtjYW5IYW5kbGU6dD0+byh0KSYmYSBpbiB0LHNlcmlhbGl6ZSh7dmFsdWU6dH0pe2xldCBlO3JldHVybiBlPXQgaW5zdGFuY2VvZiBFcnJvcj97aXNFcnJvcjohMCx2YWx1ZTp7bWVzc2FnZTp0Lm1lc3NhZ2UsbmFtZTp0Lm5hbWUsc3RhY2s6dC5zdGFja319Ontpc0Vycm9yOiExLHZhbHVlOnR9LFtlLFtdXX0sZGVzZXJpYWxpemUodCl7aWYodC5pc0Vycm9yKXRocm93IE9iamVjdC5hc3NpZ24obmV3IEVycm9yKHQudmFsdWUubWVzc2FnZSksdC52YWx1ZSk7dGhyb3cgdC52YWx1ZX19XV0pO2Z1bmN0aW9uIGkoZSxyPWdsb2JhbFRoaXMsbz1bIioiXSl7ci5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwoZnVuY3Rpb24gcyhoKXtpZighaHx8IWguZGF0YSlyZXR1cm47aWYoIWZ1bmN0aW9uKHQsZSl7Zm9yKGNvbnN0IHIgb2YgdCl7aWYoZT09PXJ8fCIqIj09PXIpcmV0dXJuITA7aWYociBpbnN0YW5jZW9mIFJlZ0V4cCYmci50ZXN0KGUpKXJldHVybiEwfXJldHVybiExfShvLGgub3JpZ2luKSlyZXR1cm4gdm9pZCBjb25zb2xlLndhcm4oYEludmFsaWQgb3JpZ2luICcke2gub3JpZ2lufScgZm9yIGNvbWxpbmsgcHJveHlgKTtjb25zdHtpZDpjLHR5cGU6dSxwYXRoOmZ9PU9iamVjdC5hc3NpZ24oe3BhdGg6W119LGguZGF0YSksbT0oaC5kYXRhLmFyZ3VtZW50TGlzdHx8W10pLm1hcChkKTtsZXQgcDt0cnl7Y29uc3Qgcj1mLnNsaWNlKDAsLTEpLnJlZHVjZSgoKHQsZSk9PnRbZV0pLGUpLG49Zi5yZWR1Y2UoKCh0LGUpPT50W2VdKSxlKTtzd2l0Y2godSl7Y2FzZSJHRVQiOnA9bjticmVhaztjYXNlIlNFVCI6cltmLnNsaWNlKC0xKVswXV09ZChoLmRhdGEudmFsdWUpLHA9ITA7YnJlYWs7Y2FzZSJBUFBMWSI6cD1uLmFwcGx5KHIsbSk7YnJlYWs7Y2FzZSJDT05TVFJVQ1QiOnA9ZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5hc3NpZ24oZSx7W3RdOiEwfSl9KG5ldyBuKC4uLm0pKTticmVhaztjYXNlIkVORFBPSU5UIjp7Y29uc3R7cG9ydDE6dCxwb3J0MjpyfT1uZXcgTWVzc2FnZUNoYW5uZWw7aShlLHIpLHA9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZy5zZXQodCxlKSx0fSh0LFt0XSl9YnJlYWs7Y2FzZSJSRUxFQVNFIjpwPXZvaWQgMDticmVhaztkZWZhdWx0OnJldHVybn19Y2F0Y2goeSl7cD17dmFsdWU6eSxbYV06MH19UHJvbWlzZS5yZXNvbHZlKHApLmNhdGNoKCh0PT4oe3ZhbHVlOnQsW2FdOjB9KSkpLnRoZW4oKHQ9Pntjb25zdFthLG9dPU0odCk7ci5wb3N0TWVzc2FnZShPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sYSkse2lkOmN9KSxvKSwiUkVMRUFTRSI9PT11JiYoci5yZW1vdmVFdmVudExpc3RlbmVyKCJtZXNzYWdlIixzKSxsKHIpLG4gaW4gZSYmImZ1bmN0aW9uIj09dHlwZW9mIGVbbl0mJmVbbl0oKSl9KSkuY2F0Y2goKHQ9Pntjb25zdFtlLG5dPU0oe3ZhbHVlOm5ldyBUeXBlRXJyb3IoIlVuc2VyaWFsaXphYmxlIHJldHVybiB2YWx1ZSIpLFthXTowfSk7ci5wb3N0TWVzc2FnZShPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sZSkse2lkOmN9KSxuKX0pKX0pKSxyLnN0YXJ0JiZyLnN0YXJ0KCl9ZnVuY3Rpb24gbCh0KXsoZnVuY3Rpb24odCl7cmV0dXJuIk1lc3NhZ2VQb3J0Ij09PXQuY29uc3RydWN0b3IubmFtZX0pKHQpJiZ0LmNsb3NlKCl9ZnVuY3Rpb24gaCh0KXtpZih0KXRocm93IG5ldyBFcnJvcigiUHJveHkgaGFzIGJlZW4gcmVsZWFzZWQgYW5kIGlzIG5vdCB1c2VhYmxlIil9ZnVuY3Rpb24gYyh0KXtyZXR1cm4geSh0LHt0eXBlOiJSRUxFQVNFIn0pLnRoZW4oKCgpPT57bCh0KX0pKX1jb25zdCB1PW5ldyBXZWFrTWFwLGY9IkZpbmFsaXphdGlvblJlZ2lzdHJ5ImluIGdsb2JhbFRoaXMmJm5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeSgodD0+e2NvbnN0IGU9KHUuZ2V0KHQpfHwwKS0xO3Uuc2V0KHQsZSksMD09PWUmJmModCl9KSk7ZnVuY3Rpb24gbSh0LG49W10sYT1mdW5jdGlvbigpe30pe2xldCBvPSExO2NvbnN0IHM9bmV3IFByb3h5KGEse2dldChlLGEpe2lmKGgobyksYT09PXIpcmV0dXJuKCk9PnshZnVuY3Rpb24odCl7ZiYmZi51bnJlZ2lzdGVyKHQpfShzKSxjKHQpLG89ITB9O2lmKCJ0aGVuIj09PWEpe2lmKDA9PT1uLmxlbmd0aClyZXR1cm57dGhlbjooKT0+c307Y29uc3QgZT15KHQse3R5cGU6IkdFVCIscGF0aDpuLm1hcCgodD0+dC50b1N0cmluZygpKSl9KS50aGVuKGQpO3JldHVybiBlLnRoZW4uYmluZChlKX1yZXR1cm4gbSh0LFsuLi5uLGFdKX0sc2V0KGUscixhKXtoKG8pO2NvbnN0W3MsaV09TShhKTtyZXR1cm4geSh0LHt0eXBlOiJTRVQiLHBhdGg6Wy4uLm4scl0ubWFwKCh0PT50LnRvU3RyaW5nKCkpKSx2YWx1ZTpzfSxpKS50aGVuKGQpfSxhcHBseShyLGEscyl7aChvKTtjb25zdCBpPW5bbi5sZW5ndGgtMV07aWYoaT09PWUpcmV0dXJuIHkodCx7dHlwZToiRU5EUE9JTlQifSkudGhlbihkKTtpZigiYmluZCI9PT1pKXJldHVybiBtKHQsbi5zbGljZSgwLC0xKSk7Y29uc3RbbCxjXT1wKHMpO3JldHVybiB5KHQse3R5cGU6IkFQUExZIixwYXRoOm4ubWFwKCh0PT50LnRvU3RyaW5nKCkpKSxhcmd1bWVudExpc3Q6bH0sYykudGhlbihkKX0sY29uc3RydWN0KGUscil7aChvKTtjb25zdFthLHNdPXAocik7cmV0dXJuIHkodCx7dHlwZToiQ09OU1RSVUNUIixwYXRoOm4ubWFwKCh0PT50LnRvU3RyaW5nKCkpKSxhcmd1bWVudExpc3Q6YX0scykudGhlbihkKX19KTtyZXR1cm4gZnVuY3Rpb24odCxlKXtjb25zdCByPSh1LmdldChlKXx8MCkrMTt1LnNldChlLHIpLGYmJmYucmVnaXN0ZXIodCxlLHQpfShzLHQpLHN9ZnVuY3Rpb24gcCh0KXtjb25zdCBlPXQubWFwKE0pO3JldHVybltlLm1hcCgodD0+dFswXSkpLChyPWUubWFwKCh0PT50WzFdKSksQXJyYXkucHJvdG90eXBlLmNvbmNhdC5hcHBseShbXSxyKSldO3ZhciByfWNvbnN0IGc9bmV3IFdlYWtNYXA7ZnVuY3Rpb24gTSh0KXtmb3IoY29uc3RbZSxyXW9mIHMpaWYoci5jYW5IYW5kbGUodCkpe2NvbnN0W24sYV09ci5zZXJpYWxpemUodCk7cmV0dXJuW3t0eXBlOiJIQU5ETEVSIixuYW1lOmUsdmFsdWU6bn0sYV19cmV0dXJuW3t0eXBlOiJSQVciLHZhbHVlOnR9LGcuZ2V0KHQpfHxbXV19ZnVuY3Rpb24gZCh0KXtzd2l0Y2godC50eXBlKXtjYXNlIkhBTkRMRVIiOnJldHVybiBzLmdldCh0Lm5hbWUpLmRlc2VyaWFsaXplKHQudmFsdWUpO2Nhc2UiUkFXIjpyZXR1cm4gdC52YWx1ZX19ZnVuY3Rpb24geSh0LGUscil7cmV0dXJuIG5ldyBQcm9taXNlKChuPT57Y29uc3QgYT1uZXcgQXJyYXkoNCkuZmlsbCgwKS5tYXAoKCgpPT5NYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIpLnRvU3RyaW5nKDE2KSkpLmpvaW4oIi0iKTt0LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLChmdW5jdGlvbiBlKHIpe3IuZGF0YSYmci5kYXRhLmlkJiZyLmRhdGEuaWQ9PT1hJiYodC5yZW1vdmVFdmVudExpc3RlbmVyKCJtZXNzYWdlIixlKSxuKHIuZGF0YSkpfSkpLHQuc3RhcnQmJnQuc3RhcnQoKSx0LnBvc3RNZXNzYWdlKE9iamVjdC5hc3NpZ24oe2lkOmF9LGUpLHIpfSkpfXZhciBiPVsiMCIsIjEiLCIyIiwiMyIsIjQiLCI1IiwiNiIsIjciLCI4IiwiOSIsIkEiLCJCIiwiQyIsIkQiLCJFIiwiRiIsIkciLCJIIiwiSSIsIkoiLCJLIiwiTCIsIk0iLCJOIiwiTyIsIlAiLCJRIiwiUiIsIlMiLCJUIiwiVSIsIlYiLCJXIiwiWCIsIlkiLCJaIiwiYSIsImIiLCJjIiwiZCIsImUiLCJmIiwiZyIsImgiLCJpIiwiaiIsImsiLCJsIiwibSIsIm4iLCJvIiwicCIsInEiLCJyIiwicyIsInQiLCJ1IiwidiIsInciLCJ4IiwieSIsInoiLCIjIiwiJCIsIiUiLCIqIiwiKyIsIiwiLCItIiwiLiIsIjoiLCI7IiwiPSIsIj8iLCJAIiwiWyIsIl0iLCJeIiwiXyIsInsiLCJ8IiwifSIsIn4iXSx3PXQ9PntsZXQgZT0wO2ZvcihsZXQgcj0wO3I8dC5sZW5ndGg7cisrKXtsZXQgbj10W3JdO2U9ODMqZStiLmluZGV4T2Yobil9cmV0dXJuIGV9LEU9KHQsZSk9Pnt2YXIgcj0iIjtmb3IobGV0IG49MTtuPD1lO24rKyl7bGV0IGE9TWF0aC5mbG9vcih0KS9NYXRoLnBvdyg4MyxlLW4pJTgzO3IrPWJbTWF0aC5mbG9vcihhKV19cmV0dXJuIHJ9LHY9dD0+e2xldCBlPXQvMjU1O3JldHVybiBlPD0uMDQwNDU/ZS8xMi45MjpNYXRoLnBvdygoZSsuMDU1KS8xLjA1NSwyLjQpfSxTPXQ9PntsZXQgZT1NYXRoLm1heCgwLE1hdGgubWluKDEsdCkpO3JldHVybiBlPD0uMDAzMTMwOD9NYXRoLnRydW5jKDEyLjkyKmUqMjU1Ky41KTpNYXRoLnRydW5jKDI1NSooMS4wNTUqTWF0aC5wb3coZSwuNDE2NjY2NjY2NjY2NjY2NyktLjA1NSkrLjUpfSx4PSh0LGUpPT4odD0+dDwwPy0xOjEpKHQpKk1hdGgucG93KE1hdGguYWJzKHQpLGUpLGs9Y2xhc3MgZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KSx0aGlzLm5hbWU9IlZhbGlkYXRpb25FcnJvciIsdGhpcy5tZXNzYWdlPXR9fSxQPXQ9PntpZighdHx8dC5sZW5ndGg8Nil0aHJvdyBuZXcgaygiVGhlIGJsdXJoYXNoIHN0cmluZyBtdXN0IGJlIGF0IGxlYXN0IDYgY2hhcmFjdGVycyIpO2xldCBlPXcodFswXSkscj1NYXRoLmZsb29yKGUvOSkrMSxuPWUlOSsxO2lmKHQubGVuZ3RoIT09NCsyKm4qcil0aHJvdyBuZXcgayhgYmx1cmhhc2ggbGVuZ3RoIG1pc21hdGNoOiBsZW5ndGggaXMgJHt0Lmxlbmd0aH0gYnV0IGl0IHNob3VsZCBiZSAkezQrMipuKnJ9YCl9LEE9dD0+e2xldCBlPXQ+PjgmMjU1LHI9MjU1JnQ7cmV0dXJuW3YodD4+MTYpLHYoZSksdihyKV19LFQ9KHQsZSk9PntsZXQgcj1NYXRoLmZsb29yKHQvMzYxKSxuPU1hdGguZmxvb3IodC8xOSklMTksYT10JTE5O3JldHVyblt4KChyLTkpLzksMikqZSx4KChuLTkpLzksMikqZSx4KChhLTkpLzksMikqZV19LEw9KHQsZSxyLG4pPT57bGV0IGE9MCxvPTAscz0wLGk9NCplO2ZvcihsZXQgaD0wO2g8ZTtoKyspe2xldCBlPTQqaDtmb3IobGV0IGw9MDtsPHI7bCsrKXtsZXQgcj1lK2wqaSxjPW4oaCxsKTthKz1jKnYodFtyXSksbys9Yyp2KHRbcisxXSkscys9Yyp2KHRbcisyXSl9fWxldCBsPTEvKGUqcik7cmV0dXJuW2EqbCxvKmwscypsXX0sUj0odCxlLHIsbixhKT0+e2lmKG48MXx8bj45fHxhPDF8fGE+OSl0aHJvdyBuZXcgaygiQmx1ckhhc2ggbXVzdCBoYXZlIGJldHdlZW4gMSBhbmQgOSBjb21wb25lbnRzIik7aWYoZSpyKjQhPT10Lmxlbmd0aCl0aHJvdyBuZXcgaygiV2lkdGggYW5kIGhlaWdodCBtdXN0IG1hdGNoIHRoZSBwaXhlbHMgYXJyYXkiKTtsZXQgbz1bXTtmb3IobGV0IGM9MDtjPGE7YysrKWZvcihsZXQgYT0wO2E8bjthKyspe2xldCBuPTA9PWEmJjA9PWM/MToyLHM9TCh0LGUsciwoKHQsbyk9Pm4qTWF0aC5jb3MoTWF0aC5QSSphKnQvZSkqTWF0aC5jb3MoTWF0aC5QSSpjKm8vcikpKTtvLnB1c2gocyl9bGV0IHMsaT1vWzBdLGw9by5zbGljZSgxKSxoPSIiO2lmKGgrPUUobi0xKzkqKGEtMSksMSksbC5sZW5ndGg+MCl7bGV0IHQ9TWF0aC5tYXgoLi4ubC5tYXAoKHQ9Pk1hdGgubWF4KC4uLnQpKSkpLGU9TWF0aC5mbG9vcihNYXRoLm1heCgwLE1hdGgubWluKDgyLE1hdGguZmxvb3IoMTY2KnQtLjUpKSkpO3M9KGUrMSkvMTY2LGgrPUUoZSwxKX1lbHNlIHM9MSxoKz1FKDAsMSk7cmV0dXJuIGgrPUUoKHQ9PihTKHRbMF0pPDwxNikrKFModFsxXSk8PDgpK1ModFsyXSkpKGkpLDQpLGwuZm9yRWFjaCgodD0+e2grPUUoKCh0LGUpPT4xOSpNYXRoLmZsb29yKE1hdGgubWF4KDAsTWF0aC5taW4oMTgsTWF0aC5mbG9vcig5KngodFswXS9lLC41KSs5LjUpKSkpKjE5KzE5Kk1hdGguZmxvb3IoTWF0aC5tYXgoMCxNYXRoLm1pbigxOCxNYXRoLmZsb29yKDkqeCh0WzFdL2UsLjUpKzkuNSkpKSkrTWF0aC5mbG9vcihNYXRoLm1heCgwLE1hdGgubWluKDE4LE1hdGguZmxvb3IoOSp4KHRbMl0vZSwuNSkrOS41KSkpKSkodCxzKSwyKX0pKSxofTtpKHtWYWxpZGF0aW9uRXJyb3I6ayxlbmNvZGU6UixkZWNvZGU6KHQsZSxyLG4pPT57UCh0KSxufD0xO2xldCBhPXcodFswXSksbz1NYXRoLmZsb29yKGEvOSkrMSxzPWElOSsxLGk9KHcodFsxXSkrMSkvMTY2LGw9bmV3IEFycmF5KHMqbyk7Zm9yKGxldCB1PTA7dTxsLmxlbmd0aDt1KyspaWYoMD09PXUpe2xldCBlPXcodC5zdWJzdHJpbmcoMiw2KSk7bFt1XT1BKGUpfWVsc2V7bGV0IGU9dyh0LnN1YnN0cmluZyg0KzIqdSw2KzIqdSkpO2xbdV09VChlLGkqbil9bGV0IGg9NCplLGM9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KGgqcik7Zm9yKGxldCB1PTA7dTxyO3UrKylmb3IobGV0IHQ9MDt0PGU7dCsrKXtsZXQgbj0wLGE9MCxpPTA7Zm9yKGxldCBoPTA7aDxvO2grKylmb3IobGV0IG89MDtvPHM7bysrKXtsZXQgYz1NYXRoLmNvcyhNYXRoLlBJKnQqby9lKSpNYXRoLmNvcyhNYXRoLlBJKnUqaC9yKSxmPWxbbytoKnNdO24rPWZbMF0qYyxhKz1mWzFdKmMsaSs9ZlsyXSpjfWxldCBmPVMobiksbT1TKGEpLHA9UyhpKTtjWzQqdCswK3UqaF09ZixjWzQqdCsxK3UqaF09bSxjWzQqdCsyK3UqaF09cCxjWzQqdCszK3UqaF09MjU1fXJldHVybiBjfSxpc0JsdXJoYXNoVmFsaWQ6dD0+e3RyeXtQKHQpfWNhdGNoKGUpe3JldHVybntyZXN1bHQ6ITEsZXJyb3JSZWFzb246ZS5tZXNzYWdlfX1yZXR1cm57cmVzdWx0OiEwfX19KX0oKTsK",Z="undefined"!=typeof window&&window.Blob&&new Blob([atob(m)],{type:"text/javascript;charset=utf-8"});const I=l.wrap(new function(){let i;try{if(i=Z&&(window.URL||window.webkitURL).createObjectURL(Z),!i)throw"";return new Worker(i)}catch(d){return new Worker("data:application/javascript;base64,"+m)}finally{i&&(window.URL||window.webkitURL).revokeObjectURL(i)}});function t(i){return new Promise(((d,l)=>{const b=new Image;b.onload=()=>d(b),b.onerror=(...i)=>l(i),b.src=i}))}i.useAlert=()=>{const i=(i=c)=>d.computed((()=>{const d=K.get(i);return d&&d instanceof Map?Array.from(null==d?void 0:d.values()).sort(((i,d)=>i.timestamp-d.timestamp)):[]}));return{groups:K,alerts:i(),addAlert:({id:i=crypto.randomUUID(),group:d=c,title:l,icon:b=o,content:m,footer:Z,modifiers:I="info",dismissable:t=true,autoClose:p=1e4}={})=>{K.has(d)||K.set(d,new Map);const X=K.get(d),h="string"==typeof I?I.split(" "):I;if(!b){const i=h.find((i=>s.has(i)));i&&(b=s.get(i))}null==X||X.set(i.toString(),{id:i,group:d,title:l,icon:b,content:m,footer:Z,modifiers:I,dismissable:t,autoClose:p,timestamp:Date.now()})},removeAlert:(i,d=c)=>{const l=K.get(d);null==l||l.delete(i.toString())},getAlerts:i}},i.useBlurhash=()=>({encode:async function(i){const d=URL.createObjectURL(i),l=await t(d);if("width"in l&&"height"in l){const{width:i,height:d}=(c=l.width,o=l.height,s=32,c>o?{width:s,height:Math.round(s*(o/c))}:{width:Math.round(s*(c/o)),height:s}),K=await(async(i,d,l)=>{var c;const o=new b,s=document.createElement("canvas");return s.width=d,s.height=l,null==(c=(await o.resize(i,s)).getContext("2d"))?void 0:c.getImageData(0,0,d,l).data})(l,i,d);if(K)return I.encode(K,i,d,4,4)}var c,o,s},decode:I.decode,loadImage:t}),Object.defineProperty(i,Symbol.toStringTag,{value:"Module"})}));
@@ -0,0 +1,7 @@
1
+ declare function loadImage(src: string): Promise<CanvasImageSource>;
2
+ export declare const useBlurhash: () => {
3
+ encode: (file: File) => Promise<string | undefined>;
4
+ decode: import("comlink").Remote<(blurhash: string, width: number, height: number, punch?: number | undefined) => Uint8ClampedArray>;
5
+ loadImage: typeof loadImage;
6
+ };
7
+ export {};
package/dist/icons.es.js CHANGED
@@ -1,5 +1,5 @@
1
1
  const prefix$2 = "normal";
2
- const lastModified$2 = 1697096960;
2
+ const lastModified$2 = 1697194530;
3
3
  const icons$3 = {
4
4
  add: {
5
5
  body: '<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-width="2" d="M4 12h16m-8-8v16"/>'
@@ -614,7 +614,7 @@ const normal = {
614
614
  height: height$1
615
615
  };
616
616
  const prefix$1 = "detailed";
617
- const lastModified$1 = 1697096960;
617
+ const lastModified$1 = 1697194530;
618
618
  const icons$2 = {
619
619
  add: {
620
620
  body: '<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-width="2" d="M4 15.999h24m-12-12v24"/>'
@@ -1227,7 +1227,7 @@ const detailed = {
1227
1227
  height
1228
1228
  };
1229
1229
  const prefix = "simple";
1230
- const lastModified = 1697096960;
1230
+ const lastModified = 1697194530;
1231
1231
  const icons$1 = {
1232
1232
  add: {
1233
1233
  body: '<path fill="none" stroke="currentColor" stroke-linecap="round" d="M.5 8h15M8 .5v15"/>'