{"version":3,"file":"categories-BPrRTwg1.js","sources":["../../../../scripts/services/helpers/categories.ts"],"sourcesContent":["import { ProductType } from \"interfaces/enums\";\r\nimport * as virtuosoSharedHeader from \"virtuoso-shared-web-ui\";\r\n\r\n/**\r\n * Returns link for the supplied category\r\n */\r\nexport function getCategoryLink(category: string): string {\r\n let categoryLink = \"/travel/inspiration\";\r\n\r\n if (category) {\r\n category = category.replace(/,/g, \"\").replace(/ & /g, \" and \").replace(/\\s+/g, \"-\").trim().toLowerCase();\r\n if ([ProductType.HOTELS, ProductType.CRUISES, ProductType.TOURS].includes(category as ProductType)) {\r\n categoryLink = \"/travel/luxury-\" + category;\r\n } else {\r\n categoryLink = \"/travel/\" + category;\r\n }\r\n }\r\n\r\n return virtuosoSharedHeader.cobrandLink(categoryLink);\r\n}\r\n\r\n\r\n/**\r\n * Returns the dotCMS category variable for the supplied category name\r\n * @param category - Category name from the URL, e.g. \"wellness\" or \"arts-and-culture\"\r\n */\r\nexport function getCategoryVar(category: string): string {\r\n let categoryVar = \"\";\r\n\r\n if (category) {\r\n const categoryWords = category.trim().split(\"-\");\r\n categoryWords.forEach((word: string, i: number) => {\r\n if (word !== \"and\") {\r\n categoryVar += (i === 0) ? word : word.charAt(0).toUpperCase() + word.slice(1);\r\n }\r\n });\r\n }\r\n\r\n return categoryVar;\r\n}\r\n\r\n\r\n\r\n/**\r\n * Returns a string array of category names\r\n * @param categories - either a comma-space delimited string (old dotCMS) or an array of category objects (new dotCMS)\r\n */\r\nexport function extractCategories(categories: Record<string, string>[] | string): string[] {\r\n let categoriesAsStringArray: string[] = [];\r\n if (categories && typeof categories === \"string\" && categories !== \"\") { // Older dotCMS returned them as a comma-space delimited string\r\n categoriesAsStringArray = categories.split(\", \");\r\n } else if (categories && typeof categories === \"object\") { // Newer dotCMS returns them as an array of objects with the key being the category variable, and the value being the display name\r\n for (const category of categories) {\r\n for (const key in category) {\r\n categoriesAsStringArray.push(category[key]);\r\n }\r\n }\r\n }\r\n return categoriesAsStringArray;\r\n}\r\n"],"names":["getCategoryLink","category","categoryLink","ProductType","virtuosoSharedHeader.cobrandLink","getCategoryVar","categoryVar","word","extractCategories","categories","categoriesAsStringArray","key"],"mappings":"mDAMO,SAASA,EAAgBC,EAA0B,CACtD,IAAIC,EAAe,sBAEnB,OAAID,IACAA,EAAWA,EAAS,QAAQ,KAAM,EAAE,EAAE,QAAQ,OAAQ,OAAO,EAAE,QAAQ,OAAQ,GAAG,EAAE,KAAA,EAAO,cACvF,CAACE,EAAY,OAAQA,EAAY,QAASA,EAAY,KAAK,EAAE,SAASF,CAAuB,EAC7FC,EAAe,kBAAoBD,EAEnCC,EAAe,WAAaD,GAI7BG,EAAiCF,CAAY,CACxD,CAOO,SAASG,EAAeJ,EAA0B,CACrD,IAAIK,EAAc,GAElB,OAAIL,GACsBA,EAAS,KAAK,EAAE,MAAM,GAAG,EACjC,QAAQ,CAACM,EAAc,IAAc,CAC3CA,IAAS,QACOD,GAAA,IAAM,EAAKC,EAAOA,EAAK,OAAO,CAAC,EAAE,YAAY,EAAIA,EAAK,MAAM,CAAC,EACjF,CACH,EAGED,CACX,CAQO,SAASE,EAAkBC,EAAyD,CACvF,IAAIC,EAAoC,CAAA,EACxC,GAAID,GAAc,OAAOA,GAAe,UAAYA,IAAe,GACrCC,EAAAD,EAAW,MAAM,IAAI,UACxCA,GAAc,OAAOA,GAAe,SAC3C,UAAWR,KAAYQ,EACnB,UAAWE,KAAOV,EACUS,EAAA,KAAKT,EAASU,CAAG,CAAC,EAI/C,OAAAD,CACX"}