{"version":3,"file":"useUrlNavigator-663d8cb1.js","sources":["../../src/composables/useUrlNavigator.ts"],"sourcesContent":["import * as ApiConstant from '../foundation/apiConstant';\r\nimport { Router } from 'vue-router';\r\nimport { useUrlBuilder } from './useUrlBuilder';\r\n\r\ntype NavigationOptions = { replace?: boolean; forceUpdate?: boolean };\r\n\r\n/**\r\n * Custom navigation to cater for vue instances being located in different places in the sitecore website.\r\n *\r\n * @param router\r\n * @returns\r\n */\r\nexport function useUrlNavigator(router: Router) {\r\n const urlBuilder = useUrlBuilder();\r\n\r\n /**\r\n * Navigate to the url using vue router for local development. For production builds it will do a full page reload to the page where the destination component is being hosted.\r\n *\r\n * @param url The path (for local development)eg. /search-results or /car-details. Or the full\r\n * url https://racqcm.localhost/path1/path2/.../page-with-vue-instance for the\r\n * production build as the components maybe in different locations.\r\n * @param options Additional options to have finer control over routing.\r\n *\r\n *\r\n */\r\n function navigateTo(url: string, options: NavigationOptions = { replace: false }) {\r\n const internalRouter = router;\r\n\r\n if (ApiConstant.isProduction || options.forceUpdate) {\r\n window.location.href = url;\r\n } else {\r\n if (options.replace) {\r\n return internalRouter.replace(url);\r\n }\r\n\r\n return internalRouter.push(url);\r\n }\r\n }\r\n\r\n /**\r\n * Go to the car detail page\r\n */\r\n function gotoCarDetail(vehicleId: string, year: string, make: string, model: string, options: NavigationOptions = { forceUpdate: true }) {\r\n const carDetailUrl = urlBuilder.getCarDetailsUrl(vehicleId, year, make, model);\r\n navigateTo(carDetailUrl, options);\r\n }\r\n\r\n /**\r\n * Go to search results page\r\n */\r\n function gotoSearchResults() {\r\n return navigateTo(urlBuilder.getSearchResultsUrl({ fromComparisonPage: true, useCustomPath: true }));\r\n }\r\n\r\n /**\r\n * Go to home page with the search results modal open\r\n */\r\n function gotoHomeWithSearchOpen() {\r\n return navigateTo(urlBuilder.getHomePageUrl({ searchModalOpen: true }), {});\r\n }\r\n\r\n /**\r\n * Go to comparison page\r\n */\r\n function getComparisonPageUrl(vehicleIds: string[]) {\r\n return urlBuilder.getCarComparisonUrl(vehicleIds);\r\n }\r\n\r\n function gotoExpertReviews(carId: string) {\r\n return navigateTo(urlBuilder.getExpertReviewsUrl(carId));\r\n }\r\n\r\n return {\r\n navigateTo,\r\n gotoCarDetail,\r\n gotoExpertReviews,\r\n gotoSearchResults,\r\n getComparisonPageUrl,\r\n gotoHomeWithSearchOpen,\r\n };\r\n}\r\n"],"names":["useUrlNavigator","router","urlBuilder","useUrlBuilder","navigateTo","url","options","gotoCarDetail","vehicleId","year","make","model","carDetailUrl","gotoSearchResults","gotoHomeWithSearchOpen","getComparisonPageUrl","vehicleIds","gotoExpertReviews","carId"],"mappings":"uCAYO,SAASA,EAAgBC,EAAgB,CAC9C,MAAMC,EAAaC,IAYnB,SAASC,EAAWC,EAAaC,EAA6B,CAAE,QAAS,IAAS,CAI9E,OAAO,SAAS,KAAOD,CAQ3B,CAKS,SAAAE,EAAcC,EAAmBC,EAAcC,EAAcC,EAAeL,EAA6B,CAAE,YAAa,IAAQ,CACvI,MAAMM,EAAeV,EAAW,iBAAiBM,EAAWC,EAAMC,EAAMC,CAAK,EAC7EP,EAAWQ,EAAcN,CAAO,CAClC,CAKA,SAASO,GAAoB,CACpB,OAAAT,EAAWF,EAAW,oBAAoB,CAAE,mBAAoB,GAAM,cAAe,EAAM,CAAA,CAAC,CACrG,CAKA,SAASY,GAAyB,CACzB,OAAAV,EAAWF,EAAW,eAAe,CAAE,gBAAiB,EAAM,CAAA,EAAG,CAAA,CAAE,CAC5E,CAKA,SAASa,EAAqBC,EAAsB,CAC3C,OAAAd,EAAW,oBAAoBc,CAAU,CAClD,CAEA,SAASC,EAAkBC,EAAe,CACxC,OAAOd,EAAWF,EAAW,oBAAoBgB,CAAK,CAAC,CACzD,CAEO,MAAA,CACL,WAAAd,EACA,cAAAG,EACA,kBAAAU,EACA,kBAAAJ,EACA,qBAAAE,EACA,uBAAAD,CAAA,CAEJ"}