{ "version": 3, "sources": ["../../../../../Views/StaticContent/TradeIn/TradeIn.ts"], "sourcesContent": ["\uFEFFimport {get, $, $$, getDataJson, postDataText, getDataText, show} from \"@/Utils\"\r\nimport { initGoogleMap } from \"@/StoreMap\"\r\nimport {ReplaceProduct} from \"@/interfaces\"\r\nimport {DataAttributes, TradeInStep} from \"@/enums\"\r\nimport { initCarousels } from \"@/sharedComponents/Carousel/Carousel\"\r\n\r\nconst calcContainerId = \"calcContainer\";\r\nlet products: ReplaceProduct[] = [];\r\nlet product: ReplaceProduct;\r\n\r\nfunction updateCalcHtml(html: string) {\r\n const calcContainer = get(calcContainerId);\r\n if (calcContainer) {\r\n get(\"calcContainer\").innerHTML = html;\r\n } else {\r\n console.error(`Expected element with ID ${calcContainerId} is missing!`);\r\n }\r\n init();\r\n}\r\n\r\nfunction initSearch() {\r\n const processResponse = (responseProducts: ReplaceProduct[]) => {\r\n products = responseProducts;\r\n const formatProduct = (p: ReplaceProduct) =>\r\n `
  • \r\n \r\n
  • `;\r\n\r\n const autocompleteList = $(\".autocomplete-list\");\r\n autocompleteList.innerHTML = products\r\n .map(formatProduct)\r\n .reduce((acc, curr) => acc + curr, \"\");\r\n }\r\n\r\n const queryProducts = (searchTerm: string) => {\r\n const url = `${window.config.tradeIn.getProductsUrl}?searchTerm=${searchTerm}`;\r\n getDataJson(url, processResponse);\r\n }\r\n\r\n const clearResults = () => $(\".autocomplete-list\").innerHTML = \"\";\r\n\r\n const autocompleteClickListener = (e: Event) => {\r\n const target = e.target as HTMLElement;\r\n const pid = parseInt(target.getAttribute(\"data-productid\"));\r\n if (isNaN(pid)) return;\r\n\r\n product = products.find(x => x.id === pid);\r\n postDataText(window.config.tradeIn.evaluationUrl, product, updateCalcHtml);\r\n }\r\n\r\n let timeout: number = null;\r\n const inputListener = (e: Event) => {\r\n window.clearTimeout(timeout);\r\n const input = e.currentTarget as HTMLInputElement;\r\n const searchTerm = input.value;\r\n\r\n if (searchTerm.length < 3) {\r\n return clearResults();\r\n }\r\n\r\n timeout = window.setTimeout(() => queryProducts(searchTerm), 750);\r\n }\r\n\r\n get(\"searchProducts\").addDataBoundEventListener(\"input\", inputListener);\r\n $(\".autocomplete-list\").addDataBoundEventListener(\"click\", autocompleteClickListener);\r\n}\r\n\r\nfunction initEvaluation() {\r\n const handler = (e: Event) => {\r\n const target = e.target as HTMLElement;\r\n const radio = target.previousElementSibling as HTMLInputElement;\r\n radio.checked = true;\r\n\r\n const container = target.closest(\"[data-question-container]\");\r\n const nextContainer = container.nextElementSibling as HTMLElement;\r\n if (nextContainer) {\r\n nextContainer.classList.remove(\"disabled-question\");\r\n } else {\r\n const nextButton = get(\"next\") as HTMLElement;\r\n show(nextButton);\r\n }\r\n }\r\n\r\n $$(\".replace-answers span\").forEach(x => x.addDataBoundEventListener(\"click\", handler));\r\n}\r\n\r\nfunction initNav(step: TradeInStep) {\r\n if (step === TradeInStep.Search) return;\r\n\r\n const back = get(\"back\") as HTMLElement;\r\n const next = get(\"next\") as HTMLElement;\r\n let backClick: Function = null;\r\n\r\n if (step === TradeInStep.Evaluation) {\r\n\r\n backClick = () => getDataText(window.config.tradeIn.searchUrl, updateCalcHtml);\r\n const nextClick = () => {\r\n const answers: number[] = [];\r\n const answerTexts: string[] = [];\r\n const questions: string[] = [];\r\n const questionLabels: string[] = [];\r\n\r\n $$(\"[data-question-container]\").forEach(x => {\r\n const input = x.querySelector(\".replace-answer:checked\") as HTMLInputElement;\r\n answers.push(parseInt(input.value));\r\n\r\n const answerText = input.nextElementSibling as HTMLElement;\r\n answerTexts.push(answerText.textContent);\r\n\r\n const question = x.querySelector(\".replace-question\") as HTMLElement;\r\n questions.push(question.textContent);\r\n questionLabels.push(question.getAttribute(\"data-label\"));\r\n });\r\n\r\n product.answers = answers;\r\n product.answerTexts = answerTexts;\r\n product.questions = questions;\r\n product.questionLabels = questionLabels;\r\n\r\n postDataText(window.config.tradeIn.summaryUrl, product, updateCalcHtml);\r\n }\r\n\r\n next.addDataBoundEventListener(\"click\", nextClick);\r\n }\r\n if (step === TradeInStep.Summary) {\r\n backClick = () => postDataText(window.config.tradeIn.evaluationUrl, product, updateCalcHtml);\r\n }\r\n\r\n back.addDataBoundEventListener(\"click\", backClick);\r\n}\r\n\r\nfunction init() {\r\n const step = parseInt($(\".calc-content\").getAttribute(DataAttributes.Step)) as TradeInStep;\r\n\r\n switch (step) {\r\n case TradeInStep.Search:\r\n initSearch();\r\n break;\r\n case TradeInStep.Evaluation:\r\n initEvaluation();\r\n break;\r\n case TradeInStep.Summary:\r\n break;\r\n }\r\n\r\n initNav(step)\r\n}\r\n\r\nfunction initTradeIn() {\r\n\r\n initGoogleMap();\r\n\r\n const mapContainerId = \"mapContainer\"\r\n const map = get(mapContainerId);\r\n if (map) {\r\n if (!map.querySelector(\".map-content\")) {\r\n map.innerHTML = \"\";\r\n map.append($(\".map-content\"));\r\n }\r\n } else {\r\n console.error(`Expected element with ID ${mapContainerId} is missing!`);\r\n }\r\n\r\n const calc = get(calcContainerId);\r\n if (calc) {\r\n if (!calc.querySelector(\".calc-content\")) {\r\n calc.innerHTML = \"\";\r\n calc.append($(\".calc-content\"));\r\n }\r\n } else {\r\n console.error(`Expected element with ID ${calcContainerId} is missing!`);\r\n }\r\n\r\n init();\r\n}\r\n\r\nwindow.addEventListener(\"load\", () => {\r\n initTradeIn();\r\n initCarousels();\r\n});\r\n"], "mappings": "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", "names": ["calcContainerId", "products", "product", "updateCalcHtml", "html", "get", "init", "initSearch", "processResponse", "responseProducts", "formatProduct", "p", "autocompleteList", "$", "acc", "curr", "queryProducts", "searchTerm", "url", "getDataJson", "clearResults", "autocompleteClickListener", "e", "target", "pid", "x", "postDataText", "timeout", "inputListener", "initEvaluation", "handler", "radio", "nextContainer", "nextButton", "show", "$$", "initNav", "step", "back", "next", "backClick", "getDataText", "nextClick", "answers", "answerTexts", "questions", "questionLabels", "input", "answerText", "question", "initTradeIn", "initGoogleMap", "mapContainerId", "map", "calc", "initCarousels"] }