{"version":3,"file":"diContainer.55cd4d223dbd155f0661.bundle.js","mappings":"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","sources":["webpack://elc-service-product-ugc/./src/internal/domain/entities/Config.ts","webpack://elc-service-product-ugc/./src/internal/repositories/ConfigRepository.ts","webpack://elc-service-product-ugc/./node_modules/@estee/elc-service/src/ViewController.ts","webpack://elc-service-product-ugc/./src/internal/controllers/OlapicWidgetViewController.ts","webpack://elc-service-product-ugc/./src/internal/use-cases/ProductUgcServiceStartedUseCase.ts","webpack://elc-service-product-ugc/./src/service-setup/ConfigStore.tsx","webpack://elc-service-product-ugc/./src/service-setup/diContainer.tsx","webpack://elc-service-product-ugc/./node_modules/@estee/elc-service/src/decorators/Decorators.ts"],"sourcesContent":["import { observable, action } from 'mobx';\n\nexport interface IConfig {\n [key: string]: string;\n}\nexport class Config {\n @observable public config: IConfig = {};\n\n @action\n public updateConfig(config: IConfig) {\n this.config = { ...config };\n }\n}\n","import { query, serviceQueries } from '@estee/elc-service-bus';\nimport { diContainer } from '~setup/diContainer';\nimport serviceNames from '~setup/ProductUgcService';\nimport { Config } from '~domain/entities/Config';\n\nexport class ConfigRepository {\n private config: Config;\n\n constructor() {\n this.config = diContainer.get(serviceNames.config);\n }\n\n public getConfigs = async (configs: string[]) => {\n const config = await query(serviceQueries.GET_CONFIG, configs);\n\n this.config.updateConfig(config);\n };\n}\n","import { observable } from 'mobx';\nimport {\n IComponentViewController,\n IViewControllerData,\n ViewControllerLoadedMethod\n} from '@estee/elc-universal-utils';\n\nexport class ViewController implements IComponentViewController {\n public id?: string;\n public dataState?: IViewControllerData;\n public loaded?: ViewControllerLoadedMethod;\n public configMergeStrategy?: Function;\n @observable public isLoading: boolean = true;\n\n public setSSRState = (data?: IViewControllerData) => {\n this.dataState = data;\n };\n\n public setId = (id?: string) => {\n this.id = id && btoa(unescape(encodeURIComponent(id)));\n };\n\n public get data(): IViewControllerData {\n return {};\n }\n}\n","import { computed, observable, action } from 'mobx';\nimport { ViewController } from '@estee/elc-service';\nimport { Config } from '~domain/entities/Config';\nimport { IOlapicWidget } from '~exported/olapic/OlapicWidget';\n\nexport class OlapicWidgetViewController extends ViewController {\n @observable public config: Config;\n @observable public isLoading: boolean = true;\n private olapicConfigTags: string;\n private olapicConfigInstanceKey: string;\n private olapicConfigApiKey: string;\n private olapicConfigLanguage: string;\n private productId: string;\n\n constructor(config: Config) {\n super();\n this.config = config;\n }\n\n @action\n public initialize = (props: IOlapicWidget) => {\n const {\n olapicConfigInstanceKey,\n olapicConfigApiKey,\n olapicConfigTags,\n olapicConfigLanguage,\n productId\n } = props.config;\n this.olapicConfigInstanceKey = olapicConfigInstanceKey;\n this.olapicConfigApiKey = olapicConfigApiKey;\n this.olapicConfigTags = olapicConfigTags;\n this.olapicConfigLanguage = olapicConfigLanguage;\n this.productId = productId;\n };\n\n @computed\n get data() {\n return {\n isLoading: this.isLoading\n };\n }\n\n @computed\n public get configData() {\n const { config } = this.config;\n\n return config;\n }\n\n public showElementOnViewportIntersection = () => {\n const {\n olapicWidgetId,\n olapicWidgetSrc,\n olapicInstanceKey,\n olapicApiKey,\n olapicLanguage\n } = this.configData;\n const {\n olapicConfigInstanceKey,\n olapicConfigApiKey,\n olapicConfigTags,\n olapicConfigLanguage,\n productId\n } = this;\n const olapicScript = document.createElement('script');\n const olapicContentElement = document.querySelector('.elc-olapic-v1__content');\n const olapicWrapper = document.querySelector('.elc-olapic-v1');\n const olapicWidget = document.createElement('div');\n\n const intersectionObserver = new IntersectionObserver(\n ([entry]) => {\n if (entry.intersectionRatio > 0 && entry.isIntersecting) {\n this.isLoading = false;\n olapicWidget.id = olapicWidgetId;\n olapicScript.src = olapicWidgetSrc;\n olapicScript.dataset.olapic = olapicWidgetId;\n olapicScript.async = true;\n if (olapicConfigInstanceKey) {\n olapicScript.dataset.instance = olapicConfigInstanceKey;\n olapicContentElement.appendChild(olapicScript);\n } else {\n olapicScript.dataset.instance = olapicInstanceKey;\n olapicContentElement.appendChild(olapicScript);\n }\n if (olapicConfigApiKey) {\n olapicScript.dataset.apikey = olapicConfigApiKey;\n olapicContentElement.appendChild(olapicScript);\n } else {\n olapicScript.dataset.apikey = olapicApiKey;\n olapicContentElement.appendChild(olapicScript);\n }\n\n if (!!olapicConfigTags) {\n olapicScript.dataset.tags = olapicConfigTags;\n } else if (!!productId) {\n // Backward compatibility with the current production version\n olapicScript.dataset.tags = productId;\n }\n\n if (!!olapicConfigLanguage) {\n olapicScript.dataset.lang = olapicConfigLanguage;\n } else if (!!olapicLanguage) {\n olapicScript.dataset.lang = olapicLanguage;\n }\n\n olapicContentElement.appendChild(olapicWidget);\n olapicContentElement.appendChild(olapicScript);\n\n if (olapicWrapper && olapicScript.src) {\n intersectionObserver.disconnect();\n intersectionObserver.unobserve(olapicWrapper);\n }\n }\n },\n {\n root: null,\n rootMargin: '300px',\n threshold: 0.1\n }\n );\n\n if (olapicWrapper) {\n intersectionObserver.observe(olapicWrapper);\n }\n };\n}\n","import { diContainer } from '~setup/diContainer';\nimport serviceNames from '~setup/ProductUgcService';\nimport { ConfigRepository } from '~repositories/ConfigRepository';\n\nexport class ProductUgcServiceStartedUseCase {\n private configRepository: ConfigRepository;\n\n // eslint-disable-next-line @typescript-eslint/no-parameter-properties\n constructor(private configs: string[]) {\n this.configRepository = diContainer.get(serviceNames.configRepository);\n this.configs = configs;\n }\n\n public execute = async () => {\n await this.configRepository.getConfigs(this.configs);\n };\n}\n","import { observable, action } from 'mobx';\nimport { IAppConfig } from '@estee/elc-universal-utils';\n\nexport class ConfigStore {\n @observable public config: IAppConfig = {};\n\n constructor(config: IAppConfig) {\n this.updateConfig(config);\n }\n\n @action\n public updateConfig(config: IAppConfig) {\n this.config = { ...config };\n }\n}\n","import { Container } from 'hypo-container';\nimport { getDecorators } from '@estee/elc-service';\nimport { IAppConfig } from '@estee/elc-universal-utils';\nimport { Config } from '~domain/entities/Config';\nimport { ConfigRepository } from '~repositories/ConfigRepository';\nimport { OlapicWidgetViewController } from '~controllers/OlapicWidgetViewController';\nimport { ProductUgcServiceStartedUseCase } from '~use-cases/ProductUgcServiceStartedUseCase';\nimport serviceNames, { ProductUgcService } from './ProductUgcService';\nimport { ConfigStore } from './ConfigStore';\n\nexport const diContainer = new Container();\n\nexport const setConfig = (configJSON: IAppConfig) => {\n diContainer.config = configJSON;\n};\n\nasync function serviceInitializer(config: IAppConfig) {\n setConfig(config);\n\n const useCase = new ProductUgcServiceStartedUseCase([\n 'olapicWidgetId',\n 'olapicWidgetSrc',\n 'olapicInstanceKey',\n 'olapicApiKey',\n 'olapicLanguage'\n ]);\n await useCase.execute();\n}\n\ndiContainer\n .register(\n serviceNames.configStore,\n diContainer.factory((c) => new ConfigStore(c.config))\n )\n .register(serviceNames.config, (c) => new Config())\n .register(serviceNames.productUgcService, () => new ProductUgcService(serviceInitializer))\n .register(serviceNames.configRepository, () => new ConfigRepository())\n .register(\n serviceNames.olapicWidgetViewController,\n diContainer.factory((c) => new OlapicWidgetViewController(c.get(serviceNames.config)))\n );\n\nconst { lazyInject } = getDecorators(diContainer);\n\nexport { lazyInject };\n","import { Container } from 'hypo-container';\nexport const getDecorators = (container: Container) => ({\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n lazyInject: (name?: string) => (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n target: any,\n key: string,\n descriptor?: PropertyDescriptor\n ) => {\n const resourceName = name || key;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const sbGetter = function (this: any) {\n const resource = container.get(resourceName);\n if (!resource) {\n throw new Error(`The requested ${resourceName} does not exists`);\n }\n\n return resource;\n };\n let propertyDescriptor = descriptor || {};\n if (!descriptor) {\n propertyDescriptor = {\n get: sbGetter\n };\n Object.defineProperty(target, key, propertyDescriptor);\n } else {\n propertyDescriptor.get = sbGetter;\n }\n }\n});\n"],"names":["Config","config","updateConfig","this","observable","action","ConfigRepository","constructor","getConfigs","configs","query","serviceQueries","diContainer","get","ViewController","isLoading","setSSRState","data","dataState","setId","id","btoa","unescape","encodeURIComponent","OlapicWidgetViewController","super","initialize","props","olapicConfigInstanceKey","olapicConfigApiKey","olapicConfigTags","olapicConfigLanguage","productId","showElementOnViewportIntersection","olapicWidgetId","olapicWidgetSrc","olapicInstanceKey","olapicApiKey","olapicLanguage","configData","olapicScript","document","createElement","olapicContentElement","querySelector","olapicWrapper","olapicWidget","intersectionObserver","IntersectionObserver","entry","intersectionRatio","isIntersecting","src","dataset","olapic","async","instance","appendChild","apikey","tags","lang","disconnect","unobserve","root","rootMargin","threshold","observe","computed","ProductUgcServiceStartedUseCase","execute","configRepository","ConfigStore","Container","setConfig","configJSON","useCase","register","factory","c","ProductUgcService","serviceInitializer","lazyInject","container","name","target","key","descriptor","resourceName","sbGetter","resource","Error","propertyDescriptor","Object","defineProperty"],"sourceRoot":""}