{"version":3,"file":"js/app.4d4e828b.js","mappings":"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EAAsE,CACrE,KACA,KAED,yEAA0E,CACzE,MACA,KACA,MAED,+EAAgF,CAC/E,MACA,KACA,MAED,+DAAgE,CAC/D,MACA,MAED,8DAA+D,CAC9D,MACA,MAED,gCAAiC,CAChC,MACA,MAED,kDAAmD,CAClD,MACA,MAED,qDAAsD,CACrD,MACA,MAED,2DAA4D,CAC3D,KACA,MAED,sDAAuD,CACtD,MACA,MAED,qDAAsD,CACrD,MACA,MAED,qDAAsD,CACrD,MACA,MAED,gDAAiD,CAChD,MACA,MAED,2EAA4E,CAC3E,MACA,KACA,MAED,2FAA4F,CAC3F,MACA,MAED,gGAAiG,CAChG,MACA,MAED,sGAAuG,CACtG,MACA,MAED,oGAAqG,CACpG,MACA,MAED,yGAA0G,CACzG,MACA,KACA,MAED,8FAA+F,CAC9F,MACA,KACA,MAED,4FAA6F,CAC5F,MACA,MAED,+FAAgG,CAC/F,MACA,MAED,yFAA0F,CACzF,MACA,MAED,4FAA6F,CAC5F,MACA,KACA,MAED,iGAAkG,CACjG,MACA,KACA,MAED,wFAAyF,CACxF,MACA,KACA,MAED,6FAA8F,CAC7F,MACA,KACA,MAED,kDAAmD,CAClD,MACA,MAED,kFAAmF,CAClF,MACA,MAED,mFAAoF,CACnF,MACA,MAED,sFAAuF,CACtF,MACA,MAED,kFAAmF,CAClF,MACA,MAED,wEAAyE,CACxE,MACA,KAED,qEAAsE,CACrE,MACA,MAED,wEAAyE,CACxE,MACA,MAED,mEAAoE,CACnE,MACA,MAED,kEAAmE,CAClE,MACA,KAED,wEAAyE,CACxE,MACA,MAED,sEAAuE,CACtE,KACA,MAED,uEAAwE,CACvE,MACA,MAED,kEAAmE,CAClE,MACA,MAED,gCAAiC,CAChC,MACA,MAED,qDAAsD,CACrD,MACA,MAED,sDAAuD,CACtD,MACA,MAED,qDAAsD,CACrD,MACA,MAED,kDAAmD,CAClD,MACA,MAED,gDAAiD,CAChD,MACA,MAED,gCAAiC,CAChC,KACA,MAED,qDAAsD,CACrD,KACA,KACA,MAED,uDAAwD,CACvD,MACA,KACA,MAED,sEAAuE,CACtE,MACA,MAED,oEAAqE,CACpE,MACA,MAED,sDAAuD,CACtD,MACA,MAED,8CAA+C,CAC9C,MACA,MAED,0DAA2D,CAC1D,MACA,MAED,6CAA8C,CAC7C,MACA,MAED,qDAAsD,CACrD,MACA,MAED,kDAAmD,CAClD,MACA,MAED,kEAAmE,CAClE,MACA,MAED,mEAAoE,CACnE,MACA,MAED,oCAAqC,CACpC,MACA,MAED,uDAAwD,CACvD,MACA,MAED,sDAAuD,CACtD,MACA,MAED,sDAAuD,CACtD,MACA,MAED,kDAAmD,CAClD,MACA,MAED,yDAA0D,CACzD,MACA,MAED,+EAAgF,CAC/E,MACA,MAED,4EAA6E,CAC5E,MACA,MAED,8EAA+E,CAC9E,MACA,KAED,uEAAwE,CACvE,KACA,MAED,+EAAgF,CAC/E,KACA,MAED,wEAAyE,CACxE,MACA,MAED,2FAA4F,CAC3F,MACA,MAED,gGAAiG,CAChG,MACA,MAED,yFAA0F,CACzF,MACA,MAED,iGAAkG,CACjG,MACA,MAED,sFAAuF,CACtF,MACA,KAED,qFAAsF,CACrF,KACA,MAED,+EAAgF,CAC/E,MACA,MAED,0GAA2G,CAC1G,MACA,MAED,kGAAmG,CAClG,MACA,MAED,4FAA6F,CAC5F,MACA,MAED,4DAA6D,CAC5D,MACA,MAED,+EAAgF,CAC/E,MACA,MAED,oFAAqF,CACpF,KACA,MAED,yEAA0E,CACzE,MACA,MAED,yEAA0E,CACzE,MACA,KAED,0CAA2C,CAC1C,MACA,KAED,yEAA0E,CACzE,KACA,MAED,6DAA8D,CAC7D,MACA,MAED,4DAA6D,CAC5D,KACA,MAED,4DAA6D,CAC5D,MACA,OAGF,SAAS8pH,EAAoBC,GAC5B,IAAIC,EAAoBltC,EAAE98E,EAAK+pH,GAC9B,OAAO5nG,QAAQC,UAAUQ,MAAK,WAC7B,IAAIgP,EAAI,IAAI4vC,MAAM,uBAAyBuoD,EAAM,KAEjD,MADAn4F,EAAE7M,KAAO,mBACH6M,CACP,IAGD,IAAIq4F,EAAMjqH,EAAI+pH,GAAMxnH,EAAK0nH,EAAI,GAC7B,OAAO9nG,QAAQ8+E,IAAIgpB,EAAIn4B,MAAM,GAAG9xF,IAAIgqH,EAAoBp4F,IAAIhP,MAAK,WAChE,OAAOonG,EAAoBznH,EAC5B,GACD,CACAunH,EAAoBh3D,KAAO,WAAa,OAAOjoC,OAAOioC,KAAK9yD,EAAM,EACjE8pH,EAAoBvnH,GAAK,MACzBxH,EAAOC,QAAU8uH,C,wBC9bjB,IAAI9pH,EAAM,CACT,wEAAyE,CACxE,MACA,MAED,qEAAsE,CACrE,MACA,MAED,0EAA2E,CAC1E,MACA,MAED,wEAAyE,CACxE,MACA,KACA,MAED,kEAAmE,CAClE,MACA,MAED,oEAAqE,CACpE,MACA,MAED,kEAAmE,CAClE,MACA,MAED,qEAAsE,CACrE,KACA,KAED,yEAA0E,CACzE,MACA,KACA,MAED,+EAAgF,CAC/E,MACA,KACA,MAED,+DAAgE,CAC/D,MACA,MAED,8DAA+D,CAC9D,MACA,MAED,kDAAmD,CAClD,MACA,MAED,qDAAsD,CACrD,MACA,MAED,2DAA4D,CAC3D,KACA,MAED,sDAAuD,CACtD,MACA,MAED,qDAAsD,CACrD,MACA,MAED,qDAAsD,CACrD,MACA,MAED,gDAAiD,CAChD,MACA,MAED,oGAAqG,CACpG,MACA,MAED,yGAA0G,CACzG,MACA,KACA,MAED,8FAA+F,CAC9F,MACA,KACA,MAED,4FAA6F,CAC5F,MACA,MAED,+FAAgG,CAC/F,MACA,MAED,yFAA0F,CACzF,MACA,MAED,4FAA6F,CAC5F,MACA,KACA,MAED,iGAAkG,CACjG,MACA,KACA,MAED,wFAAyF,CACxF,MACA,KACA,MAED,6FAA8F,CAC7F,MACA,KACA,MAED,wEAAyE,CACxE,MACA,KAED,qEAAsE,CACrE,MACA,MAED,wEAAyE,CACxE,MACA,MAED,mEAAoE,CACnE,MACA,MAED,kEAAmE,CAClE,MACA,KAED,wEAAyE,CACxE,MACA,MAED,sEAAuE,CACtE,KACA,MAED,uEAAwE,CACvE,MACA,MAED,kEAAmE,CAClE,MACA,MAED,qDAAsD,CACrD,MACA,MAED,sDAAuD,CACtD,MACA,MAED,qDAAsD,CACrD,MACA,MAED,kDAAmD,CAClD,MACA,MAED,gDAAiD,CAChD,MACA,MAED,uDAAwD,CACvD,MACA,KACA,MAED,sEAAuE,CACtE,MACA,MAED,oEAAqE,CACpE,MACA,MAED,sDAAuD,CACtD,MACA,MAED,8CAA+C,CAC9C,MACA,MAED,0DAA2D,CAC1D,MACA,MAED,6CAA8C,CAC7C,MACA,MAED,qDAAsD,CACrD,MACA,MAED,kDAAmD,CAClD,MACA,MAED,kEAAmE,CAClE,MACA,MAED,mEAAoE,CACnE,MACA,MAED,uDAAwD,CACvD,MACA,MAED,sDAAuD,CACtD,MACA,MAED,sDAAuD,CACtD,MACA,MAED,kDAAmD,CAClD,MACA,MAED,4EAA6E,CAC5E,MACA,MAED,8EAA+E,CAC9E,MACA,KAED,uEAAwE,CACvE,KACA,MAED,+EAAgF,CAC/E,KACA,MAED,2FAA4F,CAC3F,MACA,MAED,gGAAiG,CAChG,MACA,MAED,yFAA0F,CACzF,MACA,MAED,iGAAkG,CACjG,MACA,MAED,sFAAuF,CACtF,MACA,KAED,qFAAsF,CACrF,KACA,MAED,0GAA2G,CAC1G,MACA,MAED,kGAAmG,CAClG,MACA,MAED,4FAA6F,CAC5F,MACA,MAED,+EAAgF,CAC/E,MACA,MAED,oFAAqF,CACpF,KACA,MAED,yEAA0E,CACzE,MACA,MAED,yEAA0E,CACzE,MACA,KAED,6DAA8D,CAC7D,MACA,MAED,4DAA6D,CAC5D,KACA,MAED,4DAA6D,CAC5D,MACA,OAGF,SAAS8pH,EAAoBC,GAC5B,IAAIC,EAAoBltC,EAAE98E,EAAK+pH,GAC9B,OAAO5nG,QAAQC,UAAUQ,MAAK,WAC7B,IAAIgP,EAAI,IAAI4vC,MAAM,uBAAyBuoD,EAAM,KAEjD,MADAn4F,EAAE7M,KAAO,mBACH6M,CACP,IAGD,IAAIq4F,EAAMjqH,EAAI+pH,GAAMxnH,EAAK0nH,EAAI,GAC7B,OAAO9nG,QAAQ8+E,IAAIgpB,EAAIn4B,MAAM,GAAG9xF,IAAIgqH,EAAoBp4F,IAAIhP,MAAK,WAChE,OAAOonG,EAAoBznH,EAC5B,GACD,CACAunH,EAAoBh3D,KAAO,WAAa,OAAOjoC,OAAOioC,KAAK9yD,EAAM,EACjE8pH,EAAoBvnH,GAAK,MACzBxH,EAAOC,QAAU8uH,C,wBCpVjB,IAAI9pH,EAAM,CACT,qEAAsE,CACrE,MACA,MAED,wEAAyE,CACxE,MACA,MAED,qEAAsE,CACrE,MACA,MAED,iDAAkD,CACjD,MACA,MAED,wEAAyE,CACxE,MACA,MAED,iFAAkF,CACjF,MACA,MAED,4EAA6E,CAC5E,MACA,MAED,0EAA2E,CAC1E,MACA,MAED,wEAAyE,CACxE,MACA,KACA,MAED,kEAAmE,CAClE,MACA,MAED,oEAAqE,CACpE,MACA,MAED,kEAAmE,CAClE,MACA,MAED,qEAAsE,CACrE,KACA,KAED,yEAA0E,CACzE,MACA,KACA,MAED,+EAAgF,CAC/E,MACA,KACA,MAED,+DAAgE,CAC/D,MACA,MAED,8DAA+D,CAC9D,MACA,MAED,gCAAiC,CAChC,MACA,MAED,kDAAmD,CAClD,MACA,MAED,qDAAsD,CACrD,MACA,MAED,2DAA4D,CAC3D,KACA,MAED,sDAAuD,CACtD,MACA,MAED,qDAAsD,CACrD,MACA,MAED,qDAAsD,CACrD,MACA,MAED,gDAAiD,CAChD,MACA,MAED,2EAA4E,CAC3E,MACA,KACA,MAED,2FAA4F,CAC3F,MACA,MAED,gGAAiG,CAChG,MACA,MAED,sGAAuG,CACtG,MACA,MAED,oGAAqG,CACpG,MACA,MAED,yGAA0G,CACzG,MACA,KACA,MAED,8FAA+F,CAC9F,MACA,KACA,MAED,4FAA6F,CAC5F,MACA,MAED,+FAAgG,CAC/F,MACA,MAED,yFAA0F,CACzF,MACA,MAED,4FAA6F,CAC5F,MACA,KACA,MAED,iGAAkG,CACjG,MACA,KACA,MAED,wFAAyF,CACxF,MACA,KACA,MAED,6FAA8F,CAC7F,MACA,KACA,MAED,kDAAmD,CAClD,MACA,MAED,kFAAmF,CAClF,MACA,MAED,mFAAoF,CACnF,MACA,MAED,sFAAuF,CACtF,MACA,MAED,kFAAmF,CAClF,MACA,MAED,wEAAyE,CACxE,MACA,KAED,qEAAsE,CACrE,MACA,MAED,wEAAyE,CACxE,MACA,MAED,mEAAoE,CACnE,MACA,MAED,kEAAmE,CAClE,MACA,KAED,wEAAyE,CACxE,MACA,MAED,sEAAuE,CACtE,KACA,MAED,uEAAwE,CACvE,MACA,MAED,kEAAmE,CAClE,MACA,MAED,gCAAiC,CAChC,MACA,MAED,qDAAsD,CACrD,MACA,MAED,sDAAuD,CACtD,MACA,MAED,qDAAsD,CACrD,MACA,MAED,kDAAmD,CAClD,MACA,MAED,gDAAiD,CAChD,MACA,MAED,gCAAiC,CAChC,KACA,MAED,qDAAsD,CACrD,KACA,KACA,MAED,uDAAwD,CACvD,MACA,KACA,MAED,sEAAuE,CACtE,MACA,MAED,oEAAqE,CACpE,MACA,MAED,sDAAuD,CACtD,MACA,MAED,8CAA+C,CAC9C,MACA,MAED,0DAA2D,CAC1D,MACA,MAED,6CAA8C,CAC7C,MACA,MAED,qDAAsD,CACrD,MACA,MAED,kDAAmD,CAClD,MACA,MAED,kEAAmE,CAClE,MACA,MAED,mEAAoE,CACnE,MACA,MAED,oCAAqC,CACpC,MACA,MAED,uDAAwD,CACvD,MACA,MAED,sDAAuD,CACtD,MACA,MAED,sDAAuD,CACtD,MACA,MAED,kDAAmD,CAClD,MACA,MAED,yDAA0D,CACzD,MACA,MAED,+EAAgF,CAC/E,MACA,MAED,4EAA6E,CAC5E,MACA,MAED,8EAA+E,CAC9E,MACA,KAED,uEAAwE,CACvE,KACA,MAED,+EAAgF,CAC/E,KACA,MAED,wEAAyE,CACxE,MACA,MAED,2FAA4F,CAC3F,MACA,MAED,gGAAiG,CAChG,MACA,MAED,yFAA0F,CACzF,MACA,MAED,iGAAkG,CACjG,MACA,MAED,sFAAuF,CACtF,MACA,KAED,qFAAsF,CACrF,KACA,MAED,+EAAgF,CAC/E,MACA,MAED,0GAA2G,CAC1G,MACA,MAED,kGAAmG,CAClG,MACA,MAED,4FAA6F,CAC5F,MACA,MAED,4DAA6D,CAC5D,MACA,MAED,+EAAgF,CAC/E,MACA,M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","sources":["webpack://racqforms20/./src/components/TableControlGroup/tablesource.query.graphql","webpack://racqforms20/./src/components/TableSet/TableSet.query.graphql","webpack://racqforms20/./src/store/common-config-settings/configsettings.query.graphql","webpack://racqforms20/./src/store/jeopardy/jeopardy-code.query.graphql","webpack://racqforms20/./src/store/jeopardy/jeopardy-panel.query.graphql","webpack://racqforms20/./src/composables/useFormInputData.ts","webpack://racqforms20/./src/constants/formats.ts","webpack://racqforms20/./src/constants/forms-api.const.ts","webpack://racqforms20/./src/constants/general-words.const.ts","webpack://racqforms20/./src/constants/home-quote.const.ts","webpack://racqforms20/./src/constants/jeopardy-codes.const.ts","webpack://racqforms20/./src/constants/ordinal-numbers.const.ts","webpack://racqforms20/./src/constants/quote-types.const.ts","webpack://racqforms20/./src/constants/svg-images.const.ts","webpack://racqforms20/./src/enums/alert-types-enum.ts","webpack://racqforms20/./src/enums/decision-intelligence.enum.ts","webpack://racqforms20/./src/enums/form-events.enum.ts","webpack://racqforms20/./src/enums/form-input-types.enum.ts","webpack://racqforms20/./src/enums/payment-frequency.ts","webpack://racqforms20/./src/enums/payment-types.enum.ts","webpack://racqforms20/./src/enums/quote-change-state.enum.ts","webpack://racqforms20/./src/enums/quote-vehicle-use-types.enum.ts","webpack://racqforms20/./src/enums/tag-enums.ts","webpack://racqforms20/./src/forms/insurance/quote/home-and-contents-purchase/mappings/loyalty-review-mapping.ts","webpack://racqforms20/./src/interfaces/entities/jor-create-rsa-job.interface.ts","webpack://racqforms20/./src/forms/join-on-road/mappings/join-on-road-mappings.ts","webpack://racqforms20/./src/forms/make-a-payment/mappings/make-a-payment-mappings.ts","webpack://racqforms20/./src/interfaces/decision-intelligence/decision-intelligence-request.ts","webpack://racqforms20/./src/interfaces/entities/roadside-assistance.interface.ts","webpack://racqforms20/./src/interfaces/forms/information-box.interface.ts","webpack://racqforms20/./src/interfaces/entities/experian-results.interface.ts","webpack://racqforms20/./src/interfaces/insurance-quote/submit-quote/submit-quote.ts","webpack://racqforms20/./src/interfaces/insurance-quote/quote.interface.ts","webpack://racqforms20/./src/lib/GraphQLClientFactory.ts","webpack://racqforms20/./src/lib/dictionary-service-factory.ts","webpack://racqforms20/./src/i18n.ts","webpack://racqforms20/./src/AppRoot.vue","webpack://racqforms20/./src/ContextView.vue","webpack://racqforms20/./src/ContextView.vue?9dad","webpack://racqforms20/./src/AppRoot.vue?45a2","webpack://racqforms20/./src/RouteHandler.vue","webpack://racqforms20/./src/lib/layout-service-factory.ts","webpack://racqforms20/./src/components/Login/Login.vue","webpack://racqforms20/./src/components/Login/Login.vue?1fd6","webpack://racqforms20/./src/components/MetaData/MetaData.vue?239e","webpack://racqforms20/./src/components/MetaData/MetaData.vue","webpack://racqforms20/./src/components/MetaData/MetaData.vue?c91e","webpack://racqforms20/./src/Layout.vue?4260","webpack://racqforms20/./src/Layout.vue","webpack://racqforms20/./src/Layout.vue?1f2b","webpack://racqforms20/./src/RouteLoading.vue","webpack://racqforms20/./src/RouteLoading.vue?791b","webpack://racqforms20/./src/RouteHandler.vue?07f7","webpack://racqforms20/./src/router.ts","webpack://racqforms20/./src/lib/SitecoreJssStorePlugin.ts","webpack://racqforms20/./src/App.vue?da79","webpack://racqforms20/./src/App.vue","webpack://racqforms20/./src/App.vue?7ccd","webpack://racqforms20/./src/components/AutoRenewalMessage/AutoRenewalMessage.vue?c967","webpack://racqforms20/./src/components/AutoRenewalMessage/AutoRenewalMessage.vue","webpack://racqforms20/./src/utils/feature-toggle.ts","webpack://racqforms20/./src/components/DecisionIntelligenceDisclaimer/DecisionIntelligenceDisclaimer.vue?99f9","webpack://racqforms20/./src/components/DecisionIntelligenceDisclaimer/DecisionIntelligenceDisclaimer.vue","webpack://racqforms20/./src/components/DecisionIntelligenceDisclaimer/DecisionIntelligenceDisclaimer.vue?ee22","webpack://racqforms20/./src/components/FindCar/FindCarByRego.vue?729c","webpack://racqforms20/./src/components/FindCar/FindCarByRego.vue","webpack://racqforms20/./src/components/FindCar/FindCarByRego.vue?0747","webpack://racqforms20/./src/composables/useVehicleData.ts","webpack://racqforms20/./src/components/FindCar/FindYourCarList.vue?e8e3","webpack://racqforms20/./src/components/FindCar/FindYourCarList.vue","webpack://racqforms20/./src/components/FindCar/FindYourCarList.vue?9814","webpack://racqforms20/./src/components/FindCar/FindYourCar.vue?19ab","webpack://racqforms20/./src/components/FindCar/FindYourCar.vue","webpack://racqforms20/./src/components/FindCar/FindYourCar.vue?2b30","webpack://racqforms20/./src/components/FindCar/FindCar.vue?13d8","webpack://racqforms20/./src/components/FindCar/FindCar.vue","webpack://racqforms20/./src/components/FindCar/FindCar.vue?8286","webpack://racqforms20/./src/components/FormBuilder/FormBuilder.vue?b3b7","webpack://racqforms20/./src/components/FormBuilder/FormBuilder.vue","webpack://racqforms20/./src/components/FormBuilder/FormBuilder.vue?ca44","webpack://racqforms20/./src/components/LinkList/LinkList.vue?c76c","webpack://racqforms20/./src/components/LinkList/LinkList.vue","webpack://racqforms20/./src/components/livechat/data/i18n.ts","webpack://racqforms20/./src/components/livechat/data/config.prod.ts","webpack://racqforms20/./src/components/livechat/LiveChat.vue?c4b6","webpack://racqforms20/./src/components/livechat/LiveChat.vue","webpack://racqforms20/./src/components/livechat/LiveChat.vue?881a","webpack://racqforms20/./src/components/Toggle/Toggle.vue?313d","webpack://racqforms20/./src/components/Toggle/Toggle.vue","webpack://racqforms20/./src/components/Toggle/Toggle.vue?0c3f","webpack://racqforms20/./src/layouts/Footer.vue?800d","webpack://racqforms20/./src/layouts/Footer.vue","webpack://racqforms20/./src/layouts/Header.vue?96f3","webpack://racqforms20/./src/layouts/Header.vue","webpack://racqforms20/./src/layouts/Header.vue?6417","webpack://racqforms20/./src/temp/componentFactory.js","webpack://racqforms20/./src/createApp.ts","webpack://racqforms20/./src/tailwind.config.ts","webpack://racqforms20/./src/plugins/spinner/formkitSpinnerPlugin.ts","webpack://racqforms20/./src/plugins/tooltip/formkitTooltipPlugin.ts","webpack://racqforms20/./src/plugins/formkitScrollToErrorsPlugin.ts","webpack://racqforms20/./src/plugins/formkitDefaultPropsPlugin.ts","webpack://racqforms20/./src/plugins/formkitHelpPlugin.ts","webpack://racqforms20/./src/plugins/formkitLinkButton/formkitLinkButton.ts","webpack://racqforms20/./src/inputs/nativeRadio.ts","webpack://racqforms20/./src/plugins/findCar/findCarPlugin.ts","webpack://racqforms20/./src/plugins/pre-post-contents/preContentPlugin.ts","webpack://racqforms20/./src/assets/icons/racq-formkit-icons.ts","webpack://racqforms20/./src/formkit.config.ts","webpack://racqforms20/./src/main.ts","webpack://racqforms20/./src/interfaces/lead/lead-model.ts","webpack://racqforms20/./src/mappers/decision-intelligence-mapper.ts","webpack://racqforms20/./src/mappers/policyholder.mapper.ts","webpack://racqforms20/./src/plugins/tooltip/renderTooltip.ts","webpack://racqforms20/./src/services/common/request.services.ts","webpack://racqforms20/./src/services/store/account.services.ts","webpack://racqforms20/./src/services/store/auto-glass-form.service.ts","webpack://racqforms20/./src/services/store/cancel-insurance-form.service.ts","webpack://racqforms20/./src/services/store/livechat.services.ts","webpack://racqforms20/./src/services/store/address-lookup.service.ts","webpack://racqforms20/./src/services/store/payment.service.ts","webpack://racqforms20/./src/services/store/jor-google-map.service.ts","webpack://racqforms20/./src/services/store/roadside-assistance.service.ts","webpack://racqforms20/./src/services/store/vehicle.service.ts","webpack://racqforms20/./src/store/account/account.state.ts","webpack://racqforms20/./src/store/analytics/analytics.state.ts","webpack://racqforms20/./src/store/common-config-settings/config-settings.state.ts","webpack://racqforms20/./src/services/store/decision-intelligence-service.ts","webpack://racqforms20/./src/constants/feature-toggles.ts","webpack://racqforms20/./src/store/decision-intelligence/decision-intelligence.state.ts","webpack://racqforms20/./src/services/store/feature-toggles.service.ts","webpack://racqforms20/./src/store/feature-toggles/featureTogglesStore.ts","webpack://racqforms20/./src/store/form-step-disclaimer/form-step-disclaimer-store.state.ts","webpack://racqforms20/./src/store/insurance-product/insurance-product.state.ts","webpack://racqforms20/./src/constants/errors.ts","webpack://racqforms20/./src/store/form/formStore.ts","webpack://racqforms20/./src/store/cancel-insurance-form/cancel-insurance-form.state.ts","webpack://racqforms20/./src/store/livechat/livechat.state.ts","webpack://racqforms20/./src/store/jeopardy/jeopardy.state.ts","webpack://racqforms20/./src/store/find-car/find-car.state.ts","webpack://racqforms20/./src/store/autoGlass/autoGlassStore.ts","webpack://racqforms20/./src/services/store/cancel-roadside-assistance-form.service.ts","webpack://racqforms20/./src/store/cancelRoadsideAsssistanceForm/cancelRoadsideAssistanceFormStore.ts","webpack://racqforms20/./src/enums/iq-error-reason-types.enum.ts","webpack://racqforms20/./src/services/store/insurance-quote.service.ts","webpack://racqforms20/./src/store/insurance-quote/home-and-contents.state.ts","webpack://racqforms20/./src/store/insurance-quote/car-purchase.state.ts","webpack://racqforms20/./src/services/store/reference-data.services.ts","webpack://racqforms20/./src/store/reference-data/reference-data-iq-motor.state.ts","webpack://racqforms20/./src/services/store/join-with-lifestyle.service.ts","webpack://racqforms20/./src/store/join-with-lifestyle/join-with-lifestyle.state.ts","webpack://racqforms20/./src/store/reference-data/reference-data.state.ts","webpack://racqforms20/./src/services/store/join-on-road.service.ts","webpack://racqforms20/./src/interfaces/entities/jor-create-quote.interface.ts","webpack://racqforms20/./src/store/join-on-road/join-on-road.state.ts","webpack://racqforms20/./src/store/reference-data/reference-data-iq-home.state.ts","webpack://racqforms20/./src/store/google-map/google-map.state.ts","webpack://racqforms20/./src/store/payment/payment.state.ts","webpack://racqforms20/./src/services/store/change-payment-details.service.ts","webpack://racqforms20/./src/services/store/quote-session.service.ts","webpack://racqforms20/./src/enums/jeopardy-level.enum.ts","webpack://racqforms20/./src/store/change-payment-details/change-payment-details.state.ts","webpack://racqforms20/./src/services/store/change-vehicle-location.service.ts","webpack://racqforms20/./src/store/change-vehicle-location/change-vehicle-location.state.ts","webpack://racqforms20/./src/services/store/car.service.ts","webpack://racqforms20/./src/store/car/car.state.ts","webpack://racqforms20/./src/store/insurance-quote/original-quote.state.ts","webpack://racqforms20/./src/store/roadside-assistance/roadside-assistance.state.ts","webpack://racqforms20/./src/store/addressLookupOptions/addressLookupOptionsStore.ts","webpack://racqforms20/./src/store/addressLookupStore/addressLookupStore.ts","webpack://racqforms20/./src/services/store/switch-to-monthly.service.ts","webpack://racqforms20/./src/utils/insurance/policy-helper.ts","webpack://racqforms20/./src/store/switch-to-monthly/switch-to-monthly.state.ts","webpack://racqforms20/./src/store/pet/pet.state.ts","webpack://racqforms20/./src/services/store/make-a-payment.service.ts","webpack://racqforms20/./src/store/make-a-payment/make-a-payment.state.ts","webpack://racqforms20/./src/utils/bookmark.replace.ts","webpack://racqforms20/./src/utils/check-helpers.ts","webpack://racqforms20/./src/utils/common-helper.ts","webpack://racqforms20/./src/utils/convert.ts","webpack://racqforms20/./src/utils/data-transforms.ts","webpack://racqforms20/./src/utils/display-rules/loyalty-rules.ts","webpack://racqforms20/./src/utils/display-rules/ss-change-payment-details-rules.ts","webpack://racqforms20/./src/utils/dom-helpers.ts","webpack://racqforms20/./src/utils/editable-steps/quote-content-builder.ts","webpack://racqforms20/./src/utils/form-analytics-builder.ts","webpack://racqforms20/./src/utils/formkit-helpers.ts","webpack://racqforms20/./src/utils/iq-discounts.ts","webpack://racqforms20/./src/utils/regex-helpers.ts","webpack://racqforms20/./src/utils/text-transforms.ts","webpack://racqforms20/./src/temp/config.js","webpack://racqforms20/./src/NotFound.vue","webpack://racqforms20/./src/NotFound.vue?608d","webpack://racqforms20/./src/components/AccountLoginInfoBox/AccountLoginInfoBox.vue?d13f","webpack://racqforms20/./src/components/AccountLoginInfoBox/AccountLoginInfoBox.vue","webpack://racqforms20/./src/components/AccountLoginInfoBox/AccountLoginInfoBox.vue?1d41","webpack://racqforms20/./src/enums/account-preferences.enum.ts","webpack://racqforms20/./src/components/AccountPreferences/AccountPreferences.vue?4433","webpack://racqforms20/./src/components/AccountPreferences/AccountPreferences.vue","webpack://racqforms20/./src/components/AccountPreferences/AccountPreferences.vue?240a","webpack://racqforms20/./src/components/AddRemoveForm/AddRemoveForm.vue?ee87","webpack://racqforms20/./src/components/AddRemoveForm/AddRemoveForm.vue","webpack://racqforms20/./src/components/AdditionalPolicyHolders/AdditionalPolicyHolders.vue?a08f","webpack://racqforms20/./src/components/AdditionalPolicyHolders/AdditionalPolicyHolders.vue","webpack://racqforms20/./src/components/AdditionalPolicyHolders/PolicyHolder.vue?ca42","webpack://racqforms20/./src/components/AdditionalPolicyHolders/PolicyHolder.vue","webpack://racqforms20/./src/components/AdditionalPolicyHolders/PolicyHolder.vue?7414","webpack://racqforms20/./src/components/AddressLookupOptions/AddressLookup.vue?a284","webpack://racqforms20/./src/components/AddressLookupOptions/AddressLookup.vue","webpack://racqforms20/./src/components/AddressLookupOptions/AddressLookup.vue?47c2","webpack://racqforms20/./src/components/AddressLookupOptions/AddressLookupOptions.vue?4564","webpack://racqforms20/./src/components/AddressLookupOptions/AddressLookupOptions.vue","webpack://racqforms20/./src/components/AddressLookupOptions/AddressLookupOptions.vue?3370","webpack://racqforms20/./src/components/AddressLookupOptions/ManualAddressForm.vue?2286","webpack://racqforms20/./src/components/AddressLookupOptions/ManualAddressForm.vue","webpack://racqforms20/./src/components/AddressLookupOptions/ManualAddressForm.vue?7f23","webpack://racqforms20/./src/components/AddressLookupOptions/OverseasOption.vue?a37a","webpack://racqforms20/./src/components/AddressLookupOptions/OverseasOption.vue","webpack://racqforms20/./src/components/AddressLookupOptions/OverseasOption.vue?67ed","webpack://racqforms20/./src/components/Alert/Alert.vue?27d7","webpack://racqforms20/./src/components/Alert/Alert.vue","webpack://racqforms20/./src/components/Alert/Alert.vue?b5a9","webpack://racqforms20/./src/components/BaseFormContainer/BaseFormContainer.vue?4e34","webpack://racqforms20/./src/components/BaseFormContainer/BaseFormContainer.vue","webpack://racqforms20/./src/components/BaseFormContainer/BaseFormContainer.vue?7be1","webpack://racqforms20/./src/components/BaseIcon/BaseIcon.vue?1b7e","webpack://racqforms20/./src/components/BaseIcon/BaseIcon.vue","webpack://racqforms20/./src/components/CTABanner/CTABanner.vue?f49f","webpack://racqforms20/./src/components/CTABanner/CTABanner.vue","webpack://racqforms20/./src/components/CTABanner/CTABanner.vue?2852","webpack://racqforms20/./src/components/CallToActionCard/CallToActionCard.vue?487d","webpack://racqforms20/./src/components/CallToActionCard/CallToActionCard.vue","webpack://racqforms20/./src/components/CallToActionCard/CallToActionCard.vue?99fb","webpack://racqforms20/./src/components/CarAccessories/CarAccessories.vue?2384","webpack://racqforms20/./src/components/CarAccessories/CarAccessories.vue","webpack://racqforms20/./src/components/CarAccessories/CarAccessories.vue?1540","webpack://racqforms20/./src/components/ConfirmationHeader/ConfirmationHeader.vue?5dbd","webpack://racqforms20/./src/components/ConfirmationHeader/ConfirmationHeader.vue","webpack://racqforms20/./src/components/DateInput/DateInput.vue?2424","webpack://racqforms20/./src/components/DateInput/DateInput.vue","webpack://racqforms20/./src/components/DateInput/DateInput.vue?0796","webpack://racqforms20/./src/components/DatePicker/DatePicker.vue?fb75","webpack://racqforms20/./src/components/DatePicker/DatePicker.vue","webpack://racqforms20/./src/components/DatePicker/DatePicker.vue?c32b","webpack://racqforms20/./src/components/DecisionIntelligenceCrossSellOffers/DecisionIntelligenceCrossSellOffers.vue?f6a5","webpack://racqforms20/./src/components/DecisionIntelligenceCrossSellOffers/DecisionIntelligenceCrossSellOffers.vue","webpack://racqforms20/./src/components/DecisionIntelligenceCrossSellOffers/DecisionIntelligenceCrossSellOffers.vue?7e36","webpack://racqforms20/./src/components/DecisionIntelligenceLeadForm/DecisionIntelligenceLeadForm.vue?fee5","webpack://racqforms20/./src/components/DecisionIntelligenceLeadForm/DecisionIntelligenceLeadForm.vue","webpack://racqforms20/./src/components/DecisionIntelligenceLeadForm/DecisionIntelligenceLeadForm.vue?fa72","webpack://racqforms20/./src/components/DecisionIntelligenceOfferReminder/DecisionIntelligenceOfferReminder.vue?cd57","webpack://racqforms20/./src/components/DecisionIntelligenceOfferReminder/DecisionIntelligenceOfferReminder.vue","webpack://racqforms20/./src/components/DecisionIntelligenceOfferReminder/DecisionIntelligenceOfferReminder.vue?53ec","webpack://racqforms20/./src/components/DecisionIntelligenceOffers/DecisionIntelligenceOffers.vue?8670","webpack://racqforms20/./src/components/DecisionIntelligenceOffers/DecisionIntelligenceOffers.vue","webpack://racqforms20/./src/components/DecisionIntelligenceOffers/DecisionIntelligenceOffers.vue?8884","webpack://racqforms20/./src/components/Disclaimer/Disclaimer.vue?3f81","webpack://racqforms20/./src/components/Disclaimer/Disclaimer.vue","webpack://racqforms20/./src/components/DollarAmount/DollarAmount.vue?2d13","webpack://racqforms20/./src/components/DollarAmount/DollarAmount.vue","webpack://racqforms20/./src/components/DollarAmount/DollarAmount.vue?9e75","webpack://racqforms20/./src/components/EmailConfirmation/SendEmailConfirmation.vue?9bc6","webpack://racqforms20/./src/components/EmailConfirmation/SendEmailConfirmation.vue","webpack://racqforms20/./src/components/EmailConfirmation/SendEmailConfirmation.vue?9925","webpack://racqforms20/./src/components/ExpandableContent/ExpandableContent.vue?5dd6","webpack://racqforms20/./src/components/ExpandableContent/ExpandableContent.vue","webpack://racqforms20/./src/components/ExpandableContent/ExpandableContent.vue?9397","webpack://racqforms20/./src/components/FormHeader/FormHeader.vue?9b28","webpack://racqforms20/./src/components/FormHeader/FormHeader.vue","webpack://racqforms20/./src/components/FormHeader/FormHeader.vue?d6fc","webpack://racqforms20/./src/components/FormStepDisclaimers/FormStepDisclaimers.vue?2b16","webpack://racqforms20/./src/components/FormStepDisclaimers/FormStepDisclaimers.vue","webpack://racqforms20/./src/components/FormStepDisclaimers/FormStepDisclaimers.vue?c3c3","webpack://racqforms20/./src/components/FormStepFooter/FormStepFooter.vue?8175","webpack://racqforms20/./src/components/FormStepFooter/FormStepFooter.vue","webpack://racqforms20/./src/components/FormStepFooter/FormStepFooter.vue?7489","webpack://racqforms20/./src/components/FormStepInputs/FormStepInputs.vue?98a8","webpack://racqforms20/./src/components/FormStepInputs/FormStepInputs.vue","webpack://racqforms20/./src/components/FormStepInputs/FormStepInputs.vue?0e35","webpack://racqforms20/./src/components/FormStep/FormStep.vue?657b","webpack://racqforms20/./src/components/FormStep/FormStep.vue","webpack://racqforms20/./src/components/FormStepperBar/FormStepperBar.vue?ef50","webpack://racqforms20/./src/components/FormStepperBar/FormStepperBar.vue","webpack://racqforms20/./src/components/FormStepperBar/FormStepperBar.vue?307e","webpack://racqforms20/./src/components/FormStepper/FormStepper.vue?8e81","webpack://racqforms20/./src/components/FormStepper/FormStepper.vue","webpack://racqforms20/./src/components/FormStepper/FormStepper.vue?c042","webpack://racqforms20/./src/components/Gender/Gender.vue?2b46","webpack://racqforms20/./src/components/Gender/Gender.vue","webpack://racqforms20/./src/components/Gender/Gender.vue?1022","webpack://racqforms20/./src/components/Highlights/Highlights.vue?d0c0","webpack://racqforms20/./src/components/Highlights/Highlights.vue","webpack://racqforms20/./src/components/Highlights/Highlights.vue?c985","webpack://racqforms20/./src/components/IQAwardBanner/IQAwardBanner.vue?ef62","webpack://racqforms20/./src/components/IQAwardBanner/IQAwardBanner.vue","webpack://racqforms20/./src/components/IQFloatingBox/IQFloatingBox.vue?a3ea","webpack://racqforms20/./src/components/IQFloatingBox/IQFloatingBox.vue","webpack://racqforms20/./src/components/IQFloatingBox/IQFloatingBox.vue?7c99","webpack://racqforms20/./src/components/IQPaymentError/IQPaymentError.vue?6ab4","webpack://racqforms20/./src/components/IQPaymentError/IQPaymentError.vue","webpack://racqforms20/./src/components/IQPaymentError/IQPaymentError.vue?d1a4","webpack://racqforms20/./src/components/IQPaymentPanel/IQPaymentPanel.vue?cf4d","webpack://racqforms20/./src/components/IQPaymentPanel/IQPaymentPanel.vue","webpack://racqforms20/./src/components/IQPaymentPanel/IQPaymentPanel.vue?a61f","webpack://racqforms20/./src/components/InformationBox/InformationBox.vue?0d22","webpack://racqforms20/./src/components/InformationBox/InformationBox.vue","webpack://racqforms20/./src/components/InformationBox/InformationBox.vue?2731","webpack://racqforms20/./src/components/JeopardyV2/JeopardyV2.vue?f1d0","webpack://racqforms20/./src/components/JeopardyV2/JeopardyV2.vue","webpack://racqforms20/./src/components/JeopardyV2/JeopardyV2.vue?55ef","webpack://racqforms20/./src/components/MembershipBenefitsBrands/MembershipBenefitsBrands.vue?52b3","webpack://racqforms20/./src/components/MembershipBenefitsBrands/MembershipBenefitsBrands.vue","webpack://racqforms20/./src/components/MembershipBenefitsBrands/MembershipBenefitsBrands.vue?ad8f","webpack://racqforms20/./src/components/MembershipBenefits/MembershipBenefits.vue?cbf9","webpack://racqforms20/./src/components/MembershipBenefits/MembershipBenefits.vue","webpack://racqforms20/./src/components/MembershipBenefits/MembershipBenefits.vue?f1e0","webpack://racqforms20/./src/components/MembershipLoyaltyReview/MembershipLoyaltyReview.vue?5ec3","webpack://racqforms20/./src/components/MembershipLoyaltyReview/MembershipLoyaltyReview.vue","webpack://racqforms20/./src/components/MembershipLoyaltyReview/MembershipLoyaltyReview.vue?d301","webpack://racqforms20/./src/components/ModalDialog/ModalDialog.vue","webpack://racqforms20/./src/components/ModalDialog/ModalDialog.vue?cd49","webpack://racqforms20/./src/components/ModalDialog/ModalDialog.vue?f5a6","webpack://racqforms20/./src/components/PanelTitle/PanelTitle.vue?d7a7","webpack://racqforms20/./src/components/PanelTitle/PanelTitle.vue","webpack://racqforms20/./src/components/PanelTitle/PanelTitle.vue?d17e","webpack://racqforms20/./src/components/PaymentFrequencyDropdown/PaymentFrequencyDropdown.vue?a231","webpack://racqforms20/./src/components/PaymentFrequencyDropdown/PaymentFrequencyDropdown.vue","webpack://racqforms20/./src/components/PaymentFrequencyDropdown/PaymentFrequencyDropdown.vue?22ac","webpack://racqforms20/./src/components/PaymentHeader/PaymentHeader.vue?1c2a","webpack://racqforms20/./src/components/PaymentHeader/PaymentHeader.vue","webpack://racqforms20/./src/components/PaymentHeader/PaymentHeader.vue?a58e","webpack://racqforms20/./src/components/PaymentMethods/PaymentMethods.vue?d557","webpack://racqforms20/./src/components/PaymentMethods/PaymentMethods.vue","webpack://racqforms20/./src/components/PaymentMethods/PaymentMethods.vue?bf34","webpack://racqforms20/./src/components/PaymentSection/PaymentSection.vue?add8","webpack://racqforms20/./src/components/PaymentSection/PaymentSection.vue","webpack://racqforms20/./src/components/PaymentSection/PaymentSection.vue?ba29","webpack://racqforms20/./src/components/PaymentSection/PaymentSectionFZIframe.vue?99a7","webpack://racqforms20/./src/components/PaymentSection/PaymentSectionFZIframe.vue","webpack://racqforms20/./src/components/PaymentSection/PaymentSectionFZIframe.vue?6b24","webpack://racqforms20/./src/components/PercentageBar/PercentageBar.vue?a1b8","webpack://racqforms20/./src/components/PercentageBar/PercentageBar.vue","webpack://racqforms20/./src/components/PhoneNumberInput/PhoneNumberInput.vue?e5b4","webpack://racqforms20/./src/components/PhoneNumberInput/PhoneNumberInput.vue","webpack://racqforms20/./src/components/PhoneNumberInput/PhoneNumberInput.vue?19bd","webpack://racqforms20/./src/components/PremiumDetailsConfirmation/PremiumDetailsConfirmation.vue?7318","webpack://racqforms20/./src/components/PremiumDetailsConfirmation/PremiumDetailsConfirmation.vue","webpack://racqforms20/./src/components/PremiumDetailsConfirmation/PremiumDetailsConfirmation.vue?8e3e","webpack://racqforms20/./src/components/PremiumDetailsReview/PremiumDetailsReview.vue?cf22","webpack://racqforms20/./src/components/PremiumDetailsReview/PremiumDetailsReview.vue","webpack://racqforms20/./src/components/PremiumDetailsReview/PremiumDetailsReview.vue?87f9","webpack://racqforms20/./src/components/ProgressTracker/ProgressTracker.vue?2138","webpack://racqforms20/./src/components/ProgressTracker/ProgressTracker.vue","webpack://racqforms20/./src/components/ProgressTracker/ProgressTracker.vue?6016","webpack://racqforms20/./src/components/QuoteHeader/QuoteHeader.vue?d99e","webpack://racqforms20/./src/components/QuoteHeader/QuoteHeader.vue","webpack://racqforms20/./src/components/RACQDropdown/RACQDropdown.vue?5038","webpack://racqforms20/./src/components/RACQDropdown/RACQDropdown.vue","webpack://racqforms20/./src/components/RACQDropdown/RACQDropdown.vue?fd56","webpack://racqforms20/./src/utils/hash-util.ts","webpack://racqforms20/./src/components/RACQFormKit/RACQFormKit.vue?ace4","webpack://racqforms20/./src/components/RACQFormKit/RACQFormKit.vue","webpack://racqforms20/./src/components/RACQFormKit/RACQFormKit.vue?6e50","webpack://racqforms20/./src/components/RACQFormKit/RACQFormKitErrorMessage.vue?e1f9","webpack://racqforms20/./src/components/RACQFormKit/RACQFormKitErrorMessage.vue","webpack://racqforms20/./src/components/RACQFormKit/RACQFormKitErrorMessage.vue?ca34","webpack://racqforms20/./src/components/RadioCardListExpandable/RadioCardListExpandable.vue?e3e8","webpack://racqforms20/./src/components/RadioCardListExpandable/RadioCardListExpandable.vue","webpack://racqforms20/./src/components/RadioCardListExpandable/RadioCardListExpandable.vue?2b22","webpack://racqforms20/./src/components/RadioCardListExpandable/RadioCardListExpandableItem.vue?fdc6","webpack://racqforms20/./src/components/RadioCardListExpandable/RadioCardListExpandableItem.vue","webpack://racqforms20/./src/components/RadioCardList/RadioCardList.vue?7108","webpack://racqforms20/./src/components/RadioCardList/RadioCardList.vue","webpack://racqforms20/./src/components/RadioCardList/RadioCardList.vue?f05a","webpack://racqforms20/./src/components/RadioCardList/RadioCardListComparisonItem.vue?18ae","webpack://racqforms20/./src/components/RadioCardList/RadioCardListComparisonItem.vue","webpack://racqforms20/./src/components/RadioCardList/RadioCardListItem.vue?c84d","webpack://racqforms20/./src/components/RadioCardList/RadioCardListItem.vue","webpack://racqforms20/./src/components/RadioCardList/RadioCardListItem.vue?2d82","webpack://racqforms20/./src/components/RadioCardList/RadioCardListMegaItem.vue?7952","webpack://racqforms20/./src/components/RadioCardList/RadioCardListMegaItem.vue","webpack://racqforms20/./src/components/RadioCardList/RadioCardListMegaItem.vue?096b","webpack://racqforms20/./src/components/ReviewSummary/ReviewSummary.vue?c75f","webpack://racqforms20/./src/components/ReviewSummary/ReviewSummary.vue","webpack://racqforms20/./src/components/ReviewSummary/ReviewSummary.vue?62f3","webpack://racqforms20/./src/components/ReviewSummary/ReviewSummaryItem.vue?04f0","webpack://racqforms20/./src/components/ReviewSummary/ReviewSummaryItem.vue","webpack://racqforms20/./src/components/ReviewSummary/ReviewSummaryItem.vue?e573","webpack://racqforms20/./src/components/SectionFrame/SectionFrame.vue?0d76","webpack://racqforms20/./src/components/SectionFrame/SectionFrame.vue","webpack://racqforms20/./src/components/ShowHideButton/ShowHideButton.vue?1819","webpack://racqforms20/./src/components/ShowHideButton/ShowHideButton.vue","webpack://racqforms20/./src/components/ShowHideButton/ShowHideButton.vue?044c","webpack://racqforms20/./src/components/SuburbLookupInput/SuburbLookupInput.vue?cff2","webpack://racqforms20/./src/components/SuburbLookupInput/SuburbLookupInput.vue","webpack://racqforms20/./src/components/SuburbLookupInput/SuburbLookupInput.vue?f512","webpack://racqforms20/./src/components/TableControlGroup/TableControlGroup.vue?beb0","webpack://racqforms20/./src/components/TableControlGroup/TableControlGroup.vue","webpack://racqforms20/./src/components/TableControlGroup/TableControlGroupReference.vue?b48b","webpack://racqforms20/./src/components/TableControlGroup/TableControlGroupReference.vue","webpack://racqforms20/./src/components/TableControlGroup/TableControlGroupReference.vue?8632","webpack://racqforms20/./src/components/TableControlGroup/TableControlItem.vue?71c6","webpack://racqforms20/./src/components/TableControlGroup/TableControlItem.vue","webpack://racqforms20/./src/components/TableControlGroup/TableControlItem.vue?7232","webpack://racqforms20/./src/components/TableSet/TableSet.vue?d13e","webpack://racqforms20/./src/components/TableSet/TableSet.vue","webpack://racqforms20/./src/components/TableSet/TableSetReference.vue?5c51","webpack://racqforms20/./src/components/TableSet/TableSetReference.vue","webpack://racqforms20/./src/components/TableSet/TableSetReference.vue?2dfc","webpack://racqforms20/./src/components/TagList/TagList.vue?bd9f","webpack://racqforms20/./src/components/TagList/TagList.vue","webpack://racqforms20/./src/components/TagList/TagList.vue?278f","webpack://racqforms20/./src/components/Tag/Tag.vue?86e1","webpack://racqforms20/./src/components/Tag/Tag.vue","webpack://racqforms20/./src/components/Tag/Tag.vue?4d4e","webpack://racqforms20/./src/components/TitleNameInput/TitleNameInput.vue?9c6b","webpack://racqforms20/./src/components/TitleNameInput/TitleNameInput.vue","webpack://racqforms20/./src/components/TitleNameInput/TitleNameInput.vue?0466","webpack://racqforms20/./src/components/TrackPatrol/TrackPatrol.vue?5931","webpack://racqforms20/./src/components/TrackPatrol/TrackPatrol.vue","webpack://racqforms20/./src/components/TrackPatrol/TrackPatrol.vue?35c1","webpack://racqforms20/./src/components/UpdatePostalAddressDisclaimer/UpdatePostalAddressDisclaimer.vue?4fb5","webpack://racqforms20/./src/components/UpdatePostalAddressDisclaimer/UpdatePostalAddressDisclaimer.vue","webpack://racqforms20/./src/components/UpdatePostalAddressDisclaimer/UpdatePostalAddressDisclaimer.vue?a81e","webpack://racqforms20/./src/forms/ lazy ^\\.\\/.*.*\\/.*\\.vue$ namespace object","webpack://racqforms20/./src/forms/ lazy ^\\.\\/.*.*\\/steps\\/.*\\.vue$ namespace object","webpack://racqforms20/./src/forms/ lazy ^\\.\\/.*\\/.*\\.vue$ namespace object","webpack://racqforms20/webpack/bootstrap","webpack://racqforms20/webpack/runtime/chunk loaded","webpack://racqforms20/webpack/runtime/compat get default export","webpack://racqforms20/webpack/runtime/define property getters","webpack://racqforms20/webpack/runtime/ensure chunk","webpack://racqforms20/webpack/runtime/get javascript chunk filename","webpack://racqforms20/webpack/runtime/get mini-css chunk filename","webpack://racqforms20/webpack/runtime/global","webpack://racqforms20/webpack/runtime/hasOwnProperty shorthand","webpack://racqforms20/webpack/runtime/load script","webpack://racqforms20/webpack/runtime/make namespace object","webpack://racqforms20/webpack/runtime/publicPath","webpack://racqforms20/webpack/runtime/css loading","webpack://racqforms20/webpack/runtime/jsonp chunk loading","webpack://racqforms20/webpack/startup"],"sourcesContent":["\n var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"path\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"item\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"path\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"path\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"language\"},\"value\":{\"kind\":\"StringValue\",\"value\":\"en\",\"block\":false}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"tableSections\"},\"name\":{\"kind\":\"Name\",\"value\":\"children\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TableControlSection\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"heading\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"value\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"showMoreButton\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"value\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"initialNumberOfItemsToShow\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"value\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"showMoreButtonText\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"value\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"showLessButtonText\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"value\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"tableColumn\"},\"name\":{\"kind\":\"Name\",\"value\":\"children\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TableControlColumn\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"code\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"value\"},\"arguments\":[],\"directives\":[]}]}}]}},{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"rows\"},\"name\":{\"kind\":\"Name\",\"value\":\"children\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TableControlRow\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"heading\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"value\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"description\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"value\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"percentage\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"value\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tooltipContent\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"value\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}]}}]}}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":1094}};\n doc.loc.source = {\"body\":\"query ($path: String!) {\\r\\n item(\\r\\n path: $path\\r\\n language: \\\"en\\\"\\r\\n ) {\\r\\n name\\r\\n tableSections: children {\\r\\n ... on TableControlSection {\\r\\n heading {\\r\\n value\\r\\n }\\r\\n showMoreButton {\\r\\n value\\r\\n }\\r\\n initialNumberOfItemsToShow {\\r\\n value\\r\\n }\\r\\n showMoreButtonText {\\r\\n value\\r\\n }\\r\\n showLessButtonText {\\r\\n value\\r\\n }\\r\\n tableColumn: children {\\r\\n ... on TableControlColumn {\\r\\n code {\\r\\n value\\r\\n }\\r\\n }\\r\\n rows: children {\\r\\n ... on TableControlRow {\\r\\n heading {\\r\\n value\\r\\n }\\r\\n description {\\r\\n value\\r\\n }\\r\\n percentage {\\r\\n value\\r\\n }\\r\\n tooltipContent {\\r\\n value\\r\\n }\\r\\n }\\r\\n }\\r\\n }\\r\\n }\\r\\n }\\r\\n }\\r\\n}\\r\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n \r\n\n var names = {};\n function unique(defs) {\n return defs.filter(\n function(def) {\n if (def.kind !== 'FragmentDefinition') return true;\n var name = def.name.value\n if (names[name]) {\n return false;\n } else {\n names[name] = true;\n return true;\n }\n }\n )\n }\n \r\n\n // Collect any fragment/type references from a node, adding them to the refs Set\n function collectFragmentReferences(node, refs) {\n if (node.kind === \"FragmentSpread\") {\n refs.add(node.name.value);\n } else if (node.kind === \"VariableDefinition\") {\n var type = node.type;\n if (type.kind === \"NamedType\") {\n refs.add(type.name.value);\n }\n }\n\n if (node.selectionSet) {\n node.selectionSet.selections.forEach(function(selection) {\n collectFragmentReferences(selection, refs);\n });\n }\n\n if (node.variableDefinitions) {\n node.variableDefinitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n\n if (node.definitions) {\n node.definitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n }\n\n var definitionRefs = {};\n (function extractReferences() {\n doc.definitions.forEach(function(def) {\n if (def.name) {\n var refs = new Set();\n collectFragmentReferences(def, refs);\n definitionRefs[def.name.value] = refs;\n }\n });\n })();\n\n function findOperation(doc, name) {\n for (var i = 0; i < doc.definitions.length; i++) {\n var element = doc.definitions[i];\n if (element.name && element.name.value == name) {\n return element;\n }\n }\n }\n\n function oneQuery(doc, operationName) {\n // Copy the DocumentNode, but clear out the definitions\n var newDoc = {\n kind: doc.kind,\n definitions: [findOperation(doc, operationName)]\n };\n if (doc.hasOwnProperty(\"loc\")) {\n newDoc.loc = doc.loc;\n }\n\n // Now, for the operation we're running, find any fragments referenced by\n // it or the fragments it references\n var opRefs = definitionRefs[operationName] || new Set();\n var allRefs = new Set();\n var newRefs = new Set();\n\n // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n opRefs.forEach(function(refName) {\n newRefs.add(refName);\n });\n\n while (newRefs.size > 0) {\n var prevRefs = newRefs;\n newRefs = new Set();\n\n prevRefs.forEach(function(refName) {\n if (!allRefs.has(refName)) {\n allRefs.add(refName);\n var childRefs = definitionRefs[refName] || new Set();\n childRefs.forEach(function(childRef) {\n newRefs.add(childRef);\n });\n }\n });\n }\n\n allRefs.forEach(function(refName) {\n var op = findOperation(doc, refName);\n if (op) {\n newDoc.definitions.push(op);\n }\n });\n\n return newDoc;\n }\n \n module.exports = doc;\n \r\n","\n var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"TableSetQuery\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"path\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"item\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"path\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"path\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"language\"},\"value\":{\"kind\":\"StringValue\",\"value\":\"en\",\"block\":false}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"children\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TableSetRow\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"value\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"children\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TableSetCol\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"text\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"value\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}]}}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":401}};\n doc.loc.source = {\"body\":\"\\r\\nquery TableSetQuery($path: String!) {\\r\\n item(path: $path, language: \\\"en\\\") {\\r\\n id\\r\\n name\\r\\n children {\\r\\n ...on TableSetRow {\\r\\n id\\r\\n name\\r\\n title {\\r\\n value\\r\\n }\\r\\n children {\\r\\n ...on TableSetCol {\\r\\n id\\r\\n name\\r\\n text {\\r\\n value\\r\\n }\\r\\n }\\r\\n }\\r\\n }\\r\\n }\\r\\n }\\r\\n}\\r\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n \r\n\n var names = {};\n function unique(defs) {\n return defs.filter(\n function(def) {\n if (def.kind !== 'FragmentDefinition') return true;\n var name = def.name.value\n if (names[name]) {\n return false;\n } else {\n names[name] = true;\n return true;\n }\n }\n )\n }\n \r\n\n // Collect any fragment/type references from a node, adding them to the refs Set\n function collectFragmentReferences(node, refs) {\n if (node.kind === \"FragmentSpread\") {\n refs.add(node.name.value);\n } else if (node.kind === \"VariableDefinition\") {\n var type = node.type;\n if (type.kind === \"NamedType\") {\n refs.add(type.name.value);\n }\n }\n\n if (node.selectionSet) {\n node.selectionSet.selections.forEach(function(selection) {\n collectFragmentReferences(selection, refs);\n });\n }\n\n if (node.variableDefinitions) {\n node.variableDefinitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n\n if (node.definitions) {\n node.definitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n }\n\n var definitionRefs = {};\n (function extractReferences() {\n doc.definitions.forEach(function(def) {\n if (def.name) {\n var refs = new Set();\n collectFragmentReferences(def, refs);\n definitionRefs[def.name.value] = refs;\n }\n });\n })();\n\n function findOperation(doc, name) {\n for (var i = 0; i < doc.definitions.length; i++) {\n var element = doc.definitions[i];\n if (element.name && element.name.value == name) {\n return element;\n }\n }\n }\n\n function oneQuery(doc, operationName) {\n // Copy the DocumentNode, but clear out the definitions\n var newDoc = {\n kind: doc.kind,\n definitions: [findOperation(doc, operationName)]\n };\n if (doc.hasOwnProperty(\"loc\")) {\n newDoc.loc = doc.loc;\n }\n\n // Now, for the operation we're running, find any fragments referenced by\n // it or the fragments it references\n var opRefs = definitionRefs[operationName] || new Set();\n var allRefs = new Set();\n var newRefs = new Set();\n\n // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n opRefs.forEach(function(refName) {\n newRefs.add(refName);\n });\n\n while (newRefs.size > 0) {\n var prevRefs = newRefs;\n newRefs = new Set();\n\n prevRefs.forEach(function(refName) {\n if (!allRefs.has(refName)) {\n allRefs.add(refName);\n var childRefs = definitionRefs[refName] || new Set();\n childRefs.forEach(function(childRef) {\n newRefs.add(childRef);\n });\n }\n });\n }\n\n allRefs.forEach(function(refName) {\n var op = findOperation(doc, refName);\n if (op) {\n newDoc.definitions.push(op);\n }\n });\n\n return newDoc;\n }\n \n module.exports = doc;\n \n module.exports[\"TableSetQuery\"] = oneQuery(doc, \"TableSetQuery\");\n \r\n","\n var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"ConfigSettings\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"path\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"item\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"path\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"path\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"language\"},\"value\":{\"kind\":\"StringValue\",\"value\":\"en\",\"block\":false}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ConfigSetting\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"fields\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"ownFields\"},\"value\":{\"kind\":\"BooleanValue\",\"value\":true}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"value\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":215}};\n doc.loc.source = {\"body\":\"\\r\\nquery ConfigSettings($path: String!) {\\r\\n item(path: $path, language: \\\"en\\\") {\\r\\n id\\r\\n name\\r\\n ...on ConfigSetting {\\r\\n fields(ownFields: true) {\\r\\n name\\r\\n value\\r\\n }\\r\\n }\\r\\n }\\r\\n}\\r\\n\\r\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n \r\n\n var names = {};\n function unique(defs) {\n return defs.filter(\n function(def) {\n if (def.kind !== 'FragmentDefinition') return true;\n var name = def.name.value\n if (names[name]) {\n return false;\n } else {\n names[name] = true;\n return true;\n }\n }\n )\n }\n \r\n\n // Collect any fragment/type references from a node, adding them to the refs Set\n function collectFragmentReferences(node, refs) {\n if (node.kind === \"FragmentSpread\") {\n refs.add(node.name.value);\n } else if (node.kind === \"VariableDefinition\") {\n var type = node.type;\n if (type.kind === \"NamedType\") {\n refs.add(type.name.value);\n }\n }\n\n if (node.selectionSet) {\n node.selectionSet.selections.forEach(function(selection) {\n collectFragmentReferences(selection, refs);\n });\n }\n\n if (node.variableDefinitions) {\n node.variableDefinitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n\n if (node.definitions) {\n node.definitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n }\n\n var definitionRefs = {};\n (function extractReferences() {\n doc.definitions.forEach(function(def) {\n if (def.name) {\n var refs = new Set();\n collectFragmentReferences(def, refs);\n definitionRefs[def.name.value] = refs;\n }\n });\n })();\n\n function findOperation(doc, name) {\n for (var i = 0; i < doc.definitions.length; i++) {\n var element = doc.definitions[i];\n if (element.name && element.name.value == name) {\n return element;\n }\n }\n }\n\n function oneQuery(doc, operationName) {\n // Copy the DocumentNode, but clear out the definitions\n var newDoc = {\n kind: doc.kind,\n definitions: [findOperation(doc, operationName)]\n };\n if (doc.hasOwnProperty(\"loc\")) {\n newDoc.loc = doc.loc;\n }\n\n // Now, for the operation we're running, find any fragments referenced by\n // it or the fragments it references\n var opRefs = definitionRefs[operationName] || new Set();\n var allRefs = new Set();\n var newRefs = new Set();\n\n // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n opRefs.forEach(function(refName) {\n newRefs.add(refName);\n });\n\n while (newRefs.size > 0) {\n var prevRefs = newRefs;\n newRefs = new Set();\n\n prevRefs.forEach(function(refName) {\n if (!allRefs.has(refName)) {\n allRefs.add(refName);\n var childRefs = definitionRefs[refName] || new Set();\n childRefs.forEach(function(childRef) {\n newRefs.add(childRef);\n });\n }\n });\n }\n\n allRefs.forEach(function(refName) {\n var op = findOperation(doc, refName);\n if (op) {\n newDoc.definitions.push(op);\n }\n });\n\n return newDoc;\n }\n \n module.exports = doc;\n \n module.exports[\"ConfigSettings\"] = oneQuery(doc, \"ConfigSettings\");\n \r\n","\n var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"JeopardyQuery\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"path\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"item\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"path\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"path\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"language\"},\"value\":{\"kind\":\"StringValue\",\"value\":\"en\",\"block\":false}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"JeopardyCode_46fa9ce8a1904fa3bdd111325af5425e\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"jpCode\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"value\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"jpText\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"value\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"jpStepTitle\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"value\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"jpHeading\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"value\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":341}};\n doc.loc.source = {\"body\":\"\\r\\nquery JeopardyQuery($path: String!) {\\r\\n item(path: $path, language: \\\"en\\\") {\\r\\n id\\r\\n name\\r\\n ...on JeopardyCode_46fa9ce8a1904fa3bdd111325af5425e {\\r\\n jpCode {\\r\\n value\\r\\n }\\r\\n jpText {\\r\\n value\\r\\n }\\r\\n jpStepTitle {\\r\\n value\\r\\n }\\r\\n jpHeading {\\r\\n value\\r\\n }\\r\\n }\\r\\n }\\r\\n}\\r\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n \r\n\n var names = {};\n function unique(defs) {\n return defs.filter(\n function(def) {\n if (def.kind !== 'FragmentDefinition') return true;\n var name = def.name.value\n if (names[name]) {\n return false;\n } else {\n names[name] = true;\n return true;\n }\n }\n )\n }\n \r\n\n // Collect any fragment/type references from a node, adding them to the refs Set\n function collectFragmentReferences(node, refs) {\n if (node.kind === \"FragmentSpread\") {\n refs.add(node.name.value);\n } else if (node.kind === \"VariableDefinition\") {\n var type = node.type;\n if (type.kind === \"NamedType\") {\n refs.add(type.name.value);\n }\n }\n\n if (node.selectionSet) {\n node.selectionSet.selections.forEach(function(selection) {\n collectFragmentReferences(selection, refs);\n });\n }\n\n if (node.variableDefinitions) {\n node.variableDefinitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n\n if (node.definitions) {\n node.definitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n }\n\n var definitionRefs = {};\n (function extractReferences() {\n doc.definitions.forEach(function(def) {\n if (def.name) {\n var refs = new Set();\n collectFragmentReferences(def, refs);\n definitionRefs[def.name.value] = refs;\n }\n });\n })();\n\n function findOperation(doc, name) {\n for (var i = 0; i < doc.definitions.length; i++) {\n var element = doc.definitions[i];\n if (element.name && element.name.value == name) {\n return element;\n }\n }\n }\n\n function oneQuery(doc, operationName) {\n // Copy the DocumentNode, but clear out the definitions\n var newDoc = {\n kind: doc.kind,\n definitions: [findOperation(doc, operationName)]\n };\n if (doc.hasOwnProperty(\"loc\")) {\n newDoc.loc = doc.loc;\n }\n\n // Now, for the operation we're running, find any fragments referenced by\n // it or the fragments it references\n var opRefs = definitionRefs[operationName] || new Set();\n var allRefs = new Set();\n var newRefs = new Set();\n\n // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n opRefs.forEach(function(refName) {\n newRefs.add(refName);\n });\n\n while (newRefs.size > 0) {\n var prevRefs = newRefs;\n newRefs = new Set();\n\n prevRefs.forEach(function(refName) {\n if (!allRefs.has(refName)) {\n allRefs.add(refName);\n var childRefs = definitionRefs[refName] || new Set();\n childRefs.forEach(function(childRef) {\n newRefs.add(childRef);\n });\n }\n });\n }\n\n allRefs.forEach(function(refName) {\n var op = findOperation(doc, refName);\n if (op) {\n newDoc.definitions.push(op);\n }\n });\n\n return newDoc;\n }\n \n module.exports = doc;\n \n module.exports[\"JeopardyQuery\"] = oneQuery(doc, \"JeopardyQuery\");\n \r\n","\n var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"JeopardyPanelQuery\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"path\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"item\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"path\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"path\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"language\"},\"value\":{\"kind\":\"StringValue\",\"value\":\"en\",\"block\":false}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Jeopardy_950ac8a478a74f82964476c6cebe1e3f\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"jeopardyPanelCode\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"value\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"liveChatHeading\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"value\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"liveChatContent\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"value\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"liveChatButtonText\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"value\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"callUsHeading\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"value\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"callUsContent\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"value\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"callUsNumber\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"value\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"callUsButtonLabel\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"value\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"callBackHeading\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"value\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"callBackContent\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"value\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"callBackButtonText\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"value\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"callBackFormLink\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"value\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":769}};\n doc.loc.source = {\"body\":\"query JeopardyPanelQuery($path: String!) {\\r\\n item(path: $path, language: \\\"en\\\") {\\r\\n id\\r\\n name\\r\\n ...on Jeopardy_950ac8a478a74f82964476c6cebe1e3f {\\r\\n jeopardyPanelCode {\\r\\n value\\r\\n }\\r\\n liveChatHeading {\\r\\n value\\r\\n }\\r\\n liveChatContent {\\r\\n value\\r\\n }\\r\\n liveChatButtonText {\\r\\n value\\r\\n }\\r\\n callUsHeading {\\r\\n value\\r\\n }\\r\\n callUsContent {\\r\\n value\\r\\n }\\r\\n callUsNumber {\\r\\n value\\r\\n }\\r\\n callUsButtonLabel {\\r\\n value\\r\\n }\\r\\n callBackHeading {\\r\\n value\\r\\n }\\r\\n callBackContent {\\r\\n value\\r\\n }\\r\\n callBackButtonText {\\r\\n value\\r\\n }\\r\\n callBackFormLink {\\r\\n value\\r\\n } \\r\\n }\\r\\n }\\r\\n}\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n \r\n\n var names = {};\n function unique(defs) {\n return defs.filter(\n function(def) {\n if (def.kind !== 'FragmentDefinition') return true;\n var name = def.name.value\n if (names[name]) {\n return false;\n } else {\n names[name] = true;\n return true;\n }\n }\n )\n }\n \r\n\n // Collect any fragment/type references from a node, adding them to the refs Set\n function collectFragmentReferences(node, refs) {\n if (node.kind === \"FragmentSpread\") {\n refs.add(node.name.value);\n } else if (node.kind === \"VariableDefinition\") {\n var type = node.type;\n if (type.kind === \"NamedType\") {\n refs.add(type.name.value);\n }\n }\n\n if (node.selectionSet) {\n node.selectionSet.selections.forEach(function(selection) {\n collectFragmentReferences(selection, refs);\n });\n }\n\n if (node.variableDefinitions) {\n node.variableDefinitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n\n if (node.definitions) {\n node.definitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n }\n\n var definitionRefs = {};\n (function extractReferences() {\n doc.definitions.forEach(function(def) {\n if (def.name) {\n var refs = new Set();\n collectFragmentReferences(def, refs);\n definitionRefs[def.name.value] = refs;\n }\n });\n })();\n\n function findOperation(doc, name) {\n for (var i = 0; i < doc.definitions.length; i++) {\n var element = doc.definitions[i];\n if (element.name && element.name.value == name) {\n return element;\n }\n }\n }\n\n function oneQuery(doc, operationName) {\n // Copy the DocumentNode, but clear out the definitions\n var newDoc = {\n kind: doc.kind,\n definitions: [findOperation(doc, operationName)]\n };\n if (doc.hasOwnProperty(\"loc\")) {\n newDoc.loc = doc.loc;\n }\n\n // Now, for the operation we're running, find any fragments referenced by\n // it or the fragments it references\n var opRefs = definitionRefs[operationName] || new Set();\n var allRefs = new Set();\n var newRefs = new Set();\n\n // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n opRefs.forEach(function(refName) {\n newRefs.add(refName);\n });\n\n while (newRefs.size > 0) {\n var prevRefs = newRefs;\n newRefs = new Set();\n\n prevRefs.forEach(function(refName) {\n if (!allRefs.has(refName)) {\n allRefs.add(refName);\n var childRefs = definitionRefs[refName] || new Set();\n childRefs.forEach(function(childRef) {\n newRefs.add(childRef);\n });\n }\n });\n }\n\n allRefs.forEach(function(refName) {\n var op = findOperation(doc, refName);\n if (op) {\n newDoc.definitions.push(op);\n }\n });\n\n return newDoc;\n }\n \n module.exports = doc;\n \n module.exports[\"JeopardyPanelQuery\"] = oneQuery(doc, \"JeopardyPanelQuery\");\n \r\n","import { ImageField } from '@sitecore-jss/sitecore-jss-vue/types/components/Image';\r\nimport { ISitecoreFormGenericInput } from '@/interfaces';\r\nimport { IRadioButtonCard } from '@/interfaces/entities/radio-button-card.interface';\r\nimport { FormInputTypes } from '@/enums/form-input-types.enum';\r\n\r\ninterface TooltipProps {\r\n title?: string;\r\n content: string;\r\n tooltipId: string;\r\n // Vue 2 migration alert: this code might not be required\r\n // this is an edge case where a '%' symbol is required before the tooltip trigger\r\n // not ideal, but Vue Formulate is very hard to modify otherwise\r\n contentBeforeTrigger?: string;\r\n tooltipOuterId?: string;\r\n isModal?: boolean;\r\n}\r\n\r\nexport interface VueFormInputProps {\r\n label?: string;\r\n name: string;\r\n type?: string;\r\n placeholder?: string;\r\n postContent?: string;\r\n preContent?: string;\r\n postContentClass?: string;\r\n preContentClass?: string;\r\n tooltip?: TooltipProps;\r\n format?: string;\r\n fields?: ISitecoreFormGenericInput[];\r\n emptyMessage?: string;\r\n validation?: any[][];\r\n validationMessages?: Record;\r\n validationLabel?: string;\r\n validationVisibility?: string;\r\n validationRegex?: string;\r\n innerClass?: string;\r\n outerClass?: string;\r\n options?: IRadioButtonCard[];\r\n optionsClass?: string;\r\n defaultOption?: string;\r\n messagesClass?: string;\r\n labelClass?: string;\r\n help?: string;\r\n helpSm?: string;\r\n helpMd?: string;\r\n showPostContent?: boolean;\r\n loading?: boolean;\r\n refData?: string;\r\n value?: any;\r\n prefixIcon?: string;\r\n suffixIcon?: string;\r\n mask?: string;\r\n disablePaste?: boolean;\r\n pickerOnly?: boolean;\r\n radioGroupClass?: string;\r\n classesOptions?: string;\r\n decimals?: string;\r\n disabled?: boolean;\r\n keepPlaceHolder?: boolean;\r\n showClearIcon?: boolean;\r\n}\r\n\r\nfunction setupFormKitClass(vBindFormData: VueFormInputProps, formData: ISitecoreFormGenericInput) {\r\n if (formData?.innerClass?.value) {\r\n vBindFormData.innerClass = formData?.innerClass?.value;\r\n }\r\n if (formData?.outerClass?.value) {\r\n vBindFormData.outerClass = formData?.outerClass?.value;\r\n }\r\n}\r\n\r\nfunction setupValidation(vBindFormData: VueFormInputProps, formData: ISitecoreFormGenericInput) {\r\n /** Format Validation */\r\n if (formData?.isRequired?.value) {\r\n vBindFormData.validation = [...(vBindFormData.validation || []), ['required']];\r\n\r\n if (formData?.isRequiredErrorMessage?.value) {\r\n vBindFormData.validationMessages = {\r\n ...(vBindFormData.validationMessages || {}),\r\n required: formData?.isRequiredErrorMessage?.value,\r\n };\r\n }\r\n }\r\n\r\n // Regex validation\r\n if (formData?.validationRegex?.value) {\r\n vBindFormData.validation = [\r\n ...(vBindFormData.validation || []),\r\n ['matches', new RegExp(formData.validationRegex.value)],\r\n ];\r\n\r\n vBindFormData.validationRegex = formData?.validationRegex?.value;\r\n\r\n if (formData?.validationRegexErrorMessage?.value) {\r\n vBindFormData.validationMessages = {\r\n ...(vBindFormData.validationMessages || {}),\r\n matches: formData?.validationRegexErrorMessage?.value,\r\n };\r\n }\r\n }\r\n\r\n // Custom validation\r\n if (formData?.validation?.value) {\r\n try {\r\n const params = new URLSearchParams(formData.validation.value);\r\n params.forEach((key, value) => {\r\n const payload: { message: string; regex?: string } = JSON.parse(key);\r\n\r\n if (payload.regex) {\r\n vBindFormData.validation = [...(vBindFormData.validation || []), [value, new RegExp(payload.regex)]];\r\n } else {\r\n vBindFormData.validation = [...(vBindFormData.validation || []), [value]];\r\n }\r\n\r\n if (payload.message) {\r\n vBindFormData.validationMessages = {\r\n ...(vBindFormData.validationMessages || {}),\r\n [value]: payload.message,\r\n };\r\n }\r\n });\r\n } catch (error) {\r\n console.warn('Unable to format field validation: ', error);\r\n }\r\n }\r\n}\r\n\r\nfunction setupAck(vBindFormData: VueFormInputProps, formData: ISitecoreFormGenericInput) {\r\n // Must accept for checkbox ack\r\n if (formData?.mustAccept?.value) {\r\n vBindFormData.validation = [...(vBindFormData.validation || []), ['accepted']];\r\n\r\n vBindFormData.validationVisibility = 'dirty';\r\n\r\n if (formData?.mustAcceptErrorMessage?.value) {\r\n vBindFormData.validationMessages = {\r\n ...(vBindFormData.validationMessages || {}),\r\n accepted: formData?.mustAcceptErrorMessage?.value,\r\n };\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Convert a form field in Sitecore into an Object suitable for FormKit.\r\n *\r\n * @param formData\r\n * @param keyName\r\n * @returns\r\n */\r\nexport function convertSitecoreFormFieldToVueFormField(\r\n formData: ISitecoreFormGenericInput,\r\n keyName: string\r\n): VueFormInputProps {\r\n const vBindFormData: VueFormInputProps = {\r\n label: formData?.label?.value ?? '',\r\n validationLabel: formData?.label?.value ?? '',\r\n name: formData?.formInputId?.value || 'FormInputId mising in SC - keyName:' + keyName,\r\n type: formData?.inputType?.value || 'FormInputType missing in SC - keyName:' + keyName,\r\n placeholder: formData?.placeholderText?.value ?? '',\r\n postContent: formData?.postContent?.value,\r\n preContent: formData?.preContent?.value,\r\n postContentClass: formData?.postContentClass?.value,\r\n preContentClass: formData?.preContentClass?.value,\r\n showPostContent: formData?.showPostContent,\r\n refData: formData?.refData?.value,\r\n prefixIcon: formData?.prefixIcon?.value,\r\n suffixIcon: formData?.suffixIcon?.value,\r\n help: formData?.helpXs?.value,\r\n helpSm: formData?.helpSm?.value,\r\n helpMd: formData?.helpMd?.value,\r\n disablePaste: formData?.disablePaste?.value,\r\n classesOptions: formData?.classesOptions?.value,\r\n decimals: formData?.decimals?.value,\r\n showClearIcon: formData?.showClearIcon?.value,\r\n };\r\n\r\n setupFormKitClass(vBindFormData, formData);\r\n setupValidation(vBindFormData, formData);\r\n setupAck(vBindFormData, formData);\r\n\r\n if (formData?.options?.value) {\r\n const urlSearchParams = new URLSearchParams(formData?.options?.value?.replaceAll('+', '%2B'));\r\n const options = [];\r\n for (const [label, value] of urlSearchParams) {\r\n options.push({ label: label, value: value });\r\n }\r\n vBindFormData.options = options;\r\n } else if (formData?.inputType?.value === 'dropdown') {\r\n vBindFormData.options = [];\r\n const dropdownFields = formData.fields as DropdownOption[];\r\n if (dropdownFields) {\r\n vBindFormData.options = dropdownFields.map((option) => {\r\n return {\r\n label: option.Label?.value ?? '',\r\n value: option.Value?.value,\r\n help: option.HelpText?.value,\r\n image: option.Image,\r\n };\r\n });\r\n }\r\n } else if (formData?.inputType?.value === FormInputTypes.RADIO_CARD_LIST) {\r\n vBindFormData.options = convertSitecoreToVueRadioButtonCardOptions(formData);\r\n vBindFormData.optionsClass = formData?.optionsClass?.value;\r\n }\r\n\r\n if (formData?.defaultOption?.value) {\r\n vBindFormData.defaultOption = formData?.defaultOption?.value;\r\n }\r\n\r\n if (formData?.tooltipContent?.value) {\r\n vBindFormData.tooltip = {\r\n title: formData?.tooltipModalTitle?.value,\r\n content: formData?.tooltipContent?.value,\r\n tooltipId: formData?.formInputId?.value + '__tooltip_id',\r\n tooltipOuterId: formData?.formInputId?.value + '__outer',\r\n isModal: formData?.tooltipShowInModal?.value,\r\n };\r\n }\r\n\r\n if (formData?.emptyMessage?.value) {\r\n vBindFormData.emptyMessage = formData.emptyMessage.value;\r\n }\r\n if (formData?.mask?.value) {\r\n vBindFormData.mask = formData?.mask?.value;\r\n }\r\n if (formData?.defaultOption?.value) {\r\n vBindFormData.value = formData?.defaultOption?.value;\r\n }\r\n if (formData?.format?.value) {\r\n vBindFormData.format = formData?.format?.value;\r\n }\r\n if (formData?.pickerOnly?.value) {\r\n vBindFormData.pickerOnly = formData?.pickerOnly?.value;\r\n }\r\n\r\n return vBindFormData;\r\n}\r\n\r\nfunction convertSitecoreToVueRadioButtonCardOptions(formData: ISitecoreFormGenericInput): IRadioButtonCard[] {\r\n return (\r\n formData?.fields?.map((radioButtonCard: any) => ({\r\n value: radioButtonCard.value.value,\r\n label: radioButtonCard.label.value,\r\n help: radioButtonCard.help.value,\r\n image: radioButtonCard.image,\r\n callOut: radioButtonCard.callOut.value,\r\n rightLabel: radioButtonCard.rightLabel.value,\r\n rightHelp: radioButtonCard.rightHelp.value,\r\n visibleBody: radioButtonCard.visibleBody.value,\r\n hiddenBody: radioButtonCard.hiddenBody.value,\r\n })) ?? []\r\n );\r\n}\r\n// #endregion\r\n\r\n// #region CheckboxList\r\ninterface CheckboxList {\r\n GroupName: { value: string };\r\n fields: CheckboxListOption[];\r\n}\r\n\r\ninterface CheckboxListOption {\r\n Label?: { value: string };\r\n Value?: { value: string };\r\n HelpText?: { value: string };\r\n}\r\n\r\ninterface DropdownOption {\r\n Label?: { value: string };\r\n Value?: { value: string };\r\n HelpText?: { value: string };\r\n Image?: ImageField;\r\n}\r\n\r\nfunction convertSitecoreToVueCheckboxListOptions(\r\n formData: ISitecoreFormGenericInput\r\n): { label: string; value: any; help?: string }[] {\r\n const checkboxOptions: { label: string; value: any; help?: string }[] = [];\r\n if (formData?.inputType?.value === 'checkbox') {\r\n const checkboxList = formData as unknown as CheckboxList;\r\n\r\n return checkboxList.fields.map((checkboxListOption: CheckboxListOption) => {\r\n const cbItem: { label: string; value: any; help?: string } = {\r\n label: checkboxListOption.Label?.value ?? '',\r\n value: checkboxListOption.Value?.value,\r\n help: checkboxListOption.HelpText?.value,\r\n };\r\n\r\n return cbItem;\r\n });\r\n }\r\n\r\n return checkboxOptions;\r\n}\r\n\r\nexport function getAdobeTargetDataAttributes(input: Record, stepName: string) {\r\n return {\r\n 'data-component-type': input.name + '_' + input.id,\r\n 'data-component-datasource': stepName,\r\n };\r\n}\r\n// #endregion\r\n\r\nexport default function useFormInputData(formInputs: Record) {\r\n /**\r\n * Create an Object with all VueFormulate fields mapped from Sitecore.\r\n *\r\n * @param {string} keyName The policy data payload key name (mapped as ID in Sitecore)\r\n * @param {number} index Use if you have multiple instances of the form input on the form, to set a unique ID\r\n */\r\n function formInputData(keyName: string, index?: number) {\r\n const formData = formInputs[keyName];\r\n const vBindFormData = convertSitecoreFormFieldToVueFormField(formData, keyName);\r\n\r\n // This is when we have a custom component that is a group of fields.\r\n // For example: Find your car is a group of inputs grouped by a \"custom\" input type\r\n if (formData?.inputType?.value === 'custom' && formData?.fields?.length) {\r\n vBindFormData.fields = formData.fields;\r\n }\r\n\r\n return vBindFormData;\r\n }\r\n\r\n return {\r\n formInputData,\r\n convertSitecoreToVueCheckboxListOptions,\r\n getAdobeTargetDataAttributes,\r\n };\r\n}\r\n","export const STANDARD_DATE_FORMAT = 'dd/MM/yyyy';\r\nexport const STANDARD_DATE_TIME_FORMAT = 'dd/MM/yyyy hh:mm aaa';\r\n","//API Suffix required for running jss locally\r\nexport const ApiPrefix =\r\n process.env.NODE_ENV === 'production' ? '/formsapi/v1' : 'https://racqformscm.localhost/formsapi/v1';\r\n\r\nexport const FormUrlBase =\r\n process.env.NODE_ENV === 'production'\r\n ? 'https://#{racq.website.cd.form.hostname}/insurance/quote'\r\n : '/insurance/quote';\r\n//export const ApiSuffix = \"?sc_apikey=\" + config.sitecoreApiKey;\r\n\r\n//login url's\r\nexport const authenticationUrl = `${ApiPrefix}/login/authenticate`;\r\nexport const getLoginUrl = `${ApiPrefix}/login/GetLoginUrl?currentUrl={0}`;\r\nexport const isAuthenticatedUrl = `${ApiPrefix}/login/isauthenticated`;\r\nexport const getLoginUrlSitecore8 = `${ApiPrefix}/login/getLoginUrlSitecore8`;\r\nexport const logoutUrl = `${ApiPrefix}/login/logout`;\r\n\r\n// api's for assistance product\r\nexport const getAssistanceProduct = `${ApiPrefix}/assistance/getassistanceproduct?policyId={0}`;\r\nexport const setAssistanceAutoRenewFlag = `${ApiPrefix}/assistance/setautoRenewflag?policyId={0}`;\r\nexport const isEligibilityForCancellation = `${ApiPrefix}/assistance/iseligibilityforcancellation?policyId={0}`;\r\n\r\n// api's for insurance products\r\nexport const getInsuranceProduct = `${ApiPrefix}/insurance/getinsuranceproduct?policyNumber={0}`;\r\nexport const isInsuranceEligibleForCancellation = `${ApiPrefix}/insurance/IsEligibleForCancellation?policyNumber={0}`;\r\nexport const isCancellationDateEligible = `${ApiPrefix}/insurance/iscancellationdateeligible`;\r\nexport const cancelInsurance = `${ApiPrefix}/insurance/cancelinsurance`;\r\n\r\n// api's for roadside assistance products\r\nexport const cancelRoadsideAssistanceJob = `${ApiPrefix}/roadsideassistance/CancelJob`;\r\nexport const getServiceabilityRoadsideAssistanceJob = `${ApiPrefix}/roadsideassistance/GetServiceAbility?latitude={0}&longitude={1}`;\r\nexport const matchPartyRoadsideAssistanceJob = `${ApiPrefix}/roadsideassistance/MatchParty`;\r\nexport const postCreateRsaJobJoinOnRoad = `${ApiPrefix}/roadsideassistance/CreateJobJoinOnRoad`;\r\nexport const getCheckEligibility = `${ApiPrefix}/roadsideassistance/CheckEligibility?d365Id={0}&vehicleRegistration={1}`;\r\nexport const postCreateRsaJobHtml = `${ApiPrefix}/roadsideassistance/CreateJobHtml`;\r\nexport const isTrackableUrl = `${ApiPrefix}/roadsideassistance/IsTrackable?dispatchGroup={0}`;\r\nexport const getShouldJeopardy = `${ApiPrefix}/roadsideassistance/ShouldJeopardy?policyStatus={0}`;\r\n\r\n// api's for insurance quote session\r\nexport const getQuoteSessionId = `${ApiPrefix}/quotesessionv2/getquotesession?policyNumber={0}"eSessionType={1}`;\r\nexport const getQuoteSessionIdByCoverage = `${ApiPrefix}/quotesessionv2/getquotesessionbycoverage?policyNumber={0}"eSessionType={1}&coverageId={2}`;\r\nexport const bindQuoteSessionUrl = `${ApiPrefix}/quotesessionv2/BindQuoteSession?quoteSessionId={0}`;\r\nexport const quoteSessionProcessPaymentUrl = `${ApiPrefix}/quotesessionv2/ProcessPayment?policyNumber={0}"eSessionId={1}`;\r\nexport const withdrawQuoteSessionUrl = `${ApiPrefix}/quotesessionv2/WithdrawQuoteSession?quoteSessionId={0}`;\r\n\r\n// api's for profile data\r\nexport const getIdentityDetails = `${ApiPrefix}/identity/getidentitydetails`;\r\nexport const checkUpdatePostalAddressRequired = `${ApiPrefix}/identity/CheckUpdatePostalAddressRequired?partyId={0}&dpid={1}`;\r\nexport const getLoyaltyType = `${ApiPrefix}/identity/GetLoyaltyType`;\r\nexport const getResidentialAddress = `${ApiPrefix}/identity/GetResidentialAddress`;\r\nexport const putUpdatePostalAddress = `${ApiPrefix}/identity/updatePostalAddress?d365Id={0}`;\r\nexport const getMembershipCardNumber = `${ApiPrefix}/identity/GetMemberCardNumber`;\r\n\r\n// api's for reference data\r\nexport const getNumOfStoreys = `${ApiPrefix}/refdata/getnumofstoreys?buildingType={0}`;\r\nexport const getLowestOccupiedFloor = `${ApiPrefix}/refdata/getlowestoccupiedfloor?buildingType={0}`;\r\nexport const getPrimaryConstructionMaterials = `${ApiPrefix}/refdata/getprimaryconstructionmaterials?quoteType={0}`;\r\nexport const getRoofTypeMaterials = `${ApiPrefix}/refdata/getrooftypematerials?quoteType={0}`;\r\nexport const getBuildingTypes = `${ApiPrefix}/refdata/getbuildingtypes`;\r\nexport const getPersonTitles = `${ApiPrefix}/refdata/getPersonTitles`;\r\nexport const getGenders = `${ApiPrefix}/refdata/getGenders`;\r\nexport const getPetTypes = `${ApiPrefix}/refdata/getPetTypes?quoteType={0}`;\r\nexport const getPetBreeds = `${ApiPrefix}/refdata/getPetBreeds?quoteType={0}&petType={1}`;\r\nexport const fetchHomeClaimTypes = `${ApiPrefix}/refdata/getHomeClaimTypes?quoteType={0}`;\r\nexport const fetchHomeLossTypes = `${ApiPrefix}/refdata/getHomeLossTypes?quoteType={0}`;\r\nexport const fetchHomeLossValues = `${ApiPrefix}/refdata/getHomeLossValues?quoteType={0}`;\r\nexport const getHomeAdvancedCover = `${ApiPrefix}/refdata/getHomeAdvancedOptions?quoteType={0}&occupancyType={1}`;\r\nexport const getHomeOccupancyTypes = `${ApiPrefix}/refdata/getHomeOccupancyTypes`;\r\nexport const getHomeFloorOccupancy = `${ApiPrefix}/refdata/getHomeFloorOccupancy?buildingType={0}`;\r\nexport const getHomeGroupCoverPriceBands = `${ApiPrefix}/refdata/getGroupCoverPriceBands?quoteType={0}`;\r\nexport const getPortableItemCategories = `${ApiPrefix}/refdata/getPortableItemCategories?quoteType={0}`;\r\nexport const getHomeItemCategories = `${ApiPrefix}/refdata/getHomeItemCategories?quoteType={0}&withPolicyUpdate={1}`;\r\nexport const getSmallBusinessInsuranceLimitValue = `${ApiPrefix}/refdata/getSmallBusinessInsuranceLimitValue?quoteType={0}`;\r\nexport const getEathquakeExcesses = `${ApiPrefix}/refdata/getEathquakeExcesses?quoteType={0}`;\r\nexport const getPetExcesses = `${ApiPrefix}/refdata/getPetExcesses?quoteType={0}`;\r\nexport const getPortableExcesses = `${ApiPrefix}/refdata/getPortableExcesses?quoteType={0}`;\r\nexport const getPortableMobileExcesses = `${ApiPrefix}/refdata/getPortableMobileExcesses?quoteType={0}`;\r\nexport const getMotorExcessesUrl = `${ApiPrefix}/refdata/GetExcess?quoteType={0}&effectiveDate={1}`;\r\nexport const getDriverLicenseIssueTypes = `${ApiPrefix}/refdata/getDriverLicenseIssueTypes`;\r\nexport const getAtFaultClaimValues = `${ApiPrefix}/refdata/GetAtFaultClaimValues`;\r\nexport const getAtFaultClaimTypes = `${ApiPrefix}/refdata/GetAtFaultClaimTypes`;\r\nexport const getFrameMaterials = `${ApiPrefix}/refdata/getFrameMaterials?quoteType={0}`;\r\nexport const getFloorMaterials = `${ApiPrefix}/refdata/getFloorMaterials?quoteType={0}`;\r\nexport const getMonitoredAlarmTypes = `${ApiPrefix}/refdata/getMonitoredAlarmTypes?quoteType={0}`;\r\nexport const getHomeAndContentProducts = `${ApiPrefix}/refdata/GetHomeAndContentProducts?occupancyType={0}&buildingType={1}`;\r\nexport const getHomeAndContentBuildingPropertyFeatures = `${ApiPrefix}/refdata/getBuildingPropertyFeatures`;\r\nexport const getInsuranceProducts = `${ApiPrefix}/refdata/getInsuranceProducts`;\r\nexport const getMembershipLevels = `${ApiPrefix}/refdata/getMembershipLevels?quoteType={0}`;\r\nexport const getQuotingFeesPayByMonth = `${ApiPrefix}/refdata/getQuotingFeesByMonth?effectiveDate={0}`;\r\nexport const getParkingLocationsUrl = `${ApiPrefix}/refdata/getparkinglocations`;\r\nexport const getVehicleBusinessUseTypesListUrl = `${ApiPrefix}/refdata/getVehicleBusinessUseTypes`;\r\nexport const getFinanceTypesUrl = `${ApiPrefix}/refdata/getfinancetypes`;\r\nexport const getDriverLicenseYearsHeldRangesUrl = `${ApiPrefix}/refdata/GetDriverLicenseYearsHeldRanges`;\r\nexport const getHomeExcessValues = `${ApiPrefix}/refdata/getHomeExcessValues`;\r\nexport const getContentsExcessValues = `${ApiPrefix}/refdata/getContentsExcessValues`;\r\nexport const getAdvancedCoverValues = `${ApiPrefix}/refdata/GetAdvancedCoverValues?quoteType={0}&occupancyType={1}`;\r\nexport const getPetCover = `${ApiPrefix}/refdata/GetPetCover?quoteType={0}&occupancyType={1}`;\r\n\r\n//common services\r\nexport const getFinancialInstitutionFromBsb = `${ApiPrefix}/payment/getfinancialinstitutionfrombsb?bsb={0}`;\r\nexport const getPaymentConfiguration = `${ApiPrefix}/paymentgateway/getpaymentconfiguration`;\r\n\r\n// api's for renewal offer data\r\nexport const getRenewalPolicyDetails = `${ApiPrefix}/insurance/getRenewalPolicyDetails?policyId={0}`;\r\nexport const setRenewalOfferPreference = `${ApiPrefix}/insurance/setRenewalOffer`;\r\nexport const sendRenewalReceiptEmail = `${ApiPrefix}/insurance/sendRenewalReceiptEmail`;\r\nexport const reinstatePolicy = `${ApiPrefix}/insurance/reinstatePolicy?policyNumber={0}`;\r\n\r\n// api's for add to cover form\r\nexport const addToCoverGetQuoteSessionId = `${ApiPrefix}/addtocover/GetQuoteSessionId?policyNumber={0}`;\r\nexport const addToCoverUpdateCoveragePricing = `${ApiPrefix}/addtocover/UpdateCoveragePricing?quoteSessionId={0}`;\r\nexport const addToCoverGetPolicyRenewal = `${ApiPrefix}/addtocover/GetPolicyRenewal?policyNumber={0}`;\r\nexport const addToCoverSubmitChanges = `${ApiPrefix}/addtocover/SubmitChanges`;\r\n\r\n// api's for update cyclone form\r\nexport const updateFloodCycloneDetails = `${ApiPrefix}/homeinsurance/updatefloodcyclonedetails?quoteSessionId={0}`;\r\n\r\n// callback form api\r\nexport const submitCallBackDetails = `${ApiPrefix}/callback/submitcallbackform?policyid={0}`;\r\n\r\n// autoglass form api\r\nexport const submitAutoGlassFormDetails = `${ApiPrefix}/autoglass/submitautoglassform`;\r\n\r\nexport const isProduction = process.env.NODE_ENV === 'production';\r\nexport const localURL = 'http://localhost:3001';\r\n\r\nexport const getLiveChatSessionData = `${ApiPrefix}/livechatapi/getsessiondata`;\r\n\r\nexport const getSelfServiceAccountOverviewUrl = `${ApiPrefix}/configuration/getselfserviceaccountoveriewpage`;\r\nexport const getSelfServiceChangeVehicleUrl = `${ApiPrefix}/configuration/getselfservicechangevehiclepage?isinsuranceproduct={0}`;\r\nexport const getSelfServiceMakePaymentUrl = `${ApiPrefix}/configuration/getselfservicemakepaymentpage`;\r\nexport const getSelfServiceRoadsideAssistancePageUrl = `${ApiPrefix}/configuration/getselfserviceroadsideassistancepage`;\r\n\r\nexport const getFeatureToggles = `${ApiPrefix}/commonconfiguration/getFeatureToggles`;\r\nexport const getIQConfigSettings = `${ApiPrefix}/insurancequoteconfig/getIQConfigSettings`;\r\nexport const getCommonConfigSettings = `${ApiPrefix}/configuration/getcommonconfigurationsettings`;\r\n\r\n// api's for vehicle lookup\r\nexport const getVehicleByRego = `${ApiPrefix}/vehicle/getvehiclebyrego`;\r\nexport const getVehiclesByMake = `${ApiPrefix}/vehicle/getmakes`;\r\nexport const getVehicleModels = `${ApiPrefix}/vehicle/getmodels`;\r\nexport const getVehicleVariants = `${ApiPrefix}/vehicle/getvariants`;\r\nexport const getVehicleBodies = `${ApiPrefix}/vehicle/getbodies`;\r\nexport const getVehicleDetails = `${ApiPrefix}/vehicle/getvehicledetails`;\r\nexport const getVehiclesByNVIC = `${ApiPrefix}/vehicle/getvehiclebynvic`;\r\nexport const getVehicleYears = `${ApiPrefix}/vehicle/getvehicleyears`;\r\nexport const getCombinedAccessoriesList = `${ApiPrefix}/refdata/getcombinedaccessorieslist`;\r\nexport const getVehicleEligibility = `${ApiPrefix}/vehicle/getvehicleeligibility`;\r\n\r\n// api for address lookup\r\nexport const getSuburbsByPostcode = `${ApiPrefix}/refdata/GetSuburbsByPostcode?postcode={0}&excludePostal={1}`;\r\nexport const getInsuranceRiskSuburbs = `${ApiPrefix}/refdata/GetInsuranceRiskSuburbs?query={0}`;\r\nexport const getAddressLookupAutocomplete = `${ApiPrefix}/addresslookup/autocomplete?query={0}`;\r\nexport const getCountryLookupAutocomplete = `${ApiPrefix}/addresslookup/country?query={0}&allCountries={1}`;\r\nexport const getAddressLookupFormat = `${ApiPrefix}/addresslookup/format`;\r\nexport const getIsCycloneCovered = `${ApiPrefix}/addresslookup/getIsCycloneCovered`;\r\nexport const formatRiskAddressUrl = `${ApiPrefix}/addresslookup/format-risk-address`;\r\n\r\n// api for get insurance quote\r\nexport const getInsuranceQuoteById = `${ApiPrefix}/Quote/GetQuote?quoteId={0}`;\r\nexport const postInsuranceQuoteCreateQuote = `${ApiPrefix}/Quote/CreateQuote`;\r\nexport const postInsuranceQuoteApplyRules = `${ApiPrefix}/Quote/ApplyRules?quoteId={0}`;\r\nexport const postInsuranceQuoteUpdateQuote = `${ApiPrefix}/Quote/UpdateQuote?quoteId={0}`;\r\nexport const postInsuranceQuoteCalculatePrice = `${ApiPrefix}/Quote/CalculatePremium?quoteId={0}`;\r\nexport const postInsuranceSubmitQuote = `${ApiPrefix}/Quote/SubmitQuote?quoteId={0}`;\r\nexport const postInsuranceQuoteSendQuoteEmail = `${ApiPrefix}/Quote/SendQuoteEmail?quoteId={0}`;\r\n\r\n// api for lifestyle form\r\nexport const getJoinLifestyleFormInitialContent = `${ApiPrefix}/Lifestyle/GetJoinLifestyleFormInitialContent`;\r\nexport const checkLifestyleIsEligible = `${ApiPrefix}/Lifestyle/IsEligible`;\r\nexport const postLifestyleSubmitPurchase = `${ApiPrefix}/Lifestyle/SubmitPurchase`;\r\n\r\n// api for change payment details form\r\nexport const changePaymentDetailsFetchPaymentDetails = `${ApiPrefix}/ChangePaymentDetails/FetchPaymentDetails?quoteSessionId={0}`;\r\nexport const changePaymentDetailsApplyRulesAndSave = `${ApiPrefix}/ChangePaymentDetails/ApplyRulesAndSave`;\r\n\r\n// api for change vehicle location form\r\nexport const changeVehicleLocationGetPolicy = `${ApiPrefix}/ChangeVehicleLocation/GetPolicy?quoteSessionId={0}`;\r\nexport const changeVehicleLocationApplyBusinessRules = `${ApiPrefix}/ChangeVehicleLocation/ApplyBusinessRules`;\r\n\r\n// api for decision intelligence\r\nexport const postDecisionIntelligenceCreateOffer = `${ApiPrefix}/DecisionIntelligence/CreateOffer`;\r\nexport const getDecisionIntelligenceOffer = `${ApiPrefix}/DecisionIntelligence/GetDecisionOffer?decisionOfferId={0}`;\r\nexport const acknowlegeDecisionOffer = `${ApiPrefix}/DecisionIntelligence/AcknowledgeOffer?decisionId={0}`;\r\nexport const acknowlegeRenewalDecisionOffer = `${ApiPrefix}/DecisionIntelligence/acknowledgerenewaloffer`;\r\n\r\nexport const createLead = `${ApiPrefix}/DecisionIntelligence/CreateLead?d365Id={0}`;\r\nexport const createRsaPrepayOffer = `${ApiPrefix}/DecisionIntelligence/createroadsideprepayrenewaloffer`;\r\nexport const getRsaPrepayOffer = `${ApiPrefix}/DecisionIntelligence/getrsaprepayoffer?decisionId={0}`;\r\nexport const acknowledgePrepayOffer = `${ApiPrefix}/DecisionIntelligence/acknowledgersaprepayoffer?prn={0}&apttusQuoteId={1}&apttusId={2}`;\r\n\r\n//api's for google maps\r\nexport const getJORGoogleMapsApiKey = `${ApiPrefix}/JORGoogleMaps/getApiKey`;\r\nexport const getJORGoogleMapsMapId = `${ApiPrefix}/JORGoogleMaps/getMapId`;\r\nexport const getJORGoogleMapsDefaultZoomLevel = `${ApiPrefix}/JORGoogleMaps/getDefaultZoomLevel`;\r\nexport const getJORGoogleMapsTipText = `${ApiPrefix}/JORGoogleMaps/getTipText`;\r\n\r\n//api for join on road (JOR) form\r\nexport const getJORProducts = `${ApiPrefix}/joinonroad/getproducts`;\r\nexport const postJORCreateParty = `${ApiPrefix}/joinonroad/CreateParty`;\r\nexport const postJORCreateQuote = `${ApiPrefix}/joinonroad/CreateQuote`;\r\nexport const postJORFinaliseQuote = `${ApiPrefix}/joinonroad/FinaliseQuote?apttusQuoteId={0}&apttusCartId={1}`;\r\nexport const postJorSubmitPurchase = `${ApiPrefix}/joinonroad/submitpurchase`;\r\n\r\n// api for payment reference number\r\nexport const getPrnDetails = `${ApiPrefix}/payment/getprndetails?prn={0}`;\r\nexport const processPrnPayment = `${ApiPrefix}/payment/processpayment`;\r\nexport const sendReceiptEmail = `${ApiPrefix}/payment/sendreceiptemail`;\r\nexport const applyDiscountToQuote = `${ApiPrefix}/payment/applydiscounttoquote`;\r\nexport const addDirectDebitToPrn = `${ApiPrefix}/payment/adddirectdebittoprn?apttusId={0}`;\r\n\r\n// api for switch to monthly self service form\r\nexport const switchToMonthlyGetPolicy = `${ApiPrefix}/SwitchToMonthly/GetPolicy?quoteSessionId={0}`;\r\nexport const switchToMonthlyApplyBusinessRules = `${ApiPrefix}/SwitchToMonthly/ApplyBusinessRules`;\r\n","export const YES = 'Yes';\r\nexport const NO = 'No';\r\nexport const NOT_SURE = 'Not sure';\r\nexport const UNKNOWNN = 'Unknown';\r\nexport const ZERO_DOLLAR = '$0';\r\nexport const RACQ_BANK = 'RACQ Bank';\r\nexport const DROPDOWN_PLACEHOLDER = 'Please select';\r\nexport const AUSTRALIA = 'Australia';\r\nexport const AUSTRALIA_ISO = 'AUS';\r\nexport const RACQ = 'RACQ';\r\nexport const QLD = 'QLD';\r\n","export class HQStepIds {\r\n public static readonly GetStarted = 'GetStarted'.toLowerCase();\r\n public static readonly StartYourQuote = 'StartYourQuote'.toLowerCase();\r\n public static readonly CoverDetails = 'CoverDetails'.toLowerCase();\r\n public static readonly BuildingDetails = 'BuildingDetails'.toLowerCase();\r\n public static readonly PortableItems = 'PortableItems'.toLowerCase();\r\n public static readonly HomeItems = 'HomeItems'.toLowerCase();\r\n public static readonly GeneralContents = 'GeneralContents'.toLowerCase();\r\n public static readonly PersonalDetails = 'PersonalDetails'.toLowerCase();\r\n public static readonly YourQuote = 'YourQuote'.toLowerCase();\r\n}\r\n\r\nexport class APIValues {\r\n static readonly BuildingType = class {\r\n public static readonly House = 'House';\r\n public static readonly Duplex = 'Duplex';\r\n public static readonly Townhouse = 'Townhouse';\r\n public static readonly Unit = 'Unit';\r\n public static readonly Flat = 'Flat';\r\n public static readonly BoardingHome = 'BoardingHome';\r\n public static readonly ManufTransportableHome = 'ManufTransportableHome';\r\n public static readonly Storage = 'Storage';\r\n };\r\n static readonly OccupancyType = class {\r\n public static readonly OwnerOccupied = 'OWNEROCC';\r\n public static readonly Landlord = 'LANDLORD';\r\n };\r\n static readonly PolicyType = class {\r\n public static readonly HomeOnly = 'HH';\r\n public static readonly ContentOnly = 'HC';\r\n public static readonly HomeAndContents = 'HHCOMB';\r\n };\r\n static readonly PropertyFeatures = class {\r\n public static readonly GarageRollerDoors = 'GRD';\r\n public static readonly WindowWeatherProtection = 'WWP';\r\n public static readonly UpgradedReplacedRoof = 'URR';\r\n };\r\n}\r\n","export const JP_GENERIC_CODE = 'JP_GENERIC';\r\nexport const JP_EXCEPTION = 'JP_EXCEPTION';\r\nexport const JP_LOGGEDOUT = 'JP_LOGGEDOUT';\r\nexport const JP_DOD_DISAGREE = 'JP_DOD_DISAGREE';\r\nexport const JP_CHANGENOTALLOWED = 'JP_CHANGENOTALLOWED';\r\nexport const JP1 = 'JP1'; // Unacceptable vehicle value/points/accept code\r\nexport const JP3 = 'JP3'; // Unacceptable location\r\nexport const JP_DISAGREE_CONDITIONS = 'JP31'; //User does not agree to General conditions when purchasing a quote\r\nexport const JP_DISAGREE_CONDITIONS_SS = 'JP31_SS'; //JP31 for self service\r\nexport const JP_PAYMENT_MAX_ATTEMPTS_REACHED = 'JP_PAYMENT_MAX_ATTEMPTS_REACHED';\r\nexport const JP79 = 'JP79';\r\nexport const JP_UNACCEPTABLE_PET_AGE = 'JP24';\r\nexport const JP_UNACCEPTABLE_BUILDING_CONDITION = 'JP21';\r\n\r\n// JOR specific jeopardy codes\r\nexport const JP_JOR_GENERIC = 'JP_JOR_GENERIC';\r\nexport const JP_JOR_TECH_ERROR = 'JP_JOR_TECH_ERROR';\r\nexport const JP_JOR_INELIGIBLE_VEHICLE = 'JP_JOR_INELIGIBLE_VEHICLE'; // Ineligible vehicle for RSA (too long, too heavy, etc.)\r\nexport const JP_JOR_EMERG = 'JP_JOR_EMERG'; // Jeopardy users in JOR form when they are in critical situation\r\nexport const JP_JOR_CREATE_JOB_FAIL = 'JP_JOR_CREATE_JOB_FAIL'; // Jeopardy when the Create Roadside job fails\r\n\r\n// IQMQ specific jeopardy codes\r\nexport const JP_RIDE_SHARE = 'JP_RIDE_SHARE';\r\n\r\n// IQHQ specific jeopardy codes\r\nexport const JP_Ineligible_Mobile_Items = 'JP_Ineligible_Mobile_Items';\r\nexport const Warning_Mobile_Value = 'MBMV';\r\nexport const Warning_Mobile_Ineligible = 'MBPH';\r\nexport const Warning_Home_Items = 'JP33';\r\n\r\n//Make a payment Jeopardy codes\r\nexport const JP_SERVICE_ERROR = 'JP_SERVICE_ERROR';\r\n","export const OrdinalNumbers = ['First', 'Second', 'Third', 'Fourth', 'Fifth'];\r\n// The Ordinal Text values are limited to the 5th level,\r\n// so we are setting this limit to 5.\r\nexport const MaxAdditional = 5;\r\n","export enum QuoteTypes {\r\n MC = 1, //MotorComprehensive\r\n All = 2, //All\r\n HH = 3, //Home\r\n HC = 4, //Contents\r\n HHCOMB = 5, // Home & Contents\r\n MT = 6, //MotorThirdPartyLiability\r\n MF = 7, //MotorFireTheftAndThirdPartyLiability\r\n PET = 8, //Pet\r\n Caravan = 9, //Caravan\r\n Motorcycle = 10, //Motorcycle\r\n BC = 11, //Boat comprehesive\r\n BT = 12, //Boat third party\r\n MTOther = 13, //MotorThirdPartyLiability\r\n MFOther = 14, //MotorFireTheftAndThirdPartyLiability\r\n MCOther = 15, //MotorComprehensive\r\n}\r\n","export const CLEAR_ICON =\r\n '';\r\n","export enum AlertTypes {\r\n info = 'info',\r\n danger = 'danger',\r\n warning = 'warning',\r\n success = 'success',\r\n}\r\n","export enum DecisionContentTypes {\r\n DecisionIntelligenceCrossSellOffers = 'DecisionIntelligenceCrossSellOffers',\r\n ContactUsTimes = 'Contact Us Times',\r\n EmailTimes = 'Email Times',\r\n DecisionIntelligenceContent = 'Decision Intelligence Content',\r\n}\r\nexport enum CoverTypeMapping {\r\n MC = 'Comprehensive Car', //MotorComprehensive\r\n HH = 'Home', //Home\r\n HC = 'Contents', //Contents\r\n HHCOMB = 'Home and Contents', // Home & Contents\r\n MT = 'Third Party Liability', //MotorThirdPartyLiability\r\n MF = 'Fire, Theft and Third Party', //MotorFireTheftAndThirdPartyLiability\r\n PET = 'Pet', //Pet\r\n}\r\nexport enum OccupancyTypesMapping {\r\n OWNEROCC = 'Owner Occupied',\r\n LANDLORD = 'Landlord',\r\n TENANTPERM = 'Renting',\r\n}\r\nexport const ProductMapping = {\r\n MC: 'Motor Insurance', //MotorComprehensive\r\n HH: 'Home Insurance', //Home\r\n All: 'All', //All\r\n HC: 'Home Insurance', //Contents\r\n HHCOMB: 'Home Insurance', // Home & Contents\r\n MT: 'Motor Insurance', //MotorThirdPartyLiability\r\n MF: 'Motor Insurance', //MotorFireTheftAndThirdPartyLiability\r\n PET: 'Pet Insurance', //Pet\r\n};\r\n","export enum FormEvents {\r\n START = 'form.start',\r\n STEP = 'form.step',\r\n COMPLETE = 'form.complete',\r\n JEOPARDY = 'form.jeopardy',\r\n RESPONSE = 'form.response',\r\n REQUEST = 'form.request',\r\n SEARCH_REGISTRATION = 'search.registration',\r\n PAYMENT_ATTEMPT = 'payAttempt',\r\n CROSS_SELL_CLICK = 'crossSellClick',\r\n CHAT_STARTED = 'form.chatstarted',\r\n FORM_SUBMIT = 'form.submit',\r\n}\r\n","export enum FormInputTypes {\r\n ADDRESS_AUTOCOMPLETE = 'addressautocomplete',\r\n LABEL = 'label',\r\n FIND_CAR = 'findcar',\r\n DATE_INPUT = 'dateinput',\r\n TITLE_NAME = 'titlename',\r\n CUSTOM = 'custom',\r\n GENDER = 'gender',\r\n CALL_TO_ACTION_CARD = 'calltoactioncard',\r\n DISCLAIMER = 'disclaimer',\r\n SECTION_FRAME = 'sectionframe',\r\n PAYMENT_SECTION = 'paymentsection',\r\n DATEPICKER = 'datepicker',\r\n LOGINBUTTON = 'loginButton',\r\n RADIO_CARD_LIST = 'radioCardList',\r\n PROGRESS_TRACKER = 'progresstracker',\r\n PHONE_NUMBER = 'tel',\r\n PANEL_TITLE = 'paneltitle',\r\n CHECKBOX = 'checkbox',\r\n CUSTOM_EMAIL_CONFIRMATION = 'customemailconfirmation',\r\n PAYMENT_HEADER = 'paymentheader',\r\n}\r\n","export enum PaymentFrequency {\r\n Annually = 1,\r\n Monthly = 2,\r\n}\r\n","export enum PaymentTypes {\r\n CreditCard = 1,\r\n BankAccount = 2,\r\n PayLater = 3,\r\n PayPal = 4,\r\n}\r\n\r\nexport enum PaymentMethod {\r\n CreditCard = 0,\r\n BankAccount = 1,\r\n}\r\n","export enum QuoteChangeState {\r\n Unchanged = 0,\r\n Changed = 1,\r\n BusinessRuleComplete = 2,\r\n UsedInQuote = 3,\r\n}\r\n","export enum QuoteVehicleUseTypes {\r\n Private = 1,\r\n Business = 2,\r\n}\r\n","export enum TagOrientation {\r\n horizontal,\r\n vertical,\r\n}\r\n\r\nexport enum TagTypes {\r\n discount = 'discount',\r\n}\r\n","import { IQuote } from '@/interfaces';\r\nimport { replaceBookmark } from '@/utils/bookmark.replace';\r\nimport { toCurrency } from '@/utils/convert';\r\n\r\nexport enum Bookmarks {\r\n firstName = 'firstName',\r\n membershipLevel = 'membershipLevel',\r\n quoteAmountAnnually = 'quoteAmountAnnually',\r\n quoteAmountMonthly = 'quoteAmountMonthly',\r\n}\r\n\r\nexport const replaceLoyaltyReviewBookmarks = (content: string, quote: Partial) => {\r\n let replaceBookmarksContent = replaceBookmark(\r\n Bookmarks.firstName,\r\n content,\r\n quote?.primaryPolicyHolderDetails?.firstname.value ?? ''\r\n );\r\n replaceBookmarksContent = replaceBookmark(\r\n Bookmarks.membershipLevel,\r\n replaceBookmarksContent,\r\n quote?.discounts?.highestMembershipLoyaltyLevel?.value ?? ''\r\n );\r\n\r\n if (quote.insuranceQuoteSummary) {\r\n replaceBookmarksContent = replaceBookmark(\r\n Bookmarks.quoteAmountAnnually,\r\n replaceBookmarksContent,\r\n toCurrency(quote.insuranceQuoteSummary.yearlyAnnualPremium)\r\n );\r\n replaceBookmarksContent = replaceBookmark(\r\n Bookmarks.quoteAmountMonthly,\r\n replaceBookmarksContent,\r\n toCurrency(quote.insuranceQuoteSummary.monthlyInstalment)\r\n );\r\n }\r\n\r\n return replaceBookmarksContent;\r\n};\r\n","export interface CreateRoadsideJobRequest {\r\n membership: Membership;\r\n triageAnswers: TriageAnswers;\r\n vehicle: RequestVehicle;\r\n channel: string;\r\n comments: string[];\r\n policyNumber: string;\r\n}\r\n\r\nexport interface Membership {\r\n membershipCardNumber: string;\r\n contact: Contact;\r\n firstName: string;\r\n lastName: string;\r\n address: string;\r\n loyaltyLevel?: string;\r\n roadsideProductId: string;\r\n}\r\n\r\nexport interface Contact {\r\n phone: string;\r\n}\r\n\r\nexport interface RequestVehicle extends Vehicle {\r\n location: Location;\r\n batteries?: string;\r\n}\r\n\r\nexport interface Vehicle {\r\n make: string;\r\n model: string;\r\n buildYear?: number; // YYYY\r\n colour: string;\r\n registration: string;\r\n registrationState?: RegistrationState;\r\n}\r\n\r\nexport interface Location {\r\n latitude?: number;\r\n longitude?: number;\r\n locationTimestamp?: Date;\r\n comment: string;\r\n heading?: number;\r\n velocity?: number;\r\n}\r\n\r\nexport enum RegistrationState {\r\n ACT = 'ACT',\r\n NSW = 'NSW',\r\n VIC = 'VIC',\r\n QLD = 'QLD',\r\n TAS = 'TAS',\r\n WA = 'WA',\r\n SA = 'SA',\r\n NT = 'NT',\r\n}\r\n\r\nexport interface CreateRoadsideJobResponse {\r\n eventId: string;\r\n jobId: string;\r\n assistanceId?: string;\r\n membership: RsaMembership;\r\n triageAnswers: TriageAnswers;\r\n roadsideAssistanceStatus: RsaStatus;\r\n}\r\n\r\nexport interface RsaStatus {\r\n dispatchGroup: string;\r\n estimatedArrivalTimestamp?: Date;\r\n statusUpdateTimestamp?: Date;\r\n state: RsaStatusState;\r\n}\r\n\r\nexport interface RsaStatusState {\r\n type: string;\r\n}\r\n\r\nexport interface RsaMembership {\r\n membershipId: string;\r\n contact: Contact;\r\n}\r\n\r\nexport interface TriageAnswers {\r\n [key: string]: string[];\r\n}\r\n\r\nexport interface Address {\r\n dpid?: string;\r\n addressType?: string;\r\n unit?: string;\r\n streetNumber?: string;\r\n street?: string;\r\n suburb?: string;\r\n postcode?: string;\r\n state?: string;\r\n country?: string;\r\n unitType?: string;\r\n buildingLevel?: string;\r\n formattedStreet?: string;\r\n formattedLong?: string;\r\n}\r\n\r\nconst RoadsideProductNameToProductIdMap: { [key: string]: string } = {\r\n 'RACQ Everyday': '2363',\r\n 'RACQ Everyday Plus': '2364',\r\n 'RACQ Ultra': '2365',\r\n 'RACQ Ultimate': '2366',\r\n};\r\n\r\nconst RoadsideProductCodeToProductIdMap: { [key: string]: string } = {\r\n AR007: '2363', // RACQ Everyday\r\n AR008: '2364', // RACQ Everyday Plus\r\n AR009: '2365', // RACQ Ultra\r\n AR010: '2366', // RACQ Ultimate\r\n};\r\n\r\nexport function getRoadsideProductCodeToProductId(roadsideProductCode: string): string | undefined {\r\n return RoadsideProductCodeToProductIdMap[roadsideProductCode];\r\n}\r\n\r\nexport function getRoadsideProductNameToProductId(roadsideProductName: string): string | undefined {\r\n return RoadsideProductNameToProductIdMap[roadsideProductName];\r\n}\r\n","import {\r\n Address,\r\n CreateRoadsideJobRequest,\r\n getRoadsideProductCodeToProductId,\r\n getRoadsideProductNameToProductId,\r\n} from '@/interfaces/entities/jor-create-rsa-job.interface';\r\nimport { PartyMatchStatus } from '@/interfaces/entities/roadside-assistance.interface';\r\nimport { JoinOnRoadDetails } from '@/interfaces/pages/join-on-road.interface';\r\nimport { AccountServices as _account } from '@/services/store/account.services';\r\nimport { useJoinOnRoadStore } from '@/store';\r\n\r\nexport const YOUR_DETAILS_STEP_ID = 'yourdetails';\r\nexport const YOUR_DETAILS_PERSONAL_DETAILS_STEP_ID = 'yourdetailspersonaldetails';\r\nexport const REVIEW_STEP_ID = 'review';\r\nexport const CONFIRM_PURCHASE_STEP_ID = 'confirmpurchase';\r\nexport const PAYMENT_STEP_ID = 'payment';\r\nexport const PAYMENT_CONFIRMATION_STEP_ID = 'paymentconfirmation';\r\n\r\nexport const ANALYTICS_WE_NEED_TO_TALK_TO_YOU = 'We need to talk to you to arrange your roadside assistance';\r\nexport const ANALYTICS_WHEN_YOU_SPEAK_TO_AN_AGENT =\r\n 'We need to talk to you to finalise your assistance. When you speak to an agent please quote: Reference number';\r\nexport const ANALYTICS_NON_MEMBER = 'Non-member';\r\nexport const ANALYTICS_EXISTING_MEMBER_WITH_RSA = 'Existing RSA Coverage';\r\nexport const ANALYTICS_EXISTING_MEMBER_WITHOUT_RSA = 'Existing member no RSA Coverage';\r\nexport const ANALYTICS_PAYMENT_RETRIES_EXHAUSTED = 'Payment retries exhausted';\r\nexport const ANALYTICS_AGE_UNDER_21 = 'User under 21 years old';\r\nexport const ANALYTICS_RSA_ELIGIBILITY_API_ERROR = 'RSA eligibility API check technical failure';\r\nexport const ANALYTICS_RSA_INVALID_PRODUCT_STATUS = 'RSA member with product in reminder produced or pending payment';\r\nexport const ANALYTICS_RSA_FAILED_ELIGIBITLITY_OR_INVALID_PRODUCT_STATUS =\r\n 'Failed RSA eligibility check or invalid product status';\r\nexport const ANALYTICS_LOCATION_NOT_SERVICEABLE = 'Location not serviceable';\r\nexport const ANALYTICS_SYSTEM_FAILTURE = 'System failure';\r\nexport const ANALYTICS_FAILED_VEHICLE_ELIGIBILITY = 'Vehicle eligibility check failed';\r\n\r\nexport default {\r\n // Step 1 (Breakdown details)\r\n enterComments: 'enterComments',\r\n\r\n // Step 1 (Breakdown details) - Breakdown cause\r\n causeValidationError: 'causeValidationError',\r\n\r\n // Step 2 (Vehicle details)\r\n registrationNumber: 'registrationNumber',\r\n findCarBtn: 'findCarBtn',\r\n cantFindCarMessage: 'cantFindCarMessage',\r\n regoResultsStepContent: 'regoResultsStepContent',\r\n makeAndModelResultsStepContent: 'makeAndModelResultsStepContent',\r\n findCar: 'findCar',\r\n\r\n // Step 3 (Your Details) - Personal details\r\n titleName: 'titleName',\r\n birthDate: 'birthDate',\r\n emailAddress: 'emailAddress',\r\n\r\n // Step 3 (Your Details)\r\n phoneNumber: 'phoneNumber',\r\n homeAddress: 'homeAddress',\r\n checkPostalAddress: 'checkPostalAddress',\r\n postalAddress: 'postalAddress',\r\n\r\n // Step 3 (Your Details) - Phone number today\r\n phoneNumberToday: 'phoneNumberToday',\r\n phoneNumberTodayDescription: 'phoneNumberTodayDescription',\r\n\r\n // Step 5 (Confirm Purchase)\r\n confirmPurchaseStepSettings: 'confirmPurchaseStepSettings',\r\n\r\n // Payment\r\n paymentProgressTracker: 'paymentProgressTracker',\r\n\r\n // Review\r\n reviewSummary: 'reviewSummary',\r\n} as const;\r\n\r\nfunction joinJorAddressComponents(\r\n country?: string,\r\n unitNumber?: string,\r\n streetNumber?: string,\r\n street?: string,\r\n suburb?: string,\r\n state?: string,\r\n postcode?: string\r\n) {\r\n const addressParts = [];\r\n\r\n if (unitNumber && unitNumber.trim().length > 0) addressParts.push(unitNumber);\r\n if (streetNumber && streetNumber.trim().length > 0) addressParts.push(streetNumber);\r\n if (street && street.trim().length > 0) addressParts.push(street);\r\n if (suburb && suburb.trim().length > 0) addressParts.push(suburb);\r\n if (state && state.trim().length > 0) addressParts.push(state);\r\n if (postcode && postcode.trim().length > 0) addressParts.push(postcode);\r\n if (country && country.trim().length > 0) addressParts.push(country);\r\n\r\n if (addressParts?.length == 0) {\r\n // Return null, otherwise passing empty strings to this method will return 'undefined '\r\n return null;\r\n }\r\n\r\n return `${addressParts.shift()} ${addressParts.join(', ')}`;\r\n}\r\n\r\nexport async function createRsaJobJoinOnRoadRequest(\r\n joinOnRoadDetails: JoinOnRoadDetails,\r\n apttusId: string | null,\r\n policyNumber: string | null,\r\n assetId: string | null,\r\n loyaltyLevel: string\r\n): Promise {\r\n // When party match status is Exact, need to lookup the existing user to retrieve loyaltyType and address.\r\n // Otherwise treat the loyalty level as Blue and the address as entered by the user.\r\n let address = joinJorAddressComponents(\r\n joinOnRoadDetails.homeAddress?.country ?? '',\r\n joinOnRoadDetails.homeAddress?.unitNumber ?? '',\r\n joinOnRoadDetails.homeAddress?.streetNumber ?? '',\r\n joinOnRoadDetails.homeAddress?.street ?? '',\r\n joinOnRoadDetails.homeAddress?.suburb ?? '',\r\n joinOnRoadDetails.homeAddress?.state ?? '',\r\n joinOnRoadDetails.homeAddress?.postcode ?? ''\r\n );\r\n\r\n if (!address) {\r\n // No address supplied by user - retrieve from apttusId\r\n const residentialAddressResponse = await _account.getResidentialAddress(apttusId);\r\n if (residentialAddressResponse) {\r\n address = setResidentialAddress(residentialAddressResponse);\r\n }\r\n }\r\n\r\n const baseRequest = createBaseRsaJob(\r\n joinOnRoadDetails,\r\n 'HTML JOR',\r\n assetId!,\r\n address ?? '',\r\n loyaltyLevel,\r\n getRoadsideProductCodeToProductId(joinOnRoadDetails.jorSelectedProduct!)!\r\n );\r\n\r\n return {\r\n ...baseRequest,\r\n policyNumber: policyNumber!,\r\n } as CreateRoadsideJobRequest;\r\n}\r\n\r\nexport async function createRsaJobHtmlRequest(\r\n joinOnRoadDetails: JoinOnRoadDetails\r\n): Promise> {\r\n const joinOnRoadStore = useJoinOnRoadStore();\r\n\r\n const isExactMatch = joinOnRoadStore.matchPartyState?.matchStatus === PartyMatchStatus.Exact;\r\n const isLoggedIn = joinOnRoadStore.isMemberLoggedIn;\r\n\r\n let address = '';\r\n let apttusId = '';\r\n let loyaltyLevel: string | null = '';\r\n let membershipCardNumber: string | null = '';\r\n\r\n loyaltyLevel = joinOnRoadStore.eligibilityState?.membershipLoyaltyLevel ?? null;\r\n\r\n if (isExactMatch) {\r\n apttusId = joinOnRoadStore.matchPartyState!.apttusId!;\r\n membershipCardNumber = await _account.getMembershipCardNumber(joinOnRoadStore.apttusId);\r\n }\r\n\r\n if (isLoggedIn) {\r\n apttusId = joinOnRoadStore.apttusId!;\r\n membershipCardNumber = joinOnRoadStore.membershipCardNumber!;\r\n }\r\n\r\n const residentialAddressResponse = await _account.getResidentialAddress(apttusId);\r\n if (residentialAddressResponse) {\r\n address = setResidentialAddress(residentialAddressResponse) ?? '';\r\n }\r\n\r\n // If the member can create the RSA job by their loyalty level and not their policy then default to 'RACQ Everyday'\r\n const policyType = joinOnRoadStore.eligibilityState!.policyEligibleForAnyVehicles ?? 'RACQ Everyday';\r\n const roadsideProductId = getRoadsideProductNameToProductId(policyType);\r\n\r\n const baseRequest = createBaseRsaJob(\r\n joinOnRoadDetails,\r\n 'HTML',\r\n membershipCardNumber!,\r\n address,\r\n loyaltyLevel!,\r\n roadsideProductId!\r\n );\r\n\r\n return {\r\n ...baseRequest,\r\n } as CreateRoadsideJobRequest;\r\n}\r\n\r\nfunction createBaseRsaJob(\r\n joinOnRoadDetails: JoinOnRoadDetails,\r\n channel: string,\r\n membershipCardNumber: string,\r\n address: string,\r\n loyaltyLevel: string,\r\n roadsideProductId: string\r\n): Partial {\r\n return {\r\n channel: channel,\r\n comments: [joinOnRoadDetails.comments],\r\n triageAnswers: {\r\n SAFE_LOCATION: ['NO'],\r\n BREAKDOWN_REASON: [joinOnRoadDetails.breakdownCause],\r\n },\r\n membership: {\r\n roadsideProductId: roadsideProductId,\r\n membershipCardNumber: membershipCardNumber,\r\n lastName: joinOnRoadDetails.lastName,\r\n firstName: joinOnRoadDetails.firstName,\r\n contact: {\r\n phone: joinOnRoadDetails.phoneNumberToday,\r\n },\r\n address: address,\r\n loyaltyLevel: loyaltyLevel,\r\n },\r\n vehicle: {\r\n colour: joinOnRoadDetails.vehicleColour,\r\n make: joinOnRoadDetails.vehicleMake,\r\n model: joinOnRoadDetails.vehicleModel,\r\n registration: joinOnRoadDetails.vehicleRegistration,\r\n buildYear: parseInt(joinOnRoadDetails.vehicleYear, 10),\r\n location: {\r\n latitude: joinOnRoadDetails.breakdownLocationLatitude,\r\n longitude: joinOnRoadDetails.breakdownLocationLongitude,\r\n comment: joinOnRoadDetails.breakdownLocationAddress,\r\n },\r\n },\r\n } as Partial;\r\n}\r\n\r\nfunction setResidentialAddress(address: Address): string | null {\r\n return joinJorAddressComponents(\r\n address.country ?? '',\r\n address.unit ?? '',\r\n address.streetNumber ?? '',\r\n address.street ?? '',\r\n address.suburb ?? '',\r\n address.state ?? '',\r\n address.postcode ?? ''\r\n );\r\n}\r\n","import { STANDARD_DATE_FORMAT } from '@/constants/formats';\r\nimport { QuoteTypes } from '@/constants/quote-types.const';\r\nimport { ICardDetails, IReviewSummary, IReviewSummaryItem } from '@/interfaces';\r\nimport { IRenewalAcknowledgementModel } from '@/interfaces/decision-intelligence/decision-intelligence-request';\r\nimport { IDecisionIntelligenceOfferResponse } from '@/interfaces/decision-intelligence/decision-intelligence-response';\r\nimport { IAnalyticsForm } from '@/interfaces/forms/analytics-interface';\r\nimport { IHighlight } from '@/interfaces/forms/highlights-interface';\r\nimport {\r\n IApplyAssistanceQuoteDiscountRequest,\r\n IApttusDirectDebitRequest,\r\n IPayWithCardResponse,\r\n IPaymentReferenceDetails,\r\n IQuotedOption,\r\n IReceiptRequest,\r\n} from '@/interfaces/make-a-payment/make-a-payment.interface';\r\nimport { replaceBookmark } from '@/utils/bookmark.replace';\r\nimport { toCurrency } from '@/utils/convert';\r\nimport { getInsuranceTypeDisplayName } from '@/utils/editable-steps/quote-content-builder';\r\nimport { format } from 'date-fns';\r\n\r\nexport enum Bookmarks {\r\n amountPaid = 'amountPaid',\r\n coverName = 'coverName',\r\n insuranceType = 'insuranceType',\r\n productType = 'productType',\r\n paymentReferenceNumber = 'paymentReferenceNumber',\r\n paymentDate = 'paymentDate',\r\n prn = 'prn',\r\n coverType = 'coverType',\r\n transactionType = 'transactionType',\r\n termsAndConditionLink = 'termsAndConditionLink',\r\n email = 'email',\r\n}\r\nexport enum MakeAPaymentStepIds {\r\n Upgrade_Options = 'coverreview',\r\n}\r\nexport const mapReceiptRequest = (\r\n prn: string,\r\n emailAddress: string,\r\n paymentReferenceDetails?: IPaymentReferenceDetails,\r\n paymentResponse?: IPayWithCardResponse\r\n): IReceiptRequest => {\r\n return {\r\n pRN: prn,\r\n emailAddress: emailAddress,\r\n amount: paymentReferenceDetails?.amount,\r\n paymentResult: paymentResponse?.result,\r\n product: paymentReferenceDetails?.description,\r\n receiptNumber: paymentResponse?.transactionId,\r\n isInsurance: paymentReferenceDetails?.isInurance,\r\n };\r\n};\r\nexport const replacePolicySummaryBookmarks = (\r\n content: string,\r\n paymentReferenceDetails: IPaymentReferenceDetails,\r\n prn: string,\r\n dictionary: Record,\r\n quotedOption?: IQuotedOption\r\n) => {\r\n let replaceBookmarksContent = replaceBookmark(Bookmarks.paymentDate, content, format(Date(), STANDARD_DATE_FORMAT));\r\n\r\n replaceBookmarksContent = replaceBookmark(\r\n Bookmarks.amountPaid,\r\n replaceBookmarksContent,\r\n toCurrency(paymentReferenceDetails.amount?.toString() ?? '')\r\n );\r\n replaceBookmarksContent = replaceBookmark(\r\n Bookmarks.insuranceType,\r\n replaceBookmarksContent,\r\n getInsuranceTypeDisplayName(dictionary, paymentReferenceDetails?.coverageCode ?? '')\r\n );\r\n replaceBookmarksContent = replaceBookmark(\r\n Bookmarks.productType,\r\n replaceBookmarksContent,\r\n getProductType(paymentReferenceDetails, dictionary, quotedOption)\r\n );\r\n replaceBookmarksContent = replaceBookmark(\r\n Bookmarks.coverName,\r\n replaceBookmarksContent,\r\n paymentReferenceDetails.description\r\n );\r\n replaceBookmarksContent = replaceBookmark(Bookmarks.paymentReferenceNumber, replaceBookmarksContent, prn);\r\n return replaceBookmarksContent;\r\n};\r\nexport const mapItems = (\r\n summaryItems: any,\r\n paymentReferenceDetails: IPaymentReferenceDetails,\r\n prn: string,\r\n dictionary: Record,\r\n quotedOption?: IQuotedOption\r\n) => {\r\n const mappedItems: IReviewSummaryItem[] = summaryItems.map((val: any) => {\r\n const item: IReviewSummaryItem = {\r\n title: {\r\n value: replacePolicySummaryBookmarks(\r\n val.fields.title.value,\r\n paymentReferenceDetails,\r\n prn,\r\n dictionary,\r\n quotedOption\r\n ),\r\n },\r\n content: {\r\n value: replacePolicySummaryBookmarks(\r\n val.fields.content.value,\r\n paymentReferenceDetails,\r\n prn,\r\n dictionary,\r\n quotedOption\r\n ),\r\n },\r\n showItem: true,\r\n showEdit: false,\r\n editUrl: '',\r\n titleIcon: { value: '' },\r\n };\r\n return item;\r\n });\r\n return mappedItems.filter((x) => x.showItem);\r\n};\r\nexport const mapSummaries = (\r\n formInputs: any,\r\n dictionary: Record,\r\n paymentReferenceDetails: IPaymentReferenceDetails,\r\n prn: string,\r\n quotedOption?: IQuotedOption\r\n): IReviewSummary[] => {\r\n const reviewSummaries = paymentReferenceDetails.isInurance\r\n ? formInputs?.reviewSummaryInsurance.fields.map((val: any) => {\r\n const summ: IReviewSummary = {\r\n summaryTitle: val.summaryTitle,\r\n icon: val.icon,\r\n formContentId: val.formContentId,\r\n items: mapItems(val.items, paymentReferenceDetails, prn, dictionary, quotedOption),\r\n };\r\n return summ;\r\n })\r\n : paymentReferenceDetails.isInvoiceDebt\r\n ? formInputs?.reviewSummaryInvoice.fields.map((val: any) => {\r\n const summ: IReviewSummary = {\r\n summaryTitle: val.summaryTitle,\r\n icon: val.icon,\r\n formContentId: val.formContentId,\r\n items: mapItems(val.items, paymentReferenceDetails, prn, dictionary, quotedOption),\r\n };\r\n return summ;\r\n })\r\n : formInputs?.reviewSummaryRoadside.fields.map((val: any) => {\r\n const summ: IReviewSummary = {\r\n summaryTitle: val.summaryTitle,\r\n icon: val.icon,\r\n formContentId: val.formContentId,\r\n items: mapItems(val.items, paymentReferenceDetails, prn, dictionary, quotedOption),\r\n };\r\n return summ;\r\n });\r\n return reviewSummaries;\r\n};\r\n\r\nexport const mapRenewalAcknowledgement = (\r\n paymentReferenceDetails: IPaymentReferenceDetails,\r\n decisionOfferResponse: IDecisionIntelligenceOfferResponse,\r\n paymentAttempled: boolean,\r\n paymentSucceeded: boolean\r\n): IRenewalAcknowledgementModel => {\r\n return {\r\n paymentReferenceDetails: paymentReferenceDetails,\r\n decisionOfferResponse: decisionOfferResponse,\r\n paymentAttempted: paymentAttempled,\r\n paymentSucceeded: paymentSucceeded,\r\n };\r\n};\r\n\r\nexport const mapDiscountRequest = (selectedOption?: IQuotedOption): IApplyAssistanceQuoteDiscountRequest => {\r\n return {\r\n apttusCartId: selectedOption?.apttusCartId ?? '',\r\n apttusQuoteId: selectedOption?.apttusQuoteId ?? '',\r\n };\r\n};\r\n\r\nexport const mapDirectDebitRequest = (\r\n paymentReferenceDetails: IPaymentReferenceDetails,\r\n cardDetails: ICardDetails\r\n): IApttusDirectDebitRequest => {\r\n return {\r\n creditCard: {\r\n token: cardDetails.token,\r\n maskedCardNumber: cardDetails.maskedCardNumber,\r\n cardExpiry: `${cardDetails.cardExpiryMonth}/${cardDetails.cardExpiryYear}`,\r\n cardHolder: cardDetails.cardHoldersName,\r\n cardType: cardDetails.cardType,\r\n },\r\n assetLineItems: [\r\n {\r\n assetLineItemId: paymentReferenceDetails.assetLineItemId,\r\n enabled: true,\r\n },\r\n ],\r\n };\r\n};\r\nexport const appendRACQ = (product?: string): string => {\r\n return !product?.includes('RACQ') ? `RACQ ${product}` : product;\r\n};\r\nexport const getProductType = (\r\n paymentReferenceDetails: IPaymentReferenceDetails,\r\n dictionary: Record,\r\n quotedOption?: IQuotedOption\r\n): string => {\r\n if (paymentReferenceDetails?.coverageCode) {\r\n return paymentReferenceDetails.policyTitle\r\n ? paymentReferenceDetails.policyTitle\r\n : getInsuranceTypeDisplayName(dictionary, paymentReferenceDetails?.coverageCode ?? '');\r\n }\r\n return quotedOption ? appendRACQ(quotedOption.product) : appendRACQ(paymentReferenceDetails?.policyTitle ?? '');\r\n};\r\n\r\nconst replaceBookAssistanceBookMarks = (\r\n content: string,\r\n paymentReferenceDetails: IPaymentReferenceDetails,\r\n isUpgrade?: boolean\r\n): string => {\r\n content = replaceBookmark(\r\n Bookmarks.coverType,\r\n content,\r\n !paymentReferenceDetails.isNotARoadsideProduct\r\n ? 'roadside cover'\r\n : `${appendRACQ(paymentReferenceDetails.currentProduct.product)}${paymentReferenceDetails.currentProduct.product == 'Lifestyle' ? ' subscription' : ''}`\r\n );\r\n content = replaceBookmark(Bookmarks.transactionType, content, isUpgrade ? 'upgraded' : 'renewed');\r\n return content;\r\n};\r\n\r\nexport const mapHighlights = (\r\n formInputs: any,\r\n paymentReferenceDetails: IPaymentReferenceDetails,\r\n dictionary: Record,\r\n isUpgrade?: boolean\r\n): IHighlight[] => {\r\n if (paymentReferenceDetails.isInurance) {\r\n return [\r\n {\r\n content: replaceBookmark(\r\n Bookmarks.insuranceType,\r\n formInputs?.introCoverInsurance?.label?.value,\r\n getProductType(paymentReferenceDetails, dictionary)\r\n ),\r\n },\r\n ] as IHighlight[];\r\n } else if (paymentReferenceDetails.isInvoiceDebt) {\r\n //if invoice payment\r\n return [\r\n {\r\n content: formInputs?.introCoverTextInvoice?.label?.value,\r\n },\r\n ] as IHighlight[];\r\n } else {\r\n const highlights = [\r\n //roadside/lifestyle payment\r\n {\r\n content: replaceBookAssistanceBookMarks(\r\n formInputs?.introCoverTextAssistance?.label?.value,\r\n paymentReferenceDetails,\r\n isUpgrade\r\n ),\r\n },\r\n {\r\n content: formInputs?.introCoverTextAssistance2?.label?.value,\r\n },\r\n ] as IHighlight[];\r\n if (isUpgrade) {\r\n highlights.splice(1, 0, {\r\n content: formInputs?.upgradeCoverTextAssistance?.label?.value,\r\n });\r\n }\r\n\r\n return highlights;\r\n }\r\n};\r\n\r\nexport const getBaseAnalyticsFormModel = (\r\n paymentReferenceDetails: IPaymentReferenceDetails,\r\n dictionary: Record,\r\n quotedOption?: IQuotedOption\r\n): IAnalyticsForm => {\r\n return {\r\n amount: paymentReferenceDetails?.amount ?? 0,\r\n productCategory: paymentReferenceDetails.description,\r\n productName: getProductType(paymentReferenceDetails, dictionary, quotedOption),\r\n detail: {\r\n vehicleDetail: paymentReferenceDetails?.hasVehicleDetails ? (paymentReferenceDetails?.policyDetail ?? '') : '',\r\n },\r\n };\r\n};\r\n\r\nconst iconMap = {\r\n homeIcon: require('@/assets/icons/house-home.svg'),\r\n carIcon: require('@/assets/icons/car.svg'),\r\n petIcon: require('@/assets/icons/pet-paw.svg'),\r\n boatIcon: require('@/assets/icons/boat_icon.svg'),\r\n caravanIcon: require('@/assets/icons/caravan_icon.svg'),\r\n motorCycleIcon: require('@/assets/icons/motorcycle_icon.svg'),\r\n lifeStyleIcon: require('@/assets/icons/lifestyle_icon.svg'),\r\n successIcon: require('@/assets/icons/green-tick.svg'),\r\n};\r\n\r\nconst successIconMap = {\r\n homeIcon: require('@/assets/icons/home-icon.svg'),\r\n carIcon: require('@/assets/icons/car-ticked.svg'),\r\n petIcon: require('@/assets/icons/pet-ticked.svg'),\r\n boatIcon: require('@/assets/icons/boat-ticked.svg'),\r\n caravanIcon: require('@/assets/icons/caravan-ticked.svg'),\r\n motorCycleIcon: require('@/assets/icons/motorcycle-ticked.svg'),\r\n lifeStyleIcon: require('@/assets/icons/lifestyle-ticked.svg'),\r\n successIcon: require('@/assets/icons/green-tick.svg'),\r\n};\r\n\r\nexport const getProductTypeIcon = (\r\n paymentReferenceDetails: IPaymentReferenceDetails,\r\n isLifeStyle?: boolean,\r\n isSuccess?: boolean\r\n) => {\r\n if (isLifeStyle) return isSuccess ? successIconMap.lifeStyleIcon : iconMap.lifeStyleIcon;\r\n if (paymentReferenceDetails.isInvoiceDebt) return iconMap.successIcon;\r\n //if multi coverage policy\r\n if (paymentReferenceDetails.coverageCode && paymentReferenceDetails.policyTitle) return iconMap.successIcon;\r\n if (paymentReferenceDetails.coverageCode) {\r\n switch (paymentReferenceDetails.coverageCode) {\r\n case QuoteTypes[QuoteTypes.HC]:\r\n case QuoteTypes[QuoteTypes.HH]:\r\n case QuoteTypes[QuoteTypes.HHCOMB]:\r\n return isSuccess ? successIconMap.homeIcon : iconMap.homeIcon;\r\n case QuoteTypes[QuoteTypes.MC]:\r\n case QuoteTypes[QuoteTypes.MF]:\r\n case QuoteTypes[QuoteTypes.MT]:\r\n return isSuccess ? successIconMap.carIcon : iconMap.carIcon;\r\n case QuoteTypes[QuoteTypes.PET]:\r\n return isSuccess ? successIconMap.petIcon : iconMap.petIcon;\r\n case QuoteTypes[QuoteTypes.BC]:\r\n case QuoteTypes[QuoteTypes.BT]:\r\n return isSuccess ? successIconMap.boatIcon : iconMap.boatIcon;\r\n case QuoteTypes[QuoteTypes.Caravan]:\r\n return isSuccess ? successIconMap.caravanIcon : iconMap.caravanIcon;\r\n case QuoteTypes[QuoteTypes.Motorcycle]:\r\n return isSuccess ? successIconMap.motorCycleIcon : iconMap.motorCycleIcon;\r\n }\r\n }\r\n return isSuccess ? successIconMap.carIcon : iconMap.carIcon;\r\n};\r\n","import { IPaymentReferenceDetails } from '../make-a-payment/make-a-payment.interface';\r\nimport { IDecisionIntelligenceOfferResponse } from './decision-intelligence-response';\r\n\r\nexport interface ICreateDecisionOffer {\r\n decisionCriteria: IDecisionCriteria;\r\n filters?: IFilters;\r\n}\r\n\r\nexport interface IDecisionCriteria {\r\n sessionContext: ISessionContext;\r\n partyReferences: IPartyReferences;\r\n formInputs: IFormInputs;\r\n}\r\n\r\nexport interface ISessionContext {\r\n channel: string;\r\n strategy: string;\r\n pillar: string;\r\n product: string;\r\n journey: string;\r\n triggerStep?: string;\r\n sourceIp?: string;\r\n deviceType: string;\r\n}\r\n\r\nexport interface IPartyReferences {\r\n d365Id?: string;\r\n apttusId?: string;\r\n}\r\n\r\nexport interface IFormInputs {\r\n postCode?: string | null;\r\n firstName: string | null;\r\n lastName: string | null;\r\n birthDate?: string | null;\r\n numberOfClaims?: string | null;\r\n quoteReference?: string | null;\r\n annualPremium?: number | null;\r\n coverType?: string | null;\r\n vehicle?: IVehicle | null;\r\n prn?: string | null;\r\n policyNumber?: string | null;\r\n renewalDate?: string | null;\r\n home?: IHome | null;\r\n existingMember?: boolean | null;\r\n hasRoadsideAssistance?: boolean | null;\r\n homeInsuranceClaimed?: boolean | null;\r\n contentInsuranceClaimed?: boolean | null;\r\n driverUnder25?: boolean | null;\r\n occupancyType?: string | null;\r\n homeLoan?: boolean | null;\r\n petCover?: boolean | null;\r\n membershipLevel?: string | null;\r\n eligibleForCombinedPolicyDiscount?: boolean | null;\r\n}\r\n\r\nexport interface IFilters {\r\n maximumNumberOfNudges: number;\r\n maximumNumberOfPropositions: number;\r\n maximumNumberOfItems: number;\r\n}\r\n\r\nexport interface IVehicle {\r\n vehicleRegistrationNumber: string;\r\n vehicleMake?: string;\r\n vehicleModel?: string;\r\n vehicleSeries?: string;\r\n vehicleYear?: number;\r\n vehicleValue?: string;\r\n usageType: string;\r\n fuelType: string;\r\n driveType: string;\r\n}\r\n\r\nexport interface IHome {\r\n postCode?: string;\r\n dpid?: string;\r\n yearBuilt?: string;\r\n occupancyType?: string;\r\n buildingType?: string;\r\n homeLoan?: boolean;\r\n homeLoanProvider?: string;\r\n optionalPetCover?: boolean;\r\n}\r\n\r\nexport interface ICreateDecisionOfferResponse {\r\n id: string;\r\n createdDate: string;\r\n}\r\n\r\nexport interface IAcknowledgeDecisionRequest {\r\n propositionId?: string;\r\n outcome: string;\r\n policyNumber?: string;\r\n d365Id?: string;\r\n quoteReference?: string;\r\n apttusId?: string;\r\n prn?: string;\r\n actionId?: number | null;\r\n leadId?: string;\r\n}\r\n\r\nexport enum Outcome {\r\n Discarded,\r\n Surfaced,\r\n Accepted,\r\n Completed,\r\n LeadCaptured,\r\n LeadFailed,\r\n Redirect,\r\n}\r\n\r\nexport interface IRenewalAcknowledgementModel {\r\n paymentReferenceDetails?: IPaymentReferenceDetails;\r\n decisionOfferResponse?: IDecisionIntelligenceOfferResponse;\r\n paymentAttempted: boolean;\r\n paymentSucceeded: boolean;\r\n productName?: string;\r\n}\r\n\r\nexport interface ICreateRoadsidePrepaidOfferRequest {\r\n apttusId: string;\r\n assetLineItemId: string;\r\n prn: string;\r\n currentProduct: IOfferProductQuoteRequest;\r\n renewalOptions: IOfferProductQuoteRequest[];\r\n}\r\n\r\nexport interface IOfferProductQuoteRequest extends IOfferProductRequest {\r\n apttusCartId: string;\r\n apttusQuoteId: string;\r\n amount: number | null;\r\n}\r\n\r\nexport interface IOfferProductRequest {\r\n product: string;\r\n description: string;\r\n productCode: string;\r\n}\r\n\r\nexport interface IRenewalAcknowledgmentCrossSellModel {\r\n decisionOfferResponse?: IDecisionIntelligenceOfferResponse;\r\n acknowledgeDecisionRequest?: IAcknowledgeDecisionRequest;\r\n paymentReferenceDetails?: IPaymentReferenceDetails;\r\n}\r\n","export interface TriageAnswer {\r\n id: string;\r\n answer: string;\r\n eventTypes: string;\r\n eventSubType: string;\r\n status: string;\r\n imageUrl?: string;\r\n title?: string;\r\n}\r\n\r\nexport interface TriageQuestion {\r\n id: string;\r\n question: string;\r\n multipleChoice: boolean;\r\n answers: TriageAnswer[]; // Adjust the type of answers if you have a specific structure for answers\r\n}\r\n\r\nexport interface RoadsideAssistance {\r\n club: string;\r\n clubName: string;\r\n description: string;\r\n initialQuestionId: string;\r\n triageQuestions: TriageQuestion[];\r\n}\r\n\r\nexport interface AssistanceMatchPartyRequest {\r\n firstName: string;\r\n lastName: string;\r\n dateOfBirth: string;\r\n phoneNumber?: string;\r\n emailAddress?: string;\r\n postalAddressDpid?: string;\r\n}\r\n\r\nexport interface AssistanceMatchPartyResponse {\r\n apttusId?: string;\r\n d365Id?: string;\r\n matchStatus?: PartyMatchStatus;\r\n}\r\n\r\nexport enum PartyMatchStatus {\r\n None = 'None',\r\n Exact = 'Exact',\r\n Multiple = 'Multiple',\r\n}\r\n","export interface IInformationBox {\r\n type: InformationBoxTypes;\r\n title?: string;\r\n description?: string;\r\n links?: Array;\r\n hideIcon?: boolean;\r\n}\r\n\r\ninterface Link {\r\n title: string;\r\n url: string;\r\n}\r\n\r\nexport enum InformationBoxTypes {\r\n INFO = 'info',\r\n WARNING = 'warning',\r\n ERROR = 'error',\r\n SUCCESS = 'success',\r\n}\r\n","export interface IExperianResults {\r\n count: number;\r\n results: IExperianSuggestion[];\r\n}\r\n\r\nexport interface IExperianSuggestion {\r\n matched: string[];\r\n format: string;\r\n suggestion: string;\r\n triggerManualEntry?: boolean;\r\n}\r\n\r\nexport interface IExperianFormatResult {\r\n address: Record[];\r\n components: Record[];\r\n metadata: {\r\n addressIds: {\r\n dpid: string;\r\n };\r\n };\r\n}\r\n\r\nexport interface RACQAddressResult {\r\n addressLine?: string;\r\n buildingName?: string;\r\n unitNumber?: string;\r\n streetNumber?: string;\r\n street?: string;\r\n suburb?: string;\r\n postcode?: string;\r\n state?: string;\r\n country?: string;\r\n countryISO?: string;\r\n dpid?: string;\r\n isCycloneCovered?: boolean;\r\n postalDeliveryType?: string;\r\n lurnCode?: string;\r\n lurnScale?: number;\r\n gnafAddressDetailPID?: string;\r\n}\r\n\r\nexport enum IExperianAddressKeys {\r\n addressLine1 = 'addressLine1',\r\n addressLine2 = 'addressLine2',\r\n addressLine3 = 'addressLine3',\r\n locality = 'locality',\r\n province = 'province',\r\n postalCode = 'postalCode',\r\n country = 'country',\r\n}\r\n\r\nexport enum IExperianComponentKeys {\r\n DeliveryService1 = 'deliveryService1',\r\n DeliveryPointId1 = 'deliveryPointId1',\r\n SubBuilding1 = 'subBuilding1',\r\n SubBuilding2 = 'subBuilding2',\r\n Building1 = 'building1',\r\n Organisation1 = 'organisation1',\r\n StreetNumber1 = 'streetNumber1',\r\n StreetNumber2 = 'streetNumber2',\r\n Street1 = 'street1',\r\n Locality1 = 'locality1',\r\n PostalCode1 = 'postalCode1',\r\n Country1 = 'country1',\r\n CountryIso1 = 'countryISO1',\r\n}\r\n","import { IPaymentDetails } from './payment-details';\r\nimport { ICardDetails } from './card-details';\r\nimport { IDirectDebitDetails } from './direct-debit-details';\r\nimport { PaymentTypes } from '@/enums/payment-types.enum';\r\nimport { PaymentFrequency } from '../quote.interface';\r\n\r\nexport interface ISubmitQuote {\r\n paymentDetails: IPaymentDetails;\r\n}\r\n\r\nexport class SubmitQuote implements ISubmitQuote {\r\n paymentDetails: IPaymentDetails;\r\n\r\n constructor() {\r\n this.paymentDetails = {} as IPaymentDetails;\r\n }\r\n\r\n createSubmitQuoteUsingCardPaymentDetails(paymentStoreCardDetails: any): ISubmitQuote {\r\n const cardDetails: ICardDetails = {\r\n cardType: paymentStoreCardDetails.cardType,\r\n cardHoldersName: paymentStoreCardDetails.cardHoldersName,\r\n cardExpiryMonth: paymentStoreCardDetails.cardExpiryMonth,\r\n cardExpiryYear: paymentStoreCardDetails.cardExpiryYear,\r\n token: paymentStoreCardDetails.token,\r\n maskedCardNumber: paymentStoreCardDetails.maskedCardNumber,\r\n };\r\n\r\n this.paymentDetails.cardDetails = cardDetails;\r\n\r\n return this;\r\n }\r\n\r\n createSubmitQuoteUsingBankAccountDetails(directDebitDetails: IDirectDebitDetails): ISubmitQuote {\r\n this.paymentDetails.directDebitDetails = directDebitDetails;\r\n\r\n return this;\r\n }\r\n\r\n createSubmitQuoteUsingPayLater(paymentFrequency: PaymentFrequency): ISubmitQuote {\r\n this.paymentDetails.cardDetails = {} as ICardDetails;\r\n this.paymentDetails.paymentType = PaymentTypes.PayLater;\r\n this.paymentDetails.paymentFrequency = paymentFrequency;\r\n return this;\r\n }\r\n}\r\n","import {\r\n BaseTrackableObject,\r\n TrackChangeOfString,\r\n TrackChangeOfNullableNumber,\r\n TrackChangeOfNullableBoolean,\r\n TrackChangeOfNumber,\r\n TrackChangeOfDate,\r\n TrackChangeOfBoolean,\r\n} from './trackable-value.interface';\r\nimport { IPolicyHolderDetails } from './policyholder.interface';\r\nimport { IMotorQuote } from './motor-quote.interface';\r\nimport { IHomeAndContentsQuote } from './home-contents-quote.interface';\r\nimport { PaymentTypes } from '@/enums/payment-types.enum';\r\nimport { IPetsQuote } from './pet.interface';\r\n\r\nexport interface IQuote extends BaseTrackableObject {\r\n quoteType?: InsuranceQuoteType;\r\n quotePhase: InsuranceQuotePhase;\r\n paymentFrequency?: PaymentFrequency;\r\n paymentType?: PaymentTypes;\r\n paymentReceiptNumber: string;\r\n paymentReferenceNumber: string;\r\n paymentDueDate?: Date;\r\n id: string;\r\n reference: string;\r\n clientIpAddress: string;\r\n policyReference: string;\r\n externalId: string;\r\n producerCode: TrackChangeOfString;\r\n motorQuote: IMotorQuote;\r\n homeAndContentsQuote: IHomeAndContentsQuote;\r\n petsQuote: Partial;\r\n discounts: QuoteDiscounts;\r\n primaryPolicyHolderDetails: IPolicyHolderDetails;\r\n additionalPolicyHolderDetails: IPolicyHolderDetails[];\r\n additionalPolicyHolderDetailsCount: TrackChangeOfNumber;\r\n insuranceStartDate: TrackChangeOfDate;\r\n termStartDate?: Date;\r\n termEndDate?: Date;\r\n inceptionDate: Date;\r\n insuranceQuoteSummary: InsuranceQuoteSummary;\r\n coverageSummaries: CoverageSummary[];\r\n ruleCalculations: InsuranceQuoteRuleCalculations;\r\n dutyOfDisclosureAccepted: TrackChangeOfBoolean;\r\n membershipTermsAndConditionsAccepted: TrackChangeOfNullableBoolean;\r\n matchConfidence: string;\r\n renewalPreference: boolean;\r\n renewalTermAcceptance: boolean;\r\n rejectionReason: string;\r\n}\r\n\r\nexport interface InsuranceQuoteSummary extends PricingSummary {\r\n monthlyAnnualPremium?: number;\r\n monthlyInstalment: number;\r\n payByTheMonthFee: number;\r\n bestPremium: number;\r\n policySystemPremium?: number;\r\n validToDate?: Date;\r\n}\r\n\r\nexport interface PricingSummary {\r\n yearlyCallCenterPremium: number;\r\n yearlyAnnualPremium: number;\r\n monthlyCallCenterDeposit: number;\r\n monthlyDeposit: number;\r\n calculatedDate?: Date;\r\n}\r\n\r\nexport interface PremiumDetails {\r\n calculationOrder: number;\r\n pointsUsed: number;\r\n percentageUsed: number;\r\n premiumValue: number;\r\n dailyPremiumValue?: number;\r\n coverageGroup?: number;\r\n description: string;\r\n}\r\n\r\nexport interface QuoteDiscounts extends BaseTrackableObject {\r\n eligibleForMultiPolicyDiscount: TrackChangeOfBoolean;\r\n eligibleForCombinedPolicyDiscount: TrackChangeOfBoolean;\r\n eligibleForLoyaltyDiscount: TrackChangeOfBoolean;\r\n highestMembershipLoyaltyLevel: TrackChangeOfString;\r\n highestRoadsideProduct: TrackChangeOfString;\r\n eligibleForYearlyOnlineDiscount: TrackChangeOfBoolean;\r\n eligibleForMonthlyOnlineDiscount: TrackChangeOfBoolean;\r\n eligibleForSeniorCardDiscount: TrackChangeOfBoolean;\r\n eligibleForSeniorDiscount: TrackChangeOfBoolean;\r\n totalYearlyOnlineDiscountAmount: TrackChangeOfNullableNumber;\r\n totalMonthlyOnlineDiscountAmount: TrackChangeOfNullableNumber;\r\n policySystemDiscounts: PolicySystemDiscounts;\r\n eligibleForHomeBundleDiscount: TrackChangeOfBoolean;\r\n eligibleForStaffDiscount: TrackChangeOfBoolean;\r\n staffCategory: TrackChangeOfString;\r\n}\r\n\r\nexport interface PolicySystemDiscounts extends BaseTrackableObject {\r\n ageDiscount?: boolean;\r\n alarmDiscount?: boolean;\r\n buildingTypeDiscount?: boolean;\r\n combinedDiscount?: boolean;\r\n driverExcellenceBonusDiscount?: boolean;\r\n householdExcellenceBonusDiscount?: boolean;\r\n multiPetDiscount?: boolean;\r\n multipleProductDiscount?: boolean;\r\n noClaimDiscount?: boolean;\r\n roadSideAssistanceLoyaltyDiscount?: boolean;\r\n seniorCardHolderDiscount?: boolean;\r\n staffDiscount?: boolean;\r\n}\r\n\r\nexport interface CoverageSummary extends PricingSummary {\r\n coverageSummaryId: string;\r\n premiumDetails: PremiumDetails[];\r\n}\r\n\r\nexport interface InsuranceQuoteRuleCalculations extends BaseTrackableObject {\r\n automationLevel: number;\r\n manualProcessingReasons: ManualProcessingReason[];\r\n prerenewalDirections: PrerenewalDirection[];\r\n payByTheMonthFeeWaived?: boolean;\r\n premiumLowerThanQuoted?: boolean;\r\n invalidRiskLocation?: boolean;\r\n discountDifferences: DiscountDifference[];\r\n}\r\n\r\nexport interface ManualProcessingReason {\r\n code: number;\r\n description: string;\r\n}\r\n\r\nexport interface PrerenewalDirection {\r\n code: string;\r\n}\r\n\r\nexport interface DiscountDifference {\r\n discountType: number;\r\n iqHasDiscount: boolean;\r\n policySystemHasDiscount: boolean;\r\n}\r\n\r\nexport enum InsuranceQuoteType {\r\n MotorComprehensive = 1,\r\n All = 2,\r\n Home = 3,\r\n Contents = 4,\r\n HomeAndContents = 5,\r\n MotorThirdPartyLiability = 6,\r\n MotorFireTheftAndThirdPartyLiability = 7,\r\n PetComp = 8,\r\n Caravan = 9,\r\n Motorcycle = 10,\r\n BoatComprehensive = 11,\r\n BoatThirdParty = 12,\r\n}\r\n\r\nexport enum InsuranceQuotePhase {\r\n Unknown = 0,\r\n QuickQuote = 1,\r\n FullQuote = 2,\r\n MidtermPolicyChange = 3,\r\n RenewalPolicyChange = 4,\r\n}\r\n\r\nexport enum PaymentFrequency {\r\n Annually = 1,\r\n Monthly = 2,\r\n}\r\n\r\nexport enum ChangeState {\r\n Unchanged = 0,\r\n Changed = 1,\r\n BusinessRuleComplete = 2,\r\n UsedInQuote = 3,\r\n}\r\n","import 'cross-fetch/polyfill'; // Apollo uses `fetch`, which needs a polyfill for node and older browsers.\r\nimport { InMemoryCache, ApolloClient } from '@apollo/client/core';\r\n\r\n/*\r\n INTROSPECTION DATA\r\n See https://www.apollographql.com/docs/react/recipes/fragment-matching.html\r\n This enables the Apollo cache to process fragments on interface types correctly.\r\n If this file does not exist, you may need to run the `jss graphql:update` script.\r\n*/\r\nimport introspectionQueryResultData from '../temp/GraphQLFragmentTypes.json';\r\n\r\n/*\r\n QUERY LINK SELECTION\r\n A link is transport which GraphQL queries are pushed across.\r\n You have many choices.\r\n See the apollo-link documentation for more details.\r\n*/\r\n\r\n// choose between a basic HTTP link to run queries...\r\n// import { createHttpLink } from 'apollo-link-http';\r\n// const link = createHttpLink({ uri: endpoint });\r\n\r\n// ...or a batched link (multiple queries within 10ms all go in one HTTP request)\r\nimport { BatchHttpLink } from '@apollo/client/link/batch-http';\r\n\r\nimport config from '../temp/config';\r\n\r\nexport default function (endpoint: string, ssr: any, initialCacheState?: any) {\r\n /* HTTP link selection: default to batched + APQ */\r\n const link = new BatchHttpLink({\r\n uri: endpoint,\r\n headers: {\r\n connection: 'keep-alive',\r\n sc_apikey: config.sitecoreApiKey,\r\n },\r\n });\r\n\r\n const possibleTypes: any = {};\r\n\r\n introspectionQueryResultData.__schema.types.forEach((supertype: any) => {\r\n possibleTypes[supertype.name] = supertype.possibleTypes.map((subtype: any) => subtype.name);\r\n });\r\n\r\n const cache = new InMemoryCache({\r\n possibleTypes,\r\n });\r\n\r\n return new ApolloClient({\r\n ssrMode: ssr,\r\n ssrForceFetchDelay: 100,\r\n link,\r\n cache: cache.restore(initialCacheState),\r\n });\r\n}\r\n","import { GraphQLDictionaryService, RestDictionaryService, constants } from '@sitecore-jss/sitecore-jss-vue';\r\nimport config from '../temp/config';\r\n\r\nexport class DictionaryServiceFactory {\r\n create() {\r\n return process.env.VUE_APP_FETCH_WITH === constants.FETCH_WITH.GRAPHQL\r\n ? new GraphQLDictionaryService({\r\n endpoint: config.graphQLEndpoint,\r\n apiKey: config.sitecoreApiKey,\r\n siteName: config.sitecoreSiteName,\r\n /*\r\n The Dictionary Service needs a root item ID in order to fetch dictionary phrases for the current\r\n app. If your Sitecore instance only has 1 JSS App, you can specify the root item ID here;\r\n otherwise, the service will attempt to figure out the root item for the current JSS App using GraphQL and app name.\r\n rootItemId: '{GUID}'\r\n */\r\n })\r\n : new RestDictionaryService({\r\n apiHost: config.sitecoreApiHost,\r\n apiKey: config.sitecoreApiKey,\r\n siteName: config.sitecoreSiteName,\r\n });\r\n }\r\n}\r\n\r\nexport const dictionaryServiceFactory = new DictionaryServiceFactory();\r\n","import 'cross-fetch/polyfill';\r\nimport { createI18n } from 'vue-i18n';\r\nimport { dictionaryServiceFactory } from './lib/dictionary-service-factory';\r\n\r\n/**\r\n * Initializes the vue-i18n library to provide a translation dictionary to the app.\r\n * If your app is not multilingual, this file and references to it can be removed.\r\n * Elsewhere in the app to use the dictionary `{{ $t('styleguide-sample') }}`\r\n * If you want to use translation inside the function use:\r\n * ```\r\n * import { useI18n } from 'vue-i18n';\r\n * const { t } = useI18n();\r\n * const text = t('page-not-found');\r\n * ```\r\n * @param {string} language Optional, the initial language. Only used for SSR; otherwise language set in RouteHandler.\r\n * @param {*} dictionary Optional, the dictionary to load. Only used for SSR; otherwise, the dictionary is loaded via JSS dictionary service.\r\n */\r\nexport default function i18nInit(language: string, dictionary?: string) {\r\n return new Promise((resolve) => {\r\n // We are in SSR, dictionary is preloaded. Iniitialize it\r\n if (dictionary) {\r\n const i18n = createI18n({\r\n fallbackLocale: false,\r\n messages: {\r\n [language]: dictionary!,\r\n } as any,\r\n locale: language,\r\n });\r\n\r\n resolve(i18n);\r\n } else {\r\n // initialize an instance of the dictionary service\r\n const dictionaryServiceInstance = dictionaryServiceFactory.create();\r\n\r\n dictionaryServiceInstance.fetchDictionaryData(language).then((phrases) => {\r\n resolve(\r\n createI18n({\r\n fallbackLocale: false,\r\n messages: {\r\n [language]: phrases,\r\n },\r\n locale: language,\r\n })\r\n );\r\n });\r\n }\r\n });\r\n}\r\n","\r\n\r\n\r\n\r\n","\r\n\r\n\r\n\r\n","import { render } from \"./ContextView.vue?vue&type=template&id=684bb29f&scoped=true\"\nimport script from \"./ContextView.vue?vue&type=script&lang=js\"\nexport * from \"./ContextView.vue?vue&type=script&lang=js\"\n\nimport \"./ContextView.vue?vue&type=style&index=0&id=684bb29f&scoped=true&lang=css\"\n\nimport exportComponent from \"../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-684bb29f\"]])\n\nexport default __exports__","import { render } from \"./AppRoot.vue?vue&type=template&id=18af1ff3\"\nimport script from \"./AppRoot.vue?vue&type=script&lang=js\"\nexport * from \"./AppRoot.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n","import { GraphQLLayoutService, RestLayoutService, constants } from '@sitecore-jss/sitecore-jss-vue';\r\nimport config from '../temp/config';\r\n\r\nexport class LayoutServiceFactory {\r\n create() {\r\n return process.env.VUE_APP_FETCH_WITH === constants.FETCH_WITH.GRAPHQL\r\n ? new GraphQLLayoutService({\r\n endpoint: config.graphQLEndpoint,\r\n apiKey: config.sitecoreApiKey,\r\n siteName: config.sitecoreSiteName,\r\n })\r\n : new RestLayoutService({\r\n apiHost: config.sitecoreApiHost,\r\n apiKey: config.sitecoreApiKey,\r\n siteName: config.sitecoreSiteName,\r\n configurationName: config.layoutServiceConfigurationName,\r\n });\r\n }\r\n}\r\n\r\nexport const layoutServiceFactory = new LayoutServiceFactory();\r\n","\r\n\r\n\r\n","import script from \"./Login.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./Login.vue?vue&type=script&setup=true&lang=js\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock } from \"vue\"\n\nimport { ComponentRendering, Field } from '@sitecore-jss/sitecore-jss-vue';\r\nimport { useMeta } from 'vue-meta';\r\nimport { ImageField } from '@sitecore-jss/sitecore-jss-vue/types/components/Image';\r\nimport { LinkField } from '@sitecore-jss/sitecore-jss-vue/types/components/Link';\r\nimport { IMetaData } from '@/interfaces/entities/meta-data-interface';\r\n// Define props and emitters\r\n// ------------------------------------------------------------- //\r\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'MetaData',\n props: {\n route: {}\n },\n setup(__props: any) {\n\r\nconst props = __props;\r\n\r\nconst metaData = () => {\r\n let meta = [\r\n {\r\n name: 'title',\r\n content: (props.route.fields?.metaTitle as Field)?.value?.toString() ?? undefined,\r\n },\r\n {\r\n name: 'description',\r\n content: (props.route.fields?.metaDescription as Field)?.value?.toString(),\r\n },\r\n { name: 'keywords', content: (props.route.fields?.metaKeywords as Field)?.value?.toString() },\r\n { name: 'contenttype', content: props.route.templateName },\r\n ] as IMetaData[];\r\n if ((props.route.fields?.socialShareImage as ImageField)?.value?.src ?? false) {\r\n meta.push({\r\n property: 'og:image',\r\n content: (props.route.fields?.socialShareImage as ImageField)?.value?.src?.toString() ?? '',\r\n });\r\n }\r\n if ((props.route.fields?.socialShareTitle as Field)?.value) {\r\n meta.push({\r\n property: 'og:title',\r\n content: (props.route.fields?.socialShareTitle as Field)?.value?.toString(),\r\n });\r\n }\r\n if ((props.route.fields?.socialShareText as Field)?.value) {\r\n meta.push({\r\n property: 'og:description',\r\n content: (props.route.fields?.socialShareText as Field)?.value?.toString(),\r\n });\r\n }\r\n if ((props.route?.fields?.customMetaAttributes as Field)?.value) {\r\n const metaValues = (props.route?.fields?.customMetaAttributes as Field)?.value.toString().split('&');\r\n metaValues.forEach((value: string) => {\r\n const metaFields = value.split('=');\r\n if (metaFields?.length == 2) {\r\n meta.push({\r\n name: metaFields[0],\r\n content: metaFields[1],\r\n });\r\n }\r\n });\r\n }\r\n if (props.route.placeholders) {\r\n const updated = props.route.placeholders['headless-main'].find((x) => x.componentName == 'FormBuilder')?.fields\r\n ?.data?.updated;\r\n if (updated) {\r\n meta.push({\r\n name: 'modified',\r\n content: updated,\r\n });\r\n }\r\n }\r\n if ((props.route.fields?.metaRobotNoIndex as Field)?.value) {\r\n meta.push({\r\n name: 'robots',\r\n content: 'noindex',\r\n });\r\n }\r\n\r\n return meta;\r\n};\r\nuseMeta({\r\n title: (props.route.fields?.pageTitle as Field)?.value || (props.route.fields?.Title as Field)?.value || 'Page',\r\n meta: metaData(),\r\n link: [\r\n {\r\n rel: 'canonical',\r\n href: (props.route.fields?.canonicalUrl as LinkField)?.value?.href\r\n ? (props.route.fields?.canonicalUrl as LinkField)?.value?.href\r\n : window.location.href.split('?')[0],\r\n },\r\n ],\r\n});\r\n\nreturn (_ctx: any,_cache: any) => {\n const _component_metainfo = _resolveComponent(\"metainfo\")!\n\n return (_openBlock(), _createBlock(_component_metainfo, null, {\n title: _withCtx(({ content }) => [\n _createTextVNode(_toDisplayString(content), 1)\n ]),\n _: 1\n }))\n}\n}\n\n})","\r\n\r\n\r\n","import script from \"./MetaData.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./MetaData.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createVNode as _createVNode, unref as _unref, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, Fragment as _Fragment, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"flex flex-col\" }\n\nimport { computed } from 'vue';\r\nimport { Placeholder, Field, ComponentRendering } from '@sitecore-jss/sitecore-jss-vue';\r\nimport Login from '@/components/Login/Login.vue';\r\nimport { useAccountStore } from '@/store';\r\nimport NotFound from './NotFound.vue';\r\nimport MetaData from './components/MetaData/MetaData.vue';\r\n\r\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'Layout',\n props: {\n route: {}\n },\n setup(__props: any) {\n\r\nconst props = __props;\r\nconst accountStore = useAccountStore();\r\nconst performLogin = computed(() => (props.route.fields?.AuthenticationRequired as Field)?.value);\r\nconst pageTitle = computed(\r\n () => (props.route.fields?.pageTitle as Field)?.value || (props.route.fields?.Title as Field)?.value || ''\r\n);\r\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createVNode(MetaData, { route: _ctx.route }, null, 8, [\"route\"]),\n _createElementVNode(\"div\", null, [\n _createElementVNode(\"div\", _hoisted_1, [\n _createVNode(_unref(Placeholder), {\n name: \"jss-header\",\n pageTitle: pageTitle.value,\n rendering: _ctx.route\n }, null, 8, [\"pageTitle\", \"rendering\"]),\n (performLogin.value)\n ? (_openBlock(), _createBlock(Login, { key: 0 }))\n : _createCommentVNode(\"\", true),\n (!_unref(accountStore).loginVisible)\n ? (_openBlock(), _createBlock(_unref(Placeholder), {\n key: 1,\n name: \"headless-main\",\n rendering: _ctx.route,\n errorComponent: NotFound\n }, null, 8, [\"rendering\"]))\n : _createCommentVNode(\"\", true),\n _createVNode(_unref(Placeholder), {\n name: \"jss-footer\",\n rendering: _ctx.route\n }, null, 8, [\"rendering\"])\n ])\n ])\n ], 64))\n}\n}\n\n})","\r\n\r\n\r\n","import script from \"./Layout.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./Layout.vue?vue&type=script&lang=ts&setup=true\"\n\nconst __exports__ = script;\n\nexport default __exports__","\r\n\r\n\r\n","import { render } from \"./RouteLoading.vue?vue&type=template&id=176f55ce\"\nimport script from \"./RouteLoading.vue?vue&type=script&lang=js\"\nexport * from \"./RouteLoading.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { render } from \"./RouteHandler.vue?vue&type=template&id=b926036c\"\nimport script from \"./RouteHandler.vue?vue&type=script&lang=js\"\nexport * from \"./RouteHandler.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { createRouter as createVueRouter, createWebHistory, createMemoryHistory } from 'vue-router';\r\n\r\nimport RouteHandler from './RouteHandler.vue';\r\n\r\n// support languages in the URL prefix\r\n// e.g. /da-DK/path, or /en/path, or /path\r\nexport const routePatterns = [\r\n '/:lang([a-z]{2}-[A-Z]{2})/:sitecoreRoute(.*)*',\r\n '/:lang([a-z]{2})/:sitecoreRoute(.*)*',\r\n '/:sitecoreRoute(.*)*',\r\n];\r\n\r\nexport function createRouter(isSSR: boolean) {\r\n // create an instance of vue-router and configure routes to use the RouteHandler component\r\n return createVueRouter({\r\n history: isSSR ? createMemoryHistory() : createWebHistory(),\r\n scrollBehavior(to, from, savedPosition) {\r\n return new Promise((resolve, reject) => {\r\n setTimeout(() => {\r\n if (to.hash) {\r\n resolve({\r\n el: to.hash,\r\n behavior: 'smooth',\r\n });\r\n } else if (savedPosition) {\r\n resolve(savedPosition);\r\n } else {\r\n resolve({ top: 0 });\r\n }\r\n }, 500);\r\n });\r\n },\r\n routes: routePatterns.map((routePattern) => {\r\n return {\r\n path: routePattern,\r\n component: RouteHandler,\r\n props: (route) => ({\r\n route,\r\n }),\r\n };\r\n }),\r\n });\r\n}\r\n","const store = {\r\n // default state\r\n state: {\r\n sitecoreContext: {\r\n pageEditing: false,\r\n },\r\n routeData: null,\r\n },\r\n setSitecoreData(sitecoreData: any) {\r\n const route = sitecoreData.sitecore && sitecoreData.sitecore.route;\r\n const context = (sitecoreData.sitecore && sitecoreData.sitecore.context) || {};\r\n\r\n // Do not replace the original state object - the store and any components that use the store\r\n // need to share a reference to the same object in order for mutations to be observed.\r\n this.state.routeData = route;\r\n this.state.sitecoreContext = {\r\n ...context,\r\n routeName: route && route.name,\r\n itemId: route && route.itemId,\r\n };\r\n },\r\n};\r\n\r\n// Vue plugins must export a function named 'install'\r\nfunction install(App: any) {\r\n App.config.globalProperties.$jss = {\r\n // there may be other JSS plugins installed, merge existing properties\r\n ...(App.config.globalProperties.$jss || {}),\r\n store,\r\n sitecoreContext() {\r\n // this is intended only as a convenience function for easier access to the current context.\r\n return store.state.sitecoreContext;\r\n },\r\n routeData() {\r\n // this is intended only as a convenience function for easier access to the current routeData.\r\n return store.state.routeData;\r\n },\r\n };\r\n}\r\n\r\nexport default { install };\r\n","import { openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\"))\n}","\r\n\r\n\r\n","import { render } from \"./App.vue?vue&type=template&id=e24aa18c&ts=true\"\nimport script from \"./App.vue?vue&type=script&lang=ts\"\nexport * from \"./App.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock } from \"vue\"\nimport _imports_0 from '@/assets/icons/auto-renew.svg'\n\n\nconst _hoisted_1 = { class: \"grid grid-cols-1 w-full\" }\nconst _hoisted_2 = { class: \"grid grid-cols-[15%_85%]\" }\nconst _hoisted_3 = [\"innerHTML\"]\n\nimport SectionFrame from '@/components/SectionFrame/SectionFrame.vue';\r\n\r\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'AutoRenewalMessage',\n props: {\n autoRenewalContent: {}\n },\n setup(__props: any) {\n\r\nconst props = __props;\r\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(SectionFrame, { class: \"mt-2\" }, {\n sectionFrameContent: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _cache[0] || (_cache[0] = _createElementVNode(\"div\", null, [\n _createElementVNode(\"img\", {\n src: _imports_0,\n alt: \"Auto renew icon\",\n role: \"img\",\n class: \"mt-0 w-[80px] h-[80px] rounded-full\"\n })\n ], -1)),\n _createElementVNode(\"div\", { innerHTML: _ctx.autoRenewalContent }, null, 8, _hoisted_3)\n ])\n ])\n ]),\n _: 1\n }))\n}\n}\n\n})","import script from \"./AutoRenewalMessage.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AutoRenewalMessage.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { IFeatureToggle } from '@/interfaces/entities/feature-toggle';\r\n\r\nexport enum FeatureToggles {\r\n DisablePropositions = 'disablePropositions',\r\n DisableCrossSell = 'disableCrosssell',\r\n}\r\n\r\nexport function getToggle(toggleName: FeatureToggles, featureToggles: IFeatureToggle[]): IFeatureToggle | null {\r\n if (!toggleName || !featureToggles) return null;\r\n const toggle = featureToggles.find((x) => x.name == toggleName);\r\n return toggle ?? null;\r\n}\r\n","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = [\"id\"]\n\nimport { useFeatureTogglesStore } from '@/store/feature-toggles/featureTogglesStore';\r\nimport { ref, onMounted, computed, reactive } from 'vue';\r\nimport { IFeatureToggle } from '@/interfaces/entities/feature-toggle';\r\nimport { getToggle, FeatureToggles } from '@/utils/feature-toggle';\r\nimport { prop } from 'vue-class-component';\r\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'DecisionIntelligenceDisclaimer',\n props: {\n quoteReference: {},\n isQuotePage: { type: Boolean },\n stepName: {}\n },\n setup(__props: any) {\n\r\nconst refFeatureToggles = useFeatureTogglesStore();\r\nconst featureToggle = ref();\r\nconst nudgeDisclaimer = ref();\r\n\r\nconst props = __props;\r\n\r\nonMounted(async () => {\r\n const featureToggles = await refFeatureToggles.getFeatureToggles();\r\n featureToggle.value = getToggle(FeatureToggles.DisablePropositions, featureToggles);\r\n});\r\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", null, [\n _createElementVNode(\"div\", {\n id: `nudge-disclaimer-${props.stepName ? props.stepName?.replaceAll(' ', '-')?.toLowerCase() : 'quote'}`\n }, null, 8, _hoisted_1)\n ]))\n}\n}\n\n})","\r\n\r\n\r\n","import script from \"./DecisionIntelligenceDisclaimer.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./DecisionIntelligenceDisclaimer.vue?vue&type=script&lang=ts&setup=true\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { resolveComponent as _resolveComponent, withKeys as _withKeys, createVNode as _createVNode, toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, unref as _unref, vShow as _vShow, withDirectives as _withDirectives, Fragment as _Fragment } from \"vue\"\n\nconst _hoisted_1 = { class: \"flex md:flex-row flex-col md:gap-4\" }\nconst _hoisted_2 = { class: \"flex flex-col\" }\nconst _hoisted_3 = {\n key: 0,\n class: \"text-xs text-racq-error-red mb-0\"\n}\n\nimport { ref, watch, nextTick, onMounted } from 'vue';\r\nimport { hideAllPoppersAndPaddings } from '@/plugins/tooltip/renderTooltip';\r\nimport { useAnalyticsStore, useFormStore, useFindCarStore } from '@/store';\r\nimport vehicleService from '@/services/store/vehicle.service';\r\nimport { FormEvents } from '@/enums/form-events.enum';\r\nimport { useI18n } from 'vue-i18n';\r\nimport InformationBox from '@/components/InformationBox/InformationBox.vue';\r\nimport { InformationBoxTypes } from '@/interfaces/forms/information-box.interface';\r\nimport { storeToRefs } from 'pinia';\r\n\r\n// Define Props & Emitters\r\n// ------------------------------------------------------------- //\r\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'FindCarByRego',\n props: {\n regoInputLabel: {},\n findCarBtn: {},\n regoNumber: {},\n help: {}\n },\n emits: ['vehicleFound', 'qldVehicleNotFound', 'setRegistration'],\n setup(__props: any, { emit: __emit }) {\n\r\nconst props = __props;\r\n\r\nconst emit = __emit;\r\nconst formStore = useFormStore();\r\nconst analyticsStore = useAnalyticsStore();\r\nconst findCarStore = useFindCarStore();\r\nconst translation = useI18n();\r\n\r\nconst { isQldRegoFound } = storeToRefs(findCarStore);\r\n\r\n// Vehicle rego can contain only case insensitive alphanumeric characters with the length ranging from 1 to 9 characters)\r\nconst regoRegEx = /^[a-zA-Z0-9]{1,9}$/;\r\n\r\n// Define Component state\r\n// ------------------------------------------------------------- //\r\nconst vehicleRegistration = ref('');\r\nconst regoLookupErrorMessage = ref('');\r\nconst regoNotFound = ref('');\r\n\r\nwatch(\r\n () => {\r\n return props.regoNumber;\r\n },\r\n (newVal, oldVal) => {\r\n if (newVal && newVal !== oldVal && newVal !== vehicleRegistration.value) {\r\n vehicleRegistration.value = newVal;\r\n getVehicleFromRego();\r\n }\r\n }\r\n);\r\n\r\nwatch(\r\n isQldRegoFound,\r\n (newValue) => {\r\n if (newValue === false) {\r\n const errorMessages: Record = translation.getLocaleMessage('en') as any;\r\n regoNotFound.value = regoLookupErrorMessage.value = errorMessages.REGO_NOTFOUND;\r\n }\r\n },\r\n { immediate: true }\r\n);\r\n\r\nonMounted(() => {\r\n if (props.regoNumber) {\r\n vehicleRegistration.value = props.regoNumber!;\r\n }\r\n});\r\n\r\n// Define functions\r\n// ------------------------------------------------------------- //\r\nasync function getVehicleFromRego() {\r\n regoLookupErrorMessage.value = '';\r\n const errorMessages: Record = translation.getLocaleMessage('en') as any;\r\n regoNotFound.value = errorMessages.REGO_NOTFOUND;\r\n\r\n if (!vehicleRegistration.value) {\r\n analyticsStore.pushAnalytics({\r\n event: FormEvents.SEARCH_REGISTRATION,\r\n form: {\r\n formErrorType: 'form error',\r\n formError: 'Enter your car registration number',\r\n formErrorDetail: errorMessages.REGO_EMPTY,\r\n name: findCarStore.formName,\r\n },\r\n });\r\n regoLookupErrorMessage.value = errorMessages.REGO_EMPTY;\r\n return;\r\n }\r\n\r\n /* Make sure rego only contains valid characters */\r\n if (!vehicleRegistration.value.match(regoRegEx)) {\r\n analyticsStore.pushAnalytics({\r\n event: FormEvents.SEARCH_REGISTRATION,\r\n form: {\r\n formErrorType: 'form error',\r\n formError: 'Invalid characters in rego',\r\n formErrorDetail: errorMessages.REGO_INVALID,\r\n name: findCarStore.formName,\r\n },\r\n });\r\n regoLookupErrorMessage.value = errorMessages.REGO_INVALID;\r\n return;\r\n }\r\n\r\n formStore.showLoadingForCurrentStep();\r\n\r\n try {\r\n // Set the registration number here, otherwise we lose it if it's not found and we do a manual lookup\r\n emit('setRegistration', vehicleRegistration.value);\r\n const vehicleDataFromRego = await vehicleService.regoLookup(vehicleRegistration.value);\r\n if (!vehicleDataFromRego) {\r\n regoLookupErrorMessage.value = errorMessages.REGO_NOTFOUND;\r\n await nextTick();\r\n analyticsStore.pushAnalytics({\r\n event: FormEvents.SEARCH_REGISTRATION,\r\n form: {\r\n formErrorType: 'form error',\r\n formError: 'Registration number not found',\r\n formErrorDetail:\r\n document.getElementById('find-car-by-rego-error')?.textContent ?? errorMessages.REGO_NOTFOUND,\r\n name: findCarStore.formName,\r\n },\r\n });\r\n emit('qldVehicleNotFound');\r\n }\r\n\r\n hideAllPoppersAndPaddings();\r\n vehicleDataFromRego && emit('vehicleFound', vehicleDataFromRego);\r\n } catch (e) {\r\n console.error('Rego lookup failed.', e);\r\n regoLookupErrorMessage.value = errorMessages.REGO_NOTFOUND;\r\n emit('qldVehicleNotFound');\r\n } finally {\r\n formStore.showLoadingForCurrentStep(false);\r\n }\r\n}\r\n\nreturn (_ctx: any,_cache: any) => {\n const _component_FormKit = _resolveComponent(\"FormKit\")!\n\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createElementVNode(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(_component_FormKit, {\n modelValue: vehicleRegistration.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((vehicleRegistration).value = $event)),\n label: _ctx.regoInputLabel,\n inputClass: \"racq-w-md racq-max-w-md\",\n innerClass: { 'bg-formfield-error': regoLookupErrorMessage.value && regoLookupErrorMessage.value !== regoNotFound.value },\n outerClass: \"mb-0\",\n validation: [['required'], ['matches', regoRegEx]],\n validationVisibility: \"submit\",\n maxLength: \"9\",\n help: _ctx.help,\n onKeyup: _withKeys(getVehicleFromRego, [\"enter\"])\n }, null, 8, [\"modelValue\", \"label\", \"innerClass\", \"validation\", \"help\"]),\n (regoLookupErrorMessage.value && regoLookupErrorMessage.value !== regoNotFound.value)\n ? (_openBlock(), _createElementBlock(\"p\", _hoisted_3, _toDisplayString(regoLookupErrorMessage.value), 1))\n : _createCommentVNode(\"\", true)\n ]),\n _createVNode(_component_FormKit, {\n type: \"button\",\n label: _ctx.findCarBtn,\n inputClass: \"btn btn-primary btn-md mt-4 md:mt-0\",\n outerClass: \"flex items-start md:mt-[28px]\",\n onClick: getVehicleFromRego\n }, null, 8, [\"label\"])\n ]),\n _withDirectives(_createElementVNode(\"div\", null, [\n _createVNode(InformationBox, {\n id: \"find-car-by-rego-error\",\n type: _unref(InformationBoxTypes).WARNING,\n description: regoLookupErrorMessage.value\n }, null, 8, [\"type\", \"description\"])\n ], 512), [\n [_vShow, regoLookupErrorMessage.value && regoLookupErrorMessage.value === regoNotFound.value]\n ])\n ], 64))\n}\n}\n\n})","\r\n\r\n\r\n\r\n","import script from \"./FindCarByRego.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FindCarByRego.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { IDropdownItem, IFoundVehicle } from '@/interfaces';\r\nimport { startCase, camelCase } from 'lodash-es';\r\nimport { truncateDecimals } from '@/utils/data-transforms';\r\nimport vehicleService from '@/services/store/vehicle.service';\r\n\r\nexport interface IVehicleOptions {\r\n year: string;\r\n make: string;\r\n model: string;\r\n series?: string;\r\n body?: string;\r\n colour?: string;\r\n}\r\n\r\nexport interface IVehicleLoadingOptions {\r\n year: boolean;\r\n make: boolean;\r\n model: boolean;\r\n series?: boolean;\r\n body?: boolean;\r\n colour?: boolean;\r\n}\r\n\r\nexport function toTitleCase(str: string) {\r\n return startCase(camelCase(str));\r\n}\r\n\r\n/**\r\n * Create a formatted, human readable string from car specs data\r\n *\r\n * @param {*} vehicle The vehicle data obtained from NVIC or rego lookup\r\n * @param {'basic'|'detailed'} type Returns a basic or detailed car specs string\r\n *\r\n * @returns {String}\r\n */\r\nfunction formattedCarSpecs(vehicle: IFoundVehicle, type = 'detailed') {\r\n const vehicleModelVariantSeries = `${toTitleCase(vehicle?.model?.description || '')} ${\r\n vehicle?.variant?.description || ''\r\n } ${vehicle?.option?.series || ''}`;\r\n\r\n const speeds = `${vehicle?.gears + ' Speed' || ''}`;\r\n\r\n const autoOrManual = vehicle?.option?.transmission === 'A' ? 'Auto' : 'Manual';\r\n\r\n const vehicleDoorsBodyTransmissionDriveType = `${vehicle?.option?.doors + ' Door' || ''} ${\r\n vehicle?.body?.description || ''\r\n } - ${speeds} ${autoOrManual} ${vehicle?.driveType || ''} -`;\r\n\r\n const engineCapacity =\r\n vehicle?.engineCapacity > 0 ? truncateDecimals(Number(vehicle?.engineCapacity * 0.001)) + 'L' : '';\r\n\r\n const vehicleCylindersEngineAndFuel = `${vehicle?.cylinders || ''} ${engineCapacity} ${\r\n vehicle?.fuelType?.code || ''\r\n }`;\r\n\r\n const vehicleTurbo = `${vehicle?.hasTurbo ? 'Turbo - ' : ' - '}`;\r\n\r\n if (type === 'detailed') {\r\n return `${vehicleModelVariantSeries} ${vehicleTurbo} ${vehicleDoorsBodyTransmissionDriveType} ${vehicleCylindersEngineAndFuel}`;\r\n }\r\n\r\n return `${vehicle?.manufacturingYear || ''} ${vehicle?.model?.description || ''} ${\r\n vehicle?.variant?.description || ''\r\n } ${vehicle?.body?.description || ''} ${vehicle?.option?.series || ''} ${autoOrManual}`;\r\n}\r\n\r\n/**\r\n * Fetch list of years.\r\n *\r\n */\r\nasync function fetchVehicleYearsList(): Promise {\r\n const vehicleYearsData = await vehicleService.getVehicleYears();\r\n const mappedVehicleYears = vehicleService.mapVehicleDataToFormUI(vehicleYearsData);\r\n // Update the label value from 1900 => 'Before 1960' for better UX\r\n mappedVehicleYears[mappedVehicleYears.length - 1].label = 'Before 1960';\r\n\r\n return mappedVehicleYears;\r\n}\r\n\r\n/**\r\n * Search vehicle makes by year\r\n *\r\n * @param {String} year\r\n */\r\nasync function fetchVehicleMakesByYear(year: string): Promise {\r\n if (year === 'Before 1960' || !year) return [];\r\n\r\n const vehicleMakesData = await vehicleService.getVehicleMakesByYear(year);\r\n\r\n if (vehicleMakesData) {\r\n return vehicleService.mapVehicleDataToFormUI(vehicleMakesData);\r\n }\r\n\r\n return [];\r\n}\r\n\r\n/**\r\n * Search vehicle models by year and make\r\n *\r\n */\r\nasync function fetchModelsByYearAndMake(year: string, make: string): Promise {\r\n if (!year && !make) {\r\n return [];\r\n }\r\n\r\n const vehicleModelsData = await vehicleService.getVehicleModelsByYearAndMake(year, make);\r\n\r\n if (vehicleModelsData) {\r\n return vehicleService.mapVehicleDataToFormUI(vehicleModelsData);\r\n }\r\n\r\n return [];\r\n}\r\n\r\n/**\r\n * Fetch vehicle variants (series) by year, make and model\r\n *\r\n */\r\nasync function fetchVehicleVariantsByYearMakeModel(\r\n year: string,\r\n make: string,\r\n model: string\r\n): Promise {\r\n if (!year && !make && !model) {\r\n return [];\r\n }\r\n\r\n const vehicleSeriesData = await vehicleService.getVehicleVariantsByYearMakeModel(year, make, model);\r\n\r\n if (vehicleSeriesData) {\r\n return vehicleService.mapVehicleDataToFormUI(vehicleSeriesData);\r\n }\r\n\r\n return [];\r\n}\r\n\r\n/**\r\n * Fetch detailed vehicle data for a given year, make, model, variant and body.\r\n *\r\n */\r\nasync function fetchVehicleDetailsByYearMakeModelVariantBody({\r\n year,\r\n make,\r\n model,\r\n series,\r\n body,\r\n}: IVehicleOptions): Promise {\r\n if (!year && !make && !model) {\r\n return [];\r\n }\r\n\r\n const possibleVehiclesData = await vehicleService.getVehicleDetailsByYearMakeModelVariantBody(\r\n year,\r\n make,\r\n model,\r\n series,\r\n body\r\n );\r\n\r\n if (possibleVehiclesData?.length) {\r\n return possibleVehiclesData;\r\n }\r\n\r\n return [];\r\n}\r\n\r\n/**\r\n * Fetch a list of bodies for a given vehicle year, make, model, series combination.\r\n *\r\n * @returns\r\n */\r\nasync function fetchVehicleBodies({ year, make, model, series }: IVehicleOptions): Promise {\r\n if (!year && !make && !model) {\r\n return [];\r\n }\r\n\r\n const vehicleBodyData = await vehicleService.getVehicleBodiesByYearMakeModelVariant(year, make, model, series);\r\n\r\n if (vehicleBodyData) {\r\n return vehicleService.mapVehicleDataToFormUI(vehicleBodyData);\r\n }\r\n\r\n return [];\r\n}\r\n\r\nexport default function useVehicleData() {\r\n return {\r\n formattedCarSpecs,\r\n fetchVehicleYearsList,\r\n fetchVehicleMakesByYear,\r\n fetchModelsByYearAndMake,\r\n fetchVehicleVariantsByYearMakeModel,\r\n fetchVehicleDetailsByYearMakeModelVariantBody,\r\n fetchVehicleBodies,\r\n };\r\n}\r\n","import { defineComponent as _defineComponent } from 'vue'\nimport { createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"flex flex-col gap-2\" }\n\nimport { ref, onMounted, computed, watch } from 'vue';\r\nimport { IFoundVehicle } from '@/interfaces';\r\nimport useVehicleData from '@/composables/useVehicleData';\r\nimport { clone, uniqBy } from 'lodash-es';\r\nimport { IRadioButtonCard } from '@/interfaces/entities/radio-button-card.interface';\r\nimport PanelTitle from '@/components/PanelTitle/PanelTitle.vue';\r\nimport RadioCardList from '@/components/RadioCardList/RadioCardList.vue';\r\n\r\n// Define Props & Emitters\r\n// ------------------------------------------------------------- //\r\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'FindYourCarList',\n props: {\n vehicleList: {},\n heading: {},\n foundVehiclesByRego: { type: Boolean },\n regoResultsStepTitle: {},\n regoResultsStepContent: {},\n makeAndModelResultsStepTitle: {},\n makeAndModelResultsStepContent: {}\n },\n emits: ['vehicleSelected'],\n setup(__props: any, { emit: __emit }) {\n\r\nconst props = __props;\r\n\r\nconst emit = __emit;\r\nconst vehicleData = useVehicleData();\r\nconst vehicleDescriptionMode = ref('basic');\r\nconst uniqVehicleList = ref([]);\r\n\r\nconst carImage = { value: { src: require('@/assets/icons/car.svg'), alt: 'Car Icon' } };\r\n\r\n// Define Component state\r\n// ------------------------------------------------------------- //\r\nconst selectedVehicle = ref(undefined);\r\n\r\nconst makeModelDescriptionRego = computed(\r\n () => (vehicle: IFoundVehicle) =>\r\n `${vehicle.make.description} ${vehicle.model.description} ${vehicle.registrationNumber.toUpperCase()} QLD`\r\n);\r\n\r\nconst resultsStepTitle = computed(() => {\r\n return {\r\n value: props.foundVehiclesByRego ? props.regoResultsStepTitle : props.makeAndModelResultsStepTitle,\r\n };\r\n});\r\n\r\nconst resultsStepContent = computed(() => {\r\n return {\r\n value: props.foundVehiclesByRego ? props.regoResultsStepContent : props.makeAndModelResultsStepContent,\r\n };\r\n});\r\n\r\nconst rbcVehicleOptions = ref([]);\r\nconst rbcSelectedVehicleOption = ref('');\r\n\r\n// Define Lifycycle hooks\r\n// ------------------------------------------------------------- //\r\nonMounted(() => {\r\n uniqVehicleList.value = clone(props.vehicleList);\r\n vehicleDescriptionMode.value = 'basic';\r\n if (props.vehicleList?.length === 1) {\r\n rbcSelectedVehicleOption.value = props.vehicleList[0].glassesId?.toString();\r\n } else {\r\n // check if any duplicate for basic description\r\n const basicDescriptionsList = props.vehicleList\r\n .map((vehicle) => vehicleData.formattedCarSpecs(vehicle, vehicleDescriptionMode.value))\r\n .sort();\r\n\r\n const hasDuplicatedBasicDescription = basicDescriptionsList.some((description, index) => {\r\n if (!index) return false;\r\n return basicDescriptionsList[index - 1] == description;\r\n });\r\n\r\n // Uniq vehicle list\r\n if (hasDuplicatedBasicDescription) {\r\n vehicleDescriptionMode.value = 'detailed';\r\n uniqVehicleList.value = uniqBy(props.vehicleList, (vehicle) => {\r\n return vehicleData.formattedCarSpecs(vehicle, vehicleDescriptionMode.value);\r\n });\r\n }\r\n }\r\n\r\n rbcVehicleOptions.value = setRadioButtonCardOptions(uniqVehicleList.value);\r\n});\r\n\r\n// Watch for changes to update parent modelValue\r\nwatch(rbcSelectedVehicleOption, (newValue) => {\r\n const selectedVehicle = uniqVehicleList.value.find((uv) => uv.glassesId.toString() === newValue);\r\n selectVehicle(selectedVehicle as IFoundVehicle);\r\n});\r\n\r\nfunction setRadioButtonCardOptions(uniqueVehicles: IFoundVehicle[]): any[] {\r\n const rbcVehicleOptions: any[] = [];\r\n uniqueVehicles.forEach((uniqueVehicle) => {\r\n const rbcVehicleOption: any = {\r\n value: uniqueVehicle.glassesId.toString(),\r\n image: carImage,\r\n label: makeModelDescriptionRego.value(uniqueVehicle),\r\n help: vehicleData.formattedCarSpecs(uniqueVehicle, vehicleDescriptionMode.value),\r\n };\r\n rbcVehicleOptions.push(rbcVehicleOption);\r\n });\r\n return rbcVehicleOptions;\r\n}\r\n\r\n// Define Functions\r\n// ------------------------------------------------------------- //\r\nfunction selectVehicle(vehicle: IFoundVehicle) {\r\n selectedVehicle.value = vehicle;\r\n emit('vehicleSelected', vehicle);\r\n}\r\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(PanelTitle, {\n title: resultsStepTitle.value,\n subTitle: resultsStepContent.value\n }, null, 8, [\"title\", \"subTitle\"]),\n _createVNode(RadioCardList, {\n modelValue: rbcSelectedVehicleOption.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((rbcSelectedVehicleOption).value = $event)),\n bindings: { options: rbcVehicleOptions.value, optionsClass: 'racq-max-w-xl' }\n }, null, 8, [\"modelValue\", \"bindings\"])\n ]))\n}\n}\n\n})","\r\n\r\n\r\n\r\n","import script from \"./FindYourCarList.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FindYourCarList.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, createBlock as _createBlock, Fragment as _Fragment } from \"vue\"\n\nconst _hoisted_1 = { class: \"find-your-car-wrapper flex flex-col gap-3\" }\nconst _hoisted_2 = { class: \"text-black px-2 py-1 hover:bg-racq-light-blue-grey\" }\nconst _hoisted_3 = { key: 0 }\nconst _hoisted_4 = { key: 1 }\n\nimport { ref, onBeforeMount, reactive, watch } from 'vue';\r\nimport useVehicleData from '@/composables/useVehicleData';\r\nimport type { IDropdownItem, IFoundVehicle } from '@/interfaces';\r\nimport type { IVehicleOptions, IVehicleLoadingOptions } from '@/composables/useVehicleData';\r\nimport { FormKit } from '@formkit/vue';\r\nimport { DROPDOWN_PLACEHOLDER } from '@/constants/general-words.const';\r\n\r\n// Define types and interfaces\r\n// ------------------------------------------------------------- //\r\ntype vehicleSelectionTypes = 'year' | 'make' | 'model' | 'series' | 'body';\r\n\r\n// Define Props & Emitters\r\n// ------------------------------------------------------------- //\r\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'FindYourCar',\n props: {\n topMakes: {},\n showColour: { type: Boolean },\n colourLabel: {},\n yearLabel: {},\n makeLabel: {},\n modelLabel: {},\n seriesLabel: {},\n bodyLabel: {}\n },\n emits: ['vehicleFound', 'modelMakeChanged', 'setColour'],\n setup(__props: any, { expose: __expose, emit: __emit }) {\n\r\nconst props = __props;\r\n\r\nconst emit = __emit;\r\n__expose({\r\n resetVehicleSelection,\r\n});\r\n\r\n// Define Composables\r\n// ------------------------------------------------------------- //\r\nconst {\r\n fetchVehicleYearsList,\r\n fetchVehicleMakesByYear,\r\n fetchModelsByYearAndMake,\r\n fetchVehicleVariantsByYearMakeModel,\r\n fetchVehicleDetailsByYearMakeModelVariantBody,\r\n fetchVehicleBodies,\r\n} = useVehicleData();\r\n\r\n// Define Component state\r\n// ------------------------------------------------------------- //\r\nconst vehicleYearsList = ref([]);\r\nconst vehicleMakesList = ref([]);\r\nconst vehicleModelsList = ref([]);\r\nconst vehicleSeriesList = ref([]);\r\nconst vehicleBodiesList = ref([]);\r\nconst availableVehiclesList = ref([]);\r\n\r\nconst vehicleSelection = reactive({\r\n year: '',\r\n make: '',\r\n model: '',\r\n series: '',\r\n body: '',\r\n colour: '',\r\n});\r\n\r\nconst vehicleSelectionLoading = reactive({\r\n year: false,\r\n make: false,\r\n model: false,\r\n series: false,\r\n body: false,\r\n colour: false,\r\n});\r\n\r\n// Define Lifecycle hooks and exectute init functions\r\n// ------------------------------------------------------------- //\r\nonBeforeMount(async () => {\r\n vehicleYearsList.value = await fetchVehicleYearsList();\r\n});\r\n\r\n// Call refreshData only when stepActive becomes true\r\nwatch(vehicleSelection, (newVal) => {\r\n if (vehicleSelection?.colour) {\r\n emit('setColour', vehicleSelection?.colour);\r\n }\r\n});\r\n\r\n// Define functions\r\n// ------------------------------------------------------------- //\r\n\r\nconst isColourDisabled = (): boolean => {\r\n if (vehicleSelection.series !== 'ALL') {\r\n return (!vehicleSelection.body || vehicleSelectionLoading?.body) as boolean;\r\n }\r\n return false;\r\n};\r\n\r\nconst dynamicMakesList = ({ search }: { search: string }) => {\r\n if (search) {\r\n return vehicleMakesList.value.filter((option) => {\r\n return option.label?.toUpperCase().includes(search.toUpperCase());\r\n });\r\n } else {\r\n // Top Make\r\n try {\r\n if (props.topMakes) {\r\n const topMakes = props.topMakes\r\n .split('|')\r\n .map((make) => vehicleMakesList.value.find((option) => option.label.toUpperCase() == make.toUpperCase()))\r\n .filter((option) => option);\r\n return [...topMakes, { label: '', value: '' }, ...vehicleMakesList.value];\r\n }\r\n } catch (error) {\r\n console.warn('Unable to load top makes: ', error);\r\n }\r\n return vehicleMakesList.value;\r\n }\r\n};\r\n\r\nfunction resetVehicleSelection() {\r\n vehicleSelection.year = '';\r\n vehicleSelection.make = '';\r\n vehicleSelection.model = '';\r\n vehicleSelection.series = '';\r\n vehicleSelection.body = '';\r\n vehicleSelection.colour = '';\r\n}\r\n\r\n/**\r\n * Handle dropdown change by updating ref data\r\n *\r\n * @param dropdown\r\n * @param value\r\n */\r\nasync function handleDropdownChange(dropdown: vehicleSelectionTypes, value: string) {\r\n vehicleSelection[dropdown] = value;\r\n emit('modelMakeChanged');\r\n switch (dropdown) {\r\n case 'year': {\r\n vehicleSelection.make = '';\r\n vehicleSelection.model = '';\r\n vehicleSelection.series = '';\r\n vehicleSelection.body = '';\r\n\r\n vehicleMakesList.value = [];\r\n vehicleModelsList.value = [];\r\n vehicleSeriesList.value = [];\r\n vehicleBodiesList.value = [];\r\n availableVehiclesList.value = [];\r\n\r\n if (value === 'Before 1960') {\r\n emit('vehicleFound', [{ manufacturingYear: 1900 }]);\r\n return;\r\n }\r\n\r\n vehicleSelectionLoading.year = true;\r\n const vehicleMakesByYear = await fetchVehicleMakesByYear(value).finally(\r\n () => (vehicleSelectionLoading.year = false)\r\n );\r\n vehicleMakesList.value = vehicleMakesByYear;\r\n\r\n break;\r\n }\r\n\r\n case 'make': {\r\n vehicleSelection.model = '';\r\n vehicleSelection.series = '';\r\n vehicleSelection.body = '';\r\n\r\n vehicleModelsList.value = [];\r\n vehicleSeriesList.value = [];\r\n vehicleBodiesList.value = [];\r\n availableVehiclesList.value = [];\r\n\r\n vehicleSelectionLoading.make = true;\r\n const vehicleModels = await fetchModelsByYearAndMake(vehicleSelection.year, vehicleSelection.make).finally(\r\n () => (vehicleSelectionLoading.make = false)\r\n );\r\n vehicleModelsList.value = vehicleModels;\r\n\r\n break;\r\n }\r\n\r\n case 'model': {\r\n vehicleSelection.series = '';\r\n vehicleSelection.body = '';\r\n\r\n vehicleSeriesList.value = [];\r\n vehicleBodiesList.value = [];\r\n availableVehiclesList.value = [];\r\n\r\n vehicleSelectionLoading.model = true;\r\n const vehicleVariants = await fetchVehicleVariantsByYearMakeModel(\r\n vehicleSelection.year,\r\n vehicleSelection.make,\r\n vehicleSelection.model\r\n ).finally(() => (vehicleSelectionLoading.model = false));\r\n\r\n vehicleSeriesList.value = [{ label: 'All vehicles', value: 'ALL' }, ...vehicleVariants];\r\n\r\n break;\r\n }\r\n\r\n case 'series': {\r\n vehicleSelection.body = '';\r\n\r\n vehicleBodiesList.value = [];\r\n availableVehiclesList.value = [];\r\n\r\n if (!value) {\r\n return;\r\n }\r\n\r\n if (vehicleSelection.series === 'ALL') {\r\n const possibleVehiclesData = await fetchVehicleDetailsByYearMakeModelVariantBody(vehicleSelection);\r\n emit('vehicleFound', possibleVehiclesData);\r\n\r\n return;\r\n }\r\n\r\n vehicleSelectionLoading.series = true;\r\n const vehicleBodies = await fetchVehicleBodies(vehicleSelection).finally(\r\n () => (vehicleSelectionLoading.series = false)\r\n );\r\n vehicleBodiesList.value = vehicleBodies;\r\n break;\r\n }\r\n\r\n case 'body':\r\n availableVehiclesList.value = [];\r\n\r\n if (!value) {\r\n return;\r\n }\r\n\r\n vehicleSelectionLoading.body = true;\r\n // eslint-disable-next-line no-case-declarations\r\n const possibleVehiclesData = await fetchVehicleDetailsByYearMakeModelVariantBody(vehicleSelection).finally(\r\n () => (vehicleSelectionLoading.body = false)\r\n );\r\n availableVehiclesList.value = possibleVehiclesData;\r\n\r\n // emit results for parent to consume\r\n emit('vehicleFound', possibleVehiclesData);\r\n break;\r\n }\r\n}\r\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_unref(FormKit), {\n modelValue: vehicleSelection.year,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((vehicleSelection.year) = $event)),\n label: _ctx.yearLabel,\n wrapperClass: \"flex flex-col gap-1\",\n outerClass: \"input-xs2 !h-fit\",\n validation: \"required\",\n clearSearchOnOpen: \"\",\n openOnFocus: \"\",\n type: \"autocomplete\",\n popover: \"\",\n options: vehicleYearsList.value,\n loading: vehicleSelectionLoading.year,\n placeholder: _unref(DROPDOWN_PLACEHOLDER),\n onInput: _cache[1] || (_cache[1] = (val) => handleDropdownChange('year', val))\n }, null, 8, [\"modelValue\", \"label\", \"options\", \"loading\", \"placeholder\"]),\n (vehicleSelection.year !== 'Before 1960')\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n _createVNode(_unref(FormKit), {\n modelValue: vehicleSelection.make,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((vehicleSelection.make) = $event)),\n label: _ctx.makeLabel,\n outerClass: \"input-md !h-fit\",\n type: \"autocomplete\",\n validation: \"required\",\n clearSearchOnOpen: \"\",\n openOnFocus: \"\",\n options: dynamicMakesList,\n disabled: !vehicleSelection.year || vehicleSelectionLoading.year,\n loading: vehicleSelectionLoading.make,\n placeholder: _unref(DROPDOWN_PLACEHOLDER),\n onInput: _cache[3] || (_cache[3] = (val) => handleDropdownChange('make', val))\n }, {\n option: _withCtx(({ option }) => [\n _createElementVNode(\"div\", _hoisted_2, [\n (option.label)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_3, _toDisplayString(option.label), 1))\n : (_openBlock(), _createElementBlock(\"hr\", _hoisted_4))\n ])\n ]),\n _: 1\n }, 8, [\"modelValue\", \"label\", \"disabled\", \"loading\", \"placeholder\"]),\n _createVNode(_unref(FormKit), {\n modelValue: vehicleSelection.model,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = ($event: any) => ((vehicleSelection.model) = $event)),\n label: _ctx.modelLabel,\n outerClass: \"input-sm !h-fit\",\n type: \"autocomplete\",\n validation: \"required\",\n clearSearchOnOpen: \"\",\n openOnFocus: \"\",\n options: vehicleModelsList.value,\n disabled: !vehicleSelection.make || vehicleSelectionLoading.make,\n loading: vehicleSelectionLoading.model,\n placeholder: _unref(DROPDOWN_PLACEHOLDER),\n onInput: _cache[5] || (_cache[5] = (val) => handleDropdownChange('model', val))\n }, null, 8, [\"modelValue\", \"label\", \"options\", \"disabled\", \"loading\", \"placeholder\"]),\n _createVNode(_unref(FormKit), {\n modelValue: vehicleSelection.series,\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = ($event: any) => ((vehicleSelection.series) = $event)),\n label: _ctx.seriesLabel,\n outerClass: \"input-sm !h-fit\",\n type: \"autocomplete\",\n validation: \"required\",\n clearSearchOnOpen: \"\",\n openOnFocus: \"\",\n options: vehicleSeriesList.value,\n disabled: !vehicleSelection.model || vehicleSelectionLoading.model,\n loading: vehicleSelectionLoading.series,\n placeholder: _unref(DROPDOWN_PLACEHOLDER),\n onInput: _cache[7] || (_cache[7] = (val) => handleDropdownChange('series', val))\n }, null, 8, [\"modelValue\", \"label\", \"options\", \"disabled\", \"loading\", \"placeholder\"]),\n (vehicleSelection.series !== 'ALL')\n ? (_openBlock(), _createBlock(_unref(FormKit), {\n key: 0,\n modelValue: vehicleSelection.body,\n \"onUpdate:modelValue\": _cache[8] || (_cache[8] = ($event: any) => ((vehicleSelection.body) = $event)),\n label: _ctx.bodyLabel,\n outerClass: \"input-xs !h-fit\",\n type: \"autocomplete\",\n validation: \"required\",\n clearSearchOnOpen: \"\",\n openOnFocus: \"\",\n options: vehicleBodiesList.value,\n disabled: !vehicleSelection.series || vehicleSelectionLoading.series,\n loading: vehicleSelectionLoading.body,\n placeholder: _unref(DROPDOWN_PLACEHOLDER),\n onInput: _cache[9] || (_cache[9] = (val) => handleDropdownChange('body', val))\n }, null, 8, [\"modelValue\", \"label\", \"options\", \"disabled\", \"loading\", \"placeholder\"]))\n : _createCommentVNode(\"\", true),\n (_ctx.showColour)\n ? (_openBlock(), _createBlock(_unref(FormKit), {\n key: 1,\n modelValue: vehicleSelection.colour,\n \"onUpdate:modelValue\": _cache[10] || (_cache[10] = ($event: any) => ((vehicleSelection.colour) = $event)),\n label: _ctx.colourLabel,\n outerClass: \"input-xs2 !h-fit\",\n type: \"text\",\n clearSearchOnOpen: \"\",\n validation: \"required:trim\",\n openOnFocus: \"\",\n disabled: isColourDisabled()\n }, null, 8, [\"modelValue\", \"label\", \"disabled\"]))\n : _createCommentVNode(\"\", true)\n ], 64))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","\r\n\r\n\r\n\r\n\r\n\r\n","import script from \"./FindYourCar.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FindYourCar.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./FindYourCar.vue?vue&type=style&index=0&id=8e2df3fa&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-8e2df3fa\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createVNode as _createVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, unref as _unref, resolveComponent as _resolveComponent, createElementVNode as _createElementVNode, withCtx as _withCtx, createElementBlock as _createElementBlock, vShow as _vShow, withDirectives as _withDirectives } from \"vue\"\n\nconst _hoisted_1 = { class: \"form-vehicle-search-container flex flex-col gap-6 pb-6\" }\nconst _hoisted_2 = {\n key: 2,\n class: \"flex flex-col gap-6\"\n}\nconst _hoisted_3 = { class: \"h-12 mt-6 md:h-min flex items-start\" }\nconst _hoisted_4 = {\n key: 0,\n class: \"mb-6 flex flex-col gap-6\"\n}\n\nimport { ref, computed } from 'vue';\r\nimport FindCarByRego from '@/components/FindCar/FindCarByRego.vue';\r\nimport FindYourCarList from '@/components/FindCar/FindYourCarList.vue';\r\nimport FindYourCar from '@/components/FindCar/FindYourCar.vue';\r\nimport { useAnalyticsStore, useJeopardyStore, useFindCarStore } from '@/store';\r\nimport type { IFoundVehicle } from '@/interfaces';\r\nimport ShowHideButton from '@/components/ShowHideButton/ShowHideButton.vue';\r\nimport { storeToRefs } from 'pinia';\r\nimport { Field, RichText } from '@sitecore-jss/sitecore-jss-vue';\r\nimport { ImageFieldValue } from '@sitecore-jss/sitecore-jss-vue/types/components/Image';\r\nimport PanelTitle from '@/components/PanelTitle/PanelTitle.vue';\r\nimport { FormEvents } from '@/enums/form-events.enum';\r\n\r\ninterface IFindCarProps {\r\n node?: any;\r\n value?: any;\r\n topMakes: { value: string };\r\n regoResultsStepTitle: { value: string };\r\n regoResultsStepContent: { value: string };\r\n makeAndModelResultsStepTitle: { value: string };\r\n makeAndModelResultsStepContent: { value: string };\r\n findCarBtn: { value: string };\r\n regoNotFoundMessage: { value: string };\r\n yearLabel: { value: string };\r\n makeLabel: { value: string };\r\n modelLabel: { value: string };\r\n seriesLabel: { value: string };\r\n bodyLabel: { value: string };\r\n colourLabel: { value: string };\r\n regoInputLabel: { value: string };\r\n showColour: { value: boolean };\r\n makeAndModelTitleMessage: { value: string };\r\n expandMakeAndModelLabel: { value: string };\r\n icon: Field;\r\n title: { value: string };\r\n subTitle: { value: string };\r\n roadsideRegoHelpText: { value: string };\r\n isRoadside: { value: boolean };\r\n formName: { value: string };\r\n}\r\n\r\n// Define Props\r\n// ------------------------------------------------------------- //\r\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'FindCar',\n props: {\n context: {}\n },\n setup(__props: any) {\n\r\nconst props = __props;\r\n\r\n// Define Composables\r\n// ------------------------------------------------------------- //\r\nconst analyticsStore = useAnalyticsStore();\r\nconst jpStore = useJeopardyStore();\r\nconst findCarStore = useFindCarStore();\r\n\r\n// Define Component state\r\n// ------------------------------------------------------------- //\r\nconst findYourCarEl = ref(undefined);\r\nconst qldRegoFound = computed(() => findCarStore.isQldRegoFound);\r\nconst foundVehiclesByRego = ref(true);\r\nconst isExpanded = ref(false);\r\n\r\nconst vehicleRegistration = computed(() => findCarStore.registrationNumber);\r\nconst showMakeAndModel = computed(() => !qldRegoFound.value || isExpanded.value);\r\nconst showFoundVehicles = computed(() => findCarStore.showFoundVehicles);\r\nconst showExpandButton = computed(\r\n () => props.context.expandMakeAndModelLabel?.value && !props.context.isRoadside.value && qldRegoFound.value\r\n);\r\n\r\nconst { selectedVehicle, foundVehicleList } = storeToRefs(findCarStore);\r\n\r\nfindCarStore.setFormName(props.context.formName.value);\r\n\r\n// Define functions\r\n// ------------------------------------------------------------- //\r\nfunction setQldRegoFound(isFound: boolean) {\r\n findCarStore.isQldRegoFound = isFound;\r\n}\r\n\r\nfunction setRegistration(registrationNumber: string) {\r\n findCarStore.registrationNumber = registrationNumber;\r\n}\r\n\r\nfunction setVehicleColour(vehicleColour: string) {\r\n findCarStore.vehicleColour = vehicleColour;\r\n}\r\n\r\nfunction updateFoundVehicleList(data: IFoundVehicle[], byRego?: boolean) {\r\n selectedVehicle.value = undefined;\r\n foundVehicleList.value = data;\r\n foundVehiclesByRego.value = byRego || false;\r\n}\r\n\r\nconst toggleMakeAndModelSection = () => {\r\n if (!qldRegoFound.value) {\r\n isExpanded.value = true;\r\n return;\r\n }\r\n isExpanded.value = !isExpanded.value;\r\n};\r\n\r\nfunction showFoundVehicleList() {\r\n if (foundVehicleList.value.length && foundVehicleList.value[0].manufacturingYear >= 1960) {\r\n findCarStore.showCarList(true);\r\n\r\n /** Push event for analysis */\r\n if (foundVehicleList.value.length) {\r\n analyticsStore.pushAnalytics({\r\n event: FormEvents.STEP,\r\n form: {\r\n field: foundVehiclesByRego.value ? 'Found car registration' : 'Found car make and model',\r\n stepName: 'Find car confirmation',\r\n name: props.context.formName.value,\r\n },\r\n });\r\n }\r\n\r\n return;\r\n }\r\n\r\n jpStore.showJeopardyPanel({\r\n jpCode: findCarStore.pre1960VehicleJeopardyCode,\r\n formAnalyticsOverride: { formErrorDetail: 'We need to talk to you about your vehicle' }\r\n });\r\n}\r\n\r\nfunction selectVehicle(vehicle: IFoundVehicle) {\r\n findCarStore.selectedVehicle = vehicle;\r\n}\r\n\nreturn (_ctx: any,_cache: any) => {\n const _component_FormKit = _resolveComponent(\"FormKit\")!\n\n return (_openBlock(), _createElementBlock(\"div\", null, [\n _withDirectives(_createElementVNode(\"div\", _hoisted_1, [\n _createVNode(PanelTitle, {\n icon: _ctx.context.icon,\n title: _ctx.context.title,\n subTitle: _ctx.context.subTitle\n }, null, 8, [\"icon\", \"title\", \"subTitle\"]),\n (!showFoundVehicles.value)\n ? (_openBlock(), _createBlock(FindCarByRego, {\n key: 0,\n findCarBtn: _ctx.context.findCarBtn.value,\n regoInputLabel: _ctx.context.regoInputLabel.value,\n help: _ctx.context.isRoadside?.value ? _ctx.context.roadsideRegoHelpText?.value : '',\n regoNumber: vehicleRegistration.value,\n onVehicleFound: _cache[0] || (_cache[0] = \r\n (data) => {\r\n updateFoundVehicleList(data ? [data] : [], true);\r\n showFoundVehicleList();\r\n setQldRegoFound(true);\r\n isExpanded.value = false; // Hide make and model if vehicle found by rego\r\n }\r\n ),\n onQldVehicleNotFound: _cache[1] || (_cache[1] = ($event: any) => (setQldRegoFound(false))),\n onSetRegistration: _cache[2] || (_cache[2] = (data) => setRegistration(data))\n }, null, 8, [\"findCarBtn\", \"regoInputLabel\", \"help\", \"regoNumber\"]))\n : _createCommentVNode(\"\", true),\n (showExpandButton.value)\n ? (_openBlock(), _createBlock(ShowHideButton, {\n key: 1,\n showMore: showMakeAndModel.value,\n showLessLabel: _ctx.context.expandMakeAndModelLabel?.value,\n showMoreLabel: _ctx.context.expandMakeAndModelLabel?.value,\n appendClass: \"!mt-0\",\n onClick: toggleMakeAndModelSection\n }, null, 8, [\"showMore\", \"showLessLabel\", \"showMoreLabel\"]))\n : _createCommentVNode(\"\", true),\n (showMakeAndModel.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n (showExpandButton.value)\n ? (_openBlock(), _createBlock(_unref(RichText), {\n key: 0,\n field: _ctx.context.makeAndModelTitleMessage\n }, null, 8, [\"field\"]))\n : _createCommentVNode(\"\", true),\n _createVNode(_component_FormKit, {\n type: \"form\",\n onSubmit: showFoundVehicleList\n }, {\n default: _withCtx(({ state: { valid } }) => [\n _createVNode(FindYourCar, {\n ref_key: \"findYourCarEl\",\n ref: findYourCarEl,\n topMakes: _ctx.context.topMakes.value,\n colourLabel: _ctx.context.colourLabel.value,\n yearLabel: _ctx.context.yearLabel.value,\n makeLabel: _ctx.context.makeLabel.value,\n modelLabel: _ctx.context.modelLabel.value,\n seriesLabel: _ctx.context.seriesLabel.value,\n bodyLabel: _ctx.context.bodyLabel.value,\n showColour: _ctx.context.showColour.value,\n onModelMakeChanged: _unref(findCarStore).resetFoundVehicleList,\n onVehicleFound: _cache[3] || (_cache[3] = (data) => updateFoundVehicleList(data)),\n onSetColour: _cache[4] || (_cache[4] = (data) => setVehicleColour(data))\n }, null, 8, [\"topMakes\", \"colourLabel\", \"yearLabel\", \"makeLabel\", \"modelLabel\", \"seriesLabel\", \"bodyLabel\", \"showColour\", \"onModelMakeChanged\"]),\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(_component_FormKit, {\n label: _ctx.context.findCarBtn.value,\n type: \"submit\",\n disabled: !valid || foundVehiclesByRego.value || !_unref(foundVehicleList).length,\n inputClass: `btn btn-primary md:text-left`\n }, null, 8, [\"label\", \"disabled\"])\n ])\n ]),\n _: 1\n })\n ]))\n : _createCommentVNode(\"\", true)\n ], 512), [\n [_vShow, !showFoundVehicles.value]\n ]),\n (showFoundVehicles.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [\n _createVNode(FindYourCarList, {\n regoResultsStepTitle: _ctx.context.regoResultsStepTitle.value,\n regoResultsStepContent: _ctx.context.regoResultsStepContent.value,\n makeAndModelResultsStepTitle: _ctx.context.makeAndModelResultsStepTitle.value,\n makeAndModelResultsStepContent: _ctx.context.makeAndModelResultsStepContent.value,\n vehicleList: _unref(foundVehicleList),\n foundVehiclesByRego: foundVehiclesByRego.value,\n onVehicleSelected: selectVehicle\n }, null, 8, [\"regoResultsStepTitle\", \"regoResultsStepContent\", \"makeAndModelResultsStepTitle\", \"makeAndModelResultsStepContent\", \"vehicleList\", \"foundVehiclesByRego\"]),\n (!qldRegoFound.value && showFoundVehicles.value)\n ? (_openBlock(), _createBlock(_unref(RichText), {\n key: 0,\n field: _ctx.context.regoNotFoundMessage\n }, null, 8, [\"field\"]))\n : _createCommentVNode(\"\", true)\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","\r\n\r\n","import script from \"./FindCar.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FindCar.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, resolveDynamicComponent as _resolveDynamicComponent, mergeProps as _mergeProps, openBlock as _openBlock, createBlock as _createBlock } from \"vue\"\n\nimport { defineAsyncComponent, computed } from 'vue';\r\nimport type { FormProps } from '@/interfaces/forms/form-props.interface';\r\nimport { pascalCaseToKebabCase } from '@/utils/data-transforms';\r\n\r\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'FormBuilder',\n props: {\n componentDir: {},\n errorComponent: {},\n rendering: {},\n fields: {},\n params: {}\n },\n setup(__props: any) {\n\r\n/**\r\n * This is the root level component, picked up by Sitecore via SSR.\r\n *\r\n * Inside the props is a field called \"componentName\".\r\n * This is the name of the form component to render.\r\n *\r\n */\r\nconst props = __props;\r\nconst componentName = computed(() => (props?.rendering?.fields as any).data?.datasource.componentName.value);\r\nconst folderPath = computed(() => (props?.rendering?.fields as any).data?.datasource.folderPath?.value ?? '');\r\nconst componentDir = pascalCaseToKebabCase(componentName.value);\r\nconst formComponent = defineAsyncComponent(\r\n () => import(`@/forms/${folderPath.value ? folderPath.value + '/' : ''}${componentDir}/${componentName.value}.vue`)\r\n);\r\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(_resolveDynamicComponent(_unref(formComponent)), _mergeProps(_ctx.$props, { componentDir: _unref(componentDir) }), null, 16, [\"componentDir\"]))\n}\n}\n\n})","\r\n\r\n\r\n","import script from \"./FormBuilder.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FormBuilder.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, unref as _unref, createVNode as _createVNode, createElementVNode as _createElementVNode } from \"vue\"\n\nconst _hoisted_1 = { class: \"field-link\" }\n\nimport { ComponentFields, ComponentRendering, Link as ScLink } from '@sitecore-jss/sitecore-jss-vue';\r\n\r\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'LinkList',\n props: {\n fields: {},\n rendering: {}\n },\n setup(__props: any) {\n\r\n\r\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"ul\", null, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.fields.items as any, (item) => {\n return (_openBlock(), _createElementBlock(\"li\", {\n key: item.id,\n class: \"mx-0 md:mb-0\"\n }, [\n _createElementVNode(\"div\", _hoisted_1, [\n _createVNode(_unref(ScLink), {\n field: item.fields.link\n }, null, 8, [\"field\"])\n ])\n ]))\n }), 128))\n ]))\n}\n}\n\n})","import script from \"./LinkList.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./LinkList.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","export default {\r\n \"en\": {\r\n \"webchat\": {\r\n\t\t\t\"ChatButton\": \"Live Chat\",\r\n\t\t\t\"ChatStarted\": \"Chat Started\",\r\n\t\t\t\"ChatEnded\": \"Chat Ended\",\r\n\t\t\t\"AgentNameDefault\": \"Agent\",\r\n\t\t\t\"AgentConnected\": \"You are now chatting with <%Agent%>\",\r\n\t\t\t\"AgentDisconnected\": \"<%Agent%> Disconnected\",\r\n\t\t\t\"SupervisorNameDefault\": \"Supervisor\",\r\n\t\t\t\"SupervisorConnected\": \"<%Agent%> Connected\",\r\n\t\t\t\"SupervisorDisconnected\": \"<%Agent%> Disconnected\",\r\n\t\t\t\"AgentTyping\": \"...\",\r\n\t\t\t\"AgentUnavailable\": \"Sorry. There are no agents available. Please try later\",\r\n\t\t\t\"ChatTitle\": \"Live Chat\",\r\n\t\t\t\"ChatEnd\": \"X\",\r\n\t\t\t\"ChatClose\": \"X\",\r\n\t\t\t\"ChatMinimize\": \"Min\",\r\n\t\t\t\"ChatFormFirstName\": \"First Name\",\r\n\t\t\t\"ChatFormLastName\": \"Last Name\",\r\n\t\t\t\"ChatFormNickname\": \"Nickname\",\r\n\t\t\t\"ChatFormEmail\": \"Email\",\r\n\t\t\t\"ChatFormSubject\": \"Subject\",\r\n\t\t\t\"ChatFormPlaceholderFirstName\": \"Required\",\r\n\t\t\t\"ChatFormPlaceholderLastName\": \"Required\",\r\n\t\t\t\"ChatFormPlaceholderNickname\": \"Optional\",\r\n\t\t\t\"ChatFormPlaceholderEmail\": \"Optional\",\r\n\t\t\t\"ChatFormPlaceholderSubject\": \"Optional\",\r\n\t\t\t\"ChatFormSubmit\": \"Start Chat\",\r\n\t\t\t\"ChatFormCancel\": \"Cancel\",\r\n\t\t\t\"ChatInputPlaceholder\": \"Type your message here\",\r\n\t\t\t\"ChatInputSend\": \"SEND\",\r\n\t\t\t\"ChatEndQuestion\": \"Are you sure you want to end this chat session?\",\r\n\t\t\t\"ChatEndCancel\": \"Cancel\",\r\n\t\t\t\"ChatEndConfirm\": \"End chat\",\r\n\t\t\t\"ActionsDownload\": \"Download transcript\",\r\n\t\t\t\"ActionsEmail\": \"Email transcript\",\r\n\t\t\t\"ActionsPrint\": \"Print transcript\",\r\n\t\t\t\"ActionsCobrowseStart\": \"Start Co-browse\",\r\n\t\t\t\"ActionsCobrowseStop\": \"Exit Co-browse\",\r\n\t\t\t\"ActionsVideo\": \"Invite to Video Chat\",\r\n\t\t\t\"ActionsTransfer\": \"Transfer\",\r\n\t\t\t\"ActionsInvite\": \"Invite\",\r\n\t\t\t\"InstructionsTransfer\": \"Open this link on another device to transfer your chat session

<%link%>\",\r\n\t\t\t\"InstructionsInvite\": \"Share this link with another person to add them to this chat session

<%link%>\",\r\n\t\t\t\"InviteTitle\": \"Need help?\",\r\n\t\t\t\"InviteBody\": \"Let us know if we can help out.\",\r\n\t\t\t\"InviteReject\": \"No thanks\",\r\n\t\t\t\"InviteAccept\": \"Start chat\",\r\n\t\t\t\"ChatError\": \"There was a problem starting the chat session. Please Retry.\",\r\n\t\t\t\"ChatErrorButton\": \"OK\",\r\n\t\t\t\"RestoreTimeoutTitle\": \"Chat ended\",\r\n\t\t\t\"RestoreTimeoutBody\": \"Your previous chat session has timed out. Would you like to start a new one?\",\r\n\t\t\t\"RestoreTimeoutReject\": \"No thanks\",\r\n\t\t\t\"RestoreTimeoutAccept\": \"Start chat\",\r\n\t\t\t\"EndConfirmBody\": \"Would you really like to end your chat session?\",\r\n\t\t\t\"EndConfirmAccept\": \"End chat\",\r\n\t\t\t\"EndConfirmReject\": \"Cancel\",\r\n\t\t\t\"UnreadMessagesTitle\": \"unread\",\r\n\t\t\t\"AriaYouSaid\": \"You said\",\r\n\t\t\t\"AriaSaid\": \"said\",\r\n\t\t\t\"AriaSystemSaid\": \"System said\",\r\n\t\t\t\"AriaMinimize\": \"Live Chat minimize\",\r\n\t\t\t\"AriaMaximize\": \"Live Chat Maximize\",\r\n\t\t\t\"AriaClose\": \"Live chat close\",\r\n\t\t\t\"Errors\": {\r\n\t\t\t\t\"ChatUnavailable\": \"We're sorry but we cannot start a new chat at this time. Please try again later\",\r\n\t\t\t\t\"CriticalFault\": \"Your chat session has ended unexpectedly due to an unknown issue. We apologize for the inconvenience\",\r\n\t\t\t\t\"StartFailed\": \"There was an issue starting your chat session. Please verify your connection and that you submitted all required information properly, then try again\",\r\n\t\t\t\t\"MessageFailed\": \"Your message was not received successfully. Please try again\",\r\n\t\t\t\t\"RestoreFailed\": \"We're sorry but we were unable to restore your chat session due to an unknown error\",\r\n\t\t\t\t\"TransferFailed\": \"Unable to transfer chat at this time. Please try again later\",\r\n\t\t\t\t\"InviteFailed\": \"Unable to generate invite at this time. Please try again later\",\r\n\t\t\t\t\"ChatServerWentOffline\": \"Messages are currently taking longer than normal to get through. We're sorry for the delay\",\r\n\t\t\t\t\"RestoredOffline\": \"Messages are currently taking longer than normal to get through. We're sorry for the delay\",\r\n\t\t\t\t\"Disconnected\": \"
Connection Lost.
Please check your connection
\",\r\n\t\t\t\t\"Reconnected\": \"
Connection Restored
\",\r\n\t\t\t\t\"102\": \"Please enter your First name\",\r\n\t\t\t\t\"103\": \"Please enter your Last name\",\r\n\t\t\t\t\"161\": \"Please enter your name\",\r\n\t\t\t\t\"201\": \"Maximum number of files exceeded\",\r\n\t\t\t\t\"202\": \"Maximum filesize exceeded\",\r\n\t\t\t\t\"203\": \"Unsupported file submitted\",\r\n\t\t\t\t\"364\": \"Invalid email address\"\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};","import i18n from './i18n';\r\n\r\n/**\r\n * Configuration object for genesys chat with custom extensions.\r\n * For built-in config options refer to this documentation:\r\n * https://docs.genesys.com/Documentation/GWC/Current/Deployment/GWCConfig\r\n */\r\nexport default {\r\n main: {\r\n // This is controlled by html element that contains the class .live-chat it merges with data-properties\r\n // which is then controlled by Sitecore under website/Settings/LiveChatConfiguration (Debug mode)\r\n debug: true,\r\n themes: {\r\n racq: 'cx-theme-racq',\r\n },\r\n theme: 'racq',\r\n lang: 'en',\r\n i18n: i18n,\r\n mobileMode: 'auto',\r\n plugins: ['cx-webchat', 'cx-webchat-service']\r\n },\r\n webchat: {\r\n dataURL: 'https://gms-c1.gsn.cloud/genesys/2/chat/racq-v1',\r\n userData: {},\r\n actionsMenu: true,\r\n emojis: false,\r\n inviteOnRestoreTimeout: false,\r\n proactive: {\r\n enabled: false,\r\n idleTimer: 10,\r\n cancelTimer: 30,\r\n },\r\n chatButton: {\r\n enabled: true,\r\n template: false,\r\n openDelay: 0,\r\n hideDuringInvite: true,\r\n },\r\n minimizeOnMobileRestore: true,\r\n },\r\n checkChat: {\r\n url: 'https://gms-c1.gsn.cloud/genesys/1/service/racq-checkchat?_category=',\r\n defaultCategory: 'LD Training',\r\n },\r\n};\r\n","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createElementVNode as _createElementVNode, vShow as _vShow, withDirectives as _withDirectives, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode } from \"vue\"\n\nconst _hoisted_1 = [\"data-properties\"]\nconst _hoisted_2 = { class: \"cx-side-button-group\" }\n\nimport liveChatConfigProd from './data/config.prod';\r\nimport jquery from 'jquery';\r\nimport { SitecoreProps } from '@/interfaces/pages/sitecore-props.interface';\r\nimport { Field } from '@sitecore-jss/sitecore-jss-vue';\r\nimport { nextTick, onMounted, onUnmounted, computed, watch, ref } from 'vue';\r\nimport { useLiveChatStore, useJeopardyStore } from '@/store';\r\n\r\n/**\r\n * Variables\r\n */\r\ndeclare const CXBus: any;\r\ndeclare const _genesys: any;\r\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'LiveChat',\n props: {\n rendering: {},\n fields: {},\n params: {}\n },\n setup(__props: any) {\n\r\nconst store = useLiveChatStore();\r\nconst jpStore = useJeopardyStore();\r\nconst props = __props;\r\nconst $ = jquery;\r\nconst chatOpened = ref(false);\r\nlet liveChatConfig: any = {},\r\n liveChatModel = {\r\n defaults: {\r\n RACQPlugin: undefined,\r\n config: {},\r\n\r\n // Keep track of WebChat and WebChatService states\r\n chatOpen: false,\r\n chatReady: false,\r\n chatCategoryOnline: false,\r\n\r\n chatServiceReady: false,\r\n chatSessionActive: false,\r\n\r\n chatButtonEnabled: false,\r\n chatButtonVisible: false,\r\n },\r\n },\r\n config: any = {},\r\n instance: any;\r\n\r\nconst chatProperties = computed(\r\n () =>\r\n `${liveChatModel.defaults.chatCategoryOnline}|${liveChatModel.defaults.chatServiceReady}|${liveChatModel.defaults.chatReady}`\r\n);\r\nconst chatButtonProperties = computed(\r\n () =>\r\n `${liveChatModel.defaults.chatButtonEnabled}|${liveChatModel.defaults.chatOpen}|${liveChatModel.defaults.chatSessionActive}`\r\n);\r\n\r\nconst fireLiveChatOnClick = (e: Event) => {\r\n const className = (e.target as any).classList as DOMTokenList;\r\n if (className.contains('btn-livechat')) {\r\n store.startChat();\r\n }\r\n};\r\n\r\n/**\r\n * Hooks\r\n */\r\nonMounted(() => {\r\n if ((props.fields?.Enabled as Field)?.value) {\r\n liveChatConfig = liveChatConfigProd;\r\n nextTick(function () {\r\n init();\r\n });\r\n\r\n // Fire livechat when .btn-livechat clicked\r\n document.addEventListener('click', fireLiveChatOnClick);\r\n }\r\n});\r\n\r\nonUnmounted(() => {\r\n document.removeEventListener('click', fireLiveChatOnClick);\r\n});\r\n\r\nwatch(chatProperties, function (value) {\r\n const [chatCategoryOnline, chatServiceReady, chatReady] = value.split('|');\r\n if (!stringToBoolean(chatReady) || !stringToBoolean(chatServiceReady) || !stringToBoolean(chatCategoryOnline)) return;\r\n liveChatModel.defaults.chatButtonEnabled = true;\r\n});\r\n\r\nwatch(chatButtonProperties, function (value) {\r\n const [chatButtonEnabled, chatOpen, chatSessionActive] = value.split('|');\r\n if (!stringToBoolean(chatButtonEnabled) || stringToBoolean(chatOpen) || stringToBoolean(chatSessionActive)) {\r\n liveChatModel.defaults.chatButtonVisible = false;\r\n } else {\r\n liveChatModel.defaults.chatButtonVisible = true;\r\n }\r\n});\r\n\r\nwatch(\r\n () => liveChatModel.defaults.chatButtonVisible,\r\n (value) => {\r\n const isVisible = value;\r\n\r\n if (isVisible) {\r\n store.RACQPlugin.command('WebChat.showChatButton', { customEvent: true });\r\n } else {\r\n store.RACQPlugin.command('WebChat.hideChatButton', { customEvent: true });\r\n }\r\n }\r\n);\r\n\r\n/**\r\n * Functions\r\n */\r\n\r\nfunction checkChat(category: string) {\r\n jpStore.setChatLoading(true);\r\n return new Promise(function (resolve, reject) {\r\n store.RACQPlugin.command('RACQPlugin.checkChat', {\r\n category: category,\r\n })\r\n .done((data: any) => {\r\n jpStore.setChatEnabled(true);\r\n store.setChatEnabled(true);\r\n resolve(data);\r\n })\r\n .fail((errorMessage: any) => {\r\n jpStore.setChatEnabled(false);\r\n store.setChatEnabled(false);\r\n reject(errorMessage);\r\n });\r\n });\r\n}\r\n\r\nfunction addPrintButton() {\r\n const buttonContainer = $('.cx-webchat .cx-buttons-window-control');\r\n const printButton = $('');\r\n\r\n buttonContainer.prepend(printButton);\r\n\r\n const printTranscript = () => {\r\n store.RACQPlugin.command('WebChatService.getTranscript')\r\n .done(function (transcript: any) {\r\n if (!transcript || !transcript.messages) {\r\n return;\r\n }\r\n\r\n const messages = transcript.messages\r\n .filter((message: any) => !['TypingStopped', 'TypingStarted'].includes(message.type))\r\n .map(function (message: any) {\r\n return {\r\n text: message.text,\r\n name: message.from.name || 'User',\r\n date: new Date(message.timestamp).toLocaleString(),\r\n };\r\n });\r\n\r\n const transcriptTemplate = `\r\n
\r\n ${messages\r\n .filter((message: any) => message.text)\r\n .map((message: any) => `${message.name} - ${message.date}

${message.text}

`)\r\n .join('')}\r\n
\r\n `;\r\n\r\n const printWindow = window.open();\r\n printWindow?.document.write(transcriptTemplate);\r\n\r\n setTimeout(function () {\r\n printWindow?.focus();\r\n printWindow?.print();\r\n printWindow?.close();\r\n });\r\n })\r\n .fail(function (error: any) {\r\n console.error('[Live Chat] Failed to get transcript:', error);\r\n });\r\n };\r\n\r\n printButton.on('click', printTranscript);\r\n}\r\n\r\nfunction addMenuToggle() {\r\n const emojiButton = $('.cx-menu .cx-emoji');\r\n const uploadButton = $('.cx-menu .cx-upload');\r\n const cobrowseButton = $('.cx-menu .cx-cobrowse');\r\n\r\n // Check if at least one of the menu buttons is enabled\r\n if (\r\n emojiButton.css('display') === 'block' ||\r\n uploadButton.css('display') === 'block' ||\r\n cobrowseButton.css('display') === 'block'\r\n ) {\r\n const inputContainer = $('.cx-webchat .cx-input-container');\r\n const menuToggle = $(\"\");\r\n\r\n inputContainer.append(menuToggle);\r\n\r\n menuToggle.on('click', () => {\r\n $('.cx-menu-cell').toggleClass('visible');\r\n });\r\n }\r\n}\r\n\r\nfunction liveChatViewInit() {\r\n const category = config.checkChat.defaultCategory;\r\n // Prevent built-in showChatButton event\r\n store.RACQPlugin.before('WebChat.showChatButton', function (data: any) {\r\n if (data.customEvent) {\r\n liveChatModel.defaults.chatButtonVisible = true;\r\n return data;\r\n }\r\n\r\n // Returning nothing prevents the event\r\n return;\r\n });\r\n\r\n // Prevent built-in hideChatButton event\r\n store.RACQPlugin.before('WebChat.hideChatButton', function (data: any) {\r\n // Prevent every event that is not custom event\r\n if (data.customEvent) {\r\n liveChatModel.defaults.chatButtonVisible = false;\r\n return data;\r\n }\r\n\r\n return;\r\n });\r\n\r\n // Overwrite webchat.open event\r\n store.RACQPlugin.before('WebChat.open', function (data: any) {\r\n liveChatModel.defaults.chatOpen = true;\r\n chatOpened.value = true;\r\n\r\n // If restoring, allow it to pass through\r\n if (data.restoring || data.customEvent) {\r\n return data;\r\n }\r\n store\r\n .getLiveChatSessionData()\r\n .then((response: any) => {\r\n if (response.errors?.length) throw response;\r\n const newChat = {\r\n customEvent: true,\r\n form: {\r\n autoSubmit: true,\r\n // @todo maybe move this to config / make server customizable?\r\n firstname: response.firstName,\r\n lastname: response.lastName,\r\n email: response.email,\r\n },\r\n userData: {\r\n // @todo: pick-up user data from the page data\r\n 'MEMBERSHIP-CARD': response.membershipCard,\r\n 'X-RACQ-CH-COMMENTS': jpStore.additionalComments,\r\n 'X-RACQ-CH-FORM-STEP': jpStore.cancellationReasons,\r\n 'X-RACQ-CH-PAGE-ERROR': jpStore.jpCode + ': ' + jpStore.jpText,\r\n 'X-RACQ-CH-SOURCE-PAGE': document.title,\r\n 'X-RACQ-CH-REFERRAL-URL': document.URL,\r\n 'X-RACQ-CH-CATEGORY': category,\r\n // \"X-RACQ-CH-WEBSITE\": ''\r\n },\r\n };\r\n store.RACQPlugin.command('WebChat.open', newChat);\r\n })\r\n .catch(function (error: any) {\r\n const newChat = {\r\n customEvent: true,\r\n form: {\r\n autoSubmit: true,\r\n // @todo maybe move this to config / make server customizable?\r\n firstname: 'Anonymous',\r\n lastname: 'Customer',\r\n email: 'anonymous@email.com',\r\n },\r\n userData: {\r\n // @todo: pick-up user data from the page data\r\n // \"MEMBERSHIP-CARD\": \"123123123\",\r\n // \"X-RACQ-CH-COMMENTS\": ''\r\n // \"X-RACQ-CH-FORM-STEP\": ''\r\n // \"X-RACQ-CH-PAGE-ERROR\": ''\r\n 'X-RACQ-CH-SOURCE-PAGE': document.title,\r\n 'X-RACQ-CH-REFERRAL-URL': document.URL,\r\n 'X-RACQ-CH-CATEGORY': category,\r\n // \"X-RACQ-CH-WEBSITE\": ''\r\n },\r\n };\r\n store.RACQPlugin.command('WebChat.open', newChat);\r\n });\r\n return;\r\n });\r\n\r\n // Add custom layout elements to webchat\r\n store.RACQPlugin.subscribe('WebChat.opened', function () {\r\n addMenuToggle();\r\n addPrintButton();\r\n });\r\n}\r\n\r\nfunction registerCheckChat() {\r\n store.RACQPlugin.registerCommand('checkChat', function (e: any) {\r\n const category = e.data?.category || config.checkChat.defaultCategory;\r\n const categoryUrl = `${config.checkChat.url}${category}`;\r\n\r\n $.ajax(categoryUrl)\r\n .then(function (data) {\r\n if (data && data.online) {\r\n e.deferred.resolve(data);\r\n } else {\r\n e.deferred.reject(data.message || 'Unknown Error Occured');\r\n }\r\n })\r\n .catch(function (jqXHR, textStatus) {\r\n e.deferred.reject(textStatus);\r\n });\r\n });\r\n}\r\n\r\nfunction getSessionData(): Promise {\r\n const promise = new Promise(function (resolve, reject) {\r\n if (!store.RACQPlugin) {\r\n reject({});\r\n }\r\n\r\n store.RACQPlugin.command('WebChatService.getSessionData').done(resolve).fail(reject);\r\n });\r\n\r\n return promise;\r\n}\r\n\r\nfunction minimize() {\r\n const isMobile = _genesys.widgets.common.isMobileDevice();\r\n\r\n if (!config.webchat?.minimizeOnMobileRestore || !isMobile) {\r\n return;\r\n }\r\n\r\n const promise = new Promise(function (resolve, reject) {\r\n if (!store.RACQPlugin) {\r\n reject({});\r\n }\r\n\r\n store.RACQPlugin.command('WebChat.minimize').done(resolve).fail(reject);\r\n });\r\n\r\n return promise;\r\n}\r\n\r\nfunction liveChatModelInit() {\r\n // Create new plugin command to check if chat category is online on the server\r\n registerCheckChat();\r\n if (!config.main.enabled) {\r\n // Live chat is disabled for this page and button will not be shown\r\n // It can only be restored from active chat session and all events logic below can be skipped.\r\n // We still init registerCheckChat above in case another script wants to use it.\r\n return;\r\n }\r\n\r\n // Track WebChat states:\r\n store.RACQPlugin.subscribe('WebChat.ready', function () {\r\n liveChatModel.defaults.chatReady = true; //set('chatReady', true);\r\n });\r\n\r\n store.RACQPlugin.subscribe('WebChat.closed', function () {\r\n liveChatModel.defaults.chatOpen = false;\r\n chatOpened.value = false;\r\n });\r\n\r\n // Track WebChatService states:\r\n store.RACQPlugin.subscribe('WebChatService.ready', async function () {\r\n // Check if WebChatService has session data stored\r\n const sessionData = await getSessionData();\r\n liveChatModel.defaults.chatSessionActive = sessionData.sessionID ? true : false;\r\n liveChatModel.defaults.chatServiceReady = true;\r\n // Assuming that if sessionID exists - session will be restored\r\n //set('chatSessionActive', );\r\n //set('chatServiceReady', true);\r\n });\r\n\r\n store.RACQPlugin.subscribe('WebChatService.started', function () {\r\n liveChatModel.defaults.chatSessionActive = true;\r\n });\r\n\r\n store.RACQPlugin.subscribe('WebChatService.restored', function () {\r\n //set('chatSessionActive', true);\r\n liveChatModel.defaults.chatSessionActive = true;\r\n minimize();\r\n });\r\n\r\n store.RACQPlugin.subscribe('WebChatService.ended', function () {\r\n liveChatModel.defaults.chatSessionActive = true;\r\n });\r\n const category = config.checkChat.defaultCategory;\r\n\r\n checkChat(category)\r\n .then(function () {\r\n liveChatModel.defaults.chatCategoryOnline = true;\r\n })\r\n .catch(function (errorMessage) {\r\n liveChatModel.defaults.chatCategoryOnline = false;\r\n });\r\n}\r\n\r\nfunction init() {\r\n if (instance) {\r\n console.warn('[Live Chat] Cannot re-initialize the widget.');\r\n return;\r\n }\r\n\r\n (window as any)._genesys = (window as any)._genesys || {};\r\n\r\n config = liveChatConfig;\r\n\r\n if (props.fields?.chatConfiguration) {\r\n const pageConfig = props.fields.chatConfiguration;\r\n\r\n config = $.extend(true, config, pageConfig);\r\n }\r\n\r\n _genesys.widgets = liveChatConfig;\r\n CXBus.configure({\r\n debug: config.main.debug,\r\n pluginsPath: window.location.origin + '/scripts/genesis/js/',\r\n });\r\n\r\n CXBus.loadPlugin('widgets-core').done(function () {\r\n // Both plugins always need to load in case active session exists,\r\n // even if component is not present on the page\r\n CXBus.loadPlugin('webchat');\r\n CXBus.loadPlugin('webchatservice');\r\n });\r\n\r\n // Push plugin to store\r\n store.initPlugin(CXBus.registerPlugin('RACQPlugin'));\r\n const liveChatView = liveChatViewInit();\r\n liveChatModelInit();\r\n\r\n instance = liveChatView;\r\n}\r\n\r\nfunction stringToBoolean(value: string) {\r\n if (value == 'true') return true;\r\n else {\r\n return false;\r\n }\r\n}\r\n\nreturn (_ctx: any,_cache: any) => {\n return (_unref(store).liveChatEnabled)\n ? _withDirectives((_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"live-chat cx-widget cx-theme-racq\",\n \"data-properties\": JSON.stringify(_ctx.fields!.chatConfiguration)\n }, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"button\", {\n type: \"button\",\n class: \"cx-side-button\",\n \"aria-label\": \"Start Live Chat\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_unref(store).startChat()))\n })\n ])\n ], 8, _hoisted_1)), [\n [_vShow, !chatOpened.value]\n ])\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","\r\n\r\n\r\n","import script from \"./LiveChat.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./LiveChat.vue?vue&type=script&lang=ts&setup=true\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, createCommentVNode as _createCommentVNode } from \"vue\"\n\nconst _hoisted_1 = {\n key: 0,\n class: \"toggle-container\"\n}\nconst _hoisted_2 = { class: \"toggle-border\" }\nconst _hoisted_3 = [\"value\", \"onClick\"]\n\nimport { IDropdownItem } from '@/interfaces';\r\nimport { computed, onMounted } from 'vue';\r\n\r\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'Toggle',\n props: {\n context: {}\n },\n setup(__props: any) {\n\r\nconst props = __props;\r\n\r\nconst options = computed(() => (props?.context?.options as IDropdownItem[]) ?? []);\r\n\r\nfunction emitChange(value: string) {\r\n props.context?.node.input(value);\r\n}\r\n\r\nonMounted(() => {\r\n emitChange(props?.context?.defaultOption ?? options.value[0]?.value);\r\n});\r\n\nreturn (_ctx: any,_cache: any) => {\n return (options.value?.length)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(options.value, (option, index) => {\n return (_openBlock(), _createElementBlock(\"button\", {\n key: index,\n class: _normalizeClass([\"toggle-btn min-w-24 w-full\", props.context?.node?.value == option.value ? 'toggle-btn-active' : '']),\n type: \"button\",\n value: option.value,\n onClick: () => emitChange(option.value)\n }, _toDisplayString(option.label), 11, _hoisted_3))\n }), 128))\n ])\n ]))\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","\r\n\r\n\r\n","import script from \"./Toggle.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./Toggle.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"footer-container\" }\nconst _hoisted_2 = { class: \"forms-footer\" }\nconst _hoisted_3 = { class: \"top-footer-container\" }\nconst _hoisted_4 = { class: \"top-links\" }\nconst _hoisted_5 = { class: \"footer-logo\" }\nconst _hoisted_6 = { class: \"footer-copyright\" }\n\nimport {\r\n Image as ScImage,\r\n Link as ScLink,\r\n ComponentFields,\r\n ComponentRendering,\r\n Placeholder,\r\n} from '@sitecore-jss/sitecore-jss-vue';\r\n\r\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'Footer',\n props: {\n fields: {},\n rendering: {}\n },\n setup(__props: any) {\n\r\n\r\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"footer\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", _hoisted_4, [\n _createVNode(_unref(Placeholder), {\n name: \"jss-top-links\",\n rendering: _ctx.rendering\n }, null, 8, [\"rendering\"])\n ]),\n _createElementVNode(\"div\", _hoisted_5, [\n _createVNode(_unref(ScLink), {\n field: _ctx.fields.racqWebsiteLink\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(ScImage), {\n media: _ctx.fields.racqLogo,\n alt: \"RACQ Logo\"\n }, null, 8, [\"media\"])\n ]),\n _: 1\n }, 8, [\"field\"])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_6, \"© RACQ Operations Pty Ltd \" + _toDisplayString(new Date().getFullYear()), 1)\n ])\n ]))\n}\n}\n\n})","import script from \"./Footer.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./Footer.vue?vue&type=script&lang=ts&setup=true\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, withCtx as _withCtx, createElementVNode as _createElementVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"top-0 sticky header-container lg:border-b border-solid border-light-grey bg-racq-true-white\" }\nconst _hoisted_2 = { class: \"forms-header w-full\" }\nconst _hoisted_3 = { class: \"header-logo\" }\nconst _hoisted_4 = { class: \"form-title\" }\nconst _hoisted_5 = { class: \"hidden ml-auto mr-[18px] lg:block xl:hidden w-[300px]\" }\nconst _hoisted_6 = { class: \"help-content\" }\n\nimport { computed, onMounted } from 'vue';\r\nimport {\r\n Text as ScText,\r\n Image as ScImage,\r\n Link as ScLink,\r\n ComponentFields,\r\n ComponentRendering,\r\n Field,\r\n} from '@sitecore-jss/sitecore-jss-vue';\r\nimport FormStepperBar from '@/components/FormStepperBar/FormStepperBar.vue';\r\nimport { useFormStore } from '@/store';\r\n\r\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'Header',\n props: {\n fields: {},\n rendering: {},\n pageTitle: { default: '' }\n },\n setup(__props: any) {\n\r\nconst formStore = useFormStore();\r\n\r\nconst props = __props;\r\n\r\nconst pageTitle = computed(() => {\r\n const pageTitle = props.fields?.pageTitle as Field;\r\n return pageTitle?.value ? pageTitle : { value: props.pageTitle };\r\n});\r\n\r\nonMounted(() => {\r\n const pageTitleField = pageTitle.value;\r\n formStore.setPageTitle(pageTitleField.value);\r\n});\r\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"header\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(_unref(ScLink), {\n style: {\"font-size\":\"0\"},\n class: \"flex\",\n field: _ctx.fields.logoLink ? _ctx.fields.logoLink : {}\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(ScImage), {\n media: _ctx.fields.racqLogo\n }, null, 8, [\"media\"])\n ]),\n _: 1\n }, 8, [\"field\"])\n ]),\n _createElementVNode(\"h1\", _hoisted_4, [\n _createVNode(_unref(ScText), { field: pageTitle.value }, null, 8, [\"field\"])\n ]),\n _createElementVNode(\"div\", _hoisted_5, [\n (_unref(formStore).showStepper)\n ? (_openBlock(), _createBlock(FormStepperBar, { key: 0 }))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"div\", _hoisted_6, [\n _createVNode(_unref(ScLink), {\n field: _ctx.fields.helpContentLink ? _ctx.fields.helpContentLink : {}\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(ScImage), {\n media: _ctx.fields.helpLogo\n }, null, 8, [\"media\"])\n ]),\n _: 1\n }, 8, [\"field\"])\n ])\n ])\n ]))\n}\n}\n\n})","\r\n\r\n\r\n","import script from \"./Header.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./Header.vue?vue&type=script&lang=ts&setup=true\"\n\nconst __exports__ = script;\n\nexport default __exports__","/* eslint-disable */\n// Do not edit this file, it is auto-generated at build time!\n// See scripts/bootstrap.js to modify the generation of this file.\nimport App from '../App';\nimport AppRoot from '../AppRoot';\nimport AccountLoginInfoBox from '../components/AccountLoginInfoBox/AccountLoginInfoBox';\nimport AccountPreferences from '../components/AccountPreferences/AccountPreferences';\nimport AdditionalPolicyHolders from '../components/AdditionalPolicyHolders/AdditionalPolicyHolders';\nimport PolicyHolder from '../components/AdditionalPolicyHolders/PolicyHolder';\nimport AddRemoveForm from '../components/AddRemoveForm/AddRemoveForm';\nimport AddressLookup from '../components/AddressLookupOptions/AddressLookup';\nimport AddressLookupOptions from '../components/AddressLookupOptions/AddressLookupOptions';\nimport ManualAddressForm from '../components/AddressLookupOptions/ManualAddressForm';\nimport OverseasOption from '../components/AddressLookupOptions/OverseasOption';\nimport Alert from '../components/Alert/Alert';\nimport AutoRenewalMessage from '../components/AutoRenewalMessage/AutoRenewalMessage';\nimport BaseFormContainer from '../components/BaseFormContainer/BaseFormContainer';\nimport BaseIcon from '../components/BaseIcon/BaseIcon';\nimport CallToActionCard from '../components/CallToActionCard/CallToActionCard';\nimport CarAccessories from '../components/CarAccessories/CarAccessories';\nimport ConfirmationHeader from '../components/ConfirmationHeader/ConfirmationHeader';\nimport CTABanner from '../components/CTABanner/CTABanner';\nimport DateInput from '../components/DateInput/DateInput';\nimport DatePicker from '../components/DatePicker/DatePicker';\nimport DecisionIntelligenceCrossSellOffers from '../components/DecisionIntelligenceCrossSellOffers/DecisionIntelligenceCrossSellOffers';\nimport DecisionIntelligenceDisclaimer from '../components/DecisionIntelligenceDisclaimer/DecisionIntelligenceDisclaimer';\nimport DecisionIntelligenceLeadForm from '../components/DecisionIntelligenceLeadForm/DecisionIntelligenceLeadForm';\nimport DecisionIntelligenceOfferReminder from '../components/DecisionIntelligenceOfferReminder/DecisionIntelligenceOfferReminder';\nimport DecisionIntelligenceOffers from '../components/DecisionIntelligenceOffers/DecisionIntelligenceOffers';\nimport Disclaimer from '../components/Disclaimer/Disclaimer';\nimport DollarAmount from '../components/DollarAmount/DollarAmount';\nimport SendEmailConfirmation from '../components/EmailConfirmation/SendEmailConfirmation';\nimport ExpandableContent from '../components/ExpandableContent/ExpandableContent';\nimport FindCar from '../components/FindCar/FindCar';\nimport FindCarByRego from '../components/FindCar/FindCarByRego';\nimport FindYourCar from '../components/FindCar/FindYourCar';\nimport FindYourCarList from '../components/FindCar/FindYourCarList';\nimport FormBuilder from '../components/FormBuilder/FormBuilder';\nimport FormHeader from '../components/FormHeader/FormHeader';\nimport FormStep from '../components/FormStep/FormStep';\nimport FormStepDisclaimers from '../components/FormStepDisclaimers/FormStepDisclaimers';\nimport FormStepFooter from '../components/FormStepFooter/FormStepFooter';\nimport FormStepInputs from '../components/FormStepInputs/FormStepInputs';\nimport FormStepper from '../components/FormStepper/FormStepper';\nimport FormStepperBar from '../components/FormStepperBar/FormStepperBar';\nimport Gender from '../components/Gender/Gender';\nimport Highlights from '../components/Highlights/Highlights';\nimport InformationBox from '../components/InformationBox/InformationBox';\nimport IQAwardBanner from '../components/IQAwardBanner/IQAwardBanner';\nimport IQFloatingBox from '../components/IQFloatingBox/IQFloatingBox';\nimport IQPaymentError from '../components/IQPaymentError/IQPaymentError';\nimport IQPaymentPanel from '../components/IQPaymentPanel/IQPaymentPanel';\nimport JeopardyV2 from '../components/JeopardyV2/JeopardyV2';\nimport LinkList from '../components/LinkList/LinkList';\nimport LiveChat from '../components/livechat/LiveChat';\nimport Login from '../components/Login/Login';\nimport MembershipBenefits from '../components/MembershipBenefits/MembershipBenefits';\nimport MembershipBenefitsBrands from '../components/MembershipBenefitsBrands/MembershipBenefitsBrands';\nimport MembershipLoyaltyReview from '../components/MembershipLoyaltyReview/MembershipLoyaltyReview';\nimport MetaData from '../components/MetaData/MetaData';\nimport ModalDialog from '../components/ModalDialog/ModalDialog';\nimport PanelTitle from '../components/PanelTitle/PanelTitle';\nimport PaymentFrequencyDropdown from '../components/PaymentFrequencyDropdown/PaymentFrequencyDropdown';\nimport PaymentHeader from '../components/PaymentHeader/PaymentHeader';\nimport PaymentMethods from '../components/PaymentMethods/PaymentMethods';\nimport PaymentSection from '../components/PaymentSection/PaymentSection';\nimport PaymentSectionFZIframe from '../components/PaymentSection/PaymentSectionFZIframe';\nimport PercentageBar from '../components/PercentageBar/PercentageBar';\nimport PhoneNumberInput from '../components/PhoneNumberInput/PhoneNumberInput';\nimport PremiumDetailsConfirmation from '../components/PremiumDetailsConfirmation/PremiumDetailsConfirmation';\nimport PremiumDetailsReview from '../components/PremiumDetailsReview/PremiumDetailsReview';\nimport ProgressTracker from '../components/ProgressTracker/ProgressTracker';\nimport QuoteHeader from '../components/QuoteHeader/QuoteHeader';\nimport RACQDropdown from '../components/RACQDropdown/RACQDropdown';\nimport RACQFormKit from '../components/RACQFormKit/RACQFormKit';\nimport RACQFormKitErrorMessage from '../components/RACQFormKit/RACQFormKitErrorMessage';\nimport RadioCardList from '../components/RadioCardList/RadioCardList';\nimport RadioCardListComparisonItem from '../components/RadioCardList/RadioCardListComparisonItem';\nimport RadioCardListItem from '../components/RadioCardList/RadioCardListItem';\nimport RadioCardListMegaItem from '../components/RadioCardList/RadioCardListMegaItem';\nimport RadioCardListExpandable from '../components/RadioCardListExpandable/RadioCardListExpandable';\nimport RadioCardListExpandableItem from '../components/RadioCardListExpandable/RadioCardListExpandableItem';\nimport ReviewSummary from '../components/ReviewSummary/ReviewSummary';\nimport ReviewSummaryItem from '../components/ReviewSummary/ReviewSummaryItem';\nimport SectionFrame from '../components/SectionFrame/SectionFrame';\nimport ShowHideButton from '../components/ShowHideButton/ShowHideButton';\nimport SuburbLookupInput from '../components/SuburbLookupInput/SuburbLookupInput';\nimport TableControlGroup from '../components/TableControlGroup/TableControlGroup';\nimport TableControlGroupReference from '../components/TableControlGroup/TableControlGroupReference';\nimport TableControlItem from '../components/TableControlGroup/TableControlItem';\nimport TableSet from '../components/TableSet/TableSet';\nimport TableSetReference from '../components/TableSet/TableSetReference';\nimport Tag from '../components/Tag/Tag';\nimport TagList from '../components/TagList/TagList';\nimport TitleNameInput from '../components/TitleNameInput/TitleNameInput';\nimport Toggle from '../components/Toggle/Toggle';\nimport TrackPatrol from '../components/TrackPatrol/TrackPatrol';\nimport UpdatePostalAddressDisclaimer from '../components/UpdatePostalAddressDisclaimer/UpdatePostalAddressDisclaimer';\nimport ContextView from '../ContextView';\nimport Layout from '../Layout';\nimport Footer from '../layouts/Footer';\nimport Header from '../layouts/Header';\nimport NotFound from '../NotFound';\nimport RouteHandler from '../RouteHandler';\nimport RouteLoading from '../RouteLoading';\n\nconst components = new Map();\ncomponents.set('App', App);\ncomponents.set('AppRoot', AppRoot);\ncomponents.set('AccountLoginInfoBox', AccountLoginInfoBox);\ncomponents.set('AccountPreferences', AccountPreferences);\ncomponents.set('AdditionalPolicyHolders', AdditionalPolicyHolders);\ncomponents.set('PolicyHolder', PolicyHolder);\ncomponents.set('AddRemoveForm', AddRemoveForm);\ncomponents.set('AddressLookup', AddressLookup);\ncomponents.set('AddressLookupOptions', AddressLookupOptions);\ncomponents.set('ManualAddressForm', ManualAddressForm);\ncomponents.set('OverseasOption', OverseasOption);\ncomponents.set('Alert', Alert);\ncomponents.set('AutoRenewalMessage', AutoRenewalMessage);\ncomponents.set('BaseFormContainer', BaseFormContainer);\ncomponents.set('BaseIcon', BaseIcon);\ncomponents.set('CallToActionCard', CallToActionCard);\ncomponents.set('CarAccessories', CarAccessories);\ncomponents.set('ConfirmationHeader', ConfirmationHeader);\ncomponents.set('CTABanner', CTABanner);\ncomponents.set('DateInput', DateInput);\ncomponents.set('DatePicker', DatePicker);\ncomponents.set('DecisionIntelligenceCrossSellOffers', DecisionIntelligenceCrossSellOffers);\ncomponents.set('DecisionIntelligenceDisclaimer', DecisionIntelligenceDisclaimer);\ncomponents.set('DecisionIntelligenceLeadForm', DecisionIntelligenceLeadForm);\ncomponents.set('DecisionIntelligenceOfferReminder', DecisionIntelligenceOfferReminder);\ncomponents.set('DecisionIntelligenceOffers', DecisionIntelligenceOffers);\ncomponents.set('Disclaimer', Disclaimer);\ncomponents.set('DollarAmount', DollarAmount);\ncomponents.set('SendEmailConfirmation', SendEmailConfirmation);\ncomponents.set('ExpandableContent', ExpandableContent);\ncomponents.set('FindCar', FindCar);\ncomponents.set('FindCarByRego', FindCarByRego);\ncomponents.set('FindYourCar', FindYourCar);\ncomponents.set('FindYourCarList', FindYourCarList);\ncomponents.set('FormBuilder', FormBuilder);\ncomponents.set('FormHeader', FormHeader);\ncomponents.set('FormStep', FormStep);\ncomponents.set('FormStepDisclaimers', FormStepDisclaimers);\ncomponents.set('FormStepFooter', FormStepFooter);\ncomponents.set('FormStepInputs', FormStepInputs);\ncomponents.set('FormStepper', FormStepper);\ncomponents.set('FormStepperBar', FormStepperBar);\ncomponents.set('Gender', Gender);\ncomponents.set('GoogleCurrentLocationButton', () => import('../components/GoogleMap/GoogleCurrentLocationButton'));\ncomponents.set('GoogleMapAddressInput', () => import('../components/GoogleMap/GoogleMapAddressInput'));\ncomponents.set('GoogleMapWithPin', () => import('../components/GoogleMap/GoogleMapWithPin'));\ncomponents.set('GoogleMapWithPinStatic', () => import('../components/GoogleMap/GoogleMapWithPinStatic'));\ncomponents.set('Highlights', Highlights);\ncomponents.set('InformationBox', InformationBox);\ncomponents.set('IQAwardBanner', IQAwardBanner);\ncomponents.set('IQFloatingBox', IQFloatingBox);\ncomponents.set('IQPaymentError', IQPaymentError);\ncomponents.set('IQPaymentPanel', IQPaymentPanel);\ncomponents.set('JeopardyV2', JeopardyV2);\ncomponents.set('LinkList', LinkList);\ncomponents.set('LiveChat', LiveChat);\ncomponents.set('Login', Login);\ncomponents.set('MembershipBenefits', MembershipBenefits);\ncomponents.set('MembershipBenefitsBrands', MembershipBenefitsBrands);\ncomponents.set('MembershipLoyaltyReview', MembershipLoyaltyReview);\ncomponents.set('MetaData', MetaData);\ncomponents.set('ModalDialog', ModalDialog);\ncomponents.set('PanelTitle', PanelTitle);\ncomponents.set('PaymentFrequencyDropdown', PaymentFrequencyDropdown);\ncomponents.set('PaymentHeader', PaymentHeader);\ncomponents.set('PaymentMethods', PaymentMethods);\ncomponents.set('PaymentSection', PaymentSection);\ncomponents.set('PaymentSectionFZIframe', PaymentSectionFZIframe);\ncomponents.set('PercentageBar', PercentageBar);\ncomponents.set('PhoneNumberInput', PhoneNumberInput);\ncomponents.set('PremiumDetailsConfirmation', PremiumDetailsConfirmation);\ncomponents.set('PremiumDetailsReview', PremiumDetailsReview);\ncomponents.set('ProgressTracker', ProgressTracker);\ncomponents.set('QuoteHeader', QuoteHeader);\ncomponents.set('RACQDropdown', RACQDropdown);\ncomponents.set('RACQFormKit', RACQFormKit);\ncomponents.set('RACQFormKitErrorMessage', RACQFormKitErrorMessage);\ncomponents.set('RadioCardList', RadioCardList);\ncomponents.set('RadioCardListComparisonItem', RadioCardListComparisonItem);\ncomponents.set('RadioCardListItem', RadioCardListItem);\ncomponents.set('RadioCardListMegaItem', RadioCardListMegaItem);\ncomponents.set('RadioCardListExpandable', RadioCardListExpandable);\ncomponents.set('RadioCardListExpandableItem', RadioCardListExpandableItem);\ncomponents.set('ReviewSummary', ReviewSummary);\ncomponents.set('ReviewSummaryItem', ReviewSummaryItem);\ncomponents.set('SectionFrame', SectionFrame);\ncomponents.set('ShowHideButton', ShowHideButton);\ncomponents.set('SuburbLookupInput', SuburbLookupInput);\ncomponents.set('TableControlGroup', TableControlGroup);\ncomponents.set('TableControlGroupReference', TableControlGroupReference);\ncomponents.set('TableControlItem', TableControlItem);\ncomponents.set('TableSet', TableSet);\ncomponents.set('TableSetReference', TableSetReference);\ncomponents.set('Tag', Tag);\ncomponents.set('TagList', TagList);\ncomponents.set('TitleNameInput', TitleNameInput);\ncomponents.set('Toggle', Toggle);\ncomponents.set('TrackPatrol', TrackPatrol);\ncomponents.set('UpdatePostalAddressDisclaimer', UpdatePostalAddressDisclaimer);\ncomponents.set('ContextView', ContextView);\ncomponents.set('CancelRoadsideAssistanceForm', () => import('../forms/cancel-roadside-assistance-form/CancelRoadsideAssistanceForm'));\ncomponents.set('CancelRSA_CancelMyRequest', () => import('../forms/cancel-roadside-assistance-form/steps/CancelRSA_CancelMyRequest'));\ncomponents.set('CancelRSA_Confirmation', () => import('../forms/cancel-roadside-assistance-form/steps/CancelRSA_Confirmation'));\ncomponents.set('Car', () => import('../forms/insurance/quote/car/Car'));\ncomponents.set('Car_FindYourCar', () => import('../forms/insurance/quote/car/steps/Car_FindYourCar'));\ncomponents.set('Car_LetsGetStarted', () => import('../forms/insurance/quote/car/steps/Car_LetsGetStarted'));\ncomponents.set('Car_PrimaryDriverDetails', () => import('../forms/insurance/quote/car/steps/Car_PrimaryDriverDetails'));\ncomponents.set('Car_SelectYourCover', () => import('../forms/insurance/quote/car/steps/Car_SelectYourCover'));\ncomponents.set('Car_StartYourQuote', () => import('../forms/insurance/quote/car/steps/Car_StartYourQuote'));\ncomponents.set('Car_YourCarDetails', () => import('../forms/insurance/quote/car/steps/Car_YourCarDetails'));\ncomponents.set('Car_YourQuote', () => import('../forms/insurance/quote/car/steps/Car_YourQuote'));\ncomponents.set('CarPurchase', () => import('../forms/insurance/quote/car-purchase/CarPurchase'));\ncomponents.set('CarPurchase_FaultClaims', () => import('../forms/insurance/quote/car-purchase/components/CarPurchase_FaultClaims'));\ncomponents.set('CarPurchase_LicenceCancellations', () => import('../forms/insurance/quote/car-purchase/components/CarPurchase_LicenceCancellations'));\ncomponents.set('CarPurchase_PolicyDiscounts', () => import('../forms/insurance/quote/car-purchase/components/CarPurchase_PolicyDiscounts'));\ncomponents.set('CarPurchase_AccountPreferences', () => import('../forms/insurance/quote/car-purchase/steps/CarPurchase_AccountPreferences'));\ncomponents.set('CarPurchase_AdditionalPeople', () => import('../forms/insurance/quote/car-purchase/steps/CarPurchase_AdditionalPeople'));\ncomponents.set('CarPurchase_CarDetails', () => import('../forms/insurance/quote/car-purchase/steps/CarPurchase_CarDetails'));\ncomponents.set('CarPurchase_Confirmation', () => import('../forms/insurance/quote/car-purchase/steps/CarPurchase_Confirmation'));\ncomponents.set('CarPurchase_Disclaimer', () => import('../forms/insurance/quote/car-purchase/steps/CarPurchase_Disclaimer'));\ncomponents.set('CarPurchase_LoyaltyReview', () => import('../forms/insurance/quote/car-purchase/steps/CarPurchase_LoyaltyReview'));\ncomponents.set('CarPurchase_MainDriverDetails', () => import('../forms/insurance/quote/car-purchase/steps/CarPurchase_MainDriverDetails'));\ncomponents.set('CarPurchase_MainPolicyholderDetails', () => import('../forms/insurance/quote/car-purchase/steps/CarPurchase_MainPolicyholderDetails'));\ncomponents.set('CarPurchase_Payment', () => import('../forms/insurance/quote/car-purchase/steps/CarPurchase_Payment'));\ncomponents.set('CarPurchase_Review', () => import('../forms/insurance/quote/car-purchase/steps/CarPurchase_Review'));\ncomponents.set('HomeAndContentsExcessDetails', () => import('../forms/insurance/quote/home-and-contents-purchase/components/HomeAndContentsExcessDetails'));\ncomponents.set('HomeAndContentsPurchase_ClaimForm', () => import('../forms/insurance/quote/home-and-contents-purchase/components/HomeAndContentsPurchase_ClaimForm'));\ncomponents.set('HomeAndContentsPurchase_PolicyDiscounts', () => import('../forms/insurance/quote/home-and-contents-purchase/components/HomeAndContentsPurchase_PolicyDiscounts'));\ncomponents.set('HomeAndContentsPurchase', () => import('../forms/insurance/quote/home-and-contents-purchase/HomeAndContentsPurchase'));\ncomponents.set('HomeAndContentsPurchase_AccountPreferences', () => import('../forms/insurance/quote/home-and-contents-purchase/steps/HomeAndContentsPurchase_AccountPreferences'));\ncomponents.set('HomeAndContentsPurchase_AdditionalPolicyholders', () => import('../forms/insurance/quote/home-and-contents-purchase/steps/HomeAndContentsPurchase_AdditionalPolicyholders'));\ncomponents.set('HomeAndContentsPurchase_Confirmation', () => import('../forms/insurance/quote/home-and-contents-purchase/steps/HomeAndContentsPurchase_Confirmation'));\ncomponents.set('HomeAndContentsPurchase_Disclaimer', () => import('../forms/insurance/quote/home-and-contents-purchase/steps/HomeAndContentsPurchase_Disclaimer'));\ncomponents.set('HomeAndContentsPurchase_LoyaltyReview', () => import('../forms/insurance/quote/home-and-contents-purchase/steps/HomeAndContentsPurchase_LoyaltyReview'));\ncomponents.set('HomeAndContentsPurchase_Payment', () => import('../forms/insurance/quote/home-and-contents-purchase/steps/HomeAndContentsPurchase_Payment'));\ncomponents.set('HomeAndContentsPurchase_PetDetails', () => import('../forms/insurance/quote/home-and-contents-purchase/steps/HomeAndContentsPurchase_PetDetails'));\ncomponents.set('HomeAndContentsPurchase_PropertyDetails', () => import('../forms/insurance/quote/home-and-contents-purchase/steps/HomeAndContentsPurchase_PropertyDetails'));\ncomponents.set('HomeAndContentsPurchase_Review', () => import('../forms/insurance/quote/home-and-contents-purchase/steps/HomeAndContentsPurchase_Review'));\ncomponents.set('HomeAndContentsPurchase_YourDetails', () => import('../forms/insurance/quote/home-and-contents-purchase/steps/HomeAndContentsPurchase_YourDetails'));\ncomponents.set('Homecontents_HomeItems_Individual', () => import('../forms/insurance/quote/homecontents/components/Homecontents_HomeItems_Individual'));\ncomponents.set('Homecontents_PortableItems_Grouped', () => import('../forms/insurance/quote/homecontents/components/Homecontents_PortableItems_Grouped'));\ncomponents.set('Homecontents_PortableItems_Individual', () => import('../forms/insurance/quote/homecontents/components/Homecontents_PortableItems_Individual'));\ncomponents.set('Homecontents_PortableItems_Phones', () => import('../forms/insurance/quote/homecontents/components/Homecontents_PortableItems_Phones'));\ncomponents.set('Homecontents', () => import('../forms/insurance/quote/homecontents/Homecontents'));\ncomponents.set('Homecontents_BuildingDetails', () => import('../forms/insurance/quote/homecontents/steps/Homecontents_BuildingDetails'));\ncomponents.set('Homecontents_CoverDetails', () => import('../forms/insurance/quote/homecontents/steps/Homecontents_CoverDetails'));\ncomponents.set('Homecontents_GeneralContents', () => import('../forms/insurance/quote/homecontents/steps/Homecontents_GeneralContents'));\ncomponents.set('Homecontents_GetStarted', () => import('../forms/insurance/quote/homecontents/steps/Homecontents_GetStarted'));\ncomponents.set('Homecontents_HomeItems', () => import('../forms/insurance/quote/homecontents/steps/Homecontents_HomeItems'));\ncomponents.set('Homecontents_PersonalDetails', () => import('../forms/insurance/quote/homecontents/steps/Homecontents_PersonalDetails'));\ncomponents.set('Homecontents_PortableItems', () => import('../forms/insurance/quote/homecontents/steps/Homecontents_PortableItems'));\ncomponents.set('Homecontents_StartYourQuote', () => import('../forms/insurance/quote/homecontents/steps/Homecontents_StartYourQuote'));\ncomponents.set('Homecontents_YourQuote', () => import('../forms/insurance/quote/homecontents/steps/Homecontents_YourQuote'));\ncomponents.set('Pet', () => import('../forms/insurance/quote/pet/Pet'));\ncomponents.set('Pet_LetsGetStarted', () => import('../forms/insurance/quote/pet/steps/Pet_LetsGetStarted'));\ncomponents.set('Pet_PolicyStartDate', () => import('../forms/insurance/quote/pet/steps/Pet_PolicyStartDate'));\ncomponents.set('Pet_StartYourQuote', () => import('../forms/insurance/quote/pet/steps/Pet_StartYourQuote'));\ncomponents.set('Pet_YourDetails', () => import('../forms/insurance/quote/pet/steps/Pet_YourDetails'));\ncomponents.set('Pet_YourQuote', () => import('../forms/insurance/quote/pet/steps/Pet_YourQuote'));\ncomponents.set('JoinOnRoad_GoogleMap', () => import('../forms/join-on-road/components/JoinOnRoad_GoogleMap'));\ncomponents.set('JoinOnRoad', () => import('../forms/join-on-road/JoinOnRoad'));\ncomponents.set('JoinOnRoad_BreakdownDetails', () => import('../forms/join-on-road/steps/JoinOnRoad_BreakdownDetails'));\ncomponents.set('JoinOnRoad_BreakdownDetails_BreakdownCause', () => import('../forms/join-on-road/steps/JoinOnRoad_BreakdownDetails_BreakdownCause'));\ncomponents.set('JoinOnRoad_BreakdownDetails_YourComments', () => import('../forms/join-on-road/steps/JoinOnRoad_BreakdownDetails_YourComments'));\ncomponents.set('JoinOnRoad_ConfirmPurchase', () => import('../forms/join-on-road/steps/JoinOnRoad_ConfirmPurchase'));\ncomponents.set('JoinOnRoad_Payment', () => import('../forms/join-on-road/steps/JoinOnRoad_Payment'));\ncomponents.set('JoinOnRoad_PaymentConfirmation', () => import('../forms/join-on-road/steps/JoinOnRoad_PaymentConfirmation'));\ncomponents.set('JoinOnRoad_Review', () => import('../forms/join-on-road/steps/JoinOnRoad_Review'));\ncomponents.set('JoinOnRoad_VehicleDetails', () => import('../forms/join-on-road/steps/JoinOnRoad_VehicleDetails'));\ncomponents.set('JoinOnRoad_YourDetails', () => import('../forms/join-on-road/steps/JoinOnRoad_YourDetails'));\ncomponents.set('JoinOnRoad_YourDetails_PersonalDetails', () => import('../forms/join-on-road/steps/JoinOnRoad_YourDetails_PersonalDetails'));\ncomponents.set('JoinOnRoad_YourDetails_PhoneNumberToday', () => import('../forms/join-on-road/steps/JoinOnRoad_YourDetails_PhoneNumberToday'));\ncomponents.set('MakeAPayment', () => import('../forms/make-a-payment/MakeAPayment'));\ncomponents.set('MakeAPayment_Confirmation', () => import('../forms/make-a-payment/steps/MakeAPayment_Confirmation'));\ncomponents.set('MakeAPayment_CoverReview', () => import('../forms/make-a-payment/steps/MakeAPayment_CoverReview'));\ncomponents.set('MakeAPayment_FindDetails', () => import('../forms/make-a-payment/steps/MakeAPayment_FindDetails'));\ncomponents.set('MakeAPayment_Payment', () => import('../forms/make-a-payment/steps/MakeAPayment_Payment'));\ncomponents.set('JoinWithLifestyleFloatingBox', () => import('../forms/membership/join-with-lifestyle/components/JoinWithLifestyleFloatingBox'));\ncomponents.set('JoinWithLifestyle', () => import('../forms/membership/join-with-lifestyle/JoinWithLifestyle'));\ncomponents.set('JoinWithLifestyle_Confirmation', () => import('../forms/membership/join-with-lifestyle/steps/JoinWithLifestyle_Confirmation'));\ncomponents.set('JoinWithLifestyle_ExistingMember', () => import('../forms/membership/join-with-lifestyle/steps/JoinWithLifestyle_ExistingMember'));\ncomponents.set('JoinWithLifestyle_Payment', () => import('../forms/membership/join-with-lifestyle/steps/JoinWithLifestyle_Payment'));\ncomponents.set('JoinWithLifestyle_PersonalDetails', () => import('../forms/membership/join-with-lifestyle/steps/JoinWithLifestyle_PersonalDetails'));\ncomponents.set('ChangeVehicleLocation', () => import('../forms/my-racq/insurance/change-vehicle-location/ChangeVehicleLocation'));\ncomponents.set('ChangeVehicleLocation_Confirmation', () => import('../forms/my-racq/insurance/change-vehicle-location/steps/ChangeVehicleLocation_Confirmation'));\ncomponents.set('ChangeVehicleLocation_GeneralConditions', () => import('../forms/my-racq/insurance/change-vehicle-location/steps/ChangeVehicleLocation_GeneralConditions'));\ncomponents.set('ChangeVehicleLocation_GetStarted', () => import('../forms/my-racq/insurance/change-vehicle-location/steps/ChangeVehicleLocation_GetStarted'));\ncomponents.set('ChangeVehicleLocation_NewVehicleLocation', () => import('../forms/my-racq/insurance/change-vehicle-location/steps/ChangeVehicleLocation_NewVehicleLocation'));\ncomponents.set('ChangeVehicleLocation_Payment', () => import('../forms/my-racq/insurance/change-vehicle-location/steps/ChangeVehicleLocation_Payment'));\ncomponents.set('ChangeVehicleLocation_Review', () => import('../forms/my-racq/insurance/change-vehicle-location/steps/ChangeVehicleLocation_Review'));\ncomponents.set('ChangePaymentDetails', () => import('../forms/my-racq/insurance/payments/change-payment-details/ChangePaymentDetails'));\ncomponents.set('ChangePaymentDetails_ChangePaymentDetails', () => import('../forms/my-racq/insurance/payments/change-payment-details/steps/ChangePaymentDetails_ChangePaymentDetails'));\ncomponents.set('ChangePaymentDetails_Confirmation', () => import('../forms/my-racq/insurance/payments/change-payment-details/steps/ChangePaymentDetails_Confirmation'));\ncomponents.set('ChangePaymentDetails_Review', () => import('../forms/my-racq/insurance/payments/change-payment-details/steps/ChangePaymentDetails_Review'));\ncomponents.set('SwitchToMonthly_Confirmation', () => import('../forms/my-racq/insurance/switch-to-monthly/steps/SwitchToMonthly_Confirmation'));\ncomponents.set('SwitchToMonthly_GeneralConditions', () => import('../forms/my-racq/insurance/switch-to-monthly/steps/SwitchToMonthly_GeneralConditions'));\ncomponents.set('SwitchToMonthly_Review', () => import('../forms/my-racq/insurance/switch-to-monthly/steps/SwitchToMonthly_Review'));\ncomponents.set('SwitchToMonthly_Switch', () => import('../forms/my-racq/insurance/switch-to-monthly/steps/SwitchToMonthly_Switch'));\ncomponents.set('SwitchToMonthly', () => import('../forms/my-racq/insurance/switch-to-monthly/SwitchToMonthly'));\ncomponents.set('NotFoundHandler', () => import('../forms/not-found-handler/NotFoundHandler'));\ncomponents.set('Confirmation', () => import('../forms/windscreen-repair-and-replacement/steps/Confirmation'));\ncomponents.set('YourDetails', () => import('../forms/windscreen-repair-and-replacement/steps/YourDetails'));\ncomponents.set('YourVehicle', () => import('../forms/windscreen-repair-and-replacement/steps/YourVehicle'));\ncomponents.set('WindscreenRepairAndReplacement', () => import('../forms/windscreen-repair-and-replacement/WindscreenRepairAndReplacement'));\ncomponents.set('Layout', Layout);\ncomponents.set('Footer', Footer);\ncomponents.set('Header', Header);\ncomponents.set('NotFound', NotFound);\ncomponents.set('RouteHandler', RouteHandler);\ncomponents.set('RouteLoading', RouteLoading);\n\nexport default function componentFactory(componentName) {\n return components.get(componentName);\n};\n","import { createApp as createVueApp, h, createSSRApp } from 'vue';\r\nimport { SitecoreJssPlaceholderPlugin } from '@sitecore-jss/sitecore-jss-vue';\r\nimport { DefaultApolloClient } from '@vue/apollo-composable';\r\nimport { createMetaManager as createVueMetaManager, defaultConfig, deepestResolver } from 'vue-meta';\r\nimport AppRoot from './AppRoot.vue';\r\nimport { createRouter } from './router';\r\nimport SitecoreJssStorePlugin from './lib/SitecoreJssStorePlugin';\r\nimport GraphQLClientFactory from './lib/GraphQLClientFactory';\r\nimport config from './temp/config';\r\nimport componentFactory from './temp/componentFactory';\r\n\r\nconst createMetaManager = (isSSR = false) =>\r\n createVueMetaManager(\r\n isSSR,\r\n {\r\n ...defaultConfig,\r\n },\r\n deepestResolver\r\n );\r\n\r\n// createApp is invoked by both the main and SSR entry points, so the two entry points can use the same app creation process.\r\nexport function createApp(initialState: any, i18n: any, isSSR: boolean = false) {\r\n const router = createRouter(isSSR);\r\n const metaManager = createMetaManager(isSSR);\r\n const graphQLProvider = createGraphQLProvider(initialState);\r\n\r\n const vueOptions = {\r\n router,\r\n render: () => h(AppRoot),\r\n i18n,\r\n };\r\n\r\n const app = isSSR ? createSSRApp(vueOptions) : createVueApp(vueOptions);\r\n\r\n app.provide(DefaultApolloClient, graphQLProvider);\r\n\r\n app.use(router);\r\n app.use(SitecoreJssStorePlugin);\r\n app.use(SitecoreJssPlaceholderPlugin, { componentFactory });\r\n app.use(i18n);\r\n app.use(metaManager);\r\n\r\n // if there is an initial state defined, push it into the store, where it can be referenced by interested components.\r\n if (initialState) {\r\n app.config.globalProperties.$jss.store.setSitecoreData(initialState);\r\n }\r\n\r\n return { app, router, graphQLProvider };\r\n}\r\n\r\nexport function createGraphQLProvider(initialState: any) {\r\n const client =\r\n initialState && initialState.APOLLO_STATE\r\n ? GraphQLClientFactory(config.graphQLEndpoint, false, initialState.APOLLO_STATE)\r\n : GraphQLClientFactory(config.graphQLEndpoint, true);\r\n\r\n return client;\r\n}\r\n","export const TailwindRACQTheme = {\r\n // Global styles apply to _all_ inputs with matching section keys\r\n global: {\r\n fieldset: 'flex flex-row rounded mx-0',\r\n help: 'text-xs text-dark-grey-text text-block',\r\n inner: 'formkit-disabled:cursor-not-allowed formkit-disabled:pointer-events-none relative',\r\n input: 'appearance-none bg-transparent focus:outline-none focus:ring-0 focus:shadow-none',\r\n label: 'block text-base-bold text-racq-dark-grey mb-1 formkit-label block text-input-label w-auto mb-1 sm:pe-8',\r\n legend: 'text-sm-bold formkit-label block text-input-label w-auto mb-1 sm:pe-8',\r\n loaderIcon: 'inline-flex items-center w-4 text-gray-600 animate-spin',\r\n message: 'text-racq-error-red mb-1 text-xs mt-1',\r\n messages: 'list-none p-0 mt-1 mb-0',\r\n outer: 'formkit-disabled:opacity-50',\r\n prefixIcon:\r\n 'w-10 flex self-stretch grow-0 shrink-0 rounded-tl rounded-bl border-r border-gray-400 bg-white bg-gradient-to-b from-transparent to-gray-200 [&>svg]:w-full [&>svg]:max-w-[1em] [&>svg]:max-h-[1em] [&>svg]:m-auto',\r\n suffixIcon:\r\n 'w-7 flex self-stretch grow-0 shrink-0 [&>svg]:w-full [&>svg]:max-w-[1em] [&>svg]:max-h-[1em] [&>svg]:m-auto',\r\n },\r\n\r\n // Family styles apply to all inputs that share a common family\r\n 'family:box': {\r\n decorator: `block relative h-6 w-6 md:h-5 md:w-5 mr-3 rounded-sm from-transparent to-gray-200 border border-racq-blue-border input-shadow-md \r\n peer-checked:bg-racq-blue-active peer-checked:border-racq-blue-active peer-checked:ring-racq-blue-active text-transparent peer-checked:text-white\r\n peer-focus-visible:outline-2 peer-focus-visible:outline-dashed peer-focus-visible:outline-racq-navy peer-focus-visible:outline-offset-2`,\r\n decoratorIcon:\r\n 'flex p-[4px] md:p-[3px] w-full h-full rounded-sm absolute top-1/2 left-1/2 -translate-y-1/2 -translate-x-1/2',\r\n help: '',\r\n input: 'absolute w-0 h-0 overflow-hidden opacity-0 pointer-events-none peer ',\r\n inner: '',\r\n outer: '',\r\n label: '$reset text-sm-bold text-gray-700 select-none',\r\n wrapper: 'flex items-center',\r\n },\r\n\r\n 'family:button': {\r\n input:\r\n '$reset inline-flex items-center text-[1.125rem] font-[600] rounded focus-visible:outline-2 focus-visible:outline-blue-600 focus-visible:outline-offset-2 text-base-bold',\r\n prefixIcon: '$reset block w-4 -ml-2 mr-2 stretch',\r\n suffixIcon: '$reset block w-4 ml-2 stretch',\r\n outer: '$reset formkit-disabled:opacity-50',\r\n },\r\n\r\n 'family:dropdown': {\r\n help: 'mt-1',\r\n dropdownWrapper: 'my-1 w-full shadow-lg rounded [&::-webkit-scrollbar]:hidden',\r\n emptyMessageInner:\r\n 'flex items-center justify-center text-sm p-2 text-center w-full text-gray-500 [&>span]:mr-3 [&>span]:ml-0',\r\n inner:\r\n 'w-full relative flex border border-racq-blue-border input-shadow-md focus-within:ring-racq-blue-active focus-within:ring-2 rounded mb-0 formkit-disabled:focus-within:ring-gray-400 formkit-disabled:focus-within:ring-1 [&>span:first-child]:focus-within:text-racq-blue-active md:max-h-[40px]',\r\n input: 'w-full px-3 py-2 text-base text-racq-dark-grey',\r\n listbox: 'list-none pl-0 bg-white shadow-lg rounded overflow-hidden mb-0',\r\n listboxButton: 'flex w-12 self-stretch justify-center mx-auto',\r\n listitem: 'relative hover:bg-gray-300 data-[is-active=\"true\"]:bg-gray-300 cursor-pointer',\r\n loaderIcon: 'ml-auto',\r\n loadMoreInner:\r\n 'flex items-center justify-center text-sm p-2 text-center w-full text-racq-blue-active formkit-loading:text-gray-500 cursor-pointer [&>span]:mr-3 [&>span]:ml-0',\r\n option: 'p-2.5',\r\n optionLoading: 'p-2.5 text-gray-500',\r\n placeholder: 'p-2.5 text-gray-500',\r\n selector: 'flex w-full justify-between items-center min-h-[2.625em] [&u] cursor-default outline-none',\r\n selection: 'flex w-full',\r\n selectedIcon: 'hidden absolute top-1/2 left-2 w-3 -translate-y-1/2',\r\n selectIcon: 'flex box-content w-4 pe-2 self-stretch grow-0 shrink-0 [&>svg]:w-[1em] cursor-pointer',\r\n },\r\n\r\n 'family:text': {\r\n inner:\r\n 'flex items-center outline outline-1 outline-racq-blue-border input-shadow-md focus-within:border-transparent focus-within:ring-racq-blue-active focus-within:ring-2 [&>label:first-child]:focus-within:text-racq-blue-active rounded mb-1 bg-racq-true-white',\r\n input: 'w-full px-3 py-2 border-none text-base text-gray-700 placeholder-gray-400',\r\n },\r\n\r\n 'family:date': {\r\n inner:\r\n 'flex items-center max-w-60 border border-racq-blue-border input-shadow-md focus-within:ring-racq-blue-active focus-within:ring-2 [&>label:first-child]:focus-within:text-racq-blue-active rounded mb-1 ',\r\n input: 'w-full px-3 py-2 border-none text-gray-700 placeholder-gray-400',\r\n },\r\n\r\n // Specific styles apply only to a given input type\r\n checkbox: {\r\n help: 'mb-3',\r\n inner: '',\r\n options: 'flex flex-col list-none pl-0 gap-4 mb-2',\r\n option: 'flex flex-col',\r\n fieldset: '$reset flex flex-col',\r\n legend: '$reset text-sm-bold formkit-label block text-input-label w-auto sm:pe-8',\r\n optionHelp: 'text-xs text-racq-med-grey ml-[33px]',\r\n label: '$reset text-base text-racq-dark-grey',\r\n },\r\n file: {\r\n fileItem: 'flex items-center text-gray-800 mb-1 last:mb-0',\r\n fileItemIcon: 'w-4 mr-2 shrink-0',\r\n fileList: 'shrink grow peer px-3 py-2 formkit-multiple:data-[has-multiple=\"true\"]:mb-6',\r\n fileName: 'break-all grow text-ellipsis',\r\n fileRemove:\r\n 'relative z-[2] ml-auto text-[0px] hover:text-red-500 pl-2 peer-data-[has-multiple=true]:text-sm peer-data-[has-multiple=true]:text-racq-blue-active peer-data-[has-multiple=true]:ml-3 peer-data-[has-multiple=true]:mb-2 formkit-multiple:bottom-[0.15em] formkit-multiple:pl-0 formkit-multiple:ml-0 formkit-multiple:left-[1em] formkit-multiple:formkit-prefix-icon:left-[3.75em]',\r\n fileRemoveIcon: 'block text-base w-3 relative z-[2]',\r\n inner: 'relative max-w-md cursor-pointer formkit-multiple:[&>button]:absolute',\r\n input: 'cursor-pointer text-transparent absolute top-0 right-0 left-0 bottom-0 opacity-0 z-[2]',\r\n noFiles: 'flex w-full items-center px-3 py-2 text-gray-400',\r\n noFilesIcon: 'w-4 mr-2',\r\n },\r\n text: {\r\n inner: 'relative',\r\n },\r\n radio: {\r\n wrapper: '',\r\n outer: '',\r\n options: 'racq-radio',\r\n decorator: 'hidden',\r\n fieldset: 'flex-col',\r\n legend: 'text-input-label formkit-label block text-input-label w-auto mb-3 sm:pe-8',\r\n label: 'formkit-label',\r\n },\r\n range: {\r\n inner: '$reset flex items-center max-w-md',\r\n input: '$reset w-full mb-1 h-2 p-0 rounded-full',\r\n prefixIcon:\r\n '$reset w-4 mr-1 flex self-stretch grow-0 shrink-0 [&>svg]:max-w-[1em] [&>svg]:max-h-[1em] [&>svg]:m-auto',\r\n suffixIcon:\r\n '$reset w-4 ml-1 flex self-stretch grow-0 shrink-0 [&>svg]:max-w-[1em] [&>svg]:max-h-[1em] [&>svg]:m-auto',\r\n },\r\n select: {\r\n label: 'text-sm-bold w-[180px] mr-[20px]',\r\n inner:\r\n 'flex relative max-w-md items-center rounded mb-1 border border-racq-blue-border input-shadow-md focus-within:ring-racq-blue-active focus-within:ring-2 [&>span:first-child]:focus-within:text-racq-blue-active input-md',\r\n input:\r\n 'w-full pl-3 pr-8 py-2 border-none text-base text-gray-700 placeholder-gray-400 formkit-multiple:p-0 data-[placeholder=\"true\"]:text-gray-400 formkit-multiple:data-[placeholder=\"true\"]:text-inherit',\r\n selectIcon: 'flex p-[3px] shrink-0 w-5 mr-2 -ml-[1.5em] h-full pointer-events-none [&>svg]:w-[1em]',\r\n option: 'formkit-multiple:p-3 formkit-multiple:text-sm text-gray-700',\r\n },\r\n textarea: {\r\n wrapper: 'md:flex',\r\n label: 'text-sm-bold w-[180px] mr-[20px]',\r\n inner:\r\n 'flex rounded mb-1 border border-racq-blue-border input-shadow-md focus-within:ring-racq-blue-active [&>label:first-child]:focus-within:text-racq-blue-active focus-within:ring-2',\r\n input:\r\n 'block w-full md:min-w-[330px] h-32 min-h-[150px] px-3 py-3 border-none text-base text-gray-700 placeholder-gray-400 focus:shadow-outline',\r\n },\r\n\r\n // ----------------------------------------\r\n // PRO input styles\r\n // ----------------------------------------\r\n\r\n // Autocomplete\r\n // ref: https://github.com/formkit/theme-starter/blob/main/src/inputs/pro/autocomplete.ts\r\n autocomplete: {\r\n closeIcon: 'block grow-0 shrink-0 w-3 mr-3.5',\r\n inner: 'relative',\r\n listitem: 'hover:bg-racq-blue-background bg-white pl-0 cursor-pointer',\r\n listbox: 'mb-0',\r\n option: 'grow text-ellipsis hover:bg-racq-blue-background text-black',\r\n selectionWrapper: `\r\n absolute left-0 top-0 right-0 bottom-0 flex rounded bg-white\r\n formkit-multiple:static formkit-multiple:mt-0 formkit-multiple:mb-2 formkit-multiple:max-w-md\r\n `,\r\n selectIcon: 'autocomplete-select-icon',\r\n selectedIcon: 'hidden',\r\n message: 'pl-0',\r\n },\r\n datepicker: {\r\n inner: 'relative',\r\n panelWrapper:\r\n 'absolute top-[calc(100%_+_0.5em)] bg-white rounded shadow flex-col gap-4 p-4 inline-flex min-w-[320px]',\r\n panelHeader: 'p-2 bg-white border-b border-neutral-200 items-center gap-2 flex',\r\n input: 'selection:bg-racq-blue-active/70',\r\n monthsHeader: 'grow shrink basis-0 justify-center items-center gap-3 flex',\r\n timeHeader: 'grow shrink basis-0 justify-center items-center gap-3 flex',\r\n overlayPlaceholder: 'text-gray-400',\r\n months: 'flex flex-wrap',\r\n month: `\r\n flex items-center justify-center cursor-pointer\r\n w-12 m-1 p-2 h-8 rounded\r\n text-m text-racq-dark-grey bg-racq-anti-flash-white\r\n aria-selected:bg-racq-blue-active aria-selected:text-white\r\n focus:outline focus:outline-2 focus:outline-racq-blue-active focus:bg-white\r\n data-[is-extra=true]:opacity-25\r\n formkit-disabled:opacity-50 formkit-disabled:cursor-default formkit-disabled:pointer-events-none\r\n `,\r\n yearsHeader: 'grow shrink basis-0 justify-center items-center gap-3 flex text-sm',\r\n years: 'flex flex-wrap',\r\n year: `\r\n flex items-center justify-center cursor-pointer\r\n w-12 m-1 p-2 h-8 rounded\r\n text-m text-racq-dark-grey bg-racq-anti-flash-white\r\n aria-selected:bg-racq-blue-active aria-selected:text-white\r\n focus:outline focus:outline-2 focus:outline-racq-blue-active focus:bg-white\r\n data-[is-extra=true]:opacity-25\r\n formkit-disabled:opacity-50 formkit-disabled:cursor-default formkit-disabled:pointer-events-none\r\n `,\r\n weekDays: 'flex',\r\n weekDay: 'flex w-8 h-8 m-1 items-center justify-center rounded text-sm uppercase',\r\n week: 'flex formkit-disabled:opacity-50 formkit-disabled:cursor-default formkit-disabled:pointer-events-none',\r\n dayCell: `\r\n flex items-center justify-center cursor-pointer\r\n w-8 h-8 m-1 p-2 rounded\r\n text-m text-racq-dark-grey bg-racq-anti-flash-white\r\n aria-selected:bg-racq-blue-active aria-selected:text-white\r\n focus:outline focus:outline-2 focus:outline-racq-blue-active focus:bg-white\r\n data-[is-extra=true]:opacity-25\r\n formkit-disabled:opacity-50 formkit-disabled:cursor-default formkit-disabled:pointer-events-none\r\n `,\r\n timeInput: 'w-full border-2 border-gray-300 rounded p-2 my-[2em] focus-visible:outline-racq-blue-active',\r\n daysHeader: 'grow shrink basis-0 justify-center items-center gap-3 flex',\r\n prev: 'w-4 h-4 relative',\r\n prevLabel: 'hidden',\r\n prevIcon: 'flex w-4 h-4 select-none [&>svg]:w-full',\r\n dayButton: 'appearance-none cursor-pointer px-3 py-1 border-2 rounded mx-1 hover:bg-racq-anti-flash-white',\r\n monthButton: 'appearance-none text-sm text-racq-dark-grey rounded hover:bg-racq-anti-flash-white',\r\n yearButton: 'appearance-none text-sm text-racq-dark-grey rounded hover:bg-racq-anti-flash-white',\r\n next: 'w-4 h-4 relative',\r\n nextLabel: 'hidden',\r\n nextIcon: 'flex w-4 h-4 select-none [&>svg]:w-full',\r\n openButton: `\r\n appearance-none border-0 bg-transparent flex p-0 mr-3 self-stretch cursor-pointer w-6 h-6\r\n focus-visible:outline-none focus-visible:text-white focus-visible:bg-racq-blue-active\r\n `,\r\n calendarIcon: 'flex grow-0 shrink-0 self-stretch select-none',\r\n },\r\n dropdown: {\r\n tagsWrapper: 'max-w-[calc(100%_-_35px)]',\r\n tags: 'flex items-center flex-wrap gap-1 mx-2 my-1.5',\r\n tag: 'flex items-center rounded-full bg-gray-200 text-xs text-black py-1 px-2.5 cursor-default',\r\n tagLabel: 'px-1',\r\n selectionsWrapper: 'flex w-[calc(100%_-_35px)] overflow-hidden',\r\n selections: 'inline-flex items-center px-2.5',\r\n selectionsItem: 'whitespace-nowrap mr-1 last:mr-0',\r\n truncationCount:\r\n 'flex items-center whitespace-nowrap justify-center rounded text-white bg-gray-500 text-xs-bold px-1 py-0.5',\r\n removeSelection: 'block w-2.5 my-1 cursor-pointer',\r\n option: 'text-black',\r\n },\r\n taglist: {\r\n input: 'px-1 py-1 w-[0%] grow',\r\n removeSelection: 'w-2.5 mx-1 self-center text-black leading-none',\r\n tag: 'flex items-center my-1 p-1 bg-gray-200 text-xs rounded-full',\r\n tagWrapper:\r\n 'mr-1 focus:outline-none focus:text-white [&>div]:focus:bg-racq-blue-active [&>div>button]:focus:text-white',\r\n tagLabel: 'pl-2 pr-1',\r\n tags: 'flex items-center flex-wrap w-full py-1.5 px-2',\r\n },\r\n toggle: {\r\n altLabel: 'block w-full mb-1 text-sm-bold',\r\n inner: '$reset',\r\n input: 'peer absolute opacity-0 pointer-events-none',\r\n innerLabel: 'text-[10px] font-bold absolute left-full top-1/2 -translate-x-full -translate-y-1/2 px-1',\r\n thumb: 'relative left-0 aspect-square rounded-full transition-all w-5 bg-gray-100',\r\n track:\r\n 'p-0.5 min-w-[3em] relative rounded-full transition-all bg-gray-400 peer-checked:bg-racq-blue-active peer-checked:[&>div:last-child]:left-full peer-checked:[&>div:last-child]:-translate-x-full peer-checked:[&>div:first-child:not(:last-child)]:left-0 peer-checked:[&>div:first-child:not(:last-child)]:translate-x-0',\r\n valueLabel: 'text-sm-bold',\r\n wrapper: 'items-center',\r\n label: 'mb-3',\r\n help: 'mt-2',\r\n },\r\n togglebuttons: {\r\n inputInner: 'flex flex-col w-full h-full',\r\n input: `\r\n $reset\r\n w-full\r\n h-full\r\n border\r\n border-racq-light-blue-grey\r\n rounded\r\n shadow-md\r\n bg-white\r\n p-0.5\r\n aria-pressed:p-0\r\n aria-pressed:border-2\r\n aria-pressed:border-racq-blue-active\r\n aria-pressed:bg-racq-anti-flash-white\r\n enabled:hover:bg-racq-pale-blue enabled:hover:border-racq-cool-grey\r\n disabled:cursor-not-allowed\r\n focus-visible:outline-2 focus-visible:outline-dashed focus-visible:outline-racq-navy focus-visible:outline-offset-1\r\n `,\r\n options: 'flex flex-col gap-4 mt-4',\r\n option: 'basis-0 grow shrink',\r\n },\r\n};\r\n","/**\r\n * Custom plugin to integrate spinner into the Vue Formkit library.\r\n * Spinner will be shown in the form input 'suffixIcon' slot.\r\n *\r\n * To make this solution work, this code leverages Formkit Schemas.\r\n * Read more about Schemas: https://formkit.com/essentials/schema\r\n *\r\n */\r\nfunction formkitSpinnerPlugin(node: any) {\r\n node.on('created', () => {\r\n // extract tooltip attrs from node and set as props\r\n node.addProps(['loading']);\r\n\r\n const renderSchema = node?.props?.definition?.schema;\r\n\r\n if (!renderSchema) return;\r\n\r\n if (node.props.family == 'button') {\r\n node.props.definition.schema = (extensions: Record) => {\r\n extensions.prefix = {\r\n $el: 'div',\r\n if: '$loading',\r\n attrs: {\r\n class: 'w-5 h-5 border-2 border-current border-r-transparent rounded-full mr-2 animate-spin',\r\n },\r\n };\r\n return renderSchema(extensions);\r\n };\r\n } else {\r\n node.props.definition.schema = (extensions: Record) => {\r\n extensions.prefix = {\r\n if: '$loading',\r\n $el: 'i',\r\n attrs: {\r\n class: 'formkit-input-spinner mx-5 outline-none mt-1 right-[-5rem] absolute',\r\n },\r\n };\r\n\r\n return renderSchema(extensions);\r\n };\r\n }\r\n });\r\n}\r\n\r\nexport default formkitSpinnerPlugin;\r\n","import { showTooltipOnTriggerClick } from './renderTooltip';\r\nimport { nextTick } from 'vue';\r\n\r\n/**\r\n * Custom plugin to integrate tooltips into the Vue Formkit library.\r\n * Tooltips will be shown in the form input 'suffixIcon' slot.\r\n *\r\n * To make this solution work, this code leverages Formkit Schemas.\r\n * Read more about Schemas: https://formkit.com/essentials/schema\r\n *\r\n */\r\nfunction formkitTooltipPlugin(node: any) {\r\n node.on('created', async () => {\r\n // extract tooltip attrs from node and set as props\r\n node.addProps(['tooltip', 'type']);\r\n\r\n if (!node.props?.tooltip?.content) return;\r\n\r\n const focus = node.props.onFocus;\r\n\r\n // Handle tooltip visibility on focus of an input\r\n node.context.handlers.focus = (e: FocusEvent) => {\r\n focus?.(e);\r\n };\r\n\r\n const trigger = (event: Event) => {\r\n const content = node.props.tooltip?.content ?? '';\r\n const title = node.props.tooltip?.title ?? '';\r\n\r\n if (node.props.tooltip?.isModal) {\r\n content && (window as any)?.showRACQTooltipModal(title, content);\r\n } else {\r\n showTooltipOnTriggerClick(event, content);\r\n event.preventDefault();\r\n }\r\n };\r\n\r\n await nextTick();\r\n let labelType = 'legend';\r\n if (\r\n node.type !== 'radio' &&\r\n node.type !== 'checkbox' &&\r\n node.context?.type !== 'radio' &&\r\n node.context?.type !== 'checkbox'\r\n ) {\r\n labelType = 'label';\r\n }\r\n const input =\r\n document.querySelector(`*[data-id='${node.props.id}'] ${labelType}`) ||\r\n document.querySelector(`#${node.props.id}__outer ${labelType}`) ||\r\n document.querySelector(`#${node.props.id} ${labelType}`) ||\r\n document.querySelector(`label[for=${node.props.id}]`);\r\n\r\n const questionMark = document.createElement('button');\r\n questionMark.className = 'questionmark-icon js-tooltip-trigger';\r\n questionMark.id = node.props.id + '_tooltip_trigger';\r\n questionMark.onclick = trigger;\r\n input?.append(questionMark);\r\n });\r\n}\r\n\r\nexport default formkitTooltipPlugin;\r\n","import { scrollToElement } from '@/utils/dom-helpers';\r\n\r\n/**\r\n * Custom plugin to scroll to errors. https://formkit.com/essentials/examples\r\n *\r\n */\r\nfunction formkitScrollToErrorsPlugin(node: any) {\r\n if (node.props.type === 'form') {\r\n const onSubmitInvalid = node.props.onSubmitInvalid;\r\n node.props.onSubmitInvalid = () => {\r\n if (onSubmitInvalid) {\r\n onSubmitInvalid(node);\r\n }\r\n scrollToErrors();\r\n };\r\n node.on('unsettled:errors', scrollToErrors);\r\n }\r\n\r\n function scrollToErrors() {\r\n let errorFound = false; // to fix dom sequencing issue\r\n node.walk((child: any) => {\r\n // Check if this child has errors\r\n if (child.ledger.value('blocking') || child.ledger.value('errors')) {\r\n // We found an input with validation errors\r\n const input = document.querySelector('#' + child.props.id);\r\n if (errorFound) return false;\r\n else if (input) {\r\n errorFound = true;\r\n scrollToElement('#' + child.props.id, 100, -100);\r\n // Stop searching\r\n return false;\r\n }\r\n }\r\n }, true);\r\n\r\n const selector = '[data-information-box-type=\"error\"]';\r\n const infoBox = document.querySelector(selector);\r\n if (infoBox) {\r\n scrollToElement(selector, 100, -100);\r\n }\r\n }\r\n}\r\n\r\nexport default formkitScrollToErrorsPlugin;\r\n","/**\r\n * Set default props for form elements\r\n *\r\n */\r\nfunction formkitDefaultPropsPlugin(node: any) {\r\n if (node.props.type === 'form') {\r\n if (node.props.submitBehavior === undefined) {\r\n node.props.submitBehavior = 'live';\r\n }\r\n if (node.props.actions === undefined) {\r\n node.props.actions = false;\r\n }\r\n if (node.props.incompleteMessage === undefined) {\r\n node.props.incompleteMessage = false;\r\n }\r\n }\r\n}\r\n\r\nexport default formkitDefaultPropsPlugin;\r\n","/**\r\n * Custom plugin to make the help field accept HTML\r\n *\r\n */\r\nfunction formkitHelpPlugin(node: any) {\r\n node.on('created', () => {\r\n const renderSchema = node?.props?.definition?.schema;\r\n\r\n if (!renderSchema) return;\r\n\r\n node.props.definition.schema = (extensions: Record) => {\r\n extensions.help = {\r\n children: '',\r\n attrs: {\r\n innerHTML: '$help',\r\n },\r\n };\r\n\r\n return renderSchema(extensions);\r\n };\r\n });\r\n}\r\n\r\nexport default formkitHelpPlugin;\r\n","import { createInput } from '@formkit/vue';\r\n\r\nexport const routerLinkButton = createInput(\r\n {\r\n $cmp: 'RouterLink',\r\n props: {\r\n class: '$classes.input',\r\n },\r\n children: '$text',\r\n bind: '$attrs',\r\n },\r\n {\r\n family: 'button',\r\n props: ['text'],\r\n }\r\n);\r\n\r\nexport const linkButton = createInput(\r\n {\r\n $el: 'a',\r\n props: {\r\n class: '$classes.input',\r\n },\r\n children: '$text',\r\n bind: '$attrs',\r\n },\r\n {\r\n family: 'button',\r\n props: ['text', 'inputClass'],\r\n }\r\n);\r\n","import { FormKitTypeDefinition } from '@formkit/core';\r\nimport {\r\n outer,\r\n boxInner,\r\n help,\r\n boxHelp,\r\n messages,\r\n message,\r\n prefix,\r\n suffix,\r\n fieldset,\r\n decorator,\r\n box,\r\n icon,\r\n legend,\r\n boxOption,\r\n boxOptions,\r\n boxWrapper,\r\n boxLabel,\r\n options,\r\n radios,\r\n $if,\r\n $extend,\r\n defaultIcon,\r\n} from '@formkit/inputs';\r\n\r\nfunction customInputClassOverrides(node: any) {\r\n node.props.optionsClass = '$reset formkit-options flex flex-col gap-4';\r\n node.props.decoratorClass = `$reset \r\n block relative h-6 w-6 md:h-5 md:w-5 mr-3 mt-[2px] rounded-full border-2 border-racq-light-blue-grey text-transparent\r\n peer-checked:border-racq-blue-active peer-checked:text-racq-blue-active\r\n peer-focus-visible:outline-2 peer-focus-visible:outline-dashed peer-focus-visible:outline-racq-navy peer-focus-visible:outline-offset-2`;\r\n node.props.decoratorIconClass = `$reset \r\n flex w-full h-full max-w-[12px] md:max-w-[10px] absolute top-1/2 left-1/2 -translate-y-1/2 -translate-x-1/2`;\r\n node.props.labelClass = `$reset \r\n text-base text-racq-dark-grey`;\r\n node.props.optionHelpClass = `$reset \r\n text-xs text-racq-dark-grey ml-[36px] md:ml-[34px]`;\r\n}\r\n\r\n/**\r\n * This component generated via exporting the default radio https://formkit.com/guides/export-and-restructure-inputs#export-via-cli\r\n * and then adding the classes above in `customInputClassOverrides`\r\n */\r\nexport const nativeRadio: FormKitTypeDefinition = {\r\n /**\r\n * The actual schema of the input, or a function that returns the schema.\r\n */\r\n schema: outer(\r\n $if(\r\n '$options == undefined',\r\n /**\r\n * Single radio structure.\r\n */\r\n boxWrapper(\r\n boxInner(prefix(), box(), decorator(icon('decorator')), suffix()),\r\n $extend(boxLabel('$label'), {\r\n if: '$label',\r\n })\r\n ),\r\n /**\r\n * Multi radio structure.\r\n */\r\n fieldset(\r\n legend('$label'),\r\n help('$help'),\r\n boxOptions(\r\n boxOption(\r\n boxWrapper(\r\n boxInner(\r\n prefix(),\r\n $extend(box(), {\r\n bind: '$option.attrs',\r\n attrs: {\r\n id: '$option.attrs.id',\r\n value: '$option.value',\r\n checked: '$fns.isChecked($option.value)',\r\n },\r\n }),\r\n decorator(icon('decorator')),\r\n suffix()\r\n ),\r\n $extend(boxLabel('$option.label'), {\r\n if: '$option.label',\r\n })\r\n ),\r\n boxHelp('$option.help')\r\n )\r\n )\r\n )\r\n ),\r\n // Help text only goes under the input when it is a single.\r\n $if('$options == undefined && $help', help('$help')),\r\n messages(message('$message.value'))\r\n ),\r\n /**\r\n * The type of node, can be a list, group, or input.\r\n */\r\n type: 'input',\r\n /**\r\n * The family of inputs this one belongs too. For example \"text\" and \"email\"\r\n * are both part of the \"text\" family. This is primary used for styling.\r\n */\r\n family: 'box',\r\n /**\r\n * An array of extra props to accept for this input.\r\n */\r\n props: ['options', 'onValue', 'offValue', 'optionsLoader'],\r\n /**\r\n * Forces node.props.type to be this explicit value.\r\n */\r\n forceTypeProp: 'radio',\r\n /**\r\n * Additional features that should be added to your input\r\n */\r\n features: [options, radios, defaultIcon('decorator', 'radioDecorator'), customInputClassOverrides],\r\n /**\r\n * The key used to memoize the schema.\r\n */\r\n schemaMemoKey: 'cj1gc7cw3na',\r\n};\r\n","import FindCar from '@/components/FindCar/FindCar.vue';\r\nimport { createInput } from '@formkit/vue';\r\n\r\nexport const findCarInput = createInput(FindCar, {\r\n props: [\r\n 'topMakes',\r\n 'regoResultsStepTitle',\r\n 'regoResultsStepContent',\r\n 'makeAndModelResultsStepTitle',\r\n 'makeAndModelResultsStepContent',\r\n 'findCarBtn',\r\n 'regoNotFoundMessage',\r\n 'yearLabel',\r\n 'makeLabel',\r\n 'modelLabel',\r\n 'seriesLabel',\r\n 'bodyLabel',\r\n 'colourLabel',\r\n 'regoInputLabel',\r\n 'showColour',\r\n 'expandMakeAndModelLabel',\r\n 'makeAndModelTitleMessage',\r\n 'icon',\r\n 'title',\r\n 'subTitle',\r\n 'isRoadside',\r\n 'roadsideRegoHelpText',\r\n 'formName',\r\n ],\r\n});\r\n\r\nexport const findCarPlugin = (node: any) => {\r\n if (node.props.type == 'findCar') {\r\n node.props.help = '';\r\n }\r\n};\r\n","import { nextTick } from 'vue';\r\n\r\n/**\r\n * Custom plugin to integrate spinner into the Vue Formkit library.\r\n * Spinner will be shown in the form input 'suffixIcon' slot.\r\n *\r\n * To make this solution work, this code leverages Formkit Schemas.\r\n * Read more about Schemas: https://formkit.com/essentials/schema\r\n *\r\n */\r\nfunction formkitPreContentPlugin(node: any) {\r\n node.on('created', async () => {\r\n // extract tooltip attrs from node and set as props\r\n node.addProps(['preContentClass', 'preContent']);\r\n\r\n const renderSchema = node?.props?.definition?.schema;\r\n\r\n if (!renderSchema) return;\r\n if (node.props.preContent) {\r\n await nextTick();\r\n let labelType = 'legend';\r\n if (\r\n node.type !== 'radio' &&\r\n node.type !== 'checkbox' &&\r\n node.context?.type !== 'radio' &&\r\n node.context?.type !== 'checkbox'\r\n ) {\r\n labelType = 'label';\r\n }\r\n const input =\r\n document.querySelector(`*[data-id='${node.props.id}'] ${labelType}`) ||\r\n document.querySelector(`#${node.props.id}__outer ${labelType}`) ||\r\n document.querySelector(`#${node.props.id} ${labelType}`) ||\r\n document.querySelector(`label[for=${node.props.id}]`);\r\n\r\n const preContent = document.createElement('div');\r\n preContent.className = node.props.preContentClass;\r\n preContent.innerHTML = node.props.preContent;\r\n input?.after(preContent);\r\n }\r\n });\r\n}\r\n\r\nexport default formkitPreContentPlugin;\r\n","export const racqFormKitIcons = {\r\n lockIcon: `\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n `,\r\n};\r\n","import * as i18n from '@formkit/i18n';\r\nimport * as icons from '@formkit/icons';\r\nimport * as themes from '@formkit/themes';\r\n\r\nimport { TailwindRACQTheme } from './tailwind.config';\r\nimport { createProPlugin, inputs } from '@formkit/pro';\r\nimport formkitSpinnerPlugin from '@/plugins/spinner/formkitSpinnerPlugin';\r\nimport formkitTooltipPlugin from '@/plugins/tooltip/formkitTooltipPlugin';\r\nimport formkitScrollToErrorsPlugin from '@/plugins/formkitScrollToErrorsPlugin';\r\nimport formkitDefaultPropsPlugin from '@/plugins/formkitDefaultPropsPlugin';\r\nimport formkitHelpPlugin from '@/plugins/formkitHelpPlugin';\r\nimport { routerLinkButton, linkButton } from '@/plugins/formkitLinkButton/formkitLinkButton';\r\nimport { createInput } from '@formkit/vue';\r\nimport { nativeRadio } from './inputs/nativeRadio';\r\nimport Toggle from '@/components/Toggle/Toggle.vue';\r\nimport RACQDropdown from '@/components/RACQDropdown/RACQDropdown.vue';\r\nimport { findCarInput, findCarPlugin } from '@/plugins/findCar/findCarPlugin';\r\nimport formkitPreContentPlugin from './plugins/pre-post-contents/preContentPlugin';\r\nimport RadioCardList from '@/components/RadioCardList/RadioCardList.vue';\r\nimport RadioCardListExpandable from '@/components/RadioCardListExpandable/RadioCardListExpandable.vue';\r\nimport { racqFormKitIcons } from './assets/icons/racq-formkit-icons';\r\n\r\n// Create a FormKit Pro licence key at https://pro.formkit.com/\r\nconst pro = createProPlugin('fk-847cc712eb', inputs);\r\n\r\nconst config = {\r\n plugins: [\r\n pro,\r\n formkitScrollToErrorsPlugin,\r\n formkitSpinnerPlugin,\r\n formkitTooltipPlugin,\r\n formkitHelpPlugin,\r\n formkitDefaultPropsPlugin,\r\n findCarPlugin,\r\n formkitPreContentPlugin,\r\n ],\r\n locales: { en: i18n.en },\r\n locale: 'en',\r\n icons: { ...icons.genesisIcons, ...racqFormKitIcons },\r\n config: {\r\n // Generate FormKit themes and classes\r\n // Ref: https://formkit.com/essentials/styling#using-generateclasses-from-formkitthemes\r\n classes: themes.generateClasses(TailwindRACQTheme),\r\n },\r\n messages: {\r\n en: {\r\n validation: {\r\n required({ name }: any) {\r\n return `Please enter your ${name.toLowerCase()}`;\r\n },\r\n },\r\n },\r\n },\r\n inputs: {\r\n nativeRadio: nativeRadio,\r\n toggle: createInput(Toggle, {\r\n props: ['defaultOption', 'options'],\r\n }),\r\n findCar: findCarInput,\r\n routerLinkButton: routerLinkButton,\r\n linkButton: linkButton,\r\n racqDropdown: createInput(RACQDropdown, {\r\n props: ['options'],\r\n }),\r\n radioCardList: createInput(RadioCardList, {\r\n props: ['options'],\r\n }),\r\n radioCardListExpandable: createInput(RadioCardListExpandable, {\r\n props: ['options'],\r\n }),\r\n },\r\n};\r\n\r\nexport default config;\r\n","import { handleEditorAnchors } from '@sitecore-jss/sitecore-jss-vue';\r\nimport i18ninit from './i18n';\r\nimport { createApp } from './createApp';\r\nimport config from './temp/config';\r\nimport { plugin as formKitPlugin, defaultConfig as formKitConfig } from '@formkit/vue';\r\nimport FormKitCustomConfig from './formkit.config';\r\nimport { createPinia } from 'pinia';\r\nimport FloatingVue from 'floating-vue';\r\nimport 'floating-vue/dist/style.css';\r\nimport { createMetaManager } from 'vue-meta';\r\n\r\n/* eslint-disable no-underscore-dangle */\r\n\r\nlet initLanguage = config.defaultLanguage;\r\n\r\n/*\r\n SSR Data\r\n If we're running in a server-side rendering scenario,\r\n the server will provide the window.__JSS_STATE__ object\r\n for us to acquire the initial state to run with on the client.\r\n\r\n This enables us to skip a network request to load up the layout data.\r\n\r\n SSR is initiated from /server/server.js.\r\n*/\r\nlet __JSS_STATE__: any = null;\r\nconst ssrRawJson = document.getElementById('__JSS_STATE__');\r\nif (ssrRawJson) {\r\n __JSS_STATE__ = JSON.parse(ssrRawJson.innerHTML);\r\n}\r\nif (__JSS_STATE__) {\r\n // set i18n language SSR state language instead of static config default language\r\n initLanguage = __JSS_STATE__.sitecore.context.language;\r\n}\r\n\r\n// initialize the dictionary, then render the app\r\n// note: if not making a multlingual app, the dictionary init can be removed.\r\ni18ninit(initLanguage).then((i18n: any) => {\r\n const initialState = __JSS_STATE__ || null;\r\n const { app } = createApp(initialState, i18n);\r\n\r\n app.use(formKitPlugin, formKitConfig(FormKitCustomConfig));\r\n app.use(FloatingVue, {\r\n themes: {\r\n 'racq-tooltip': { $extend: 'tooltip' },\r\n },\r\n });\r\n\r\n const pinia = createPinia();\r\n app.use(pinia);\r\n\r\n handleEditorAnchors();\r\n app.use(\r\n createMetaManager(false, {\r\n meta: { tag: 'meta', nameless: true }, // Ensures correct handling of meta tags\r\n })\r\n ); // Enable vue-meta\r\n // HTML element to place the app into\r\n const rootElement = document.getElementById('root');\r\n app.mount(rootElement!);\r\n});\r\n","export interface ICreateLeadRequestModel {\r\n leadAdditionalAttributes: ILeadAdditionalAttributes[];\r\n}\r\n\r\nexport interface ILeadAdditionalAttributes {\r\n typeCode: string;\r\n value: any;\r\n}\r\nexport interface ICreateLeadResponseModel {\r\n leadId: string;\r\n}\r\n\r\nexport const LeadAttributes = {\r\n sourceCode: 'SourceCode',\r\n campaign: 'Campaign',\r\n channel: 'Channel',\r\n preferedContactDate: 'PreferedContactDate',\r\n preferedContactTimeofDay: 'PreferedContactTimeofDay',\r\n areaOfInterest: 'AreaOfInterest',\r\n productType: 'ProductType',\r\n purpose: 'Purpose',\r\n postCode: 'PostCode',\r\n stage: 'ProductType',\r\n assignTo: 'Assign to',\r\n};\r\nexport interface IAdobeDataLayerLead extends ICreateLeadRequestModel {\r\n leadId: string;\r\n request: string;\r\n}\r\n","import { CoverTypeMapping, OccupancyTypesMapping, ProductMapping } from '@/enums/decision-intelligence.enum';\r\nimport { QuoteVehicleUseTypes } from '@/enums/quote-vehicle-use-types.enum';\r\nimport { IQuote, InsuranceQuoteType } from '@/interfaces';\r\nimport {\r\n ICreateDecisionOffer,\r\n IAcknowledgeDecisionRequest,\r\n Outcome,\r\n ICreateRoadsidePrepaidOfferRequest,\r\n} from '@/interfaces/decision-intelligence/decision-intelligence-request';\r\nimport { useAccountStore } from '@/store';\r\nimport { isMobileDevice } from '@/utils/dom-helpers';\r\nimport { IAction, IProposition } from '@/interfaces/decision-intelligence/decision-intelligence-response';\r\nimport { ICreateLeadRequestModel, LeadAttributes } from '@/interfaces/lead/lead-model';\r\nimport { IPaymentReferenceDetails, IQuotedOption } from '@/interfaces/make-a-payment/make-a-payment.interface';\r\n\r\nexport const mapDecisionIntelligenceRequest = (\r\n quote: Partial,\r\n isCrossSell: boolean,\r\n isQuote: boolean,\r\n tiggerStep?: string\r\n): ICreateDecisionOffer => {\r\n const accountStore = useAccountStore();\r\n let vehicle = null;\r\n if (quote.quoteType == InsuranceQuoteType.MotorComprehensive) {\r\n vehicle = {\r\n driveType: quote?.motorQuote?.vehicleDetails?.glassesGuideVehicleDetails?.driveType.value,\r\n fuelType: quote.motorQuote?.vehicleDetails?.glassesGuideVehicleDetails?.fuelType.value,\r\n usageType: QuoteVehicleUseTypes[quote?.motorQuote?.vehicleDetails?.vehicleUseType ?? 1],\r\n vehicleMake: quote?.motorQuote?.vehicleDetails?.glassesGuideVehicleDetails?.make?.description,\r\n vehicleModel: quote?.motorQuote?.vehicleDetails?.glassesGuideVehicleDetails?.model?.description,\r\n vehicleRegistrationNumber: quote?.motorQuote?.vehicleDetails?.vehicleRegistration.value,\r\n vehicleSeries: quote?.motorQuote?.vehicleDetails?.glassesGuideVehicleDetails?.variant?.description,\r\n vehicleValue: quote?.motorQuote?.vehicleDetails?.glassesGuideVehicleDetails?.vehicleValue?.value,\r\n vehicleYear: quote?.motorQuote?.vehicleDetails?.glassesGuideVehicleDetails?.manufacturingYear.year,\r\n };\r\n }\r\n const mappedRequest = {\r\n filters: {\r\n maximumNumberOfItems: 2,\r\n maximumNumberOfNudges: 2,\r\n maximumNumberOfPropositions: 2,\r\n },\r\n decisionCriteria: {\r\n formInputs: {\r\n birthDate: quote.primaryPolicyHolderDetails?.dateOfBirth.value,\r\n existingMember: quote.primaryPolicyHolderDetails?.hasRacqMembership.value,\r\n lastName: quote.primaryPolicyHolderDetails?.surname.value,\r\n quoteReference: quote.reference,\r\n hasRoadsideAssistance: quote.primaryPolicyHolderDetails?.hasRoadsideProduct.value,\r\n annualPremium: quote.insuranceQuoteSummary?.yearlyAnnualPremium,\r\n coverType: CoverTypeMapping[InsuranceQuoteType[quote.quoteType ?? 0] as keyof typeof CoverTypeMapping],\r\n membershipLevel: quote.primaryPolicyHolderDetails?.membershipLoyaltyLevel.value,\r\n homeLoan: quote.homeAndContentsQuote?.propertyHasMortgage.value,\r\n home: {\r\n homeLoan: quote.homeAndContentsQuote?.propertyHasMortgage.value,\r\n homeLoanProvider: quote.homeAndContentsQuote?.propertyMortgageProvider.value,\r\n buildingType: quote.homeAndContentsQuote?.buildingDetails.buildingType.value,\r\n occupancyType:\r\n OccupancyTypesMapping[\r\n quote.homeAndContentsQuote?.propertyOwnershipType?.value as keyof typeof OccupancyTypesMapping\r\n ],\r\n dpid: quote.homeAndContentsQuote?.homeLocationDetails?.dpid.value,\r\n postCode: quote.homeAndContentsQuote?.homeLocationDetails?.postCode.value,\r\n yearBuilt: quote.homeAndContentsQuote?.buildingDetails?.yearBuilt.value,\r\n optionalPetCover: quote.homeAndContentsQuote?.advancedCoverOptions?.numberOfPetsToCover.value ?? 0 > 0,\r\n },\r\n vehicle: vehicle,\r\n policyNumber: quote.policyReference,\r\n homeInsuranceClaimed: quote.homeAndContentsQuote?.homeQuote.claimsWithinShortPeriod.value,\r\n },\r\n partyReferences: {\r\n d365Id: accountStore.identityDetails?.d365Id,\r\n },\r\n sessionContext: {\r\n channel: 'Website',\r\n deviceType: isMobileDevice() ? 'Mobile' : 'Desktop',\r\n journey: isQuote ? 'Quote' : 'Purchase',\r\n pillar: 'Insurance',\r\n product: ProductMapping[InsuranceQuoteType[quote.quoteType ?? 0] as keyof typeof ProductMapping],\r\n strategy: isCrossSell ? 'Cross-Sell' : 'Acquisition',\r\n triggerStep: tiggerStep,\r\n },\r\n },\r\n } as ICreateDecisionOffer;\r\n return mappedRequest;\r\n};\r\n\r\nexport const mapDecisionIntelligenceRenewalRequest = (\r\n paymentReferenceDetails: IPaymentReferenceDetails,\r\n isCrossSell: boolean,\r\n tiggerStep?: string\r\n): ICreateDecisionOffer => {\r\n const mappedRequest = {\r\n filters: {\r\n maximumNumberOfItems: 1,\r\n maximumNumberOfNudges: 1,\r\n maximumNumberOfPropositions: 1,\r\n },\r\n decisionCriteria: {\r\n formInputs: {\r\n prn: paymentReferenceDetails.prn,\r\n policyNumber: paymentReferenceDetails.policyNumber,\r\n },\r\n partyReferences: {\r\n d365Id: paymentReferenceDetails?.partyReferences.d365Id,\r\n apttusId: paymentReferenceDetails?.partyReferences.apttusId,\r\n },\r\n sessionContext: {\r\n channel: 'Website',\r\n journey: 'Renewal',\r\n pillar: 'Insurance',\r\n triggerStep: tiggerStep,\r\n deviceType: isMobileDevice() ? 'Mobile' : 'Desktop',\r\n strategy: isCrossSell ? 'Cross-Sell' : 'Retention',\r\n product: ProductMapping[paymentReferenceDetails.coverageCode as keyof typeof ProductMapping],\r\n },\r\n },\r\n } as ICreateDecisionOffer;\r\n return mappedRequest;\r\n};\r\n\r\nexport const mapDecisionOfferAcknowledge = (\r\n outCome: Outcome,\r\n quote?: Partial,\r\n paymentReferenceDetails?: Partial,\r\n proposition?: IProposition,\r\n action?: IAction,\r\n leadId?: string\r\n): IAcknowledgeDecisionRequest => {\r\n return {\r\n actionId: action?.actionId,\r\n outcome: Outcome[outCome],\r\n quoteReference: quote ? quote.reference : undefined,\r\n policyNumber: quote ? quote.policyReference : paymentReferenceDetails?.policyNumber,\r\n d365Id: quote ? quote.primaryPolicyHolderDetails?.partyId?.value : paymentReferenceDetails?.partyReferences?.d365Id,\r\n propositionId: proposition?.id,\r\n leadId: leadId,\r\n };\r\n};\r\n\r\nexport const mapCreateLeadRequest = (action: IAction, selectedOption: string): ICreateLeadRequestModel => {\r\n const response = {\r\n leadAdditionalAttributes: [\r\n { typeCode: LeadAttributes.sourceCode, value: 'Digital' },\r\n { typeCode: LeadAttributes.campaign, value: action.leadCampaign },\r\n { typeCode: LeadAttributes.channel, value: action.leadChannelOfChoiceCode },\r\n { typeCode: LeadAttributes.areaOfInterest, value: action.leadAreaOfInterestCode },\r\n { typeCode: LeadAttributes.productType, value: action.leadProductType },\r\n { typeCode: LeadAttributes.purpose, value: action.leadPurpose },\r\n { typeCode: LeadAttributes.assignTo, value: action.leadAssignTo },\r\n ],\r\n };\r\n if (action.actionType == 'Contact') {\r\n response.leadAdditionalAttributes.push({ typeCode: LeadAttributes.preferedContactDate, value: selectedOption });\r\n }\r\n if (action.actionType == 'Email') {\r\n response.leadAdditionalAttributes.push({\r\n typeCode: LeadAttributes.preferedContactTimeofDay,\r\n value: selectedOption,\r\n });\r\n }\r\n return response;\r\n};\r\n\r\nexport const mapRSAPrepayRequest = (\r\n paymentReferenceDetails: IPaymentReferenceDetails\r\n): ICreateRoadsidePrepaidOfferRequest => {\r\n return {\r\n prn: paymentReferenceDetails.prn,\r\n apttusId: paymentReferenceDetails.apttusId,\r\n assetLineItemId: paymentReferenceDetails.assetLineItemId,\r\n currentProduct: {\r\n amount: paymentReferenceDetails.currentProduct.amount,\r\n apttusCartId: paymentReferenceDetails.currentProduct.apttusCartId,\r\n apttusQuoteId: paymentReferenceDetails.currentProduct.apttusQuoteId,\r\n description: paymentReferenceDetails.currentProduct.description,\r\n product: paymentReferenceDetails.currentProduct.product,\r\n productCode: paymentReferenceDetails.currentProduct.productCode,\r\n },\r\n renewalOptions: paymentReferenceDetails.renewalOptions.map((x: IQuotedOption) => {\r\n return {\r\n amount: x.amount,\r\n apttusCartId: x.apttusCartId,\r\n apttusQuoteId: x.apttusQuoteId,\r\n description: x.description,\r\n product: x.product,\r\n productCode: x.productCode,\r\n };\r\n }),\r\n };\r\n};\r\n","import { QuoteChangeState } from '@/enums/quote-change-state.enum';\r\nimport { IPolicyHolderDetails } from '@/interfaces/insurance-quote/policyholder.interface';\r\nimport { RACQAddressResult } from '@/interfaces';\r\nimport { convertISOToDateFormatted, convertToISODate } from '@/utils/data-transforms';\r\nimport { AUSTRALIA } from '@/constants/general-words.const';\r\n\r\nconst minDate = new Date('1901-01-01T00:00:00Z');\r\n\r\n/**\r\n * Map policyholder helper\r\n *\r\n * @param policyholder\r\n * @param formData\r\n */\r\nexport const mapPolicyholder = (policyholder: IPolicyHolderDetails, formData: Record) => {\r\n if (policyholder?.emailAddress?.value != formData.email) {\r\n policyholder.emailAddress = {\r\n value: formData.email,\r\n state: QuoteChangeState.Changed,\r\n };\r\n }\r\n if (policyholder?.firstname?.value != formData.fullname?.firstName) {\r\n policyholder.firstname = {\r\n value: formData.fullname?.firstName,\r\n state: QuoteChangeState.Changed,\r\n };\r\n }\r\n if (policyholder?.surname?.value != formData.fullname?.lastName) {\r\n policyholder.surname = {\r\n value: formData.fullname?.lastName,\r\n state: QuoteChangeState.Changed,\r\n };\r\n }\r\n if (policyholder?.salutation?.value != formData.fullname?.title) {\r\n policyholder.salutation = {\r\n value: formData.fullname?.title,\r\n state: QuoteChangeState.Changed,\r\n };\r\n }\r\n\r\n if (policyholder?.dateOfBirth?.value != convertToISODate(formData.dateOfBirth)) {\r\n policyholder.dateOfBirth = {\r\n value: convertToISODate(formData.dateOfBirth),\r\n state: QuoteChangeState.Changed,\r\n };\r\n }\r\n if (policyholder?.gender?.value != formData.gender) {\r\n policyholder.gender = {\r\n value: formData.gender,\r\n state: QuoteChangeState.Changed,\r\n };\r\n }\r\n if (policyholder?.telephoneNumber?.value != formData.primaryContactNumber) {\r\n policyholder.telephoneNumber = {\r\n value: formData.primaryContactNumber,\r\n state: QuoteChangeState.Changed,\r\n };\r\n }\r\n if (policyholder?.secondaryTelephoneNumber?.value != formData.secondaryContactNumber) {\r\n policyholder.secondaryTelephoneNumber = {\r\n value: formData.secondaryContactNumber,\r\n state: QuoteChangeState.Changed,\r\n };\r\n }\r\n\r\n // Postal Address\r\n if (policyholder?.postcode?.value != formData.postalAddress?.postcode) {\r\n policyholder.postcode = {\r\n value: formData.postalAddress?.postcode,\r\n state: QuoteChangeState.Changed,\r\n };\r\n }\r\n if (policyholder?.suburb?.value != formData.postalAddress?.suburb) {\r\n policyholder.suburb = {\r\n value: formData.postalAddress?.suburb,\r\n state: QuoteChangeState.Changed,\r\n };\r\n }\r\n if (policyholder?.street?.value != formData.postalAddress?.street) {\r\n policyholder.street = {\r\n value: formData.postalAddress?.street,\r\n state: QuoteChangeState.Changed,\r\n };\r\n }\r\n if (policyholder?.streetNumber?.value != formData.postalAddress?.streetNumber) {\r\n policyholder.streetNumber = {\r\n value: formData.postalAddress?.streetNumber,\r\n state: QuoteChangeState.Changed,\r\n };\r\n }\r\n if (policyholder?.country?.value != formData.postalAddress?.country) {\r\n policyholder.country = {\r\n value: formData.postalAddress?.country,\r\n state: QuoteChangeState.Changed,\r\n };\r\n }\r\n if (policyholder?.unitNumber?.value != formData.postalAddress?.unitNumber) {\r\n policyholder.unitNumber = {\r\n value: formData.postalAddress?.unitNumber,\r\n state: QuoteChangeState.Changed,\r\n };\r\n }\r\n if (policyholder?.state?.value != formData.postalAddress?.state) {\r\n policyholder.state = {\r\n value: formData.postalAddress?.state,\r\n state: QuoteChangeState.Changed,\r\n };\r\n }\r\n if (policyholder?.dpid?.value != formData.postalAddress?.dpid) {\r\n policyholder.dpid = {\r\n value: formData.postalAddress?.dpid,\r\n state: QuoteChangeState.Changed,\r\n };\r\n }\r\n};\r\n\r\n/**\r\n * Reverse policyholder from quote to form data\r\n *\r\n * @param policyholder\r\n * @param formData\r\n */\r\nexport const reversePolicyholder = (\r\n policyholder: IPolicyHolderDetails,\r\n formData: Record,\r\n autoAddressDefaultText: string = 'Not in list - I will enter manually'\r\n) => {\r\n formData.email = policyholder?.emailAddress.value;\r\n formData.fullname = {\r\n firstName: policyholder?.firstname.value,\r\n lastName: policyholder?.surname.value,\r\n title: policyholder?.salutation.value,\r\n };\r\n\r\n if (policyholder?.dateOfBirth.value && policyholder?.dateOfBirth.value.getFullYear() > minDate.getUTCFullYear()) {\r\n formData.dateOfBirth = convertISOToDateFormatted(policyholder?.dateOfBirth?.value);\r\n }\r\n\r\n formData.gender = policyholder?.gender.value;\r\n formData.primaryContactNumber = policyholder?.telephoneNumber.value;\r\n formData.secondaryContactNumber = policyholder?.secondaryTelephoneNumber.value;\r\n\r\n formData.postalOversea =\r\n policyholder?.country.value && policyholder?.country.value?.toUpperCase() != 'AUSTRALIA' ? 'true' : 'false';\r\n\r\n if (policyholder?.street.value) {\r\n formData.postalAddress_is_manual = !policyholder?.dpid.value;\r\n formData.postalAddress = reversePolicyholderPostalAddress(policyholder);\r\n\r\n if (!formData.postalAddress_is_manual) {\r\n formData.postalAddress_auto = joinAddressComponents(formData.postalAddress);\r\n } else {\r\n formData.postalAddress_auto = autoAddressDefaultText;\r\n }\r\n }\r\n\r\n formData.policyHolderId = policyholder?.policyHolderId;\r\n};\r\n\r\nexport const reversePolicyholderPostalAddress = (policyholder: IPolicyHolderDetails): Partial => {\r\n return {\r\n postcode: policyholder?.postcode?.value,\r\n suburb: policyholder?.suburb?.value,\r\n street: policyholder?.street?.value,\r\n streetNumber: policyholder?.streetNumber?.value,\r\n country: policyholder?.country?.value,\r\n unitNumber: policyholder?.unitNumber?.value,\r\n state: policyholder?.state?.value,\r\n dpid: policyholder?.dpid?.value,\r\n } as Partial;\r\n};\r\n\r\nexport const joinAddressComponents = (postAddress: Record) => {\r\n const isOverseas = postAddress.country && postAddress.country != AUSTRALIA;\r\n\r\n const addressParts = [];\r\n\r\n if (postAddress.unitNumber && postAddress.unitNumber.trim().length > 0) addressParts.push(postAddress.unitNumber);\r\n if (postAddress.streetNumber && postAddress.streetNumber.trim().length > 0)\r\n addressParts.push(postAddress.streetNumber);\r\n if (postAddress.street && postAddress.street.trim().length > 0) addressParts.push(postAddress.street);\r\n if (postAddress.suburb && postAddress.suburb.trim().length > 0) addressParts.push(postAddress.suburb);\r\n if (postAddress.state && postAddress.state.trim().length > 0 && !isOverseas) addressParts.push(postAddress.state);\r\n if (postAddress.postcode && postAddress.postcode.trim().length > 0) addressParts.push(postAddress.postcode);\r\n if (postAddress.country && postAddress.country.trim().length > 0 && isOverseas)\r\n addressParts.push(postAddress.country);\r\n\r\n return `${addressParts.shift()} ${addressParts.join(', ')}`;\r\n};\r\n\r\nexport const joinAddressComponentsForPolicyholder = (policyholder: IPolicyHolderDetails) => {\r\n return `${policyholder.unitNumber?.value || ''} ${policyholder.streetNumber?.value} ${policyholder.street?.value}, ${policyholder.suburb?.value} ${policyholder.state?.value} ${policyholder.postcode?.value}`.trim();\r\n};\r\n","import { getScreenSize } from '@/utils/dom-helpers';\r\nimport { createTooltip, hideAllPoppers } from 'floating-vue';\r\n\r\ninterface ITooltip {\r\n tooltipId: string;\r\n tooltipContent: string;\r\n}\r\n\r\n/**\r\n * Create RACQ styled tooltips using Floating Vue.\r\n *\r\n * Docs: https://floating-vue.starpad.dev/guide/config\r\n *\r\n * @param tooltipObject\r\n */\r\nexport async function renderTooltip(tooltipObject: ITooltip) {\r\n const tooltipTrigger = document.getElementById(tooltipObject.tooltipId);\r\n\r\n if (!tooltipTrigger) {\r\n console.warn('No tooltip ID found: ', tooltipObject.tooltipId);\r\n return;\r\n }\r\n\r\n // Floating Vue tooltip options\r\n // ref: https://floating-vue.starpad.dev/guide/config#default-values\r\n const tooltipOptions = {\r\n triggers: [],\r\n content: tooltipObject.tooltipContent || 'No tooltip content provided',\r\n /**\r\n * Set the distance between the tooltip trigger and the tooltip.\r\n *\r\n * The UI design requirement is to place the tooltip outside\r\n * and to the right of the form itself.\r\n *\r\n * If the viewport is reduced then the tooltip adjusts to\r\n * sit to the left, above or underneath the trigger.\r\n *\r\n * distance: getTooltipDistance(tooltipTrigger, isSmallScreen),\r\n *\r\n * Skidding is an offset value that positions the tooltip arrow\r\n * up or down the y axis. On large screens the arrow is offset\r\n * to be positioned closer to the top of the tooltip.\r\n */\r\n skidding: 0, // this.isLargeScreen ? 24 : 0;\r\n\r\n /**\r\n * By default the tooltip will be placed to the right of the form.\r\n * Once the user starts to decrease the viewport, the tooltip\r\n * will shift it's position accordinly to these controls.\r\n */\r\n placement: 'bottom',\r\n\r\n /**\r\n * Enable HTML content to be rendered.\r\n */\r\n html: true,\r\n\r\n /**\r\n * Update popper on content resize\r\n */\r\n handleResize: true,\r\n\r\n /**\r\n * Flip to the opposite placement if needed\r\n */\r\n flip: false,\r\n\r\n /**\r\n * Hide tooltip when clicking outside\r\n */\r\n autoHide: true,\r\n };\r\n\r\n await hideAllPoppersAndPaddings();\r\n\r\n const tooltip = createTooltip(tooltipTrigger, tooltipOptions, null);\r\n tooltip.show();\r\n\r\n setTimeout(() => {\r\n document.querySelector('.v-popper__inner')?.addEventListener('click', hideAllPoppersAndPaddings);\r\n }, 500);\r\n}\r\n\r\n/**\r\n * Hide all tooltips and paddings\r\n */\r\nexport async function hideAllPoppersAndPaddings() {\r\n hideAllPoppers();\r\n document.querySelector('.v-popper__inner')?.removeEventListener('click', hideAllPoppersAndPaddings); // clean up click listener\r\n await new Promise((res) => {\r\n let timer: NodeJS.Timeout | undefined = setInterval(() => {\r\n if (document.getElementsByClassName('v-popper__popper').length == 0) {\r\n clearInterval(timer);\r\n timer = undefined;\r\n res(0);\r\n }\r\n }, 50);\r\n setTimeout(() => {\r\n if (timer) {\r\n clearInterval(timer);\r\n res(0);\r\n }\r\n }, 1000);\r\n });\r\n\r\n // Remove paddings for small screen *DS-1336\r\n while (document.getElementsByClassName('tooltip_padding').length) {\r\n document.getElementsByClassName('tooltip_padding')[0].remove();\r\n }\r\n}\r\n\r\n/**\r\n * Helper function to show tooltip on trigger click (button, icon, etc)\r\n *\r\n * @param event\r\n */\r\nexport async function showTooltipOnTriggerClick(event: Event, content: string) {\r\n const tooltipTrigger = event.target as HTMLButtonElement;\r\n if (tooltipTrigger.classList.contains('active')) {\r\n tooltipTrigger.classList.remove('active');\r\n const tooltipEl = document.querySelector('.v-popper__wrapper');\r\n hideAllPoppersAndPaddings();\r\n if (tooltipEl) return;\r\n }\r\n\r\n const allTooltipTriggers = document.querySelectorAll('.js-tooltip-trigger');\r\n allTooltipTriggers.forEach((triggerEl) => triggerEl.classList.remove('active'));\r\n tooltipTrigger.classList.add('active');\r\n\r\n // Focus back for accessibility\r\n setTimeout(() => {\r\n (event.target as HTMLElement).focus();\r\n }, 500);\r\n\r\n const tooltipContent = content;\r\n const tooltipId = tooltipTrigger?.id;\r\n await renderTooltip({ tooltipId, tooltipContent });\r\n}\r\n","import axios, { AxiosError } from 'axios';\r\nimport config from '@/temp/config';\r\nimport { isProduction } from '@/constants/forms-api.const';\r\nimport { parseJSON } from 'date-fns';\r\nimport { JP_LOGGEDOUT } from '@/constants/jeopardy-codes.const';\r\n\r\n/** Sitecore Local JSS Key\r\n * TODO: load from env var or inject at build time.\r\n */\r\nconst scApiKey = '{074B3CC1-DAB1-4092-B4EB-CE8420F3AEAF}';\r\n\r\nconst dateRegexp = /\\d{4}-\\d{2}-\\d{2}T.*\\d{2}:\\d{2}/;\r\n\r\nconst notAuthorizedError = {\r\n errors: [\r\n {\r\n message: JP_LOGGEDOUT,\r\n },\r\n ],\r\n};\r\n\r\nconst doesValueLookLikeADateString = (propValue: any) =>\r\n propValue && typeof propValue === 'string' && dateRegexp.test(propValue);\r\n\r\nconst transformResponse = (data: any) => {\r\n //to handle empty response\r\n if (data) {\r\n return JSON.parse(data, (key, value) => {\r\n const isValuePotentialDate = doesValueLookLikeADateString(value);\r\n if (isValuePotentialDate) {\r\n const attemptedParsedValue = parseJSON(value);\r\n if (attemptedParsedValue && !Number.isNaN(attemptedParsedValue.getTime())) {\r\n return attemptedParsedValue;\r\n } else {\r\n return value;\r\n }\r\n }\r\n return value;\r\n });\r\n }\r\n return data;\r\n};\r\n\r\nconst handleException = (res: AxiosError) => {\r\n if (res.status == 401) {\r\n return { data: notAuthorizedError };\r\n }\r\n throw res;\r\n};\r\n\r\nexport const RequestServices = {\r\n /**\r\n * Send get request\r\n *\r\n * @param endpoint\r\n * @param params\r\n * @returns\r\n */\r\n async HttpGet(endpoint: string, params: any = {}): Promise {\r\n params.transformResponse = transformResponse;\r\n params.params = {};\r\n params.params.sc_apikey = isProduction ? config.sitecoreApiKey : scApiKey;\r\n if (!isProduction) params.withCredentials = true;\r\n const response = await axios.get(`${endpoint}`, params).catch(handleException);\r\n return response.data;\r\n },\r\n\r\n /**\r\n * Send post request\r\n *\r\n * @param endpoint\r\n * @param body\r\n * @param params\r\n * @returns\r\n */\r\n async HttpPost(endpoint: string, body: any = {}, params: any = {}): Promise {\r\n try {\r\n params.transformResponse = transformResponse;\r\n params.params = {};\r\n params.params.sc_apikey = isProduction ? config.sitecoreApiKey : scApiKey;\r\n if (!isProduction) params.withCredentials = true;\r\n const response = await axios.post(`${endpoint}`, body, params).catch(handleException);\r\n return response.data;\r\n } catch (error) {\r\n console.error(error);\r\n throw error;\r\n }\r\n },\r\n\r\n /**\r\n * Send post request\r\n *\r\n * @param endpoint\r\n * @param body\r\n * @param params\r\n * @returns\r\n */\r\n async HttpPut(endpoint: string, body: any = {}, params: any = {}) {\r\n try {\r\n params.transformResponse = transformResponse;\r\n params.params = {};\r\n params.params.sc_apikey = isProduction ? config.sitecoreApiKey : scApiKey;\r\n if (!isProduction) params.withCredentials = true;\r\n const response = await axios.put(`${endpoint}`, body, params).catch(handleException);\r\n return response.data;\r\n } catch (error) {\r\n console.error(error);\r\n throw error;\r\n }\r\n },\r\n};\r\n","import {\r\n getLoginUrl,\r\n authenticationUrl,\r\n isAuthenticatedUrl,\r\n logoutUrl,\r\n isProduction,\r\n localURL,\r\n getSelfServiceAccountOverviewUrl,\r\n getIdentityDetails,\r\n getLoyaltyType,\r\n getResidentialAddress,\r\n getLoginUrlSitecore8,\r\n getMembershipCardNumber,\r\n} from '@/constants/forms-api.const';\r\nimport { RequestServices as _http } from '@/services/common/request.services';\r\nimport { IdentityDetails } from '@/interfaces';\r\nimport { Address } from '@/interfaces/entities/jor-create-rsa-job.interface';\r\n\r\nexport const AccountServices = {\r\n /**\r\n * Fetch Identity Details\r\n * @returns\r\n */\r\n fetchIdentityDetails(): Promise {\r\n return _http.HttpGet(getIdentityDetails);\r\n },\r\n\r\n /**\r\n * Get account overview URL\r\n * @returns\r\n */\r\n getSelfServiceAccountOverviewPage(): Promise {\r\n return _http.HttpGet(`${getSelfServiceAccountOverviewUrl}`);\r\n },\r\n\r\n async getLoyaltyType(externalSystemId: string | null): Promise {\r\n const url = `${getLoyaltyType}?externalSystemId=${externalSystemId}`;\r\n return await _http.HttpGet(url);\r\n },\r\n\r\n async getResidentialAddress(externalSystemId: string | null): Promise
{\r\n const url = `${getResidentialAddress}?externalSystemId=${externalSystemId}`;\r\n return await _http.HttpGet(url);\r\n },\r\n\r\n async getMembershipCardNumber(externalSystemId: string | null): Promise {\r\n const url = `${getMembershipCardNumber}?externalSystemId=${externalSystemId}`;\r\n return await _http.HttpGet(url);\r\n },\r\n\r\n /**\r\n * Get Login URL for Sitecore10\r\n * @param currentUrl\r\n * @returns\r\n */\r\n getLoginUrl(currentUrl: string): Promise {\r\n const url = getLoginUrl.replace('{0}', encodeURIComponent(currentUrl));\r\n return _http.HttpGet(`${url}`);\r\n },\r\n\r\n /**\r\n * Get Login URL for Sitecore8\r\n * @returns\r\n */\r\n getLoginUrlSitecore8(): Promise {\r\n return _http.HttpGet(`${getLoginUrlSitecore8}`);\r\n },\r\n\r\n authenticate(code: string): Promise<{ success: boolean; error: string }> {\r\n return _http.HttpPost(`${authenticationUrl}`, {\r\n code: code,\r\n redirect_uri: isProduction ? '' : localURL,\r\n });\r\n },\r\n\r\n /**\r\n * Check login status in sitecore 10\r\n * @returns\r\n */\r\n isAuthenticated(): Promise {\r\n return _http.HttpGet(`${isAuthenticatedUrl}`);\r\n },\r\n\r\n /**\r\n * Logout sitecore 10\r\n * @returns\r\n */\r\n logOut(): Promise {\r\n return _http.HttpGet(`${logoutUrl}`);\r\n },\r\n} as const;\r\n","import {\r\n getAssistanceProduct,\r\n submitAutoGlassFormDetails,\r\n getSelfServiceRoadsideAssistancePageUrl,\r\n} from '@/constants/forms-api.const';\r\nimport { RequestServices as _http } from '@/services/common/request.services';\r\nimport { AutoGlassFormRequest } from '@/interfaces/pages/auto-glass-form.interface';\r\n\r\nexport const AutoGlassFormService = {\r\n /**\r\n * Submit autoglass form\r\n * @param payload\r\n */\r\n async submitAutoGlassFormDetails(payload: AutoGlassFormRequest): Promise {\r\n return await _http.HttpPost(submitAutoGlassFormDetails, payload);\r\n },\r\n\r\n /**\r\n * Fetch assistance product policy\r\n * @param policyId\r\n * @returns\r\n */\r\n async getAssistanceProduct(policyId: string) {\r\n return await _http.HttpGet(`${getAssistanceProduct.replace('{0}', policyId)}`);\r\n },\r\n\r\n /**\r\n * Get roadside assistance URL\r\n * @returns\r\n */\r\n getSelfServiceRoadsideAssistancePage(): Promise {\r\n return _http.HttpGet(`${getSelfServiceRoadsideAssistancePageUrl}`);\r\n },\r\n} as const;\r\n","import {\r\n getInsuranceProduct,\r\n getSelfServiceChangeVehicleUrl,\r\n isInsuranceEligibleForCancellation,\r\n} from '@/constants/forms-api.const';\r\nimport { RequestServices as _http } from '../common/request.services';\r\nimport { CancelInsuranceFormFetchPolicyResponse } from '@/interfaces';\r\n\r\nexport const CancelInsuranceFormService = {\r\n /**\r\n * Validate step 1\r\n * @param policyNumber\r\n * @param payload\r\n * @returns\r\n */\r\n isInsuranceEligibleForCancellation(\r\n policyNumber: string,\r\n payload: object\r\n ): Promise<{ jpCode: string; isEligible: boolean }> {\r\n return _http.HttpPost(isInsuranceEligibleForCancellation.replace('{0}', policyNumber), payload);\r\n },\r\n\r\n /**\r\n * Fetch Policy\r\n * @param policyNumber\r\n * @returns\r\n */\r\n fetchPolicy(policyNumber: string): Promise {\r\n return _http.HttpGet(getInsuranceProduct.replace('{0}', policyNumber));\r\n },\r\n\r\n /**\r\n * Get Change Vehicle Link\r\n * @param index\r\n */\r\n goChangeVehicleLink(): Promise {\r\n return _http.HttpGet(getSelfServiceChangeVehicleUrl.replace('{0}', 'true'));\r\n },\r\n} as const;\r\n","import { getLiveChatSessionData } from '@/constants/forms-api.const';\r\nimport { RequestServices as _http } from '../common/request.services';\r\n\r\nexport const LiveChatServices = {\r\n /**\r\n * Get chat session data from sitecore 10\r\n * @returns\r\n */\r\n getLiveChatSessionData() {\r\n return _http.HttpGet(`${getLiveChatSessionData}`);\r\n },\r\n} as const;\r\n","import {\r\n ISuburbLookupResult,\r\n IRiskAddressFormatRequest,\r\n} from './../../interfaces/entities/risk-suburb-lookup-option.interface';\r\nimport {\r\n getAddressLookupAutocomplete,\r\n getSuburbsByPostcode,\r\n getInsuranceRiskSuburbs,\r\n getAddressLookupFormat,\r\n getCountryLookupAutocomplete,\r\n getIsCycloneCovered,\r\n formatRiskAddressUrl,\r\n} from '@/constants/forms-api.const';\r\nimport { RequestServices as _http } from '@/services/common/request.services';\r\n\r\nexport const AddressLookupService = {\r\n getAddressLookup(key: string) {\r\n return _http.HttpGet(`${getAddressLookupAutocomplete.replace('{0}', key)}`);\r\n },\r\n\r\n getCountryLookup(key: string, allCountries: boolean) {\r\n return _http.HttpGet(`${getCountryLookupAutocomplete.replace('{0}', key).replace('{1}', allCountries.toString())}`);\r\n },\r\n\r\n getSuburbsByPostcode(postcode: string, excludePostal: boolean): Promise {\r\n return _http.HttpGet(`${getSuburbsByPostcode.replace('{0}', postcode).replace('{1}', excludePostal.toString())}`);\r\n },\r\n\r\n getInsuranceRiskSuburbs(key: string): Promise {\r\n return _http.HttpGet(`${getInsuranceRiskSuburbs.replace('{0}', key)}`);\r\n },\r\n\r\n getAddressLookupFormat(query: string) {\r\n return _http.HttpGet(getAddressLookupFormat + '?' + query);\r\n },\r\n\r\n getIsCycloneCovered(suburb: string, postcode: string, state: string): Promise<{ isCovered: boolean }> {\r\n return _http.HttpGet(`${getIsCycloneCovered}?suburb=${suburb}&postcode=${postcode}&state=${state}`);\r\n },\r\n\r\n formatRiskAddress(payload: IRiskAddressFormatRequest) {\r\n return _http.HttpPost(formatRiskAddressUrl, payload);\r\n },\r\n};\r\n","import { IBSBBranchDetails } from './../../interfaces/entities/bsb-branch-details.interface';\r\nimport type { IPaymentConfigurationRequest } from '@/interfaces/entities/payment-configuration-request.interface';\r\nimport type { IPaymentConfigurationResponse } from '@/interfaces/entities/payment-configuration-response.interface';\r\nimport { RequestServices as _http } from '../common/request.services';\r\nimport { getFinancialInstitutionFromBsb, getPaymentConfiguration } from '@/constants/forms-api.const';\r\n\r\nexport const PaymentServices = {\r\n /**\r\n * Get FZ Iframe URL\r\n *\r\n * @param payload\r\n * @returns\r\n */\r\n async getPaymentIframeConfiguration(payload: IPaymentConfigurationRequest): Promise {\r\n if (!payload.reference || !payload.amount) return { url: '', hostUrl: '' };\r\n return await _http.HttpGet(\r\n `${getPaymentConfiguration}?reference=${payload.reference}&amount=${payload.amount}&buttonText=${payload.buttonText}&tokenizeOnly=${payload.tokenizeOnly}&googlepay=${payload.googlePay}`\r\n );\r\n },\r\n\r\n /**\r\n * BSB Lookup\r\n *\r\n * @param bsb\r\n */\r\n async bsbLookup(bsb: string): Promise {\r\n return await _http.HttpGet(getFinancialInstitutionFromBsb.replace('{0}', bsb));\r\n },\r\n} as const;\r\n","import {\r\n getJORGoogleMapsApiKey,\r\n getJORGoogleMapsDefaultZoomLevel,\r\n getJORGoogleMapsMapId,\r\n getJORGoogleMapsTipText,\r\n} from '@/constants/forms-api.const';\r\nimport { RequestServices as _http } from '@/services/common/request.services';\r\n\r\nexport const JORGoogleMapService = {\r\n getJORGoogleMapsApiKey(): Promise {\r\n return _http.HttpGet(`${getJORGoogleMapsApiKey}`);\r\n },\r\n getJORGoogleMapsMapId(): Promise {\r\n return _http.HttpGet(`${getJORGoogleMapsMapId}`);\r\n },\r\n getJORGoogleMapsDefaultZoomLevel(): Promise {\r\n return _http.HttpGet(`${getJORGoogleMapsDefaultZoomLevel}`);\r\n },\r\n getJORGoogleMapsTipText(): Promise {\r\n return _http.HttpGet(`${getJORGoogleMapsTipText}`);\r\n },\r\n};\r\n","import {\r\n getServiceabilityRoadsideAssistanceJob,\r\n matchPartyRoadsideAssistanceJob,\r\n postCreateRsaJobJoinOnRoad,\r\n getCheckEligibility,\r\n isTrackableUrl,\r\n getShouldJeopardy,\r\n postCreateRsaJobHtml,\r\n} from '@/constants/forms-api.const';\r\nimport { RequestServices as _http } from '@/services/common/request.services';\r\nimport {\r\n RoadsideAssistance,\r\n AssistanceMatchPartyRequest,\r\n AssistanceMatchPartyResponse,\r\n} from '@/interfaces/entities/roadside-assistance.interface';\r\nimport {\r\n CreateRoadsideJobRequest,\r\n CreateRoadsideJobResponse,\r\n} from '@/interfaces/entities/jor-create-rsa-job.interface';\r\nimport { IsEligibleResponse } from '@/interfaces/entities/jor-check-eligibility.interface';\r\n\r\nexport const RoadsideAssistanceService = {\r\n async getServiceability(latitude: number, longitude: number): Promise {\r\n return await _http.HttpGet(\r\n getServiceabilityRoadsideAssistanceJob.replace('{0}', latitude.toString()).replace('{1}', longitude.toString())\r\n );\r\n },\r\n\r\n /**\r\n * Match Party Roadside Assistance Job\r\n * @param payload\r\n */\r\n async matchParty(payload: AssistanceMatchPartyRequest): Promise {\r\n return await _http.HttpPost(matchPartyRoadsideAssistanceJob, payload);\r\n },\r\n\r\n /**\r\n * Create roadside assistance job for Join on Road\r\n */\r\n async createRsaJobJoinOnRoad(payload: CreateRoadsideJobRequest): Promise {\r\n return await _http.HttpPost(postCreateRsaJobJoinOnRoad, payload);\r\n },\r\n\r\n /**\r\n * Check eligibility\r\n */\r\n async checkEligibility(d365Id: string, vehicleRegistration: string): Promise {\r\n return await _http.HttpGet(\r\n getCheckEligibility.replace('{0}', d365Id.toString()).replace('{1}', vehicleRegistration.toString())\r\n );\r\n },\r\n\r\n /**\r\n * Check dispatch group traceability\r\n */\r\n async isTrackable(dispatchGroup: string): Promise {\r\n return await _http.HttpGet(isTrackableUrl.replace('{0}', dispatchGroup));\r\n },\r\n\r\n /**\r\n * Check policy status and decide whether to Jeopardy\r\n */\r\n async ShouldJeopardy(policyStatus: string): Promise {\r\n return await _http.HttpGet(getShouldJeopardy.replace('{0}', policyStatus));\r\n },\r\n\r\n /**\r\n * Create roadside assistance job for Html (called by Join on Road in some cases)\r\n */\r\n async createRsaJobHtml(payload: Partial): Promise {\r\n return await _http.HttpPost(postCreateRsaJobHtml, payload);\r\n },\r\n} as const;\r\n","import type { IRefDataItem, IRefDataCodeItem, IDropdownItem, IFoundVehicle } from '@/interfaces';\r\nimport { RequestServices as _http } from '../common/request.services';\r\nimport {\r\n getVehicleYears,\r\n getVehiclesByMake,\r\n getVehicleModels,\r\n getVehicleVariants,\r\n getVehicleBodies,\r\n getVehicleDetails,\r\n getVehicleByRego,\r\n getVehicleEligibility,\r\n getCombinedAccessoriesList,\r\n} from '@/constants/forms-api.const';\r\nimport { IVehicleEligibility } from '@/interfaces/entities/vehicle-eligibility.interface';\r\n\r\nexport default {\r\n async getVehicleYears(): Promise {\r\n return await _http.HttpGet(getVehicleYears);\r\n },\r\n\r\n // https://pj336-dev-s10-form-racq.racqgroup.local/formsapi/v1/vehicle/getmakes?year=2020\r\n async getVehicleMakesByYear(year: string | number): Promise {\r\n if (!year) {\r\n return [];\r\n }\r\n\r\n return await _http.HttpGet(`${getVehiclesByMake}?year=${year}`);\r\n },\r\n\r\n // https://pj336-dev-s10-form-racq.racqgroup.local/formsapi/v1/vehicle/getmodels?year=2021&make=FORD\r\n async getVehicleModelsByYearAndMake(year: string, make: string): Promise {\r\n if (!year || !make) {\r\n return [];\r\n }\r\n\r\n return await _http.HttpGet(`${getVehicleModels}?year=${year}&make=${make}`);\r\n },\r\n\r\n // https://pj336-dev-s10-form-racq.racqgroup.local/formsapi/v1/vehicle/getvariants?year=2021&make=MERE&model=GLA\r\n async getVehicleVariantsByYearMakeModel(year: string, make: string, model: string): Promise {\r\n if (!year || !make || !model) {\r\n return [];\r\n }\r\n\r\n return await _http.HttpGet(`${getVehicleVariants}?year=${year}&make=${make}&model=${model}`);\r\n },\r\n\r\n // https://pj336-dev-s10-form-racq.racqgroup.local/formsapi/v1/vehicle/getbodies?year=2021&make=MERE&model=GLA&variant=35%204MATIC\r\n async getVehicleBodiesByYearMakeModelVariant(\r\n year: string,\r\n make: string,\r\n model: string,\r\n variant = ''\r\n ): Promise {\r\n if (!year || !make || !model) {\r\n return [];\r\n }\r\n\r\n return await _http.HttpGet(`${getVehicleBodies}?year=${year}&make=${make}&model=${model}&variant=${variant || ''}`);\r\n },\r\n\r\n // https://pj336-dev-s10-form-racq.racqgroup.local/formsapi/v1/vehicle/getvehicledetails?year=2021&make=MERE&model=GLA&variant=35%204MATIC&body=WAGON\r\n // Note: An empty variant and body string searches all vehicle bodies\r\n async getVehicleDetailsByYearMakeModelVariantBody(\r\n year: string,\r\n make: string,\r\n model: string,\r\n variant = '',\r\n body = ''\r\n ): Promise {\r\n if (!year || !make || !model) return [];\r\n\r\n const vehicleVariant = variant === 'ALL' ? '' : variant || '';\r\n\r\n return await _http.HttpGet(\r\n `${getVehicleDetails}?year=${year}&make=${make}&model=${model}&variant=${vehicleVariant}&body=${body}`\r\n );\r\n },\r\n\r\n // https://pj336-dev-s10-form-racq.racqgroup.local/formsapi/v1/vehicle/getvehiclebyrego?rego=DOB33\r\n async regoLookup(rego: string) {\r\n if (!rego) return;\r\n\r\n return await _http.HttpGet(`${getVehicleByRego}?rego=${rego}`);\r\n },\r\n\r\n /**\r\n * Determines whether the specified vehicle (glassesId) is eligible for RSA\r\n * https://pj336-dev-s10-form-racq.racqgroup.local/formsapi/v1/vehicle/getvehicleeligibility?glassesId=1642110\r\n */\r\n async getEligibility(glassesId: number): Promise {\r\n if (!glassesId) return null;\r\n\r\n return await _http.HttpGet(`${getVehicleEligibility}?glassesId=${glassesId}`);\r\n },\r\n\r\n /**\r\n * A simple helper function to map API data to the UI\r\n * to work with FormKit's API.\r\n *\r\n * @param data\r\n * @returns\r\n */\r\n mapVehicleDataToFormUI(data: Array): IDropdownItem[] {\r\n if (!data?.length) return [];\r\n\r\n const isRefDataItem = (item: IRefDataCodeItem | IRefDataItem): item is IRefDataCodeItem => {\r\n return (item as IRefDataCodeItem)?.code !== undefined && (item as IRefDataCodeItem)?.description !== undefined;\r\n };\r\n\r\n return data.map((d) => {\r\n if (isRefDataItem(d)) {\r\n return {\r\n value: d.code,\r\n label: d.description,\r\n };\r\n } else {\r\n return {\r\n value: d.name,\r\n label: d.value,\r\n };\r\n }\r\n });\r\n },\r\n\r\n fetchAfterMarketAccessoriesAndModifications() {\r\n return _http.HttpGet(getCombinedAccessoriesList);\r\n },\r\n} as const;\r\n","import { ref, computed } from 'vue';\r\nimport { defineStore } from 'pinia';\r\nimport { AccountServices as _account } from '@/services/store/account.services';\r\nimport { localURL } from '@/constants/forms-api.const';\r\nimport { RouteLocationNormalizedLoaded } from 'vue-router';\r\nimport { IdentityDetails } from '@/interfaces';\r\n\r\nfunction urlUpdateForLocal(url: string) {\r\n const urlObject = new URL(url);\r\n const search_params = urlObject.searchParams;\r\n\r\n search_params.set('redirect_uri', localURL);\r\n urlObject.search = search_params.toString();\r\n return urlObject.toString();\r\n}\r\n\r\nexport const useAccountStore = defineStore('Account', () => {\r\n const loginVisible = ref(false);\r\n const identityDetails = ref>();\r\n const prefillForm = ref(false);\r\n const partyMatched = ref(false);\r\n\r\n const isAuthenticated = computed(() => _account.isAuthenticated());\r\n\r\n async function handleAuthenticated(route: RouteLocationNormalizedLoaded) {\r\n if (route?.query?.state) {\r\n const url = (route.query.state as string)?.split(';')[1]; //redirect back to form\r\n window.location.href = url;\r\n } else {\r\n await fetchIdentityDetails();\r\n }\r\n }\r\n\r\n async function handleUnauthenticated(route: RouteLocationNormalizedLoaded, checkSitecore8Auth: boolean = false) {\r\n if (route?.query.code) {\r\n const response = await _account.authenticate(route.query.code as string);\r\n if (response.success) {\r\n loginVisible.value = false;\r\n const url = (route.query.state as string)?.split(';')[1]; // redirect back to form\r\n window.location.href = url;\r\n } else {\r\n throw response.error;\r\n }\r\n } else if (route?.query.authChecked) {\r\n // Checked auth once and we're not logged in - don't check again\r\n sessionStorage.setItem('authChecked', 'true');\r\n loginVisible.value = false;\r\n return;\r\n } else {\r\n let response = await _account.getLoginUrl(window.location.toString());\r\n if (process.env.NODE_ENV != 'production') {\r\n response = urlUpdateForLocal(response);\r\n }\r\n\r\n if (checkSitecore8Auth) {\r\n const loginUrlSitecore8 = await _account.getLoginUrlSitecore8();\r\n window.location.href = `${loginUrlSitecore8}?returnUrl=${window.location.toString()}&authUrl=${encodeURIComponent(response)}`;\r\n } else {\r\n // perform Sitecore10 auth\r\n window.location.href = response;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Get Identity Details\r\n */\r\n const fetchIdentityDetails = async () => {\r\n const res = await _account.fetchIdentityDetails();\r\n identityDetails.value = res;\r\n prefillForm.value = true;\r\n };\r\n\r\n const fetchLoyaltyLevel = async (externalSystemId: string | null) => {\r\n const response = await _account.getLoyaltyType(externalSystemId);\r\n return response;\r\n };\r\n\r\n /**\r\n * Back to account overview\r\n */\r\n const cancelForm = async () => {\r\n try {\r\n const url = await _account.getSelfServiceAccountOverviewPage();\r\n window.location.href = url;\r\n } catch (error) {\r\n console.warn('Unable to retrieve account overview URL: ', error);\r\n }\r\n };\r\n\r\n /**\r\n * Check authenticated state and callback\r\n */\r\n const authenticateOrCallBack = async (callBackIfAuthenticated: () => void) => {\r\n const isAuthenticated = await _account.isAuthenticated();\r\n if (!isAuthenticated) {\r\n let response = await _account.getLoginUrl(window.location.toString());\r\n if (process.env.NODE_ENV != 'production') {\r\n response = urlUpdateForLocal(response);\r\n }\r\n window.location.href = response;\r\n } else {\r\n callBackIfAuthenticated();\r\n }\r\n };\r\n\r\n /**\r\n * Check Login Status\r\n */\r\n const authenticate = async (route: RouteLocationNormalizedLoaded, checkSitecore8Auth: boolean = false) => {\r\n // Check for logout\r\n if (route?.fullPath.toLowerCase().includes('logout')) {\r\n const logoutUrl = await _account.logOut();\r\n if (window && window.location) window.location.href = logoutUrl;\r\n }\r\n // Validate authentication\r\n else {\r\n if (sessionStorage.getItem('authChecked') === 'true') {\r\n return;\r\n }\r\n const isAuthenticated = await _account.isAuthenticated();\r\n loginVisible.value = !isAuthenticated;\r\n\r\n // Redirect to login page if unauthenticated\r\n if (!isAuthenticated) {\r\n handleUnauthenticated(route, checkSitecore8Auth);\r\n } else {\r\n await handleAuthenticated(route);\r\n }\r\n }\r\n };\r\n\r\n const togglePrefillDetails = () => {\r\n prefillForm.value = !prefillForm.value;\r\n };\r\n\r\n const setIdentityDetailsFirstName = (firstName: string) => {\r\n if (!identityDetails.value) identityDetails.value = {};\r\n identityDetails.value.firstName = firstName;\r\n };\r\n\r\n return {\r\n loginVisible,\r\n identityDetails,\r\n prefillForm,\r\n partyMatched,\r\n fetchIdentityDetails,\r\n fetchLoyaltyLevel,\r\n cancelForm,\r\n authenticateOrCallBack,\r\n authenticate,\r\n // authenticateSitecore8,\r\n isAuthenticated,\r\n togglePrefillDetails,\r\n setIdentityDetailsFirstName,\r\n };\r\n});\r\n","import { defineStore } from 'pinia';\r\nimport { useFormStore, useAccountStore } from '@/store';\r\nimport {\r\n IDecisionIntelligenceAnalytics,\r\n IFormAnalytics,\r\n IAnalyticsProfileInfo,\r\n} from '@/interfaces/forms/analytics-interface';\r\nimport { FormEvents } from '@/enums/form-events.enum';\r\n\r\ndeclare global {\r\n interface Window {\r\n adobeDataLayer: any[];\r\n }\r\n}\r\n\r\nexport const useAnalyticsStore = defineStore('Analytics', () => {\r\n const formStore = useFormStore();\r\n const accountStore = useAccountStore();\r\n\r\n /**\r\n * Push data to adobe data layer\r\n *\r\n * @param options\r\n */\r\n const pushAnalytics = async (data: IFormAnalytics, appendToStepName?: string) => {\r\n if (typeof window === 'undefined' || !data?.event) return;\r\n\r\n // Set authentication status\r\n data.form.authStatus = (await accountStore.isAuthenticated) ? 'Logged in' : 'Not logged in';\r\n\r\n // Set form name if not already provided\r\n data.form.name ??= formStore.pageTitle;\r\n\r\n populateStepName(data, appendToStepName);\r\n\r\n // Set profile info if identity details exist\r\n if (accountStore.identityDetails?.d365Id) {\r\n data.profileInfo = {\r\n contactID: accountStore.identityDetails?.d365Id,\r\n };\r\n }\r\n\r\n // Set profile info if identity details exist\r\n if (accountStore.identityDetails?.d365Id) {\r\n if (!data.profileInfo) {\r\n data.profileInfo = {} as IAnalyticsProfileInfo;\r\n }\r\n\r\n data.profileInfo.contactID = accountStore.identityDetails.d365Id;\r\n }\r\n\r\n // Push data to Adobe Data Layer\r\n window.adobeDataLayer = window.adobeDataLayer || [];\r\n window.adobeDataLayer.push(data);\r\n };\r\n\r\n /**\r\n * Populate step name\r\n *\r\n * @param data\r\n * @param appendToStepName\r\n */\r\n const populateStepName = (data: IFormAnalytics, appendToStepName?: string) => {\r\n if (!data.form.stepName && data.event != FormEvents.JEOPARDY) {\r\n if (data.event === FormEvents.START) {\r\n data.form.stepName = 'FormStarted';\r\n } else if (data.event === FormEvents.COMPLETE) {\r\n data.form.stepName = 'FormCompleted';\r\n } else if (formStore.currentStep?.stepName) {\r\n data.form.stepName = appendToStepName\r\n ? `${formStore.currentStep?.stepName}-${appendToStepName}`\r\n : formStore.currentStep?.stepName;\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Push data to adobe data layer\r\n *\r\n * @param options\r\n */\r\n const pushDecisionIntelligenceAnalytics = (data: IDecisionIntelligenceAnalytics) => {\r\n if (typeof window === 'undefined') return;\r\n if (!data?.event) return;\r\n\r\n window.adobeDataLayer = window.adobeDataLayer || [];\r\n window.adobeDataLayer.push(data);\r\n };\r\n\r\n return {\r\n pushAnalytics,\r\n pushDecisionIntelligenceAnalytics,\r\n };\r\n});\r\n","import { computed, ref } from 'vue';\r\nimport { defineStore } from 'pinia';\r\nimport configSettingsQuery from './configsettings.query.graphql';\r\nimport { useApolloClient } from '@vue/apollo-composable';\r\n\r\nimport { toBool } from '@/utils/convert';\r\nimport { toNumber } from 'lodash-es';\r\n\r\nexport enum IQConfigSettings {\r\n PaymentSubmissionRetries = 'PaymentSubmissionRetries',\r\n EnablePurchaseEmail = 'EnablePurchaseEmail',\r\n EnableQuoteEmail = 'EnableQuoteEmail',\r\n IsHomeAutoRenewalPreferenceEnabled = 'IsHomeAutoRenewalPreferenceEnabled',\r\n RACQWebsite = 'RACQWebsite',\r\n CarQuotePath = 'CarQuotePath',\r\n JpMessageSuffix = 'JpMessageSuffix',\r\n MaxAdditionalAccessories = 'MaxAdditionalAccessories',\r\n}\r\nexport enum CommonConfigSettings {\r\n WaitForPropositionsOfferInSeconds = 'WaitForPropositionsOfferInSeconds',\r\n WaitForRoadsidePrepayOfferInSeconds = 'WaitForRoadsidePrepayOfferInSeconds',\r\n}\r\n\r\nexport enum SettingCategory {\r\n CommonSettings = 'Common Config Settings',\r\n IQSettings = 'IQ Config Settings',\r\n}\r\n\r\nexport const useConfigSettingsStore = defineStore('ConfigSettings', () => {\r\n const configSettingName = ref(IQConfigSettings.EnablePurchaseEmail);\r\n const configCategory = ref(SettingCategory.IQSettings);\r\n const iqConfigSettingsFolder = computed(\r\n () =>\r\n '/sitecore/content/RACQFormsGroup/RACQForms20/Settings/Config Settings Folder/' +\r\n configCategory.value +\r\n '/' +\r\n configSettingName.value\r\n );\r\n const { resolveClient } = useApolloClient();\r\n\r\n const getSetting = async (\r\n settingName: string,\r\n settingCategory: SettingCategory\r\n ): Promise => {\r\n configCategory.value = settingCategory;\r\n configSettingName.value = settingName;\r\n const client = resolveClient();\r\n const result = await client.query({\r\n query: configSettingsQuery,\r\n variables: {\r\n path: iqConfigSettingsFolder.value,\r\n },\r\n });\r\n const setting = result?.data?.item?.fields?.filter((x: any) => x.name == 'Value')[0]?.value;\r\n if (setting) {\r\n const isBool = setting.toLowerCase() == 'true' || setting.toLowerCase() == 'false';\r\n\r\n if (isBool) return toBool(setting);\r\n if (parseFloat(setting)) return toNumber(setting);\r\n return setting;\r\n }\r\n return;\r\n };\r\n\r\n return {\r\n getSetting,\r\n configSettingName,\r\n configCategory,\r\n };\r\n});\r\n","import {\r\n postDecisionIntelligenceCreateOffer,\r\n getDecisionIntelligenceOffer,\r\n acknowlegeDecisionOffer,\r\n createLead,\r\n acknowlegeRenewalDecisionOffer,\r\n createRsaPrepayOffer,\r\n getRsaPrepayOffer,\r\n acknowledgePrepayOffer,\r\n} from '@/constants/forms-api.const';\r\nimport { RequestServices as _http } from '../common/request.services';\r\nimport {\r\n IAcknowledgeDecisionRequest,\r\n ICreateDecisionOffer,\r\n ICreateRoadsidePrepaidOfferRequest,\r\n IRenewalAcknowledgementModel,\r\n} from '@/interfaces/decision-intelligence/decision-intelligence-request';\r\nimport { ICreateLeadRequestModel } from '@/interfaces/lead/lead-model';\r\n\r\nexport const DecisionIntelligenceService = {\r\n /**\r\n * Create Decision Intelligence Offer Request\r\n *\r\n * @param quoteId quote id\r\n * @returns\r\n */\r\n createDecisionIntelligenceOffer(request: ICreateDecisionOffer) {\r\n return _http.HttpPost(postDecisionIntelligenceCreateOffer, request);\r\n },\r\n /**\r\n * Get decision offer by id\r\n * @param decisionOfferId decision offer id\r\n * @returns\r\n */\r\n getDecisionIntelligenceOffer(decisionOfferId: string) {\r\n return _http.HttpGet(getDecisionIntelligenceOffer.replace('{0}', decisionOfferId));\r\n },\r\n /**\r\n * Acknowledge decision offer\r\n * @param decisionId decision offer id\r\n * @param request request for decision ack request\r\n * @returns\r\n */\r\n acknowlegeDecisionOffer(decisionId: string, request: IAcknowledgeDecisionRequest) {\r\n return _http.HttpPost(acknowlegeDecisionOffer.replace('{0}', decisionId), request);\r\n },\r\n\r\n acknowledgeRenewalDecisionOffer(request: IRenewalAcknowledgementModel) {\r\n return _http.HttpPost(acknowlegeRenewalDecisionOffer, request);\r\n },\r\n /**\r\n *\r\n * @param d365Id Create lead in D365\r\n * @param request\r\n * @returns\r\n */\r\n createLead(d365Id: string, request: ICreateLeadRequestModel) {\r\n return _http.HttpPost(createLead.replace('{0}', d365Id), request);\r\n },\r\n\r\n /**\r\n * Create roadside prepay offer\r\n * @param request request for creating RSA offer\r\n * @returns\r\n */\r\n createRsaPrepayOffer(request: ICreateRoadsidePrepaidOfferRequest) {\r\n return _http.HttpPost(createRsaPrepayOffer, request);\r\n },\r\n\r\n /**\r\n * get roadside prepay offer\r\n * @param decisionId decision Id\r\n * @returns\r\n */\r\n getRsaPrepayOffer(decisionId: string) {\r\n return _http.HttpGet(getRsaPrepayOffer.replace('{0}', decisionId));\r\n },\r\n\r\n /**\r\n * ack rsa prepay offer\r\n * @param prn prn\r\n * @param apttusQuoteId apttus quote id of selected product\r\n * @param apttusId apttus id\r\n * @returns\r\n */\r\n acknowledgePrepayOffer(prn: string, apttusQuoteId: string, apttusId: string) {\r\n return _http.HttpPost(\r\n acknowledgePrepayOffer.replace('{0}', prn).replace('{1}', apttusQuoteId).replace('{2}', apttusId)\r\n );\r\n },\r\n};\r\n","export const ENABLE_PROPOSITIONS = 'enablePropositions';\r\nexport const ENABLE_CROSSSELL = 'enableCrossSell';\r\nexport const ENABLE_RENEWAL_PROPOSITIONS = 'enableRenewalPropositions';\r\nexport const ENABLE_RENEWAL_CROSSSELLPROPOSITIONS = 'enableRenewalCrossSellPropositions';\r\nexport const ENABLE_ROADSIDE_PREPAY_OFFER = 'enableRoadsidePrepayOffer';\r\n","import { defineStore } from 'pinia';\r\nimport { ref, computed } from 'vue';\r\nimport {\r\n IDecisionIntelligenceOfferResponse,\r\n IGetOfferRequestResponse,\r\n IOfferQuoteData,\r\n} from '@/interfaces/decision-intelligence/decision-intelligence-response';\r\nimport {\r\n IAcknowledgeDecisionRequest,\r\n ICreateDecisionOffer,\r\n ICreateDecisionOfferResponse,\r\n IRenewalAcknowledgementModel,\r\n} from '@/interfaces/decision-intelligence/decision-intelligence-request';\r\nimport { DecisionIntelligenceService } from '@/services/store/decision-intelligence-service';\r\nimport { Item } from '@sitecore-jss/sitecore-jss/layout';\r\nimport { IDropdownItem, IQuote } from '@/interfaces';\r\nimport { IAdobeDataLayerLead, ICreateLeadRequestModel } from '@/interfaces/lead/lead-model';\r\nimport { DecisionContentTypes } from '@/enums/decision-intelligence.enum';\r\nimport { useFormStepDisclaimerStore } from '../form-step-disclaimer/form-step-disclaimer-store.state';\r\nimport { useFeatureTogglesStore } from '../feature-toggles/featureTogglesStore';\r\nimport {\r\n ENABLE_CROSSSELL,\r\n ENABLE_PROPOSITIONS,\r\n ENABLE_RENEWAL_CROSSSELLPROPOSITIONS,\r\n ENABLE_RENEWAL_PROPOSITIONS,\r\n ENABLE_ROADSIDE_PREPAY_OFFER,\r\n} from '@/constants/feature-toggles';\r\nimport {\r\n mapDecisionIntelligenceRenewalRequest,\r\n mapDecisionIntelligenceRequest,\r\n mapRSAPrepayRequest,\r\n} from '@/mappers/decision-intelligence-mapper';\r\nimport { useAnalyticsStore } from '../analytics/analytics.state';\r\nimport { IPaymentReferenceDetails } from '@/interfaces/make-a-payment/make-a-payment.interface';\r\nimport { FormEvents } from '@/enums/form-events.enum';\r\nimport {\r\n CommonConfigSettings,\r\n SettingCategory,\r\n useConfigSettingsStore,\r\n} from '../common-config-settings/config-settings.state';\r\nimport { useMakeAPaymentStore } from '../make-a-payment/make-a-payment.state';\r\nimport { sleep } from '@/utils/common-helper';\r\nimport { toNumber } from 'lodash-es';\r\nexport const useDecisionIntelligenceStore = defineStore('DecisionIntelligenceStore', () => {\r\n // ------------------------------------------------------------- //\r\n // Define State\r\n // ------------------------------------------------------------- //\r\n const decisionOfferResponse = ref();\r\n const decisionOfferCrossSellResponse = ref();\r\n const createDecisionOfferResponse = ref();\r\n const createDecisionOfferCrossSellResponse = ref();\r\n const createRSAPrepayOferResponse = ref();\r\n const rsaPrepayOffer = ref();\r\n const isDIOfferLoading = ref(false);\r\n const decisionOfferContent = ref>({});\r\n const formStepdisclaimerStore = useFormStepDisclaimerStore();\r\n const featureTogglesStore = useFeatureTogglesStore();\r\n const analyticsStore = useAnalyticsStore();\r\n const commonConfigSettingsStore = useConfigSettingsStore();\r\n const makeAPaymentStore = useMakeAPaymentStore();\r\n // ------------------------------------------------------------- //\r\n // Computed\r\n // ------------------------------------------------------------- //\r\n const contentFields = computed(() =>\r\n (decisionOfferContent?.value?.fields as any)?.find(\r\n (a: any) => a.name == DecisionContentTypes.DecisionIntelligenceCrossSellOffers\r\n )\r\n );\r\n\r\n const contactTimes = computed(() =>\r\n (decisionOfferContent?.value?.fields as any)?.find((a: any) => a.name == DecisionContentTypes.ContactUsTimes)\r\n );\r\n\r\n const emailTimes = computed(() =>\r\n (decisionOfferContent?.value?.fields as any)?.find((a: any) => a.name == DecisionContentTypes.EmailTimes)\r\n );\r\n\r\n // ------------------------------------------------------------- //\r\n // Methods\r\n // ------------------------------------------------------------- //\r\n const isDIFeatureToggleEnabled = async (isCrossSell: boolean, isRenewal: boolean): Promise => {\r\n let isDIFeatureEnabled = false;\r\n if (isRenewal) {\r\n isDIFeatureEnabled = isCrossSell\r\n ? await featureTogglesStore.isFeatureToggleEnabled(ENABLE_RENEWAL_PROPOSITIONS)\r\n : await featureTogglesStore.isFeatureToggleEnabled(ENABLE_RENEWAL_CROSSSELLPROPOSITIONS);\r\n } else {\r\n isDIFeatureEnabled = isCrossSell\r\n ? await featureTogglesStore.isFeatureToggleEnabled(ENABLE_CROSSSELL)\r\n : await featureTogglesStore.isFeatureToggleEnabled(ENABLE_PROPOSITIONS);\r\n }\r\n return isDIFeatureEnabled;\r\n };\r\n /**\r\n * create decision offfer request\r\n * @param request\r\n */\r\n const callDecisionIntelligenceOfferRequest = async (request: ICreateDecisionOffer, isCrossSell: boolean) => {\r\n try {\r\n const response = await DecisionIntelligenceService.createDecisionIntelligenceOffer(request);\r\n if (isCrossSell) {\r\n createDecisionOfferCrossSellResponse.value = response;\r\n } else {\r\n createDecisionOfferResponse.value = response;\r\n }\r\n } catch (error) {\r\n console.error('Error getting offer', error);\r\n }\r\n };\r\n\r\n /**\r\n * Get deicision by decision id\r\n * @param decisionId\r\n * @returns\r\n */\r\n const callGetDecisionOffer = async (\r\n decisionId: string,\r\n isQuote: boolean,\r\n isCrossSell: boolean,\r\n isRenewal?: boolean\r\n ) => {\r\n try {\r\n const response = await DecisionIntelligenceService.getDecisionIntelligenceOffer(decisionId);\r\n if (isCrossSell) {\r\n decisionOfferCrossSellResponse.value = response;\r\n } else {\r\n decisionOfferResponse.value = response;\r\n }\r\n analyticsStore.pushDecisionIntelligenceAnalytics({ event: FormEvents.RESPONSE, data: response });\r\n formStepdisclaimerStore.setDIDisclaimers(response, isQuote, isCrossSell, isRenewal);\r\n return response;\r\n } catch (error) {\r\n console.error('Error getting offer', error);\r\n }\r\n };\r\n /**\r\n * Get decision offer request through form step\r\n */\r\n const getDecisionOffer = async (isCrossSell: boolean, isQuote: boolean, isRenewal?: boolean) => {\r\n try {\r\n if (await isDIFeatureToggleEnabled(isCrossSell, isRenewal ?? false)) {\r\n await callGetDecisionOffer(\r\n isCrossSell\r\n ? (createDecisionOfferCrossSellResponse.value?.id ?? '')\r\n : (createDecisionOfferResponse.value?.id ?? ''),\r\n isQuote,\r\n isCrossSell,\r\n isRenewal\r\n );\r\n }\r\n } catch (error) {\r\n console.error('Error creating offer request', error);\r\n }\r\n };\r\n\r\n /**\r\n * Create decision offer request for renewal\r\n * @param paymentReferenceDetails payment reference details\r\n * @param isQuote\r\n * @param isCrossSell\r\n * @param stepTitle\r\n */\r\n const createDecisionOfferRenewal = async (\r\n paymentReferenceDetails: IPaymentReferenceDetails,\r\n isCrossSell: boolean,\r\n stepTitle?: string\r\n ) => {\r\n try {\r\n const isFeatureToggleEnabled = await isDIFeatureToggleEnabled(isCrossSell, true);\r\n if (isFeatureToggleEnabled) {\r\n const decisionRequest = mapDecisionIntelligenceRenewalRequest(paymentReferenceDetails, isCrossSell, stepTitle);\r\n analyticsStore.pushDecisionIntelligenceAnalytics({ event: FormEvents.REQUEST, data: decisionRequest });\r\n await callDecisionIntelligenceOfferRequest(decisionRequest, isCrossSell);\r\n }\r\n } catch (error) {\r\n console.error('Error creating offer request', error);\r\n }\r\n };\r\n\r\n /**\r\n * Create decision offer request\r\n * @param quote quote object\r\n * @param isQuote\r\n * @param isCrossSell\r\n * @param stepTitle\r\n */\r\n const createDecisionOffer = async (\r\n quote: Partial,\r\n isQuote: boolean,\r\n isCrossSell: boolean,\r\n stepTitle?: string\r\n ) => {\r\n try {\r\n const isFeatureToggleEnabled = await isDIFeatureToggleEnabled(isCrossSell, false);\r\n if (isFeatureToggleEnabled) {\r\n const decisionRequest = mapDecisionIntelligenceRequest(quote, isCrossSell, isQuote, stepTitle);\r\n analyticsStore.pushDecisionIntelligenceAnalytics({ event: FormEvents.REQUEST, data: decisionRequest });\r\n await callDecisionIntelligenceOfferRequest(decisionRequest, isCrossSell);\r\n }\r\n } catch (error) {\r\n console.error('Error creating offer request', error);\r\n }\r\n };\r\n\r\n /**\r\n * Get decision intelligence content\r\n * @param content\r\n * @returns\r\n */\r\n const setDecisionIntelligenceContent = (content: Item) => {\r\n if (decisionOfferContent.value.id && decisionOfferContent.value.id != '') {\r\n return;\r\n }\r\n decisionOfferContent.value = content;\r\n };\r\n\r\n /**\r\n * Acknowledge decision offer id\r\n * @param decisionId decision Id\r\n * @param request\r\n */\r\n const acknowlegeDecisionOffer = async (decisionId: string, request: IAcknowledgeDecisionRequest) => {\r\n if (decisionId != '') {\r\n await DecisionIntelligenceService.acknowlegeDecisionOffer(decisionId, request);\r\n }\r\n };\r\n\r\n const acknowledgeRenewalDecisionOffer = async (request: IRenewalAcknowledgementModel) => {\r\n await DecisionIntelligenceService.acknowledgeRenewalDecisionOffer(request);\r\n };\r\n\r\n /**\r\n * Create lead in D365\r\n * @param d365Id\r\n * @param request\r\n */\r\n const createLead = async (d365Id: string, request: ICreateLeadRequestModel) => {\r\n const dataLayer = request as IAdobeDataLayerLead;\r\n try {\r\n const response = await DecisionIntelligenceService.createLead(d365Id, request);\r\n dataLayer.leadId = response.leadId;\r\n dataLayer.request = 'LeadCreated';\r\n analyticsStore.pushDecisionIntelligenceAnalytics({ event: FormEvents.FORM_SUBMIT, data: dataLayer });\r\n return response;\r\n } catch (error) {\r\n dataLayer.request = 'LeadFailed';\r\n analyticsStore.pushDecisionIntelligenceAnalytics({ event: FormEvents.FORM_SUBMIT, data: dataLayer });\r\n throw error;\r\n }\r\n };\r\n\r\n /**\r\n * Get options for email\r\n * @returns\r\n */\r\n const getEmailOptionsDropDown = (): IDropdownItem[] => {\r\n const emailOptions = [] as IDropdownItem[];\r\n if (emailTimes.value.fields?.length) {\r\n emailTimes.value.fields.forEach((element: any) => {\r\n emailOptions.push({\r\n label: element.listLabel.value,\r\n value: element.listValue.value,\r\n });\r\n });\r\n }\r\n return emailOptions;\r\n };\r\n /**\r\n * Get dropdown values for contact time\r\n * @returns\r\n */\r\n const getContactOptionsDropDown = (): IDropdownItem[] => {\r\n const emailOptions = [] as IDropdownItem[];\r\n if (contactTimes.value.fields?.length) {\r\n contactTimes.value.fields.forEach((element: any) => {\r\n emailOptions.push({\r\n label: element.listLabel.value,\r\n value: element.listValue.value,\r\n });\r\n });\r\n }\r\n return emailOptions;\r\n };\r\n\r\n const createRSAPrepayOffer = async (paymentReferenceDetails: IPaymentReferenceDetails) => {\r\n try {\r\n const rsaPrepayOfferEnabled = await featureTogglesStore.isFeatureToggleEnabled(ENABLE_ROADSIDE_PREPAY_OFFER);\r\n if (rsaPrepayOfferEnabled) {\r\n const request = mapRSAPrepayRequest(paymentReferenceDetails);\r\n const response = await DecisionIntelligenceService.createRsaPrepayOffer(request);\r\n createRSAPrepayOferResponse.value = response;\r\n }\r\n } catch (e) {\r\n console.error('Error creating prepay offer', e);\r\n }\r\n };\r\n\r\n const getRSAPrepayOffer = async () => {\r\n try {\r\n const rsaPrepayOfferEnabled = await featureTogglesStore.isFeatureToggleEnabled(ENABLE_ROADSIDE_PREPAY_OFFER);\r\n if (rsaPrepayOfferEnabled) {\r\n rsaPrepayOffer.value = await DecisionIntelligenceService.getRsaPrepayOffer(\r\n createRSAPrepayOferResponse.value?.id ?? ''\r\n );\r\n }\r\n } catch (error) {\r\n console.error('Error getting prepay offer', error);\r\n }\r\n };\r\n\r\n const processRenewalDecisionOfferRequest = async (stepTitle: string) => {\r\n const { paymentReferenceDetails } = makeAPaymentStore;\r\n const { isInurance, coverageCode, notEligibleForUpgrade, isNotARoadsideProduct } = paymentReferenceDetails;\r\n\r\n if (isInurance) {\r\n const isFeatureToggleEnabled = await isDIFeatureToggleEnabled(false, true);\r\n if (!isFeatureToggleEnabled) return;\r\n\r\n if (coverageCode === 'PET') return; // DI offers not applicable to PET insurance\r\n isDIOfferLoading.value = true;\r\n const delayTime = await commonConfigSettingsStore.getSetting(\r\n CommonConfigSettings.WaitForPropositionsOfferInSeconds,\r\n SettingCategory.CommonSettings\r\n );\r\n\r\n await createDecisionOfferRenewal(paymentReferenceDetails, false, stepTitle);\r\n await sleep(toNumber(delayTime) * 1000);\r\n await getDecisionOffer(false, false, true);\r\n\r\n await acknowledgeRenewalDecisionOffer({\r\n paymentReferenceDetails,\r\n decisionOfferResponse: decisionOfferResponse.value,\r\n paymentAttempted: false,\r\n paymentSucceeded: false,\r\n });\r\n\r\n isDIOfferLoading.value = false;\r\n } else if (!notEligibleForUpgrade && !isNotARoadsideProduct) {\r\n const rsaPrepayOfferEnabled = await featureTogglesStore.isFeatureToggleEnabled(ENABLE_ROADSIDE_PREPAY_OFFER);\r\n if (!rsaPrepayOfferEnabled) return;\r\n isDIOfferLoading.value = true;\r\n const delayTime = await commonConfigSettingsStore.getSetting(\r\n CommonConfigSettings.WaitForRoadsidePrepayOfferInSeconds,\r\n SettingCategory.CommonSettings\r\n );\r\n\r\n await createRSAPrepayOffer(paymentReferenceDetails);\r\n await sleep(toNumber(delayTime) * 1000);\r\n await getRSAPrepayOffer();\r\n isDIOfferLoading.value = false;\r\n }\r\n };\r\n\r\n const processRenewalDecisionCrossSellOfferRequest = async (stepTitle?: string) => {\r\n const delayTime = await commonConfigSettingsStore.getSetting(\r\n CommonConfigSettings.WaitForPropositionsOfferInSeconds,\r\n SettingCategory.CommonSettings\r\n );\r\n const isFeatureToggleEnabled = await isDIFeatureToggleEnabled(true, true);\r\n if (!isFeatureToggleEnabled) return;\r\n if (makeAPaymentStore.paymentReferenceDetails.isInurance) {\r\n await createDecisionOfferRenewal(makeAPaymentStore.paymentReferenceDetails, true, stepTitle);\r\n\r\n await sleep(toNumber(delayTime) * 1000);\r\n await getDecisionOffer(true, false, true);\r\n await acknowledgeRenewalDecisionOffer({\r\n paymentReferenceDetails: makeAPaymentStore.paymentReferenceDetails,\r\n decisionOfferResponse: decisionOfferResponse.value,\r\n paymentAttempted: false,\r\n paymentSucceeded: false,\r\n });\r\n }\r\n };\r\n\r\n const getPrepayOfferProduct = (productCode: string): IOfferQuoteData => {\r\n if (rsaPrepayOffer.value?.offers?.length) {\r\n const currentOffer = rsaPrepayOffer.value.offers.filter((x) => x.data.quote.productCode == productCode)[0];\r\n if (currentOffer) {\r\n if (currentOffer.data.quote.discountAmount > 0) {\r\n return currentOffer.data.quote;\r\n }\r\n }\r\n }\r\n return {} as IOfferQuoteData;\r\n };\r\n const getRsaProductLabel = (): string => {\r\n const currentOffer = rsaPrepayOffer.value?.offers.filter((x) => x.data?.labels?.captionMessage);\r\n if (currentOffer && currentOffer.length) {\r\n return currentOffer[0].data.labels.captionMessage;\r\n }\r\n return '';\r\n };\r\n\r\n const acknowledgePrepayOffer = async () => {\r\n if (\r\n rsaPrepayOffer.value?.offers?.length &&\r\n !makeAPaymentStore.paymentReferenceDetails.notEligibleForUpgrade &&\r\n !makeAPaymentStore.paymentReferenceDetails.isInurance\r\n ) {\r\n const isCurrentProduct =\r\n makeAPaymentStore.paymentReferenceDetails?.currentProduct?.apttusQuoteId ==\r\n makeAPaymentStore.selectedQuotedOption?.apttusQuoteId;\r\n if (!isCurrentProduct) {\r\n //only send prepay offer ack if it is upgrade\r\n DecisionIntelligenceService.acknowledgePrepayOffer(\r\n makeAPaymentStore.paymentReferenceDetails.prn,\r\n makeAPaymentStore.selectedQuotedOption?.apttusQuoteId ?? '',\r\n makeAPaymentStore.paymentReferenceDetails.apttusId\r\n );\r\n }\r\n }\r\n };\r\n\r\n const $reset = () => {\r\n decisionOfferCrossSellResponse.value = undefined;\r\n decisionOfferResponse.value = undefined;\r\n createDecisionOfferResponse.value = undefined;\r\n createDecisionOfferCrossSellResponse.value = undefined;\r\n };\r\n return {\r\n decisionOfferResponse,\r\n createDecisionOfferResponse,\r\n decisionOfferContent,\r\n decisionOfferCrossSellResponse,\r\n rsaPrepayOffer,\r\n createRSAPrepayOferResponse,\r\n createDecisionOfferCrossSellResponse,\r\n createDecisionOffer,\r\n setDecisionIntelligenceContent,\r\n contentFields,\r\n acknowlegeDecisionOffer,\r\n contactTimes,\r\n emailTimes,\r\n getEmailOptionsDropDown,\r\n getContactOptionsDropDown,\r\n createLead,\r\n getDecisionOffer,\r\n createDecisionOfferRenewal,\r\n acknowledgeRenewalDecisionOffer,\r\n createRSAPrepayOffer,\r\n $reset,\r\n getRSAPrepayOffer,\r\n isDIOfferLoading,\r\n processRenewalDecisionOfferRequest,\r\n processRenewalDecisionCrossSellOfferRequest,\r\n getPrepayOfferProduct,\r\n acknowledgePrepayOffer,\r\n getRsaProductLabel,\r\n };\r\n});\r\n","import { getFeatureToggles } from '@/constants/forms-api.const';\r\nimport { RequestServices as _http } from '../common/request.services';\r\nimport { INameValue } from '@/interfaces/entities/name-value.interface';\r\n\r\nexport const FeatureTogglesServices = {\r\n /**\r\n * Get Feature Toggles from sitecore 10\r\n * @returns\r\n */\r\n getFeatureToggles() {\r\n return _http.HttpGet(`${getFeatureToggles}`);\r\n },\r\n} as const;\r\n","import { ref } from 'vue';\r\nimport { defineStore } from 'pinia';\r\nimport { FeatureTogglesServices } from '@/services/store/feature-toggles.service';\r\nimport { IFeatureToggle } from '@/interfaces/entities/feature-toggle';\r\n\r\nenum RefDataTypes {\r\n FEATURE_TOGGLES = 'FeatureToggles',\r\n}\r\n\r\nexport const useFeatureTogglesStore = defineStore('FeatureToggles', () => {\r\n const refData = ref>>({});\r\n\r\n async function getFeatureToggles(): Promise {\r\n if (refData.value?.FeatureToggles?.length) return refData.value.FeatureToggles;\r\n try {\r\n const res = await FeatureTogglesServices.getFeatureToggles();\r\n refData.value.FeatureToggles = res || [];\r\n } catch (error) {\r\n console.warn('Unable to fetch feature toggles: ', error);\r\n }\r\n return refData.value.FeatureToggles || [];\r\n }\r\n async function isFeatureToggleEnabled(featureToggleName: string): Promise {\r\n if (!refData.value?.FeatureToggles?.length) {\r\n await getFeatureToggles();\r\n }\r\n const currentToggle = refData?.value?.FeatureToggles?.filter(\r\n (x) => x.name.toLocaleLowerCase() == featureToggleName.toLowerCase()\r\n );\r\n if (currentToggle?.length) {\r\n return currentToggle[0].enabled ?? false;\r\n }\r\n return false;\r\n }\r\n\r\n return {\r\n getFeatureToggles,\r\n isFeatureToggleEnabled,\r\n };\r\n});\r\n","import { IDisclaimer } from '@/interfaces';\r\nimport {\r\n IBenefit,\r\n IDecisionIntelligenceOfferResponse,\r\n IProposition,\r\n IStep,\r\n} from '@/interfaces/decision-intelligence/decision-intelligence-response';\r\nimport { defineStore } from 'pinia';\r\nimport { ref } from 'vue';\r\n\r\nexport const useFormStepDisclaimerStore = defineStore('FormStepDisclaimerStore', () => {\r\n // ------------------------------------------------------------- //\r\n // Define State\r\n // ------------------------------------------------------------- //\r\n const additionalDisclaimer = ref([]);\r\n\r\n // ------------------------------------------------------------- //\r\n // Methods\r\n // ------------------------------------------------------------- //\r\n const appendDisclaimer = (\r\n disclaimer: string,\r\n termsConditionsText: string,\r\n currentDisclaimer: IDisclaimer\r\n ): IDisclaimer => {\r\n if (disclaimer) {\r\n currentDisclaimer.disclaimers?.push(disclaimer);\r\n }\r\n if (termsConditionsText) {\r\n currentDisclaimer.disclaimers?.push(termsConditionsText);\r\n }\r\n return currentDisclaimer;\r\n };\r\n const setDIDisclaimers = (\r\n request: IDecisionIntelligenceOfferResponse,\r\n isQuote: boolean,\r\n isCrossSell?: boolean,\r\n isRenewal?: boolean\r\n ) => {\r\n const disclaimers: IDisclaimer[] = [];\r\n\r\n if (request?.propositions?.length) {\r\n request.propositions.forEach((currentProposition: IProposition) => {\r\n if (currentProposition.displaySteps?.length) {\r\n currentProposition.displaySteps\r\n .filter(\r\n (x) =>\r\n x.journey ==\r\n (isRenewal ? (isCrossSell ? 'Renewal' : 'Make a payment') : isQuote ? 'Quote' : 'Purchase') &&\r\n x.isCrossSell == isCrossSell\r\n )\r\n .forEach((currentStep: IStep) => {\r\n let currentDisclaimer = { stepTitle: currentStep.stepName, disclaimers: [] } as IDisclaimer;\r\n currentDisclaimer = appendDisclaimer(\r\n currentStep.disclaimerText,\r\n currentStep.termsConditionsText,\r\n currentDisclaimer\r\n );\r\n currentStep.crossSellOfferContent?.benefitList?.forEach((benefitList: IBenefit) => {\r\n currentDisclaimer = appendDisclaimer(\r\n benefitList?.benefitDisclaimer,\r\n benefitList?.benefitTermsConditionsText,\r\n currentDisclaimer\r\n );\r\n });\r\n currentDisclaimer = appendDisclaimer(\r\n currentStep?.crossSellOfferContent?.incentiveDisclaimerText,\r\n currentStep?.crossSellOfferContent?.incentiveTermsConditionsText,\r\n currentDisclaimer\r\n );\r\n\r\n disclaimers.push(currentDisclaimer);\r\n });\r\n }\r\n });\r\n }\r\n additionalDisclaimer.value = additionalDisclaimer.value.concat(disclaimers);\r\n };\r\n const getDisclaimersForStep = (stepName?: string): string[] => {\r\n let disclaimers = [] as string[];\r\n additionalDisclaimer.value\r\n ?.filter((x) => x?.stepTitle.toLowerCase() == stepName?.toLowerCase())\r\n .forEach((x) => {\r\n if (x.disclaimers?.length) {\r\n disclaimers = disclaimers.concat(x.disclaimers);\r\n }\r\n });\r\n return disclaimers;\r\n };\r\n\r\n const $reset = () => {\r\n additionalDisclaimer.value = [];\r\n };\r\n\r\n return {\r\n setDIDisclaimers,\r\n additionalDisclaimer,\r\n getDisclaimersForStep,\r\n $reset,\r\n };\r\n});\r\n","import { InsuranceProduct } from '@/interfaces/entities/insurance-product.interface';\r\nimport { defineStore } from 'pinia';\r\n\r\nexport const useInsuranceProductStore = defineStore('InsuranceProduct', {\r\n state: (): {\r\n _insuranceProduct?: InsuranceProduct;\r\n } => ({}),\r\n actions: {\r\n setInsuranceProduct(product: any) {\r\n this._insuranceProduct = product;\r\n },\r\n },\r\n getters: {\r\n insuranceProduct: (state) => state._insuranceProduct,\r\n isPet: (state) => state._insuranceProduct?.coverages[0]?.isPet,\r\n isHome: (state) => state._insuranceProduct?.coverages[0]?.isHome,\r\n },\r\n});\r\n","export const NO_COMPONENT_DIR_ERROR =\r\n 'No componentDir provided. Please check you have supplied a componentName in your Sitecore form datasource.';\r\n\r\nexport const NO_STEPS_DATA_ERROR = 'No steps data. Please add some steps in Sitecore.';\r\n","import { cloneDeep } from 'lodash-es';\r\nimport { ref, computed, markRaw, defineAsyncComponent, nextTick } from 'vue';\r\nimport { getScreenSize, scrollToElement, scrollToElementRaw } from '@/utils/dom-helpers';\r\nimport { defineStore } from 'pinia';\r\nimport { hideAllPoppersAndPaddings } from '@/plugins/tooltip/renderTooltip';\r\nimport { convertArrayToObject } from '@/utils/data-transforms';\r\nimport { NO_COMPONENT_DIR_ERROR, NO_STEPS_DATA_ERROR } from '@/constants/errors';\r\nimport { OrdinalNumbers } from '@/constants/ordinal-numbers.const';\r\nimport type {\r\n IFormStep,\r\n FormDropdownOption,\r\n FormDropdownItem,\r\n ISitecoreFormStep,\r\n FormProps,\r\n ISitecoreFormGenericInput,\r\n} from '@/interfaces';\r\nimport { addOrdinalSuffix } from '@/utils/text-transforms';\r\nimport { useJeopardyStore } from '@/store';\r\n\r\nexport const useFormStore = defineStore('Form', () => {\r\n const jpStore = useJeopardyStore();\r\n\r\n // ------------------------------------------------------------- //\r\n // Define State\r\n // ------------------------------------------------------------- //\r\n const steps = ref([]);\r\n const prelimSteps = ref([]);\r\n const formComponentDir = ref('');\r\n const showStepper = ref(true);\r\n const folderPath = ref('');\r\n const inScopeSteps = ref([]);\r\n const pageTitle = ref('');\r\n const formName = ref('');\r\n const removeStepCallback = ref<(stepIndex: number, step: IFormStep) => Promise>();\r\n const iqFloatingBoxShown = ref(true);\r\n const disableAllSteps = ref(false);\r\n\r\n // ------------------------------------------------------------- //\r\n // Define Getters\r\n // ------------------------------------------------------------- //\r\n const currentPrelimStepIndex = computed(() => prelimSteps.value.findIndex((step) => step.isActive));\r\n const currentPrelimStep = computed(() => prelimSteps.value.find((step) => step.isActive));\r\n const allPrelimStepsComplete = computed(() => prelimSteps.value.every((step) => step.isComplete));\r\n\r\n const currentStepIndex = computed(() => inScopeSteps.value.findIndex((step) => step.isActive));\r\n const currentStep = computed(() => inScopeSteps.value.find((step) => step.isActive));\r\n const isStepperVisible = computed(() => showStepper);\r\n\r\n const prevActiveStepIndex = ref(0);\r\n const prevActiveStep = ref();\r\n\r\n // ------------------------------------------------------------- //\r\n // Define Actions\r\n // ------------------------------------------------------------- //\r\n\r\n /**\r\n * Toggle the visibiltiy of stepper\r\n *\r\n * @param show\r\n */\r\n function makeStepperVisible(show: boolean = true) {\r\n showStepper.value = show;\r\n }\r\n\r\n /**\r\n * Toggle the loading state for the current step.\r\n *\r\n * @param show\r\n */\r\n function showLoadingForCurrentStep(show: boolean = true) {\r\n if (!allPrelimStepsComplete.value && currentPrelimStepIndex.value > -1) {\r\n prelimSteps.value[currentPrelimStepIndex.value].isLoading = show;\r\n } else if (currentStepIndex.value > -1) {\r\n inScopeSteps.value[currentStepIndex.value].isLoading = show;\r\n }\r\n }\r\n\r\n /**\r\n * Initialise the form steps from the props data injected in via\r\n * the FormBuilder.vue component.\r\n *\r\n * @param props\r\n */\r\n function initialiseForm(props: FormProps) {\r\n const allSteps: ISitecoreFormStep[] = (props.fields.data as any).datasource.steps;\r\n folderPath.value = (props.fields.data as any).datasource?.folderPath?.value ?? '';\r\n\r\n if (!props.componentDir) {\r\n console.error(NO_COMPONENT_DIR_ERROR);\r\n return;\r\n }\r\n\r\n setFormComponentDir(props.componentDir);\r\n\r\n if (!allSteps?.length) {\r\n console.error(NO_STEPS_DATA_ERROR);\r\n return;\r\n }\r\n\r\n initialiseSteps(allSteps);\r\n }\r\n\r\n /**\r\n * Initialise all steps on first page load.\r\n *\r\n */\r\n function initialiseSteps(sitecoreSteps: ISitecoreFormStep[]) {\r\n if (sitecoreSteps.length) {\r\n // Prelim steps are initial steps (eg) disclaimers, terms and conditions\r\n const prelimSteps = sitecoreSteps\r\n .filter((step) => step.isPrelimStep.value == '1')\r\n .map(convertSitecoreStepToVueStep);\r\n // Steps have a step tracker\r\n const primarySteps = sitecoreSteps\r\n .filter((step) => step.isPrelimStep.value != '1')\r\n .map(convertSitecoreStepToVueStep);\r\n\r\n setPrelimSteps(prelimSteps);\r\n setSteps(primarySteps);\r\n }\r\n }\r\n\r\n /**\r\n * Set primary steps data\r\n *\r\n * (ie) steps with sidebar tracker (not prelim)\r\n *\r\n * @param newStepsData\r\n */\r\n function setSteps(newStepsData: IFormStep[]) {\r\n steps.value = newStepsData;\r\n inScopeSteps.value = newStepsData.filter((step) => step.isInStepper);\r\n indexInScopeSteps();\r\n }\r\n\r\n /**\r\n * Update step number & index of all in scope steps\r\n */\r\n function indexInScopeSteps() {\r\n inScopeSteps.value.forEach((step, index) => {\r\n step.stepIndex = index;\r\n const inputKeys = Object.keys(step.formInputs || {});\r\n inputKeys.forEach((key) => {\r\n const input: ISitecoreFormGenericInput = step.formInputs![key];\r\n input.elementId = `${step.id}_${index}_${key}`;\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Set prelim steps data.\r\n *\r\n * @param newStepsData\r\n */\r\n function setPrelimSteps(newStepsData: IFormStep[]) {\r\n prelimSteps.value = newStepsData;\r\n }\r\n\r\n /**\r\n * Update input attributes\r\n *\r\n * @param options\r\n * @param currentStepInScope - Optional parameter. Defaults to the currently active step.\r\n */\r\n function updateInput(\r\n options: { inputId: string; updates: Partial },\r\n currentStepInScope = inScopeSteps.value.find((step) => step.isActive)\r\n ) {\r\n if (currentStepInScope?.formInputs![options.inputId]) {\r\n currentStepInScope.formInputs[options.inputId] = {\r\n ...currentStepInScope.formInputs[options.inputId],\r\n ...options.updates,\r\n };\r\n }\r\n }\r\n\r\n /**\r\n * Add step to scope\r\n *\r\n * @param stepId\r\n * @param afterIndex\r\n */\r\n function addStepToScope(\r\n stepId: string,\r\n options: {\r\n afterIndex: number;\r\n removable: boolean;\r\n withOrdinalNumber?: boolean;\r\n isVisible?: boolean;\r\n uuid?: string;\r\n } = { afterIndex: currentStepIndex.value + 1, removable: false, withOrdinalNumber: false, isVisible: false }\r\n ) {\r\n const step = cloneDeep(steps.value.find((s) => s.id?.toLowerCase() == stepId.toLowerCase()));\r\n if (step) {\r\n step.withOrdinalNumber = options.withOrdinalNumber;\r\n const numberOfSameSteps = inScopeSteps.value.filter((s) => s.id == step.id).length;\r\n step.stepTitle = options.withOrdinalNumber ? addOrdinalSuffix(numberOfSameSteps, step.stepTitle) : step.stepTitle;\r\n inScopeSteps.value.splice(options.afterIndex, 0, step);\r\n step.isVisible = options.isVisible;\r\n step.uuid = options.uuid;\r\n }\r\n indexInScopeSteps();\r\n }\r\n\r\n /**\r\n * Remove Step to Scope\r\n * @param index\r\n */\r\n async function removeStep(index: number) {\r\n try {\r\n if (removeStepCallback.value) {\r\n await removeStepCallback.value(index, inScopeSteps.value[index]);\r\n }\r\n\r\n inScopeSteps.value[index].isActive && goPrevStep();\r\n inScopeSteps.value.splice(index, 1);\r\n // reorder ordinal numbers\r\n const otherSteps = inScopeSteps.value.filter((s) => s.id == inScopeSteps.value[index].id);\r\n otherSteps.forEach((step, index) => {\r\n if (step?.withOrdinalNumber) {\r\n const titleArray = step.stepTitle?.split(' ');\r\n titleArray?.splice(0, 1, OrdinalNumbers[index]);\r\n step.stepTitle = titleArray?.join(' ');\r\n }\r\n });\r\n\r\n indexInScopeSteps();\r\n } catch {\r\n // do nothing\r\n }\r\n }\r\n\r\n /**\r\n * Move step position in the steps to a different position\r\n * @param fromStepId Step to move\r\n * @param toStepId Destination position\r\n */\r\n async function moveStep(fromStepId: string, toStepId: string) {\r\n const steps = inScopeSteps.value;\r\n const fromStepIndex = steps.findIndex((step) => step.id === fromStepId);\r\n const toStepIndex = steps.findIndex((step) => step.id === toStepId);\r\n const fromStep = steps.find((step) => step.id === fromStepId);\r\n const toStep = steps.find((step) => step.id === toStepId);\r\n\r\n if (fromStepIndex > -1 && toStepIndex > -1 && fromStep && toStep) {\r\n const fromStepNumber = fromStep.stepNumber;\r\n const toStepNumber = toStep.stepNumber;\r\n toStep.stepNumber = fromStepNumber;\r\n fromStep.stepNumber = toStepNumber;\r\n steps.splice(toStepIndex, 0, steps.splice(fromStepIndex, 1)[0]);\r\n indexInScopeSteps();\r\n await nextTick();\r\n }\r\n }\r\n\r\n /**\r\n * Called when changing the step - stores the current step in prevStep/prevStepIndex\r\n */\r\n function setPrevActiveStep() {\r\n prevActiveStepIndex.value = currentStepIndex.value;\r\n prevActiveStep.value = currentStep.value;\r\n }\r\n\r\n /**\r\n * Completes all prelim steps and fast forwards the form up to the target step\r\n *\r\n * @param stepId\r\n */\r\n function fastForwardToStepId(stepId: string) {\r\n const stepIndex = inScopeSteps.value.findIndex((step) => step.id === stepId);\r\n if (stepIndex !== -1) {\r\n // Complete all prelim steps\r\n prelimSteps.value.forEach((step) => {\r\n step.isActive = false;\r\n step.isComplete = true;\r\n });\r\n\r\n // Complete and make visible all steps up to the target step\r\n inScopeSteps.value.forEach((step, index) => {\r\n if (index < stepIndex) {\r\n step.isComplete = true;\r\n step.isMasked = true;\r\n step.isVisible = true;\r\n }\r\n });\r\n\r\n goToStep(stepIndex);\r\n\r\n setTimeout(() => {\r\n scrollToStep(stepIndex);\r\n }, 1000);\r\n }\r\n }\r\n\r\n /**\r\n * Go to specified step.\r\n *\r\n * @param stepIndex\r\n */\r\n function goToStep(\r\n stepIndex: number,\r\n options: {\r\n hideCurrentStep?: boolean;\r\n } = {}\r\n ) {\r\n hideAllPoppersAndPaddings();\r\n\r\n setPrevActiveStep();\r\n jpStore.hideJeopardyPanel();\r\n\r\n setPrevActiveStep();\r\n\r\n if (options?.hideCurrentStep) {\r\n hideCurrentStep();\r\n }\r\n\r\n inScopeSteps.value.forEach((step, index) => {\r\n step.isActive = false;\r\n step.isMasked = true;\r\n if (index < stepIndex) {\r\n // set previous steps to complete\r\n step.isComplete = true;\r\n } else if (index >= stepIndex) {\r\n // set future steps to incomplete\r\n step.isComplete = false;\r\n }\r\n });\r\n\r\n const stepToGoto = inScopeSteps.value[stepIndex];\r\n\r\n stepToGoto.isMasked = false;\r\n stepToGoto.isVisible = true;\r\n stepToGoto.isActive = true;\r\n makeStepperVisible(!stepToGoto.hideStepper);\r\n\r\n handleScrollForSmallScreen(`#${stepToGoto.id}${stepIndex}`, 100, -100);\r\n }\r\n\r\n function scrollToStep(stepIndex: number, timeout?: number) {\r\n const stepToGoto = inScopeSteps.value[stepIndex];\r\n scrollToElement(`#${stepToGoto.id}${stepIndex}`, timeout ?? 100, -100);\r\n }\r\n\r\n function scrollToErrorMessage() {\r\n setTimeout(() => {\r\n const errorEl = document.querySelector(`.formkit-message.text-racq-error-red`);\r\n if (errorEl) {\r\n scrollToElementRaw(errorEl?.parentElement?.parentElement, 100, -100);\r\n } else {\r\n const selector = '[data-information-box-type=\"error\"]';\r\n const infoBox = document.querySelector(selector);\r\n if (infoBox) {\r\n scrollToElement(selector, 100, -100);\r\n }\r\n }\r\n }, 200);\r\n }\r\n\r\n function handleScrollForSmallScreen(el = 'body', timeout = 100, verticalOffset = 0) {\r\n const isSmallScreen = getScreenSize().xs.value;\r\n\r\n if (isSmallScreen) {\r\n window.scrollTo({\r\n behavior: 'smooth',\r\n top: 0,\r\n });\r\n } else {\r\n scrollToElement(el, timeout, verticalOffset);\r\n }\r\n }\r\n\r\n /**\r\n * Go to specified prelim step\r\n *\r\n * @param stepIndex\r\n */\r\n function gotoPrelimStep(stepIndex: number, options?: { completeCurrentStep: boolean }) {\r\n hideAllPoppersAndPaddings();\r\n\r\n setPrevActiveStep();\r\n jpStore.hideJeopardyPanel();\r\n\r\n setPrevActiveStep();\r\n\r\n const currentStepIndex = currentPrelimStepIndex.value;\r\n\r\n prelimSteps.value = prelimSteps.value.map((step) => ({\r\n ...step,\r\n isActive: false,\r\n }));\r\n\r\n if (options?.completeCurrentStep && prelimSteps.value[currentStepIndex]) {\r\n prelimSteps.value[currentStepIndex].isComplete = true;\r\n }\r\n\r\n const stepToGoto = prelimSteps.value[stepIndex];\r\n\r\n if (allPrelimStepsComplete.value || !stepToGoto) {\r\n scrollToElement('body', 100);\r\n return;\r\n }\r\n\r\n stepToGoto.isActive = true;\r\n }\r\n\r\n /**\r\n * Move to next step\r\n *\r\n */\r\n function goNextStep(options?: { hideCurrentStep?: boolean }) {\r\n goToStep((currentStepIndex.value || 0) + 1, options);\r\n }\r\n\r\n /**\r\n * Move to previous step\r\n */\r\n function goPrevStep(options?: { hideCurrentStep?: boolean }) {\r\n const prevStepIndex = currentStepIndex.value || 0;\r\n\r\n //if prevStepIndex is zero then previous step must have been preliminary if preliminary exists.\r\n if (prevStepIndex === 0 && prelimSteps.value.length > 0) {\r\n const lastPrelimStep = prelimSteps.value[prelimSteps.value.length - 1];\r\n if (lastPrelimStep) {\r\n lastPrelimStep.isVisible = true;\r\n lastPrelimStep.isActive = true;\r\n lastPrelimStep.isComplete = false;\r\n }\r\n\r\n handleScrollForSmallScreen('body', 100);\r\n return;\r\n }\r\n\r\n prevStepIndex && goToStep(prevStepIndex - 1, options);\r\n }\r\n\r\n /**\r\n * Move to next prelim step\r\n *\r\n */\r\n function goNextPrelimStep() {\r\n const nextStepIndex = prelimSteps.value[currentPrelimStepIndex.value]?.nextStepIndex ?? 0;\r\n\r\n gotoPrelimStep(nextStepIndex, { completeCurrentStep: true });\r\n }\r\n\r\n /**\r\n * Move to previous prelim step\r\n *\r\n */\r\n function goPrevPrelimStep() {\r\n const prevStepIndex = prelimSteps.value[currentPrelimStepIndex.value]?.prevStepIndex ?? 0;\r\n\r\n gotoPrelimStep(prevStepIndex, { completeCurrentStep: false });\r\n }\r\n\r\n /**\r\n * Toggle the visibility of the steps after the current/ active step\r\n *\r\n * @param isVisible\r\n */\r\n function toggleNextStepsVisibility(isVisible: boolean) {\r\n const currentStepIndex = currentStep.value?.stepIndex;\r\n if (currentStepIndex) {\r\n inScopeSteps.value.forEach((step, index) => {\r\n if (index > currentStepIndex) {\r\n step.isVisible = isVisible;\r\n }\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Hide the steps after the current/ active step\r\n */\r\n function hideNextSteps() {\r\n toggleNextStepsVisibility(false);\r\n }\r\n\r\n /**\r\n * Hides the current step\r\n */\r\n function hideCurrentStep() {\r\n currentStep?.value && (currentStep.value.isVisible = false);\r\n }\r\n\r\n /**\r\n * Show the steps after the current/ active step\r\n */\r\n function showNextSteps() {\r\n toggleNextStepsVisibility(true);\r\n }\r\n\r\n /**\r\n * Convert sitecore content to vue and import the form\r\n */\r\n function convertSitecoreStepToVueStep(item: ISitecoreFormStep, index: number, arr: ISitecoreFormStep[]) {\r\n const componentName = item.component.value;\r\n\r\n // Note: Update filepath according to your form name and file directory structure\r\n const importedComponent = defineAsyncComponent(() => {\r\n try {\r\n if (item.componentPath?.value) return import(`@/forms/${item.componentPath?.value}/${componentName}.vue`);\r\n return import(\r\n `@/forms/${folderPath.value ? folderPath.value + '/' : ''}${formComponentDir.value}/steps/${componentName}.vue`\r\n );\r\n } catch {\r\n return import('@/NotFound.vue');\r\n }\r\n });\r\n\r\n const sanitizedId = item.stepId.value.toLowerCase().replace(/\\s+/g, '_');\r\n\r\n return {\r\n id: sanitizedId,\r\n stepName: item.name,\r\n stepNumber: item.stepNumber?.value ?? index + 1,\r\n stepTitle: item.stepTitle?.value ?? item.name,\r\n stepContent: item.stepContent.value,\r\n isInStepper: item?.isDynamicStep?.value != '1',\r\n isVisible: index === 0,\r\n isActive: index === 0,\r\n isComplete: false,\r\n isPrelimStep: item?.isPrelimStep?.value == '1',\r\n isDynamicStep: item?.isDynamicStep?.value == '1',\r\n isRemovable: item?.isRemovable?.value == '1',\r\n isFinalStep: item?.isFinalStep?.value == '1',\r\n // Increase performance by marking component as 'raw' so it is not a Reactive object\r\n component: markRaw(importedComponent),\r\n nextStepIndex: Math.min(index + 1, arr.length),\r\n prevStepIndex: index <= 0 ? 0 : index - 1,\r\n btnNext: item.btnNext.value,\r\n btnPrev: item.btnPrev.value,\r\n btnDisagree: item.btnDisagree.value,\r\n hideStepper: item?.hideStepper?.value == '1',\r\n stepGroupName: item.stepGroupName?.value,\r\n formInputs: convertArrayToObject(item.formInputs),\r\n stepDisclaimer: item.stepDisclaimer?.value || '',\r\n } as unknown as IFormStep;\r\n }\r\n\r\n /**\r\n * Convert dropdown items to options\r\n *\r\n * @param sourceData\r\n * @param useListLabel\r\n * @returns\r\n */\r\n function getDropDownListItems(sourceData: FormDropdownItem[], useListLabel = false): FormDropdownOption[] {\r\n return sourceData.map((element) => {\r\n return {\r\n value: useListLabel ? element.fields.listValue.value : element.id,\r\n label: useListLabel ? element.fields.listLabel.value : element.fields.listValue.value,\r\n };\r\n });\r\n }\r\n\r\n /**\r\n * Set the form component directory path to\r\n * allow dynamic component file imports.\r\n *\r\n * @param dir\r\n */\r\n function setFormComponentDir(dir: string) {\r\n formComponentDir.value = dir;\r\n }\r\n\r\n /**\r\n * set post content visible\r\n */\r\n function showPostContent(stepId: string, inputId: string, show: boolean = true) {\r\n const formInput = inScopeSteps.value.find((s) => s.id === stepId)?.formInputs?.[inputId];\r\n if (formInput) formInput.showPostContent = show;\r\n }\r\n\r\n /**\r\n * Set the form name\r\n *\r\n * @param name\r\n */\r\n function setFormName(name: string) {\r\n formName.value = name;\r\n }\r\n\r\n /**\r\n * Set the page title\r\n *\r\n * @param title\r\n */\r\n function setPageTitle(title: string) {\r\n pageTitle.value = title;\r\n }\r\n\r\n /**\r\n * set IQ floating box shown\r\n */\r\n function showIQFloatingBox(show?: boolean) {\r\n iqFloatingBoxShown.value = show || false;\r\n }\r\n\r\n /**\r\n * Set dynamic options\r\n */\r\n function setDynamicOptions(stepId: string, dynamicOptions: any) {\r\n const step = inScopeSteps.value.find((s) => s.id == stepId);\r\n\r\n if (step?.formInputs) {\r\n Object.entries(dynamicOptions).forEach(([key, value]) => {\r\n if (step?.formInputs && step.formInputs[key]) {\r\n step.formInputs[key].options = { value: value };\r\n }\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * get step by step ID\r\n */\r\n function getStep(stepId: string) {\r\n const step = inScopeSteps.value.find((s) => s.id == stepId);\r\n return step;\r\n }\r\n\r\n /**\r\n * Set disableAllSteps.value = true\r\n */\r\n function setDisableAllSteps() {\r\n disableAllSteps.value = true;\r\n }\r\n\r\n /**\r\n * Set current step to masked\r\n */\r\n function maskActiveStep(step: IFormStep | null | undefined = currentStep.value ?? currentPrelimStep.value) {\r\n if (step) {\r\n setStepMask(step, true);\r\n }\r\n }\r\n\r\n /**\r\n * Set current step to not masked\r\n */\r\n function unMaskActiveStep(step: IFormStep | null | undefined = currentStep.value ?? currentPrelimStep.value) {\r\n if (step) {\r\n setStepMask(step, false);\r\n }\r\n }\r\n\r\n /**\r\n * Set step mask\r\n */\r\n function setStepMask(step: IFormStep | null, mask: boolean) {\r\n if (step) {\r\n step.isMasked = mask;\r\n }\r\n }\r\n\r\n /**\r\n * Set the form stepper state to show the form is completed\r\n */\r\n function setFormCompleted() {\r\n if (currentStep.value) {\r\n inScopeSteps.value.forEach((step) => {\r\n if (step.isFinalStep) {\r\n step.isComplete = true;\r\n step.hideStepper = true;\r\n } else {\r\n step.isComplete = true;\r\n step.hideStepper = true;\r\n step.isVisible = false;\r\n }\r\n });\r\n scrollToStep(currentStep.value.stepIndex!);\r\n }\r\n }\r\n\r\n return {\r\n prelimSteps,\r\n currentStep,\r\n prevActiveStep,\r\n inScopeSteps,\r\n formComponentDir,\r\n currentStepIndex,\r\n prevActiveStepIndex,\r\n currentPrelimStep,\r\n currentPrelimStepIndex,\r\n allPrelimStepsComplete,\r\n showStepper,\r\n isStepperVisible,\r\n removeStepCallback,\r\n pageTitle,\r\n formName,\r\n iqFloatingBoxShown,\r\n setSteps,\r\n scrollToStep,\r\n goToStep,\r\n fastForwardToStepId,\r\n goNextStep,\r\n goPrevStep,\r\n setPrelimSteps,\r\n gotoPrelimStep,\r\n initialiseForm,\r\n initialiseSteps,\r\n goNextPrelimStep,\r\n setFormComponentDir,\r\n goPrevPrelimStep,\r\n getDropDownListItems,\r\n showLoadingForCurrentStep,\r\n convertSitecoreStepToVueStep,\r\n makeStepperVisible,\r\n addStepToScope,\r\n removeStep,\r\n moveStep,\r\n updateInput,\r\n showPostContent,\r\n setFormName,\r\n setPageTitle,\r\n showIQFloatingBox,\r\n setDynamicOptions,\r\n scrollToErrorMessage,\r\n getStep,\r\n setDisableAllSteps,\r\n disableAllSteps,\r\n maskActiveStep,\r\n unMaskActiveStep,\r\n setStepMask,\r\n setFormCompleted,\r\n hideNextSteps,\r\n showNextSteps,\r\n };\r\n});\r\n","import { CancelInsuranceFormState, CancellationReasons } from '@/interfaces';\r\nimport { defineStore } from 'pinia';\r\nimport { CancelInsuranceFormService as service } from '@/services/store';\r\nimport { useInsuranceProductStore } from '../insurance-product/insurance-product.state';\r\nimport { useFormStore } from '../form/formStore';\r\n\r\nexport const useCancelInsuranceFormStore = defineStore('CancelInsuranceForm', {\r\n state: (): CancelInsuranceFormState => ({\r\n cancellationReasons: [],\r\n }),\r\n actions: {\r\n /**\r\n * Validate step 1\r\n */\r\n async isInsuranceEligibleForCancellation(payload: {\r\n subCancellationReasonId: string;\r\n cancellationReasonId: string;\r\n }) {\r\n const formStore = useFormStore();\r\n try {\r\n formStore.showLoadingForCurrentStep();\r\n const policyStore = useInsuranceProductStore();\r\n const res = await service.isInsuranceEligibleForCancellation(\r\n policyStore.insuranceProduct!.policyNumber,\r\n payload\r\n );\r\n\r\n return res;\r\n } catch (error) {\r\n // TODO fix this\r\n // throw error;\r\n } finally {\r\n formStore.showLoadingForCurrentStep(false);\r\n }\r\n },\r\n\r\n setCancellationReasons(reasons: CancellationReasons[]) {\r\n this.cancellationReasons = reasons;\r\n },\r\n\r\n /** Fetch Policy Detail */\r\n async fetchPolicy(policyNumber: string) {\r\n try {\r\n const res = await service.fetchPolicy(policyNumber);\r\n const policyStore = useInsuranceProductStore();\r\n policyStore.setInsuranceProduct(res.insurancePolicy);\r\n this.insuranceIndexNumber = res.insuranceIndexNumber;\r\n this.coverageDetails = res.coverageDetails;\r\n this.currentDateTime = res.currentDateTime;\r\n this.defaultCancellationDate = res.defaultCancellationDate;\r\n this.insuranceIndexNumber = res.insuranceIndexNumber;\r\n this.insurancePolicyType = res.insurancePolicyType;\r\n this.insuranceType = res.insuranceType;\r\n this.maxCancellationDate = res.maxCancellationDate;\r\n } catch (error) {\r\n // useJeopardyStore().setStepTitle()\r\n }\r\n },\r\n\r\n /**\r\n * Go to change vehicle form\r\n */\r\n async goChangeVehicleLink() {\r\n const url = await service.goChangeVehicleLink();\r\n window.location.href = url.replace('{0}', this.insuranceIndexNumber?.toString() || '');\r\n },\r\n },\r\n getters: {\r\n reasons: (state) => state.cancellationReasons,\r\n },\r\n});\r\n","import { LiveChatServices as _livechat } from '@/services/store';\r\nimport { useAnalyticsStore } from '../analytics/analytics.state';\r\nimport { defineStore } from 'pinia';\r\nimport { FormEvents } from '@/enums/form-events.enum';\r\n\r\nexport const useLiveChatStore = defineStore('LiveChat', {\r\n state: (): {\r\n _RACQPlugin?: any;\r\n _liveChatEnabled?: boolean;\r\n } => ({}),\r\n getters: {\r\n RACQPlugin: (state) => state._RACQPlugin,\r\n liveChatEnabled: (state) => state._liveChatEnabled,\r\n },\r\n actions: {\r\n /**\r\n * Initial webchat plugin\r\n * @param plugin\r\n */\r\n initPlugin(plugin: any) {\r\n this._RACQPlugin = plugin;\r\n },\r\n\r\n /**\r\n * Option chat window\r\n * @param jpCode\r\n * @param jpDescription\r\n * @param additionalComments\r\n * @param cancellationReasons\r\n */\r\n startChat() {\r\n this.addAnalyticsForLiveChat();\r\n this._RACQPlugin.command('WebChat.open', {});\r\n },\r\n\r\n /**\r\n * Get chat session data from server\r\n * @returns\r\n */\r\n async getLiveChatSessionData() {\r\n return _livechat.getLiveChatSessionData();\r\n },\r\n\r\n /**\r\n * Send analytics\r\n */\r\n addAnalyticsForLiveChat() {\r\n const analyticsData = {\r\n event: FormEvents.CHAT_STARTED,\r\n form: {},\r\n };\r\n\r\n useAnalyticsStore().pushAnalytics(analyticsData);\r\n },\r\n\r\n setChatEnabled(value: boolean) {\r\n this._liveChatEnabled = value;\r\n },\r\n },\r\n});\r\n","import { ref, computed, watch, nextTick } from 'vue';\r\nimport { defineStore } from 'pinia';\r\nimport { provideApolloClient, useQuery } from '@vue/apollo-composable';\r\nimport { IFormStep } from '@/interfaces';\r\nimport { JP_EXCEPTION } from '@/constants/jeopardy-codes.const';\r\nimport { useFormStore, useAnalyticsStore } from '@/store';\r\nimport { FormEvents } from '@/enums/form-events.enum';\r\nimport jpCodeQueryGraphQL from './jeopardy-code.query.graphql';\r\nimport jpPanelQueryGraphQL from './jeopardy-panel.query.graphql';\r\nimport { Field } from '@sitecore-jss/sitecore-jss-vue';\r\nimport GraphQLClientFactory from '@/lib/GraphQLClientFactory';\r\nimport config from '@/temp/config';\r\nimport { IAnalyticsForm, IFormAnalytics } from '@/interfaces/forms/analytics-interface';\r\n\r\ninterface JPPanelQueryResult {\r\n item: {\r\n id: string;\r\n name: string;\r\n jeopardyPanelCode: {\r\n value: string;\r\n };\r\n liveChatHeading: {\r\n value: string;\r\n };\r\n liveChatContent: {\r\n value: string;\r\n };\r\n liveChatButtonText: {\r\n value: string;\r\n };\r\n callUsHeading: {\r\n value: string;\r\n };\r\n callUsContent: {\r\n value: string;\r\n };\r\n callUsNumber: {\r\n value: string;\r\n };\r\n callUsButtonLabel: {\r\n value: string;\r\n };\r\n callBackHeading: {\r\n value: string;\r\n };\r\n callBackContent: {\r\n value: string;\r\n };\r\n callBackButtonText: {\r\n value: string;\r\n };\r\n callBackFormLink: {\r\n value: string;\r\n };\r\n };\r\n}\r\n\r\nexport const useJeopardyStore = defineStore('FormJeopardy', () => {\r\n const formStore = useFormStore();\r\n const analyticsStore = useAnalyticsStore();\r\n\r\n const step = ref({\r\n stepNumber: -1,\r\n stepName: 'Jeopardy',\r\n stepTitle: '',\r\n });\r\n const showJeopardy = ref(false);\r\n const showDynamic = ref(false);\r\n const isChatEnabled = ref(false);\r\n const isChatLoading = ref(false);\r\n const isCallBackVisible = ref(false);\r\n const isCallUsVisible = ref(true);\r\n const jpCode = ref(JP_EXCEPTION);\r\n const additionalComments = ref();\r\n const cancellationReasons = ref();\r\n const backBtnDisabled = ref(false);\r\n const backBtnCallback = ref<() => void>();\r\n const backBtnText = ref('Back');\r\n const jpTextSuffix = ref('');\r\n const formAnalyticsOverride = ref | null>(null);\r\n const jpDynamicPanelResult = ref(null);\r\n const jpDefaultPanelResult = ref(null);\r\n\r\n const jpCodeQueryGraphQLPath = computed(\r\n () => '/sitecore/content/RACQFormsGroup/RACQForms20/Data/Jeopardy/Jeopardy Codes/' + jpCode.value\r\n );\r\n const { result: jpCodeQueryResult, loading: jpCodeQueryLoading } = useQuery(jpCodeQueryGraphQL, {\r\n path: jpCodeQueryGraphQLPath,\r\n });\r\n\r\n const jpText = computed(() => (jpCodeQueryResult.value?.item?.jpText?.value ?? '') + jpTextSuffix.value);\r\n const jpTextLoaded = computed(() => !jpCodeQueryLoading.value);\r\n const jpStepTitle = computed(() => jpCodeQueryResult.value?.item?.jpStepTitle?.value as string);\r\n const jpHeading = computed(() => jpCodeQueryResult.value?.item?.jpHeading?.value as string);\r\n\r\n watch(jpStepTitle, (newValue) => {\r\n if (newValue) {\r\n step.value.stepTitle = newValue;\r\n }\r\n });\r\n\r\n const jpPanelQueryLoading = ref(true);\r\n const fetchDynamic = async (jeopardyPanelName: string): Promise => {\r\n provideApolloClient(GraphQLClientFactory(config.graphQLEndpoint, true));\r\n\r\n const jpPanelQueryGraphQLPath = computed(\r\n () => '/sitecore/content/RACQFormsGroup/RACQForms20/Data/Jeopardy/Jeopardy Panels/' + jeopardyPanelName\r\n );\r\n const { result: jpPanelQueryResult, loading: jpPanelQueryLoadingTemp } = useQuery(jpPanelQueryGraphQL, {\r\n path: jpPanelQueryGraphQLPath,\r\n });\r\n\r\n // Watch for changes in the query result and update our ref\r\n watch(jpPanelQueryResult, (newValue) => {\r\n jpDynamicPanelResult.value = newValue;\r\n jpPanelQueryLoading.value = jpPanelQueryLoadingTemp.value;\r\n });\r\n\r\n // Returns when loading is done\r\n return new Promise((resolve) => {\r\n watch(\r\n jpPanelQueryLoading,\r\n (newValue) => {\r\n if (!newValue) {\r\n resolve();\r\n }\r\n },\r\n { immediate: true }\r\n );\r\n });\r\n };\r\n\r\n watch(\r\n formAnalyticsOverride,\r\n async (newValue, oldValue) => {\r\n // Need for computed properties to be ready (jpText)\r\n await nextTick();\r\n\r\n // Jp code is not null AND show jp AND jp details it not null AND jp details have changed (avoid duplicate analytics)\r\n if (\r\n jpCode.value &&\r\n showJeopardy.value &&\r\n newValue &&\r\n (newValue?.formErrorType !== oldValue?.formErrorType || newValue?.formErrorDetail !== oldValue?.formErrorDetail)\r\n ) {\r\n const model: IFormAnalytics = {\r\n event: FormEvents.JEOPARDY,\r\n form: {\r\n formErrorType: newValue.formErrorType ?? jpCode.value,\r\n formErrorDetail: newValue.formErrorDetail ?? jpText.value,\r\n },\r\n };\r\n if (formStore.formName) {\r\n model.form.name = formStore.formName;\r\n }\r\n analyticsStore.pushAnalytics(model);\r\n }\r\n },\r\n { deep: true }\r\n );\r\n\r\n /**\r\n * Run callback for cancel\r\n */\r\n const btnBackClick = () => {\r\n if (backBtnCallback.value) backBtnCallback.value();\r\n else {\r\n showJeopardy.value = false;\r\n formStore.unMaskActiveStep();\r\n }\r\n };\r\n\r\n /**\r\n * Set Chat Loading\r\n * @param value\r\n */\r\n const setChatLoading = (value: boolean) => {\r\n isChatLoading.value = value;\r\n };\r\n\r\n /**\r\n * Set Chat Enabled\r\n * @param value\r\n */\r\n const setChatEnabled = (value: boolean) => {\r\n isChatEnabled.value = value;\r\n isChatLoading.value = false;\r\n };\r\n\r\n /**\r\n * Hide Jeopardy Panel\r\n * @param value\r\n */\r\n const hideJeopardyPanel = () => {\r\n showJeopardy.value = false;\r\n };\r\n\r\n /**\r\n * Show JP Panel\r\n * @param options\r\n */\r\n const showJeopardyPanel = (options: {\r\n jpCode: string;\r\n isChatEnabled?: boolean;\r\n isCallBackVisible?: boolean;\r\n isCallUsVisible?: boolean;\r\n backBtnDisabled?: boolean;\r\n backBtnText?: string;\r\n backBtnCallback?: () => void;\r\n areNextStepsVisible?: boolean;\r\n dynamicJeopardyPanelName?: string; // If this param is passed then the method MUST be treated as async\r\n textSuffix?: string;\r\n formAnalyticsOverride?: Partial;\r\n }): Promise | void => {\r\n // initialise common jeopardy config values\r\n const updateJeopardyConfig = () => {\r\n if (options.jpCode?.length && options.jpCode.startsWith('JP')) jpCode.value = options.jpCode;\r\n if (options.isChatEnabled !== undefined) isChatEnabled.value = options.isChatEnabled;\r\n if (options.isCallBackVisible !== undefined) isCallBackVisible.value = options.isCallBackVisible;\r\n if (options.isCallUsVisible !== undefined) isCallUsVisible.value = options.isCallUsVisible;\r\n if (options.backBtnDisabled !== undefined) backBtnDisabled.value = options.backBtnDisabled;\r\n if (options.backBtnDisabled) formStore.makeStepperVisible(false); // Stepper should be hidden when back button is disabled.\r\n if (options.backBtnText !== undefined) backBtnText.value = options.backBtnText;\r\n if (options.backBtnCallback !== undefined) backBtnCallback.value = options.backBtnCallback;\r\n if (options.areNextStepsVisible !== undefined)\r\n options.areNextStepsVisible ? formStore.showNextSteps() : formStore.hideNextSteps();\r\n if (options.textSuffix !== undefined) jpTextSuffix.value = options.textSuffix;\r\n if (options.formAnalyticsOverride !== undefined) {\r\n formAnalyticsOverride.value = options.formAnalyticsOverride;\r\n } else {\r\n formAnalyticsOverride.value = { formErrorType: jpCode.value };\r\n }\r\n\r\n formStore.maskActiveStep();\r\n };\r\n\r\n if (!options.dynamicJeopardyPanelName) {\r\n showJeopardy.value = true;\r\n showDynamic.value = false;\r\n updateJeopardyConfig();\r\n } else {\r\n // Method is ASYNC\r\n // eslint-disable-next-line no-async-promise-executor\r\n return new Promise(async (resolve) => {\r\n showDynamic.value = true;\r\n await setDynamicJeopardyPanel(options.dynamicJeopardyPanelName!);\r\n showJeopardy.value = true;\r\n updateJeopardyConfig();\r\n resolve();\r\n });\r\n }\r\n };\r\n\r\n const setDynamicJeopardyPanel = async (panelName: string) => {\r\n await fetchDynamic(panelName);\r\n };\r\n\r\n const setDefaultJeopardyPanel = (fields: Record>) => {\r\n jpDefaultPanelResult.value = {\r\n item: {\r\n id: '',\r\n name: '',\r\n jeopardyPanelCode: { value: fields.jeopardyPanelCode.value },\r\n liveChatHeading: { value: fields.liveChatHeading.value },\r\n liveChatContent: { value: fields.liveChatContent.value },\r\n liveChatButtonText: { value: fields.liveChatButtonText.value },\r\n callUsHeading: { value: fields.callUsHeading.value },\r\n callUsContent: { value: fields.callUsContent.value },\r\n callUsButtonLabel: { value: fields.callUsButtonLabel.value },\r\n callUsNumber: { value: fields.callUsNumber.value },\r\n callBackHeading: { value: fields.callBackHeading.value },\r\n callBackContent: { value: fields.callBackContent.value },\r\n callBackButtonText: { value: fields.callBackButtonText.value },\r\n callBackFormLink: { value: fields.callBackFormLink.value },\r\n },\r\n };\r\n };\r\n\r\n return {\r\n step,\r\n showJeopardy,\r\n showDynamic,\r\n isChatEnabled,\r\n isChatLoading,\r\n isCallBackVisible,\r\n isCallUsVisible,\r\n jpDynamicPanelResult,\r\n jpDefaultPanelResult,\r\n jpCode,\r\n jpText,\r\n jpTextLoaded,\r\n jpTextSuffix,\r\n jpHeading,\r\n jpStepTitle,\r\n additionalComments,\r\n cancellationReasons,\r\n backBtnDisabled,\r\n backBtnCallback,\r\n backBtnText,\r\n btnBackClick,\r\n setChatLoading,\r\n setChatEnabled,\r\n hideJeopardyPanel,\r\n showJeopardyPanel,\r\n setDynamicJeopardyPanel,\r\n setDefaultJeopardyPanel,\r\n };\r\n});\r\n","import { JP1 } from '@/constants/jeopardy-codes.const';\r\nimport { QuoteChangeState } from '@/enums/quote-change-state.enum';\r\nimport { GlassesGuideVehicleDetails, IFoundVehicle } from '@/interfaces';\r\nimport { defineStore } from 'pinia';\r\nimport { ref, watch } from 'vue';\r\n\r\nexport const useFindCarStore = defineStore('FindCar', () => {\r\n const showFoundVehicles = ref(false);\r\n const selectedVehicle = ref(undefined);\r\n const foundVehicleList = ref([]);\r\n const registrationNumber = ref('');\r\n const vehicleColour = ref('');\r\n const isQldRegoFound = ref(true);\r\n const formName = ref(''); // Track which form this component is used on for analytics\r\n const pre1960VehicleJeopardyCode = ref(JP1); // Set default jeopardy code for pre 1960 vehicle\r\n\r\n function showCarList(show: boolean) {\r\n showFoundVehicles.value = show;\r\n }\r\n\r\n function resetFoundVehicleList() {\r\n showFoundVehicles.value = false;\r\n }\r\n\r\n function setFormName(name: string) {\r\n formName.value = name;\r\n }\r\n\r\n function setPre1960VehicleJeopardy(jeopardyCode: string) {\r\n pre1960VehicleJeopardyCode.value = jeopardyCode;\r\n }\r\n\r\n function toGlassGuideVehicleDetails(): GlassesGuideVehicleDetails | undefined {\r\n if (!selectedVehicle.value) return;\r\n return {\r\n vehicleId: {\r\n value: selectedVehicle.value.glassesId,\r\n state: QuoteChangeState.UsedInQuote,\r\n },\r\n make: selectedVehicle.value.make,\r\n model: selectedVehicle.value.model,\r\n variant: selectedVehicle.value.variant,\r\n body: selectedVehicle.value.body,\r\n option: {\r\n nvic: {\r\n value: selectedVehicle.value.nvic,\r\n state: QuoteChangeState.UsedInQuote,\r\n },\r\n doors: selectedVehicle.value.option?.doors,\r\n series: selectedVehicle.value.option?.series,\r\n transmission: selectedVehicle.value.option?.transmission,\r\n },\r\n manufacturingYear: {\r\n year: selectedVehicle.value.manufacturingYear,\r\n },\r\n vehicleAcceptCode: {\r\n value: selectedVehicle.value.acceptCode!,\r\n state: QuoteChangeState.UsedInQuote,\r\n },\r\n vehiclePerformanceCode: {\r\n value: selectedVehicle.value.highPerformance!,\r\n state: QuoteChangeState.UsedInQuote,\r\n },\r\n vehicleValue: {\r\n value: selectedVehicle.value.marketValue,\r\n state: QuoteChangeState.UsedInQuote,\r\n },\r\n vehiclePoints: {\r\n value: selectedVehicle.value.points,\r\n state: QuoteChangeState.UsedInQuote,\r\n },\r\n hasTurbo: {\r\n value: selectedVehicle.value.hasTurbo,\r\n state: QuoteChangeState.UsedInQuote,\r\n },\r\n gears: {\r\n value: selectedVehicle.value.gears,\r\n state: QuoteChangeState.UsedInQuote,\r\n },\r\n driveType: {\r\n value: selectedVehicle.value.driveType,\r\n state: QuoteChangeState.UsedInQuote,\r\n },\r\n cylinders: {\r\n value: selectedVehicle.value.cylinders,\r\n state: QuoteChangeState.UsedInQuote,\r\n },\r\n engineCapacity: {\r\n value: selectedVehicle.value.engineCapacity,\r\n state: QuoteChangeState.UsedInQuote,\r\n },\r\n fuelType: {\r\n value: selectedVehicle.value.fuelType?.code,\r\n state: QuoteChangeState.UsedInQuote,\r\n },\r\n source: {\r\n value: selectedVehicle.value.source,\r\n state: QuoteChangeState.UsedInQuote,\r\n },\r\n };\r\n }\r\n\r\n watch(\r\n showFoundVehicles,\r\n (newValue) => {\r\n if (newValue === false) {\r\n selectedVehicle.value = undefined;\r\n }\r\n },\r\n { immediate: true }\r\n );\r\n\r\n return {\r\n showFoundVehicles,\r\n selectedVehicle,\r\n foundVehicleList,\r\n registrationNumber,\r\n isQldRegoFound,\r\n vehicleColour,\r\n formName,\r\n pre1960VehicleJeopardyCode,\r\n showCarList,\r\n resetFoundVehicleList,\r\n toGlassGuideVehicleDetails,\r\n setFormName,\r\n setPre1960VehicleJeopardy,\r\n };\r\n});\r\n","import { defineStore } from 'pinia';\r\nimport { useAccountStore } from '@/store/account/account.state';\r\nimport { AutoGlassFormService as _autoGlassService } from '@/services/store/auto-glass-form.service';\r\nimport { AutoGlassFormRequest } from '@/interfaces/pages/auto-glass-form.interface';\r\nimport { ref, readonly } from 'vue';\r\nimport { useRoute } from 'vue-router';\r\nimport { useFindCarStore } from '../find-car/find-car.state';\r\n\r\nexport const useAutoGlassStore = defineStore('AutoGlass', () => {\r\n // ------------------------------------------------------------- //\r\n // Define State\r\n // ------------------------------------------------------------- //\r\n const firstName = ref('');\r\n const lastName = ref('');\r\n const email = ref('');\r\n const mobileNumber = ref('');\r\n const suburb = ref('');\r\n const isMember = ref();\r\n const vehicleRegistration = ref('');\r\n const vehicleYear = ref('');\r\n const vehicleMake = ref('');\r\n const vehicleModel = ref('');\r\n const isFromSelfService = ref(false);\r\n const accountStore = useAccountStore();\r\n const findCarStore = useFindCarStore();\r\n\r\n async function submitForm() {\r\n const autoGlassFormRequest: AutoGlassFormRequest = {\r\n firstName: firstName.value,\r\n lastName: lastName.value,\r\n email: email.value,\r\n mobileNumber: mobileNumber.value,\r\n suburb: suburb.value,\r\n isMember: isMember.value,\r\n vehicleRegistration: vehicleRegistration.value,\r\n vehicleYear: vehicleYear.value,\r\n vehicleMake: vehicleMake.value,\r\n vehicleModel: vehicleModel.value,\r\n };\r\n await _autoGlassService.submitAutoGlassFormDetails(autoGlassFormRequest);\r\n }\r\n\r\n async function getAssistanceProductAndSetRego(policyId: string) {\r\n if (policyId) {\r\n try {\r\n const route = useRoute();\r\n await accountStore.authenticate(route);\r\n const assistanceProduct = await _autoGlassService.getAssistanceProduct(policyId);\r\n if (assistanceProduct?.vehicle) {\r\n vehicleRegistration.value = findCarStore.registrationNumber = assistanceProduct.vehicle.registrationNumber;\r\n isFromSelfService.value = true;\r\n }\r\n } catch (error) {\r\n await accountStore.authenticateOrCallBack(rediectToSelfServiceRoadsideAssistance);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Back to self service roadside assistance\r\n */\r\n async function rediectToSelfServiceRoadsideAssistance() {\r\n try {\r\n const url = await _autoGlassService.getSelfServiceRoadsideAssistancePage();\r\n window.location.href = url;\r\n } catch (error) {\r\n console.warn('Unable to retrieve self service roadside assistance URL: ', error);\r\n // Session timeout\r\n window.location.href = 'https://www.racq.com.au';\r\n }\r\n }\r\n\r\n function $reset() {\r\n firstName.value = '';\r\n lastName.value = '';\r\n email.value = '';\r\n mobileNumber.value = '';\r\n suburb.value = '';\r\n isMember.value = undefined;\r\n vehicleRegistration.value = '';\r\n vehicleYear.value = '';\r\n vehicleMake.value = '';\r\n vehicleModel.value = '';\r\n }\r\n\r\n function $resetSelfServiceEntry() {\r\n isFromSelfService.value = false;\r\n }\r\n\r\n return {\r\n firstName,\r\n lastName,\r\n email,\r\n mobileNumber,\r\n suburb,\r\n isMember,\r\n vehicleRegistration,\r\n vehicleYear,\r\n vehicleMake,\r\n vehicleModel,\r\n isFromSelfService: readonly(isFromSelfService),\r\n submitForm,\r\n getAssistanceProductAndSetRego,\r\n rediectToSelfServiceRoadsideAssistance,\r\n $reset,\r\n $resetSelfServiceEntry,\r\n };\r\n});\r\n","import { cancelRoadsideAssistanceJob } from '@/constants/forms-api.const';\r\nimport { RequestServices as _http } from '@/services/common/request.services';\r\nimport { CancelJobRequest, CancelRoadsideAssistanceJob } from '@/interfaces/pages/cancel-roadside-form.interface';\r\n\r\nexport const CancelRoadsideAssistanceFormService = {\r\n /**\r\n * Cancel Roadside Assistance Job\r\n * @param payload\r\n */\r\n async cancelRoadsideAsssitanceJob(payload: CancelJobRequest): Promise {\r\n return await _http.HttpPost(cancelRoadsideAssistanceJob, payload);\r\n },\r\n} as const;\r\n","import { defineStore } from 'pinia';\r\nimport { CancelRoadsideAssistanceFormService as _cancelRoadsideAssistanceFormService } from '@/services/store/cancel-roadside-assistance-form.service';\r\nimport { CancelJobRequest, CancelRoadsideAssistanceJob } from '@/interfaces/pages/cancel-roadside-form.interface';\r\nimport { ref } from 'vue';\r\n\r\nexport const useCancelRoadsideAssistanceStore = defineStore('CancelRoadsideAssistance', () => {\r\n // ------------------------------------------------------------- //\r\n // Define State\r\n // ------------------------------------------------------------- //\r\n const jobID = ref('');\r\n const comments = ref('');\r\n\r\n async function cancelJob(): Promise {\r\n const cancelJobRequest: CancelJobRequest = {\r\n jobID: jobID.value,\r\n comments: comments.value,\r\n };\r\n return await _cancelRoadsideAssistanceFormService.cancelRoadsideAsssitanceJob(cancelJobRequest);\r\n }\r\n\r\n function $reset() {\r\n jobID.value = '';\r\n comments.value = '';\r\n }\r\n\r\n function clearComments() {\r\n comments.value = '';\r\n }\r\n\r\n return {\r\n jobID,\r\n comments,\r\n cancelJob,\r\n clearComments,\r\n $reset,\r\n };\r\n});\r\n","export enum IQErrorReasonTypes {\r\n Error = 0,\r\n ValueAdjusted = 1,\r\n Warning = 2,\r\n}\r\n","import {\r\n checkUpdatePostalAddressRequired,\r\n getInsuranceQuoteById,\r\n postInsuranceQuoteCreateQuote,\r\n postInsuranceQuoteApplyRules,\r\n postInsuranceQuoteCalculatePrice,\r\n postInsuranceQuoteUpdateQuote,\r\n postInsuranceSubmitQuote,\r\n putUpdatePostalAddress,\r\n postInsuranceQuoteSendQuoteEmail,\r\n} from '@/constants/forms-api.const';\r\nimport { RequestServices as _http } from '../common/request.services';\r\nimport { IQuote, ISubmitQuote } from '@/interfaces';\r\nimport { IQErrorReasonTypes } from '@/enums/iq-error-reason-types.enum';\r\n\r\nexport interface QuoteResponse {\r\n quote: IQuote;\r\n lastUpdated?: Date;\r\n}\r\n\r\nexport interface IQErrorReason {\r\n typeOfReason: IQErrorReasonTypes;\r\n code: string;\r\n}\r\n\r\nexport interface QuoteRulesResponse {\r\n quote: IQuote;\r\n reasonCodes: IQErrorReason[];\r\n}\r\n\r\nexport interface SubmitQuoteResponse {\r\n quote: IQuote;\r\n success: boolean;\r\n result: number;\r\n errors: SubmitQuoteError[];\r\n}\r\n\r\nexport interface SubmitQuoteError {\r\n errorType: number;\r\n errorDescription: string;\r\n}\r\n\r\nexport const InsuranceQuoteService = {\r\n /**\r\n * Fetch quote details\r\n *\r\n * @param quoteId\r\n * @returns\r\n */\r\n fetchQuote(quoteId: string): Promise {\r\n return _http.HttpGet(getInsuranceQuoteById.replace('{0}', quoteId));\r\n },\r\n\r\n /**\r\n * Create new quote\r\n *\r\n * @param quote\r\n */\r\n createQuote(quote: Partial): Promise {\r\n return _http.HttpPost(postInsuranceQuoteCreateQuote, { quote });\r\n },\r\n\r\n /**\r\n * Apply business rules\r\n *\r\n * @param quote\r\n */\r\n applyBusinessRules(quoteId: string, quote: Partial): Promise {\r\n return _http\r\n .HttpPost(postInsuranceQuoteApplyRules.replace('{0}', quoteId), { quote })\r\n .then((res: QuoteRulesResponse) => {\r\n if (res.reasonCodes?.length) {\r\n res.reasonCodes = res.reasonCodes.filter((reason) => {\r\n return reason.typeOfReason != IQErrorReasonTypes.ValueAdjusted;\r\n });\r\n }\r\n return res;\r\n });\r\n },\r\n\r\n /**\r\n * Save quote\r\n *\r\n * @param quote\r\n */\r\n saveQuote(quoteId: string, quote: Partial): Promise {\r\n return _http.HttpPost(postInsuranceQuoteUpdateQuote.replace('{0}', quoteId), { quote });\r\n },\r\n\r\n /**\r\n * Calculate price\r\n *\r\n * @param quote\r\n */\r\n calculatePrice(quoteId: string, quote: Partial): Promise {\r\n return _http.HttpPost(postInsuranceQuoteCalculatePrice.replace('{0}', quoteId), { quote });\r\n },\r\n\r\n /**\r\n * Check update postal address is required\r\n *\r\n * @param partyId\r\n * @param dpid\r\n */\r\n checkUpdatePostalAddressRequired(partyId: string, dpid: number) {\r\n return _http.HttpGet(checkUpdatePostalAddressRequired.replace('{0}', partyId).replace('{1}', dpid.toString()));\r\n },\r\n\r\n /**\r\n * Submit Quote\r\n *\r\n * @param quote\r\n */\r\n submitQuote(quoteId: string, submitQuote: ISubmitQuote): Promise {\r\n return _http.HttpPost(postInsuranceSubmitQuote.replace('{0}', quoteId), submitQuote);\r\n },\r\n\r\n updatePostalAddress(d365Id: string, postalAddress: any) {\r\n return _http.HttpPut(putUpdatePostalAddress.replace('{0}', d365Id), postalAddress);\r\n },\r\n\r\n /**\r\n * Send Quote Email\r\n *\r\n * @param quoteId\r\n * @param destinationAddress\r\n */\r\n sendQuoteEmail(quoteId: string, destinationAddress: string) {\r\n return _http.HttpPost(postInsuranceQuoteSendQuoteEmail.replace('{0}', quoteId), { destinationAddress });\r\n },\r\n};\r\n","import { defineStore } from 'pinia';\r\nimport { ref, computed } from 'vue';\r\nimport { isArray } from 'lodash-es';\r\nimport {\r\n InsuranceQuoteService as _iq,\r\n IQErrorReason,\r\n SubmitQuoteError,\r\n} from '@/services/store/insurance-quote.service';\r\nimport { InsuranceQuoteType, IQuote, ISubmitQuote } from '@/interfaces';\r\nimport { QuoteTypes } from '@/constants/quote-types.const';\r\nimport { useIQOriginalQuoteStore, useAnalyticsStore, useFormStore } from '@/store';\r\nimport { FormEvents } from '@/enums/form-events.enum';\r\nimport { APIValues, HQStepIds } from '@/constants/home-quote.const';\r\n\r\nexport const useHomeAndContentsStore = defineStore('HomeAndContents', () => {\r\n const analyticsStore = useAnalyticsStore();\r\n const formStore = useFormStore();\r\n\r\n // ------------------------------------------------------------- //\r\n // Define State\r\n // ------------------------------------------------------------- //\r\n const quote = ref>({});\r\n const quoteId = ref('');\r\n const quoteType = computed(() => (quote.value.quoteType && QuoteTypes[quote.value.quoteType]) || '');\r\n const updatePostalAddressRequired = ref(false);\r\n const originalQuoteStore = useIQOriginalQuoteStore();\r\n const jeopardies = ref([]);\r\n const submitQuoteErrors = ref([]);\r\n const stepsConfigured = ref(false);\r\n const tempQuestionResponses = ref>();\r\n\r\n const originalQuote = computed(() => {\r\n return originalQuoteStore.quote;\r\n });\r\n\r\n const policyStartDateHasPassed = computed(() => {\r\n if (quote.value.insuranceStartDate?.value) {\r\n const today = new Date();\r\n const quoteStartDate = quote.value.insuranceStartDate.value;\r\n quoteStartDate.setHours(0, 0, 0, 0);\r\n today.setHours(0, 0, 0, 0);\r\n return quoteStartDate < today;\r\n }\r\n return false;\r\n });\r\n\r\n const isHome = computed(\r\n () =>\r\n quote.value.quoteType === InsuranceQuoteType.Home || quote.value.quoteType === InsuranceQuoteType.HomeAndContents\r\n );\r\n\r\n const isContents = computed(\r\n () =>\r\n quote.value.quoteType === InsuranceQuoteType.Contents ||\r\n quote.value.quoteType === InsuranceQuoteType.HomeAndContents\r\n );\r\n\r\n const fetchQuote = async () => {\r\n // get quote id\r\n const params = new URLSearchParams(window.location.search);\r\n quoteId.value = params.get('ref') ?? '';\r\n if (!quoteId.value) throw 400;\r\n const res = await _iq.fetchQuote(quoteId.value);\r\n quote.value = res?.quote;\r\n\r\n originalQuoteStore.setQuote(quote.value);\r\n };\r\n\r\n /**\r\n * Create new quote\r\n *\r\n * @param quote\r\n */\r\n const createQuote = async () => {\r\n try {\r\n const response = await _iq.createQuote(quote.value);\r\n if (response.quote) {\r\n quote.value = response.quote;\r\n quoteId.value = response.quote.id;\r\n }\r\n } catch (error) {\r\n await handleError(error);\r\n }\r\n };\r\n\r\n /**\r\n * Apply Business Rules\r\n *\r\n * @param formData\r\n */\r\n const applyBusinessRules = async () => {\r\n try {\r\n const response = await _iq.applyBusinessRules(quoteId.value, quote.value);\r\n\r\n jeopardies.value = response?.reasonCodes || [];\r\n if (jeopardies.value.length > 0 && jeopardies.value.some((j) => j.typeOfReason === 0)) {\r\n throw jeopardies.value.find((j) => j.typeOfReason === 0)?.code;\r\n }\r\n\r\n quote.value = response?.quote || quote.value;\r\n } catch (error) {\r\n await handleError(error);\r\n }\r\n };\r\n\r\n /**\r\n * Save / Update Quote\r\n *\r\n * @param formData\r\n */\r\n const saveQuote = async () => {\r\n try {\r\n const response = await _iq.saveQuote(quoteId.value, quote.value);\r\n quote.value = response?.quote || quote.value;\r\n } catch (error) {\r\n await handleError(error);\r\n }\r\n };\r\n\r\n /**\r\n * Calculate quote price\r\n *\r\n * @returns\r\n */\r\n const calculatePrice = async () => {\r\n try {\r\n const response = await _iq.calculatePrice(quoteId.value, quote.value);\r\n\r\n jeopardies.value = response?.reasonCodes || [];\r\n if (jeopardies.value.length > 0 && jeopardies.value.some((j) => j.typeOfReason === 0)) {\r\n throw jeopardies.value.find((j) => j.typeOfReason === 0)?.code;\r\n }\r\n\r\n quote.value = response?.quote || quote.value;\r\n } catch (error) {\r\n await handleError(error);\r\n }\r\n };\r\n\r\n const applyRulesAndSave = async (calculateQuotePrice: boolean = true) => {\r\n submitQuoteErrors.value = [];\r\n\r\n // Apply business rules\r\n await applyBusinessRules();\r\n\r\n if (calculateQuotePrice) {\r\n // Save Quote for Pricing\r\n await saveQuote();\r\n\r\n // Recalculate quote price\r\n await calculatePrice();\r\n }\r\n\r\n // Save quote with new price\r\n await saveQuote();\r\n };\r\n\r\n /**\r\n * Submit Quote\r\n *\r\n * @param formData\r\n */\r\n const submitQuote = async (submitQuote: ISubmitQuote) => {\r\n try {\r\n submitQuoteErrors.value = [];\r\n const response = await _iq.submitQuote(quoteId.value, submitQuote);\r\n quote.value = response?.quote || quote.value;\r\n submitQuoteErrors.value = response?.errors || [];\r\n\r\n if (submitQuoteErrors?.value?.length > 0) {\r\n throw new Error(submitQuoteErrors.value[0].errorDescription);\r\n }\r\n\r\n return response;\r\n } catch (error) {\r\n await handleError(error);\r\n }\r\n };\r\n\r\n /**\r\n * Send Quote Email\r\n *\r\n * @param formData\r\n */\r\n const sendQuoteEmail = async (destinationAddress: string) => {\r\n await _iq.sendQuoteEmail(quoteId.value, destinationAddress);\r\n };\r\n\r\n /**\r\n * DSQ-308 primary policyholder must agree t&c if postal address changed\r\n */\r\n const checkUpdatePostalAddressRequired = async (): Promise => {\r\n const partyId = quote.value.primaryPolicyHolderDetails?.partyId?.value;\r\n const dpid = quote.value.primaryPolicyHolderDetails?.dpid?.value;\r\n if (!dpid)\r\n return true; // show t&c if manual / oversea address\r\n else if (!partyId) return false; // hide t&c for new contact\r\n const res = await _iq.checkUpdatePostalAddressRequired(partyId, dpid);\r\n updatePostalAddressRequired.value = res ?? false;\r\n return res;\r\n };\r\n\r\n const updatePostalAddress = async (): Promise => {\r\n const partyId = quote.value.primaryPolicyHolderDetails?.partyId?.value;\r\n if (!partyId) return false;\r\n\r\n const postalAddress = {\r\n dpid: quote.value.primaryPolicyHolderDetails?.dpid?.value,\r\n unitNumber: quote.value.primaryPolicyHolderDetails?.unitNumber?.value,\r\n streetNumber: quote.value.primaryPolicyHolderDetails?.streetNumber?.value,\r\n street: quote.value.primaryPolicyHolderDetails?.street?.value,\r\n suburb: quote.value.primaryPolicyHolderDetails?.suburb?.value,\r\n state: quote.value.primaryPolicyHolderDetails?.state?.value,\r\n country: quote.value.primaryPolicyHolderDetails?.country?.value,\r\n };\r\n\r\n const res = await _iq.updatePostalAddress(partyId, postalAddress);\r\n\r\n return res;\r\n };\r\n\r\n const handleError = async (error: any) => {\r\n const isErrorArray = isArray(error);\r\n if (!isErrorArray && error?.code) {\r\n throw error.code;\r\n }\r\n\r\n throw error;\r\n };\r\n\r\n /**\r\n * Push data to analytics\r\n *\r\n * @param options\r\n */\r\n const pushAnalytics = (options: { event: FormEvents }) => {\r\n analyticsStore.pushAnalytics({\r\n event: options.event,\r\n form: {},\r\n });\r\n };\r\n\r\n /**\r\n * Configure steps visibility and order for the quote form\r\n */\r\n const configureQuoteFormSteps = async () => {\r\n if (stepsConfigured.value) {\r\n return;\r\n }\r\n\r\n let stepsToHide: string[] = [];\r\n if (quote.value.quoteType === InsuranceQuoteType.Home) {\r\n stepsToHide = [HQStepIds.PortableItems, HQStepIds.HomeItems, HQStepIds.GeneralContents];\r\n } else if (quote.value.homeAndContentsQuote?.propertyOwnershipType?.value === APIValues.OccupancyType.Landlord) {\r\n stepsToHide = [HQStepIds.PortableItems];\r\n }\r\n\r\n if (stepsToHide.length > 0) {\r\n const steps = formStore.inScopeSteps.filter((step) => !stepsToHide.includes(step.id!));\r\n formStore.setSteps(steps);\r\n }\r\n\r\n if (quote.value.quoteType === InsuranceQuoteType.Contents) {\r\n await formStore.moveStep(HQStepIds.BuildingDetails, HQStepIds.GeneralContents);\r\n }\r\n\r\n stepsConfigured.value = true;\r\n };\r\n\r\n const addTempResponse = (key: string, value: any) => {\r\n if (!tempQuestionResponses?.value) tempQuestionResponses.value = {};\r\n if (!tempQuestionResponses.value[key]) {\r\n tempQuestionResponses.value[key] = value;\r\n }\r\n };\r\n\r\n const getTempResponse = (key: string) => {\r\n if (!tempQuestionResponses?.value) tempQuestionResponses.value = {};\r\n\r\n if (tempQuestionResponses.value[key]) {\r\n return tempQuestionResponses.value[key];\r\n }\r\n };\r\n\r\n return {\r\n quote,\r\n quoteId,\r\n quoteType,\r\n originalQuote,\r\n policyStartDateHasPassed,\r\n updatePostalAddressRequired,\r\n jeopardies,\r\n isHome,\r\n isContents,\r\n checkUpdatePostalAddressRequired,\r\n updatePostalAddress,\r\n fetchQuote,\r\n createQuote,\r\n applyBusinessRules,\r\n saveQuote,\r\n calculatePrice,\r\n applyRulesAndSave,\r\n submitQuote,\r\n submitQuoteErrors,\r\n sendQuoteEmail,\r\n pushAnalytics,\r\n configureQuoteFormSteps,\r\n stepsConfigured,\r\n tempQuestionResponses,\r\n addTempResponse,\r\n getTempResponse,\r\n };\r\n});\r\n","import { defineStore } from 'pinia';\r\nimport { ref, computed } from 'vue';\r\nimport { isArray } from 'lodash-es';\r\nimport {\r\n InsuranceQuoteService as _iq,\r\n IQErrorReason,\r\n SubmitQuoteError,\r\n} from '@/services/store/insurance-quote.service';\r\nimport { IQuote, ISubmitQuote } from '@/interfaces';\r\nimport { QuoteTypes } from '@/constants/quote-types.const';\r\nimport { useIQOriginalQuoteStore, useAnalyticsStore } from '@/store';\r\nimport { FormEvents } from '@/enums/form-events.enum';\r\n\r\nexport const useCarPurchaseStore = defineStore('CarPurchase', () => {\r\n const analyticsStore = useAnalyticsStore();\r\n\r\n // ------------------------------------------------------------- //\r\n // Define State\r\n // ------------------------------------------------------------- //\r\n const quote = ref>({});\r\n const quoteId = ref('');\r\n const quoteType = computed(() => (quote.value.quoteType && QuoteTypes[quote.value.quoteType]) || '');\r\n const updatePostalAddressRequired = ref(false);\r\n const originalQuoteStore = useIQOriginalQuoteStore();\r\n const jeopardies = ref([]);\r\n const submitQuoteErrors = ref([]);\r\n\r\n const originalQuote = computed(() => {\r\n return originalQuoteStore.quote;\r\n });\r\n\r\n const fetchQuote = async () => {\r\n // get quote id\r\n const params = new URLSearchParams(window.location.search);\r\n quoteId.value = params.get('ref') ?? '';\r\n if (!quoteId.value) throw 400;\r\n const res = await _iq.fetchQuote(quoteId.value);\r\n quote.value = res?.quote;\r\n\r\n originalQuoteStore.setQuote(quote.value);\r\n };\r\n\r\n /**\r\n * Create new quote\r\n *\r\n * @param quote\r\n */\r\n const createQuote = async () => {\r\n try {\r\n const response = await _iq.createQuote(quote.value);\r\n if (response.quote) {\r\n quote.value = response.quote;\r\n quoteId.value = response.quote.id;\r\n }\r\n } catch (error) {\r\n await handleError(error);\r\n }\r\n };\r\n\r\n /**\r\n * Apply Business Rules\r\n *\r\n * @param formData\r\n */\r\n const applyBusinessRules = async () => {\r\n try {\r\n const response = await _iq.applyBusinessRules(quoteId.value, quote.value);\r\n quote.value = response?.quote || quote.value;\r\n jeopardies.value = response?.reasonCodes || [];\r\n if (jeopardies.value.length > 0 && jeopardies.value.some((j) => j.typeOfReason === 0)) {\r\n throw jeopardies.value.find((j) => j.typeOfReason === 0)?.code;\r\n }\r\n } catch (error) {\r\n await handleError(error);\r\n }\r\n };\r\n\r\n /**\r\n * Save / Update Quote\r\n *\r\n * @param formData\r\n */\r\n const saveQuote = async () => {\r\n try {\r\n const response = await _iq.saveQuote(quoteId.value, quote.value);\r\n quote.value = response?.quote || quote.value;\r\n } catch (error) {\r\n await handleError(error);\r\n }\r\n };\r\n\r\n /**\r\n * Calculate quote price\r\n *\r\n * @returns\r\n */\r\n const calculatePrice = async () => {\r\n try {\r\n const response = await _iq.calculatePrice(quoteId.value, quote.value);\r\n quote.value = response?.quote || quote.value;\r\n jeopardies.value = response?.reasonCodes || [];\r\n if (jeopardies.value.length > 0 && jeopardies.value.some((j) => j.typeOfReason === 0)) {\r\n throw jeopardies.value.find((j) => j.typeOfReason === 0)?.code;\r\n }\r\n } catch (error) {\r\n await handleError(error);\r\n }\r\n };\r\n\r\n const applyRulesAndSave = async (calculateQuotePrice: boolean = true) => {\r\n // Apply business rules\r\n await applyBusinessRules();\r\n\r\n if (calculateQuotePrice) {\r\n // Save Quote for Pricing\r\n await saveQuote();\r\n\r\n // Recalculate quote price\r\n await calculatePrice();\r\n }\r\n\r\n // Save quote with new price\r\n await saveQuote();\r\n };\r\n\r\n /**\r\n * Submit Quote\r\n *\r\n * @param formData\r\n */\r\n const submitQuote = async (submitQuote: ISubmitQuote) => {\r\n try {\r\n const response = await _iq.submitQuote(quoteId.value, submitQuote);\r\n quote.value = response?.quote || quote.value;\r\n submitQuoteErrors.value = response?.errors || [];\r\n return response;\r\n } catch (error) {\r\n await handleError(error);\r\n }\r\n };\r\n\r\n /**\r\n * DSQ-308 primary policyholder must agree t&c if postal address changed\r\n */\r\n const checkUpdatePostalAddressRequired = async (): Promise => {\r\n const partyId = quote.value.primaryPolicyHolderDetails?.partyId?.value;\r\n const dpid = quote.value.primaryPolicyHolderDetails?.dpid?.value;\r\n if (!dpid)\r\n return true; // show t&c if manual / oversea address\r\n else if (!partyId) return false; // hide t&c for new contact\r\n const res = await _iq.checkUpdatePostalAddressRequired(partyId, dpid);\r\n updatePostalAddressRequired.value = res ?? false;\r\n return res;\r\n };\r\n\r\n const handleError = async (error: any) => {\r\n const isErrorArray = isArray(error);\r\n if (!isErrorArray && error?.code) {\r\n throw error.code;\r\n }\r\n\r\n throw error;\r\n };\r\n\r\n /**\r\n * Push data to analytics\r\n *\r\n * @param options\r\n */\r\n const pushAnalytics = (options: { event: FormEvents }) => {\r\n analyticsStore.pushAnalytics({\r\n event: options.event,\r\n form: {},\r\n });\r\n };\r\n\r\n return {\r\n quote,\r\n quoteId,\r\n quoteType,\r\n originalQuote,\r\n updatePostalAddressRequired,\r\n jeopardies,\r\n checkUpdatePostalAddressRequired,\r\n fetchQuote,\r\n createQuote,\r\n applyBusinessRules,\r\n saveQuote,\r\n calculatePrice,\r\n applyRulesAndSave,\r\n submitQuote,\r\n submitQuoteErrors,\r\n pushAnalytics,\r\n };\r\n});\r\n","import { INameCode } from '@/interfaces/entities/name-code.interface';\r\nimport { RequestServices as _http } from '../common/request.services';\r\nimport {\r\n getPersonTitles as getPersonTitlesApi,\r\n getGenders as getGendersApi,\r\n getPetBreeds as getPetBreedsApi,\r\n getPetTypes as getPetTypesApi,\r\n fetchHomeClaimTypes,\r\n fetchHomeLossTypes,\r\n fetchHomeLossValues,\r\n getHomeAdvancedCover,\r\n getHomeFloorOccupancy,\r\n getHomeGroupCoverPriceBands,\r\n getSmallBusinessInsuranceLimitValue,\r\n getEathquakeExcesses,\r\n getPortableExcesses,\r\n getPetExcesses,\r\n getCombinedAccessoriesList,\r\n getRoofTypeMaterials,\r\n getPrimaryConstructionMaterials,\r\n getHomeOccupancyTypes,\r\n getBuildingTypes,\r\n getPortableMobileExcesses,\r\n getAtFaultClaimTypes,\r\n getAtFaultClaimValues,\r\n getDriverLicenseIssueTypes,\r\n getFrameMaterials,\r\n getFloorMaterials,\r\n getMonitoredAlarmTypes,\r\n getInsuranceProducts,\r\n getHomeAndContentProducts,\r\n getHomeAndContentBuildingPropertyFeatures,\r\n getMembershipLevels,\r\n getNumOfStoreys,\r\n getLowestOccupiedFloor,\r\n getQuotingFeesPayByMonth,\r\n getParkingLocationsUrl,\r\n getVehicleBusinessUseTypesListUrl,\r\n getFinanceTypesUrl,\r\n getDriverLicenseYearsHeldRangesUrl,\r\n getPortableItemCategories,\r\n getHomeItemCategories,\r\n getHomeExcessValues,\r\n getContentsExcessValues,\r\n getAdvancedCoverValues,\r\n getPetCover,\r\n} from '@/constants/forms-api.const';\r\nimport { INameValue } from '@/interfaces/entities/name-value.interface';\r\nimport { IMembershipLevel } from '@/interfaces';\r\nimport { IHomeExcessValueReferenceData } from '@/interfaces/entities/home-contents.interface';\r\n\r\nexport const ReferenceDataServices = {\r\n getPersonTitles() {\r\n return _http.HttpGet(getPersonTitlesApi);\r\n },\r\n\r\n getGenders() {\r\n return _http.HttpGet(getGendersApi);\r\n },\r\n\r\n getPetTypes(quoteType: string) {\r\n return _http.HttpGet(getPetTypesApi.replace('{0}', quoteType));\r\n },\r\n\r\n getPetBreeds(quoteType: string, petType: string) {\r\n return _http.HttpGet(getPetBreedsApi.replace('{0}', quoteType).replace('{1}', petType));\r\n },\r\n\r\n getInsuranceProducts() {\r\n return _http.HttpGet(getInsuranceProducts);\r\n },\r\n\r\n getHomeAndContentProducts(occupancyType: string, buildingType: string): Promise {\r\n return _http.HttpGet(getHomeAndContentProducts.replace('{0}', occupancyType).replace('{1}', buildingType));\r\n },\r\n getHomeAndContentBuildingPropertyFeatures() {\r\n return _http.HttpGet(getHomeAndContentBuildingPropertyFeatures);\r\n },\r\n //#region HOME AND CONTENT\r\n getHomeClaimTypes(quoteType: string) {\r\n return _http.HttpGet(fetchHomeClaimTypes.replace('{0}', quoteType));\r\n },\r\n\r\n getHomeLossTypes(quoteType: string) {\r\n return _http.HttpGet(fetchHomeLossTypes.replace('{0}', quoteType));\r\n },\r\n\r\n getHomeLossValues(quoteType: string) {\r\n return _http.HttpGet(fetchHomeLossValues.replace('{0}', quoteType));\r\n },\r\n\r\n getHomeAdvancedCover(quoteType: string, occupancyType: string) {\r\n return _http.HttpGet(getHomeAdvancedCover.replace('{0}', quoteType).replace('{1}', occupancyType));\r\n },\r\n\r\n getHomeRoofTypeMaterials(quoteType: string) {\r\n return _http.HttpGet(getRoofTypeMaterials.replace('{0}', quoteType));\r\n },\r\n\r\n getHomePrimaryConstructionMaterials(quoteType: string) {\r\n return _http.HttpGet(getPrimaryConstructionMaterials.replace('{0}', quoteType));\r\n },\r\n\r\n getHomeOccupancyTypes(): Promise<{ values: INameCode[] }> {\r\n return _http.HttpGet(getHomeOccupancyTypes);\r\n },\r\n\r\n getNumOfStoreys(buildingType: string): Promise {\r\n return _http.HttpGet(getNumOfStoreys.replace('{0}', buildingType));\r\n },\r\n\r\n getLowestOccupiedFloor(buildingType: string) {\r\n return _http.HttpGet(getLowestOccupiedFloor.replace('{0}', buildingType));\r\n },\r\n\r\n getBuildingTypes(): Promise {\r\n return _http.HttpGet(getBuildingTypes);\r\n },\r\n\r\n getHomeFloorOccupancy(buildingType: string): Promise<{ values: INameCode[] }> {\r\n return _http.HttpGet(getHomeFloorOccupancy.replace('{0}', buildingType));\r\n },\r\n\r\n getHomeGroupCoverPriceBands(quoteType: string): Promise<{ values: INameCode[] }> {\r\n return _http.HttpGet(getHomeGroupCoverPriceBands.replace('{0}', quoteType));\r\n },\r\n\r\n getPortableItemCategories(quoteType: string): Promise<{ values: INameCode[] }> {\r\n return _http.HttpGet(getPortableItemCategories.replace('{0}', quoteType));\r\n },\r\n\r\n getHomeItemCategories(quoteType: string, withPolicyUpdate: boolean): Promise<{ values: INameCode[] }> {\r\n return _http.HttpGet(getHomeItemCategories.replace('{0}', quoteType).replace('{1}', withPolicyUpdate.toString()));\r\n },\r\n\r\n getSmallBusinessInsuranceLimitValue(quoteType: string) {\r\n return _http.HttpGet(getSmallBusinessInsuranceLimitValue.replace('{0}', quoteType));\r\n },\r\n\r\n getEathquakeExcesses(quoteType: string) {\r\n return _http.HttpGet(getEathquakeExcesses.replace('{0}', quoteType));\r\n },\r\n\r\n getPetExcesses(quoteType: string) {\r\n return _http.HttpGet(getPetExcesses.replace('{0}', quoteType));\r\n },\r\n\r\n getPortableExcesses(quoteType: string) {\r\n return _http.HttpGet(getPortableExcesses.replace('{0}', quoteType));\r\n },\r\n\r\n getPortableMobileExcesses(quoteType: string) {\r\n return _http.HttpGet(getPortableMobileExcesses.replace('{0}', quoteType));\r\n },\r\n\r\n getFrameMaterials(quoteType: string) {\r\n return _http.HttpGet(getFrameMaterials.replace('{0}', quoteType));\r\n },\r\n\r\n getFloorMaterials(quoteType: string) {\r\n return _http.HttpGet(getFloorMaterials.replace('{0}', quoteType));\r\n },\r\n\r\n getMembershipLevels(quoteType: string): Promise<{ values: IMembershipLevel[] }> {\r\n return _http.HttpGet(getMembershipLevels.replace('{0}', quoteType));\r\n },\r\n\r\n getMonitoredAlarmTypes(quoteType: string): Promise {\r\n return _http.HttpGet(getMonitoredAlarmTypes.replace('{0}', quoteType));\r\n },\r\n\r\n getHomeExcessValues(): Promise<{ values: IHomeExcessValueReferenceData[] }> {\r\n return _http.HttpGet(getHomeExcessValues);\r\n },\r\n\r\n getContentsExcessValues(): Promise<{ values: IHomeExcessValueReferenceData[] }> {\r\n return _http.HttpGet(getContentsExcessValues);\r\n },\r\n\r\n getAdvancedCoverValues(quoteType: string, occupancyType: string): Promise<{ values: INameCode[] }> {\r\n return _http.HttpGet(getAdvancedCoverValues.replace('{0}', quoteType).replace('{1}', occupancyType));\r\n },\r\n\r\n getPetCover(quoteType: string, occupancyType: string): Promise<{ values: INameCode[] }> {\r\n return _http.HttpGet(getPetCover.replace('{0}', quoteType).replace('{1}', occupancyType));\r\n },\r\n\r\n //#endregion\r\n\r\n //#region MOTOR\r\n getCombinedAccessoriesList() {\r\n return _http.HttpGet(getCombinedAccessoriesList);\r\n },\r\n\r\n getAtFaultClaimTypes() {\r\n return _http.HttpGet(getAtFaultClaimTypes);\r\n },\r\n\r\n getAtFaultClaimValues() {\r\n return _http.HttpGet(getAtFaultClaimValues);\r\n },\r\n\r\n getLicenceCancellationTypes() {\r\n return _http.HttpGet(getDriverLicenseIssueTypes);\r\n },\r\n\r\n getQuotingFeesPayByMonth(effectiveDate: Date) {\r\n return _http.HttpGet(getQuotingFeesPayByMonth.replace('{0}', effectiveDate.toDateString()));\r\n },\r\n\r\n getParkingLocations() {\r\n return _http.HttpGet(getParkingLocationsUrl);\r\n },\r\n\r\n getBusinessUseTypes() {\r\n return _http.HttpGet(getVehicleBusinessUseTypesListUrl);\r\n },\r\n\r\n getFinanceTypes() {\r\n return _http.HttpGet(getFinanceTypesUrl);\r\n },\r\n\r\n getDriverLicenseYearsHeldRanges() {\r\n return _http.HttpGet(getDriverLicenseYearsHeldRangesUrl);\r\n },\r\n\r\n //#endregion\r\n};\r\n","import { defineStore } from 'pinia';\r\nimport { ReferenceDataServices as _refData } from '@/services/store/reference-data.services';\r\nimport { ref } from 'vue';\r\nimport { INameValue } from '@/interfaces/entities/name-value.interface';\r\nimport { IFaultClaim } from '@/interfaces/entities/motor-fault-claim.interface';\r\n\r\nenum RefDataTypes {\r\n ACCESSORIES_MODIFICATION = 'AccessoriesAndModification',\r\n AT_FAULT_CLAIM_TYPES = 'AtFaultClaimTypes',\r\n AT_FAULT_CLAIM_VALUES = 'AtFaultClaimValues',\r\n CANCELLATION_TYPES = 'CancellationTypes',\r\n PARKING_LOCATIONS = 'ParkingLocations',\r\n BUSINESS_USE_TYPES = 'BusinessUseTypes',\r\n FINANCE_TYPES = 'FinanceTypes',\r\n DRIVER_LICENSE_YEARS_HELD = 'DriverLicenseYearsHeldRanges',\r\n}\r\n\r\nexport const useReferenceDataIQMotorStore = defineStore('ReferenceDataIQMotor', () => {\r\n // ------------------------------------------------------------- //\r\n // Define State\r\n // ------------------------------------------------------------- //\r\n const refData = ref>>({});\r\n\r\n /**\r\n * Get accessories and modifications\r\n *\r\n * @param quoteType\r\n * @returns\r\n */\r\n async function getAccessoriesAndModification(): Promise {\r\n if (refData.value.AccessoriesAndModification?.length) return refData.value.AccessoriesAndModification;\r\n try {\r\n const res = await _refData.getCombinedAccessoriesList();\r\n refData.value.AccessoriesAndModification = res || [];\r\n } catch (error) {\r\n console.warn('Unable to fetch accessories and modification: ', error);\r\n }\r\n return refData.value.AccessoriesAndModification || [];\r\n }\r\n\r\n /**\r\n * Get claim types\r\n *\r\n * @param quoteType\r\n * @returns\r\n */\r\n async function getAtFaultClaimTypes(): Promise {\r\n if (refData.value.AtFaultClaimTypes?.length) return refData.value.AtFaultClaimTypes;\r\n try {\r\n const res = await _refData.getAtFaultClaimTypes();\r\n refData.value.AtFaultClaimTypes = res || [];\r\n } catch (error) {\r\n console.warn('Unable to fetch claim types: ', error);\r\n }\r\n return refData.value.AtFaultClaimTypes || [];\r\n }\r\n\r\n /**\r\n * Get claim types\r\n *\r\n * @param quoteType\r\n * @returns\r\n */\r\n async function getAtFaultClaimValues(): Promise {\r\n if (refData.value.AtFaultClaimValues?.length) return refData.value.AtFaultClaimValues;\r\n try {\r\n const res = await _refData.getAtFaultClaimValues();\r\n refData.value.AtFaultClaimValues = res || [];\r\n } catch (error) {\r\n console.warn('Unable to fetch claim values: ', error);\r\n }\r\n return refData.value.AtFaultClaimValues || [];\r\n }\r\n\r\n /**\r\n * Get claim types\r\n *\r\n * @param quoteType\r\n * @returns\r\n */\r\n async function getCancellationTypes(): Promise {\r\n if (refData.value.CancellationTypes?.length) return refData.value.CancellationTypes;\r\n try {\r\n const res = await _refData.getLicenceCancellationTypes();\r\n refData.value.CancellationTypes = res || [];\r\n } catch (error) {\r\n console.warn('Unable to fetch cancellation types: ', error);\r\n }\r\n return refData.value.CancellationTypes || [];\r\n }\r\n\r\n /**\r\n * Get parking locations\r\n *\r\n * @param quoteType\r\n * @returns\r\n */\r\n async function getParkingLocations(): Promise {\r\n if (refData.value.ParkingLocations?.length) return refData.value.ParkingLocations;\r\n try {\r\n const res = await _refData.getParkingLocations();\r\n refData.value.ParkingLocations = res || [];\r\n } catch (error) {\r\n console.warn('Unable to fetch parking locations: ', error);\r\n }\r\n return refData.value.ParkingLocations || [];\r\n }\r\n\r\n async function getBusinessUseTypes(): Promise {\r\n if (refData.value.BusinessUseTypes?.length) return refData.value.BusinessUseTypes;\r\n try {\r\n const res = await _refData.getBusinessUseTypes();\r\n refData.value.BusinessUseTypes = res || [];\r\n } catch (error) {\r\n console.warn('Unable to fetch business use types: ', error);\r\n }\r\n return refData.value.BusinessUseTypes || [];\r\n }\r\n\r\n async function getFinanceTypes(): Promise {\r\n if (refData.value.FinanceTypes?.length) return refData.value.FinanceTypes;\r\n try {\r\n const res = await _refData.getFinanceTypes();\r\n refData.value.FinanceTypes = res || [];\r\n } catch (error) {\r\n console.warn('Unable to fetch business use types: ', error);\r\n }\r\n return refData.value.FinanceTypes || [];\r\n }\r\n\r\n async function getDriverLicenseYearsHeldRanges(): Promise {\r\n if (refData.value.DriverLicenseYearsHeldRanges?.length) return refData.value.DriverLicenseYearsHeldRanges;\r\n try {\r\n const res = await _refData.getDriverLicenseYearsHeldRanges();\r\n refData.value.DriverLicenseYearsHeldRanges = res || [];\r\n } catch (error) {\r\n console.warn('Unable to fetch DriverLicenseYearsHeldRanges: ', error);\r\n }\r\n return refData.value.DriverLicenseYearsHeldRanges || [];\r\n }\r\n\r\n return {\r\n getAccessoriesAndModification,\r\n getAtFaultClaimTypes,\r\n getAtFaultClaimValues,\r\n getCancellationTypes,\r\n getParkingLocations,\r\n getBusinessUseTypes,\r\n getFinanceTypes,\r\n getDriverLicenseYearsHeldRanges,\r\n };\r\n});\r\n","import {\r\n checkLifestyleIsEligible,\r\n getJoinLifestyleFormInitialContent,\r\n postLifestyleSubmitPurchase,\r\n} from '@/constants/forms-api.const';\r\nimport { RequestServices as _http } from '../common/request.services';\r\nimport { IPartyMatchRequest } from '@/interfaces/entities/party-match-request.interface';\r\n\r\nexport const JoinWithLifestyleService = {\r\n /**\r\n * Get Lifestyle Config\r\n */\r\n getJoinLifestyleFormInitialContent: () => {\r\n return _http.HttpGet(getJoinLifestyleFormInitialContent);\r\n },\r\n\r\n checkLifestyleIsEligible: (body: IPartyMatchRequest): Promise => {\r\n return _http.HttpPost(checkLifestyleIsEligible, body);\r\n },\r\n\r\n /**\r\n * Submit Join Lifestyle\r\n *\r\n * @param body\r\n * @returns\r\n */\r\n submitPurchase: (body: Record): Promise => {\r\n return _http.HttpPost(postLifestyleSubmitPurchase, body);\r\n },\r\n};\r\n","import { defineStore } from 'pinia';\r\nimport { JoinWithLifestyleService as _joinWithLifestyle } from '@/services/store/join-with-lifestyle.service';\r\nimport { ref } from 'vue';\r\nimport { IPartyMatchRequest } from '@/interfaces/entities/party-match-request.interface';\r\nimport { format, parse, compareAsc, addYears } from 'date-fns';\r\n\r\ninterface PersonalDetails extends Partial {\r\n title?: string;\r\n unit?: string;\r\n buildingName?: string;\r\n streetNumber?: string;\r\n street?: string;\r\n suburb?: string;\r\n postcode?: string;\r\n state?: string;\r\n country?: string;\r\n postalDeliveryType?: string;\r\n}\r\n\r\nexport const useJoinWithLifestyleStore = defineStore('JoinWithLifestyle', () => {\r\n // ------------------------------------------------------------- //\r\n // Define State\r\n // ------------------------------------------------------------- //\r\n const initialConfig = ref<\r\n Partial<{\r\n price: number;\r\n priceSuffix: string;\r\n productName: string;\r\n secondDisclaimer: string;\r\n }>\r\n >({});\r\n\r\n const partyDetails = ref({});\r\n const paymentReceipt = ref<{\r\n prn: string;\r\n assetId: string;\r\n invoiceId: string;\r\n quoteId: string;\r\n result?: string;\r\n isNewMember?: boolean;\r\n }>();\r\n const creditCardDetails = ref>({});\r\n\r\n const mapPersonalDetails = (formData: Record) => {\r\n partyDetails.value.title = formData.fullname?.title;\r\n partyDetails.value.firstName = formData.fullname?.firstName;\r\n partyDetails.value.lastName = formData.fullname?.lastName;\r\n partyDetails.value.phoneNumber = formData?.contactNumber;\r\n partyDetails.value.dateOfBirth = format(parse(formData?.dateOfBirth, 'dd/MM/yyyy', new Date()), 'yyyy-MM-dd', {});\r\n partyDetails.value.emailAddress = formData?.email;\r\n partyDetails.value.postalAddressDpid = formData.postalAddress?.dpid;\r\n\r\n partyDetails.value.unit = formData.postalAddress?.unitNumber;\r\n partyDetails.value.buildingName = formData.postalAddress?.buildingName;\r\n partyDetails.value.streetNumber = formData.postalAddress?.streetNumber;\r\n partyDetails.value.street = formData.postalAddress?.street;\r\n partyDetails.value.suburb = formData.postalAddress?.suburb;\r\n partyDetails.value.postcode = formData.postalAddress?.postcode;\r\n partyDetails.value.state = formData.postalAddress?.state;\r\n partyDetails.value.country = formData.postalAddress?.country;\r\n partyDetails.value.postalDeliveryType = formData.postalAddress?.postalDeliveryType;\r\n };\r\n\r\n const fetchConfig = async () => {\r\n const res = await _joinWithLifestyle.getJoinLifestyleFormInitialContent();\r\n initialConfig.value = res;\r\n };\r\n\r\n const checkEligibility = async () => {\r\n const res = await _joinWithLifestyle.checkLifestyleIsEligible({\r\n firstName: partyDetails.value.firstName!,\r\n lastName: partyDetails.value.lastName!,\r\n dateOfBirth: partyDetails.value.dateOfBirth!,\r\n phoneNumber: partyDetails.value.phoneNumber!,\r\n emailAddress: partyDetails.value.emailAddress!,\r\n postalAddressDpid: partyDetails.value.postalAddressDpid!,\r\n });\r\n if (res == null) throw 'Party match failed';\r\n return res;\r\n };\r\n\r\n const mapPaymentDetails = (formData: Record) => {\r\n creditCardDetails.value = {\r\n cardToken: formData.cardToken,\r\n cardHolder: formData.cardHolder,\r\n MaskedCardNumber: formData.MaskedCardNumber,\r\n cardExpiry: formData.cardExpiry,\r\n cardType: formData.cardType,\r\n autoRenew: formData.autoRenew,\r\n };\r\n };\r\n\r\n const submitPurchase = async () => {\r\n try {\r\n const result = await _joinWithLifestyle.submitPurchase({\r\n firstName: partyDetails.value.firstName!,\r\n lastName: partyDetails.value.lastName!,\r\n dateOfBirth: partyDetails.value.dateOfBirth!,\r\n phoneNumber: partyDetails.value.phoneNumber!,\r\n emailAddress: partyDetails.value.emailAddress!,\r\n postalAddressDpid: partyDetails.value.postalAddressDpid!,\r\n postalDeliveryType: partyDetails.value.postalDeliveryType,\r\n title: partyDetails.value.title,\r\n unit: partyDetails.value.unit,\r\n buildingName: partyDetails.value.buildingName,\r\n streetNumber: partyDetails.value.streetNumber,\r\n street: partyDetails.value.street,\r\n suburb: partyDetails.value.suburb,\r\n postcode: partyDetails.value.postcode,\r\n state: partyDetails.value.state,\r\n country: partyDetails.value.country,\r\n cardToken: creditCardDetails.value.cardToken,\r\n cardHolder: creditCardDetails.value.cardHolder,\r\n MaskedCardNumber: creditCardDetails.value.MaskedCardNumber,\r\n cardExpiry: creditCardDetails.value.cardExpiry,\r\n cardType: creditCardDetails.value.cardType,\r\n autoRenew: creditCardDetails.value.autoRenew,\r\n ...(paymentReceipt.value || {}),\r\n });\r\n\r\n paymentReceipt.value = result;\r\n return result;\r\n } catch {\r\n return null;\r\n }\r\n };\r\n\r\n function isUnderAge() {\r\n if (!partyDetails.value.dateOfBirth) return;\r\n const dob = parse(partyDetails.value.dateOfBirth, 'yyyy-MM-dd', new Date());\r\n return compareAsc(new Date(), addYears(dob, 18)) < 0;\r\n }\r\n\r\n return {\r\n paymentReceipt,\r\n partyDetails,\r\n initialConfig,\r\n fetchConfig,\r\n checkEligibility,\r\n mapPersonalDetails,\r\n mapPaymentDetails,\r\n submitPurchase,\r\n isUnderAge,\r\n };\r\n});\r\n","import { defineStore } from 'pinia';\r\nimport { ReferenceDataServices as _refData } from '@/services/store/reference-data.services';\r\nimport { ref } from 'vue';\r\nimport { INameValue } from '@/interfaces/entities/name-value.interface';\r\nimport { INameCode } from '@/interfaces/entities/name-code.interface';\r\nimport { IDropdownItem, IMembershipLevel } from '@/interfaces';\r\nimport { IHomeExcessValueReferenceData } from '@/interfaces/entities/home-contents.interface';\r\n\r\nenum RefDataTypes {\r\n GENDERS = 'Genders',\r\n PERSON_TITLES = 'PersonTitles',\r\n INSURANCE_PRODUCTS = 'InsuranceProducts',\r\n\r\n PET_TYPES = 'PetTypes',\r\n\r\n MEMBERSHIP_LEVELS = 'MembershipLevels',\r\n\r\n HOME_CLAIM_TYPES = 'HomeClaimTypes',\r\n HOME_LOSS_TYPES = 'HomeLossTypes',\r\n HOME_LOSS_VALUES = 'HomeLossValues',\r\n HOME_ADVANCED_COVER = 'HomeAdvancedCover',\r\n HOME_ROOF_TYPES = 'HomeRoofTypes',\r\n HOME_PRIMARY_CONSTRUCTION_MATERIALS = 'HomePrimaryConstructionMaterials',\r\n HOME_OCCUPANCY_TYPES = 'HomeOccupancyTypes',\r\n HOME_INSURANCE_PRODUCTS = 'HomeInsuranceProducts',\r\n HOME_BUILDING_TYPES = 'HomeBuildingTypes',\r\n HOME_BUILDINGPROPERTYFEATURES = 'HomeAndContentBuildingPropertyFeatures',\r\n NUM_OF_STOREYS = 'NumOfStoreys',\r\n LOWEST_OCCUPIED_FLOOR = 'LowestOccupiedFloor',\r\n HOME_FLOOR_OCCUPANCY = 'HomeFloorOccupancy',\r\n HOME_GROUP_COVER_PRICE_BANDS = 'HomeGroupCoverPriceBands',\r\n HOME_SMALL_BUSINESS_INSURANCE_LIMIT_LEVEL = 'HomeSmallBusinessInsuranceLimitValue',\r\n HOME_EARTHQUAKE_EXCESSES = 'HomeEathquakeExcesses',\r\n HOME_PET_EXCESSES = 'HomePetExcesses',\r\n HOME_PORTABLE_EXCESSES = 'HomePortableExcesses',\r\n HOME_PORTABLE_MOBILE_EXCESSES = 'HomePortableMobileExcesses',\r\n HOME_FRAME_MATERIALS = 'HomeFrameMaterials',\r\n HOME_FLOOR_MATERIALS = 'HomeFloorMaterials',\r\n QUOTING_FEES_BY_MONTH = 'QuotingFeesPayByMonth',\r\n PORTABLE_ITEM_CATEGORIES = 'PortableItemCategories',\r\n HOME_ITEM_CATEGORIES = 'HomeItemCategories',\r\n}\r\n\r\nexport const useReferenceDataStore = defineStore('ReferenceData', () => {\r\n // ------------------------------------------------------------- //\r\n // Define State\r\n // ------------------------------------------------------------- //\r\n const refData = ref>>({});\r\n const refDataNameCode = ref>>({});\r\n\r\n //#region GENERIC\r\n async function getPersonTitles(): Promise {\r\n if (refData.value?.PersonTitles?.length) return refData.value.PersonTitles;\r\n try {\r\n const res = await _refData.getPersonTitles();\r\n refData.value.PersonTitles = res ?? [];\r\n } catch (error) {\r\n console.warn('Unable to fetch person titles: ', error);\r\n }\r\n return refData.value.PersonTitles ?? [];\r\n }\r\n\r\n async function getGenders(): Promise {\r\n if (refData.value?.Genders?.length) return refData.value.Genders;\r\n try {\r\n const res = await _refData.getGenders();\r\n refData.value.Genders = res ?? [];\r\n } catch (error) {\r\n console.warn('Unable to fetch Genders: ', error);\r\n }\r\n return refData.value.Genders ?? [];\r\n }\r\n\r\n async function getPetTypes(quoteType: string): Promise {\r\n if (refData.value?.PetTypes?.length) return refData.value.PetTypes;\r\n try {\r\n const res = await _refData.getPetTypes(quoteType);\r\n refData.value.PetTypes = res ?? [];\r\n } catch (error) {\r\n console.warn('Unable to fetch PetTypes: ', error);\r\n }\r\n return refData.value.PetTypes ?? [];\r\n }\r\n\r\n async function getPetBreeds(quoteType: string, petType: string): Promise {\r\n try {\r\n const data = await _refData.getPetBreeds(quoteType, petType);\r\n return data;\r\n } catch {\r\n return [];\r\n }\r\n }\r\n\r\n async function getInsuranceProductName(quoteType: string) {\r\n if (!refData.value.InsuranceProducts?.length) {\r\n try {\r\n const res = await _refData.getInsuranceProducts();\r\n refData.value.InsuranceProducts = res ?? [];\r\n } catch (error) {\r\n console.warn('Unable to fetch insurance products: ', error);\r\n }\r\n }\r\n return refData.value.InsuranceProducts?.find((item) => item.value == quoteType)?.name;\r\n }\r\n //#endregion\r\n\r\n //#region HOME AND CONTENTS\r\n /**\r\n * Get claim types\r\n *\r\n * @param quoteType\r\n * @returns\r\n */\r\n async function getHomeClaimTypes(quoteType: string): Promise {\r\n if (refData.value.HomeClaimTypes?.length) return refData.value.HomeClaimTypes;\r\n try {\r\n const res = await _refData.getHomeClaimTypes(quoteType);\r\n refData.value.HomeClaimTypes = res ?? [];\r\n } catch (error) {\r\n console.warn('Unable to fetch genders: ', error);\r\n }\r\n return refData.value.HomeClaimTypes ?? [];\r\n }\r\n\r\n async function getHomeLossTypes(quoteType: string): Promise {\r\n if (refData.value.HomeLossTypes?.length) return refData.value.HomeLossTypes;\r\n try {\r\n const res = await _refData.getHomeLossTypes(quoteType);\r\n refData.value.HomeLossTypes = res ?? [];\r\n } catch (error) {\r\n console.warn('Unable to fetch HomeLossTypes: ', error);\r\n }\r\n return refData.value.HomeLossTypes ?? [];\r\n }\r\n\r\n async function getHomeLossValues(quoteType: string): Promise {\r\n if (refData.value.HomeLossValues?.length) return refData.value.HomeLossValues;\r\n try {\r\n const res = await _refData.getHomeLossValues(quoteType);\r\n refData.value.HomeLossValues = res ?? [];\r\n } catch (error) {\r\n console.warn('Unable to fetch HomeLossValues: ', error);\r\n }\r\n return refData.value.HomeLossValues ?? [];\r\n }\r\n\r\n async function getHomeAdvancedCover(quoteType: string, occupancyType: string): Promise {\r\n if (refData.value.HomeAdvancedCover?.length) return refData.value.HomeAdvancedCover;\r\n try {\r\n const res = await _refData.getHomeAdvancedCover(quoteType, occupancyType);\r\n refData.value.HomeAdvancedCover = res ?? [];\r\n } catch (error) {\r\n console.warn('Unable to fetch Advanced Cover: ', error);\r\n }\r\n return refData.value.HomeAdvancedCover ?? [];\r\n }\r\n\r\n async function getHomeRoofTypeMaterials(quoteType: string): Promise {\r\n if (refData.value.HomeRoofTypes?.length) return refData.value.HomeRoofTypes;\r\n try {\r\n const res = await _refData.getHomeRoofTypeMaterials(quoteType);\r\n refData.value.HomeRoofTypes = res ?? [];\r\n } catch (error) {\r\n console.warn('Unable to fetch Roof Types: ', error);\r\n }\r\n return refData.value.HomeRoofTypes ?? [];\r\n }\r\n\r\n async function getHomePrimaryConstructionMaterials(quoteType: string): Promise {\r\n if (refDataNameCode.value.HomePrimaryConstructionMaterials?.length)\r\n return refDataNameCode.value.HomePrimaryConstructionMaterials;\r\n\r\n try {\r\n const res = await _refData.getHomePrimaryConstructionMaterials(quoteType);\r\n refDataNameCode.value.HomePrimaryConstructionMaterials = res ?? [];\r\n } catch (error) {\r\n console.warn('Unable to fetch Primary Construction Materials: ', error);\r\n }\r\n return refDataNameCode.value.HomePrimaryConstructionMaterials ?? [];\r\n }\r\n\r\n async function getHomeOccupancyTypes(): Promise {\r\n if (refDataNameCode.value.HomeOccupancyTypes?.length) {\r\n return refDataNameCode.value.HomeOccupancyTypes.map((item) => {\r\n return {\r\n label: item.name,\r\n value: item.code,\r\n };\r\n });\r\n }\r\n try {\r\n const res = await _refData.getHomeOccupancyTypes();\r\n refDataNameCode.value.HomeOccupancyTypes = res?.values ?? [];\r\n } catch (error) {\r\n console.warn('Unable to fetch Occupancy Types: ', error);\r\n }\r\n return (\r\n refDataNameCode.value.HomeOccupancyTypes?.map((item) => {\r\n return {\r\n label: item.name,\r\n value: item.code,\r\n };\r\n }) ?? []\r\n );\r\n }\r\n\r\n async function getHomeAndContentBuildingPropertyFeatures(): Promise {\r\n if (refData.value.HomeAndContentBuildingPropertyFeatures?.length) {\r\n return refData.value.HomeAndContentBuildingPropertyFeatures.map((item) => {\r\n return {\r\n label: item.name,\r\n value: item.value,\r\n };\r\n });\r\n }\r\n try {\r\n const res = await _refData.getHomeAndContentBuildingPropertyFeatures();\r\n refData.value.HomeAndContentBuildingPropertyFeatures = res ?? [];\r\n } catch (error) {\r\n console.warn('Unable to fetch HomeAndContent BuildingPropertyFeatures: ', error);\r\n }\r\n return (\r\n refData.value.HomeAndContentBuildingPropertyFeatures?.map((item) => {\r\n return {\r\n label: item.name,\r\n value: item.value,\r\n };\r\n }) ?? []\r\n );\r\n }\r\n\r\n async function getHomeAndContentProducts(productType: string, buildingType: string): Promise {\r\n try {\r\n const res = await _refData.getHomeAndContentProducts(productType, buildingType ?? '');\r\n return (\r\n res?.map((item) => {\r\n return {\r\n label: item.name,\r\n value: item.value,\r\n };\r\n }) ?? []\r\n );\r\n } catch (error) {\r\n console.warn('Unable to fetch HomeAndContent Products: ', error);\r\n }\r\n return [];\r\n }\r\n\r\n async function getBuildingTypes(): Promise {\r\n if (refData.value.HomeBuildingTypes?.length) {\r\n return refData.value.HomeBuildingTypes.map((item) => {\r\n return {\r\n label: item.name,\r\n value: item.value,\r\n };\r\n });\r\n }\r\n try {\r\n const res = await _refData.getBuildingTypes();\r\n refData.value.HomeBuildingTypes = res ?? [];\r\n } catch (error) {\r\n console.warn('Unable to fetch Building Types: ', error);\r\n }\r\n return (\r\n refData.value.HomeBuildingTypes?.map((item) => {\r\n return {\r\n label: item.name,\r\n value: item.value,\r\n };\r\n }) ?? []\r\n );\r\n }\r\n\r\n async function getLowestOccupiedFloor(buildingType: string): Promise {\r\n if (refData.value.LowestOccupiedFloor?.length) return refData.value.LowestOccupiedFloor;\r\n try {\r\n const res = await _refData.getLowestOccupiedFloor(buildingType);\r\n refData.value.LowestOccupiedFloor = res ?? [];\r\n } catch (error) {\r\n console.warn('Unable to fetch Lowest Occupied Floor: ', error);\r\n }\r\n return refData.value.LowestOccupiedFloor ?? [];\r\n }\r\n\r\n async function getNumOfStoreys(buildingType: string): Promise {\r\n try {\r\n const res = await _refData.getNumOfStoreys(buildingType);\r\n return (\r\n res?.map((item) => {\r\n return {\r\n label: item.name,\r\n value: item.value,\r\n };\r\n }) ?? []\r\n );\r\n } catch (error) {\r\n console.warn('Unable to fetch Num Of Storeys: ', error);\r\n }\r\n return [];\r\n }\r\n\r\n async function getHomeFloorOccupancy(buildingType: string): Promise {\r\n try {\r\n const res = await _refData.getHomeFloorOccupancy(buildingType);\r\n return (\r\n res?.values?.map((item) => {\r\n return {\r\n label: item.name,\r\n value: item.code,\r\n };\r\n }) ?? []\r\n );\r\n } catch (error) {\r\n console.warn('Unable to fetch Home Floor Occupancy: ', error);\r\n }\r\n return [];\r\n }\r\n\r\n async function getHomeGroupCoverPriceBands(quoteType: string): Promise {\r\n if (refDataNameCode.value.HomeGroupCoverPriceBands?.length) {\r\n return refDataNameCode.value.HomeGroupCoverPriceBands.map((item) => {\r\n return {\r\n label: item.name,\r\n value: item.code,\r\n };\r\n });\r\n }\r\n try {\r\n const res = await _refData.getHomeGroupCoverPriceBands(quoteType);\r\n refDataNameCode.value.HomeGroupCoverPriceBands = res?.values ?? [];\r\n } catch (error) {\r\n console.warn('Unable to fetch HomeGroupCoverPriceBands: ', error);\r\n }\r\n return (\r\n refDataNameCode.value.HomeGroupCoverPriceBands?.map((item) => {\r\n return {\r\n label: item.name,\r\n value: item.code,\r\n };\r\n }) ?? []\r\n );\r\n }\r\n\r\n async function getPortableItemCategories(quoteType: string): Promise {\r\n if (refDataNameCode.value.PortableItemCategories?.length) {\r\n return refDataNameCode.value.PortableItemCategories.map((item) => {\r\n return {\r\n label: item.name,\r\n value: item.code,\r\n };\r\n });\r\n }\r\n try {\r\n const res = await _refData.getPortableItemCategories(quoteType);\r\n refDataNameCode.value.PortableItemCategories = res?.values ?? [];\r\n } catch (error) {\r\n console.warn('Unable to fetch PortableItemCategories: ', error);\r\n }\r\n return (\r\n refDataNameCode.value.PortableItemCategories?.map((item) => {\r\n return {\r\n label: item.name,\r\n value: item.code,\r\n };\r\n }) ?? []\r\n );\r\n }\r\n\r\n async function getHomeItemCategories(quoteType: string, withPolicyUpdate: boolean): Promise {\r\n if (refDataNameCode.value.HomeItemCategories?.length) {\r\n return refDataNameCode.value.HomeItemCategories.map((item) => {\r\n return {\r\n label: item.name,\r\n value: item.code,\r\n };\r\n });\r\n }\r\n try {\r\n const res = await _refData.getHomeItemCategories(quoteType, withPolicyUpdate);\r\n refDataNameCode.value.HomeItemCategories = res?.values ?? [];\r\n } catch (error) {\r\n console.warn('Unable to fetch HomeItemCategories: ', error);\r\n }\r\n return (\r\n refDataNameCode.value.HomeItemCategories?.map((item) => {\r\n return {\r\n label: item.name,\r\n value: item.code,\r\n };\r\n }) ?? []\r\n );\r\n }\r\n\r\n async function getSmallBusinessInsuranceLimitValue(quoteType: string) {\r\n try {\r\n const res = await _refData.getSmallBusinessInsuranceLimitValue(quoteType);\r\n return res?.values ?? [];\r\n } catch (error) {\r\n console.warn('Unable to fetch Home Small Business Insurance Limit Value: ', error);\r\n }\r\n return [];\r\n }\r\n\r\n async function getEathquakeExcesses(quoteType: string): Promise {\r\n if (refData.value.HomeEathquakeExcesses?.length) return refData.value.HomeEathquakeExcesses;\r\n try {\r\n const res = await _refData.getEathquakeExcesses(quoteType);\r\n refData.value.HomeEathquakeExcesses = res ?? [];\r\n } catch (error) {\r\n console.warn('Unable to fetch Home Eathquake Excesses: ', error);\r\n }\r\n return refData.value.HomeEathquakeExcesses ?? [];\r\n }\r\n\r\n async function getPetExcesses(quoteType: string): Promise {\r\n if (refData.value.HomePetExcesses?.length) return refData.value.HomePetExcesses;\r\n try {\r\n const res = await _refData.getPetExcesses(quoteType);\r\n refData.value.HomePetExcesses = res ?? [];\r\n } catch (error) {\r\n console.warn('Unable to fetch Home Pet Excesses: ', error);\r\n }\r\n return refData.value.HomePetExcesses ?? [];\r\n }\r\n\r\n async function getPortableExcesses(quoteType: string): Promise {\r\n if (refData.value.HomePortableExcesses?.length) return refData.value.HomePortableExcesses;\r\n try {\r\n const res = await _refData.getPortableExcesses(quoteType);\r\n refData.value.HomePortableExcesses = res ?? [];\r\n } catch (error) {\r\n console.warn('Unable to fetch Home Portable Excesses: ', error);\r\n }\r\n return refData.value.HomePortableExcesses ?? [];\r\n }\r\n\r\n async function getPortableMobileExcesses(quoteType: string): Promise {\r\n if (refData.value.HomePortableMobileExcesses?.length) return refData.value.HomePortableMobileExcesses;\r\n try {\r\n const res = await _refData.getPortableMobileExcesses(quoteType);\r\n refData.value.HomePortableMobileExcesses = res ?? [];\r\n } catch (error) {\r\n console.warn('Unable to fetch Home Portable Excesses: ', error);\r\n }\r\n return refData.value.HomePortableMobileExcesses ?? [];\r\n }\r\n\r\n async function getFrameMaterials(quoteType: string): Promise {\r\n if (refDataNameCode.value.HomeFrameMaterials?.length) return refDataNameCode.value.HomeFrameMaterials;\r\n try {\r\n const res = await _refData.getFrameMaterials(quoteType);\r\n refDataNameCode.value.HomeFrameMaterials = res ?? [];\r\n } catch (error) {\r\n console.warn('Unable to fetch Home Frame Material: ', error);\r\n }\r\n return refDataNameCode.value.HomeFrameMaterials ?? [];\r\n }\r\n\r\n async function getFloorMaterials(quoteType: string): Promise {\r\n if (refDataNameCode.value.HomeFloorMaterials?.length) return refDataNameCode.value.HomeFloorMaterials;\r\n try {\r\n const res = await _refData.getFloorMaterials(quoteType);\r\n refDataNameCode.value.HomeFloorMaterials = res ?? [];\r\n } catch (error) {\r\n console.warn('Unable to fetch Home Floor Materials: ', error);\r\n }\r\n return refDataNameCode.value.HomeFloorMaterials ?? [];\r\n }\r\n\r\n async function getMembershipLevels(quoteType: string): Promise {\r\n try {\r\n const res = await _refData.getMembershipLevels(quoteType);\r\n return res?.values ?? [];\r\n } catch (error) {\r\n console.warn('Unable to fetch MembershipLevels: ', error);\r\n }\r\n return [];\r\n }\r\n\r\n async function getHomeExcessValues(): Promise {\r\n try {\r\n const res = await _refData.getHomeExcessValues();\r\n return res?.values ?? [];\r\n } catch (error) {\r\n console.warn('Unable to fetch HomeExcessValues: ', error);\r\n }\r\n return [];\r\n }\r\n\r\n async function getAdvancedCoverValues(quoteType: string, occupancyType: string): Promise {\r\n try {\r\n const res = await _refData.getAdvancedCoverValues(quoteType, occupancyType);\r\n return (\r\n res?.values?.map((item) => {\r\n return {\r\n label: item.name,\r\n value: item.code,\r\n };\r\n }) ?? []\r\n );\r\n } catch (error) {\r\n console.warn('Unable to fetch AdvancedCoverValues: ', error);\r\n }\r\n return [];\r\n }\r\n\r\n async function getPetCover(quoteType: string, occupancyType: string): Promise {\r\n try {\r\n const res = await _refData.getPetCover(quoteType, occupancyType);\r\n return (\r\n res?.values?.map((item) => {\r\n return {\r\n label: item.name,\r\n value: item.code,\r\n };\r\n }) ?? []\r\n );\r\n } catch (error) {\r\n console.warn('Unable to fetch PetCover: ', error);\r\n }\r\n return [];\r\n }\r\n\r\n async function getContentsExcessValues(): Promise {\r\n try {\r\n const res = await _refData.getContentsExcessValues();\r\n return res?.values ?? [];\r\n } catch (error) {\r\n console.warn('Unable to fetch ContentsExcessValues: ', error);\r\n }\r\n return [];\r\n }\r\n\r\n async function getQuotingFeesPayByMonth(effectiveDate: Date): Promise {\r\n if (refData.value.QuotingFeesPayByMonth?.length) return refData.value.QuotingFeesPayByMonth;\r\n try {\r\n const res = await _refData.getQuotingFeesPayByMonth(effectiveDate);\r\n refData.value.QuotingFeesPayByMonth = res ?? [];\r\n } catch (error) {\r\n console.warn('Unable to fetch Quoting Fees Pay By Month: ', error);\r\n }\r\n return refData.value.QuotingFeesPayByMonth ?? [];\r\n }\r\n\r\n async function getMonitoredAlarmTypes(quoteType: string): Promise {\r\n try {\r\n const res = await _refData.getMonitoredAlarmTypes(quoteType);\r\n return (\r\n res?.map((item) => {\r\n return {\r\n label: item.name,\r\n value: item.value,\r\n };\r\n }) ?? []\r\n );\r\n } catch (error) {\r\n console.warn('Unable to fetch Monitored Alarm Types: ', error);\r\n }\r\n return [];\r\n }\r\n\r\n //#endregion\r\n\r\n return {\r\n getPersonTitles,\r\n getGenders,\r\n getPetTypes,\r\n getPetBreeds,\r\n getHomeClaimTypes,\r\n getHomeLossTypes,\r\n getHomeLossValues,\r\n getHomeAdvancedCover,\r\n getHomeRoofTypeMaterials,\r\n getHomePrimaryConstructionMaterials,\r\n getHomeOccupancyTypes,\r\n getHomeAndContentProducts,\r\n getHomeAndContentBuildingPropertyFeatures,\r\n getBuildingTypes,\r\n getNumOfStoreys,\r\n getLowestOccupiedFloor,\r\n getHomeFloorOccupancy,\r\n getHomeGroupCoverPriceBands,\r\n getSmallBusinessInsuranceLimitValue,\r\n getEathquakeExcesses,\r\n getPetExcesses,\r\n getPortableExcesses,\r\n getPortableMobileExcesses,\r\n getFrameMaterials,\r\n getFloorMaterials,\r\n getMonitoredAlarmTypes,\r\n getInsuranceProductName,\r\n getMembershipLevels,\r\n getQuotingFeesPayByMonth,\r\n getPortableItemCategories,\r\n getHomeItemCategories,\r\n getHomeExcessValues,\r\n getContentsExcessValues,\r\n getAdvancedCoverValues,\r\n getPetCover,\r\n };\r\n});\r\n","import {\r\n getJORProducts,\r\n postJORCreateParty,\r\n postJORCreateQuote,\r\n postJORFinaliseQuote,\r\n postJorSubmitPurchase,\r\n} from '@/constants/forms-api.const';\r\nimport { RequestServices as _http } from '../common/request.services';\r\nimport { JoinOnRoadProduct } from '@/interfaces/entities/jor-product.interface';\r\nimport { CreatePartyRequest, CreatePartyResponse } from '@/interfaces/entities/jor-create-party.interface';\r\nimport { CreateQuoteRequest, CreateQuoteResponse } from '@/interfaces/entities/jor-create-quote.interface';\r\nimport { FinaliseQuoteResponse } from '@/interfaces/entities/jor-finalise-quote.interface';\r\n\r\nexport const JoinOnRoadService = {\r\n /**\r\n * Fetch join on road products\r\n * @returns\r\n */\r\n async getJORProducts(): Promise {\r\n try {\r\n return await _http.HttpGet(`${getJORProducts}`);\r\n } catch (error) {\r\n console.error('Failed to load JOR products');\r\n return null;\r\n }\r\n },\r\n\r\n /**\r\n * Create Party for JOR new member\r\n *\r\n * @param body\r\n * @returns\r\n */\r\n async CreateParty(body: CreatePartyRequest): Promise {\r\n try {\r\n return await _http.HttpPost(postJORCreateParty, body);\r\n } catch (error) {\r\n console.error('Failed to create party for JOR new member');\r\n return null;\r\n }\r\n },\r\n\r\n /**\r\n * Create Quote for JOR\r\n *\r\n * @param body\r\n * @returns\r\n */\r\n async CreateQuote(body: CreateQuoteRequest): Promise {\r\n try {\r\n return await _http.HttpPost(postJORCreateQuote, body);\r\n } catch (error) {\r\n console.error('Failed to create quote for JOR');\r\n return null;\r\n }\r\n },\r\n\r\n /**\r\n * Finalise Quote for JOR\r\n *\r\n * @param apttusQuoteId\r\n * @param apttusCartId\r\n * @returns\r\n */\r\n async FinaliseQuote(apttusQuoteId: string, apttusCartId: string): Promise {\r\n try {\r\n return await _http.HttpPost(postJORFinaliseQuote.replace('{0}', apttusQuoteId).replace('{1}', apttusCartId));\r\n } catch (error) {\r\n console.error('Failed to finalise quote for JOR');\r\n return null;\r\n }\r\n },\r\n\r\n /**\r\n * Submit Purchase for Join On Road\r\n *\r\n * @param body\r\n * @returns\r\n */\r\n submitPurchase: (body: Record): Promise => {\r\n return _http.HttpPost(postJorSubmitPurchase, body);\r\n },\r\n} as const;\r\n","export interface VehicleRequestModel {\r\n nvic?: string;\r\n kerbWeight?: number | null;\r\n kerbWeightUnit?: string;\r\n length?: number | null;\r\n lengthUnit?: string;\r\n weight?: number | null;\r\n weightUnit?: string;\r\n loadCapacity?: number | null;\r\n loadCapacityUnit?: string;\r\n registrationNumber: string;\r\n manufacturingYear?: number | null;\r\n stateCode?: string;\r\n body: VehicleBodyRequestModel;\r\n make: VehicleDetailRequestModel;\r\n model: VehicleDetailRequestModel;\r\n variant: VehicleDetailRequestModel;\r\n option: VehicleOptionRequestModel;\r\n fuelType: VehicleFuelTypeRequestModel;\r\n}\r\n\r\nexport interface VehicleDetailRequestModel {\r\n code?: string;\r\n description?: string;\r\n}\r\n\r\nexport interface VehicleBodyRequestModel extends VehicleDetailRequestModel {\r\n colour?: string;\r\n}\r\n\r\nexport interface VehicleOptionRequestModel {\r\n transmission?: string;\r\n transmissionTypeCode?: string;\r\n description?: string;\r\n}\r\n\r\nexport interface VehicleFuelTypeRequestModel {\r\n description?: string;\r\n}\r\n\r\nexport enum SurchargeLevels {\r\n Member = 'Member',\r\n NonMember = 'Non-Member',\r\n}\r\n\r\nexport interface CreateQuoteRequest {\r\n productCode: string;\r\n productName: string;\r\n apttusId: string;\r\n surchargeLevel: SurchargeLevels;\r\n vehicle: VehicleRequestModel;\r\n}\r\n\r\nexport interface CreateQuoteResponse {\r\n price?: number | null;\r\n apttusQuoteId: string;\r\n apttusCartId: string;\r\n productCode: string;\r\n productName: string;\r\n isError: boolean;\r\n}\r\n","import { defineStore } from 'pinia';\r\nimport { ref, computed, watch, toRefs } from 'vue';\r\nimport { JoinOnRoadService as _joinOnRoadService } from '@/services/store/join-on-road.service';\r\nimport { JoinOnRoadDetails, JoinOnRoadGoogleMapDetails } from '@/interfaces/pages/join-on-road.interface';\r\nimport { CreatePartyRequest, CreatePartyResponse } from '@/interfaces/entities/jor-create-party.interface';\r\nimport { JORGoogleMapService } from '@/services/store/jor-google-map.service';\r\nimport { JoinOnRoadProduct } from '@/interfaces/entities/jor-product.interface';\r\nimport { RoadsideAssistanceService as _roadsideAssistanceService } from '@/services/store/roadside-assistance.service';\r\nimport { AccountServices as _account } from '@/services/store/account.services';\r\nimport vehicleService from '@/services/store/vehicle.service';\r\nimport {\r\n AssistanceMatchPartyRequest,\r\n AssistanceMatchPartyResponse,\r\n PartyMatchStatus,\r\n} from '@/interfaces/entities/roadside-assistance.interface';\r\nimport { dateToDateString } from '@/utils/data-transforms';\r\nimport { IVehicleEligibility } from '@/interfaces/entities/vehicle-eligibility.interface';\r\nimport {\r\n CreateQuoteRequest,\r\n CreateQuoteResponse,\r\n SurchargeLevels,\r\n} from '@/interfaces/entities/jor-create-quote.interface';\r\nimport { IReviewSummary, IReviewSummaryItem } from '@/interfaces';\r\nimport { FinaliseQuoteResponse } from '@/interfaces/entities/jor-finalise-quote.interface';\r\nimport {\r\n CONFIRM_PURCHASE_STEP_ID,\r\n createRsaJobHtmlRequest,\r\n createRsaJobJoinOnRoadRequest,\r\n PAYMENT_CONFIRMATION_STEP_ID,\r\n PAYMENT_STEP_ID,\r\n REVIEW_STEP_ID,\r\n YOUR_DETAILS_PERSONAL_DETAILS_STEP_ID,\r\n YOUR_DETAILS_STEP_ID,\r\n} from '@/forms/join-on-road/mappings/join-on-road-mappings';\r\nimport { calculateAge } from '@/utils/common-helper';\r\nimport { useAnalyticsStore } from '../analytics/analytics.state';\r\nimport {\r\n IAnalyticsForm,\r\n IAnalyticsPaymentDetail,\r\n IAnalyticsProfileInfo,\r\n IFormAnalytics,\r\n} from '@/interfaces/forms/analytics-interface';\r\nimport { FormEvents } from '@/enums/form-events.enum';\r\nimport { useFormStore } from '../form/formStore';\r\nimport { useAccountStore } from '../account/account.state';\r\nimport { useFindCarStore } from '../find-car/find-car.state';\r\nimport { IsEligibleResponse } from '@/interfaces/entities/jor-check-eligibility.interface';\r\n\r\nexport const useJoinOnRoadStore = defineStore('JoinOnRoad', () => {\r\n const analyticsStore = useAnalyticsStore();\r\n const formStore = useFormStore();\r\n const accountStore = useAccountStore();\r\n const findCarStore = useFindCarStore();\r\n\r\n // State\r\n const joinOnRoadDetails = ref({\r\n breakdownLocationLatitude: 0,\r\n breakdownLocationLongitude: 0,\r\n breakdownLocationAddress: '',\r\n comments: '',\r\n vehicleRegistration: '',\r\n vehicleYear: '',\r\n vehicleMake: '',\r\n vehicleModel: '',\r\n vehicleColour: '',\r\n isSearchByRego: false,\r\n phoneNumber: '',\r\n homeAddress: undefined,\r\n checkPostalAddress: false,\r\n postalAddress: undefined,\r\n phoneNumberToday: '',\r\n breakdownCause: '',\r\n title: '',\r\n firstName: '',\r\n lastName: '',\r\n emailAddress: '',\r\n birthDate: new Date(),\r\n jorSelectedProduct: undefined,\r\n finalProductPrice: 0,\r\n partyMatchStatus: undefined,\r\n });\r\n\r\n const joinOnRoadGoogleMapDetails = ref({\r\n apiKey: '',\r\n mapId: '',\r\n defaultZoomLevel: 0,\r\n tipText: '',\r\n });\r\n\r\n const joinOnRoadVehicleEligibility = ref();\r\n\r\n const joinOnRoadProducts = ref([]);\r\n const baseProductCode = 'AR007'; /* base product is RACQ Everyday - AR007 */\r\n const nonMemberSurchargeProductCode = 'ARIS';\r\n const memberSurchargeProductCode = 'ARIS01';\r\n const skipYourDetailsPhoneAddressStep = ref(null);\r\n const isPartyMatched = ref(false);\r\n const showDiscountBanner = ref(false);\r\n const isPartyExitsOrCreated = ref(false);\r\n const isQuoteCreated = ref(false);\r\n const apttusId = ref(null);\r\n const d365Id = ref(null);\r\n const d365IdCreatedByJOR = ref(null); // to avoid incorrect journey; ref. DS-3326\r\n const apttusCartId = ref(null);\r\n const apttusQuoteId = ref(null);\r\n const finalQuotePrice = ref(null);\r\n const isQuoteFinalised = ref(false);\r\n const assetId = ref(null);\r\n const assetLineItemId = ref(null);\r\n const prn = ref(null);\r\n const invoiceId = ref(null);\r\n const policyNumber = ref(null);\r\n const isMemberLoggedIn = ref(false);\r\n const membershipCardNumber = ref(null);\r\n const isActiveMember = computed(() => eligibilityState.value?.isActiveMember);\r\n const surchargeProductPrice = computed(() =>\r\n getProductPrice(isActiveMember.value ? memberSurchargeProductCode : nonMemberSurchargeProductCode)\r\n );\r\n const surchargeProductMemberDiscount = computed(\r\n () => getProductPrice(nonMemberSurchargeProductCode) - getProductPrice(memberSurchargeProductCode)\r\n );\r\n const coreProductPrice = computed(() => getProductPrice(joinOnRoadDetails.value?.jorSelectedProduct));\r\n const totalProductPrice = computed(() => surchargeProductPrice.value + coreProductPrice.value);\r\n const isBaseProduct = computed(() => joinOnRoadDetails.value.jorSelectedProduct === baseProductCode);\r\n const productTitle = computed(() => getProductTitle(joinOnRoadDetails.value?.jorSelectedProduct));\r\n const isExistingParty = computed(() => isMemberLoggedIn.value || isPartyMatched.value);\r\n const isMemberWithActiveRsaProduct = computed(() => isExistingParty.value && eligibilityState.value?.isCovered);\r\n const matchPartyState = ref(null);\r\n const eligibilityState = ref(null);\r\n const ShouldJeopardyBasedOnPolicyStatus = ref(null);\r\n const creditCardDetails = ref>({});\r\n const paymentReceipt = ref<{\r\n result: string;\r\n transactionId: string;\r\n reference: string;\r\n }>();\r\n const rsaTrackingId = ref(null);\r\n const dispatchGroup = ref(null);\r\n\r\n const createQuoteAttemptCount = ref(0);\r\n const reviewSummaryItemEdit = ref();\r\n const reviewSummaryEdit = ref();\r\n const shouldAdjustYourDetailsPhoneAddressStep = ref(false); // Ref to track the adding/removing of yourdetails (with phone number and home/postal address fields) step\r\n const {\r\n vehicleRegistration,\r\n vehicleYear,\r\n vehicleMake,\r\n vehicleModel,\r\n vehicleColour,\r\n firstName,\r\n lastName,\r\n emailAddress,\r\n } = toRefs(joinOnRoadDetails.value);\r\n const birthDate = computed(() => {\r\n const date = joinOnRoadDetails.value?.birthDate;\r\n return date ? dateToDateString(joinOnRoadDetails.value?.birthDate, 'ddMMyyyy') : '';\r\n });\r\n\r\n // Getters\r\n const getJoinOnRoadDetails = computed(() => joinOnRoadDetails.value);\r\n const getJoinOnRoadGoogleMapDetails = computed(() => joinOnRoadGoogleMapDetails.value);\r\n\r\n // Actions\r\n async function retrieveJORGoogleMapsDetails() {\r\n joinOnRoadGoogleMapDetails.value.apiKey = await JORGoogleMapService.getJORGoogleMapsApiKey();\r\n joinOnRoadGoogleMapDetails.value.mapId = await JORGoogleMapService.getJORGoogleMapsMapId();\r\n joinOnRoadGoogleMapDetails.value.defaultZoomLevel = await JORGoogleMapService.getJORGoogleMapsDefaultZoomLevel();\r\n joinOnRoadGoogleMapDetails.value.tipText = await JORGoogleMapService.getJORGoogleMapsTipText();\r\n }\r\n\r\n function setBreakdownLocation(latitude: number, longitude: number, formattedAddress: string) {\r\n joinOnRoadDetails.value.breakdownLocationLatitude = latitude;\r\n joinOnRoadDetails.value.breakdownLocationLongitude = longitude;\r\n joinOnRoadDetails.value.breakdownLocationAddress = formattedAddress;\r\n }\r\n\r\n function isBreakdownLocationSet() {\r\n return (\r\n joinOnRoadDetails.value.breakdownLocationLatitude !== 0 &&\r\n joinOnRoadDetails.value.breakdownLocationLongitude !== 0\r\n );\r\n }\r\n\r\n function setComments(comments: string) {\r\n joinOnRoadDetails.value.comments = comments;\r\n }\r\n\r\n function setReviewSummaryEditClicked(summary: IReviewSummary, summaryReviewItem: IReviewSummaryItem) {\r\n reviewSummaryEdit.value = summary;\r\n reviewSummaryItemEdit.value = summaryReviewItem;\r\n }\r\n\r\n function clearComments() {\r\n joinOnRoadDetails.value.comments = '';\r\n }\r\n\r\n function setVehicleDetails(\r\n vehicleRegistration: string,\r\n vehicleYear: string,\r\n vehicleMake: string,\r\n vehicleModel: string,\r\n vehicleColour: string,\r\n isSearchByRego: boolean\r\n ) {\r\n joinOnRoadDetails.value.vehicleRegistration = vehicleRegistration;\r\n joinOnRoadDetails.value.vehicleYear = vehicleYear;\r\n joinOnRoadDetails.value.vehicleMake = vehicleMake;\r\n joinOnRoadDetails.value.vehicleModel = vehicleModel;\r\n joinOnRoadDetails.value.vehicleColour = vehicleColour;\r\n joinOnRoadDetails.value.isSearchByRego = isSearchByRego;\r\n }\r\n\r\n async function setVehicleEligibility(glassesId: number) {\r\n const vehicleEligibility = await vehicleService.getEligibility(glassesId);\r\n joinOnRoadVehicleEligibility.value = vehicleEligibility;\r\n }\r\n\r\n function clearVehicleDetails() {\r\n joinOnRoadDetails.value.vehicleRegistration = '';\r\n joinOnRoadDetails.value.vehicleYear = '';\r\n joinOnRoadDetails.value.vehicleMake = '';\r\n joinOnRoadDetails.value.vehicleModel = '';\r\n joinOnRoadDetails.value.vehicleColour = '';\r\n joinOnRoadDetails.value.isSearchByRego = false;\r\n }\r\n\r\n async function setJORProducts(): Promise {\r\n const jorProducts: JoinOnRoadProduct[] | null = await _joinOnRoadService.getJORProducts();\r\n if (jorProducts === null) {\r\n return false;\r\n }\r\n\r\n /*\r\n Set the type property based on productCode.\r\n ARIS, ARIS01 - Surcharge\r\n Rest of the ones -Product\r\n */\r\n\r\n const surchargeProductCodes = new Set([nonMemberSurchargeProductCode, memberSurchargeProductCode]);\r\n joinOnRoadProducts.value = jorProducts.map((jorProduct) => {\r\n return {\r\n ...jorProduct,\r\n type: surchargeProductCodes.has(jorProduct.productCode) ? 'surcharge' : 'product',\r\n };\r\n });\r\n\r\n return true;\r\n }\r\n\r\n function setDefaultJORProduct() {\r\n const defaultProductCode = baseProductCode;\r\n if (\r\n joinOnRoadProducts.value.length > 0 &&\r\n joinOnRoadProducts.value.some((jorProduct) => jorProduct.productCode === defaultProductCode)\r\n ) {\r\n joinOnRoadDetails.value.jorSelectedProduct = defaultProductCode;\r\n }\r\n }\r\n\r\n function updateJORProductSelection(productCode: string) {\r\n if (\r\n joinOnRoadProducts.value.length > 0 &&\r\n joinOnRoadProducts.value.some(\r\n (jorProduct) => jorProduct.productCode === productCode && jorProduct.type === 'product'\r\n )\r\n ) {\r\n joinOnRoadDetails.value.jorSelectedProduct = productCode;\r\n }\r\n }\r\n\r\n function getProductTitle(productCode: string | undefined): string {\r\n return joinOnRoadProducts.value?.find((jorProduct) => jorProduct.productCode === productCode)?.productName ?? '';\r\n }\r\n\r\n function getProductPrice(productCode: string | undefined): number {\r\n return joinOnRoadProducts.value?.find((jorProduct) => jorProduct.productCode === productCode)?.price ?? 0;\r\n }\r\n\r\n function setFinalProductPrice() {\r\n joinOnRoadDetails.value.finalProductPrice = totalProductPrice.value;\r\n }\r\n\r\n async function setMatchPartyState(): Promise {\r\n try {\r\n const matchPartyRequest: AssistanceMatchPartyRequest = {\r\n firstName: joinOnRoadDetails.value?.firstName,\r\n lastName: joinOnRoadDetails.value?.lastName,\r\n dateOfBirth: dateToDateString(joinOnRoadDetails.value.birthDate, 'yyyy-MM-dd'),\r\n emailAddress: joinOnRoadDetails.value?.emailAddress,\r\n };\r\n const response = await _roadsideAssistanceService.matchParty(matchPartyRequest);\r\n matchPartyState.value = response;\r\n return response !== null;\r\n } catch {\r\n return false;\r\n }\r\n }\r\n\r\n function shouldShowDiscountBanner() {\r\n // hide discount banner if membership is not active\r\n if (!eligibilityState.value?.isActiveMember) return false;\r\n let showBanner = false;\r\n\r\n // Membership loyalty levels (lower case)\r\n const GOLD_50 = 'gold50';\r\n const GOLD = 'gold';\r\n const BRONZE = 'bronze';\r\n const SILVER = 'silver';\r\n\r\n // RSA Products (lower case)\r\n const RACQ_EVERYDAY_PLUS = 'racq everyday plus';\r\n const RACQ_ULTRA_CARE = 'racq ultra care';\r\n const RACQ_ULTIMATE_CARE = 'racq ultimate care';\r\n\r\n const membershipLevel = eligibilityState.value?.membershipLoyaltyLevel.toLowerCase();\r\n const productTitleLower = productTitle.value.toLowerCase();\r\n\r\n switch (membershipLevel) {\r\n case GOLD_50:\r\n showBanner = true;\r\n break;\r\n case GOLD:\r\n if ([RACQ_EVERYDAY_PLUS, RACQ_ULTRA_CARE, RACQ_ULTIMATE_CARE].indexOf(productTitleLower) > -1) {\r\n showBanner = true;\r\n }\r\n break;\r\n case BRONZE:\r\n case SILVER:\r\n if ([RACQ_EVERYDAY_PLUS, RACQ_ULTRA_CARE].indexOf(productTitleLower) > -1) {\r\n showBanner = true;\r\n }\r\n break;\r\n }\r\n\r\n return showBanner;\r\n }\r\n\r\n async function checkAndSetRsaEligibility(): Promise {\r\n try {\r\n // vehicleRegistration store value won't be available till the check is passed (get it from find car store)\r\n if (!d365Id.value || !findCarStore.registrationNumber) {\r\n console.error('Missing Vehicle Rego or d365Id');\r\n throw new Error('Missing Vehicle Rego or d365Id');\r\n }\r\n\r\n const response = await _roadsideAssistanceService.checkEligibility(d365Id.value, findCarStore.registrationNumber);\r\n eligibilityState.value = response;\r\n\r\n // Block user with active policy purchased today; ref. DS-3303\r\n if (response.surchargeRequired && !response.isCovered) {\r\n ShouldJeopardyBasedOnPolicyStatus.value = true;\r\n } else {\r\n ShouldJeopardyBasedOnPolicyStatus.value = await _roadsideAssistanceService.ShouldJeopardy(\r\n eligibilityState.value?.policyStatus\r\n );\r\n }\r\n\r\n return response != null;\r\n } catch {\r\n return false;\r\n }\r\n }\r\n async function setJorDetailsFromIdentity(): Promise {\r\n try {\r\n // Get identity details and prefill user details\r\n const identity = accountStore.identityDetails;\r\n\r\n // Fill in user details from identity\r\n if (identity !== undefined) {\r\n if (identity.birthDate) joinOnRoadDetails.value.birthDate = identity.birthDate!;\r\n if (identity.email) joinOnRoadDetails.value.emailAddress = identity.email!;\r\n if (identity.firstName) joinOnRoadDetails.value.firstName = identity.firstName!;\r\n if (identity.lastName) joinOnRoadDetails.value.lastName = identity.lastName!;\r\n if (identity.d365Id) d365Id.value = identity.d365Id!;\r\n if (identity.apttusId) apttusId.value = identity.apttusId!;\r\n if (identity.membershipCardNumber) membershipCardNumber.value = identity.membershipCardNumber!;\r\n }\r\n\r\n isMemberLoggedIn.value = !!identity?.d365Id;\r\n return true;\r\n } catch {\r\n return false;\r\n }\r\n }\r\n\r\n async function createParty() {\r\n if (!isPartyMatched.value && !isPartyExitsOrCreated.value) {\r\n const response: CreatePartyResponse | null = await _joinOnRoadService.CreateParty(mapToCreatePartyRequest());\r\n if (response) {\r\n apttusId.value = response.apttusId;\r\n d365Id.value = response.d365Id;\r\n d365IdCreatedByJOR.value = response.d365Id;\r\n isPartyExitsOrCreated.value = true;\r\n }\r\n }\r\n }\r\n\r\n function mapToCreatePartyRequest(): CreatePartyRequest {\r\n const homeAddress = joinOnRoadDetails.value.homeAddress;\r\n const postalAddress = joinOnRoadDetails.value.postalAddress;\r\n const request: CreatePartyRequest = {\r\n title: joinOnRoadDetails.value.title,\r\n firstName: joinOnRoadDetails.value?.firstName,\r\n lastName: joinOnRoadDetails.value?.lastName,\r\n dateOfBirth: dateToDateString(joinOnRoadDetails.value.birthDate, 'yyyy-MM-dd'),\r\n emailAddress: joinOnRoadDetails.value?.emailAddress,\r\n preferredPhoneNumber: joinOnRoadDetails.value.phoneNumber,\r\n membershipType: productTitle.value,\r\n homeAddress: {\r\n dpid: homeAddress?.dpid,\r\n unit: homeAddress?.unitNumber,\r\n streetNumber: homeAddress?.streetNumber,\r\n street: homeAddress?.street,\r\n suburb: homeAddress?.suburb,\r\n postcode: homeAddress?.postcode,\r\n state: homeAddress?.state,\r\n country: homeAddress?.countryISO,\r\n },\r\n postalAddress: {\r\n postalDeliveryType: postalAddress?.postalDeliveryType,\r\n dpid: postalAddress?.dpid,\r\n unit: postalAddress?.unitNumber,\r\n streetNumber: postalAddress?.streetNumber,\r\n street: postalAddress?.street,\r\n suburb: postalAddress?.suburb,\r\n postcode: postalAddress?.postcode,\r\n state: postalAddress?.state,\r\n country: postalAddress?.countryISO,\r\n },\r\n };\r\n return request;\r\n }\r\n\r\n async function createQuote() {\r\n const maxCreateQuoteAttempts = 2;\r\n if (\r\n apttusId.value &&\r\n (isMemberLoggedIn.value || isPartyExitsOrCreated.value) &&\r\n !isQuoteCreated.value &&\r\n createQuoteAttemptCount.value < maxCreateQuoteAttempts\r\n ) {\r\n createQuoteAttemptCount.value += 1;\r\n const response: CreateQuoteResponse | null = await _joinOnRoadService.CreateQuote(mapToCreateQuoteRequest());\r\n if (!response) {\r\n invalidateQuote();\r\n } else if (response.isError || !isPriceValid(response)) {\r\n // retry if quote contains error OR price incorrect\r\n invalidateQuote();\r\n createQuote();\r\n } else if (!response.isError) {\r\n apttusCartId.value = response.apttusCartId;\r\n apttusQuoteId.value = response.apttusQuoteId;\r\n finalQuotePrice.value = response.price ?? null;\r\n createQuoteAttemptCount.value = 0;\r\n isQuoteCreated.value = true;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Validate quote price\r\n *\r\n * @param {CreateQuoteResponse} response\r\n * @returns {boolean} validationResult\r\n */\r\n function isPriceValid(response: CreateQuoteResponse) {\r\n // Block $0 / partial $0 quote\r\n if (!response.price || surchargeProductPrice.value == response.price || coreProductPrice.value == response.price)\r\n return false;\r\n\r\n /**\r\n * Non active member should not have any discount\r\n * Match to quote price with digital price list\r\n */\r\n const digitalPriceMismatchApttusPrice = totalProductPrice.value != response.price;\r\n if (!eligibilityState.value?.isActiveMember && digitalPriceMismatchApttusPrice) {\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n function mapToCreateQuoteRequest(): CreateQuoteRequest {\r\n const vehicleDetail = joinOnRoadVehicleEligibility.value?.vehicleDetail;\r\n const request: CreateQuoteRequest = {\r\n productCode: joinOnRoadDetails.value.jorSelectedProduct ?? '',\r\n productName: productTitle.value,\r\n apttusId: apttusId.value ?? '',\r\n surchargeLevel: isActiveMember.value ? SurchargeLevels.Member : SurchargeLevels.NonMember,\r\n vehicle: {\r\n nvic: vehicleDetail?.nvic,\r\n kerbWeight: vehicleDetail?.kerbWeight,\r\n kerbWeightUnit: vehicleDetail?.kerbWeightUnit,\r\n length: vehicleDetail?.length,\r\n lengthUnit: vehicleDetail?.lengthUnit,\r\n weight: vehicleDetail?.weight,\r\n weightUnit: vehicleDetail?.weightUnit,\r\n loadCapacity: vehicleDetail?.loadCapacity,\r\n loadCapacityUnit: vehicleDetail?.loadCapacityUnit,\r\n registrationNumber: vehicleDetail?.registrationNumber ?? joinOnRoadDetails.value.vehicleRegistration,\r\n manufacturingYear: vehicleDetail?.manufacturingYear ?? Number(joinOnRoadDetails.value.vehicleYear),\r\n stateCode: vehicleDetail?.stateCode ?? joinOnRoadDetails.value.postalAddress?.state,\r\n body: {\r\n code: vehicleDetail?.body.code,\r\n description: vehicleDetail?.body.description,\r\n colour: vehicleDetail?.body.colour ?? joinOnRoadDetails.value.vehicleColour,\r\n },\r\n make: {\r\n code: vehicleDetail?.make.code,\r\n description: vehicleDetail?.make.description ?? joinOnRoadDetails.value.vehicleMake,\r\n },\r\n model: {\r\n code: vehicleDetail?.model.code,\r\n description: vehicleDetail?.model.description ?? joinOnRoadDetails.value.vehicleModel,\r\n },\r\n variant: {\r\n code: vehicleDetail?.variant.code,\r\n description: vehicleDetail?.variant.description,\r\n },\r\n option: {\r\n transmission: vehicleDetail?.option.transmission,\r\n },\r\n fuelType: {\r\n description: vehicleDetail?.fuelType.code,\r\n },\r\n },\r\n };\r\n return request;\r\n }\r\n\r\n async function finaliseQuote(): Promise {\r\n try {\r\n if (apttusQuoteId.value !== null && apttusCartId.value !== null) {\r\n const response: FinaliseQuoteResponse | null = await _joinOnRoadService.FinaliseQuote(\r\n apttusQuoteId.value ?? '',\r\n apttusCartId.value ?? ''\r\n );\r\n if (!response || response.isError) {\r\n invalidateQuoteFinalising();\r\n throw new Error('API_FAILED');\r\n } else if (!response.isError) {\r\n assetId.value = response.assetId;\r\n prn.value = response.prn;\r\n invoiceId.value = response.invoiceLineItem.invoiceId;\r\n isQuoteFinalised.value = true;\r\n assetLineItemId.value = response.invoiceLineItem.id;\r\n policyNumber.value = response.policyNumber;\r\n }\r\n return true;\r\n } else {\r\n throw new Error('MISSING_PARAMS');\r\n }\r\n } catch (error) {\r\n console.error(error);\r\n return false;\r\n }\r\n }\r\n\r\n function invalidateParty() {\r\n if (!isMemberLoggedIn.value) {\r\n d365Id.value = null;\r\n apttusId.value = null;\r\n }\r\n isPartyMatched.value = isPartyExitsOrCreated.value = false;\r\n }\r\n\r\n function invalidateQuote() {\r\n apttusCartId.value = apttusQuoteId.value = finalQuotePrice.value = null;\r\n isQuoteCreated.value = false;\r\n }\r\n\r\n function invalidateQuoteFinalising() {\r\n assetId.value = prn.value = invoiceId.value = assetLineItemId.value = null;\r\n isQuoteFinalised.value = false;\r\n }\r\n\r\n const partyMatchStatusMap = {\r\n [PartyMatchStatus.Exact]: PartyMatchStatus.Exact,\r\n [PartyMatchStatus.None]: PartyMatchStatus.None,\r\n [PartyMatchStatus.Multiple]: PartyMatchStatus.Multiple,\r\n };\r\n\r\n watch(matchPartyState, (newVal) => {\r\n if (newVal) {\r\n invalidateParty();\r\n invalidateQuote();\r\n if (newVal !== null) {\r\n // Assign the party match status\r\n joinOnRoadDetails.value.partyMatchStatus =\r\n partyMatchStatusMap[newVal.matchStatus as PartyMatchStatus] || undefined;\r\n\r\n skipYourDetailsPhoneAddressStep.value = isPartyMatched.value = newVal.matchStatus === PartyMatchStatus.Exact;\r\n if (newVal.matchStatus === PartyMatchStatus.Exact) {\r\n apttusId.value = newVal?.apttusId ?? null;\r\n d365Id.value = newVal?.d365Id ?? null;\r\n isPartyExitsOrCreated.value = isPartyMatched.value = true;\r\n }\r\n } else {\r\n skipYourDetailsPhoneAddressStep.value = null;\r\n }\r\n }\r\n });\r\n\r\n watch(isPartyMatched, (newVal) => {\r\n if (newVal) {\r\n // When there is no logged in member session it is a must to keep the partyMatch status in sync with the account store\r\n // This will allow to show the banner text\r\n accountStore.partyMatched = newVal;\r\n accountStore.identityDetails = {\r\n firstName: joinOnRoadDetails.value.firstName,\r\n };\r\n } else {\r\n accountStore.partyMatched = false;\r\n accountStore.identityDetails = undefined;\r\n }\r\n });\r\n\r\n // Change in product selection - invalidate quote\r\n watch(productTitle, (newVal) => {\r\n if (newVal) {\r\n if (isMemberLoggedIn.value || isPartyMatched.value) {\r\n showDiscountBanner.value = shouldShowDiscountBanner();\r\n }\r\n invalidateQuote();\r\n createQuoteAttemptCount.value = 0;\r\n }\r\n });\r\n\r\n // Change in vehicle information - invalidate quote\r\n watch([vehicleRegistration, vehicleYear, vehicleMake, vehicleModel, vehicleModel], (newValues, oldValues) => {\r\n if (newValues.some((val, index) => val !== oldValues[index])) {\r\n invalidateQuote();\r\n createQuoteAttemptCount.value = 0;\r\n }\r\n });\r\n\r\n // Change in personal information - invalidate party and quote\r\n watch([firstName, lastName, emailAddress, birthDate], (newValues, oldValues) => {\r\n if (newValues.some((val, index) => val !== oldValues[index])) {\r\n shouldAdjustYourDetailsPhoneAddressStep.value = true;\r\n invalidateParty();\r\n invalidateQuote();\r\n }\r\n });\r\n\r\n const mapPaymentDetails = (formData: Record) => {\r\n creditCardDetails.value = {\r\n cardToken: formData.cardToken,\r\n cardHolder: formData.cardHolder,\r\n maskedCardNumber: formData.MaskedCardNumber,\r\n cardExpiry: formData.cardExpiry,\r\n cardType: formData.cardType,\r\n autoRenew: formData.autoRenew,\r\n };\r\n };\r\n\r\n const submitPurchase = async () => {\r\n try {\r\n const result = await _joinOnRoadService.submitPurchase({\r\n // Standard Fields\r\n cardToken: creditCardDetails.value.cardToken,\r\n autoRenew: creditCardDetails.value.autoRenew,\r\n prn: prn.value,\r\n amount: finalQuotePrice.value,\r\n invoiceId: invoiceId.value,\r\n apttusId: apttusId.value,\r\n // AutoRenew Exclusive Fields\r\n cardHolder: creditCardDetails.value.cardHolder,\r\n MaskedCardNumber: creditCardDetails.value.maskedCardNumber,\r\n cardExpiry: creditCardDetails.value.cardExpiry,\r\n cardType: creditCardDetails.value.cardType,\r\n assetId: assetId.value,\r\n });\r\n\r\n paymentReceipt.value = result;\r\n return result;\r\n } catch (error) {\r\n return null;\r\n }\r\n };\r\n\r\n const createRsaJobJoinOnRoad = async (loyaltyLevel: string) => {\r\n try {\r\n const rsaRequest = await createRsaJobJoinOnRoadRequest(\r\n joinOnRoadDetails.value,\r\n apttusId.value,\r\n policyNumber.value,\r\n assetId.value,\r\n loyaltyLevel\r\n );\r\n\r\n const result = await _roadsideAssistanceService.createRsaJobJoinOnRoad(rsaRequest);\r\n\r\n if (result?.jobId) {\r\n // Set the trackingId if successful\r\n rsaTrackingId.value = result.jobId;\r\n dispatchGroup.value = result.roadsideAssistanceStatus?.dispatchGroup;\r\n }\r\n return result;\r\n } catch (error) {\r\n return null;\r\n }\r\n };\r\n\r\n const createRsaJobHtml = async () => {\r\n try {\r\n const rsaRequest = await createRsaJobHtmlRequest(joinOnRoadDetails.value);\r\n\r\n const result = await _roadsideAssistanceService.createRsaJobHtml(rsaRequest);\r\n\r\n if (result?.jobId) {\r\n // Set the trackingId if successful\r\n rsaTrackingId.value = result.jobId;\r\n dispatchGroup.value = result.roadsideAssistanceStatus?.dispatchGroup;\r\n }\r\n return result;\r\n } catch (error) {\r\n return null;\r\n }\r\n };\r\n\r\n const isUnderAge = (birthDate: Date): boolean | null => {\r\n try {\r\n const minAge = 21;\r\n return calculateAge(birthDate) < minAge;\r\n } catch (error) {\r\n console.error(error);\r\n return null;\r\n }\r\n };\r\n\r\n const pushAnalytics = (options: {\r\n event: FormEvents;\r\n form: IAnalyticsForm;\r\n profileInfo?: IAnalyticsProfileInfo;\r\n payment?: Partial;\r\n }) => {\r\n const model: IFormAnalytics = {\r\n event: options.event,\r\n form: options.form,\r\n };\r\n\r\n // Set ProfileInfo\r\n model.profileInfo = {\r\n memberLevel: eligibilityState.value?.membershipLoyaltyLevel || 'Non-member',\r\n ...(d365Id.value && { contactID: d365Id.value }),\r\n } as IAnalyticsProfileInfo;\r\n\r\n if (options.payment) {\r\n model.payment = options.payment;\r\n }\r\n model.form.name = formStore.formName;\r\n\r\n analyticsStore.pushAnalytics(model);\r\n };\r\n\r\n const isTrackable = async () => {\r\n return await _roadsideAssistanceService.isTrackable(dispatchGroup.value!);\r\n };\r\n\r\n /**\r\n * Add/ remove steps\r\n */\r\n async function checkAndAdjustStep(\r\n stepId: string,\r\n addStep: boolean = false,\r\n indexToAddAfter: number | undefined = undefined\r\n ) {\r\n const step = formStore.getStep(stepId);\r\n if (step && !addStep) {\r\n await formStore.removeStep(step.stepIndex!);\r\n } else if (!step && addStep && indexToAddAfter) {\r\n formStore.addStepToScope(stepId, {\r\n removable: true,\r\n afterIndex: indexToAddAfter,\r\n withOrdinalNumber: false,\r\n });\r\n }\r\n }\r\n\r\n const adjustSteps = async () => {\r\n if (isMemberLoggedIn.value) {\r\n // remove your details step, your details phone address step\r\n await checkAndAdjustStep(YOUR_DETAILS_STEP_ID); // phone number, home address, postal address\r\n await checkAndAdjustStep(YOUR_DETAILS_PERSONAL_DETAILS_STEP_ID); // name, email, dob\r\n } else if (isPartyMatched.value) {\r\n // remove address step\r\n await checkAndAdjustStep(YOUR_DETAILS_STEP_ID); // phone number, home address, postal address\r\n } else {\r\n // add your details step, your details phone address step\r\n await checkAndAdjustStep(YOUR_DETAILS_STEP_ID, true, formStore.currentStepIndex + 1);\r\n await checkAndAdjustStep(YOUR_DETAILS_PERSONAL_DETAILS_STEP_ID, true, formStore.currentStepIndex + 2);\r\n }\r\n\r\n const reviewStepIndex = formStore.getStep(REVIEW_STEP_ID)?.stepIndex ?? -1;\r\n\r\n // skip steps after review step if the logged in member has an active RSA product\r\n if (isMemberWithActiveRsaProduct.value) {\r\n // Render as a 4 step form\r\n await checkAndAdjustStep(CONFIRM_PURCHASE_STEP_ID);\r\n await checkAndAdjustStep(PAYMENT_STEP_ID);\r\n } else if (reviewStepIndex > -1) {\r\n // Render as a 6 step form\r\n await checkAndAdjustStep(CONFIRM_PURCHASE_STEP_ID, true, reviewStepIndex + 1);\r\n await checkAndAdjustStep(PAYMENT_STEP_ID, true, reviewStepIndex + 2);\r\n await checkAndAdjustStep(PAYMENT_CONFIRMATION_STEP_ID, true, reviewStepIndex + 3);\r\n }\r\n };\r\n\r\n return {\r\n joinOnRoadDetails,\r\n joinOnRoadGoogleMapDetails,\r\n joinOnRoadVehicleEligibility,\r\n joinOnRoadProducts,\r\n baseProductCode,\r\n surchargeProductPrice,\r\n surchargeProductMemberDiscount,\r\n coreProductPrice,\r\n totalProductPrice,\r\n isBaseProduct,\r\n productTitle,\r\n matchPartyState,\r\n eligibilityState,\r\n ShouldJeopardyBasedOnPolicyStatus,\r\n creditCardDetails,\r\n skipYourDetailsPhoneAddressStep,\r\n isPartyMatched,\r\n showDiscountBanner,\r\n isMemberLoggedIn,\r\n isMemberWithActiveRsaProduct,\r\n isPartyExitsOrCreated,\r\n isQuoteCreated,\r\n apttusId,\r\n d365Id,\r\n d365IdCreatedByJOR,\r\n apttusCartId,\r\n isActiveMember,\r\n apttusQuoteId,\r\n finalQuotePrice,\r\n isQuoteFinalised,\r\n assetId,\r\n paymentReceipt,\r\n rsaTrackingId,\r\n dispatchGroup,\r\n assetLineItemId,\r\n membershipCardNumber,\r\n prn,\r\n invoiceId,\r\n policyNumber,\r\n shouldAdjustYourDetailsPhoneAddressStep,\r\n getJoinOnRoadDetails,\r\n getJoinOnRoadGoogleMapDetails,\r\n reviewSummaryEdit,\r\n reviewSummaryItemEdit,\r\n retrieveJORGoogleMapsDetails,\r\n setBreakdownLocation,\r\n isBreakdownLocationSet,\r\n setComments,\r\n clearComments,\r\n setVehicleDetails,\r\n clearVehicleDetails,\r\n setJORProducts,\r\n setDefaultJORProduct,\r\n updateJORProductSelection,\r\n getProductPrice,\r\n getProductTitle,\r\n setFinalProductPrice,\r\n setMatchPartyState,\r\n checkAndSetRsaEligibility,\r\n setJorDetailsFromIdentity,\r\n createQuote,\r\n finaliseQuote,\r\n mapPaymentDetails,\r\n submitPurchase,\r\n setVehicleEligibility,\r\n setReviewSummaryEditClicked,\r\n createRsaJobJoinOnRoad,\r\n createRsaJobHtml,\r\n isUnderAge,\r\n pushAnalytics,\r\n isTrackable,\r\n createParty,\r\n adjustSteps,\r\n };\r\n});\r\n","import { defineStore } from 'pinia';\r\nimport { ReferenceDataServices as _refData } from '@/services/store/reference-data.services';\r\nimport { ref } from 'vue';\r\nimport { INameValue } from '@/interfaces/entities/name-value.interface';\r\n\r\nenum RefDataTypes {\r\n HOME_CLAIM_TYPES = 'HomeClaimTypes',\r\n HOME_LOSS_TYPES = 'HomeLossTypes',\r\n HOME_LOSS_VALUES = 'HomeLossValues',\r\n}\r\n\r\nexport const useReferenceDataIQHomeStore = defineStore('ReferenceDataIQHome', () => {\r\n // ------------------------------------------------------------- //\r\n // Define State\r\n // ------------------------------------------------------------- //\r\n const refData = ref>>({});\r\n\r\n /**\r\n * Get claim types\r\n *\r\n * @param quoteType\r\n * @returns\r\n */\r\n async function getHomeClaimTypes(quoteType: string): Promise {\r\n if (refData.value.HomeClaimTypes?.length) return refData.value.HomeClaimTypes;\r\n try {\r\n const res = await _refData.getHomeClaimTypes(quoteType);\r\n refData.value.HomeClaimTypes = res || [];\r\n } catch (error) {\r\n console.warn('Unable to fetch genders: ', error);\r\n }\r\n return refData.value.HomeClaimTypes || [];\r\n }\r\n\r\n async function getHomeLossTypes(quoteType: string): Promise {\r\n if (refData.value.HomeLossTypes?.length) return refData.value.HomeLossTypes;\r\n try {\r\n const res = await _refData.getHomeLossTypes(quoteType);\r\n refData.value.HomeLossTypes = res || [];\r\n } catch (error) {\r\n console.warn('Unable to fetch HomeLossTypes: ', error);\r\n }\r\n return refData.value.HomeLossTypes || [];\r\n }\r\n\r\n async function getHomeLossValues(quoteType: string): Promise {\r\n if (refData.value.HomeLossValues?.length) return refData.value.HomeLossValues;\r\n try {\r\n const res = await _refData.getHomeLossValues(quoteType);\r\n refData.value.HomeLossValues = res || [];\r\n } catch (error) {\r\n console.warn('Unable to fetch HomeLossValues: ', error);\r\n }\r\n return refData.value.HomeLossValues || [];\r\n }\r\n\r\n return {\r\n getHomeClaimTypes,\r\n getHomeLossTypes,\r\n getHomeLossValues,\r\n };\r\n});\r\n","/// \r\nimport { GoogleMapDetails } from '@/interfaces/entities/google-map.interface';\r\nimport { defineStore } from 'pinia';\r\nimport { EventEmitter } from 'events';\r\n\r\n// Define the gm_authFailure function\r\ndeclare global {\r\n interface Window {\r\n gm_authFailure: (error: any) => void;\r\n }\r\n}\r\n\r\nexport const useGoogleMapStore = defineStore('GoogleMap', {\r\n state: (): GoogleMapDetails => {\r\n return {\r\n _formattedAddress: '',\r\n _latitude: 0,\r\n _longitude: 0,\r\n _placeId: '',\r\n _apiKey: '',\r\n _mapId: '',\r\n _defaultZoomLevel: 0,\r\n _tipText: '',\r\n _eventEmitter: new EventEmitter(),\r\n _addressState: null,\r\n };\r\n },\r\n getters: {\r\n formattedAddress: (state) => state._formattedAddress,\r\n latitude: (state) => state._latitude,\r\n longitude: (state) => state._longitude,\r\n placeId: (state) => state._placeId,\r\n apiKey: (state) => state._apiKey,\r\n mapId: (state) => state._mapId,\r\n defaultZoomLevel: (state) => state._defaultZoomLevel,\r\n tipText: (state) => state._tipText,\r\n eventEmitter: (state) => state._eventEmitter,\r\n errorEventName: () => 'googleMapsApiError',\r\n },\r\n actions: {\r\n setFormattedAddress(address: string) {\r\n this._formattedAddress = address;\r\n },\r\n setLatitude(latitude: number) {\r\n this._latitude = latitude;\r\n },\r\n setLongitude(longitude: number) {\r\n this._longitude = longitude;\r\n },\r\n setPlaceId(placeId: string) {\r\n this._placeId = placeId;\r\n },\r\n setApiKey(apiKey: string) {\r\n this._apiKey = apiKey;\r\n },\r\n setMapId(mapId: string) {\r\n this._mapId = mapId;\r\n },\r\n setDefaultZoomLevel(defaultZoomLevel: number) {\r\n this._defaultZoomLevel = defaultZoomLevel;\r\n },\r\n setTipText(tipText: string) {\r\n this._tipText = tipText;\r\n },\r\n setAddressStateFromAddressComponents(addressComponents: any) {\r\n let addressState = null;\r\n if (addressComponents?.length > 0) {\r\n const firstComponent = addressComponents[0];\r\n // Check which format the components are in\r\n const shortTextKey = 'short_name' in firstComponent ? 'short_name' : 'shortText';\r\n\r\n for (const component of addressComponents) {\r\n if (component?.types.includes('administrative_area_level_1')) {\r\n addressState = component[shortTextKey];\r\n break;\r\n }\r\n }\r\n }\r\n this._addressState = addressState;\r\n },\r\n /**\r\n * Load the Google Maps API\r\n * @param apiKey\r\n */\r\n async loadGoogleMapsApi(): Promise {\r\n if (this._apiKey) {\r\n return new Promise((resolve, reject) => {\r\n window.gm_authFailure = (error: any) => this.emitErrorEvent(error);\r\n\r\n if (document.getElementById('google-maps-api')) {\r\n resolve();\r\n return;\r\n }\r\n\r\n const script = document.createElement('script');\r\n script.id = 'google-maps-api';\r\n script.src = `https://maps.googleapis.com/maps/api/js?key=${this._apiKey}&libraries=places,marker`;\r\n script.async = true;\r\n script.defer = true;\r\n script.onload = () => {\r\n console.log('Google Maps API script loaded.');\r\n resolve();\r\n };\r\n script.onerror = (error) => {\r\n console.log('Google Maps API script error:', error);\r\n this.emitErrorEvent(error);\r\n reject(error);\r\n };\r\n document.head.appendChild(script);\r\n });\r\n }\r\n },\r\n emitErrorEvent(error: any) {\r\n if (!this._eventEmitter) {\r\n this._eventEmitter = new EventEmitter();\r\n }\r\n this._eventEmitter.emit(this.errorEventName, error);\r\n },\r\n },\r\n});\r\n","import { defineStore } from 'pinia';\r\nimport { PaymentServices as _paymentService } from '@/services/store';\r\nimport { IPaymentConfigurationRequest } from '@/interfaces/entities/payment-configuration-request.interface';\r\nimport { IPaymentConfigurationResponse } from '@/interfaces/entities/payment-configuration-response.interface';\r\nimport { ref, readonly, Ref, watch } from 'vue';\r\nimport { PaymentTypes } from '@/enums/payment-types.enum';\r\nimport { IBSBBranchDetails } from '@/interfaces/entities/bsb-branch-details.interface';\r\nimport { IDirectDebitDetails } from '@/interfaces/payment/direct-debit-details';\r\nimport { v4 } from 'uuid';\r\nimport { ICardDetails } from '@/interfaces';\r\nimport { IQConfigSettings, SettingCategory, useConfigSettingsStore } from '@/store';\r\nimport { PaymentFrequency } from '@/enums/payment-frequency';\r\n\r\nexport const usePaymentStore = defineStore('Payment', () => {\r\n const configSettingsStore = useConfigSettingsStore();\r\n\r\n const reference = ref('');\r\n const amount = ref('');\r\n const buttonText = ref('');\r\n const tokenizeOnly = ref(true);\r\n const googlePay = ref(false);\r\n const bsbBranchDetails = ref(null);\r\n const submitPaymentCallback = ref<((type: PaymentTypes) => void) | null>(null);\r\n const disablePaymentPanel = ref(false);\r\n const paymentRetryAttempts = ref(0);\r\n const maxRetries = ref(3);\r\n const termsAndConditionsAccepted = ref(false);\r\n\r\n // Fatzebra POST submit states\r\n const cardDetailsRef: Ref = ref(null);\r\n const directDebitDetails: Ref = ref(null);\r\n const selectedPaymentMethod = ref();\r\n const selectedPaymentFrequency = ref(PaymentFrequency.Monthly);\r\n const selectedPaymentFrequencyDisplayText = ref();\r\n\r\n const paymentFrequencyWording = ref<{ annual: ''; monthly: '' }>();\r\n\r\n function changePaymentMethod(paymentMethod: PaymentTypes) {\r\n selectedPaymentMethod.value = paymentMethod;\r\n }\r\n\r\n watch(\r\n () => selectedPaymentFrequencyDisplayText.value,\r\n (newValue: any) => {\r\n selectedPaymentFrequency.value =\r\n newValue == paymentFrequencyWording.value?.annual ? PaymentFrequency.Annually : PaymentFrequency.Monthly;\r\n }\r\n );\r\n\r\n async function setup(config?: {\r\n amount?: string;\r\n buttonText?: string;\r\n reference?: string;\r\n callback?: (type: PaymentTypes) => void;\r\n }) {\r\n amount.value = config?.amount ?? '0';\r\n buttonText.value = config?.buttonText ?? 'Submit Payment';\r\n reference.value = config?.reference ?? v4();\r\n submitPaymentCallback.value = config?.callback ?? submitPaymentCallback.value;\r\n\r\n const submissionRetries = (await configSettingsStore.getSetting(\r\n IQConfigSettings.PaymentSubmissionRetries,\r\n SettingCategory.IQSettings\r\n )) as number;\r\n if (submissionRetries) {\r\n maxRetries.value = submissionRetries;\r\n }\r\n }\r\n\r\n function mapToCardDetails(obj: any): ICardDetails {\r\n const arrCardExpiry = obj.card_expiry.split('/'); //The value will be always be in MM/yyyy format\r\n return {\r\n cardType: obj.card_type,\r\n cardHoldersName: obj.card_holder,\r\n cardExpiryMonth: arrCardExpiry[0],\r\n cardExpiryYear: arrCardExpiry[1],\r\n token: obj.token,\r\n maskedCardNumber: obj.card_number,\r\n };\r\n }\r\n\r\n async function setDirectDebitDetails(accountName: string, bsbNumber: string, accountNumber: string) {\r\n const branch = await _paymentService.bsbLookup(bsbNumber);\r\n directDebitDetails.value = {};\r\n directDebitDetails.value.nameOfAccount = accountName;\r\n directDebitDetails.value.bankStateBranchNumber = bsbNumber;\r\n directDebitDetails.value.financialInstitutionName = branch ? branch.name : '';\r\n directDebitDetails.value.accountNumber = accountNumber;\r\n }\r\n\r\n async function getPaymentIframeUrl(): Promise {\r\n try {\r\n const paymentConfigurationPayload: IPaymentConfigurationRequest = {\r\n reference: reference.value,\r\n amount: amount.value,\r\n buttonText: buttonText.value,\r\n tokenizeOnly: tokenizeOnly.value,\r\n googlePay: googlePay.value,\r\n };\r\n\r\n const paymentConfiguration = await _paymentService.getPaymentIframeConfiguration(paymentConfigurationPayload);\r\n if (paymentConfiguration) {\r\n return paymentConfiguration;\r\n }\r\n } catch (error) {\r\n return null;\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Fz credit card tokenization complete\r\n *\r\n * @param payloadResponseData\r\n */\r\n function setFzTransactionState(payloadResponseData: object | null) {\r\n cardDetailsRef.value = payloadResponseData ? mapToCardDetails(payloadResponseData) : null;\r\n try {\r\n submitPaymentCallback.value && submitPaymentCallback.value(PaymentTypes.CreditCard);\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n\r\n /**\r\n * Validate BSB\r\n *\r\n * @param bsb\r\n */\r\n async function bsbLookup(bsb: string) {\r\n const res = await _paymentService.bsbLookup(bsb);\r\n bsbBranchDetails.value = res;\r\n return !!res;\r\n }\r\n\r\n /**\r\n * Reset Fz IFrame\r\n */\r\n function resetIframe() {\r\n reference.value = v4();\r\n }\r\n\r\n /**\r\n * Increment payment attempt\r\n */\r\n function incrementPaymentAttempt() {\r\n paymentRetryAttempts.value = paymentRetryAttempts.value + 1;\r\n }\r\n\r\n /**\r\n * Increment payment attempt\r\n */\r\n function hasExceededMaxPaymentAttempts() {\r\n return paymentRetryAttempts.value >= maxRetries.value;\r\n }\r\n\r\n return {\r\n reference,\r\n amount,\r\n buttonText,\r\n tokenizeOnly,\r\n googlePay,\r\n selectedPaymentMethod,\r\n selectedPaymentFrequency,\r\n selectedPaymentFrequencyDisplayText,\r\n paymentFrequencyWording,\r\n getPaymentIframeUrl,\r\n setFzTransactionState,\r\n changePaymentMethod,\r\n bsbLookup,\r\n submitPaymentCallback,\r\n disablePaymentPanel,\r\n termsAndConditionsAccepted,\r\n cardDetails: readonly(cardDetailsRef),\r\n setDirectDebitDetails,\r\n directDebitDetails,\r\n setup,\r\n resetIframe,\r\n paymentRetryAttempts,\r\n maxRetries,\r\n incrementPaymentAttempt,\r\n hasExceededMaxPaymentAttempts,\r\n bsbBranchDetails,\r\n };\r\n});\r\n","import {\r\n changePaymentDetailsApplyRulesAndSave,\r\n changePaymentDetailsFetchPaymentDetails,\r\n} from '@/constants/forms-api.const';\r\nimport { RequestServices as _http } from '../common/request.services';\r\n\r\nexport const ChangePaymentDetailsService = {\r\n /**\r\n * Fetch payment details\r\n *\r\n * @param quoteSessionId\r\n */\r\n fetchPaymentDetails(quoteSessionId: string) {\r\n return _http.HttpPost(changePaymentDetailsFetchPaymentDetails.replace('{0}', quoteSessionId));\r\n },\r\n\r\n /**\r\n * Save to session\r\n *\r\n * @param payload\r\n */\r\n applyRulesAndSave(payload: Record) {\r\n return _http.HttpPost(changePaymentDetailsApplyRulesAndSave, payload);\r\n },\r\n};\r\n","import {\r\n bindQuoteSessionUrl,\r\n quoteSessionProcessPaymentUrl,\r\n withdrawQuoteSessionUrl,\r\n} from './../../constants/forms-api.const';\r\nimport { RequestServices as _http } from '../common/request.services';\r\nimport { IServiceResponse, IServiceResponseNoData } from '@/interfaces/entities';\r\n\r\nexport interface ProcessPaymentRequest extends PayWithCardRequest {\r\n interimHeaderComments?: string;\r\n saveInterimHeader: boolean;\r\n}\r\n\r\nexport interface PayWithCardRequest {\r\n cardToken: string;\r\n amount: number;\r\n invoiceId?: string;\r\n}\r\n\r\nexport interface ProcessPaymentResponse {\r\n receiptNumber: string;\r\n result: string;\r\n}\r\n\r\nexport const QuoteSessionService = {\r\n /**\r\n * Bind quote change\r\n *\r\n * @param quoteSessionId\r\n * @returns\r\n */\r\n bindQuoteSession: (quoteSessionId: string) => {\r\n return _http.HttpPost(bindQuoteSessionUrl.replace('{0}', quoteSessionId), {});\r\n },\r\n\r\n /**\r\n * Withdraw Quote Session\r\n *\r\n * @param quoteSessionId\r\n * @returns\r\n */\r\n withdrawQuoteSession: (quoteSessionId: string): Promise => {\r\n return _http.HttpPost(withdrawQuoteSessionUrl.replace('{0}', quoteSessionId));\r\n },\r\n\r\n /**\r\n * Process payment\r\n *\r\n * @param quoteSessionId\r\n * @returns\r\n */\r\n processPayment: (\r\n policyNumber: string,\r\n quoteSessionId: string,\r\n data: ProcessPaymentRequest\r\n ): Promise> => {\r\n return _http.HttpPost(\r\n quoteSessionProcessPaymentUrl.replace('{0}', policyNumber).replace('{1}', quoteSessionId),\r\n data\r\n );\r\n },\r\n};\r\n","export enum JeopardyLevel {\r\n Error = 1,\r\n Warning = 2,\r\n}\r\n","import { defineStore } from 'pinia';\r\nimport { ChangePaymentDetailsService as _changePaymentDetails } from '@/services/store/change-payment-details.service';\r\nimport { QuoteSessionService as _quoteSession } from '@/services/store/quote-session.service';\r\nimport { ref } from 'vue';\r\nimport { JP_GENERIC_CODE } from '@/constants/jeopardy-codes.const';\r\nimport {\r\n IChangePaymentDetailsModel,\r\n IChangePaymentDetailsViewModel,\r\n ICreditCardPaymentDetails,\r\n IDirectDebitDetails,\r\n InsuranceProduct,\r\n} from '@/interfaces';\r\nimport { PaymentMethod } from '@/enums/payment-types.enum';\r\nimport { IJeopardy } from '@/interfaces/entities';\r\nimport { JeopardyLevel } from '@/enums/jeopardy-level.enum';\r\n\r\nexport const useChangePaymentDetailsStore = defineStore('ChangePaymentDetails', () => {\r\n // ------------------------------------------------------------- //\r\n // Define State\r\n // ------------------------------------------------------------- //\r\n const quoteSessionId = ref();\r\n const creditCardDetails = ref();\r\n const bankAccountDetails = ref();\r\n const paymentMethod = ref();\r\n const insuranceProduct = ref();\r\n const model = ref>({});\r\n const errors = ref([]);\r\n const insuranceProductName = ref('');\r\n const responseViewModel = ref();\r\n\r\n /**\r\n * Fetch payment details\r\n */\r\n async function fetchPaymentDetails() {\r\n const params = new URLSearchParams(location.search);\r\n quoteSessionId.value = params.get('quoteSessionId');\r\n if (!quoteSessionId.value) throw JP_GENERIC_CODE;\r\n const res = await _changePaymentDetails.fetchPaymentDetails(quoteSessionId.value);\r\n if (res.currentBankAccountDetails) {\r\n bankAccountDetails.value = res.currentBankAccountDetails;\r\n paymentMethod.value = PaymentMethod.BankAccount;\r\n } else if (res.currentCreditCardDetails) {\r\n creditCardDetails.value = res.currentCreditCardDetails;\r\n paymentMethod.value = PaymentMethod.CreditCard;\r\n }\r\n\r\n insuranceProduct.value = res.currentPolicy;\r\n model.value.authorisedPolicyNumbers = res.authorisedPolicyNumbers;\r\n model.value.d365Id = res.d365Id;\r\n model.value.userId = res.userId;\r\n }\r\n\r\n /**\r\n * Apply rules and save to session\r\n *\r\n * @param requestQuote\r\n */\r\n async function applyRulesAndSave(requestQuote: boolean, bindChange: boolean = false) {\r\n if (model.value.paymentMethod == PaymentMethod.BankAccount) {\r\n delete model.value.creditCardDetails;\r\n } else if (model.value.paymentMethod == PaymentMethod.CreditCard) {\r\n delete model.value.bankAccountDetails;\r\n }\r\n\r\n if (responseViewModel.value?.instalmentFeeStatus) {\r\n model.value.instalmentFeeStatus = responseViewModel.value?.instalmentFeeStatus;\r\n }\r\n const payload = {\r\n quoteSessionId: quoteSessionId.value,\r\n requestQuote,\r\n bindChange,\r\n currentPolicy: insuranceProduct.value,\r\n model: model.value,\r\n };\r\n\r\n errors.value = [];\r\n const res: { jeopardies: IJeopardy[]; viewModel: IChangePaymentDetailsViewModel } =\r\n await _changePaymentDetails.applyRulesAndSave(payload);\r\n\r\n responseViewModel.value = res?.viewModel;\r\n\r\n errors.value = res?.jeopardies || [\r\n {\r\n code: JP_GENERIC_CODE,\r\n level: JeopardyLevel.Error,\r\n },\r\n ];\r\n }\r\n\r\n async function withdrawQuoteSession() {\r\n try {\r\n await _quoteSession.withdrawQuoteSession(quoteSessionId.value!);\r\n } catch (ex) {\r\n console.warn('Unable to withdraw quote session and work order: ', ex);\r\n }\r\n }\r\n\r\n return {\r\n fetchPaymentDetails,\r\n applyRulesAndSave,\r\n withdrawQuoteSession,\r\n insuranceProductName,\r\n insuranceProduct,\r\n creditCardDetails,\r\n bankAccountDetails,\r\n paymentMethod,\r\n model,\r\n errors,\r\n responseViewModel,\r\n };\r\n});\r\n","import { changeVehicleLocationGetPolicy, changeVehicleLocationApplyBusinessRules } from '@/constants/forms-api.const';\r\nimport { RequestServices as _http } from '../common/request.services';\r\nimport { IJeopardy, IServiceResponse } from '@/interfaces/entities';\r\nimport { QuotePremiumDetails } from '@/interfaces/entities/premium-details.interface';\r\nimport { TermPaymentDetails } from '@/interfaces/entities/term-payment-details.interface';\r\n\r\nexport interface Coverage {\r\n id: string;\r\n garagingType: string;\r\n garagingLocation: string;\r\n vehicle: {\r\n formattedLine1: string;\r\n formattedLine2: string;\r\n make: string;\r\n model: string;\r\n year: string;\r\n };\r\n isMotor: boolean;\r\n isHome: boolean;\r\n isPet: boolean;\r\n isBoat: boolean;\r\n}\r\n\r\nexport interface VehiclePolicy {\r\n policyNumber: string;\r\n coverages: Coverage[];\r\n termStart: Date | undefined;\r\n termEnd: Date | undefined;\r\n renewalTermStart: Date | undefined;\r\n renewalTermEnd: Date | undefined;\r\n currentTermPaymentDetails: TermPaymentDetails;\r\n renewalTermPaymentDetails: TermPaymentDetails;\r\n state: {\r\n isPolicyChangeAllowed: boolean;\r\n canDeferPayment: boolean;\r\n canChangePaymentDetails: boolean;\r\n canSwitchToMonthlyPayments: boolean;\r\n canReducePremium: boolean;\r\n isInRenewal: boolean;\r\n isPaymentDue: boolean;\r\n hasMultiplePaymentsDue: boolean;\r\n hasDraftRenewal: boolean;\r\n isOverdue: boolean;\r\n isFutureCancelled: boolean;\r\n hasSingleFutureChange: boolean;\r\n hasMultipleInSequenceFutureChanges: boolean;\r\n hasMultipleOutOfSequenceFutureChanges: boolean;\r\n hasCostOverride: boolean;\r\n policyChangeIssues: {\r\n hasOpenWorkOrderFromOtherUser: boolean;\r\n renewalTermHasFutureChange: boolean;\r\n };\r\n };\r\n}\r\n\r\nexport interface ApplyRulesRequestOfChangeVehicleLocationUpdateModel {\r\n quoteSessionId?: string;\r\n requestQuote?: boolean;\r\n bindChange?: boolean;\r\n model?: ChangeVehicleLocationUpdateModel;\r\n}\r\n\r\nexport interface ChangeVehicleLocationUpdateModel {\r\n changeEffectiveDate: Date;\r\n vehicleLocations: VehicleLocation[];\r\n}\r\n\r\nexport interface VehicleLocation {\r\n coverageId: string;\r\n overnightParkingLocationCode: string;\r\n overnightParkingLocationSuburb: string;\r\n overnightParkingLocationPostcode: string;\r\n overnightParkingLocationState: string;\r\n overnightParkingLocationAddressLine?: string;\r\n}\r\n\r\nexport interface ApplyRulesResponseOfChangeVehicleLocationViewModel {\r\n jeopardies: IJeopardy[];\r\n viewModel: ChangeVehicleLocationViewModel;\r\n}\r\n\r\nexport interface ChangeVehicleLocationViewModel {\r\n policyNumber: string;\r\n quotePremiumDetails: QuotePremiumDetails;\r\n}\r\n\r\nexport const ChangeVehicleLocationService = {\r\n /**\r\n * Get Policy\r\n *\r\n * @param quoteSessionId\r\n */\r\n getPolicy(quoteSessionId: string): Promise> {\r\n return _http.HttpGet(changeVehicleLocationGetPolicy.replace('{0}', quoteSessionId));\r\n },\r\n\r\n /**\r\n * Apply Business Rules\r\n *\r\n * @param request\r\n */\r\n applyBusinessRules(\r\n request: ApplyRulesRequestOfChangeVehicleLocationUpdateModel\r\n ): Promise> {\r\n return _http.HttpPost(changeVehicleLocationApplyBusinessRules, request);\r\n },\r\n};\r\n","import { defineStore } from 'pinia';\r\nimport {\r\n ChangeVehicleLocationService as _changeVehicleLocation,\r\n VehiclePolicy,\r\n ChangeVehicleLocationUpdateModel,\r\n} from '@/services/store/change-vehicle-location.service';\r\nimport {\r\n QuoteSessionService as _quoteSessionService,\r\n ProcessPaymentRequest,\r\n} from '@/services/store/quote-session.service';\r\nimport { QuotePremiumDetails } from '@/interfaces/entities/premium-details.interface';\r\nimport { ref } from 'vue';\r\nimport { JP_GENERIC_CODE } from '@/constants/jeopardy-codes.const';\r\nimport { IJeopardy, IServiceResponseError } from '@/interfaces/entities';\r\nimport { IReviewSummary, ISitecoreReviewSummaryItem } from '@/interfaces';\r\nimport { replaceBookmarks } from '@/utils/bookmark.replace';\r\nimport { STANDARD_DATE_FORMAT } from '@/constants/formats';\r\nimport { format } from 'date-fns';\r\nimport { useAnalyticsStore } from '@/store';\r\nimport { FormEvents } from '@/enums/form-events.enum';\r\nimport { IAnalyticsPaymentDetail, IFormAnalytics } from '@/interfaces/forms/analytics-interface';\r\n\r\nexport const useChangeVehicleLocationStore = defineStore('ChangeVehicleLocation', () => {\r\n const analyticsStore = useAnalyticsStore();\r\n\r\n // ------------------------------------------------------------- //\r\n // Define State\r\n // ------------------------------------------------------------- //\r\n const quoteSessionId = ref();\r\n const currentPolicy = ref();\r\n const model = ref();\r\n const quotePremiumDetails = ref();\r\n const jeopardies = ref([]);\r\n const errors = ref([]);\r\n const paymentReceiptNumber = ref();\r\n\r\n /**\r\n * Get Policy\r\n */\r\n async function getPolicy() {\r\n const params = new URLSearchParams(location.search);\r\n quoteSessionId.value = params.get('quoteSessionId') ?? '';\r\n if (!quoteSessionId.value) throw JP_GENERIC_CODE;\r\n const response = await _changeVehicleLocation.getPolicy(quoteSessionId.value);\r\n errors.value = response.errors;\r\n if (response.success && response.data) {\r\n currentPolicy.value = response.data;\r\n }\r\n if (errors.value && errors.value.length > 0) {\r\n throw errors.value[0].message ?? JP_GENERIC_CODE;\r\n }\r\n }\r\n\r\n /**\r\n * Apply Business Rules\r\n */\r\n async function applyBusinessRules(requestQuote?: boolean, bindChange?: boolean) {\r\n const response = await _changeVehicleLocation.applyBusinessRules({\r\n quoteSessionId: quoteSessionId.value,\r\n model: model.value,\r\n requestQuote: requestQuote,\r\n bindChange: bindChange,\r\n });\r\n errors.value = response.errors;\r\n if (response.success && response.data) {\r\n jeopardies.value = response.data.jeopardies;\r\n quotePremiumDetails.value = response.data?.viewModel?.quotePremiumDetails;\r\n }\r\n if (errors.value && errors.value.length > 0) {\r\n throw errors.value[0].message ?? JP_GENERIC_CODE;\r\n }\r\n if (jeopardies.value && jeopardies.value.length > 0) {\r\n throw jeopardies.value[0].code;\r\n }\r\n }\r\n\r\n /**\r\n * Process Payment\r\n */\r\n async function processPayment(data: ProcessPaymentRequest) {\r\n const response = await _quoteSessionService.processPayment(\r\n currentPolicy.value?.policyNumber ?? '',\r\n quoteSessionId.value ?? '',\r\n data\r\n );\r\n errors.value = response.errors;\r\n paymentReceiptNumber.value = response.data?.receiptNumber;\r\n if (response.errors && response.errors.length > 0) {\r\n throw response.errors[0].message ?? JP_GENERIC_CODE;\r\n }\r\n return response;\r\n }\r\n\r\n /**\r\n * Withdraw Quote Session\r\n */\r\n async function withdrawQuoteSession() {\r\n const response = await _quoteSessionService.withdrawQuoteSession(quoteSessionId.value ?? '');\r\n errors.value = response.errors;\r\n if (response.errors && response.errors.length > 0) {\r\n throw response.errors[0].message ?? JP_GENERIC_CODE;\r\n }\r\n return response;\r\n }\r\n\r\n /**\r\n * Generate a review summary model for review and confirmation steps\r\n */\r\n function getReviewSummaryModel(summaryFields: any): IReviewSummary[] {\r\n const summaryFieldsResult: IReviewSummary[] = [];\r\n\r\n // The first IReviewSummary item is the changeEffectiveDate section\r\n const changeEffectiveDate = format(model.value?.changeEffectiveDate ?? '', STANDARD_DATE_FORMAT);\r\n const changeEffectiveDateObj = {\r\n changeEffectiveDate,\r\n };\r\n summaryFieldsResult.push(replaceBookmarks(summaryFields[0], changeEffectiveDateObj));\r\n\r\n // The second IReviewSummary item from sitecore is the vehicle summary section. We want to duplicate it for each coverage on the policy.\r\n for (const coverage of currentPolicy.value?.coverages ?? []) {\r\n const newVehicleLocation = model.value?.vehicleLocations?.find((item) => item.coverageId === coverage.id);\r\n const summary = {\r\n formattedLine1: coverage.vehicle?.formattedLine1,\r\n formattedLine2: coverage.vehicle?.formattedLine2,\r\n garagingLocation: newVehicleLocation\r\n ? `${newVehicleLocation.overnightParkingLocationAddressLine} ${newVehicleLocation.overnightParkingLocationSuburb}, ${newVehicleLocation.overnightParkingLocationPostcode}, ${newVehicleLocation.overnightParkingLocationState}`\r\n : coverage.garagingLocation,\r\n garagingType: newVehicleLocation ? newVehicleLocation.overnightParkingLocationCode : coverage.garagingType,\r\n };\r\n let summaryItem = {\r\n formContentId: summaryFields[1].formContentId,\r\n summaryTitle: summaryFields[1].summaryTitle,\r\n icon: summaryFields[1].icon,\r\n items: summaryFields[1].items,\r\n };\r\n summaryItem = replaceBookmarks(summaryItem, summary);\r\n summaryFieldsResult.push(summaryItem);\r\n }\r\n\r\n return summaryFieldsResult.map((field: any) => ({\r\n ...field,\r\n items: field.items.map((item: ISitecoreReviewSummaryItem) => {\r\n return {\r\n ...item,\r\n ...item.fields,\r\n editGoToStep: item.fields.editStep?.value,\r\n showEdit: item.fields.editStep?.value ?? false,\r\n };\r\n }),\r\n }));\r\n }\r\n\r\n /**\r\n * Push data to analytics\r\n *\r\n * @param options\r\n */\r\n const pushAnalytics = (options: {\r\n event: FormEvents;\r\n amount?: number;\r\n payment?: Partial;\r\n }) => {\r\n const firstVehicle = currentPolicy.value?.coverages?.at(0);\r\n const model: IFormAnalytics = {\r\n event: options.event,\r\n form: {\r\n detail: {\r\n makeName: firstVehicle?.vehicle?.make,\r\n modelName: firstVehicle?.vehicle?.model,\r\n vehicleYear: firstVehicle?.vehicle?.year,\r\n },\r\n },\r\n };\r\n if (options.amount) {\r\n model.form.amount = options.amount;\r\n }\r\n if (options.payment) {\r\n model.payment = options.payment;\r\n }\r\n\r\n analyticsStore.pushAnalytics(model);\r\n };\r\n\r\n return {\r\n getPolicy,\r\n applyBusinessRules,\r\n processPayment,\r\n withdrawQuoteSession,\r\n getReviewSummaryModel,\r\n pushAnalytics,\r\n currentPolicy,\r\n model,\r\n quotePremiumDetails,\r\n jeopardies,\r\n errors,\r\n paymentReceiptNumber,\r\n };\r\n});\r\n","import { getMotorExcessesUrl } from '@/constants/forms-api.const';\r\nimport { RequestServices as _http } from '../common/request.services';\r\n\r\nexport const CarService = {\r\n /**\r\n * Fetch motor excess\r\n *\r\n * @param quoteSessionId\r\n */\r\n getMotorExcess(quoteType: string, startDate?: string) {\r\n let url = getMotorExcessesUrl.replace('{0}', quoteType);\r\n if (!startDate) url = url.split('&')[0];\r\n else url = url.replace('{1}', startDate);\r\n return _http.HttpGet(url);\r\n },\r\n};\r\n","import { defineStore } from 'pinia';\r\nimport { ref, computed } from 'vue';\r\nimport { IJeopardy, IQuote, IServiceResponseError, InsuranceQuotePhase, InsuranceQuoteType } from '@/interfaces';\r\nimport { QuoteTypes } from '@/constants/quote-types.const';\r\nimport { InsuranceQuoteService as _iqService } from '@/services/store/insurance-quote.service';\r\nimport { CarService as _iqmqService } from '@/services/store/car.service';\r\nimport { isArray } from 'lodash-es';\r\nimport { useJeopardyStore } from '../jeopardy/jeopardy.state';\r\nimport { dateToDateString } from '@/utils/data-transforms';\r\nimport { JP_RIDE_SHARE } from '@/constants/jeopardy-codes.const';\r\n\r\nexport const useCarStore = defineStore('Car', () => {\r\n // ------------------------------------------------------------- //\r\n // Define State\r\n // ------------------------------------------------------------- //\r\n const jpStore = useJeopardyStore();\r\n const quote = ref>({});\r\n const quoteId = computed(() => quote.value.id ?? '');\r\n const quoteType = computed(() => (quote.value.quoteType && QuoteTypes[quote.value.quoteType]) || '');\r\n const jeopardies = ref([]);\r\n const errors = ref([]);\r\n\r\n // ------------------------------------------------------------- //\r\n // Define Actions\r\n // ------------------------------------------------------------- //\r\n async function createQuote(quoteType: InsuranceQuoteType) {\r\n quote.value.quoteType = quoteType;\r\n quote.value.quotePhase = InsuranceQuotePhase.QuickQuote;\r\n quote.value.renewalPreference = true;\r\n quote.value.renewalTermAcceptance = true;\r\n const insuranceStartDate = quote.value.insuranceStartDate;\r\n const res = await _iqService.createQuote(quote.value);\r\n quote.value = {\r\n ...res.quote,\r\n insuranceStartDate,\r\n };\r\n }\r\n\r\n async function getMotorExcess() {\r\n const value = await _iqmqService.getMotorExcess(\r\n quoteType.value,\r\n quote.value.insuranceStartDate?.value\r\n ? dateToDateString(quote.value.insuranceStartDate?.value, 'yyyy-MM-dd')\r\n : undefined\r\n );\r\n return value;\r\n }\r\n\r\n /**\r\n * Apply Business Rules\r\n *\r\n * @param formData\r\n */\r\n const applyBusinessRules = async () => {\r\n try {\r\n const response = await _iqService.applyBusinessRules(quoteId.value, quote.value);\r\n quote.value = response?.quote || quote.value;\r\n\r\n await handleJeopardyOrReasonCodes(response);\r\n } catch (error) {\r\n await handleError(error);\r\n }\r\n };\r\n\r\n /**\r\n * Apply Business Rules\r\n *\r\n * @param formData\r\n */\r\n const saveQuote = async () => {\r\n try {\r\n const response = await _iqService.saveQuote(quoteId.value, quote.value);\r\n quote.value = response?.quote || quote.value;\r\n\r\n await handleJeopardyOrReasonCodes(response);\r\n } catch (error) {\r\n await handleError(error);\r\n }\r\n };\r\n\r\n /**\r\n * Calculate quote price\r\n *\r\n * @returns\r\n */\r\n const calculatePrice = async () => {\r\n try {\r\n const response = await _iqService.calculatePrice(quoteId.value, quote.value);\r\n quote.value = response?.quote || quote.value;\r\n\r\n await handleJeopardyOrReasonCodes(response);\r\n } catch (error) {\r\n await handleError(error);\r\n }\r\n };\r\n\r\n const handleJeopardyOrReasonCodes = async (response: any) => {\r\n errors.value = [];\r\n jeopardies.value = [];\r\n if (response.success && response.data && response.data.jeopardies?.length > 0) {\r\n jeopardies.value = response.data.jeopardies;\r\n throw response.data.jeopardies[0];\r\n }\r\n\r\n if (response?.reasonCodes?.length > 0) {\r\n errors.value = response?.reasonCodes || [];\r\n throw response.reasonCodes[0];\r\n }\r\n\r\n if (response?.errors?.length > 0) {\r\n errors.value = [response.errors[0]];\r\n throw response.errors[0].errorType;\r\n }\r\n };\r\n\r\n const handleError = async (error: any) => {\r\n const isErrorArray = isArray(error);\r\n errors.value = isErrorArray ? error : [error];\r\n if (!isErrorArray && error?.code) {\r\n throw error.code;\r\n }\r\n\r\n throw ['Unknown error'];\r\n };\r\n\r\n const applyRulesAndSave = async (calculateQuotePrice: boolean = false) => {\r\n try {\r\n // Apply business rules\r\n await applyBusinessRules();\r\n\r\n if (calculateQuotePrice && !errors.value?.length) {\r\n // Save Quote for Pricing\r\n await saveQuote();\r\n\r\n // Recalculate quote price\r\n await calculatePrice();\r\n }\r\n\r\n // Save quote with new price\r\n await saveQuote();\r\n } catch (error) {\r\n jpStore.showJeopardyPanel({\r\n jpCode: jeopardies.value[0]?.code,\r\n });\r\n }\r\n };\r\n\r\n const showRideSharingJeopardy = () => {\r\n jpStore.showJeopardyPanel({\r\n jpCode: JP_RIDE_SHARE,\r\n });\r\n };\r\n\r\n return {\r\n quote,\r\n quoteId,\r\n quoteType,\r\n createQuote,\r\n getMotorExcess,\r\n applyRulesAndSave,\r\n showRideSharingJeopardy,\r\n };\r\n});\r\n","import { IQuote } from '@/interfaces';\r\nimport { defineStore } from 'pinia';\r\nimport { ref } from 'vue';\r\nimport { cloneDeep } from 'lodash-es';\r\n\r\nexport const useIQOriginalQuoteStore = defineStore('IQOriginalQuote', () => {\r\n const quote = ref>();\r\n\r\n /**\r\n * Will only set the quote once.\r\n */\r\n function setQuote(updateQuote: Partial) {\r\n if (!quote.value) {\r\n quote.value = cloneDeep(updateQuote);\r\n }\r\n }\r\n\r\n return {\r\n setQuote,\r\n quote,\r\n };\r\n});\r\n","import { defineStore } from 'pinia';\r\nimport { RoadsideAssistanceService as _roadsideAssistanceService } from '@/services/store/roadside-assistance.service';\r\nimport { RoadsideAssistance, TriageAnswer } from '@/interfaces/entities/roadside-assistance.interface';\r\nimport { ref } from 'vue';\r\n\r\nexport const useRoadsideAssistance = defineStore('RoadsideAssistance', () => {\r\n // ------------------------------------------------------------- //\r\n // Define State\r\n // ------------------------------------------------------------- //\r\n\r\n const breakdownCauses = ref([]);\r\n\r\n async function getServiceability(latitude: number, longitude: number): Promise {\r\n const response = await _roadsideAssistanceService.getServiceability(latitude, longitude);\r\n // read response's triagequestion filter by id TriageQuestion and set breakdownCauses\r\n const triageQuestion = filterQuestionsById(response.triageQuestions, 'BREAKDOWN_REASON');\r\n if (triageQuestion !== null) {\r\n breakdownCauses.value = triageQuestion.answers;\r\n }\r\n return response;\r\n }\r\n\r\n function filterQuestionsById(questions: any[], id: string) {\r\n return questions.find((question) => question.id === id);\r\n }\r\n\r\n return {\r\n getServiceability,\r\n breakdownCauses,\r\n };\r\n});\r\n","import { computed, ref } from 'vue';\r\nimport { defineStore } from 'pinia';\r\nimport { RACQAddressResult, ISuburbLookupResult, AddressLookupConfig } from '@/interfaces';\r\nimport { AddressLookupService } from '@/services/store';\r\nimport { AUSTRALIA } from '@/constants/general-words.const';\r\nimport { isEmptyObject } from '@/utils/check-helpers';\r\nimport { isPostalAddress as isPostalAddressCheck } from '@/utils/regex-helpers';\r\nimport { QLD } from '@/constants/general-words.const';\r\n\r\nexport const emitManualAddressSelected = 'manualAddressSelected';\r\nexport const emitAddressSelected = 'addressSelected';\r\nexport const emitAddressReset = 'addressReset';\r\nexport const addressLookupEmits = [emitManualAddressSelected, emitAddressSelected, emitAddressReset];\r\n\r\nconst _useAddressLookupOptionsStore = () => {\r\n const config = ref();\r\n\r\n //Component selections\r\n const isOverseasSelection = ref(false);\r\n const postalSameAsInsuredAddressSelection = ref(false);\r\n const isCycloneCovered = ref();\r\n const externalValidationMessage = ref();\r\n const manualEditEnabled = ref(false);\r\n const insuredAddress = ref>();\r\n const postalAddress = ref>();\r\n const useAddress = ref>();\r\n const isManualEntries = ref(false);\r\n const showInvalidInsuranceRiskSuburbMessage = ref();\r\n const showRiskAddressNotFullyVerifiedMessage = ref();\r\n const riskAddressNotFullyVerifiedIsError = ref();\r\n\r\n const autoAddressComponents = ref>({});\r\n const manualAddressComponents = ref>({});\r\n\r\n const suburbLookupOptions = ref([]);\r\n\r\n const activeAddressComponents = computed(() => {\r\n if (isManualEntries.value) {\r\n return manualAddressComponents.value;\r\n } else {\r\n return autoAddressComponents.value;\r\n }\r\n });\r\n\r\n const setupAddressComponent = (\r\n configOptions: AddressLookupConfig,\r\n quoteInsuredAddress?: RACQAddressResult,\r\n quotePostalAddress?: RACQAddressResult\r\n ) => {\r\n config.value = configOptions;\r\n\r\n insuredAddress.value = quoteInsuredAddress;\r\n postalAddress.value = quotePostalAddress;\r\n\r\n if (quotePostalAddress) {\r\n useAddress.value = quotePostalAddress;\r\n postalSameAsInsuredAddressSelection.value = checkPostalIsSameAsInsured(quotePostalAddress);\r\n }\r\n };\r\n\r\n const onSameAsPostalAddressChanged = () => {\r\n //toggle value, seems to be issue with timing of model and value\r\n postalSameAsInsuredAddressSelection.value = !postalSameAsInsuredAddressSelection.value;\r\n\r\n useAddress.value = postalSameAsInsuredAddressSelection.value ? insuredAddress.value : postalAddress.value;\r\n isManualEntries.value = false;\r\n\r\n if (postalSameAsInsuredAddressSelection.value) {\r\n isOverseasSelection.value = false;\r\n manualEditEnabled.value = false;\r\n }\r\n\r\n return useAddress.value;\r\n };\r\n\r\n const onIsOverseasChanged = (isOverseas: boolean, enableManualEntry: boolean) => {\r\n isOverseasSelection.value = isOverseas;\r\n manualEditEnabled.value = enableManualEntry;\r\n if (!isOverseas) {\r\n isManualEntries.value = false;\r\n }\r\n\r\n if (!isOverseas) {\r\n manualAddressComponents.value.country = AUSTRALIA;\r\n }\r\n\r\n if (isOverseas) {\r\n postalSameAsInsuredAddressSelection.value = false;\r\n }\r\n };\r\n\r\n const onEnableManualEntrySelected = () => {\r\n manualEditEnabled.value = true;\r\n isManualEntries.value = true;\r\n isOverseasSelection.value = false;\r\n postalSameAsInsuredAddressSelection.value = false;\r\n showInvalidInsuranceRiskSuburbMessage.value = false;\r\n showRiskAddressNotFullyVerifiedMessage.value = false;\r\n riskAddressNotFullyVerifiedIsError.value = false;\r\n manualAddressComponents.value.state = QLD;\r\n };\r\n\r\n const onAutoAddressSelected = (addressComponents: Partial) => {\r\n isManualEntries.value = false;\r\n manualEditEnabled.value = false;\r\n postalSameAsInsuredAddressSelection.value = checkPostalIsSameAsInsured(addressComponents);\r\n };\r\n\r\n const toggleManualFormDisabled = () => {\r\n manualEditEnabled.value = !manualEditEnabled.value;\r\n };\r\n\r\n const showTitle = () => {\r\n return config.value?.allowOverseasAddress && config.value?.isPostalAddress;\r\n };\r\n\r\n /**\r\n * Get all suburbs from reference data and match with the current input\r\n */\r\n const getSuburbsByPostcode = async () => {\r\n const address = activeAddressComponents.value;\r\n if (address.postcode) {\r\n const results = await AddressLookupService.getSuburbsByPostcode(\r\n address.postcode,\r\n config.value?.allowPhysicalAddressesOnly ?? false\r\n );\r\n const match = results?.find(\r\n (option) =>\r\n option.suburb.toLowerCase() == address.suburb?.toLowerCase() &&\r\n option.state.toLowerCase() == address.state?.toLowerCase()\r\n );\r\n\r\n return { match, results };\r\n }\r\n return null;\r\n };\r\n\r\n /**\r\n * Check to see if the location matches a list of valid risk suburbs that RACQ covers and format it with LURN Code and optionally check\r\n * for cyclone cover\r\n */\r\n const applyRiskAddressBusinessRules = async () => {\r\n const address = activeAddressComponents.value;\r\n if (address.postcode) {\r\n const riskSuburbs = await AddressLookupService.getInsuranceRiskSuburbs(address.postcode);\r\n const match = riskSuburbs.find(\r\n (option) =>\r\n option.suburb.toLowerCase() == address.suburb?.toLowerCase() &&\r\n option.state.toLowerCase() == address.state?.toLowerCase()\r\n );\r\n\r\n showInvalidInsuranceRiskSuburbMessage.value = !match;\r\n riskAddressNotFullyVerifiedIsError.value = false;\r\n showRiskAddressNotFullyVerifiedMessage.value = false;\r\n\r\n if (match) {\r\n const formatted = await formatRiskAddress();\r\n\r\n const isCycloneCovered = await checkIsCycloneCovered();\r\n\r\n riskAddressNotFullyVerifiedIsError.value =\r\n (config.value?.isCycloneCheckRequired && isCycloneCovered === undefined) ||\r\n formatted?.lurnScale === undefined;\r\n showRiskAddressNotFullyVerifiedMessage.value =\r\n riskAddressNotFullyVerifiedIsError.value || formatted?.lurnScale === undefined || formatted.lurnScale > 1;\r\n }\r\n\r\n return { match, riskSuburbs };\r\n }\r\n return null;\r\n };\r\n\r\n /**\r\n * Check to see if the location has cyclone insurance coverage\r\n */\r\n const checkIsCycloneCovered = async () => {\r\n const address = activeAddressComponents.value;\r\n if (config.value?.isCycloneCheckRequired && address.suburb && address.postcode && address.state) {\r\n try {\r\n const response = await AddressLookupService.getIsCycloneCovered(\r\n address.suburb,\r\n address.postcode,\r\n address.state\r\n );\r\n address.isCycloneCovered = response?.isCovered;\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n } else {\r\n address.isCycloneCovered = undefined;\r\n }\r\n return address.isCycloneCovered;\r\n };\r\n\r\n /**\r\n * Format risk address and obtain lurn + gnaf info\r\n */\r\n async function formatRiskAddress() {\r\n const address = activeAddressComponents.value;\r\n const addressline =\r\n address.addressLine ?? [address.unitNumber, address.streetNumber, address.street].filter((o) => o).join(' ');\r\n try {\r\n const res = await AddressLookupService.formatRiskAddress({\r\n addressline,\r\n unitNumber: address.unitNumber,\r\n streetNumber: address.streetNumber,\r\n streetName: address.street,\r\n postcode: address.postcode,\r\n suburb: address.suburb,\r\n state: address.state,\r\n });\r\n address.lurnCode = res?.matchedAddress?.lurnKey;\r\n address.lurnScale = res?.matchedAddress?.lurnScale;\r\n address.gnafAddressDetailPID = res?.matchedAddress?.gnafAddressDetailPID;\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n return address;\r\n }\r\n\r\n const isValidAddress = (value: Partial) => {\r\n if (isPostalAddressCheck(value.streetNumber ?? '')) {\r\n return value && value.streetNumber && value.suburb && value.postcode;\r\n } else if (value.country !== AUSTRALIA) {\r\n return value && value.streetNumber && value.street && value.suburb;\r\n } else {\r\n return value && value.streetNumber && value.street && value.suburb && value.postcode;\r\n }\r\n };\r\n\r\n const checkPostalIsSameAsInsured = (postalAddress: Partial) => {\r\n return postalAddress?.dpid == insuredAddress?.value?.dpid;\r\n };\r\n\r\n const resetManualAddress = () => {\r\n isManualEntries.value = false;\r\n manualAddressComponents.value = {};\r\n suburbLookupOptions.value = [];\r\n showInvalidInsuranceRiskSuburbMessage.value = false;\r\n showRiskAddressNotFullyVerifiedMessage.value = false;\r\n riskAddressNotFullyVerifiedIsError.value = false;\r\n };\r\n\r\n const setManualAddress = (address: Partial) => {\r\n isManualEntries.value = true;\r\n manualAddressComponents.value = address;\r\n manualAddressComponents.value.addressLine = joinAddressLine(address);\r\n autoAddressComponents.value = {};\r\n isOverseasSelection.value = isOverseasManualAddress();\r\n manualEditEnabled.value = true;\r\n };\r\n\r\n const setAutoAddress = (address: Partial) => {\r\n isManualEntries.value = false;\r\n autoAddressComponents.value = address;\r\n autoAddressComponents.value.addressLine = buildAddressLine(address);\r\n manualAddressComponents.value = {};\r\n };\r\n\r\n /**\r\n * Joining street number + street name\r\n * @param addressLine\r\n */\r\n const joinAddressLine = (address: Partial) => {\r\n let addressLine = address.unitNumber?.trim().length ? `${address.unitNumber.trim()} ` : '';\r\n addressLine += address.streetNumber?.trim().length ? `${address.streetNumber.trim()} ` : '';\r\n addressLine += address.street?.trim().length ? `${address.street.trim()}` : '';\r\n return addressLine;\r\n };\r\n\r\n /**\r\n * Build full address line\r\n *\r\n * @param address\r\n * @returns\r\n */\r\n const buildAddressLine = (address: Partial) => {\r\n let addressLine = address.addressLine?.trim() ?? joinAddressLine(address);\r\n const isPostalAddress =\r\n isPostalAddressCheck(address.streetNumber ?? '') || isPostalAddressCheck(address.addressLine ?? '');\r\n\r\n if (isPostalAddress) {\r\n return `${address.addressLine?.trim()}, ${address.suburb?.trim()}, ${address.state?.trim()}, ${address.postcode?.trim()}`.trim();\r\n }\r\n\r\n if (!isValidAddress(address)) return;\r\n\r\n addressLine += address.suburb?.trim().length ? `, ${address.suburb.trim()}, ` : '';\r\n\r\n if (!isOverseasSelection.value) {\r\n addressLine += address.state?.trim().length ? `${address.state.trim()}, ` : '';\r\n }\r\n\r\n addressLine += address.postcode?.trim().length ? `${address.postcode.trim()}` : '';\r\n\r\n if (isOverseasSelection.value) {\r\n addressLine += address.postcode?.trim().length ? ', ' : '';\r\n addressLine += address.country?.trim().length ? `${address.country.trim()}` : '';\r\n }\r\n return addressLine;\r\n };\r\n\r\n /*\r\n Only a manual address should be able to be overseas address.\r\n */\r\n const isOverseasManualAddress = () => {\r\n return (\r\n !isEmptyObject(manualAddressComponents?.value) &&\r\n manualAddressComponents.value.country !== undefined &&\r\n manualAddressComponents.value.country !== '' &&\r\n manualAddressComponents.value.country?.toLowerCase() !== AUSTRALIA.toLowerCase()\r\n );\r\n };\r\n\r\n return {\r\n config,\r\n isOverseasSelection,\r\n postalSameAsInsuredAddressSelection,\r\n isCycloneCovered,\r\n externalValidationMessage,\r\n manualEditEnabled,\r\n postalAddress,\r\n insuredAddress,\r\n useAddress,\r\n isManualEntries,\r\n autoAddressComponents,\r\n manualAddressComponents,\r\n activeAddressComponents,\r\n suburbLookupOptions,\r\n showInvalidInsuranceRiskSuburbMessage,\r\n riskAddressNotFullyVerifiedIsError,\r\n showRiskAddressNotFullyVerifiedMessage,\r\n setupAddressComponent,\r\n onSameAsPostalAddressChanged,\r\n onIsOverseasChanged,\r\n onEnableManualEntrySelected,\r\n onAutoAddressSelected,\r\n toggleManualFormDisabled,\r\n showTitle,\r\n getSuburbsByPostcode,\r\n applyRiskAddressBusinessRules,\r\n isValidAddress,\r\n checkPostalIsSameAsInsured,\r\n resetManualAddress,\r\n setManualAddress,\r\n setAutoAddress,\r\n joinAddressLine,\r\n buildAddressLine,\r\n checkIsCycloneCovered,\r\n isOverseasManualAddress,\r\n };\r\n};\r\n\r\nconst useAddressLookupOptionsStore = (storeIdentifier: string) => {\r\n const storeName = `addressLookupOptionsStore-${storeIdentifier}`;\r\n const store = defineStore(storeName, _useAddressLookupOptionsStore);\r\n return store();\r\n};\r\n\r\nconst addressLookupOptionsStores = new Map>();\r\n\r\nfunction defineAddressStore(instanceId: string) {\r\n const addressLookupOptionsStore = useAddressLookupOptionsStore(instanceId);\r\n return addressLookupOptionsStore;\r\n}\r\n\r\nexport const useMultiInstanceAddressOptionsStore = defineStore('multiInstanceAddressOptionsStore', () => {\r\n const itemIds = ref([]);\r\n\r\n function addInstance(instanceId: string) {\r\n if (itemIds.value.indexOf(instanceId) > -1) return;\r\n\r\n addressLookupOptionsStores.set(instanceId, useAddressLookupOptionsStore(instanceId));\r\n itemIds.value.push(instanceId);\r\n }\r\n\r\n function getInstance(instanceId: string) {\r\n const storeInstance = addressLookupOptionsStores.get(instanceId);\r\n\r\n if (!storeInstance) {\r\n throw 'Instance not found';\r\n }\r\n\r\n return storeInstance;\r\n }\r\n\r\n function removeItem(instanceId: string) {\r\n const index = itemIds.value.indexOf(instanceId);\r\n if (index == -1) return;\r\n addressLookupOptionsStores.get(itemIds.value[index])!.$dispose();\r\n addressLookupOptionsStores.delete(itemIds.value[index]);\r\n itemIds.value.splice(index, 1);\r\n }\r\n\r\n return {\r\n itemIds,\r\n addInstance,\r\n getInstance,\r\n removeItem,\r\n };\r\n});\r\n","import { defineStore } from 'pinia';\r\nimport { ref } from 'vue';\r\nimport { AddressLookupService as addressLookupStore } from '@/services/store';\r\nimport { INameValue } from '@/interfaces/entities/name-value.interface';\r\n\r\nenum RefDataTypes {\r\n COUNTRIES = 'Countries',\r\n}\r\n\r\nexport const useAddressLookupStore = defineStore('AddressLookupStore', () => {\r\n const addressData = ref>>({});\r\n\r\n async function getCountryLookup(key: string, allCountries: boolean): Promise {\r\n if (addressData.value?.Countries?.length) return addressData.value.Countries;\r\n try {\r\n const res = await addressLookupStore.getCountryLookup(key, allCountries);\r\n addressData.value.Countries = res || [];\r\n } catch (error) {\r\n console.warn('Unable to fetch countries: ', error);\r\n }\r\n return addressData.value.Countries || [];\r\n }\r\n\r\n return {\r\n getCountryLookup,\r\n };\r\n});\r\n","import { switchToMonthlyGetPolicy, switchToMonthlyApplyBusinessRules } from '@/constants/forms-api.const';\r\nimport { IServiceResponse } from '@/interfaces/entities';\r\nimport { RequestServices as _http } from '../common/request.services';\r\nimport { InsuranceProduct } from '@/interfaces/entities/insurance-product.interface';\r\nimport {\r\n ApplyRulesResponseOfSwitchToMonthlyViewModel,\r\n ApplyRulesRequestOfSwitchToMonthlyUpdateModel,\r\n} from '@/interfaces/forms/switch-to-monthly/switch-to-monthly.interface';\r\n\r\nexport const SwitchToMonthlyService = {\r\n /**\r\n * Get Policy\r\n *\r\n * @param quoteSessionId\r\n */\r\n getPolicy(quoteSessionId: string): Promise> {\r\n return _http.HttpGet(switchToMonthlyGetPolicy.replace('{0}', quoteSessionId));\r\n },\r\n\r\n /**\r\n * Apply Business Rules\r\n *\r\n * @param request\r\n */\r\n applyBusinessRules(\r\n request: ApplyRulesRequestOfSwitchToMonthlyUpdateModel\r\n ): Promise> {\r\n return _http.HttpPost(switchToMonthlyApplyBusinessRules, request);\r\n },\r\n};\r\n","import { QuoteTypes } from '@/constants/quote-types.const';\r\nimport { ICoverage } from '@/interfaces';\r\n\r\n// Function to get insurance policy display name\r\nexport function getInsurancePolicyDisplayName(dictionary: Record, coverageCode: string): string {\r\n if (!dictionary || !coverageCode) {\r\n return '';\r\n }\r\n return dictionary[coverageCode] || coverageCode;\r\n}\r\n\r\n// Function to get coverage descriptions by coverage code\r\nexport function getCoverageDescriptionsByCoverageCode(coverage: ICoverage | null | undefined): string {\r\n const coverageCode = coverage?.coverageCode;\r\n if (!coverage || !coverageCode) {\r\n return '';\r\n }\r\n\r\n switch (coverage.coverageCode) {\r\n case QuoteTypes[1]:\r\n case QuoteTypes[6]:\r\n case QuoteTypes[7]:\r\n case QuoteTypes[9]:\r\n case QuoteTypes[10]:\r\n case QuoteTypes[11]:\r\n case QuoteTypes[12]:\r\n return `${coverage.vehicle?.year ?? ''} ${coverage.vehicle?.make ?? ''} ${coverage.vehicle?.model ?? ''}`.trim();\r\n case QuoteTypes[3]:\r\n case QuoteTypes[4]:\r\n case QuoteTypes[5]:\r\n return coverage.riskAddress?.formattedStreet ?? '';\r\n case QuoteTypes[8]:\r\n return coverage.petName ?? '';\r\n default:\r\n return coverage.vehicle?.formattedSummary ?? coverage.riskAddress?.formattedStreet ?? '';\r\n }\r\n}\r\n","import { defineStore } from 'pinia';\r\nimport { ref } from 'vue';\r\nimport { JP_GENERIC_CODE } from '@/constants/jeopardy-codes.const';\r\nimport {\r\n IJeopardy,\r\n IReviewSummary,\r\n IServiceResponseError,\r\n ISitecoreItem,\r\n ISitecoreReviewSummaryItem,\r\n} from '@/interfaces/entities';\r\nimport { SwitchToMonthlyService as _switchToMonthly } from '@/services/store/switch-to-monthly.service';\r\nimport {\r\n SwitchToMonthlyUpdateModel,\r\n SwitchToMonthlyPaymentsViewModel,\r\n} from '@/interfaces/forms/switch-to-monthly/switch-to-monthly.interface';\r\nimport { QuoteSessionService as _quoteSessionService } from '@/services/store/quote-session.service';\r\nimport { InsuranceProduct } from '@/interfaces/entities/insurance-product.interface';\r\nimport { PaymentMethod, PaymentTypes } from '@/enums/payment-types.enum';\r\nimport { ICardDetails, IDirectDebitDetails } from '@/interfaces';\r\nimport { getCoverageDescriptionsByCoverageCode } from '@/utils/insurance/policy-helper';\r\nimport { replaceBookmarks } from '@/utils/bookmark.replace';\r\nimport { formatMaskedCardNumber } from '@/utils/text-transforms';\r\nimport { SSChangePaymentDetailsRules } from '@/utils/display-rules/ss-change-payment-details-rules';\r\nimport { toCurrency } from '@/utils/convert';\r\nimport { format } from 'date-fns';\r\nimport { STANDARD_DATE_FORMAT } from '@/constants/formats';\r\nimport { FormEvents } from '@/enums/form-events.enum';\r\nimport { IAnalyticsPaymentDetail, IFormAnalytics } from '@/interfaces/forms/analytics-interface';\r\nimport { useAnalyticsStore } from '@/store';\r\nimport { getPolicyDescription } from '@/utils/editable-steps/quote-content-builder';\r\nimport { QuoteTypes } from '@/constants/quote-types.const';\r\n\r\nexport const useSwitchToMonthlyStore = defineStore('SwitchToMonthly', () => {\r\n const analyticsStore = useAnalyticsStore();\r\n // ------------------------------------------------------------- //\r\n // Define State\r\n // ------------------------------------------------------------- //\r\n const quoteSessionId = ref();\r\n const errors = ref([]);\r\n const currentPolicy = ref();\r\n const switchToMonthlyPaymentsViewModel = ref();\r\n const switchToMonthlyPaymentsViewModelInitialPrices = ref();\r\n const jeopardies = ref([]);\r\n const model = ref();\r\n const paymentReceiptNumber = ref();\r\n const isMotor = ref(true);\r\n const isHome = ref(false);\r\n const isPet = ref(false);\r\n const isBoat = ref(false);\r\n const isHealth = ref(false);\r\n\r\n /**\r\n * Get Policy\r\n */\r\n async function getPolicy() {\r\n const params = new URLSearchParams(location.search);\r\n quoteSessionId.value = params.get('quoteSessionId') ?? '';\r\n if (!quoteSessionId.value) throw JP_GENERIC_CODE;\r\n const response = await _switchToMonthly.getPolicy(quoteSessionId.value);\r\n errors.value = response.errors;\r\n if (response.success && response.data) {\r\n currentPolicy.value = response.data;\r\n setInsuranceType(currentPolicy.value?.coverages[0]?.coverageCode);\r\n }\r\n if (errors.value && errors.value.length > 0) {\r\n throw errors.value[0].message ?? JP_GENERIC_CODE;\r\n }\r\n }\r\n\r\n /**\r\n * Apply Business Rules\r\n */\r\n async function applyBusinessRules(requestQuote?: boolean, bindChange?: boolean) {\r\n const response = await _switchToMonthly.applyBusinessRules({\r\n quoteSessionId: quoteSessionId.value,\r\n model: model.value,\r\n requestQuote: requestQuote,\r\n bindChange: bindChange,\r\n currentPolicy: currentPolicy.value,\r\n });\r\n errors.value = response.errors;\r\n if (response.success && response.data) {\r\n jeopardies.value = response.data.jeopardies;\r\n if (jeopardies.value && jeopardies.value.length > 0) {\r\n throw jeopardies.value[0].code;\r\n }\r\n switchToMonthlyPaymentsViewModel.value = response.data?.viewModel;\r\n if (bindChange != true) {\r\n switchToMonthlyPaymentsViewModelInitialPrices.value = switchToMonthlyPaymentsViewModel.value;\r\n }\r\n }\r\n if (errors.value && errors.value.length > 0) {\r\n throw errors.value[0].message ?? JP_GENERIC_CODE;\r\n }\r\n if (!switchToMonthlyPaymentsViewModel.value) {\r\n throw JP_GENERIC_CODE;\r\n }\r\n }\r\n\r\n /**\r\n * Saves payment details for summary\r\n */\r\n function savePaymentDetails(\r\n selectedPaymentMethod: PaymentTypes | null,\r\n cardDetails: ICardDetails | null,\r\n directDebitDetails: IDirectDebitDetails | null\r\n ) {\r\n model.value = {};\r\n if (PaymentTypes[selectedPaymentMethod ?? PaymentTypes.CreditCard] === PaymentMethod[PaymentMethod.CreditCard]) {\r\n model.value = {\r\n paymentMethod: PaymentMethod.CreditCard,\r\n creditCardDetails: {\r\n cardType: cardDetails?.cardType ?? '',\r\n maskedCardNumber: cardDetails?.maskedCardNumber ?? '',\r\n token: cardDetails?.token ?? '',\r\n cardHolder: cardDetails?.cardHoldersName ?? '',\r\n cardExpiry: `${cardDetails?.cardExpiryMonth}/${cardDetails?.cardExpiryYear}`,\r\n },\r\n };\r\n } else if (\r\n PaymentTypes[selectedPaymentMethod ?? PaymentTypes.BankAccount] === PaymentMethod[PaymentMethod.BankAccount]\r\n ) {\r\n model.value = {\r\n paymentMethod: PaymentMethod.BankAccount,\r\n bankAccountDetails: {\r\n bsb: directDebitDetails?.bankStateBranchNumber ?? '',\r\n accountNumber: directDebitDetails?.accountNumber ?? '',\r\n accountName: directDebitDetails?.nameOfAccount ?? '',\r\n },\r\n };\r\n }\r\n }\r\n\r\n /**\r\n * Generate policy details for display\r\n */\r\n function getPremiumDetails(instalmentFeesAdminFeeText: string, infoBoxText: string = '') {\r\n return {\r\n monthlyNonResponsivePremium:\r\n switchToMonthlyPaymentsViewModel.value?.quotePremiumDetails?.monthlyNonResponsivePremium ?? 0,\r\n annualNonResponsivePremium:\r\n switchToMonthlyPaymentsViewModel.value?.quotePremiumDetails?.annualNonResponsivePremium,\r\n instalmentFeesPerMonth: switchToMonthlyPaymentsViewModel.value?.instalmentFeesPerMonth,\r\n instalmentFeesPerYear: switchToMonthlyPaymentsViewModel.value?.instalmentFeesPerYear,\r\n adminFeeText:\r\n switchToMonthlyPaymentsViewModel.value?.instalmentFeesApply &&\r\n switchToMonthlyPaymentsViewModel.value?.instalmentFeesPerMonth\r\n ? instalmentFeesAdminFeeText\r\n : '',\r\n goodNewsText:\r\n !switchToMonthlyPaymentsViewModel.value?.instalmentFeesApply &&\r\n switchToMonthlyPaymentsViewModelInitialPrices.value?.instalmentFeesPerMonth\r\n ? replaceBookmarks(infoBoxText, {\r\n DetailDescriptionPrice:\r\n toCurrency(switchToMonthlyPaymentsViewModelInitialPrices.value?.instalmentFeesPerYear) ?? '',\r\n AdminFee: toCurrency(switchToMonthlyPaymentsViewModelInitialPrices.value?.instalmentFeesPerMonth) ?? '',\r\n })\r\n : '',\r\n };\r\n }\r\n\r\n /**\r\n * Generate a Policy Description and Coverage display name\r\n */\r\n function getProductSummary(dictionary: Record) {\r\n return {\r\n policyDescription: currentPolicy.value?.coverages[0]\r\n ? getPolicyDescription(dictionary, currentPolicy.value?.coverages)\r\n : '',\r\n coverageDescriptions: getCoverages(),\r\n };\r\n }\r\n\r\n function getCoverages() {\r\n const formattedCoverages = currentPolicy.value?.coverages.map((coverage) => {\r\n return getCoverageDescriptionsByCoverageCode(coverage);\r\n });\r\n return formattedCoverages?.join(', ');\r\n }\r\n\r\n /**\r\n * Generate a review summary model for review and confirmation steps\r\n */\r\n function getReviewSummaryModel(summaryFields: any): IReviewSummary[] {\r\n const summary = {\r\n nameOnCard: model.value?.creditCardDetails?.cardHolder,\r\n cardNumber: formatMaskedCardNumber(model.value?.creditCardDetails?.maskedCardNumber ?? ''),\r\n cardExpiry: model.value?.creditCardDetails?.cardExpiry,\r\n nextPaymentDue: format(\r\n switchToMonthlyPaymentsViewModel.value?.quotePremiumDetails?.nonResponsiveNextInvoiceDue ?? '',\r\n STANDARD_DATE_FORMAT\r\n ),\r\n accountNumber: model.value?.bankAccountDetails?.accountNumber,\r\n accountName: model.value?.bankAccountDetails?.accountName,\r\n bsb: model.value?.bankAccountDetails?.bsb,\r\n };\r\n\r\n return mapPaymentDetails(summary, summaryFields);\r\n }\r\n\r\n function mapPaymentDetails(summary: Record, summaryFields: any): IReviewSummary[] {\r\n const summaryFieldsReplaced = replaceBookmarks(summaryFields, summary);\r\n const reviewSummaries: IReviewSummary[] = summaryFieldsReplaced.map((field: any) => ({\r\n ...field,\r\n icon: {\r\n value:\r\n (model.value?.paymentMethod == PaymentMethod.BankAccount\r\n ? 'bg-icon-bank-account'\r\n : 'bg-payment-filled-icon') + ' summary-title-icon',\r\n },\r\n items: field.items\r\n .filter((item: ISitecoreReviewSummaryItem) => {\r\n return executeDisplayRules(item.fields.displayRules, model.value?.paymentMethod);\r\n })\r\n .map((item: ISitecoreReviewSummaryItem) => {\r\n return {\r\n ...item,\r\n ...item.fields,\r\n };\r\n }),\r\n }));\r\n\r\n return reviewSummaries;\r\n }\r\n\r\n function executeDisplayRules(rules: ISitecoreItem[], paymentMethod: PaymentMethod | null | undefined) {\r\n if (rules && rules.length > 0) {\r\n const anyRuleIsTrue = rules.some(function (rule) {\r\n if ((SSChangePaymentDetailsRules as any)[rule.name]) {\r\n return (SSChangePaymentDetailsRules as any)[rule.name](paymentMethod);\r\n }\r\n });\r\n return anyRuleIsTrue;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n function setInsuranceType(coverageCode: string | null | undefined) {\r\n const coverage = currentPolicy.value?.coverages[0];\r\n\r\n isPet.value = coverage?.isPet ?? false;\r\n isHome.value = coverage?.isHome ?? false;\r\n isMotor.value = coverage?.isMotor ?? false;\r\n isBoat.value = coverage?.isBoat ?? false;\r\n isHealth.value = coverage?.isHealth ?? false;\r\n\r\n switch (coverageCode) {\r\n case QuoteTypes[QuoteTypes.HC]:\r\n case QuoteTypes[QuoteTypes.HH]:\r\n case QuoteTypes[QuoteTypes.HHCOMB]:\r\n isHome.value = true;\r\n break;\r\n case QuoteTypes[QuoteTypes.MC]:\r\n case QuoteTypes[QuoteTypes.MF]:\r\n case QuoteTypes[QuoteTypes.MT]:\r\n case QuoteTypes[QuoteTypes.Caravan]:\r\n case QuoteTypes[QuoteTypes.Motorcycle]:\r\n case QuoteTypes[QuoteTypes.BC]:\r\n case QuoteTypes[QuoteTypes.BT]:\r\n isMotor.value = true;\r\n break;\r\n case QuoteTypes[QuoteTypes.PET]:\r\n isPet.value = true;\r\n break;\r\n }\r\n }\r\n\r\n /**\r\n * Withdraw Quote Session\r\n */\r\n async function withdrawQuoteSession() {\r\n const response = await _quoteSessionService.withdrawQuoteSession(quoteSessionId.value ?? '');\r\n errors.value = response.errors;\r\n if (response.errors && response.errors.length > 0) {\r\n throw response.errors[0].message ?? JP_GENERIC_CODE;\r\n }\r\n return response;\r\n }\r\n\r\n /**\r\n * Bind Quote Session\r\n */\r\n async function bindQuoteSession() {\r\n const response = await _quoteSessionService.bindQuoteSession(quoteSessionId.value ?? '');\r\n errors.value = response.errors;\r\n if (response.errors && response.errors.length > 0) {\r\n throw response.errors[0].message ?? JP_GENERIC_CODE;\r\n }\r\n return response;\r\n }\r\n\r\n /**\r\n * Push data to analytics\r\n *\r\n * @param options\r\n */\r\n const pushAnalytics = (options: {\r\n event: FormEvents;\r\n amount?: number;\r\n payment?: Partial;\r\n productName?: string;\r\n }) => {\r\n const firstVehicle = currentPolicy.value?.coverages?.at(0);\r\n const model: IFormAnalytics = {\r\n event: options.event,\r\n form: {\r\n detail: {\r\n makeName: firstVehicle?.vehicle?.make ?? '',\r\n modelName: firstVehicle?.vehicle?.model ?? '',\r\n vehicleYear: firstVehicle?.vehicle?.year ?? '',\r\n },\r\n },\r\n };\r\n model.form.termEndDate = format(currentPolicy.value?.termEnd ?? '', STANDARD_DATE_FORMAT);\r\n if (options.productName) {\r\n model.form.productName = options.productName;\r\n }\r\n if (options.amount) {\r\n model.form.amount = options.amount;\r\n }\r\n if (options.payment) {\r\n model.payment = options.payment;\r\n }\r\n\r\n analyticsStore.pushAnalytics(model);\r\n };\r\n\r\n return {\r\n getPolicy,\r\n applyBusinessRules,\r\n savePaymentDetails,\r\n getPremiumDetails,\r\n getProductSummary,\r\n getReviewSummaryModel,\r\n withdrawQuoteSession,\r\n bindQuoteSession,\r\n pushAnalytics,\r\n currentPolicy,\r\n model,\r\n switchToMonthlyPaymentsViewModel,\r\n switchToMonthlyPaymentsViewModelInitialPrices,\r\n jeopardies,\r\n errors,\r\n paymentReceiptNumber,\r\n isMotor,\r\n isHome,\r\n isPet,\r\n isBoat,\r\n isHealth,\r\n };\r\n});\r\n","import { defineStore } from 'pinia';\r\nimport { PetService as _pet } from '@/services/store/pet.service';\r\nimport { IQConfigSettingsServices } from '@/services/store/iq-config-settings.service';\r\nimport { ref, computed } from 'vue';\r\nimport { IJeopardy, IQuote, IServiceResponseError, InsuranceQuotePhase, InsuranceQuoteType } from '@/interfaces';\r\nimport { QuoteTypes } from '@/constants/quote-types.const';\r\nimport { InsuranceQuoteService as _iqService } from '@/services/store/insurance-quote.service';\r\nimport { useJeopardyStore } from '../jeopardy/jeopardy.state';\r\nimport { INameValue } from '@/interfaces/entities/name-value.interface';\r\nimport { isArray } from 'lodash-es';\r\n\r\nexport const usePetStore = defineStore('Pet', () => {\r\n // ------------------------------------------------------------- //\r\n // Define State\r\n // ------------------------------------------------------------- //\r\n const jpStore = useJeopardyStore();\r\n const quote = ref>({});\r\n const quoteId = computed(() => quote.value.id ?? '');\r\n const quoteType = computed(() => (quote.value.quoteType && QuoteTypes[quote.value.quoteType]) || '');\r\n const jeopardies = ref([]);\r\n const errors = ref([]);\r\n\r\n async function createQuote() {\r\n quote.value.quoteType = InsuranceQuoteType.PetComp;\r\n quote.value.quotePhase = InsuranceQuotePhase.QuickQuote;\r\n quote.value.renewalPreference = true;\r\n quote.value.renewalTermAcceptance = true;\r\n const insuranceStartDate = quote.value.insuranceStartDate;\r\n const res = await _iqService.createQuote(quote.value);\r\n quote.value = {\r\n ...res.quote,\r\n insuranceStartDate,\r\n };\r\n }\r\n\r\n /**\r\n * Apply Business Rules\r\n *\r\n * @param formData\r\n */\r\n const applyBusinessRules = async () => {\r\n try {\r\n const response = await _iqService.applyBusinessRules(quoteId.value, quote.value);\r\n quote.value = response?.quote || quote.value;\r\n\r\n await handleJeopardyOrReasonCodes(response);\r\n } catch (error) {\r\n await handleError(error);\r\n }\r\n };\r\n\r\n /**\r\n * Apply Business Rules\r\n *\r\n * @param formData\r\n */\r\n const saveQuote = async () => {\r\n try {\r\n const response = await _iqService.saveQuote(quoteId.value, quote.value);\r\n quote.value = response?.quote || quote.value;\r\n\r\n await handleJeopardyOrReasonCodes(response);\r\n } catch (error) {\r\n await handleError(error);\r\n }\r\n };\r\n\r\n /**\r\n * Calculate quote price\r\n *\r\n * @returns\r\n */\r\n const calculatePrice = async () => {\r\n try {\r\n const response = await _iqService.calculatePrice(quoteId.value, quote.value);\r\n quote.value = response?.quote || quote.value;\r\n\r\n await handleJeopardyOrReasonCodes(response);\r\n } catch (error) {\r\n await handleError(error);\r\n }\r\n };\r\n\r\n const handleError = async (error: any) => {\r\n const isErrorArray = isArray(error);\r\n errors.value = isErrorArray ? error : [error];\r\n if (!isErrorArray && error?.code) {\r\n throw error.code;\r\n }\r\n\r\n throw ['Unknown error'];\r\n };\r\n\r\n const handleJeopardyOrReasonCodes = async (response: any) => {\r\n errors.value = [];\r\n jeopardies.value = [];\r\n if (response.success && response.data && response.data.jeopardies?.length > 0) {\r\n jeopardies.value = response.data.jeopardies;\r\n throw response.data.jeopardies[0];\r\n }\r\n\r\n if (response?.reasonCodes?.length > 0) {\r\n errors.value = response?.reasonCodes || [];\r\n throw response.reasonCodes[0];\r\n }\r\n\r\n if (response?.errors?.length > 0) {\r\n errors.value = [response.errors[0]];\r\n throw response.errors[0].errorType;\r\n }\r\n };\r\n\r\n const applyRulesAndSave = async (calculateQuotePrice: boolean = false) => {\r\n try {\r\n // Apply business rules\r\n await applyBusinessRules();\r\n\r\n if (calculateQuotePrice && !errors.value?.length) {\r\n // Save Quote for Pricing\r\n await saveQuote();\r\n\r\n // Recalculate quote price\r\n await calculatePrice();\r\n }\r\n\r\n // Save quote with new price\r\n await saveQuote();\r\n } catch (error) {\r\n jpStore.showJeopardyPanel({\r\n jpCode: jeopardies.value[0]?.code,\r\n });\r\n }\r\n };\r\n\r\n return {\r\n quote,\r\n quoteType,\r\n createQuote,\r\n applyRulesAndSave,\r\n };\r\n});\r\n","import {\r\n addDirectDebitToPrn,\r\n applyDiscountToQuote,\r\n getPrnDetails,\r\n processPrnPayment,\r\n sendReceiptEmail,\r\n} from '@/constants/forms-api.const';\r\nimport { RequestServices as _http } from '../common/request.services';\r\nimport {\r\n IApplyAssistanceQuoteDiscountRequest,\r\n IApplyAssistanceQuoteDiscountResponse,\r\n IApttusDirectDebitRequest,\r\n IPayWithCardResponse,\r\n IPaymentReferenceDetails,\r\n IProcessPaymentRequest,\r\n IReceiptEmailResponse,\r\n IReceiptRequest,\r\n ISuccessResponse,\r\n} from '@/interfaces/make-a-payment/make-a-payment.interface';\r\n\r\nexport const MakeAPaymentService = {\r\n /**\r\n * Get prn details by prn\r\n * @param prn payment reference number\r\n * @returns\r\n */\r\n getPrnDetails(prn: string): Promise {\r\n return _http.HttpGet(getPrnDetails.replace('{0}', prn));\r\n },\r\n\r\n /**\r\n * Process payment for PRN\r\n * @param paymentRequest Payment request\r\n * @returns\r\n */\r\n processPayment(paymentRequest: IProcessPaymentRequest): Promise {\r\n return _http.HttpPost(processPrnPayment, paymentRequest);\r\n },\r\n /**\r\n * Send email receipt\r\n * @param receiptRequest\r\n * @returns\r\n */\r\n sendReceiptEmail(receiptRequest: IReceiptRequest): Promise {\r\n return _http.HttpPost(sendReceiptEmail, receiptRequest);\r\n },\r\n /**\r\n * apply discount quote\r\n * @param discountRequest\r\n * @returns\r\n */\r\n applyDiscountToQuote(\r\n discountRequest: IApplyAssistanceQuoteDiscountRequest\r\n ): Promise {\r\n return _http.HttpPost(applyDiscountToQuote, discountRequest);\r\n },\r\n\r\n /**\r\n * add direct debit to apttus asset\r\n * @param apttusId apttus asset line item id\r\n * @param directDebitRequest direct debit request\r\n * @returns\r\n */\r\n addDirectDebitToPrn(apttusId: string, directDebitRequest: IApttusDirectDebitRequest): Promise {\r\n return _http.HttpPost(addDirectDebitToPrn.replace('{0}', apttusId), directDebitRequest);\r\n },\r\n};\r\n","import { defineStore } from 'pinia';\r\nimport { MakeAPaymentService } from '@/services/store/make-a-payment.service';\r\nimport { computed, ref } from 'vue';\r\nimport {\r\n IApplyAssistanceQuoteDiscountRequest,\r\n IApplyAssistanceQuoteDiscountResponse,\r\n IPayWithCardResponse,\r\n IPaymentReferenceDetails,\r\n IProcessPaymentRequest,\r\n IQuotedOption,\r\n IReceiptEmailResponse,\r\n IReceiptRequest,\r\n ISuccessResponse,\r\n} from '@/interfaces/make-a-payment/make-a-payment.interface';\r\nimport { ICardDetails, IOffer } from '@/interfaces';\r\nimport { mapDirectDebitRequest } from '@/forms/make-a-payment/mappings/make-a-payment-mappings';\r\n\r\nexport const useMakeAPaymentStore = defineStore('MakeAPayment', () => {\r\n // ------------------------------------------------------------- //\r\n // Define State\r\n // ------------------------------------------------------------- //\r\n const paymentReferenceDetails = ref({} as IPaymentReferenceDetails);\r\n const paymentResponse = ref();\r\n const selectedQuotedOption = ref();\r\n const addedDirectDebit = ref(false);\r\n const ddLoading = ref(false);\r\n const directDebitAttempted = ref(false);\r\n const directDebitSuccess = ref(false);\r\n const directDebitFailed = ref(false);\r\n const isUpgrade = computed(() =>\r\n selectedQuotedOption.value\r\n ? selectedQuotedOption.value?.productCode != paymentReferenceDetails.value.currentProduct.productCode\r\n : false\r\n );\r\n const isLifeStyle = computed((): boolean => paymentReferenceDetails.value?.policyTitle == 'Lifestyle');\r\n\r\n const isMultiCoveragePolicy = computed((): boolean => {\r\n return !!paymentReferenceDetails.value?.coverageCode && !!paymentReferenceDetails.value?.policyTitle;\r\n });\r\n const setSelectedQuoteOption = (quote: IQuotedOption) => {\r\n selectedQuotedOption.value = quote;\r\n };\r\n /**\r\n * Get prn details\r\n * @param prn payment reference number\r\n * @returns\r\n */\r\n const getPrnDetails = async (prn: string) => {\r\n const response = await MakeAPaymentService.getPrnDetails(prn);\r\n paymentReferenceDetails.value.prn = prn;\r\n response.isInurance =\r\n !(response.renewalOptions && response.renewalOptions?.length > 0) && (response.amount ?? 0) > 0;\r\n response.isInvoiceDebt = response.description == 'Invoice/Debtor payments';\r\n response.hasVehicleDetails =\r\n (response.isInurance && response.coverageCode == 'MC') ||\r\n (!response.isInurance && response.policyTitle != 'Lifestyle' && response.amount != null);\r\n response.prn = prn;\r\n paymentReferenceDetails.value = response;\r\n };\r\n\r\n /**\r\n * Process payment for prn\r\n * @param paymentRequest payment request\r\n * @returns\r\n */\r\n const processPrnPayment = async (paymentRequest: IProcessPaymentRequest): Promise => {\r\n const response = await MakeAPaymentService.processPayment(paymentRequest);\r\n paymentResponse.value = response;\r\n return response;\r\n };\r\n\r\n /**\r\n * Send receipt email to user\r\n * @param receiptRequest receipt request for sending email\r\n * @returns\r\n */\r\n const sendReceiptEmail = async (receiptRequest: IReceiptRequest): Promise => {\r\n return await MakeAPaymentService.sendReceiptEmail(receiptRequest);\r\n };\r\n\r\n /**\r\n * apply discount to quote\r\n * @param discountRequest quote discount request\r\n * @returns\r\n */\r\n const applyDiscountToQuote = async (\r\n discountRequest: IApplyAssistanceQuoteDiscountRequest\r\n ): Promise => {\r\n return await MakeAPaymentService.applyDiscountToQuote(discountRequest);\r\n };\r\n\r\n /**\r\n * Sort upgrade options based on DI preference\r\n * @param rsaQuoteOptions\r\n */\r\n const sortRenewalOptionsBasedOnOffer = (rsaQuoteOptions?: IOffer[]) => {\r\n if (rsaQuoteOptions?.length) {\r\n paymentReferenceDetails.value.renewalOptions.sort((a: IQuotedOption, b: IQuotedOption) => {\r\n if (a.productCode == paymentReferenceDetails.value.renewalOptions[0].productCode) return -1; //do not sort the current 1st product as it will need to remain at 1\r\n if (b.productCode == paymentReferenceDetails.value.renewalOptions[0].productCode) return 1;\r\n return (\r\n (rsaQuoteOptions.find((x) => x.data.quote.productCode == a.productCode)?.rank ?? 10) - //choosing higher number rank so that ones without rank are always sorted at the end\r\n (rsaQuoteOptions.find((x) => x.data.quote.productCode == b.productCode)?.rank ?? 10)\r\n );\r\n });\r\n }\r\n };\r\n\r\n /**\r\n * Add direct debit to asset line item\r\n * @param cardDetails card details\r\n * @returns\r\n */\r\n const addDirectDebitToPrn = async (cardDetails: ICardDetails): Promise => {\r\n const response = await MakeAPaymentService.addDirectDebitToPrn(\r\n paymentReferenceDetails.value.apttusId,\r\n mapDirectDebitRequest(paymentReferenceDetails.value, cardDetails)\r\n );\r\n addedDirectDebit.value = response.value;\r\n return response;\r\n };\r\n /**\r\n * set direct debit\r\n * @param cardDetails\r\n */\r\n const setDirectDebit = async (cardDetails: ICardDetails | null) => {\r\n try {\r\n if (cardDetails) {\r\n ddLoading.value = true;\r\n await addDirectDebitToPrn(cardDetails);\r\n setDDStatus(true);\r\n }\r\n } catch (e) {\r\n console.error('Failed to setup direct debit', e);\r\n setDDStatus(false);\r\n } finally {\r\n ddLoading.value = false;\r\n }\r\n };\r\n const setDDStatus = (success: boolean) => {\r\n directDebitAttempted.value = true;\r\n directDebitSuccess.value = success;\r\n directDebitFailed.value = !success;\r\n };\r\n\r\n const $reset = () => {\r\n selectedQuotedOption.value = undefined;\r\n paymentReferenceDetails.value = {} as IPaymentReferenceDetails;\r\n };\r\n return {\r\n paymentReferenceDetails,\r\n selectedQuotedOption,\r\n getPrnDetails,\r\n processPrnPayment,\r\n paymentResponse,\r\n sendReceiptEmail,\r\n setSelectedQuoteOption,\r\n applyDiscountToQuote,\r\n sortRenewalOptionsBasedOnOffer,\r\n addDirectDebitToPrn,\r\n addedDirectDebit,\r\n setDirectDebit,\r\n ddLoading,\r\n directDebitAttempted,\r\n directDebitSuccess,\r\n directDebitFailed,\r\n isUpgrade,\r\n isLifeStyle,\r\n isMultiCoveragePolicy,\r\n $reset,\r\n };\r\n});\r\n","export function replaceBookmark(bookmark: string, content: string, replaceValue: string): string {\r\n const bookMarkToken = `{{${bookmark}}}`;\r\n return content.replaceAll(bookMarkToken, replaceValue);\r\n}\r\n\r\nexport function replaceBookmarks(object: T, replaceObject: object): T {\r\n let raw = JSON.stringify(object);\r\n for (const [key, value] of Object.entries(replaceObject)) {\r\n raw = replaceBookmark(key, raw, value);\r\n }\r\n return JSON.parse(raw);\r\n}\r\n","/**\r\n * Check if object is empty {}\r\n *\r\n * @param object {}\r\n * @returns bool\r\n */\r\nexport function isEmptyObject(object: any) {\r\n try {\r\n return JSON.stringify(object) === '{}';\r\n } catch {\r\n return true;\r\n }\r\n}\r\n","import { differenceInYears, isAfter } from 'date-fns';\r\n\r\nexport async function sleep(ms: number): Promise {\r\n return new Promise((resolve) => setTimeout(resolve, ms));\r\n}\r\n\r\nexport function calculateAge(birthDate: Date): number {\r\n const today = new Date();\r\n\r\n // Validate that the birthDate is not in the future\r\n if (isAfter(birthDate, today)) {\r\n throw new Error('Birth date cannot be in the future');\r\n }\r\n\r\n return differenceInYears(today, birthDate);\r\n}\r\n","export const toNumber = (number?: any) => {\r\n try {\r\n return number ? Number(number) : 0;\r\n } catch {\r\n return 0;\r\n }\r\n};\r\n\r\nexport const toCurrency = (number?: number | string, showZeroDecimals: boolean = true): string => {\r\n try {\r\n if (number === undefined) {\r\n return '';\r\n }\r\n\r\n const formatted = new Intl.NumberFormat('en-AU', { style: 'currency', currency: 'AUD' }).format(Number(number));\r\n const [integerPart, decimalPart] = formatted.split('.');\r\n\r\n if (!showZeroDecimals && decimalPart === '00') {\r\n return integerPart;\r\n }\r\n\r\n return formatted;\r\n } catch {\r\n return '';\r\n }\r\n};\r\n\r\nexport const toBool = (value?: any): boolean => {\r\n try {\r\n return value === 'true' || value === 1 || value === true;\r\n } catch {\r\n return false;\r\n }\r\n};\r\n","import { INameCode } from '@/interfaces/entities/name-code.interface';\r\nimport { INameValue } from '@/interfaces/entities/name-value.interface';\r\nimport { parse, format } from 'date-fns';\r\n\r\nimport { Field } from '@sitecore-jss/sitecore-jss-vue';\r\n/**\r\n * Convert an Array of objects into an Object.\r\n *\r\n * @param arr The Array to map over.\r\n * @param key The desired field for each Object key.\r\n * If no key is passe in, it is assumed that this will be used\r\n * for sitecore form inputs using the formInputId.value\r\n *\r\n */\r\nexport function convertArrayToObject(arr: Record[], key?: string): Record {\r\n if (!arr?.length) return {};\r\n\r\n const newObject = Object.assign(\r\n {},\r\n ...arr\r\n // shouldn't have to do this ... it means a field is broken in sitecore\r\n .filter((item) => (item?.formInputId?.value ? true : false))\r\n //\r\n .map((item) => ({\r\n [key || item.formInputId.value]: item,\r\n }))\r\n );\r\n\r\n return newObject;\r\n}\r\n\r\n/**\r\n * Convert a PascalCase sting to kebab-case\r\n *\r\n * Used for converting Vue component names\r\n * to kebab case for file path importing.\r\n *\r\n */\r\nexport function pascalCaseToKebabCase(str = '') {\r\n return str\r\n .match(/[A-Z][0-9a-z]*/g)\r\n ?.join('-')\r\n .toLowerCase();\r\n}\r\n\r\n/**\r\n * Restrict decimals to a set number of digits.\r\n *\r\n * @param num\r\n * @param digits\r\n * @returns\r\n */\r\nexport function truncateDecimals(num: number, digits = 2) {\r\n const multiplier = Math.pow(10, digits);\r\n const adjustedNum = num * multiplier;\r\n const truncatedNum = Math[adjustedNum < 0 ? 'ceil' : 'floor'](adjustedNum);\r\n\r\n return truncatedNum / multiplier;\r\n}\r\n\r\n// TODO: Deprecated: This is a bad pattern, do not use. Instead see Homecontents_CoverDetails.vue for an example of mapping dynamic options\r\nexport function convertReferenceDataNameCodeToDynamicOptions(apiResponse: INameCode[], excludeCode?: string): any {\r\n if (!apiResponse || !apiResponse.values) return '';\r\n\r\n let filteredResponse;\r\n if (Array.isArray(apiResponse.values)) {\r\n filteredResponse = JSON.parse(JSON.stringify(apiResponse.values));\r\n } else {\r\n filteredResponse = JSON.parse(JSON.stringify(apiResponse));\r\n }\r\n\r\n if (filteredResponse && excludeCode) {\r\n filteredResponse = filteredResponse.filter((item: any) => item.code !== excludeCode);\r\n }\r\n\r\n return filteredResponse\r\n .map((item: any) => `${item.name}=${item.code}`)\r\n .map((e: any) => e)\r\n .join('&');\r\n}\r\n\r\n// TODO: Deprecated: This is a bad pattern, do not use. Instead see Homecontents_CoverDetails.vue for an example of mapping dynamic options\r\nexport function convertReferenceDataValueCodeToDynamicOptions(apiResponse: INameValue[], excludeCode?: string): any {\r\n if (!apiResponse) return '';\r\n\r\n let filteredResponse;\r\n if (Array.isArray(apiResponse.values)) {\r\n filteredResponse = JSON.parse(JSON.stringify(apiResponse.values));\r\n } else {\r\n filteredResponse = JSON.parse(JSON.stringify(apiResponse));\r\n }\r\n\r\n if (filteredResponse && excludeCode) {\r\n filteredResponse = filteredResponse.filter((item: any) => item.value !== excludeCode);\r\n }\r\n\r\n return filteredResponse\r\n .map((item: any) => `${item.name}=${item.value}`)\r\n .map((e: any) => e)\r\n .join('&');\r\n}\r\n\r\nexport const convertToISOString = (dateString: string): string => {\r\n const [day, month, year] = dateString.split('/').map(Number);\r\n const dateObj = new Date(Date.UTC(year, month - 1, day)); // Months are 0-indexed in JavaScript\r\n dateObj.setMilliseconds(0);\r\n\r\n return dateObj.toISOString().replace('.000Z', 'Z');\r\n};\r\n\r\nexport const convertToISODate = (dateString: string): Date => {\r\n const [day, month, year] = dateString.split('/').map(Number);\r\n const dateObj = new Date(Date.UTC(year, month - 1, day)); // Months are 0-indexed in JavaScript\r\n dateObj.setMilliseconds(0);\r\n\r\n return dateObj;\r\n};\r\n\r\nexport const convertISOToDate = (isoString: string): string => {\r\n const dateObj = new Date(isoString);\r\n return convertISOToDateFormatted(dateObj);\r\n};\r\n\r\nexport const convertISOToDateFormatted = (date: Date): string => {\r\n // Using Brisbane timezone to make sure everybody will get the same date\r\n const options: Intl.DateTimeFormatOptions = {\r\n timeZone: 'Australia/Brisbane',\r\n day: '2-digit',\r\n month: '2-digit',\r\n year: 'numeric',\r\n };\r\n\r\n return new Intl.DateTimeFormat('en-GB', options).format(date);\r\n};\r\n\r\n// Function to transform a generic field to the expected structure\r\nexport const transformField = (field: Field) => {\r\n return {\r\n value: typeof field.value === 'string' || typeof field.value === 'number' ? field.value : undefined,\r\n editable: field.editable,\r\n };\r\n};\r\n\r\n/**\r\n * Function to map form step to index of an array in the quote and return the current quote index for the step.\r\n * For example useful when needing to know which Pet to load and which Pet item to remove from the quote.\r\n * @param formStore\r\n * @param purchaseStepId\r\n * @param currentStepIndex\r\n * @returns\r\n */\r\nexport const getQuoteArrayItemIndexByStepIndex = (formStore: any, purchaseStepId: string, currentStepIndex: number) => {\r\n if (!formStore || !purchaseStepId || !currentStepIndex) return -1;\r\n\r\n const mapStepIndexAndIndexMapping = formStore.inScopeSteps\r\n .filter((x: any) => x.id.toLowerCase() === purchaseStepId.toLocaleLowerCase())\r\n .map((x: any, i: number) => {\r\n return { stepIndex: x.stepIndex, index: i };\r\n });\r\n\r\n const currentStep = mapStepIndexAndIndexMapping.find((x: any) => x.stepIndex === currentStepIndex);\r\n return currentStep ? currentStep?.index : -1;\r\n};\r\n\r\n/**\r\n * Convert Date to dateString string\r\n *\r\n * @param date\r\n * @param outputStringFormat\r\n */\r\nexport function dateToDateString(inputDate: Date, outputStringFormat: 'dd/MM/yyyy' | 'ddMMyyyy' | 'yyyy-MM-dd') {\r\n return format(inputDate, outputStringFormat);\r\n}\r\n\r\n/**\r\n * Convert dateDtring to Date\r\n *\r\n * @param inputDateString\r\n * @param inputStringFormat\r\n */\r\nexport function dateStringToDate(inputDateString: string, inputStringFormat: 'dd/MM/yyyy' | 'ddMMyyyy' | 'yyyy-MM-dd') {\r\n return parse(inputDateString, inputStringFormat, new Date());\r\n}\r\n\r\n/**\r\n * Flat map fields, { field1: { value: 123 } } => { field1: 123 }\r\n * @param item\r\n * @returns\r\n */\r\nexport function flatMapFields(item: Record): Record {\r\n const keys = Object.keys(item);\r\n const result: Record = {};\r\n keys.forEach((key: string) => (result[key] = item[key]?.value));\r\n return result;\r\n}\r\n","import { IQuote } from '@/interfaces';\r\nimport { useLiveChatStore, useReferenceDataStore } from '@/store';\r\n\r\nexport enum loyaltyReviewContent {\r\n headingTriedToValidate = 'headingTriedToValidate',\r\n headingPrimaryHolderFound = 'headingPrimaryHolderFound',\r\n headingSecondaryHolderFound = 'headingSecondaryHolderFound',\r\n textMemberLevel = 'textMemberLevel',\r\n textMultiMemberLevel = 'textMultiMemberLevel',\r\n textRoadsideAdded = 'textRoadsideAdded',\r\n textNotAMember = 'textNotAMember',\r\n textNewQuoteCost = 'textNewQuoteCost',\r\n textHelpNoChat = 'textHelpNoChat',\r\n textHelpWithChat = 'textHelpWithChat',\r\n textDiscount = 'textDiscount',\r\n}\r\n\r\nconst blankLoyaltyResponse = {\r\n skipLoyaltyReviewStep: true,\r\n useHeading: '',\r\n useLoyaltyText: '',\r\n useNewQuoteCostText: '',\r\n useHelpText: '',\r\n};\r\n\r\nexport const displayLoyaltyReview = async (\r\n quote: IQuote,\r\n originalQuote?: IQuote,\r\n storyBookIgnoreApiMode: boolean = false\r\n) => {\r\n const liveChatStore = useLiveChatStore();\r\n const refStore = useReferenceDataStore();\r\n\r\n if (!quote || !originalQuote) {\r\n return blankLoyaltyResponse;\r\n }\r\n\r\n const hasAdditionalPolicyholders = quote?.additionalPolicyHolderDetails?.length > 0;\r\n const highestLoyaltyLevelAfterPartyMatching = quote.discounts?.highestMembershipLoyaltyLevel.value;\r\n const eligibleForLoyaltyDiscount = quote.discounts?.eligibleForLoyaltyDiscount.value;\r\n\r\n const loyaltyLevelChanged = hasLoyaltyLevelChanged(quote, originalQuote);\r\n const quoteType = quote.quoteType ?? '';\r\n const levels = await refStore.getMembershipLevels(quoteType as string);\r\n let matchedLevel = null;\r\n\r\n if (levels && levels?.length > 0) {\r\n matchedLevel = levels.find(\r\n (x: any) => x.code.toLowerCase() === highestLoyaltyLevelAfterPartyMatching?.toLowerCase()\r\n );\r\n }\r\n\r\n const loyaltyContent = getLoyaltyContent(\r\n storyBookIgnoreApiMode,\r\n eligibleForLoyaltyDiscount,\r\n matchedLevel,\r\n loyaltyLevelChanged,\r\n hasAdditionalPolicyholders\r\n );\r\n\r\n const shouldShowHelpText =\r\n originalQuote.insuranceQuoteSummary && quote.insuranceQuoteSummary\r\n ? originalQuote.insuranceQuoteSummary?.yearlyAnnualPremium < quote.insuranceQuoteSummary?.yearlyAnnualPremium\r\n : false;\r\n const useHelpText = shouldShowHelpText\r\n ? liveChatStore.liveChatEnabled\r\n ? loyaltyReviewContent.textHelpWithChat\r\n : loyaltyReviewContent.textHelpNoChat\r\n : '';\r\n\r\n return {\r\n skipLoyaltyReviewStep: loyaltyLevelChanged.shouldSkip,\r\n useHeading: loyaltyContent.useHeading,\r\n useLoyaltyText: loyaltyContent.useLoyaltyText,\r\n useNewQuoteCostText: loyaltyReviewContent.textNewQuoteCost,\r\n useHelpText: useHelpText,\r\n hasQuotePremiumChanged: hasQuotePremiumChanged(originalQuote, quote),\r\n };\r\n};\r\n\r\nconst getLoyaltyContent = (\r\n storyBookIgnoreApiMode: boolean,\r\n eligibleForLoyaltyDiscount: boolean,\r\n matchedLevel: any,\r\n loyaltyLevelChanged: any,\r\n hasAdditionalPolicyholders: boolean\r\n) => {\r\n let useHeading = '';\r\n let useLoyaltyText = '';\r\n\r\n if (\r\n (storyBookIgnoreApiMode || matchedLevel != null) &&\r\n loyaltyLevelChanged.hasRoadSideAfterPartyMatching &&\r\n eligibleForLoyaltyDiscount\r\n ) {\r\n if (loyaltyLevelChanged.loyaltyChanged) {\r\n if (!hasAdditionalPolicyholders) {\r\n useHeading = loyaltyReviewContent.headingPrimaryHolderFound;\r\n useLoyaltyText = loyaltyReviewContent.textMemberLevel;\r\n } else {\r\n useHeading = loyaltyReviewContent.headingSecondaryHolderFound;\r\n useLoyaltyText = loyaltyReviewContent.textMultiMemberLevel;\r\n }\r\n } else {\r\n useHeading = loyaltyReviewContent.headingSecondaryHolderFound;\r\n useLoyaltyText = loyaltyReviewContent.textRoadsideAdded;\r\n }\r\n } else {\r\n useHeading = loyaltyReviewContent.headingTriedToValidate;\r\n useLoyaltyText = loyaltyReviewContent.textNotAMember;\r\n }\r\n\r\n return {\r\n useHeading,\r\n useLoyaltyText,\r\n };\r\n};\r\n\r\nconst hasLoyaltyLevelChanged = (quote: IQuote, originalQuote?: IQuote): any => {\r\n if (!originalQuote) return false;\r\n const highestLoyaltyLevelBeforePartyMatching = originalQuote.discounts?.highestMembershipLoyaltyLevel?.value;\r\n const highestLoyaltyLevelAfterPartyMatching = quote.discounts?.highestMembershipLoyaltyLevel?.value;\r\n\r\n const hasRoadSideBeforePartyMatching =\r\n (originalQuote.primaryPolicyHolderDetails?.hasRoadsideProduct?.value as boolean) ||\r\n originalQuote.additionalPolicyHolderDetails?.some((x) => x.hasRoadsideProduct?.value);\r\n\r\n const hasRoadSideAfterPartyMatching =\r\n (quote.primaryPolicyHolderDetails?.hasRoadsideProduct?.value as boolean) ||\r\n quote.additionalPolicyHolderDetails?.some((x) => x.hasRoadsideProduct?.value);\r\n\r\n const shouldSkip =\r\n (highestLoyaltyLevelBeforePartyMatching?.toLowerCase() === highestLoyaltyLevelAfterPartyMatching?.toLowerCase() &&\r\n hasRoadSideBeforePartyMatching === hasRoadSideAfterPartyMatching) ||\r\n !hasRoadSideBeforePartyMatching === !hasRoadSideAfterPartyMatching;\r\n\r\n return {\r\n loyaltyChanged: highestLoyaltyLevelBeforePartyMatching != highestLoyaltyLevelAfterPartyMatching,\r\n roadsideChanged: hasRoadSideBeforePartyMatching != hasRoadSideAfterPartyMatching,\r\n shouldSkip: shouldSkip,\r\n highestLoyaltyLevelAfterPartyMatching: highestLoyaltyLevelAfterPartyMatching,\r\n hasRoadSideAfterPartyMatching: hasRoadSideAfterPartyMatching,\r\n };\r\n};\r\n\r\nexport const displayLoyaltyReviewUsingStore = async (iqStore: any) => {\r\n return await displayLoyaltyReview(iqStore.quote, iqStore.originalQuote);\r\n};\r\n\r\nexport const hasQuotePremiumChanged = (originalQuote: Partial, quote: Partial) => {\r\n return quote?.insuranceQuoteSummary?.yearlyAnnualPremium != originalQuote?.insuranceQuoteSummary?.yearlyAnnualPremium;\r\n};\r\n","import { PaymentMethod } from '@/enums/payment-types.enum';\r\n\r\nexport const isBankAccount = (paymentMethod: PaymentMethod) => {\r\n return paymentMethod == PaymentMethod.BankAccount;\r\n};\r\n\r\nexport const isCreditCard = (paymentMethod: PaymentMethod) => {\r\n return paymentMethod == PaymentMethod.CreditCard;\r\n};\r\n\r\nexport const SSChangePaymentDetailsRules = {\r\n isBankAccount,\r\n isCreditCard,\r\n};\r\n","import animateScrollTo from 'animated-scroll-to';\r\nimport { breakpointsTailwind, useBreakpoints } from '@vueuse/core';\r\n\r\n/**\r\n * Smooth scroll to an element in the form wizard.\r\n *\r\n * @param {String} el The element to scroll to\r\n * @param {Number} timeout Begin scrolling after element has attached to the DOM\r\n * @param {Number} verticalOffset The amount of space to show before the element\r\n *\r\n */\r\nexport function scrollToElement(el = 'body', timeout = 100, verticalOffset = 0) {\r\n const elementToScrollTo = document.querySelector(el);\r\n scrollToElementRaw(elementToScrollTo, timeout, verticalOffset);\r\n}\r\n\r\nexport function scrollToElementRaw(el: Element | null | undefined, timeout = 100, verticalOffset = 0) {\r\n if (el) {\r\n setTimeout(() => {\r\n animateScrollTo(el, {\r\n minDuration: 400,\r\n maxDuration: 600,\r\n verticalOffset,\r\n });\r\n }, timeout);\r\n }\r\n}\r\n\r\nexport function isDevEnv() {\r\n return process.env.NODE_ENV === 'development';\r\n}\r\n\r\n/**\r\n * Obtain the screen size using Tailwind breakpoints.\r\n *\r\n * @returns {Record}\r\n */\r\nexport function getScreenSize() {\r\n const breakpoints = useBreakpoints(breakpointsTailwind);\r\n\r\n const xs = breakpoints.smaller('sm');\r\n const xse = breakpoints.smallerOrEqual('sm');\r\n const sm = breakpoints.between('sm', 'md');\r\n const md = breakpoints.between('md', 'lg');\r\n const lg = breakpoints.between('lg', 'xl');\r\n const xl = breakpoints.between('xl', '2xl');\r\n const xxl = breakpoints['2xl'];\r\n\r\n return {\r\n xs,\r\n xse,\r\n sm,\r\n md,\r\n lg,\r\n xl,\r\n xxl,\r\n };\r\n}\r\n\r\nexport function isMobileDevice() {\r\n const regex = /Mobi|Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i;\r\n return regex.test(navigator.userAgent);\r\n}\r\n\r\n/**\r\n * Check if the user is at the bottom\r\n *\r\n * @returns {boolean} isReachBottom\r\n */\r\nexport function isReachBottom() {\r\n return document.body.scrollHeight - window.innerHeight <= window.scrollY;\r\n}\r\n","import { ICoverage, IQuote, InsuranceQuoteType } from '@/interfaces';\r\nimport { QuoteTypes } from '@/constants/quote-types.const';\r\nimport { FormUrlBase } from '@/constants/forms-api.const';\r\nexport enum HomeQuoteStepIds {\r\n policyStartDate = 0,\r\n startYourQuote = 100,\r\n buildingDetails = 200,\r\n portableItems = 300,\r\n homeItems = 400,\r\n generalContents = 500,\r\n personalDetails = 600,\r\n yourQuote = 700,\r\n}\r\n\r\nconst usesGoToFunction = ['personalDetails'];\r\n\r\nexport const formatPrimaryPolicyHolderAddress = (quote: Partial, includeCountry: boolean = true) => {\r\n let formattedAddress = `${quote.primaryPolicyHolderDetails?.streetNumber?.value} \r\n ${quote.primaryPolicyHolderDetails?.street?.value}, \r\n ${quote.primaryPolicyHolderDetails?.suburb?.value},\r\n ${quote.primaryPolicyHolderDetails?.state?.value},\r\n ${quote.primaryPolicyHolderDetails?.postcode?.value}`;\r\n\r\n formattedAddress = includeCountry\r\n ? `${formattedAddress}, ${quote.primaryPolicyHolderDetails?.country?.value}`\r\n : formattedAddress;\r\n\r\n return formattedAddress;\r\n};\r\n\r\nexport const formatHomeLocationDetails = (quote: IQuote) => {\r\n return `${quote.homeAndContentsQuote?.homeLocationDetails?.streetNumber?.value} \r\n ${quote.homeAndContentsQuote?.homeLocationDetails?.streetName?.value}, \r\n ${quote.homeAndContentsQuote?.homeLocationDetails?.suburb?.value} \r\n ${quote.homeAndContentsQuote?.homeLocationDetails?.state?.value}\r\n ${quote.homeAndContentsQuote?.homeLocationDetails?.postCode?.value}`;\r\n};\r\n\r\nexport const homeContentsQuoteBase = FormUrlBase + '/homecontents';\r\n\r\nexport const getEditGoToStep = (editStep: string) => {\r\n const useGoToFunction = usesGoToFunction.findIndex((x) => x == editStep) > -1;\r\n if (!useGoToFunction) return undefined;\r\n const foundStep = Object.keys(HomeQuoteStepIds)[Object.values(HomeQuoteStepIds).indexOf(editStep)];\r\n\r\n switch (foundStep) {\r\n case HomeQuoteStepIds.personalDetails.toString():\r\n return 0;\r\n }\r\n return undefined;\r\n};\r\n\r\nexport const getEditLinkForQuote = (quote: IQuote, editStep: string) => {\r\n let editLink;\r\n\r\n if (!editStep || usesGoToFunction.findIndex((x) => x == editStep) > -1) return '';\r\n\r\n switch (quote.quoteType) {\r\n case InsuranceQuoteType.HomeAndContents:\r\n case InsuranceQuoteType.Home:\r\n editLink = appendReference(homeContentsQuoteBase, quote.id);\r\n editLink = appendStep(editLink, editStep);\r\n break;\r\n }\r\n\r\n return editLink ? editLink : '';\r\n};\r\n\r\nconst appendReference = (editLink: string, reference: string) => {\r\n return `${editLink}?ref=${reference}`;\r\n};\r\n\r\nconst appendStep = (editLink: string, step: string) => {\r\n const foundStep = Object.keys(HomeQuoteStepIds)[Object.values(HomeQuoteStepIds).indexOf(step)];\r\n return `${editLink}&step=${foundStep}`;\r\n};\r\n\r\nexport const getInsuranceTypeDisplayNameUsingInsuranceQuoteType = (dictionary: any, quoteType: InsuranceQuoteType) => {\r\n switch (quoteType) {\r\n case InsuranceQuoteType.MotorComprehensive:\r\n return dictionary.IT_Motorcycle;\r\n case InsuranceQuoteType.Home:\r\n return dictionary.IT_HH;\r\n case InsuranceQuoteType.Contents:\r\n return dictionary.IT_HC;\r\n case InsuranceQuoteType.HomeAndContents:\r\n return dictionary.IT_HHCOMB;\r\n case InsuranceQuoteType.MotorFireTheftAndThirdPartyLiability:\r\n return dictionary.MotorFireTheftAndThirdPartyLiability;\r\n case InsuranceQuoteType.MotorThirdPartyLiability:\r\n return dictionary.MotorThirdPartyLiability;\r\n case InsuranceQuoteType.PetComp:\r\n return dictionary.IT_PET;\r\n }\r\n};\r\n\r\nexport const getInsuranceTypeDisplayName = (dictionary: any, quoteType: string) => {\r\n switch (quoteType.toString()) {\r\n case QuoteTypes[QuoteTypes.HC]:\r\n return dictionary.IT_HC;\r\n case QuoteTypes[QuoteTypes.HH]:\r\n return dictionary.IT_HH;\r\n case QuoteTypes[QuoteTypes.HHCOMB]:\r\n return dictionary.IT_HHCOMB;\r\n case QuoteTypes[QuoteTypes.MC]:\r\n case QuoteTypes[QuoteTypes.MCOther]:\r\n return dictionary.IT_MC;\r\n case QuoteTypes[QuoteTypes.MF]:\r\n case QuoteTypes[QuoteTypes.MFOther]:\r\n return dictionary.IT_MF;\r\n case QuoteTypes[QuoteTypes.MT]:\r\n case QuoteTypes[QuoteTypes.MTOther]:\r\n return dictionary.IT_MT;\r\n case QuoteTypes[QuoteTypes.PET]:\r\n return dictionary.IT_PET;\r\n case QuoteTypes[QuoteTypes.Caravan]:\r\n return dictionary.IT_Caravan;\r\n case QuoteTypes[QuoteTypes.Motorcycle]:\r\n return dictionary.IT_Motorcycle;\r\n case QuoteTypes[QuoteTypes.BC]:\r\n return dictionary.IT_BC;\r\n case QuoteTypes[QuoteTypes.BT]:\r\n return dictionary.IT_BT;\r\n }\r\n\r\n return '';\r\n};\r\n\r\nexport const getInsuranceQuoteTypeDisplayName = (dictionary: any, quoteType: InsuranceQuoteType) => {\r\n switch (quoteType) {\r\n case InsuranceQuoteType.Contents:\r\n return dictionary.IT_HC;\r\n case InsuranceQuoteType.Home:\r\n return dictionary.IT_HH;\r\n case InsuranceQuoteType.HomeAndContents:\r\n return dictionary.IT_HHCOMB;\r\n case InsuranceQuoteType.MotorComprehensive:\r\n return dictionary.IT_MC;\r\n case InsuranceQuoteType.MotorFireTheftAndThirdPartyLiability:\r\n return dictionary.IT_MF;\r\n case InsuranceQuoteType.MotorThirdPartyLiability:\r\n return dictionary.IT_MT;\r\n case InsuranceQuoteType.PetComp:\r\n return dictionary.IT_PET;\r\n case InsuranceQuoteType.Motorcycle:\r\n return dictionary.IT_Motorcycle;\r\n case InsuranceQuoteType.Caravan:\r\n return dictionary.IT_Caravan;\r\n case InsuranceQuoteType.BoatComprehensive:\r\n return dictionary.IT_BC;\r\n case InsuranceQuoteType.BoatThirdParty:\r\n return dictionary.IT_BT;\r\n }\r\n\r\n return '';\r\n};\r\n\r\nexport const getPolicyDescription = (dictionary: any, coverages: ICoverage[]) => {\r\n if (coverages.length > 1) {\r\n let isHouseHoldPolicyType = false;\r\n\r\n coverages.forEach((c) => {\r\n if (\r\n c.coverageCode === QuoteTypes[QuoteTypes.HC] ||\r\n c.coverageCode === QuoteTypes[QuoteTypes.HH] ||\r\n c.coverageCode === QuoteTypes[QuoteTypes.HHCOMB]\r\n ) {\r\n isHouseHoldPolicyType = true;\r\n return;\r\n }\r\n });\r\n\r\n if (isHouseHoldPolicyType) {\r\n return dictionary.IT_Combined_Household;\r\n }\r\n\r\n return dictionary.IT_Combined;\r\n }\r\n\r\n return getInsuranceTypeDisplayName(dictionary, coverages[0].coverageCode);\r\n};\r\n","import { IQuote } from '@/interfaces';\r\nimport { useAnalyticsStore } from '@/store';\r\nimport { QuoteTypes } from '@/constants/quote-types.const';\r\nimport { getInsuranceTypeDisplayName } from './editable-steps/quote-content-builder';\r\nimport { PaymentFrequency } from '@/enums/payment-frequency';\r\nimport { PaymentTypes } from '@/enums/payment-types.enum';\r\nimport { YES, NO } from '@/constants/general-words.const';\r\n\r\nimport {\r\n IFormAnalytics,\r\n IAnalyticsForm,\r\n IAnalyticsProfileInfo,\r\n IAnalyticsDetail,\r\n IAnalyticsPaymentDetail,\r\n IAnalyticsNavigation,\r\n} from '@/interfaces/forms/analytics-interface';\r\nimport { FormEvents } from '@/enums/form-events.enum';\r\nimport { STANDARD_DATE_FORMAT } from '@/constants/formats';\r\nimport { format } from 'date-fns';\r\nimport { convertISOToDateFormatted } from './data-transforms';\r\n\r\nexport class FormAnalyticsBuilder {\r\n private readonly _quote: Partial;\r\n formAnalytics: IFormAnalytics;\r\n\r\n analyticsStore = useAnalyticsStore();\r\n\r\n constructor(quote: Partial, event: FormEvents, translation: any) {\r\n const dictionary: Record = translation.getLocaleMessage('en');\r\n this._quote = quote;\r\n\r\n this.formAnalytics = {} as IFormAnalytics;\r\n this.formAnalytics.form = {} as IAnalyticsForm;\r\n this.formAnalytics.event = event;\r\n\r\n if (event !== FormEvents.JEOPARDY) {\r\n this.formAnalytics.form.referenceID = quote.reference ?? '';\r\n\r\n if (quote.quoteType) {\r\n this.formAnalytics.form.productName = getInsuranceTypeDisplayName(dictionary, QuoteTypes[quote.quoteType]);\r\n }\r\n }\r\n }\r\n\r\n populateProfileInfo() {\r\n // Ensure profileInfo is always initialized\r\n //Contact ID is handled in analytic.state\r\n if (!this.formAnalytics.profileInfo) {\r\n this.formAnalytics.profileInfo = {} as IAnalyticsProfileInfo;\r\n }\r\n\r\n this.formAnalytics.profileInfo.insuranceHoldings = this._quote.coverageSummaries?.length?.toString() ?? '';\r\n\r\n const memberLevel =\r\n !this._quote.primaryPolicyHolderDetails?.membershipLoyaltyLevel?.value ||\r\n this._quote.primaryPolicyHolderDetails?.membershipLoyaltyLevel?.value === 'NotAMember'\r\n ? 'Blue'\r\n : this._quote.primaryPolicyHolderDetails?.membershipLoyaltyLevel?.value;\r\n\r\n this.formAnalytics.profileInfo.memberLevel = memberLevel;\r\n this.formAnalytics.profileInfo.postcode = this._quote.primaryPolicyHolderDetails?.postcode.value ?? '';\r\n }\r\n\r\n populateProfileInfoForCarPurchase() {\r\n this.populateProfileInfo();\r\n\r\n const driverDateOfBirth = this._quote.motorQuote?.primaryDriverDetails?.driverDateOfBirth?.value;\r\n\r\n // Ensure profileInfo exists before modifying it\r\n if (!this.formAnalytics.profileInfo) {\r\n this.formAnalytics.profileInfo = {} as IAnalyticsProfileInfo;\r\n }\r\n\r\n this.formAnalytics.profileInfo.birthYear = driverDateOfBirth\r\n ? convertISOToDateFormatted(driverDateOfBirth).split('/')[2]\r\n : undefined;\r\n }\r\n\r\n populateHomeContentsBuildingDetails() {\r\n this.formAnalytics.form.detail = {} as IAnalyticsDetail;\r\n this.formAnalytics.form.detail.buildingExcess =\r\n this._quote.homeAndContentsQuote?.homeQuote?.standardExcess?.value ?? 0;\r\n this.formAnalytics.form.detail.contentsExcess =\r\n this._quote.homeAndContentsQuote?.contentsQuote?.standardExcess?.value ?? 0;\r\n this.formAnalytics.form.detail.excess = this.calcTotalExcess(this._quote);\r\n this.formAnalytics.form.detail.contentsCost =\r\n this._quote.homeAndContentsQuote?.contentsQuote?.generalContentsReplacementAmount.value?.toString() ?? '0';\r\n this.formAnalytics.form.detail.homeValue =\r\n this._quote.homeAndContentsQuote?.homeQuote?.totalRebuildCost?.value?.toString() ?? '0';\r\n this.formAnalytics.form.detail.occupancyType = this._quote.homeAndContentsQuote?.propertyOwnershipType.value ?? '';\r\n }\r\n\r\n populatePaymentDetails(isActualPayment?: boolean, creditCardProvider?: string) {\r\n const paymentFrequency = PaymentFrequency[this._quote.paymentFrequency ?? 0];\r\n let amountPaid;\r\n if (this._quote?.paymentFrequency === PaymentFrequency.Annually) {\r\n amountPaid = this._quote?.insuranceQuoteSummary?.yearlyAnnualPremium as number;\r\n } else {\r\n amountPaid = this._quote?.insuranceQuoteSummary?.monthlyDeposit as number;\r\n }\r\n\r\n this.formAnalytics.payment = {} as IAnalyticsPaymentDetail;\r\n this.formAnalytics.payment.paymentID = this._quote?.paymentReferenceNumber ?? '';\r\n this.formAnalytics.payment.amountAnnual = this._quote.insuranceQuoteSummary?.yearlyAnnualPremium ?? 0;\r\n this.formAnalytics.payment.amountPaid = amountPaid;\r\n this.formAnalytics.payment.paymentFrequency = paymentFrequency;\r\n\r\n if (isActualPayment) {\r\n this.formAnalytics.payment.autoRenew = this._quote?.renewalPreference ? 'On' : 'Off';\r\n\r\n if (creditCardProvider) {\r\n this.formAnalytics.payment.creditCardProvider = creditCardProvider ?? '';\r\n }\r\n\r\n if (this._quote.paymentType) {\r\n this.formAnalytics.payment.paymentMethod = PaymentTypes[this._quote.paymentType];\r\n }\r\n\r\n this.formAnalytics.payment.policyBind =\r\n this._quote.policyReference && this._quote.policyReference?.length > 0 ? YES : NO;\r\n }\r\n }\r\n\r\n populateNavigation(name: string, url: string) {\r\n this.formAnalytics.eventInfo = {};\r\n this.formAnalytics.eventInfo.navigation = {} as IAnalyticsNavigation;\r\n this.formAnalytics.eventInfo.navigation.name = name;\r\n this.formAnalytics.eventInfo.navigation.URL = url;\r\n }\r\n\r\n populateJeopardy(errorType: string, errorDetails: string) {\r\n this.formAnalytics.form.formErrorType = errorType;\r\n this.formAnalytics.form.formErrorDetail = errorDetails;\r\n }\r\n\r\n populatePaymentAttempt(paymentAttempt: number) {\r\n this.formAnalytics.payment = {} as IAnalyticsPaymentDetail;\r\n this.formAnalytics.payment.paymentAttempt = paymentAttempt?.toString();\r\n }\r\n\r\n calcTotalExcess(quote: Partial) {\r\n return (\r\n (quote.homeAndContentsQuote?.homeQuote?.standardExcess?.value ?? 0) +\r\n (quote.homeAndContentsQuote?.contentsQuote?.standardExcess?.value ?? 0)\r\n );\r\n }\r\n\r\n pushAnalytics(appendToStepName?: string) {\r\n this.analyticsStore.pushAnalytics(this.formAnalytics, appendToStepName);\r\n }\r\n\r\n // Car Purchase Specific\r\n poplulateCarDetails() {\r\n this.formAnalytics.form.detail = {} as IAnalyticsDetail;\r\n this.formAnalytics.form.detail.bodyType =\r\n this._quote.motorQuote?.vehicleDetails.glassesGuideVehicleDetails.body.code;\r\n this.formAnalytics.form.detail.excess = this._quote.motorQuote?.standardExcess.value;\r\n this.formAnalytics.form.detail.fuelType =\r\n this._quote.motorQuote?.vehicleDetails.glassesGuideVehicleDetails.fuelType.value;\r\n this.formAnalytics.form.detail.makeName =\r\n this._quote.motorQuote?.vehicleDetails.glassesGuideVehicleDetails.make.code;\r\n this.formAnalytics.form.detail.modelName =\r\n this._quote.motorQuote?.vehicleDetails.glassesGuideVehicleDetails.model.code;\r\n this.formAnalytics.form.detail.financeType = this._quote.motorQuote?.vehicleDetails.financeCode.value;\r\n\r\n const optionalBenefits = [];\r\n if (this._quote.motorQuote?.quoteOptions.includeCarHire) {\r\n optionalBenefits.push('Hire Car');\r\n }\r\n\r\n if (this._quote.motorQuote?.quoteOptions.includeReplacementWindscreenCover) {\r\n optionalBenefits.push('Windscreen');\r\n }\r\n this.formAnalytics.form.detail.optionalBenefits = optionalBenefits.join(', ');\r\n\r\n this.formAnalytics.form.detail.valueCategory = this._quote.motorQuote?.quoteOptions.agreedVehicleValue\r\n ? 'Agreed value'\r\n : 'Market value';\r\n this.formAnalytics.form.detail.vehicleValue =\r\n this._quote.motorQuote?.vehicleDetails.glassesGuideVehicleDetails.vehicleValue.value.toString();\r\n this.formAnalytics.form.detail.vehicleYear =\r\n this._quote.motorQuote?.vehicleDetails.glassesGuideVehicleDetails.manufacturingYear.year.toString();\r\n }\r\n\r\n populateCarPaymentDetails(isActualPayment?: boolean, creditCardProvider?: string) {\r\n const paymentFrequency = PaymentFrequency[this._quote.paymentFrequency ?? 0];\r\n const payment: Partial = {\r\n paymentFrequency: paymentFrequency,\r\n policyStartDate: format(this._quote.termStartDate ?? '', STANDARD_DATE_FORMAT),\r\n policyStartFuture: this._quote.termStartDate && this._quote.termStartDate > new Date() ? 'true' : 'false',\r\n };\r\n this.formAnalytics.payment = payment;\r\n\r\n let amountPaid;\r\n if (this._quote.paymentFrequency === PaymentFrequency.Annually) {\r\n amountPaid = this._quote.insuranceQuoteSummary?.yearlyAnnualPremium as number;\r\n } else {\r\n amountPaid = this._quote.insuranceQuoteSummary?.monthlyDeposit as number;\r\n }\r\n this.formAnalytics.form.amount = amountPaid;\r\n this.formAnalytics.form.referenceID = this._quote.reference;\r\n\r\n if (isActualPayment) {\r\n this.formAnalytics.payment.amountPaid = amountPaid;\r\n this.formAnalytics.payment.autoRenew = this._quote?.renewalPreference ? 'On' : 'Off';\r\n\r\n if (creditCardProvider) {\r\n this.formAnalytics.payment.creditCardProvider = creditCardProvider ?? '';\r\n }\r\n\r\n if (this._quote.paymentType) {\r\n this.formAnalytics.payment.paymentMethod = PaymentTypes[this._quote.paymentType];\r\n }\r\n\r\n this.formAnalytics.payment.policyBind =\r\n this._quote.policyReference && this._quote.policyReference?.length > 0 ? YES : NO;\r\n }\r\n }\r\n}\r\n","import { createMessage } from '@formkit/core';\r\n\r\n/**\r\n * Sets an input state validity depending on if validationMessage is empty or not\r\n *\r\n * @param validationMessage The validation message to show or empty string\r\n */\r\nexport function setFormkitInputValidationMessage(inputRef: any, validationMessage: string | undefined) {\r\n if (inputRef?.node) {\r\n if (validationMessage) {\r\n inputRef.node.store.set(\r\n createMessage({ key: 'custom', type: 'validation', value: validationMessage, blocking: true })\r\n );\r\n inputRef.node.store.set(createMessage({ key: 'failing', value: true, visible: false }));\r\n inputRef.node.store.set(createMessage({ key: 'submitted', value: true, visible: false }));\r\n } else {\r\n inputRef.node.store.filter(() => false, 'validation');\r\n inputRef.node.store.set(createMessage({ key: 'submitted', value: true, visible: false }));\r\n }\r\n }\r\n}\r\n","import { IQuote } from '@/interfaces';\r\nimport { toCurrency } from '@/utils/convert';\r\nimport { capitalize } from 'lodash-es';\r\n\r\nexport function getDiscountsList(\r\n translation: any,\r\n quote: Partial,\r\n options = {\r\n showAsMonthly: false,\r\n }\r\n) {\r\n const dictionary: Record = translation.getLocaleMessage('en');\r\n\r\n const discounts: string[] = [];\r\n if (quote?.discounts?.eligibleForCombinedPolicyDiscount?.value) {\r\n discounts.push(dictionary.IQ_CombinePolicyDiscount);\r\n }\r\n\r\n if (quote?.discounts?.eligibleForLoyaltyDiscount?.value) {\r\n discounts.push(\r\n dictionary.IQ_MemberDiscount.replace('#type#', capitalize(quote?.discounts?.highestMembershipLoyaltyLevel?.value))\r\n );\r\n }\r\n\r\n if (quote.discounts?.eligibleForMonthlyOnlineDiscount?.value && options?.showAsMonthly) {\r\n discounts.push(\r\n dictionary.IQ_OnlineDiscount.replace(\r\n '$#value#',\r\n toCurrency(quote?.discounts.totalMonthlyOnlineDiscountAmount?.value, false)\r\n )\r\n );\r\n }\r\n\r\n if (quote?.discounts?.eligibleForYearlyOnlineDiscount?.value && !options?.showAsMonthly) {\r\n discounts.push(\r\n dictionary.IQ_OnlineDiscount.replace(\r\n '$#value#',\r\n toCurrency(quote?.discounts.totalYearlyOnlineDiscountAmount?.value, false)\r\n )\r\n );\r\n }\r\n\r\n if (quote?.discounts?.eligibleForMultiPolicyDiscount?.value) {\r\n discounts.push(dictionary.IQ_MultiPolicyDiscount);\r\n }\r\n\r\n if (quote?.discounts?.eligibleForSeniorCardDiscount?.value) {\r\n discounts.push(dictionary.IQ_SeniorDiscountWithSeniorCard);\r\n }\r\n\r\n if (quote?.discounts?.eligibleForSeniorDiscount?.value) {\r\n discounts.push(dictionary.IQ_Over55DiscountNoSeniorCard);\r\n }\r\n\r\n //Comment from sitecore 8:\r\n // Leaving this out for now as it was not in the spec\r\n //var floodDiscount = quote.HomeAndContentsQuote.Discounts.EligibleForFloodDiscount.Value;\r\n //if (floodDiscount)\r\n // data.Add(new NameValueModel(SitecoreItem.GetTranslateText(\"FloodDiscount\")));\r\n //if (quote?.value.homeAndContentsQuote?.discounts?.eligibleForFloodDiscount?.value) {\r\n // TODO\r\n //}\r\n\r\n if (quote?.homeAndContentsQuote?.discounts?.eligibleForHouseHoldExcelenceBonus?.value) {\r\n discounts.push(dictionary.IQ_HouseholdExcellenceBonus);\r\n }\r\n\r\n if (quote?.homeAndContentsQuote?.homeQuote?.discounts?.eligibleForNoClaimDiscount?.value) {\r\n discounts.push(dictionary.IQ_NoClaimDiscount);\r\n } else if (quote?.homeAndContentsQuote?.contentsQuote?.discounts?.eligibleForNoClaimDiscount?.value) {\r\n discounts.push(dictionary.IQ_NoClaimDiscount);\r\n }\r\n\r\n if (quote?.homeAndContentsQuote?.contentsQuote?.discounts?.eligibleForApartmentDiscount?.value) {\r\n discounts.push(dictionary.IQ_ApartmentDiscount);\r\n }\r\n\r\n return discounts;\r\n}\r\n","export const PO_Box_Regex = /(?:Post[\\s]*Office[\\s]*?|P[.[\\s]*]?O\\.?)+[\\s]*Box[\\s]*#?/gim;\r\nexport const GPO_Box_Regex = /(?:General[\\s]*Post[\\s]*Office[\\s]*?|G[.[\\s]*]?P[.[\\s]*]?O\\.? )+[\\s]*Box[\\s]*#?/gim;\r\n\r\nexport function isPostalAddress(value: string) {\r\n const isPoBox = new RegExp(PO_Box_Regex).test(value);\r\n const isGpoBox = new RegExp(GPO_Box_Regex).test(value); //test\r\n\r\n return isPoBox || isGpoBox;\r\n}\r\n\r\nexport const Emoji_Regex = /\\p{Extended_Pictographic}/gu;\r\nexport function emojiValidation({ value }: any) {\r\n return !value.match(Emoji_Regex)?.length;\r\n}\r\n","import { OrdinalNumbers } from '@/constants/ordinal-numbers.const';\r\n\r\nexport function formatCurrency(currencyValue?: number | null, decimalPlaces: number = 0): string {\r\n if (currencyValue == undefined) return '';\r\n\r\n const formatter = new Intl.NumberFormat('en-US', {\r\n style: 'currency',\r\n currency: 'AUD',\r\n\r\n // These options are needed to round to whole numbers if that's what you want.\r\n minimumFractionDigits: decimalPlaces, // (this suffices for whole numbers, but will print 2500.10 as $2,500.1)\r\n maximumFractionDigits: decimalPlaces, // (causes 2500.99 to be printed as $2,501)\r\n });\r\n return formatter.format(currencyValue).replace('A', '').trim();\r\n}\r\n\r\nexport function toProperCase(str = '') {\r\n if (!str || str == '' || typeof str !== 'string') return;\r\n return str.replace(/\\w\\S*/g, (text) => text.charAt(0).toUpperCase() + text.substring(1).toLowerCase());\r\n}\r\n\r\nexport function addOrdinalSuffix(\r\n stepNumber: number | undefined,\r\n text: string | undefined = '',\r\n textWithPlaceholder: string | null = null\r\n): string {\r\n // Return an empty string if both text and textWithPlaceholder are missing\r\n if (!text && !textWithPlaceholder) return '';\r\n\r\n // If stepNumber is null, return text or textWithPlaceholder directly\r\n if (stepNumber == null) return text ?? textWithPlaceholder ?? '';\r\n\r\n // Lookup ordinal suffix or default to empty string if stepNumber is out of range\r\n const ordinalText = OrdinalNumbers[stepNumber] ?? '';\r\n\r\n // Use textWithPlaceholder if provided, replacing placeholder with ordinalText\r\n if (textWithPlaceholder) {\r\n return textWithPlaceholder.replace('{ordinalSuffix}', ordinalText).trim();\r\n }\r\n\r\n // Fallback to appending ordinalText to text\r\n return `${ordinalText} ${text}`.trim();\r\n}\r\n\r\n/**\r\n * Format masked card number\r\n *\r\n * @param cardNumber 1234XXXXXXXX5678\r\n * @returns **** **** **** 1234\r\n */\r\nexport function formatMaskedCardNumber(cardNumber: string) {\r\n try {\r\n return '**** **** **** ' + cardNumber.slice(cardNumber.length - 4, cardNumber.length);\r\n } catch {\r\n return cardNumber;\r\n }\r\n}\r\n\r\n/**\r\n * Format number to dollar string\r\n *\r\n * @param price\r\n * @returns $100.00\r\n */\r\nexport function formatPriceLabel(price: number, addDecimals: boolean = true): string {\r\n if (price >= 0) {\r\n return '$' + (addDecimals ? price.toFixed(2) : price);\r\n }\r\n return '';\r\n}\r\n","/* eslint-disable */\n// Do not edit this file, it is auto-generated at build time!\n// See scripts/bootstrap.ts to modify the generation of this file.\nconst config = {};\nconfig.sitecoreApiKey = process.env.VUE_APP_SITECORE_API_KEY || \"no-api-key-set\",\nconfig.sitecoreApiHost = process.env.VUE_APP_SITECORE_API_HOST || \"\",\nconfig.sitecoreSiteName = process.env.VUE_APP_SITECORE_SITE_NAME || \"racqforms20\",\nconfig.layoutServiceConfigurationName = process.env.VUE_APP_LAYOUT_SERVICE_CONFIGURATION_NAME || \"default\",\nconfig.defaultLanguage = process.env.VUE_APP_DEFAULT_LANGUAGE || \"en\",\nconfig.graphQLEndpointPath = process.env.VUE_APP_GRAPH_QL_ENDPOINT_PATH || \"/sitecore/api/graph/edge\",\nconfig.graphQLEndpoint = process.env.VUE_APP_GRAPH_QL_ENDPOINT || `${config.sitecoreApiHost}${config.graphQLEndpointPath}`;\nmodule.exports = config;","\r\n\r\n\r\n","import { render } from \"./NotFound.vue?vue&type=template&id=60f48234\"\nimport script from \"./NotFound.vue?vue&type=script&lang=js\"\nexport * from \"./NotFound.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"\" }\nconst _hoisted_2 = { class: \"grow shrink self-stretch p-5 md:px-6 md:py-5 rounded bg-racq-anti-flash-white justify-start items-start gap-4 flex flex-col md:flex-row\" }\nconst _hoisted_3 = { class: \"grow shrink justify-start items-start gap-4 md:gap-5 flex\" }\nconst _hoisted_4 = { class: \"grow shrink flex-col justify-start items-start inline-flex\" }\n\nimport { ref, onMounted } from 'vue';\r\nimport { useRoute } from 'vue-router';\r\nimport { useAccountStore } from '@/store/account/account.state';\r\nimport { replaceBookmark } from '@/utils/bookmark.replace';\r\nimport { Field, RichText, Image } from '@sitecore-jss/sitecore-jss-vue';\r\n\r\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'AccountLoginInfoBox',\n props: {\n fields: {},\n testParams: {}\n },\n setup(__props: any, { expose: __expose }) {\n\r\nconst accountStore = useAccountStore();\r\nconst route = useRoute();\r\nconst props = __props;\r\n\r\nconst authenticated = ref(false);\r\nconst greetingsWithoutPlaceholder = ref('');\r\n\r\n// props.testParams is only populated via storybook to set initial state\r\nif (props.testParams) {\r\n authenticated.value = props.testParams.authenticated;\r\n accountStore.prefillForm = props.testParams.authenticated;\r\n accountStore.setIdentityDetailsFirstName(props.testParams.firstName ?? '');\r\n}\r\n\r\n// Lifecycle hooks\r\n// ------------------------------------------------------------- //\r\nonMounted(async () => {\r\n await populateAccountLoginInfoBox();\r\n});\r\n\r\nconst setUrlParam = () => {\r\n const url = new URL(window.location.href);\r\n url.searchParams.set('login', 'true');\r\n window.history.pushState(null, '', url.toString());\r\n};\r\n\r\nconst loginButtonClick = async () => {\r\n if (!authenticated.value) {\r\n setUrlParam();\r\n await accountStore.authenticate(route);\r\n }\r\n};\r\n\r\nconst togglePrefillDetailsButtonClick = () => {\r\n accountStore.togglePrefillDetails();\r\n};\r\n\r\nfunction setGreetings(authenticated: boolean) {\r\n if (authenticated) {\r\n greetingsWithoutPlaceholder.value = replaceBookmark(\r\n 'firstName',\r\n props.fields?.authenticatedGreetings?.value ?? '',\r\n accountStore.identityDetails?.firstName ?? ''\r\n );\r\n } else {\r\n greetingsWithoutPlaceholder.value = props.fields?.unauthenticatedGreetings?.value;\r\n }\r\n}\r\n\r\nconst populateAccountLoginInfoBox = async () => {\r\n try {\r\n if (!props.testParams) {\r\n const loggedIn = await accountStore.isAuthenticated;\r\n if (loggedIn) {\r\n await accountStore.fetchIdentityDetails();\r\n }\r\n authenticated.value = loggedIn || accountStore.partyMatched;\r\n }\r\n } catch (error) {\r\n console.error(error);\r\n } finally {\r\n setGreetings(authenticated.value);\r\n }\r\n};\r\n\r\n__expose({ populateAccountLoginInfoBox });\r\n\nreturn (_ctx: any,_cache: any) => {\n const _component_FormKit = _resolveComponent(\"FormKit\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(_unref(Image), {\n media: _ctx.fields.icon,\n class: \"w-12 h-12\"\n }, null, 8, [\"media\"]),\n _createElementVNode(\"div\", _hoisted_4, [\n _createVNode(_unref(RichText), {\n field: { value: greetingsWithoutPlaceholder.value }\n }, null, 8, [\"field\"])\n ])\n ]),\n (_ctx.fields.unauthenticatedButtonText?.value && !authenticated.value)\n ? (_openBlock(), _createBlock(_component_FormKit, {\n key: 0,\n type: \"button\",\n label: _ctx.fields.unauthenticatedButtonText.value,\n inputClass: \"btn btn-sm btn-secondary w-full md:w-max\",\n outerClass: \"w-full md:w-max\",\n onClick: loginButtonClick\n }, null, 8, [\"label\"]))\n : (authenticated.value && _unref(accountStore).prefillForm && _ctx.fields.clearPrefillDetailsText?.value)\n ? (_openBlock(), _createBlock(_component_FormKit, {\n key: 1,\n type: \"button\",\n label: _ctx.fields.clearPrefillDetailsText.value,\n inputClass: \"btn btn-sm btn-secondary w-full md:w-max\",\n outerClass: \"w-full md:w-max\",\n onClick: togglePrefillDetailsButtonClick\n }, null, 8, [\"label\"]))\n : (authenticated.value && !_unref(accountStore).prefillForm && _ctx.fields.restorePrefillDetailsText?.value)\n ? (_openBlock(), _createBlock(_component_FormKit, {\n key: 2,\n type: \"button\",\n label: _ctx.fields.restorePrefillDetailsText.value,\n inputClass: \"btn btn-sm btn-secondary w-full md:w-max\",\n outerClass: \"w-full md:w-max\",\n onClick: togglePrefillDetailsButtonClick\n }, null, 8, [\"label\"]))\n : _createCommentVNode(\"\", true)\n ])\n ]))\n}\n}\n\n})","\r\n\r\n\r\n","import script from \"./AccountLoginInfoBox.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AccountLoginInfoBox.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","export enum AccountPreferences {\r\n Email = 0,\r\n Post = 1,\r\n}\r\n","import { defineComponent as _defineComponent } from 'vue'\nimport { createVNode as _createVNode, unref as _unref, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createBlock as _createBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"text-paragraph-color\" }\nconst _hoisted_2 = {\n key: 0,\n class: \"inline-block input-spacing\"\n}\n\nimport { ref, onMounted, computed } from 'vue';\r\nimport { useFormStore } from '@/store';\r\nimport { IFormStep, IPolicyHolderDetails, IQuote } from '@/interfaces';\r\nimport FormStepFooter from '@/components/FormStepFooter/FormStepFooter.vue';\r\nimport FormStepInputs from '@/components/FormStepInputs/FormStepInputs.vue';\r\nimport InformationBox from '@/components/InformationBox/InformationBox.vue';\r\nimport { InformationBoxTypes } from '@/interfaces/forms/information-box.interface';\r\nimport { AccountPreferences } from '@/enums/account-preferences.enum';\r\nimport { joinAddressComponentsForPolicyholder } from '@/mappers';\r\n\r\n\r\nexport const emitSubmitAccountPreferences = 'emitSubmitAccountPreferences';\r\nconst __default__ = {};\r\n\nexport default /*@__PURE__*/_defineComponent({\n ...__default__,\n __name: 'AccountPreferences',\n props: {\n step: {},\n quote: {}\n },\n emits: [emitSubmitAccountPreferences],\n setup(__props: any, { emit: __emit }) {\n\r\nconst emit = __emit;\r\n\r\n// Define props and emitters\r\n// ------------------------------------------------------------- //\r\nconst props = __props;\r\n\r\nconst note = computed(() => {\r\n const raw = props.step.formInputs?.note?.label?.value ?? '';\r\n if (!raw) return { value: '' };\r\n\r\n const policyholderName = `${props.quote.primaryPolicyHolderDetails?.firstname?.value ?? ''} ${props.quote.primaryPolicyHolderDetails?.surname?.value ?? ''}`;\r\n\r\n // Get the name from the AccountPreferences enum\r\n const communicationPreference = AccountPreferences[formData.value.preference]?.toLowerCase() ?? '';\r\n\r\n const contactInfo =\r\n formData.value.preference === String(AccountPreferences.Email)\r\n ? (props.quote.primaryPolicyHolderDetails?.emailAddress?.value ?? '')\r\n : (joinAddressComponentsForPolicyholder(props.quote.primaryPolicyHolderDetails as IPolicyHolderDetails) ?? '');\r\n\r\n const updatedRaw = raw\r\n .replace('{{policyholder}}', policyholderName)\r\n .replace('{{communication}}', communicationPreference)\r\n .replace('{{contact}}', contactInfo);\r\n\r\n return { value: updatedRaw };\r\n});\r\n\r\nonMounted(() => {\r\n formData.value.preference = formData.value.preference = String(\r\n props.quote.primaryPolicyHolderDetails?.communicationPreference?.value ?? ''\r\n );\r\n});\r\n\r\nconst formData = ref>({});\r\nconst formStore = useFormStore();\r\n\r\nconst onSubmit = async () => {\r\n try {\r\n emit(emitSubmitAccountPreferences, formData.value.preference);\r\n } catch (jpCode: any) {\r\n formStore.showLoadingForCurrentStep(false);\r\n }\r\n};\r\n\nreturn (_ctx: any,_cache: any) => {\n const _component_FormKit = _resolveComponent(\"FormKit\")!\n\n return (_openBlock(), _createBlock(_component_FormKit, {\n modelValue: formData.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((formData).value = $event)),\n type: \"form\",\n actions: false,\n incompleteMessage: false,\n onSubmit: onSubmit\n }, {\n default: _withCtx(({ state: { valid } }) => [\n _createElementVNode(\"div\", _hoisted_1, [\n _createVNode(FormStepInputs, { step: _ctx.step }, null, 8, [\"step\"]),\n valid\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n _createVNode(InformationBox, {\n description: note.value.value,\n type: _unref(InformationBoxTypes).SUCCESS\n }, null, 8, [\"description\", \"type\"])\n ]))\n : _createCommentVNode(\"\", true),\n _createVNode(FormStepFooter, {\n step: _ctx.step,\n btnNextText: _ctx.step.btnNext,\n btnPrevText: _ctx.step.btnPrev\n }, null, 8, [\"step\", \"btnNextText\", \"btnPrevText\"])\n ])\n ]),\n _: 1\n }, 8, [\"modelValue\"]))\n}\n}\n\n})","\r\n\r\n\r\n\r\n\r\n","import script from \"./AccountPreferences.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./AccountPreferences.vue?vue&type=script&lang=ts&setup=true\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { renderSlot as _renderSlot, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass, withCtx as _withCtx, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nimport SectionFrame from '@/components/SectionFrame/SectionFrame.vue';\r\n\r\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'AddRemoveForm',\n props: {\n title: {},\n titleClasses: {},\n titleIconClass: {},\n customClasses: {}\n },\n setup(__props: any) {\n\r\n\r\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", null, [\n _createVNode(SectionFrame, {\n sectionTitle: _ctx.title,\n titleClasses: _ctx.titleClasses,\n titleIconClass: _ctx.titleIconClass,\n class: _normalizeClass([_ctx.customClasses || 'mb-5'])\n }, {\n buttonAction: _withCtx(() => [\n (_ctx.$slots.buttonAction)\n ? _renderSlot(_ctx.$slots, \"buttonAction\", { key: 0 })\n : _createCommentVNode(\"\", true)\n ]),\n sectionFrameContent: _withCtx(() => [\n (_ctx.$slots.sectionFrameContent)\n ? _renderSlot(_ctx.$slots, \"sectionFrameContent\", { key: 0 })\n : _createCommentVNode(\"\", true)\n ]),\n _: 3\n }, 8, [\"sectionTitle\", \"titleClasses\", \"titleIconClass\", \"class\"]),\n (_ctx.$slots.addButton)\n ? _renderSlot(_ctx.$slots, \"addButton\", { key: 0 })\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","import script from \"./AddRemoveForm.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AddRemoveForm.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createVNode as _createVNode, createElementVNode as _createElementVNode } from \"vue\"\n\nconst _hoisted_1 = { class: \"self-stretch pb-1 flex-col justify-start items-start gap-2 flex\" }\n\nimport { IPolicyHolderDetails } from '@/interfaces';\r\nimport PolicyHolder from './PolicyHolder.vue';\r\n\r\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'AdditionalPolicyHolders',\n props: {\n title: {},\n policyHolders: {}\n },\n setup(__props: any) {\n\r\nconst props = __props;\r\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.policyHolders, (policyHolder, index) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n key: index,\n class: \"self-stretch px-8 pt-8 pb-4 border-racq-pale-blue-border flex-col justify-start items-start gap-4 flex border-t\"\n }, [\n _createElementVNode(\"div\", _hoisted_1, [\n _createVNode(PolicyHolder, {\n index: index,\n policyHolder: policyHolder\n }, null, 8, [\"index\", \"policyHolder\"])\n ])\n ]))\n }), 128))\n}\n}\n\n})","import script from \"./AdditionalPolicyHolders.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AdditionalPolicyHolders.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, unref as _unref, toDisplayString as _toDisplayString, withCtx as _withCtx, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"self-stretch flex-col justify-start items-start gap-4 flex\" }\nconst _hoisted_2 = { class: \"self-stretch pb-1 flex-col justify-start items-start gap-2 flex\" }\nconst _hoisted_3 = { class: \"self-stretch justify-start items-center gap-3 inline-flex\" }\nconst _hoisted_4 = { class: \"grow shrink basis-0 text-racq-dark-grey text-lg-bold\" }\nconst _hoisted_5 = { class: \"self-stretch pb-4 flex-col justify-start items-start flex mt-4 border-b\" }\nconst _hoisted_6 = { class: \"text-base text-block\" }\nconst _hoisted_7 = { class: \"self-stretch pb-4 flex-col justify-start items-start flex mt-4 border-b\" }\nconst _hoisted_8 = { class: \"text-base text-block\" }\nconst _hoisted_9 = { class: \"self-stretch flex-col justify-start items-start flex mt-4\" }\nconst _hoisted_10 = { class: \"text-base text-block\" }\n\nimport { IPolicyHolderDetails } from '@/interfaces';\r\nimport ReviewSummaryItem from '../ReviewSummary/ReviewSummaryItem.vue';\r\nimport { OrdinalNumbers } from '@/constants/ordinal-numbers.const';\r\n\r\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'PolicyHolder',\n props: {\n policyHolder: {},\n index: {}\n },\n setup(__props: any) {\n\r\nconst props = __props;\r\n\r\nconst formattedAddress = (policyHolder: IPolicyHolderDetails) => {\r\n return `${policyHolder.streetNumber.value} ${policyHolder.street.value}, ${policyHolder.suburb.value}, ${policyHolder.state.value}, ${policyHolder.postcode.value}, ${policyHolder.country.value}`;\r\n};\r\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(ReviewSummaryItem, {\n item: {} as any,\n isLastReviewSummaryItem: true\n }, {\n title: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _cache[0] || (_cache[0] = _createElementVNode(\"span\", { class: \"bg-user-icon icon w-6 h-6 bg-no-repeat bg-contain inline-block\" }, null, -1)),\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"span\", null, _toDisplayString(_unref(OrdinalNumbers)[_ctx.index]) + \" additional policyholder details\", 1)\n ])\n ])\n ])\n ]),\n content: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_5, [\n _cache[1] || (_cache[1] = _createElementVNode(\"div\", { class: \"text-racq-dark-grey text-base-bold\" }, \"Name\", -1)),\n _createElementVNode(\"div\", _hoisted_6, _toDisplayString(_ctx.policyHolder.salutation.value) + \" \" + _toDisplayString(_ctx.policyHolder.firstname.value) + \" \" + _toDisplayString(_ctx.policyHolder.surname.value), 1)\n ]),\n _createElementVNode(\"div\", _hoisted_7, [\n _cache[2] || (_cache[2] = _createElementVNode(\"div\", { class: \"text-racq-dark-grey text-base-bold\" }, \"Contact details\", -1)),\n _createElementVNode(\"div\", _hoisted_8, _toDisplayString(_ctx.policyHolder.telephoneNumber.value), 1)\n ]),\n _createElementVNode(\"div\", _hoisted_9, [\n _cache[3] || (_cache[3] = _createElementVNode(\"div\", { class: \"text-racq-dark-grey text-base-bold\" }, \"Postal address\", -1)),\n _createElementVNode(\"div\", _hoisted_10, _toDisplayString(formattedAddress(_ctx.policyHolder)), 1)\n ])\n ]),\n edit: _withCtx(() => _cache[4] || (_cache[4] = [])),\n _: 1\n })\n ]))\n}\n}\n\n})","\r\n\r\n","import script from \"./PolicyHolder.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./PolicyHolder.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, normalizeClass as _normalizeClass, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, mergeProps as _mergeProps, createVNode as _createVNode, createElementVNode as _createElementVNode, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { key: 0 }\nconst _hoisted_2 = { class: \"flex flex-col gap-8 md:gap-6\" }\n\nimport { computed, ref, watch } from 'vue';\r\nimport { RichText } from '@sitecore-jss/sitecore-jss-vue';\r\nimport { FormKit } from '@formkit/vue';\r\nimport { AddressLookupService } from '@/services/store';\r\nimport type { IDropdownItem, IExperianSuggestion, IExperianResults, IExperianFormatResult } from '@/interfaces';\r\nimport { hideAllPoppersAndPaddings } from '@/plugins/tooltip/renderTooltip';\r\nimport RACQFormKit from '@/components/RACQFormKit/RACQFormKit.vue';\r\nimport RACQFormKitErrorMessage from '@/components/RACQFormKit/RACQFormKitErrorMessage.vue';\r\nimport { VueFormInputProps } from '@/composables/useFormInputData';\r\nimport { addressLookupEmits, emitAddressSelected, useFormStore, useMultiInstanceAddressOptionsStore } from '@/store';\r\nimport { isPostalAddress } from '@/utils/regex-helpers';\r\nimport { RACQAddressResult } from '@/interfaces';\r\nimport InformationBox from '@/components/InformationBox/InformationBox.vue';\r\nimport { InformationBoxTypes } from '@/interfaces/forms/information-box.interface';\r\nimport { setFormkitInputValidationMessage } from '@/utils/formkit-helpers';\r\n\r\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'AddressLookup',\n props: {\n bindings: {},\n instanceIdentifier: {},\n innerClass: {},\n labelClass: {},\n defaultIsOverseasOption: { type: Boolean },\n showManualEntries: { type: Boolean },\n streetNoRequired: {},\n streetRequired: {},\n suburbRequired: {},\n stateRequired: {},\n postcodeRequired: {},\n countryRequired: {},\n checkAddressRequired: {},\n selectSuburbRequired: {},\n postcodeInvalid: {},\n invalidInsuranceRiskSuburbMessageTitle: {},\n invalidInsuranceRiskSuburbMessageText: {},\n postalSameAsInsuredAddressLabel: {},\n riskAddressNotFullyVerifiedMessage: {}\n },\n emits: addressLookupEmits,\n setup(__props: any, { emit: __emit }) {\n\r\nconst emit = __emit;\r\n\r\nconst props = __props;\r\n\r\nconst formStore = useFormStore();\r\nconst multiInstanceAddressStore = useMultiInstanceAddressOptionsStore();\r\nconst addressLookupOptionsStore = multiInstanceAddressStore.getInstance(props.instanceIdentifier);\r\n\r\nconst addressPicker = ref(null);\r\nconst displayAddressText = ref();\r\n\r\nconst apiValidationMessage = computed(() => {\r\n if (addressLookupOptionsStore?.externalValidationMessage) {\r\n return { title: '', text: addressLookupOptionsStore?.externalValidationMessage };\r\n } else if (addressLookupOptionsStore.showInvalidInsuranceRiskSuburbMessage) {\r\n return { title: props.invalidInsuranceRiskSuburbMessageTitle, text: props.invalidInsuranceRiskSuburbMessageText };\r\n } else if (\r\n addressLookupOptionsStore.riskAddressNotFullyVerifiedIsError &&\r\n addressLookupOptionsStore.showRiskAddressNotFullyVerifiedMessage\r\n ) {\r\n return { title: '', text: props.riskAddressNotFullyVerifiedMessage };\r\n }\r\n return null;\r\n});\r\n\r\n// To watch changes from other components / steps\r\nwatch(\r\n () => addressLookupOptionsStore?.autoAddressComponents,\r\n (newValue) => {\r\n const newAddress = addressLookupOptionsStore.buildAddressLine(newValue);\r\n\r\n // Do nothing if the component is in manual mode, keep the display text as No - I will enter manually\r\n if (newAddress != displayAddressText.value && !addressLookupOptionsStore.isManualEntries) {\r\n displayAddressText.value = newAddress;\r\n }\r\n }\r\n);\r\n\r\nwatch(\r\n () => addressLookupOptionsStore?.externalValidationMessage,\r\n (newValue) => {\r\n if (newValue !== undefined && addressPicker.value && !addressLookupOptionsStore.isManualEntries) {\r\n setFormkitInputValidationMessage(addressPicker.value, newValue);\r\n }\r\n }\r\n);\r\n\r\nwatch(displayAddressText, () => {\r\n if (!addressLookupOptionsStore.isManualEntries) {\r\n addressLookupOptionsStore.showInvalidInsuranceRiskSuburbMessage = false;\r\n addressLookupOptionsStore.showRiskAddressNotFullyVerifiedMessage = false;\r\n addressLookupOptionsStore.riskAddressNotFullyVerifiedIsError = false;\r\n addressLookupOptionsStore.externalValidationMessage = '';\r\n }\r\n setFormkitInputValidationMessage(addressPicker.value, '');\r\n});\r\n\r\nfunction postalSameAsInsuredAddressChanged(event: any) {\r\n event.preventDefault();\r\n\r\n const useAddress = addressLookupOptionsStore.onSameAsPostalAddressChanged();\r\n\r\n //If the postal address has previously been saved as same as insured address and the same as insured address checkbox is unticked\r\n //we don't want the same address showing so we clear it.\r\n if (\r\n !addressLookupOptionsStore.postalSameAsInsuredAddressSelection &&\r\n addressLookupOptionsStore.checkPostalIsSameAsInsured(addressLookupOptionsStore.postalAddress as RACQAddressResult)\r\n ) {\r\n emit(emitAddressSelected, {});\r\n displayAddressText.value = '';\r\n } else {\r\n displayAddressText.value = addressLookupOptionsStore.buildAddressLine(useAddress!);\r\n emit(emitAddressSelected, useAddress);\r\n }\r\n}\r\n\r\nasync function lookup({ search }: { search: string }): Promise {\r\n try {\r\n if (!search || search.length < 3) return [];\r\n\r\n const data: IExperianResults = await AddressLookupService.getAddressLookup(search);\r\n\r\n if (addressLookupOptionsStore?.config?.allowPhysicalAddressesOnly) {\r\n data.results = data.results.filter((result) => {\r\n return !isPostalAddress(result.suggestion);\r\n });\r\n }\r\n\r\n data.results.push({\r\n matched: [],\r\n suggestion: props.bindings.postContent,\r\n format: '',\r\n triggerManualEntry: true,\r\n });\r\n\r\n return (\r\n data.results?.map((item: IExperianSuggestion) => ({\r\n label: item.suggestion,\r\n value: item,\r\n })) || []\r\n );\r\n } catch (error) {\r\n console.error('Unable to lookup: ', error);\r\n return [];\r\n }\r\n}\r\n\r\nasync function applyRiskAddressBusinessRules() {\r\n if (addressLookupOptionsStore?.config?.allowValidInsuranceRiskSuburbsOnly) {\r\n formStore.showLoadingForCurrentStep();\r\n\r\n await addressLookupOptionsStore.applyRiskAddressBusinessRules();\r\n setFormkitInputValidationMessage(addressPicker.value, apiValidationMessage.value?.text);\r\n\r\n formStore.showLoadingForCurrentStep(false);\r\n }\r\n}\r\n\r\nasync function handleSelection(address: IExperianSuggestion) {\r\n if (typeof address == 'string') {\r\n return;\r\n }\r\n\r\n if (!address) {\r\n // hide manual entry fields if user cleared address lookup field\r\n addressLookupOptionsStore.resetManualAddress();\r\n return;\r\n } else if (address.triggerManualEntry) {\r\n if (addressLookupOptionsStore.isManualEntries) {\r\n return;\r\n }\r\n addressLookupOptionsStore.onEnableManualEntrySelected();\r\n\r\n setTimeout(() => {\r\n hideAllPoppersAndPaddings();\r\n }, 1000);\r\n return;\r\n }\r\n\r\n addressLookupOptionsStore.resetManualAddress();\r\n\r\n // Format Address\r\n if (address.format) {\r\n const data: IExperianFormatResult = await AddressLookupService.getAddressLookupFormat(address.format.split('?')[1]);\r\n\r\n addressLookupOptionsStore.autoAddressComponents = {\r\n postalDeliveryType: data.components?.find((comp) => comp.deliveryService1)?.deliveryService1 || '',\r\n addressLine: data.address\r\n .filter((comp) => comp.addressLine1 || comp.addressLine2 || comp.addressLine3)\r\n .map((item) => Object.values(item).toString())\r\n .join(' '),\r\n unitNumber: data.components?.find((comp) => comp.subBuilding1)?.subBuilding1 || '',\r\n buildingName: data.components?.find((comp) => comp.building1)?.building1 || '',\r\n streetNumber: data.components?.find((comp) => comp.streetNumber1)?.streetNumber1 || '',\r\n street: data.components?.find((comp) => comp.street1)?.street1 || '',\r\n suburb: data.components?.find((comp) => comp.locality1)?.locality1 || '',\r\n postcode: data.components?.find((comp) => comp.postalCode1)?.postalCode1 || '',\r\n state: data.address?.find((comp) => comp.province)?.province || '',\r\n country: data.components?.find((comp) => comp.country1)?.country1 || '',\r\n countryISO: data.components?.find((comp) => comp.countryISO1)?.countryISO1 || '',\r\n dpid: data.components?.find((comp) => comp.deliveryPointId1)?.deliveryPointId1 || '',\r\n };\r\n\r\n await applyRiskAddressBusinessRules();\r\n\r\n //Clear street before emitting the address.\r\n if (\r\n addressLookupOptionsStore.config?.allowPhysicalAddressesOnly &&\r\n isPostalAddress(addressLookupOptionsStore.autoAddressComponents.street ?? '')\r\n ) {\r\n addressLookupOptionsStore.autoAddressComponents.street = '';\r\n }\r\n\r\n addressLookupOptionsStore.onAutoAddressSelected(addressLookupOptionsStore.autoAddressComponents);\r\n\r\n emit(emitAddressSelected, addressLookupOptionsStore.autoAddressComponents);\r\n }\r\n}\r\n\nreturn (_ctx: any,_cache: any) => {\n return (_unref(addressLookupOptionsStore))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_ctx.bindings.preContent)\n ? (_openBlock(), _createBlock(_unref(RichText), {\n key: 0,\n class: _normalizeClass(_ctx.bindings.preContentClass),\n field: { value: _ctx.bindings.preContent }\n }, null, 8, [\"class\", \"field\"]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_2, [\n (!_unref(addressLookupOptionsStore).isOverseasSelection)\n ? (_openBlock(), _createBlock(_unref(FormKit), _mergeProps({\n key: 0,\n ref_key: \"addressPicker\",\n ref: addressPicker\n }, _ctx.bindings, {\n modelValue: displayAddressText.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((displayAddressText).value = $event)),\n options: lookup,\n type: \"autocomplete\",\n autocomplete: \"off\",\n \"data-testid\": `${_ctx.bindings.name}_auto_lookup`,\n name: _ctx.bindings.name + '_auto',\n innerClass: _ctx.innerClass || 'input-xl',\n outerClass: \"\",\n labelClass: _ctx.labelClass,\n listboxButtonClass: \"$reset hidden\",\n onInput: handleSelection\n }), null, 16, [\"modelValue\", \"data-testid\", \"name\", \"innerClass\", \"labelClass\"]))\n : _createCommentVNode(\"\", true),\n _createVNode(RACQFormKitErrorMessage, {\n defaultMessagePlacement: !apiValidationMessage.value?.text,\n node: (addressPicker.value as any)?.node,\n errorTitle: apiValidationMessage.value?.title,\n errorMessage: apiValidationMessage.value?.text\n }, null, 8, [\"defaultMessagePlacement\", \"node\", \"errorTitle\", \"errorMessage\"]),\n (\r\n _unref(addressLookupOptionsStore) &&\r\n !_unref(addressLookupOptionsStore).isManualEntries &&\r\n !_unref(addressLookupOptionsStore).riskAddressNotFullyVerifiedIsError &&\r\n _unref(addressLookupOptionsStore).showRiskAddressNotFullyVerifiedMessage\r\n )\n ? (_openBlock(), _createBlock(InformationBox, {\n key: 1,\n description: _ctx.riskAddressNotFullyVerifiedMessage,\n type: \r\n _unref(addressLookupOptionsStore).riskAddressNotFullyVerifiedIsError\r\n ? _unref(InformationBoxTypes).ERROR\r\n : _unref(InformationBoxTypes).WARNING\r\n \n }, null, 8, [\"description\", \"type\"]))\n : _createCommentVNode(\"\", true),\n (\r\n _unref(addressLookupOptionsStore)?.config?.showPostalSameAsInsuredAddressSelection &&\r\n !_unref(addressLookupOptionsStore).isOverseasSelection\r\n )\n ? (_openBlock(), _createBlock(RACQFormKit, {\n key: 2,\n modelValue: _unref(addressLookupOptionsStore).postalSameAsInsuredAddressSelection,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((_unref(addressLookupOptionsStore).postalSameAsInsuredAddressSelection) = $event)),\n name: `${_ctx.bindings.name}_sameasinsured`,\n \"data-testid\": `${_ctx.bindings.name}_sameasinsured`,\n bindings: \r\n {\r\n label: _ctx.postalSameAsInsuredAddressLabel,\r\n name: `${_ctx.bindings.name}__sameasinsured`,\r\n type: 'checkbox',\r\n placeholder: '',\r\n classesOptions: '',\r\n } as VueFormInputProps\r\n ,\n onChange: postalSameAsInsuredAddressChanged\n }, null, 8, [\"modelValue\", \"name\", \"data-testid\", \"bindings\"]))\n : _createCommentVNode(\"\", true)\n ])\n ]))\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","\r\n\r\n\r\n","import script from \"./AddressLookup.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AddressLookup.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createBlock as _createBlock, unref as _unref, createVNode as _createVNode, resolveComponent as _resolveComponent } from \"vue\"\n\nconst _hoisted_1 = {\n key: 0,\n class: \"flex flex-col gap-8 md:gap-6\"\n}\nconst _hoisted_2 = {\n key: 0,\n \"data-testid\": \"addressComponentTitle\",\n class: \"text-input-title\"\n}\n\nimport { watch, ref, onMounted, computed } from 'vue';\r\nimport OverseasOption from './OverseasOption.vue';\r\nimport AddressLookup from './AddressLookup.vue';\r\nimport ManualAddressForm from './ManualAddressForm.vue';\r\nimport { AddressLookupOptionsProps, RACQAddressResult } from '@/interfaces';\r\nimport {\r\n addressLookupEmits,\r\n emitManualAddressSelected,\r\n emitAddressSelected,\r\n useMultiInstanceAddressOptionsStore,\r\n emitAddressReset,\r\n} from '@/store';\r\nimport { convertSitecoreFormFieldToVueFormField } from '@/composables/useFormInputData';\r\nimport { v4 } from 'uuid';\r\n\r\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'AddressLookupOptions',\n props: {\n formInputId: {},\n innerClass: {},\n streetNoRequired: {},\n streetRequired: {},\n suburbRequired: {},\n stateRequired: {},\n postcodeRequired: {},\n countryRequired: {},\n checkAddressRequired: {},\n selectSuburbRequired: {},\n invalidInsuranceRiskSuburbMessageTitle: {},\n invalidInsuranceRiskSuburbMessageText: {},\n noPostcodeMatchesFoundMessage: {},\n postalSameAsInsuredAddressLabel: {},\n riskAddressNotFullyVerifiedMessage: {},\n addressTitle: {},\n overseasOptionLabel: {},\n riskSuburbsLabel: {},\n overseasOptionTooltip: {},\n postContent: {},\n unitNumberRegex: {},\n streetNoRegex: {},\n streetRegex: {},\n suburbRegex: {},\n postcodeRegex: {},\n unitNumberInvalid: {},\n streetNoInvalid: {},\n streetInvalid: {},\n suburbInvalid: {},\n postcodeInvalid: {},\n config: {},\n initialPostalAddress: {},\n initialInsuredAddress: {},\n labelClass: {},\n isOversea: { type: Boolean },\n defaultIsOverseasOption: { type: Boolean },\n showManualEntries: { type: Boolean },\n instanceIdentifier: {},\n id: {},\n name: {},\n label: {},\n inputType: {},\n placeholderText: {},\n preContent: {},\n postContentClass: {},\n preContentClass: {},\n tooltipContent: {},\n tooltipModalTitle: {},\n tooltipShowInModal: {},\n fields: {},\n emptyMessage: {},\n validation: {},\n outerClass: {},\n refData: {},\n prefixIcon: {},\n suffixIcon: {},\n helpXs: {},\n helpSm: {},\n helpMd: {},\n disablePaste: {},\n classesOptions: {},\n showClearIcon: {},\n options: {},\n optionsClass: {},\n defaultOption: {},\n isRequired: {},\n isRequiredErrorMessage: {},\n validationRegex: {},\n validationRegexErrorMessage: {},\n mustAccept: {},\n mustAcceptErrorMessage: {},\n mask: {},\n isHidden: { type: Boolean },\n showPostContent: { type: Boolean },\n dynamicOptions: {},\n elementId: {},\n titleRequiredMessage: {},\n firstnameRequiredErrorMessage: {},\n firstnameRegex: {},\n firstnameRegexErrorMessage: {},\n lastnameRequiredErrorMessage: {},\n lastnameRegex: {},\n lastnameRegexErrorMessage: {},\n format: {},\n pickerOnly: {},\n minDateToday: {},\n maxDateByDays: {},\n icon: {},\n title: {},\n subTitle: {},\n decimals: {}\n },\n emits: addressLookupEmits,\n setup(__props: any, { expose: __expose, emit: __emit }) {\n\r\nconst emit = __emit;\r\n\r\nconst props = __props;\r\n\r\nconst addressLookupAutoProps = convertSitecoreFormFieldToVueFormField(props as any, props.formInputId.value);\r\nconst multiInstanceAddressStore = useMultiInstanceAddressOptionsStore();\r\nconst activeAddressComponent = ref>({});\r\nconst identifier = ref(props.instanceIdentifier || v4());\r\nconst store = computed(() =>\r\n multiInstanceAddressStore.itemIds.includes(identifier.value)\r\n ? multiInstanceAddressStore.getInstance(identifier.value)\r\n : undefined\r\n);\r\n\r\nonMounted(() => {\r\n if (!store.value) multiInstanceAddressStore.addInstance(identifier.value);\r\n if (props.config)\r\n store.value?.setupAddressComponent(props.config, props.initialInsuredAddress, props.initialPostalAddress);\r\n});\r\n\r\n__expose({\r\n getStore: () => store.value,\r\n});\r\n\r\n/*\r\nDecision maker as to whether auto or manual address is used.\r\n*/\r\nwatch(\r\n () => store.value?.useAddress,\r\n async (newValue) => {\r\n const newAddress = newValue as RACQAddressResult;\r\n if (!store.value) return;\r\n if (store.value.isValidAddress(newAddress)) {\r\n if (!newValue?.dpid) {\r\n store.value.setManualAddress(newAddress);\r\n //When manual address set the address line to 'Not in list...'\r\n store.value.autoAddressComponents.addressLine = props?.postContent?.value;\r\n } else {\r\n store.value.setAutoAddress(newAddress);\r\n }\r\n } else {\r\n store.value.isOverseasSelection = props.defaultIsOverseasOption;\r\n }\r\n },\r\n { once: true }\r\n);\r\n\r\nfunction onManualAddressSelected(value: Partial) {\r\n activeAddressComponent.value = value;\r\n emit(emitManualAddressSelected, value);\r\n if (!store.value) return;\r\n store.value.manualEditEnabled = false;\r\n}\r\n\r\nfunction onAddressSelected(value: Partial) {\r\n activeAddressComponent.value = value;\r\n emit(emitAddressSelected, value);\r\n}\r\n\r\nfunction onAddressReset() {\r\n activeAddressComponent.value = {};\r\n emit(emitAddressReset);\r\n}\r\n\nreturn (_ctx: any,_cache: any) => {\n const _component_FormKit = _resolveComponent(\"FormKit\")!\n\n return (store.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (store.value.showTitle())\n ? (_openBlock(), _createElementBlock(\"p\", _hoisted_2, _toDisplayString(props.addressTitle.value), 1))\n : _createCommentVNode(\"\", true),\n (store.value.config?.allowOverseasAddress)\n ? (_openBlock(), _createBlock(OverseasOption, {\n key: 1,\n defaultIsOverseasOption: _ctx.defaultIsOverseasOption,\n instanceIdentifier: identifier.value,\n overseasOptionLabel: _ctx.overseasOptionLabel?.value,\n overseasOptionTooltip: _ctx.overseasOptionTooltip?.value,\n onAddressReset: _cache[0] || (_cache[0] = () => onAddressReset())\n }, null, 8, [\"defaultIsOverseasOption\", \"instanceIdentifier\", \"overseasOptionLabel\", \"overseasOptionTooltip\"]))\n : _createCommentVNode(\"\", true),\n _createVNode(AddressLookup, {\n bindings: _unref(addressLookupAutoProps),\n defaultIsOverseasOption: _ctx.defaultIsOverseasOption,\n streetNoRequired: _ctx.streetNoRequired?.value,\n streetRequired: _ctx.streetRequired?.value,\n suburbRequired: _ctx.suburbRequired?.value,\n postcodeRequired: _ctx.postcodeRequired?.value,\n countryRequired: _ctx.countryRequired?.value,\n checkAddressRequired: _ctx.checkAddressRequired?.value,\n selectSuburbRequired: _ctx.selectSuburbRequired?.value,\n stateRequired: _ctx.stateRequired?.value,\n postcodeInvalid: _ctx.postcodeInvalid?.value,\n postalSameAsInsuredAddressLabel: _ctx.postalSameAsInsuredAddressLabel?.value,\n invalidInsuranceRiskSuburbMessageTitle: _ctx.invalidInsuranceRiskSuburbMessageTitle?.value,\n invalidInsuranceRiskSuburbMessageText: _ctx.invalidInsuranceRiskSuburbMessageText?.value,\n riskAddressNotFullyVerifiedMessage: _ctx.riskAddressNotFullyVerifiedMessage?.value,\n instanceIdentifier: identifier.value,\n onAddressSelected: _cache[1] || (_cache[1] = (v) => onAddressSelected(v))\n }, null, 8, [\"bindings\", \"defaultIsOverseasOption\", \"streetNoRequired\", \"streetRequired\", \"suburbRequired\", \"postcodeRequired\", \"countryRequired\", \"checkAddressRequired\", \"selectSuburbRequired\", \"stateRequired\", \"postcodeInvalid\", \"postalSameAsInsuredAddressLabel\", \"invalidInsuranceRiskSuburbMessageTitle\", \"invalidInsuranceRiskSuburbMessageText\", \"riskAddressNotFullyVerifiedMessage\", \"instanceIdentifier\"]),\n _createVNode(ManualAddressForm, {\n name: _ctx.name,\n streetNoRequired: _ctx.streetNoRequired?.value,\n streetRequired: _ctx.streetRequired?.value,\n suburbRequired: _ctx.suburbRequired?.value,\n postcodeRequired: _ctx.postcodeRequired?.value,\n countryRequired: _ctx.countryRequired?.value,\n checkAddressRequired: _ctx.checkAddressRequired?.value,\n selectSuburbRequired: _ctx.selectSuburbRequired?.value,\n stateRequired: _ctx.stateRequired?.value,\n invalidInsuranceRiskSuburbMessageTitle: _ctx.invalidInsuranceRiskSuburbMessageTitle?.value,\n invalidInsuranceRiskSuburbMessageText: _ctx.invalidInsuranceRiskSuburbMessageText?.value,\n riskAddressNotFullyVerifiedMessage: _ctx.riskAddressNotFullyVerifiedMessage?.value,\n riskSuburbsLabel: _ctx.riskSuburbsLabel?.value,\n instanceIdentifier: identifier.value,\n noPostcodeMatchesFoundMessage: _ctx.noPostcodeMatchesFoundMessage?.value,\n unitNumberRegex: _ctx.unitNumberRegex?.value,\n streetNoRegex: _ctx.streetNoRegex?.value,\n streetRegex: _ctx.streetRegex?.value,\n suburbRegex: _ctx.suburbRegex?.value,\n postcodeRegex: _ctx.postcodeRegex?.value,\n unitNumberInvalid: _ctx.unitNumberInvalid?.value,\n streetNoInvalid: _ctx.streetNoInvalid?.value,\n streetInvalid: _ctx.streetInvalid?.value,\n suburbInvalid: _ctx.suburbInvalid?.value,\n postcodeInvalid: _ctx.postcodeInvalid?.value,\n onManualAddressSelected: _cache[2] || (_cache[2] = (v) => onManualAddressSelected(v))\n }, null, 8, [\"name\", \"streetNoRequired\", \"streetRequired\", \"suburbRequired\", \"postcodeRequired\", \"countryRequired\", \"checkAddressRequired\", \"selectSuburbRequired\", \"stateRequired\", \"invalidInsuranceRiskSuburbMessageTitle\", \"invalidInsuranceRiskSuburbMessageText\", \"riskAddressNotFullyVerifiedMessage\", \"riskSuburbsLabel\", \"instanceIdentifier\", \"noPostcodeMatchesFoundMessage\", \"unitNumberRegex\", \"streetNoRegex\", \"streetRegex\", \"suburbRegex\", \"postcodeRegex\", \"unitNumberInvalid\", \"streetNoInvalid\", \"streetInvalid\", \"suburbInvalid\", \"postcodeInvalid\"]),\n _createVNode(_component_FormKit, {\n modelValue: activeAddressComponent.value,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = ($event: any) => ((activeAddressComponent).value = $event)),\n type: \"hidden\",\n name: _ctx.formInputId.value\n }, null, 8, [\"modelValue\", \"name\"])\n ]))\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","\r\n\r\n","import script from \"./AddressLookupOptions.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AddressLookupOptions.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = {\n key: 0,\n class: \"flex flex-col gap-8 md:gap-6\"\n}\nconst _hoisted_2 = { class: \"flex flex-col gap-8 md:gap-6\" }\nconst _hoisted_3 = {\n key: 1,\n class: \"border-b border-solid border-racq-pale-blue-border my-2\"\n}\nconst _hoisted_4 = {\n key: 3,\n class: \"border-b border-solid border-racq-pale-blue-border my-2\"\n}\n\nimport { onMounted, ref, computed, watch } from 'vue';\r\nimport { useI18n } from 'vue-i18n';\r\nimport { FormKit } from '@formkit/vue';\r\nimport { IDropdownItem, IRadioButtonCard, ISuburbLookupResult } from '@/interfaces';\r\nimport { INameValue } from '@/interfaces/entities/name-value.interface';\r\nimport { useMultiInstanceAddressOptionsStore, useFormStore } from '@/store';\r\nimport { isPostalAddress } from '@/utils/regex-helpers';\r\nimport { joinAddressComponents } from '@/mappers';\r\nimport { addressLookupEmits, emitManualAddressSelected, useAddressLookupStore } from '@/store';\r\nimport { isEmptyObject } from '@/utils/check-helpers';\r\nimport { AUSTRALIA, QLD } from '@/constants/general-words.const';\r\nimport RadioCardList from '@/components/RadioCardList/RadioCardList.vue';\r\nimport InformationBox from '@/components/InformationBox/InformationBox.vue';\r\nimport RACQFormKitErrorMessage from '@/components/RACQFormKit/RACQFormKitErrorMessage.vue';\r\nimport { InformationBoxTypes } from '@/interfaces/forms/information-box.interface';\r\n\r\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'ManualAddressForm',\n props: {\n name: {},\n defaultIsOverseasOption: { type: Boolean },\n showManualEntries: { type: Boolean },\n streetNoRequired: {},\n streetRequired: {},\n suburbRequired: {},\n stateRequired: {},\n postcodeRequired: {},\n countryRequired: {},\n checkAddressRequired: {},\n selectSuburbRequired: {},\n invalidInsuranceRiskSuburbMessageTitle: {},\n invalidInsuranceRiskSuburbMessageText: {},\n noPostcodeMatchesFoundMessage: {},\n riskAddressNotFullyVerifiedMessage: {},\n riskSuburbsLabel: {},\n instanceIdentifier: {},\n unitNumberRegex: {},\n streetNoRegex: {},\n streetRegex: {},\n suburbRegex: {},\n postcodeRegex: {},\n unitNumberInvalid: {},\n streetNoInvalid: {},\n streetInvalid: {},\n suburbInvalid: {},\n postcodeInvalid: {}\n },\n emits: addressLookupEmits,\n setup(__props: any, { emit: __emit }) {\n\r\nconst props = __props;\r\n\r\nconst selectedAddress = ref();\r\nconst states = ref([]);\r\nconst countries = ref([]);\r\nconst suburbs = ref([]);\r\nconst checkAddressRef = ref(null);\r\nconst noPostcodeMatches = ref();\r\n\r\nconst formStore = useFormStore();\r\nconst addressLookupStore = useAddressLookupStore();\r\n\r\nconst multiInstanceAddressStore = useMultiInstanceAddressOptionsStore();\r\nconst addressLookupOptionsStore = multiInstanceAddressStore.getInstance(props.instanceIdentifier);\r\n\r\nconst translation = useI18n();\r\n\r\nconst emit = __emit;\r\n\r\nconst suburbLookupOptions = computed({\r\n get() {\r\n return addressLookupOptionsStore.suburbLookupOptions || [];\r\n },\r\n set(newValue) {\r\n addressLookupOptionsStore.suburbLookupOptions = newValue;\r\n },\r\n});\r\n\r\nconst unitNoValidation = computed(() =>\r\n props.unitNumberRegex?.length > 0 ? [['matches', props.unitNumberRegex]] : ''\r\n);\r\n\r\nconst streetNoValidation = computed(() =>\r\n props.streetNoRegex?.length > 0 ? [['required'], ['matches', props.streetNoRegex]] : [['required']]\r\n);\r\n\r\nconst suburbValidation = computed(() =>\r\n addressLookupOptionsStore.isOverseasSelection && props.suburbRegex?.length > 0\r\n ? [['required'], ['matches', props.suburbRegex]]\r\n : [['required']]\r\n);\r\n\r\nconst postcodeValidation = computed(() =>\r\n addressLookupOptionsStore.isOverseasSelection && props.postcodeRegex?.length > 0\r\n ? [['required'], ['matches', props.postcodeRegex]]\r\n : []\r\n);\r\n\r\nconst apiValidationMessage = computed(() => {\r\n if (addressLookupOptionsStore?.externalValidationMessage) {\r\n return { title: '', text: addressLookupOptionsStore?.externalValidationMessage };\r\n } else if (noPostcodeMatches.value) {\r\n return { title: '', text: props.noPostcodeMatchesFoundMessage };\r\n } else if (addressLookupOptionsStore.showInvalidInsuranceRiskSuburbMessage) {\r\n return { title: props.invalidInsuranceRiskSuburbMessageTitle, text: props.invalidInsuranceRiskSuburbMessageText };\r\n } else if (\r\n addressLookupOptionsStore.riskAddressNotFullyVerifiedIsError &&\r\n addressLookupOptionsStore.showRiskAddressNotFullyVerifiedMessage\r\n ) {\r\n return { title: '', text: props.riskAddressNotFullyVerifiedMessage };\r\n }\r\n return null;\r\n});\r\n\r\n/**\r\n * Handles when the manual address is set, here we utilise the suburb lookup options to show selection confirmed.\r\n */\r\nwatch(\r\n () => addressLookupOptionsStore.manualAddressComponents,\r\n async (newValue) => {\r\n if (newValue) {\r\n const option = getSuburbLookupResult();\r\n\r\n if (option.suburb && option.postcode && (option.state || addressLookupOptionsStore.isOverseasSelection)) {\r\n suburbLookupOptions.value = [option];\r\n selectedAddress.value =\r\n suburbLookupOptions.value.length > 0 ? JSON.stringify(suburbLookupOptions.value[0]) : '';\r\n }\r\n }\r\n },\r\n { once: true }\r\n);\r\n\r\nwatch(\r\n () => addressLookupOptionsStore.isOverseasSelection,\r\n async (newValue) => {\r\n if (newValue && countries.value.length == 0) {\r\n countries.value = await lookupCountry();\r\n }\r\n\r\n addressLookupOptionsStore.resetManualAddress();\r\n }\r\n);\r\n\r\nwatch(suburbLookupOptions, (newValue) => {\r\n suburbs.value = newValue.map((option) => ({\r\n label: joinAddressComponents({\r\n ...addressLookupOptionsStore.manualAddressComponents,\r\n ...option,\r\n }),\r\n value: JSON.stringify(option),\r\n }));\r\n});\r\n\r\nonMounted(async () => {\r\n const dict: Record = translation?.getLocaleMessage('en') as any;\r\n if (dict?.INPUT_ADDRESS_STATE) {\r\n states.value = dict.INPUT_ADDRESS_STATE.split(',').map((item) => ({ label: item, value: item }));\r\n addressLookupOptionsStore.manualAddressComponents.state = QLD;\r\n }\r\n\r\n if (addressLookupOptionsStore.isOverseasSelection) {\r\n countries.value = await lookupCountry();\r\n }\r\n});\r\n\r\nasync function addressSelected(selected: string) {\r\n if (!selected) return;\r\n const selectedOption = JSON.parse(selected) as ISuburbLookupResult;\r\n addressLookupOptionsStore.manualAddressComponents.suburb = selectedOption.suburb;\r\n addressLookupOptionsStore.manualAddressComponents.state = selectedOption.state;\r\n\r\n await applyRiskAddressBusinessRules();\r\n\r\n suburbLookupOptions.value = suburbLookupOptions.value.filter((item) => item.name === selectedOption.name);\r\n\r\n if (!isEmptyObject(addressLookupOptionsStore.manualAddressComponents)) {\r\n emit(emitManualAddressSelected, addressLookupOptionsStore.manualAddressComponents);\r\n }\r\n}\r\n\r\nasync function lookupCountry(): Promise {\r\n try {\r\n const data: INameValue[] = await addressLookupStore.getCountryLookup('', true);\r\n return (\r\n data?.map((item: INameValue) => ({\r\n label: item.name,\r\n value: item.value,\r\n })) || []\r\n );\r\n } catch {\r\n return [];\r\n }\r\n}\r\n\r\nfunction getSuburbLookupResult(checkCountry?: boolean): ISuburbLookupResult {\r\n if (checkCountry && !addressLookupOptionsStore.isOverseasSelection) {\r\n addressLookupOptionsStore.manualAddressComponents.country = AUSTRALIA;\r\n }\r\n\r\n return {\r\n suburb: addressLookupOptionsStore.manualAddressComponents?.suburb,\r\n postcode: addressLookupOptionsStore.manualAddressComponents?.postcode,\r\n state: addressLookupOptionsStore.manualAddressComponents?.state,\r\n } as ISuburbLookupResult;\r\n}\r\n\r\nasync function checkAddress() {\r\n // Reset state\r\n noPostcodeMatches.value = false;\r\n selectedAddress.value = undefined;\r\n suburbLookupOptions.value = [];\r\n addressLookupOptionsStore.externalValidationMessage = '';\r\n addressLookupOptionsStore.showInvalidInsuranceRiskSuburbMessage = false;\r\n addressLookupOptionsStore.showRiskAddressNotFullyVerifiedMessage = false;\r\n addressLookupOptionsStore.riskAddressNotFullyVerifiedIsError = false;\r\n\r\n //If in 'Edit address' state enable the form and exit.\r\n if (!addressLookupOptionsStore.manualEditEnabled) {\r\n addressLookupOptionsStore.toggleManualFormDisabled();\r\n return;\r\n }\r\n\r\n if (addressLookupOptionsStore.isOverseasSelection) {\r\n validateOverseasAddressAndEmit();\r\n return;\r\n } else {\r\n addressLookupOptionsStore.manualAddressComponents.country = AUSTRALIA;\r\n addressLookupOptionsStore.manualAddressComponents.countryISO = '';\r\n }\r\n\r\n await addressSuburbLookup();\r\n\r\n addressLookupOptionsStore.manualEditEnabled = false;\r\n\r\n if (suburbLookupOptions.value?.length > 0) {\r\n return;\r\n }\r\n\r\n if (isPostalAddress(addressLookupOptionsStore.manualAddressComponents.street ?? '')) {\r\n if (addressLookupOptionsStore?.config?.allowPhysicalAddressesOnly) {\r\n addressLookupOptionsStore.manualAddressComponents.street = '';\r\n if (!isEmptyObject(addressLookupOptionsStore.manualAddressComponents)) {\r\n emit(emitManualAddressSelected, addressLookupOptionsStore.manualAddressComponents);\r\n }\r\n }\r\n } else {\r\n addressLookupOptionsStore.manualAddressComponents.addressLine = addressLookupOptionsStore.joinAddressLine(\r\n addressLookupOptionsStore.manualAddressComponents\r\n );\r\n addressLookupOptionsStore.useAddress = addressLookupOptionsStore.manualAddressComponents;\r\n\r\n if (!isEmptyObject(addressLookupOptionsStore.manualAddressComponents)) {\r\n emit(emitManualAddressSelected, addressLookupOptionsStore.manualAddressComponents);\r\n }\r\n }\r\n}\r\n\r\nasync function addressSuburbLookup() {\r\n formStore.showLoadingForCurrentStep();\r\n\r\n try {\r\n const result = await addressLookupOptionsStore.getSuburbsByPostcode();\r\n\r\n if (result?.match) {\r\n //UX even when there is a single match we want to show the list and prompt to select the address.\r\n suburbLookupOptions.value = [result?.match];\r\n } else {\r\n noPostcodeMatches.value = result?.results?.length == 0;\r\n suburbLookupOptions.value = result?.results ?? [];\r\n }\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n\r\n formStore.showLoadingForCurrentStep(false);\r\n}\r\n\r\nasync function applyRiskAddressBusinessRules() {\r\n if (addressLookupOptionsStore?.config?.allowValidInsuranceRiskSuburbsOnly) {\r\n formStore.showLoadingForCurrentStep();\r\n\r\n await addressLookupOptionsStore.applyRiskAddressBusinessRules();\r\n\r\n formStore.showLoadingForCurrentStep(false);\r\n }\r\n}\r\n\r\nfunction validateOverseasAddressAndEmit() {\r\n if (addressLookupOptionsStore.manualAddressComponents) {\r\n if (addressLookupOptionsStore.isOverseasSelection) {\r\n const validCountry = countries.value.find(\r\n (x) => x.value === addressLookupOptionsStore.manualAddressComponents.country\r\n );\r\n\r\n if (\r\n validCountry &&\r\n addressLookupOptionsStore.manualAddressComponents.suburb &&\r\n addressLookupOptionsStore.manualAddressComponents.suburb.length > 0\r\n ) {\r\n //Do this to keep the selected value shown with tick/confirmation as per UX feedback.\r\n suburbLookupOptions.value = [getSuburbLookupResult()];\r\n emit(emitManualAddressSelected, addressLookupOptionsStore.manualAddressComponents);\r\n addressLookupOptionsStore.toggleManualFormDisabled();\r\n }\r\n }\r\n }\r\n}\r\n\nreturn (_ctx: any,_cache: any) => {\n return (_unref(addressLookupOptionsStore).isManualEntries || _unref(addressLookupOptionsStore).isOverseasSelection)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_unref(FormKit), {\n id: _ctx.name + '_manual',\n modelValue: _unref(addressLookupOptionsStore).manualAddressComponents,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((_unref(addressLookupOptionsStore).manualAddressComponents) = $event)),\n name: _ctx.name + '_manual',\n disabled: !_unref(addressLookupOptionsStore).manualEditEnabled,\n type: \"form\",\n onSubmit: checkAddress\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(_unref(FormKit), {\n \"data-testid\": \"unitNumber\",\n name: \"unitNumber\",\n validationLabel: \"Unit number\",\n validation: unitNoValidation.value,\n validationMessages: { matches: _ctx.unitNumberInvalid },\n minLength: \"0\",\n maxLength: \"100\",\n label: \"Unit number (optional)\",\n innerClass: \"input-xs\",\n autocomplete: \"off webauthn\"\n }, null, 8, [\"validation\", \"validationMessages\"]),\n _createVNode(_unref(FormKit), {\n \"data-testid\": \"streetNumber\",\n name: \"streetNumber\",\n validationLabel: \"Street No.\",\n label: \"Street number\",\n maxLength: \"100\",\n messageClass: \"md:!pl-[0px]\",\n validation: streetNoValidation.value,\n validationMessages: {\r\n required: _ctx.streetNoRequired,\r\n matches: _ctx.streetNoInvalid,\r\n },\n innerClass: \"input-xs\",\n autocomplete: \"off webauthn\"\n }, null, 8, [\"validation\", \"validationMessages\"]),\n _createVNode(_unref(FormKit), {\n \"data-testid\": \"street\",\n name: \"street\",\n validationLabel: \"Street\",\n label: \"Street\",\n maxLength: \"100\",\n validation: [['required'], ['matches', _ctx.streetRegex]],\n validationMessages: { required: _ctx.streetRequired, matches: _ctx.streetInvalid },\n messageClass: \"md:!pl-[0px]\",\n outerClass: \"col-span-2\",\n innerClass: \"input-md\",\n autocomplete: \"off webauthn\"\n }, null, 8, [\"validation\", \"validationMessages\"]),\n _createVNode(_unref(FormKit), {\n \"data-testid\": \"suburb\",\n name: \"suburb\",\n validationLabel: \"Suburb\",\n label: \"Suburb\",\n maxLength: \"100\",\n validation: suburbValidation.value,\n messageClass: \"md:!pl-[0px]\",\n outerClass: \"col-span-2\",\n validationMessages: { required: _ctx.suburbRequired, matches: _ctx.suburbInvalid },\n innerClass: \"input-md\",\n autocomplete: \"off webauthn\"\n }, null, 8, [\"validation\", \"validationMessages\"]),\n (!_unref(addressLookupOptionsStore).isOverseasSelection)\n ? (_openBlock(), _createBlock(_unref(FormKit), {\n key: 0,\n \"data-testid\": \"state\",\n name: \"state\",\n validationLabel: \"State\",\n type: \"dropdown\",\n options: states.value,\n label: \"State\",\n validation: \"required\",\n messagesClass: \"md:ml-[0px] md:pl-[0px]\",\n validationMessages: { required: _ctx.stateRequired },\n innerClass: \"input-xs\"\n }, null, 8, [\"options\", \"validationMessages\"]))\n : _createCommentVNode(\"\", true),\n (!_unref(addressLookupOptionsStore).isOverseasSelection)\n ? (_openBlock(), _createBlock(_unref(FormKit), {\n key: 1,\n \"data-testid\": \"postcode\",\n name: \"postcode\",\n maxLength: \"4\",\n validationLabel: \"Postcode\",\n label: \"Postcode\",\n messageClass: \"md:!pl-[0px]\",\n type: \"tel\",\n validation: [['required'], ['matches', /\\d{4,4}/]],\n validationMessages: { required: _ctx.postcodeRequired, matches: _ctx.postcodeInvalid },\n innerClass: \"input-xs\",\n autocomplete: \"off webauthn\"\n }, null, 8, [\"validationMessages\"]))\n : (_openBlock(), _createBlock(_unref(FormKit), {\n key: 2,\n name: \"postcode\",\n validationLabel: \"Postcode\",\n \"data-testid\": \"postcode\",\n label: \"Postcode (Optional)\",\n validation: postcodeValidation.value,\n validationMessages: { matches: _ctx.postcodeInvalid },\n maxLength: \"100\",\n outerClass: \"col-span-2\",\n innerClass: \"input-xs\",\n autocomplete: \"off webauthn\"\n }, null, 8, [\"validation\", \"validationMessages\"])),\n (_unref(addressLookupOptionsStore).isOverseasSelection)\n ? (_openBlock(), _createBlock(_unref(FormKit), {\n key: 3,\n \"data-testid\": \"country\",\n name: \"country\",\n validationLabel: \"Country\",\n maxLength: \"100\",\n label: \"Country\",\n placeholder: \"Country\",\n validation: \"required\",\n validationMessages: { required: _ctx.countryRequired },\n messageClass: \"md:!pl-[0px]\",\n outerClass: \"col-span-2\",\n innerClass: \"input-md\",\n options: countries.value,\n type: \"autocomplete\",\n openOnFocus: \"\",\n openOnClick: \"\"\n }, null, 8, [\"validationMessages\", \"options\"]))\n : _createCommentVNode(\"\", true),\n _createVNode(_unref(FormKit), {\n type: \"submit\",\n inputClass: \"btn btn-md btn-primary\",\n label: _unref(addressLookupOptionsStore).manualEditEnabled ? 'Submit address' : 'Edit address',\n disabled: false\n }, null, 8, [\"label\"])\n ])\n ]),\n _: 1\n }, 8, [\"id\", \"modelValue\", \"name\", \"disabled\"]),\n (_unref(addressLookupOptionsStore).manualEditEnabled)\n ? (_openBlock(), _createBlock(_unref(FormKit), {\n key: 0,\n ref_key: \"checkAddressRef\",\n ref: checkAddressRef,\n outerClass: \"hidden\",\n validation: \"required\",\n validationMessages: { required: _ctx.checkAddressRequired }\n }, null, 8, [\"validationMessages\"]))\n : _createCommentVNode(\"\", true),\n _createVNode(RACQFormKitErrorMessage, {\n node: (checkAddressRef.value as any)?.node,\n description: _ctx.checkAddressRequired\n }, null, 8, [\"node\", \"description\"]),\n (suburbLookupOptions.value?.length)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3))\n : _createCommentVNode(\"\", true),\n (suburbLookupOptions.value?.length)\n ? (_openBlock(), _createBlock(RadioCardList, {\n key: 2,\n modelValue: selectedAddress.value,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((selectedAddress).value = $event)),\n bindings: {\r\n name: 'suburbLookup',\r\n label: _ctx.riskSuburbsLabel,\r\n options: suburbs.value,\r\n optionsClass: 'racq-max-w-xl',\r\n validationMessages: { required: _ctx.selectSuburbRequired },\r\n validation: 'required',\r\n onInput: addressSelected,\r\n }\n }, null, 8, [\"modelValue\", \"bindings\"]))\n : _createCommentVNode(\"\", true),\n (!suburbLookupOptions.value?.length && apiValidationMessage.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_4))\n : _createCommentVNode(\"\", true),\n (apiValidationMessage.value)\n ? (_openBlock(), _createBlock(InformationBox, {\n key: 4,\n title: apiValidationMessage.value.title,\n description: apiValidationMessage.value.text,\n type: _unref(InformationBoxTypes).ERROR\n }, null, 8, [\"title\", \"description\", \"type\"]))\n : _createCommentVNode(\"\", true),\n (apiValidationMessage.value)\n ? (_openBlock(), _createBlock(_unref(FormKit), {\n key: 5,\n outerClass: \"hidden\",\n validation: \"required\",\n validationMessages: { required: apiValidationMessage.value },\n validationVisibility: \"live\"\n }, null, 8, [\"validationMessages\"]))\n : _createCommentVNode(\"\", true),\n (\r\n !apiValidationMessage.value &&\r\n _unref(addressLookupOptionsStore) &&\r\n !_unref(addressLookupOptionsStore).riskAddressNotFullyVerifiedIsError &&\r\n _unref(addressLookupOptionsStore).showRiskAddressNotFullyVerifiedMessage\r\n )\n ? (_openBlock(), _createBlock(InformationBox, {\n key: 6,\n description: _ctx.riskAddressNotFullyVerifiedMessage,\n type: \r\n _unref(addressLookupOptionsStore).riskAddressNotFullyVerifiedIsError\r\n ? _unref(InformationBoxTypes).ERROR\r\n : _unref(InformationBoxTypes).WARNING\r\n \n }, null, 8, [\"description\", \"type\"]))\n : _createCommentVNode(\"\", true)\n ]))\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","\r\n\r\n","import script from \"./ManualAddressForm.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./ManualAddressForm.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { openBlock as _openBlock, createBlock as _createBlock } from \"vue\"\n\nimport { onMounted, ref, watch } from 'vue';\r\nimport { useMultiInstanceAddressOptionsStore, emitAddressReset, addressLookupEmits } from '@/store';\r\nimport { VueFormInputProps } from '@/composables/useFormInputData';\r\nimport RACQFormKit from '../RACQFormKit/RACQFormKit.vue';\r\nimport { toBool } from '@/utils/convert';\r\nimport { AUSTRALIA } from '@/constants/general-words.const';\r\n\r\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'OverseasOption',\n props: {\n defaultIsOverseasOption: { type: Boolean },\n instanceIdentifier: {},\n overseasOptionLabel: {},\n overseasOptionTooltip: {}\n },\n emits: addressLookupEmits,\n setup(__props: any, { emit: __emit }) {\n\r\nconst emit = __emit;\r\n\r\nconst props = __props;\r\n\r\nconst multiInstanceAddressStore = useMultiInstanceAddressOptionsStore();\r\nconst addressLookupOptionsStore = multiInstanceAddressStore.getInstance(props.instanceIdentifier);\r\n\r\nconst isOverseasSelected = ref();\r\n\r\nonMounted(async () => {\r\n if (addressLookupOptionsStore.isOverseasManualAddress()) {\r\n isOverseasSelected.value = 'true';\r\n addressLookupOptionsStore.isOverseasSelection = true;\r\n }\r\n});\r\n\r\nwatch(\r\n () => isOverseasSelected.value,\r\n async (newValue, oldValue) => {\r\n if (oldValue) {\r\n const enableManualEntry = oldValue !== undefined;\r\n addressLookupOptionsStore.onIsOverseasChanged(toBool(newValue), enableManualEntry);\r\n\r\n if (!toBool(newValue)) {\r\n addressLookupOptionsStore.manualAddressComponents.country = AUSTRALIA;\r\n }\r\n\r\n emit(emitAddressReset);\r\n }\r\n }\r\n);\r\n\r\nwatch(\r\n () => addressLookupOptionsStore.isOverseasSelection,\r\n async (newValue) => {\r\n isOverseasSelected.value = newValue.toString();\r\n }\r\n);\r\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(RACQFormKit, {\n modelValue: isOverseasSelected.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((isOverseasSelected).value = $event)),\n name: `postalOverseas-${_ctx.instanceIdentifier}`,\n bindings: \r\n {\r\n label: _ctx.overseasOptionLabel,\r\n name: `postalOverseas-${_ctx.instanceIdentifier}`,\r\n type: 'toggle',\r\n options: [\r\n { label: 'Australia', value: 'false' },\r\n { label: 'Overseas', value: 'true' },\r\n ],\r\n tooltip: {\r\n content: _ctx.overseasOptionTooltip,\r\n tooltipId: 'overseas_option__tooltip_id',\r\n tooltipOuterId: 'overseas_option__outer',\r\n isModal: false,\r\n },\r\n } as VueFormInputProps\r\n \n }, null, 8, [\"modelValue\", \"name\", \"bindings\"]))\n}\n}\n\n})","\r\n\r\n","import script from \"./OverseasOption.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./OverseasOption.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass } from \"vue\"\n\nconst _hoisted_1 = [\"src\", \"alt\"]\nconst _hoisted_2 = { class: \"grow shrink basis-0 text-base-bold\" }\n\nimport { computed } from 'vue';\r\nimport { AlertTypes } from '@/enums/alert-types-enum';\r\nimport { IAlert } from '@/interfaces/forms/alert-interface';\r\n\r\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'Alert',\n props: {\n alert: {}\n },\n setup(__props: any) {\n\r\nconst props = __props;\r\n\r\nconst classes = computed(() => getTypeClasses());\r\nconst icon = computed(() => getIcon());\r\n\r\nconst getTypeClasses = () => {\r\n switch (props.alert.alertType) {\r\n case AlertTypes.info:\r\n return 'text-white bg-racq-alert-info';\r\n case AlertTypes.success:\r\n return 'text-white bg-racq-alert-success';\r\n case AlertTypes.warning:\r\n return 'text-racq-dark-grey bg-racq-alert-warning';\r\n case AlertTypes.danger:\r\n return 'text-white bg-racq-alert-danger';\r\n }\r\n return '';\r\n};\r\n\r\nconst getIcon = () => {\r\n let icon = null;\r\n switch (props.alert.alertType) {\r\n case AlertTypes.info:\r\n icon = { fileName: require(`@/assets/icons/info-icon-white.svg`), alt: 'Information icon' };\r\n break;\r\n case AlertTypes.success:\r\n icon = { fileName: require(`@/assets/icons/success-icon-white.svg`), alt: 'Tick icon' };\r\n break;\r\n case AlertTypes.warning:\r\n icon = { fileName: require(`@/assets/icons/warning-icon-black.svg`), alt: 'Warning icon' };\r\n break;\r\n case AlertTypes.danger:\r\n icon = { fileName: require(`@/assets/icons/danger-icon-white.svg`), alt: 'Danger icon' };\r\n break;\r\n }\r\n\r\n return icon;\r\n};\r\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([classes.value, \"px-5 py-4 rounded justify-start items-center gap-4 flex\"])\n }, [\n (_ctx.alert.showIcon && icon.value)\n ? (_openBlock(), _createElementBlock(\"img\", {\n key: 0,\n src: _ctx.alert.customIcon?.fileName ? _ctx.alert.customIcon.fileName : icon.value.fileName,\n alt: icon.value?.alt,\n role: \"img\",\n class: \"w-5 h-5 relative\"\n }, null, 8, _hoisted_1))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_2, _toDisplayString(_ctx.alert.text), 1)\n ], 2))\n}\n}\n\n})","\r\n\r\n\r\n","import script from \"./Alert.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./Alert.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createBlock as _createBlock, createElementVNode as _createElementVNode, unref as _unref, renderList as _renderList, Fragment as _Fragment, resolveDynamicComponent as _resolveDynamicComponent, withCtx as _withCtx, createVNode as _createVNode, renderSlot as _renderSlot, normalizeStyle as _normalizeStyle, Transition as _Transition } from \"vue\"\n\nconst _hoisted_1 = { class: \"bg-racq-anti-flash-white flex flex-col grow min-h-[calc(100svh-56px-376px)] md:min-h-[calc(100svh-68px-376px)] lg:min-h-[calc(100svh-69px-199px)]\" }\nconst _hoisted_2 = { class: \"px-4 pt-6 pb-5 bg-white lg:hidden\" }\nconst _hoisted_3 = {\n key: 0,\n class: /*@__PURE__*/_normalizeClass(`md:hidden text-racq-navy m-0 text-xl2-bold`)\n}\nconst _hoisted_4 = {\n id: \"base-form-container\",\n class: \"mx-0 md:mx-auto mb-12 md:mb-14 xl:max-w-[784px] lg:max-w-[992px] md:max-w-[784px] w-full sm:mt-0 md:mt-8 lg:mt-14\"\n}\nconst _hoisted_5 = { key: 0 }\nconst _hoisted_6 = {\n key: 1,\n class: \"relative\"\n}\nconst _hoisted_7 = [\"id\", \"dataStepName\"]\nconst _hoisted_8 = { class: \"mx-0 md:mx-auto -mt-5 px-4 lg:px-0 max-w-[784px] w-full\" }\n\nimport { computed, onMounted, ref, getCurrentInstance, watch } from 'vue';\r\nimport { ComponentFields, RichText } from '@sitecore-jss/sitecore-jss-vue';\r\nimport { FormRenderingData } from '@/interfaces/pages/sitecore-props.interface';\r\n\r\nimport FormStepper from '@/components/FormStepper/FormStepper.vue';\r\nimport FormStepperBar from '@/components/FormStepperBar/FormStepperBar.vue';\r\nimport FormStep from '@/components/FormStep/FormStep.vue';\r\nimport JeopardyV2 from '@/components/JeopardyV2/JeopardyV2.vue';\r\nimport ModalDialog from '@/components/ModalDialog/ModalDialog.vue';\r\nimport FormStepDisclaimers from '@/components/FormStepDisclaimers/FormStepDisclaimers.vue';\r\n\r\nimport { IFormStep } from '@/interfaces';\r\nimport { useJeopardyStore, useFormStore } from '@/store';\r\n\r\n// Define props and state\r\n// ------------------------------------------------------------- //\r\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'BaseFormContainer',\n props: {\n rendering: {},\n fields: {},\n steps: {},\n floatBoxMounted: { type: Boolean }\n },\n setup(__props: any) {\n\r\nconst props = __props;\r\n\r\nconst floatBoxTranslate = ref<{ x: number; y: number }>({ x: 0, y: 0 });\r\nconst showTooltipModal = ref(false);\r\nconst tooltipModalTitle = ref('');\r\nconst tooltipModalContent = ref('');\r\n\r\n// Initialise stores\r\n// ------------------------------------------------------------- //\r\nconst jpStore = useJeopardyStore();\r\nconst formStore = useFormStore();\r\n\r\n// Computed Properties\r\n// ------------------------------------------------------------- //\r\nconst showJeopardy = computed(() => jpStore.showJeopardy);\r\nconst prelimSteps = computed(() => formStore.prelimSteps);\r\nconst prelimStepIndex = computed(() => formStore.currentPrelimStepIndex);\r\nconst allPrelimStepsComplete = computed(() => formStore.allPrelimStepsComplete);\r\nconst formName = computed(() => props.rendering?.fields?.data?.datasource?.name || '');\r\nconst pageTitle = computed(() => formStore.pageTitle);\r\nconst isStepperVisible = computed(() => formStore.isStepperVisible.value);\r\nconst activeStep = computed(() =>\r\n formStore.allPrelimStepsComplete ? formStore.currentStep : formStore.currentPrelimStep\r\n);\r\n\r\nconst app = getCurrentInstance();\r\nconst jpFields = app?.appContext.config.globalProperties.$jss.routeData().placeholders['jss-jeopardy'][0].fields;\r\n\r\nonMounted(() => {\r\n // Set the default Jeopardy to display for this form\r\n jpStore.setDefaultJeopardyPanel(jpFields);\r\n\r\n formStore.setFormName(formName.value);\r\n});\r\n\r\nconst updateFloatBox = () => {\r\n const { currentStep, currentStepIndex, inScopeSteps } = formStore;\r\n const paddingBetweenStepsInPixel = 20;\r\n\r\n if (!currentStep?.id) return;\r\n\r\n const timer = setInterval(() => {\r\n const getStepContainer = (stepId: string | undefined, stepIndex: number) =>\r\n stepId ? document.querySelector(`#${stepId + stepIndex.toString()} > div`) : null;\r\n\r\n // Get all previous step containers and accumulate their heights\r\n let totalHeight = 0;\r\n for (let i = 0; i < currentStepIndex; i++) {\r\n const stepId = inScopeSteps[i]?.id;\r\n\r\n const stepContainer = getStepContainer(stepId, i);\r\n if (stepContainer) {\r\n totalHeight += stepContainer.clientHeight + paddingBetweenStepsInPixel;\r\n }\r\n }\r\n\r\n const currentStepContainer = getStepContainer(currentStep.id, currentStepIndex);\r\n\r\n if (currentStepContainer) {\r\n clearInterval(timer);\r\n // Adjust y position with the accumulated height of previous steps\r\n floatBoxTranslate.value = {\r\n x: currentStepContainer.clientWidth + 30,\r\n y: totalHeight,\r\n };\r\n }\r\n }, 100);\r\n};\r\n\r\n/**\r\n * Add as global function to be able to access by tooltip plugin\r\n */\r\n(window as any).showRACQTooltipModal = (title: string, content: string) => {\r\n showTooltipModal.value = true;\r\n tooltipModalTitle.value = title;\r\n tooltipModalContent.value = content;\r\n};\r\n\r\n(window as any).hideRACQTooltipModal = () => {\r\n showTooltipModal.value = false;\r\n};\r\n\r\nwatch(\r\n () => formStore.currentStep, // The property to watch\r\n (newStep, oldStep) => {\r\n if (newStep !== oldStep) {\r\n updateFloatBox(); // Trigger the function when `currentStep` changes\r\n }\r\n },\r\n { immediate: true } // Trigger the watcher immediately after the component mounts\r\n);\r\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createElementVNode(\"main\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n (pageTitle.value)\n ? (_openBlock(), _createElementBlock(\"h3\", _hoisted_3, _toDisplayString(pageTitle.value), 1))\n : _createCommentVNode(\"\", true),\n (isStepperVisible.value)\n ? (_openBlock(), _createBlock(FormStepperBar, {\n key: 1,\n class: \"mt-2 h-6 w-full justify-stretch items-center\"\n }))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"div\", _hoisted_4, [\n (isStepperVisible.value && allPrelimStepsComplete.value)\n ? (_openBlock(), _createBlock(FormStepper, {\n key: 0,\n steps: _ctx.steps,\n currentStepIndex: _unref(formStore).currentStepIndex\n }, null, 8, [\"steps\", \"currentStepIndex\"]))\n : _createCommentVNode(\"\", true),\n _createVNode(_Transition, {\n name: \"component-fade\",\n mode: \"out-in\"\n }, {\n default: _withCtx(() => [\n (!allPrelimStepsComplete.value && !showJeopardy.value)\n ? (_openBlock(), _createElementBlock(\"div\", { key: prelimStepIndex.value }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(prelimSteps.value, (prelimStep, index) => {\n return (_openBlock(), _createElementBlock(_Fragment, {\n key: prelimStep.id\n }, [\n (index === prelimStepIndex.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_5, [\n _createVNode(FormStep, { step: prelimStep }, {\n default: _withCtx(() => [\n (_openBlock(), _createBlock(_resolveDynamicComponent(prelimStep.component), { step: prelimStep }, null, 8, [\"step\"]))\n ]),\n _: 2\n }, 1032, [\"step\"])\n ]))\n : _createCommentVNode(\"\", true)\n ], 64))\n }), 128))\n ]))\n : (allPrelimStepsComplete.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_6, [\n (allPrelimStepsComplete.value && _ctx.floatBoxMounted)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: _normalizeClass(_ctx.floatBoxMounted ? 'w-full lg:w-64 lg:absolute lg-down:!transform-none' : 'hidden'),\n style: _normalizeStyle({\r\n transform: `translate(${floatBoxTranslate.value.x}px, ${floatBoxTranslate.value.y}px)`,\r\n })\n }, [\n _renderSlot(_ctx.$slots, \"floatBox\")\n ], 6))\n : _createCommentVNode(\"\", true),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.steps, (step, index) => {\n return (_openBlock(), _createElementBlock(\"section\", {\n id: step.id + index.toString(),\n key: index,\n class: _normalizeClass([\r\n 'js-scrollspy-form-step xl:w-full',\r\n {\r\n '!hidden md:!flex': index != _unref(formStore).currentStepIndex && step.isVisible,\r\n '!hidden': !step.isVisible,\r\n },\r\n _ctx.floatBoxMounted ? 'lg:racq-step-width' : 'lg:racq-w-xl5 lg:mx-auto',\r\n step.isActive ? 'z-[1]' : 'z-[0]',\r\n ]),\n dataStepName: step.stepGroupName || step.stepTitle\n }, [\n _createVNode(FormStep, {\n step: step,\n stepIndex: index + 1\n }, {\n default: _withCtx(() => [\n (step.isVisible)\n ? (_openBlock(), _createBlock(_resolveDynamicComponent(step.component), {\n key: 0,\n step: step\n }, null, 8, [\"step\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _: 2\n }, 1032, [\"step\", \"stepIndex\"])\n ], 10, _hoisted_7))\n }), 128))\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n _: 3\n }),\n _renderSlot(_ctx.$slots, \"bottomBox\"),\n _createVNode(JeopardyV2, { fields: _unref(jpFields) }, null, 8, [\"fields\"])\n ]),\n _createElementVNode(\"div\", _hoisted_8, [\n _createVNode(FormStepDisclaimers, {\n fields: {\r\n defaultDisclaimer: activeStep.value?.stepDisclaimer,\r\n stepTitle: activeStep.value?.stepTitle,\r\n }\n }, null, 8, [\"fields\"])\n ])\n ]),\n _createVNode(ModalDialog, {\n modelValue: showTooltipModal.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((showTooltipModal).value = $event)),\n closeOnEsc: true,\n showXCloseButton: true,\n dialogClass: \"tooltip-dialog\"\n }, {\n default: _withCtx(() => [\n (tooltipModalTitle.value)\n ? (_openBlock(), _createBlock(_unref(RichText), {\n key: 0,\n field: { value: tooltipModalTitle.value },\n class: \"tooltip-title\"\n }, null, 8, [\"field\"]))\n : _createCommentVNode(\"\", true),\n _createVNode(_unref(RichText), {\n field: { value: tooltipModalContent.value },\n class: \"tooltip-body richtext\"\n }, null, 8, [\"field\"])\n ]),\n _: 1\n }, 8, [\"modelValue\"])\n ], 64))\n}\n}\n\n})","\r\n\r\n\r\n","import script from \"./BaseFormContainer.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./BaseFormContainer.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode } from \"vue\"\n\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'BaseIcon',\n props: {\n iconClass: {}\n },\n setup(__props: any) {\n\r\n\r\n\nreturn (_ctx: any,_cache: any) => {\n return (_ctx.iconClass)\n ? (_openBlock(), _createElementBlock(\"span\", {\n key: 0,\n class: _normalizeClass([_ctx.iconClass, \"icon w-6 h-6 bg-no-repeat bg-contain inline-block\"])\n }, null, 2))\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","import script from \"./BaseIcon.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./BaseIcon.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"grow shrink self-stretch p-5 md:px-6 md:py-5 bg-racq-anti-flash-white justify-start items-start gap-4 flex flex-col md:flex-row border border-solid border-racq-white shadow-md rounded\" }\nconst _hoisted_2 = { class: \"grow shrink justify-start items-start gap-4 md:gap-5 flex\" }\nconst _hoisted_3 = { class: \"grow shrink flex-col justify-start items-start inline-flex\" }\n\nimport { Field, RichText, Image } from '@sitecore-jss/sitecore-jss-vue';\r\nimport { ImageFieldValue } from '@sitecore-jss/sitecore-jss-vue/types/components/Image';\r\n\r\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'CTABanner',\n props: {\n fields: {}\n },\n emits: ['buttonClicked'],\n setup(__props: any, { emit: __emit }) {\n\r\nconst props = __props;\r\n\r\n// Define Component state\r\n// ------------------------------------------------------------- //\r\nconst emit = __emit;\r\n\r\n// Functions\r\n// ------------------------------------------------------------- //\r\n\r\nconst buttonClicked = (values: any) => {\r\n emit('buttonClicked', values);\r\n};\r\n\nreturn (_ctx: any,_cache: any) => {\n const _component_FormKit = _resolveComponent(\"FormKit\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n (_ctx.fields.icon?.value)\n ? (_openBlock(), _createBlock(_unref(Image), {\n key: 0,\n media: _ctx.fields.icon,\n class: \"w-12 h-12\"\n }, null, 8, [\"media\"]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_3, [\n (_ctx.fields.title)\n ? (_openBlock(), _createBlock(_unref(RichText), {\n key: 0,\n class: \"text-racq-dark-grey text-base-bold\",\n field: _ctx.fields.title\n }, null, 8, [\"field\"]))\n : _createCommentVNode(\"\", true),\n (_ctx.fields.subTitle)\n ? (_openBlock(), _createBlock(_unref(RichText), {\n key: 1,\n class: \"text-racq-dark-grey text-base\",\n field: _ctx.fields.subTitle\n }, null, 8, [\"field\"]))\n : _createCommentVNode(\"\", true)\n ])\n ]),\n (_ctx.fields.buttonText?.value)\n ? (_openBlock(), _createBlock(_component_FormKit, {\n key: 0,\n type: \"button\",\n label: _ctx.fields.buttonText?.value,\n inputClass: \"btn btn-sm btn-secondary w-full md:w-max\",\n outerClass: \"w-full md:w-max\",\n onClick: buttonClicked\n }, null, 8, [\"label\"]))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","\r\n\r\n\r\n","import script from \"./CTABanner.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./CTABanner.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, renderSlot as _renderSlot, unref as _unref, createBlock as _createBlock, withModifiers as _withModifiers } from \"vue\"\n\nconst _hoisted_1 = { class: \"cta-card flex flex-col items-center\" }\nconst _hoisted_2 = [\"src\"]\nconst _hoisted_3 = {\n key: 1,\n class: \"cta-card-title text-xl-bold mb-6\"\n}\nconst _hoisted_4 = {\n key: 2,\n class: \"cta-card-content-container w-full\"\n}\nconst _hoisted_5 = {\n key: 3,\n class: \"cta-card-buttons mt-6 flex flex-col items-center w-full gap-4\"\n}\nconst _hoisted_6 = [\"aria-label\"]\nconst _hoisted_7 = [\"aria-label\"]\n\nimport { RichText } from '@sitecore-jss/sitecore-jss-vue';\r\n\r\ninterface CTACardProps {\r\n icon?: string;\r\n title?: string;\r\n content?: string;\r\n primaryButtonLabel?: string;\r\n secondaryButtonLabel?: string;\r\n}\r\n\r\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'CallToActionCard',\n props: {\n icon: {},\n title: {},\n content: {},\n primaryButtonLabel: {},\n secondaryButtonLabel: {}\n },\n emits: ['buttonClick'],\n setup(__props: any, { emit: __emit }) {\n\r\n\r\n\r\nconst emit = __emit;\r\n\r\nconst emitClick = (type: 'primaryCtaButton' | 'secondaryCtaButton') => {\r\n emit('buttonClick', type);\r\n};\r\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_ctx.icon)\n ? (_openBlock(), _createElementBlock(\"img\", {\n key: 0,\n src: _ctx.icon,\n alt: \"icon\",\n class: \"cta-card-icon h-20 w-20 mb-4\"\n }, null, 8, _hoisted_2))\n : _createCommentVNode(\"\", true),\n (_ctx.title)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, _toDisplayString(_ctx.title), 1))\n : _createCommentVNode(\"\", true),\n (_ctx.$slots.beforeContent || _ctx.content || _ctx.$slots.afterContent)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [\n (_ctx.$slots.beforeContent)\n ? _renderSlot(_ctx.$slots, \"beforeContent\", { key: 0 })\n : _createCommentVNode(\"\", true),\n (_ctx.content)\n ? (_openBlock(), _createBlock(_unref(RichText), {\n key: 1,\n field: { value: _ctx.content },\n class: \"cta-card-content m-0 p-0\"\n }, null, 8, [\"field\"]))\n : _createCommentVNode(\"\", true),\n (_ctx.$slots.afterContent)\n ? _renderSlot(_ctx.$slots, \"afterContent\", { key: 2 })\n : _createCommentVNode(\"\", true)\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.primaryButtonLabel || _ctx.secondaryButtonLabel)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_5, [\n (_ctx.primaryButtonLabel)\n ? (_openBlock(), _createElementBlock(\"button\", {\n key: 0,\n type: \"button\",\n class: \"cta-card-button flex px-3 py-2 justify-center items-center self-stretch text-base btn btn-md btn-primary\",\n \"aria-label\": _ctx.primaryButtonLabel,\n onClick: _cache[0] || (_cache[0] = _withModifiers(($event: any) => (emitClick('primaryCtaButton')), [\"stop\",\"prevent\"]))\n }, _toDisplayString(_ctx.primaryButtonLabel), 9, _hoisted_6))\n : _createCommentVNode(\"\", true),\n (_ctx.secondaryButtonLabel)\n ? (_openBlock(), _createElementBlock(\"button\", {\n key: 1,\n type: \"button\",\n class: \"cta-card-button flex px-3 py-2 justify-center items-center self-stretch text-base btn-md btn btn-secondary\",\n \"aria-label\": _ctx.secondaryButtonLabel,\n onClick: _cache[1] || (_cache[1] = _withModifiers(($event: any) => (emitClick('secondaryCtaButton')), [\"stop\",\"prevent\"]))\n }, _toDisplayString(_ctx.secondaryButtonLabel), 9, _hoisted_7))\n : _createCommentVNode(\"\", true)\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","\r\n\r\n\r\n\r\n","import script from \"./CallToActionCard.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./CallToActionCard.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { useModel as _useModel, mergeModels as _mergeModels, defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, withModifiers as _withModifiers, createElementVNode as _createElementVNode, createBlock as _createBlock, createCommentVNode as _createCommentVNode, withCtx as _withCtx } from \"vue\"\n\nconst _hoisted_1 = [\"onClick\"]\n\nimport { ref, computed, onMounted, watch, nextTick } from 'vue';\r\nimport { IDropdownItem, IFormStep } from '@/interfaces';\r\nimport { IQConfigSettings, SettingCategory, useConfigSettingsStore, useReferenceDataIQMotorStore } from '@/store';\r\nimport { FormKit } from '@formkit/vue';\r\nimport RACQFormKit from '@/components/RACQFormKit/RACQFormKit.vue';\r\nimport AddRemoveForm from '@/components/AddRemoveForm/AddRemoveForm.vue';\r\nimport useFormInputData from '@/composables/useFormInputData';\r\nimport { toBool } from '@/utils/convert';\r\n\r\n// Define props and emitters\r\n// ------------------------------------------------------------- //\r\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'CarAccessories',\n props: /*@__PURE__*/_mergeModels({\n step: {},\n initialAccessories: { default: () => [''] }\n }, {\n \"modelValue\": { required: true },\n \"modelModifiers\": {},\n }),\n emits: [\"update:modelValue\"],\n setup(__props: any) {\n\r\nconst props = __props;\r\nconst formData = _useModel>(__props, \"modelValue\");\r\n\r\n// Define Store\r\n// ------------------------------------------------------------- //\r\nconst refMotorStore = useReferenceDataIQMotorStore();\r\nconst configSettingsConfig = useConfigSettingsStore();\r\n\r\n// Define Composables\r\n// ------------------------------------------------------------- //\r\nconst { formInputData } = useFormInputData(props.step.formInputs!);\r\n\r\n// Define Component state\r\n// ------------------------------------------------------------- //\r\nconst initialAccessories = ref(props.initialAccessories);\r\nconst list = ref([]);\r\nconst maxAdditionalAccessories = ref(50);\r\nconst accessoryItemLabel = ref('');\r\nconst addButtonText = ref('');\r\nconst removeButtonText = ref('');\r\nconst dropdownLabelText = ref('');\r\nconst dropdownPlaceholderText = ref('');\r\nconst dropdownValidationErrorMessage = ref('');\r\n\r\nconst filteredList = computed(\r\n () => (self: string) =>\r\n list.value.filter((item) => item.value === self || !initialAccessories.value.includes(item.value))\r\n);\r\n\r\nconst renderInput = computed(() => (self: string) => !self || list.value.some((item) => item.value === self));\r\n\r\nconst showAddButton = computed(() => (index: number) => {\r\n return (\r\n index === initialAccessories.value.length - 1 && initialAccessories.value.length < maxAdditionalAccessories.value\r\n );\r\n});\r\n\r\nwatch(\r\n () => props.initialAccessories,\r\n async (newValue, oldValue) => {\r\n if (newValue !== oldValue) {\r\n initialAccessories.value = newValue;\r\n }\r\n }\r\n);\r\n\r\nonMounted(async () => {\r\n const [accessoryData, maxAccessoriesSetting] = await Promise.all([\r\n refMotorStore.getAccessoriesAndModification(),\r\n configSettingsConfig.getSetting(IQConfigSettings.MaxAdditionalAccessories, SettingCategory.IQSettings),\r\n ]);\r\n list.value = accessoryData.map((item) => ({ label: item.name, value: item.value }));\r\n maxAdditionalAccessories.value = (maxAccessoriesSetting as number) || 50;\r\n const fields = props.step.formInputs?.hasAccessories.fields || [];\r\n accessoryItemLabel.value = findFieldContent(fields, 'AccessoryItemLabel');\r\n addButtonText.value = findFieldContent(fields, 'AddButtonText');\r\n removeButtonText.value = findFieldContent(fields, 'RemoveButtonText');\r\n dropdownLabelText.value = findFieldContent(fields, 'DropdownLabelText');\r\n dropdownPlaceholderText.value = findFieldContent(fields, 'DropdownPlaceholderText');\r\n dropdownValidationErrorMessage.value = findFieldContent(fields, 'DropdownValidationErrorMessage');\r\n});\r\n\r\nfunction findFieldContent(fields: any[], fieldName: string): string {\r\n const field = fields.find((item: any) => item.name === fieldName);\r\n return field?.content?.value || '';\r\n}\r\n\r\nfunction addAccessory() {\r\n initialAccessories.value.push('');\r\n}\r\n\r\nfunction removeAccessory(index: number) {\r\n const updatedAccessories = [...initialAccessories.value];\r\n updatedAccessories.splice(index, 1);\r\n\r\n // Ensure Vue detects the change\r\n initialAccessories.value = [];\r\n nextTick(() => {\r\n initialAccessories.value = updatedAccessories;\r\n formData.value.accessories = [...updatedAccessories];\r\n\r\n if (updatedAccessories.length === 0) {\r\n formData.value.hasAccessories = 'false';\r\n }\r\n });\r\n}\r\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createVNode(RACQFormKit, {\n bindings: _unref(formInputData)(_ctx.step.formInputs?.hasAccessories?.formInputId?.value)\n }, null, 8, [\"bindings\"]),\n (_unref(toBool)(formData.value.hasAccessories))\n ? (_openBlock(), _createBlock(_unref(FormKit), {\n key: 0,\n type: \"list\",\n name: \"accessories\"\n }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(initialAccessories.value, (_, index) => {\n return (_openBlock(), _createBlock(AddRemoveForm, {\n key: index,\n title: `${accessoryItemLabel.value} ${index + 1}`,\n customClasses: \"mb-9\"\n }, {\n buttonAction: _withCtx(() => [\n _createElementVNode(\"button\", {\n type: \"button\",\n class: \"link text-base-bold\",\n onClick: _withModifiers(($event: any) => (removeAccessory(index)), [\"prevent\"])\n }, _toDisplayString(removeButtonText.value), 9, _hoisted_1)\n ]),\n sectionFrameContent: _withCtx(() => [\n (renderInput.value(initialAccessories.value[index]))\n ? (_openBlock(), _createBlock(_unref(FormKit), {\n key: 0,\n options: filteredList.value(initialAccessories.value[index]),\n openOnClick: \"\",\n placeholder: dropdownPlaceholderText.value,\n validation: \"required\",\n \"aria-label\": \"Accessories List\",\n title: \"Accessories List\",\n selectionAppearance: \"option\",\n innerClass: \"max-w-[90%] md:racq-max-w-sm\",\n outerClass: \"w-full md:w-auto\",\n wrapperClass: \"$reset md:block\",\n label: dropdownLabelText.value,\n closeIcon: false,\n optionClass: \"overflow-hidden whitespace-nowrap p-[0.5rem]\",\n labelClass: \"hidden\",\n validationMessages: { required: dropdownValidationErrorMessage.value },\n type: \"autocomplete\"\n }, null, 8, [\"options\", \"placeholder\", \"label\", \"validationMessages\"]))\n : _createCommentVNode(\"\", true)\n ]),\n addButton: _withCtx(() => [\n (showAddButton.value(index))\n ? (_openBlock(), _createBlock(_unref(FormKit), {\n key: 0,\n type: \"button\",\n inputClass: \"btn btn-secondary input-cta mb-6\",\n label: addButtonText.value,\n onClick: addAccessory\n }, null, 8, [\"label\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _: 2\n }, 1032, [\"title\"]))\n }), 128))\n ]),\n _: 1\n }))\n : _createCommentVNode(\"\", true)\n ], 64))\n}\n}\n\n})","\r\n\r\n\r\n","import script from \"./CarAccessories.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./CarAccessories.vue?vue&type=script&lang=ts&setup=true\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, mergeProps as _mergeProps, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, createElementBlock as _createElementBlock, renderSlot as _renderSlot, Fragment as _Fragment } from \"vue\"\n\nconst _hoisted_1 = { class: \"grid grid-cols-1 place-items-center\" }\nconst _hoisted_2 = { class: \"p-3\" }\nconst _hoisted_3 = [\"src\", \"alt\"]\nconst _hoisted_4 = [\"innerHTML\"]\nconst _hoisted_5 = [\"innerHTML\"]\nconst _hoisted_6 = [\"innerHTML\"]\nconst _hoisted_7 = [\"innerHTML\"]\nconst _hoisted_8 = [\"innerHTML\"]\nconst _hoisted_9 = [\"innerHTML\"]\n\nimport Alert from '@/components/Alert/Alert.vue';\r\nimport { IImage } from '@/interfaces/forms/image-interface';\r\nimport { IAlert } from '@/interfaces/forms/alert-interface';\r\nimport InformationBox from '@/components/InformationBox/InformationBox.vue';\r\nimport { IInformationBox } from '@/interfaces/forms/information-box.interface';\r\n\r\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'ConfirmationHeader',\n props: {\n topAlert: {},\n informationBox: {},\n icon: {},\n title: {},\n subTitle: {},\n totalAmountSummary: {},\n policyOrReferenceNumber: {},\n receiptNumber: {},\n paymentReferenceNumber: {}\n },\n setup(__props: any) {\n\r\nconst props = __props;\r\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n (_ctx.topAlert)\n ? (_openBlock(), _createBlock(Alert, {\n key: 0,\n alert: _ctx.topAlert,\n class: \"mb-5\"\n }, null, 8, [\"alert\"]))\n : _createCommentVNode(\"\", true),\n (_ctx.informationBox)\n ? (_openBlock(), _createBlock(InformationBox, _mergeProps({ key: 1 }, _ctx.informationBox, { class: \"mb-5\" }), null, 16))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"img\", {\n src: _ctx.icon.fileName,\n alt: _ctx.icon.alt,\n role: \"img\",\n class: _normalizeClass([\r\n 'mb-2',\r\n _ctx.icon.rounded === undefined || _ctx.icon.rounded ? 'rounded-full' : '',\r\n _ctx.icon.width ? `w-[${_ctx.icon.width}px]` : 'w-[80px]',\r\n _ctx.icon.height ? `h-[${_ctx.icon.height}px]` : 'h-[80px]',\r\n ])\n }, null, 10, _hoisted_3)\n ]),\n (_ctx.title)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"text-xl2-bold pb-1 text-center\",\n innerHTML: _ctx.title\n }, null, 8, _hoisted_4))\n : _createCommentVNode(\"\", true),\n (_ctx.subTitle)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: \"text-lg pb-5 text-center\",\n innerHTML: _ctx.subTitle\n }, null, 8, _hoisted_5))\n : _createCommentVNode(\"\", true),\n (_ctx.totalAmountSummary)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 2,\n class: \"text-xl3-bold pb-6 text-center\",\n innerHTML: _ctx.totalAmountSummary\n }, null, 8, _hoisted_6))\n : _createCommentVNode(\"\", true),\n (_ctx.policyOrReferenceNumber)\n ? (_openBlock(), _createElementBlock(\"span\", {\n key: 3,\n class: \"inline-flex items-center rounded-lg p-4 mb-2 text-m ring-1 ring-inset ring-gray-500/10\",\n innerHTML: _ctx.policyOrReferenceNumber\n }, null, 8, _hoisted_7))\n : _createCommentVNode(\"\", true),\n (_ctx.paymentReferenceNumber)\n ? (_openBlock(), _createElementBlock(\"span\", {\n key: 4,\n class: \"inline-flex items-center rounded-lg bg-racq-anti-flash-white p-4 mb-2 text-sm text-gray-600 ring-1 ring-inset ring-gray-500/10\",\n innerHTML: _ctx.paymentReferenceNumber\n }, null, 8, _hoisted_8))\n : _createCommentVNode(\"\", true),\n (_ctx.receiptNumber)\n ? (_openBlock(), _createElementBlock(\"span\", {\n key: 5,\n class: \"inline-flex items-center rounded-lg bg-racq-anti-flash-white px-5 py-2 mb-2 text-sm text-gray-600 ring-1 ring-inset ring-gray-500/10\",\n innerHTML: _ctx.receiptNumber\n }, null, 8, _hoisted_9))\n : _createCommentVNode(\"\", true)\n ]),\n _renderSlot(_ctx.$slots, \"information\"),\n _cache[0] || (_cache[0] = _createElementVNode(\"hr\", { class: \"bg-racq-white\" }, null, -1))\n ], 64))\n}\n}\n\n})","import script from \"./ConfirmationHeader.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./ConfirmationHeader.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { useModel as _useModel, mergeModels as _mergeModels, defineComponent as _defineComponent } from 'vue'\nimport { resolveComponent as _resolveComponent, mergeProps as _mergeProps, createVNode as _createVNode, normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = [\"id\"]\n\nimport { computed } from 'vue';\r\nimport { parse, isValid, addDays, compareAsc, isSameDay, subDays, subWeeks, subMonths, subYears } from 'date-fns';\r\nimport { flatMap } from 'lodash-es';\r\n\r\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'DateInput',\n props: /*@__PURE__*/_mergeModels({\n bindings: {},\n maxDateByDays: {},\n minDateToday: { type: Boolean },\n minDate: {},\n dateMustBefore: {},\n dateMustAfter: {}\n }, {\n \"modelValue\": { required: false, default: '' },\n \"modelModifiers\": {},\n }),\n emits: [\"update:modelValue\"],\n setup(__props: any) {\n\r\nconst dateValue = _useModel(__props, \"modelValue\");\r\n\r\nconst props = __props;\r\n\r\nconst validation = computed(() => {\r\n if (flatMap(props.bindings.validation || []).includes('dateValidator')) return props.bindings.validation;\r\n return [...(props.bindings.validation || []), [dateValidator]];\r\n});\r\n\r\nfunction onInput(target: any) {\r\n if (!target?.value || typeof target.value != 'string') return;\r\n target.value = target.value.replace(/[^0-9/]/g, '');\r\n\r\n // e.g 4 => 04/\r\n if (target.value.length == 1 && Number(target.value) > 3) {\r\n target.value = `0${target.value}/`;\r\n }\r\n // e.g 2/ => 02/\r\n if (target.value.length == 2 && target.value.includes('/')) {\r\n target.value = '0' + target.value;\r\n }\r\n // e.g 020 => 02/0\r\n if (target.value.length == 3 && !target.value.includes('/')) {\r\n target.value = target.value.slice(0, 2) + '/' + target.value[2];\r\n }\r\n // e.g 02/4 => 02/04/\r\n if (target.value.length == 4) {\r\n const month = Number(target.value.split('/')[1]);\r\n if (month > 1) target.value = target.value.split('/')[0] + '/' + `0${month}/`;\r\n }\r\n // e.g 02/1/ => 02/01/\r\n if (target.value.length == 5 && target.value.split('/').length == 3) {\r\n target.value = target.value.slice(0, 3) + '0' + target.value.slice(3, 5);\r\n }\r\n // e.g 02/032 => 02/03/2\r\n if (target.value.length == 6 && target.value.split('/').length != 3) {\r\n target.value = target.value.slice(0, 5) + '/' + target.value[5];\r\n }\r\n}\r\n\r\n// Pass to native\r\n(window as any).RACQLintDateInput = onInput;\r\n\r\nfunction dateValidator(node: any) {\r\n try {\r\n const date = parse(node.value, 'dd/MM/yyyy', new Date());\r\n\r\n if (!isValid(date) || node.value.length != 10) return false;\r\n\r\n // Validate for min date\r\n if (!validateMinDate(date)) return false;\r\n\r\n // Validate for max date\r\n if (!validateMaxDate(date)) return false;\r\n\r\n return true;\r\n } catch {\r\n return false;\r\n }\r\n}\r\n\r\nfunction validateMinDate(date: Date) {\r\n if (props.minDateToday) {\r\n const compareResult = compareAsc(date, new Date());\r\n if (!isSameDay(date, new Date()) && compareResult == -1) return false;\r\n }\r\n if (props.minDate) {\r\n const compareResult = compareAsc(date, new Date(props.minDate));\r\n if (compareResult == -1) return false;\r\n }\r\n if (props.dateMustAfter) {\r\n const minDate = calculateDate(props.dateMustAfter);\r\n const compareResult = compareAsc(date, minDate);\r\n if (compareResult == -1) return false;\r\n }\r\n return true;\r\n}\r\n\r\nfunction validateMaxDate(date: Date) {\r\n if (typeof props.maxDateByDays == 'number') {\r\n const maxDate = addDays(new Date(), props.maxDateByDays);\r\n const compareResult = compareAsc(date, maxDate);\r\n if (compareResult == 1) return false;\r\n }\r\n if (props.dateMustBefore) {\r\n const maxDate = calculateDate(props.dateMustBefore);\r\n const compareResult = compareAsc(date, maxDate);\r\n if (compareResult == 1) return false;\r\n }\r\n return true;\r\n}\r\n\r\n/**\r\n * @param limit e.g 8 weeks\r\n * @param date\r\n */\r\nfunction calculateDate(limit: string, date: Date = new Date()): Date {\r\n const value = limit.split(' ')[0]; // 8\r\n const unit = limit.split(' ')[1]; // weeks\r\n switch (unit) {\r\n case 'days':\r\n return subDays(date, Number(value));\r\n case 'weeks':\r\n return subWeeks(date, Number(value));\r\n case 'months':\r\n return subMonths(date, Number(value));\r\n case 'years':\r\n return subYears(date, Number(value));\r\n default:\r\n return date;\r\n }\r\n}\r\n\nreturn (_ctx: any,_cache: any) => {\n const _component_FormKit = _resolveComponent(\"FormKit\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n id: _ctx.bindings.id + '__outer',\n class: _normalizeClass([_ctx.bindings.outerClass, \"md:width-sm w-full\"])\n }, [\n _createVNode(_component_FormKit, _mergeProps(_ctx.bindings, {\n modelValue: dateValue.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((dateValue).value = $event)),\n type: \"text\",\n innerClass: _ctx.bindings.innerClass || 'input-sm',\n validation: validation.value,\n oninput: \"window.RACQLintDateInput(this)\",\n maxlength: \"10\",\n validationRules: { dateValidator: dateValidator }\n }), null, 16, [\"modelValue\", \"innerClass\", \"validation\", \"validationRules\"])\n ], 10, _hoisted_1))\n}\n}\n\n})","\r\n\r\n\r\n","import script from \"./DateInput.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./DateInput.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { useModel as _useModel, mergeModels as _mergeModels, defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, normalizeClass as _normalizeClass, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createVNode as _createVNode, mergeProps as _mergeProps, withCtx as _withCtx, createSlots as _createSlots, createElementBlock as _createElementBlock } from \"vue\"\n\nimport { computed } from 'vue';\r\nimport { RichText } from '@sitecore-jss/sitecore-jss-vue';\r\nimport { FormKit } from '@formkit/vue';\r\nimport { STANDARD_DATE_FORMAT } from '@/constants/formats';\r\nimport { format } from 'date-fns';\r\nimport type { VueFormInputProps } from '@/composables/useFormInputData';\r\nimport BaseIcon from '@/components/BaseIcon/BaseIcon.vue';\r\n\r\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'DatePicker',\n props: /*@__PURE__*/_mergeModels({\n bindings: {},\n minDateToday: { type: Boolean },\n maxDateByDays: {},\n testDate: {}\n }, {\n \"modelValue\": { required: false, default: new Date() },\n \"modelModifiers\": {},\n }),\n emits: [\"update:modelValue\"],\n setup(__props: any) {\n\r\nconst props = __props;\r\n\r\nlet minDate: Date | null = null;\r\nlet maxDate: Date | null = null;\r\n\r\nif (props.maxDateByDays) {\r\n maxDate = props.testDate ? new Date(props.testDate.getTime()) : new Date();\r\n maxDate.setDate(maxDate.getDate() + props.maxDateByDays);\r\n}\r\n\r\nif (props.minDateToday) {\r\n minDate = props.testDate ? new Date(props.testDate.getTime()) : new Date();\r\n minDate.setHours(0, 0, 0, 0);\r\n}\r\n\r\nconst model = _useModel(__props, \"modelValue\");\r\n\r\nconst extendedBindings = computed(() => {\r\n return {\r\n ...props.bindings,\r\n minDate,\r\n maxDate,\r\n };\r\n});\r\n\r\nconst helpTextTokenReplaced = computed(() => {\r\n if (maxDate) {\r\n return props.bindings.helpSm?.replace('{maxDate}', format(maxDate, STANDARD_DATE_FORMAT));\r\n }\r\n return props.bindings.helpSm;\r\n});\r\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass(_ctx.bindings.outerClass)\n }, [\n (_ctx.bindings.preContent)\n ? (_openBlock(), _createBlock(_unref(RichText), {\n key: 0,\n class: _normalizeClass(_ctx.bindings.preContentClass),\n field: { value: _ctx.bindings.preContent }\n }, null, 8, [\"class\", \"field\"]))\n : _createCommentVNode(\"\", true),\n _createVNode(_unref(FormKit), _mergeProps(extendedBindings.value, {\n modelValue: model.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((model).value = $event)),\n innerClass: _ctx.bindings.innerClass || 'input-sm'\n }), _createSlots({\n prevIcon: _withCtx(() => [\n _createVNode(BaseIcon, { iconClass: \"bg-datepicker-prev-icon\" })\n ]),\n nextIcon: _withCtx(() => [\n _createVNode(BaseIcon, { iconClass: \"bg-datepicker-next-icon\" })\n ]),\n calendarIcon: _withCtx(() => [\n _createVNode(BaseIcon, { iconClass: \"bg-datepicker-calendar-icon\" })\n ]),\n _: 2\n }, [\n (_ctx.bindings.suffixIcon)\n ? {\n name: \"suffixIcon\",\n fn: _withCtx((context) => [\n _createVNode(_unref(RichText), {\n field: { value: context.suffixIcon ?? '' }\n }, null, 8, [\"field\"])\n ]),\n key: \"0\"\n }\n : undefined\n ]), 1040, [\"modelValue\", \"innerClass\"]),\n _createVNode(_unref(RichText), {\n class: \"formkit-help text-sm text-racq-dark-grey mt-4\",\n field: { value: helpTextTokenReplaced.value }\n }, null, 8, [\"field\"]),\n (_ctx.bindings.postContent && _ctx.bindings.showPostContent)\n ? (_openBlock(), _createBlock(_unref(RichText), {\n key: 1,\n class: _normalizeClass(_ctx.bindings.postContentClass),\n field: { value: _ctx.bindings.postContent }\n }, null, 8, [\"class\", \"field\"]))\n : _createCommentVNode(\"\", true)\n ], 2))\n}\n}\n\n})","\r\n\r\n\r\n","import script from \"./DatePicker.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./DatePicker.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createVNode as _createVNode, normalizeClass as _normalizeClass } from \"vue\"\n\nconst _hoisted_1 = {\n key: 0,\n class: \"flex flex-col w-full justify-between gap-4 mt-9 mb-10\"\n}\nconst _hoisted_2 = { class: \"text-xl text-base-bold\" }\nconst _hoisted_3 = {\n key: 0,\n class: \"flex p-2 gap-1 items-center\"\n}\nconst _hoisted_4 = [\"src\"]\nconst _hoisted_5 = { class: \"bg-white\" }\nconst _hoisted_6 = { class: \"flex flex-col gap-6\" }\nconst _hoisted_7 = { class: \"flex flex-row md:items-start items-center gap-4\" }\nconst _hoisted_8 = [\"src\"]\nconst _hoisted_9 = { class: \"text-xl-bold\" }\nconst _hoisted_10 = { class: \"text-racq-med-grey p-0 ms-4 list-disc\" }\nconst _hoisted_11 = { class: \"flex gap-4 sm:flex-col md:flex-row\" }\nconst _hoisted_12 = [\"onClick\"]\nconst _hoisted_13 = {\n key: 1,\n class: \"mt-5\"\n}\n\nimport { onMounted, ref } from 'vue';\r\nimport {\r\n IAction,\r\n IDecisionIntelligenceOfferResponse,\r\n IProposition,\r\n IStep,\r\n} from '@/interfaces/decision-intelligence/decision-intelligence-response';\r\nimport { useDecisionIntelligenceStore } from '@/store/decision-intelligence/decision-intelligence.state';\r\nimport { RichText } from '@sitecore-jss/sitecore-jss-vue';\r\nimport { IQuote } from '@/interfaces';\r\nimport { Outcome } from '@/interfaces/decision-intelligence/decision-intelligence-request';\r\nimport DecisionIntelligenceLeadForm from '@/components/DecisionIntelligenceLeadForm/DecisionIntelligenceLeadForm.vue';\r\nimport { mapDecisionOfferAcknowledge } from '@/mappers/decision-intelligence-mapper';\r\nimport { IPaymentReferenceDetails } from '@/interfaces/make-a-payment/make-a-payment.interface';\r\nimport InformationBox from '../InformationBox/InformationBox.vue';\r\nimport { InformationBoxTypes } from '@/interfaces/forms/information-box.interface';\r\n\r\n// Define props and emitters\r\n// ------------------------------------------------------------- //\r\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'DecisionIntelligenceCrossSellOffers',\n props: {\n decisionOffer: {},\n stepTitle: {},\n quote: {},\n paymentReferenceDetails: {}\n },\n setup(__props: any) {\n\r\nconst props = __props;\r\n\r\n// Lifecycle hooks\r\n// ------------------------------------------------------------- //\r\nonMounted(async () => {\r\n if (props.quote || props.paymentReferenceDetails) {\r\n await DecisionIntelligenceStore.acknowlegeDecisionOffer(\r\n props.decisionOffer?.id ?? '',\r\n mapDecisionOfferAcknowledge(Outcome.Surfaced, props.quote, props.paymentReferenceDetails)\r\n );\r\n }\r\n});\r\n\r\n// Define Component state\r\n// ------------------------------------------------------------- //\r\nconst showLeadForm = ref([false, false]);\r\nconst isEmail = ref(false);\r\nconst currentAction = ref({} as IAction);\r\nconst DecisionIntelligenceStore = useDecisionIntelligenceStore();\r\n\r\nconst iconMap = {\r\n startIcon: require('@/assets/img/icons/star-icon.svg'),\r\n};\r\n\r\n// Define Functions\r\n// ------------------------------------------------------------- //\r\nconst getFilterStep = (proposition: IProposition): IStep => {\r\n return proposition.displaySteps.filter((x) => x.stepName == props.stepTitle)[0];\r\n};\r\nconst executeAction = (decisionId: string, action: IAction, proposition: IProposition, key: number) => {\r\n currentAction.value = action;\r\n if (action.actionType == 'Contact') {\r\n showLeadForm.value[key] = true;\r\n isEmail.value = false;\r\n }\r\n if (action.actionType == 'Email') {\r\n showLeadForm.value[key] = true;\r\n isEmail.value = true;\r\n }\r\n if (action.actionType == 'DigitalForm' || action.actionType == 'WebLink') {\r\n DecisionIntelligenceStore.acknowlegeDecisionOffer(\r\n decisionId,\r\n mapDecisionOfferAcknowledge(Outcome.Redirect, props.quote, props.paymentReferenceDetails, proposition, action)\r\n );\r\n if (!(action.linkUrl.indexOf('http://') === 0 || action.linkUrl.indexOf('https://') === 0)) {\r\n action.linkUrl = `https://www.racq.com.au${action.linkUrl}`; //have to do this because domain for vue forms is different than racq.com.au\r\n }\r\n const actionUrl =\r\n action.actionType == 'DigitalForm'\r\n ? `?crosssellquotereference=${props.quote ? props.quote.reference : props.paymentReferenceDetails?.prn}&propositionId=${proposition.id}`\r\n : '';\r\n const linkUrl = `${action.linkUrl}${actionUrl}`;\r\n window.open(linkUrl, '_blank');\r\n }\r\n};\r\n\nreturn (_ctx: any,_cache: any) => {\n return (_ctx.decisionOffer?.propositions != null && _ctx.decisionOffer?.propositions.length)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"h3\", _hoisted_2, _toDisplayString(_unref(DecisionIntelligenceStore).contentFields?.crossSellSubHeading.value), 1),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.decisionOffer.propositions, (proposition, index) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n key: index,\n class: _normalizeClass(proposition.incentivised ? 'bg-racq-blue rounded border-2 border-solid border-racq-white border-t-0\t' : '')\n }, [\n (proposition.incentivised)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", null, [\n _createElementVNode(\"img\", {\n src: iconMap.startIcon,\n alt: \"star\"\n }, null, 8, _hoisted_4)\n ]),\n (proposition.incentivised)\n ? (_openBlock(), _createBlock(_unref(RichText), {\n key: 0,\n class: \"text-xs-bold text-racq-true-white\",\n field: _unref(DecisionIntelligenceStore).contentFields?.exclusiveHeading\n }, null, 8, [\"field\"]))\n : _createCommentVNode(\"\", true)\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_5, [\n _createElementVNode(\"div\", {\n class: _normalizeClass(\r\n proposition.incentivised\r\n ? 'p-8 shadow-md sm:flex-col md:flex-row'\r\n : 'p-8 rounded border border-solid border-racq-white shadow-md sm:flex-col md:flex-row'\r\n )\n }, [\n _createElementVNode(\"div\", _hoisted_6, [\n _createElementVNode(\"div\", _hoisted_7, [\n _createElementVNode(\"div\", null, [\n _createElementVNode(\"img\", {\n class: \"max-w-none\",\n width: \"40\",\n src: getFilterStep(proposition).imageUrl,\n alt: \"offer image\"\n }, null, 8, _hoisted_8)\n ]),\n _createElementVNode(\"h3\", _hoisted_9, [\n _createVNode(_unref(RichText), {\n class: \"-right-3\",\n field: { value: getFilterStep(proposition).headerText }\n }, null, 8, [\"field\"])\n ])\n ]),\n _createElementVNode(\"ul\", _hoisted_10, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(getFilterStep(proposition).crossSellOfferContent.benefitList, (benefit, key) => {\n return (_openBlock(), _createElementBlock(\"li\", { key: key }, [\n _createVNode(_unref(RichText), {\n class: \"text-base\",\n field: { value: benefit.benefitText }\n }, null, 8, [\"field\"])\n ]))\n }), 128))\n ]),\n (proposition.incentivised)\n ? (_openBlock(), _createBlock(InformationBox, {\n key: 0,\n type: _unref(InformationBoxTypes).INFO,\n hideIcon: true,\n description: getFilterStep(proposition).crossSellOfferContent.incentiveMessageText\n }, null, 8, [\"type\", \"description\"]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_11, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(getFilterStep(proposition).crossSellOfferContent.actionList, (action, key) => {\n return (_openBlock(), _createElementBlock(\"button\", {\n key: key,\n type: \"button\",\n class: _normalizeClass(\r\n key > 0\r\n ? 'btn btn-secondary btn-md btn-no-caret font-sans'\r\n : 'btn btn-primary btn-md btn-no-caret font-sans'\r\n ),\n onClick: \r\n (e) => {\r\n e.preventDefault();\r\n executeAction(_ctx.decisionOffer?.id ? _ctx.decisionOffer?.id : '', action, proposition, index);\r\n }\r\n \n }, _toDisplayString(action.actionText), 11, _hoisted_12))\n }), 128))\n ]),\n (showLeadForm.value[index])\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_13, [\n _createVNode(DecisionIntelligenceLeadForm, {\n proposition: proposition,\n decisionId: _ctx.decisionOffer.id,\n quote: props.quote,\n paymentReferenceDetails: _ctx.paymentReferenceDetails,\n currentAction: currentAction.value,\n isEmail: isEmail.value\n }, null, 8, [\"proposition\", \"decisionId\", \"quote\", \"paymentReferenceDetails\", \"currentAction\", \"isEmail\"])\n ]))\n : _createCommentVNode(\"\", true)\n ])\n ], 2)\n ])\n ], 2))\n }), 128))\n ]))\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","\r\n\r\n","import script from \"./DecisionIntelligenceCrossSellOffers.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./DecisionIntelligenceCrossSellOffers.vue?vue&type=script&lang=ts&setup=true\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode, withCtx as _withCtx } from \"vue\"\n\nconst _hoisted_1 = { class: \"my-4\" }\nconst _hoisted_2 = {\n key: 1,\n class: \"flex gap-4 mb-3.5 p-5 bg-racq-alert-success\"\n}\nconst _hoisted_3 = [\"src\"]\nconst _hoisted_4 = { class: \"flex gap-4 items-center\" }\n\nimport { ref } from 'vue';\r\nimport { IAction, IProposition } from '@/interfaces/decision-intelligence/decision-intelligence-response';\r\nimport { FormKit } from '@formkit/vue';\r\nimport { useDecisionIntelligenceStore } from '@/store/decision-intelligence/decision-intelligence.state';\r\nimport { RichText } from '@sitecore-jss/sitecore-jss-vue';\r\nimport { IDropdownItem, IQuote } from '@/interfaces';\r\nimport { Outcome } from '@/interfaces/decision-intelligence/decision-intelligence-request';\r\nimport { ICreateLeadResponseModel } from '@/interfaces/lead/lead-model';\r\nimport { mapCreateLeadRequest, mapDecisionOfferAcknowledge } from '@/mappers/decision-intelligence-mapper';\r\nimport { IPaymentReferenceDetails } from '@/interfaces/make-a-payment/make-a-payment.interface';\r\n\r\n// Define props and emitters\r\n// ------------------------------------------------------------- //\r\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'DecisionIntelligenceLeadForm',\n props: {\n quote: {},\n paymentReferenceDetails: {},\n isEmail: { type: Boolean },\n currentAction: {},\n proposition: {},\n decisionId: {}\n },\n setup(__props: any) {\n\r\nconst props = __props;\r\n\r\n// Define Component state\r\n// ------------------------------------------------------------- //\r\nconst showSuccess = ref(false);\r\nconst showError = ref(false);\r\nconst isSubmitting = ref(false);\r\nconst DecisionIntelligenceStore = useDecisionIntelligenceStore();\r\n\r\nconst iconMap = {\r\n successIcon: require('@/assets/img/icons/racq-success-icon.svg'),\r\n};\r\n\r\n// Define Functions\r\n// ------------------------------------------------------------- //\r\nconst getEmailOptions = (): IDropdownItem[] => {\r\n return DecisionIntelligenceStore.getEmailOptionsDropDown();\r\n};\r\nconst getContactOptions = (): IDropdownItem[] => {\r\n return DecisionIntelligenceStore.getContactOptionsDropDown();\r\n};\r\nconst handleSubmit = async (value: any) => {\r\n try {\r\n isSubmitting.value = true;\r\n const leadRequest = mapCreateLeadRequest(props.currentAction, value.option);\r\n const response = (await DecisionIntelligenceStore.createLead(\r\n props.quote\r\n ? (props.quote.primaryPolicyHolderDetails?.partyId.value ?? '')\r\n : (props.paymentReferenceDetails?.partyReferences?.d365Id ?? ''),\r\n leadRequest\r\n )) as ICreateLeadResponseModel;\r\n if (props.decisionId) {\r\n if (response?.leadId) {\r\n const ackRequest = mapDecisionOfferAcknowledge(\r\n Outcome.LeadCaptured,\r\n props.quote,\r\n props.paymentReferenceDetails,\r\n props.proposition,\r\n props.currentAction,\r\n response.leadId\r\n );\r\n await DecisionIntelligenceStore.acknowlegeDecisionOffer(props.decisionId, ackRequest);\r\n } else {\r\n const ackRequest = mapDecisionOfferAcknowledge(\r\n Outcome.LeadFailed,\r\n props.quote,\r\n props.paymentReferenceDetails,\r\n props.proposition,\r\n props.currentAction\r\n );\r\n await DecisionIntelligenceStore.acknowlegeDecisionOffer(props.decisionId, ackRequest);\r\n }\r\n }\r\n isSubmitting.value = false;\r\n showSuccess.value = true;\r\n showError.value = false;\r\n } catch (error) {\r\n console.error('error creating lead', error);\r\n showError.value = true;\r\n showSuccess.value = false;\r\n isSubmitting.value = false;\r\n }\r\n};\r\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(_unref(FormKit), {\n type: \"form\",\n actions: false,\n onSubmit: handleSubmit\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"p\", null, [\n _createVNode(_unref(RichText), {\n class: \"text-base\",\n field: \r\n _ctx.isEmail\r\n ? _unref(DecisionIntelligenceStore).contentFields?.emailInstructionText\r\n : _unref(DecisionIntelligenceStore).contentFields?.contactInstructionText\r\n \n }, null, 8, [\"field\"])\n ]),\n _createElementVNode(\"div\", _hoisted_1, [\n _createVNode(_unref(FormKit), {\n class: \"my-4\",\n type: \"dropdown\",\n name: \"option\",\n \"data-testid\": \"selecttime\",\n innerClass: \"input-md\",\n label: \"Time for email\",\n placeholder: \"Select a time\",\n options: _ctx.isEmail ? getEmailOptions() : getContactOptions(),\n value: null,\n validation: \"required\",\n popover: \"\"\n }, null, 8, [\"options\"])\n ]),\n (showError.value)\n ? (_openBlock(), _createBlock(_unref(RichText), {\n key: 0,\n class: \"text-racq-red my-2\",\n field: _unref(DecisionIntelligenceStore).contentFields?.emailErrorText\n }, null, 8, [\"field\"]))\n : _createCommentVNode(\"\", true),\n (showSuccess.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n _createElementVNode(\"img\", {\n src: iconMap.successIcon,\n alt: \"success icon\"\n }, null, 8, _hoisted_3),\n _createVNode(_unref(RichText), {\n class: \"text-racq-true-white\",\n field: _unref(DecisionIntelligenceStore).contentFields?.emailSuccessText\n }, null, 8, [\"field\"])\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_4, [\n _createVNode(_unref(FormKit), {\n type: \"submit\",\n loading: isSubmitting.value,\n \"data-testid\": \"submit-lead\",\n inputClass: \"btn btn-md btn-primary\"\n }, {\n default: _withCtx(() => _cache[0] || (_cache[0] = [\n _createTextVNode(\" Submit \")\n ])),\n _: 1\n }, 8, [\"loading\"])\n ])\n ]),\n _: 1\n }))\n}\n}\n\n})","\r\n\r\n","import script from \"./DecisionIntelligenceLeadForm.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./DecisionIntelligenceLeadForm.vue?vue&type=script&lang=ts&setup=true\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, unref as _unref, createVNode as _createVNode, normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode } from \"vue\"\n\nconst _hoisted_1 = {\n key: 0,\n class: \"flex flex-col gap-4 basis-full mt-8 mb-10\"\n}\nconst _hoisted_2 = { class: \"flex flex-col gap-2.5 px-6 pb-5 pt-3 basis-full rounded-md border-solid border-2 border-racq-white\" }\nconst _hoisted_3 = { class: \"flex gap-4 rounded\" }\nconst _hoisted_4 = { class: \"flex flex-col justify-center basis-9 shrink-0\" }\nconst _hoisted_5 = [\"src\"]\nconst _hoisted_6 = { class: \"flex flex-col justify-center ml-auto payment-confirmation__proposition-expander\" }\nconst _hoisted_7 = { key: 0 }\n\nimport { ref } from 'vue';\r\nimport {\r\n IDecisionIntelligenceOfferResponse,\r\n IStep,\r\n} from '@/interfaces/decision-intelligence/decision-intelligence-response';\r\nimport { RichText } from '@sitecore-jss/sitecore-jss-vue';\r\nimport ShowHideButton from '../ShowHideButton/ShowHideButton.vue';\r\n// Define props and emitters\r\n// ------------------------------------------------------------- //\r\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'DecisionIntelligenceOfferReminder',\n props: {\n decisionOffer: {},\n stepTitle: {},\n isRenewal: { type: Boolean },\n isQuote: { type: Boolean },\n isCrossSell: { type: Boolean },\n expandedByDefault: { type: Boolean }\n },\n setup(__props: any) {\n\r\nconst props = __props;\r\n\r\nconst iconMap = {\r\n chevronIcon: require('@/assets/img/icons/icon-nav-chevron-navy.svg'),\r\n};\r\n// Define Component state\r\n// ------------------------------------------------------------- //\r\n\r\nconst expanded = ref(props.expandedByDefault);\r\n\r\n// Define Functions\r\n// ------------------------------------------------------------- //\r\n\r\nconst toggleExpand = () => {\r\n expanded.value = !expanded.value;\r\n};\r\n\r\nconst getFilterStep = (): IStep => {\r\n const proposition = props.decisionOffer?.propositions?.filter((x) => x.incentivised)[0];\r\n return (\r\n proposition?.displaySteps?.filter(\r\n (x) =>\r\n x.stepName == props.stepTitle &&\r\n x.journey == (props.isRenewal ? 'Make a payment' : props.isQuote ? 'Quote' : 'Purchase') &&\r\n x.isCrossSell == props.isCrossSell\r\n )[0] ?? ({} as IStep)\r\n );\r\n};\r\n\nreturn (_ctx: any,_cache: any) => {\n return (_ctx.decisionOffer?.propositions?.filter((x) => x.incentivised)?.length)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"img\", {\n src: getFilterStep().imageUrl,\n Width: \"40\",\n Height: \"30\",\n alt: \"offer image\",\n class: \"max-w-none h-7\"\n }, null, 8, _hoisted_5)\n ]),\n _createElementVNode(\"div\", {\n class: _normalizeClass(expanded.value ? 'text-racq-blue font-bold text-base-bold pt-1.5' : 'text-base-bold pt-1.5')\n }, [\n _createVNode(_unref(RichText), {\n field: { value: getFilterStep().headerText }\n }, null, 8, [\"field\"])\n ], 2),\n _createElementVNode(\"div\", _hoisted_6, [\n _createVNode(ShowHideButton, {\n showMore: expanded.value,\n hideLabel: true,\n appendClass: \"!mt-0\",\n onClick: toggleExpand\n }, null, 8, [\"showMore\"])\n ])\n ]),\n (expanded.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7, [\n _createElementVNode(\"div\", null, [\n _createVNode(_unref(RichText), {\n class: \"text-base\",\n field: { value: getFilterStep().messageText }\n }, null, 8, [\"field\"])\n ])\n ]))\n : _createCommentVNode(\"\", true)\n ])\n ]))\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","\r\n\r\n","import script from \"./DecisionIntelligenceOfferReminder.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./DecisionIntelligenceOfferReminder.vue?vue&type=script&lang=ts&setup=true\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, unref as _unref, createVNode as _createVNode, createElementVNode as _createElementVNode, createCommentVNode as _createCommentVNode } from \"vue\"\n\nconst _hoisted_1 = {\n key: 0,\n class: \"flex gap-4 md:flex-row sm:flex-col text-dark-grey-text\"\n}\nconst _hoisted_2 = {\n key: 0,\n class: \"flex gap-12 sm:gap-6\"\n}\nconst _hoisted_3 = { class: \"w-full\" }\nconst _hoisted_4 = { class: \"text-sm py-0 mb-0\" }\nconst _hoisted_5 = [\"src\"]\n\nimport {\r\n IDecisionIntelligenceOfferResponse,\r\n IProposition,\r\n IStep,\r\n} from '@/interfaces/decision-intelligence/decision-intelligence-response';\r\nimport { RichText } from '@sitecore-jss/sitecore-jss-vue';\r\n\r\n// Define props and emitters\r\n// ------------------------------------------------------------- //\r\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'DecisionIntelligenceOffers',\n props: {\n decisionOffer: {},\n stepTitle: {}\n },\n setup(__props: any) {\n\r\nconst props = __props;\r\n\r\n// Define Functions\r\n// ------------------------------------------------------------- //\r\nconst getFilterStep = (proposition: IProposition): IStep => {\r\n return proposition.displaySteps.filter((x) => x.stepName.toLowerCase() == props.stepTitle?.toLowerCase())[0];\r\n};\r\n\nreturn (_ctx: any,_cache: any) => {\n return (_ctx.decisionOffer?.propositions != null && _ctx.decisionOffer?.propositions.length)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.decisionOffer.propositions, (proposition, key) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n key: key,\n class: \"flex-1 px-8 py-4 border-solid border-2 shadow-md border-racq-white rounded\"\n }, [\n (getFilterStep(proposition))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(_unref(RichText), {\n class: \"mb-4 text-base-bold\",\n field: { value: getFilterStep(proposition).headerText }\n }, null, 8, [\"field\"]),\n _createElementVNode(\"p\", _hoisted_4, [\n _createVNode(_unref(RichText), {\n field: { value: getFilterStep(proposition).messageText }\n }, null, 8, [\"field\"])\n ])\n ]),\n _createElementVNode(\"img\", {\n src: getFilterStep(proposition).imageUrl,\n class: \"h-16 w-16\",\n alt: \"offer image\"\n }, null, 8, _hoisted_5)\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n }), 128))\n ]))\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","\r\n\r\n","import script from \"./DecisionIntelligenceOffers.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./DecisionIntelligenceOffers.vue?vue&type=script&lang=ts&setup=true\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, unref as _unref, createVNode as _createVNode, createCommentVNode as _createCommentVNode } from \"vue\"\n\nconst _hoisted_1 = { class: \"flex flex-col gap-8 md:gap-6 md:mb-10\" }\nconst _hoisted_2 = {\n key: 0,\n class: \"text-racq-dark-grey text-xl-bold md:text-xl-bold mb-5\"\n}\nconst _hoisted_3 = {\n key: 1,\n class: \"text-racq-dark-grey text-lg-bold mb-2\"\n}\nconst _hoisted_4 = {\n key: 2,\n class: \"text-paragraph-color richtext\"\n}\nconst _hoisted_5 = {\n key: 3,\n class: \"mt-8 md:mt-6\"\n}\nconst _hoisted_6 = {\n key: 4,\n class: \"border-b border-solid border-racq-pale-blue-border mt-10 md:mt-8 mb-2\"\n}\n\nimport { Text, RichText } from '@sitecore-jss/sitecore-jss-vue';\r\nimport InformationBox from '@/components/InformationBox/InformationBox.vue';\r\nimport { InformationBoxTypes } from '@/interfaces/forms/information-box.interface';\r\n\r\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'Disclaimer',\n props: {\n bindings: {}\n },\n setup(__props: any) {\n\r\n\r\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.bindings.sections, (section, index) => {\n return (_openBlock(), _createElementBlock(\"div\", { key: index }, [\n (section.fields?.ContentHeading?.value)\n ? (_openBlock(), _createElementBlock(\"h3\", _hoisted_2, [\n _createVNode(_unref(Text), {\n field: section.fields.ContentHeading\n }, null, 8, [\"field\"])\n ]))\n : _createCommentVNode(\"\", true),\n (section.fields?.ContentSubheading?.value)\n ? (_openBlock(), _createElementBlock(\"h4\", _hoisted_3, [\n _createVNode(_unref(Text), {\n field: section.fields.ContentSubheading\n }, null, 8, [\"field\"])\n ]))\n : _createCommentVNode(\"\", true),\n (section.fields?.ContentBody?.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [\n _createVNode(_unref(RichText), {\n field: section.fields.ContentBody\n }, null, 8, [\"field\"])\n ]))\n : _createCommentVNode(\"\", true),\n (section.fields?.InfoText?.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_5, [\n _createVNode(InformationBox, {\n description: section.fields?.InfoText?.value,\n type: _unref(InformationBoxTypes).INFO\n }, null, 8, [\"description\", \"type\"])\n ]))\n : _createCommentVNode(\"\", true),\n (section.fields?.IsBottomBorder?.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_6))\n : _createCommentVNode(\"\", true)\n ]))\n }), 128))\n ]))\n}\n}\n\n})","import script from \"./Disclaimer.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./Disclaimer.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, renderSlot as _renderSlot, normalizeClass as _normalizeClass, vShow as _vShow, withDirectives as _withDirectives } from \"vue\"\n\nconst _hoisted_1 = { key: 0 }\n\nimport { computed } from 'vue';\r\nimport { toCurrency } from '@/utils/convert';\r\n\r\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'DollarAmount',\n props: {\n amount: {},\n showStarSign: { type: Boolean },\n innerClass: {},\n outerClass: {}\n },\n setup(__props: any) {\n\r\nconst props = __props;\r\n\r\nconst formattedAmount = computed(() => {\r\n try {\r\n if (!props.amount) return { amount: '', decimal: '' };\r\n const val = toCurrency(props.amount);\r\n return {\r\n amount: val.slice(1, val.lastIndexOf('.')),\r\n decimal: val.slice(val.lastIndexOf('.') + 1),\r\n };\r\n } catch (error) {\r\n return { amount: '', decimal: '' };\r\n }\r\n});\r\n\nreturn (_ctx: any,_cache: any) => {\n return _withDirectives((_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([_ctx.outerClass ?? 'font-sans'])\n }, [\n _createElementVNode(\"h1\", {\n class: _normalizeClass([_ctx.innerClass ? `${_ctx.innerClass} mb-1` : 'text-racq-dark-grey text-xl3 !font-medium mb-1'])\n }, [\n _createElementVNode(\"span\", null, \"$\" + _toDisplayString(formattedAmount.value.amount) + \".\" + _toDisplayString(formattedAmount.value.decimal), 1),\n (_ctx.showStarSign)\n ? (_openBlock(), _createElementBlock(\"sup\", _hoisted_1, \"*\"))\n : _createCommentVNode(\"\", true),\n _renderSlot(_ctx.$slots, \"default\")\n ], 2)\n ], 2)), [\n [_vShow, formattedAmount.value.amount && formattedAmount.value.decimal]\n ])\n}\n}\n\n})","\r\n\r\n\r\n","import script from \"./DollarAmount.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./DollarAmount.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { useModel as _useModel, mergeModels as _mergeModels, defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createVNode as _createVNode, resolveComponent as _resolveComponent, createElementVNode as _createElementVNode, withCtx as _withCtx, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"flex flex-col gap-4\" }\nconst _hoisted_2 = { class: \"px-5 md:px-8 pt-5 md:pt-6 pb-8 bg-racq-anti-flash-white border border-solid border-racq-white shadow-md rounded\" }\nconst _hoisted_3 = { class: \"flex flex-col gap-4 md:gap-5\" }\nconst _hoisted_4 = { class: \"flex gap-5 flex-col md:flex-row\" }\n\nimport { RichText } from '@sitecore-jss/sitecore-jss-vue';\r\nimport RACQFormKit from '../RACQFormKit/RACQFormKit.vue';\r\nimport Alert from '../Alert/Alert.vue';\r\nimport { IAlert } from '@/interfaces/forms/alert-interface';\r\nimport { AlertTypes } from '@/enums/alert-types-enum';\r\nimport { computed } from 'vue';\r\n\r\n// Define props and emitters\r\n// ------------------------------------------------------------- //\r\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'SendEmailConfirmation',\n props: /*@__PURE__*/_mergeModels({\n bindings: {},\n emailHeading: {},\n emailButtonText: {},\n successText: {},\n errorText: {},\n isLoading: { type: Boolean },\n isSuccess: { type: Boolean },\n showAlert: { type: Boolean }\n }, {\n \"\": {},\n \"Modifiers\": {},\n }),\n emits: /*@__PURE__*/_mergeModels(['sendEmailFired'], [\"update:\"]),\n setup(__props: any, { emit: __emit }) {\n\r\nconst props = __props;\r\n\r\nconst emailAddress = _useModel(__props, '');\r\n\r\nconst emit = __emit;\r\n\r\n// Define Component state\r\n// ------------------------------------------------------------- //\r\nconst alert = computed(() => {\r\n return {\r\n showIcon: true,\r\n alertType: props.isSuccess ? AlertTypes.success : AlertTypes.danger,\r\n text: props.isSuccess ? props.successText.value : props.errorText.value,\r\n } as IAlert;\r\n});\r\n// Define Functions\r\n// ------------------------------------------------------------- //\r\n\r\nconst emailSendClick = (values: any) => {\r\n emit('sendEmailFired', values);\r\n};\r\n\nreturn (_ctx: any,_cache: any) => {\n const _component_FormKit = _resolveComponent(\"FormKit\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_ctx.emailHeading)\n ? (_openBlock(), _createBlock(_unref(RichText), {\n key: 0,\n field: _ctx.emailHeading,\n class: \"text-lg-bold text-racq-dark-grey\"\n }, null, 8, [\"field\"]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(_component_FormKit, {\n type: \"form\",\n actions: false,\n onSubmit: emailSendClick\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", _hoisted_4, [\n _createVNode(RACQFormKit, {\n modelValue: emailAddress.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((emailAddress).value = $event)),\n bindings: _ctx.bindings\n }, null, 8, [\"modelValue\", \"bindings\"]),\n _createElementVNode(\"div\", null, [\n _createVNode(_component_FormKit, {\n type: \"submit\",\n loading: _ctx.isLoading,\n disabled: _ctx.isLoading,\n inputClass: `btn btn-md btn-secondary md:mt-7 w-full md:w-auto`,\n label: _ctx.emailButtonText.value\n }, null, 8, [\"loading\", \"disabled\", \"label\"])\n ])\n ]),\n (alert.value && _ctx.showAlert)\n ? (_openBlock(), _createBlock(Alert, {\n key: 0,\n alert: alert.value\n }, null, 8, [\"alert\"]))\n : _createCommentVNode(\"\", true)\n ])\n ]),\n _: 1\n })\n ])\n ]))\n}\n}\n\n})","\r\n\r\n","import script from \"./SendEmailConfirmation.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./SendEmailConfirmation.vue?vue&type=script&lang=ts&setup=true\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { renderSlot as _renderSlot, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { key: 1 }\n\nimport { ref } from 'vue';\r\nimport ShowHideButton from '../ShowHideButton/ShowHideButton.vue';\r\n\r\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'ExpandableContent',\n props: {\n toggleButtonExpandText: {},\n toggleButtonCollapseText: {},\n dynamicExpander: { type: Boolean }\n },\n setup(__props: any) {\n\r\n\r\n\r\nconst expanded = ref(false);\r\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", null, [\n _renderSlot(_ctx.$slots, \"introContent\"),\n ((_ctx.dynamicExpander && !expanded.value) || !_ctx.dynamicExpander)\n ? (_openBlock(), _createBlock(ShowHideButton, {\n key: 0,\n showMore: expanded.value,\n showMoreLabel: _ctx.toggleButtonExpandText,\n showLessLabel: _ctx.toggleButtonCollapseText,\n onClick: _cache[0] || (_cache[0] = ($event: any) => (expanded.value = !expanded.value))\n }, null, 8, [\"showMore\", \"showMoreLabel\", \"showLessLabel\"]))\n : _createCommentVNode(\"\", true),\n (expanded.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _renderSlot(_ctx.$slots, \"conditionalContent\")\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.dynamicExpander && expanded.value)\n ? (_openBlock(), _createBlock(ShowHideButton, {\n key: 2,\n showMore: expanded.value,\n showMoreLabel: _ctx.toggleButtonExpandText,\n showLessLabel: _ctx.toggleButtonCollapseText,\n onClick: _cache[1] || (_cache[1] = ($event: any) => (expanded.value = !expanded.value))\n }, null, 8, [\"showMore\", \"showMoreLabel\", \"showLessLabel\"]))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","\r\n\r\n","import script from \"./ExpandableContent.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./ExpandableContent.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode } from \"vue\"\n\nconst _hoisted_1 = { class: \"w-full bg-racq-navy py-4 px-4 md:px-6 flex relative md:rounded-t\" }\nconst _hoisted_2 = { key: 0 }\nconst _hoisted_3 = [\"textContent\"]\nconst _hoisted_4 = {\n key: 2,\n class: \"text-racq-navy bg-white rounded-full min-w-[28px] !leading-[30px] w-[28px] h-[28px] text-center mr-3 text-base-bold bg-step-completed-icon\"\n}\nconst _hoisted_5 = [\"textContent\"]\n\nimport { computed } from 'vue';\r\nimport { IFormStep } from '@/interfaces';\r\nimport { useFormStore } from '@/store';\r\nimport { uniqBy } from 'lodash-es';\r\n\r\n// Define Vue props\r\n// ------------------------------------------------------------- //\r\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'FormHeader',\n props: {\n step: {},\n stepIndex: {}\n },\n setup(__props: any) {\n\r\nconst props = __props;\r\n\r\n// Initialise Pinia store/s\r\n// ------------------------------------------------------------- //\r\nconst formStore = useFormStore();\r\n\r\n// Computed Properties\r\n// ------------------------------------------------------------- //\r\nconst stepNumber = computed(() => {\r\n const uniqSteps = uniqBy(formStore.inScopeSteps, (step) => step.stepGroupName || step.stepTitle);\r\n return (\r\n uniqSteps.findIndex(\r\n (step) =>\r\n (props.step.stepGroupName && step.stepGroupName == props.step.stepGroupName) ||\r\n step.stepTitle == props.step.stepTitle\r\n ) + 1\r\n );\r\n});\r\n\r\n// Functions\r\n// ------------------------------------------------------------- //\r\nconst removeStep = () => {\r\n formStore.removeStep(props.step.stepIndex!);\r\n};\r\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_ctx.step.hideHeaderNumber)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2))\n : ((stepNumber.value || _ctx.stepIndex) && !_ctx.step.isComplete)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: \"text-racq-navy bg-white rounded-full min-w-[28px] !leading-[30px] w-[28px] h-[28px] text-center mr-3 text-base-bold\",\n textContent: _toDisplayString(stepNumber.value || _ctx.stepIndex)\n }, null, 8, _hoisted_3))\n : (_ctx.step.isComplete)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_4))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"h2\", {\n class: \"text-white text-xl\",\n textContent: _toDisplayString(_ctx.step.stepTitle)\n }, null, 8, _hoisted_5),\n (_ctx.step.isRemovable)\n ? (_openBlock(), _createElementBlock(\"button\", {\n key: 3,\n type: \"button\",\n class: \"link text-white ms-auto text-m no-underline hover:underline active:text-white focus:outline-white\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (removeStep()))\n }, \" REMOVE \"))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","\r\n\r\n\r\n","import script from \"./FormHeader.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FormHeader.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, createElementBlock as _createElementBlock, renderList as _renderList, Fragment as _Fragment } from \"vue\"\n\nconst _hoisted_1 = { class: \"flex w-full\" }\nconst _hoisted_2 = {\n key: 0,\n class: \"text-base-md !text-m richtext text-racq-med-grey mb-13\"\n}\nconst _hoisted_3 = {\n key: 1,\n class: \"mt-4 text-base-md\"\n}\nconst _hoisted_4 = {\n key: 0,\n class: \"text-lg mb-4 !font-medium font-sans leading-7\"\n}\n\nimport { useFormStepDisclaimerStore } from '@/store';\r\nimport { RichText } from '@sitecore-jss/sitecore-jss-vue';\r\nimport { computed } from 'vue';\r\nimport { useI18n } from 'vue-i18n';\r\n\r\n// Define props and emitters\r\n// ------------------------------------------------------------- //\r\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'FormStepDisclaimers',\n props: {\n fields: {},\n testParams: {}\n },\n setup(__props: any) {\n\r\nconst props = __props;\r\n\r\n// Define component state\r\n// ------------------------------------------------------------- //\r\nconst translation = useI18n();\r\nconst dictionary: Record = translation.getLocaleMessage('en') as any;\r\nconst formStepDisclaimerStore = useFormStepDisclaimerStore();\r\n\r\nif (props.testParams) {\r\n formStepDisclaimerStore.additionalDisclaimer.length = props.testParams.mockFormStepDisclaimerStoreResponse.length;\r\n\r\n dictionary.DisclaimerHeading = props.testParams.mockDisclaimerHeading;\r\n}\r\n// Computed properties\r\n// ------------------------------------------------------------- //\r\nconst stepDisclaimers = computed(() => {\r\n let disclaimers = formStepDisclaimerStore.getDisclaimersForStep(props.fields.stepTitle);\r\n\r\n if (props.testParams) {\r\n disclaimers = props.testParams.mockFormStepDisclaimerStoreResponse;\r\n }\r\n return disclaimers;\r\n});\r\n\r\n// Computed property to determine if the disclaimer should be shown\r\nconst shouldDisplayDisclaimer = computed(() => {\r\n return props.fields?.defaultDisclaimer || formStepDisclaimerStore?.additionalDisclaimer?.length;\r\n});\r\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (shouldDisplayDisclaimer.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n (_ctx.fields?.defaultDisclaimer)\n ? (_openBlock(), _createBlock(_unref(RichText), {\n key: 0,\n field: { value: _ctx.fields?.defaultDisclaimer || ' ' }\n }, null, 8, [\"field\"]))\n : _createCommentVNode(\"\", true),\n (stepDisclaimers.value.length)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n (!_ctx.fields?.defaultDisclaimer)\n ? (_openBlock(), _createElementBlock(\"p\", _hoisted_4, _toDisplayString(_unref(dictionary).DisclaimerHeading), 1))\n : _createCommentVNode(\"\", true),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(stepDisclaimers.value, (disclaimer, key) => {\n return (_openBlock(), _createBlock(_unref(RichText), {\n key: key,\n class: \"text-base !text-m text-racq-med-grey\",\n field: { value: disclaimer || ' ' },\n tag: \"p\"\n }, null, 8, [\"field\"]))\n }), 128))\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","\r\n\r\n\r\n","import script from \"./FormStepDisclaimers.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./FormStepDisclaimers.vue?vue&type=script&lang=ts&setup=true\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, renderSlot as _renderSlot, createVNode as _createVNode, toDisplayString as _toDisplayString, createElementBlock as _createElementBlock, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass } from \"vue\"\n\nconst _hoisted_1 = { class: \"flex-col justify-start items-end gap-8 md:gap-6 inline-flex ms-auto\" }\n\nimport { computed } from 'vue';\r\nimport { IFormStep } from '@/interfaces';\r\nimport { useFormStore, useJeopardyStore } from '@/store';\r\n\r\n// Define props and emitters\r\n// ------------------------------------------------------------- //\r\n\r\n\r\nconst editButtonClicked = 'editButtonClicked';\r\nconst __default__ = {};\r\n\nexport default /*@__PURE__*/_defineComponent({\n ...__default__,\n __name: 'FormStepFooter',\n props: {\n step: {},\n isSticky: { type: Boolean },\n btnNextText: {},\n btnPrevText: {},\n btnDisagreeText: {},\n btnNextDisabled: { type: Boolean },\n btnNextClick: { type: Function },\n btnPrevClick: { type: Function },\n btnDisagreeClick: { type: Function }\n },\n emits: [editButtonClicked],\n setup(__props: any, { emit: __emit }) {\n\r\nconst props = __props;\r\n\r\nconst emit = __emit;\r\n\r\n// Initialise stores\r\n// ------------------------------------------------------------- //\r\nconst formStore = useFormStore();\r\nconst jpStore = useJeopardyStore();\r\n\r\n// Define Computed properties\r\n// ------------------------------------------------------------- //\r\nconst isPrelimStep = computed(() => props.step.isPrelimStep);\r\n\r\nconst showEditBtn = computed(() => {\r\n return (\r\n props.step.isMasked &&\r\n (jpStore.showJeopardy || (formStore.currentStep && props.step.stepIndex! < formStore.currentStep.stepIndex!))\r\n );\r\n});\r\n\r\n// Functions\r\n// ------------------------------------------------------------- //\r\n/**\r\n * On click of 'Back' button\r\n *\r\n */\r\nfunction onPrev() {\r\n if (isPrelimStep.value) {\r\n return formStore.goPrevPrelimStep();\r\n }\r\n\r\n formStore.goPrevStep();\r\n}\r\n\r\n/**\r\n * On click of the 'Edit' button of a form\r\n *\r\n * @param stepIndex\r\n */\r\nfunction onEdit(stepIndex: number) {\r\n formStore.goToStep(stepIndex);\r\n emit(editButtonClicked);\r\n}\r\n\nreturn (_ctx: any,_cache: any) => {\n const _component_FormKit = _resolveComponent(\"FormKit\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass(['form-buttons', { 'sticky-footer': _ctx.isSticky }])\n }, [\n (_ctx.btnPrevText && !_ctx.step.isMasked)\n ? (_openBlock(), _createBlock(_component_FormKit, {\n key: 0,\n type: \"button\",\n label: _ctx.btnPrevText,\n inputClass: \"btn btn-secondary\",\n disabled: _unref(formStore).disableAllSteps,\n onClick: _cache[0] || (_cache[0] = () => (_ctx.btnPrevClick ? _ctx.btnPrevClick() : onPrev()))\n }, null, 8, [\"label\", \"disabled\"]))\n : _createCommentVNode(\"\", true),\n (_ctx.btnNextText && _ctx.step.isActive && !_ctx.step.isMasked)\n ? _renderSlot(_ctx.$slots, \"btnNext\", { key: 1 }, () => [\n _createElementVNode(\"div\", _hoisted_1, [\n _createVNode(_component_FormKit, {\n type: \"submit\",\n label: _ctx.btnNextText,\n disabled: _ctx.btnNextDisabled || _unref(formStore).disableAllSteps,\n inputClass: \"btn btn-primary\",\n onClick: _ctx.btnNextClick\n }, null, 8, [\"label\", \"disabled\", \"onClick\"]),\n (_ctx.btnDisagreeText && _ctx.btnDisagreeClick)\n ? (_openBlock(), _createElementBlock(\"button\", {\n key: 0,\n type: \"button\",\n class: \"link text-base-bold\",\n onClick: _cache[1] || (_cache[1] = \n//@ts-ignore\n(...args) => (_ctx.btnDisagreeClick && _ctx.btnDisagreeClick(...args)))\n }, _toDisplayString(_ctx.btnDisagreeText), 1))\n : _createCommentVNode(\"\", true)\n ])\n ])\n : _createCommentVNode(\"\", true),\n (showEditBtn.value)\n ? (_openBlock(), _createBlock(_component_FormKit, {\n key: 2,\n type: \"button\",\n label: \"Edit\",\n disabled: _unref(formStore).disableAllSteps,\n inputClass: \"btn btn-primary btn-edit\",\n outerClass: \"ms-auto z-[200]\",\n onClick: _cache[2] || (_cache[2] = () => onEdit(_ctx.step.stepIndex!))\n }, null, 8, [\"disabled\"]))\n : _createCommentVNode(\"\", true)\n ], 2))\n}\n}\n\n})","\r\n\r\n\r\n\r\n\r\n","import script from \"./FormStepFooter.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FormStepFooter.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, renderSlot as _renderSlot, unref as _unref, createTextVNode as _createTextVNode, createCommentVNode as _createCommentVNode, createBlock as _createBlock, normalizeClass as _normalizeClass, resolveComponent as _resolveComponent, mergeProps as _mergeProps } from \"vue\"\n\nconst _hoisted_1 = { key: 9 }\n\nimport { IFormStep, ISitecoreFormGenericInput, RACQAddressResult } from '@/interfaces';\r\nimport { computed } from 'vue';\r\nimport { FormInputTypes } from '@/enums/form-input-types.enum';\r\nimport useFormInputData, { getAdobeTargetDataAttributes } from '@/composables/useFormInputData';\r\nimport { RichText } from '@sitecore-jss/sitecore-jss-vue';\r\nimport DateInput from '@/components/DateInput/DateInput.vue';\r\nimport TitleNameInput from '@/components/TitleNameInput/TitleNameInput.vue';\r\nimport RACQFormKit from '@/components/RACQFormKit/RACQFormKit.vue';\r\nimport Gender from '@/components/Gender/Gender.vue';\r\nimport Disclaimer from '@/components/Disclaimer/Disclaimer.vue';\r\nimport CallToActionCard from '@/components/CallToActionCard/CallToActionCard.vue';\r\nimport SectionFrame from '@/components/SectionFrame/SectionFrame.vue';\r\nimport DatePicker from '@/components/DatePicker/DatePicker.vue';\r\nimport AccountLoginInfoBox from '@/components/AccountLoginInfoBox/AccountLoginInfoBox.vue';\r\nimport PhoneNumberInput from '@/components/PhoneNumberInput/PhoneNumberInput.vue';\r\nimport PanelTitle from '@/components/PanelTitle/PanelTitle.vue';\r\nimport SendEmailConfirmation from '@/components/EmailConfirmation/SendEmailConfirmation.vue';\r\nimport RadioCardList from '@/components/RadioCardList/RadioCardList.vue';\r\n\r\n// Define Vue props\r\n// ------------------------------------------------------------- //\r\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'FormStepInputs',\n props: {\n step: {}\n },\n setup(__props: any) {\n\r\nconst props = __props;\r\n\r\nconst { formInputData, convertSitecoreToVueCheckboxListOptions } = useFormInputData(props.step.formInputs!);\r\nconst inputs = computed(() =>\r\n props.step?.formInputs ? Object.values(props.step?.formInputs).filter((input) => !input.isHidden) : []\r\n);\r\n\r\nconst getRacqFormKitBindings = (input: any) => {\r\n if (input.inputType?.value == FormInputTypes.CHECKBOX && input.fields.length > 0) {\r\n return {\r\n ...formInputData(input.formInputId?.value),\r\n options: convertSitecoreToVueCheckboxListOptions(input),\r\n };\r\n } else {\r\n return formInputData(input.formInputId?.value);\r\n }\r\n};\r\n\r\nfunction adobeTargetDataTypes(input: Record) {\r\n return getAdobeTargetDataAttributes(input, props.step.stepName!);\r\n}\r\n\nreturn (_ctx: any,_cache: any) => {\n const _component_FormKit = _resolveComponent(\"FormKit\")!\n\n return (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(inputs.value as Record[], (input) => {\n return (_openBlock(), _createElementBlock(\"div\", _mergeProps({\n key: input.formInputId?.value + input.label?.value,\n ref_for: true\n }, adobeTargetDataTypes(input)), [\n _renderSlot(_ctx.$slots, input.formInputId?.value, {}, () => [\n (input.inputType?.value == _unref(FormInputTypes).ADDRESS_AUTOCOMPLETE)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n _createTextVNode(\" [Please use AddressLookupOptions component] \")\n ], 64))\n : (input.inputType?.value == _unref(FormInputTypes).DATE_INPUT)\n ? (_openBlock(), _createBlock(DateInput, {\n key: 1,\n bindings: _unref(formInputData)(input.formInputId?.value),\n minDateToday: input?.minDateToday?.value,\n maxDateByDays: input?.maxDateByDays?.value,\n minDate: input?.minDate?.value,\n dateMustBefore: input?.dateMustBefore?.value,\n dateMustAfter: input?.dateMustAfter?.value\n }, null, 8, [\"bindings\", \"minDateToday\", \"maxDateByDays\", \"minDate\", \"dateMustBefore\", \"dateMustAfter\"]))\n : (input.inputType?.value == _unref(FormInputTypes).TITLE_NAME)\n ? (_openBlock(), _createBlock(TitleNameInput, {\n key: 2,\n bindings: _unref(formInputData)(input.formInputId?.value),\n titleRequiredMessage: input?.titleRequiredMessage?.value,\n firstnameRequiredErrorMessage: input?.firstnameRequiredErrorMessage?.value,\n firstnameRegex: input?.firstnameRegex?.value,\n firstnameRegexErrorMessage: input?.firstnameRegexErrorMessage?.value,\n lastnameRequiredErrorMessage: input?.lastnameRequiredErrorMessage?.value,\n lastnameRegex: input?.lastnameRegex?.value,\n lastnameRegexErrorMessage: input?.lastnameRegexErrorMessage?.value\n }, null, 8, [\"bindings\", \"titleRequiredMessage\", \"firstnameRequiredErrorMessage\", \"firstnameRegex\", \"firstnameRegexErrorMessage\", \"lastnameRequiredErrorMessage\", \"lastnameRegex\", \"lastnameRegexErrorMessage\"]))\n : (input.inputType?.value == _unref(FormInputTypes).LABEL)\n ? (_openBlock(), _createBlock(_unref(RichText), {\n key: 3,\n field: input.label,\n class: _normalizeClass(input.outerClass?.value)\n }, null, 8, [\"field\", \"class\"]))\n : (input.inputType?.value == _unref(FormInputTypes).GENDER)\n ? (_openBlock(), _createBlock(Gender, {\n key: 4,\n bindings: _unref(formInputData)(input.formInputId?.value)\n }, null, 8, [\"bindings\"]))\n : (input.inputType?.value == _unref(FormInputTypes).CALL_TO_ACTION_CARD)\n ? (_openBlock(), _createBlock(CallToActionCard, {\n key: 5,\n bindings: _unref(formInputData)(input.formInputId?.value)\n }, null, 8, [\"bindings\"]))\n : (input.inputType?.value == _unref(FormInputTypes).DISCLAIMER)\n ? (_openBlock(), _createBlock(Disclaimer, {\n key: 6,\n bindings: input\n }, null, 8, [\"bindings\"]))\n : (input.inputType?.value == _unref(FormInputTypes).SECTION_FRAME)\n ? (_openBlock(), _createBlock(SectionFrame, {\n key: 7,\n bindings: _unref(formInputData)(input.formInputId?.value)\n }, null, 8, [\"bindings\"]))\n : (input.inputType?.value == _unref(FormInputTypes).RADIO_CARD_LIST)\n ? (_openBlock(), _createBlock(RadioCardList, {\n key: 8,\n bindings: _unref(formInputData)(input.formInputId?.value)\n }, null, 8, [\"bindings\"]))\n : (input.inputType?.value == _unref(FormInputTypes).CUSTOM)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1))\n : (input.inputType?.value == _unref(FormInputTypes).PHONE_NUMBER)\n ? (_openBlock(), _createBlock(PhoneNumberInput, {\n key: 10,\n bindings: _unref(formInputData)(input.formInputId?.value)\n }, null, 8, [\"bindings\"]))\n : (input.inputType?.value == _unref(FormInputTypes).DATEPICKER)\n ? (_openBlock(), _createBlock(DatePicker, {\n key: 11,\n bindings: _unref(formInputData)(input.formInputId?.value),\n minDateToday: input?.minDateToday?.value,\n maxDateByDays: input?.maxDateByDays?.value\n }, null, 8, [\"bindings\", \"minDateToday\", \"maxDateByDays\"]))\n : (input.inputType?.value == _unref(FormInputTypes).LOGINBUTTON)\n ? (_openBlock(), _createBlock(AccountLoginInfoBox, {\n key: 12,\n fields: input\n }, null, 8, [\"fields\"]))\n : (input.inputType?.value == _unref(FormInputTypes).PANEL_TITLE)\n ? (_openBlock(), _createBlock(PanelTitle, {\n key: 13,\n bindings: _unref(formInputData)(input.formInputId?.value),\n title: input.title!,\n subTitle: input.subTitle!,\n icon: input.icon,\n isSecondary: input.isSecondary\n }, null, 8, [\"bindings\", \"title\", \"subTitle\", \"icon\", \"isSecondary\"]))\n : (input.inputType?.value == _unref(FormInputTypes).CUSTOM_EMAIL_CONFIRMATION)\n ? (_openBlock(), _createBlock(SendEmailConfirmation, {\n key: 14,\n bindings: _unref(formInputData)(input.formInputId?.value),\n emailButtonText: input.emailButtonText,\n emailHeading: input.emailHeading,\n isLoading: false\n }, null, 8, [\"bindings\", \"emailButtonText\", \"emailHeading\"]))\n : (input.inputType?.value == _unref(FormInputTypes).FIND_CAR)\n ? (_openBlock(), _createBlock(_component_FormKit, _mergeProps({\n key: 15,\n ref_for: true\n }, input, { type: \"findCar\" }), null, 16))\n : (_openBlock(), _createBlock(RACQFormKit, {\n key: 16,\n bindings: getRacqFormKitBindings(input)\n }, null, 8, [\"bindings\"]))\n ])\n ], 16))\n }), 128))\n}\n}\n\n})","\r\n\r\n\r\n","import script from \"./FormStepInputs.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FormStepInputs.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, renderSlot as _renderSlot, createVNode as _createVNode, createElementVNode as _createElementVNode } from \"vue\"\nimport _imports_0 from '@/assets/img/loader-34.gif'\n\n\nconst _hoisted_1 = {\n class: \"mx-0 md:mx-auto max-w-[784px] pb-[40px] mb-5 w-full bg-white relative md:rounded md:drop-shadow-lg\",\n \"data-tooltip-wrapper\": \"\"\n}\nconst _hoisted_2 = {\n key: 0,\n class: \"w-full h-full absolute bg-curtain-color z-[100]\"\n}\nconst _hoisted_3 = {\n key: 0,\n src: _imports_0,\n alt: \"Loading...\",\n class: \"absolute top-[50%] left-[50%] translate-y-[-50%] translate-x-[-50%]\"\n}\nconst _hoisted_4 = { class: \"max-w-[100vw] pt-[24px] px-[16px] md:pt-[32px] md:px-[40px]\" }\n\nimport FormHeader from '@/components/FormHeader/FormHeader.vue';\r\nimport { IFormStep } from '@/interfaces';\r\n\r\n// Define props and state\r\n// ------------------------------------------------------------- //\r\n\r\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'FormStep',\n props: {\n step: {},\n stepIndex: {}\n },\n setup(__props: any) {\n\r\n\r\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_ctx.step.isLoading || _ctx.step.isMasked)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n (_ctx.step.isLoading)\n ? (_openBlock(), _createElementBlock(\"img\", _hoisted_3))\n : _createCommentVNode(\"\", true)\n ]))\n : _createCommentVNode(\"\", true),\n _renderSlot(_ctx.$slots, \"header\", {}, () => [\n _createElementVNode(\"div\", null, [\n _createVNode(FormHeader, {\n step: _ctx.step,\n stepIndex: _ctx.stepIndex || 0\n }, null, 8, [\"step\", \"stepIndex\"])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_4, [\n _renderSlot(_ctx.$slots, \"default\")\n ])\n ]))\n}\n}\n\n})","import script from \"./FormStep.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FormStep.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeClass as _normalizeClass, createCommentVNode as _createCommentVNode } from \"vue\"\n\nconst _hoisted_1 = {\n key: 0,\n class: \"flex mobile-stepper items-center w-full lg:px-0\"\n}\nconst _hoisted_2 = { class: \"flex-initial w-fit whitespace-nowrap font-sans font-normal text-racq-navy leading-normal text-base ms-auto me-4\" }\nconst _hoisted_3 = { class: \"me-auto flex py-0 h-2 w-full overflow-hidden bg-white rounded\" }\n\nimport { IFormStep } from '@/interfaces';\r\nimport { computed, onMounted } from 'vue';\r\nimport { useFormStore } from '@/store';\r\nimport { uniqBy } from 'lodash-es';\r\n\r\n// Initialise Composables\r\n// -------------------------- //\r\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'FormStepperBar',\n props: {\n steps: {},\n isMock: { type: Boolean }\n },\n setup(__props: any) {\n\r\nconst formStore = useFormStore();\r\n\r\n// Initialise Props\r\n// -------------------------- //\r\nconst props = __props;\r\n\r\n// Lifecycle Hooks\r\n// -------------------------- //\r\nonMounted(() => {\r\n if (props.steps && props.isMock) {\r\n formStore.setSteps(props.steps);\r\n }\r\n});\r\n\r\n// Computed Properties\r\n// -------------------------- //\r\nconst isStepperVisible = computed(\r\n () => formStore.isStepperVisible && formStepperSteps.value.length > 1 && formStore.allPrelimStepsComplete\r\n);\r\nconst currentActiveStepNumber = computed(() => {\r\n const activeStep = formStore.inScopeSteps.find((step) => step.isActive);\r\n return (\r\n formStepperSteps.value.findIndex(\r\n (step) =>\r\n (activeStep?.stepGroupName && step.stepGroupName == activeStep.stepGroupName) ||\r\n step.stepTitle == activeStep?.stepTitle\r\n ) + 1\r\n );\r\n});\r\n\r\nconst formStepperSteps = computed(() => {\r\n const visibleSteps = formStore.inScopeSteps.filter((step) => !step.hideStepper);\r\n return uniqBy(visibleSteps, (step) => step.stepGroupName || step.stepTitle);\r\n});\r\n\nreturn (_ctx: any,_cache: any) => {\n return (isStepperVisible.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"span\", _hoisted_2, _toDisplayString(currentActiveStepNumber.value) + \" of \" + _toDisplayString(formStepperSteps.value.length), 1),\n _createElementVNode(\"div\", _hoisted_3, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(formStepperSteps.value, (step, index) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n key: index,\n class: _normalizeClass([\"h-2 flex-1\", currentActiveStepNumber.value >= index + 1 ? 'bg-racq-blue' : 'bg-racq-anti-flash-white'])\n }, null, 2))\n }), 128))\n ])\n ]))\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","\r\n\r\n\r\n","import script from \"./FormStepperBar.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FormStepperBar.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass } from \"vue\"\n\nconst _hoisted_1 = { class: \"mt-3 w-[250px] ml-[-280px] absolute\" }\nconst _hoisted_2 = [\"data-step-id\"]\nconst _hoisted_3 = [\"onClick\"]\nconst _hoisted_4 = { class: \"step-number text-center text-dark-grey-text font-bold rounded-full mr-3 w-[30px] min-w-[30px] h-[30px] border-racq-navy border-2 leading-[1.65]\" }\nconst _hoisted_5 = { class: \"min-h-[28px]\" }\nconst _hoisted_6 = { class: \"step-display-number\" }\nconst _hoisted_7 = { class: \"step-text text-lg-bold text-left\" }\n\nimport { IFormStep } from '@/interfaces';\r\nimport { computed, onMounted } from 'vue';\r\nimport { useFormStore } from '@/store';\r\nimport { uniqBy } from 'lodash-es';\r\n\r\n// Initialise Composables\r\n// -------------------------- //\r\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'FormStepper',\n props: {\n steps: {},\n isMock: { type: Boolean }\n },\n setup(__props: any) {\n\r\nconst formStore = useFormStore();\r\n\r\n// Initialise Props\r\n// -------------------------- //\r\nconst props = __props;\r\n\r\n// Lifecycle Hooks\r\n// -------------------------- //\r\nonMounted(() => {\r\n if (props.steps && props.isMock) {\r\n formStore.setSteps(props.steps);\r\n }\r\n});\r\n\r\n// Computed Properties\r\n// -------------------------- //\r\n\r\nconst formStepperSteps = computed(() => {\r\n const visibleSteps = formStore.inScopeSteps.filter((step) => !step.hideStepper);\r\n return uniqBy(visibleSteps, (step) => step.stepGroupName || step.stepTitle);\r\n});\r\n\r\nconst formCompleted = computed(() => {\r\n return formStore.inScopeSteps.some((step) => step.isActive && step.isFinalStep);\r\n});\r\n\r\nconst getStepClass = computed(() => {\r\n return (step: IFormStep) => {\r\n const stepUniqueName = step.stepGroupName || step.stepTitle;\r\n const isComplete = formCompleted.value || areAllStepsCompleteInGroup(stepUniqueName ?? '');\r\n if (isComplete) {\r\n return 'step-completed';\r\n }\r\n return anyStepsActiveInGroup(stepUniqueName ?? '') ? 'step-active' : 'step-disabled';\r\n };\r\n});\r\n\r\n// Functions\r\n// -------------------------- //\r\nfunction scrollToStep(stepTitle: string) {\r\n const stepIndex = formStore.inScopeSteps.findIndex((s) => s.stepTitle == stepTitle);\r\n if (formStore.inScopeSteps[stepIndex].isVisible) {\r\n formStore.scrollToStep(stepIndex);\r\n }\r\n}\r\n\r\nfunction areAllStepsCompleteInGroup(identifier: string): boolean {\r\n const stepsInGroup = formStore.inScopeSteps.filter(\r\n (step) => step.stepGroupName === identifier || step.stepTitle === identifier\r\n );\r\n return stepsInGroup.every((step) => step.isComplete);\r\n}\r\n\r\nfunction anyStepsActiveInGroup(identifier: string): boolean {\r\n const stepsInGroup = formStore.inScopeSteps.filter(\r\n (step) => step.stepGroupName === identifier || step.stepTitle === identifier\r\n );\r\n return stepsInGroup.some((step) => step.isActive);\r\n}\r\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"racq-form-stepper w-full xl:block sticky top-[90px]\", _ctx.isMock ? 'h-96' : 'hidden'])\n }, [\n _createElementVNode(\"ul\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(formStepperSteps.value, (step, index) => {\n return (_openBlock(), _createElementBlock(\"li\", {\n key: index,\n \"data-step-id\": step.id,\n class: _normalizeClass([\"step mb-[26px] relative content-baseline bg-racq-anti-flash-white\", getStepClass.value(step)])\n }, [\n _createElementVNode(\"button\", {\n class: \"step-button hover:!no-underline flex items-start\",\n type: \"button\",\n onClick: () => step.stepTitle && scrollToStep(step.stepTitle)\n }, [\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"div\", _hoisted_5, [\n _createElementVNode(\"span\", _hoisted_6, _toDisplayString(index + 1), 1)\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_7, _toDisplayString(step.stepGroupName || step.stepTitle), 1)\n ], 8, _hoisted_3)\n ], 10, _hoisted_2))\n }), 128))\n ])\n ], 2))\n}\n}\n\n})","\r\n\r\n\r\n","import script from \"./FormStepper.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FormStepper.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { openBlock as _openBlock, createBlock as _createBlock } from \"vue\"\n\nimport { computed, onMounted, ref } from 'vue';\r\nimport { useReferenceDataStore } from '@/store';\r\nimport RACQFormKit from '@/components/RACQFormKit/RACQFormKit.vue';\r\nimport { IDropdownItem } from '@/interfaces';\r\n\r\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'Gender',\n props: {\n bindings: {}\n },\n setup(__props: any) {\n\r\nconst props = __props;\r\n\r\nconst propBindings = computed(() => {\r\n return {\r\n ...props.bindings,\r\n options: options.value || [],\r\n type: 'radio',\r\n };\r\n});\r\n\r\nconst refDataStore = useReferenceDataStore();\r\nconst options = ref([]);\r\n\r\nonMounted(() => {\r\n refDataStore\r\n .getGenders()\r\n .then((res) => {\r\n options.value = res?.map((option) => ({ label: option.name, value: option.value })) || [];\r\n })\r\n .catch(console.warn);\r\n});\r\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(RACQFormKit, { bindings: propBindings.value }, null, 8, [\"bindings\"]))\n}\n}\n\n})","\r\n\r\n","import script from \"./Gender.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./Gender.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass, withCtx as _withCtx, createBlock as _createBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"grid grid-cols-1 w-full\" }\nconst _hoisted_2 = { key: 0 }\nconst _hoisted_3 = { class: \"grid h-[24px] w-[24px] place-items-center rounded-full bg-gray-600 text-xs text-white text-xs-bold\" }\nconst _hoisted_4 = [\"innerHTML\"]\n\nimport SectionFrame from '@/components/SectionFrame/SectionFrame.vue';\r\nimport { IHighlight } from '@/interfaces/forms/highlights-interface';\r\n\r\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'Highlights',\n props: {\n showNumber: { type: Boolean },\n highlightsTitle: {},\n highlights: {}\n },\n setup(__props: any) {\n\r\nconst props = __props;\r\n\r\nconst getCols = () => {\r\n return props.showNumber ? ' grid-cols-[4%_96%]' : '';\r\n};\r\n\r\nconst getBottomBorder = (itemIndex: number) => {\r\n return itemIndex + 1 < props.highlights.length ? 'border-b' : '';\r\n};\r\n\r\nconst isLastItem = (itemIndex: number) => {\r\n return itemIndex + 1 === props.highlights.length;\r\n};\r\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(SectionFrame, {\n sectionTitle: _ctx.highlightsTitle,\n titleClasses: \"text-xl-bold\"\n }, {\n sectionFrameContent: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.highlights, (item, itemIndex) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n key: itemIndex,\n class: _normalizeClass([`${getCols()} ${getBottomBorder(itemIndex)}`, \"grid mt-4\"])\n }, [\n (_ctx.showNumber)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n _createElementVNode(\"span\", _hoisted_3, _toDisplayString(itemIndex + 1), 1)\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"text-base\", [!isLastItem(itemIndex) ? 'pb-4' : '', _ctx.showNumber ? 'pl-8 md:pl-4' : '']]),\n innerHTML: item.content\n }, null, 10, _hoisted_4)\n ], 2))\n }), 128))\n ])\n ]),\n _: 1\n }, 8, [\"sectionTitle\"]))\n}\n}\n\n})","\r\n\r\n","import script from \"./Highlights.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./Highlights.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"flex flex-col md:flex-row gap-1 md:gap-4 bg-white md:rounded px-6 md:px-5 pt-2 md:pt-0 pb-5 md:pb-0 justify-center md:justify-start items-center mt-12 md:mt-14 max-w-[784px] mx-auto\" }\nconst _hoisted_2 = { class: \"text-center md:text-left pt-1 pb-3 md:py-6\" }\nconst _hoisted_3 = { class: \"text-lg-bold text-racq-dark-grey\" }\nconst _hoisted_4 = { class: \"text-brand text-racq-med-grey\" }\nconst _hoisted_5 = { class: \"flex gap-1 md:ml-auto\" }\n\nimport { Field, RichText, Text, Image } from '@sitecore-jss/sitecore-jss-vue';\r\n\r\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'IQAwardBanner',\n props: {\n fields: {}\n },\n setup(__props: any) {\n\r\n\r\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_unref(Image), {\n media: _ctx.fields.PrefixIcon\n }, null, 8, [\"media\"]),\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(_unref(Text), {\n field: _ctx.fields.Title\n }, null, 8, [\"field\"])\n ]),\n _createElementVNode(\"div\", _hoisted_4, [\n _createVNode(_unref(RichText), {\n field: _ctx.fields.Content\n }, null, 8, [\"field\"])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_5, [\n _createVNode(_unref(Image), {\n media: _ctx.fields.SuffixIconStart\n }, null, 8, [\"media\"]),\n _createVNode(_unref(Image), {\n media: _ctx.fields.SuffixIconEnd\n }, null, 8, [\"media\"])\n ])\n ]))\n}\n}\n\n})","import script from \"./IQAwardBanner.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./IQAwardBanner.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, withCtx as _withCtx, Fragment as _Fragment } from \"vue\"\n\nconst _hoisted_1 = { class: \"pt-6 py-8 px-5 bg-white form-float-box-border text-racq-dark-grey\" }\nconst _hoisted_2 = { class: \"text-xl !font-medium leading-7 mb-2\" }\nconst _hoisted_3 = { class: \"mb-6\" }\nconst _hoisted_4 = { class: \"w-full h-8 px-4 py-2 bg-racq-anti-flash-white rounded-lg justify-center items-start gap-5 inline-flex\" }\nconst _hoisted_5 = { class: \"text-center text-racq-med-grey text-xs leading-none\" }\nconst _hoisted_6 = { class: \"tooltip-title\" }\nconst _hoisted_7 = [\"innerHTML\"]\n\nimport { ref, computed, onMounted } from 'vue';\r\nimport { useI18n } from 'vue-i18n';\r\nimport { Text, RichText } from '@sitecore-jss/sitecore-jss-vue';\r\nimport { Item } from '@sitecore-jss/sitecore-jss/layout';\r\nimport { getDiscountsList } from '@/utils/iq-discounts';\r\nimport { hasQuotePremiumChanged } from '@/utils/display-rules/loyalty-rules';\r\nimport { IQuote } from '@/interfaces';\r\nimport DollarAmount from '@/components/DollarAmount/DollarAmount.vue';\r\nimport TagList from '@/components/TagList/TagList.vue';\r\nimport { TagTypes, TagOrientation } from '@/enums/tag-enums';\r\nimport ModalDialog from '../ModalDialog/ModalDialog.vue';\r\nimport PaymentFrequencyDropdown from '../PaymentFrequencyDropdown/PaymentFrequencyDropdown.vue';\r\nimport { PaymentFrequency } from '@/enums/payment-frequency';\r\nimport { usePaymentStore, useIQOriginalQuoteStore } from '@/store';\r\n\r\nenum fieldNames {\r\n title = 'Title',\r\n annualPayment = 'Annual Payment',\r\n monthlyPayment = 'Monthly Payment',\r\n refNumber = 'Ref Number',\r\n quoteChangedLink = 'Quote Changed Link',\r\n whyHasMyQuoteChangedModal = 'Why Has My Quote Changed Modal',\r\n}\r\n\r\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'IQFloatingBox',\n props: {\n fields: {},\n testParams: {}\n },\n setup(__props: any) {\n\r\nconst props = __props;\r\n\r\nconst { t, getLocaleMessage } = useI18n();\r\nconst showWhyQuoteChangedModal = ref(false);\r\nconst whyHasQuoteChangeModal = ref();\r\n\r\nconst getFieldByName = (fieldName: fieldNames) => {\r\n if (!props.fields.floatingBoxContext?.fields) return;\r\n const fields = props.fields.floatingBoxContext.fields ? props.fields.floatingBoxContext.fields : [];\r\n const field = (fields as any[]).find((x: any) => x.name === fieldName);\r\n return field;\r\n};\r\n\r\nconst wordings = computed(() => ({\r\n title: getFieldByName(fieldNames.title)?.content,\r\n annual: getFieldByName(fieldNames.annualPayment)?.content,\r\n monthly: getFieldByName(fieldNames.monthlyPayment)?.content,\r\n refNum: getFieldByName(fieldNames.refNumber)?.content,\r\n}));\r\n\r\nconst premiumHasChangeLink = ref();\r\nconst iqOriginalQuoteStore = useIQOriginalQuoteStore();\r\nconst paymentStore = usePaymentStore();\r\n\r\nconst referenceNumberText = computed(() => {\r\n return `${wordings.value.refNum.value} ${props.fields.quote?.reference}`;\r\n});\r\nconst insuranceQuoteSummary = computed(() =>\r\n paymentStore.selectedPaymentFrequency === PaymentFrequency.Annually\r\n ? props.fields.quote?.insuranceQuoteSummary?.yearlyAnnualPremium\r\n : props.fields.quote?.insuranceQuoteSummary?.monthlyDeposit\r\n);\r\n\r\nconst discounts = computed(() =>\r\n getDiscountsList({ t, getLocaleMessage }, props.fields.quote, {\r\n showAsMonthly: paymentStore.selectedPaymentFrequency === PaymentFrequency.Monthly,\r\n })\r\n);\r\n\r\nconst quoteHasChanged = computed(() => {\r\n if (!iqOriginalQuoteStore.quote) return false;\r\n return hasQuotePremiumChanged(props.fields.quote, iqOriginalQuoteStore.quote);\r\n});\r\n\r\nonMounted(async () => {\r\n paymentStore.paymentFrequencyWording = { annual: wordings.value.annual.value, monthly: wordings.value.monthly.value };\r\n\r\n premiumHasChangeLink.value = getFieldByName(fieldNames.quoteChangedLink)?.content;\r\n whyHasQuoteChangeModal.value = getFieldByName(fieldNames.whyHasMyQuoteChangedModal)?.datasource;\r\n});\r\n\r\nfunction onModalClose(e: any) {\r\n showWhyQuoteChangedModal.value = e;\r\n}\r\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createElementVNode(\"div\", _hoisted_1, [\n _createElementVNode(\"h4\", _hoisted_2, [\n _createVNode(_unref(Text), {\n field: wordings.value.title\n }, null, 8, [\"field\"])\n ]),\n _createVNode(DollarAmount, {\n showStarSign: false,\n amount: insuranceQuoteSummary.value ?? ''\n }, null, 8, [\"amount\"]),\n (_unref(paymentStore).paymentFrequencyWording)\n ? (_openBlock(), _createBlock(PaymentFrequencyDropdown, { key: 0 }))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(TagList, {\n tags: discounts.value,\n tagType: _unref(TagTypes).discount,\n tagOrientation: _unref(TagOrientation).vertical,\n innerClass: \"w-fit\"\n }, null, 8, [\"tags\", \"tagType\", \"tagOrientation\"])\n ]),\n (quoteHasChanged.value || props.testParams?.enableQuoteHasChanged)\n ? (_openBlock(), _createElementBlock(\"button\", {\n key: 1,\n type: \"button\",\n class: \"link text-m\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (showWhyQuoteChangedModal.value = true))\n }, [\n _createVNode(_unref(RichText), {\n class: \"flex flex-col space-y-3 text-m mb-6\",\n field: { value: premiumHasChangeLink.value?.value }\n }, null, 8, [\"field\"])\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"div\", _hoisted_5, _toDisplayString(referenceNumberText.value), 1)\n ])\n ]),\n _createVNode(ModalDialog, {\n modelValue: showWhyQuoteChangedModal.value,\n showXCloseButton: true,\n closeOnEsc: false,\n dialogClass: \"tooltip-dialog\",\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = (value) => onModalClose(value))\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_6, _toDisplayString(whyHasQuoteChangeModal.value?.fields['modalTitle']?.value), 1),\n _createElementVNode(\"div\", {\n class: \"tooltip-body richtext\",\n innerHTML: whyHasQuoteChangeModal.value?.fields['modalBody']?.value\n }, null, 8, _hoisted_7)\n ]),\n _: 1\n }, 8, [\"modelValue\"])\n ], 64))\n}\n}\n\n})","\r\n\r\n\r\n","import script from \"./IQFloatingBox.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./IQFloatingBox.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode } from \"vue\"\n\nconst _hoisted_1 = { class: \"w-100\" }\nconst _hoisted_2 = [\"innerHTML\"]\n\nimport { onMounted, watch, ref } from 'vue';\r\nimport { useAnalyticsStore, usePaymentStore, useFormStore } from '@/store';\r\nimport { useI18n } from 'vue-i18n';\r\nimport { FormEvents } from '@/enums/form-events.enum';\r\nimport { IFormStep } from '@/interfaces';\r\n\r\n//Invalid Credit Card FatZebra response codes to check against\r\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'IQPaymentError',\n props: {\n step: {},\n paymentSuccessful: { type: Boolean },\n errors: {}\n },\n setup(__props: any) {\n\r\nconst invalid_CC_Codes = [\r\n '04',\r\n '05',\r\n '06',\r\n '07',\r\n '12',\r\n '22',\r\n '34',\r\n '35',\r\n '36',\r\n '37',\r\n '41',\r\n '43',\r\n '56',\r\n '59',\r\n '62',\r\n '82',\r\n '93',\r\n];\r\n\r\n//Failed Credit Card Transaction FatZebra response codes to check against\r\nconst failed_TR_codes = ['01', '02', '13', '33', '39', '51', '54', '61', '65'];\r\n\r\nconst paymentStore = usePaymentStore();\r\nconst analyticsStore = useAnalyticsStore();\r\nconst formStore = useFormStore();\r\n\r\nconst translation = useI18n();\r\nconst dictionary: Record = translation.getLocaleMessage('en') as any;\r\n\r\nconst displayErrors = ref([]);\r\n\r\nconst props = __props;\r\n\r\nwatch(() => props.errors, processError);\r\n\r\nonMounted(() => {\r\n processError();\r\n});\r\n\r\nfunction processError() {\r\n displayErrors.value.length = 0;\r\n\r\n if (props.errors && props.errors.length) {\r\n const isPaymentAttempt = processCardPaymentErrors();\r\n\r\n if (!isPaymentAttempt) {\r\n displayErrors.value.push(dictionary.IQ_PAYMENT_UNSPECIFIED_ERROR);\r\n }\r\n\r\n if (isPaymentAttempt) {\r\n analyticsStore.pushAnalytics({\r\n event: FormEvents.PAYMENT_ATTEMPT,\r\n form: {},\r\n payment: { paymentAttempt: paymentStore.paymentRetryAttempts?.toString() },\r\n });\r\n } else {\r\n analyticsStore.pushAnalytics({\r\n event: FormEvents.PAYMENT_ATTEMPT,\r\n form: {\r\n formErrorType: 'form error',\r\n formError: 'Unspecified error',\r\n formErrorDetail: `${props.step.id}`,\r\n },\r\n });\r\n }\r\n }\r\n}\r\n\r\nfunction processCardPaymentErrors() {\r\n if (props.errors && props.errors.length > 0 && props.errors[0].errorType) {\r\n const isValidationDeclined = props.errors.find(\r\n (x) => x.errorDescription.toLowerCase().indexOf('validation declined') > -1\r\n );\r\n\r\n if (!isValidationDeclined) {\r\n displayErrors.value.push(dictionary.IQ_PAYMENT_CARD_ERROR_OTHER);\r\n }\r\n\r\n const isFatZebraError = props.errors.find((x) => x.errorDescription.indexOf('__') > -1);\r\n const fatZebraCode = isFatZebraError\r\n ? isFatZebraError?.errorDescription?.substr(0, isFatZebraError.errorDescription.indexOf('__'))\r\n : '';\r\n\r\n if (invalid_CC_Codes.findIndex((x) => x == fatZebraCode)) {\r\n displayErrors.value.push(dictionary.IQ_PAYMENT_CARD_ERROR_INVALID_CC);\r\n } else if (failed_TR_codes.findIndex((x) => x == fatZebraCode) > -1) {\r\n displayErrors.value.push(dictionary.IQ_PAYMENT_CARD_ERROR_FAILED_TR);\r\n } else {\r\n displayErrors.value.push(dictionary.IQ_PAYMENT_CARD_ERROR_OTHER);\r\n }\r\n\r\n return displayErrors.value.length > 0;\r\n }\r\n}\r\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (displayErrors.value.length > 0 && !_ctx.paymentSuccessful)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"px-[30px] py-[20px] mb-2 border-2 rounded bg-red-100 mt-4 w-100\",\n innerHTML: displayErrors.value\n }, null, 8, _hoisted_2))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","\r\n\r\n","import script from \"./IQPaymentError.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./IQPaymentError.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, withCtx as _withCtx, createVNode as _createVNode, createBlock as _createBlock, normalizeProps as _normalizeProps, guardReactiveProps as _guardReactiveProps, vShow as _vShow, withDirectives as _withDirectives, resolveComponent as _resolveComponent } from \"vue\"\n\nconst _hoisted_1 = { class: \"text-xl-bold\" }\nconst _hoisted_2 = { class: \"text-xl pb-6\" }\nconst _hoisted_3 = {\n key: 0,\n class: \"mx-2 text-sm-bold\"\n}\nconst _hoisted_4 = { class: \"my-12 mx-6\" }\nconst _hoisted_5 = { class: \"text-xl-bold text-center\" }\nconst _hoisted_6 = { class: \"text-xl pb-6 text-center\" }\nconst _hoisted_7 = { class: \"text-center\" }\nconst _hoisted_8 = {\n key: 0,\n class: \"text-xl4-bold\"\n}\nconst _hoisted_9 = { class: \"text-m ml-1\" }\nconst _hoisted_10 = [\"innerHTML\"]\nconst _hoisted_11 = { class: \"my-6\" }\nconst _hoisted_12 = { class: \"w-full\" }\nconst _hoisted_13 = [\"onclick\"]\nconst _hoisted_14 = { class: \"w-full\" }\nconst _hoisted_15 = [\"onclick\"]\n\nimport { ref, onMounted, computed, watch } from 'vue';\r\nimport { IFormStep, IQuote, SubmitQuote } from '@/interfaces';\r\nimport {\r\n useFormStore,\r\n useReferenceDataStore,\r\n usePaymentStore,\r\n useConfigSettingsStore,\r\n IQConfigSettings,\r\n SettingCategory,\r\n} from '@/store';\r\nimport { PaymentTypes } from '@/enums/payment-types.enum';\r\nimport SectionFrame from '@/components/SectionFrame/SectionFrame.vue';\r\nimport PaymentSection from '@/components/PaymentSection/PaymentSection.vue';\r\nimport { JP_GENERIC_CODE } from '@/constants/jeopardy-codes.const';\r\nimport { RichText } from '@sitecore-jss/sitecore-jss-vue';\r\nimport DollarAmount from '@/components/DollarAmount/DollarAmount.vue';\r\nimport RACQFormKit from '@/components/RACQFormKit/RACQFormKit.vue';\r\nimport useFormInputData from '@/composables/useFormInputData';\r\nimport { PaymentFrequency } from '@/enums/payment-frequency';\r\nimport { toCurrency } from '@/utils/convert';\r\nimport { useI18n } from 'vue-i18n';\r\nimport { QuoteTypes } from '@/constants/quote-types.const';\r\nimport IQPaymentError from '@/components/IQPaymentError/IQPaymentError.vue';\r\nimport { getInsuranceTypeDisplayName } from '@/utils/editable-steps/quote-content-builder';\r\nimport { RACQ } from '@/constants/general-words.const';\r\nimport { formatHomeLocationDetails } from '@/utils/editable-steps/quote-content-builder';\r\nimport PaymentFrequencyDropdown from '../PaymentFrequencyDropdown/PaymentFrequencyDropdown.vue';\r\nimport InformationBox from '../InformationBox/InformationBox.vue';\r\nimport ExpandableContent from '../ExpandableContent/ExpandableContent.vue';\r\nimport ModalDialog from '../ModalDialog/ModalDialog.vue';\r\nimport PaymentMethods from '../PaymentMethods/PaymentMethods.vue';\r\n\r\n// Define props and emitters\r\n// ------------------------------------------------------------- //\r\n\r\nexport const emitUpdatePaymentDetails = 'emitUpdatePaymentDetails';\r\nexport const emitSubmitQuote = 'emitSubmitQuote';\r\nexport const emitTermsAndConditionsChanged = 'emitTermsAndConditionsChanged';\r\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'IQPaymentPanel',\n props: {\n step: {},\n quote: {},\n checkAutoRenewAvailable: { type: Boolean },\n paymentSuccessful: { type: Boolean },\n paymentFailedErrorMessage: {},\n paymentPanelContent: {},\n errors: {}\n },\n emits: [emitUpdatePaymentDetails, emitSubmitQuote, emitTermsAndConditionsChanged],\n setup(__props: any, { emit: __emit }) {\n\r\nconst props = __props;\r\n// Define Store\r\n// ------------------------------------------------------------- //\r\nconst formStore = useFormStore();\r\nconst paymentStore = usePaymentStore();\r\nconst refStore = useReferenceDataStore();\r\nconst configSettingsConfigStore = useConfigSettingsStore();\r\n\r\nconst translation = useI18n();\r\nconst dictionary: Record = translation.getLocaleMessage('en') as any;\r\n\r\nconst emit = __emit;\r\nconst paymentFrequencyPriceSuffix = ref('');\r\n\r\n// Define Composables\r\n// ------------------------------------------------------------- //\r\nconst { formInputData } = useFormInputData(props.step.formInputs!);\r\nconst premiumLabel = computed(() => {\r\n if (!props.quote || !props.quote.insuranceQuoteSummary || !props.quote.discounts) return;\r\n\r\n let value = isAnnual.value\r\n ? props.step.formInputs?.annualPremiumLabel?.label?.value\r\n : props.step.formInputs?.monthlyPremiumLabel?.label?.value;\r\n value = value.replace('{{annualPremium}}', toCurrency(props.quote?.insuranceQuoteSummary?.yearlyAnnualPremium));\r\n value = value.replace('{{instalmentFee}}', toCurrency(props.quote?.insuranceQuoteSummary?.payByTheMonthFee / 12));\r\n\r\n if (isAnnual.value) {\r\n value = value.replace(\r\n '{{onlineDiscount}}',\r\n dictionary.IQ_OnlineDiscount.replace(\r\n '$#value#',\r\n toCurrency(props.quote.discounts?.totalYearlyOnlineDiscountAmount?.value)\r\n )\r\n );\r\n } else {\r\n value = value.replace(\r\n '{{onlineDiscount}}',\r\n dictionary.IQ_OnlineDiscount.replace(\r\n '$#value#',\r\n toCurrency(props.quote.discounts?.totalMonthlyOnlineDiscountAmount?.value)\r\n )\r\n );\r\n }\r\n\r\n return {\r\n value,\r\n };\r\n});\r\n\r\n// Define Component state\r\n// ------------------------------------------------------------- //\r\nconst formData = ref>({});\r\nconst insuranceType = ref();\r\nconst quoteDisplayTitle = ref();\r\nconst quoteRiskAddress = ref();\r\nconst isAnnual = computed(() => paymentStore.selectedPaymentFrequency == PaymentFrequency.Annually);\r\nconst autoRenewIsEnabled = ref(false);\r\nconst showPayLaterModal = ref(false);\r\n\r\nconst premium = computed(() => {\r\n if (isAnnual.value) {\r\n return props.quote?.insuranceQuoteSummary?.yearlyAnnualPremium;\r\n } else {\r\n return props.quote?.insuranceQuoteSummary?.monthlyDeposit;\r\n }\r\n});\r\n\r\nconst paymentFrequencyContent = computed(() => {\r\n let value =\r\n paymentStore.selectedPaymentFrequency === PaymentFrequency.Monthly\r\n ? props.step.formInputs?.paymentFrequencyMonthlyPostContent?.label?.value\r\n : props.step.formInputs?.paymentFrequencyAnnuallyPostContent?.label?.value;\r\n value = value.replace('{{annualAmount}}', toCurrency(props.quote?.insuranceQuoteSummary?.yearlyAnnualPremium));\r\n value = value.replace('{{monthlyAmount}}', toCurrency(props.quote?.insuranceQuoteSummary?.monthlyDeposit));\r\n return value;\r\n});\r\n// Lifecycle hooks\r\n// ------------------------------------------------------------- //\r\nonMounted(async () => {\r\n quoteDisplayTitle.value = getInsuranceTypeDisplayName(dictionary, QuoteTypes[props.quote.quoteType!]);\r\n quoteRiskAddress.value = formatHomeLocationDetails(props.quote as IQuote);\r\n\r\n const submissionRetries = (await configSettingsConfigStore.getSetting(\r\n IQConfigSettings.PaymentSubmissionRetries,\r\n SettingCategory.IQSettings\r\n )) as number;\r\n paymentStore.maxRetries = submissionRetries ?? 3;\r\n await initialisePayment();\r\n});\r\n\r\nwatch(\r\n () => formData.value.paymentTermsAndConditions,\r\n (newValue) => {\r\n paymentStore.disablePaymentPanel = true;\r\n paymentStore.termsAndConditionsAccepted = newValue;\r\n emit(emitTermsAndConditionsChanged, newValue);\r\n }\r\n);\r\nwatch(\r\n () => formData.value.paymentFrequency,\r\n () => {\r\n setPaymentPriceSuffix();\r\n }\r\n);\r\nwatch(() => formData.value.futureRenewal, setAutoRenewPostContent);\r\nwatch(\r\n () => paymentStore.paymentRetryAttempts,\r\n async function () {\r\n //This is done to reset the zebra iframe so payment can be attempted again.\r\n await resetPaymentIframe();\r\n await initialisePayment();\r\n\r\n if (paymentStore.hasExceededMaxPaymentAttempts()) {\r\n formStore.setDisableAllSteps();\r\n }\r\n }\r\n);\r\n\r\n// Define Functions\r\n// ------------------------------------------------------------- //\r\n\r\nasync function initialisePayment() {\r\n if (props.checkAutoRenewAvailable) {\r\n autoRenewIsEnabled.value =\r\n paymentStore.selectedPaymentFrequency == PaymentFrequency.Monthly &&\r\n ((await configSettingsConfigStore.getSetting(\r\n IQConfigSettings.IsHomeAutoRenewalPreferenceEnabled,\r\n SettingCategory.IQSettings\r\n )) as boolean);\r\n }\r\n\r\n /** Set dynamic contents */\r\n paymentStore.submitPaymentCallback = () => onSubmit(false);\r\n paymentStore.disablePaymentPanel = !formData.value.paymentTermsAndConditions;\r\n\r\n reverseMapPaymentDetails();\r\n\r\n setPaymentPriceSuffix();\r\n setDiscountLabel();\r\n setAutoRenewPostContent();\r\n insuranceType.value = await refStore.getInsuranceProductName(QuoteTypes[props.quote.quoteType!]);\r\n\r\n /** Map payment details for FZ Iframe */\r\n paymentStore.amount = premium?.value?.toString() ?? '0';\r\n paymentStore.buttonText = props.step.formInputs?.paymentMethod?.fields[0]?.SubmitPaymentButtonLabel?.value;\r\n paymentStore.reference = props.quote?.reference ?? '';\r\n}\r\n\r\nfunction setDiscountLabel() {\r\n const paymentSection = props.step.formInputs?.paymentMethod?.fields[0];\r\n\r\n if (!paymentSection) return; // Safeguard against undefined `paymentSection`\r\n\r\n if (isAnnual.value) {\r\n paymentSection.PayLaterContent.value = paymentSection.PayLaterContent?.value.replace(\r\n '{{onlineDiscount}}',\r\n dictionary.IQ_OnlineDiscount.replace(\r\n '$#value#',\r\n toCurrency(props.quote.discounts?.totalYearlyOnlineDiscountAmount?.value)\r\n )\r\n );\r\n } else {\r\n paymentSection.PayLaterContent.value = paymentSection.PayLaterContent?.value.replace(\r\n '{{onlineDiscount}}',\r\n dictionary.IQ_OnlineDiscount.replace(\r\n '$#value#',\r\n toCurrency(props.quote.discounts?.totalMonthlyOnlineDiscountAmount?.value)\r\n )\r\n );\r\n }\r\n}\r\n\r\nfunction setPaymentPriceSuffix() {\r\n const optionsValue = props.step.formInputs?.paymentFrequencyPricePrefix?.options.value;\r\n if (!optionsValue) return;\r\n\r\n const pricePrefixes = Object.fromEntries(new URLSearchParams(optionsValue));\r\n const enumKey = PaymentFrequency[formData.value.paymentFrequency];\r\n\r\n paymentFrequencyPriceSuffix.value = pricePrefixes[enumKey] || '';\r\n}\r\n\r\nasync function setAutoRenewPostContent() {\r\n if (!autoRenewIsEnabled.value) return;\r\n const value =\r\n formData.value.futureRenewal == 'true'\r\n ? props.step.formInputs?.futureRenewalOn?.label?.value\r\n : props.step.formInputs?.futureRenewalOff?.label?.value;\r\n // Show post content\r\n formStore.updateInput({\r\n inputId: 'futureRenewal',\r\n updates: {\r\n showPostContent: true,\r\n postContent: {\r\n value,\r\n },\r\n },\r\n });\r\n}\r\n\r\nfunction reverseMapPaymentDetails() {\r\n formData.value.paymentFrequency = props.quote.paymentFrequency;\r\n formData.value.futureRenewal = props.quote.renewalPreference?.toString();\r\n}\r\n\r\nfunction mapPaymentDetails() {\r\n emit(\r\n emitUpdatePaymentDetails,\r\n formData.value.paymentFrequency,\r\n formData.value.futureRenewal,\r\n paymentStore.selectedPaymentMethod\r\n );\r\n}\r\n\r\nasync function resetPaymentIframe() {\r\n paymentStore.reference = '';\r\n}\r\n\r\nasync function onSubmit(isPayLater?: boolean) {\r\n try {\r\n if (paymentStore.paymentRetryAttempts >= paymentStore.maxRetries) return;\r\n\r\n mapPaymentDetails();\r\n\r\n let submitQuote = null;\r\n\r\n if (isPayLater) {\r\n if (paymentStore.selectedPaymentFrequency) {\r\n submitQuote = new SubmitQuote().createSubmitQuoteUsingPayLater(paymentStore.selectedPaymentFrequency);\r\n showPayLaterModal.value = false;\r\n }\r\n } else {\r\n switch (props.quote.paymentType) {\r\n case PaymentTypes.CreditCard:\r\n submitQuote = new SubmitQuote().createSubmitQuoteUsingCardPaymentDetails(paymentStore.cardDetails);\r\n break;\r\n case PaymentTypes.BankAccount:\r\n if (paymentStore.directDebitDetails) {\r\n submitQuote = new SubmitQuote().createSubmitQuoteUsingBankAccountDetails(paymentStore.directDebitDetails);\r\n }\r\n break;\r\n }\r\n }\r\n\r\n if (!submitQuote) {\r\n throw JP_GENERIC_CODE;\r\n }\r\n\r\n emit(emitSubmitQuote, submitQuote);\r\n } catch (jPCode: any) {\r\n formStore.showLoadingForCurrentStep(false);\r\n }\r\n}\r\n\r\nfunction onShowModal() {\r\n showPayLaterModal.value = true;\r\n}\r\n\r\nfunction onModalClose(e: any) {\r\n showPayLaterModal.value = e;\r\n}\r\n\nreturn (_ctx: any,_cache: any) => {\n const _component_FormKit = _resolveComponent(\"FormKit\")!\n\n return (_openBlock(), _createBlock(_component_FormKit, {\n modelValue: formData.value,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((formData).value = $event)),\n type: \"form\",\n onSubmit: () => {}\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_1, _toDisplayString(`${_unref(RACQ)} ${quoteDisplayTitle.value}`), 1),\n _createElementVNode(\"div\", _hoisted_2, _toDisplayString(quoteRiskAddress.value), 1),\n _createVNode(DollarAmount, {\n amount: premium.value,\n showStarSign: false\n }, {\n default: _withCtx(() => [\n (paymentFrequencyPriceSuffix.value)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_3, _toDisplayString(paymentFrequencyPriceSuffix.value), 1))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n }, 8, [\"amount\"]),\n _createVNode(PaymentFrequencyDropdown),\n _createVNode(_unref(RichText), {\n class: \"text-sm my-6\",\n field: premiumLabel.value\n }, null, 8, [\"field\"]),\n _createVNode(InformationBox, {\n type: \"info\",\n description: paymentFrequencyContent.value,\n class: \"my-6\"\n }, null, 8, [\"description\"]),\n _createVNode(ExpandableContent, {\n class: \"input-spacing\",\n toggleButtonExpandText: _ctx.step.formInputs?.needToPayLater?.toggleButtonExpandText?.value,\n toggleButtonCollapseText: _ctx.step.formInputs?.needToPayLater?.toggleButtonCollapseText?.value,\n dynamicExpander: false\n }, {\n introContent: _withCtx(() => [\n _createVNode(_unref(RichText), {\n field: { value: _ctx.step.formInputs?.needToPayLater?.introContent?.value }\n }, null, 8, [\"field\"])\n ]),\n conditionalContent: _withCtx(() => [\n _createVNode(_unref(RichText), {\n field: { value: _ctx.step.formInputs?.needToPayLater?.conditionalContent?.value }\n }, null, 8, [\"field\"]),\n _createElementVNode(\"button\", {\n onclick: onShowModal,\n type: \"button\",\n class: \"btn btn-primary w-full md:w-max mt-5 !py-1\"\n }, _toDisplayString(_ctx.step.formInputs?.payLaterModal?.modalTriggerLinkText?.value), 1)\n ]),\n _: 1\n }, 8, [\"toggleButtonExpandText\", \"toggleButtonCollapseText\"]),\n (autoRenewIsEnabled.value)\n ? (_openBlock(), _createBlock(SectionFrame, {\n key: 0,\n sectionTitle: _unref(formInputData)('futureRenewalTitle')?.label,\n titleClasses: \"text-xl-bold\",\n class: \"mb-6\"\n }, {\n sectionFrameContent: _withCtx(() => [\n _createVNode(RACQFormKit, {\n bindings: _unref(formInputData)('futureRenewal'),\n class: \"mt-6\"\n }, null, 8, [\"bindings\"])\n ]),\n _: 1\n }, 8, [\"sectionTitle\"]))\n : _createCommentVNode(\"\", true),\n _createVNode(SectionFrame, {\n sectionTitle: _unref(formInputData)('paymentTermsAndConditionsTitle')?.label,\n titleClasses: \"text-xl-bold\",\n class: \"mb-6\"\n }, {\n sectionFrameContent: _withCtx(() => [\n _createVNode(RACQFormKit, {\n bindings: _unref(formInputData)('paymentTermsAndConditions'),\n class: \"mt-6\"\n }, null, 8, [\"bindings\"])\n ]),\n _: 1\n }, 8, [\"sectionTitle\"]),\n _createVNode(IQPaymentError, {\n step: _ctx.step,\n paymentSuccessful: _ctx.paymentSuccessful,\n errors: _ctx.errors\n }, null, 8, [\"step\", \"paymentSuccessful\", \"errors\"]),\n _withDirectives(_createVNode(SectionFrame, {\n sectionTitle: _ctx.step.formInputs?.paymentMethod?.SectionTitle?.value\n }, {\n sectionFrameContent: _withCtx(() => [\n _createVNode(PaymentSection, _normalizeProps(_guardReactiveProps(_ctx.step.formInputs?.paymentMethod?.fields[0])), null, 16)\n ]),\n _: 1\n }, 8, [\"sectionTitle\"]), [\n [_vShow, !_ctx.paymentSuccessful && !_unref(paymentStore).disablePaymentPanel && _unref(paymentStore).termsAndConditionsAccepted]\n ]),\n _createVNode(ModalDialog, {\n modelValue: showPayLaterModal.value,\n showXCloseButton: true,\n closeOnEsc: true,\n dialogClass: \"w-[456px] max-w-[456px] h-[620px] max-h-[620px] rounded-lg\",\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = (value) => onModalClose(value))\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_4, [\n _cache[2] || (_cache[2] = _createElementVNode(\"div\", { class: \"text-center text-lg-bold my-6\" }, \"Pay later\", -1)),\n _createElementVNode(\"div\", null, [\n _createElementVNode(\"div\", _hoisted_5, _toDisplayString(`${_unref(RACQ)} ${quoteDisplayTitle.value}`), 1),\n _createElementVNode(\"div\", _hoisted_6, _toDisplayString(quoteRiskAddress.value), 1),\n _createElementVNode(\"div\", _hoisted_7, [\n _createVNode(DollarAmount, {\n amount: premium.value,\n showStarSign: false\n }, {\n default: _withCtx(() => [\n (paymentFrequencyPriceSuffix.value)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_8, _toDisplayString(paymentFrequencyPriceSuffix.value), 1))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"span\", _hoisted_9, _toDisplayString(_unref(paymentStore).selectedPaymentFrequencyDisplayText), 1)\n ]),\n _: 1\n }, 8, [\"amount\"])\n ]),\n _createVNode(InformationBox, {\n type: \"warning\",\n description: _ctx.step.formInputs?.payLaterInfoBox?.content?.value,\n class: \"my-6\"\n }, null, 8, [\"description\"]),\n _createElementVNode(\"div\", {\n class: \"richtext\",\n innerHTML: _ctx.step.formInputs?.payLaterModal?.modalBody?.value\n }, null, 8, _hoisted_10),\n _createElementVNode(\"div\", _hoisted_11, [\n _createVNode(PaymentMethods, {\n paymentMethods: _ctx.step.formInputs?.paymentMethods?.paymentMethods\n }, null, 8, [\"paymentMethods\"])\n ]),\n _createVNode(InformationBox, {\n type: \"warning\",\n description: _ctx.step.formInputs?.payLaterPaymentDueInfoBox?.content?.value,\n class: \"my-6\"\n }, null, 8, [\"description\"])\n ]),\n _createElementVNode(\"div\", _hoisted_12, [\n _createElementVNode(\"button\", {\n onclick: () => onSubmit(true),\n type: \"button\",\n class: \"btn btn-primary w-full mt-5 !py-1\"\n }, _toDisplayString(_ctx.step.formInputs?.payLaterModal?.callToActionButtonText?.value), 9, _hoisted_13)\n ]),\n _createElementVNode(\"div\", _hoisted_14, [\n _createElementVNode(\"button\", {\n onclick: () => onModalClose(false),\n type: \"button\",\n class: \"btn btn-secondary w-full mt-5 !py-1\"\n }, _toDisplayString(_ctx.step.formInputs?.payLaterModal?.closeButtonText?.value), 9, _hoisted_15)\n ])\n ])\n ]),\n _: 1\n }, 8, [\"modelValue\"])\n ]),\n _: 1\n }, 8, [\"modelValue\"]))\n}\n}\n\n})","\r\n\r\n\r\n\r\n\r\n","import script from \"./IQPaymentPanel.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./IQPaymentPanel.vue?vue&type=script&lang=ts&setup=true\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, renderList as _renderList, Fragment as _Fragment, renderSlot as _renderSlot, createTextVNode as _createTextVNode, normalizeClass as _normalizeClass } from \"vue\"\n\nconst _hoisted_1 = [\"data-information-box-type\"]\nconst _hoisted_2 = {\n key: 0,\n class: \"w-4 h-6 flex-col justify-center items-start gap-2.5 inline-flex\"\n}\nconst _hoisted_3 = [\"src\", \"alt\"]\nconst _hoisted_4 = { class: \"flex flex-col w-full\" }\nconst _hoisted_5 = {\n key: 0,\n class: \"text-racq-dark-grey text-base-bold\"\n}\nconst _hoisted_6 = [\"innerHTML\"]\nconst _hoisted_7 = {\n key: 2,\n class: \"flex flex-row gap-4 mt-1\"\n}\nconst _hoisted_8 = [\"href\", \"innerHTML\"]\n\nimport { IInformationBox } from '@/interfaces/forms/information-box.interface';\r\nimport { computed } from 'vue';\r\n\r\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'InformationBox',\n props: {\n type: {},\n title: {},\n description: {},\n links: {},\n hideIcon: { type: Boolean }\n },\n setup(__props: any) {\n\r\nconst props = __props;\r\n\r\nconst iconMap = {\r\n info: require('@/assets/icons/info-information.svg'),\r\n warning: require('@/assets/icons/info-warning.svg'),\r\n error: require('@/assets/icons/info-error.svg'),\r\n success: require('@/assets/icons/info-success.svg'),\r\n};\r\n\r\nconst backgroundColorMap = {\r\n info: 'bg-racq-info-blue',\r\n warning: 'bg-racq-info-yellow',\r\n error: 'bg-racq-info-red',\r\n success: 'bg-racq-info-green',\r\n};\r\n\r\nconst icon = computed(() => iconMap[props.type]);\r\nconst backgroundColor = computed(() => backgroundColorMap[props.type]);\r\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass(['flex w-full px-6 py-5 rounded gap-4', backgroundColor.value]),\n \"data-information-box-type\": _ctx.type\n }, [\n (!!icon.value && !_ctx.hideIcon)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_2, [\n _createElementVNode(\"img\", {\n src: icon.value,\n alt: `${_ctx.type} icon`,\n class: \"w-4 h-4\"\n }, null, 8, _hoisted_3)\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_4, [\n (!_ctx.$slots.infoBoxContent && _ctx.title)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_5, _toDisplayString(_ctx.title), 1))\n : _createCommentVNode(\"\", true),\n (!_ctx.$slots.infoBoxContent && _ctx.description)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: \"text-racq-dark-grey text-m mt-[2px]\",\n innerHTML: _ctx.description\n }, null, 8, _hoisted_6))\n : _createCommentVNode(\"\", true),\n (!_ctx.$slots.infoBoxContent && _ctx.links)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.links, (link, index) => {\n return (_openBlock(), _createElementBlock(\"a\", {\n key: index,\n href: link.url,\n class: \"text-m\",\n innerHTML: link.title\n }, null, 8, _hoisted_8))\n }), 128))\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.$slots.infoBoxContent)\n ? _renderSlot(_ctx.$slots, \"infoBoxContent\", {\n key: 3,\n class: \"flex flex-col w-full\"\n }, () => [\n _cache[0] || (_cache[0] = _createTextVNode(\" [Named slot for info box content (infoBoxContent)] \"))\n ])\n : _createCommentVNode(\"\", true)\n ])\n ], 10, _hoisted_1))\n}\n}\n\n})","\r\n\r\n\r\n","import script from \"./InformationBox.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./InformationBox.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, withCtx as _withCtx } from \"vue\"\n\nconst _hoisted_1 = { id: \"jeopardy-container\" }\nconst _hoisted_2 = {\n key: 0,\n class: \"sm:mt-0 md:mt-8 lg:mt-14\"\n}\nconst _hoisted_3 = { class: \"flex-col justify-start items-start gap-6 inline-flex w-full\" }\nconst _hoisted_4 = {\n key: 0,\n class: \"justify-start items-start gap-4 inline-flex\"\n}\nconst _hoisted_5 = { class: \"grow shrink basis-0 flex-col justify-start items-start gap-2 inline-flex\" }\nconst _hoisted_6 = { class: \"self-stretch text-racq-dark-grey text-xl-bold\" }\nconst _hoisted_7 = { class: \"self-stretch text-racq-dark-grey text-base text-block\" }\nconst _hoisted_8 = {\n key: 1,\n class: \"block w-full\"\n}\nconst _hoisted_9 = {\n id: \"jpCode\",\n class: \"hidden\"\n}\nconst _hoisted_10 = {\n key: 2,\n class: \"block w-full\"\n}\nconst _hoisted_11 = {\n key: 3,\n class: \"self-stretch bg-racq-anti-flash-white rounded-md flex-col justify-start items-start flex\"\n}\nconst _hoisted_12 = {\n key: 4,\n class: \"self-stretch bg-racq-anti-flash-white rounded-md flex-col justify-start items-start flex\"\n}\nconst _hoisted_13 = { class: \"self-stretch pt-5 rounded justify-center items-center gap-2.5 inline-flex\" }\nconst _hoisted_14 = [\"src\"]\nconst _hoisted_15 = {\n key: 0,\n class: \"self-stretch pt-4 pb-6 flex-col justify-center items-center flex\"\n}\nconst _hoisted_16 = { class: \"px-5 flex-col justify-start items-center gap-4 flex racq-max-w-lg\" }\nconst _hoisted_17 = { class: \"text-center text-racq-dark-grey text-lg-bold\" }\nconst _hoisted_18 = { class: \"text-center text-dark-grey-text text-m\" }\nconst _hoisted_19 = {\n key: 1,\n class: \"self-stretch h-5 px-8 justify-start items-start gap-6 inline-flex\"\n}\nconst _hoisted_20 = {\n key: 2,\n class: \"self-stretch pt-4 pb-6 rounded justify-center items-center gap-2.5 inline-flex\"\n}\nconst _hoisted_21 = { class: \"grow shrink basis-0 flex-col justify-start items-center gap-2.5 inline-flex racq-max-w-lg\" }\nconst _hoisted_22 = { class: \"text-center text-racq-dark-grey text-lg-bold\" }\nconst _hoisted_23 = { class: \"text-center text-dark-grey-text text-m\" }\nconst _hoisted_24 = { class: \"flex-col justify-start items-center gap-4 flex\" }\nconst _hoisted_25 = [\"href\"]\nconst _hoisted_26 = {\n key: 3,\n class: \"self-stretch h-5 px-8 justify-start items-start gap-6 inline-flex\"\n}\nconst _hoisted_27 = {\n key: 4,\n class: \"self-stretch pt-4 pb-6 flex-col justify-center items-center flex\"\n}\nconst _hoisted_28 = { class: \"px-5 flex-col justify-start items-center gap-4 flex racq-max-w-lg\" }\nconst _hoisted_29 = { class: \"text-center text-racq-dark-grey text-lg-bold\" }\nconst _hoisted_30 = { class: \"text-center text-dark-grey-text text-m\" }\nconst _hoisted_31 = {\n key: 5,\n class: \"form-buttons w-full\"\n}\n\nimport { useRoute } from 'vue-router';\r\nimport { watch, computed, ref } from 'vue';\r\nimport FormStep from '@/components/FormStep/FormStep.vue';\r\nimport { FormKit } from '@formkit/vue';\r\nimport { Field, RichText } from '@sitecore-jss/sitecore-jss-vue';\r\nimport { LinkField } from '@sitecore-jss/sitecore-jss-vue/types/components/Link';\r\nimport { useJeopardyStore, useLiveChatStore, useFormStore } from '@/store';\r\nimport { scrollToElement } from '@/utils/dom-helpers';\r\nimport AccountLoginInfoBox from '@/components/AccountLoginInfoBox/AccountLoginInfoBox.vue';\r\nimport { JP_LOGGEDOUT } from '@/constants/jeopardy-codes.const';\r\n\r\n// Define props and state\r\n// ------------------------------------------------------------- //\r\n\r\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'JeopardyV2',\n props: {\n fields: {},\n testParams: {}\n },\n setup(__props: any) {\n\r\nconst props = __props;\r\n\r\nconst route = useRoute();\r\n\r\n// Initialise Pinia store/s\r\n// ------------------------------------------------------------- //\r\nconst jpStore = useJeopardyStore();\r\nconst formStore = useFormStore();\r\nconst liveChatStore = useLiveChatStore();\r\n\r\n// Computed properties\r\n// ------------------------------------------------------------- //\r\n\r\nconst fields = computed(() => props.fields);\r\nconst jpText = computed(() => jpStore.jpText);\r\nconst jpTextLoaded = computed(() => jpStore.jpTextLoaded);\r\nconst jpHeading = computed(() => jpStore.jpHeading);\r\nconst showJeopardy = computed(() => jpStore.showJeopardy);\r\nconst isChatEnabled = computed(() => jpStore.isChatEnabled);\r\nconst isChatLoading = computed(() => jpStore.isChatLoading);\r\nconst isCallBackVisible = computed(() => jpStore.isCallBackVisible);\r\nconst isCallUsVisible = computed(() => jpStore.isCallUsVisible);\r\nconst backBtnText = computed(() => jpStore.backBtnText);\r\nconst isSessionTimeout = computed(() => JP_LOGGEDOUT == jpStore.jpCode);\r\nconst backBtnDisabled = computed(() => jpStore.backBtnDisabled || isSessionTimeout.value);\r\nconst callBackFormLink = computed(\r\n () =>\r\n (props.fields.callBackFormLink as LinkField)?.value?.href +\r\n '?policyid=' +\r\n (route?.query?.policyId ?? route?.query?.policyNumber)\r\n);\r\n\r\n// Component setup\r\n// ------------------------------------------------------------- //\r\n\r\nif (props.testParams) {\r\n // props.testParams is only populated via storybook / tests to set initial state\r\n jpStore.setChatLoading(props.testParams.isChatLoading);\r\n jpStore.showJeopardyPanel({\r\n isChatEnabled: props.testParams.isChatEnabled,\r\n isCallBackVisible: props.testParams.isCallBackVisible,\r\n isCallUsVisible: props.testParams.isCallUsVisible,\r\n jpCode: props.testParams.jpCode,\r\n });\r\n}\r\n\r\n// Lifecycle Hooks\r\n// ------------------------------------------------------------- //\r\n\r\nwatch(\r\n () => jpStore.showJeopardy,\r\n (newValue) => {\r\n if (jpStore.showDynamic) {\r\n setJeopardyFieldsDynamic();\r\n } else {\r\n setJeopardyFieldsDefault();\r\n }\r\n if (newValue) {\r\n scrollToElement('#jeopardy-container', 500, -100);\r\n }\r\n }\r\n);\r\n\r\n// Functions\r\n// ------------------------------------------------------------- //\r\n\r\n/**\r\n * Sets the fields on the jeopardy to the one loaded into jpDynamicPanelResult.\r\n */\r\nfunction setJeopardyFieldsDynamic() {\r\n setJeopardyFields(jpStore.jpDynamicPanelResult);\r\n}\r\n\r\n/**\r\n * Sets the fields on the jeopardy to the default.\r\n */\r\nfunction setJeopardyFieldsDefault() {\r\n setJeopardyFields(jpStore.jpDefaultPanelResult);\r\n}\r\n\r\nfunction setJeopardyFields(jpPanelResult: any) {\r\n fields.value.liveChatHeading.value = jpPanelResult.item.liveChatHeading.value;\r\n fields.value.liveChatContent.value = jpPanelResult.item.liveChatContent.value;\r\n fields.value.liveChatButtonText.value = jpPanelResult.item.liveChatButtonText.value;\r\n fields.value.callUsHeading.value = jpPanelResult.item.callUsHeading.value;\r\n fields.value.callUsContent.value = jpPanelResult.item.callUsContent.value;\r\n fields.value.callUsButtonLabel.value = jpPanelResult.item.callUsButtonLabel.value;\r\n fields.value.callUsNumber.value = jpPanelResult.item.callUsNumber.value;\r\n fields.value.callBackHeading.value = jpPanelResult.item.callBackHeading.value;\r\n fields.value.callBackContent.value = jpPanelResult.item.callBackContent.value;\r\n fields.value.callBackButtonText.value = jpPanelResult.item.callBackButtonText.value;\r\n fields.value.callBackFormLink.value = jpPanelResult.item.callBackFormLink.value;\r\n}\r\n\r\nfunction startChat() {\r\n liveChatStore.startChat();\r\n}\r\n\r\nfunction btnBackClick() {\r\n const activeStep = formStore.inScopeSteps.findIndex((item) => item.isActive);\r\n formStore.scrollToStep(activeStep == -1 ? 0 : activeStep);\r\n jpStore.btnBackClick();\r\n}\r\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (showJeopardy.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n _createVNode(FormStep, {\n step: _unref(jpStore).step\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_3, [\n (jpTextLoaded.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [\n _createElementVNode(\"div\", _hoisted_5, [\n _createElementVNode(\"h3\", _hoisted_6, _toDisplayString(jpHeading.value), 1),\n _createElementVNode(\"div\", _hoisted_7, [\n _createVNode(_unref(RichText), {\n field: { value: jpText.value }\n }, null, 8, [\"field\"])\n ])\n ])\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_8, _cache[0] || (_cache[0] = [\n _createElementVNode(\"div\", { class: \"w-32 h-8 animate-pulse bg-racq-pale-blue-border mb-3\" }, null, -1),\n _createElementVNode(\"div\", { class: \"w-full h-6 animate-pulse bg-racq-pale-blue-border mb-3\" }, null, -1),\n _createElementVNode(\"div\", { class: \"w-1/2 h-6 animate-pulse bg-racq-pale-blue-border\" }, null, -1)\n ]))),\n _createElementVNode(\"span\", _hoisted_9, _toDisplayString(_unref(jpStore).jpCode), 1),\n (isSessionTimeout.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [\n _createVNode(AccountLoginInfoBox, { fields: fields.value }, null, 8, [\"fields\"])\n ]))\n : (isChatLoading.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_11, _cache[1] || (_cache[1] = [\n _createElementVNode(\"div\", { class: \"self-stretch pt-5 rounded justify-center items-center gap-2.5 inline-flex\" }, [\n _createElementVNode(\"div\", { class: \"w-16 h-16 relative bg-racq-pale-blue-border animate-pulse\" })\n ], -1),\n _createElementVNode(\"div\", { class: \"self-stretch pt-4 pb-6 flex-col justify-center items-center flex\" }, [\n _createElementVNode(\"div\", { class: \"px-5 flex-col justify-start items-center gap-4 flex racq-max-w-lg w-full\" }, [\n _createElementVNode(\"div\", { class: \"h-8 w-full bg-racq-pale-blue-border animate-pulse\" }),\n _createElementVNode(\"div\", { class: \"h-4 w-full bg-racq-pale-blue-border animate-pulse\" }),\n _createElementVNode(\"div\", { class: \"h-4 w-full bg-racq-pale-blue-border animate-pulse\" }),\n _createElementVNode(\"div\", { class: \"h-8 w-40 bg-racq-pale-blue-border animate-pulse\" }),\n _createElementVNode(\"div\", { class: \"h-4 w-full bg-racq-pale-blue-border animate-pulse\" })\n ])\n ], -1)\n ])))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_12, [\n _createElementVNode(\"div\", _hoisted_13, [\n _createElementVNode(\"img\", {\n src: require('@/assets/icons/chat.svg'),\n alt: \"Vehicle\",\n role: \"img\",\n class: \"w-16 h-16 relative\"\n }, null, 8, _hoisted_14)\n ]),\n (isChatEnabled.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_15, [\n _createElementVNode(\"div\", _hoisted_16, [\n _createElementVNode(\"div\", _hoisted_17, [\n _createVNode(_unref(RichText), {\n field: fields.value.liveChatHeading\n }, null, 8, [\"field\"])\n ]),\n _createVNode(_unref(FormKit), {\n type: \"button\",\n label: fields.value.liveChatButtonText.value,\n inputClass: \"btn btn-primary\",\n onClick: startChat\n }, null, 8, [\"label\"]),\n _createElementVNode(\"div\", _hoisted_18, [\n _createVNode(_unref(RichText), {\n field: fields.value.liveChatContent\n }, null, 8, [\"field\"])\n ])\n ])\n ]))\n : _createCommentVNode(\"\", true),\n (isChatEnabled.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_19, _cache[2] || (_cache[2] = [\n _createElementVNode(\"div\", { class: \"grow shrink basis-0 h-5 pt-2 flex-col justify-start items-start gap-2.5 inline-flex\" }, [\n _createElementVNode(\"div\", { class: \"h-7 relative border-t border-racq-pale-blue-border w-full\" })\n ], -1)\n ])))\n : _createCommentVNode(\"\", true),\n (isCallUsVisible.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_20, [\n _createElementVNode(\"div\", _hoisted_21, [\n _createElementVNode(\"div\", _hoisted_22, [\n _createVNode(_unref(RichText), {\n field: fields.value.callUsHeading\n }, null, 8, [\"field\"])\n ]),\n _createElementVNode(\"div\", _hoisted_23, [\n _createVNode(_unref(RichText), {\n field: fields.value.callUsContent\n }, null, 8, [\"field\"])\n ]),\n _createElementVNode(\"div\", _hoisted_24, [\n _createElementVNode(\"a\", {\n class: \"text-center text-racq-dark-grey text-xl2-bold no-underline\",\n href: `tel:${fields.value.callUsNumber.value}`\n }, _toDisplayString(fields.value.callUsNumber.value), 9, _hoisted_25),\n _createVNode(_unref(FormKit), {\n type: \"linkButton\",\n inputClass: \"btn btn-primary\",\n text: fields.value.callUsButtonLabel.value,\n href: `tel:${fields.value.callUsNumber.value}`\n }, null, 8, [\"text\", \"href\"])\n ])\n ])\n ]))\n : _createCommentVNode(\"\", true),\n (isCallBackVisible.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_26, _cache[3] || (_cache[3] = [\n _createElementVNode(\"div\", { class: \"grow shrink basis-0 h-5 pt-2 flex-col justify-start items-start gap-2.5 inline-flex\" }, [\n _createElementVNode(\"div\", { class: \"h-7 relative border-t border-racq-pale-blue-border w-full\" })\n ], -1)\n ])))\n : _createCommentVNode(\"\", true),\n (isCallBackVisible.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_27, [\n _createElementVNode(\"div\", _hoisted_28, [\n _createElementVNode(\"div\", _hoisted_29, [\n _createVNode(_unref(RichText), {\n field: fields.value.callBackHeading\n }, null, 8, [\"field\"])\n ]),\n _createVNode(_unref(FormKit), {\n type: \"routerLinkButton\",\n inputClass: \"btn btn-primary\",\n text: fields.value.callBackButtonText.value,\n to: callBackFormLink.value\n }, null, 8, [\"text\", \"to\"]),\n _createElementVNode(\"div\", _hoisted_30, [\n _createVNode(_unref(RichText), {\n field: fields.value.callBackContent\n }, null, 8, [\"field\"])\n ])\n ])\n ]))\n : _createCommentVNode(\"\", true)\n ])),\n (!backBtnDisabled.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_31, [\n _createVNode(_unref(FormKit), {\n type: \"button\",\n label: backBtnText.value,\n disabled: _unref(formStore).disableAllSteps,\n inputClass: \"btn btn-secondary\",\n outerClass: \"\",\n onClick: btnBackClick\n }, null, 8, [\"label\", \"disabled\"])\n ]))\n : _createCommentVNode(\"\", true)\n ])\n ]),\n _: 1\n }, 8, [\"step\"])\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","\r\n\r\n\r\n","import script from \"./JeopardyV2.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./JeopardyV2.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, unref as _unref, createVNode as _createVNode, withCtx as _withCtx, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createTextVNode as _createTextVNode } from \"vue\"\nimport _imports_0 from '@/assets/icons/arrow-right.svg'\n\n\nconst _hoisted_1 = { class: \"py-3\" }\nconst _hoisted_2 = { class: \"grid grid-cols-1 md:grid-cols-2 gap-2 mb-2\" }\nconst _hoisted_3 = [\"src\", \"alt\"]\nconst _hoisted_4 = { class: \"max-w-[170px]\" }\nconst _hoisted_5 = { class: \"m-auto float-right\" }\n\nimport { RichText, Link } from '@sitecore-jss/sitecore-jss-vue';\r\nimport { useI18n } from 'vue-i18n';\r\nimport SectionFrame from '@/components/SectionFrame/SectionFrame.vue';\r\nimport { IFormStep, IQuote } from '@/interfaces';\r\nimport { FormAnalyticsBuilder } from '@/utils/form-analytics-builder';\r\nimport { FormEvents } from '@/enums/form-events.enum';\r\nimport { OrdinalNumbers } from '@/constants/ordinal-numbers.const';\r\n\r\nexport interface IBenefitsBrands {\r\n brands: any[];\r\n benefitsLink: any;\r\n title: string;\r\n subTitle: string;\r\n moreOffersText: string;\r\n}\r\n\r\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'MembershipBenefitsBrands',\n props: {\n brandDetails: {},\n step: {},\n quote: {}\n },\n setup(__props: any) {\n\r\nconst translation = useI18n();\r\n\r\nconst props = __props;\r\n\r\nfunction pushAnalytics(name: string) {\r\n const formAnalytics = new FormAnalyticsBuilder(props.quote, FormEvents.CROSS_SELL_CLICK, translation);\r\n formAnalytics.populateNavigation(name, props.brandDetails?.benefitsLink?.value?.url);\r\n formAnalytics.pushAnalytics();\r\n}\r\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(SectionFrame, {\n sectionTitle: _ctx.brandDetails.title,\n class: \"bg-racq-anti-flash-white\"\n }, {\n sectionFrameContent: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_1, _toDisplayString(_ctx.brandDetails.subTitle), 1),\n _createElementVNode(\"div\", _hoisted_2, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.brandDetails.brands, (brand, index) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n key: index,\n class: \"flex items-center gap-4 rounded border-solid border-racq-pale-blue-border bg-racq-true-white border-2 p-4 mb-1\"\n }, [\n _createElementVNode(\"img\", {\n src: brand.fields.brand.value.src,\n alt: brand.fields.brand.value.alt,\n class: \"h-[56px] w-[56px] mt-1\"\n }, null, 8, _hoisted_3),\n _createElementVNode(\"div\", _hoisted_4, [\n _createVNode(_unref(RichText), {\n field: brand.fields.benefitHeading,\n class: \"text-base-bold overflow-ellipsis whitespace-nowrap overflow-hidden\"\n }, null, 8, [\"field\"]),\n _createVNode(_unref(RichText), {\n field: brand.fields.benefitText,\n class: \"line-clamp-2\"\n }, null, 8, [\"field\"])\n ]),\n _createElementVNode(\"div\", _hoisted_5, [\n (_ctx.brandDetails?.benefitsLink)\n ? (_openBlock(), _createBlock(_unref(Link), {\n key: 0,\n field: _ctx.brandDetails?.benefitsLink,\n onClick: () => pushAnalytics(`${_unref(OrdinalNumbers)[index]} link`)\n }, {\n default: _withCtx(() => _cache[1] || (_cache[1] = [\n _createElementVNode(\"img\", {\n src: _imports_0,\n alt: \"Right pointing arrow icon\",\n class: \"max-w-none h-[20px] w-[21px]\"\n }, null, -1)\n ])),\n _: 2\n }, 1032, [\"field\", \"onClick\"]))\n : _createCommentVNode(\"\", true)\n ])\n ]))\n }), 128))\n ]),\n _createVNode(_unref(Link), {\n field: _ctx.brandDetails?.benefitsLink,\n onClick: _cache[0] || (_cache[0] = () => pushAnalytics(_ctx.brandDetails.moreOffersText))\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.brandDetails.moreOffersText), 1)\n ]),\n _: 1\n }, 8, [\"field\"])\n ]),\n _: 1\n }, 8, [\"sectionTitle\"]))\n}\n}\n\n})","\r\n\r\n\r\n\r\n\r\n","import script from \"./MembershipBenefitsBrands.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./MembershipBenefitsBrands.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./MembershipBenefitsBrands.vue?vue&type=style&index=0&id=5f5ec3d2&lang=css\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nimport { getInsuranceTypeDisplayNameUsingInsuranceQuoteType } from '@/utils/editable-steps/quote-content-builder';\r\nimport { useI18n } from 'vue-i18n';\r\nimport { RichText } from '@sitecore-jss/sitecore-jss-vue';\r\nimport { InsuranceQuoteType } from '@/interfaces';\r\n\r\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'MembershipBenefits',\n props: {\n membershipBenefit: {},\n showIcons: { type: Boolean },\n quoteType: {}\n },\n setup(__props: any) {\n\r\nconst translation = useI18n();\r\nconst dictionary: Record = translation.getLocaleMessage('en') as any;\r\n\r\nconst props = __props;\r\n\r\nfunction formatText(text: string) {\r\n if (!text) return text;\r\n return text.replaceAll('{0}', getInsuranceTypeDisplayNameUsingInsuranceQuoteType(dictionary, props.quoteType));\r\n}\r\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createVNode(_unref(RichText), {\n field: _ctx.membershipBenefit?.fields.membershipBenefitHeading,\n class: \"text-lg-bold pb-5\"\n }, null, 8, [\"field\"]),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.membershipBenefit.benefits, (membershipBenefit, index) => {\n return (_openBlock(), _createElementBlock(\"div\", { key: index }, [\n _createVNode(_unref(RichText), {\n field: { value: membershipBenefit.fields.membershipBenefitHeading.value },\n class: \"text-lg-bold pb-3\"\n }, null, 8, [\"field\"]),\n _createVNode(_unref(RichText), {\n field: { value: formatText(membershipBenefit?.fields.membershipBenefitSummaryText.value) },\n class: \"text-base\"\n }, null, 8, [\"field\"])\n ]))\n }), 128))\n ], 64))\n}\n}\n\n})","\r\n\r\n\r\n","import script from \"./MembershipBenefits.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./MembershipBenefits.vue?vue&type=script&lang=ts&setup=true\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, unref as _unref, createBlock as _createBlock, toDisplayString as _toDisplayString, withCtx as _withCtx, createVNode as _createVNode, resolveComponent as _resolveComponent } from \"vue\"\n\nconst _hoisted_1 = { class: \"px-4 pt-5\" }\nconst _hoisted_2 = { class: \"p-5 rounded bg-racq-white-background flex flex-wrap md:mb-2\" }\nconst _hoisted_3 = { class: \"flex lg:w-4/5\" }\nconst _hoisted_4 = { class: \"mr-4\" }\nconst _hoisted_5 = [\"src\"]\nconst _hoisted_6 = { class: \"text-base mb-4 md:mb-0\" }\nconst _hoisted_7 = [\"data-testid\", \"innerHTML\"]\nconst _hoisted_8 = [\"data-testid\", \"innerHTML\"]\nconst _hoisted_9 = { key: 1 }\nconst _hoisted_10 = { class: \"tooltip-title\" }\nconst _hoisted_11 = [\"innerHTML\"]\n\nimport { ref, onMounted } from 'vue';\r\nimport FormStepFooter from '@/components/FormStepFooter/FormStepFooter.vue';\r\nimport { IFormStep, IQuote } from '@/interfaces';\r\nimport { useFormStore, useJeopardyStore } from '@/store';\r\nimport { replaceLoyaltyReviewBookmarks } from '@/forms/insurance/quote/home-and-contents-purchase/mappings/loyalty-review-mapping';\r\nimport useFormInputData from '@/composables/useFormInputData';\r\nimport { displayLoyaltyReview, loyaltyReviewContent } from '@/utils/display-rules/loyalty-rules';\r\nimport { RichText } from '@sitecore-jss/sitecore-jss-vue';\r\nimport ModalDialog from '../ModalDialog/ModalDialog.vue';\r\n\r\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'MembershipLoyaltyReview',\n props: {\n step: {},\n quote: {},\n originalQuote: {},\n storyBookIgnoreApiMode: { type: Boolean }\n },\n setup(__props: any) {\n\r\nconst formStore = useFormStore();\r\nconst jpStore = useJeopardyStore();\r\n\r\nconst props = __props;\r\n\r\nconst loyaltyLevelResponse = ref();\r\nconst heading = ref('');\r\nconst loyaltyLevelText = ref('');\r\nconst discountText = ref('');\r\nconst newQuoteCostText = ref('');\r\nconst helpText = ref('');\r\n\r\nconst quoteChangedModalData = ref();\r\n\r\nconst showWhyQuoteChangedModal = ref(false);\r\n\r\nconst accountInfoBoxSettings = ref>({\r\n icon: require('@/assets/img/icons/user-icon.svg'),\r\n unauthenticatedButtonText: '',\r\n unauthenticatedGreetings: heading,\r\n params: {\r\n authenticated: false,\r\n firstName: '',\r\n },\r\n});\r\n\r\nonMounted(async () => {\r\n if (!props.quote || !props.quote.quoteType) return;\r\n\r\n quoteChangedModalData.value = props.step.formInputs?.modalWhyHasMyQuoteChanged?.datasource?.fields;\r\n\r\n const { formInputData } = useFormInputData(props.step.formInputs!);\r\n\r\n loyaltyLevelResponse.value = await displayLoyaltyReview(\r\n props.quote as IQuote,\r\n props.originalQuote as IQuote,\r\n props.storyBookIgnoreApiMode //storyBookIgnoreApiMode is used from storybook, api call fails and will not execute following otherwise.\r\n );\r\n\r\n if (!loyaltyLevelResponse.value.skipLoyaltyReviewStep) {\r\n heading.value = replaceLoyaltyReviewBookmarks(\r\n formInputData(loyaltyLevelResponse.value.useHeading).label,\r\n props.quote\r\n );\r\n\r\n loyaltyLevelText.value = replaceLoyaltyReviewBookmarks(\r\n formInputData(loyaltyLevelResponse.value.useLoyaltyText).label,\r\n props.quote\r\n );\r\n\r\n /*\r\n In sitecore 8 this is only used for Car Hire it seems. litDiscount.Text = string.Format(eligibleForFreeCarHire ? CurrentItem.GetFieldValue(\"RVMEntitlementWithHireCar_Text\") : CurrentItem.GetFieldValue(\"RVMEntitlementNoHireCar_Text\"), discount);\r\n A content field called textDiscount will need to be added to any step needing this.\r\n */\r\n discountText.value = replaceLoyaltyReviewBookmarks(\r\n formInputData(loyaltyReviewContent.textDiscount).label,\r\n props.quote\r\n );\r\n\r\n newQuoteCostText.value = replaceLoyaltyReviewBookmarks(\r\n formInputData(loyaltyReviewContent.textNewQuoteCost).label,\r\n props.quote\r\n );\r\n\r\n helpText.value = replaceLoyaltyReviewBookmarks(\r\n formInputData(loyaltyLevelResponse.value.useHelpText).label,\r\n props.quote\r\n );\r\n }\r\n});\r\n\r\nasync function onSubmit() {\r\n try {\r\n formStore.showLoadingForCurrentStep();\r\n formStore.showLoadingForCurrentStep(false);\r\n formStore.goNextStep();\r\n } catch (jPCode: any) {\r\n formStore.showLoadingForCurrentStep(false);\r\n showJeopardyPanel(jPCode);\r\n }\r\n}\r\n\r\nfunction showJeopardyPanel(jpCode: string) {\r\n jpStore.showJeopardyPanel({\r\n jpCode: jpCode,\r\n });\r\n}\r\n\r\nfunction onModalClose(e: any) {\r\n showWhyQuoteChangedModal.value = e;\r\n}\r\n\nreturn (_ctx: any,_cache: any) => {\n const _component_FormKit = _resolveComponent(\"FormKit\")!\n\n return (!loyaltyLevelResponse.value?.skipLoyaltyReviewStep)\n ? (_openBlock(), _createBlock(_component_FormKit, {\n key: 0,\n type: \"form\",\n actions: false,\n incompleteMessage: false,\n onSubmit: onSubmit\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"img\", {\n src: accountInfoBoxSettings.value.icon,\n alt: \"user profile icon\",\n class: \"min-w-12 w-12 min-h-12 h-12\"\n }, null, 8, _hoisted_5)\n ]),\n _createElementVNode(\"div\", _hoisted_6, [\n _createElementVNode(\"span\", {\n \"data-testid\": loyaltyLevelResponse.value?.useHeading,\n innerHTML: heading.value\n }, null, 8, _hoisted_7),\n (loyaltyLevelResponse.value)\n ? (_openBlock(), _createElementBlock(\"span\", {\n key: 0,\n class: \"input-spacing text-base contents\",\n \"data-testid\": loyaltyLevelResponse.value?.useLoyaltyText,\n innerHTML: loyaltyLevelText.value\n }, null, 8, _hoisted_8))\n : _createCommentVNode(\"\", true)\n ])\n ])\n ]),\n (loyaltyLevelResponse.value)\n ? (_openBlock(), _createBlock(_unref(RichText), {\n key: 0,\n class: \"input-spacing text-lg pt-[24px]\",\n field: { value: newQuoteCostText.value },\n \"data-testid\": loyaltyLevelResponse.value?.useNewQuoteCostText\n }, null, 8, [\"field\", \"data-testid\"]))\n : _createCommentVNode(\"\", true),\n (loyaltyLevelResponse.value?.hasQuotePremiumChanged)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [\n _createElementVNode(\"button\", {\n type: \"button\",\n class: \"link text-m\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (showWhyQuoteChangedModal.value = true))\n }, _toDisplayString(quoteChangedModalData.value?.modalTriggerLinkText?.value), 1)\n ]))\n : _createCommentVNode(\"\", true),\n (loyaltyLevelResponse.value && discountText.value)\n ? (_openBlock(), _createBlock(_unref(RichText), {\n key: 2,\n class: \"input-spacing text-lg\",\n field: { value: discountText.value },\n \"data-testid\": loyaltyLevelResponse.value?.discountText\n }, null, 8, [\"field\", \"data-testid\"]))\n : _createCommentVNode(\"\", true),\n (loyaltyLevelResponse.value)\n ? (_openBlock(), _createBlock(_unref(RichText), {\n key: 3,\n class: \"input-spacing text-sm\",\n field: { value: helpText.value },\n \"data-testid\": loyaltyLevelResponse.value?.useHelpText\n }, null, 8, [\"field\", \"data-testid\"]))\n : _createCommentVNode(\"\", true),\n _createVNode(ModalDialog, {\n modelValue: showWhyQuoteChangedModal.value,\n showXCloseButton: true,\n closeOnEsc: false,\n dialogClass: \"tooltip-dialog\",\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = (value) => onModalClose(value))\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_10, _toDisplayString(quoteChangedModalData.value?.modalTitle?.value), 1),\n _createElementVNode(\"div\", {\n class: \"tooltip-body richtext\",\n innerHTML: quoteChangedModalData.value?.modalBody?.value\n }, null, 8, _hoisted_11)\n ]),\n _: 1\n }, 8, [\"modelValue\"])\n ]),\n _createVNode(FormStepFooter, {\n step: _ctx.step,\n btnNextText: _ctx.step.btnNext,\n btnPrevText: _ctx.step.btnPrev\n }, null, 8, [\"step\", \"btnNextText\", \"btnPrevText\"])\n ]),\n _: 1\n }))\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","\r\n\r\n\r\n","import script from \"./MembershipLoyaltyReview.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./MembershipLoyaltyReview.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","\r\n\r\n\r\n\r\n","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, withModifiers as _withModifiers, withKeys as _withKeys, createCommentVNode as _createCommentVNode, renderSlot as _renderSlot, createTextVNode as _createTextVNode, normalizeClass as _normalizeClass } from \"vue\"\n\nimport { ref, watch, onMounted, onBeforeUnmount, nextTick, computed } from 'vue';\r\n\r\nconst escapeKey: string = 'Escape';\r\nconst keydown = 'keydown' as const;\r\n\r\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'ModalDialog',\n props: {\n showXCloseButton: { type: Boolean },\n closeOnEsc: { type: Boolean },\n modelValue: { type: Boolean },\n dialogClass: {},\n size: {}\n },\n emits: [\"update:modelValue\"],\n setup(__props: any, { expose: __expose, emit: __emit }) {\n\r\nconst props = __props;\r\n\r\nconst screenClass = computed(() => {\r\n // Size default to sm\r\n let screenClass = 'md:racq-max-w-xl md:max-h-[620px]';\r\n if (props.size) {\r\n switch (props.size) {\r\n case 'md':\r\n screenClass = 'md:racq-max-w-xl3 md:max-h-[620px]';\r\n break;\r\n case 'lg':\r\n screenClass = 'md:racq-max-w-xl4 md:max-h-[656px]';\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n return screenClass;\r\n});\r\n\r\nconst emit = __emit;\r\n\r\nconst emitUpdateModelValue = (emitValue: boolean) => {\r\n emit('update:modelValue', emitValue);\r\n};\r\n\r\nconst dialog = ref(null);\r\n\r\nconst handleEscapeKey = (event: KeyboardEvent) => {\r\n if (event.key === escapeKey && !props.closeOnEsc) {\r\n event.preventDefault();\r\n }\r\n};\r\n\r\nconst open = async () => {\r\n if (dialog.value) {\r\n scroll_lock();\r\n dialog.value.showModal();\r\n if (!props.closeOnEsc) {\r\n dialog.value.addEventListener(keydown, handleEscapeKey);\r\n }\r\n await nextTick(() => {\r\n dialog.value?.focus();\r\n });\r\n }\r\n};\r\n\r\nconst close = () => {\r\n if (dialog.value) {\r\n scroll_lock(false);\r\n dialog.value.removeEventListener(keydown, handleEscapeKey);\r\n dialog.value.close();\r\n emitUpdateModelValue(false);\r\n }\r\n};\r\n\r\nconst handleClose = () => {\r\n emitUpdateModelValue(false);\r\n};\r\n\r\nwatch(\r\n () => props.modelValue,\r\n (newValue) => {\r\n if (newValue) {\r\n open();\r\n } else {\r\n close();\r\n }\r\n },\r\n { immediate: true }\r\n);\r\n\r\nonMounted(() => {\r\n if (props.modelValue) {\r\n open();\r\n }\r\n});\r\n\r\nonBeforeUnmount(() => {\r\n if (dialog.value) {\r\n close(); // call to this so the body top, left, right are back to normal\r\n dialog.value.removeEventListener(keydown, handleEscapeKey);\r\n }\r\n});\r\n\r\n/**\r\n * Lock or unlock the body scroll.\r\n *\r\n * Source: https://github.com/whatwg/html/issues/7732#issuecomment-2330373381\r\n * @param {boolean} lock Whether to lock or unlock the body scroll. Default = true.\r\n */\r\nconst scroll_lock = (lock = true) => {\r\n const { documentElement, body } = document;\r\n\r\n // RTL scrollbar\r\n const documentLeft = documentElement.getBoundingClientRect().left;\r\n const scrollbarX = Math.round(documentLeft) + documentElement.scrollLeft;\r\n const paddingProp = scrollbarX ? 'paddingLeft' : 'paddingRight';\r\n\r\n if (lock) {\r\n body.style[paddingProp] = `${window.innerWidth - documentElement.clientWidth}px`;\r\n body.style.top = `-${window.scrollY}px`;\r\n body.style.left = `-${window.scrollX}px`;\r\n body.style.right = '0';\r\n body.style.position = 'fixed';\r\n\r\n body.classList.add('scroll-locked');\r\n } else {\r\n if (!body.classList.contains('scroll-locked')) {\r\n return;\r\n }\r\n\r\n const currentScrollY = parseInt(body.style.top || '0') * -1;\r\n const currentScrollX = parseInt(body.style.left || '0') * -1;\r\n\r\n body.style[paddingProp] = '';\r\n body.style.position = '';\r\n body.style.top = '';\r\n body.style.left = '';\r\n body.style.right = '';\r\n\r\n body.classList.remove('scroll-locked');\r\n\r\n window.scrollTo(currentScrollX, currentScrollY);\r\n }\r\n};\r\n\r\n__expose({ close, open });\r\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"dialog\", {\n ref_key: \"dialog\",\n ref: dialog,\n class: _normalizeClass(\r\n _ctx.dialogClass ??\r\n `absolute mt-auto md:mt-[130px] mx-0 md:mx-auto mb-0 md:mb-auto p-10 border-none rounded-t-lg md:rounded-lg w-full max-w-full max-h-fit h-fit focus:outline-none drop-shadow-2xl backdrop-opacity-64 ${screenClass.value}`\r\n ),\n onClose: handleClose\n }, [\n (_ctx.showXCloseButton)\n ? (_openBlock(), _createElementBlock(\"button\", {\n key: 0,\n type: \"button\",\n class: \"close-button absolute top-5 right-5 h-6 w-6 focus:outline-dotted focus:outline-offset-2 focus:outline-2 focus:outline-racq-navy focus:rounded-sm focus:border-none\",\n \"aria-label\": \"Close\",\n onClick: _withModifiers(close, [\"stop\",\"prevent\"]),\n onKeydown: [\n _withKeys(close, [\"enter\"]),\n _withKeys(close, [\"space\"])\n ]\n }, _cache[0] || (_cache[0] = [\n _createElementVNode(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"24\",\n height: \"25\",\n viewBox: \"0 0 24 25\",\n fill: \"none\"\n }, [\n _createElementVNode(\"rect\", {\n width: \"24\",\n height: \"24\",\n transform: \"translate(0 0.5)\",\n fill: \"white\"\n }),\n _createElementVNode(\"path\", {\n d: \"M13.2699 12.5L18.7366 7.0423C19.0878 6.69106 19.0878 6.12367 18.7366 5.77243C18.3853 5.4212 17.8179 5.4212 17.4667 5.77243L12.009 11.2301L6.5423 5.76343C6.19106 5.41219 5.61467 5.41219 5.26343 5.76343C4.91219 6.11467 4.91219 6.69106 5.26343 7.0423L10.7211 12.5L5.26343 17.9577C4.91219 18.3089 4.91219 18.8763 5.26343 19.2276C5.44355 19.4077 5.6687 19.4887 5.90286 19.4887C6.13702 19.4887 6.36217 19.3987 6.5423 19.2276L12 13.7699L17.4577 19.2276C17.6378 19.4077 17.863 19.4887 18.0971 19.4887C18.3313 19.4887 18.5564 19.3987 18.7366 19.2276C19.0878 18.8763 19.0878 18.3089 18.7366 17.9577L13.2789 12.5H13.2699Z\",\n fill: \"#B1B1B1\"\n })\n ], -1)\n ]), 32))\n : _createCommentVNode(\"\", true),\n _renderSlot(_ctx.$slots, \"default\", {}, () => [\n _cache[1] || (_cache[1] = _createTextVNode(\"[Placeholder slot to fill in the modal dialog contents]\"))\n ])\n ], 34))\n}\n}\n\n})","import script from \"./ModalDialog.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ModalDialog.vue?vue&type=script&lang=ts&setup=true\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass } from \"vue\"\n\nconst _hoisted_1 = {\n key: 0,\n class: \"w-[40px] h-[60px] flex flex-col justify-center\"\n}\nconst _hoisted_2 = {\n key: 0,\n class: \"self-stretch text-racq-dark-grey text-lg-bold\"\n}\nconst _hoisted_3 = {\n key: 1,\n class: \"self-stretch text-racq-dark-grey text-xl-bold\"\n}\nconst _hoisted_4 = { class: \"self-stretch text-racq-med-grey text-base richtext\" }\n\nimport { Text, RichText, Image, Field } from '@sitecore-jss/sitecore-jss-vue';\r\nimport { ImageFieldValue } from '@sitecore-jss/sitecore-jss-vue/types/components/Image';\r\nimport { computed } from 'vue';\r\n\r\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'PanelTitle',\n props: {\n bindings: {},\n icon: {},\n title: {},\n subTitle: {},\n isSecondary: {},\n fullWidth: { type: Boolean }\n },\n setup(__props: any) {\n\r\nconst props = __props;\r\n\r\nconst classList = computed(() => {\r\n let list = [];\r\n list.push(props.subTitle?.value?.length ? 'items-start' : 'items-center');\r\n list.push(props.fullWidth ? 'w-full' : 'text-block');\r\n return list;\r\n});\r\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass(_ctx.bindings?.outerClass)\n }, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"justify-start gap-4 inline-flex\", classList.value])\n }, [\n (_ctx.icon?.value?.src)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_unref(Image), {\n media: _ctx.icon,\n class: \"w-[40px]\"\n }, null, 8, [\"media\"])\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"grow shrink basis-0 flex-col justify-start items-start inline-flex\", _ctx.isSecondary?.value ? 'gap-1' : 'gap-2'])\n }, [\n (_ctx.title && _ctx.isSecondary?.value)\n ? (_openBlock(), _createElementBlock(\"h4\", _hoisted_2, [\n _createVNode(_unref(Text), { field: _ctx.title }, null, 8, [\"field\"])\n ]))\n : (_ctx.title)\n ? (_openBlock(), _createElementBlock(\"h3\", _hoisted_3, [\n _createVNode(_unref(Text), { field: _ctx.title }, null, 8, [\"field\"])\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_4, [\n _createVNode(_unref(RichText), { field: _ctx.subTitle }, null, 8, [\"field\"])\n ])\n ], 2)\n ], 2)\n ], 2))\n}\n}\n\n})","\r\n\r\n\r\n","import script from \"./PanelTitle.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./PanelTitle.vue?vue&type=script&lang=ts&setup=true\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock } from \"vue\"\n\nimport { onMounted, ref } from 'vue';\r\nimport { usePaymentStore } from '@/store';\r\nimport { IDropdownItem } from '@/interfaces';\r\n\r\n\r\nexport const emitPaymentFrequencyChanged = 'paymentFrequencyChanged';\r\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'PaymentFrequencyDropdown',\n setup(__props) {\n\r\nconst paymentStore = usePaymentStore();\r\nconst options = ref();\r\n\r\nonMounted(() => {\r\n if (paymentStore.paymentFrequencyWording) {\r\n options.value = [\r\n { label: paymentStore.paymentFrequencyWording?.monthly, value: paymentStore.paymentFrequencyWording?.monthly },\r\n { label: paymentStore.paymentFrequencyWording?.annual, value: paymentStore.paymentFrequencyWording?.annual },\r\n ];\r\n\r\n paymentStore.selectedPaymentFrequencyDisplayText = paymentStore.paymentFrequencyWording?.monthly;\r\n }\r\n});\r\n\nreturn (_ctx: any,_cache: any) => {\n const _component_FormKit = _resolveComponent(\"FormKit\")!\n\n return (_openBlock(), _createBlock(_component_FormKit, {\n key: `selectedPaymentFrequency-${_unref(paymentStore).selectedPaymentFrequencyDisplayText}`,\n modelValue: _unref(paymentStore).selectedPaymentFrequencyDisplayText,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((_unref(paymentStore).selectedPaymentFrequencyDisplayText) = $event)),\n name: \"selectedPaymentFrequency\",\n type: \"racqDropdown\",\n outerClass: \"mt-3 mb-6\",\n classesOptions: \"dropdown-sm text-m-bold \",\n options: options.value\n }, null, 8, [\"modelValue\", \"options\"]))\n}\n}\n\n})","\r\n\r\n\r\n\r\n\r\n","import script from \"./PaymentFrequencyDropdown.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./PaymentFrequencyDropdown.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, unref as _unref, createVNode as _createVNode, createBlock as _createBlock } from \"vue\"\n\nconst _hoisted_1 = {\n key: 0,\n class: \"flex flex-col gap-8 md:gap-6\"\n}\nconst _hoisted_2 = { class: \"text-racq-dark-grey text-xl-bold\" }\nconst _hoisted_3 = {\n key: 0,\n class: \"text-racq-med-grey text-xl\"\n}\nconst _hoisted_4 = {\n key: 1,\n class: \"text-racq-med-grey text-lg mt-1\"\n}\nconst _hoisted_5 = { class: \"premium-section\" }\nconst _hoisted_6 = {\n key: 0,\n class: \"text-racq-med-grey text-xl4-bold\"\n}\nconst _hoisted_7 = {\n key: 1,\n class: \"text-racq-med-grey text-m ml-[4px]\"\n}\nconst _hoisted_8 = {\n key: 2,\n class: \"mt-3\"\n}\nconst _hoisted_9 = { class: \"text-block text-racq-dark-grey\" }\nconst _hoisted_10 = { key: 0 }\nconst _hoisted_11 = { class: \"text-base-bold\" }\nconst _hoisted_12 = { key: 1 }\nconst _hoisted_13 = { class: \"text-base\" }\n\nimport { computed } from 'vue';\r\nimport { toCurrency } from '@/utils/convert';\r\nimport InformationBox from '@/components/InformationBox/InformationBox.vue';\r\nimport { InformationBoxTypes } from '@/interfaces/forms/information-box.interface';\r\nimport RACQDropdown from '@/components/RACQDropdown/RACQDropdown.vue';\r\nimport { replaceBookmarks } from '@/utils/bookmark.replace';\r\n\r\ninterface PaymentHeaderProps {\r\n primaryTitle: string;\r\n secondaryTitle?: string;\r\n tertiaryTitle?: string;\r\n premiumPrice: number;\r\n adminFee?: number;\r\n premiumFrequency?: string;\r\n showDropdown?: boolean;\r\n dropdownOptions?: any;\r\n detailsTitle?: string;\r\n detailsTitlePrice?: number;\r\n detailsDescription?: string;\r\n detailDescriptionPrice?: number;\r\n infoBoxType?: InformationBoxTypes;\r\n infoBoxMessage?: string;\r\n}\r\n\r\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'PaymentHeader',\n props: {\n primaryTitle: {},\n secondaryTitle: {},\n tertiaryTitle: {},\n premiumPrice: {},\n adminFee: {},\n premiumFrequency: {},\n showDropdown: { type: Boolean },\n dropdownOptions: {},\n detailsTitle: {},\n detailsTitlePrice: {},\n detailsDescription: {},\n detailDescriptionPrice: {},\n infoBoxType: {},\n infoBoxMessage: {}\n },\n setup(__props: any) {\n\r\nconst props = __props;\r\n\r\n// Example usage of props within component\r\nconst titles = computed(() => ({\r\n primaryTitle: props.primaryTitle,\r\n secondaryTitle: props.secondaryTitle,\r\n tertiaryTitle: props.tertiaryTitle,\r\n}));\r\n\r\nconst premiumDetails = computed(() => ({\r\n price: props.premiumPrice,\r\n frequency: props.premiumFrequency ?? props.dropdownOptions,\r\n}));\r\n\r\nconst showDropdown = computed(() => props.showDropdown);\r\nconst dropdownOptions = computed(() => props.dropdownOptions);\r\n\r\nconst detailsTitle = computed(() =>\r\n props.detailsTitle\r\n ? replaceBookmarks(props.detailsTitle, {\r\n DetailsTitlePrice: toCurrency(props.detailsTitlePrice) ?? '',\r\n })\r\n : ''\r\n);\r\nconst detailsDescription = computed(() =>\r\n props.detailsDescription\r\n ? replaceBookmarks(props.detailsDescription, {\r\n DetailDescriptionPrice: toCurrency(props.detailDescriptionPrice) ?? '',\r\n AdminFee: toCurrency(props.adminFee) ?? '',\r\n })\r\n : ''\r\n);\r\n\r\nconst infoBoxType = computed(() => props.infoBoxType);\r\nconst infoBoxMessage = computed(() => props.infoBoxMessage);\r\n\nreturn (_ctx: any,_cache: any) => {\n return (premiumDetails.value && titles.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", null, [\n _createElementVNode(\"h4\", _hoisted_2, _toDisplayString(_ctx.primaryTitle), 1),\n (_ctx.secondaryTitle)\n ? (_openBlock(), _createElementBlock(\"h5\", _hoisted_3, _toDisplayString(_ctx.secondaryTitle), 1))\n : _createCommentVNode(\"\", true),\n (_ctx.tertiaryTitle)\n ? (_openBlock(), _createElementBlock(\"h6\", _hoisted_4, _toDisplayString(_ctx.tertiaryTitle), 1))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"div\", _hoisted_5, [\n (_ctx.premiumPrice)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_6, _toDisplayString(_unref(toCurrency)(_ctx.premiumPrice)), 1))\n : _createCommentVNode(\"\", true),\n (_ctx.premiumFrequency)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_7, _toDisplayString(_ctx.premiumFrequency), 1))\n : _createCommentVNode(\"\", true),\n (showDropdown.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_8, [\n _createVNode(RACQDropdown, { context: dropdownOptions.value }, null, 8, [\"context\"])\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"div\", _hoisted_9, [\n (detailsTitle.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [\n _createElementVNode(\"p\", _hoisted_11, _toDisplayString(detailsTitle.value), 1)\n ]))\n : _createCommentVNode(\"\", true),\n (detailsDescription.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_12, [\n _createElementVNode(\"p\", _hoisted_13, _toDisplayString(detailsDescription.value), 1)\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n (infoBoxType.value)\n ? (_openBlock(), _createBlock(InformationBox, {\n key: 0,\n type: infoBoxType.value,\n description: infoBoxMessage.value\n }, null, 8, [\"type\", \"description\"]))\n : _createCommentVNode(\"\", true)\n ]))\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","\r\n\r\n\r\n","import script from \"./PaymentHeader.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./PaymentHeader.vue?vue&type=script&lang=ts&setup=true\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createElementVNode as _createElementVNode, createVNode as _createVNode } from \"vue\"\n\nconst _hoisted_1 = [\"src\", \"alt\"]\n\nimport { ref, onMounted } from 'vue';\r\nimport { RichText } from '@sitecore-jss/sitecore-jss-vue';\r\nimport { replaceBookmark } from '@/utils/bookmark.replace';\r\n\r\nconst paymentReferenceNumberName = 'paymentReferenceNumber';\r\n\r\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'PaymentMethods',\n props: {\n paymentMethods: {},\n paymentReferenceNumber: {}\n },\n setup(__props: any) {\n\r\nlet filteredPaymentMethods = ref([]);\r\n\r\nconst props = __props;\r\n\r\nonMounted(async () => {\r\n filteredPaymentMethods.value = props.paymentMethods.filter(\r\n (x) =>\r\n x.fields?.methodContent?.value.indexOf(paymentReferenceNumberName) == -1 ||\r\n (props?.paymentReferenceNumber && props?.paymentReferenceNumber?.length > 0)\r\n );\r\n});\r\n\r\nconst replaceBookmarks = (content: string) => {\r\n if (props?.paymentReferenceNumber) {\r\n return replaceBookmark(paymentReferenceNumberName, content, props.paymentReferenceNumber);\r\n }\r\n return content;\r\n};\r\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(filteredPaymentMethods), (method, index) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n key: index,\n class: \"grid grid-cols-[10%_90%] mb-5\"\n }, [\n _createElementVNode(\"div\", null, [\n _createElementVNode(\"img\", {\n src: method.fields?.icon?.value?.src,\n alt: method.fields.icon?.value.alt,\n class: \"h-[auto] w-[17.3px] m-auto\"\n }, null, 8, _hoisted_1)\n ]),\n _createVNode(_unref(RichText), {\n field: { value: replaceBookmarks(method.fields?.methodContent?.value) }\n }, null, 8, [\"field\"])\n ]))\n }), 128))\n}\n}\n\n})","\r\n\r\n","import script from \"./PaymentMethods.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./PaymentMethods.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, unref as _unref, createBlock as _createBlock, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, renderSlot as _renderSlot, createVNode as _createVNode, withCtx as _withCtx } from \"vue\"\n\nconst _hoisted_1 = { class: \"relative\" }\nconst _hoisted_2 = {\n key: 0,\n class: \"absolute inset-x-0 inset-y-0 bg-curtain-color z-[100]\"\n}\nconst _hoisted_3 = { class: \"payment-method-container flex flex-col\" }\nconst _hoisted_4 = { key: 0 }\nconst _hoisted_5 = { key: 1 }\nconst _hoisted_6 = { class: \"flex w-full pt-4\" }\nconst _hoisted_7 = { class: \"flex w-full pt-4\" }\n\nimport { RichText } from '@sitecore-jss/sitecore-jss-vue';\r\nimport { computed, ref, onMounted } from 'vue';\r\nimport PaymentSectionFZIframe from './PaymentSectionFZIframe.vue';\r\nimport { usePaymentStore } from '@/store';\r\nimport { IPaymentSectionProps } from '@/interfaces';\r\nimport { PaymentTypes } from '@/enums/payment-types.enum';\r\nimport { FormKit } from '@formkit/vue';\r\n\r\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'PaymentSection',\n props: {\n AcceptPaymentTypes: {},\n BankAccountTitle: {},\n AccountNameInvalidMessage: {},\n AccountNameLabel: {},\n AccountNameRequiredMessage: {},\n AccountNameTooltip: {},\n AccountNumberInvalidMessage: {},\n AccountNumberLabel: {},\n AccountNumberRequiredMessage: {},\n BsbInvalidMessage: {},\n BsbLabel: {},\n BsbNotFoundMessage: {},\n BsbRequiredMessage: {},\n CardTypeTitle: {},\n CardIcons: {},\n PaymentDisclaimer: {},\n ShowCardIcons: {},\n SubmitPaymentButtonLabel: {},\n BankAccountIcon: {},\n PayLaterTitle: {},\n PayLaterIcon: {},\n SubmitPayLaterLabel: {},\n SubmitBankAccountLabel: {},\n PayLaterContent: {}\n },\n setup(__props: any) {\n\r\nconst props = __props;\r\nconst paymentStore = usePaymentStore();\r\n\r\nconst bankAccountName = ref(null);\r\nconst bsbInput = ref(null);\r\nconst bankAccountNumber = ref(null);\r\nconst checkingBsb = ref(false);\r\n\r\nconst acceptCardPayment = computed(() => {\r\n return props.AcceptPaymentTypes.some((type) => type.name == PaymentTypes[PaymentTypes.CreditCard]);\r\n});\r\n\r\nconst acceptBankAccount = computed(() => {\r\n return props.AcceptPaymentTypes.some((type) => type.name == PaymentTypes[PaymentTypes.BankAccount]);\r\n});\r\n\r\nconst acceptPayLater = computed(() => {\r\n return props.AcceptPaymentTypes.some((type) => type.name == PaymentTypes[PaymentTypes.PayLater]);\r\n});\r\n\r\nconst isMasked = computed(() => paymentStore.disablePaymentPanel);\r\n\r\nconst paymentTypeSelectable = computed(() => {\r\n return props.AcceptPaymentTypes.length > 1;\r\n});\r\n\r\nconst selectedPaymentType = computed(() => paymentStore.selectedPaymentMethod);\r\n\r\nconst financialInstitutionName = computed(() => {\r\n return paymentStore.bsbBranchDetails?.name\r\n ? `${paymentStore.bsbBranchDetails?.name}, ${paymentStore.bsbBranchDetails?.branch}`\r\n : undefined;\r\n});\r\n\r\nonMounted(async () => {\r\n //if there is only one option set default\r\n if (props.AcceptPaymentTypes && props.AcceptPaymentTypes?.length == 1) {\r\n if (acceptCardPayment.value) {\r\n paymentStore.selectedPaymentMethod = PaymentTypes.CreditCard;\r\n } else if (acceptBankAccount.value) {\r\n paymentStore.selectedPaymentMethod = PaymentTypes.BankAccount;\r\n } else if (acceptPayLater.value) {\r\n paymentStore.selectedPaymentMethod = PaymentTypes.PayLater;\r\n }\r\n }\r\n});\r\n\r\nconst bsbLookup = async function ({ value }: { value: string }) {\r\n checkingBsb.value = true;\r\n try {\r\n const bsb = value.replace('-', '');\r\n const res = await paymentStore.bsbLookup(bsb);\r\n return res;\r\n } catch (error) {\r\n return false;\r\n } finally {\r\n checkingBsb.value = false;\r\n }\r\n};\r\n\r\nconst replaceBsb = (message: string, bsb: string) => {\r\n return message?.replace('{{bsb}}', bsb);\r\n};\r\n\r\nconst submitPayment = async (paymentType: PaymentTypes) => {\r\n try {\r\n const bsb = bsbInput.value?.node?.value;\r\n const accountName = bankAccountName?.value?.node?.value;\r\n const accountNumber = bankAccountNumber?.value?.node?.value;\r\n\r\n if (bsb && accountName && accountNumber) {\r\n await paymentStore.setDirectDebitDetails(accountName, bsb, accountNumber);\r\n }\r\n\r\n paymentStore.submitPaymentCallback && paymentStore.submitPaymentCallback(paymentType);\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n};\r\n\r\n/**\r\n * Change payment method handler\r\n *\r\n * @param paymentMethod\r\n */\r\nconst changePaymentMethod = (paymentMethod: PaymentTypes) => {\r\n if (!paymentTypeSelectable.value) return;\r\n paymentStore.changePaymentMethod(paymentMethod);\r\n};\r\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (isMasked.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_3, [\n (acceptCardPayment.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"card-type-section flex space-between items-center border-b py-4\", paymentTypeSelectable.value && 'hover:bg-racq-white-background cursor-pointer']),\n onClick: _cache[1] || (_cache[1] = () => changePaymentMethod(_unref(PaymentTypes).CreditCard))\n }, [\n (paymentTypeSelectable.value)\n ? (_openBlock(), _createBlock(_unref(FormKit), {\n key: 0,\n modelValue: selectedPaymentType.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((selectedPaymentType).value = $event)),\n type: \"nativeRadio\",\n name: \"paymentTypeSelection\",\n options: [{ label: '', value: _unref(PaymentTypes).CreditCard }]\n }, null, 8, [\"modelValue\", \"options\"]))\n : _createCommentVNode(\"\", true),\n (_ctx.CardTypeTitle?.value)\n ? (_openBlock(), _createBlock(_unref(RichText), {\n key: 1,\n field: _ctx.CardTypeTitle,\n class: \"card-type-title text-base-bold\"\n }, null, 8, [\"field\"]))\n : _createCommentVNode(\"\", true),\n (_ctx.ShowCardIcons?.value && _ctx.CardIcons?.value)\n ? (_openBlock(), _createBlock(_unref(RichText), {\n key: 2,\n class: \"card-type-icons flex ml-auto gap-1 h-6\",\n field: _ctx.CardIcons\n }, null, 8, [\"field\"]))\n : _createCommentVNode(\"\", true)\n ], 2)\n ]))\n : _createCommentVNode(\"\", true),\n (acceptBankAccount.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_5, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"card-type-section flex space-between items-center py-4\", paymentTypeSelectable.value && 'hover:bg-racq-white-background cursor-pointer']),\n onClick: _cache[3] || (_cache[3] = () => changePaymentMethod(_unref(PaymentTypes).BankAccount))\n }, [\n (paymentTypeSelectable.value)\n ? (_openBlock(), _createBlock(_unref(FormKit), {\n key: 0,\n modelValue: selectedPaymentType.value,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((selectedPaymentType).value = $event)),\n type: \"nativeRadio\",\n name: \"paymentTypeSelection\",\n options: [{ label: '', value: _unref(PaymentTypes).BankAccount }]\n }, null, 8, [\"modelValue\", \"options\"]))\n : _createCommentVNode(\"\", true),\n (_ctx.BankAccountTitle?.value)\n ? (_openBlock(), _createBlock(_unref(RichText), {\n key: 1,\n field: _ctx.BankAccountTitle,\n class: \"card-type-title text-base-bold\"\n }, null, 8, [\"field\"]))\n : _createCommentVNode(\"\", true),\n (_ctx.BankAccountIcon?.value)\n ? (_openBlock(), _createBlock(_unref(RichText), {\n key: 2,\n class: \"card-type-icons flex ml-auto gap-2 h-6\",\n field: _ctx.BankAccountIcon\n }, null, 8, [\"field\"]))\n : _createCommentVNode(\"\", true)\n ], 2)\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", null, [\n (acceptCardPayment.value)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: _normalizeClass([\"iframe-section ease-in-out duration-500 transition-all my-6 max-h-[1000px]\", selectedPaymentType.value != _unref(PaymentTypes).CreditCard && '!overflow-hidden !max-h-[0px] !my-0 opacity-0'])\n }, [\n _renderSlot(_ctx.$slots, \"default\", {}, () => [\n _createVNode(PaymentSectionFZIframe)\n ]),\n (_ctx.PaymentDisclaimer?.value)\n ? (_openBlock(), _createBlock(_unref(RichText), {\n key: 0,\n field: _ctx.PaymentDisclaimer,\n class: \"disclaimer-section flex flex-col text-sm font-normal\"\n }, null, 8, [\"field\"]))\n : _createCommentVNode(\"\", true)\n ], 2))\n : _createCommentVNode(\"\", true),\n (acceptBankAccount.value && selectedPaymentType.value == _unref(PaymentTypes).BankAccount)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: _normalizeClass([\"ease-in-out duration-500 transition-all my-6 px-3 max-h-[1000px]\", selectedPaymentType.value != _unref(PaymentTypes).BankAccount && '!overflow-hidden !max-h-[0px] !my-0 opacity-0'])\n }, [\n _createVNode(_unref(FormKit), {\n type: \"group\",\n name: \"payment-section-bank-account\"\n }, {\n default: _withCtx(({ state: { valid } }) => [\n _createVNode(_unref(FormKit), {\n id: \"bank-account-account-name\",\n ref_key: \"bankAccountName\",\n ref: bankAccountName,\n type: \"text\",\n label: props.AccountNameLabel?.value,\n outerClass: \"mb-4\",\n innerClass: \"input-md\",\n name: \"bank-account-account-name\",\n tooltip: {\r\n content: props.AccountNameTooltip?.value,\r\n tooltipId: 'bank-account-account-name__tooltip_id',\r\n tooltipOuterId: 'bank-account-account-name__outer',\r\n },\n validation: [['required'], ['matches', /^[a-zA-Z0-9 -]{1,100}$/]],\n validationMessages: {\r\n required: props.AccountNameRequiredMessage?.value,\r\n matches: props.AccountNameInvalidMessage?.value,\r\n }\n }, null, 8, [\"label\", \"tooltip\", \"validationMessages\"]),\n _createVNode(_unref(FormKit), {\n id: \"bank-account-bsb\",\n ref_key: \"bsbInput\",\n ref: bsbInput,\n type: \"mask\",\n mask: \"###-###\",\n label: props.BsbLabel?.value,\n outerClass: \"mb-4\",\n innerClass: \"input-xs\",\n name: \"bank-account-bsb\",\n help: financialInstitutionName.value,\n loading: checkingBsb.value,\n validation: [['required'], ['matches', /^\\d{3}-\\d{3}$/], ['bsbLookup']],\n validationRules: { bsbLookup: bsbLookup },\n validationMessages: {\r\n required: props.BsbRequiredMessage?.value,\r\n matches: props.BsbInvalidMessage?.value,\r\n bsbLookup: props.BsbNotFoundMessage?.value,\r\n }\n }, {\n messages: _withCtx((context) => [\n (context.messages?.rule_bsbLookup?.value)\n ? (_openBlock(), _createBlock(_unref(RichText), {\n key: 0,\n class: _normalizeClass(context.classes?.message),\n field: { value: replaceBsb(context.messages?.rule_bsbLookup?.value, context._value) }\n }, null, 8, [\"class\", \"field\"]))\n : _createCommentVNode(\"\", true),\n (context.messages?.rule_required?.value)\n ? (_openBlock(), _createBlock(_unref(RichText), {\n key: 1,\n class: _normalizeClass(context.classes?.message),\n field: context.messages?.rule_required\n }, null, 8, [\"class\", \"field\"]))\n : _createCommentVNode(\"\", true),\n (context.messages?.rule_matches?.value)\n ? (_openBlock(), _createBlock(_unref(RichText), {\n key: 2,\n class: _normalizeClass(context.classes?.message),\n field: context.messages?.rule_matches\n }, null, 8, [\"class\", \"field\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n }, 8, [\"label\", \"help\", \"loading\", \"validationRules\", \"validationMessages\"]),\n _createVNode(_unref(FormKit), {\n id: \"bank-account-account-number\",\n ref_key: \"bankAccountNumber\",\n ref: bankAccountNumber,\n type: \"tel\",\n label: props.AccountNumberLabel?.value,\n outerClass: \"mb-4\",\n innerClass: \"input-sm\",\n name: \"bank-account-account-number\",\n validation: [['required'], ['matches', /^(\\d{6,9})$/]],\n validationMessages: {\r\n required: props.AccountNumberRequiredMessage?.value,\r\n matches: props.AccountNumberInvalidMessage?.value,\r\n }\n }, null, 8, [\"label\", \"validationMessages\"]),\n _createElementVNode(\"div\", _hoisted_6, [\n _createVNode(_unref(FormKit), {\n type: \"submit\",\n prefixIcon: \"lockIcon\",\n prefixIconClass: \"$remove:-ml-2 $remove:mr-2\",\n label: _ctx.SubmitBankAccountLabel?.value,\n inputClass: \"btn-fatzebra btn-edit\",\n outerClass: \"ms-auto\",\n onClick: () => valid && submitPayment(_unref(PaymentTypes).BankAccount)\n }, null, 8, [\"label\", \"onClick\"])\n ])\n ]),\n _: 1\n })\n ], 2))\n : _createCommentVNode(\"\", true),\n (acceptPayLater.value)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 2,\n class: _normalizeClass([\"ease-in-out duration-500 transition-all my-6 px-3 max-h-[1000px]\", selectedPaymentType.value != _unref(PaymentTypes).PayLater && '!overflow-hidden !max-h-[0px] !my-0 opacity-0'])\n }, [\n (_ctx.PayLaterContent?.value)\n ? (_openBlock(), _createBlock(_unref(RichText), {\n key: 0,\n field: _ctx.PayLaterContent\n }, null, 8, [\"field\"]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_7, [\n _createVNode(_unref(FormKit), {\n type: \"button\",\n label: _ctx.SubmitPayLaterLabel?.value,\n inputClass: \"btn btn-secondary input-cta-arrow-right\",\n onClick: _cache[4] || (_cache[4] = () => submitPayment(_unref(PaymentTypes).PayLater))\n }, null, 8, [\"label\"])\n ])\n ], 2))\n : _createCommentVNode(\"\", true)\n ])\n ])\n ]))\n}\n}\n\n})","\r\n\r\n\r\n","import script from \"./PaymentSection.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./PaymentSection.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = [\"src\"]\n\nimport { ref, watch, onMounted, onUnmounted } from 'vue';\r\nimport { usePaymentStore } from '@/store';\r\n\r\n// Define Composables\r\n// ------------------------------------------------------------- //\r\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'PaymentSectionFZIframe',\n setup(__props) {\n\r\nconst paymentStore = usePaymentStore();\r\n\r\n// Define Component state\r\n// ------------------------------------------------------------- //\r\nconst iframeUrl = ref('');\r\n\r\n// Define fuctions\r\n// ------------------------------------------------------------- //\r\n// This is based on the javascript provided by FatZebra\r\n// Ref: https://docs.fatzebra.com/reference/hosted-payment-pages#iframe-and-postmessage-support\r\nasync function messageListener(event: any) {\r\n // Older browsers will have a query-string style data payload\r\n // Whereas newer browsers will have an object\r\n let payload = event.data;\r\n\r\n if (typeof event.data == 'string') {\r\n if (/\\[object/i.test(event.data)) {\r\n alert('Sorry, it looks like there has been a problem communicating with your browser...'); // Raised if the serialization failed\r\n }\r\n\r\n // Deserialize into an object\r\n const pairs = payload.split('&');\r\n payload = {};\r\n\r\n for (const element of pairs) {\r\n const kv = element.split('=');\r\n payload[kv[0]] = kv[1];\r\n }\r\n }\r\n\r\n if ('data' in payload) {\r\n const payloadData = payload.data;\r\n if (payloadData && payloadData.r && payloadData.token) {\r\n paymentStore.setFzTransactionState(payloadData);\r\n }\r\n\r\n return true;\r\n }\r\n}\r\n\r\n// Lifecycle hooks\r\n// ------------------------------------------------------------- //\r\nwatch(\r\n () => [paymentStore.reference, paymentStore.amount, paymentStore.buttonText],\r\n async ([newReference, newAmount, newButtonText]) => {\r\n const loadIframe =\r\n newReference === '' ||\r\n newReference ||\r\n newAmount ||\r\n (newButtonText && (!paymentStore.reference || !paymentStore.amount));\r\n\r\n if (loadIframe) {\r\n const iframeResponse = await paymentStore.getPaymentIframeUrl();\r\n if (iframeResponse) {\r\n iframeUrl.value = iframeResponse.url;\r\n }\r\n (window as any).paymentHost = iframeResponse ? iframeResponse.hostUrl : '';\r\n } else if (!paymentStore.reference || !paymentStore.amount) {\r\n console.error('missing reference or amount. please check store');\r\n }\r\n\r\n /* if(newReference=='') {\r\n console.error('missing reference. please check store');\r\n const iframeResponse = await paymentStore.getPaymentIframeUrl();\r\n if(iframeResponse)\r\n {\r\n iframeUrl.value = iframeResponse.url;\r\n }\r\n (window as any).paymentHost = iframeResponse ? iframeResponse.hostUrl : ''; \r\n return;\r\n }\r\n\r\n if(newReference || newAmount || newButtonText) {\r\n if(!paymentStore.reference || !paymentStore.amount) {\r\n console.error('missing reference or amount. please check store');\r\n } else {\r\n const iframeResponse = await paymentStore.getPaymentIframeUrl();\r\n if(iframeResponse)\r\n {\r\n iframeUrl.value = iframeResponse.url;\r\n }\r\n (window as any).paymentHost = iframeResponse ? iframeResponse.hostUrl : ''; \r\n } \r\n } */\r\n }\r\n);\r\n\r\nonMounted(async () => {\r\n window.addEventListener('message', messageListener);\r\n});\r\n\r\nonUnmounted(() => {\r\n window.removeEventListener('message', messageListener);\r\n});\r\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", null, [\n _createElementVNode(\"iframe\", {\n src: iframeUrl.value,\n title: \"FatZebra payment widget\",\n class: \"w-full border-0 h-[600px]\"\n }, null, 8, _hoisted_1)\n ]))\n}\n}\n\n})","