{ "version": 3, "sources": ["../../../Vettvangur.Frontend/src/scripts/utility/button-loader.ts", "../../../Vettvangur.Frontend/src/scripts/components/sailing-schedule/SSConsts.ts", "../../../Vettvangur.Frontend/src/scripts/utility/helpers.ts"], "sourcesContent": ["const buttonLoader = {\n start(item: HTMLButtonElement, setWidth = true) {\n if (!item) {\n return\n }\n if (setWidth) {\n this.setWidth(item)\n }\n\n item.classList.add('button--loading')\n },\n reset(item: HTMLButtonElement, setWidth = true) {\n if (!item) {\n return\n }\n if (setWidth) {\n this.setWidth(item, true)\n }\n item.classList.remove('button--loading')\n },\n\n setWidth(item: HTMLButtonElement, reset = false) {\n if (!item) {\n return\n }\n\n if (!reset) {\n item.style.width = `${item.offsetWidth}px`\n\n return\n }\n\n item.style.width = 'auto'\n },\n}\n\nexport default buttonLoader\n", "import { dictionary } from 'utility/dictionary'\n\ninterface ISSConsts {\n settings: ISSConstsSettings\n translation: {\n blue: string\n red: string\n green: string\n yellow: string\n purple: string\n orange: string\n port: string\n voyageNumber: string\n vessel: string\n line: string\n arrival: string\n departure: string\n harbour: string\n scError: string\n chooseVoyage: string\n }\n}\n\ninterface ISSConstsSettings {\n limit: number\n dateFormat: string\n}\n\nexport const SSConsts: ISSConsts = {\n settings: {\n limit: 6,\n dateFormat: 'ddd, dd. MMM - HH:mm',\n },\n\n translation: {\n blue: dictionary('scBlueLine'),\n red: dictionary('scRedLine'),\n green: dictionary('scGreenLine'),\n yellow: dictionary('scYellowLine'),\n purple: dictionary('scPurpleLine'),\n orange: dictionary('scOrangeLine'),\n port: dictionary('scPort'),\n voyageNumber: dictionary('scVoyageNumber'),\n vessel: dictionary('scVessel'),\n line: dictionary('scLine'),\n arrival: dictionary('scArrival'),\n departure: dictionary('scDeparture'),\n harbour: dictionary('scHarbour'),\n scError: dictionary('scError'),\n chooseVoyage: dictionary('blsscChooseVoyage'),\n },\n}\n", "/**\n * @type Function\n * @description This is a helper function that is used to get the query params from the url. To read more about the Proxy class, check out this link: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy\n * @returns An object with the query params as properties. E.g. getQueryParams().id\n * @example const params = getQueryParams(); if (params.id) { // Do something }\n */\nexport function getQueryParams() {\n // This uses a Proxy object to get the query params as properties.\n // To read more about the Proxy class, check out this link: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy\n const params = new Proxy(new URLSearchParams(window.location.search), {\n get: (searchParams, prop) => searchParams.get(prop as string),\n })\n\n return params\n}\n\n/**\n * @type variable\n * @description Used to check if the current environment is a production environment.\n */\nexport const isProduction = process.env.NODE_ENV === 'production'\n\n/**\n * @type interface\n * @description Here we are extending the Window interface with the grecaptcha property.\n */\ndeclare let grecaptcha: any\n\n/**\n * @type Function\n * @description This is a companion function that is used in \"handleRecaptcha\", can also be used as a standalone.\n * @returns A boolean value that indicates if the recaptcha is valid or not.\n * @example if (validateRecaptcha()) { // Do something }\n */\nexport function validateRecaptcha(): boolean {\n const v = grecaptcha.getResponse()\n\n if (v.length === 0) {\n return false\n }\n\n return true\n}\n\n/**\n * @type Function\n * @param {Event} event\n * @param {HTMLElement} element\n * @description This is the function that is used to validate the recaptcha and handles the error message as well.\n * @return void. It will prevent the default event if the recaptcha is not valid.\n * @example handleRecaptcha(event, element)\n */\n\nexport function handleRecaptcha(event: Event, element: HTMLElement, button: HTMLButtonElement = null): void {\n if (element) {\n if (!element.classList.contains('hide')) {\n element.classList.add('hide')\n }\n\n if (!validateRecaptcha()) {\n event.preventDefault()\n element.classList.remove('hide')\n\n if (button) {\n buttonLoader.reset(button)\n }\n }\n }\n}\n\n/**\n * @type Function\n * @param {NodeListOf} items\n * @param {String} className [open] - The class name that will be removed, can be overwritten.\n * @description This is a function that is used to remove \"open\" class from all elements.\n */\nexport async function removeActive(items: NodeListOf, className = 'open'): Promise {\n items.forEach((item) => {\n item.classList.remove(className)\n })\n}\n\nexport const ReduceArray = (arr, size: number) => {\n return arr.reduce((acc, val, i) => {\n const idx = Math.floor(i / size)\n // @ts-ignore\n const page = acc[idx] || (acc[idx] = [])\n page.push(val)\n\n return acc\n }, [])\n}\n\nimport { SSConsts } from 'components/sailing-schedule/SSConsts'\nimport buttonLoader from './button-loader'\n// import slideUp from './slide/slide-up'\n\n/**\n * @type Function\n * @param {NodeListOf} items\n * @param {String} className [open] - The class name that will be removed, can be overwritten.\n * @description This is a function that is used to remove \"open\" class from all elements.\n */\nexport const toBoolean = (value: string) => {\n if (value !== '') {\n if (value === '1' || value === 'true' || value === 'True') {\n return true\n }\n\n if (value === '0' || value === 'false' || value === 'False') {\n return false\n }\n }\n\n return '[Not a boolean value]'\n}\n\nexport const translateLineName = (value: string): string => {\n switch (value) {\n case 'Blue Line':\n return SSConsts.translation.blue\n case 'Red Line':\n return SSConsts.translation.red\n case 'Green Line':\n return SSConsts.translation.green\n case 'Yellow Line':\n return SSConsts.translation.yellow\n case 'Purple Line':\n return SSConsts.translation.purple\n case 'Orange Line':\n return SSConsts.translation.orange\n default:\n return ''\n }\n}\n\nexport const scrollToTop = () => window.scroll({ top: 0, left: 0, behavior: 'smooth' })\nexport const scrollToBottom = () => window.scroll({ top: document.body.scrollHeight, left: 0, behavior: 'smooth' })\n\nexport const GetUrlParameter = (key: string) => {\n const queryString = window.location.search\n const urlParams = new URLSearchParams(queryString)\n const getKey = urlParams.get(key)\n\n return getKey !== undefined && getKey !== null && getKey !== '' ? getKey : undefined\n}\n"], "mappings": "4CAAA,IAAMA,EAAe,CACnB,MAAMC,EAAyBC,EAAW,GAAM,CACzCD,IAGDC,GACF,KAAK,SAASD,CAAI,EAGpBA,EAAK,UAAU,IAAI,iBAAiB,EACtC,EACA,MAAMA,EAAyBC,EAAW,GAAM,CACzCD,IAGDC,GACF,KAAK,SAASD,EAAM,EAAI,EAE1BA,EAAK,UAAU,OAAO,iBAAiB,EACzC,EAEA,SAASA,EAAyBE,EAAQ,GAAO,CAC/C,GAAKF,EAIL,IAAI,CAACE,EAAO,CACVF,EAAK,MAAM,MAAQ,GAAGA,EAAK,gBAE3B,OAGFA,EAAK,MAAM,MAAQ,OACrB,CACF,EAEOG,EAAQJ,ECRR,IAAMK,EAAsB,CACjC,SAAU,CACR,MAAO,EACP,WAAY,uBACd,EAEA,YAAa,CACX,KAAMC,EAAW,YAAY,EAC7B,IAAKA,EAAW,WAAW,EAC3B,MAAOA,EAAW,aAAa,EAC/B,OAAQA,EAAW,cAAc,EACjC,OAAQA,EAAW,cAAc,EACjC,OAAQA,EAAW,cAAc,EACjC,KAAMA,EAAW,QAAQ,EACzB,aAAcA,EAAW,gBAAgB,EACzC,OAAQA,EAAW,UAAU,EAC7B,KAAMA,EAAW,QAAQ,EACzB,QAASA,EAAW,WAAW,EAC/B,UAAWA,EAAW,aAAa,EACnC,QAASA,EAAW,WAAW,EAC/B,QAASA,EAAW,SAAS,EAC7B,aAAcA,EAAW,mBAAmB,CAC9C,CACF,EC/BO,IAAMC,EAAe,GAcrB,SAASC,GAA6B,CAG3C,OAFU,WAAW,YAAY,EAE3B,SAAW,CAKnB,CAWO,SAASC,EAAgBC,EAAcC,EAAsBC,EAA4B,KAAY,CACtGD,IACGA,EAAQ,UAAU,SAAS,MAAM,GACpCA,EAAQ,UAAU,IAAI,MAAM,EAGzBH,EAAkB,IACrBE,EAAM,eAAe,EACrBC,EAAQ,UAAU,OAAO,MAAM,EAE3BC,GACFC,EAAa,MAAMD,CAAM,GAIjC,CAQA,eAAsBE,EAAaC,EAAgCC,EAAY,OAAuB,CACpGD,EAAM,QAASE,GAAS,CACtBA,EAAK,UAAU,OAAOD,CAAS,CACjC,CAAC,CACH,CAwDO,IAAME,EAAc,IAAM,OAAO,OAAO,CAAE,IAAK,EAAG,KAAM,EAAG,SAAU,QAAS,CAAC,EACzEC,EAAiB,IAAM,OAAO,OAAO,CAAE,IAAK,SAAS,KAAK,aAAc,KAAM,EAAG,SAAU,QAAS,CAAC", "names": ["buttonLoader", "item", "setWidth", "reset", "button_loader_default", "SSConsts", "dictionary", "isProduction", "validateRecaptcha", "handleRecaptcha", "event", "element", "button", "button_loader_default", "removeActive", "items", "className", "item", "scrollToTop", "scrollToBottom"] }