{"version":3,"file":"src_service-setup_diContainer_tsx.2d8277a4b2b70a0437e6.bundle.js","mappings":"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","sources":["webpack://elc-service-content/./src/internal/constants/VtoFoundationOverlay.ts","webpack://elc-service-content/./src/internal/constants/VtoFoundationQrCodeOverlay.ts","webpack://elc-service-content/./src/api/ContentApiSdk.ts","webpack://elc-service-content/./src/service-setup/ConfigStore.tsx","webpack://elc-service-content/./src/internal/use-cases/LoadContentUseCase.ts","webpack://elc-service-content/./src/service-setup/ServiceBusController.ts","webpack://elc-service-content/./src/internal/controllers/ContentBlockViewController.ts","webpack://elc-service-content/./src/internal/use-cases/ToutLinkClickedUseCase.ts","webpack://elc-service-content/./src/internal/controllers/BasicToutViewController.ts","webpack://elc-service-content/./src/internal/controllers/VtoBaseViewController.ts","webpack://elc-service-content/./src/internal/utils/getSearchParam.ts","webpack://elc-service-content/./src/internal/utils/getProductIdFromUrl.ts","webpack://elc-service-content/./src/internal/controllers/VtoFoundationOverlayViewController.ts","webpack://elc-service-content/./src/internal/controllers/VideoToutViewController.ts","webpack://elc-service-content/./src/internal/controllers/VideoToutYoutubeViewController.ts","webpack://elc-service-content/./src/internal/use-cases/FindationButtonClickedUseCase.ts","webpack://elc-service-content/./src/internal/controllers/ThirdPartyToutViewController.ts","webpack://elc-service-content/./src/internal/domain/entities/Node.ts","webpack://elc-service-content/./src/internal/repositories/ContentRepository.ts","webpack://elc-service-content/./src/internal/repositories/ProductRepository.ts","webpack://elc-service-content/./src/internal/controllers/VtoFoundationQrCodeOverlayViewController.ts","webpack://elc-service-content/./src/service-setup/diContainer.tsx"],"sourcesContent":["export const VTO_BEST_SHADE_HEX_VALUE = 'vto-best-shade-hex-value';\nexport const VTO_BEST_SHADE_NAME = 'vto-best-shade-name';\nexport const VTO_DISCLOSE_PARAM = 'vto_disclose';\nexport const VTO_FOUNDATION = 'Foundation';\nexport const VTO_FOUNDATION_OVERLAY_CLOSE = 'vto-foundation-overlay-close';\nexport const VTO_FOUNDATION_START_NOW_BUTTON = 'vto-foundation-start-now-button';\n","export const VTO_FOUNDATION_QR_CODE_OVERLAY_DISCLAIMER =\n 'vto-foundation-qr-code-overlay-disclaimer';\nexport const VTO_FOUNDATION_QR_CODE_OVERLAY_DETAIL = 'vto-foundation-qr-code-overlay-detail';\nexport const VTO_FOUNDATION_QR_CODE_OVERLAY_SUBTITLE = 'vto-foundation-qr-code-overlay-subtitle';\nexport const VTO_FOUNDATION_QR_CODE_OVERLAY_TITLE = 'vto-foundation-qr-code-overlay-title';\n\nexport const VTO_OPEN_QUERY_PARAM = 'vto_open';\nexport const VTO_OPEN_QUERY_VALUE = '1';\n","import { DrupalApi } from '@estee/elc-drupal-api';\nimport { IConfig } from '@estee/elc-service';\nimport { INodeData } from '~domain/entities/Node';\n\nexport interface INodeTemplateFields {\n data: INodeData;\n layout: string;\n}\n\nexport interface INodeTemplate {\n [key: string]: {\n template_fields: INodeTemplateFields;\n };\n}\nexport interface INodeTemplateError {\n [key: string]: {\n error: {\n code: string;\n message: string;\n };\n };\n}\nconst { name, version } = __serviceInfo__;\n\nexport class ContentApiSdk extends DrupalApi {\n private contentApiBasePath: string = 'elc_api/node';\n\n constructor(config: IConfig) {\n super(config, name, version);\n }\n\n public getContent = async (nid: number) => {\n const url = this.getApiUrl(nid);\n\n const response = await this.fetch({\n url\n });\n\n return response.data;\n };\n\n private getApiUrl(nid: number): string {\n const base = this.apiHost;\n const args = [base, this.contentApiBasePath, nid, 'all', 'api'];\n\n return args.join('/');\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { observable, action } from 'mobx';\n\nexport class ConfigStore {\n @observable public config: any;\n\n constructor(config: any) {\n this.updateConfig(config);\n }\n\n @action\n public updateConfig(config: any) {\n this.config = { ...config };\n }\n}\n","import { diContainer } from '~setup/diContainer';\nimport serviceNames from '~setup/ContentService';\nimport { ContentRepository } from '~repositories/ContentRepository';\nimport { ContentState } from '~exported/content-block/ContentBlock';\nimport { ELCLogger, TriggerType } from '@estee/elc-logging';\n\nconst { name, version } = __serviceInfo__;\n\nexport class LoadContentUseCase {\n private nid: number;\n private contentRepository: ContentRepository;\n private logger: ELCLogger;\n private state?: ContentState;\n\n constructor(nid: number, state?: ContentState) {\n this.nid = nid;\n this.state = state;\n this.contentRepository = diContainer.get(serviceNames.contentRepository);\n this.logger = diContainer.get(serviceNames.logger);\n }\n\n public execute = async () => {\n try {\n const content = this.state && this.state.content.get(this.nid);\n content\n ? this.contentRepository.setContent(content)\n : await this.contentRepository.loadContentData(this.nid);\n } catch (error) {\n this.logger.error({\n triggerType: TriggerType.render,\n message: error.message,\n payload: {\n error,\n serviceName: name,\n serviceVersion: version\n }\n });\n }\n };\n}\n","import { ContentRepository } from '../internal/repositories/ContentRepository';\nimport { LoadContentUseCase } from '../internal/use-cases/LoadContentUseCase';\n\nexport class ServiceBusController {\n private contentRepository: ContentRepository;\n\n constructor(contentRepository: ContentRepository) {\n this.contentRepository = contentRepository;\n }\n\n public getServices = async ({ nodeId }: { nodeId: number }) => {\n await new LoadContentUseCase(nodeId).execute();\n const templates = this.contentRepository.nodes.get(nodeId);\n\n return templates ? templates.data : [];\n };\n}\n","import { observable, action, computed } from 'mobx';\nimport { ViewController } from '@estee/elc-service';\nimport { LoadContentUseCase } from '../use-cases/LoadContentUseCase';\nimport { ContentRepository } from '../repositories/ContentRepository';\nimport { diContainer } from '../../service-setup/diContainer';\nimport serviceNames from '~setup/ContentService';\nimport { INodeContent } from '~domain/entities/Node';\nimport { IContentBlock } from '../../exported/content-block/ContentBlock';\n\nexport class ContentBlockViewController extends ViewController {\n @observable private contentRepository: ContentRepository;\n\n constructor() {\n super();\n this.contentRepository = diContainer.get(serviceNames.contentRepository);\n }\n\n @action\n public loaded = async (props: IContentBlock) => {\n const { nid } = props.config;\n this.isLoading = true;\n const loadContentUseCase = new LoadContentUseCase(nid, props.state);\n await loadContentUseCase.execute();\n\n this.isLoading = false;\n };\n\n @computed\n get data() {\n return {\n content: this.contentRepository.nodes\n };\n }\n\n public getContent(nid: number) {\n return this.contentRepository.getContent(nid);\n }\n}\n","import { emit, events } from '@estee/elc-service-bus';\n\nexport class ToutLinkClickedUseCase {\n private siteUrl: string;\n\n constructor(siteUrl: string) {\n this.siteUrl = siteUrl;\n }\n\n public execute = async () => {\n emit(events.CHANGE_LOCATION, {\n // @TODO update this to use the plugin's output rather than hardcoding the protocol check\n redirectUrl:\n this.siteUrl.startsWith('http') || this.siteUrl.startsWith('/')\n ? this.siteUrl\n : `/${this.siteUrl}`\n });\n };\n}\n","import { action, observable, computed } from 'mobx';\nimport { IBasicToutProps } from '~exported/basic-tout/BasicTout';\nimport { ViewController } from '@estee/elc-service';\nimport { emit, events } from '@estee/elc-service-bus';\nimport { INodeContent } from '~domain/entities/Node';\nimport { ToutLinkClickedUseCase } from '~use-cases/ToutLinkClickedUseCase';\n\nexport class BasicToutViewController extends ViewController {\n @observable public _content: Map;\n\n constructor() {\n super();\n this._content = new Map();\n }\n\n @action\n public loaded = async (props: IBasicToutProps) => {\n this.isLoading = true;\n const { nid, layout, data } = props.config;\n this.content = {\n nid,\n layout,\n data\n };\n\n emit(events.BASIC_TOUT_LOADED, {});\n\n this.isLoading = false;\n };\n\n public redirectToSiteUrl = (siteUrl: string) => {\n const toutLinkClickedUseCase = new ToutLinkClickedUseCase(siteUrl);\n toutLinkClickedUseCase.execute();\n };\n\n @computed\n get data() {\n return {\n content: this._content\n };\n }\n\n public getContent(nid: number) {\n return this._content.get(nid);\n }\n\n public set content(input: INodeContent) {\n const { nid } = input;\n this._content.set(nid, { ...input });\n }\n}\n","import { action, observable } from 'mobx';\nimport { ViewController } from '@estee/elc-service';\nimport { emit, events, query, serviceQueries } from '@estee/elc-service-bus';\nimport { ProductRepository } from '../repositories/ProductRepository';\nimport { getProductIdFromUrl } from '../utils/getProductIdFromUrl';\nimport { getSearchParam } from '../utils/getSearchParam';\nimport { VTO_DISCLOSE_PARAM, VTO_FOUNDATION } from '../constants/VtoFoundationOverlay';\nimport { diContainer } from '../../service-setup/diContainer';\nimport serviceNames from '~setup/ContentService';\n\ninterface IBestMatch {\n hexVal: string;\n name: string;\n}\n\ninterface IVtoFoundationPayload {\n vtoType: string;\n}\n\nexport class VtoBaseViewController extends ViewController {\n @observable public bestMatch: IBestMatch;\n @observable public isVtoDisclosed: boolean = false;\n @observable public isLoading: boolean = true;\n private productRepository: ProductRepository;\n private vtoFoundationPayload: IVtoFoundationPayload = { vtoType: VTO_FOUNDATION };\n\n constructor() {\n super();\n this.productRepository = diContainer.get(serviceNames.productRepository);\n }\n\n @action\n public setIsVtoDisclosed = () => {\n const vtoDiscloseParam = getSearchParam(VTO_DISCLOSE_PARAM);\n this.isVtoDisclosed = vtoDiscloseParam !== null;\n };\n\n @action\n public setBestMatch = async () => {\n const bestMatchSkuId = await this.getBestMatchSkuId();\n\n if (!bestMatchSkuId) {\n return;\n }\n\n const bestMatch = await this.getShadeData(bestMatchSkuId);\n\n if (bestMatch?.name) {\n const { name, hexVal } = bestMatch;\n this.bestMatch = { name, hexVal };\n\n emit(events.VTO_SHADE_REMINDER_OVERLAY_OPENED, this.vtoFoundationPayload);\n }\n };\n\n public closeShadeReminderOverlay = () => {\n emit(events.VTO_SHADE_REMINDER_OVERLAY_CLOSED, this.vtoFoundationPayload);\n };\n\n public retainShadeReminderOverlay = () => {\n emit(events.VTO_SHADE_REMINDER_OVERLAY_RETAINED, this.vtoFoundationPayload);\n };\n\n public retakeVtoShadeReminder = () => {\n emit(events.VTO_SHADE_REMINDER_OVERLAY_RETAKEN, this.vtoFoundationPayload);\n };\n\n private async getBestMatchSkuId() {\n const productId = getProductIdFromUrl();\n\n if (!productId) {\n return;\n }\n\n return query(serviceQueries.GET_BEST_MATCH_SKU_ID, { productId });\n }\n\n private async getShadeData(skuId: string) {\n const sku = await this.productRepository.getSkuById(skuId);\n\n if (sku && sku.shades.length > 0) {\n return sku.shades[0];\n }\n }\n}\n","import { root } from '@estee/elc-universal-utils';\n\nexport const getSearchParam = (searchKey: string) => {\n const search = (root.location).search;\n const searchParams = new URLSearchParams(search);\n\n return searchParams.get(searchKey);\n};\n","import { root } from '@estee/elc-universal-utils';\n\nconst PRODUCT_ID_POSITION = 2;\n\nexport const getProductIdFromUrl = () => {\n const path = root.location.pathname;\n const splitPath = path.split('/');\n const productIndex = splitPath.indexOf('product');\n\n if (productIndex > 0) {\n return splitPath[productIndex + PRODUCT_ID_POSITION];\n }\n};\n","import { action, observable, computed } from 'mobx';\nimport {\n IVtoFoundationOverlayProps,\n IVtoFoundationOverlayNodeContent,\n IVtoFoundationOverlayNodeData\n} from '~exported/vto-foundation-overlay/VtoFoundationOverlay';\nimport { VtoBaseViewController } from './VtoBaseViewController';\nimport { emit, events } from '@estee/elc-service-bus';\n\nexport interface IProductVtoWindow extends Window {\n YMK: {\n open(\n loadLiveCam: boolean,\n imageObject: Record | null,\n detectSkin: boolean\n ): void;\n };\n}\n\ndeclare let window: IProductVtoWindow;\nexport class VtoFoundationOverlayViewController extends VtoBaseViewController {\n @observable public _content: Map;\n @observable public overlayData = {} as IVtoFoundationOverlayNodeData;\n @observable private _isDisclaimerChecked = false;\n\n constructor() {\n super();\n this._content = new Map();\n this.setIsVtoDisclosed();\n }\n\n @action\n public loaded = async (props: IVtoFoundationOverlayProps) => {\n const { nid, layout, data = [] } = props.config;\n this.content = {\n nid,\n layout,\n data\n };\n\n const [overlayData] = data;\n this.overlayData = overlayData || this.overlayData;\n\n this.isLoading = true;\n\n if (this.overlayData.showShadeReminderScreen) {\n await this.setBestMatch();\n }\n\n this.isLoading = false;\n };\n\n @computed\n get data() {\n return {\n bestMatch: this.bestMatch,\n content: this._content,\n isVtoDisclosed: this.isVtoDisclosed,\n isBestMatch: this.isBestMatch,\n isLoading: this.isLoading,\n title: this.title,\n subtitle: this.subtitle,\n isDisclaimerChecked: this.isDisclaimerChecked\n };\n }\n\n @action\n public toggleDisclaimerCheck = () => {\n this._isDisclaimerChecked = !this._isDisclaimerChecked;\n };\n\n public getContent(nid: number) {\n return this._content.get(nid);\n }\n\n public set content(input: IVtoFoundationOverlayNodeContent) {\n const { nid } = input;\n this._content.set(nid, { ...input });\n }\n\n public openFoundationVto = () => {\n const loadLiveCam = true;\n const imageObject = null;\n const detectSkin = true;\n if (typeof window.YMK === 'object') {\n window.YMK.open(loadLiveCam, imageObject, detectSkin);\n }\n\n if (this.isBestMatch) {\n this.retakeVtoShadeReminder();\n }\n };\n\n public selectShade = () => {\n emit(events.PRODUCT_SHADE_SELECTED, { shadeName: this.bestMatch.name });\n emit(events.VTO_FOUNDATION_OVERLAY_TOGGLED, { isOverlayOpened: false });\n this.retainShadeReminderOverlay();\n };\n\n public closeOverlay = () => {\n if (this.isBestMatch) {\n this.closeShadeReminderOverlay();\n }\n\n emit(events.VTO_FOUNDATION_OVERLAY_TOGGLED, { isOverlayOpened: false });\n };\n\n @computed\n get isBestMatch() {\n return !!this.bestMatch;\n }\n\n @computed\n get title() {\n const { title, bestMatchTitle } = this.overlayData;\n\n return this.isBestMatch ? bestMatchTitle : title;\n }\n\n @computed\n get subtitle() {\n const { copy: subtitle, bestMatchSubtitle } = this.overlayData;\n\n return this.isBestMatch ? bestMatchSubtitle : subtitle;\n }\n\n @computed\n public get isDisclaimerChecked() {\n return this._isDisclaimerChecked;\n }\n}\n","import { action, observable, computed } from 'mobx';\nimport { ViewController } from '@estee/elc-service';\nimport { INodeContent } from '../domain/entities/Node';\nimport { IVideoToutProps } from '~exported/video-tout/VideoTout';\n\nexport class VideoToutViewController extends ViewController {\n @observable public _content: Map;\n\n constructor() {\n super();\n this._content = new Map();\n }\n\n @action\n public initialize = async (props: IVideoToutProps) => {\n this.isLoading = true;\n const { nid, layout, data } = props.config;\n this.content = {\n nid,\n layout,\n data\n };\n\n this.isLoading = false;\n };\n\n @computed\n get data() {\n return {\n content: this._content\n };\n }\n\n public getContent(nid: number) {\n return this._content.get(nid);\n }\n\n public set content(input: INodeContent) {\n const { nid } = input;\n this._content.set(nid, { ...input });\n }\n}\n","import { action, observable, computed } from 'mobx';\nimport { IVideoToutYoutubeProps } from '~exported/video-tout-youtube/VideoToutYoutube';\nimport { ViewController } from '@estee/elc-service';\nimport { INodeContent } from '~domain/entities/Node';\n\nexport class VideoToutYoutubeViewController extends ViewController {\n @observable public _content: Map;\n\n constructor() {\n super();\n this._content = new Map();\n }\n\n @action\n public initialize = async (props: IVideoToutYoutubeProps) => {\n this.isLoading = true;\n const { nid, layout, data } = props.config;\n this.content = {\n nid,\n layout,\n data\n };\n\n this.isLoading = false;\n };\n\n @computed\n get data() {\n return {\n content: this._content\n };\n }\n\n public getContent(nid: number) {\n return this._content.get(nid);\n }\n\n public set content(input: INodeContent) {\n const { nid } = input;\n this._content.set(nid, { ...input });\n }\n}\n","import { emit, events } from '@estee/elc-service-bus';\n\nexport class FindationButtonClickedUseCase {\n private findationKey: string;\n\n constructor(findationKey: string) {\n this.findationKey = findationKey;\n }\n\n public execute = async () => {\n emit(events.FINDATION_BUTTON_CLICKED, {\n findationKey: this.findationKey\n });\n };\n}\n","import { action, observable, computed } from 'mobx';\nimport { IThirdPartyToutNodeContent } from '~exported/third-party-tout/ThirdPartyTout';\nimport { ViewController } from '@estee/elc-service';\nimport { INodeContent } from '~domain/entities/Node';\nimport { FindationButtonClickedUseCase } from '~use-cases/FindationButtonClickedUseCase';\n\nexport class ThirdPartyToutViewController extends ViewController {\n @observable public _content: Map;\n\n constructor() {\n super();\n this._content = new Map();\n }\n\n @action\n public initialize = (props: IThirdPartyToutNodeContent) => {\n this.isLoading = true;\n const { nid, layout, data } = props;\n this.content = {\n nid,\n layout,\n data\n };\n\n this.isLoading = false;\n };\n\n public openFindationPopup = (findationKey: string) => {\n const findationButtonClickedUseCase = new FindationButtonClickedUseCase(findationKey);\n findationButtonClickedUseCase.execute();\n };\n\n @computed\n get data() {\n return {\n content: this._content\n };\n }\n\n public getContent(nid: number) {\n return this._content.get(nid);\n }\n\n public set content(input: INodeContent) {\n const { nid } = input;\n this._content.set(nid, { ...input });\n }\n}\n","import { observable, set } from 'mobx';\n\nexport interface INodeData {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [key: string]: string | any;\n}\n\nexport interface INodeContent {\n nid: number;\n layout: string;\n data: INodeData[];\n}\n\nexport interface IMantleMedia {\n src: string;\n alt: string;\n device_mp4_url: string;\n hex: string;\n background_color_fallback: string;\n html: string;\n}\n\nexport interface IMantleRichText {\n html_tag: string;\n font_classes: string;\n text_content: string;\n html: string;\n}\n\nexport interface IMantleCtaButton {\n href: string;\n text: string;\n classname: string;\n color_vals: boolean;\n bgcolor: string;\n textcolor: string;\n bordercolor: string;\n trigger_type: string;\n open_new_window: boolean;\n}\n\nexport interface IImage {\n src: string;\n alt: string;\n html: string;\n}\n\nexport interface IHexColor {\n hex: string;\n}\n\nexport class Node {\n @observable public nid: number;\n @observable public layout: string;\n @observable public data: INodeData[] = [];\n\n public static fromJson(data: INodeContent): INodeContent {\n const node = new Node();\n set(node, data);\n\n node.nid = data.nid;\n node.layout = data.layout;\n node.data = data.data;\n\n return node;\n }\n}\n","import { observable, action } from 'mobx';\nimport { ContentApiSdk, INodeTemplate, INodeTemplateError } from '~api/ContentApiSdk';\nimport { diContainer } from '~setup/diContainer';\nimport serviceNames from '~setup/ContentService';\nimport { Node, INodeContent } from '~domain/entities/Node';\n\nexport class ContentRepository {\n private contentApiSdk: ContentApiSdk;\n @observable private _nodes: Map;\n\n constructor() {\n this.contentApiSdk = diContainer.get(serviceNames.contentApiSdk);\n this._nodes = new Map();\n }\n\n @action\n public loadContentData = async (nid: number): Promise => {\n const cached = this.getContent(nid);\n if (cached) {\n return;\n }\n\n const apiResponse = await this.contentApiSdk.getContent(nid);\n\n if (nid in apiResponse) {\n const templateFields = (apiResponse)[nid].template_fields || {\n layout: '',\n data: []\n };\n\n const templateNodes = Array.isArray(templateFields) ? templateFields : [templateFields];\n\n const { layout } = templateNodes[0];\n const data = templateNodes.map((item) => item.data);\n\n this.setContent({\n nid,\n layout,\n data\n });\n\n const error = (apiResponse)[nid].error;\n\n if (error) {\n throw new Error(`code error: ${error.code}, message: ${error.message}`);\n }\n }\n };\n\n @action\n public setContent(content: INodeContent): void {\n const { nid } = content;\n this._nodes.set(nid, Node.fromJson(content));\n }\n\n public getContent(nid: number): INodeContent | undefined {\n return this._nodes.get(nid);\n }\n\n get nodes() {\n return this._nodes;\n }\n}\n","import { query, serviceQueries } from '@estee/elc-service-bus';\n\ninterface IShade {\n hexVal: string;\n name: string;\n}\n\ninterface ISku {\n shades: IShade[];\n skuId: string;\n}\n\ninterface IProduct {\n skus: ISku[];\n productId: string;\n}\n\nexport class ProductRepository {\n private skus: ISku[] = [];\n\n public getSkuById = async (skuId: string) => {\n const sku = this.findSkuById(skuId);\n if (sku) {\n return sku;\n }\n\n const product = await this.getProductBySkuId(skuId);\n\n if (product) {\n this.skus = [...this.skus, ...product.skus];\n\n return this.findSkuById(skuId);\n }\n };\n\n private async getProductBySkuId(skuId: string) {\n const productData = await query(serviceQueries.GET_PRODUCT_DATA, {\n filterBy: { skus: { skuIds: [skuId] } }\n });\n\n if (productData?.length > 0) {\n return productData[0];\n }\n }\n\n private findSkuById(skuId: string) {\n return this.skus.find((sku) => sku.skuId === skuId);\n }\n}\n","import { action, observable, computed } from 'mobx';\nimport { root } from '@estee/elc-universal-utils';\nimport { IVtoFoundationQrCodeOverlayNodeData } from '~exported//vto-foundation-qr-code-overlay/VtoFoundationQrCodeOverlay';\nimport { emit, events } from '@estee/elc-service-bus';\nimport {\n VTO_OPEN_QUERY_PARAM,\n VTO_OPEN_QUERY_VALUE\n} from '../constants/VtoFoundationQrCodeOverlay';\nimport { VtoBaseViewController } from './VtoBaseViewController';\nimport { VTO_FOUNDATION } from '../constants/VtoFoundationOverlay';\n\nexport interface IVtoFoundationQrCodeOverlayViewController {\n nodeData: IVtoFoundationQrCodeOverlayNodeData[];\n}\n\nexport class VtoFoundationQrCodeOverlayViewController extends VtoBaseViewController {\n @observable public qrCodeUrl: string;\n @observable public isQrCodeVisible: boolean = false;\n @observable public overlayData = {} as IVtoFoundationQrCodeOverlayNodeData;\n\n constructor() {\n super();\n this.setIsVtoDisclosed();\n }\n\n @action\n public loaded = async (props: IVtoFoundationQrCodeOverlayViewController) => {\n const { nodeData: [overlayData] = [] } = props;\n\n this.overlayData = overlayData || this.overlayData;\n\n this.isLoading = true;\n\n this.setQrCodeUrl();\n\n this.setIsQrCodeVisible(false);\n\n if (this.overlayData.showShadeReminderScreen) {\n await this.setBestMatch();\n }\n\n this.isLoading = false;\n };\n\n @computed\n get data() {\n return {\n qrCodeUrl: this.qrCodeUrl,\n isVtoDisclosed: this.isVtoDisclosed,\n isLoading: this.isLoading,\n isBestMatch: this.isBestMatch,\n bestMatch: this.bestMatch,\n title: this.title,\n subtitle: this.subtitle\n };\n }\n\n public closeOverlay = () => {\n if (this.isBestMatch) {\n this.closeShadeReminderOverlay();\n }\n\n emit(events.VTO_FOUNDATION_QR_CODE_OVERLAY_CLOSED, { vtoType: VTO_FOUNDATION });\n };\n\n public selectShade = () => {\n emit(events.PRODUCT_SHADE_SELECTED, { shadeName: this.bestMatch.name });\n this.closeOverlay();\n this.retainShadeReminderOverlay();\n };\n\n @action\n public setIsQrCodeVisible = (isVisible: boolean) => {\n this.isQrCodeVisible = isVisible;\n };\n\n public findDifferentShade = () => {\n this.setIsQrCodeVisible(true);\n this.retakeVtoShadeReminder();\n };\n\n @computed\n get isBestMatch() {\n return !!this.bestMatch && !this.isQrCodeVisible;\n }\n\n @computed\n get title() {\n const { title, bestMatchTitle } = this.overlayData;\n\n return this.isBestMatch ? bestMatchTitle : title;\n }\n\n @computed\n get subtitle() {\n const { subtitle, bestMatchSubtitle } = this.overlayData;\n\n return this.isBestMatch ? bestMatchSubtitle : subtitle;\n }\n\n @action\n private setQrCodeUrl() {\n const currentLocation = root.location;\n const search = currentLocation.search;\n const url = currentLocation.toString();\n const queryString = this.getQueryString(currentLocation);\n\n this.qrCodeUrl = search ? url.replace(search, `?${queryString}`) : `${url}?${queryString}`;\n }\n\n private getQueryString(currentLocation: Location) {\n const search = new URLSearchParams(currentLocation.search);\n\n const { qrCodeQueryParams } = this.overlayData;\n\n const qrCodeQuerySearch = qrCodeQueryParams && new URLSearchParams(qrCodeQueryParams);\n\n const qrCodeParams = new URLSearchParams({\n ...Object.fromEntries(search),\n ...(qrCodeQuerySearch && Object.fromEntries(qrCodeQuerySearch))\n });\n\n qrCodeParams.set(VTO_OPEN_QUERY_PARAM, VTO_OPEN_QUERY_VALUE);\n\n return qrCodeParams.toString();\n }\n}\n","import { Container } from 'hypo-container';\nimport { getDecorators } from '@estee/elc-service';\nimport { HttpTransport } from '@estee/elc-http-transport';\nimport { ContentApiSdk } from '~api/ContentApiSdk';\nimport { ConfigStore } from '~setup/ConfigStore';\nimport { ContentService } from './ContentService';\nimport { ServiceBusController } from './ServiceBusController';\nimport { ContentBlockViewController } from '~controllers/ContentBlockViewController';\nimport { BasicToutViewController } from '~controllers/BasicToutViewController';\nimport { VtoFoundationOverlayViewController } from '~controllers/VtoFoundationOverlayViewController';\nimport { VideoToutViewController } from '~controllers/VideoToutViewController';\nimport { VideoToutYoutubeViewController } from '~controllers/VideoToutYoutubeViewController';\nimport { ThirdPartyToutViewController } from '~controllers/ThirdPartyToutViewController';\nimport { ContentRepository } from '~repositories/ContentRepository';\nimport { ProductRepository } from '~repositories/ProductRepository';\nimport { Node } from '~domain/entities/Node';\nimport { VtoFoundationQrCodeOverlayViewController } from '~controllers/VtoFoundationQrCodeOverlayViewController';\nimport type { IAppConfig } from '@estee/elc-universal-utils';\nimport serviceNames from '~setup/ContentService';\nimport { ELCLogger } from '@estee/elc-logging';\n\nexport const diContainer = new Container();\n\nexport const setConfig = (configJSON: IAppConfig) => {\n diContainer.config = configJSON;\n};\n\nconst { name, version } = __serviceInfo__;\n\ndiContainer\n .register(\n serviceNames.configStore,\n diContainer.factory((c) => new ConfigStore(c.config))\n )\n .register(serviceNames.httpTransport, (c) => {\n const configStore = c.get(serviceNames.configStore);\n const httpTransport = new HttpTransport();\n httpTransport.setBaseUrl(configStore.baseUrl);\n\n return httpTransport;\n })\n .register(serviceNames.contentApiSdk, (c) => {\n const configStore = c.get(serviceNames.configStore);\n const httpTransport = c.get(serviceNames.httpTransport);\n const config = {\n businessUnitId: configStore.config.businessUnitId,\n httpTransport\n };\n\n return new ContentApiSdk(config);\n })\n .register(\n serviceNames.serviceBusController,\n (c) => new ServiceBusController(c.get(serviceNames.contentRepository))\n )\n .register(\n serviceNames.contentService,\n (c) =>\n new ContentService((config: IAppConfig) => {\n setConfig(config);\n\n c.get(serviceNames.serviceBusController);\n })\n )\n .register(serviceNames.contentBlockViewController, () => new ContentBlockViewController())\n .register(serviceNames.contentRepository, () => new ContentRepository())\n .register(serviceNames.productRepository, () => new ProductRepository())\n .register(serviceNames.contentNode, () => new Node())\n .register(serviceNames.basicToutViewController, () => new BasicToutViewController())\n .register(\n serviceNames.vtoFoundationOverlayViewController,\n () => new VtoFoundationOverlayViewController()\n )\n .register(serviceNames.videoToutViewController, () => new VideoToutViewController())\n .register(\n serviceNames.videoToutYoutubeViewController,\n () => new VideoToutYoutubeViewController()\n )\n .register(serviceNames.thirdPartyToutViewController, () => new ThirdPartyToutViewController())\n .register(\n serviceNames.vtoFoundationQrCodeOverlayViewController,\n () => new VtoFoundationQrCodeOverlayViewController()\n )\n .register(\n serviceNames.logger,\n () =>\n new ELCLogger({\n serviceName: name,\n serviceVersion: version\n })\n );\n\nconst { lazyInject } = getDecorators(diContainer);\nexport { lazyInject };\n"],"names":["VTO_BEST_SHADE_HEX_VALUE","VTO_BEST_SHADE_NAME","VTO_DISCLOSE_PARAM","VTO_FOUNDATION","VTO_FOUNDATION_START_NOW_BUTTON","VTO_FOUNDATION_QR_CODE_OVERLAY_DISCLAIMER","VTO_FOUNDATION_QR_CODE_OVERLAY_DETAIL","VTO_FOUNDATION_QR_CODE_OVERLAY_SUBTITLE","VTO_FOUNDATION_QR_CODE_OVERLAY_TITLE","VTO_OPEN_QUERY_PARAM","VTO_OPEN_QUERY_VALUE","name","version","ContentApiSdk","DrupalApi","constructor","config","super","contentApiBasePath","getContent","nid","url","this","getApiUrl","fetch","data","apiHost","join","ConfigStore","updateConfig","LoadContentUseCase","state","execute","content","get","contentRepository","setContent","loadContentData","error","logger","triggerType","TriggerType","message","payload","serviceName","serviceVersion","diContainer","ServiceBusController","getServices","nodeId","templates","nodes","ContentBlockViewController","ViewController","loaded","props","isLoading","loadContentUseCase","ToutLinkClickedUseCase","siteUrl","emit","events","redirectUrl","startsWith","BasicToutViewController","layout","redirectToSiteUrl","_content","Map","input","set","VtoBaseViewController","isVtoDisclosed","vtoFoundationPayload","vtoType","setIsVtoDisclosed","vtoDiscloseParam","searchKey","search","URLSearchParams","getSearchParam","setBestMatch","bestMatchSkuId","getBestMatchSkuId","bestMatch","getShadeData","hexVal","closeShadeReminderOverlay","retainShadeReminderOverlay","retakeVtoShadeReminder","productRepository","productId","splitPath","split","productIndex","indexOf","getProductIdFromUrl","query","serviceQueries","skuId","sku","getSkuById","shades","length","VtoFoundationOverlayViewController","overlayData","_isDisclaimerChecked","showShadeReminderScreen","toggleDisclaimerCheck","openFoundationVto","window","YMK","open","isBestMatch","selectShade","shadeName","isOverlayOpened","closeOverlay","title","subtitle","isDisclaimerChecked","bestMatchTitle","copy","bestMatchSubtitle","VideoToutViewController","initialize","VideoToutYoutubeViewController","FindationButtonClickedUseCase","findationKey","ThirdPartyToutViewController","openFindationPopup","fromJson","node","Node","ContentRepository","apiResponse","contentApiSdk","templateFields","template_fields","templateNodes","Array","isArray","map","item","Error","code","_nodes","ProductRepository","skus","findSkuById","product","getProductBySkuId","productData","filterBy","skuIds","find","VtoFoundationQrCodeOverlayViewController","isQrCodeVisible","nodeData","setQrCodeUrl","setIsQrCodeVisible","isVisible","findDifferentShade","qrCodeUrl","currentLocation","toString","queryString","getQueryString","replace","qrCodeQueryParams","qrCodeQuerySearch","qrCodeParams","Object","fromEntries","Container","setConfig","configJSON","register","factory","c","configStore","httpTransport","HttpTransport","setBaseUrl","baseUrl","businessUnitId","ContentService","ELCLogger","lazyInject"],"sourceRoot":""}