vviinn-widgets 2.35.0 → 2.37.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.
Files changed (76) hide show
  1. package/dist/cjs/{customized-slots-5bede102.js → customized-slots-e6b1235d.js} +1 -0
  2. package/dist/cjs/{index-235ee3c0.js → index-722ca75d.js} +10 -5
  3. package/dist/cjs/loader.cjs.js +1 -1
  4. package/dist/cjs/{package-a2950df6.js → package-49f18e6a.js} +1 -1
  5. package/dist/cjs/search-filters_15.cjs.entry.js +18 -14
  6. package/dist/cjs/vviinn-button.cjs.entry.js +1 -1
  7. package/dist/cjs/vviinn-carousel_4.cjs.entry.js +3 -3
  8. package/dist/cjs/vviinn-recommendations-sidebar.cjs.entry.js +1 -1
  9. package/dist/cjs/vviinn-vpr-button.cjs.entry.js +2 -2
  10. package/dist/cjs/vviinn-vps-button.cjs.entry.js +4 -4
  11. package/dist/cjs/vviinn-vps-widget.cjs.entry.js +81 -34
  12. package/dist/cjs/vviinn-widgets.cjs.js +1 -1
  13. package/dist/collection/components/customized-slots.js +1 -0
  14. package/dist/collection/components/vviinn-example-image/vviinn-example-image.css +26 -7
  15. package/dist/collection/components/vviinn-example-image/vviinn-example-image.js +25 -2
  16. package/dist/collection/components/vviinn-icons/index.js +3 -1
  17. package/dist/collection/components/vviinn-image-selector/vviinn-image-selector.js +58 -5
  18. package/dist/collection/components/vviinn-modal/vviinn-modal.css +40 -35
  19. package/dist/collection/components/vviinn-modal/vviinn-modal.js +3 -20
  20. package/dist/collection/components/vviinn-privacy-badge/vviinn-privacy-badge.css +3 -2
  21. package/dist/collection/components/vviinn-vps-button/vviinn-vps-button.js +2 -1
  22. package/dist/collection/components/vviinn-vps-widget/vviinn-vps-widget.css +7 -7
  23. package/dist/collection/components/vviinn-vps-widget/vviinn-vps-widget.js +81 -38
  24. package/dist/collection/locale/resources-vps.js +6 -2
  25. package/dist/esm/{customized-slots-cace8ba6.js → customized-slots-6b70a8f6.js} +1 -0
  26. package/dist/esm/{index-49cbae91.js → index-f7515645.js} +9 -6
  27. package/dist/esm/loader.js +1 -1
  28. package/dist/esm/{package-93c5fdae.js → package-7077b764.js} +1 -1
  29. package/dist/esm/search-filters_15.entry.js +18 -14
  30. package/dist/esm/vviinn-button.entry.js +1 -1
  31. package/dist/esm/vviinn-carousel_4.entry.js +3 -3
  32. package/dist/esm/vviinn-recommendations-sidebar.entry.js +1 -1
  33. package/dist/esm/vviinn-vpr-button.entry.js +2 -2
  34. package/dist/esm/vviinn-vps-button.entry.js +4 -4
  35. package/dist/esm/vviinn-vps-widget.entry.js +81 -34
  36. package/dist/esm/vviinn-widgets.js +1 -1
  37. package/dist/types/components/vviinn-example-image/vviinn-example-image.d.ts +1 -0
  38. package/dist/types/components/vviinn-icons/index.d.ts +2 -0
  39. package/dist/types/components/vviinn-image-selector/vviinn-image-selector.d.ts +3 -1
  40. package/dist/types/components/vviinn-modal/vviinn-modal.d.ts +0 -1
  41. package/dist/types/components/vviinn-vps-button/vviinn-vps-button.d.ts +1 -0
  42. package/dist/types/components/vviinn-vps-widget/vviinn-vps-widget.d.ts +15 -4
  43. package/dist/types/components.d.ts +8 -0
  44. package/dist/vviinn-widgets/p-25d5c0f2.js +1 -0
  45. package/dist/vviinn-widgets/p-34dc6ac2.js +1 -0
  46. package/dist/vviinn-widgets/{p-b4cf14e6.entry.js → p-88d9ae28.entry.js} +1 -1
  47. package/dist/vviinn-widgets/{p-4feb3d4e.entry.js → p-96f10e9a.entry.js} +1 -1
  48. package/dist/vviinn-widgets/p-caf46c2b.js +1 -0
  49. package/dist/vviinn-widgets/{p-f60702f5.entry.js → p-f014ad94.entry.js} +1 -1
  50. package/dist/vviinn-widgets/p-f5345bb5.entry.js +1 -0
  51. package/dist/vviinn-widgets/p-f6b1fb3c.entry.js +1 -0
  52. package/dist/vviinn-widgets/{p-710c02e3.entry.js → p-f7398450.entry.js} +1 -1
  53. package/dist/vviinn-widgets/{p-68104a6b.entry.js → p-fb99ca2a.entry.js} +2 -2
  54. package/dist/vviinn-widgets/vviinn-widgets.esm.js +1 -1
  55. package/package.json +1 -1
  56. package/www/build/p-25d5c0f2.js +1 -0
  57. package/www/build/p-34dc6ac2.js +1 -0
  58. package/www/build/{p-b4cf14e6.entry.js → p-88d9ae28.entry.js} +1 -1
  59. package/www/build/{p-4feb3d4e.entry.js → p-96f10e9a.entry.js} +1 -1
  60. package/www/build/p-caf46c2b.js +1 -0
  61. package/www/build/{p-f60702f5.entry.js → p-f014ad94.entry.js} +1 -1
  62. package/www/build/p-f5345bb5.entry.js +1 -0
  63. package/www/build/p-f6b1fb3c.entry.js +1 -0
  64. package/www/build/{p-710c02e3.entry.js → p-f7398450.entry.js} +1 -1
  65. package/www/build/{p-68104a6b.entry.js → p-fb99ca2a.entry.js} +2 -2
  66. package/www/build/vviinn-widgets.esm.js +1 -1
  67. package/dist/vviinn-widgets/p-30216c48.js +0 -1
  68. package/dist/vviinn-widgets/p-5ac0b13f.entry.js +0 -1
  69. package/dist/vviinn-widgets/p-7f2b6aee.js +0 -1
  70. package/dist/vviinn-widgets/p-937f29c8.js +0 -1
  71. package/dist/vviinn-widgets/p-d132d403.entry.js +0 -1
  72. package/www/build/p-30216c48.js +0 -1
  73. package/www/build/p-5ac0b13f.entry.js +0 -1
  74. package/www/build/p-7f2b6aee.js +0 -1
  75. package/www/build/p-937f29c8.js +0 -1
  76. package/www/build/p-d132d403.entry.js +0 -1
@@ -19,6 +19,7 @@ const defaultSlotsNames = [
19
19
  "vviinn-onboarding-title",
20
20
  "vviinn-teaser-text",
21
21
  "vviinn-image-upload-button-text",
22
+ "vviinn-show-files-button-text",
22
23
  "vviinn-camera-button-text",
23
24
  "vviinn-privacy-badge-text",
24
25
  "vviinn-image-search-modal-title",
@@ -4,6 +4,8 @@ const index = require('./index-5619b5ec.js');
4
4
 
5
5
  const ArrowIcon = () => (index.h("svg", { width: "12", height: "20", fill: "none", xmlns: "http://www.w3.org/2000/svg" },
6
6
  index.h("path", { d: "M0 10 10 0l1.4 1.4L2.8 10l8.6 8.6L10 20 0 10Z" })));
7
+ const SecondaryActionIcon = () => (index.h("svg", { xmlns: "http://www.w3.org/2000/svg", width: "24", height: "24", viewBox: "0 0 24 24", fill: "none" },
8
+ index.h("path", { d: "M7.82499 13L12.725 17.9C12.925 18.1 13.0208 18.3333 13.0125 18.6C13.0042 18.8667 12.9 19.1 12.7 19.3C12.5 19.4833 12.2667 19.5792 12 19.5875C11.7333 19.5958 11.5 19.5 11.3 19.3L4.69999 12.7C4.59999 12.6 4.52915 12.4917 4.48749 12.375C4.44582 12.2583 4.42499 12.1333 4.42499 12C4.42499 11.8667 4.44582 11.7417 4.48749 11.625C4.52915 11.5083 4.59999 11.4 4.69999 11.3L11.3 4.69999C11.4833 4.51665 11.7125 4.42499 11.9875 4.42499C12.2625 4.42499 12.5 4.51665 12.7 4.69999C12.9 4.89999 13 5.13749 13 5.41249C13 5.68749 12.9 5.92499 12.7 6.12499L7.82499 11H19C19.2833 11 19.5208 11.0958 19.7125 11.2875C19.9042 11.4792 20 11.7167 20 12C20 12.2833 19.9042 12.5208 19.7125 12.7125C19.5208 12.9042 19.2833 13 19 13H7.82499Z", fill: "currentColor" })));
7
9
  const CameraIcon = () => (index.h("svg", { width: "22", height: "20", fill: "none", xmlns: "http://www.w3.org/2000/svg" },
8
10
  index.h("path", { "fill-rule": "evenodd", "clip-rule": "evenodd", d: "M16.567 3H19A3.01 3.01 0 0 1 22 6v7.69h-2V6c0-.55-.451-1-1.001-1h-3.502l-2.03-3H8.543L6.603 5H3.001c-.55 0-1 .45-1 1v11c0 .55.45 1 1 1h5.933v2H3.001A3.01 3.01 0 0 1 0 17V6c0-1.65 1.35-3 3.001-3h2.522l1.94-3h7.074l2.03 3Zm-5.562 3c1.28 0 2.561.48 3.542 1.46h-.01a4.992 4.992 0 0 1 .64 6.29l3.051 3.05-1.41 1.41-3.052-3.05c-.84.55-1.8.83-2.76.83-1.282 0-2.562-.48-3.543-1.46a5.002 5.002 0 0 1 0-7.07A5.026 5.026 0 0 1 11.005 6Zm-2.771 5a2.763 2.763 0 0 0 2.771 2.77A2.763 2.763 0 0 0 13.776 11a2.763 2.763 0 0 0-2.771-2.77A2.763 2.763 0 0 0 8.234 11Z", fill: "#161616" })));
9
11
  const ChevronIcon = () => (index.h("svg", { width: "9", height: "16", xmlns: "http://www.w3.org/2000/svg" },
@@ -17,13 +19,14 @@ const UploadActionIcon = () => (index.h("svg", { xmlns: "http://www.w3.org/2000/
17
19
  const UpdateIcon = () => (index.h("svg", { xmlns: "http://www.w3.org/2000/svg", width: "24", height: "24", viewBox: "0 0 24 24", fill: "none" },
18
20
  index.h("path", { "fill-rule": "evenodd", "clip-rule": "evenodd", d: "M23.5998 4.57C20.3898 4.19 19.8798 3.68 19.4198 0.37C19.3798 0.15 19.2198 0 19.0098 0C18.7998 0 18.6298 0.15 18.5898 0.37C18.1198 3.66 17.6298 4.13 14.4098 4.57C14.1698 4.61 14.0098 4.77 14.0098 5C14.0098 5.23 14.1698 5.39 14.4098 5.42C17.6298 5.81 18.1398 6.31 18.5898 9.62C18.6298 9.84 18.7998 10 19.0098 10C19.2198 10 19.3898 9.84 19.4198 9.62C19.8898 6.31 20.3898 5.81 23.5998 5.42C23.8398 5.38 23.9998 5.22 23.9998 5C23.9998 4.78 23.8298 4.6 23.5998 4.57Z", fill: "currentColor" }),
19
21
  index.h("path", { "fill-rule": "evenodd", "clip-rule": "evenodd", d: "M19.93 13C19.43 13 19.01 13.37 18.95 13.86C18.52 17.36 15.51 20.06 11.89 20C8.24 19.94 5.15 16.92 5.01 13.27C4.92 10.79 6.13 8.58 8.01 7.27V11C8.01 11.55 8.46 12 9.01 12C9.56 12 10.01 11.55 10.01 11V5C10.01 4.45 9.56 4 9.01 4H3C2.45 4 2 4.45 2 5C2 5.55 2.45 6 3 6H6.35C4.24 7.71 2.91 10.35 3 13.3C3.15 17.98 7.06 21.87 11.74 22C16.45 22.13 20.37 18.65 20.93 14.13C21 13.53 20.53 13.01 19.93 13.01V13Z", fill: "currentColor" })));
22
+ const GalleryActionIcon = () => (index.h("svg", { xmlns: "http://www.w3.org/2000/svg", width: "25", height: "24", viewBox: "0 0 25 24", fill: "none" },
23
+ index.h("path", { d: "M5.5 21H8.175V16.325H3.5V19C3.5 19.55 3.69583 20.0208 4.0875 20.4125C4.47917 20.8042 4.95 21 5.5 21ZM10.175 21H14.825V16.325H10.175V21ZM16.825 21H19.5C20.05 21 20.5208 20.8042 20.9125 20.4125C21.3042 20.0208 21.5 19.55 21.5 19V16.325H16.825V21ZM3.5 14.325H8.175V9.675H3.5V14.325ZM10.175 14.325H14.825V9.675H10.175V14.325ZM16.825 14.325H21.5V9.675H16.825V14.325ZM3.5 7.675H8.175V3H5.5C4.95 3 4.47917 3.19583 4.0875 3.5875C3.69583 3.97917 3.5 4.45 3.5 5V7.675ZM10.175 7.675H14.825V3H10.175V7.675ZM16.825 7.675H21.5V5C21.5 4.45 21.3042 3.97917 20.9125 3.5875C20.5208 3.19583 20.05 3 19.5 3H16.825V7.675Z", fill: "currentColor" })));
20
24
  const CameraActionIcon = () => (index.h("svg", { xmlns: "http://www.w3.org/2000/svg", width: "24", height: "24", viewBox: "0 0 24 24", fill: "none" },
21
25
  index.h("path", { d: "M12 17.5C13.25 17.5 14.3125 17.0625 15.1875 16.1875C16.0625 15.3125 16.5 14.25 16.5 13C16.5 11.75 16.0625 10.6875 15.1875 9.8125C14.3125 8.9375 13.25 8.5 12 8.5C10.75 8.5 9.6875 8.9375 8.8125 9.8125C7.9375 10.6875 7.5 11.75 7.5 13C7.5 14.25 7.9375 15.3125 8.8125 16.1875C9.6875 17.0625 10.75 17.5 12 17.5ZM12 15.5C11.3 15.5 10.7083 15.2583 10.225 14.775C9.74167 14.2917 9.5 13.7 9.5 13C9.5 12.3 9.74167 11.7083 10.225 11.225C10.7083 10.7417 11.3 10.5 12 10.5C12.7 10.5 13.2917 10.7417 13.775 11.225C14.2583 11.7083 14.5 12.3 14.5 13C14.5 13.7 14.2583 14.2917 13.775 14.775C13.2917 15.2583 12.7 15.5 12 15.5ZM4 21C3.45 21 2.97917 20.8042 2.5875 20.4125C2.19583 20.0208 2 19.55 2 19V7C2 6.45 2.19583 5.97917 2.5875 5.5875C2.97917 5.19583 3.45 5 4 5H7.15L8.4 3.65C8.58333 3.45 8.80417 3.29167 9.0625 3.175C9.32083 3.05833 9.59167 3 9.875 3H14.125C14.4083 3 14.6792 3.05833 14.9375 3.175C15.1958 3.29167 15.4167 3.45 15.6 3.65L16.85 5H20C20.55 5 21.0208 5.19583 21.4125 5.5875C21.8042 5.97917 22 6.45 22 7V19C22 19.55 21.8042 20.0208 21.4125 20.4125C21.0208 20.8042 20.55 21 20 21H4Z", fill: "currentColor" })));
22
- const RoundCameraIcon = () => (index.h("svg", { width: "72", height: "72", viewBox: "0 0 72 72", fill: "none", xmlns: "http://www.w3.org/2000/svg" },
23
- index.h("path", { "fill-rule": "evenodd", "clip-rule": "evenodd", d: "M36 72C55.8823 72 72 55.8823 72 36C72 16.1177 55.8823 0 36 0C16.1177 0 0 16.1177 0 36C0 55.8823 16.1177 72 36 72ZM51.8333 25.4167C51.1667 24.75 50.1667 24.25 49.1667 24.25H44.1667L42 20.1667C41.8333 19.8333 41.3333 19.5 41 19.3333C40.5 19.1667 40 19 39.5 19H32.5C32 19 31.5 19.1667 31 19.3333C30.6667 19.5 30.1667 19.8333 29.8333 20.1667L27.6667 24.25H22.6667C21.6667 24.25 20.8333 24.5833 20.1667 25.4167C19.5 26.25 19 27.0833 19 28.0833V46C19 47 19.3333 48 20.1667 48.6667C21 49.3333 21.8333 49.8333 22.8333 49.8333H46.8333L39.6667 42.6667C38.5 43.3333 37.3333 43.6667 36 43.6667C33.8333 43.6667 32.1667 43 30.6667 41.5C29.1667 40 28.5 38.1667 28.5 36.1667C28.5 34.1667 29.1667 32.3333 30.6667 30.8333C32.1667 29.3333 34 28.6667 36 28.6667C38 28.6667 39.8333 29.3333 41.3333 30.8333C42.8333 32.3333 43.5 34.1667 43.5 36.1667C43.5 37.5 43.1667 38.6667 42.5 39.8333L51.5 48.8333L51.6667 48.6667C52.3333 48 52.8333 47 52.8333 46V28.0833C52.8333 26.8333 52.6667 26.0833 51.8333 25.4167ZM38.8333 33.1667C38 32.3333 37.1667 32 36 32C34.8333 32 34 32.3333 33.1667 33.1667C32.3333 34 32 34.8333 32 36C32 37.1667 32.3333 38 33.1667 38.8333C34 39.6667 34.8333 40 36 40C37.1667 40 38 39.6667 38.8333 38.8333C39.6667 38 40 37.1667 40 36C40 34.8333 39.6667 34 38.8333 33.1667Z", fill: "white" }),
24
- index.h("g", { filter: "url(#filter0_b_5_4702)" },
25
- index.h("path", { d: "M49.1667 24.25C50.1667 24.25 51.1667 24.75 51.8333 25.4167C52.6667 26.0833 52.8333 26.8333 52.8333 28.0833V46C52.8333 47 52.3333 48 51.6667 48.6667L51.5 48.8333L42.5 39.8333C43.1667 38.6667 43.5 37.5 43.5 36.1667C43.5 34.1667 42.8333 32.3333 41.3333 30.8333C39.8333 29.3333 38 28.6667 36 28.6667C34 28.6667 32.1667 29.3333 30.6667 30.8333C29.1667 32.3333 28.5 34.1667 28.5 36.1667C28.5 38.1667 29.1667 40 30.6667 41.5C32.1667 43 33.8333 43.6667 36 43.6667C37.3333 43.6667 38.5 43.3333 39.6667 42.6667L46.8333 49.8333H22.8333C21.8333 49.8333 21 49.3333 20.1667 48.6667C19.3333 48 19 47 19 46V28.0833C19 27.0833 19.5 26.25 20.1667 25.4167C20.8333 24.5833 21.6667 24.25 22.6667 24.25H27.6667L29.8333 20.1667C30.1667 19.8333 30.6667 19.5 31 19.3333C31.5 19.1667 32 19 32.5 19H39.5C40 19 40.5 19.1667 41 19.3333C41.3333 19.5 41.8333 19.8333 42 20.1667L44.1667 24.25H49.1667Z", fill: "black", "fill-opacity": "0.25" }),
26
- index.h("path", { d: "M36 32C37.1667 32 38 32.3333 38.8333 33.1667C39.6667 34 40 34.8333 40 36C40 37.1667 39.6667 38 38.8333 38.8333C38 39.6667 37.1667 40 36 40C34.8333 40 34 39.6667 33.1667 38.8333C32.3333 38 32 37.1667 32 36C32 34.8333 32.3333 34 33.1667 33.1667C34 32.3333 34.8333 32 36 32Z", fill: "black", "fill-opacity": "0.25" }))));
26
+ const RoundCameraIcon = () => (index.h("svg", { xmlns: "http://www.w3.org/2000/svg", width: "80", height: "80", viewBox: "0 0 80 80", fill: "none" },
27
+ index.h("circle", { cx: "40", cy: "40", r: "36", fill: "white" }),
28
+ index.h("circle", { cx: "40", cy: "40", r: "39", stroke: "white", "stroke-width": "2" }),
29
+ index.h("path", { "fill-rule": "evenodd", "clip-rule": "evenodd", d: "M50 26.6666H53.3333C57.0167 26.6666 60 29.65 60 33.3333V46.6666H56.6667V33.3333C56.6667 31.5 55.1667 30 53.3333 30H48.2167L47.2333 28.5166L44.8833 25H35.1167L32.7667 28.5166L31.7833 30H26.6667C24.8333 30 23.3333 31.5 23.3333 33.3333V50C23.3333 51.8333 24.8333 53.3333 26.6667 53.3333H35V56.6666H26.6667C22.9833 56.6666 20 53.6833 20 50V33.3333C20 29.65 22.9833 26.6666 26.6667 26.6666H30L33.3333 21.6666H46.6667L50 26.6666ZM40 33.3333C44.6 33.3333 48.3333 37.0666 48.3333 41.6666L48.3167 41.6833C48.3167 43.3666 47.8 44.95 46.9333 46.2666L54.5 53.8333L52.15 56.1833L44.5833 48.6166C43.2667 49.4833 41.7 50 40 50C35.4 50 31.6667 46.2666 31.6667 41.6666C31.6667 37.0666 35.4 33.3333 40 33.3333ZM35 41.6666C35 44.4166 37.25 46.6666 40 46.6666C42.75 46.6666 45 44.4166 45 41.6666C45 38.9166 42.75 36.6666 40 36.6666C37.25 36.6666 35 38.9166 35 41.6666Z", fill: "#6F6F6F" })));
27
30
  const WarningIcon = () => (index.h("svg", { slot: "icon", class: "icon", width: "32", height: "32", fill: "none", xmlns: "http://www.w3.org/2000/svg" },
28
31
  index.h("path", { d: "M16 2a14 14 0 1 0 0 28 14 14 0 0 0 0-28Zm0 26a12 12 0 1 1 0-24 12 12 0 0 1 0 24Z", fill: "#525252" }),
29
32
  index.h("path", { d: "M17 8h-2v11h2V8Zm-1 14a1.5 1.5 0 1 0 0 3 1.5 1.5 0 0 0 0-3Z", fill: "#525252" })));
@@ -33,7 +36,9 @@ exports.CameraActionIcon = CameraActionIcon;
33
36
  exports.CameraIcon = CameraIcon;
34
37
  exports.ChevronIcon = ChevronIcon;
35
38
  exports.CrossIcon = CrossIcon;
39
+ exports.GalleryActionIcon = GalleryActionIcon;
36
40
  exports.RoundCameraIcon = RoundCameraIcon;
41
+ exports.SecondaryActionIcon = SecondaryActionIcon;
37
42
  exports.UpdateIcon = UpdateIcon;
38
43
  exports.UploadActionIcon = UploadActionIcon;
39
44
  exports.VisualSearchIcon = VisualSearchIcon;
@@ -14,7 +14,7 @@ const patchEsm = () => {
14
14
  const defineCustomElements = (win, options) => {
15
15
  if (typeof window === 'undefined') return Promise.resolve();
16
16
  return patchEsm().then(() => {
17
- return index.bootstrapLazy([["vviinn-button.cjs",[[1,"vviinn-button",{"addStyle":[4,"add-style"]}]]],["vviinn-preloader.cjs",[[1,"vviinn-preloader"]]],["vviinn-error.cjs",[[1,"vviinn-error"]]],["vviinn-carousel_4.cjs",[[1,"vviinn-vpr-widget",{"blockTitle":[1,"block-title"],"imageRatio":[2,"image-ratio"],"imageWidth":[2,"image-width"],"productId":[1,"product-id"],"token":[1],"currencySign":[1,"currency-sign"],"pricePrefix":[1,"price-prefix"],"mode":[1],"campaignType":[1,"campaign-type"],"locale":[1],"campaigns":[1],"color":[1],"gridArrowsDynamic":[4,"grid-arrows-dynamic"],"noResultText":[1,"no-result-text"],"noResultShow":[4,"no-result-show"],"showScroll":[4,"show-scroll"],"cssUrl":[1,"css-url"],"excluded":[1],"productDetailNewTab":[4,"product-detail-new-tab"],"addToBasketShow":[4,"add-to-basket-show"],"updateButtonLocation":[1,"update-button-location"],"apiPath":[1,"api-path"],"useCarousel":[4,"use-carousel"],"showingInButton":[4,"showing-in-button"],"buttonElementId":[1,"button-element-id"],"closed":[4],"opened":[4],"recommendations":[32],"trackingDeactivated":[32],"hasErrorOnLoad":[32],"updatingAllCards":[32]},[[0,"vviinnProductLoad","trackProductLoad"],[0,"vviinnProductView","trackProductView"],[0,"vviinnProductClick","trackProductClick"],[0,"vviinnAuxClick","trackAuxClick"],[0,"vviinnAddToBasket","trackAddToBasket"],[0,"vviinnUpdatingAllCardsFinished","updatingAllCardsFinishedListener"]]],[0,"vviinn-carousel",{"mode":[1],"imageWidth":[2,"image-width"],"showScroll":[4,"show-scroll"],"campaignTypeId":[1,"campaign-type-id"],"widgetElementId":[1,"widget-element-id"],"gridArrowsDynamic":[4,"grid-arrows-dynamic"],"recommendations":[16],"widgetVersion":[1,"widget-version"],"addToBasketShow":[4,"add-to-basket-show"],"updatingAllCards":[4,"updating-all-cards"],"updateButtonLocation":[1,"update-button-location"],"moveDirection":[32],"contentGroups":[32],"activeContentGroup":[32],"isRTL":[32],"crossSellingRecommendations":[32]},[[0,"vviinnCrossSellingClick","crossSellingClickListener"]]],[1,"vviinn-product-card",{"brand":[1],"currency":[1],"deeplink":[1],"image":[1],"imageRatio":[2,"image-ratio"],"imageWidth":[2,"image-width"],"locale":[1],"price":[2],"pricePrefix":[1,"price-prefix"],"productId":[1,"product-id"],"productTitle":[1,"product-title"],"productType":[1,"product-type"],"salePrice":[2,"sale-price"],"responsive":[4],"dimmedBackground":[4,"dimmed-background"],"mode":[1],"addToBasketShow":[4,"add-to-basket-show"],"updateButtonLocation":[1,"update-button-location"],"campaignTypeId":[1,"campaign-type-id"],"widgetElementId":[1,"widget-element-id"],"buttonElementId":[1,"button-element-id"],"widgetVersion":[1,"widget-version"],"index":[2],"updatingAllCards":[4,"updating-all-cards"],"defaultAnimationInterval":[2,"default-animation-interval"],"imageLoaded":[32],"isTransitioning":[32]},[[0,"vviinnCrossSellingClick","crossSellingClickListener"]]],[1,"vviinn-skeleton",{"height":[2],"halfWidth":[4,"half-width"]}]]],["search-filters_15.cjs",[[1,"vviinn-image-view",{"basicEventData":[16],"cropper":[32]},[[0,"vviinnSelectObject","selectDetectedObject"]]],[1,"vviinn-overlayed-modal",{"active":[4],"resetState":[16],"buttonElementId":[1,"button-element-id"],"hideBackButton":[4,"hide-back-button"],"widgetVersion":[1,"widget-version"],"isFirstScreen":[4,"is-first-screen"]}],[1,"vviinn-empty-results",{"handler":[16]}],[1,"vviinn-image-selector",{"basicEventData":[16],"startUpload":[4,"start-upload"],"resetVpsButton":[16]}],[1,"vviinn-server-error",{"handler":[16]}],[1,"vviinn-wrong-format",{"handler":[16]}],[1,"search-filters",{"filter":[16],"basicEventData":[16],"selectedFilter":[32],"hideFilters":[32]}],[1,"vviinn-example-image",{"exampleImageSource":[1,"example-image-source"],"width":[2],"height":[2],"basicEventData":[16],"srcObject":[16],"selected":[32],"videoInitialized":[32]}],[1,"vviinn-privacy-badge",{"privacyBadgeText":[1,"privacy-badge-text"]}],[1,"vviinn-slide"],[1,"vviinn-slider",{"showBullets":[4,"show-bullets"],"position":[514],"showArrows":[4,"show-arrows"],"elementsCount":[32],"internalPosition":[32],"swipeStartPosition":[32],"isRTL":[32]}],[1,"vviinn-teaser"],[1,"vviinn-detected-object",{"detectedObject":[16],"basicEventData":[16],"position":[32]}],[1,"vviinn-modal",{"active":[1540],"resetState":[16],"buttonElementId":[1,"button-element-id"],"widgetVersion":[1,"widget-version"],"hideBackButton":[4,"hide-back-button"],"isFirstScreen":[4,"is-first-screen"],"slider":[32]}],[1,"vviinn-overlay"]]],["vviinn-vps-widget.cjs",[[1,"vviinn-vps-widget",{"token":[1],"active":[1028],"currencySign":[1,"currency-sign"],"locale":[1],"campaignId":[1,"campaign-id"],"excluded":[1],"productDetailNewTab":[4,"product-detail-new-tab"],"imageResolutionWidth":[2,"image-resolution-width"],"exampleImageSource":[1,"example-image-source"],"apiPath":[1,"api-path"],"showingInButton":[4,"showing-in-button"],"buttonElementId":[1,"button-element-id"],"buttonPressed":[4,"button-pressed"],"mode":[1],"resetVpsButton":[16],"slidePosition":[32],"width":[32],"wrongImageFormat":[32],"trackingDeactivated":[32],"stream":[32],"cameraEnabled":[32]},[[0,"vviinnCameraEnabled","trackCameraEnabled"],[0,"vviinnProductLoad","trackProductLoad"],[0,"vviinnProductView","trackProductView"],[0,"vviinnProductClick","trackProductClick"],[0,"vviinnAuxClick","trackAuxClick"],[0,"vviinnImageCrop","trachSearchAreaChanges"],[0,"vviinnSelectObject","trackDetectedObject"],[0,"vviinnSelectFilter","trackFilter"],[0,"secondaryActionClicked","trackSecondaryAction"]]]]],["vviinn-vps-button.cjs",[[1,"vviinn-vps-button",{"token":[1],"currencySign":[1,"currency-sign"],"locale":[1],"campaignId":[1,"campaign-id"],"addStyle":[4,"add-style"],"mode":[1],"excluded":[1],"productDetailNewTab":[4,"product-detail-new-tab"],"imageResolutionWidth":[2,"image-resolution-width"],"exampleImageSource":[1,"example-image-source"],"apiPath":[1,"api-path"],"buttonPressed":[32]},[[0,"vviinnWidgetClose","handleModalClosed"]]]]],["vviinn-recommendations-sidebar.cjs",[[1,"vviinn-recommendations-sidebar",{"sidebarTitle":[1,"sidebar-title"],"token":[1],"productId":[1,"product-id"],"position":[1],"sourceImage":[1,"source-image"],"widgetScrollbar":[4,"widget-scrollbar"],"mode":[1],"campaigns":[1],"campaignType":[1,"campaign-type"],"color":[1],"locale":[1],"imageWidth":[2,"image-width"],"currencySign":[1,"currency-sign"],"noResultText":[1,"no-result-text"],"noResultShow":[4,"no-result-show"],"gridArrowsDynamic":[4,"grid-arrows-dynamic"],"excluded":[1],"productDetailNewTab":[4,"product-detail-new-tab"],"addToBasketShow":[4,"add-to-basket-show"],"buttonChildren":[16],"apiPath":[1,"api-path"],"buttonElementId":[1,"button-element-id"],"widgetVersion":[1,"widget-version"],"showingInButton":[4,"showing-in-button"],"state":[32]},[[16,"click","bodyClickListener"]]]]],["vviinn-vpr-button.cjs",[[1,"vviinn-vpr-button",{"token":[1],"productId":[1,"product-id"],"position":[1],"sourceImage":[1,"source-image"],"sidebarTitle":[1,"sidebar-title"],"modalScrollbar":[4,"modal-scrollbar"],"campaigns":[1],"campaignType":[1,"campaign-type"],"locale":[1],"color":[1],"addStyle":[4,"add-style"],"mode":[1],"imageWidth":[2,"image-width"],"currencySign":[1,"currency-sign"],"noResultText":[1,"no-result-text"],"noResultShow":[4,"no-result-show"],"gridArrowsDynamic":[4,"grid-arrows-dynamic"],"excluded":[1],"productDetailNewTab":[4,"product-detail-new-tab"],"addToBasketShow":[4,"add-to-basket-show"],"apiPath":[1,"api-path"]}]]]], options);
17
+ return index.bootstrapLazy([["vviinn-button.cjs",[[1,"vviinn-button",{"addStyle":[4,"add-style"]}]]],["vviinn-preloader.cjs",[[1,"vviinn-preloader"]]],["vviinn-error.cjs",[[1,"vviinn-error"]]],["vviinn-carousel_4.cjs",[[1,"vviinn-vpr-widget",{"blockTitle":[1,"block-title"],"imageRatio":[2,"image-ratio"],"imageWidth":[2,"image-width"],"productId":[1,"product-id"],"token":[1],"currencySign":[1,"currency-sign"],"pricePrefix":[1,"price-prefix"],"mode":[1],"campaignType":[1,"campaign-type"],"locale":[1],"campaigns":[1],"color":[1],"gridArrowsDynamic":[4,"grid-arrows-dynamic"],"noResultText":[1,"no-result-text"],"noResultShow":[4,"no-result-show"],"showScroll":[4,"show-scroll"],"cssUrl":[1,"css-url"],"excluded":[1],"productDetailNewTab":[4,"product-detail-new-tab"],"addToBasketShow":[4,"add-to-basket-show"],"updateButtonLocation":[1,"update-button-location"],"apiPath":[1,"api-path"],"useCarousel":[4,"use-carousel"],"showingInButton":[4,"showing-in-button"],"buttonElementId":[1,"button-element-id"],"closed":[4],"opened":[4],"recommendations":[32],"trackingDeactivated":[32],"hasErrorOnLoad":[32],"updatingAllCards":[32]},[[0,"vviinnProductLoad","trackProductLoad"],[0,"vviinnProductView","trackProductView"],[0,"vviinnProductClick","trackProductClick"],[0,"vviinnAuxClick","trackAuxClick"],[0,"vviinnAddToBasket","trackAddToBasket"],[0,"vviinnUpdatingAllCardsFinished","updatingAllCardsFinishedListener"]]],[0,"vviinn-carousel",{"mode":[1],"imageWidth":[2,"image-width"],"showScroll":[4,"show-scroll"],"campaignTypeId":[1,"campaign-type-id"],"widgetElementId":[1,"widget-element-id"],"gridArrowsDynamic":[4,"grid-arrows-dynamic"],"recommendations":[16],"widgetVersion":[1,"widget-version"],"addToBasketShow":[4,"add-to-basket-show"],"updatingAllCards":[4,"updating-all-cards"],"updateButtonLocation":[1,"update-button-location"],"moveDirection":[32],"contentGroups":[32],"activeContentGroup":[32],"isRTL":[32],"crossSellingRecommendations":[32]},[[0,"vviinnCrossSellingClick","crossSellingClickListener"]]],[1,"vviinn-product-card",{"brand":[1],"currency":[1],"deeplink":[1],"image":[1],"imageRatio":[2,"image-ratio"],"imageWidth":[2,"image-width"],"locale":[1],"price":[2],"pricePrefix":[1,"price-prefix"],"productId":[1,"product-id"],"productTitle":[1,"product-title"],"productType":[1,"product-type"],"salePrice":[2,"sale-price"],"responsive":[4],"dimmedBackground":[4,"dimmed-background"],"mode":[1],"addToBasketShow":[4,"add-to-basket-show"],"updateButtonLocation":[1,"update-button-location"],"campaignTypeId":[1,"campaign-type-id"],"widgetElementId":[1,"widget-element-id"],"buttonElementId":[1,"button-element-id"],"widgetVersion":[1,"widget-version"],"index":[2],"updatingAllCards":[4,"updating-all-cards"],"defaultAnimationInterval":[2,"default-animation-interval"],"imageLoaded":[32],"isTransitioning":[32]},[[0,"vviinnCrossSellingClick","crossSellingClickListener"]]],[1,"vviinn-skeleton",{"height":[2],"halfWidth":[4,"half-width"]}]]],["search-filters_15.cjs",[[1,"vviinn-image-view",{"basicEventData":[16],"cropper":[32]},[[0,"vviinnSelectObject","selectDetectedObject"]]],[1,"vviinn-overlayed-modal",{"active":[4],"resetState":[16],"buttonElementId":[1,"button-element-id"],"hideBackButton":[4,"hide-back-button"],"widgetVersion":[1,"widget-version"],"isFirstScreen":[4,"is-first-screen"]}],[1,"vviinn-empty-results",{"handler":[16]}],[1,"vviinn-image-selector",{"basicEventData":[16],"startUpload":[4,"start-upload"],"loading":[4],"accept":[1],"resetVpsButton":[16],"capture":[1]}],[1,"vviinn-server-error",{"handler":[16]}],[1,"vviinn-wrong-format",{"handler":[16]}],[1,"search-filters",{"filter":[16],"basicEventData":[16],"selectedFilter":[32],"hideFilters":[32]}],[1,"vviinn-example-image",{"exampleImageSource":[1,"example-image-source"],"width":[2],"height":[2],"basicEventData":[16],"srcObject":[16],"cameraButtonClicked":[4,"camera-button-clicked"],"selected":[32],"videoInitialized":[32]}],[1,"vviinn-privacy-badge",{"privacyBadgeText":[1,"privacy-badge-text"]}],[1,"vviinn-slide"],[1,"vviinn-slider",{"showBullets":[4,"show-bullets"],"position":[514],"showArrows":[4,"show-arrows"],"elementsCount":[32],"internalPosition":[32],"swipeStartPosition":[32],"isRTL":[32]}],[1,"vviinn-teaser"],[1,"vviinn-detected-object",{"detectedObject":[16],"basicEventData":[16],"position":[32]}],[1,"vviinn-modal",{"active":[1540],"resetState":[16],"buttonElementId":[1,"button-element-id"],"widgetVersion":[1,"widget-version"],"hideBackButton":[4,"hide-back-button"],"isFirstScreen":[4,"is-first-screen"],"slider":[32]}],[1,"vviinn-overlay"]]],["vviinn-vps-widget.cjs",[[1,"vviinn-vps-widget",{"token":[1],"active":[1028],"currencySign":[1,"currency-sign"],"locale":[1],"campaignId":[1,"campaign-id"],"excluded":[1],"productDetailNewTab":[4,"product-detail-new-tab"],"imageResolutionWidth":[2,"image-resolution-width"],"exampleImageSource":[1,"example-image-source"],"apiPath":[1,"api-path"],"showingInButton":[4,"showing-in-button"],"buttonElementId":[1,"button-element-id"],"buttonPressed":[4,"button-pressed"],"mode":[1],"resetVpsButton":[16],"slidePosition":[32],"width":[32],"wrongImageFormat":[32],"trackingDeactivated":[32],"stream":[32],"cameraEnabled":[32],"cameraButtonClicked":[32],"uploadSource":[32]},[[0,"vviinnCameraEnabled","trackCameraEnabled"],[0,"vviinnProductLoad","trackProductLoad"],[0,"vviinnProductView","trackProductView"],[0,"vviinnProductClick","trackProductClick"],[0,"vviinnAuxClick","trackAuxClick"],[0,"vviinnImageCrop","trachSearchAreaChanges"],[0,"vviinnSelectObject","trackDetectedObject"],[0,"vviinnSelectFilter","trackFilter"]]]]],["vviinn-vps-button.cjs",[[1,"vviinn-vps-button",{"token":[1],"currencySign":[1,"currency-sign"],"locale":[1],"campaignId":[1,"campaign-id"],"addStyle":[4,"add-style"],"mode":[1],"excluded":[1],"productDetailNewTab":[4,"product-detail-new-tab"],"imageResolutionWidth":[2,"image-resolution-width"],"exampleImageSource":[1,"example-image-source"],"apiPath":[1,"api-path"],"buttonPressed":[32]},[[0,"vviinnWidgetClose","handleModalClosed"]]]]],["vviinn-recommendations-sidebar.cjs",[[1,"vviinn-recommendations-sidebar",{"sidebarTitle":[1,"sidebar-title"],"token":[1],"productId":[1,"product-id"],"position":[1],"sourceImage":[1,"source-image"],"widgetScrollbar":[4,"widget-scrollbar"],"mode":[1],"campaigns":[1],"campaignType":[1,"campaign-type"],"color":[1],"locale":[1],"imageWidth":[2,"image-width"],"currencySign":[1,"currency-sign"],"noResultText":[1,"no-result-text"],"noResultShow":[4,"no-result-show"],"gridArrowsDynamic":[4,"grid-arrows-dynamic"],"excluded":[1],"productDetailNewTab":[4,"product-detail-new-tab"],"addToBasketShow":[4,"add-to-basket-show"],"buttonChildren":[16],"apiPath":[1,"api-path"],"buttonElementId":[1,"button-element-id"],"widgetVersion":[1,"widget-version"],"showingInButton":[4,"showing-in-button"],"state":[32]},[[16,"click","bodyClickListener"]]]]],["vviinn-vpr-button.cjs",[[1,"vviinn-vpr-button",{"token":[1],"productId":[1,"product-id"],"position":[1],"sourceImage":[1,"source-image"],"sidebarTitle":[1,"sidebar-title"],"modalScrollbar":[4,"modal-scrollbar"],"campaigns":[1],"campaignType":[1,"campaign-type"],"locale":[1],"color":[1],"addStyle":[4,"add-style"],"mode":[1],"imageWidth":[2,"image-width"],"currencySign":[1,"currency-sign"],"noResultText":[1,"no-result-text"],"noResultShow":[4,"no-result-show"],"gridArrowsDynamic":[4,"grid-arrows-dynamic"],"excluded":[1],"productDetailNewTab":[4,"product-detail-new-tab"],"addToBasketShow":[4,"add-to-basket-show"],"apiPath":[1,"api-path"]}]]]], options);
18
18
  });
19
19
  };
20
20
 
@@ -1,5 +1,5 @@
1
1
  'use strict';
2
2
 
3
- const version = "2.35.0";
3
+ const version = "2.37.0";
4
4
 
5
5
  exports.version = version;
@@ -5,8 +5,8 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  const index = require('./index-5619b5ec.js');
6
6
  const imageSearch_store = require('./imageSearch.store-dc4e98b3.js');
7
7
  const i18next = require('./i18next-74ff3413.js');
8
- const index$1 = require('./index-235ee3c0.js');
9
- const customizedSlots = require('./customized-slots-5bede102.js');
8
+ const index$1 = require('./index-722ca75d.js');
9
+ const customizedSlots = require('./customized-slots-e6b1235d.js');
10
10
 
11
11
  // -------------------------------------------------------------------------------------
12
12
  // -------------------------------------------------------------------------------------
@@ -198,7 +198,7 @@ const VviinnEmptyResults = class {
198
198
  }
199
199
  };
200
200
 
201
- const vviinnExampleImageCss = ":host{display:block;width:100%;height:100%;position:relative;overflow:hidden;flex-grow:1;transition:height 0.6s ease-in-out}img{width:100%;height:100%;min-height:100%;-o-object-fit:cover;object-fit:cover;-o-object-position:center;object-position:center}video{width:100%;min-height:100%;-o-object-fit:cover;object-fit:cover;-o-object-position:center;object-position:center}.example-button{cursor:pointer;padding:4px;border-radius:50%;border:2px solid white;position:absolute;bottom:26px;left:calc(50% - 36px);background-color:transparent;line-height:0;opacity:0.6}.hidden{display:none}";
201
+ const vviinnExampleImageCss = ":host{display:block;width:100%;height:100%;min-height:0;position:relative;overflow:hidden;flex-grow:1;transition:min-height 1s}:host(.video-expanded){min-height:100%;transition:min-height 0.8s}img{width:100%;height:100%;min-height:100%;-o-object-fit:cover;object-fit:cover;-o-object-position:center;object-position:center}video{width:100%;min-height:100%;-o-object-fit:cover;object-fit:cover;-o-object-position:center;object-position:center}.buttons-group{position:absolute;width:100%;height:64px;left:0;bottom:64px;display:flex;align-items:center}.photo-button{display:none;cursor:pointer;border:none;position:absolute;padding:0;left:calc(50% - 36px);color:#6f6f6f;background-color:transparent;line-height:0}.hidden{display:none}.visible{display:flex}";
202
202
 
203
203
  const VviinnExampleImage = class {
204
204
  constructor(hostRef) {
@@ -212,6 +212,7 @@ const VviinnExampleImage = class {
212
212
  this.height = 0;
213
213
  this.basicEventData = undefined;
214
214
  this.srcObject = undefined;
215
+ this.cameraButtonClicked = false;
215
216
  this.selected = false;
216
217
  this.videoInitialized = false;
217
218
  }
@@ -247,8 +248,10 @@ const VviinnExampleImage = class {
247
248
  this.selectImage();
248
249
  }
249
250
  handleSrcObjectChange() {
250
- if (!this.srcObject)
251
+ if (!this.srcObject) {
252
+ this.videoInitialized = false;
251
253
  return;
254
+ }
252
255
  this.videoElement.srcObject = this.srcObject;
253
256
  this.videoElement.onloadedmetadata = () => {
254
257
  this.vviinnCameraEnabled.emit(true);
@@ -256,7 +259,9 @@ const VviinnExampleImage = class {
256
259
  };
257
260
  }
258
261
  render() {
259
- return (index.h(index.Host, { onKeyUp: (ev) => this.handleKeyPress(ev) }, index.h("video", { id: "camera-preview", class: { hidden: !this.videoInitialized }, autoplay: true, playsinline: true, muted: true }), index.h("img", { src: this.exampleImageSource, width: this.width, height: this.height, tabindex: 1, class: { hidden: this.videoInitialized } }), index.h("button", { class: { "example-button": true, hidden: !this.videoInitialized }, onClick: () => this.selectImage() }, index.h(index$1.RoundCameraIcon, null))));
262
+ return (index.h(index.Host, { onKeyUp: (ev) => this.handleKeyPress(ev), class: { "video-expanded": this.cameraButtonClicked } }, index.h("video", { id: "camera-preview", class: {
263
+ hidden: !this.videoInitialized,
264
+ }, autoplay: true, playsinline: true, muted: true }), index.h("img", { src: this.exampleImageSource, width: this.width, height: this.height, tabindex: 1, class: { hidden: this.videoInitialized } }), index.h("div", { class: "buttons-group" }, index.h("button", { class: { "photo-button": true, visible: this.videoInitialized }, onClick: () => this.selectImage() }, index.h(index$1.RoundCameraIcon, null)))));
260
265
  }
261
266
  get el() { return index.getElement(this); }
262
267
  static get watchers() { return {
@@ -275,7 +280,10 @@ const VviinnImageSelector = class {
275
280
  this.vviinnImageUploadFinished = index.createEvent(this, "vviinnImageUploadFinished", 7);
276
281
  this.basicEventData = undefined;
277
282
  this.startUpload = undefined;
283
+ this.loading = false;
284
+ this.accept = "image";
278
285
  this.resetVpsButton = undefined;
286
+ this.capture = undefined;
279
287
  }
280
288
  async handleInputChange(event) {
281
289
  this.vviinnImageUpload.emit(this.basicEventData);
@@ -284,9 +292,6 @@ const VviinnImageSelector = class {
284
292
  imageSearch_store._function.pipe(processingResult, imageSearch_store.match$1(({ kind }) => this.vviinnNoResult.emit(Object.assign(Object.assign({}, this.basicEventData), { reason: kind })), () => this.vviinnImageUploadFinished.emit()));
285
293
  input.value = null;
286
294
  }
287
- isLoading() {
288
- return imageSearch_store.imageSearchState.loading;
289
- }
290
295
  startUploadWatcher(upload) {
291
296
  if (upload) {
292
297
  this.fileInput.click();
@@ -294,7 +299,7 @@ const VviinnImageSelector = class {
294
299
  }
295
300
  }
296
301
  render() {
297
- return (index.h(index.Host, { exportparts: "button" }, this.isLoading() ? (index.h("vviinn-preloader", null)) : (index.h("label", { htmlFor: "fileInput", part: "button" }, index.h("slot", { name: "upload-button-text" }, "Upload image"))), index.h("input", { id: "fileInput", class: "visually-hidden", type: "file", accept: "image/*", onChange: (event) => this.handleInputChange(event), ref: (el) => (this.fileInput = el) })));
302
+ return (index.h(index.Host, { exportparts: "button" }, this.loading ? (index.h("vviinn-preloader", null)) : (index.h("label", { htmlFor: "fileInput", part: "button" }, index.h("slot", { name: "upload-button-text" }, "Upload image"))), index.h("input", { id: "fileInput", class: "visually-hidden", type: "file", capture: this.capture, accept: this.accept === "image" ? "image/*" : "application/octet-stream", onChange: (event) => this.handleInputChange(event), ref: (el) => (this.fileInput = el) })));
298
303
  }
299
304
  static get watchers() { return {
300
305
  "startUpload": ["startUploadWatcher"]
@@ -3680,13 +3685,12 @@ const VviinnImageView = class {
3680
3685
  };
3681
3686
  VviinnImageView.style = vviinnImageViewCss;
3682
3687
 
3683
- const vviinnModalCss = ":host{background:white;border-radius:24px;box-sizing:border-box;display:grid;grid-template-rows:min-content auto;max-width:960px;overflow:auto;position:relative}.head{position:absolute;width:100%;box-sizing:border-box;display:flex;align-items:center;z-index:1;padding:14px}@media (max-width: 768px){:host{animation-name:fade-in;animation-duration:0.5s;animation-fill-mode:forwards;border-radius:24px 24px 0 0}:host(.closed){animation-name:fade-out;animation-fill-mode:none}.head{position:sticky;z-index:1}:host(:not(.first-screen)) .head{background-color:white}.body{overflow-y:auto}:host(.first-screen) .body{transform:translateY(-64px)}:host(:not(.first-screen)) .body{padding-bottom:64px}}.title{display:flex;align-items:center;transform:translateX(-6px);font-weight:600;font-size:18px;line-height:24px;margin:0 auto}.title-image{border-radius:50%;border:1px solid rgb(244, 244, 244);-o-object-fit:cover;object-fit:cover;-o-object-position:center;object-position:center;margin-right:8px}button{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:none;cursor:pointer;display:grid;padding:6px;color:#525252}button:hover{color:#000}@keyframes fade-in{from{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes fade-out{from{transform:translateY(0)}to{transform:translateY(100%)}}";
3688
+ const vviinnModalCss = ":host{background:white;border-radius:24px;box-sizing:border-box;display:grid;grid-template-rows:min-content auto;max-width:960px;overflow:auto;position:relative}.head{position:absolute;width:100%;box-sizing:border-box;display:flex;align-items:center;z-index:1;padding:14px}.title{display:flex;align-items:center;transform:translateX(-6px);font-weight:600;font-size:18px;line-height:24px;margin:0 auto}.title-image{border-radius:50%;border:1px solid rgb(244, 244, 244);-o-object-fit:cover;object-fit:cover;-o-object-position:center;object-position:center;margin-right:8px}button{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:none;cursor:pointer;display:grid;padding:6px;color:#8d8d8d}button:hover{color:#000}@media (max-width: 768px){:host{animation-name:fade-in;animation-duration:0.5s;animation-fill-mode:forwards;border-radius:24px 24px 0 0}:host(.closed){animation-name:fade-out;animation-fill-mode:none}.head{position:sticky;z-index:1}:host(:not(.first-screen)) .head{background-color:white}.body{overflow-y:auto}:host(.first-screen) .body{transform:translateY(-64px)}:host(:not(.first-screen)) .body{padding-bottom:64px}:host(.first-screen) button,:host(.first-screen) button:hover{color:white}}@keyframes fade-in{from{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes fade-out{from{transform:translateY(0)}to{transform:translateY(100%)}}";
3684
3689
 
3685
3690
  const VviinnModal = class {
3686
3691
  constructor(hostRef) {
3687
3692
  index.registerInstance(this, hostRef);
3688
3693
  this.vviinnWidgetClose = index.createEvent(this, "vviinnWidgetClose", 7);
3689
- this.secondaryActionClicked = index.createEvent(this, "secondaryActionClicked", 7);
3690
3694
  this.active = false;
3691
3695
  this.resetState = undefined;
3692
3696
  this.buttonElementId = undefined;
@@ -3695,6 +3699,7 @@ const VviinnModal = class {
3695
3699
  this.isFirstScreen = undefined;
3696
3700
  this.slider = false;
3697
3701
  }
3702
+ /** @internal */
3698
3703
  componentWillLoad() {
3699
3704
  customizedSlots.slotChangeListener(this, this.el);
3700
3705
  }
@@ -3729,8 +3734,7 @@ const VviinnModal = class {
3729
3734
  return (index.h(index.Host, { exportparts: "secondary-action, title, close-button", class: { closed: !this.active, "first-screen": this.isFirstScreen }, onAnimationEnd: (ev) => this.handleAnimationEnd(ev) }, index.h("div", { class: "head" }, !this.hideBackButton && (index.h("button", { part: "secondary-action", onClick: () => {
3730
3735
  this.resetState();
3731
3736
  this.resetTopScroll();
3732
- this.secondaryActionClicked.emit();
3733
- } }, index.h("svg", { width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg" }, index.h("path", { d: "M20.25 12H3.75", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round" }), index.h("path", { d: "M10.5 5.25L3.75 12L10.5 18.75", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round" })))), index.h("div", { class: "title", part: "title" }, this.renderImage(), index.h("slot", { name: "vviinn-image-search-modal-title" }, i18next.instance.t("imageSearchModalTitle"))), index.h("button", { onClick: () => this.close(), class: "close-button", part: "close-button" }, index.h("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg" }, index.h("path", { d: "M16 1.4L14.6 0L8 6.6L1.4 0L0 1.4L6.6 8L0 14.6L1.4 16L8 9.4L14.6 16L16 14.6L9.4 8L16 1.4Z", fill: "currentColor" })))), index.h("div", { class: "body" }, index.h("slot", null))));
3737
+ } }, index.h(index$1.SecondaryActionIcon, null))), index.h("div", { class: "title", part: "title" }, this.renderImage(), index.h("slot", { name: "vviinn-image-search-modal-title" }, i18next.instance.t("imageSearchModalTitle"))), index.h("button", { onClick: () => this.close(), class: "close-button", part: "close-button" }, index.h("svg", { xmlns: "http://www.w3.org/2000/svg", width: "24", height: "24", viewBox: "0 0 24 24", fill: "none" }, index.h("path", { d: "M12 13.3892L6.91958 18.4696C6.72248 18.6667 6.49095 18.7653 6.225 18.7653C5.95905 18.7653 5.72753 18.6667 5.53043 18.4696C5.33333 18.2725 5.23478 18.041 5.23478 17.775C5.23478 17.5091 5.33333 17.2776 5.53043 17.0805L10.6109 12L5.53043 6.9196C5.33333 6.7225 5.23478 6.49098 5.23478 6.22503C5.23478 5.95908 5.33333 5.72755 5.53043 5.53045C5.72753 5.33335 5.95905 5.2348 6.225 5.2348C6.49095 5.2348 6.72248 5.33335 6.91958 5.53045L12 10.6109L17.0804 5.53045C17.2775 5.33335 17.5091 5.2348 17.775 5.2348C18.041 5.2348 18.2725 5.33335 18.4696 5.53045C18.6667 5.72755 18.7652 5.95908 18.7652 6.22503C18.7652 6.49098 18.6667 6.7225 18.4696 6.9196L13.3892 12L18.4696 17.0805C18.6667 17.2776 18.7652 17.5091 18.7652 17.775C18.7652 18.041 18.6667 18.2725 18.4696 18.4696C18.2725 18.6667 18.041 18.7653 17.775 18.7653C17.5091 18.7653 17.2775 18.6667 17.0804 18.4696L12 13.3892Z", fill: "currentColor" })))), index.h("div", { class: "body" }, index.h("slot", null))));
3734
3738
  }
3735
3739
  get el() { return index.getElement(this); }
3736
3740
  };
@@ -3767,7 +3771,7 @@ const VviinnOverlayedModal = class {
3767
3771
  };
3768
3772
  VviinnOverlayedModal.style = vviinnOverlayedModalCss;
3769
3773
 
3770
- const vviinnPrivacyBadgeCss = ":host{color:#525252;font-size:12px;line-height:16px}:host(.visible){color:transparent}@media (max-width: 768px){:host(.visible){display:none}}";
3774
+ const vviinnPrivacyBadgeCss = ":host{color:#525252;font-size:12px;line-height:16px;text-align:center}:host(.invisible){color:transparent}@media (max-width: 768px){:host(.invisible){display:none}}";
3771
3775
 
3772
3776
  const VviinnPrivacyBadge = class {
3773
3777
  constructor(hostRef) {
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  const index = require('./index-5619b5ec.js');
6
- const index$1 = require('./index-235ee3c0.js');
6
+ const index$1 = require('./index-722ca75d.js');
7
7
 
8
8
  const vviinnButtonCss = ":host{display:block}.open-button{align-items:center;background:rgba(255, 255, 255, 0.8);border-radius:50%;border:none;box-shadow:0px 2px 6px rgba(0, 0, 0, 0.15);box-sizing:border-box;cursor:pointer;display:grid;height:40px;justify-items:center;padding:0;width:40px;transition:all 0.25s ease-in-out}.raw-open-button{background:none;border:none;cursor:pointer}.open-button:hover{box-shadow:0px 2px 6px rgba(0, 0, 0, 0.25)}.open-button:focus{border:2px solid rgba(15, 98, 254, 0.5);outline:none}.open-button:active{background:#f4f4f4;outline:none}";
9
9
 
@@ -4,10 +4,10 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  const index = require('./index-5619b5ec.js');
6
6
  const imageSearch_store = require('./imageSearch.store-dc4e98b3.js');
7
- const index$1 = require('./index-235ee3c0.js');
7
+ const index$1 = require('./index-722ca75d.js');
8
8
  const i18next = require('./i18next-74ff3413.js');
9
- const customizedSlots = require('./customized-slots-5bede102.js');
10
- const _package = require('./package-a2950df6.js');
9
+ const customizedSlots = require('./customized-slots-e6b1235d.js');
10
+ const _package = require('./package-49f18e6a.js');
11
11
  const index$2 = require('./index-7ff2ab5f.js');
12
12
 
13
13
  const vviinnCarouselCss = ":host{--vviinn-progressbar-width:0;--vviinn-carousel-item-width:150px;--vviinn-carousel-columns-internal:var(--vviinn-carousel-columns, 4);--vviinn-carousel-image-width-system:140px}.body{display:flex;position:relative;width:var(--vviinn-carousel-content-width);flex-direction:column}.content-wrapper *{box-sizing:border-box}.content-wrapper{overflow-y:hidden;overflow-x:auto;flex-grow:1}.bullets{margin-top:16px;display:flex;flex-direction:row;grid-gap:24px;justify-content:center}.bullet{width:10px;height:10px;background:#e0e0e0;border-radius:50%;cursor:pointer}.bullet.active{background:#161616}.content:not(.show-scrollbar),.content.grid{scrollbar-color:#fff0 #fff0}.content:not(.show-scrollbar)::-webkit-scrollbar,.content.grid::-webkit-scrollbar{opacity:0}.content{display:flex;flex-direction:row;grid-gap:8px;overflow-y:hidden;overflow-x:auto;flex-grow:1;padding-bottom:16px}.content.left>*{scroll-snap-align:start}.content.right>*{scroll-snap-align:end}:host(.continuity) .prev,:host(.continuity) .next{border-radius:2px}:host(.grid) .prev,:host(.grid) .next{border-radius:50%}.prev,.next{align-items:center;background-color:white;border:none;box-shadow:0px 2px 6px rgba(0, 0, 0, 0.15);fill:#525252;cursor:pointer;display:grid;height:40px;justify-items:center;position:absolute;top:calc(50% - 20px);width:40px;z-index:1;padding:0;margin:0}.next:disabled,.prev:disabled{display:none}.prev svg{transform:rotate(180deg);margin-left:-5px}.prev{left:0}.next{right:0}.items-group{display:grid;grid-gap:16px;grid-template-columns:repeat(var(--vviinn-carousel-columns-internal), 1fr);min-width:100%}vviinn-product-card::part(price-container){text-align:center}:host(.classic) vviinn-product-card::part(title),:host(.classic) vviinn-product-card::part(brand),:host(.classic) vviinn-product-card::part(type){text-align:center}@media (max-width: 480px){:host(.modern) button{display:none}.items-group{grid-template-columns:repeat(2, 1fr)}}";
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  const index = require('./index-5619b5ec.js');
6
- const index$1 = require('./index-235ee3c0.js');
6
+ const index$1 = require('./index-722ca75d.js');
7
7
 
8
8
  const recommendationsSidebarCss = ":host{--vviinn-carousel-columns:4;box-sizing:border-box;display:block;display:flex;height:100vh;left:0;position:fixed;top:0;transition:background 0.1s ease-in-out;width:100vw}:host(.open){background:rgba(0, 0, 0, 0.2)}:host(.bottom){flex-direction:column;justify-content:end}:host(.right){flex-direction:row;justify-content:flex-end}:host [slot]{visibility:hidden;position:absolute}header{position:relative;text-align:center;padding:32px}header.contains-source-img{display:grid;justify-items:center;grid-gap:12px}img.source-image{width:64px;height:64px;border-radius:50%;box-shadow:0px 2px 4px rgba(0, 0, 0, 0.15);padding:8px}:host(.right) header{box-shadow:0px 2px 6px rgba(0, 0, 0, 0.1)}main{padding:0 24px;min-height:100px}:host(.right) main{overflow:auto}.sidebar{background:white;box-sizing:border-box;display:flex;flex-direction:column;max-height:100vh;overflow-y:auto}:host(.bottom.idle) .sidebar,:host(.bottom.closed) .sidebar{transform:translateY(100%)}:host(.bottom.closed) .sidebar{animation-name:slideOutFromBottom;animation-duration:0.5s;animation-fill-mode:forwards}:host(.bottom.open) .sidebar{animation-name:slideInFromBottom;animation-duration:0.5s;animation-fill-mode:forwards}:host(.right.idle) .sidebar{transform:translateX(100%)}:host(.right.closed) .sidebar{animation-name:slideOutFromRight;animation-duration:0.5s;animation-fill-mode:forwards}:host(.right.open) .sidebar{animation-name:slideInFromRight;animation-duration:0.5s;animation-fill-mode:forwards}:host(.right) .sidebar{max-width:480px}:host(.right) vviinn-vpr-widget::part(recommendations-grid){display:grid;grid-template-columns:repeat(2, 1fr);grid-gap:24px}:host(.right) vviinn-vpr-widget{overflow:auto}:host(.right) vviinn-vpr-widget::part(image){border:none}.title{font-style:normal;font-weight:500;font-size:28px;line-height:40px;text-align:center;color:#000000}vviinn-vpr-widget::part(title),vviinn-vpr-widget::part(brand),vviinn-vpr-widget::part(type){text-align:left}vviinn-vpr-widget::part(price-container){align-self:start}.close-sidebar{background:transparent;border:none;cursor:pointer;margin:0;padding:0;position:absolute;right:24px;top:24px}@keyframes slideInFromBottom{from{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes slideOutFromBottom{from{transform:translateY(0)}to{transform:translateY(100%)}}@keyframes slideInFromRight{from{transform:translateX(100%)}to{transform:translateX(0)}}@keyframes slideOutFromRight{from{transform:translateX(0)}to{transform:translateX(100%)}}@media (max-width: 768px){:host{--vviinn-carousel-columns:2}}";
9
9
 
@@ -3,8 +3,8 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  const index = require('./index-5619b5ec.js');
6
- const _package = require('./package-a2950df6.js');
7
- const index$1 = require('./index-235ee3c0.js');
6
+ const _package = require('./package-49f18e6a.js');
7
+ const index$1 = require('./index-722ca75d.js');
8
8
 
9
9
  const vviinnVprButtonCss = ":host{display:block}";
10
10
 
@@ -3,9 +3,9 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  const index = require('./index-5619b5ec.js');
6
- const _package = require('./package-a2950df6.js');
7
- const index$1 = require('./index-235ee3c0.js');
8
- const customizedSlots = require('./customized-slots-5bede102.js');
6
+ const _package = require('./package-49f18e6a.js');
7
+ const index$1 = require('./index-722ca75d.js');
8
+ const customizedSlots = require('./customized-slots-e6b1235d.js');
9
9
  const constants = require('./constants-7684cbfc.js');
10
10
 
11
11
  const vviinnVpsButtonCss = ":host{display:block}";
@@ -65,7 +65,7 @@ const VviinnVpsButton = class {
65
65
  render() {
66
66
  return (index.h(index.Host, { tabindex: "0", role: "button" }, index.h("vviinn-button", { onClick: () => {
67
67
  this.handleClick();
68
- }, addStyle: this.addStyle, part: "vviinn-button" }, index.h("slot", null, index.h(index$1.CameraIcon, null))), index.h(customizedSlots.SlotSkeleton, null), index.h("vviinn-vps-widget", { mode: this.mode, "currency-sign": this.currencySign, token: this.token, locale: this.locale, apiPath: this.apiPath, exportparts: "brand, deeplink, currency, image, image-link, price-amount-sale, price-amount-outdated, price-amount-regular, price-container, price-outdated, price-regular, price-sale, price-prefix, title, product-card", campaignId: this.campaignId, showingInButton: true, buttonPressed: this.buttonPressed, resetVpsButton: this.resetButton.bind(this), buttonElementId: this.el.id, active: this.buttonPressed && this.mode === "modal", excluded: this.excluded, productDetailNewTab: this.productDetailNewTab, imageResolutionWidth: this.imageResolutionWidth, exampleImageSource: this.exampleImageSource })));
68
+ }, addStyle: this.addStyle, part: "vviinn-button" }, index.h("slot", null, index.h(index$1.CameraIcon, null))), index.h(customizedSlots.SlotSkeleton, null), index.h("vviinn-vps-widget", { mode: this.mode, "currency-sign": this.currencySign, token: this.token, locale: this.locale, apiPath: this.apiPath, exportparts: "brand, deeplink, currency, image, image-link, price-amount-sale, price-amount-outdated, price-amount-regular, price-container, price-outdated, price-regular, price-sale, price-prefix, title, product-card, upload-photo_button, show-files_button, start-camera_button", campaignId: this.campaignId, showingInButton: true, buttonPressed: this.buttonPressed, resetVpsButton: this.resetButton.bind(this), buttonElementId: this.el.id, active: this.buttonPressed && this.mode === "modal", excluded: this.excluded, productDetailNewTab: this.productDetailNewTab, imageResolutionWidth: this.imageResolutionWidth, exampleImageSource: this.exampleImageSource })));
69
69
  }
70
70
  get el() { return index.getElement(this); }
71
71
  };
@@ -5,10 +5,10 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  const index = require('./index-5619b5ec.js');
6
6
  const imageSearch_store = require('./imageSearch.store-dc4e98b3.js');
7
7
  const i18next = require('./i18next-74ff3413.js');
8
- const _package = require('./package-a2950df6.js');
9
- const customizedSlots = require('./customized-slots-5bede102.js');
8
+ const _package = require('./package-49f18e6a.js');
9
+ const customizedSlots = require('./customized-slots-e6b1235d.js');
10
10
  const index$1 = require('./index-7ff2ab5f.js');
11
- const index$2 = require('./index-235ee3c0.js');
11
+ const index$2 = require('./index-722ca75d.js');
12
12
  const constants = require('./constants-7684cbfc.js');
13
13
 
14
14
  const resources = {
@@ -16,7 +16,9 @@ const resources = {
16
16
  translation: {
17
17
  exampleImagesTitle: "Mit den Beispielbildern die Suche direkt ausprobieren",
18
18
  imageUploadButtonText: "Bild Hochladen",
19
- cameraButtonText: "Kamera Starten",
19
+ cameraButtonTextStart: "Kamera Starten",
20
+ cameraButtonTextStop: "Kamera Stop",
21
+ showFilesButtonText: "Dateien anzeigen",
20
22
  galleryButtonText: "Galerie Anzeigen",
21
23
  privacyBadgeText: "Durch das Hochladen eines Bildes willigst Du in die Verarbeitung durch unseren Partner Vviinn ein. Das Bild wird nach einer Stunde Inaktivität gelöscht.",
22
24
  teaserText: "Finde Produkte auf \n einem Foto",
@@ -40,7 +42,9 @@ const resources = {
40
42
  translation: {
41
43
  exampleImagesTitle: "Try out the search with the example images",
42
44
  imageUploadButtonText: "Upload Photo",
43
- cameraButtonText: "Start Camera",
45
+ cameraButtonTextStart: "Start Camera",
46
+ cameraButtonTextStop: "Stop Camera",
47
+ showFilesButtonText: "Show Files",
44
48
  galleryButtonText: "Show Gallery",
45
49
  privacyBadgeText: "By uploading a picture you agree to the processing by our partner Vviinn. The image will be deleted after one hour of inactivity.",
46
50
  teaserText: "Find Product by Photo",
@@ -62,7 +66,7 @@ const resources = {
62
66
  },
63
67
  };
64
68
 
65
- const vviinnVpsWidgetCss = ":host{--color-primary-system:#0F62FE;--color-primary-hover-system:#014CDA;--color-icons-system:#2F8EDF;--spacer:8px}:host{display:block}.hidden{visibility:hidden;height:1px}vviinn-overlayed-modal.first-screen::part(title),vviinn-overlayed-modal.first-screen::part(secondary-action){visibility:hidden}.start-page{display:grid;grid-template-columns:repeat(2, 1fr);height:640px}#start-page_block{box-sizing:border-box;display:flex;overflow-y:auto;flex-direction:column;justify-content:center;padding:42px 62px}#start-page_block.error{align-content:center}.start-page_main-content{flex-grow:1;display:flex;flex-direction:column;justify-content:center}.start-page_errors-block{display:flex;flex-direction:column;justify-content:center;gap:12px}.buttons-group{display:flex;flex-direction:column;gap:12px;margin:24px 0}.action-button{display:grid;border:none;cursor:pointer;align-items:center;border-radius:8px;color:white;font-size:16px;height:48px;justify-items:center;transition:background 0.1s ease-in-out;color:#525252;background-color:#f4f4f4}.action-button:hover{background-color:#eaeaea}.action-button:first-child{background:var(--color-primary, var(--color-primary-system));border-color:var(--color-primary, var(--color-primary-system));color:white}.action-button:first-child:hover{background:var(--color-primary-hover, var(--color-primary-hover-system));border-color:var(--color-primary-hover, var(--color-primary-hover-system))}.action-button:active{border-color:black}.action-button-content{display:grid;align-items:center;justify-items:start;justify-content:center;grid-template-columns:max-content auto;grid-gap:8px}.results-page{margin-top:60px;display:grid;grid-template-columns:336px auto;box-sizing:border-box}.results-page>*{padding:24px;box-sizing:border-box}.products{width:100%;align-content:center;align-items:start;box-sizing:border-box;display:grid;grid-gap:32px 16px;grid-template-columns:repeat(auto-fill, minmax(130px, 1fr));justify-items:center;padding:24px;position:absolute}.products.hidden{display:none}vviinn-empty-results{width:280px;align-self:center;justify-self:center}.products-wrapper{display:grid;overflow-y:auto;overflow-x:hidden;padding:unset;position:relative;width:100%}.image-wrapper{display:grid;grid-template-rows:min-content 1fr;grid-gap:24px;min-width:100%}vviinn-product-card{gap:0;width:100%}vviinn-product-card::part(image){border:1px solid #eaeaea;margin-bottom:8px}vviinn-product-card::part(price-container),vviinn-product-card::part(deeplink),vviinn-product-card::part(title){align-self:start}search-filters span{display:none}search-filters::part(filter){background:#f4f4f4;border-radius:8px;box-sizing:border-box;color:#161616;font-size:14px;font-weight:400;line-height:20px}search-filters::part(show-more-filters){display:flex;align-items:center;justify-content:center;cursor:pointer;border:1px solid #f4f4f4;min-width:40px;height:40px;border-radius:100px;box-sizing:border-box;color:#161616}search-filters::part(show-more-filters):hover{background:#eaeaea}search-filters::part(filter active){background:var(--color-primary, var(--color-primary-system));color:white}.filters-wrapper{overflow-x:auto;transform:translateX(-24px);min-width:calc(100% + 48px)}.results-page:not(.active){display:none}.nothing-found{display:grid;grid-gap:64px;justify-self:center;padding-top:64px;padding-bottom:16px;position:absolute;width:60%}@media (max-width: 1080px){#start-page_block{padding:24px 36px}}@media (max-width: 768px){.start-page{display:flex;flex-direction:column;height:100%}.start-page.active{height:calc(100vh - 67px);height:calc(100svh - 67px)}.start-page:not(.active){overflow:hidden}.results-page{margin-top:0}.results-page>*{box-sizing:border-box;padding:24px}.filters-wrapper{min-width:calc(100% + 40px)}.results-page{grid-template-rows:min-content;grid-template-columns:unset}#start-page_block{overflow-y:unset;min-height:-moz-fit-content;min-height:fit-content;padding:14px 24px 20px}.image{margin-bottom:8px}.image-wrapper{grid-template-rows:min-content auto;width:100%}.products-wrapper{align-content:start;position:static;overflow-y:unset;width:100%;padding-top:0}.products{position:static;padding:0;width:unset;grid-gap:32px 16px;justify-content:center}.nothing-found{position:static;grid-gap:64px;padding:unset;align-content:start;width:unset}}@media (max-width: 480px){.start-page{padding-top:0}#start-page_block{padding:20px}.action-button-content{grid-gap:10px}}@media (max-width: 380px){.results-page>*{padding:12px}.products{grid-gap:24px 10px}}vviinn-wrong-format,vviinn-server-error{width:280px;align-self:center;justify-self:center}.visually-hidden{clip:rect(0 0 0 0);-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px}";
69
+ const vviinnVpsWidgetCss = ":host{--color-primary-system:#0F62FE;--color-primary-hover-system:#014CDA;--color-icons-system:#2F8EDF;--spacer:8px}:host{display:block}.hidden{visibility:hidden;height:1px}vviinn-overlayed-modal.first-screen::part(title),vviinn-overlayed-modal.first-screen::part(secondary-action){visibility:hidden}.start-page{display:grid;grid-template-columns:repeat(2, 1fr);height:640px}#start-page_block{box-sizing:border-box;display:flex;overflow-y:auto;flex-direction:column;justify-content:center;padding:42px 62px}#start-page_block.error{align-content:center}.start-page_main-content{flex-grow:1;display:flex;flex-direction:column;justify-content:center}.start-page_errors-block{display:flex;flex-direction:column;justify-content:center;gap:12px}.buttons-group{display:flex;flex-direction:column;gap:12px;margin:24px 0}.action-button{display:grid;border:none;cursor:pointer;align-items:center;border-radius:8px;color:white;font-size:16px;height:48px;justify-items:center;transition:background 0.1s ease-in-out;color:#525252;background-color:#f4f4f4}.action-button:hover{background-color:#eaeaea}.action-button:first-child{background:var(--color-primary, var(--color-primary-system));border-color:var(--color-primary, var(--color-primary-system));color:white}.action-button:first-child:hover{background:var(--color-primary-hover, var(--color-primary-hover-system));border-color:var(--color-primary-hover, var(--color-primary-hover-system))}.action-button:active{border-color:black}.action-button-content{display:grid;align-items:center;justify-items:start;justify-content:center;grid-template-columns:max-content auto;grid-gap:8px}.results-page{margin-top:60px;display:grid;grid-template-columns:336px auto;box-sizing:border-box}.results-page>*{padding:24px;box-sizing:border-box}.products{width:100%;align-content:center;align-items:start;box-sizing:border-box;display:grid;grid-gap:32px 16px;grid-template-columns:repeat(auto-fill, minmax(130px, 1fr));justify-items:center;padding:24px;position:absolute}.products.hidden{display:none}vviinn-empty-results{width:280px;align-self:center;justify-self:center}.products-wrapper{display:grid;overflow-y:auto;overflow-x:hidden;padding:unset;position:relative;width:100%}.image-wrapper{display:grid;grid-template-rows:min-content 1fr;grid-gap:24px;min-width:100%}vviinn-product-card{gap:0;width:100%}vviinn-product-card::part(image){border:1px solid #eaeaea;margin-bottom:8px}vviinn-product-card::part(price-container),vviinn-product-card::part(deeplink),vviinn-product-card::part(title){align-self:start}search-filters span{display:none}search-filters::part(filter){background:#f4f4f4;border-radius:8px;box-sizing:border-box;color:#161616;font-size:14px;font-weight:400;line-height:20px}search-filters::part(show-more-filters){display:flex;align-items:center;justify-content:center;cursor:pointer;border:1px solid #f4f4f4;min-width:40px;height:40px;border-radius:100px;box-sizing:border-box;color:#161616}search-filters::part(show-more-filters):hover{background:#eaeaea}search-filters::part(filter active){background:var(--color-primary, var(--color-primary-system));color:white}.filters-wrapper{overflow-x:auto;transform:translateX(-24px);min-width:calc(100% + 48px)}.results-page:not(.active){display:none}.nothing-found{display:grid;grid-gap:64px;justify-self:center;padding-top:64px;padding-bottom:16px;position:absolute;width:60%}@media (max-width: 1080px){#start-page_block{padding:24px 36px}}@media (max-width: 768px){.start-page{display:flex;flex-direction:column;height:100%}vviinn-overlayed-modal.first-screen::part(secondary-action){visibility:visible}.start-page.active{height:calc(100vh - 64px);height:calc(100svh - 64px)}.start-page:not(.active){overflow:hidden}.results-page{margin-top:0}.results-page>*{box-sizing:border-box;padding:24px}.filters-wrapper{min-width:calc(100% + 40px)}.results-page{grid-template-rows:min-content;grid-template-columns:unset}#start-page_block{overflow-y:unset;min-height:-moz-fit-content;min-height:fit-content;padding:24px 20px}.image{margin-bottom:8px}.image-wrapper{grid-template-rows:min-content auto;width:100%}.products-wrapper{align-content:start;position:static;overflow-y:unset;width:100%;padding-top:0}.products{position:static;padding:0;width:unset;grid-gap:32px 16px;justify-content:center}.nothing-found{position:static;grid-gap:64px;padding:unset;align-content:start;width:unset}}@media (max-width: 480px){.start-page{padding-top:0}.action-button-content{grid-gap:10px}}@media (max-width: 380px){.results-page>*{padding:12px}.products{grid-gap:24px 10px}}vviinn-wrong-format,vviinn-server-error{width:280px;align-self:center;justify-self:center}.visually-hidden{clip:rect(0 0 0 0);-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px}";
66
70
 
67
71
  var __rest = (undefined && undefined.__rest) || function (s, e) {
68
72
  var t = {};
@@ -79,6 +83,16 @@ var __rest = (undefined && undefined.__rest) || function (s, e) {
79
83
  const filterInt = (value) => /^[-+]?(\d+|Infinity)$/.test(value) ? Number(value) : NaN;
80
84
  const notEmptyString = (s) => !imageSearch_store.isEmpty(s);
81
85
  const notNan = (n) => !isNaN(n);
86
+ const checkDeviceType = () => {
87
+ const ua = navigator.userAgent;
88
+ if (/(tablet|ipad|playbook|silk)|(android(?!.*mobi))/i.test(ua)) {
89
+ return "tablet";
90
+ }
91
+ else if (/Mobile|Android|iP(hone|od)|IEMobile|BlackBerry|Kindle|Silk-Accelerated|(hpw|web)OS|Opera M(obi|ini)/.test(ua)) {
92
+ return "mobile";
93
+ }
94
+ return "desktop";
95
+ };
82
96
  const VviinnVpsWidget = class {
83
97
  constructor(hostRef) {
84
98
  index.registerInstance(this, hostRef);
@@ -100,9 +114,28 @@ const VviinnVpsWidget = class {
100
114
  this.resultLoaded = false;
101
115
  this.resultViewed = false;
102
116
  this.cameraAvailable = false;
103
- this.handleCameraClick = async () => {
104
- if (this.stream)
117
+ this.isTabletOrMobile = false;
118
+ this.handleVviinnImageUpload = (uploadSource) => {
119
+ this.trackInitialSearch();
120
+ this.uploadSource = uploadSource;
121
+ };
122
+ this.handleVviinnImageUploadFinished = () => {
123
+ this.handleImageSelection();
124
+ if (this.mode === "upload" && this.showingInButton) {
125
+ this.active = true;
126
+ }
127
+ };
128
+ this.handleVviinnNoResult = (detail) => {
129
+ if (detail.reason === "client") {
130
+ this.wrongImageFormat = true;
131
+ }
132
+ };
133
+ this.handleStartCameraClick = async () => {
134
+ if (this.stream) {
135
+ this.resetState();
105
136
  return;
137
+ }
138
+ this.cameraButtonClicked = true;
106
139
  try {
107
140
  const videoStream = await navigator.mediaDevices.getUserMedia({
108
141
  video: { facingMode: "environment" },
@@ -111,7 +144,8 @@ const VviinnVpsWidget = class {
111
144
  }
112
145
  catch (error) {
113
146
  // TODO: Show error in the UI
114
- console.error("Error accessing camera:", error.message);
147
+ console.log("Error accessing camera: ", error.message);
148
+ this.resetState();
115
149
  }
116
150
  };
117
151
  this.setTrackingDeactivated = (result) => {
@@ -150,6 +184,8 @@ const VviinnVpsWidget = class {
150
184
  this.trackingDeactivated = false;
151
185
  this.stream = null;
152
186
  this.cameraEnabled = false;
187
+ this.cameraButtonClicked = false;
188
+ this.uploadSource = undefined;
153
189
  }
154
190
  initResultEvents() {
155
191
  this.resultLoaded = false;
@@ -278,11 +314,8 @@ const VviinnVpsWidget = class {
278
314
  const searchEvent = index$1.createFilterEvent(Object.assign({ session_id: this.uiSessionId, source: this.imageSource, kind: detail.kind, action: detail.action }, rest));
279
315
  this.trackingApi.trackEvent(searchEvent).then(this.setTrackingDeactivated);
280
316
  }
281
- trackSecondaryAction() {
282
- this.initResultEvents();
283
- this.stream = null;
284
- }
285
317
  connectedCallback() {
318
+ this.isTabletOrMobile = checkDeviceType() !== "desktop";
286
319
  imageSearch_store.state.apiPath = this.apiPath;
287
320
  imageSearch_store.state.currencySign = this.currencySign;
288
321
  imageSearch_store.state.locale = this.locale;
@@ -331,15 +364,15 @@ const VviinnVpsWidget = class {
331
364
  let resultEvent = index$1.createResultVpsEventByType(type)(Object.assign({ session_id: this.uiSessionId }, rest));
332
365
  this.trackingApi.trackEvent(resultEvent).then(this.setTrackingDeactivated);
333
366
  }
334
- trackInitialSearch(source) {
367
+ trackInitialSearch() {
335
368
  if (this.trackingDeactivated)
336
369
  return;
337
370
  const _a = this.getBasicEventData(), rest = __rest(_a, ["campaignTypeId", "widgetType"]);
338
- const searchEvent = index$1.createSearchEvent(Object.assign({ session_id: this.uiSessionId, search_area: "full", source }, rest));
371
+ const searchEvent = index$1.createSearchEvent(Object.assign({ session_id: this.uiSessionId, search_area: "full", source: "upload" }, rest));
339
372
  this.trackingApi.trackEvent(searchEvent).then(this.setTrackingDeactivated);
340
373
  }
341
- handleImageSelection(source) {
342
- this.imageSource = source;
374
+ handleImageSelection() {
375
+ this.imageSource = "upload";
343
376
  this.slidePosition = 1;
344
377
  const root = this.el.shadowRoot.querySelector("vviinn-overlayed-modal");
345
378
  const overlay = root.shadowRoot.querySelector("vviinn-overlay");
@@ -379,7 +412,10 @@ const VviinnVpsWidget = class {
379
412
  this.wrongImageFormat = false;
380
413
  this.resetScroll("results-block");
381
414
  this.stopStreamTracks();
415
+ this.initResultEvents();
382
416
  this.stream = null;
417
+ this.cameraEnabled = false;
418
+ this.cameraButtonClicked = false;
383
419
  }
384
420
  haveErrors() {
385
421
  return this.wrongImageFormat || imageSearch_store.imageSearchState.serverError;
@@ -397,27 +433,38 @@ const VviinnVpsWidget = class {
397
433
  }
398
434
  render() {
399
435
  var _a;
400
- return (index.h(index.Host, null, !this.showingInButton && index.h(customizedSlots.SlotSkeleton, null), index.h("vviinn-overlayed-modal", { class: { "first-screen": this.isOnboardingSlide() }, isFirstScreen: this.isOnboardingSlide(), active: this.active, resetState: this.resetState.bind(this), onVviinnWidgetClose: () => this.handleModalClose(), buttonElementId: (_a = this.buttonElementId) !== null && _a !== void 0 ? _a : this.id, widgetVersion: _package.version, hideBackButton: this.mode === "upload" && this.showingInButton, exportparts: "secondary-action, title, close-button" }, index.h("vviinn-slider", { showBullets: false, position: this.slidePosition }, index.h("vviinn-slide", { class: {
436
+ return (index.h(index.Host, null, !this.showingInButton && index.h(customizedSlots.SlotSkeleton, null), index.h("vviinn-overlayed-modal", { class: { "first-screen": this.isOnboardingSlide() }, isFirstScreen: this.isOnboardingSlide(), active: this.active, resetState: this.resetState.bind(this), onVviinnWidgetClose: () => this.handleModalClose(), buttonElementId: (_a = this.buttonElementId) !== null && _a !== void 0 ? _a : this.id, widgetVersion: _package.version, hideBackButton: (this.mode === "upload" && this.showingInButton) ||
437
+ (!this.cameraEnabled && this.isOnboardingSlide()), exportparts: "secondary-action, title, close-button" }, index.h("vviinn-slider", { showBullets: false, position: this.slidePosition }, index.h("vviinn-slide", { class: {
401
438
  "start-page": true,
402
439
  "camera-enabled": this.cameraEnabled,
403
- } }, index.h("vviinn-example-image", { onVviinnImageUploadFinished: () => this.handleImageSelection("example"), onVviinnImageUpload: () => {
404
- this.trackInitialSearch("example");
405
- }, onVviinnNoResult: () => this.resetScroll("start-page_block", "smooth"), basicEventData: this.getBasicEventData(), srcObject: this.stream, exampleImageSource: this.exampleImageSource }), index.h("div", { class: {
440
+ } }, index.h("vviinn-example-image", { onVviinnImageUploadFinished: this.handleVviinnImageUploadFinished, onVviinnImageUpload: () => {
441
+ this.handleVviinnImageUpload("startCamera");
442
+ }, basicEventData: this.getBasicEventData(), srcObject: this.stream, cameraButtonClicked: this.cameraButtonClicked, exampleImageSource: this.exampleImageSource }), index.h("div", { class: {
406
443
  error: this.haveErrors(),
407
- }, id: "start-page_block" }, index.h("div", { class: "start-page_main-content" }, index.h("div", { class: "start-page_errors-block" }, index.h("vviinn-wrong-format", { class: { hidden: !this.wrongImageFormat }, handler: () => this.resetState() }), index.h("vviinn-server-error", { class: { hidden: !imageSearch_store.imageSearchState.serverError }, handler: () => this.resetState() })), !this.haveErrors() && index.h("vviinn-teaser", null), !this.haveErrors() && (index.h("div", { class: "buttons-group" }, this.cameraAvailable && (index.h("button", { class: "action-button", onClick: this.handleCameraClick }, index.h("span", { class: "action-button-content" }, index.h(index$2.CameraActionIcon, null), index.h("slot", { name: "vviinn-camera-button-text" }, index.h("span", null, i18next.instance.t("cameraButtonText")))))), index.h("vviinn-image-selector", { class: "action-button", onVviinnImageUploadFinished: () => {
408
- this.handleImageSelection("upload");
409
- if (this.mode === "upload" && this.showingInButton) {
410
- this.active = true;
411
- }
412
- }, onVviinnImageUpload: () => {
413
- this.trackInitialSearch("upload");
414
- }, onVviinnNoResult: ({ detail }) => {
415
- if (detail.reason === "client") {
416
- this.wrongImageFormat = true;
417
- }
418
- }, resetVpsButton: this.resetVpsButton, basicEventData: this.getBasicEventData(), part: "select-image_button", startUpload: this.buttonPressed &&
444
+ }, id: "start-page_block" }, index.h("div", { class: "start-page_main-content" }, index.h("div", { class: {
445
+ "start-page_errors-block": true,
446
+ hidden: !this.wrongImageFormat && !imageSearch_store.imageSearchState.serverError,
447
+ } }, index.h("vviinn-wrong-format", { class: { hidden: !this.wrongImageFormat }, handler: () => this.resetState() }), index.h("vviinn-server-error", { class: { hidden: !imageSearch_store.imageSearchState.serverError }, handler: () => this.resetState() })), !this.haveErrors() && index.h("vviinn-teaser", null), !this.haveErrors() && (index.h("div", { class: "buttons-group" }, this.cameraAvailable &&
448
+ (this.isTabletOrMobile ? (index.h("vviinn-image-selector", { class: "action-button", part: "start-camera_button", accept: "image", capture: "environment", onVviinnNoResult: ({ detail }) => this.handleVviinnNoResult(detail), onVviinnImageUpload: () => {
449
+ this.handleVviinnImageUpload("startCamera");
450
+ }, onVviinnImageUploadFinished: this.handleVviinnImageUploadFinished, resetVpsButton: this.resetVpsButton, basicEventData: this.getBasicEventData(), startUpload: this.buttonPressed &&
451
+ this.showingInButton &&
452
+ this.mode === "upload", loading: imageSearch_store.imageSearchState.loading &&
453
+ this.uploadSource === "startCamera" }, index.h("span", { slot: "upload-button-text", class: "action-button-content" }, index.h(index$2.CameraActionIcon, null), index.h("slot", { name: "vviinn-camera-button-text-start" }, index.h("span", null, i18next.instance.t("cameraButtonTextStart")))))) : (index.h("button", { class: "action-button", part: "start-camera_button", onClick: () => {
454
+ this.handleStartCameraClick();
455
+ this.uploadSource = "startCamera";
456
+ } }, imageSearch_store.imageSearchState.loading &&
457
+ this.uploadSource === "startCamera" ? (index.h("vviinn-preloader", null)) : (index.h("span", { class: "action-button-content" }, index.h(index$2.CameraActionIcon, null), this.cameraEnabled ? (index.h("slot", { name: "vviinn-camera-button-text-stop" }, index.h("span", null, i18next.instance.t("cameraButtonTextStop")))) : (index.h("slot", { name: "vviinn-camera-button-text-start" }, index.h("span", null, i18next.instance.t("cameraButtonTextStart"))))))))), this.isTabletOrMobile && (index.h("vviinn-image-selector", { class: "action-button", accept: "application-octet-stream", onClick: () => (this.uploadSource = "showFiles"), onVviinnImageUpload: () => {
458
+ this.handleVviinnImageUpload("showFiles");
459
+ }, onVviinnImageUploadFinished: this.handleVviinnImageUploadFinished, onVviinnNoResult: ({ detail }) => this.handleVviinnNoResult(detail), resetVpsButton: this.resetVpsButton, basicEventData: this.getBasicEventData(), part: "show-files_button", startUpload: this.buttonPressed &&
460
+ this.showingInButton &&
461
+ this.mode === "upload", loading: imageSearch_store.imageSearchState.loading &&
462
+ this.uploadSource === "showFiles" }, index.h("span", { slot: "upload-button-text", class: "action-button-content" }, index.h(index$2.GalleryActionIcon, null), index.h("slot", { name: "vviinn-show-files-button-text" }, index.h("span", null, i18next.instance.t("showFilesButtonText")))))), index.h("vviinn-image-selector", { class: "action-button", onClick: () => (this.uploadSource = "uploadPhoto"), onVviinnImageUploadFinished: this.handleVviinnImageUploadFinished, onVviinnImageUpload: () => {
463
+ this.handleVviinnImageUpload("uploadPhoto");
464
+ }, onVviinnNoResult: ({ detail }) => this.handleVviinnNoResult(detail), resetVpsButton: this.resetVpsButton, basicEventData: this.getBasicEventData(), part: "upload-photo_button", startUpload: this.buttonPressed &&
419
465
  this.showingInButton &&
420
- this.mode === "upload" }, index.h("span", { slot: "upload-button-text", class: "action-button-content" }, index.h(index$2.UploadActionIcon, null), index.h("slot", { name: "vviinn-image-upload-button-text" }, index.h("span", null, i18next.instance.t("imageUploadButtonText")))))))), index.h("vviinn-privacy-badge", { privacyBadgeText: i18next.instance.t("privacyBadgeText"), class: { visible: this.haveErrors() } }))), index.h("vviinn-slide", { class: {
466
+ this.mode === "upload", loading: imageSearch_store.imageSearchState.loading &&
467
+ this.uploadSource === "uploadPhoto" }, index.h("span", { slot: "upload-button-text", class: "action-button-content" }, index.h(index$2.UploadActionIcon, null), index.h("slot", { name: "vviinn-image-upload-button-text" }, index.h("span", null, i18next.instance.t("imageUploadButtonText")))))))), index.h("vviinn-privacy-badge", { privacyBadgeText: i18next.instance.t("privacyBadgeText"), class: { invisible: this.haveErrors() } }))), index.h("vviinn-slide", { class: {
421
468
  "results-page": true,
422
469
  active: this.isResultSlide(),
423
470
  } }, index.h("div", { class: "image-wrapper" }, this.isResultSlide() && (index.h("vviinn-image-view", { basicEventData: this.getBasicEventData() })), index.h("div", { class: "filters-wrapper" }, index.h("div", { class: "filters" }, imageSearch_store.imageSearchState.filters.map((filter) => (index.h("search-filters", { filter: filter, basicEventData: this.getBasicEventData() })))))), index.h("div", { id: "results-block", class: "products-wrapper" }, index.h("div", { class: {