@thefittingroom/shop-ui 3.1.4 → 3.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.rollup.cache/home/runner/work/shop-sdk-ui/shop-sdk-ui/dist/esm/components/SizeRec.js.map +1 -1
- package/.rollup.cache/home/runner/work/shop-sdk-ui/shop-sdk-ui/dist/esm/components/Vto.js.map +1 -1
- package/.rollup.cache/home/runner/work/shop-sdk-ui/shop-sdk-ui/dist/esm/tfr-size-rec.js +7 -6
- package/.rollup.cache/home/runner/work/shop-sdk-ui/shop-sdk-ui/dist/esm/tfr-size-rec.js.map +1 -1
- package/.rollup.cache/home/runner/work/shop-sdk-ui/shop-sdk-ui/dist/esm/tfr.js +25 -13
- package/.rollup.cache/home/runner/work/shop-sdk-ui/shop-sdk-ui/dist/esm/tfr.js.map +1 -1
- package/.rollup.cache/home/runner/work/shop-sdk-ui/shop-sdk-ui/dist/esm/types/index.js.map +1 -1
- package/.rollup.cache/home/runner/work/shop-sdk-ui/shop-sdk-ui/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/esm/index.js +35 -22
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/index.min.js +56 -56
- package/dist/esm/index.min.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
package/.rollup.cache/home/runner/work/shop-sdk-ui/shop-sdk-ui/dist/esm/components/SizeRec.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SizeRec.js","sourceRoot":"","sources":["../../../src/components/SizeRec.ts"],"names":[],"mappings":"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","sourcesContent":["import { infoIcon, tfrDoor, userIcon } from './svgs'\n\nexport type RecommendedSize = {\n recommended: string\n sizes: {\n size: string\n size_id: number\n locations: {\n fit: string\n isPerfect: boolean\n location: string\n }[]\n }[]\n}\n\nexport class SizeRecComponent {\n private _sku: string = ''\n private _styleId: number = null\n\n private isLoggedIn: boolean = false\n\n private tfrInfoIcon: HTMLDivElement\n private tfrLoginToView: HTMLDivElement\n private tfrSizeHowItFits: HTMLDivElement\n private tfrSizeRecActionLogin: HTMLDivElement\n private tfrSizeRecActionLogout: HTMLDivElement\n private tfrSizeRecLoading: HTMLDivElement\n private tfrSizeRecommendationError: HTMLDivElement\n private tfrSizeRecommendationsContainer: HTMLDivElement\n private tfrSizeRecSelect: HTMLDivElement\n private tfrSizeRecSelectContainer: HTMLDivElement\n private tfrSizeRecSize: HTMLDivElement\n private tfrSizeRecTable: HTMLDivElement\n private tfrSizeRecTitle: HTMLDivElement\n private tfrSizeRecTitleToggle: HTMLDivElement\n\n private tfrLoggedInElements: NodeList = [] as any as NodeList\n private tfrLoggedOutElements: NodeList = [] as any as NodeList\n\n private tfrToggleOpenElements: NodeList = [] as any as NodeList\n private tfrToggleClosedElements: NodeList = [] as any as NodeList\n\n private isCollapsed: boolean = false\n private redraw: (index: number) => void = null\n\n constructor(\n sizeRecMainDivId: string,\n private readonly onSignInClick: () => void,\n private readonly onSignOutClick: () => void,\n private readonly onFitInfoClick: () => void,\n private readonly onTryOnClick: (styleId: number, sizeId: number, shouldDisplay: boolean) => Promise<void>,\n ) {\n this.init(sizeRecMainDivId)\n }\n\n public get sku() {\n return this._sku\n }\n\n public setSku(sku: string) {\n this._sku = sku\n }\n\n public get styleId() {\n return this._styleId\n }\n\n public setStyleId(styleId: number) {\n this._styleId = styleId\n }\n\n public setIsLoggedIn(isLoggedIn: boolean) {\n this.isLoggedIn = isLoggedIn\n\n this.tfrSizeRecSelectContainer.style.display = 'flex'\n this.tfrSizeRecSelect.style.display = 'flex'\n this.tfrSizeHowItFits.style.display = 'block'\n\n if (isLoggedIn) {\n this.tfrSizeHowItFits.style.opacity = '1'\n this.tfrSizeRecSelect.style.opacity = '1'\n this.tfrLoggedInElements.forEach((element) => ((element as HTMLElement).style.display = 'block'))\n this.tfrLoggedOutElements.forEach((element) => ((element as HTMLElement).style.display = 'none'))\n\n this.tfrSizeRecActionLogin.style.display = 'none'\n this.tfrSizeRecActionLogout.style.display = 'block'\n this.tfrSizeRecTitle.style.display = 'flex'\n this.isCollapsed = false\n this.tfrSizeRecTitleToggle.classList.add('tfr-chevron-up')\n this.tfrSizeRecTitleToggle.classList.remove('tfr-chevron-down')\n\n // Ensure the container is visible\n this.tfrSizeRecSelectContainer.style.display = 'flex'\n this.tfrSizeRecSelectContainer.style.opacity = '1'\n } else {\n this.tfrSizeHowItFits.style.opacity = '0.4'\n this.tfrSizeRecSelect.style.opacity = '0.4'\n this.tfrLoggedInElements.forEach((element) => ((element as HTMLElement).style.display = 'none'))\n this.tfrLoggedOutElements.forEach((element) => ((element as HTMLElement).style.display = 'block'))\n\n this.tfrSizeRecActionLogin.style.display = 'block'\n this.tfrSizeRecActionLogout.style.display = 'none'\n\n this.tfrSizeRecTitle.style.display = 'flex'\n this.tfrSizeRecommendationError.style.display = 'none'\n this.tfrSizeRecommendationError.innerHTML = ''\n\n this.renderSizeRecSelectLoggedOut()\n }\n }\n\n public setLoading(isLoading: boolean) {\n if (isLoading) {\n this.tfrSizeRecLoading.style.display = 'block'\n this.tfrSizeRecommendationsContainer.style.display = 'none'\n } else {\n this.tfrSizeRecLoading.style.display = 'none'\n this.tfrSizeRecommendationsContainer.style.display = 'flex'\n }\n }\n\n public setGarmentLocations(locations: string[]) {\n if (!locations || !locations.length) {\n this.tfrSizeRecTitle.style.display = 'none'\n\n return\n }\n\n this.renderGarmentLocations(locations)\n }\n\n public setRecommendedSize({ recommended, sizes }: RecommendedSize) {\n this.renderSizeRec(recommended, sizes)\n }\n\n public setError() {\n this.tfrSizeRecTitle.style.display = 'none'\n\n if (!this.isLoggedIn) return\n\n this.tfrSizeRecommendationError.style.display = 'block'\n this.tfrSizeRecommendationError.innerHTML = 'No recommended size found.'\n }\n\n private init(sizeRecMainDivId: string) {\n const sizeRecMainDiv = document.getElementById(sizeRecMainDivId) as HTMLDivElement\n\n if (!sizeRecMainDiv) throw new Error('Size rec main div not found')\n\n this.render(sizeRecMainDiv)\n this.setElements()\n this.bindEvents()\n }\n\n private setElements() {\n this.tfrSizeHowItFits = document.getElementById('tfr-size-how-it-fits') as HTMLDivElement\n this.tfrSizeRecTitle = document.getElementById('tfr-size-rec-title') as HTMLDivElement\n\n this.tfrInfoIcon = document.getElementById('tfr-info-icon') as HTMLDivElement\n this.tfrLoginToView = document.getElementById('tfr-login-to-view') as HTMLDivElement\n this.tfrSizeRecActionLogin = document.getElementById('tfr-size-rec-action-login') as HTMLDivElement\n this.tfrSizeRecActionLogout = document.getElementById('tfr-size-rec-action-logout') as HTMLDivElement\n this.tfrSizeRecTable = document.getElementById('tfr-size-rec-table') as HTMLDivElement\n this.tfrSizeRecommendationError = document.getElementById('tfr-size-recommendation-error') as HTMLDivElement\n this.tfrSizeRecSize = document.getElementById('tfr-size-rec-size') as HTMLDivElement\n this.tfrSizeRecSelect = document.getElementById('tfr-size-rec-select') as HTMLDivElement\n this.tfrSizeRecLoading = document.getElementById('tfr-size-rec-loading') as HTMLDivElement\n this.tfrSizeRecTitleToggle = document.getElementById('tfr-size-rec-title-toggle') as HTMLDivElement\n this.tfrSizeRecSelectContainer = document.getElementById('tfr-size-rec-select-container') as HTMLDivElement\n this.tfrSizeRecommendationsContainer = document.getElementById(\n 'tfr-size-recommendations-container',\n ) as HTMLDivElement\n\n this.tfrLoggedInElements = document.querySelectorAll('.tfr-logged-in')\n this.tfrLoggedOutElements = document.querySelectorAll('.tfr-logged-out')\n this.tfrToggleOpenElements = document.querySelectorAll('.tfr-toggle-open')\n this.tfrToggleClosedElements = document.querySelectorAll('.tfr-toggle-closed')\n }\n\n private bindEvents() {\n this.tfrSizeRecActionLogin.addEventListener('click', this.onSignInClick)\n this.tfrSizeRecActionLogout.addEventListener('click', this.onSignOutClick)\n this.tfrSizeRecSelect.addEventListener('click', this.onSizeRecSelectClick.bind(this))\n this.tfrSizeRecTitleToggle.addEventListener('click', this.toggletSizeRecSelectContainer.bind(this))\n this.tfrInfoIcon.addEventListener('click', this.onFitInfoClick)\n this.tfrLoginToView.addEventListener('click', this.onSignInClick)\n\n const tryOnButton = document.getElementById('tfr-try-on-button')\n if (!tryOnButton) return\n\n tryOnButton.addEventListener('click', async () => {\n // Prevent multiple clicks while loading\n if (tryOnButton.classList.contains('loading')) {\n return\n }\n\n const activeButton = document.querySelector('.tfr-size-rec-select-button.active')\n if (!activeButton) return\n\n const selectedSizeId = Number(activeButton.getAttribute('data-size-id'))\n if (Number.isNaN(selectedSizeId)) return\n\n // Set loading state\n tryOnButton.classList.add('loading')\n const originalText = tryOnButton.textContent\n tryOnButton.textContent = ' '\n tryOnButton.setAttribute('disabled', 'true')\n\n try {\n // Get all size buttons\n const allSizeButtons = Array.from(document.querySelectorAll('.tfr-size-rec-select-button')) as HTMLElement[];\n const activeIndex = allSizeButtons.indexOf(activeButton as HTMLElement);\n\n if (this.styleId !== null) {\n // 1. Fetch and display the VTO for the active (recommended) size\n try {\n await this.onTryOnClick(this.styleId, selectedSizeId, true);\n } catch (e) {\n console.error(`Error trying on active size ${selectedSizeId}:`, e);\n // Optionally, inform the user about the error for the primary VTO\n }\n\n // 2. Fetch VTO for the size to the left (if it exists)\n if (activeIndex > 0) {\n const leftButton = allSizeButtons[activeIndex - 1];\n await this._preloadNeighborVTO(leftButton);\n }\n\n // 3. Fetch VTO for the size to the right (if it exists)\n if (activeIndex >= 0 && activeIndex < allSizeButtons.length - 1) {\n const rightButton = allSizeButtons[activeIndex + 1];\n await this._preloadNeighborVTO(rightButton);\n }\n }\n } catch (error) {\n console.error('Error during sequential try-on process:', error);\n } finally {\n // Reset loading state\n tryOnButton.classList.remove('loading')\n tryOnButton.textContent = originalText\n tryOnButton.removeAttribute('disabled')\n }\n })\n }\n\n private async _preloadNeighborVTO(buttonElement: HTMLElement): Promise<void> {\n // this.styleId is assumed to be non-null here because the calling context (bindEvents)\n // is wrapped in 'if (this.styleId !== null)'\n const sizeId = Number(buttonElement.getAttribute('data-size-id'));\n if (!Number.isNaN(sizeId)) {\n try {\n await this.onTryOnClick(this.styleId!, sizeId, false);\n } catch (e) {\n const buttonText = buttonElement.textContent?.trim() || 'N/A';\n console.error(`Error pre-loading try-on for size ${sizeId} (button: ${buttonText}):`, e);\n }\n }\n }\n\n private onSizeRecSelectClick(e: MouseEvent) {\n const target = e.target as HTMLDivElement\n if (!target.classList.contains('tfr-size-rec-select-button') || target.classList.contains('tfr-disabled')) return\n\n e.preventDefault()\n\n const selectedIndex = Number(target.getAttribute('data-index'))\n if (Number.isNaN(selectedIndex)) return\n\n const allButtons = document.querySelectorAll('.tfr-size-rec-select-button')\n\n allButtons.forEach((button) => button.classList.remove('active'))\n allButtons.item(selectedIndex).classList.add('active')\n\n this.redraw(selectedIndex)\n\n const selectedSizeId = Number(target.getAttribute('data-size-id'))\n if (Number.isNaN(selectedSizeId)) return\n\n this.onTryOnClick(this.styleId, selectedSizeId, true)\n }\n\n private renderSizeRec(recommended: string, sizes: RecommendedSize['sizes']) {\n this.tfrSizeRecSize.innerHTML = ` ${recommended}`\n\n const selectedSizeIndex = sizes.findIndex(({ size }) => size === recommended)\n\n this.redraw = (index: number) => this.renderSizeRecTable(sizes, index)\n\n this.redraw(selectedSizeIndex)\n this.renderSizeRecSelect(sizes, selectedSizeIndex)\n }\n\n private renderSizeRecTable(sizes: RecommendedSize['sizes'], index: number) {\n const { locations } = sizes[index]\n const html = locations\n .map(({ location, fit, isPerfect }) => this.renderSizeRecTableRow(location, fit, isPerfect))\n .join('')\n\n this.tfrSizeRecTable.innerHTML = html\n }\n\n private renderSizeRecSelect(sizes: RecommendedSize['sizes'], index: number) {\n const sizeNames = sizes.map(({ size }) => size)\n const html = sizeNames\n .map(\n (name, i) =>\n `<div class=\"tfr-size-rec-select-button ${i === index ? 'active' : ''}\" data-index=\"${i}\" data-size-id=\"${\n sizes[i].size_id\n }\">${name}</div>`,\n )\n .join('')\n\n this.tfrSizeRecSelect.innerHTML = html\n }\n\n private renderSizeRecSelectLoggedOut() {\n const html = [\n `<div class=\"tfr-size-rec-select-button tfr-disabled\">M</div>`,\n `<div class=\"tfr-size-rec-select-button tfr-disabled active\">L</div>`,\n `<div class=\"tfr-size-rec-select-button tfr-disabled\">XL</div>`,\n ].join('')\n\n this.tfrSizeRecSelect.innerHTML = html\n }\n\n private renderSizeRecTableRow(location: string, fit: string, isPerfect: boolean = false) {\n return `<div class=\"tfr-size-rec-table-row\">\n <div class=\"tfr-size-rec-table-cell-left\">${location}</div>\n <div class=\"tfr-size-rec-table-cell-right ${isPerfect ? 'perfect' : ''}\">\n ${fit}\n </div>\n </div>`\n }\n\n private renderGarmentLocations(locations: string[]) {\n const innerHtml = locations\n .map((location, index) => this.renderSizeRecTableRow(location, this.randomFit(index), true))\n .join('')\n const html = `<div id=\"tfr-logged-out-overlay-container\">\n <div id=\"tfr-logged-out-overlay\">\n Login to reveal how this item will fit specifically at each area of your body in different sizes\n </div>\n <div>\n ${innerHtml}\n </div>\n </div>`\n\n this.tfrSizeRecTable.innerHTML = html\n }\n\n private randomFit(index: number) {\n const choices = ['Slightly Tight', 'Perfect Fit', 'Perfect Fit', 'Slightly Loose', 'Perfect Fit']\n\n return choices[index % choices.length]\n }\n\n private toggletSizeRecSelectContainer() {\n if (this.isCollapsed) {\n this.isCollapsed = false\n this.tfrSizeRecTitleToggle.classList.add('tfr-chevron-up')\n this.tfrSizeRecTitleToggle.classList.remove('tfr-chevron-down')\n this.tfrToggleOpenElements.forEach((element) => ((element as HTMLElement).style.display = 'block'))\n this.tfrToggleClosedElements.forEach((element) => ((element as HTMLElement).style.display = 'none'))\n } else {\n this.isCollapsed = true\n this.tfrSizeRecTitleToggle.classList.remove('tfr-chevron-up')\n this.tfrSizeRecTitleToggle.classList.add('tfr-chevron-down')\n this.tfrToggleOpenElements.forEach((element) => ((element as HTMLElement).style.display = 'none'))\n this.tfrToggleClosedElements.forEach((element) => ((element as HTMLElement).style.display = 'block'))\n }\n }\n\n private render(sizeRecMainDiv: HTMLDivElement) {\n const body = `<div id=\"tfr-size-recommendations\">\n <div id=\"tfr-size-rec-loading\">\n <div class=\"lds-ellipsis\">\n <div></div>\n <div></div>\n <div></div>\n <div></div>\n </div>\n </div>\n <div id=\"tfr-size-recommendations-container\">\n <div id=\"tfr-size-rec-title-toggle\" class=\"tfr-chevron-up\">v</div>\n\n <div class=\"tfr-logged-out\">\n <div class=\"tfr-flex tfr-gap tfr-mb-2 tfr-mobile-small-text\">\n <div>Uncertain of your size?</div>\n \n <div class=\"tfr-toggle-closed\">\n <div class=\"tfr-flex tfr-items-center\">\n <div>Try</div>\n <div class=\"tfr-powered-by-logo\">${tfrDoor}</div>\n <div class=\"tfr-powered-by-text-bold\">The Fitting Room</div>\n </div>\n </div>\n\n <div class=\"tfr-toggle-open\">\n <div id=\"tfr-login-to-view\" class=\"tfr-flex tfr-items-center\">\n ${userIcon} Login to view\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"tfr-logged-in\">\n <div id=\"tfr-size-rec-title\">\n Recommended Size:\n <div id=\"tfr-size-rec-size\">\n <div class=\"tfr-size-rec-login-cta\">\n ${userIcon} Sign up to view\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"tfr-toggle-open\" style=\"width: 100%\">\n <div id=\"tfr-size-rec-select-container\">\n <div id=\"tfr-size-how-it-fits\">Select size to see how it fits:</div>\n\n <div id=\"tfr-size-rec-select\"></div>\n\n <div id=\"tfr-size-rec-subtitle\">\n How it fits\n <span id=\"tfr-info-icon\">${infoIcon}</span>\n </div>\n\n <div id=\"tfr-size-rec-table\"></div>\n\n <div id=\"tfr-try-on-button\" class=\"tfr-try-on-button\">Try On</div>\n </div>\n </div>\n\n <div id=\"tfr-size-rec-action\">\n <div id=\"tfr-size-rec-action-login\">Sign up or login</div>\n <div id=\"tfr-size-rec-action-logout\">Log out</div>\n </div>\n\n <div class=\"tfr-toggle-open\">\n <div class=\"tfr-powered-by\">\n <div>Powered by</div>\n <div class=\"tfr-powered-by-logo\">${tfrDoor}</div>\n <div class=\"tfr-powered-by-text-bold\">The Fitting Room</div>\n </div>\n </div>\n </div>\n </div>\n <div id=\"tfr-size-recommendation-error\"></div>`\n\n sizeRecMainDiv.innerHTML = body\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"SizeRec.js","sourceRoot":"","sources":["../../../src/components/SizeRec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAA;AAepD,MAAM,OAAO,gBAAgB;IA8B3B,YACE,gBAAwB,EACP,aAAyB,EACzB,cAA0B,EAC1B,cAA0B,EAC1B,YAAwF;QAHxF,kBAAa,GAAb,aAAa,CAAY;QACzB,mBAAc,GAAd,cAAc,CAAY;QAC1B,mBAAc,GAAd,cAAc,CAAY;QAC1B,iBAAY,GAAZ,YAAY,CAA4E;QAlCnG,SAAI,GAAW,EAAE,CAAA;QACjB,aAAQ,GAAW,IAAI,CAAA;QAEvB,eAAU,GAAY,KAAK,CAAA;QAiB3B,wBAAmB,GAAa,EAAqB,CAAA;QACrD,yBAAoB,GAAa,EAAqB,CAAA;QAEtD,0BAAqB,GAAa,EAAqB,CAAA;QACvD,4BAAuB,GAAa,EAAqB,CAAA;QAEzD,gBAAW,GAAY,KAAK,CAAA;QAC5B,WAAM,GAA4B,IAAI,CAAA;QAS5C,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;IAC7B,CAAC;IAED,IAAW,GAAG;QACZ,OAAO,IAAI,CAAC,IAAI,CAAA;IAClB,CAAC;IAEM,MAAM,CAAC,GAAW;QACvB,IAAI,CAAC,IAAI,GAAG,GAAG,CAAA;IACjB,CAAC;IAED,IAAW,OAAO;QAChB,OAAO,IAAI,CAAC,QAAQ,CAAA;IACtB,CAAC;IAEM,UAAU,CAAC,OAAe;QAC/B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAA;IACzB,CAAC;IAEM,aAAa,CAAC,UAAmB;QACtC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAE5B,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAA;QACrD,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAA;QAC5C,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAA;QAE7C,IAAI,UAAU,EAAE,CAAC;YACf,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,CAAA;YACzC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,CAAA;YACzC,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAE,OAAuB,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC,CAAC,CAAA;YACjG,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAE,OAAuB,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,CAAC,CAAA;YAEjG,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAA;YACjD,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAA;YACnD,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAA;YAC3C,IAAI,CAAC,WAAW,GAAG,KAAK,CAAA;YACxB,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;YAC1D,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAA;YAE/D,kCAAkC;YAClC,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAA;YACrD,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,CAAA;QAEpD,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAA;YAC3C,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAA;YAC3C,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAE,OAAuB,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,CAAC,CAAA;YAChG,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAE,OAAuB,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC,CAAC,CAAA;YAElG,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAA;YAClD,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAA;YAElD,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAA;YAC3C,IAAI,CAAC,0BAA0B,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAA;YACtD,IAAI,CAAC,0BAA0B,CAAC,SAAS,GAAG,EAAE,CAAA;YAE9C,IAAI,CAAC,4BAA4B,EAAE,CAAA;QACrC,CAAC;IACH,CAAC;IAEM,UAAU,CAAC,SAAkB;QAClC,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAA;YAC9C,IAAI,CAAC,+BAA+B,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAA;QAC7D,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAA;YAC7C,IAAI,CAAC,+BAA+B,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAA;QAC7D,CAAC;IACH,CAAC;IAEM,mBAAmB,CAAC,SAAmB;QAC5C,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;YACpC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAA;YAE3C,OAAM;QACR,CAAC;QAED,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAA;IACxC,CAAC;IAEM,kBAAkB,CAAC,EAAE,WAAW,EAAE,KAAK,EAAmB;QAC/D,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,KAAK,CAAC,CAAA;IACxC,CAAC;IAEM,QAAQ;QACb,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAA;QAE3C,IAAI,CAAC,IAAI,CAAC,UAAU;YAAE,OAAM;QAE5B,IAAI,CAAC,0BAA0B,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAA;QACvD,IAAI,CAAC,0BAA0B,CAAC,SAAS,GAAG,4BAA4B,CAAA;IAC1E,CAAC;IAEO,IAAI,CAAC,gBAAwB;QACnC,MAAM,cAAc,GAAG,QAAQ,CAAC,cAAc,CAAC,gBAAgB,CAAmB,CAAA;QAElF,IAAI,CAAC,cAAc;YAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAA;QAEnE,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAA;QAC3B,IAAI,CAAC,WAAW,EAAE,CAAA;QAClB,IAAI,CAAC,UAAU,EAAE,CAAA;IACnB,CAAC;IAEO,WAAW;QACjB,IAAI,CAAC,gBAAgB,GAAG,QAAQ,CAAC,cAAc,CAAC,sBAAsB,CAAmB,CAAA;QACzF,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC,cAAc,CAAC,oBAAoB,CAAmB,CAAA;QAEtF,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,cAAc,CAAC,eAAe,CAAmB,CAAA;QAC7E,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC,cAAc,CAAC,mBAAmB,CAAmB,CAAA;QACpF,IAAI,CAAC,qBAAqB,GAAG,QAAQ,CAAC,cAAc,CAAC,2BAA2B,CAAmB,CAAA;QACnG,IAAI,CAAC,sBAAsB,GAAG,QAAQ,CAAC,cAAc,CAAC,4BAA4B,CAAmB,CAAA;QACrG,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC,cAAc,CAAC,oBAAoB,CAAmB,CAAA;QACtF,IAAI,CAAC,0BAA0B,GAAG,QAAQ,CAAC,cAAc,CAAC,+BAA+B,CAAmB,CAAA;QAC5G,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC,cAAc,CAAC,mBAAmB,CAAmB,CAAA;QACpF,IAAI,CAAC,gBAAgB,GAAG,QAAQ,CAAC,cAAc,CAAC,qBAAqB,CAAmB,CAAA;QACxF,IAAI,CAAC,iBAAiB,GAAG,QAAQ,CAAC,cAAc,CAAC,sBAAsB,CAAmB,CAAA;QAC1F,IAAI,CAAC,qBAAqB,GAAG,QAAQ,CAAC,cAAc,CAAC,2BAA2B,CAAmB,CAAA;QACnG,IAAI,CAAC,yBAAyB,GAAG,QAAQ,CAAC,cAAc,CAAC,+BAA+B,CAAmB,CAAA;QAC3G,IAAI,CAAC,+BAA+B,GAAG,QAAQ,CAAC,cAAc,CAC5D,oCAAoC,CACnB,CAAA;QAEnB,IAAI,CAAC,mBAAmB,GAAG,QAAQ,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAA;QACtE,IAAI,CAAC,oBAAoB,GAAG,QAAQ,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAAA;QACxE,IAAI,CAAC,qBAAqB,GAAG,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAA;QAC1E,IAAI,CAAC,uBAAuB,GAAG,QAAQ,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,CAAA;IAChF,CAAC;IAEO,UAAU;QAChB,IAAI,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,CAAA;QACxE,IAAI,CAAC,sBAAsB,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,CAAA;QAC1E,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;QACrF,IAAI,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;QACnG,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,CAAA;QAC/D,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,CAAA;QAEjE,MAAM,WAAW,GAAG,QAAQ,CAAC,cAAc,CAAC,mBAAmB,CAAC,CAAA;QAChE,IAAI,CAAC,WAAW;YAAE,OAAM;QAExB,WAAW,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE;YAC/C,wCAAwC;YACxC,IAAI,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC9C,OAAM;YACR,CAAC;YAED,MAAM,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,oCAAoC,CAAC,CAAA;YACjF,IAAI,CAAC,YAAY;gBAAE,OAAM;YAEzB,MAAM,cAAc,GAAG,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC,CAAA;YACxE,IAAI,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC;gBAAE,OAAM;YAExC,oBAAoB;YACpB,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;YACpC,MAAM,YAAY,GAAG,WAAW,CAAC,WAAW,CAAA;YAC5C,WAAW,CAAC,WAAW,GAAG,GAAG,CAAA;YAC7B,WAAW,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA;YAE5C,IAAI,CAAC;gBACH,uBAAuB;gBACvB,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,6BAA6B,CAAC,CAAkB,CAAC;gBAC7G,MAAM,WAAW,GAAG,cAAc,CAAC,OAAO,CAAC,YAA2B,CAAC,CAAC;gBAExE,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;oBAC1B,iEAAiE;oBACjE,IAAI,CAAC;wBACH,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,EAAE,IAAI,CAAC,CAAC;oBAC9D,CAAC;oBAAC,OAAO,CAAC,EAAE,CAAC;wBACX,OAAO,CAAC,KAAK,CAAC,+BAA+B,cAAc,GAAG,EAAE,CAAC,CAAC,CAAC;wBACnE,kEAAkE;oBACpE,CAAC;oBAED,uDAAuD;oBACvD,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;wBACpB,MAAM,UAAU,GAAG,cAAc,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;wBACnD,MAAM,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;oBAC7C,CAAC;oBAED,wDAAwD;oBACxD,IAAI,WAAW,IAAI,CAAC,IAAI,WAAW,GAAG,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBAChE,MAAM,WAAW,GAAG,cAAc,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;wBACpD,MAAM,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;oBAC9C,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,yCAAyC,EAAE,KAAK,CAAC,CAAC;YAClE,CAAC;oBAAS,CAAC;gBACT,sBAAsB;gBACtB,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;gBACvC,WAAW,CAAC,WAAW,GAAG,YAAY,CAAA;gBACtC,WAAW,CAAC,eAAe,CAAC,UAAU,CAAC,CAAA;YACzC,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;IAEO,KAAK,CAAC,mBAAmB,CAAC,aAA0B;;QAC1D,uFAAuF;QACvF,6CAA6C;QAC7C,MAAM,MAAM,GAAG,MAAM,CAAC,aAAa,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC,CAAC;QAClE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1B,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;YACxD,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,MAAM,UAAU,GAAG,CAAA,MAAA,aAAa,CAAC,WAAW,0CAAE,IAAI,EAAE,KAAI,KAAK,CAAC;gBAC9D,OAAO,CAAC,KAAK,CAAC,qCAAqC,MAAM,aAAa,UAAU,IAAI,EAAE,CAAC,CAAC,CAAC;YAC3F,CAAC;QACH,CAAC;IACH,CAAC;IAEO,oBAAoB,CAAC,CAAa;QACxC,MAAM,MAAM,GAAG,CAAC,CAAC,MAAwB,CAAA;QACzC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,4BAA4B,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC;YAAE,OAAM;QAEjH,CAAC,CAAC,cAAc,EAAE,CAAA;QAElB,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,CAAA;QAC/D,IAAI,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC;YAAE,OAAM;QAEvC,MAAM,UAAU,GAAG,QAAQ,CAAC,gBAAgB,CAAC,6BAA6B,CAAC,CAAA;QAE3E,UAAU,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAA;QACjE,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QAEtD,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAA;QAE1B,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC,CAAA;QAClE,IAAI,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC;YAAE,OAAM;QAExC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,EAAE,IAAI,CAAC,CAAA;IACvD,CAAC;IAEO,aAAa,CAAC,WAAmB,EAAE,KAA+B;QACxE,IAAI,CAAC,cAAc,CAAC,SAAS,GAAG,SAAS,WAAW,EAAE,CAAA;QAEtD,MAAM,iBAAiB,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,KAAK,WAAW,CAAC,CAAA;QAE7E,IAAI,CAAC,MAAM,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;QAEtE,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAA;QAC9B,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAA;IACpD,CAAC;IAEO,kBAAkB,CAAC,KAA+B,EAAE,KAAa;QACvE,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAA;QAClC,MAAM,IAAI,GAAG,SAAS;aACnB,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,qBAAqB,CAAC,QAAQ,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;aAC3F,IAAI,CAAC,EAAE,CAAC,CAAA;QAEX,IAAI,CAAC,eAAe,CAAC,SAAS,GAAG,IAAI,CAAA;IACvC,CAAC;IAEO,mBAAmB,CAAC,KAA+B,EAAE,KAAa;QACxE,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,CAAA;QAC/C,MAAM,IAAI,GAAG,SAAS;aACnB,GAAG,CACF,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CACV,0CAA0C,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,iBAAiB,CAAC,mBAAmB,KAAK,CAAC,CAAC,CAAC,CAAC,OACnH,KAAK,IAAI,QAAQ,CACpB;aACA,IAAI,CAAC,EAAE,CAAC,CAAA;QAEX,IAAI,CAAC,gBAAgB,CAAC,SAAS,GAAG,IAAI,CAAA;IACxC,CAAC;IAEO,4BAA4B;QAClC,MAAM,IAAI,GAAG;YACX,8DAA8D;YAC9D,qEAAqE;YACrE,+DAA+D;SAChE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAEV,IAAI,CAAC,gBAAgB,CAAC,SAAS,GAAG,IAAI,CAAA;IACxC,CAAC;IAEO,qBAAqB,CAAC,QAAgB,EAAE,GAAW,EAAE,YAAqB,KAAK;QACrF,OAAO;0DAC+C,QAAQ;0DACR,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;kBAClE,GAAG;;mBAEF,CAAA;IACjB,CAAC;IAEO,sBAAsB,CAAC,SAAmB;QAChD,MAAM,SAAS,GAAG,SAAS;aACxB,GAAG,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,qBAAqB,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC;aAC3F,IAAI,CAAC,EAAE,CAAC,CAAA;QACX,MAAM,IAAI,GAAG;;;;;wBAKO,SAAS;;yBAER,CAAA;QAErB,IAAI,CAAC,eAAe,CAAC,SAAS,GAAG,IAAI,CAAA;IACvC,CAAC;IAEO,SAAS,CAAC,KAAa;QAC7B,MAAM,OAAO,GAAG,CAAC,gBAAgB,EAAE,aAAa,EAAE,aAAa,EAAE,gBAAgB,EAAE,aAAa,CAAC,CAAA;QAEjG,OAAO,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IACxC,CAAC;IAEO,6BAA6B;QACnC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAA;YACxB,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;YAC1D,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAA;YAC/D,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAE,OAAuB,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC,CAAC,CAAA;YACnG,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAE,OAAuB,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,CAAC,CAAA;QACtG,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,WAAW,GAAG,IAAI,CAAA;YACvB,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAA;YAC7D,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAA;YAC5D,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAE,OAAuB,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,CAAC,CAAA;YAClG,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAE,OAAuB,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC,CAAC,CAAA;QACvG,CAAC;IACH,CAAC;IAEO,MAAM,CAAC,cAA8B;QAC3C,MAAM,IAAI,GAAG;;;;;;;;;;;;;;;;;;;iEAmBgD,OAAO;;;;;;;gCAOxC,QAAQ;;;;;;;;;;;gCAWR,QAAQ;;;;;;;;;;;;;;uDAce,QAAQ;;;;;;;;;;;;;;;;;6DAiBF,OAAO;;;;;;iEAMH,CAAA;QAE7D,cAAc,CAAC,SAAS,GAAG,IAAI,CAAA;IACjC,CAAC;CACF","sourcesContent":["import { infoIcon, tfrDoor, userIcon } from './svgs'\n\nexport type RecommendedSize = {\n recommended: string\n sizes: {\n size: string\n size_id: number\n locations: {\n fit: string\n isPerfect: boolean\n location: string\n }[]\n }[]\n}\n\nexport class SizeRecComponent {\n private _sku: string = ''\n private _styleId: number = null\n\n private isLoggedIn: boolean = false\n\n private tfrInfoIcon: HTMLDivElement\n private tfrLoginToView: HTMLDivElement\n private tfrSizeHowItFits: HTMLDivElement\n private tfrSizeRecActionLogin: HTMLDivElement\n private tfrSizeRecActionLogout: HTMLDivElement\n private tfrSizeRecLoading: HTMLDivElement\n private tfrSizeRecommendationError: HTMLDivElement\n private tfrSizeRecommendationsContainer: HTMLDivElement\n private tfrSizeRecSelect: HTMLDivElement\n private tfrSizeRecSelectContainer: HTMLDivElement\n private tfrSizeRecSize: HTMLDivElement\n private tfrSizeRecTable: HTMLDivElement\n private tfrSizeRecTitle: HTMLDivElement\n private tfrSizeRecTitleToggle: HTMLDivElement\n\n private tfrLoggedInElements: NodeList = [] as any as NodeList\n private tfrLoggedOutElements: NodeList = [] as any as NodeList\n\n private tfrToggleOpenElements: NodeList = [] as any as NodeList\n private tfrToggleClosedElements: NodeList = [] as any as NodeList\n\n private isCollapsed: boolean = false\n private redraw: (index: number) => void = null\n\n constructor(\n sizeRecMainDivId: string,\n private readonly onSignInClick: () => void,\n private readonly onSignOutClick: () => void,\n private readonly onFitInfoClick: () => void,\n private readonly onTryOnClick: (styleId: number, sizeId: number, shouldDisplay: boolean) => Promise<void>,\n ) {\n this.init(sizeRecMainDivId)\n }\n\n public get sku() {\n return this._sku\n }\n\n public setSku(sku: string) {\n this._sku = sku\n }\n\n public get styleId() {\n return this._styleId\n }\n\n public setStyleId(styleId: number) {\n this._styleId = styleId\n }\n\n public setIsLoggedIn(isLoggedIn: boolean) {\n this.isLoggedIn = isLoggedIn\n\n this.tfrSizeRecSelectContainer.style.display = 'flex'\n this.tfrSizeRecSelect.style.display = 'flex'\n this.tfrSizeHowItFits.style.display = 'block'\n\n if (isLoggedIn) {\n this.tfrSizeHowItFits.style.opacity = '1'\n this.tfrSizeRecSelect.style.opacity = '1'\n this.tfrLoggedInElements.forEach((element) => ((element as HTMLElement).style.display = 'block'))\n this.tfrLoggedOutElements.forEach((element) => ((element as HTMLElement).style.display = 'none'))\n\n this.tfrSizeRecActionLogin.style.display = 'none'\n this.tfrSizeRecActionLogout.style.display = 'block'\n this.tfrSizeRecTitle.style.display = 'flex'\n this.isCollapsed = false\n this.tfrSizeRecTitleToggle.classList.add('tfr-chevron-up')\n this.tfrSizeRecTitleToggle.classList.remove('tfr-chevron-down')\n\n // Ensure the container is visible\n this.tfrSizeRecSelectContainer.style.display = 'flex'\n this.tfrSizeRecSelectContainer.style.opacity = '1'\n\n } else {\n this.tfrSizeHowItFits.style.opacity = '0.4'\n this.tfrSizeRecSelect.style.opacity = '0.4'\n this.tfrLoggedInElements.forEach((element) => ((element as HTMLElement).style.display = 'none'))\n this.tfrLoggedOutElements.forEach((element) => ((element as HTMLElement).style.display = 'block'))\n\n this.tfrSizeRecActionLogin.style.display = 'block'\n this.tfrSizeRecActionLogout.style.display = 'none'\n\n this.tfrSizeRecTitle.style.display = 'flex'\n this.tfrSizeRecommendationError.style.display = 'none'\n this.tfrSizeRecommendationError.innerHTML = ''\n\n this.renderSizeRecSelectLoggedOut()\n }\n }\n\n public setLoading(isLoading: boolean) {\n if (isLoading) {\n this.tfrSizeRecLoading.style.display = 'block'\n this.tfrSizeRecommendationsContainer.style.display = 'none'\n } else {\n this.tfrSizeRecLoading.style.display = 'none'\n this.tfrSizeRecommendationsContainer.style.display = 'flex'\n }\n }\n\n public setGarmentLocations(locations: string[]) {\n if (!locations || !locations.length) {\n this.tfrSizeRecTitle.style.display = 'none'\n\n return\n }\n\n this.renderGarmentLocations(locations)\n }\n\n public setRecommendedSize({ recommended, sizes }: RecommendedSize) {\n this.renderSizeRec(recommended, sizes)\n }\n\n public setError() {\n this.tfrSizeRecTitle.style.display = 'none'\n\n if (!this.isLoggedIn) return\n\n this.tfrSizeRecommendationError.style.display = 'block'\n this.tfrSizeRecommendationError.innerHTML = 'No recommended size found.'\n }\n\n private init(sizeRecMainDivId: string) {\n const sizeRecMainDiv = document.getElementById(sizeRecMainDivId) as HTMLDivElement\n\n if (!sizeRecMainDiv) throw new Error('Size rec main div not found')\n\n this.render(sizeRecMainDiv)\n this.setElements()\n this.bindEvents()\n }\n\n private setElements() {\n this.tfrSizeHowItFits = document.getElementById('tfr-size-how-it-fits') as HTMLDivElement\n this.tfrSizeRecTitle = document.getElementById('tfr-size-rec-title') as HTMLDivElement\n\n this.tfrInfoIcon = document.getElementById('tfr-info-icon') as HTMLDivElement\n this.tfrLoginToView = document.getElementById('tfr-login-to-view') as HTMLDivElement\n this.tfrSizeRecActionLogin = document.getElementById('tfr-size-rec-action-login') as HTMLDivElement\n this.tfrSizeRecActionLogout = document.getElementById('tfr-size-rec-action-logout') as HTMLDivElement\n this.tfrSizeRecTable = document.getElementById('tfr-size-rec-table') as HTMLDivElement\n this.tfrSizeRecommendationError = document.getElementById('tfr-size-recommendation-error') as HTMLDivElement\n this.tfrSizeRecSize = document.getElementById('tfr-size-rec-size') as HTMLDivElement\n this.tfrSizeRecSelect = document.getElementById('tfr-size-rec-select') as HTMLDivElement\n this.tfrSizeRecLoading = document.getElementById('tfr-size-rec-loading') as HTMLDivElement\n this.tfrSizeRecTitleToggle = document.getElementById('tfr-size-rec-title-toggle') as HTMLDivElement\n this.tfrSizeRecSelectContainer = document.getElementById('tfr-size-rec-select-container') as HTMLDivElement\n this.tfrSizeRecommendationsContainer = document.getElementById(\n 'tfr-size-recommendations-container',\n ) as HTMLDivElement\n\n this.tfrLoggedInElements = document.querySelectorAll('.tfr-logged-in')\n this.tfrLoggedOutElements = document.querySelectorAll('.tfr-logged-out')\n this.tfrToggleOpenElements = document.querySelectorAll('.tfr-toggle-open')\n this.tfrToggleClosedElements = document.querySelectorAll('.tfr-toggle-closed')\n }\n\n private bindEvents() {\n this.tfrSizeRecActionLogin.addEventListener('click', this.onSignInClick)\n this.tfrSizeRecActionLogout.addEventListener('click', this.onSignOutClick)\n this.tfrSizeRecSelect.addEventListener('click', this.onSizeRecSelectClick.bind(this))\n this.tfrSizeRecTitleToggle.addEventListener('click', this.toggletSizeRecSelectContainer.bind(this))\n this.tfrInfoIcon.addEventListener('click', this.onFitInfoClick)\n this.tfrLoginToView.addEventListener('click', this.onSignInClick)\n\n const tryOnButton = document.getElementById('tfr-try-on-button')\n if (!tryOnButton) return\n\n tryOnButton.addEventListener('click', async () => {\n // Prevent multiple clicks while loading\n if (tryOnButton.classList.contains('loading')) {\n return\n }\n\n const activeButton = document.querySelector('.tfr-size-rec-select-button.active')\n if (!activeButton) return\n\n const selectedSizeId = Number(activeButton.getAttribute('data-size-id'))\n if (Number.isNaN(selectedSizeId)) return\n\n // Set loading state\n tryOnButton.classList.add('loading')\n const originalText = tryOnButton.textContent\n tryOnButton.textContent = ' '\n tryOnButton.setAttribute('disabled', 'true')\n\n try {\n // Get all size buttons\n const allSizeButtons = Array.from(document.querySelectorAll('.tfr-size-rec-select-button')) as HTMLElement[];\n const activeIndex = allSizeButtons.indexOf(activeButton as HTMLElement);\n\n if (this.styleId !== null) {\n // 1. Fetch and display the VTO for the active (recommended) size\n try {\n await this.onTryOnClick(this.styleId, selectedSizeId, true);\n } catch (e) {\n console.error(`Error trying on active size ${selectedSizeId}:`, e);\n // Optionally, inform the user about the error for the primary VTO\n }\n\n // 2. Fetch VTO for the size to the left (if it exists)\n if (activeIndex > 0) {\n const leftButton = allSizeButtons[activeIndex - 1];\n await this._preloadNeighborVTO(leftButton);\n }\n\n // 3. Fetch VTO for the size to the right (if it exists)\n if (activeIndex >= 0 && activeIndex < allSizeButtons.length - 1) {\n const rightButton = allSizeButtons[activeIndex + 1];\n await this._preloadNeighborVTO(rightButton);\n }\n }\n } catch (error) {\n console.error('Error during sequential try-on process:', error);\n } finally {\n // Reset loading state\n tryOnButton.classList.remove('loading')\n tryOnButton.textContent = originalText\n tryOnButton.removeAttribute('disabled')\n }\n })\n }\n\n private async _preloadNeighborVTO(buttonElement: HTMLElement): Promise<void> {\n // this.styleId is assumed to be non-null here because the calling context (bindEvents)\n // is wrapped in 'if (this.styleId !== null)'\n const sizeId = Number(buttonElement.getAttribute('data-size-id'));\n if (!Number.isNaN(sizeId)) {\n try {\n await this.onTryOnClick(this.styleId!, sizeId, false);\n } catch (e) {\n const buttonText = buttonElement.textContent?.trim() || 'N/A';\n console.error(`Error pre-loading try-on for size ${sizeId} (button: ${buttonText}):`, e);\n }\n }\n }\n\n private onSizeRecSelectClick(e: MouseEvent) {\n const target = e.target as HTMLDivElement\n if (!target.classList.contains('tfr-size-rec-select-button') || target.classList.contains('tfr-disabled')) return\n\n e.preventDefault()\n\n const selectedIndex = Number(target.getAttribute('data-index'))\n if (Number.isNaN(selectedIndex)) return\n\n const allButtons = document.querySelectorAll('.tfr-size-rec-select-button')\n\n allButtons.forEach((button) => button.classList.remove('active'))\n allButtons.item(selectedIndex).classList.add('active')\n\n this.redraw(selectedIndex)\n\n const selectedSizeId = Number(target.getAttribute('data-size-id'))\n if (Number.isNaN(selectedSizeId)) return\n\n this.onTryOnClick(this.styleId, selectedSizeId, true)\n }\n\n private renderSizeRec(recommended: string, sizes: RecommendedSize['sizes']) {\n this.tfrSizeRecSize.innerHTML = ` ${recommended}`\n\n const selectedSizeIndex = sizes.findIndex(({ size }) => size === recommended)\n\n this.redraw = (index: number) => this.renderSizeRecTable(sizes, index)\n\n this.redraw(selectedSizeIndex)\n this.renderSizeRecSelect(sizes, selectedSizeIndex)\n }\n\n private renderSizeRecTable(sizes: RecommendedSize['sizes'], index: number) {\n const { locations } = sizes[index]\n const html = locations\n .map(({ location, fit, isPerfect }) => this.renderSizeRecTableRow(location, fit, isPerfect))\n .join('')\n\n this.tfrSizeRecTable.innerHTML = html\n }\n\n private renderSizeRecSelect(sizes: RecommendedSize['sizes'], index: number) {\n const sizeNames = sizes.map(({ size }) => size)\n const html = sizeNames\n .map(\n (name, i) =>\n `<div class=\"tfr-size-rec-select-button ${i === index ? 'active' : ''}\" data-index=\"${i}\" data-size-id=\"${sizes[i].size_id\n }\">${name}</div>`,\n )\n .join('')\n\n this.tfrSizeRecSelect.innerHTML = html\n }\n\n private renderSizeRecSelectLoggedOut() {\n const html = [\n `<div class=\"tfr-size-rec-select-button tfr-disabled\">M</div>`,\n `<div class=\"tfr-size-rec-select-button tfr-disabled active\">L</div>`,\n `<div class=\"tfr-size-rec-select-button tfr-disabled\">XL</div>`,\n ].join('')\n\n this.tfrSizeRecSelect.innerHTML = html\n }\n\n private renderSizeRecTableRow(location: string, fit: string, isPerfect: boolean = false) {\n return `<div class=\"tfr-size-rec-table-row\">\n <div class=\"tfr-size-rec-table-cell-left\">${location}</div>\n <div class=\"tfr-size-rec-table-cell-right ${isPerfect ? 'perfect' : ''}\">\n ${fit}\n </div>\n </div>`\n }\n\n private renderGarmentLocations(locations: string[]) {\n const innerHtml = locations\n .map((location, index) => this.renderSizeRecTableRow(location, this.randomFit(index), true))\n .join('')\n const html = `<div id=\"tfr-logged-out-overlay-container\">\n <div id=\"tfr-logged-out-overlay\">\n Login to reveal how this item will fit specifically at each area of your body in different sizes\n </div>\n <div>\n ${innerHtml}\n </div>\n </div>`\n\n this.tfrSizeRecTable.innerHTML = html\n }\n\n private randomFit(index: number) {\n const choices = ['Slightly Tight', 'Perfect Fit', 'Perfect Fit', 'Slightly Loose', 'Perfect Fit']\n\n return choices[index % choices.length]\n }\n\n private toggletSizeRecSelectContainer() {\n if (this.isCollapsed) {\n this.isCollapsed = false\n this.tfrSizeRecTitleToggle.classList.add('tfr-chevron-up')\n this.tfrSizeRecTitleToggle.classList.remove('tfr-chevron-down')\n this.tfrToggleOpenElements.forEach((element) => ((element as HTMLElement).style.display = 'block'))\n this.tfrToggleClosedElements.forEach((element) => ((element as HTMLElement).style.display = 'none'))\n } else {\n this.isCollapsed = true\n this.tfrSizeRecTitleToggle.classList.remove('tfr-chevron-up')\n this.tfrSizeRecTitleToggle.classList.add('tfr-chevron-down')\n this.tfrToggleOpenElements.forEach((element) => ((element as HTMLElement).style.display = 'none'))\n this.tfrToggleClosedElements.forEach((element) => ((element as HTMLElement).style.display = 'block'))\n }\n }\n\n private render(sizeRecMainDiv: HTMLDivElement) {\n const body = `<div id=\"tfr-size-recommendations\">\n <div id=\"tfr-size-rec-loading\">\n <div class=\"lds-ellipsis\">\n <div></div>\n <div></div>\n <div></div>\n <div></div>\n </div>\n </div>\n <div id=\"tfr-size-recommendations-container\">\n <div id=\"tfr-size-rec-title-toggle\" class=\"tfr-chevron-up\">v</div>\n\n <div class=\"tfr-logged-out\">\n <div class=\"tfr-flex tfr-gap tfr-mb-2 tfr-mobile-small-text\">\n <div>Uncertain of your size?</div>\n \n <div class=\"tfr-toggle-closed\">\n <div class=\"tfr-flex tfr-items-center\">\n <div>Try</div>\n <div class=\"tfr-powered-by-logo\">${tfrDoor}</div>\n <div class=\"tfr-powered-by-text-bold\">The Fitting Room</div>\n </div>\n </div>\n\n <div class=\"tfr-toggle-open\">\n <div id=\"tfr-login-to-view\" class=\"tfr-flex tfr-items-center\">\n ${userIcon} Login to view\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"tfr-logged-in\">\n <div id=\"tfr-size-rec-title\">\n Recommended Size:\n <div id=\"tfr-size-rec-size\">\n <div class=\"tfr-size-rec-login-cta\">\n ${userIcon} Sign up to view\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"tfr-toggle-open\" style=\"width: 100%\">\n <div id=\"tfr-size-rec-select-container\">\n <div id=\"tfr-size-how-it-fits\">Select size to see how it fits:</div>\n\n <div id=\"tfr-size-rec-select\"></div>\n\n <div id=\"tfr-size-rec-subtitle\">\n How it fits\n <span id=\"tfr-info-icon\">${infoIcon}</span>\n </div>\n\n <div id=\"tfr-size-rec-table\"></div>\n\n <div id=\"tfr-try-on-button\" class=\"tfr-try-on-button\">Try On</div>\n </div>\n </div>\n\n <div id=\"tfr-size-rec-action\">\n <div id=\"tfr-size-rec-action-login\">Sign up or login</div>\n <div id=\"tfr-size-rec-action-logout\">Log out</div>\n </div>\n\n <div class=\"tfr-toggle-open\">\n <div class=\"tfr-powered-by\">\n <div>Powered by</div>\n <div class=\"tfr-powered-by-logo\">${tfrDoor}</div>\n <div class=\"tfr-powered-by-text-bold\">The Fitting Room</div>\n </div>\n </div>\n </div>\n </div>\n <div id=\"tfr-size-recommendation-error\"></div>`\n\n sizeRecMainDiv.innerHTML = body\n }\n}\n"]}
|
package/.rollup.cache/home/runner/work/shop-sdk-ui/shop-sdk-ui/dist/esm/components/Vto.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Vto.js","sourceRoot":"","sources":["../../../src/components/Vto.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAE1C,MAAM,OAAO,YAAY;IAKvB,YAA6B,YAAoB;QAApB,iBAAY,GAAZ,YAAY,CAAQ;QAJzC,WAAM,GAAG,KAAK,CAAA;QACd,uBAAkB,GAAW,CAAC,CAAA;QAC9B,WAAM,GAAuC,IAAI,CAAA;
|
|
1
|
+
{"version":3,"file":"Vto.js","sourceRoot":"","sources":["../../../src/components/Vto.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAE1C,MAAM,OAAO,YAAY;IAKvB,YAA6B,YAAoB;QAApB,iBAAY,GAAZ,YAAY,CAAQ;QAJzC,WAAM,GAAG,KAAK,CAAA;QACd,uBAAkB,GAAW,CAAC,CAAA;QAC9B,WAAM,GAAuC,IAAI,CAAA;IAEJ,CAAC;IAE/C,IAAI;QACT,IAAI,IAAI,CAAC,MAAM;YAAE,OAAM;QAEvB,MAAM,UAAU,GAAG,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;QAE7D,IAAI,CAAC,UAAU;YAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,IAAI,CAAC,YAAY,YAAY,CAAC,CAAA;QAElF,UAAU,CAAC,SAAS,GAAG;;;;;KAKtB,CAAA;QAED,MAAM,UAAU,GAAqB,QAAQ,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAA;QAC/E,MAAM,QAAQ,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE;YACpC,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAA;YAChD,UAAU,CAAC,GAAG,GAAG,QAAQ,CAAA;YACzB,IAAI,CAAC,kBAAkB,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAClD,CAAC,CAAA;QAED,IAAI,CAAC,MAAM,GAAG,eAAe,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAA;QACrD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA;IACpB,CAAC;IAEM,gBAAgB,CAAC,MAAgB;QACtC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,IAAI,CAAC,IAAI,EAAE,CAAA;QACb,CAAC;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/C,2EAA2E;YAC3E,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,kBAAkB,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;YACzE,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;YAChD,IAAI,CAAC,YAAY,KAAK,EAAE,CAAC;gBACvB,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;gBAChB,OAAM;YACR,CAAC;YAED,yDAAyD;YACzD,MAAM,aAAa,GAAG,QAAQ,CAAC,cAAc,CAAC,YAAY,CAAqB,CAAA;YAC/E,IAAI,aAAa,IAAI,IAAI,CAAC,kBAAkB,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;gBAC7D,aAAa,CAAC,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,CAAA;gBACxD,MAAM,UAAU,GAAqB,QAAQ,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAA;gBAC/E,UAAU,CAAC,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAA;YAClD,CAAC;QACH,CAAC;IACH,CAAC;CACF","sourcesContent":["import { InitImageSlider } from './slider'\n\nexport class VtoComponent {\n private isInit = false\n private currentSliderValue: number = 0\n private slider: ReturnType<typeof InitImageSlider> = null\n\n constructor(private readonly vtoMainDivId: string) { }\n\n public init() {\n if (this.isInit) return\n\n const vtoMainDiv = document.getElementById(this.vtoMainDivId)\n\n if (!vtoMainDiv) throw new Error(`Element with id ${this.vtoMainDivId} not found`)\n\n vtoMainDiv.innerHTML = `\n <div class=\"tfr-slider-wrapper\">\n <img id=\"tfr-tryon-image\" src=\"\" />\n <input type=\"range\" id=\"tfr-slider\" />\n </div>\n `\n\n const tryOnImage = <HTMLImageElement>document.getElementById('tfr-tryon-image')\n const onChange = (slider, imageUrl) => {\n console.debug('slider change', slider, imageUrl)\n tryOnImage.src = imageUrl\n this.currentSliderValue = parseInt(slider.value)\n }\n\n this.slider = InitImageSlider('tfr-slider', onChange)\n this.isInit = true\n }\n\n public onNewFramesReady(frames: string[]) {\n if (!this.isInit) {\n this.init()\n }\n\n if (Array.isArray(frames) && frames.length > 0) {\n // Ensure the current slider value is within bounds of the new frames array\n const boundedValue = Math.min(this.currentSliderValue, frames.length - 1)\n const e = this.slider.Load(frames, boundedValue)\n if (e instanceof Error) {\n console.error(e)\n return\n }\n\n // Restore previous slider position if it's within bounds\n const sliderElement = document.getElementById('tfr-slider') as HTMLInputElement\n if (sliderElement && this.currentSliderValue < frames.length) {\n sliderElement.value = this.currentSliderValue.toString()\n const tryOnImage = <HTMLImageElement>document.getElementById('tfr-tryon-image')\n tryOnImage.src = frames[this.currentSliderValue]\n }\n }\n }\n}\n"]}
|
|
@@ -28,15 +28,16 @@ export class TfrSizeRec {
|
|
|
28
28
|
}
|
|
29
29
|
async setGarmentLocations(filledLocations = []) {
|
|
30
30
|
this.sizeRecComponent.setLoading(true);
|
|
31
|
-
|
|
31
|
+
// If we already have filledLocations, use them directly instead of making API calls
|
|
32
|
+
const locations = filledLocations.length > 0 ? filledLocations : await this.getGarmentLocations(filledLocations);
|
|
32
33
|
console.debug('locations', locations);
|
|
33
34
|
console.debug('filledLocations', filledLocations);
|
|
34
35
|
this.sizeRecComponent.setGarmentLocations(locations || []);
|
|
35
36
|
this.sizeRecComponent.setLoading(false);
|
|
36
37
|
}
|
|
37
|
-
async
|
|
38
|
+
async recommendSize() {
|
|
38
39
|
this.sizeRecComponent.setLoading(true);
|
|
39
|
-
const sizes = await this.
|
|
40
|
+
const sizes = await this.getRecommendedSize();
|
|
40
41
|
if (!sizes) {
|
|
41
42
|
console.error('No sizes found for sku');
|
|
42
43
|
this.sizeRecComponent.setLoading(false);
|
|
@@ -64,7 +65,7 @@ export class TfrSizeRec {
|
|
|
64
65
|
}
|
|
65
66
|
}
|
|
66
67
|
}
|
|
67
|
-
async
|
|
68
|
+
async getRecommendedSize() {
|
|
68
69
|
try {
|
|
69
70
|
const colorwaySizeAsset = await this.tfrShop.getColorwaySizeAssetFromSku(this.sku);
|
|
70
71
|
const sizes = await this.getRecommendedSizes(String(colorwaySizeAsset.style_id));
|
|
@@ -90,10 +91,10 @@ export class TfrSizeRec {
|
|
|
90
91
|
if (!sizeRec)
|
|
91
92
|
return null;
|
|
92
93
|
return {
|
|
93
|
-
recommended: sizeRec.recommended_size.size_value.
|
|
94
|
+
recommended: sizeRec.recommended_size.size_value.name,
|
|
94
95
|
sizes: sizeRec.fits.map((fit) => {
|
|
95
96
|
return {
|
|
96
|
-
size: sizeRec.available_sizes.find((size) => size.id === fit.size_id).size_value.
|
|
97
|
+
size: sizeRec.available_sizes.find((size) => size.id === fit.size_id).size_value.name,
|
|
97
98
|
size_id: fit.size_id,
|
|
98
99
|
locations: fit.measurement_location_fits
|
|
99
100
|
.map((locationFit) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tfr-size-rec.js","sourceRoot":"","sources":["../../src/tfr-size-rec.ts"],"names":[],"mappings":"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","sourcesContent":["import { types as ShopTypes, TfrShop } from '@thefittingroom/sdk'\n\nimport { RecommendedSize, SizeRecComponent } from './components/SizeRec'\n\nexport type TfrCssVariables = {\n brandColor?: string\n black?: string\n red?: string\n white?: string\n muted?: string\n dark?: string\n grey?: string\n lightGrey?: string\n mainBorderColor?: string\n mainBorderRadius?: string\n mainBorderWidth?: string\n mainBgColor?: string\n mainWidth?: string\n mainVPadding?: string\n mainHPadding?: string\n mainFont?: string\n titleFont?: string\n subtitleFont?: string\n rowFont?: string\n ctaFont?: string\n sizeSelectorTextColor?: string\n sizeSelectorFontSize?: string\n sizeSelectorFontWeight?: string\n sizeSelectorBorderColor?: string\n sizeSelectorBorderWidth?: string\n sizeSelectorBgColor?: string\n sizeSelectorBgColorHover?: string\n sizeSelectorBgColorActive?: string\n sizeSelectorButtonHeight?: string\n sizeSelectorButtonActiveHeight?: string\n sizeSelectorButtonActiveBorderColor?: string\n sizeSelectorButtonActiveBorderWidth?: string\n sizeSelectorButtonRadius?: string\n sizeSelectorButtonShadow?: string\n}\n\nexport class TfrSizeRec {\n private readonly sizeRecComponent: SizeRecComponent\n private readonly perfectFits = [ShopTypes.Fit.PERFECT_FIT, ShopTypes.Fit.SLIGHTLY_LOOSE, ShopTypes.Fit.SLIGHTLY_TIGHT]\n\n constructor(\n sizeRecMainDivId: string,\n cssVariables: TfrCssVariables,\n private readonly tfrShop: TfrShop,\n private readonly onSignInClick: () => void,\n private readonly onSignOutClick: () => void,\n private readonly onFitInfoClick: () => void,\n private readonly onTryOnClick: (styleId: number, sizeId: number, shouldDisplay: boolean) => Promise<void>,\n ) {\n this.setCssVariables(cssVariables)\n this.sizeRecComponent = new SizeRecComponent(\n sizeRecMainDivId,\n this.onSignInClick,\n this.onSignOutClick,\n this.onFitInfoClick,\n this.onTryOnClick,\n )\n }\n\n public get sku() {\n return this.sizeRecComponent.sku\n }\n\n public setSku(sku: string) {\n this.sizeRecComponent.setSku(sku)\n }\n\n public get styleId() {\n return this.sizeRecComponent.styleId\n }\n\n public setStyleId(styleId: number) {\n this.sizeRecComponent.setStyleId(styleId)\n }\n\n public setIsLoggedIn(isLoggedIn: boolean) {\n this.sizeRecComponent.setIsLoggedIn(isLoggedIn)\n }\n\n public async setGarmentLocations(filledLocations: string[] = []) {\n this.sizeRecComponent.setLoading(true)\n const locations = await this.getGarmentLocations(filledLocations)\n\n console.debug('locations', locations)\n console.debug('filledLocations', filledLocations)\n\n this.sizeRecComponent.setGarmentLocations(locations || [])\n this.sizeRecComponent.setLoading(false)\n }\n\n public async setRecommendedSize() {\n this.sizeRecComponent.setLoading(true)\n const sizes = await this.getRecommenedSize()\n\n if (!sizes) {\n console.error('No sizes found for sku')\n this.sizeRecComponent.setLoading(false)\n this.sizeRecComponent.setError()\n\n return\n }\n\n this.sizeRecComponent.setRecommendedSize(sizes)\n this.sizeRecComponent.setLoading(false)\n }\n\n private async getGarmentLocations(filledLocations: string[]): Promise<string[]> {\n try {\n const locations = await this.tfrShop.getMeasurementLocationsFromSku(this.sku, filledLocations)\n\n return locations\n } catch (error) {\n try {\n const style = await this.tfrShop.getStyleByBrandStyleId(this.sku)\n const locations = await this.tfrShop.getMeasurementLocationsFromBrandStyleId(style.id, filledLocations)\n\n return locations\n } catch (error) {\n console.error(error)\n this.sizeRecComponent.setError()\n return null\n }\n }\n }\n\n private async getRecommenedSize() {\n try {\n const colorwaySizeAsset = await this.tfrShop.getColorwaySizeAssetFromSku(this.sku)\n const sizes = await this.getRecommendedSizes(String(colorwaySizeAsset.style_id))\n this.setStyleId(colorwaySizeAsset.style_id)\n\n return sizes\n } catch (error) {\n try {\n const style = await this.tfrShop.getStyleByBrandStyleId(this.sku)\n const sizes = await this.getRecommendedSizes(String(style.id))\n this.setStyleId(style.id)\n\n return sizes\n } catch (error) {\n console.error(error)\n this.sizeRecComponent.setError()\n return null\n }\n }\n }\n\n private async getRecommendedSizes(styleId: string): Promise<RecommendedSize> {\n const sizeRec = await this.tfrShop.getRecommendedSizes(styleId)\n\n if (!sizeRec) return null\n\n return {\n recommended: sizeRec.recommended_size.size_value.size,\n sizes: sizeRec.fits.map((fit) => {\n return {\n size: sizeRec.available_sizes.find((size) => size.id === fit.size_id).size_value.size,\n size_id: fit.size_id,\n locations: fit.measurement_location_fits\n .map((locationFit) => {\n const fitLabel =\n typeof locationFit.fit_label === 'string' && locationFit.fit_label\n ? locationFit.fit_label\n : ShopTypes.FitNames[locationFit.fit]\n\n return {\n fit: fitLabel,\n isPerfect: this.perfectFits.includes(locationFit.fit),\n location: this.tfrShop.getMeasurementLocationName(locationFit.measurement_location),\n sortOrder: this.tfrShop.getMeasurementLocationSortOrder(locationFit.measurement_location),\n }\n })\n .sort((a, b) => (a.sortOrder < b.sortOrder ? -1 : 1)),\n }\n }),\n }\n }\n\n private setCssVariables(cssVariables: TfrCssVariables) {\n const r = document.querySelector<HTMLElement>(':root')\n\n if (cssVariables.brandColor) r.style.setProperty('--tfr-brand-color', cssVariables.brandColor)\n if (cssVariables.black) r.style.setProperty('--tfr-black', cssVariables.black)\n if (cssVariables.red) r.style.setProperty('--tfr-red', cssVariables.red)\n if (cssVariables.white) r.style.setProperty('--tfr-white', cssVariables.white)\n if (cssVariables.muted) r.style.setProperty('--tfr-muted', cssVariables.muted)\n if (cssVariables.dark) r.style.setProperty('--tfr-dark', cssVariables.dark)\n if (cssVariables.grey) r.style.setProperty('--tfr-grey', cssVariables.grey)\n if (cssVariables.lightGrey) r.style.setProperty('--tfr-light-grey', cssVariables.lightGrey)\n if (cssVariables.mainBorderColor) r.style.setProperty('--tfr-main-border-color', cssVariables.mainBorderColor)\n if (cssVariables.mainBorderRadius) r.style.setProperty('--tfr-main-border-radius', cssVariables.mainBorderRadius)\n if (cssVariables.mainBorderWidth) r.style.setProperty('--tfr-main-border-width', cssVariables.mainBorderWidth)\n if (cssVariables.mainBgColor) r.style.setProperty('--tfr-main-bg-color', cssVariables.mainBgColor)\n if (cssVariables.mainWidth) r.style.setProperty('--tfr-main-width', cssVariables.mainWidth)\n if (cssVariables.mainVPadding) r.style.setProperty('--tfr-main-v-padding', cssVariables.mainVPadding)\n if (cssVariables.mainHPadding) r.style.setProperty('--tfr-main-h-padding', cssVariables.mainHPadding)\n if (cssVariables.mainFont) r.style.setProperty('--tfr-main-font', cssVariables.mainFont)\n if (cssVariables.titleFont) r.style.setProperty('--tfr-title-font', cssVariables.titleFont)\n if (cssVariables.subtitleFont) r.style.setProperty('--tfr-subtitle-font', cssVariables.subtitleFont)\n if (cssVariables.rowFont) r.style.setProperty('--tfr-row-font', cssVariables.rowFont)\n if (cssVariables.ctaFont) r.style.setProperty('--tfr-cta-font', cssVariables.ctaFont)\n\n // Size Selector\n if (cssVariables.sizeSelectorTextColor)\n r.style.setProperty('--tfr-size-selector-text-color', cssVariables.sizeSelectorTextColor)\n if (cssVariables.sizeSelectorFontSize)\n r.style.setProperty('--tfr-size-selector-font-size', cssVariables.sizeSelectorFontSize)\n if (cssVariables.sizeSelectorFontWeight)\n r.style.setProperty('--tfr-size-selector-font-weight', cssVariables.sizeSelectorFontWeight)\n if (cssVariables.sizeSelectorBgColor)\n r.style.setProperty('--tfr-size-selector-bg-color', cssVariables.sizeSelectorBgColor)\n if (cssVariables.sizeSelectorBorderColor)\n r.style.setProperty('--tfr-size-selector-border-color', cssVariables.sizeSelectorBorderColor)\n if (cssVariables.sizeSelectorBorderWidth)\n r.style.setProperty('--tfr-size-selector-border-width', cssVariables.sizeSelectorBorderWidth)\n if (cssVariables.sizeSelectorBgColorHover)\n r.style.setProperty('--tfr-size-selector-bg-color-hover', cssVariables.sizeSelectorBgColorHover)\n if (cssVariables.sizeSelectorBgColorActive)\n r.style.setProperty('--tfr-size-selector-bg-color-active', cssVariables.sizeSelectorBgColorActive)\n if (cssVariables.sizeSelectorButtonHeight)\n r.style.setProperty('--tfr-size-selector-button-height', cssVariables.sizeSelectorButtonHeight)\n if (cssVariables.sizeSelectorButtonActiveHeight)\n r.style.setProperty('--tfr-size-selector-button-active-height', cssVariables.sizeSelectorButtonActiveHeight)\n if (cssVariables.sizeSelectorButtonActiveBorderColor)\n r.style.setProperty(\n '--tfr-size-selector-button-active-border-color',\n cssVariables.sizeSelectorButtonActiveBorderColor,\n )\n if (cssVariables.sizeSelectorButtonActiveBorderWidth)\n r.style.setProperty(\n '--tfr-size-selector-button-active-border-width',\n cssVariables.sizeSelectorButtonActiveBorderWidth,\n )\n if (cssVariables.sizeSelectorButtonRadius)\n r.style.setProperty('--tfr-size-selector-button-radius', cssVariables.sizeSelectorButtonRadius)\n if (cssVariables.sizeSelectorButtonShadow)\n r.style.setProperty('--tfr-size-selector-button-shadow', cssVariables.sizeSelectorButtonShadow)\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"tfr-size-rec.js","sourceRoot":"","sources":["../../src/tfr-size-rec.ts"],"names":[],"mappings":"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","sourcesContent":["import { types as ShopTypes, TfrShop } from '@thefittingroom/sdk'\n\nimport { RecommendedSize, SizeRecComponent } from './components/SizeRec'\n\nexport type TfrCssVariables = {\n brandColor?: string\n black?: string\n red?: string\n white?: string\n muted?: string\n dark?: string\n grey?: string\n lightGrey?: string\n mainBorderColor?: string\n mainBorderRadius?: string\n mainBorderWidth?: string\n mainBgColor?: string\n mainWidth?: string\n mainVPadding?: string\n mainHPadding?: string\n mainFont?: string\n titleFont?: string\n subtitleFont?: string\n rowFont?: string\n ctaFont?: string\n sizeSelectorTextColor?: string\n sizeSelectorFontSize?: string\n sizeSelectorFontWeight?: string\n sizeSelectorBorderColor?: string\n sizeSelectorBorderWidth?: string\n sizeSelectorBgColor?: string\n sizeSelectorBgColorHover?: string\n sizeSelectorBgColorActive?: string\n sizeSelectorButtonHeight?: string\n sizeSelectorButtonActiveHeight?: string\n sizeSelectorButtonActiveBorderColor?: string\n sizeSelectorButtonActiveBorderWidth?: string\n sizeSelectorButtonRadius?: string\n sizeSelectorButtonShadow?: string\n}\n\nexport class TfrSizeRec {\n private readonly sizeRecComponent: SizeRecComponent\n private readonly perfectFits = [ShopTypes.Fit.PERFECT_FIT, ShopTypes.Fit.SLIGHTLY_LOOSE, ShopTypes.Fit.SLIGHTLY_TIGHT]\n\n constructor(\n sizeRecMainDivId: string,\n cssVariables: TfrCssVariables,\n private readonly tfrShop: TfrShop,\n private readonly onSignInClick: () => void,\n private readonly onSignOutClick: () => void,\n private readonly onFitInfoClick: () => void,\n private readonly onTryOnClick: (styleId: number, sizeId: number, shouldDisplay: boolean) => Promise<void>,\n ) {\n this.setCssVariables(cssVariables)\n this.sizeRecComponent = new SizeRecComponent(\n sizeRecMainDivId,\n this.onSignInClick,\n this.onSignOutClick,\n this.onFitInfoClick,\n this.onTryOnClick,\n )\n }\n\n public get sku() {\n return this.sizeRecComponent.sku\n }\n\n public setSku(sku: string) {\n this.sizeRecComponent.setSku(sku)\n }\n\n public get styleId() {\n return this.sizeRecComponent.styleId\n }\n\n public setStyleId(styleId: number) {\n this.sizeRecComponent.setStyleId(styleId)\n }\n\n public setIsLoggedIn(isLoggedIn: boolean) {\n this.sizeRecComponent.setIsLoggedIn(isLoggedIn)\n }\n\n public async setGarmentLocations(filledLocations: string[] = []) {\n this.sizeRecComponent.setLoading(true)\n // If we already have filledLocations, use them directly instead of making API calls\n const locations = filledLocations.length > 0 ? filledLocations : await this.getGarmentLocations(filledLocations)\n\n console.debug('locations', locations)\n console.debug('filledLocations', filledLocations)\n\n this.sizeRecComponent.setGarmentLocations(locations || [])\n this.sizeRecComponent.setLoading(false)\n }\n\n public async recommendSize() {\n this.sizeRecComponent.setLoading(true)\n const sizes = await this.getRecommendedSize()\n\n if (!sizes) {\n console.error('No sizes found for sku')\n this.sizeRecComponent.setLoading(false)\n this.sizeRecComponent.setError()\n\n return\n }\n\n this.sizeRecComponent.setRecommendedSize(sizes)\n this.sizeRecComponent.setLoading(false)\n }\n\n private async getGarmentLocations(filledLocations: string[]): Promise<string[]> {\n try {\n const locations = await this.tfrShop.getMeasurementLocationsFromSku(this.sku, filledLocations)\n\n return locations\n } catch (error) {\n try {\n const style = await this.tfrShop.getStyleByBrandStyleId(this.sku)\n const locations = await this.tfrShop.getMeasurementLocationsFromBrandStyleId(style.id, filledLocations)\n\n return locations\n } catch (error) {\n console.error(error)\n this.sizeRecComponent.setError()\n return null\n }\n }\n }\n\n private async getRecommendedSize() {\n try {\n const colorwaySizeAsset = await this.tfrShop.getColorwaySizeAssetFromSku(this.sku)\n const sizes = await this.getRecommendedSizes(String(colorwaySizeAsset.style_id))\n this.setStyleId(colorwaySizeAsset.style_id)\n\n return sizes\n } catch (error) {\n try {\n const style = await this.tfrShop.getStyleByBrandStyleId(this.sku)\n const sizes = await this.getRecommendedSizes(String(style.id))\n this.setStyleId(style.id)\n\n return sizes\n } catch (error) {\n console.error(error)\n this.sizeRecComponent.setError()\n return null\n }\n }\n }\n\n private async getRecommendedSizes(styleId: string): Promise<RecommendedSize> {\n const sizeRec = await this.tfrShop.getRecommendedSizes(styleId)\n\n if (!sizeRec) return null\n\n return {\n recommended: sizeRec.recommended_size.size_value.name,\n sizes: sizeRec.fits.map((fit) => {\n return {\n size: sizeRec.available_sizes.find((size) => size.id === fit.size_id).size_value.name,\n size_id: fit.size_id,\n locations: fit.measurement_location_fits\n .map((locationFit) => {\n const fitLabel =\n typeof locationFit.fit_label === 'string' && locationFit.fit_label\n ? locationFit.fit_label\n : ShopTypes.FitNames[locationFit.fit]\n\n return {\n fit: fitLabel,\n isPerfect: this.perfectFits.includes(locationFit.fit),\n location: this.tfrShop.getMeasurementLocationName(locationFit.measurement_location),\n sortOrder: this.tfrShop.getMeasurementLocationSortOrder(locationFit.measurement_location),\n }\n })\n .sort((a, b) => (a.sortOrder < b.sortOrder ? -1 : 1)),\n }\n }),\n }\n }\n\n private setCssVariables(cssVariables: TfrCssVariables) {\n const r = document.querySelector<HTMLElement>(':root')\n\n if (cssVariables.brandColor) r.style.setProperty('--tfr-brand-color', cssVariables.brandColor)\n if (cssVariables.black) r.style.setProperty('--tfr-black', cssVariables.black)\n if (cssVariables.red) r.style.setProperty('--tfr-red', cssVariables.red)\n if (cssVariables.white) r.style.setProperty('--tfr-white', cssVariables.white)\n if (cssVariables.muted) r.style.setProperty('--tfr-muted', cssVariables.muted)\n if (cssVariables.dark) r.style.setProperty('--tfr-dark', cssVariables.dark)\n if (cssVariables.grey) r.style.setProperty('--tfr-grey', cssVariables.grey)\n if (cssVariables.lightGrey) r.style.setProperty('--tfr-light-grey', cssVariables.lightGrey)\n if (cssVariables.mainBorderColor) r.style.setProperty('--tfr-main-border-color', cssVariables.mainBorderColor)\n if (cssVariables.mainBorderRadius) r.style.setProperty('--tfr-main-border-radius', cssVariables.mainBorderRadius)\n if (cssVariables.mainBorderWidth) r.style.setProperty('--tfr-main-border-width', cssVariables.mainBorderWidth)\n if (cssVariables.mainBgColor) r.style.setProperty('--tfr-main-bg-color', cssVariables.mainBgColor)\n if (cssVariables.mainWidth) r.style.setProperty('--tfr-main-width', cssVariables.mainWidth)\n if (cssVariables.mainVPadding) r.style.setProperty('--tfr-main-v-padding', cssVariables.mainVPadding)\n if (cssVariables.mainHPadding) r.style.setProperty('--tfr-main-h-padding', cssVariables.mainHPadding)\n if (cssVariables.mainFont) r.style.setProperty('--tfr-main-font', cssVariables.mainFont)\n if (cssVariables.titleFont) r.style.setProperty('--tfr-title-font', cssVariables.titleFont)\n if (cssVariables.subtitleFont) r.style.setProperty('--tfr-subtitle-font', cssVariables.subtitleFont)\n if (cssVariables.rowFont) r.style.setProperty('--tfr-row-font', cssVariables.rowFont)\n if (cssVariables.ctaFont) r.style.setProperty('--tfr-cta-font', cssVariables.ctaFont)\n\n // Size Selector\n if (cssVariables.sizeSelectorTextColor)\n r.style.setProperty('--tfr-size-selector-text-color', cssVariables.sizeSelectorTextColor)\n if (cssVariables.sizeSelectorFontSize)\n r.style.setProperty('--tfr-size-selector-font-size', cssVariables.sizeSelectorFontSize)\n if (cssVariables.sizeSelectorFontWeight)\n r.style.setProperty('--tfr-size-selector-font-weight', cssVariables.sizeSelectorFontWeight)\n if (cssVariables.sizeSelectorBgColor)\n r.style.setProperty('--tfr-size-selector-bg-color', cssVariables.sizeSelectorBgColor)\n if (cssVariables.sizeSelectorBorderColor)\n r.style.setProperty('--tfr-size-selector-border-color', cssVariables.sizeSelectorBorderColor)\n if (cssVariables.sizeSelectorBorderWidth)\n r.style.setProperty('--tfr-size-selector-border-width', cssVariables.sizeSelectorBorderWidth)\n if (cssVariables.sizeSelectorBgColorHover)\n r.style.setProperty('--tfr-size-selector-bg-color-hover', cssVariables.sizeSelectorBgColorHover)\n if (cssVariables.sizeSelectorBgColorActive)\n r.style.setProperty('--tfr-size-selector-bg-color-active', cssVariables.sizeSelectorBgColorActive)\n if (cssVariables.sizeSelectorButtonHeight)\n r.style.setProperty('--tfr-size-selector-button-height', cssVariables.sizeSelectorButtonHeight)\n if (cssVariables.sizeSelectorButtonActiveHeight)\n r.style.setProperty('--tfr-size-selector-button-active-height', cssVariables.sizeSelectorButtonActiveHeight)\n if (cssVariables.sizeSelectorButtonActiveBorderColor)\n r.style.setProperty(\n '--tfr-size-selector-button-active-border-color',\n cssVariables.sizeSelectorButtonActiveBorderColor,\n )\n if (cssVariables.sizeSelectorButtonActiveBorderWidth)\n r.style.setProperty(\n '--tfr-size-selector-button-active-border-width',\n cssVariables.sizeSelectorButtonActiveBorderWidth,\n )\n if (cssVariables.sizeSelectorButtonRadius)\n r.style.setProperty('--tfr-size-selector-button-radius', cssVariables.sizeSelectorButtonRadius)\n if (cssVariables.sizeSelectorButtonShadow)\n r.style.setProperty('--tfr-size-selector-button-shadow', cssVariables.sizeSelectorButtonShadow)\n }\n}\n"]}
|
|
@@ -30,16 +30,29 @@ export class FittingRoom {
|
|
|
30
30
|
get sku() {
|
|
31
31
|
return this.tfrSizeRec.sku;
|
|
32
32
|
}
|
|
33
|
-
async
|
|
34
|
-
|
|
35
|
-
return Boolean(style === null || style === void 0 ? void 0 : style.is_published);
|
|
36
|
-
}
|
|
37
|
-
setSku(sku) {
|
|
33
|
+
async setSku(sku) {
|
|
34
|
+
var _a, _b;
|
|
38
35
|
this.tfrSizeRec.setSku(sku);
|
|
36
|
+
const style = await this.getStyle(this.sku);
|
|
37
|
+
this.style = style;
|
|
38
|
+
if (!style.is_published) {
|
|
39
|
+
document.getElementById('tfr-size-recommendations').style.display = 'none';
|
|
40
|
+
console.log(`style ${style.id} is not published`);
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
console.log(`style ${style.id} is published`);
|
|
44
|
+
}
|
|
45
|
+
console.log(`style ${style.id} virtual try on is disabled`);
|
|
46
|
+
if (style.is_vto) {
|
|
47
|
+
(_a = document.getElementById('tfr-try-on-button')) === null || _a === void 0 ? void 0 : _a.classList.remove("hide");
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
(_b = document.getElementById('tfr-try-on-button')) === null || _b === void 0 ? void 0 : _b.classList.add("hide");
|
|
51
|
+
}
|
|
39
52
|
if (this.isLoggedIn)
|
|
40
|
-
this.tfrSizeRec.
|
|
53
|
+
this.tfrSizeRec.recommendSize();
|
|
41
54
|
else
|
|
42
|
-
this.setGarmentLocations();
|
|
55
|
+
this.setGarmentLocations(style);
|
|
43
56
|
}
|
|
44
57
|
async onInit() {
|
|
45
58
|
var _a, _b;
|
|
@@ -67,7 +80,7 @@ export class FittingRoom {
|
|
|
67
80
|
this.hooks.onLogout();
|
|
68
81
|
this.isLoggedIn = false;
|
|
69
82
|
this.tfrSizeRec.setIsLoggedIn(false);
|
|
70
|
-
this.setGarmentLocations();
|
|
83
|
+
this.setGarmentLocations(this.style);
|
|
71
84
|
this.unsubscribeFromProfileChanges();
|
|
72
85
|
}
|
|
73
86
|
async signIn(username, password, validationError) {
|
|
@@ -85,7 +98,7 @@ export class FittingRoom {
|
|
|
85
98
|
this.tfrModal.close();
|
|
86
99
|
this.isLoggedIn = true;
|
|
87
100
|
this.tfrSizeRec.setIsLoggedIn(true);
|
|
88
|
-
this.tfrSizeRec.
|
|
101
|
+
this.tfrSizeRec.recommendSize();
|
|
89
102
|
this.subscribeToProfileChanges();
|
|
90
103
|
}
|
|
91
104
|
catch (e) {
|
|
@@ -170,9 +183,8 @@ export class FittingRoom {
|
|
|
170
183
|
this.unsub();
|
|
171
184
|
this.unsub = null;
|
|
172
185
|
}
|
|
173
|
-
async setGarmentLocations() {
|
|
186
|
+
async setGarmentLocations(style) {
|
|
174
187
|
var _a, _b;
|
|
175
|
-
const style = await this.getStyle(this.sku);
|
|
176
188
|
const filledLocations = ((_b = (_a = style === null || style === void 0 ? void 0 : style.sizes) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.garment_measurements.map((measurement) => measurement.measurement_location)) || [];
|
|
177
189
|
this.tfrSizeRec.setGarmentLocations(filledLocations);
|
|
178
190
|
}
|
|
@@ -182,12 +194,12 @@ export class FittingRoom {
|
|
|
182
194
|
const style = await this.tfrShop.getStyle(colorwaySizeAsset.style_id);
|
|
183
195
|
return style;
|
|
184
196
|
}
|
|
185
|
-
catch (
|
|
197
|
+
catch (e) {
|
|
186
198
|
try {
|
|
187
199
|
const style = await this.tfrShop.getStyleByBrandStyleId(brandStyleIdOrSku);
|
|
188
200
|
return style;
|
|
189
201
|
}
|
|
190
|
-
catch (
|
|
202
|
+
catch (e2) {
|
|
191
203
|
return null;
|
|
192
204
|
}
|
|
193
205
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tfr.js","sourceRoot":"","sources":["../../src/tfr.ts"],"names":[],"mappings":"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","sourcesContent":["import { types as ShopTypes, TfrShop, initShop } from '@thefittingroom/sdk'\n\nimport { VtoComponent } from './components/Vto'\nimport { L } from './components/locale'\nimport { validateEmail, validatePassword } from './helpers/validations'\nimport { TfrModal } from './tfr-modal'\nimport { TfrCssVariables, TfrSizeRec } from './tfr-size-rec'\nimport * as types from './types'\n\nexport interface TfrHooks {\n onLoading?: () => void\n onLoadingComplete?: () => void\n onError?: (error: string) => void\n onVtoReady?: (frames: types.TryOnFrames) => void\n onLogin?: () => void\n onLogout?: () => void\n}\n\nexport class FittingRoom {\n private isLoggedIn: boolean = false\n\n public readonly tfrModal: TfrModal\n public readonly tfrSizeRec: TfrSizeRec\n private readonly vtoComponent: VtoComponent\n private readonly tfrShop: TfrShop\n private unsub: () => void = null\n\n constructor(\n private readonly shopId: string | number,\n modalDivId: string,\n sizeRecMainDivId: string,\n vtoMainDivId: string,\n private readonly hooks: TfrHooks = {},\n cssVariables: TfrCssVariables,\n _env?: string,\n ) {\n // prettier-ignore\n const env = _env\n ? _env\n : typeof process !== 'undefined'\n ? process.env.NODE_ENV\n : 'dev'\n\n console.log('tfr-env', env)\n\n this.tfrModal = new TfrModal(\n modalDivId,\n this.signIn.bind(this),\n this.forgotPassword.bind(this),\n this.submitTel.bind(this),\n )\n this.tfrShop = initShop(Number(this.shopId), env)\n this.tfrSizeRec = new TfrSizeRec(\n sizeRecMainDivId,\n cssVariables,\n this.tfrShop,\n this.onSignInClick.bind(this),\n this.signOut.bind(this),\n this.onFitInfoClick.bind(this),\n this.onTryOnClick.bind(this),\n )\n\n if (vtoMainDivId) this.vtoComponent = new VtoComponent(vtoMainDivId)\n }\n\n get shop() {\n return this.tfrShop\n }\n\n get sku() {\n return this.tfrSizeRec.sku\n }\n\n public async checkIfPublished(brandStyleIdOrSku: string) {\n const style = await this.getStyle(brandStyleIdOrSku)\n\n return Boolean(style?.is_published)\n }\n\n public setSku(sku: string) {\n this.tfrSizeRec.setSku(sku)\n\n if (this.isLoggedIn) this.tfrSizeRec.setRecommendedSize()\n else this.setGarmentLocations()\n }\n\n public async onInit() {\n this.isLoggedIn = await this.tfrShop.onInit()\n this.tfrSizeRec.setIsLoggedIn(this.isLoggedIn)\n\n if (this.isLoggedIn) {\n if (this.hooks?.onLogin) this.hooks.onLogin()\n\n this.subscribeToProfileChanges()\n } else {\n if (this.hooks?.onLogout) this.hooks.onLogout()\n\n this.unsubscribeFromProfileChanges()\n }\n\n return this.isLoggedIn\n }\n\n public close() {\n this.tfrModal.close()\n }\n\n public async signOut() {\n await this.tfrShop.user.logout()\n\n if (this.hooks?.onLogout) this.hooks.onLogout()\n\n this.isLoggedIn = false\n this.tfrSizeRec.setIsLoggedIn(false)\n this.setGarmentLocations()\n this.unsubscribeFromProfileChanges()\n }\n\n public async signIn(username: string, password: string, validationError: (message: string) => void) {\n if (username.length == 0 || password.length == 0) return validationError(L.UsernameOrPasswordEmpty)\n if (!validateEmail(username)) return validationError(L.EmailError)\n if (!validatePassword(password)) return validationError(L.PasswordError)\n\n try {\n await this.tfrShop.user.login(username, password)\n\n if (this.hooks?.onLogin) this.hooks.onLogin()\n this.tfrModal.close()\n\n this.isLoggedIn = true\n this.tfrSizeRec.setIsLoggedIn(true)\n this.tfrSizeRec.setRecommendedSize()\n this.subscribeToProfileChanges()\n } catch (e) {\n return validationError(L.UsernameOrPasswordIncorrect)\n }\n }\n\n public setBrandUserId(brandUserId: string | number) {\n this.tfrShop.user.setBrandUserId(brandUserId)\n }\n\n public async submitTel(tel: string) {\n try {\n await this.tfrShop.submitTelephoneNumber(tel)\n this.tfrModal.toSignIn()\n } catch {\n this.tfrModal.onError(L.SomethingWentWrong)\n }\n }\n\n public async forgotPassword(email: string) {\n await this.tfrShop.user.sendPasswordResetEmail(email)\n\n this.tfrModal.toSignIn()\n }\n\n public async passwordReset(code: string, newPassword: string) {\n await this.tfrShop.user.confirmPasswordReset(code, newPassword)\n\n this.tfrModal.toPasswordReset()\n }\n\n public async getMeasurementLocationsFromSku(sku: string) {\n return this.tfrShop.getMeasurementLocationsFromSku(sku)\n }\n\n public onSignInClick() {\n this.tfrModal.toScan()\n }\n\n public onFitInfoClick() {\n this.tfrModal.toFitInfo()\n }\n\n public async onTryOnClick(styleId: number, sizeId: number, shouldDisplay: boolean = true) {\n if (!this.vtoComponent)\n return console.error('VtoComponent is not initialized. Please check if the vtoMainDivId is correct.')\n\n const frames = await this.shop.tryOn(styleId, sizeId)\n\n if (shouldDisplay) {\n try {\n this.vtoComponent.init()\n this.vtoComponent.onNewFramesReady(frames)\n } catch (e) {\n console.error('Error initializing VTO:', e)\n this.tfrModal.onError(L.SomethingWentWrong)\n }\n }\n }\n\n private onUserProfileChange(userProfile: ShopTypes.FirestoreUser) {\n switch (userProfile.avatar_status as types.AvatarState) {\n case types.AvatarState.NOT_CREATED:\n if (this.hooks?.onError) this.hooks.onError(L.DontHaveAvatar)\n this.tfrModal.onNotCreated()\n break\n\n case types.AvatarState.PENDING:\n if (this.hooks?.onLoading) this.hooks.onLoading()\n break\n\n case types.AvatarState.CREATED:\n if (this.hooks?.onLoadingComplete) this.hooks.onLoadingComplete()\n break\n\n default:\n if (this.hooks?.onError) this.hooks.onError(L.SomethingWentWrong)\n this.tfrModal.onError(L.SomethingWentWrong)\n break\n }\n }\n\n private subscribeToProfileChanges() {\n if (this.unsub) return\n\n this.unsub = this.tfrShop.user.watchUserProfileForChanges((userProfile) => this.onUserProfileChange(userProfile))\n }\n\n private unsubscribeFromProfileChanges() {\n if (!this.unsub) return\n\n this.unsub()\n this.unsub = null\n }\n\n private async setGarmentLocations() {\n const style = await this.getStyle(this.sku)\n\n const filledLocations =\n style?.sizes?.[0]?.garment_measurements.map((measurement) => measurement.measurement_location) || ([] as string[])\n\n this.tfrSizeRec.setGarmentLocations(filledLocations)\n }\n\n private async getStyle(brandStyleIdOrSku: string) {\n try {\n const colorwaySizeAsset = await this.tfrShop.getColorwaySizeAssetFromSku(brandStyleIdOrSku)\n const style = await this.tfrShop.getStyle(colorwaySizeAsset.style_id)\n\n return style\n } catch {\n try {\n const style = await this.tfrShop.getStyleByBrandStyleId(brandStyleIdOrSku)\n\n return style\n } catch {\n return null\n }\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"tfr.js","sourceRoot":"","sources":["../../src/tfr.ts"],"names":[],"mappings":"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","sourcesContent":["import { types as ShopTypes, TfrShop, initShop } from '@thefittingroom/sdk'\n\nimport { VtoComponent } from './components/Vto'\nimport { L } from './components/locale'\nimport { validateEmail, validatePassword } from './helpers/validations'\nimport { TfrModal } from './tfr-modal'\nimport { TfrCssVariables, TfrSizeRec } from './tfr-size-rec'\nimport * as types from './types'\nimport { FirestoreStyleCategory } from '@thefittingroom/sdk/dist/esm/types'\n\nexport interface TfrHooks {\n onLoading?: () => void\n onLoadingComplete?: () => void\n onError?: (error: string) => void\n onVtoReady?: (frames: types.TryOnFrames) => void\n onLogin?: () => void\n onLogout?: () => void\n}\n\nexport class FittingRoom {\n private isLoggedIn: boolean = false\n\n public style: FirestoreStyleCategory\n\n public readonly tfrModal: TfrModal\n public readonly tfrSizeRec: TfrSizeRec\n private readonly vtoComponent: VtoComponent\n private readonly tfrShop: TfrShop\n private unsub: () => void = null\n\n constructor(\n private readonly shopId: string | number,\n modalDivId: string,\n sizeRecMainDivId: string,\n vtoMainDivId: string,\n private readonly hooks: TfrHooks = {},\n cssVariables: TfrCssVariables,\n _env?: string,\n ) {\n // prettier-ignore\n const env = _env\n ? _env\n : typeof process !== 'undefined'\n ? process.env.NODE_ENV\n : 'dev'\n\n console.log('tfr-env', env)\n\n this.tfrModal = new TfrModal(\n modalDivId,\n this.signIn.bind(this),\n this.forgotPassword.bind(this),\n this.submitTel.bind(this),\n )\n this.tfrShop = initShop(Number(this.shopId), env)\n this.tfrSizeRec = new TfrSizeRec(\n sizeRecMainDivId,\n cssVariables,\n this.tfrShop,\n this.onSignInClick.bind(this),\n this.signOut.bind(this),\n this.onFitInfoClick.bind(this),\n this.onTryOnClick.bind(this),\n )\n\n if (vtoMainDivId) this.vtoComponent = new VtoComponent(vtoMainDivId)\n }\n\n get shop() {\n return this.tfrShop\n }\n\n get sku() {\n return this.tfrSizeRec.sku\n }\n\n public async setSku(sku: string) {\n this.tfrSizeRec.setSku(sku)\n\n const style = await this.getStyle(this.sku)\n\n this.style = style\n\n if (!style.is_published) {\n document.getElementById('tfr-size-recommendations').style.display = 'none';\n console.log(`style ${style.id} is not published`)\n } else {\n console.log(`style ${style.id} is published`)\n }\n\n console.log(`style ${style.id} virtual try on is disabled`)\n\n if (style.is_vto) {\n document.getElementById('tfr-try-on-button')?.classList.remove(\"hide\")\n } else {\n document.getElementById('tfr-try-on-button')?.classList.add(\"hide\")\n }\n\n if (this.isLoggedIn) this.tfrSizeRec.recommendSize()\n else this.setGarmentLocations(style)\n }\n\n public async onInit() {\n this.isLoggedIn = await this.tfrShop.onInit()\n this.tfrSizeRec.setIsLoggedIn(this.isLoggedIn)\n\n if (this.isLoggedIn) {\n if (this.hooks?.onLogin) this.hooks.onLogin()\n\n this.subscribeToProfileChanges()\n } else {\n if (this.hooks?.onLogout) this.hooks.onLogout()\n\n this.unsubscribeFromProfileChanges()\n }\n\n return this.isLoggedIn\n }\n\n public close() {\n this.tfrModal.close()\n }\n\n public async signOut() {\n await this.tfrShop.user.logout()\n\n if (this.hooks?.onLogout) this.hooks.onLogout()\n\n this.isLoggedIn = false\n this.tfrSizeRec.setIsLoggedIn(false)\n this.setGarmentLocations(this.style)\n this.unsubscribeFromProfileChanges()\n }\n\n public async signIn(username: string, password: string, validationError: (message: string) => void) {\n if (username.length == 0 || password.length == 0) return validationError(L.UsernameOrPasswordEmpty)\n if (!validateEmail(username)) return validationError(L.EmailError)\n if (!validatePassword(password)) return validationError(L.PasswordError)\n\n try {\n await this.tfrShop.user.login(username, password)\n\n if (this.hooks?.onLogin) this.hooks.onLogin()\n this.tfrModal.close()\n\n this.isLoggedIn = true\n this.tfrSizeRec.setIsLoggedIn(true)\n\n this.tfrSizeRec.recommendSize()\n this.subscribeToProfileChanges()\n } catch (e) {\n return validationError(L.UsernameOrPasswordIncorrect)\n }\n }\n\n public setBrandUserId(brandUserId: string | number) {\n this.tfrShop.user.setBrandUserId(brandUserId)\n }\n\n public async submitTel(tel: string) {\n try {\n await this.tfrShop.submitTelephoneNumber(tel)\n this.tfrModal.toSignIn()\n } catch {\n this.tfrModal.onError(L.SomethingWentWrong)\n }\n }\n\n public async forgotPassword(email: string) {\n await this.tfrShop.user.sendPasswordResetEmail(email)\n\n this.tfrModal.toSignIn()\n }\n\n public async passwordReset(code: string, newPassword: string) {\n await this.tfrShop.user.confirmPasswordReset(code, newPassword)\n\n this.tfrModal.toPasswordReset()\n }\n\n public async getMeasurementLocationsFromSku(sku: string) {\n return this.tfrShop.getMeasurementLocationsFromSku(sku)\n }\n\n public onSignInClick() {\n this.tfrModal.toScan()\n }\n\n public onFitInfoClick() {\n this.tfrModal.toFitInfo()\n }\n\n public async onTryOnClick(styleId: number, sizeId: number, shouldDisplay: boolean = true) {\n if (!this.vtoComponent)\n return console.error('VtoComponent is not initialized. Please check if the vtoMainDivId is correct.')\n\n const frames = await this.shop.tryOn(styleId, sizeId)\n\n if (shouldDisplay) {\n try {\n this.vtoComponent.init()\n this.vtoComponent.onNewFramesReady(frames)\n } catch (e) {\n console.error('Error initializing VTO:', e)\n this.tfrModal.onError(L.SomethingWentWrong)\n }\n }\n }\n\n private onUserProfileChange(userProfile: ShopTypes.FirestoreUser) {\n switch (userProfile.avatar_status as types.AvatarState) {\n case types.AvatarState.NOT_CREATED:\n if (this.hooks?.onError) this.hooks.onError(L.DontHaveAvatar)\n this.tfrModal.onNotCreated()\n break\n\n case types.AvatarState.PENDING:\n if (this.hooks?.onLoading) this.hooks.onLoading()\n break\n\n case types.AvatarState.CREATED:\n if (this.hooks?.onLoadingComplete) this.hooks.onLoadingComplete()\n break\n\n default:\n if (this.hooks?.onError) this.hooks.onError(L.SomethingWentWrong)\n this.tfrModal.onError(L.SomethingWentWrong)\n break\n }\n }\n\n private subscribeToProfileChanges() {\n if (this.unsub) return\n\n this.unsub = this.tfrShop.user.watchUserProfileForChanges((userProfile) => this.onUserProfileChange(userProfile))\n }\n\n private unsubscribeFromProfileChanges() {\n if (!this.unsub) return\n\n this.unsub()\n this.unsub = null\n }\n\n private async setGarmentLocations(style: FirestoreStyleCategory) {\n\n const filledLocations =\n style?.sizes?.[0]?.garment_measurements.map((measurement) => measurement.measurement_location) || ([] as string[])\n\n this.tfrSizeRec.setGarmentLocations(filledLocations)\n }\n\n private async getStyle(brandStyleIdOrSku: string) {\n try {\n const colorwaySizeAsset = await this.tfrShop.getColorwaySizeAssetFromSku(brandStyleIdOrSku)\n const style = await this.tfrShop.getStyle(colorwaySizeAsset.style_id)\n\n return style\n } catch (e) {\n try {\n const style = await this.tfrShop.getStyleByBrandStyleId(brandStyleIdOrSku)\n\n return style\n } catch (e2) {\n return null\n }\n }\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,GAAG,eAAe,CAAA;AAC/D,MAAM,CAAC,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,GAAG,iBAAiB,CAAA;AACnE,MAAM,CAAC,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,GAAG,qBAAqB,CAAA;AAC1E,MAAM,CAAC,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,GAAG,mBAAmB,CAAA;AAEtE,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAA;AAC1D,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAA;AAC3E,MAAM,CAAC,MAAM,yBAAyB,GAAG,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAA;AACnF,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAA;AA8GzD,MAAM,CAAN,IAAY,WAIX;AAJD,WAAY,WAAW;IACrB,0CAA2B,CAAA;IAC3B,kCAAmB,CAAA;IACnB,kCAAmB,CAAA;AACrB,CAAC,EAJW,WAAW,KAAX,WAAW,QAItB","sourcesContent":["import { FirebaseUser, TfrShop } from '@thefittingroom/sdk'\n\nimport { ModalManager } from '../components'\nimport { UIError } from '../components/uiError'\nimport * as types from '../types'\n\nexport const TfrLogo = process.env.ASSETS_URL + '/tfr-logo.svg'\nexport const AposeLogo = process.env.ASSETS_URL + '/apose-logo.svg'\nexport const AppStoreLogo = process.env.ASSETS_URL + '/app-store-logo.svg'\nexport const QrCodeLogo = process.env.ASSETS_URL + '/qr-code-logo.svg'\n\nexport const NotLoggedIn = new Error('user not logged in')\nexport const NoFramesFound = new Error('No frames found for this colorway')\nexport const NoColorwaySizeAssetsFound = new Error('No colorway size assets found')\nexport const NoStylesFound = new Error('No styles found')\n\nexport interface RecommendedAvailableSizes {\n error: string\n recommended_size: string\n available_sizes: string[]\n}\n\nexport interface FittingRoom {\n shop: TfrShop\n manager: ModalManager\n onSignout(colorwaySizeAssetSKU: string): () => Promise<void>\n onClose(): void\n onNavBack(): void\n onTryOn(colorwaySizeAssetSKU: string): void\n whenAvatarNotCreated(colorwaySizeAssetSKU: string): void\n whenAvatarPending(colorwaySizeAssetSKU: string): void\n whenAvatarCreated(colorwaySizeAssetSKU: string): void\n whenNotSignedIn(colorwaySizeAssetSKU: string): void\n\n whenTryOnReady(colorwaySizeAssetSKU: string, frames: types.TryOnFrames): void\n\n whenTryOnLoading(colorwaySizeAssetSKU: string): void\n\n whenTryOnFailed(colorwaySizeAssetSKU: string, error: Error): void\n\n whenError(colorwaySizeAssetSKU: string, error: UIError): void\n whenSignedIn(user: FirebaseUser, colorwaySizeAssetSKU: string): void\n whenSignedOut(colorwaySizeAssetSKU: string): void\n\n onSignIn(\n colorwaySizeAssetSKU: string,\n ): (username: string, password: string, validation: (message: string) => void) => void\n onNavSignIn(colorwaySizeAssetSKU: string): (email: string) => void\n onPasswordReset(colorwaySizeAssetSKU: string): (email: string) => void\n onNavForgotPassword(colorwaySizeAssetSKU: string): (email: string) => void\n onNavScanCode(colorwaySizeAssetSKU: string): void\n TryOn(colorwaySizeAssetSKU: string): void\n}\n\nexport interface ModalContent {\n Body: () => string\n Hook(): void\n Unhook(): void\n useFullModalContent: boolean\n}\n\nexport interface ModalProps {}\n\nexport interface SignInParams {\n email: string\n password: string\n}\nexport interface SignInModalProps extends ModalProps {\n email?: string\n onSignIn: (email: string, password: string, validationError: (message: string) => void) => void\n onNavForgotPassword: (email?: string) => void\n onNavScanCode: () => void\n}\nexport interface ForgotPasswordModalProps extends ModalProps {\n email?: string\n onNavSignIn: (email: string) => void\n onPasswordReset: (email: string) => void\n}\nexport type NoAvatarModalProps = ModalProps\nexport interface LoadingAvatarModalProps extends ModalProps {\n timeoutMS: number\n}\n\nexport interface TryOnModalProps extends ModalProps {\n frames: TryOnFrames\n onNavBack: () => void\n onClose: () => void\n}\n\nexport interface ErrorModalProps extends ModalProps {\n error: string\n onNavBack: () => void\n onClose: () => void\n}\n\nexport interface SizeErrorModalProps {\n onNavBack: () => void\n onClose: () => void\n sizes?: {\n recommended: string\n available: string[]\n }\n}\n\nexport interface ResetLinkModalProps {\n email: string\n onNavSignIn: (email: string) => void\n}\nexport interface ScanCodeModalProps {\n onSignInNav: () => void\n onTelSubmit: (tel: string) => void\n}\nexport interface LoggedOutModalProps {\n onClose: () => void\n onNavSignIn: (email: string) => void\n}\n\nexport interface FitModalProps {\n onSignInNav: () => void\n onClose: () => void\n}\n\nexport type TryOnFrames = string[]\n\nexport enum AvatarState {\n NOT_CREATED = 'NOT_CREATED',\n CREATED = 'CREATED',\n PENDING = 'PENDING',\n}\n\nexport type FirestoreColorwaySizeAsset = {\n id: number\n size_id: number\n style_id: number\n colorway_id: number\n colorway_name: string\n sku: string\n}\n\nexport type FirestoreGarmentMeasurement = {\n id: number\n measurement_location: string\n tolerance: number\n value: number\n}\n\nexport type FirestoreSize = {\n id: number\n size: string\n label: string\n size_system: string\n size_value_id: string\n garment_measurements: Map<string, FirestoreGarmentMeasurement>\n}\n\nexport type FirestoreColorway = {\n id: number\n name: string\n}\n\nexport type FirestoreStyle = {\n id: number\n brand_id: number\n brand_style_id: string\n name: string\n description: string\n garment_category: string\n is_published: boolean\n sale_type: string\n colorways: { [key: number]: FirestoreColorway }\n sizes: { [key: number]: FirestoreSize }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,GAAG,eAAe,CAAA;AAC/D,MAAM,CAAC,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,GAAG,iBAAiB,CAAA;AACnE,MAAM,CAAC,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,GAAG,qBAAqB,CAAA;AAC1E,MAAM,CAAC,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,GAAG,mBAAmB,CAAA;AAEtE,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAA;AAC1D,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAA;AAC3E,MAAM,CAAC,MAAM,yBAAyB,GAAG,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAA;AACnF,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAA;AA8GzD,MAAM,CAAN,IAAY,WAIX;AAJD,WAAY,WAAW;IACrB,0CAA2B,CAAA;IAC3B,kCAAmB,CAAA;IACnB,kCAAmB,CAAA;AACrB,CAAC,EAJW,WAAW,KAAX,WAAW,QAItB","sourcesContent":["import { FirebaseUser, TfrShop } from '@thefittingroom/sdk'\n\nimport { ModalManager } from '../components'\nimport { UIError } from '../components/uiError'\nimport * as types from '../types'\n\nexport const TfrLogo = process.env.ASSETS_URL + '/tfr-logo.svg'\nexport const AposeLogo = process.env.ASSETS_URL + '/apose-logo.svg'\nexport const AppStoreLogo = process.env.ASSETS_URL + '/app-store-logo.svg'\nexport const QrCodeLogo = process.env.ASSETS_URL + '/qr-code-logo.svg'\n\nexport const NotLoggedIn = new Error('user not logged in')\nexport const NoFramesFound = new Error('No frames found for this colorway')\nexport const NoColorwaySizeAssetsFound = new Error('No colorway size assets found')\nexport const NoStylesFound = new Error('No styles found')\n\nexport interface RecommendedAvailableSizes {\n error: string\n recommended_size: string\n available_sizes: string[]\n}\n\nexport interface FittingRoom {\n shop: TfrShop\n manager: ModalManager\n onSignout(colorwaySizeAssetSKU: string): () => Promise<void>\n onClose(): void\n onNavBack(): void\n onTryOn(colorwaySizeAssetSKU: string): void\n whenAvatarNotCreated(colorwaySizeAssetSKU: string): void\n whenAvatarPending(colorwaySizeAssetSKU: string): void\n whenAvatarCreated(colorwaySizeAssetSKU: string): void\n whenNotSignedIn(colorwaySizeAssetSKU: string): void\n\n whenTryOnReady(colorwaySizeAssetSKU: string, frames: types.TryOnFrames): void\n\n whenTryOnLoading(colorwaySizeAssetSKU: string): void\n\n whenTryOnFailed(colorwaySizeAssetSKU: string, error: Error): void\n\n whenError(colorwaySizeAssetSKU: string, error: UIError): void\n whenSignedIn(user: FirebaseUser, colorwaySizeAssetSKU: string): void\n whenSignedOut(colorwaySizeAssetSKU: string): void\n\n onSignIn(\n colorwaySizeAssetSKU: string,\n ): (username: string, password: string, validation: (message: string) => void) => void\n onNavSignIn(colorwaySizeAssetSKU: string): (email: string) => void\n onPasswordReset(colorwaySizeAssetSKU: string): (email: string) => void\n onNavForgotPassword(colorwaySizeAssetSKU: string): (email: string) => void\n onNavScanCode(colorwaySizeAssetSKU: string): void\n TryOn(colorwaySizeAssetSKU: string): void\n}\n\nexport interface ModalContent {\n Body: () => string\n Hook(): void\n Unhook(): void\n useFullModalContent: boolean\n}\n\nexport interface ModalProps { }\n\nexport interface SignInParams {\n email: string\n password: string\n}\nexport interface SignInModalProps extends ModalProps {\n email?: string\n onSignIn: (email: string, password: string, validationError: (message: string) => void) => void\n onNavForgotPassword: (email?: string) => void\n onNavScanCode: () => void\n}\nexport interface ForgotPasswordModalProps extends ModalProps {\n email?: string\n onNavSignIn: (email: string) => void\n onPasswordReset: (email: string) => void\n}\nexport type NoAvatarModalProps = ModalProps\nexport interface LoadingAvatarModalProps extends ModalProps {\n timeoutMS: number\n}\n\nexport interface TryOnModalProps extends ModalProps {\n frames: TryOnFrames\n onNavBack: () => void\n onClose: () => void\n}\n\nexport interface ErrorModalProps extends ModalProps {\n error: string\n onNavBack: () => void\n onClose: () => void\n}\n\nexport interface SizeErrorModalProps {\n onNavBack: () => void\n onClose: () => void\n sizes?: {\n recommended: string\n available: string[]\n }\n}\n\nexport interface ResetLinkModalProps {\n email: string\n onNavSignIn: (email: string) => void\n}\nexport interface ScanCodeModalProps {\n onSignInNav: () => void\n onTelSubmit: (tel: string) => void\n}\nexport interface LoggedOutModalProps {\n onClose: () => void\n onNavSignIn: (email: string) => void\n}\n\nexport interface FitModalProps {\n onSignInNav: () => void\n onClose: () => void\n}\n\nexport type TryOnFrames = string[]\n\nexport enum AvatarState {\n NOT_CREATED = 'NOT_CREATED',\n CREATED = 'CREATED',\n PENDING = 'PENDING',\n}\n\nexport type FirestoreColorwaySizeAsset = {\n id: number\n size_id: number\n style_id: number\n colorway_id: number\n colorway_name: string\n sku: string\n}\n\nexport type FirestoreGarmentMeasurement = {\n id: number\n measurement_location: string\n tolerance: number\n value: number\n}\n\nexport type FirestoreSize = {\n id: number\n size: string\n label: string\n size_system: string\n size_value_id: string\n garment_measurements: Map<string, FirestoreGarmentMeasurement>\n}\n\nexport type FirestoreColorway = {\n id: number\n name: string\n}\n\nexport type FirestoreStyle = {\n id: number\n brand_id: number\n brand_style_id: string\n name: string\n description: string\n garment_category: string\n is_published: boolean\n sale_type: string\n colorways: { [key: number]: FirestoreColorway }\n sizes: { [key: number]: FirestoreSize }\n is_vto: boolean\n}\n"]}
|