{"version":3,"file":"index.mjs","sources":["../src/connections/vehicle-data/enums.ts","../src/connections/vehicle-data/index.ts","../src/consts.ts","../src/index.ts"],"sourcesContent":["export enum CTAKeys {\n  Primary = 'primary',\n  Secondary = 'secondary',\n  Shop = 'online_shop',\n  Configurator = 'configurator',\n  ProductPage = 'product_page',\n  Enquiry = 'enquiry',\n  TestDrive = 'test_drive',\n}\n\nexport enum Actions {\n  UpdateCta = 'UPDATE_CTA',\n  UpdatePrice = 'UPDATE_PRICE',\n  UpdateConfiguration = 'UPDATE_CONFIGURATION',\n  UpdateVehicleData = 'UPDATE_VEHICLE_DATA',\n}\n\nexport enum ScenarioKeys {\n  Default = 'default',\n  Alternative = 'alternative',\n}\n","import { AnyAction, Dispatch } from 'redux';\nimport { initializeStore, SeamlessConnection } from '@seamless/store';\nimport { subscribe } from '@seamless/one-context';\nimport type { PageEnvironmentConnectionState } from '@seamless/one-context';\nimport { DEFAULT_TENANT } from '../../consts';\nimport {\n  CTAData,\n  CTAEntry,\n  ConnectionVehicleDataDispatchers,\n  ConnectionVehicleDataState,\n  ConnectionVehicleDataPrice,\n} from './types';\nimport { CTAKeys, Actions } from './enums';\n\nexport const connectionName = 'OWC_VEHICLE_DATA';\n\nconst initialState: ConnectionVehicleDataState = {\n  modelSeries: '',\n  engineConcept: '',\n  subBrands: [],\n};\n\nclass VehicleDataConnection extends SeamlessConnection<ConnectionVehicleDataDispatchers, ConnectionVehicleDataState> {\n  constructor() {\n    super(connectionName);\n  }\n\n  protected get initialState() {\n    return { ...initialState };\n  }\n\n  onBeforeRegister(dispatch: Dispatch): void {\n    subscribe<PageEnvironmentConnectionState>('PageConnection', {\n      tenant: DEFAULT_TENANT,\n      componentName: connectionName,\n      callback: (state: PageEnvironmentConnectionState) => {\n        const vehicleData = state.pageEnvironmentVariables?.vehicleData;\n        if (vehicleData) {\n          dispatch(this.getAction(Actions.UpdateVehicleData, vehicleData));\n        }\n      },\n    });\n  }\n\n  protected getReducer() {\n    return (state = initialState, action: AnyAction) => {\n      switch (action.type) {\n        case this.getActionType(Actions.UpdateCta):\n          return {\n            ...state,\n            cta: {\n              ...state.cta,\n              secondary: undefined,\n              ...action.payload,\n            },\n          };\n        case this.getActionType(Actions.UpdatePrice):\n          return {\n            ...state,\n            price: {\n              ...state.price,\n              ...action.payload,\n            },\n          };\n        case this.getActionType(Actions.UpdateConfiguration):\n          return {\n            ...state,\n            configurationId: action.payload,\n          };\n        case this.getActionType(Actions.UpdateVehicleData):\n          return {\n            ...state,\n            modelSeries: action.payload.modelSeries ?? state.modelSeries,\n            subBrands: action.payload.subBrands ?? state.subBrands,\n            engineConcept: (action.payload.engineConcept as string) ?? state.engineConcept,\n          };\n        default:\n          return state;\n      }\n    };\n  }\n\n  protected getPublicDispatchers() {\n    return {\n      setCta: (data: CTAData) => this.getAction(Actions.UpdateCta, data),\n      setPrice: (data: ConnectionVehicleDataPrice) => this.getAction(Actions.UpdatePrice, data),\n      setConfigurationId: (data: string | Record<string, string>) => this.getAction(Actions.UpdateConfiguration, data),\n    };\n  }\n}\n\nexport const connection = new VehicleDataConnection();\n\nexport const addConnectionVehicleData = async (): Promise<void> => {\n  const store = initializeStore();\n  return await store.addConnection(connection);\n};\n\nexport const getConnectionVehicleDataDispatchers = async (): Promise<ConnectionVehicleDataDispatchers> => {\n  const store = initializeStore();\n  return await store.getConnectionDispatchers<ConnectionVehicleDataDispatchers>(connectionName);\n};\n\nexport const isWithinVehicleContext = (): Promise<boolean> =>\n  new Promise<boolean>((resolve) => {\n    const store = initializeStore();\n    store.once(connectionName, (state) => resolve(Boolean(state.modelSeries)));\n  });\n\nexport { ConnectionVehicleDataState, CTAData, CTAKeys, ConnectionVehicleDataPrice, CTAEntry };\n","export const SERVICE_NAMESPACE = 'vehicle-data-store-connection';\nexport const DEFAULT_TENANT = 'globalelem';\n","import { addConnectionVehicleData } from './connections/vehicle-data';\nimport { initializeLogger } from '@seamless/logger';\nimport { SERVICE_NAMESPACE } from './consts';\n\nconst logger = initializeLogger(SERVICE_NAMESPACE);\n\n(async () => {\n  await addConnectionVehicleData();\n  logger.log('Initialised store connection');\n})();\n\nexport * from './connections/vehicle-data';\n"],"names":["CTAKeys","Actions","ScenarioKeys","connectionName","initialState","modelSeries","engineConcept","subBrands","connection","SeamlessConnection","constructor","super","onBeforeRegister","dispatch","subscribe","tenant","componentName","callback","state","vehicleData","pageEnvironmentVariables","this","getAction","UpdateVehicleData","getReducer","action","type","getActionType","UpdateCta","cta","secondary","undefined","payload","UpdatePrice","price","UpdateConfiguration","configurationId","getPublicDispatchers","setCta","data","setPrice","setConfigurationId","addConnectionVehicleData","async","store","initializeStore","addConnection","getConnectionVehicleDataDispatchers","getConnectionDispatchers","isWithinVehicleContext","Promise","resolve","once","Boolean","logger","initializeLogger","log"],"mappings":";;;;;oLAAYA,EAUAC,EAOAC,GAjBZ,SAAYF,GACVA,EAAA,QAAA,UACAA,EAAA,UAAA,YACAA,EAAA,KAAA,cACAA,EAAA,aAAA,eACAA,EAAA,YAAA,eACAA,EAAA,QAAA,UACAA,EAAA,UAAA,YACD,CARD,CAAYA,IAAAA,EAQX,CAAA,IAED,SAAYC,GACVA,EAAA,UAAA,aACAA,EAAA,YAAA,eACAA,EAAA,oBAAA,uBACAA,EAAA,kBAAA,qBACD,CALD,CAAYA,IAAAA,EAKX,CAAA,IAED,SAAYC,GACVA,EAAA,QAAA,UACAA,EAAA,YAAA,aACD,CAHD,CAAYA,IAAAA,EAGX,CAAA,ICNM,MAAMC,EAAiB,mBAExBC,EAA2C,CAC/CC,YAAa,GACbC,cAAe,GACfC,UAAW,IAwEA,MAAAC,EAAa,IArE1B,cAAoCC,EAClC,WAAAC,GACEC,MAAMR,EACP,CAED,gBAAcC,GACZ,MAAO,IAAKA,EACb,CAED,gBAAAQ,CAAiBC,GACfC,EAA0C,iBAAkB,CAC1DC,OChCwB,aDiCxBC,cAAeb,EACfc,SAAWC,IACT,MAAMC,EAAcD,EAAME,0BAA0BD,YAChDA,GACFN,EAASQ,KAAKC,UAAUrB,EAAQsB,kBAAmBJ,MAI1D,CAES,UAAAK,GACR,MAAO,CAACN,EAAQd,EAAcqB,KAC5B,OAAQA,EAAOC,MACb,KAAKL,KAAKM,cAAc1B,EAAQ2B,WAC9B,MAAO,IACFV,EACHW,IAAK,IACAX,EAAMW,IACTC,eAAWC,KACRN,EAAOO,UAGhB,KAAKX,KAAKM,cAAc1B,EAAQgC,aAC9B,MAAO,IACFf,EACHgB,MAAO,IACFhB,EAAMgB,SACNT,EAAOO,UAGhB,KAAKX,KAAKM,cAAc1B,EAAQkC,qBAC9B,MAAO,IACFjB,EACHkB,gBAAiBX,EAAOO,SAE5B,KAAKX,KAAKM,cAAc1B,EAAQsB,mBAC9B,MAAO,IACFL,EACHb,YAAaoB,EAAOO,QAAQ3B,aAAea,EAAMb,YACjDE,UAAWkB,EAAOO,QAAQzB,WAAaW,EAAMX,UAC7CD,cAAgBmB,EAAOO,QAAQ1B,eAA4BY,EAAMZ,eAErE,QACE,OAAOY,GAGd,CAES,oBAAAmB,GACR,MAAO,CACLC,OAASC,GAAkBlB,KAAKC,UAAUrB,EAAQ2B,UAAWW,GAC7DC,SAAWD,GAAqClB,KAAKC,UAAUrB,EAAQgC,YAAaM,GACpFE,mBAAqBF,GAA0ClB,KAAKC,UAAUrB,EAAQkC,oBAAqBI,GAE9G,GAKUG,EAA2BC,UACtC,MAAMC,EAAQC,IACd,aAAaD,EAAME,cAActC,IAGtBuC,EAAsCJ,UACjD,MAAMC,EAAQC,IACd,aAAaD,EAAMI,yBAA2D7C,IAGnE8C,EAAyB,IACpC,IAAIC,QAAkBC,IACNN,IACRO,KAAKjD,EAAiBe,GAAUiC,EAAQE,QAAQnC,EAAMb,iBEtG1DiD,EAASC,EDJkB,iCCMjC,iBACQb,IACNY,EAAOE,IAAI,+BACZ,EAHD"}