@wewear/virtual-try-on 3.1.1 → 3.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.esm.js CHANGED
@@ -509,7 +509,7 @@ class VirtualTryOnWidget {
509
509
  modelTier: this.config.modelTier,
510
510
  outfitID: this.config.outfitID,
511
511
  });
512
- const photoUploadUrl = this.buildPhotoUploadUrl(this.preparedTryOnData.productImages, { startAtConfirm: true });
512
+ const photoUploadUrl = this.buildPhotoUploadUrl(this.preparedTryOnData.productImages);
513
513
  this.showPhotoUploadModal(photoUploadUrl.toString(), {
514
514
  prefillImage: this.lastModelImage,
515
515
  autoSubmit: true,
@@ -587,17 +587,13 @@ class VirtualTryOnWidget {
587
587
  window.prompt("Copy this link to share your virtual try-on:", shareUrl);
588
588
  }
589
589
  }
590
- buildPhotoUploadUrl(productImages, options) {
590
+ buildPhotoUploadUrl(productImages) {
591
591
  const photoUploadUrl = new URL(`${this.config.baseUrl}`);
592
592
  photoUploadUrl.searchParams.append("ww_product_images", productImages.join(","));
593
593
  if (this.config.outfitID) {
594
594
  photoUploadUrl.searchParams.append("ww_outfit_id", this.config.outfitID);
595
595
  }
596
596
  photoUploadUrl.searchParams.append("ww_user_brand", window.location.href);
597
- if (options === null || options === void 0 ? void 0 : options.startAtConfirm) {
598
- photoUploadUrl.searchParams.append("ww_step", "2");
599
- photoUploadUrl.searchParams.append("ww_regenerate", "1");
600
- }
601
597
  return photoUploadUrl;
602
598
  }
603
599
  getAllProductImages() {
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm.js","sources":["../src/constants.ts","../src/utils.ts","../src/components/button.ts","../src/widget/modal-manager.ts","../src/widget/vto-api-client.ts","../src/widget.ts","../src/installer.ts"],"sourcesContent":["export const CSS_CLASSES = {\n\tBUTTON_CONTAINER: \"wewear-vto-button-container\",\n\tBUTTON: \"wewear-vto-button\",\n\tMODAL: \"wewear-vto-modal\",\n};\n\nexport const Z_INDEX = {\n\tBUTTON: 10,\n};\n","export function getPositionStyles(position: string): string {\n\tswitch (position) {\n\t\tcase \"bottom-left\":\n\t\t\treturn \"left: 20px; bottom: 20px;\";\n\t\tcase \"top-right\":\n\t\t\treturn \"right: 20px; top: 20px;\";\n\t\tcase \"top-left\":\n\t\t\treturn \"left: 20px; top: 20px;\";\n\t\tdefault:\n\t\t\treturn \"right: 20px; bottom: 20px;\";\n\t}\n}\n","import { CSS_CLASSES, Z_INDEX } from \"../constants.js\";\nimport { getPositionStyles } from \"../utils.js\";\n\nconst CAMERA_ICON = `\n\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"display: block;\">\n\t\t<path d=\"M14.5 4h-5L7 7H4a2 2 0 0 0-2 2v9a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2h-3l-2.5-3z\"></path>\n\t\t<circle cx=\"12\" cy=\"13\" r=\"3\"></circle>\n\t</svg>\n`;\n\nconst SPARKLES_ICON = `\n\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"display: block; flex-shrink: 0;\">\n\t\t<path d=\"M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z\"/>\n\t\t<path d=\"M20 2v4\"/>\n\t\t<path d=\"M22 4h-4\"/>\n\t\t<circle cx=\"4\" cy=\"20\" r=\"2\"/>\n\t</svg>\n`;\n\nconst REFRESH_ICON = `\n\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"display: block;\">\n\t\t<path d=\"M21 12a9 9 0 0 0-9-9 9.75 9.75 0 0 0-6.74 2.74L3 8\"></path>\n\t\t<path d=\"M3 3v5h5\"></path>\n\t\t<path d=\"M3 12a9 9 0 0 0 9 9 9.75 9.75 0 0 0 6.74-2.74L21 16\"></path>\n\t\t<path d=\"M16 16h5v5\"></path>\n\t</svg>\n`;\n\nconst SAVE_ICON = `\n\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"display: block;\">\n\t\t<path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\"></path>\n\t\t<polyline points=\"7 10 12 15 17 10\"></polyline>\n\t\t<line x1=\"12\" y1=\"15\" x2=\"12\" y2=\"3\"></line>\n\t</svg>\n`;\n\nconst SHARE_ICON = `\n\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"display: block;\">\n\t\t<circle cx=\"18\" cy=\"5\" r=\"3\"></circle>\n\t\t<circle cx=\"6\" cy=\"12\" r=\"3\"></circle>\n\t\t<circle cx=\"18\" cy=\"19\" r=\"3\"></circle>\n\t\t<line x1=\"8.59\" y1=\"13.51\" x2=\"15.42\" y2=\"17.49\"></line>\n\t\t<line x1=\"15.41\" y1=\"6.51\" x2=\"8.59\" y2=\"10.49\"></line>\n\t</svg>\n`;\n\nconst CONTAINER_STYLE = `\n\tposition: absolute;\n\tdisplay: flex;\n\tgap: 4px;\n\tborder-radius: 100px;\n\tbackground: white;\n\tpadding: 4px;\n\tbox-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n\tz-index: ${Z_INDEX.BUTTON};\n\ttransition: all 0.2s ease;\n`;\n\nconst ICON_BUTTON_STYLE = `\n\tdisplay: flex;\n\twidth: 40px;\n\theight: 40px;\n\tcursor: pointer;\n\talign-items: center;\n\tjustify-content: center;\n\tborder-radius: 100px;\n\tpadding: 0;\n\tborder: none;\n\ttransition: all 0.2s ease;\n\tflex-shrink: 0;\n`;\n\nconst PRIMARY_STYLE = `${ICON_BUTTON_STYLE}\n\tbackground: white;\n\tcolor: #000000;\n`;\n\nconst CAMERA_HIGHLIGHT_STYLE = `${ICON_BUTTON_STYLE}\n\tbackground: white;\n\tcolor: #333333;\n`;\n\nfunction createIconButton(\n\tclassName: string,\n\tariaLabel: string,\n\ticonHtml: string,\n\tstyleCss: string,\n\tonClick: () => void,\n): HTMLButtonElement {\n\tconst button = document.createElement(\"button\");\n\tbutton.type = \"button\";\n\tbutton.className = className;\n\tbutton.setAttribute(\"aria-label\", ariaLabel);\n\tbutton.style.cssText = styleCss;\n\tbutton.innerHTML = iconHtml;\n\tbutton.onclick = onClick;\n\treturn button;\n}\n\nexport function createButtonContainer(\n\tbuttonPosition: string,\n\thasVirtualTryOn: boolean = false,\n\tonCameraClick: () => void,\n\tonRefreshClick?: () => void,\n\tonToggleClick?: () => void,\n\tisShowingVirtualTryOn: boolean = false,\n\tonSaveClick?: () => void,\n\tonShareClick?: () => void,\n): HTMLElement {\n\tconst container = document.createElement(\"div\");\n\tcontainer.className = `${CSS_CLASSES.BUTTON_CONTAINER} ww-button-group`;\n\n\tconst positionStyles = hasVirtualTryOn\n\t\t? \"right: 20px; top: 20px;\"\n\t\t: getPositionStyles(buttonPosition);\n\tconst directionStyles = hasVirtualTryOn\n\t\t? \"flex-direction: column;\"\n\t\t: \"flex-direction: row;\";\n\tcontainer.style.cssText = `${CONTAINER_STYLE} ${positionStyles} ${directionStyles}`;\n\n\tconst cameraButton = hasVirtualTryOn\n\t\t? createIconButton(\n\t\t\t\t`${CSS_CLASSES.BUTTON} ww-camera-btn`,\n\t\t\t\t\"Virtual Try-On\",\n\t\t\t\tCAMERA_ICON,\n\t\t\t\tCAMERA_HIGHLIGHT_STYLE,\n\t\t\t\tonCameraClick,\n\t\t\t)\n\t\t: createIconButton(\n\t\t\t\t`${CSS_CLASSES.BUTTON} ww-camera-btn`,\n\t\t\t\t\"Virtual Try-On\",\n\t\t\t\t`${SPARKLES_ICON}<span style=\"display: block;\">TRY THIS LOOK</span>`,\n\t\t\t\t`${PRIMARY_STYLE}\n\t\t\t\t\tpadding: 10px 16px;\n\t\t\t\t\tgap: 8px;\n\t\t\t\t\tfont-size: 14px;\n\t\t\t\t\tfont-weight: 600;\n\t\t\t\t\twhite-space: nowrap;\n\t\t\t\t\twidth: auto;\n\t\t\t\t\theight: auto;\n\t\t\t\t`,\n\t\t\t\tonCameraClick,\n\t\t\t);\n\tif (hasVirtualTryOn && onSaveClick) {\n\t\tconst saveButton = createIconButton(\n\t\t\t\"ww-save-btn\",\n\t\t\t\"Save virtual try-on image\",\n\t\t\tSAVE_ICON,\n\t\t\t`${ICON_BUTTON_STYLE}\n\t\t\t\tbackground: white;\n\t\t\t\tcolor: #333333;\n\t\t\t`,\n\t\t\tonSaveClick,\n\t\t);\n\t\tcontainer.appendChild(saveButton);\n\t}\n\n\tif (hasVirtualTryOn && onShareClick) {\n\t\tconst shareButton = createIconButton(\n\t\t\t\"ww-share-btn\",\n\t\t\t\"Share virtual try-on image\",\n\t\t\tSHARE_ICON,\n\t\t\t`${ICON_BUTTON_STYLE}\n\t\t\t\tbackground: white;\n\t\t\t\tcolor: #333333;\n\t\t\t`,\n\t\t\tonShareClick,\n\t\t);\n\t\tcontainer.appendChild(shareButton);\n\t}\n\n\tcontainer.appendChild(cameraButton);\n\n\tif (hasVirtualTryOn) {\n\t\tif (onRefreshClick) {\n\t\t\tconst refreshButton = createIconButton(\n\t\t\t\t\"ww-refresh-btn\",\n\t\t\t\t\"Refresh virtual try-on\",\n\t\t\t\tREFRESH_ICON,\n\t\t\t\t`${ICON_BUTTON_STYLE}\n\t\t\t\t\tbackground: white;\n\t\t\t\t\tcolor: #333333;\n\t\t\t\t`,\n\t\t\t\tonRefreshClick,\n\t\t\t);\n\t\t\tcontainer.appendChild(refreshButton);\n\t\t}\n\n\t\tif (onToggleClick) {\n\t\t\tconst toggleButton = createIconButton(\n\t\t\t\t\"ww-toggle-btn\",\n\t\t\t\tisShowingVirtualTryOn ? \"Show Original Image\" : \"Show Virtual Try-On\",\n\t\t\t\tSPARKLES_ICON,\n\t\t\t\t`${ICON_BUTTON_STYLE}\n\t\t\t\t\tbackground: ${isShowingVirtualTryOn ? \"#333333\" : \"#e5e7eb\"};\n\t\t\t\t\tcolor: ${isShowingVirtualTryOn ? \"white\" : \"#333333\"};\n\t\t\t\t`,\n\t\t\t\tonToggleClick,\n\t\t\t);\n\n\t\t\ttoggleButton.onmouseover = () => {\n\t\t\t\tif (isShowingVirtualTryOn) {\n\t\t\t\t\ttoggleButton.style.background = \"#4a4a4a\";\n\t\t\t\t} else {\n\t\t\t\t\ttoggleButton.style.background = \"#d1d5db\";\n\t\t\t\t}\n\t\t\t};\n\t\t\ttoggleButton.onmouseout = () => {\n\t\t\t\tif (isShowingVirtualTryOn) {\n\t\t\t\t\ttoggleButton.style.background = \"#333333\";\n\t\t\t\t} else {\n\t\t\t\t\ttoggleButton.style.background = \"#e5e7eb\";\n\t\t\t\t}\n\t\t\t};\n\n\t\t\ttoggleButton.onclick = onToggleClick;\n\t\t\tcontainer.appendChild(toggleButton);\n\t\t}\n\t}\n\n\treturn container;\n}\n\nexport function createButton(\n\tbuttonPosition: string,\n\tonClick: () => void,\n\tdisabled: boolean = false,\n): HTMLElement {\n\tconst container = createButtonContainer(buttonPosition, false, onClick);\n\tconst cameraButton = container.querySelector(\n\t\t\".ww-camera-btn\",\n\t) as HTMLButtonElement;\n\tif (cameraButton) {\n\t\tcameraButton.disabled = disabled;\n\t\tif (disabled) {\n\t\t\tcameraButton.style.opacity = \"0.5\";\n\t\t\tcameraButton.style.cursor = \"not-allowed\";\n\t\t\tcameraButton.title = \"Find your ideal size first\";\n\t\t}\n\t}\n\treturn container;\n}\n","import { CSS_CLASSES } from \"../constants.js\";\n\nexport type ModalControlMessageType =\n\t| \"VTO_SCAN_START\"\n\t| \"VTO_SCAN_STOP\"\n\t| \"VTO_SCAN_COMPLETE\";\n\nexport interface ModalOpenOptions {\n\tprefillImage?: Blob;\n\tautoSubmit?: boolean;\n}\n\ninterface PendingModalPrefill {\n\timage: Blob;\n\tautoSubmit: boolean;\n}\n\nexport class ModalManager {\n\tprivate modalElement: HTMLElement | null = null;\n\tprivate pendingModalPrefill: PendingModalPrefill | null = null;\n\tprivate modalOrigin: string;\n\n\tconstructor(baseUrl: string) {\n\t\tthis.modalOrigin = new URL(baseUrl).origin;\n\t}\n\n\topen(\n\t\turl: string,\n\t\toptions: ModalOpenOptions | undefined,\n\t\tonClose: () => void,\n\t) {\n\t\tthis.close();\n\t\tthis.modalOrigin = new URL(url).origin;\n\t\tthis.pendingModalPrefill = options?.prefillImage\n\t\t\t? {\n\t\t\t\t\timage: options.prefillImage,\n\t\t\t\t\tautoSubmit: options.autoSubmit === true,\n\t\t\t\t}\n\t\t\t: null;\n\n\t\tconst modal = document.createElement(\"div\");\n\t\tmodal.className = CSS_CLASSES.MODAL;\n\t\tmodal.style.cssText = `\n\t\t\tposition: fixed;\n\t\t\ttop: 0;\n\t\t\tleft: 0;\n\t\t\tright: 0;\n\t\t\tbottom: 0;\n\t\t\twidth: 100%;\n\t\t\theight: 100%;\n\t\t\tbackground-color: rgba(0, 0, 0, 0.8);\n\t\t\tdisplay: flex;\n\t\t\tjustify-content: center;\n\t\t\talign-items: center;\n\t\t\tz-index: 999999999;\n\t\t\tanimation: ww-modal-fade-in 0.3s ease;\n\t\t`;\n\n\t\tif (!document.getElementById(\"ww-modal-animation\")) {\n\t\t\tconst style = document.createElement(\"style\");\n\t\t\tstyle.id = \"ww-modal-animation\";\n\t\t\tstyle.textContent = `\n\t\t\t\t@keyframes ww-modal-fade-in {\n\t\t\t\t\tfrom { opacity: 0; }\n\t\t\t\t\tto { opacity: 1; }\n\t\t\t\t}\n\t\t\t\t@keyframes ww-modal-scale-in {\n\t\t\t\t\tfrom { transform: scale(0.95); opacity: 0; }\n\t\t\t\t\tto { transform: scale(1); opacity: 1; }\n\t\t\t\t}\n\t\t\t`;\n\t\t\tdocument.head.appendChild(style);\n\t\t}\n\n\t\tconst iframeContainer = document.createElement(\"div\");\n\t\tiframeContainer.style.cssText = `\n\t\t\tposition: relative;\n\t\t\twidth: 90%;\n\t\t\theight: 90%;\n\t\t\tmax-width: 480px;\n\t\t\tmax-height: 720px;\n\t\t\tborder-radius: 20px;\n\t\t\toverflow: hidden;\n\t\t\tbox-shadow: 0 24px 48px rgba(0, 0, 0, 0.3), 0 12px 24px rgba(0, 0, 0, 0.2);\n\t\t\tanimation: ww-modal-scale-in 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n\t\t\tbackground: white;\n\t\t`;\n\n\t\tconst iframe = document.createElement(\"iframe\");\n\t\tiframe.src = url;\n\t\tiframe.style.cssText = `\n\t\t\twidth: 100%;\n\t\t\theight: 100%;\n\t\t\tborder: none;\n\t\t`;\n\n\t\tconst closeButton = document.createElement(\"button\");\n\t\tcloseButton.innerHTML = `\n\t\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n\t\t\t\t<line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"></line>\n\t\t\t\t<line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"></line>\n\t\t\t</svg>\n\t\t`;\n\t\tcloseButton.setAttribute(\"aria-label\", \"Close modal\");\n\t\tcloseButton.style.cssText = `\n\t\t\tposition: absolute;\n\t\t\ttop: -48px;\n\t\t\tright: 0;\n\t\t\tbackground: rgba(255, 255, 255, 0.95);\n\t\t\tbackdrop-filter: blur(8px);\n\t\t\t-webkit-backdrop-filter: blur(8px);\n\t\t\tborder: none;\n\t\t\tborder-radius: 50%;\n\t\t\twidth: 40px;\n\t\t\theight: 40px;\n\t\t\tcursor: pointer;\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t\tjustify-content: center;\n\t\t\tcolor: #1f2937;\n\t\t\ttransition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n\t\t\tbox-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);\n\t\t`;\n\t\tcloseButton.onmouseover = () => {\n\t\t\tcloseButton.style.transform = \"scale(1.1) rotate(90deg)\";\n\t\t\tcloseButton.style.background = \"#ef4444\";\n\t\t\tcloseButton.style.color = \"white\";\n\t\t};\n\t\tcloseButton.onmouseout = () => {\n\t\t\tcloseButton.style.transform = \"scale(1) rotate(0deg)\";\n\t\t\tcloseButton.style.background = \"rgba(255, 255, 255, 0.95)\";\n\t\t\tcloseButton.style.color = \"#1f2937\";\n\t\t};\n\t\tcloseButton.onclick = () => {\n\t\t\tmodal.style.opacity = \"0\";\n\t\t\tiframeContainer.style.transform = \"scale(0.95)\";\n\t\t\tiframeContainer.style.opacity = \"0\";\n\t\t\tsetTimeout(onClose, 300);\n\t\t};\n\n\t\tiframeContainer.appendChild(iframe);\n\t\tiframeContainer.appendChild(closeButton);\n\t\tmodal.appendChild(iframeContainer);\n\t\tdocument.body.appendChild(modal);\n\n\t\tmodal.onclick = (e) => {\n\t\t\tif (e.target === modal) {\n\t\t\t\tcloseButton.click();\n\t\t\t}\n\t\t};\n\n\t\tthis.modalElement = modal;\n\t}\n\n\tclose() {\n\t\tif (this.modalElement) {\n\t\t\tthis.modalElement.remove();\n\t\t\tthis.modalElement = null;\n\t\t}\n\t\tthis.pendingModalPrefill = null;\n\t}\n\n\tsendPendingPrefillToModal() {\n\t\tif (!this.pendingModalPrefill || !this.modalElement) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst iframe = this.modalElement.querySelector(\"iframe\");\n\t\tif (!(iframe instanceof HTMLIFrameElement) || !iframe.contentWindow) {\n\t\t\treturn;\n\t\t}\n\n\t\tiframe.contentWindow.postMessage(\n\t\t\t{\n\t\t\t\ttype: \"VTO_PREFILL_IMAGE\",\n\t\t\t\timage: this.pendingModalPrefill.image,\n\t\t\t\tautoSubmit: this.pendingModalPrefill.autoSubmit,\n\t\t\t},\n\t\t\tthis.modalOrigin,\n\t\t);\n\t\t// Fallback for production setups where iframe origin differs after redirects.\n\t\tiframe.contentWindow.postMessage(\n\t\t\t{\n\t\t\t\ttype: \"VTO_PREFILL_IMAGE\",\n\t\t\t\timage: this.pendingModalPrefill.image,\n\t\t\t\tautoSubmit: this.pendingModalPrefill.autoSubmit,\n\t\t\t},\n\t\t\t\"*\",\n\t\t);\n\t\tthis.pendingModalPrefill = null;\n\t}\n\n\tpostMessageToModal(type: ModalControlMessageType) {\n\t\tif (!this.modalElement) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst iframe = this.modalElement.querySelector(\"iframe\");\n\t\tif (!(iframe instanceof HTMLIFrameElement) || !iframe.contentWindow) {\n\t\t\treturn;\n\t\t}\n\n\t\tiframe.contentWindow.postMessage({ type }, this.modalOrigin);\n\t\t// Fallback for production setups where iframe origin differs after redirects.\n\t\tiframe.contentWindow.postMessage({ type }, \"*\");\n\t}\n}\n","export type JobStatus = \"PENDING\" | \"COMPLETED\" | \"FAILED\";\n\nexport interface JobStatusResponse {\n\tstatus: JobStatus;\n\tmessage: string;\n}\n\ninterface SubmitTryOnOptions {\n\tmodelTier: string;\n\toutfitID: string;\n}\n\nexport interface PreparedTryOnData {\n\tmodelTier: string;\n\toutfitID: string;\n\tproductImages: string[];\n\tgeminiModel: string | null;\n\tadditionalPrompt: string | null;\n}\n\nexport class VtoApiClient {\n\tconstructor(private readonly baseUrl: string) {}\n\n\tasync submitTryOn(\n\t\tmodelImage: Blob,\n\t\tproductImages: string[],\n\t\toptions: SubmitTryOnOptions,\n\t\tpreparedData?: PreparedTryOnData,\n\t): Promise<{ job_id: string }> {\n\t\tconst resolved =\n\t\t\tpreparedData ?? (await this.prepareTryOnData(productImages, options));\n\n\t\tconst formData = new FormData();\n\t\tformData.append(\"model_image\", modelImage, \"model_image.png\");\n\t\tformData.append(\n\t\t\t\"product_image_urls\",\n\t\t\tJSON.stringify(resolved.productImages),\n\t\t);\n\t\tformData.append(\"page_url\", window.location.href);\n\t\tformData.append(\"model_tier\", resolved.modelTier);\n\t\tif (resolved.geminiModel)\n\t\t\tformData.append(\"gemini_model\", resolved.geminiModel);\n\t\tif (resolved.additionalPrompt) {\n\t\t\tformData.append(\"additional_prompt\", resolved.additionalPrompt);\n\t\t}\n\n\t\tif (resolved.outfitID) formData.append(\"outfit_id\", resolved.outfitID);\n\n\t\tconst res = await fetch(`${this.baseUrl}/api/vto`, {\n\t\t\tmethod: \"POST\",\n\t\t\tbody: formData,\n\t\t});\n\t\tif (!res.ok) {\n\t\t\tconst errorText = await res.text();\n\t\t\tconsole.error(\n\t\t\t\t\"[WeWear VTO] API submission failed:\",\n\t\t\t\tres.status,\n\t\t\t\terrorText,\n\t\t\t);\n\t\t\tthrow new Error(`API submission failed: ${res.status}`);\n\t\t}\n\t\treturn res.json();\n\t}\n\n\tasync prepareTryOnData(\n\t\tproductImages: string[],\n\t\toptions: SubmitTryOnOptions,\n\t): Promise<PreparedTryOnData> {\n\t\tconst outfitID = options.outfitID?.trim() ?? \"\";\n\n\t\treturn {\n\t\t\tmodelTier: options.modelTier,\n\t\t\toutfitID,\n\t\t\tproductImages,\n\t\t\tgeminiModel: null,\n\t\t\tadditionalPrompt: null,\n\t\t};\n\t}\n\n\tasync fetchJobStatus(jobId: string): Promise<JobStatusResponse> {\n\t\tconst res = await fetch(`${this.baseUrl}/api/vto/status?job_id=${jobId}`);\n\t\tif (!res.ok) throw new Error(`Status check failed: ${res.status}`);\n\t\treturn res.json();\n\t}\n\n\tasync fetchJobImage(jobId: string): Promise<string> {\n\t\tconst url = `${this.baseUrl}/api/vto/image?job_id=${jobId}`;\n\n\t\tconst res = await fetch(url);\n\t\tif (res.status === 202) throw new Error(\"202_PROCESSING\");\n\t\tif (!res.ok) throw new Error(`Image fetch failed: ${res.status}`);\n\n\t\tconst blob = await res.blob();\n\t\treturn URL.createObjectURL(blob);\n\t}\n}\n","import { createButton, createButtonContainer } from \"./components/index.js\";\nimport { CSS_CLASSES } from \"./constants.js\";\nimport type { VirtualTryOnConfig } from \"./index.js\";\nimport {\n\tModalManager,\n\ttype ModalControlMessageType,\n\ttype ModalOpenOptions,\n} from \"./widget/modal-manager.js\";\nimport {\n\tVtoApiClient,\n\ttype PreparedTryOnData,\n} from \"./widget/vto-api-client.js\";\n\nexport class VirtualTryOnWidget {\n\tprivate static instanceCounter = 0;\n\tprivate static activeWidgetId: number | null = null;\n\tprivate static readonly ERROR_TOAST_MESSAGE =\n\t\t\"Virtual try-on is temporarily unavailable due to high traffic on Google services. Please try again in a moment.\";\n\tprivate readonly config: VirtualTryOnConfig;\n\tprivate readonly instanceId: number;\n\tprivate virtualTryOnImageUrl: string | null = null;\n\tprivate originalProductImages: string[] = []; // Store all original product images\n\tprivate preparedTryOnData: PreparedTryOnData | null = null;\n\tprivate isShowingVirtualTryOn: boolean = false;\n\tprivate lastModelImage: Blob | null = null;\n\tprivate cameraButton: HTMLButtonElement | null = null;\n\tprivate readonly modal: ModalManager;\n\tprivate readonly vtoApiClient: VtoApiClient;\n\tprivate iframeMessageListener: ((event: MessageEvent) => void) | null = null;\n\n\tconstructor(config: VirtualTryOnConfig) {\n\t\tthis.instanceId = ++VirtualTryOnWidget.instanceCounter;\n\t\tthis.config = {\n\t\t\tbaseUrl: config.baseUrl,\n\t\t\tproductPageSelector: config.productPageSelector,\n\t\t\tgallerySelector: config.gallerySelector,\n\t\t\tproductImageSelector: config.productImageSelector,\n\t\t\tbuttonPosition: config.buttonPosition,\n\t\t\tmodelTier: config.modelTier,\n\t\t\toutfitID: config.outfitID,\n\t\t\tsingleton: config.singleton,\n\t\t\tgalleryElement: config.galleryElement,\n\t\t};\n\t\tthis.modal = new ModalManager(this.config.baseUrl);\n\t\tthis.vtoApiClient = new VtoApiClient(this.config.baseUrl);\n\t}\n\n\tprivate getContainer(): HTMLElement | null {\n\t\tconst configContainer = this.config.galleryElement;\n\t\tif (configContainer?.isConnected) {\n\t\t\treturn configContainer;\n\t\t}\n\n\t\tconst queriedContainer = document.querySelector(\n\t\t\tthis.config.gallerySelector,\n\t\t);\n\t\treturn queriedContainer instanceof HTMLElement ? queriedContainer : null;\n\t}\n\n\tpublic async init(): Promise<void> {\n\t\ttry {\n\t\t\tconst selectors = this.config.productPageSelector;\n\t\t\tconst currentPath = window.location.pathname;\n\t\t\tconst matches = selectors.some((sel) => currentPath.includes(sel));\n\t\t\tif (!matches) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst container = this.getContainer();\n\t\t\tif (!container) {\n\t\t\t\tconsole.warn(\n\t\t\t\t\t\"[WeWear VTO] Gallery container not found:\",\n\t\t\t\t\tthis.config.gallerySelector,\n\t\t\t\t);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (getComputedStyle(container).position === \"static\") {\n\t\t\t\tcontainer.style.position = \"relative\";\n\t\t\t}\n\n\t\t\tconst button = createButton(this.config.buttonPosition, async () => {\n\t\t\t\tif (this.cameraButton && !this.cameraButton.disabled) {\n\t\t\t\t\tawait this.handleTryOnClick();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.cameraButton = button.querySelector(\".ww-camera-btn\");\n\t\t\tcontainer.appendChild(button);\n\t\t\tconsole.log(\"[WeWear VTO] Widget initialized successfully\");\n\n\t\t\tthis.setupIframeListener();\n\t\t} catch (error) {\n\t\t\tconsole.error(\"[WeWear VTO] Initialization failed:\", error);\n\t\t}\n\t}\n\n\tprivate async handleTryOnClick(): Promise<void> {\n\t\tconsole.log(\"[WeWear VTO] Button clicked, starting try-on process...\");\n\n\t\ttry {\n\t\t\tif (this.originalProductImages.length === 0) {\n\t\t\t\tthis.originalProductImages = this.getAllProductImages();\n\t\t\t\tconsole.log(\n\t\t\t\t\t\"[WeWear VTO] Stored original product images:\",\n\t\t\t\t\tthis.originalProductImages,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconsole.log(\"[WeWear VTO] Retrieved data:\", {\n\t\t\t\tproductImages: this.originalProductImages,\n\t\t\t});\n\n\t\t\tif (this.originalProductImages.length === 0) {\n\t\t\t\tconsole.warn(\n\t\t\t\t\t\"[WeWear VTO] Product images not found:\",\n\t\t\t\t\tthis.config.productImageSelector,\n\t\t\t\t);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.preparedTryOnData = await this.vtoApiClient.prepareTryOnData(\n\t\t\t\tthis.originalProductImages,\n\t\t\t\t{\n\t\t\t\t\tmodelTier: this.config.modelTier,\n\t\t\t\t\toutfitID: this.config.outfitID,\n\t\t\t\t},\n\t\t\t);\n\n\t\t\tconst photoUploadUrl = this.buildPhotoUploadUrl(\n\t\t\t\tthis.preparedTryOnData.productImages,\n\t\t\t);\n\t\t\tthis.showPhotoUploadModal(photoUploadUrl.toString());\n\t\t} catch (error) {\n\t\t\tconsole.error(\"[WeWear VTO] Try-on request failed:\", error);\n\t\t}\n\t}\n\n\tprivate async handleRegenerateClick(): Promise<void> {\n\t\tif (!this.lastModelImage) {\n\t\t\tawait this.handleTryOnClick();\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.originalProductImages.length === 0) {\n\t\t\tthis.originalProductImages = this.getAllProductImages();\n\t\t}\n\n\t\tif (this.originalProductImages.length === 0) {\n\t\t\tconsole.warn(\"[WeWear VTO] No product images found for regenerate.\");\n\t\t\treturn;\n\t\t}\n\n\t\tthis.preparedTryOnData = await this.vtoApiClient.prepareTryOnData(\n\t\t\tthis.originalProductImages,\n\t\t\t{\n\t\t\t\tmodelTier: this.config.modelTier,\n\t\t\t\toutfitID: this.config.outfitID,\n\t\t\t},\n\t\t);\n\n\t\tconst photoUploadUrl = this.buildPhotoUploadUrl(\n\t\t\tthis.preparedTryOnData.productImages,\n\t\t\t{ startAtConfirm: true },\n\t\t);\n\t\tthis.showPhotoUploadModal(photoUploadUrl.toString(), {\n\t\t\tprefillImage: this.lastModelImage,\n\t\t\tautoSubmit: true,\n\t\t});\n\t}\n\n\tprivate async handleSaveClick(): Promise<void> {\n\t\tif (!this.virtualTryOnImageUrl) {\n\t\t\tconsole.warn(\"[WeWear VTO] No virtual try-on image available to save.\");\n\t\t\treturn;\n\t\t}\n\n\t\ttry {\n\t\t\tconst response = await fetch(this.virtualTryOnImageUrl);\n\t\t\tconst imageBlob = await response.blob();\n\t\t\tconst objectUrl = URL.createObjectURL(imageBlob);\n\n\t\t\tconst link = document.createElement(\"a\");\n\t\t\tlink.href = objectUrl;\n\t\t\tlink.download = `wewear-vto-${Date.now()}.png`;\n\t\t\tdocument.body.appendChild(link);\n\t\t\tlink.click();\n\t\t\tlink.remove();\n\t\t\tURL.revokeObjectURL(objectUrl);\n\t\t} catch (error) {\n\t\t\tconsole.error(\"[WeWear VTO] Failed to save virtual try-on image:\", error);\n\t\t\twindow.open(this.virtualTryOnImageUrl, \"_blank\");\n\t\t}\n\t}\n\n\tprivate async handleShareClick(): Promise<void> {\n\t\tif (!this.virtualTryOnImageUrl) {\n\t\t\tconsole.warn(\"[WeWear VTO] No virtual try-on image available to share.\");\n\t\t\treturn;\n\t\t}\n\n\t\tconst shareUrl = this.virtualTryOnImageUrl;\n\n\t\ttry {\n\t\t\tif (navigator.share && navigator.canShare) {\n\t\t\t\tconst response = await fetch(shareUrl);\n\t\t\t\tconst imageBlob = await response.blob();\n\t\t\t\tconst imageFile = new File([imageBlob], \"wewear-vto.png\", {\n\t\t\t\t\ttype: imageBlob.type || \"image/png\",\n\t\t\t\t});\n\n\t\t\t\tif (navigator.canShare({ files: [imageFile] })) {\n\t\t\t\t\tawait navigator.share({\n\t\t\t\t\t\ttitle: \"My virtual try-on look\",\n\t\t\t\t\t\ttext: \"Check out my virtual try-on look.\",\n\t\t\t\t\t\tfiles: [imageFile],\n\t\t\t\t\t});\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (navigator.share) {\n\t\t\t\tawait navigator.share({\n\t\t\t\t\ttitle: \"My virtual try-on look\",\n\t\t\t\t\ttext: \"Check out my virtual try-on look.\",\n\t\t\t\t\turl: shareUrl,\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconsole.error(\"[WeWear VTO] Native share failed:\", error);\n\t\t}\n\n\t\ttry {\n\t\t\tif (navigator.clipboard?.writeText) {\n\t\t\t\tawait navigator.clipboard.writeText(shareUrl);\n\t\t\t\twindow.alert(\"Virtual try-on link copied. You can paste it to share.\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconsole.error(\"[WeWear VTO] Clipboard copy failed:\", error);\n\t\t}\n\n\t\tconst newWindow = window.open(shareUrl, \"_blank\");\n\t\tif (!newWindow) {\n\t\t\twindow.prompt(\"Copy this link to share your virtual try-on:\", shareUrl);\n\t\t}\n\t}\n\n\tprivate buildPhotoUploadUrl(\n\t\tproductImages: string[],\n\t\toptions?: { startAtConfirm?: boolean },\n\t): URL {\n\t\tconst photoUploadUrl = new URL(`${this.config.baseUrl}`);\n\n\t\tphotoUploadUrl.searchParams.append(\n\t\t\t\"ww_product_images\",\n\t\t\tproductImages.join(\",\"),\n\t\t);\n\t\tif (this.config.outfitID) {\n\t\t\tphotoUploadUrl.searchParams.append(\"ww_outfit_id\", this.config.outfitID);\n\t\t}\n\t\tphotoUploadUrl.searchParams.append(\"ww_user_brand\", window.location.href);\n\t\tif (options?.startAtConfirm) {\n\t\t\tphotoUploadUrl.searchParams.append(\"ww_step\", \"2\");\n\t\t\tphotoUploadUrl.searchParams.append(\"ww_regenerate\", \"1\");\n\t\t}\n\t\treturn photoUploadUrl;\n\t}\n\n\tprivate getAllProductImages(): string[] {\n\t\tconst container = this.getContainer();\n\t\tconst scopedElements = container?.querySelectorAll(\n\t\t\tthis.config.productImageSelector,\n\t\t);\n\t\tconst fallbackElements = document.querySelectorAll(\n\t\t\tthis.config.productImageSelector,\n\t\t);\n\t\tconst productImageElements = (\n\t\t\tscopedElements?.length ? scopedElements : fallbackElements\n\t\t) as NodeListOf<HTMLImageElement>;\n\n\t\tconst images: string[] = [];\n\n\t\tproductImageElements.forEach((img) => {\n\t\t\tconst imageUrl =\n\t\t\t\timg.src ||\n\t\t\t\timg.getAttribute(\"data-src\") ||\n\t\t\t\timg.getAttribute(\"data-large_image\") ||\n\t\t\t\t\"\";\n\n\t\t\tif (\n\t\t\t\timageUrl &&\n\t\t\t\t(imageUrl.startsWith(\"http://\") || imageUrl.startsWith(\"https://\")) &&\n\t\t\t\t!images.includes(imageUrl)\n\t\t\t) {\n\t\t\t\timages.push(imageUrl);\n\t\t\t}\n\t\t});\n\n\t\treturn images;\n\t}\n\n\tprivate showPhotoUploadModal(url: string, options?: ModalOpenOptions): void {\n\t\tthis.closeModal();\n\t\tVirtualTryOnWidget.activeWidgetId = this.instanceId;\n\t\tthis.modal.open(url, options, () => this.closeModal());\n\t}\n\n\tprivate closeModal(): void {\n\t\tthis.modal.close();\n\t\tif (VirtualTryOnWidget.activeWidgetId === this.instanceId) {\n\t\t\tVirtualTryOnWidget.activeWidgetId = null;\n\t\t}\n\t}\n\n\tprivate showErrorToast(message: string): void {\n\t\tconst existingToast = document.getElementById(\"ww-vto-error-toast\");\n\t\tif (existingToast) {\n\t\t\texistingToast.remove();\n\t\t}\n\n\t\tconst toast = document.createElement(\"div\");\n\t\ttoast.id = \"ww-vto-error-toast\";\n\t\ttoast.setAttribute(\"role\", \"status\");\n\t\ttoast.setAttribute(\"aria-live\", \"polite\");\n\t\ttoast.style.cssText = `\n\t\t\tposition: fixed;\n\t\t\tleft: 50%;\n\t\t\tbottom: 24px;\n\t\t\ttransform: translateX(-50%);\n\t\t\tz-index: 2147483647;\n\t\t\tmax-width: min(92vw, 460px);\n\t\t\tpadding: 12px 14px;\n\t\t\tborder-radius: 12px;\n\t\t\tbackground: #ffffff;\n\t\t\tcolor: #111827;\n\t\t\tborder: 1px solid #e5e7eb;\n\t\t\tfont-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Arial, sans-serif;\n\t\t\tfont-size: 14px;\n\t\t\tline-height: 1.35;\n\t\t\tbox-shadow: 0 10px 32px rgba(0, 0, 0, 0.16);\n\t\t\topacity: 0;\n\t\t\ttransition: opacity 180ms ease;\n\t\t`;\n\n\t\tconst content = document.createElement(\"div\");\n\t\tcontent.style.cssText = `\n\t\t\tdisplay: flex;\n\t\t\talign-items: flex-start;\n\t\t\tgap: 10px;\n\t\t`;\n\n\t\tconst text = document.createElement(\"div\");\n\t\ttext.style.cssText = \"flex: 1;\";\n\t\ttext.textContent = message;\n\n\t\tconst closeButton = document.createElement(\"button\");\n\t\tcloseButton.type = \"button\";\n\t\tcloseButton.setAttribute(\"aria-label\", \"Close message\");\n\t\tcloseButton.textContent = \"Close\";\n\t\tcloseButton.style.cssText = `\n\t\t\tborder: none;\n\t\t\tbackground: transparent;\n\t\t\tcolor: #111827;\n\t\t\tfont-size: 12px;\n\t\t\tfont-weight: 600;\n\t\t\tcursor: pointer;\n\t\t\tpadding: 0;\n\t\t\tline-height: 1.2;\n\t\t\twhite-space: nowrap;\n\t\t`;\n\t\tcloseButton.onclick = () => {\n\t\t\ttoast.style.opacity = \"0\";\n\t\t\twindow.setTimeout(() => toast.remove(), 220);\n\t\t};\n\n\t\tcontent.appendChild(text);\n\t\tcontent.appendChild(closeButton);\n\t\ttoast.appendChild(content);\n\t\tdocument.body.appendChild(toast);\n\n\t\trequestAnimationFrame(() => {\n\t\t\ttoast.style.opacity = \"1\";\n\t\t});\n\t}\n\n\tprivate sendPendingPrefillToModal(): void {\n\t\tthis.modal.sendPendingPrefillToModal();\n\t}\n\n\tprivate postMessageToModal(type: ModalControlMessageType): void {\n\t\tthis.modal.postMessageToModal(type);\n\t}\n\n\tprivate setupIframeListener(): void {\n\t\tif (this.iframeMessageListener) {\n\t\t\twindow.removeEventListener(\"message\", this.iframeMessageListener);\n\t\t}\n\n\t\tthis.iframeMessageListener = (event: MessageEvent) => {\n\t\t\tif (VirtualTryOnWidget.activeWidgetId !== this.instanceId) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (event.origin !== new URL(this.config.baseUrl).origin) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tswitch (event.data.type) {\n\t\t\t\tcase \"VTO_CONFIRM_READY\":\n\t\t\t\t\tthis.sendPendingPrefillToModal();\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"VTO_IMAGE_SELECTED\":\n\t\t\t\t\tif (event.data.image) {\n\t\t\t\t\t\tthis.lastModelImage = event.data.image;\n\t\t\t\t\t\tthis.postMessageToModal(\"VTO_SCAN_START\");\n\t\t\t\t\t\tthis.startVirtualTryOn();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"CLOSE_MODAL\":\n\t\t\t\t\tthis.closeModal();\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t};\n\n\t\twindow.addEventListener(\"message\", this.iframeMessageListener);\n\t}\n\n\tprivate async startVirtualTryOn(isRefresh = false): Promise<void> {\n\t\tif (isRefresh) {\n\t\t\tconsole.log(\n\t\t\t\t\"[WeWear VTO] Refreshing virtual try-on with previous parameters...\",\n\t\t\t);\n\t\t}\n\n\t\tif (!this.lastModelImage) {\n\t\t\tconsole.warn(\n\t\t\t\t\"[WeWear VTO] Missing required data to start virtual try-on.\",\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.originalProductImages.length === 0) {\n\t\t\tthis.originalProductImages = this.getAllProductImages();\n\t\t}\n\n\t\tif (this.originalProductImages.length === 0) {\n\t\t\tconsole.warn(\"[WeWear VTO] No product images found.\");\n\t\t\treturn;\n\t\t}\n\n\t\tif (!this.preparedTryOnData) {\n\t\t\tthis.preparedTryOnData = await this.vtoApiClient.prepareTryOnData(\n\t\t\t\tthis.originalProductImages,\n\t\t\t\t{\n\t\t\t\t\tmodelTier: this.config.modelTier,\n\t\t\t\t\toutfitID: this.config.outfitID,\n\t\t\t\t},\n\t\t\t);\n\t\t}\n\n\t\tconst container = this.getContainer();\n\t\tlet shouldShowErrorToast = false;\n\n\t\ttry {\n\t\t\tconst submitResponse = await this.vtoApiClient.submitTryOn(\n\t\t\t\tthis.lastModelImage,\n\t\t\t\tthis.preparedTryOnData.productImages,\n\t\t\t\t{\n\t\t\t\t\tmodelTier: this.config.modelTier,\n\t\t\t\t\toutfitID: this.config.outfitID,\n\t\t\t\t},\n\t\t\t\tthis.preparedTryOnData,\n\t\t\t);\n\n\t\t\tlet status = await this.vtoApiClient.fetchJobStatus(\n\t\t\t\tsubmitResponse.job_id,\n\t\t\t);\n\n\t\t\twhile (status.status !== \"COMPLETED\" && status.status !== \"FAILED\") {\n\t\t\t\tawait new Promise((r) => setTimeout(r, 3000));\n\t\t\t\tstatus = await this.vtoApiClient.fetchJobStatus(submitResponse.job_id);\n\t\t\t}\n\n\t\t\tif (status.status === \"COMPLETED\") {\n\t\t\t\tconst finalImage = await this.vtoApiClient.fetchJobImage(\n\t\t\t\t\tsubmitResponse.job_id,\n\t\t\t\t);\n\t\t\t\tif (finalImage) {\n\t\t\t\t\tthis.postMessageToModal(\"VTO_SCAN_COMPLETE\");\n\t\t\t\t\tawait new Promise((r) => setTimeout(r, 500));\n\t\t\t\t\tthis.replaceProductImage(finalImage);\n\t\t\t\t}\n\t\t\t\tif (container instanceof HTMLElement) {\n\t\t\t\t\tthis.showButtonContainer(container);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (status.status === \"FAILED\") {\n\t\t\t\tconsole.error(\"[WeWear VTO] VTO process failed:\", status.message);\n\t\t\t\tshouldShowErrorToast = true;\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconsole.error(\"[WeWear VTO] Error during virtual try-on process:\", error);\n\t\t\tshouldShowErrorToast = true;\n\t\t} finally {\n\t\t\tthis.postMessageToModal(\"VTO_SCAN_STOP\");\n\t\t\tif (container instanceof HTMLElement) {\n\t\t\t\tthis.showButtonContainer(container);\n\t\t\t}\n\t\t\tif (shouldShowErrorToast) {\n\t\t\t\tthis.showErrorToast(VirtualTryOnWidget.ERROR_TOAST_MESSAGE);\n\t\t\t\tawait new Promise((r) => setTimeout(r, 500));\n\t\t\t}\n\t\t\tthis.closeModal();\n\t\t}\n\t}\n\n\tprivate replaceProductImage(imageUrl: string): void {\n\t\ttry {\n\t\t\tthis.virtualTryOnImageUrl = imageUrl;\n\n\t\t\tconst container = this.getContainer();\n\t\t\tif (!container) {\n\t\t\t\tconsole.warn(\n\t\t\t\t\t\"[WeWear VTO] Gallery container not found for image replacement:\",\n\t\t\t\t\tthis.config.gallerySelector,\n\t\t\t\t);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!container.hasAttribute(\"data-ww-original-content\")) {\n\t\t\t\tcontainer.setAttribute(\"data-ww-original-content\", container.innerHTML);\n\t\t\t}\n\n\t\t\tif (!container.hasAttribute(\"data-ww-container-locked\")) {\n\t\t\t\tconst containerRect = container.getBoundingClientRect();\n\n\t\t\t\tcontainer.setAttribute(\n\t\t\t\t\t\"data-ww-container-width\",\n\t\t\t\t\tcontainerRect.width.toString(),\n\t\t\t\t);\n\t\t\t\tcontainer.setAttribute(\n\t\t\t\t\t\"data-ww-container-height\",\n\t\t\t\t\tcontainerRect.height.toString(),\n\t\t\t\t);\n\n\t\t\t\tcontainer.style.width = `${containerRect.width}px`;\n\t\t\t\tcontainer.style.height = `${containerRect.height}px`;\n\t\t\t\tcontainer.style.minWidth = `${containerRect.width}px`;\n\t\t\t\tcontainer.style.minHeight = `${containerRect.height}px`;\n\n\t\t\t\tcontainer.style.paddingBottom = \"0\";\n\n\t\t\t\tcontainer.setAttribute(\"data-ww-container-locked\", \"true\");\n\t\t\t}\n\n\t\t\tconst originalImg = container.querySelector(\"img\");\n\t\t\tif (\n\t\t\t\toriginalImg &&\n\t\t\t\t!container.hasAttribute(\"data-ww-original-dimensions\")\n\t\t\t) {\n\t\t\t\tconst computedStyle = window.getComputedStyle(originalImg);\n\t\t\t\tconst rect = originalImg.getBoundingClientRect();\n\t\t\t\tcontainer.setAttribute(\"data-ww-original-width\", computedStyle.width);\n\t\t\t\tcontainer.setAttribute(\"data-ww-original-height\", computedStyle.height);\n\t\t\t\tcontainer.setAttribute(\n\t\t\t\t\t\"data-ww-original-rect-width\",\n\t\t\t\t\trect.width.toString(),\n\t\t\t\t);\n\t\t\t\tcontainer.setAttribute(\n\t\t\t\t\t\"data-ww-original-rect-height\",\n\t\t\t\t\trect.height.toString(),\n\t\t\t\t);\n\t\t\t\tcontainer.setAttribute(\"data-ww-original-dimensions\", \"true\");\n\t\t\t}\n\n\t\t\tthis.showVirtualTryOnImage(container);\n\n\t\t\tthis.updateButtonContainer(container);\n\n\t\t\tconsole.log(\n\t\t\t\t\"[WeWear VTO] Product image replaced with virtual try-on result\",\n\t\t\t);\n\t\t} catch (error) {\n\t\t\tconsole.error(\"[WeWear VTO] Error replacing product image:\", error);\n\t\t}\n\t}\n\n\tprivate showButtonContainer(container: HTMLElement): void {\n\t\tconst buttonContainer = container.querySelector(\n\t\t\t`.${CSS_CLASSES.BUTTON_CONTAINER}`,\n\t\t) as HTMLElement;\n\t\tif (buttonContainer) {\n\t\t\tbuttonContainer.style.display = \"flex\";\n\t\t}\n\t}\n\n\tprivate updateButtonContainer(container: HTMLElement): void {\n\t\tconst existingButtons = container.querySelectorAll(\n\t\t\t`.${CSS_CLASSES.BUTTON_CONTAINER}`,\n\t\t);\n\t\texistingButtons.forEach((btn) => {\n\t\t\tbtn.remove();\n\t\t});\n\n\t\tconst buttonContainer = createButtonContainer(\n\t\t\tthis.config.buttonPosition,\n\t\t\tthis.virtualTryOnImageUrl !== null,\n\t\t\tasync () => {\n\t\t\t\tawait this.handleTryOnClick();\n\t\t\t},\n\t\t\tasync () => {\n\t\t\t\tawait this.handleRegenerateClick();\n\t\t\t},\n\t\t\t() => {\n\t\t\t\tif (this.isShowingVirtualTryOn) {\n\t\t\t\t\tthis.showOriginalImage(container);\n\t\t\t\t} else {\n\t\t\t\t\tthis.showVirtualTryOnImage(container);\n\t\t\t\t}\n\t\t\t\tthis.updateButtonContainer(container);\n\t\t\t},\n\t\t\tthis.isShowingVirtualTryOn,\n\t\t\tasync () => {\n\t\t\t\tawait this.handleSaveClick();\n\t\t\t},\n\t\t\tasync () => {\n\t\t\t\tawait this.handleShareClick();\n\t\t\t},\n\t\t);\n\n\t\tcontainer.appendChild(buttonContainer);\n\t}\n\n\tprivate showVirtualTryOnImage(container: HTMLElement): void {\n\t\tif (!this.virtualTryOnImageUrl) {\n\t\t\tconsole.warn(\"[WeWear VTO] No virtual try-on image URL available\");\n\t\t\treturn;\n\t\t}\n\n\t\tArray.from(container.children).forEach((child) => {\n\t\t\tif (!child.classList.contains(CSS_CLASSES.BUTTON_CONTAINER)) {\n\t\t\t\tchild.remove();\n\t\t\t}\n\t\t});\n\n\t\tconst originalWidth =\n\t\t\tcontainer.getAttribute(\"data-ww-original-width\") || \"\";\n\t\tconst originalHeight =\n\t\t\tcontainer.getAttribute(\"data-ww-original-height\") || \"\";\n\t\tconst originalRectWidth =\n\t\t\tcontainer.getAttribute(\"data-ww-original-rect-width\") || \"\";\n\t\tconst originalRectHeight =\n\t\t\tcontainer.getAttribute(\"data-ww-original-rect-height\") || \"\";\n\n\t\tconst image = document.createElement(\"img\");\n\t\timage.src = this.virtualTryOnImageUrl;\n\t\timage.alt = \"Virtual Try-On Result\";\n\n\t\tlet widthStyle = \"100%\";\n\t\tlet heightStyle = \"100%\";\n\n\t\tif (originalWidth && originalWidth !== \"auto\" && originalWidth !== \"0px\") {\n\t\t\twidthStyle = originalWidth;\n\t\t} else if (originalRectWidth && originalRectWidth !== \"0\") {\n\t\t\twidthStyle = `${originalRectWidth}px`;\n\t\t}\n\n\t\tif (\n\t\t\toriginalHeight &&\n\t\t\toriginalHeight !== \"auto\" &&\n\t\t\toriginalHeight !== \"0px\"\n\t\t) {\n\t\t\theightStyle = originalHeight;\n\t\t} else if (originalRectHeight && originalRectHeight !== \"0\") {\n\t\t\theightStyle = `${originalRectHeight}px`;\n\t\t}\n\n\t\timage.style.cssText = `\n width: ${widthStyle};\n height: ${heightStyle};\n object-fit: contain;\n `;\n\n\t\tcontainer.prepend(image);\n\n\t\tthis.isShowingVirtualTryOn = true;\n\n\t\tthis.updateButtonContainer(container);\n\n\t\tconsole.log(\n\t\t\t\"[WeWear VTO] Product image replaced with virtual try-on result\",\n\t\t);\n\t}\n\n\tprivate showOriginalImage(container: HTMLElement): void {\n\t\tconst originalContentHTML = container.getAttribute(\n\t\t\t\"data-ww-original-content\",\n\t\t);\n\t\tif (originalContentHTML) {\n\t\t\tArray.from(container.children).forEach((child) => {\n\t\t\t\tif (!child.classList.contains(CSS_CLASSES.BUTTON_CONTAINER)) {\n\t\t\t\t\tchild.remove();\n\t\t\t\t}\n\t\t\t});\n\t\t\tconst tempDiv = document.createElement(\"div\");\n\t\t\ttempDiv.innerHTML = originalContentHTML;\n\t\t\tcontainer.append(...Array.from(tempDiv.children));\n\n\t\t\t// Remove temporary attributes used for VTO state\n\t\t\tcontainer.style.paddingBottom = \"\";\n\t\t}\n\n\t\tthis.isShowingVirtualTryOn = false;\n\t}\n\n\tpublic destroy(): void {\n\t\ttry {\n\t\t\tconst container = this.getContainer();\n\t\t\tif (container) {\n\t\t\t\tconst existingButtons = container.querySelectorAll(\n\t\t\t\t\t`.${CSS_CLASSES.BUTTON_CONTAINER}`,\n\t\t\t\t);\n\t\t\t\texistingButtons.forEach((btn) => {\n\t\t\t\t\tbtn.remove();\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tthis.closeModal();\n\n\t\t\tthis.cameraButton = null;\n\n\t\t\tif (this.iframeMessageListener) {\n\t\t\t\twindow.removeEventListener(\"message\", this.iframeMessageListener);\n\t\t\t\tthis.iframeMessageListener = null;\n\t\t\t}\n\n\t\t\tthis.virtualTryOnImageUrl = null;\n\t\t\tthis.isShowingVirtualTryOn = false;\n\t\t\tthis.lastModelImage = null;\n\t\t\tthis.originalProductImages = [];\n\t\t\tthis.preparedTryOnData = null;\n\n\t\t\tconsole.log(\"[WeWear VTO] Widget destroyed successfully\");\n\t\t} catch (error) {\n\t\t\tconsole.error(\"[WeWear VTO] Error during widget destruction:\", error);\n\t\t}\n\t}\n}\n","import type { VirtualTryOnConfig } from \"./index.js\";\nimport { VirtualTryOnWidget } from \"./widget.js\";\n\nlet widgetInstances: VirtualTryOnWidget[] = [];\n\nexport function initVirtualTryOn(config?: VirtualTryOnConfig): void {\n\ttry {\n\t\twidgetInstances.forEach((instance) => {\n\t\t\tinstance.destroy();\n\t\t});\n\t\twidgetInstances = [];\n\n\t\tif (!config) {\n\t\t\tconsole.log(\n\t\t\t\t\"[WeWear VTO] Missing configuration. Widget not initialized.\",\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\n\t\tconst allContainers = Array.from(\n\t\t\tdocument.querySelectorAll(config.gallerySelector),\n\t\t).filter(\n\t\t\t(container): container is HTMLElement => container instanceof HTMLElement,\n\t\t);\n\t\tconst shouldUseSingleton = config.singleton !== false;\n\n\t\tif (allContainers.length > 1 && !shouldUseSingleton) {\n\t\t\twidgetInstances = allContainers.map((galleryElement) => {\n\t\t\t\treturn new VirtualTryOnWidget({\n\t\t\t\t\t...config,\n\t\t\t\t\tgalleryElement,\n\t\t\t\t});\n\t\t\t});\n\t\t} else {\n\t\t\tconst firstContainer = allContainers[0];\n\t\t\twidgetInstances = [\n\t\t\t\tnew VirtualTryOnWidget({\n\t\t\t\t\t...config,\n\t\t\t\t\tgalleryElement: firstContainer,\n\t\t\t\t}),\n\t\t\t];\n\t\t}\n\n\t\tconst initializeWidgets = () => {\n\t\t\twidgetInstances.forEach((widget) => {\n\t\t\t\twidget.init().catch((error) => {\n\t\t\t\t\tconsole.error(\"[WeWear VTO] Failed to initialize:\", error);\n\t\t\t\t});\n\t\t\t});\n\t\t};\n\n\t\tif (document.readyState === \"loading\") {\n\t\t\tdocument.addEventListener(\"DOMContentLoaded\", initializeWidgets, {\n\t\t\t\tonce: true,\n\t\t\t});\n\t\t} else {\n\t\t\tinitializeWidgets();\n\t\t}\n\t} catch (error) {\n\t\tconsole.error(\"[WeWear VTO] Initialization error:\", error);\n\t}\n}\n\nexport function getWidgetInstance(): VirtualTryOnWidget | null {\n\treturn widgetInstances[0] ?? null;\n}\n\nexport function getWidgetInstances(): VirtualTryOnWidget[] {\n\treturn [...widgetInstances];\n}\n\nif (typeof window !== \"undefined\") {\n\tinitVirtualTryOn();\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.esm.js","sources":["../src/constants.ts","../src/utils.ts","../src/components/button.ts","../src/widget/modal-manager.ts","../src/widget/vto-api-client.ts","../src/widget.ts","../src/installer.ts"],"sourcesContent":["export const CSS_CLASSES = {\n\tBUTTON_CONTAINER: \"wewear-vto-button-container\",\n\tBUTTON: \"wewear-vto-button\",\n\tMODAL: \"wewear-vto-modal\",\n};\n\nexport const Z_INDEX = {\n\tBUTTON: 10,\n};\n","export function getPositionStyles(position: string): string {\n\tswitch (position) {\n\t\tcase \"bottom-left\":\n\t\t\treturn \"left: 20px; bottom: 20px;\";\n\t\tcase \"top-right\":\n\t\t\treturn \"right: 20px; top: 20px;\";\n\t\tcase \"top-left\":\n\t\t\treturn \"left: 20px; top: 20px;\";\n\t\tdefault:\n\t\t\treturn \"right: 20px; bottom: 20px;\";\n\t}\n}\n","import { CSS_CLASSES, Z_INDEX } from \"../constants.js\";\nimport { getPositionStyles } from \"../utils.js\";\n\nconst CAMERA_ICON = `\n\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"display: block;\">\n\t\t<path d=\"M14.5 4h-5L7 7H4a2 2 0 0 0-2 2v9a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2h-3l-2.5-3z\"></path>\n\t\t<circle cx=\"12\" cy=\"13\" r=\"3\"></circle>\n\t</svg>\n`;\n\nconst SPARKLES_ICON = `\n\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"display: block; flex-shrink: 0;\">\n\t\t<path d=\"M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z\"/>\n\t\t<path d=\"M20 2v4\"/>\n\t\t<path d=\"M22 4h-4\"/>\n\t\t<circle cx=\"4\" cy=\"20\" r=\"2\"/>\n\t</svg>\n`;\n\nconst REFRESH_ICON = `\n\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"display: block;\">\n\t\t<path d=\"M21 12a9 9 0 0 0-9-9 9.75 9.75 0 0 0-6.74 2.74L3 8\"></path>\n\t\t<path d=\"M3 3v5h5\"></path>\n\t\t<path d=\"M3 12a9 9 0 0 0 9 9 9.75 9.75 0 0 0 6.74-2.74L21 16\"></path>\n\t\t<path d=\"M16 16h5v5\"></path>\n\t</svg>\n`;\n\nconst SAVE_ICON = `\n\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"display: block;\">\n\t\t<path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\"></path>\n\t\t<polyline points=\"7 10 12 15 17 10\"></polyline>\n\t\t<line x1=\"12\" y1=\"15\" x2=\"12\" y2=\"3\"></line>\n\t</svg>\n`;\n\nconst SHARE_ICON = `\n\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"display: block;\">\n\t\t<circle cx=\"18\" cy=\"5\" r=\"3\"></circle>\n\t\t<circle cx=\"6\" cy=\"12\" r=\"3\"></circle>\n\t\t<circle cx=\"18\" cy=\"19\" r=\"3\"></circle>\n\t\t<line x1=\"8.59\" y1=\"13.51\" x2=\"15.42\" y2=\"17.49\"></line>\n\t\t<line x1=\"15.41\" y1=\"6.51\" x2=\"8.59\" y2=\"10.49\"></line>\n\t</svg>\n`;\n\nconst CONTAINER_STYLE = `\n\tposition: absolute;\n\tdisplay: flex;\n\tgap: 4px;\n\tborder-radius: 100px;\n\tbackground: white;\n\tpadding: 4px;\n\tbox-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n\tz-index: ${Z_INDEX.BUTTON};\n\ttransition: all 0.2s ease;\n`;\n\nconst ICON_BUTTON_STYLE = `\n\tdisplay: flex;\n\twidth: 40px;\n\theight: 40px;\n\tcursor: pointer;\n\talign-items: center;\n\tjustify-content: center;\n\tborder-radius: 100px;\n\tpadding: 0;\n\tborder: none;\n\ttransition: all 0.2s ease;\n\tflex-shrink: 0;\n`;\n\nconst PRIMARY_STYLE = `${ICON_BUTTON_STYLE}\n\tbackground: white;\n\tcolor: #000000;\n`;\n\nconst CAMERA_HIGHLIGHT_STYLE = `${ICON_BUTTON_STYLE}\n\tbackground: white;\n\tcolor: #333333;\n`;\n\nfunction createIconButton(\n\tclassName: string,\n\tariaLabel: string,\n\ticonHtml: string,\n\tstyleCss: string,\n\tonClick: () => void,\n): HTMLButtonElement {\n\tconst button = document.createElement(\"button\");\n\tbutton.type = \"button\";\n\tbutton.className = className;\n\tbutton.setAttribute(\"aria-label\", ariaLabel);\n\tbutton.style.cssText = styleCss;\n\tbutton.innerHTML = iconHtml;\n\tbutton.onclick = onClick;\n\treturn button;\n}\n\nexport function createButtonContainer(\n\tbuttonPosition: string,\n\thasVirtualTryOn: boolean = false,\n\tonCameraClick: () => void,\n\tonRefreshClick?: () => void,\n\tonToggleClick?: () => void,\n\tisShowingVirtualTryOn: boolean = false,\n\tonSaveClick?: () => void,\n\tonShareClick?: () => void,\n): HTMLElement {\n\tconst container = document.createElement(\"div\");\n\tcontainer.className = `${CSS_CLASSES.BUTTON_CONTAINER} ww-button-group`;\n\n\tconst positionStyles = hasVirtualTryOn\n\t\t? \"right: 20px; top: 20px;\"\n\t\t: getPositionStyles(buttonPosition);\n\tconst directionStyles = hasVirtualTryOn\n\t\t? \"flex-direction: column;\"\n\t\t: \"flex-direction: row;\";\n\tcontainer.style.cssText = `${CONTAINER_STYLE} ${positionStyles} ${directionStyles}`;\n\n\tconst cameraButton = hasVirtualTryOn\n\t\t? createIconButton(\n\t\t\t\t`${CSS_CLASSES.BUTTON} ww-camera-btn`,\n\t\t\t\t\"Virtual Try-On\",\n\t\t\t\tCAMERA_ICON,\n\t\t\t\tCAMERA_HIGHLIGHT_STYLE,\n\t\t\t\tonCameraClick,\n\t\t\t)\n\t\t: createIconButton(\n\t\t\t\t`${CSS_CLASSES.BUTTON} ww-camera-btn`,\n\t\t\t\t\"Virtual Try-On\",\n\t\t\t\t`${SPARKLES_ICON}<span style=\"display: block;\">TRY THIS LOOK</span>`,\n\t\t\t\t`${PRIMARY_STYLE}\n\t\t\t\t\tpadding: 10px 16px;\n\t\t\t\t\tgap: 8px;\n\t\t\t\t\tfont-size: 14px;\n\t\t\t\t\tfont-weight: 600;\n\t\t\t\t\twhite-space: nowrap;\n\t\t\t\t\twidth: auto;\n\t\t\t\t\theight: auto;\n\t\t\t\t`,\n\t\t\t\tonCameraClick,\n\t\t\t);\n\tif (hasVirtualTryOn && onSaveClick) {\n\t\tconst saveButton = createIconButton(\n\t\t\t\"ww-save-btn\",\n\t\t\t\"Save virtual try-on image\",\n\t\t\tSAVE_ICON,\n\t\t\t`${ICON_BUTTON_STYLE}\n\t\t\t\tbackground: white;\n\t\t\t\tcolor: #333333;\n\t\t\t`,\n\t\t\tonSaveClick,\n\t\t);\n\t\tcontainer.appendChild(saveButton);\n\t}\n\n\tif (hasVirtualTryOn && onShareClick) {\n\t\tconst shareButton = createIconButton(\n\t\t\t\"ww-share-btn\",\n\t\t\t\"Share virtual try-on image\",\n\t\t\tSHARE_ICON,\n\t\t\t`${ICON_BUTTON_STYLE}\n\t\t\t\tbackground: white;\n\t\t\t\tcolor: #333333;\n\t\t\t`,\n\t\t\tonShareClick,\n\t\t);\n\t\tcontainer.appendChild(shareButton);\n\t}\n\n\tcontainer.appendChild(cameraButton);\n\n\tif (hasVirtualTryOn) {\n\t\tif (onRefreshClick) {\n\t\t\tconst refreshButton = createIconButton(\n\t\t\t\t\"ww-refresh-btn\",\n\t\t\t\t\"Refresh virtual try-on\",\n\t\t\t\tREFRESH_ICON,\n\t\t\t\t`${ICON_BUTTON_STYLE}\n\t\t\t\t\tbackground: white;\n\t\t\t\t\tcolor: #333333;\n\t\t\t\t`,\n\t\t\t\tonRefreshClick,\n\t\t\t);\n\t\t\tcontainer.appendChild(refreshButton);\n\t\t}\n\n\t\tif (onToggleClick) {\n\t\t\tconst toggleButton = createIconButton(\n\t\t\t\t\"ww-toggle-btn\",\n\t\t\t\tisShowingVirtualTryOn ? \"Show Original Image\" : \"Show Virtual Try-On\",\n\t\t\t\tSPARKLES_ICON,\n\t\t\t\t`${ICON_BUTTON_STYLE}\n\t\t\t\t\tbackground: ${isShowingVirtualTryOn ? \"#333333\" : \"#e5e7eb\"};\n\t\t\t\t\tcolor: ${isShowingVirtualTryOn ? \"white\" : \"#333333\"};\n\t\t\t\t`,\n\t\t\t\tonToggleClick,\n\t\t\t);\n\n\t\t\ttoggleButton.onmouseover = () => {\n\t\t\t\tif (isShowingVirtualTryOn) {\n\t\t\t\t\ttoggleButton.style.background = \"#4a4a4a\";\n\t\t\t\t} else {\n\t\t\t\t\ttoggleButton.style.background = \"#d1d5db\";\n\t\t\t\t}\n\t\t\t};\n\t\t\ttoggleButton.onmouseout = () => {\n\t\t\t\tif (isShowingVirtualTryOn) {\n\t\t\t\t\ttoggleButton.style.background = \"#333333\";\n\t\t\t\t} else {\n\t\t\t\t\ttoggleButton.style.background = \"#e5e7eb\";\n\t\t\t\t}\n\t\t\t};\n\n\t\t\ttoggleButton.onclick = onToggleClick;\n\t\t\tcontainer.appendChild(toggleButton);\n\t\t}\n\t}\n\n\treturn container;\n}\n\nexport function createButton(\n\tbuttonPosition: string,\n\tonClick: () => void,\n\tdisabled: boolean = false,\n): HTMLElement {\n\tconst container = createButtonContainer(buttonPosition, false, onClick);\n\tconst cameraButton = container.querySelector(\n\t\t\".ww-camera-btn\",\n\t) as HTMLButtonElement;\n\tif (cameraButton) {\n\t\tcameraButton.disabled = disabled;\n\t\tif (disabled) {\n\t\t\tcameraButton.style.opacity = \"0.5\";\n\t\t\tcameraButton.style.cursor = \"not-allowed\";\n\t\t\tcameraButton.title = \"Find your ideal size first\";\n\t\t}\n\t}\n\treturn container;\n}\n","import { CSS_CLASSES } from \"../constants.js\";\n\nexport type ModalControlMessageType =\n\t| \"VTO_SCAN_START\"\n\t| \"VTO_SCAN_STOP\"\n\t| \"VTO_SCAN_COMPLETE\";\n\nexport interface ModalOpenOptions {\n\tprefillImage?: Blob;\n\tautoSubmit?: boolean;\n}\n\ninterface PendingModalPrefill {\n\timage: Blob;\n\tautoSubmit: boolean;\n}\n\nexport class ModalManager {\n\tprivate modalElement: HTMLElement | null = null;\n\tprivate pendingModalPrefill: PendingModalPrefill | null = null;\n\tprivate modalOrigin: string;\n\n\tconstructor(baseUrl: string) {\n\t\tthis.modalOrigin = new URL(baseUrl).origin;\n\t}\n\n\topen(\n\t\turl: string,\n\t\toptions: ModalOpenOptions | undefined,\n\t\tonClose: () => void,\n\t) {\n\t\tthis.close();\n\t\tthis.modalOrigin = new URL(url).origin;\n\t\tthis.pendingModalPrefill = options?.prefillImage\n\t\t\t? {\n\t\t\t\t\timage: options.prefillImage,\n\t\t\t\t\tautoSubmit: options.autoSubmit === true,\n\t\t\t\t}\n\t\t\t: null;\n\n\t\tconst modal = document.createElement(\"div\");\n\t\tmodal.className = CSS_CLASSES.MODAL;\n\t\tmodal.style.cssText = `\n\t\t\tposition: fixed;\n\t\t\ttop: 0;\n\t\t\tleft: 0;\n\t\t\tright: 0;\n\t\t\tbottom: 0;\n\t\t\twidth: 100%;\n\t\t\theight: 100%;\n\t\t\tbackground-color: rgba(0, 0, 0, 0.8);\n\t\t\tdisplay: flex;\n\t\t\tjustify-content: center;\n\t\t\talign-items: center;\n\t\t\tz-index: 999999999;\n\t\t\tanimation: ww-modal-fade-in 0.3s ease;\n\t\t`;\n\n\t\tif (!document.getElementById(\"ww-modal-animation\")) {\n\t\t\tconst style = document.createElement(\"style\");\n\t\t\tstyle.id = \"ww-modal-animation\";\n\t\t\tstyle.textContent = `\n\t\t\t\t@keyframes ww-modal-fade-in {\n\t\t\t\t\tfrom { opacity: 0; }\n\t\t\t\t\tto { opacity: 1; }\n\t\t\t\t}\n\t\t\t\t@keyframes ww-modal-scale-in {\n\t\t\t\t\tfrom { transform: scale(0.95); opacity: 0; }\n\t\t\t\t\tto { transform: scale(1); opacity: 1; }\n\t\t\t\t}\n\t\t\t`;\n\t\t\tdocument.head.appendChild(style);\n\t\t}\n\n\t\tconst iframeContainer = document.createElement(\"div\");\n\t\tiframeContainer.style.cssText = `\n\t\t\tposition: relative;\n\t\t\twidth: 90%;\n\t\t\theight: 90%;\n\t\t\tmax-width: 480px;\n\t\t\tmax-height: 720px;\n\t\t\tborder-radius: 20px;\n\t\t\toverflow: hidden;\n\t\t\tbox-shadow: 0 24px 48px rgba(0, 0, 0, 0.3), 0 12px 24px rgba(0, 0, 0, 0.2);\n\t\t\tanimation: ww-modal-scale-in 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n\t\t\tbackground: white;\n\t\t`;\n\n\t\tconst iframe = document.createElement(\"iframe\");\n\t\tiframe.src = url;\n\t\tiframe.style.cssText = `\n\t\t\twidth: 100%;\n\t\t\theight: 100%;\n\t\t\tborder: none;\n\t\t`;\n\n\t\tconst closeButton = document.createElement(\"button\");\n\t\tcloseButton.innerHTML = `\n\t\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n\t\t\t\t<line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"></line>\n\t\t\t\t<line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"></line>\n\t\t\t</svg>\n\t\t`;\n\t\tcloseButton.setAttribute(\"aria-label\", \"Close modal\");\n\t\tcloseButton.style.cssText = `\n\t\t\tposition: absolute;\n\t\t\ttop: -48px;\n\t\t\tright: 0;\n\t\t\tbackground: rgba(255, 255, 255, 0.95);\n\t\t\tbackdrop-filter: blur(8px);\n\t\t\t-webkit-backdrop-filter: blur(8px);\n\t\t\tborder: none;\n\t\t\tborder-radius: 50%;\n\t\t\twidth: 40px;\n\t\t\theight: 40px;\n\t\t\tcursor: pointer;\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t\tjustify-content: center;\n\t\t\tcolor: #1f2937;\n\t\t\ttransition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n\t\t\tbox-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);\n\t\t`;\n\t\tcloseButton.onmouseover = () => {\n\t\t\tcloseButton.style.transform = \"scale(1.1) rotate(90deg)\";\n\t\t\tcloseButton.style.background = \"#ef4444\";\n\t\t\tcloseButton.style.color = \"white\";\n\t\t};\n\t\tcloseButton.onmouseout = () => {\n\t\t\tcloseButton.style.transform = \"scale(1) rotate(0deg)\";\n\t\t\tcloseButton.style.background = \"rgba(255, 255, 255, 0.95)\";\n\t\t\tcloseButton.style.color = \"#1f2937\";\n\t\t};\n\t\tcloseButton.onclick = () => {\n\t\t\tmodal.style.opacity = \"0\";\n\t\t\tiframeContainer.style.transform = \"scale(0.95)\";\n\t\t\tiframeContainer.style.opacity = \"0\";\n\t\t\tsetTimeout(onClose, 300);\n\t\t};\n\n\t\tiframeContainer.appendChild(iframe);\n\t\tiframeContainer.appendChild(closeButton);\n\t\tmodal.appendChild(iframeContainer);\n\t\tdocument.body.appendChild(modal);\n\n\t\tmodal.onclick = (e) => {\n\t\t\tif (e.target === modal) {\n\t\t\t\tcloseButton.click();\n\t\t\t}\n\t\t};\n\n\t\tthis.modalElement = modal;\n\t}\n\n\tclose() {\n\t\tif (this.modalElement) {\n\t\t\tthis.modalElement.remove();\n\t\t\tthis.modalElement = null;\n\t\t}\n\t\tthis.pendingModalPrefill = null;\n\t}\n\n\tsendPendingPrefillToModal() {\n\t\tif (!this.pendingModalPrefill || !this.modalElement) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst iframe = this.modalElement.querySelector(\"iframe\");\n\t\tif (!(iframe instanceof HTMLIFrameElement) || !iframe.contentWindow) {\n\t\t\treturn;\n\t\t}\n\n\t\tiframe.contentWindow.postMessage(\n\t\t\t{\n\t\t\t\ttype: \"VTO_PREFILL_IMAGE\",\n\t\t\t\timage: this.pendingModalPrefill.image,\n\t\t\t\tautoSubmit: this.pendingModalPrefill.autoSubmit,\n\t\t\t},\n\t\t\tthis.modalOrigin,\n\t\t);\n\t\t// Fallback for production setups where iframe origin differs after redirects.\n\t\tiframe.contentWindow.postMessage(\n\t\t\t{\n\t\t\t\ttype: \"VTO_PREFILL_IMAGE\",\n\t\t\t\timage: this.pendingModalPrefill.image,\n\t\t\t\tautoSubmit: this.pendingModalPrefill.autoSubmit,\n\t\t\t},\n\t\t\t\"*\",\n\t\t);\n\t\tthis.pendingModalPrefill = null;\n\t}\n\n\tpostMessageToModal(type: ModalControlMessageType) {\n\t\tif (!this.modalElement) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst iframe = this.modalElement.querySelector(\"iframe\");\n\t\tif (!(iframe instanceof HTMLIFrameElement) || !iframe.contentWindow) {\n\t\t\treturn;\n\t\t}\n\n\t\tiframe.contentWindow.postMessage({ type }, this.modalOrigin);\n\t\t// Fallback for production setups where iframe origin differs after redirects.\n\t\tiframe.contentWindow.postMessage({ type }, \"*\");\n\t}\n}\n","export type JobStatus = \"PENDING\" | \"COMPLETED\" | \"FAILED\";\n\nexport interface JobStatusResponse {\n\tstatus: JobStatus;\n\tmessage: string;\n}\n\ninterface SubmitTryOnOptions {\n\tmodelTier: string;\n\toutfitID: string;\n}\n\nexport interface PreparedTryOnData {\n\tmodelTier: string;\n\toutfitID: string;\n\tproductImages: string[];\n\tgeminiModel: string | null;\n\tadditionalPrompt: string | null;\n}\n\nexport class VtoApiClient {\n\tconstructor(private readonly baseUrl: string) {}\n\n\tasync submitTryOn(\n\t\tmodelImage: Blob,\n\t\tproductImages: string[],\n\t\toptions: SubmitTryOnOptions,\n\t\tpreparedData?: PreparedTryOnData,\n\t): Promise<{ job_id: string }> {\n\t\tconst resolved =\n\t\t\tpreparedData ?? (await this.prepareTryOnData(productImages, options));\n\n\t\tconst formData = new FormData();\n\t\tformData.append(\"model_image\", modelImage, \"model_image.png\");\n\t\tformData.append(\n\t\t\t\"product_image_urls\",\n\t\t\tJSON.stringify(resolved.productImages),\n\t\t);\n\t\tformData.append(\"page_url\", window.location.href);\n\t\tformData.append(\"model_tier\", resolved.modelTier);\n\t\tif (resolved.geminiModel)\n\t\t\tformData.append(\"gemini_model\", resolved.geminiModel);\n\t\tif (resolved.additionalPrompt) {\n\t\t\tformData.append(\"additional_prompt\", resolved.additionalPrompt);\n\t\t}\n\n\t\tif (resolved.outfitID) formData.append(\"outfit_id\", resolved.outfitID);\n\n\t\tconst res = await fetch(`${this.baseUrl}/api/vto`, {\n\t\t\tmethod: \"POST\",\n\t\t\tbody: formData,\n\t\t});\n\t\tif (!res.ok) {\n\t\t\tconst errorText = await res.text();\n\t\t\tconsole.error(\n\t\t\t\t\"[WeWear VTO] API submission failed:\",\n\t\t\t\tres.status,\n\t\t\t\terrorText,\n\t\t\t);\n\t\t\tthrow new Error(`API submission failed: ${res.status}`);\n\t\t}\n\t\treturn res.json();\n\t}\n\n\tasync prepareTryOnData(\n\t\tproductImages: string[],\n\t\toptions: SubmitTryOnOptions,\n\t): Promise<PreparedTryOnData> {\n\t\tconst outfitID = options.outfitID?.trim() ?? \"\";\n\n\t\treturn {\n\t\t\tmodelTier: options.modelTier,\n\t\t\toutfitID,\n\t\t\tproductImages,\n\t\t\tgeminiModel: null,\n\t\t\tadditionalPrompt: null,\n\t\t};\n\t}\n\n\tasync fetchJobStatus(jobId: string): Promise<JobStatusResponse> {\n\t\tconst res = await fetch(`${this.baseUrl}/api/vto/status?job_id=${jobId}`);\n\t\tif (!res.ok) throw new Error(`Status check failed: ${res.status}`);\n\t\treturn res.json();\n\t}\n\n\tasync fetchJobImage(jobId: string): Promise<string> {\n\t\tconst url = `${this.baseUrl}/api/vto/image?job_id=${jobId}`;\n\n\t\tconst res = await fetch(url);\n\t\tif (res.status === 202) throw new Error(\"202_PROCESSING\");\n\t\tif (!res.ok) throw new Error(`Image fetch failed: ${res.status}`);\n\n\t\tconst blob = await res.blob();\n\t\treturn URL.createObjectURL(blob);\n\t}\n}\n","import { createButton, createButtonContainer } from \"./components/index.js\";\nimport { CSS_CLASSES } from \"./constants.js\";\nimport type { VirtualTryOnConfig } from \"./index.js\";\nimport {\n\tModalManager,\n\ttype ModalControlMessageType,\n\ttype ModalOpenOptions,\n} from \"./widget/modal-manager.js\";\nimport {\n\tVtoApiClient,\n\ttype PreparedTryOnData,\n} from \"./widget/vto-api-client.js\";\n\nexport class VirtualTryOnWidget {\n\tprivate static instanceCounter = 0;\n\tprivate static activeWidgetId: number | null = null;\n\tprivate static readonly ERROR_TOAST_MESSAGE =\n\t\t\"Virtual try-on is temporarily unavailable due to high traffic on Google services. Please try again in a moment.\";\n\tprivate readonly config: VirtualTryOnConfig;\n\tprivate readonly instanceId: number;\n\tprivate virtualTryOnImageUrl: string | null = null;\n\tprivate originalProductImages: string[] = []; // Store all original product images\n\tprivate preparedTryOnData: PreparedTryOnData | null = null;\n\tprivate isShowingVirtualTryOn: boolean = false;\n\tprivate lastModelImage: Blob | null = null;\n\tprivate cameraButton: HTMLButtonElement | null = null;\n\tprivate readonly modal: ModalManager;\n\tprivate readonly vtoApiClient: VtoApiClient;\n\tprivate iframeMessageListener: ((event: MessageEvent) => void) | null = null;\n\n\tconstructor(config: VirtualTryOnConfig) {\n\t\tthis.instanceId = ++VirtualTryOnWidget.instanceCounter;\n\t\tthis.config = {\n\t\t\tbaseUrl: config.baseUrl,\n\t\t\tproductPageSelector: config.productPageSelector,\n\t\t\tgallerySelector: config.gallerySelector,\n\t\t\tproductImageSelector: config.productImageSelector,\n\t\t\tbuttonPosition: config.buttonPosition,\n\t\t\tmodelTier: config.modelTier,\n\t\t\toutfitID: config.outfitID,\n\t\t\tsingleton: config.singleton,\n\t\t\tgalleryElement: config.galleryElement,\n\t\t};\n\t\tthis.modal = new ModalManager(this.config.baseUrl);\n\t\tthis.vtoApiClient = new VtoApiClient(this.config.baseUrl);\n\t}\n\n\tprivate getContainer(): HTMLElement | null {\n\t\tconst configContainer = this.config.galleryElement;\n\t\tif (configContainer?.isConnected) {\n\t\t\treturn configContainer;\n\t\t}\n\n\t\tconst queriedContainer = document.querySelector(\n\t\t\tthis.config.gallerySelector,\n\t\t);\n\t\treturn queriedContainer instanceof HTMLElement ? queriedContainer : null;\n\t}\n\n\tpublic async init(): Promise<void> {\n\t\ttry {\n\t\t\tconst selectors = this.config.productPageSelector;\n\t\t\tconst currentPath = window.location.pathname;\n\t\t\tconst matches = selectors.some((sel) => currentPath.includes(sel));\n\t\t\tif (!matches) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst container = this.getContainer();\n\t\t\tif (!container) {\n\t\t\t\tconsole.warn(\n\t\t\t\t\t\"[WeWear VTO] Gallery container not found:\",\n\t\t\t\t\tthis.config.gallerySelector,\n\t\t\t\t);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (getComputedStyle(container).position === \"static\") {\n\t\t\t\tcontainer.style.position = \"relative\";\n\t\t\t}\n\n\t\t\tconst button = createButton(this.config.buttonPosition, async () => {\n\t\t\t\tif (this.cameraButton && !this.cameraButton.disabled) {\n\t\t\t\t\tawait this.handleTryOnClick();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.cameraButton = button.querySelector(\".ww-camera-btn\");\n\t\t\tcontainer.appendChild(button);\n\t\t\tconsole.log(\"[WeWear VTO] Widget initialized successfully\");\n\n\t\t\tthis.setupIframeListener();\n\t\t} catch (error) {\n\t\t\tconsole.error(\"[WeWear VTO] Initialization failed:\", error);\n\t\t}\n\t}\n\n\tprivate async handleTryOnClick(): Promise<void> {\n\t\tconsole.log(\"[WeWear VTO] Button clicked, starting try-on process...\");\n\n\t\ttry {\n\t\t\tif (this.originalProductImages.length === 0) {\n\t\t\t\tthis.originalProductImages = this.getAllProductImages();\n\t\t\t\tconsole.log(\n\t\t\t\t\t\"[WeWear VTO] Stored original product images:\",\n\t\t\t\t\tthis.originalProductImages,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconsole.log(\"[WeWear VTO] Retrieved data:\", {\n\t\t\t\tproductImages: this.originalProductImages,\n\t\t\t});\n\n\t\t\tif (this.originalProductImages.length === 0) {\n\t\t\t\tconsole.warn(\n\t\t\t\t\t\"[WeWear VTO] Product images not found:\",\n\t\t\t\t\tthis.config.productImageSelector,\n\t\t\t\t);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.preparedTryOnData = await this.vtoApiClient.prepareTryOnData(\n\t\t\t\tthis.originalProductImages,\n\t\t\t\t{\n\t\t\t\t\tmodelTier: this.config.modelTier,\n\t\t\t\t\toutfitID: this.config.outfitID,\n\t\t\t\t},\n\t\t\t);\n\n\t\t\tconst photoUploadUrl = this.buildPhotoUploadUrl(\n\t\t\t\tthis.preparedTryOnData.productImages,\n\t\t\t);\n\t\t\tthis.showPhotoUploadModal(photoUploadUrl.toString());\n\t\t} catch (error) {\n\t\t\tconsole.error(\"[WeWear VTO] Try-on request failed:\", error);\n\t\t}\n\t}\n\n\tprivate async handleRegenerateClick(): Promise<void> {\n\t\tif (!this.lastModelImage) {\n\t\t\tawait this.handleTryOnClick();\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.originalProductImages.length === 0) {\n\t\t\tthis.originalProductImages = this.getAllProductImages();\n\t\t}\n\n\t\tif (this.originalProductImages.length === 0) {\n\t\t\tconsole.warn(\"[WeWear VTO] No product images found for regenerate.\");\n\t\t\treturn;\n\t\t}\n\n\t\tthis.preparedTryOnData = await this.vtoApiClient.prepareTryOnData(\n\t\t\tthis.originalProductImages,\n\t\t\t{\n\t\t\t\tmodelTier: this.config.modelTier,\n\t\t\t\toutfitID: this.config.outfitID,\n\t\t\t},\n\t\t);\n\n\t\tconst photoUploadUrl = this.buildPhotoUploadUrl(\n\t\t\tthis.preparedTryOnData.productImages,\n\t\t);\n\t\tthis.showPhotoUploadModal(photoUploadUrl.toString(), {\n\t\t\tprefillImage: this.lastModelImage,\n\t\t\tautoSubmit: true,\n\t\t});\n\t}\n\n\tprivate async handleSaveClick(): Promise<void> {\n\t\tif (!this.virtualTryOnImageUrl) {\n\t\t\tconsole.warn(\"[WeWear VTO] No virtual try-on image available to save.\");\n\t\t\treturn;\n\t\t}\n\n\t\ttry {\n\t\t\tconst response = await fetch(this.virtualTryOnImageUrl);\n\t\t\tconst imageBlob = await response.blob();\n\t\t\tconst objectUrl = URL.createObjectURL(imageBlob);\n\n\t\t\tconst link = document.createElement(\"a\");\n\t\t\tlink.href = objectUrl;\n\t\t\tlink.download = `wewear-vto-${Date.now()}.png`;\n\t\t\tdocument.body.appendChild(link);\n\t\t\tlink.click();\n\t\t\tlink.remove();\n\t\t\tURL.revokeObjectURL(objectUrl);\n\t\t} catch (error) {\n\t\t\tconsole.error(\"[WeWear VTO] Failed to save virtual try-on image:\", error);\n\t\t\twindow.open(this.virtualTryOnImageUrl, \"_blank\");\n\t\t}\n\t}\n\n\tprivate async handleShareClick(): Promise<void> {\n\t\tif (!this.virtualTryOnImageUrl) {\n\t\t\tconsole.warn(\"[WeWear VTO] No virtual try-on image available to share.\");\n\t\t\treturn;\n\t\t}\n\n\t\tconst shareUrl = this.virtualTryOnImageUrl;\n\n\t\ttry {\n\t\t\tif (navigator.share && navigator.canShare) {\n\t\t\t\tconst response = await fetch(shareUrl);\n\t\t\t\tconst imageBlob = await response.blob();\n\t\t\t\tconst imageFile = new File([imageBlob], \"wewear-vto.png\", {\n\t\t\t\t\ttype: imageBlob.type || \"image/png\",\n\t\t\t\t});\n\n\t\t\t\tif (navigator.canShare({ files: [imageFile] })) {\n\t\t\t\t\tawait navigator.share({\n\t\t\t\t\t\ttitle: \"My virtual try-on look\",\n\t\t\t\t\t\ttext: \"Check out my virtual try-on look.\",\n\t\t\t\t\t\tfiles: [imageFile],\n\t\t\t\t\t});\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (navigator.share) {\n\t\t\t\tawait navigator.share({\n\t\t\t\t\ttitle: \"My virtual try-on look\",\n\t\t\t\t\ttext: \"Check out my virtual try-on look.\",\n\t\t\t\t\turl: shareUrl,\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconsole.error(\"[WeWear VTO] Native share failed:\", error);\n\t\t}\n\n\t\ttry {\n\t\t\tif (navigator.clipboard?.writeText) {\n\t\t\t\tawait navigator.clipboard.writeText(shareUrl);\n\t\t\t\twindow.alert(\"Virtual try-on link copied. You can paste it to share.\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconsole.error(\"[WeWear VTO] Clipboard copy failed:\", error);\n\t\t}\n\n\t\tconst newWindow = window.open(shareUrl, \"_blank\");\n\t\tif (!newWindow) {\n\t\t\twindow.prompt(\"Copy this link to share your virtual try-on:\", shareUrl);\n\t\t}\n\t}\n\n\tprivate buildPhotoUploadUrl(productImages: string[]): URL {\n\t\tconst photoUploadUrl = new URL(`${this.config.baseUrl}`);\n\n\t\tphotoUploadUrl.searchParams.append(\n\t\t\t\"ww_product_images\",\n\t\t\tproductImages.join(\",\"),\n\t\t);\n\t\tif (this.config.outfitID) {\n\t\t\tphotoUploadUrl.searchParams.append(\"ww_outfit_id\", this.config.outfitID);\n\t\t}\n\t\tphotoUploadUrl.searchParams.append(\"ww_user_brand\", window.location.href);\n\t\treturn photoUploadUrl;\n\t}\n\n\tprivate getAllProductImages(): string[] {\n\t\tconst container = this.getContainer();\n\t\tconst scopedElements = container?.querySelectorAll(\n\t\t\tthis.config.productImageSelector,\n\t\t);\n\t\tconst fallbackElements = document.querySelectorAll(\n\t\t\tthis.config.productImageSelector,\n\t\t);\n\t\tconst productImageElements = (\n\t\t\tscopedElements?.length ? scopedElements : fallbackElements\n\t\t) as NodeListOf<HTMLImageElement>;\n\n\t\tconst images: string[] = [];\n\n\t\tproductImageElements.forEach((img) => {\n\t\t\tconst imageUrl =\n\t\t\t\timg.src ||\n\t\t\t\timg.getAttribute(\"data-src\") ||\n\t\t\t\timg.getAttribute(\"data-large_image\") ||\n\t\t\t\t\"\";\n\n\t\t\tif (\n\t\t\t\timageUrl &&\n\t\t\t\t(imageUrl.startsWith(\"http://\") || imageUrl.startsWith(\"https://\")) &&\n\t\t\t\t!images.includes(imageUrl)\n\t\t\t) {\n\t\t\t\timages.push(imageUrl);\n\t\t\t}\n\t\t});\n\n\t\treturn images;\n\t}\n\n\tprivate showPhotoUploadModal(url: string, options?: ModalOpenOptions): void {\n\t\tthis.closeModal();\n\t\tVirtualTryOnWidget.activeWidgetId = this.instanceId;\n\t\tthis.modal.open(url, options, () => this.closeModal());\n\t}\n\n\tprivate closeModal(): void {\n\t\tthis.modal.close();\n\t\tif (VirtualTryOnWidget.activeWidgetId === this.instanceId) {\n\t\t\tVirtualTryOnWidget.activeWidgetId = null;\n\t\t}\n\t}\n\n\tprivate showErrorToast(message: string): void {\n\t\tconst existingToast = document.getElementById(\"ww-vto-error-toast\");\n\t\tif (existingToast) {\n\t\t\texistingToast.remove();\n\t\t}\n\n\t\tconst toast = document.createElement(\"div\");\n\t\ttoast.id = \"ww-vto-error-toast\";\n\t\ttoast.setAttribute(\"role\", \"status\");\n\t\ttoast.setAttribute(\"aria-live\", \"polite\");\n\t\ttoast.style.cssText = `\n\t\t\tposition: fixed;\n\t\t\tleft: 50%;\n\t\t\tbottom: 24px;\n\t\t\ttransform: translateX(-50%);\n\t\t\tz-index: 2147483647;\n\t\t\tmax-width: min(92vw, 460px);\n\t\t\tpadding: 12px 14px;\n\t\t\tborder-radius: 12px;\n\t\t\tbackground: #ffffff;\n\t\t\tcolor: #111827;\n\t\t\tborder: 1px solid #e5e7eb;\n\t\t\tfont-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Arial, sans-serif;\n\t\t\tfont-size: 14px;\n\t\t\tline-height: 1.35;\n\t\t\tbox-shadow: 0 10px 32px rgba(0, 0, 0, 0.16);\n\t\t\topacity: 0;\n\t\t\ttransition: opacity 180ms ease;\n\t\t`;\n\n\t\tconst content = document.createElement(\"div\");\n\t\tcontent.style.cssText = `\n\t\t\tdisplay: flex;\n\t\t\talign-items: flex-start;\n\t\t\tgap: 10px;\n\t\t`;\n\n\t\tconst text = document.createElement(\"div\");\n\t\ttext.style.cssText = \"flex: 1;\";\n\t\ttext.textContent = message;\n\n\t\tconst closeButton = document.createElement(\"button\");\n\t\tcloseButton.type = \"button\";\n\t\tcloseButton.setAttribute(\"aria-label\", \"Close message\");\n\t\tcloseButton.textContent = \"Close\";\n\t\tcloseButton.style.cssText = `\n\t\t\tborder: none;\n\t\t\tbackground: transparent;\n\t\t\tcolor: #111827;\n\t\t\tfont-size: 12px;\n\t\t\tfont-weight: 600;\n\t\t\tcursor: pointer;\n\t\t\tpadding: 0;\n\t\t\tline-height: 1.2;\n\t\t\twhite-space: nowrap;\n\t\t`;\n\t\tcloseButton.onclick = () => {\n\t\t\ttoast.style.opacity = \"0\";\n\t\t\twindow.setTimeout(() => toast.remove(), 220);\n\t\t};\n\n\t\tcontent.appendChild(text);\n\t\tcontent.appendChild(closeButton);\n\t\ttoast.appendChild(content);\n\t\tdocument.body.appendChild(toast);\n\n\t\trequestAnimationFrame(() => {\n\t\t\ttoast.style.opacity = \"1\";\n\t\t});\n\t}\n\n\tprivate sendPendingPrefillToModal(): void {\n\t\tthis.modal.sendPendingPrefillToModal();\n\t}\n\n\tprivate postMessageToModal(type: ModalControlMessageType): void {\n\t\tthis.modal.postMessageToModal(type);\n\t}\n\n\tprivate setupIframeListener(): void {\n\t\tif (this.iframeMessageListener) {\n\t\t\twindow.removeEventListener(\"message\", this.iframeMessageListener);\n\t\t}\n\n\t\tthis.iframeMessageListener = (event: MessageEvent) => {\n\t\t\tif (VirtualTryOnWidget.activeWidgetId !== this.instanceId) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (event.origin !== new URL(this.config.baseUrl).origin) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tswitch (event.data.type) {\n\t\t\t\tcase \"VTO_CONFIRM_READY\":\n\t\t\t\t\tthis.sendPendingPrefillToModal();\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"VTO_IMAGE_SELECTED\":\n\t\t\t\t\tif (event.data.image) {\n\t\t\t\t\t\tthis.lastModelImage = event.data.image;\n\t\t\t\t\t\tthis.postMessageToModal(\"VTO_SCAN_START\");\n\t\t\t\t\t\tthis.startVirtualTryOn();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"CLOSE_MODAL\":\n\t\t\t\t\tthis.closeModal();\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t};\n\n\t\twindow.addEventListener(\"message\", this.iframeMessageListener);\n\t}\n\n\tprivate async startVirtualTryOn(isRefresh = false): Promise<void> {\n\t\tif (isRefresh) {\n\t\t\tconsole.log(\n\t\t\t\t\"[WeWear VTO] Refreshing virtual try-on with previous parameters...\",\n\t\t\t);\n\t\t}\n\n\t\tif (!this.lastModelImage) {\n\t\t\tconsole.warn(\n\t\t\t\t\"[WeWear VTO] Missing required data to start virtual try-on.\",\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.originalProductImages.length === 0) {\n\t\t\tthis.originalProductImages = this.getAllProductImages();\n\t\t}\n\n\t\tif (this.originalProductImages.length === 0) {\n\t\t\tconsole.warn(\"[WeWear VTO] No product images found.\");\n\t\t\treturn;\n\t\t}\n\n\t\tif (!this.preparedTryOnData) {\n\t\t\tthis.preparedTryOnData = await this.vtoApiClient.prepareTryOnData(\n\t\t\t\tthis.originalProductImages,\n\t\t\t\t{\n\t\t\t\t\tmodelTier: this.config.modelTier,\n\t\t\t\t\toutfitID: this.config.outfitID,\n\t\t\t\t},\n\t\t\t);\n\t\t}\n\n\t\tconst container = this.getContainer();\n\t\tlet shouldShowErrorToast = false;\n\n\t\ttry {\n\t\t\tconst submitResponse = await this.vtoApiClient.submitTryOn(\n\t\t\t\tthis.lastModelImage,\n\t\t\t\tthis.preparedTryOnData.productImages,\n\t\t\t\t{\n\t\t\t\t\tmodelTier: this.config.modelTier,\n\t\t\t\t\toutfitID: this.config.outfitID,\n\t\t\t\t},\n\t\t\t\tthis.preparedTryOnData,\n\t\t\t);\n\n\t\t\tlet status = await this.vtoApiClient.fetchJobStatus(\n\t\t\t\tsubmitResponse.job_id,\n\t\t\t);\n\n\t\t\twhile (status.status !== \"COMPLETED\" && status.status !== \"FAILED\") {\n\t\t\t\tawait new Promise((r) => setTimeout(r, 3000));\n\t\t\t\tstatus = await this.vtoApiClient.fetchJobStatus(submitResponse.job_id);\n\t\t\t}\n\n\t\t\tif (status.status === \"COMPLETED\") {\n\t\t\t\tconst finalImage = await this.vtoApiClient.fetchJobImage(\n\t\t\t\t\tsubmitResponse.job_id,\n\t\t\t\t);\n\t\t\t\tif (finalImage) {\n\t\t\t\t\tthis.postMessageToModal(\"VTO_SCAN_COMPLETE\");\n\t\t\t\t\tawait new Promise((r) => setTimeout(r, 500));\n\t\t\t\t\tthis.replaceProductImage(finalImage);\n\t\t\t\t}\n\t\t\t\tif (container instanceof HTMLElement) {\n\t\t\t\t\tthis.showButtonContainer(container);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (status.status === \"FAILED\") {\n\t\t\t\tconsole.error(\"[WeWear VTO] VTO process failed:\", status.message);\n\t\t\t\tshouldShowErrorToast = true;\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconsole.error(\"[WeWear VTO] Error during virtual try-on process:\", error);\n\t\t\tshouldShowErrorToast = true;\n\t\t} finally {\n\t\t\tthis.postMessageToModal(\"VTO_SCAN_STOP\");\n\t\t\tif (container instanceof HTMLElement) {\n\t\t\t\tthis.showButtonContainer(container);\n\t\t\t}\n\t\t\tif (shouldShowErrorToast) {\n\t\t\t\tthis.showErrorToast(VirtualTryOnWidget.ERROR_TOAST_MESSAGE);\n\t\t\t\tawait new Promise((r) => setTimeout(r, 500));\n\t\t\t}\n\t\t\tthis.closeModal();\n\t\t}\n\t}\n\n\tprivate replaceProductImage(imageUrl: string): void {\n\t\ttry {\n\t\t\tthis.virtualTryOnImageUrl = imageUrl;\n\n\t\t\tconst container = this.getContainer();\n\t\t\tif (!container) {\n\t\t\t\tconsole.warn(\n\t\t\t\t\t\"[WeWear VTO] Gallery container not found for image replacement:\",\n\t\t\t\t\tthis.config.gallerySelector,\n\t\t\t\t);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!container.hasAttribute(\"data-ww-original-content\")) {\n\t\t\t\tcontainer.setAttribute(\"data-ww-original-content\", container.innerHTML);\n\t\t\t}\n\n\t\t\tif (!container.hasAttribute(\"data-ww-container-locked\")) {\n\t\t\t\tconst containerRect = container.getBoundingClientRect();\n\n\t\t\t\tcontainer.setAttribute(\n\t\t\t\t\t\"data-ww-container-width\",\n\t\t\t\t\tcontainerRect.width.toString(),\n\t\t\t\t);\n\t\t\t\tcontainer.setAttribute(\n\t\t\t\t\t\"data-ww-container-height\",\n\t\t\t\t\tcontainerRect.height.toString(),\n\t\t\t\t);\n\n\t\t\t\tcontainer.style.width = `${containerRect.width}px`;\n\t\t\t\tcontainer.style.height = `${containerRect.height}px`;\n\t\t\t\tcontainer.style.minWidth = `${containerRect.width}px`;\n\t\t\t\tcontainer.style.minHeight = `${containerRect.height}px`;\n\n\t\t\t\tcontainer.style.paddingBottom = \"0\";\n\n\t\t\t\tcontainer.setAttribute(\"data-ww-container-locked\", \"true\");\n\t\t\t}\n\n\t\t\tconst originalImg = container.querySelector(\"img\");\n\t\t\tif (\n\t\t\t\toriginalImg &&\n\t\t\t\t!container.hasAttribute(\"data-ww-original-dimensions\")\n\t\t\t) {\n\t\t\t\tconst computedStyle = window.getComputedStyle(originalImg);\n\t\t\t\tconst rect = originalImg.getBoundingClientRect();\n\t\t\t\tcontainer.setAttribute(\"data-ww-original-width\", computedStyle.width);\n\t\t\t\tcontainer.setAttribute(\"data-ww-original-height\", computedStyle.height);\n\t\t\t\tcontainer.setAttribute(\n\t\t\t\t\t\"data-ww-original-rect-width\",\n\t\t\t\t\trect.width.toString(),\n\t\t\t\t);\n\t\t\t\tcontainer.setAttribute(\n\t\t\t\t\t\"data-ww-original-rect-height\",\n\t\t\t\t\trect.height.toString(),\n\t\t\t\t);\n\t\t\t\tcontainer.setAttribute(\"data-ww-original-dimensions\", \"true\");\n\t\t\t}\n\n\t\t\tthis.showVirtualTryOnImage(container);\n\n\t\t\tthis.updateButtonContainer(container);\n\n\t\t\tconsole.log(\n\t\t\t\t\"[WeWear VTO] Product image replaced with virtual try-on result\",\n\t\t\t);\n\t\t} catch (error) {\n\t\t\tconsole.error(\"[WeWear VTO] Error replacing product image:\", error);\n\t\t}\n\t}\n\n\tprivate showButtonContainer(container: HTMLElement): void {\n\t\tconst buttonContainer = container.querySelector(\n\t\t\t`.${CSS_CLASSES.BUTTON_CONTAINER}`,\n\t\t) as HTMLElement;\n\t\tif (buttonContainer) {\n\t\t\tbuttonContainer.style.display = \"flex\";\n\t\t}\n\t}\n\n\tprivate updateButtonContainer(container: HTMLElement): void {\n\t\tconst existingButtons = container.querySelectorAll(\n\t\t\t`.${CSS_CLASSES.BUTTON_CONTAINER}`,\n\t\t);\n\t\texistingButtons.forEach((btn) => {\n\t\t\tbtn.remove();\n\t\t});\n\n\t\tconst buttonContainer = createButtonContainer(\n\t\t\tthis.config.buttonPosition,\n\t\t\tthis.virtualTryOnImageUrl !== null,\n\t\t\tasync () => {\n\t\t\t\tawait this.handleTryOnClick();\n\t\t\t},\n\t\t\tasync () => {\n\t\t\t\tawait this.handleRegenerateClick();\n\t\t\t},\n\t\t\t() => {\n\t\t\t\tif (this.isShowingVirtualTryOn) {\n\t\t\t\t\tthis.showOriginalImage(container);\n\t\t\t\t} else {\n\t\t\t\t\tthis.showVirtualTryOnImage(container);\n\t\t\t\t}\n\t\t\t\tthis.updateButtonContainer(container);\n\t\t\t},\n\t\t\tthis.isShowingVirtualTryOn,\n\t\t\tasync () => {\n\t\t\t\tawait this.handleSaveClick();\n\t\t\t},\n\t\t\tasync () => {\n\t\t\t\tawait this.handleShareClick();\n\t\t\t},\n\t\t);\n\n\t\tcontainer.appendChild(buttonContainer);\n\t}\n\n\tprivate showVirtualTryOnImage(container: HTMLElement): void {\n\t\tif (!this.virtualTryOnImageUrl) {\n\t\t\tconsole.warn(\"[WeWear VTO] No virtual try-on image URL available\");\n\t\t\treturn;\n\t\t}\n\n\t\tArray.from(container.children).forEach((child) => {\n\t\t\tif (!child.classList.contains(CSS_CLASSES.BUTTON_CONTAINER)) {\n\t\t\t\tchild.remove();\n\t\t\t}\n\t\t});\n\n\t\tconst originalWidth =\n\t\t\tcontainer.getAttribute(\"data-ww-original-width\") || \"\";\n\t\tconst originalHeight =\n\t\t\tcontainer.getAttribute(\"data-ww-original-height\") || \"\";\n\t\tconst originalRectWidth =\n\t\t\tcontainer.getAttribute(\"data-ww-original-rect-width\") || \"\";\n\t\tconst originalRectHeight =\n\t\t\tcontainer.getAttribute(\"data-ww-original-rect-height\") || \"\";\n\n\t\tconst image = document.createElement(\"img\");\n\t\timage.src = this.virtualTryOnImageUrl;\n\t\timage.alt = \"Virtual Try-On Result\";\n\n\t\tlet widthStyle = \"100%\";\n\t\tlet heightStyle = \"100%\";\n\n\t\tif (originalWidth && originalWidth !== \"auto\" && originalWidth !== \"0px\") {\n\t\t\twidthStyle = originalWidth;\n\t\t} else if (originalRectWidth && originalRectWidth !== \"0\") {\n\t\t\twidthStyle = `${originalRectWidth}px`;\n\t\t}\n\n\t\tif (\n\t\t\toriginalHeight &&\n\t\t\toriginalHeight !== \"auto\" &&\n\t\t\toriginalHeight !== \"0px\"\n\t\t) {\n\t\t\theightStyle = originalHeight;\n\t\t} else if (originalRectHeight && originalRectHeight !== \"0\") {\n\t\t\theightStyle = `${originalRectHeight}px`;\n\t\t}\n\n\t\timage.style.cssText = `\n width: ${widthStyle};\n height: ${heightStyle};\n object-fit: contain;\n `;\n\n\t\tcontainer.prepend(image);\n\n\t\tthis.isShowingVirtualTryOn = true;\n\n\t\tthis.updateButtonContainer(container);\n\n\t\tconsole.log(\n\t\t\t\"[WeWear VTO] Product image replaced with virtual try-on result\",\n\t\t);\n\t}\n\n\tprivate showOriginalImage(container: HTMLElement): void {\n\t\tconst originalContentHTML = container.getAttribute(\n\t\t\t\"data-ww-original-content\",\n\t\t);\n\t\tif (originalContentHTML) {\n\t\t\tArray.from(container.children).forEach((child) => {\n\t\t\t\tif (!child.classList.contains(CSS_CLASSES.BUTTON_CONTAINER)) {\n\t\t\t\t\tchild.remove();\n\t\t\t\t}\n\t\t\t});\n\t\t\tconst tempDiv = document.createElement(\"div\");\n\t\t\ttempDiv.innerHTML = originalContentHTML;\n\t\t\tcontainer.append(...Array.from(tempDiv.children));\n\n\t\t\t// Remove temporary attributes used for VTO state\n\t\t\tcontainer.style.paddingBottom = \"\";\n\t\t}\n\n\t\tthis.isShowingVirtualTryOn = false;\n\t}\n\n\tpublic destroy(): void {\n\t\ttry {\n\t\t\tconst container = this.getContainer();\n\t\t\tif (container) {\n\t\t\t\tconst existingButtons = container.querySelectorAll(\n\t\t\t\t\t`.${CSS_CLASSES.BUTTON_CONTAINER}`,\n\t\t\t\t);\n\t\t\t\texistingButtons.forEach((btn) => {\n\t\t\t\t\tbtn.remove();\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tthis.closeModal();\n\n\t\t\tthis.cameraButton = null;\n\n\t\t\tif (this.iframeMessageListener) {\n\t\t\t\twindow.removeEventListener(\"message\", this.iframeMessageListener);\n\t\t\t\tthis.iframeMessageListener = null;\n\t\t\t}\n\n\t\t\tthis.virtualTryOnImageUrl = null;\n\t\t\tthis.isShowingVirtualTryOn = false;\n\t\t\tthis.lastModelImage = null;\n\t\t\tthis.originalProductImages = [];\n\t\t\tthis.preparedTryOnData = null;\n\n\t\t\tconsole.log(\"[WeWear VTO] Widget destroyed successfully\");\n\t\t} catch (error) {\n\t\t\tconsole.error(\"[WeWear VTO] Error during widget destruction:\", error);\n\t\t}\n\t}\n}\n","import type { VirtualTryOnConfig } from \"./index.js\";\nimport { VirtualTryOnWidget } from \"./widget.js\";\n\nlet widgetInstances: VirtualTryOnWidget[] = [];\n\nexport function initVirtualTryOn(config?: VirtualTryOnConfig): void {\n\ttry {\n\t\twidgetInstances.forEach((instance) => {\n\t\t\tinstance.destroy();\n\t\t});\n\t\twidgetInstances = [];\n\n\t\tif (!config) {\n\t\t\tconsole.log(\n\t\t\t\t\"[WeWear VTO] Missing configuration. Widget not initialized.\",\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\n\t\tconst allContainers = Array.from(\n\t\t\tdocument.querySelectorAll(config.gallerySelector),\n\t\t).filter(\n\t\t\t(container): container is HTMLElement => container instanceof HTMLElement,\n\t\t);\n\t\tconst shouldUseSingleton = config.singleton !== false;\n\n\t\tif (allContainers.length > 1 && !shouldUseSingleton) {\n\t\t\twidgetInstances = allContainers.map((galleryElement) => {\n\t\t\t\treturn new VirtualTryOnWidget({\n\t\t\t\t\t...config,\n\t\t\t\t\tgalleryElement,\n\t\t\t\t});\n\t\t\t});\n\t\t} else {\n\t\t\tconst firstContainer = allContainers[0];\n\t\t\twidgetInstances = [\n\t\t\t\tnew VirtualTryOnWidget({\n\t\t\t\t\t...config,\n\t\t\t\t\tgalleryElement: firstContainer,\n\t\t\t\t}),\n\t\t\t];\n\t\t}\n\n\t\tconst initializeWidgets = () => {\n\t\t\twidgetInstances.forEach((widget) => {\n\t\t\t\twidget.init().catch((error) => {\n\t\t\t\t\tconsole.error(\"[WeWear VTO] Failed to initialize:\", error);\n\t\t\t\t});\n\t\t\t});\n\t\t};\n\n\t\tif (document.readyState === \"loading\") {\n\t\t\tdocument.addEventListener(\"DOMContentLoaded\", initializeWidgets, {\n\t\t\t\tonce: true,\n\t\t\t});\n\t\t} else {\n\t\t\tinitializeWidgets();\n\t\t}\n\t} catch (error) {\n\t\tconsole.error(\"[WeWear VTO] Initialization error:\", error);\n\t}\n}\n\nexport function getWidgetInstance(): VirtualTryOnWidget | null {\n\treturn widgetInstances[0] ?? null;\n}\n\nexport function getWidgetInstances(): VirtualTryOnWidget[] {\n\treturn [...widgetInstances];\n}\n\nif (typeof window !== \"undefined\") {\n\tinitVirtualTryOn();\n}\n"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -515,7 +515,7 @@
515
515
  modelTier: this.config.modelTier,
516
516
  outfitID: this.config.outfitID,
517
517
  });
518
- const photoUploadUrl = this.buildPhotoUploadUrl(this.preparedTryOnData.productImages, { startAtConfirm: true });
518
+ const photoUploadUrl = this.buildPhotoUploadUrl(this.preparedTryOnData.productImages);
519
519
  this.showPhotoUploadModal(photoUploadUrl.toString(), {
520
520
  prefillImage: this.lastModelImage,
521
521
  autoSubmit: true,
@@ -593,17 +593,13 @@
593
593
  window.prompt("Copy this link to share your virtual try-on:", shareUrl);
594
594
  }
595
595
  }
596
- buildPhotoUploadUrl(productImages, options) {
596
+ buildPhotoUploadUrl(productImages) {
597
597
  const photoUploadUrl = new URL(`${this.config.baseUrl}`);
598
598
  photoUploadUrl.searchParams.append("ww_product_images", productImages.join(","));
599
599
  if (this.config.outfitID) {
600
600
  photoUploadUrl.searchParams.append("ww_outfit_id", this.config.outfitID);
601
601
  }
602
602
  photoUploadUrl.searchParams.append("ww_user_brand", window.location.href);
603
- if (options === null || options === void 0 ? void 0 : options.startAtConfirm) {
604
- photoUploadUrl.searchParams.append("ww_step", "2");
605
- photoUploadUrl.searchParams.append("ww_regenerate", "1");
606
- }
607
603
  return photoUploadUrl;
608
604
  }
609
605
  getAllProductImages() {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/constants.ts","../src/utils.ts","../src/components/button.ts","../src/widget/modal-manager.ts","../src/widget/vto-api-client.ts","../src/widget.ts","../src/installer.ts"],"sourcesContent":["export const CSS_CLASSES = {\n\tBUTTON_CONTAINER: \"wewear-vto-button-container\",\n\tBUTTON: \"wewear-vto-button\",\n\tMODAL: \"wewear-vto-modal\",\n};\n\nexport const Z_INDEX = {\n\tBUTTON: 10,\n};\n","export function getPositionStyles(position: string): string {\n\tswitch (position) {\n\t\tcase \"bottom-left\":\n\t\t\treturn \"left: 20px; bottom: 20px;\";\n\t\tcase \"top-right\":\n\t\t\treturn \"right: 20px; top: 20px;\";\n\t\tcase \"top-left\":\n\t\t\treturn \"left: 20px; top: 20px;\";\n\t\tdefault:\n\t\t\treturn \"right: 20px; bottom: 20px;\";\n\t}\n}\n","import { CSS_CLASSES, Z_INDEX } from \"../constants.js\";\nimport { getPositionStyles } from \"../utils.js\";\n\nconst CAMERA_ICON = `\n\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"display: block;\">\n\t\t<path d=\"M14.5 4h-5L7 7H4a2 2 0 0 0-2 2v9a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2h-3l-2.5-3z\"></path>\n\t\t<circle cx=\"12\" cy=\"13\" r=\"3\"></circle>\n\t</svg>\n`;\n\nconst SPARKLES_ICON = `\n\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"display: block; flex-shrink: 0;\">\n\t\t<path d=\"M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z\"/>\n\t\t<path d=\"M20 2v4\"/>\n\t\t<path d=\"M22 4h-4\"/>\n\t\t<circle cx=\"4\" cy=\"20\" r=\"2\"/>\n\t</svg>\n`;\n\nconst REFRESH_ICON = `\n\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"display: block;\">\n\t\t<path d=\"M21 12a9 9 0 0 0-9-9 9.75 9.75 0 0 0-6.74 2.74L3 8\"></path>\n\t\t<path d=\"M3 3v5h5\"></path>\n\t\t<path d=\"M3 12a9 9 0 0 0 9 9 9.75 9.75 0 0 0 6.74-2.74L21 16\"></path>\n\t\t<path d=\"M16 16h5v5\"></path>\n\t</svg>\n`;\n\nconst SAVE_ICON = `\n\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"display: block;\">\n\t\t<path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\"></path>\n\t\t<polyline points=\"7 10 12 15 17 10\"></polyline>\n\t\t<line x1=\"12\" y1=\"15\" x2=\"12\" y2=\"3\"></line>\n\t</svg>\n`;\n\nconst SHARE_ICON = `\n\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"display: block;\">\n\t\t<circle cx=\"18\" cy=\"5\" r=\"3\"></circle>\n\t\t<circle cx=\"6\" cy=\"12\" r=\"3\"></circle>\n\t\t<circle cx=\"18\" cy=\"19\" r=\"3\"></circle>\n\t\t<line x1=\"8.59\" y1=\"13.51\" x2=\"15.42\" y2=\"17.49\"></line>\n\t\t<line x1=\"15.41\" y1=\"6.51\" x2=\"8.59\" y2=\"10.49\"></line>\n\t</svg>\n`;\n\nconst CONTAINER_STYLE = `\n\tposition: absolute;\n\tdisplay: flex;\n\tgap: 4px;\n\tborder-radius: 100px;\n\tbackground: white;\n\tpadding: 4px;\n\tbox-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n\tz-index: ${Z_INDEX.BUTTON};\n\ttransition: all 0.2s ease;\n`;\n\nconst ICON_BUTTON_STYLE = `\n\tdisplay: flex;\n\twidth: 40px;\n\theight: 40px;\n\tcursor: pointer;\n\talign-items: center;\n\tjustify-content: center;\n\tborder-radius: 100px;\n\tpadding: 0;\n\tborder: none;\n\ttransition: all 0.2s ease;\n\tflex-shrink: 0;\n`;\n\nconst PRIMARY_STYLE = `${ICON_BUTTON_STYLE}\n\tbackground: white;\n\tcolor: #000000;\n`;\n\nconst CAMERA_HIGHLIGHT_STYLE = `${ICON_BUTTON_STYLE}\n\tbackground: white;\n\tcolor: #333333;\n`;\n\nfunction createIconButton(\n\tclassName: string,\n\tariaLabel: string,\n\ticonHtml: string,\n\tstyleCss: string,\n\tonClick: () => void,\n): HTMLButtonElement {\n\tconst button = document.createElement(\"button\");\n\tbutton.type = \"button\";\n\tbutton.className = className;\n\tbutton.setAttribute(\"aria-label\", ariaLabel);\n\tbutton.style.cssText = styleCss;\n\tbutton.innerHTML = iconHtml;\n\tbutton.onclick = onClick;\n\treturn button;\n}\n\nexport function createButtonContainer(\n\tbuttonPosition: string,\n\thasVirtualTryOn: boolean = false,\n\tonCameraClick: () => void,\n\tonRefreshClick?: () => void,\n\tonToggleClick?: () => void,\n\tisShowingVirtualTryOn: boolean = false,\n\tonSaveClick?: () => void,\n\tonShareClick?: () => void,\n): HTMLElement {\n\tconst container = document.createElement(\"div\");\n\tcontainer.className = `${CSS_CLASSES.BUTTON_CONTAINER} ww-button-group`;\n\n\tconst positionStyles = hasVirtualTryOn\n\t\t? \"right: 20px; top: 20px;\"\n\t\t: getPositionStyles(buttonPosition);\n\tconst directionStyles = hasVirtualTryOn\n\t\t? \"flex-direction: column;\"\n\t\t: \"flex-direction: row;\";\n\tcontainer.style.cssText = `${CONTAINER_STYLE} ${positionStyles} ${directionStyles}`;\n\n\tconst cameraButton = hasVirtualTryOn\n\t\t? createIconButton(\n\t\t\t\t`${CSS_CLASSES.BUTTON} ww-camera-btn`,\n\t\t\t\t\"Virtual Try-On\",\n\t\t\t\tCAMERA_ICON,\n\t\t\t\tCAMERA_HIGHLIGHT_STYLE,\n\t\t\t\tonCameraClick,\n\t\t\t)\n\t\t: createIconButton(\n\t\t\t\t`${CSS_CLASSES.BUTTON} ww-camera-btn`,\n\t\t\t\t\"Virtual Try-On\",\n\t\t\t\t`${SPARKLES_ICON}<span style=\"display: block;\">TRY THIS LOOK</span>`,\n\t\t\t\t`${PRIMARY_STYLE}\n\t\t\t\t\tpadding: 10px 16px;\n\t\t\t\t\tgap: 8px;\n\t\t\t\t\tfont-size: 14px;\n\t\t\t\t\tfont-weight: 600;\n\t\t\t\t\twhite-space: nowrap;\n\t\t\t\t\twidth: auto;\n\t\t\t\t\theight: auto;\n\t\t\t\t`,\n\t\t\t\tonCameraClick,\n\t\t\t);\n\tif (hasVirtualTryOn && onSaveClick) {\n\t\tconst saveButton = createIconButton(\n\t\t\t\"ww-save-btn\",\n\t\t\t\"Save virtual try-on image\",\n\t\t\tSAVE_ICON,\n\t\t\t`${ICON_BUTTON_STYLE}\n\t\t\t\tbackground: white;\n\t\t\t\tcolor: #333333;\n\t\t\t`,\n\t\t\tonSaveClick,\n\t\t);\n\t\tcontainer.appendChild(saveButton);\n\t}\n\n\tif (hasVirtualTryOn && onShareClick) {\n\t\tconst shareButton = createIconButton(\n\t\t\t\"ww-share-btn\",\n\t\t\t\"Share virtual try-on image\",\n\t\t\tSHARE_ICON,\n\t\t\t`${ICON_BUTTON_STYLE}\n\t\t\t\tbackground: white;\n\t\t\t\tcolor: #333333;\n\t\t\t`,\n\t\t\tonShareClick,\n\t\t);\n\t\tcontainer.appendChild(shareButton);\n\t}\n\n\tcontainer.appendChild(cameraButton);\n\n\tif (hasVirtualTryOn) {\n\t\tif (onRefreshClick) {\n\t\t\tconst refreshButton = createIconButton(\n\t\t\t\t\"ww-refresh-btn\",\n\t\t\t\t\"Refresh virtual try-on\",\n\t\t\t\tREFRESH_ICON,\n\t\t\t\t`${ICON_BUTTON_STYLE}\n\t\t\t\t\tbackground: white;\n\t\t\t\t\tcolor: #333333;\n\t\t\t\t`,\n\t\t\t\tonRefreshClick,\n\t\t\t);\n\t\t\tcontainer.appendChild(refreshButton);\n\t\t}\n\n\t\tif (onToggleClick) {\n\t\t\tconst toggleButton = createIconButton(\n\t\t\t\t\"ww-toggle-btn\",\n\t\t\t\tisShowingVirtualTryOn ? \"Show Original Image\" : \"Show Virtual Try-On\",\n\t\t\t\tSPARKLES_ICON,\n\t\t\t\t`${ICON_BUTTON_STYLE}\n\t\t\t\t\tbackground: ${isShowingVirtualTryOn ? \"#333333\" : \"#e5e7eb\"};\n\t\t\t\t\tcolor: ${isShowingVirtualTryOn ? \"white\" : \"#333333\"};\n\t\t\t\t`,\n\t\t\t\tonToggleClick,\n\t\t\t);\n\n\t\t\ttoggleButton.onmouseover = () => {\n\t\t\t\tif (isShowingVirtualTryOn) {\n\t\t\t\t\ttoggleButton.style.background = \"#4a4a4a\";\n\t\t\t\t} else {\n\t\t\t\t\ttoggleButton.style.background = \"#d1d5db\";\n\t\t\t\t}\n\t\t\t};\n\t\t\ttoggleButton.onmouseout = () => {\n\t\t\t\tif (isShowingVirtualTryOn) {\n\t\t\t\t\ttoggleButton.style.background = \"#333333\";\n\t\t\t\t} else {\n\t\t\t\t\ttoggleButton.style.background = \"#e5e7eb\";\n\t\t\t\t}\n\t\t\t};\n\n\t\t\ttoggleButton.onclick = onToggleClick;\n\t\t\tcontainer.appendChild(toggleButton);\n\t\t}\n\t}\n\n\treturn container;\n}\n\nexport function createButton(\n\tbuttonPosition: string,\n\tonClick: () => void,\n\tdisabled: boolean = false,\n): HTMLElement {\n\tconst container = createButtonContainer(buttonPosition, false, onClick);\n\tconst cameraButton = container.querySelector(\n\t\t\".ww-camera-btn\",\n\t) as HTMLButtonElement;\n\tif (cameraButton) {\n\t\tcameraButton.disabled = disabled;\n\t\tif (disabled) {\n\t\t\tcameraButton.style.opacity = \"0.5\";\n\t\t\tcameraButton.style.cursor = \"not-allowed\";\n\t\t\tcameraButton.title = \"Find your ideal size first\";\n\t\t}\n\t}\n\treturn container;\n}\n","import { CSS_CLASSES } from \"../constants.js\";\n\nexport type ModalControlMessageType =\n\t| \"VTO_SCAN_START\"\n\t| \"VTO_SCAN_STOP\"\n\t| \"VTO_SCAN_COMPLETE\";\n\nexport interface ModalOpenOptions {\n\tprefillImage?: Blob;\n\tautoSubmit?: boolean;\n}\n\ninterface PendingModalPrefill {\n\timage: Blob;\n\tautoSubmit: boolean;\n}\n\nexport class ModalManager {\n\tprivate modalElement: HTMLElement | null = null;\n\tprivate pendingModalPrefill: PendingModalPrefill | null = null;\n\tprivate modalOrigin: string;\n\n\tconstructor(baseUrl: string) {\n\t\tthis.modalOrigin = new URL(baseUrl).origin;\n\t}\n\n\topen(\n\t\turl: string,\n\t\toptions: ModalOpenOptions | undefined,\n\t\tonClose: () => void,\n\t) {\n\t\tthis.close();\n\t\tthis.modalOrigin = new URL(url).origin;\n\t\tthis.pendingModalPrefill = options?.prefillImage\n\t\t\t? {\n\t\t\t\t\timage: options.prefillImage,\n\t\t\t\t\tautoSubmit: options.autoSubmit === true,\n\t\t\t\t}\n\t\t\t: null;\n\n\t\tconst modal = document.createElement(\"div\");\n\t\tmodal.className = CSS_CLASSES.MODAL;\n\t\tmodal.style.cssText = `\n\t\t\tposition: fixed;\n\t\t\ttop: 0;\n\t\t\tleft: 0;\n\t\t\tright: 0;\n\t\t\tbottom: 0;\n\t\t\twidth: 100%;\n\t\t\theight: 100%;\n\t\t\tbackground-color: rgba(0, 0, 0, 0.8);\n\t\t\tdisplay: flex;\n\t\t\tjustify-content: center;\n\t\t\talign-items: center;\n\t\t\tz-index: 999999999;\n\t\t\tanimation: ww-modal-fade-in 0.3s ease;\n\t\t`;\n\n\t\tif (!document.getElementById(\"ww-modal-animation\")) {\n\t\t\tconst style = document.createElement(\"style\");\n\t\t\tstyle.id = \"ww-modal-animation\";\n\t\t\tstyle.textContent = `\n\t\t\t\t@keyframes ww-modal-fade-in {\n\t\t\t\t\tfrom { opacity: 0; }\n\t\t\t\t\tto { opacity: 1; }\n\t\t\t\t}\n\t\t\t\t@keyframes ww-modal-scale-in {\n\t\t\t\t\tfrom { transform: scale(0.95); opacity: 0; }\n\t\t\t\t\tto { transform: scale(1); opacity: 1; }\n\t\t\t\t}\n\t\t\t`;\n\t\t\tdocument.head.appendChild(style);\n\t\t}\n\n\t\tconst iframeContainer = document.createElement(\"div\");\n\t\tiframeContainer.style.cssText = `\n\t\t\tposition: relative;\n\t\t\twidth: 90%;\n\t\t\theight: 90%;\n\t\t\tmax-width: 480px;\n\t\t\tmax-height: 720px;\n\t\t\tborder-radius: 20px;\n\t\t\toverflow: hidden;\n\t\t\tbox-shadow: 0 24px 48px rgba(0, 0, 0, 0.3), 0 12px 24px rgba(0, 0, 0, 0.2);\n\t\t\tanimation: ww-modal-scale-in 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n\t\t\tbackground: white;\n\t\t`;\n\n\t\tconst iframe = document.createElement(\"iframe\");\n\t\tiframe.src = url;\n\t\tiframe.style.cssText = `\n\t\t\twidth: 100%;\n\t\t\theight: 100%;\n\t\t\tborder: none;\n\t\t`;\n\n\t\tconst closeButton = document.createElement(\"button\");\n\t\tcloseButton.innerHTML = `\n\t\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n\t\t\t\t<line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"></line>\n\t\t\t\t<line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"></line>\n\t\t\t</svg>\n\t\t`;\n\t\tcloseButton.setAttribute(\"aria-label\", \"Close modal\");\n\t\tcloseButton.style.cssText = `\n\t\t\tposition: absolute;\n\t\t\ttop: -48px;\n\t\t\tright: 0;\n\t\t\tbackground: rgba(255, 255, 255, 0.95);\n\t\t\tbackdrop-filter: blur(8px);\n\t\t\t-webkit-backdrop-filter: blur(8px);\n\t\t\tborder: none;\n\t\t\tborder-radius: 50%;\n\t\t\twidth: 40px;\n\t\t\theight: 40px;\n\t\t\tcursor: pointer;\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t\tjustify-content: center;\n\t\t\tcolor: #1f2937;\n\t\t\ttransition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n\t\t\tbox-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);\n\t\t`;\n\t\tcloseButton.onmouseover = () => {\n\t\t\tcloseButton.style.transform = \"scale(1.1) rotate(90deg)\";\n\t\t\tcloseButton.style.background = \"#ef4444\";\n\t\t\tcloseButton.style.color = \"white\";\n\t\t};\n\t\tcloseButton.onmouseout = () => {\n\t\t\tcloseButton.style.transform = \"scale(1) rotate(0deg)\";\n\t\t\tcloseButton.style.background = \"rgba(255, 255, 255, 0.95)\";\n\t\t\tcloseButton.style.color = \"#1f2937\";\n\t\t};\n\t\tcloseButton.onclick = () => {\n\t\t\tmodal.style.opacity = \"0\";\n\t\t\tiframeContainer.style.transform = \"scale(0.95)\";\n\t\t\tiframeContainer.style.opacity = \"0\";\n\t\t\tsetTimeout(onClose, 300);\n\t\t};\n\n\t\tiframeContainer.appendChild(iframe);\n\t\tiframeContainer.appendChild(closeButton);\n\t\tmodal.appendChild(iframeContainer);\n\t\tdocument.body.appendChild(modal);\n\n\t\tmodal.onclick = (e) => {\n\t\t\tif (e.target === modal) {\n\t\t\t\tcloseButton.click();\n\t\t\t}\n\t\t};\n\n\t\tthis.modalElement = modal;\n\t}\n\n\tclose() {\n\t\tif (this.modalElement) {\n\t\t\tthis.modalElement.remove();\n\t\t\tthis.modalElement = null;\n\t\t}\n\t\tthis.pendingModalPrefill = null;\n\t}\n\n\tsendPendingPrefillToModal() {\n\t\tif (!this.pendingModalPrefill || !this.modalElement) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst iframe = this.modalElement.querySelector(\"iframe\");\n\t\tif (!(iframe instanceof HTMLIFrameElement) || !iframe.contentWindow) {\n\t\t\treturn;\n\t\t}\n\n\t\tiframe.contentWindow.postMessage(\n\t\t\t{\n\t\t\t\ttype: \"VTO_PREFILL_IMAGE\",\n\t\t\t\timage: this.pendingModalPrefill.image,\n\t\t\t\tautoSubmit: this.pendingModalPrefill.autoSubmit,\n\t\t\t},\n\t\t\tthis.modalOrigin,\n\t\t);\n\t\t// Fallback for production setups where iframe origin differs after redirects.\n\t\tiframe.contentWindow.postMessage(\n\t\t\t{\n\t\t\t\ttype: \"VTO_PREFILL_IMAGE\",\n\t\t\t\timage: this.pendingModalPrefill.image,\n\t\t\t\tautoSubmit: this.pendingModalPrefill.autoSubmit,\n\t\t\t},\n\t\t\t\"*\",\n\t\t);\n\t\tthis.pendingModalPrefill = null;\n\t}\n\n\tpostMessageToModal(type: ModalControlMessageType) {\n\t\tif (!this.modalElement) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst iframe = this.modalElement.querySelector(\"iframe\");\n\t\tif (!(iframe instanceof HTMLIFrameElement) || !iframe.contentWindow) {\n\t\t\treturn;\n\t\t}\n\n\t\tiframe.contentWindow.postMessage({ type }, this.modalOrigin);\n\t\t// Fallback for production setups where iframe origin differs after redirects.\n\t\tiframe.contentWindow.postMessage({ type }, \"*\");\n\t}\n}\n","export type JobStatus = \"PENDING\" | \"COMPLETED\" | \"FAILED\";\n\nexport interface JobStatusResponse {\n\tstatus: JobStatus;\n\tmessage: string;\n}\n\ninterface SubmitTryOnOptions {\n\tmodelTier: string;\n\toutfitID: string;\n}\n\nexport interface PreparedTryOnData {\n\tmodelTier: string;\n\toutfitID: string;\n\tproductImages: string[];\n\tgeminiModel: string | null;\n\tadditionalPrompt: string | null;\n}\n\nexport class VtoApiClient {\n\tconstructor(private readonly baseUrl: string) {}\n\n\tasync submitTryOn(\n\t\tmodelImage: Blob,\n\t\tproductImages: string[],\n\t\toptions: SubmitTryOnOptions,\n\t\tpreparedData?: PreparedTryOnData,\n\t): Promise<{ job_id: string }> {\n\t\tconst resolved =\n\t\t\tpreparedData ?? (await this.prepareTryOnData(productImages, options));\n\n\t\tconst formData = new FormData();\n\t\tformData.append(\"model_image\", modelImage, \"model_image.png\");\n\t\tformData.append(\n\t\t\t\"product_image_urls\",\n\t\t\tJSON.stringify(resolved.productImages),\n\t\t);\n\t\tformData.append(\"page_url\", window.location.href);\n\t\tformData.append(\"model_tier\", resolved.modelTier);\n\t\tif (resolved.geminiModel)\n\t\t\tformData.append(\"gemini_model\", resolved.geminiModel);\n\t\tif (resolved.additionalPrompt) {\n\t\t\tformData.append(\"additional_prompt\", resolved.additionalPrompt);\n\t\t}\n\n\t\tif (resolved.outfitID) formData.append(\"outfit_id\", resolved.outfitID);\n\n\t\tconst res = await fetch(`${this.baseUrl}/api/vto`, {\n\t\t\tmethod: \"POST\",\n\t\t\tbody: formData,\n\t\t});\n\t\tif (!res.ok) {\n\t\t\tconst errorText = await res.text();\n\t\t\tconsole.error(\n\t\t\t\t\"[WeWear VTO] API submission failed:\",\n\t\t\t\tres.status,\n\t\t\t\terrorText,\n\t\t\t);\n\t\t\tthrow new Error(`API submission failed: ${res.status}`);\n\t\t}\n\t\treturn res.json();\n\t}\n\n\tasync prepareTryOnData(\n\t\tproductImages: string[],\n\t\toptions: SubmitTryOnOptions,\n\t): Promise<PreparedTryOnData> {\n\t\tconst outfitID = options.outfitID?.trim() ?? \"\";\n\n\t\treturn {\n\t\t\tmodelTier: options.modelTier,\n\t\t\toutfitID,\n\t\t\tproductImages,\n\t\t\tgeminiModel: null,\n\t\t\tadditionalPrompt: null,\n\t\t};\n\t}\n\n\tasync fetchJobStatus(jobId: string): Promise<JobStatusResponse> {\n\t\tconst res = await fetch(`${this.baseUrl}/api/vto/status?job_id=${jobId}`);\n\t\tif (!res.ok) throw new Error(`Status check failed: ${res.status}`);\n\t\treturn res.json();\n\t}\n\n\tasync fetchJobImage(jobId: string): Promise<string> {\n\t\tconst url = `${this.baseUrl}/api/vto/image?job_id=${jobId}`;\n\n\t\tconst res = await fetch(url);\n\t\tif (res.status === 202) throw new Error(\"202_PROCESSING\");\n\t\tif (!res.ok) throw new Error(`Image fetch failed: ${res.status}`);\n\n\t\tconst blob = await res.blob();\n\t\treturn URL.createObjectURL(blob);\n\t}\n}\n","import { createButton, createButtonContainer } from \"./components/index.js\";\nimport { CSS_CLASSES } from \"./constants.js\";\nimport type { VirtualTryOnConfig } from \"./index.js\";\nimport {\n\tModalManager,\n\ttype ModalControlMessageType,\n\ttype ModalOpenOptions,\n} from \"./widget/modal-manager.js\";\nimport {\n\tVtoApiClient,\n\ttype PreparedTryOnData,\n} from \"./widget/vto-api-client.js\";\n\nexport class VirtualTryOnWidget {\n\tprivate static instanceCounter = 0;\n\tprivate static activeWidgetId: number | null = null;\n\tprivate static readonly ERROR_TOAST_MESSAGE =\n\t\t\"Virtual try-on is temporarily unavailable due to high traffic on Google services. Please try again in a moment.\";\n\tprivate readonly config: VirtualTryOnConfig;\n\tprivate readonly instanceId: number;\n\tprivate virtualTryOnImageUrl: string | null = null;\n\tprivate originalProductImages: string[] = []; // Store all original product images\n\tprivate preparedTryOnData: PreparedTryOnData | null = null;\n\tprivate isShowingVirtualTryOn: boolean = false;\n\tprivate lastModelImage: Blob | null = null;\n\tprivate cameraButton: HTMLButtonElement | null = null;\n\tprivate readonly modal: ModalManager;\n\tprivate readonly vtoApiClient: VtoApiClient;\n\tprivate iframeMessageListener: ((event: MessageEvent) => void) | null = null;\n\n\tconstructor(config: VirtualTryOnConfig) {\n\t\tthis.instanceId = ++VirtualTryOnWidget.instanceCounter;\n\t\tthis.config = {\n\t\t\tbaseUrl: config.baseUrl,\n\t\t\tproductPageSelector: config.productPageSelector,\n\t\t\tgallerySelector: config.gallerySelector,\n\t\t\tproductImageSelector: config.productImageSelector,\n\t\t\tbuttonPosition: config.buttonPosition,\n\t\t\tmodelTier: config.modelTier,\n\t\t\toutfitID: config.outfitID,\n\t\t\tsingleton: config.singleton,\n\t\t\tgalleryElement: config.galleryElement,\n\t\t};\n\t\tthis.modal = new ModalManager(this.config.baseUrl);\n\t\tthis.vtoApiClient = new VtoApiClient(this.config.baseUrl);\n\t}\n\n\tprivate getContainer(): HTMLElement | null {\n\t\tconst configContainer = this.config.galleryElement;\n\t\tif (configContainer?.isConnected) {\n\t\t\treturn configContainer;\n\t\t}\n\n\t\tconst queriedContainer = document.querySelector(\n\t\t\tthis.config.gallerySelector,\n\t\t);\n\t\treturn queriedContainer instanceof HTMLElement ? queriedContainer : null;\n\t}\n\n\tpublic async init(): Promise<void> {\n\t\ttry {\n\t\t\tconst selectors = this.config.productPageSelector;\n\t\t\tconst currentPath = window.location.pathname;\n\t\t\tconst matches = selectors.some((sel) => currentPath.includes(sel));\n\t\t\tif (!matches) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst container = this.getContainer();\n\t\t\tif (!container) {\n\t\t\t\tconsole.warn(\n\t\t\t\t\t\"[WeWear VTO] Gallery container not found:\",\n\t\t\t\t\tthis.config.gallerySelector,\n\t\t\t\t);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (getComputedStyle(container).position === \"static\") {\n\t\t\t\tcontainer.style.position = \"relative\";\n\t\t\t}\n\n\t\t\tconst button = createButton(this.config.buttonPosition, async () => {\n\t\t\t\tif (this.cameraButton && !this.cameraButton.disabled) {\n\t\t\t\t\tawait this.handleTryOnClick();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.cameraButton = button.querySelector(\".ww-camera-btn\");\n\t\t\tcontainer.appendChild(button);\n\t\t\tconsole.log(\"[WeWear VTO] Widget initialized successfully\");\n\n\t\t\tthis.setupIframeListener();\n\t\t} catch (error) {\n\t\t\tconsole.error(\"[WeWear VTO] Initialization failed:\", error);\n\t\t}\n\t}\n\n\tprivate async handleTryOnClick(): Promise<void> {\n\t\tconsole.log(\"[WeWear VTO] Button clicked, starting try-on process...\");\n\n\t\ttry {\n\t\t\tif (this.originalProductImages.length === 0) {\n\t\t\t\tthis.originalProductImages = this.getAllProductImages();\n\t\t\t\tconsole.log(\n\t\t\t\t\t\"[WeWear VTO] Stored original product images:\",\n\t\t\t\t\tthis.originalProductImages,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconsole.log(\"[WeWear VTO] Retrieved data:\", {\n\t\t\t\tproductImages: this.originalProductImages,\n\t\t\t});\n\n\t\t\tif (this.originalProductImages.length === 0) {\n\t\t\t\tconsole.warn(\n\t\t\t\t\t\"[WeWear VTO] Product images not found:\",\n\t\t\t\t\tthis.config.productImageSelector,\n\t\t\t\t);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.preparedTryOnData = await this.vtoApiClient.prepareTryOnData(\n\t\t\t\tthis.originalProductImages,\n\t\t\t\t{\n\t\t\t\t\tmodelTier: this.config.modelTier,\n\t\t\t\t\toutfitID: this.config.outfitID,\n\t\t\t\t},\n\t\t\t);\n\n\t\t\tconst photoUploadUrl = this.buildPhotoUploadUrl(\n\t\t\t\tthis.preparedTryOnData.productImages,\n\t\t\t);\n\t\t\tthis.showPhotoUploadModal(photoUploadUrl.toString());\n\t\t} catch (error) {\n\t\t\tconsole.error(\"[WeWear VTO] Try-on request failed:\", error);\n\t\t}\n\t}\n\n\tprivate async handleRegenerateClick(): Promise<void> {\n\t\tif (!this.lastModelImage) {\n\t\t\tawait this.handleTryOnClick();\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.originalProductImages.length === 0) {\n\t\t\tthis.originalProductImages = this.getAllProductImages();\n\t\t}\n\n\t\tif (this.originalProductImages.length === 0) {\n\t\t\tconsole.warn(\"[WeWear VTO] No product images found for regenerate.\");\n\t\t\treturn;\n\t\t}\n\n\t\tthis.preparedTryOnData = await this.vtoApiClient.prepareTryOnData(\n\t\t\tthis.originalProductImages,\n\t\t\t{\n\t\t\t\tmodelTier: this.config.modelTier,\n\t\t\t\toutfitID: this.config.outfitID,\n\t\t\t},\n\t\t);\n\n\t\tconst photoUploadUrl = this.buildPhotoUploadUrl(\n\t\t\tthis.preparedTryOnData.productImages,\n\t\t\t{ startAtConfirm: true },\n\t\t);\n\t\tthis.showPhotoUploadModal(photoUploadUrl.toString(), {\n\t\t\tprefillImage: this.lastModelImage,\n\t\t\tautoSubmit: true,\n\t\t});\n\t}\n\n\tprivate async handleSaveClick(): Promise<void> {\n\t\tif (!this.virtualTryOnImageUrl) {\n\t\t\tconsole.warn(\"[WeWear VTO] No virtual try-on image available to save.\");\n\t\t\treturn;\n\t\t}\n\n\t\ttry {\n\t\t\tconst response = await fetch(this.virtualTryOnImageUrl);\n\t\t\tconst imageBlob = await response.blob();\n\t\t\tconst objectUrl = URL.createObjectURL(imageBlob);\n\n\t\t\tconst link = document.createElement(\"a\");\n\t\t\tlink.href = objectUrl;\n\t\t\tlink.download = `wewear-vto-${Date.now()}.png`;\n\t\t\tdocument.body.appendChild(link);\n\t\t\tlink.click();\n\t\t\tlink.remove();\n\t\t\tURL.revokeObjectURL(objectUrl);\n\t\t} catch (error) {\n\t\t\tconsole.error(\"[WeWear VTO] Failed to save virtual try-on image:\", error);\n\t\t\twindow.open(this.virtualTryOnImageUrl, \"_blank\");\n\t\t}\n\t}\n\n\tprivate async handleShareClick(): Promise<void> {\n\t\tif (!this.virtualTryOnImageUrl) {\n\t\t\tconsole.warn(\"[WeWear VTO] No virtual try-on image available to share.\");\n\t\t\treturn;\n\t\t}\n\n\t\tconst shareUrl = this.virtualTryOnImageUrl;\n\n\t\ttry {\n\t\t\tif (navigator.share && navigator.canShare) {\n\t\t\t\tconst response = await fetch(shareUrl);\n\t\t\t\tconst imageBlob = await response.blob();\n\t\t\t\tconst imageFile = new File([imageBlob], \"wewear-vto.png\", {\n\t\t\t\t\ttype: imageBlob.type || \"image/png\",\n\t\t\t\t});\n\n\t\t\t\tif (navigator.canShare({ files: [imageFile] })) {\n\t\t\t\t\tawait navigator.share({\n\t\t\t\t\t\ttitle: \"My virtual try-on look\",\n\t\t\t\t\t\ttext: \"Check out my virtual try-on look.\",\n\t\t\t\t\t\tfiles: [imageFile],\n\t\t\t\t\t});\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (navigator.share) {\n\t\t\t\tawait navigator.share({\n\t\t\t\t\ttitle: \"My virtual try-on look\",\n\t\t\t\t\ttext: \"Check out my virtual try-on look.\",\n\t\t\t\t\turl: shareUrl,\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconsole.error(\"[WeWear VTO] Native share failed:\", error);\n\t\t}\n\n\t\ttry {\n\t\t\tif (navigator.clipboard?.writeText) {\n\t\t\t\tawait navigator.clipboard.writeText(shareUrl);\n\t\t\t\twindow.alert(\"Virtual try-on link copied. You can paste it to share.\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconsole.error(\"[WeWear VTO] Clipboard copy failed:\", error);\n\t\t}\n\n\t\tconst newWindow = window.open(shareUrl, \"_blank\");\n\t\tif (!newWindow) {\n\t\t\twindow.prompt(\"Copy this link to share your virtual try-on:\", shareUrl);\n\t\t}\n\t}\n\n\tprivate buildPhotoUploadUrl(\n\t\tproductImages: string[],\n\t\toptions?: { startAtConfirm?: boolean },\n\t): URL {\n\t\tconst photoUploadUrl = new URL(`${this.config.baseUrl}`);\n\n\t\tphotoUploadUrl.searchParams.append(\n\t\t\t\"ww_product_images\",\n\t\t\tproductImages.join(\",\"),\n\t\t);\n\t\tif (this.config.outfitID) {\n\t\t\tphotoUploadUrl.searchParams.append(\"ww_outfit_id\", this.config.outfitID);\n\t\t}\n\t\tphotoUploadUrl.searchParams.append(\"ww_user_brand\", window.location.href);\n\t\tif (options?.startAtConfirm) {\n\t\t\tphotoUploadUrl.searchParams.append(\"ww_step\", \"2\");\n\t\t\tphotoUploadUrl.searchParams.append(\"ww_regenerate\", \"1\");\n\t\t}\n\t\treturn photoUploadUrl;\n\t}\n\n\tprivate getAllProductImages(): string[] {\n\t\tconst container = this.getContainer();\n\t\tconst scopedElements = container?.querySelectorAll(\n\t\t\tthis.config.productImageSelector,\n\t\t);\n\t\tconst fallbackElements = document.querySelectorAll(\n\t\t\tthis.config.productImageSelector,\n\t\t);\n\t\tconst productImageElements = (\n\t\t\tscopedElements?.length ? scopedElements : fallbackElements\n\t\t) as NodeListOf<HTMLImageElement>;\n\n\t\tconst images: string[] = [];\n\n\t\tproductImageElements.forEach((img) => {\n\t\t\tconst imageUrl =\n\t\t\t\timg.src ||\n\t\t\t\timg.getAttribute(\"data-src\") ||\n\t\t\t\timg.getAttribute(\"data-large_image\") ||\n\t\t\t\t\"\";\n\n\t\t\tif (\n\t\t\t\timageUrl &&\n\t\t\t\t(imageUrl.startsWith(\"http://\") || imageUrl.startsWith(\"https://\")) &&\n\t\t\t\t!images.includes(imageUrl)\n\t\t\t) {\n\t\t\t\timages.push(imageUrl);\n\t\t\t}\n\t\t});\n\n\t\treturn images;\n\t}\n\n\tprivate showPhotoUploadModal(url: string, options?: ModalOpenOptions): void {\n\t\tthis.closeModal();\n\t\tVirtualTryOnWidget.activeWidgetId = this.instanceId;\n\t\tthis.modal.open(url, options, () => this.closeModal());\n\t}\n\n\tprivate closeModal(): void {\n\t\tthis.modal.close();\n\t\tif (VirtualTryOnWidget.activeWidgetId === this.instanceId) {\n\t\t\tVirtualTryOnWidget.activeWidgetId = null;\n\t\t}\n\t}\n\n\tprivate showErrorToast(message: string): void {\n\t\tconst existingToast = document.getElementById(\"ww-vto-error-toast\");\n\t\tif (existingToast) {\n\t\t\texistingToast.remove();\n\t\t}\n\n\t\tconst toast = document.createElement(\"div\");\n\t\ttoast.id = \"ww-vto-error-toast\";\n\t\ttoast.setAttribute(\"role\", \"status\");\n\t\ttoast.setAttribute(\"aria-live\", \"polite\");\n\t\ttoast.style.cssText = `\n\t\t\tposition: fixed;\n\t\t\tleft: 50%;\n\t\t\tbottom: 24px;\n\t\t\ttransform: translateX(-50%);\n\t\t\tz-index: 2147483647;\n\t\t\tmax-width: min(92vw, 460px);\n\t\t\tpadding: 12px 14px;\n\t\t\tborder-radius: 12px;\n\t\t\tbackground: #ffffff;\n\t\t\tcolor: #111827;\n\t\t\tborder: 1px solid #e5e7eb;\n\t\t\tfont-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Arial, sans-serif;\n\t\t\tfont-size: 14px;\n\t\t\tline-height: 1.35;\n\t\t\tbox-shadow: 0 10px 32px rgba(0, 0, 0, 0.16);\n\t\t\topacity: 0;\n\t\t\ttransition: opacity 180ms ease;\n\t\t`;\n\n\t\tconst content = document.createElement(\"div\");\n\t\tcontent.style.cssText = `\n\t\t\tdisplay: flex;\n\t\t\talign-items: flex-start;\n\t\t\tgap: 10px;\n\t\t`;\n\n\t\tconst text = document.createElement(\"div\");\n\t\ttext.style.cssText = \"flex: 1;\";\n\t\ttext.textContent = message;\n\n\t\tconst closeButton = document.createElement(\"button\");\n\t\tcloseButton.type = \"button\";\n\t\tcloseButton.setAttribute(\"aria-label\", \"Close message\");\n\t\tcloseButton.textContent = \"Close\";\n\t\tcloseButton.style.cssText = `\n\t\t\tborder: none;\n\t\t\tbackground: transparent;\n\t\t\tcolor: #111827;\n\t\t\tfont-size: 12px;\n\t\t\tfont-weight: 600;\n\t\t\tcursor: pointer;\n\t\t\tpadding: 0;\n\t\t\tline-height: 1.2;\n\t\t\twhite-space: nowrap;\n\t\t`;\n\t\tcloseButton.onclick = () => {\n\t\t\ttoast.style.opacity = \"0\";\n\t\t\twindow.setTimeout(() => toast.remove(), 220);\n\t\t};\n\n\t\tcontent.appendChild(text);\n\t\tcontent.appendChild(closeButton);\n\t\ttoast.appendChild(content);\n\t\tdocument.body.appendChild(toast);\n\n\t\trequestAnimationFrame(() => {\n\t\t\ttoast.style.opacity = \"1\";\n\t\t});\n\t}\n\n\tprivate sendPendingPrefillToModal(): void {\n\t\tthis.modal.sendPendingPrefillToModal();\n\t}\n\n\tprivate postMessageToModal(type: ModalControlMessageType): void {\n\t\tthis.modal.postMessageToModal(type);\n\t}\n\n\tprivate setupIframeListener(): void {\n\t\tif (this.iframeMessageListener) {\n\t\t\twindow.removeEventListener(\"message\", this.iframeMessageListener);\n\t\t}\n\n\t\tthis.iframeMessageListener = (event: MessageEvent) => {\n\t\t\tif (VirtualTryOnWidget.activeWidgetId !== this.instanceId) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (event.origin !== new URL(this.config.baseUrl).origin) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tswitch (event.data.type) {\n\t\t\t\tcase \"VTO_CONFIRM_READY\":\n\t\t\t\t\tthis.sendPendingPrefillToModal();\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"VTO_IMAGE_SELECTED\":\n\t\t\t\t\tif (event.data.image) {\n\t\t\t\t\t\tthis.lastModelImage = event.data.image;\n\t\t\t\t\t\tthis.postMessageToModal(\"VTO_SCAN_START\");\n\t\t\t\t\t\tthis.startVirtualTryOn();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"CLOSE_MODAL\":\n\t\t\t\t\tthis.closeModal();\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t};\n\n\t\twindow.addEventListener(\"message\", this.iframeMessageListener);\n\t}\n\n\tprivate async startVirtualTryOn(isRefresh = false): Promise<void> {\n\t\tif (isRefresh) {\n\t\t\tconsole.log(\n\t\t\t\t\"[WeWear VTO] Refreshing virtual try-on with previous parameters...\",\n\t\t\t);\n\t\t}\n\n\t\tif (!this.lastModelImage) {\n\t\t\tconsole.warn(\n\t\t\t\t\"[WeWear VTO] Missing required data to start virtual try-on.\",\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.originalProductImages.length === 0) {\n\t\t\tthis.originalProductImages = this.getAllProductImages();\n\t\t}\n\n\t\tif (this.originalProductImages.length === 0) {\n\t\t\tconsole.warn(\"[WeWear VTO] No product images found.\");\n\t\t\treturn;\n\t\t}\n\n\t\tif (!this.preparedTryOnData) {\n\t\t\tthis.preparedTryOnData = await this.vtoApiClient.prepareTryOnData(\n\t\t\t\tthis.originalProductImages,\n\t\t\t\t{\n\t\t\t\t\tmodelTier: this.config.modelTier,\n\t\t\t\t\toutfitID: this.config.outfitID,\n\t\t\t\t},\n\t\t\t);\n\t\t}\n\n\t\tconst container = this.getContainer();\n\t\tlet shouldShowErrorToast = false;\n\n\t\ttry {\n\t\t\tconst submitResponse = await this.vtoApiClient.submitTryOn(\n\t\t\t\tthis.lastModelImage,\n\t\t\t\tthis.preparedTryOnData.productImages,\n\t\t\t\t{\n\t\t\t\t\tmodelTier: this.config.modelTier,\n\t\t\t\t\toutfitID: this.config.outfitID,\n\t\t\t\t},\n\t\t\t\tthis.preparedTryOnData,\n\t\t\t);\n\n\t\t\tlet status = await this.vtoApiClient.fetchJobStatus(\n\t\t\t\tsubmitResponse.job_id,\n\t\t\t);\n\n\t\t\twhile (status.status !== \"COMPLETED\" && status.status !== \"FAILED\") {\n\t\t\t\tawait new Promise((r) => setTimeout(r, 3000));\n\t\t\t\tstatus = await this.vtoApiClient.fetchJobStatus(submitResponse.job_id);\n\t\t\t}\n\n\t\t\tif (status.status === \"COMPLETED\") {\n\t\t\t\tconst finalImage = await this.vtoApiClient.fetchJobImage(\n\t\t\t\t\tsubmitResponse.job_id,\n\t\t\t\t);\n\t\t\t\tif (finalImage) {\n\t\t\t\t\tthis.postMessageToModal(\"VTO_SCAN_COMPLETE\");\n\t\t\t\t\tawait new Promise((r) => setTimeout(r, 500));\n\t\t\t\t\tthis.replaceProductImage(finalImage);\n\t\t\t\t}\n\t\t\t\tif (container instanceof HTMLElement) {\n\t\t\t\t\tthis.showButtonContainer(container);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (status.status === \"FAILED\") {\n\t\t\t\tconsole.error(\"[WeWear VTO] VTO process failed:\", status.message);\n\t\t\t\tshouldShowErrorToast = true;\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconsole.error(\"[WeWear VTO] Error during virtual try-on process:\", error);\n\t\t\tshouldShowErrorToast = true;\n\t\t} finally {\n\t\t\tthis.postMessageToModal(\"VTO_SCAN_STOP\");\n\t\t\tif (container instanceof HTMLElement) {\n\t\t\t\tthis.showButtonContainer(container);\n\t\t\t}\n\t\t\tif (shouldShowErrorToast) {\n\t\t\t\tthis.showErrorToast(VirtualTryOnWidget.ERROR_TOAST_MESSAGE);\n\t\t\t\tawait new Promise((r) => setTimeout(r, 500));\n\t\t\t}\n\t\t\tthis.closeModal();\n\t\t}\n\t}\n\n\tprivate replaceProductImage(imageUrl: string): void {\n\t\ttry {\n\t\t\tthis.virtualTryOnImageUrl = imageUrl;\n\n\t\t\tconst container = this.getContainer();\n\t\t\tif (!container) {\n\t\t\t\tconsole.warn(\n\t\t\t\t\t\"[WeWear VTO] Gallery container not found for image replacement:\",\n\t\t\t\t\tthis.config.gallerySelector,\n\t\t\t\t);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!container.hasAttribute(\"data-ww-original-content\")) {\n\t\t\t\tcontainer.setAttribute(\"data-ww-original-content\", container.innerHTML);\n\t\t\t}\n\n\t\t\tif (!container.hasAttribute(\"data-ww-container-locked\")) {\n\t\t\t\tconst containerRect = container.getBoundingClientRect();\n\n\t\t\t\tcontainer.setAttribute(\n\t\t\t\t\t\"data-ww-container-width\",\n\t\t\t\t\tcontainerRect.width.toString(),\n\t\t\t\t);\n\t\t\t\tcontainer.setAttribute(\n\t\t\t\t\t\"data-ww-container-height\",\n\t\t\t\t\tcontainerRect.height.toString(),\n\t\t\t\t);\n\n\t\t\t\tcontainer.style.width = `${containerRect.width}px`;\n\t\t\t\tcontainer.style.height = `${containerRect.height}px`;\n\t\t\t\tcontainer.style.minWidth = `${containerRect.width}px`;\n\t\t\t\tcontainer.style.minHeight = `${containerRect.height}px`;\n\n\t\t\t\tcontainer.style.paddingBottom = \"0\";\n\n\t\t\t\tcontainer.setAttribute(\"data-ww-container-locked\", \"true\");\n\t\t\t}\n\n\t\t\tconst originalImg = container.querySelector(\"img\");\n\t\t\tif (\n\t\t\t\toriginalImg &&\n\t\t\t\t!container.hasAttribute(\"data-ww-original-dimensions\")\n\t\t\t) {\n\t\t\t\tconst computedStyle = window.getComputedStyle(originalImg);\n\t\t\t\tconst rect = originalImg.getBoundingClientRect();\n\t\t\t\tcontainer.setAttribute(\"data-ww-original-width\", computedStyle.width);\n\t\t\t\tcontainer.setAttribute(\"data-ww-original-height\", computedStyle.height);\n\t\t\t\tcontainer.setAttribute(\n\t\t\t\t\t\"data-ww-original-rect-width\",\n\t\t\t\t\trect.width.toString(),\n\t\t\t\t);\n\t\t\t\tcontainer.setAttribute(\n\t\t\t\t\t\"data-ww-original-rect-height\",\n\t\t\t\t\trect.height.toString(),\n\t\t\t\t);\n\t\t\t\tcontainer.setAttribute(\"data-ww-original-dimensions\", \"true\");\n\t\t\t}\n\n\t\t\tthis.showVirtualTryOnImage(container);\n\n\t\t\tthis.updateButtonContainer(container);\n\n\t\t\tconsole.log(\n\t\t\t\t\"[WeWear VTO] Product image replaced with virtual try-on result\",\n\t\t\t);\n\t\t} catch (error) {\n\t\t\tconsole.error(\"[WeWear VTO] Error replacing product image:\", error);\n\t\t}\n\t}\n\n\tprivate showButtonContainer(container: HTMLElement): void {\n\t\tconst buttonContainer = container.querySelector(\n\t\t\t`.${CSS_CLASSES.BUTTON_CONTAINER}`,\n\t\t) as HTMLElement;\n\t\tif (buttonContainer) {\n\t\t\tbuttonContainer.style.display = \"flex\";\n\t\t}\n\t}\n\n\tprivate updateButtonContainer(container: HTMLElement): void {\n\t\tconst existingButtons = container.querySelectorAll(\n\t\t\t`.${CSS_CLASSES.BUTTON_CONTAINER}`,\n\t\t);\n\t\texistingButtons.forEach((btn) => {\n\t\t\tbtn.remove();\n\t\t});\n\n\t\tconst buttonContainer = createButtonContainer(\n\t\t\tthis.config.buttonPosition,\n\t\t\tthis.virtualTryOnImageUrl !== null,\n\t\t\tasync () => {\n\t\t\t\tawait this.handleTryOnClick();\n\t\t\t},\n\t\t\tasync () => {\n\t\t\t\tawait this.handleRegenerateClick();\n\t\t\t},\n\t\t\t() => {\n\t\t\t\tif (this.isShowingVirtualTryOn) {\n\t\t\t\t\tthis.showOriginalImage(container);\n\t\t\t\t} else {\n\t\t\t\t\tthis.showVirtualTryOnImage(container);\n\t\t\t\t}\n\t\t\t\tthis.updateButtonContainer(container);\n\t\t\t},\n\t\t\tthis.isShowingVirtualTryOn,\n\t\t\tasync () => {\n\t\t\t\tawait this.handleSaveClick();\n\t\t\t},\n\t\t\tasync () => {\n\t\t\t\tawait this.handleShareClick();\n\t\t\t},\n\t\t);\n\n\t\tcontainer.appendChild(buttonContainer);\n\t}\n\n\tprivate showVirtualTryOnImage(container: HTMLElement): void {\n\t\tif (!this.virtualTryOnImageUrl) {\n\t\t\tconsole.warn(\"[WeWear VTO] No virtual try-on image URL available\");\n\t\t\treturn;\n\t\t}\n\n\t\tArray.from(container.children).forEach((child) => {\n\t\t\tif (!child.classList.contains(CSS_CLASSES.BUTTON_CONTAINER)) {\n\t\t\t\tchild.remove();\n\t\t\t}\n\t\t});\n\n\t\tconst originalWidth =\n\t\t\tcontainer.getAttribute(\"data-ww-original-width\") || \"\";\n\t\tconst originalHeight =\n\t\t\tcontainer.getAttribute(\"data-ww-original-height\") || \"\";\n\t\tconst originalRectWidth =\n\t\t\tcontainer.getAttribute(\"data-ww-original-rect-width\") || \"\";\n\t\tconst originalRectHeight =\n\t\t\tcontainer.getAttribute(\"data-ww-original-rect-height\") || \"\";\n\n\t\tconst image = document.createElement(\"img\");\n\t\timage.src = this.virtualTryOnImageUrl;\n\t\timage.alt = \"Virtual Try-On Result\";\n\n\t\tlet widthStyle = \"100%\";\n\t\tlet heightStyle = \"100%\";\n\n\t\tif (originalWidth && originalWidth !== \"auto\" && originalWidth !== \"0px\") {\n\t\t\twidthStyle = originalWidth;\n\t\t} else if (originalRectWidth && originalRectWidth !== \"0\") {\n\t\t\twidthStyle = `${originalRectWidth}px`;\n\t\t}\n\n\t\tif (\n\t\t\toriginalHeight &&\n\t\t\toriginalHeight !== \"auto\" &&\n\t\t\toriginalHeight !== \"0px\"\n\t\t) {\n\t\t\theightStyle = originalHeight;\n\t\t} else if (originalRectHeight && originalRectHeight !== \"0\") {\n\t\t\theightStyle = `${originalRectHeight}px`;\n\t\t}\n\n\t\timage.style.cssText = `\n width: ${widthStyle};\n height: ${heightStyle};\n object-fit: contain;\n `;\n\n\t\tcontainer.prepend(image);\n\n\t\tthis.isShowingVirtualTryOn = true;\n\n\t\tthis.updateButtonContainer(container);\n\n\t\tconsole.log(\n\t\t\t\"[WeWear VTO] Product image replaced with virtual try-on result\",\n\t\t);\n\t}\n\n\tprivate showOriginalImage(container: HTMLElement): void {\n\t\tconst originalContentHTML = container.getAttribute(\n\t\t\t\"data-ww-original-content\",\n\t\t);\n\t\tif (originalContentHTML) {\n\t\t\tArray.from(container.children).forEach((child) => {\n\t\t\t\tif (!child.classList.contains(CSS_CLASSES.BUTTON_CONTAINER)) {\n\t\t\t\t\tchild.remove();\n\t\t\t\t}\n\t\t\t});\n\t\t\tconst tempDiv = document.createElement(\"div\");\n\t\t\ttempDiv.innerHTML = originalContentHTML;\n\t\t\tcontainer.append(...Array.from(tempDiv.children));\n\n\t\t\t// Remove temporary attributes used for VTO state\n\t\t\tcontainer.style.paddingBottom = \"\";\n\t\t}\n\n\t\tthis.isShowingVirtualTryOn = false;\n\t}\n\n\tpublic destroy(): void {\n\t\ttry {\n\t\t\tconst container = this.getContainer();\n\t\t\tif (container) {\n\t\t\t\tconst existingButtons = container.querySelectorAll(\n\t\t\t\t\t`.${CSS_CLASSES.BUTTON_CONTAINER}`,\n\t\t\t\t);\n\t\t\t\texistingButtons.forEach((btn) => {\n\t\t\t\t\tbtn.remove();\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tthis.closeModal();\n\n\t\t\tthis.cameraButton = null;\n\n\t\t\tif (this.iframeMessageListener) {\n\t\t\t\twindow.removeEventListener(\"message\", this.iframeMessageListener);\n\t\t\t\tthis.iframeMessageListener = null;\n\t\t\t}\n\n\t\t\tthis.virtualTryOnImageUrl = null;\n\t\t\tthis.isShowingVirtualTryOn = false;\n\t\t\tthis.lastModelImage = null;\n\t\t\tthis.originalProductImages = [];\n\t\t\tthis.preparedTryOnData = null;\n\n\t\t\tconsole.log(\"[WeWear VTO] Widget destroyed successfully\");\n\t\t} catch (error) {\n\t\t\tconsole.error(\"[WeWear VTO] Error during widget destruction:\", error);\n\t\t}\n\t}\n}\n","import type { VirtualTryOnConfig } from \"./index.js\";\nimport { VirtualTryOnWidget } from \"./widget.js\";\n\nlet widgetInstances: VirtualTryOnWidget[] = [];\n\nexport function initVirtualTryOn(config?: VirtualTryOnConfig): void {\n\ttry {\n\t\twidgetInstances.forEach((instance) => {\n\t\t\tinstance.destroy();\n\t\t});\n\t\twidgetInstances = [];\n\n\t\tif (!config) {\n\t\t\tconsole.log(\n\t\t\t\t\"[WeWear VTO] Missing configuration. Widget not initialized.\",\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\n\t\tconst allContainers = Array.from(\n\t\t\tdocument.querySelectorAll(config.gallerySelector),\n\t\t).filter(\n\t\t\t(container): container is HTMLElement => container instanceof HTMLElement,\n\t\t);\n\t\tconst shouldUseSingleton = config.singleton !== false;\n\n\t\tif (allContainers.length > 1 && !shouldUseSingleton) {\n\t\t\twidgetInstances = allContainers.map((galleryElement) => {\n\t\t\t\treturn new VirtualTryOnWidget({\n\t\t\t\t\t...config,\n\t\t\t\t\tgalleryElement,\n\t\t\t\t});\n\t\t\t});\n\t\t} else {\n\t\t\tconst firstContainer = allContainers[0];\n\t\t\twidgetInstances = [\n\t\t\t\tnew VirtualTryOnWidget({\n\t\t\t\t\t...config,\n\t\t\t\t\tgalleryElement: firstContainer,\n\t\t\t\t}),\n\t\t\t];\n\t\t}\n\n\t\tconst initializeWidgets = () => {\n\t\t\twidgetInstances.forEach((widget) => {\n\t\t\t\twidget.init().catch((error) => {\n\t\t\t\t\tconsole.error(\"[WeWear VTO] Failed to initialize:\", error);\n\t\t\t\t});\n\t\t\t});\n\t\t};\n\n\t\tif (document.readyState === \"loading\") {\n\t\t\tdocument.addEventListener(\"DOMContentLoaded\", initializeWidgets, {\n\t\t\t\tonce: true,\n\t\t\t});\n\t\t} else {\n\t\t\tinitializeWidgets();\n\t\t}\n\t} catch (error) {\n\t\tconsole.error(\"[WeWear VTO] Initialization error:\", error);\n\t}\n}\n\nexport function getWidgetInstance(): VirtualTryOnWidget | null {\n\treturn widgetInstances[0] ?? null;\n}\n\nexport function getWidgetInstances(): VirtualTryOnWidget[] {\n\treturn [...widgetInstances];\n}\n\nif (typeof window !== \"undefined\") {\n\tinitVirtualTryOn();\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/constants.ts","../src/utils.ts","../src/components/button.ts","../src/widget/modal-manager.ts","../src/widget/vto-api-client.ts","../src/widget.ts","../src/installer.ts"],"sourcesContent":["export const CSS_CLASSES = {\n\tBUTTON_CONTAINER: \"wewear-vto-button-container\",\n\tBUTTON: \"wewear-vto-button\",\n\tMODAL: \"wewear-vto-modal\",\n};\n\nexport const Z_INDEX = {\n\tBUTTON: 10,\n};\n","export function getPositionStyles(position: string): string {\n\tswitch (position) {\n\t\tcase \"bottom-left\":\n\t\t\treturn \"left: 20px; bottom: 20px;\";\n\t\tcase \"top-right\":\n\t\t\treturn \"right: 20px; top: 20px;\";\n\t\tcase \"top-left\":\n\t\t\treturn \"left: 20px; top: 20px;\";\n\t\tdefault:\n\t\t\treturn \"right: 20px; bottom: 20px;\";\n\t}\n}\n","import { CSS_CLASSES, Z_INDEX } from \"../constants.js\";\nimport { getPositionStyles } from \"../utils.js\";\n\nconst CAMERA_ICON = `\n\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"display: block;\">\n\t\t<path d=\"M14.5 4h-5L7 7H4a2 2 0 0 0-2 2v9a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2h-3l-2.5-3z\"></path>\n\t\t<circle cx=\"12\" cy=\"13\" r=\"3\"></circle>\n\t</svg>\n`;\n\nconst SPARKLES_ICON = `\n\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"display: block; flex-shrink: 0;\">\n\t\t<path d=\"M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z\"/>\n\t\t<path d=\"M20 2v4\"/>\n\t\t<path d=\"M22 4h-4\"/>\n\t\t<circle cx=\"4\" cy=\"20\" r=\"2\"/>\n\t</svg>\n`;\n\nconst REFRESH_ICON = `\n\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"display: block;\">\n\t\t<path d=\"M21 12a9 9 0 0 0-9-9 9.75 9.75 0 0 0-6.74 2.74L3 8\"></path>\n\t\t<path d=\"M3 3v5h5\"></path>\n\t\t<path d=\"M3 12a9 9 0 0 0 9 9 9.75 9.75 0 0 0 6.74-2.74L21 16\"></path>\n\t\t<path d=\"M16 16h5v5\"></path>\n\t</svg>\n`;\n\nconst SAVE_ICON = `\n\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"display: block;\">\n\t\t<path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\"></path>\n\t\t<polyline points=\"7 10 12 15 17 10\"></polyline>\n\t\t<line x1=\"12\" y1=\"15\" x2=\"12\" y2=\"3\"></line>\n\t</svg>\n`;\n\nconst SHARE_ICON = `\n\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"display: block;\">\n\t\t<circle cx=\"18\" cy=\"5\" r=\"3\"></circle>\n\t\t<circle cx=\"6\" cy=\"12\" r=\"3\"></circle>\n\t\t<circle cx=\"18\" cy=\"19\" r=\"3\"></circle>\n\t\t<line x1=\"8.59\" y1=\"13.51\" x2=\"15.42\" y2=\"17.49\"></line>\n\t\t<line x1=\"15.41\" y1=\"6.51\" x2=\"8.59\" y2=\"10.49\"></line>\n\t</svg>\n`;\n\nconst CONTAINER_STYLE = `\n\tposition: absolute;\n\tdisplay: flex;\n\tgap: 4px;\n\tborder-radius: 100px;\n\tbackground: white;\n\tpadding: 4px;\n\tbox-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n\tz-index: ${Z_INDEX.BUTTON};\n\ttransition: all 0.2s ease;\n`;\n\nconst ICON_BUTTON_STYLE = `\n\tdisplay: flex;\n\twidth: 40px;\n\theight: 40px;\n\tcursor: pointer;\n\talign-items: center;\n\tjustify-content: center;\n\tborder-radius: 100px;\n\tpadding: 0;\n\tborder: none;\n\ttransition: all 0.2s ease;\n\tflex-shrink: 0;\n`;\n\nconst PRIMARY_STYLE = `${ICON_BUTTON_STYLE}\n\tbackground: white;\n\tcolor: #000000;\n`;\n\nconst CAMERA_HIGHLIGHT_STYLE = `${ICON_BUTTON_STYLE}\n\tbackground: white;\n\tcolor: #333333;\n`;\n\nfunction createIconButton(\n\tclassName: string,\n\tariaLabel: string,\n\ticonHtml: string,\n\tstyleCss: string,\n\tonClick: () => void,\n): HTMLButtonElement {\n\tconst button = document.createElement(\"button\");\n\tbutton.type = \"button\";\n\tbutton.className = className;\n\tbutton.setAttribute(\"aria-label\", ariaLabel);\n\tbutton.style.cssText = styleCss;\n\tbutton.innerHTML = iconHtml;\n\tbutton.onclick = onClick;\n\treturn button;\n}\n\nexport function createButtonContainer(\n\tbuttonPosition: string,\n\thasVirtualTryOn: boolean = false,\n\tonCameraClick: () => void,\n\tonRefreshClick?: () => void,\n\tonToggleClick?: () => void,\n\tisShowingVirtualTryOn: boolean = false,\n\tonSaveClick?: () => void,\n\tonShareClick?: () => void,\n): HTMLElement {\n\tconst container = document.createElement(\"div\");\n\tcontainer.className = `${CSS_CLASSES.BUTTON_CONTAINER} ww-button-group`;\n\n\tconst positionStyles = hasVirtualTryOn\n\t\t? \"right: 20px; top: 20px;\"\n\t\t: getPositionStyles(buttonPosition);\n\tconst directionStyles = hasVirtualTryOn\n\t\t? \"flex-direction: column;\"\n\t\t: \"flex-direction: row;\";\n\tcontainer.style.cssText = `${CONTAINER_STYLE} ${positionStyles} ${directionStyles}`;\n\n\tconst cameraButton = hasVirtualTryOn\n\t\t? createIconButton(\n\t\t\t\t`${CSS_CLASSES.BUTTON} ww-camera-btn`,\n\t\t\t\t\"Virtual Try-On\",\n\t\t\t\tCAMERA_ICON,\n\t\t\t\tCAMERA_HIGHLIGHT_STYLE,\n\t\t\t\tonCameraClick,\n\t\t\t)\n\t\t: createIconButton(\n\t\t\t\t`${CSS_CLASSES.BUTTON} ww-camera-btn`,\n\t\t\t\t\"Virtual Try-On\",\n\t\t\t\t`${SPARKLES_ICON}<span style=\"display: block;\">TRY THIS LOOK</span>`,\n\t\t\t\t`${PRIMARY_STYLE}\n\t\t\t\t\tpadding: 10px 16px;\n\t\t\t\t\tgap: 8px;\n\t\t\t\t\tfont-size: 14px;\n\t\t\t\t\tfont-weight: 600;\n\t\t\t\t\twhite-space: nowrap;\n\t\t\t\t\twidth: auto;\n\t\t\t\t\theight: auto;\n\t\t\t\t`,\n\t\t\t\tonCameraClick,\n\t\t\t);\n\tif (hasVirtualTryOn && onSaveClick) {\n\t\tconst saveButton = createIconButton(\n\t\t\t\"ww-save-btn\",\n\t\t\t\"Save virtual try-on image\",\n\t\t\tSAVE_ICON,\n\t\t\t`${ICON_BUTTON_STYLE}\n\t\t\t\tbackground: white;\n\t\t\t\tcolor: #333333;\n\t\t\t`,\n\t\t\tonSaveClick,\n\t\t);\n\t\tcontainer.appendChild(saveButton);\n\t}\n\n\tif (hasVirtualTryOn && onShareClick) {\n\t\tconst shareButton = createIconButton(\n\t\t\t\"ww-share-btn\",\n\t\t\t\"Share virtual try-on image\",\n\t\t\tSHARE_ICON,\n\t\t\t`${ICON_BUTTON_STYLE}\n\t\t\t\tbackground: white;\n\t\t\t\tcolor: #333333;\n\t\t\t`,\n\t\t\tonShareClick,\n\t\t);\n\t\tcontainer.appendChild(shareButton);\n\t}\n\n\tcontainer.appendChild(cameraButton);\n\n\tif (hasVirtualTryOn) {\n\t\tif (onRefreshClick) {\n\t\t\tconst refreshButton = createIconButton(\n\t\t\t\t\"ww-refresh-btn\",\n\t\t\t\t\"Refresh virtual try-on\",\n\t\t\t\tREFRESH_ICON,\n\t\t\t\t`${ICON_BUTTON_STYLE}\n\t\t\t\t\tbackground: white;\n\t\t\t\t\tcolor: #333333;\n\t\t\t\t`,\n\t\t\t\tonRefreshClick,\n\t\t\t);\n\t\t\tcontainer.appendChild(refreshButton);\n\t\t}\n\n\t\tif (onToggleClick) {\n\t\t\tconst toggleButton = createIconButton(\n\t\t\t\t\"ww-toggle-btn\",\n\t\t\t\tisShowingVirtualTryOn ? \"Show Original Image\" : \"Show Virtual Try-On\",\n\t\t\t\tSPARKLES_ICON,\n\t\t\t\t`${ICON_BUTTON_STYLE}\n\t\t\t\t\tbackground: ${isShowingVirtualTryOn ? \"#333333\" : \"#e5e7eb\"};\n\t\t\t\t\tcolor: ${isShowingVirtualTryOn ? \"white\" : \"#333333\"};\n\t\t\t\t`,\n\t\t\t\tonToggleClick,\n\t\t\t);\n\n\t\t\ttoggleButton.onmouseover = () => {\n\t\t\t\tif (isShowingVirtualTryOn) {\n\t\t\t\t\ttoggleButton.style.background = \"#4a4a4a\";\n\t\t\t\t} else {\n\t\t\t\t\ttoggleButton.style.background = \"#d1d5db\";\n\t\t\t\t}\n\t\t\t};\n\t\t\ttoggleButton.onmouseout = () => {\n\t\t\t\tif (isShowingVirtualTryOn) {\n\t\t\t\t\ttoggleButton.style.background = \"#333333\";\n\t\t\t\t} else {\n\t\t\t\t\ttoggleButton.style.background = \"#e5e7eb\";\n\t\t\t\t}\n\t\t\t};\n\n\t\t\ttoggleButton.onclick = onToggleClick;\n\t\t\tcontainer.appendChild(toggleButton);\n\t\t}\n\t}\n\n\treturn container;\n}\n\nexport function createButton(\n\tbuttonPosition: string,\n\tonClick: () => void,\n\tdisabled: boolean = false,\n): HTMLElement {\n\tconst container = createButtonContainer(buttonPosition, false, onClick);\n\tconst cameraButton = container.querySelector(\n\t\t\".ww-camera-btn\",\n\t) as HTMLButtonElement;\n\tif (cameraButton) {\n\t\tcameraButton.disabled = disabled;\n\t\tif (disabled) {\n\t\t\tcameraButton.style.opacity = \"0.5\";\n\t\t\tcameraButton.style.cursor = \"not-allowed\";\n\t\t\tcameraButton.title = \"Find your ideal size first\";\n\t\t}\n\t}\n\treturn container;\n}\n","import { CSS_CLASSES } from \"../constants.js\";\n\nexport type ModalControlMessageType =\n\t| \"VTO_SCAN_START\"\n\t| \"VTO_SCAN_STOP\"\n\t| \"VTO_SCAN_COMPLETE\";\n\nexport interface ModalOpenOptions {\n\tprefillImage?: Blob;\n\tautoSubmit?: boolean;\n}\n\ninterface PendingModalPrefill {\n\timage: Blob;\n\tautoSubmit: boolean;\n}\n\nexport class ModalManager {\n\tprivate modalElement: HTMLElement | null = null;\n\tprivate pendingModalPrefill: PendingModalPrefill | null = null;\n\tprivate modalOrigin: string;\n\n\tconstructor(baseUrl: string) {\n\t\tthis.modalOrigin = new URL(baseUrl).origin;\n\t}\n\n\topen(\n\t\turl: string,\n\t\toptions: ModalOpenOptions | undefined,\n\t\tonClose: () => void,\n\t) {\n\t\tthis.close();\n\t\tthis.modalOrigin = new URL(url).origin;\n\t\tthis.pendingModalPrefill = options?.prefillImage\n\t\t\t? {\n\t\t\t\t\timage: options.prefillImage,\n\t\t\t\t\tautoSubmit: options.autoSubmit === true,\n\t\t\t\t}\n\t\t\t: null;\n\n\t\tconst modal = document.createElement(\"div\");\n\t\tmodal.className = CSS_CLASSES.MODAL;\n\t\tmodal.style.cssText = `\n\t\t\tposition: fixed;\n\t\t\ttop: 0;\n\t\t\tleft: 0;\n\t\t\tright: 0;\n\t\t\tbottom: 0;\n\t\t\twidth: 100%;\n\t\t\theight: 100%;\n\t\t\tbackground-color: rgba(0, 0, 0, 0.8);\n\t\t\tdisplay: flex;\n\t\t\tjustify-content: center;\n\t\t\talign-items: center;\n\t\t\tz-index: 999999999;\n\t\t\tanimation: ww-modal-fade-in 0.3s ease;\n\t\t`;\n\n\t\tif (!document.getElementById(\"ww-modal-animation\")) {\n\t\t\tconst style = document.createElement(\"style\");\n\t\t\tstyle.id = \"ww-modal-animation\";\n\t\t\tstyle.textContent = `\n\t\t\t\t@keyframes ww-modal-fade-in {\n\t\t\t\t\tfrom { opacity: 0; }\n\t\t\t\t\tto { opacity: 1; }\n\t\t\t\t}\n\t\t\t\t@keyframes ww-modal-scale-in {\n\t\t\t\t\tfrom { transform: scale(0.95); opacity: 0; }\n\t\t\t\t\tto { transform: scale(1); opacity: 1; }\n\t\t\t\t}\n\t\t\t`;\n\t\t\tdocument.head.appendChild(style);\n\t\t}\n\n\t\tconst iframeContainer = document.createElement(\"div\");\n\t\tiframeContainer.style.cssText = `\n\t\t\tposition: relative;\n\t\t\twidth: 90%;\n\t\t\theight: 90%;\n\t\t\tmax-width: 480px;\n\t\t\tmax-height: 720px;\n\t\t\tborder-radius: 20px;\n\t\t\toverflow: hidden;\n\t\t\tbox-shadow: 0 24px 48px rgba(0, 0, 0, 0.3), 0 12px 24px rgba(0, 0, 0, 0.2);\n\t\t\tanimation: ww-modal-scale-in 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n\t\t\tbackground: white;\n\t\t`;\n\n\t\tconst iframe = document.createElement(\"iframe\");\n\t\tiframe.src = url;\n\t\tiframe.style.cssText = `\n\t\t\twidth: 100%;\n\t\t\theight: 100%;\n\t\t\tborder: none;\n\t\t`;\n\n\t\tconst closeButton = document.createElement(\"button\");\n\t\tcloseButton.innerHTML = `\n\t\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n\t\t\t\t<line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"></line>\n\t\t\t\t<line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"></line>\n\t\t\t</svg>\n\t\t`;\n\t\tcloseButton.setAttribute(\"aria-label\", \"Close modal\");\n\t\tcloseButton.style.cssText = `\n\t\t\tposition: absolute;\n\t\t\ttop: -48px;\n\t\t\tright: 0;\n\t\t\tbackground: rgba(255, 255, 255, 0.95);\n\t\t\tbackdrop-filter: blur(8px);\n\t\t\t-webkit-backdrop-filter: blur(8px);\n\t\t\tborder: none;\n\t\t\tborder-radius: 50%;\n\t\t\twidth: 40px;\n\t\t\theight: 40px;\n\t\t\tcursor: pointer;\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t\tjustify-content: center;\n\t\t\tcolor: #1f2937;\n\t\t\ttransition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n\t\t\tbox-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);\n\t\t`;\n\t\tcloseButton.onmouseover = () => {\n\t\t\tcloseButton.style.transform = \"scale(1.1) rotate(90deg)\";\n\t\t\tcloseButton.style.background = \"#ef4444\";\n\t\t\tcloseButton.style.color = \"white\";\n\t\t};\n\t\tcloseButton.onmouseout = () => {\n\t\t\tcloseButton.style.transform = \"scale(1) rotate(0deg)\";\n\t\t\tcloseButton.style.background = \"rgba(255, 255, 255, 0.95)\";\n\t\t\tcloseButton.style.color = \"#1f2937\";\n\t\t};\n\t\tcloseButton.onclick = () => {\n\t\t\tmodal.style.opacity = \"0\";\n\t\t\tiframeContainer.style.transform = \"scale(0.95)\";\n\t\t\tiframeContainer.style.opacity = \"0\";\n\t\t\tsetTimeout(onClose, 300);\n\t\t};\n\n\t\tiframeContainer.appendChild(iframe);\n\t\tiframeContainer.appendChild(closeButton);\n\t\tmodal.appendChild(iframeContainer);\n\t\tdocument.body.appendChild(modal);\n\n\t\tmodal.onclick = (e) => {\n\t\t\tif (e.target === modal) {\n\t\t\t\tcloseButton.click();\n\t\t\t}\n\t\t};\n\n\t\tthis.modalElement = modal;\n\t}\n\n\tclose() {\n\t\tif (this.modalElement) {\n\t\t\tthis.modalElement.remove();\n\t\t\tthis.modalElement = null;\n\t\t}\n\t\tthis.pendingModalPrefill = null;\n\t}\n\n\tsendPendingPrefillToModal() {\n\t\tif (!this.pendingModalPrefill || !this.modalElement) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst iframe = this.modalElement.querySelector(\"iframe\");\n\t\tif (!(iframe instanceof HTMLIFrameElement) || !iframe.contentWindow) {\n\t\t\treturn;\n\t\t}\n\n\t\tiframe.contentWindow.postMessage(\n\t\t\t{\n\t\t\t\ttype: \"VTO_PREFILL_IMAGE\",\n\t\t\t\timage: this.pendingModalPrefill.image,\n\t\t\t\tautoSubmit: this.pendingModalPrefill.autoSubmit,\n\t\t\t},\n\t\t\tthis.modalOrigin,\n\t\t);\n\t\t// Fallback for production setups where iframe origin differs after redirects.\n\t\tiframe.contentWindow.postMessage(\n\t\t\t{\n\t\t\t\ttype: \"VTO_PREFILL_IMAGE\",\n\t\t\t\timage: this.pendingModalPrefill.image,\n\t\t\t\tautoSubmit: this.pendingModalPrefill.autoSubmit,\n\t\t\t},\n\t\t\t\"*\",\n\t\t);\n\t\tthis.pendingModalPrefill = null;\n\t}\n\n\tpostMessageToModal(type: ModalControlMessageType) {\n\t\tif (!this.modalElement) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst iframe = this.modalElement.querySelector(\"iframe\");\n\t\tif (!(iframe instanceof HTMLIFrameElement) || !iframe.contentWindow) {\n\t\t\treturn;\n\t\t}\n\n\t\tiframe.contentWindow.postMessage({ type }, this.modalOrigin);\n\t\t// Fallback for production setups where iframe origin differs after redirects.\n\t\tiframe.contentWindow.postMessage({ type }, \"*\");\n\t}\n}\n","export type JobStatus = \"PENDING\" | \"COMPLETED\" | \"FAILED\";\n\nexport interface JobStatusResponse {\n\tstatus: JobStatus;\n\tmessage: string;\n}\n\ninterface SubmitTryOnOptions {\n\tmodelTier: string;\n\toutfitID: string;\n}\n\nexport interface PreparedTryOnData {\n\tmodelTier: string;\n\toutfitID: string;\n\tproductImages: string[];\n\tgeminiModel: string | null;\n\tadditionalPrompt: string | null;\n}\n\nexport class VtoApiClient {\n\tconstructor(private readonly baseUrl: string) {}\n\n\tasync submitTryOn(\n\t\tmodelImage: Blob,\n\t\tproductImages: string[],\n\t\toptions: SubmitTryOnOptions,\n\t\tpreparedData?: PreparedTryOnData,\n\t): Promise<{ job_id: string }> {\n\t\tconst resolved =\n\t\t\tpreparedData ?? (await this.prepareTryOnData(productImages, options));\n\n\t\tconst formData = new FormData();\n\t\tformData.append(\"model_image\", modelImage, \"model_image.png\");\n\t\tformData.append(\n\t\t\t\"product_image_urls\",\n\t\t\tJSON.stringify(resolved.productImages),\n\t\t);\n\t\tformData.append(\"page_url\", window.location.href);\n\t\tformData.append(\"model_tier\", resolved.modelTier);\n\t\tif (resolved.geminiModel)\n\t\t\tformData.append(\"gemini_model\", resolved.geminiModel);\n\t\tif (resolved.additionalPrompt) {\n\t\t\tformData.append(\"additional_prompt\", resolved.additionalPrompt);\n\t\t}\n\n\t\tif (resolved.outfitID) formData.append(\"outfit_id\", resolved.outfitID);\n\n\t\tconst res = await fetch(`${this.baseUrl}/api/vto`, {\n\t\t\tmethod: \"POST\",\n\t\t\tbody: formData,\n\t\t});\n\t\tif (!res.ok) {\n\t\t\tconst errorText = await res.text();\n\t\t\tconsole.error(\n\t\t\t\t\"[WeWear VTO] API submission failed:\",\n\t\t\t\tres.status,\n\t\t\t\terrorText,\n\t\t\t);\n\t\t\tthrow new Error(`API submission failed: ${res.status}`);\n\t\t}\n\t\treturn res.json();\n\t}\n\n\tasync prepareTryOnData(\n\t\tproductImages: string[],\n\t\toptions: SubmitTryOnOptions,\n\t): Promise<PreparedTryOnData> {\n\t\tconst outfitID = options.outfitID?.trim() ?? \"\";\n\n\t\treturn {\n\t\t\tmodelTier: options.modelTier,\n\t\t\toutfitID,\n\t\t\tproductImages,\n\t\t\tgeminiModel: null,\n\t\t\tadditionalPrompt: null,\n\t\t};\n\t}\n\n\tasync fetchJobStatus(jobId: string): Promise<JobStatusResponse> {\n\t\tconst res = await fetch(`${this.baseUrl}/api/vto/status?job_id=${jobId}`);\n\t\tif (!res.ok) throw new Error(`Status check failed: ${res.status}`);\n\t\treturn res.json();\n\t}\n\n\tasync fetchJobImage(jobId: string): Promise<string> {\n\t\tconst url = `${this.baseUrl}/api/vto/image?job_id=${jobId}`;\n\n\t\tconst res = await fetch(url);\n\t\tif (res.status === 202) throw new Error(\"202_PROCESSING\");\n\t\tif (!res.ok) throw new Error(`Image fetch failed: ${res.status}`);\n\n\t\tconst blob = await res.blob();\n\t\treturn URL.createObjectURL(blob);\n\t}\n}\n","import { createButton, createButtonContainer } from \"./components/index.js\";\nimport { CSS_CLASSES } from \"./constants.js\";\nimport type { VirtualTryOnConfig } from \"./index.js\";\nimport {\n\tModalManager,\n\ttype ModalControlMessageType,\n\ttype ModalOpenOptions,\n} from \"./widget/modal-manager.js\";\nimport {\n\tVtoApiClient,\n\ttype PreparedTryOnData,\n} from \"./widget/vto-api-client.js\";\n\nexport class VirtualTryOnWidget {\n\tprivate static instanceCounter = 0;\n\tprivate static activeWidgetId: number | null = null;\n\tprivate static readonly ERROR_TOAST_MESSAGE =\n\t\t\"Virtual try-on is temporarily unavailable due to high traffic on Google services. Please try again in a moment.\";\n\tprivate readonly config: VirtualTryOnConfig;\n\tprivate readonly instanceId: number;\n\tprivate virtualTryOnImageUrl: string | null = null;\n\tprivate originalProductImages: string[] = []; // Store all original product images\n\tprivate preparedTryOnData: PreparedTryOnData | null = null;\n\tprivate isShowingVirtualTryOn: boolean = false;\n\tprivate lastModelImage: Blob | null = null;\n\tprivate cameraButton: HTMLButtonElement | null = null;\n\tprivate readonly modal: ModalManager;\n\tprivate readonly vtoApiClient: VtoApiClient;\n\tprivate iframeMessageListener: ((event: MessageEvent) => void) | null = null;\n\n\tconstructor(config: VirtualTryOnConfig) {\n\t\tthis.instanceId = ++VirtualTryOnWidget.instanceCounter;\n\t\tthis.config = {\n\t\t\tbaseUrl: config.baseUrl,\n\t\t\tproductPageSelector: config.productPageSelector,\n\t\t\tgallerySelector: config.gallerySelector,\n\t\t\tproductImageSelector: config.productImageSelector,\n\t\t\tbuttonPosition: config.buttonPosition,\n\t\t\tmodelTier: config.modelTier,\n\t\t\toutfitID: config.outfitID,\n\t\t\tsingleton: config.singleton,\n\t\t\tgalleryElement: config.galleryElement,\n\t\t};\n\t\tthis.modal = new ModalManager(this.config.baseUrl);\n\t\tthis.vtoApiClient = new VtoApiClient(this.config.baseUrl);\n\t}\n\n\tprivate getContainer(): HTMLElement | null {\n\t\tconst configContainer = this.config.galleryElement;\n\t\tif (configContainer?.isConnected) {\n\t\t\treturn configContainer;\n\t\t}\n\n\t\tconst queriedContainer = document.querySelector(\n\t\t\tthis.config.gallerySelector,\n\t\t);\n\t\treturn queriedContainer instanceof HTMLElement ? queriedContainer : null;\n\t}\n\n\tpublic async init(): Promise<void> {\n\t\ttry {\n\t\t\tconst selectors = this.config.productPageSelector;\n\t\t\tconst currentPath = window.location.pathname;\n\t\t\tconst matches = selectors.some((sel) => currentPath.includes(sel));\n\t\t\tif (!matches) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst container = this.getContainer();\n\t\t\tif (!container) {\n\t\t\t\tconsole.warn(\n\t\t\t\t\t\"[WeWear VTO] Gallery container not found:\",\n\t\t\t\t\tthis.config.gallerySelector,\n\t\t\t\t);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (getComputedStyle(container).position === \"static\") {\n\t\t\t\tcontainer.style.position = \"relative\";\n\t\t\t}\n\n\t\t\tconst button = createButton(this.config.buttonPosition, async () => {\n\t\t\t\tif (this.cameraButton && !this.cameraButton.disabled) {\n\t\t\t\t\tawait this.handleTryOnClick();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.cameraButton = button.querySelector(\".ww-camera-btn\");\n\t\t\tcontainer.appendChild(button);\n\t\t\tconsole.log(\"[WeWear VTO] Widget initialized successfully\");\n\n\t\t\tthis.setupIframeListener();\n\t\t} catch (error) {\n\t\t\tconsole.error(\"[WeWear VTO] Initialization failed:\", error);\n\t\t}\n\t}\n\n\tprivate async handleTryOnClick(): Promise<void> {\n\t\tconsole.log(\"[WeWear VTO] Button clicked, starting try-on process...\");\n\n\t\ttry {\n\t\t\tif (this.originalProductImages.length === 0) {\n\t\t\t\tthis.originalProductImages = this.getAllProductImages();\n\t\t\t\tconsole.log(\n\t\t\t\t\t\"[WeWear VTO] Stored original product images:\",\n\t\t\t\t\tthis.originalProductImages,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconsole.log(\"[WeWear VTO] Retrieved data:\", {\n\t\t\t\tproductImages: this.originalProductImages,\n\t\t\t});\n\n\t\t\tif (this.originalProductImages.length === 0) {\n\t\t\t\tconsole.warn(\n\t\t\t\t\t\"[WeWear VTO] Product images not found:\",\n\t\t\t\t\tthis.config.productImageSelector,\n\t\t\t\t);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.preparedTryOnData = await this.vtoApiClient.prepareTryOnData(\n\t\t\t\tthis.originalProductImages,\n\t\t\t\t{\n\t\t\t\t\tmodelTier: this.config.modelTier,\n\t\t\t\t\toutfitID: this.config.outfitID,\n\t\t\t\t},\n\t\t\t);\n\n\t\t\tconst photoUploadUrl = this.buildPhotoUploadUrl(\n\t\t\t\tthis.preparedTryOnData.productImages,\n\t\t\t);\n\t\t\tthis.showPhotoUploadModal(photoUploadUrl.toString());\n\t\t} catch (error) {\n\t\t\tconsole.error(\"[WeWear VTO] Try-on request failed:\", error);\n\t\t}\n\t}\n\n\tprivate async handleRegenerateClick(): Promise<void> {\n\t\tif (!this.lastModelImage) {\n\t\t\tawait this.handleTryOnClick();\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.originalProductImages.length === 0) {\n\t\t\tthis.originalProductImages = this.getAllProductImages();\n\t\t}\n\n\t\tif (this.originalProductImages.length === 0) {\n\t\t\tconsole.warn(\"[WeWear VTO] No product images found for regenerate.\");\n\t\t\treturn;\n\t\t}\n\n\t\tthis.preparedTryOnData = await this.vtoApiClient.prepareTryOnData(\n\t\t\tthis.originalProductImages,\n\t\t\t{\n\t\t\t\tmodelTier: this.config.modelTier,\n\t\t\t\toutfitID: this.config.outfitID,\n\t\t\t},\n\t\t);\n\n\t\tconst photoUploadUrl = this.buildPhotoUploadUrl(\n\t\t\tthis.preparedTryOnData.productImages,\n\t\t);\n\t\tthis.showPhotoUploadModal(photoUploadUrl.toString(), {\n\t\t\tprefillImage: this.lastModelImage,\n\t\t\tautoSubmit: true,\n\t\t});\n\t}\n\n\tprivate async handleSaveClick(): Promise<void> {\n\t\tif (!this.virtualTryOnImageUrl) {\n\t\t\tconsole.warn(\"[WeWear VTO] No virtual try-on image available to save.\");\n\t\t\treturn;\n\t\t}\n\n\t\ttry {\n\t\t\tconst response = await fetch(this.virtualTryOnImageUrl);\n\t\t\tconst imageBlob = await response.blob();\n\t\t\tconst objectUrl = URL.createObjectURL(imageBlob);\n\n\t\t\tconst link = document.createElement(\"a\");\n\t\t\tlink.href = objectUrl;\n\t\t\tlink.download = `wewear-vto-${Date.now()}.png`;\n\t\t\tdocument.body.appendChild(link);\n\t\t\tlink.click();\n\t\t\tlink.remove();\n\t\t\tURL.revokeObjectURL(objectUrl);\n\t\t} catch (error) {\n\t\t\tconsole.error(\"[WeWear VTO] Failed to save virtual try-on image:\", error);\n\t\t\twindow.open(this.virtualTryOnImageUrl, \"_blank\");\n\t\t}\n\t}\n\n\tprivate async handleShareClick(): Promise<void> {\n\t\tif (!this.virtualTryOnImageUrl) {\n\t\t\tconsole.warn(\"[WeWear VTO] No virtual try-on image available to share.\");\n\t\t\treturn;\n\t\t}\n\n\t\tconst shareUrl = this.virtualTryOnImageUrl;\n\n\t\ttry {\n\t\t\tif (navigator.share && navigator.canShare) {\n\t\t\t\tconst response = await fetch(shareUrl);\n\t\t\t\tconst imageBlob = await response.blob();\n\t\t\t\tconst imageFile = new File([imageBlob], \"wewear-vto.png\", {\n\t\t\t\t\ttype: imageBlob.type || \"image/png\",\n\t\t\t\t});\n\n\t\t\t\tif (navigator.canShare({ files: [imageFile] })) {\n\t\t\t\t\tawait navigator.share({\n\t\t\t\t\t\ttitle: \"My virtual try-on look\",\n\t\t\t\t\t\ttext: \"Check out my virtual try-on look.\",\n\t\t\t\t\t\tfiles: [imageFile],\n\t\t\t\t\t});\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (navigator.share) {\n\t\t\t\tawait navigator.share({\n\t\t\t\t\ttitle: \"My virtual try-on look\",\n\t\t\t\t\ttext: \"Check out my virtual try-on look.\",\n\t\t\t\t\turl: shareUrl,\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconsole.error(\"[WeWear VTO] Native share failed:\", error);\n\t\t}\n\n\t\ttry {\n\t\t\tif (navigator.clipboard?.writeText) {\n\t\t\t\tawait navigator.clipboard.writeText(shareUrl);\n\t\t\t\twindow.alert(\"Virtual try-on link copied. You can paste it to share.\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconsole.error(\"[WeWear VTO] Clipboard copy failed:\", error);\n\t\t}\n\n\t\tconst newWindow = window.open(shareUrl, \"_blank\");\n\t\tif (!newWindow) {\n\t\t\twindow.prompt(\"Copy this link to share your virtual try-on:\", shareUrl);\n\t\t}\n\t}\n\n\tprivate buildPhotoUploadUrl(productImages: string[]): URL {\n\t\tconst photoUploadUrl = new URL(`${this.config.baseUrl}`);\n\n\t\tphotoUploadUrl.searchParams.append(\n\t\t\t\"ww_product_images\",\n\t\t\tproductImages.join(\",\"),\n\t\t);\n\t\tif (this.config.outfitID) {\n\t\t\tphotoUploadUrl.searchParams.append(\"ww_outfit_id\", this.config.outfitID);\n\t\t}\n\t\tphotoUploadUrl.searchParams.append(\"ww_user_brand\", window.location.href);\n\t\treturn photoUploadUrl;\n\t}\n\n\tprivate getAllProductImages(): string[] {\n\t\tconst container = this.getContainer();\n\t\tconst scopedElements = container?.querySelectorAll(\n\t\t\tthis.config.productImageSelector,\n\t\t);\n\t\tconst fallbackElements = document.querySelectorAll(\n\t\t\tthis.config.productImageSelector,\n\t\t);\n\t\tconst productImageElements = (\n\t\t\tscopedElements?.length ? scopedElements : fallbackElements\n\t\t) as NodeListOf<HTMLImageElement>;\n\n\t\tconst images: string[] = [];\n\n\t\tproductImageElements.forEach((img) => {\n\t\t\tconst imageUrl =\n\t\t\t\timg.src ||\n\t\t\t\timg.getAttribute(\"data-src\") ||\n\t\t\t\timg.getAttribute(\"data-large_image\") ||\n\t\t\t\t\"\";\n\n\t\t\tif (\n\t\t\t\timageUrl &&\n\t\t\t\t(imageUrl.startsWith(\"http://\") || imageUrl.startsWith(\"https://\")) &&\n\t\t\t\t!images.includes(imageUrl)\n\t\t\t) {\n\t\t\t\timages.push(imageUrl);\n\t\t\t}\n\t\t});\n\n\t\treturn images;\n\t}\n\n\tprivate showPhotoUploadModal(url: string, options?: ModalOpenOptions): void {\n\t\tthis.closeModal();\n\t\tVirtualTryOnWidget.activeWidgetId = this.instanceId;\n\t\tthis.modal.open(url, options, () => this.closeModal());\n\t}\n\n\tprivate closeModal(): void {\n\t\tthis.modal.close();\n\t\tif (VirtualTryOnWidget.activeWidgetId === this.instanceId) {\n\t\t\tVirtualTryOnWidget.activeWidgetId = null;\n\t\t}\n\t}\n\n\tprivate showErrorToast(message: string): void {\n\t\tconst existingToast = document.getElementById(\"ww-vto-error-toast\");\n\t\tif (existingToast) {\n\t\t\texistingToast.remove();\n\t\t}\n\n\t\tconst toast = document.createElement(\"div\");\n\t\ttoast.id = \"ww-vto-error-toast\";\n\t\ttoast.setAttribute(\"role\", \"status\");\n\t\ttoast.setAttribute(\"aria-live\", \"polite\");\n\t\ttoast.style.cssText = `\n\t\t\tposition: fixed;\n\t\t\tleft: 50%;\n\t\t\tbottom: 24px;\n\t\t\ttransform: translateX(-50%);\n\t\t\tz-index: 2147483647;\n\t\t\tmax-width: min(92vw, 460px);\n\t\t\tpadding: 12px 14px;\n\t\t\tborder-radius: 12px;\n\t\t\tbackground: #ffffff;\n\t\t\tcolor: #111827;\n\t\t\tborder: 1px solid #e5e7eb;\n\t\t\tfont-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Arial, sans-serif;\n\t\t\tfont-size: 14px;\n\t\t\tline-height: 1.35;\n\t\t\tbox-shadow: 0 10px 32px rgba(0, 0, 0, 0.16);\n\t\t\topacity: 0;\n\t\t\ttransition: opacity 180ms ease;\n\t\t`;\n\n\t\tconst content = document.createElement(\"div\");\n\t\tcontent.style.cssText = `\n\t\t\tdisplay: flex;\n\t\t\talign-items: flex-start;\n\t\t\tgap: 10px;\n\t\t`;\n\n\t\tconst text = document.createElement(\"div\");\n\t\ttext.style.cssText = \"flex: 1;\";\n\t\ttext.textContent = message;\n\n\t\tconst closeButton = document.createElement(\"button\");\n\t\tcloseButton.type = \"button\";\n\t\tcloseButton.setAttribute(\"aria-label\", \"Close message\");\n\t\tcloseButton.textContent = \"Close\";\n\t\tcloseButton.style.cssText = `\n\t\t\tborder: none;\n\t\t\tbackground: transparent;\n\t\t\tcolor: #111827;\n\t\t\tfont-size: 12px;\n\t\t\tfont-weight: 600;\n\t\t\tcursor: pointer;\n\t\t\tpadding: 0;\n\t\t\tline-height: 1.2;\n\t\t\twhite-space: nowrap;\n\t\t`;\n\t\tcloseButton.onclick = () => {\n\t\t\ttoast.style.opacity = \"0\";\n\t\t\twindow.setTimeout(() => toast.remove(), 220);\n\t\t};\n\n\t\tcontent.appendChild(text);\n\t\tcontent.appendChild(closeButton);\n\t\ttoast.appendChild(content);\n\t\tdocument.body.appendChild(toast);\n\n\t\trequestAnimationFrame(() => {\n\t\t\ttoast.style.opacity = \"1\";\n\t\t});\n\t}\n\n\tprivate sendPendingPrefillToModal(): void {\n\t\tthis.modal.sendPendingPrefillToModal();\n\t}\n\n\tprivate postMessageToModal(type: ModalControlMessageType): void {\n\t\tthis.modal.postMessageToModal(type);\n\t}\n\n\tprivate setupIframeListener(): void {\n\t\tif (this.iframeMessageListener) {\n\t\t\twindow.removeEventListener(\"message\", this.iframeMessageListener);\n\t\t}\n\n\t\tthis.iframeMessageListener = (event: MessageEvent) => {\n\t\t\tif (VirtualTryOnWidget.activeWidgetId !== this.instanceId) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (event.origin !== new URL(this.config.baseUrl).origin) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tswitch (event.data.type) {\n\t\t\t\tcase \"VTO_CONFIRM_READY\":\n\t\t\t\t\tthis.sendPendingPrefillToModal();\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"VTO_IMAGE_SELECTED\":\n\t\t\t\t\tif (event.data.image) {\n\t\t\t\t\t\tthis.lastModelImage = event.data.image;\n\t\t\t\t\t\tthis.postMessageToModal(\"VTO_SCAN_START\");\n\t\t\t\t\t\tthis.startVirtualTryOn();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"CLOSE_MODAL\":\n\t\t\t\t\tthis.closeModal();\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t};\n\n\t\twindow.addEventListener(\"message\", this.iframeMessageListener);\n\t}\n\n\tprivate async startVirtualTryOn(isRefresh = false): Promise<void> {\n\t\tif (isRefresh) {\n\t\t\tconsole.log(\n\t\t\t\t\"[WeWear VTO] Refreshing virtual try-on with previous parameters...\",\n\t\t\t);\n\t\t}\n\n\t\tif (!this.lastModelImage) {\n\t\t\tconsole.warn(\n\t\t\t\t\"[WeWear VTO] Missing required data to start virtual try-on.\",\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.originalProductImages.length === 0) {\n\t\t\tthis.originalProductImages = this.getAllProductImages();\n\t\t}\n\n\t\tif (this.originalProductImages.length === 0) {\n\t\t\tconsole.warn(\"[WeWear VTO] No product images found.\");\n\t\t\treturn;\n\t\t}\n\n\t\tif (!this.preparedTryOnData) {\n\t\t\tthis.preparedTryOnData = await this.vtoApiClient.prepareTryOnData(\n\t\t\t\tthis.originalProductImages,\n\t\t\t\t{\n\t\t\t\t\tmodelTier: this.config.modelTier,\n\t\t\t\t\toutfitID: this.config.outfitID,\n\t\t\t\t},\n\t\t\t);\n\t\t}\n\n\t\tconst container = this.getContainer();\n\t\tlet shouldShowErrorToast = false;\n\n\t\ttry {\n\t\t\tconst submitResponse = await this.vtoApiClient.submitTryOn(\n\t\t\t\tthis.lastModelImage,\n\t\t\t\tthis.preparedTryOnData.productImages,\n\t\t\t\t{\n\t\t\t\t\tmodelTier: this.config.modelTier,\n\t\t\t\t\toutfitID: this.config.outfitID,\n\t\t\t\t},\n\t\t\t\tthis.preparedTryOnData,\n\t\t\t);\n\n\t\t\tlet status = await this.vtoApiClient.fetchJobStatus(\n\t\t\t\tsubmitResponse.job_id,\n\t\t\t);\n\n\t\t\twhile (status.status !== \"COMPLETED\" && status.status !== \"FAILED\") {\n\t\t\t\tawait new Promise((r) => setTimeout(r, 3000));\n\t\t\t\tstatus = await this.vtoApiClient.fetchJobStatus(submitResponse.job_id);\n\t\t\t}\n\n\t\t\tif (status.status === \"COMPLETED\") {\n\t\t\t\tconst finalImage = await this.vtoApiClient.fetchJobImage(\n\t\t\t\t\tsubmitResponse.job_id,\n\t\t\t\t);\n\t\t\t\tif (finalImage) {\n\t\t\t\t\tthis.postMessageToModal(\"VTO_SCAN_COMPLETE\");\n\t\t\t\t\tawait new Promise((r) => setTimeout(r, 500));\n\t\t\t\t\tthis.replaceProductImage(finalImage);\n\t\t\t\t}\n\t\t\t\tif (container instanceof HTMLElement) {\n\t\t\t\t\tthis.showButtonContainer(container);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (status.status === \"FAILED\") {\n\t\t\t\tconsole.error(\"[WeWear VTO] VTO process failed:\", status.message);\n\t\t\t\tshouldShowErrorToast = true;\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconsole.error(\"[WeWear VTO] Error during virtual try-on process:\", error);\n\t\t\tshouldShowErrorToast = true;\n\t\t} finally {\n\t\t\tthis.postMessageToModal(\"VTO_SCAN_STOP\");\n\t\t\tif (container instanceof HTMLElement) {\n\t\t\t\tthis.showButtonContainer(container);\n\t\t\t}\n\t\t\tif (shouldShowErrorToast) {\n\t\t\t\tthis.showErrorToast(VirtualTryOnWidget.ERROR_TOAST_MESSAGE);\n\t\t\t\tawait new Promise((r) => setTimeout(r, 500));\n\t\t\t}\n\t\t\tthis.closeModal();\n\t\t}\n\t}\n\n\tprivate replaceProductImage(imageUrl: string): void {\n\t\ttry {\n\t\t\tthis.virtualTryOnImageUrl = imageUrl;\n\n\t\t\tconst container = this.getContainer();\n\t\t\tif (!container) {\n\t\t\t\tconsole.warn(\n\t\t\t\t\t\"[WeWear VTO] Gallery container not found for image replacement:\",\n\t\t\t\t\tthis.config.gallerySelector,\n\t\t\t\t);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!container.hasAttribute(\"data-ww-original-content\")) {\n\t\t\t\tcontainer.setAttribute(\"data-ww-original-content\", container.innerHTML);\n\t\t\t}\n\n\t\t\tif (!container.hasAttribute(\"data-ww-container-locked\")) {\n\t\t\t\tconst containerRect = container.getBoundingClientRect();\n\n\t\t\t\tcontainer.setAttribute(\n\t\t\t\t\t\"data-ww-container-width\",\n\t\t\t\t\tcontainerRect.width.toString(),\n\t\t\t\t);\n\t\t\t\tcontainer.setAttribute(\n\t\t\t\t\t\"data-ww-container-height\",\n\t\t\t\t\tcontainerRect.height.toString(),\n\t\t\t\t);\n\n\t\t\t\tcontainer.style.width = `${containerRect.width}px`;\n\t\t\t\tcontainer.style.height = `${containerRect.height}px`;\n\t\t\t\tcontainer.style.minWidth = `${containerRect.width}px`;\n\t\t\t\tcontainer.style.minHeight = `${containerRect.height}px`;\n\n\t\t\t\tcontainer.style.paddingBottom = \"0\";\n\n\t\t\t\tcontainer.setAttribute(\"data-ww-container-locked\", \"true\");\n\t\t\t}\n\n\t\t\tconst originalImg = container.querySelector(\"img\");\n\t\t\tif (\n\t\t\t\toriginalImg &&\n\t\t\t\t!container.hasAttribute(\"data-ww-original-dimensions\")\n\t\t\t) {\n\t\t\t\tconst computedStyle = window.getComputedStyle(originalImg);\n\t\t\t\tconst rect = originalImg.getBoundingClientRect();\n\t\t\t\tcontainer.setAttribute(\"data-ww-original-width\", computedStyle.width);\n\t\t\t\tcontainer.setAttribute(\"data-ww-original-height\", computedStyle.height);\n\t\t\t\tcontainer.setAttribute(\n\t\t\t\t\t\"data-ww-original-rect-width\",\n\t\t\t\t\trect.width.toString(),\n\t\t\t\t);\n\t\t\t\tcontainer.setAttribute(\n\t\t\t\t\t\"data-ww-original-rect-height\",\n\t\t\t\t\trect.height.toString(),\n\t\t\t\t);\n\t\t\t\tcontainer.setAttribute(\"data-ww-original-dimensions\", \"true\");\n\t\t\t}\n\n\t\t\tthis.showVirtualTryOnImage(container);\n\n\t\t\tthis.updateButtonContainer(container);\n\n\t\t\tconsole.log(\n\t\t\t\t\"[WeWear VTO] Product image replaced with virtual try-on result\",\n\t\t\t);\n\t\t} catch (error) {\n\t\t\tconsole.error(\"[WeWear VTO] Error replacing product image:\", error);\n\t\t}\n\t}\n\n\tprivate showButtonContainer(container: HTMLElement): void {\n\t\tconst buttonContainer = container.querySelector(\n\t\t\t`.${CSS_CLASSES.BUTTON_CONTAINER}`,\n\t\t) as HTMLElement;\n\t\tif (buttonContainer) {\n\t\t\tbuttonContainer.style.display = \"flex\";\n\t\t}\n\t}\n\n\tprivate updateButtonContainer(container: HTMLElement): void {\n\t\tconst existingButtons = container.querySelectorAll(\n\t\t\t`.${CSS_CLASSES.BUTTON_CONTAINER}`,\n\t\t);\n\t\texistingButtons.forEach((btn) => {\n\t\t\tbtn.remove();\n\t\t});\n\n\t\tconst buttonContainer = createButtonContainer(\n\t\t\tthis.config.buttonPosition,\n\t\t\tthis.virtualTryOnImageUrl !== null,\n\t\t\tasync () => {\n\t\t\t\tawait this.handleTryOnClick();\n\t\t\t},\n\t\t\tasync () => {\n\t\t\t\tawait this.handleRegenerateClick();\n\t\t\t},\n\t\t\t() => {\n\t\t\t\tif (this.isShowingVirtualTryOn) {\n\t\t\t\t\tthis.showOriginalImage(container);\n\t\t\t\t} else {\n\t\t\t\t\tthis.showVirtualTryOnImage(container);\n\t\t\t\t}\n\t\t\t\tthis.updateButtonContainer(container);\n\t\t\t},\n\t\t\tthis.isShowingVirtualTryOn,\n\t\t\tasync () => {\n\t\t\t\tawait this.handleSaveClick();\n\t\t\t},\n\t\t\tasync () => {\n\t\t\t\tawait this.handleShareClick();\n\t\t\t},\n\t\t);\n\n\t\tcontainer.appendChild(buttonContainer);\n\t}\n\n\tprivate showVirtualTryOnImage(container: HTMLElement): void {\n\t\tif (!this.virtualTryOnImageUrl) {\n\t\t\tconsole.warn(\"[WeWear VTO] No virtual try-on image URL available\");\n\t\t\treturn;\n\t\t}\n\n\t\tArray.from(container.children).forEach((child) => {\n\t\t\tif (!child.classList.contains(CSS_CLASSES.BUTTON_CONTAINER)) {\n\t\t\t\tchild.remove();\n\t\t\t}\n\t\t});\n\n\t\tconst originalWidth =\n\t\t\tcontainer.getAttribute(\"data-ww-original-width\") || \"\";\n\t\tconst originalHeight =\n\t\t\tcontainer.getAttribute(\"data-ww-original-height\") || \"\";\n\t\tconst originalRectWidth =\n\t\t\tcontainer.getAttribute(\"data-ww-original-rect-width\") || \"\";\n\t\tconst originalRectHeight =\n\t\t\tcontainer.getAttribute(\"data-ww-original-rect-height\") || \"\";\n\n\t\tconst image = document.createElement(\"img\");\n\t\timage.src = this.virtualTryOnImageUrl;\n\t\timage.alt = \"Virtual Try-On Result\";\n\n\t\tlet widthStyle = \"100%\";\n\t\tlet heightStyle = \"100%\";\n\n\t\tif (originalWidth && originalWidth !== \"auto\" && originalWidth !== \"0px\") {\n\t\t\twidthStyle = originalWidth;\n\t\t} else if (originalRectWidth && originalRectWidth !== \"0\") {\n\t\t\twidthStyle = `${originalRectWidth}px`;\n\t\t}\n\n\t\tif (\n\t\t\toriginalHeight &&\n\t\t\toriginalHeight !== \"auto\" &&\n\t\t\toriginalHeight !== \"0px\"\n\t\t) {\n\t\t\theightStyle = originalHeight;\n\t\t} else if (originalRectHeight && originalRectHeight !== \"0\") {\n\t\t\theightStyle = `${originalRectHeight}px`;\n\t\t}\n\n\t\timage.style.cssText = `\n width: ${widthStyle};\n height: ${heightStyle};\n object-fit: contain;\n `;\n\n\t\tcontainer.prepend(image);\n\n\t\tthis.isShowingVirtualTryOn = true;\n\n\t\tthis.updateButtonContainer(container);\n\n\t\tconsole.log(\n\t\t\t\"[WeWear VTO] Product image replaced with virtual try-on result\",\n\t\t);\n\t}\n\n\tprivate showOriginalImage(container: HTMLElement): void {\n\t\tconst originalContentHTML = container.getAttribute(\n\t\t\t\"data-ww-original-content\",\n\t\t);\n\t\tif (originalContentHTML) {\n\t\t\tArray.from(container.children).forEach((child) => {\n\t\t\t\tif (!child.classList.contains(CSS_CLASSES.BUTTON_CONTAINER)) {\n\t\t\t\t\tchild.remove();\n\t\t\t\t}\n\t\t\t});\n\t\t\tconst tempDiv = document.createElement(\"div\");\n\t\t\ttempDiv.innerHTML = originalContentHTML;\n\t\t\tcontainer.append(...Array.from(tempDiv.children));\n\n\t\t\t// Remove temporary attributes used for VTO state\n\t\t\tcontainer.style.paddingBottom = \"\";\n\t\t}\n\n\t\tthis.isShowingVirtualTryOn = false;\n\t}\n\n\tpublic destroy(): void {\n\t\ttry {\n\t\t\tconst container = this.getContainer();\n\t\t\tif (container) {\n\t\t\t\tconst existingButtons = container.querySelectorAll(\n\t\t\t\t\t`.${CSS_CLASSES.BUTTON_CONTAINER}`,\n\t\t\t\t);\n\t\t\t\texistingButtons.forEach((btn) => {\n\t\t\t\t\tbtn.remove();\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tthis.closeModal();\n\n\t\t\tthis.cameraButton = null;\n\n\t\t\tif (this.iframeMessageListener) {\n\t\t\t\twindow.removeEventListener(\"message\", this.iframeMessageListener);\n\t\t\t\tthis.iframeMessageListener = null;\n\t\t\t}\n\n\t\t\tthis.virtualTryOnImageUrl = null;\n\t\t\tthis.isShowingVirtualTryOn = false;\n\t\t\tthis.lastModelImage = null;\n\t\t\tthis.originalProductImages = [];\n\t\t\tthis.preparedTryOnData = null;\n\n\t\t\tconsole.log(\"[WeWear VTO] Widget destroyed successfully\");\n\t\t} catch (error) {\n\t\t\tconsole.error(\"[WeWear VTO] Error during widget destruction:\", error);\n\t\t}\n\t}\n}\n","import type { VirtualTryOnConfig } from \"./index.js\";\nimport { VirtualTryOnWidget } from \"./widget.js\";\n\nlet widgetInstances: VirtualTryOnWidget[] = [];\n\nexport function initVirtualTryOn(config?: VirtualTryOnConfig): void {\n\ttry {\n\t\twidgetInstances.forEach((instance) => {\n\t\t\tinstance.destroy();\n\t\t});\n\t\twidgetInstances = [];\n\n\t\tif (!config) {\n\t\t\tconsole.log(\n\t\t\t\t\"[WeWear VTO] Missing configuration. Widget not initialized.\",\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\n\t\tconst allContainers = Array.from(\n\t\t\tdocument.querySelectorAll(config.gallerySelector),\n\t\t).filter(\n\t\t\t(container): container is HTMLElement => container instanceof HTMLElement,\n\t\t);\n\t\tconst shouldUseSingleton = config.singleton !== false;\n\n\t\tif (allContainers.length > 1 && !shouldUseSingleton) {\n\t\t\twidgetInstances = allContainers.map((galleryElement) => {\n\t\t\t\treturn new VirtualTryOnWidget({\n\t\t\t\t\t...config,\n\t\t\t\t\tgalleryElement,\n\t\t\t\t});\n\t\t\t});\n\t\t} else {\n\t\t\tconst firstContainer = allContainers[0];\n\t\t\twidgetInstances = [\n\t\t\t\tnew VirtualTryOnWidget({\n\t\t\t\t\t...config,\n\t\t\t\t\tgalleryElement: firstContainer,\n\t\t\t\t}),\n\t\t\t];\n\t\t}\n\n\t\tconst initializeWidgets = () => {\n\t\t\twidgetInstances.forEach((widget) => {\n\t\t\t\twidget.init().catch((error) => {\n\t\t\t\t\tconsole.error(\"[WeWear VTO] Failed to initialize:\", error);\n\t\t\t\t});\n\t\t\t});\n\t\t};\n\n\t\tif (document.readyState === \"loading\") {\n\t\t\tdocument.addEventListener(\"DOMContentLoaded\", initializeWidgets, {\n\t\t\t\tonce: true,\n\t\t\t});\n\t\t} else {\n\t\t\tinitializeWidgets();\n\t\t}\n\t} catch (error) {\n\t\tconsole.error(\"[WeWear VTO] Initialization error:\", error);\n\t}\n}\n\nexport function getWidgetInstance(): VirtualTryOnWidget | null {\n\treturn widgetInstances[0] ?? null;\n}\n\nexport function getWidgetInstances(): VirtualTryOnWidget[] {\n\treturn [...widgetInstances];\n}\n\nif (typeof window !== \"undefined\") {\n\tinitVirtualTryOn();\n}\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wewear/virtual-try-on",
3
- "version": "3.1.1",
3
+ "version": "3.1.2",
4
4
  "description": "Virtual Try-On widget for e-commerce integration",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",