') !== '7';\n});\n\n// @@replace logic\nfixRegExpWellKnownSymbolLogic('replace', function (_, nativeReplace, maybeCallNative) {\n var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0';\n\n return [\n // `String.prototype.replace` method\n // https://tc39.es/ecma262/#sec-string.prototype.replace\n function replace(searchValue, replaceValue) {\n var O = requireObjectCoercible(this);\n var replacer = searchValue == undefined ? undefined : searchValue[REPLACE];\n return replacer !== undefined\n ? replacer.call(searchValue, O, replaceValue)\n : nativeReplace.call(toString(O), searchValue, replaceValue);\n },\n // `RegExp.prototype[@@replace]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@replace\n function (string, replaceValue) {\n var rx = anObject(this);\n var S = toString(string);\n\n if (\n typeof replaceValue === 'string' &&\n replaceValue.indexOf(UNSAFE_SUBSTITUTE) === -1 &&\n replaceValue.indexOf('$<') === -1\n ) {\n var res = maybeCallNative(nativeReplace, rx, S, replaceValue);\n if (res.done) return res.value;\n }\n\n var functionalReplace = typeof replaceValue === 'function';\n if (!functionalReplace) replaceValue = toString(replaceValue);\n\n var global = rx.global;\n if (global) {\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n }\n var results = [];\n while (true) {\n var result = regExpExec(rx, S);\n if (result === null) break;\n\n results.push(result);\n if (!global) break;\n\n var matchStr = toString(result[0]);\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n }\n\n var accumulatedResult = '';\n var nextSourcePosition = 0;\n for (var i = 0; i < results.length; i++) {\n result = results[i];\n\n var matched = toString(result[0]);\n var position = max(min(toInteger(result.index), S.length), 0);\n var captures = [];\n // NOTE: This is equivalent to\n // captures = result.slice(1).map(maybeToString)\n // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));\n var namedCaptures = result.groups;\n if (functionalReplace) {\n var replacerArgs = [matched].concat(captures, position, S);\n if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);\n var replacement = toString(replaceValue.apply(undefined, replacerArgs));\n } else {\n replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n }\n if (position >= nextSourcePosition) {\n accumulatedResult += S.slice(nextSourcePosition, position) + replacement;\n nextSourcePosition = position + matched.length;\n }\n }\n return accumulatedResult + S.slice(nextSourcePosition);\n }\n ];\n}, !REPLACE_SUPPORTS_NAMED_GROUPS || !REPLACE_KEEPS_$0 || REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE);\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import domReady from \"./utils/domReady\";\r\nimport lightbox from \"./utils/lightbox\";\r\n\r\nconst { Rx, jQuery } = window;\r\nconst rootUrl = '/umbraco/Api';\r\n\r\nconst vinLookup = function ($) {\r\n\t$('comp-vin-lookup').each(function () {\r\n\t\tlet $container = $(this);\r\n\t\tlet $results = $container.find(\"comp-vin-results\");\r\n\t\tlet $vinNumber = $(\"#vin_number\");\r\n let $searchBtn = $(\"#vin-search\");\r\n let $btnFeedback = $(\"#feedback\");\r\n let feedbackUrl = $btnFeedback.attr(\"href\");\r\n\t\t$container.on('click', '.content-section > header', function () {\r\n\t\t\tlet $section = $(this).parent();\r\n\t\t\t// client wants expansion to be independent - leaving this in case they change their minds\r\n\t\t\t//$container.find(\".content-section\").not($section).removeClass(\"expanded\");\r\n\t\t\t$section.toggleClass('expanded');\r\n\t\t});\r\n\t\tfunction generateTruckMaterialsList(data) {\r\n\t\t\tlet html = data.categories.map((cat) => {\r\n\t\t\t\tlet contentSection = $('');\r\n\t\t\t\tlet contentHeader = $(`${cat.name} [${parseInt(cat.assetQuantity, 10)}]`).appendTo(contentSection);\r\n\t\t\t\tlet contentList = $('').appendTo(contentSection);\r\n\t\t\t\tlet contentItems = cat.assets.map(asset => {\r\n\t\t\t\t\tconst typeLower = asset.type ? asset.type.toLowerCase() : 'img';\r\n\t\t\t\t\tif (typeLower === 'img' || typeLower === 'fab') {\r\n\t\t\t\t\t\treturn $(`${asset.title}`);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// We're in VID Land\r\n\t\t\t\t\tlet title = asset.title;\r\n\t\t\t\t\tlet jwCode = '';\r\n\r\n\t\t\t\t\tif (asset.videoAsset) {\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\tconst time = asset.videoAsset.time\r\n\t\t\t\t\t\t\t&& typeof asset.videoAsset.time === 'string'\r\n\t\t\t\t\t\t\t? asset.videoAsset.time : '';\r\n\r\n\t\t\t\t\t\tif (time !== '')\r\n\t\t\t\t\t\t\ttitle += ` (${time})`;\r\n\r\n\t\t\t\t\t\tif (asset.videoAsset.jwCode && typeof asset.videoAsset.jwCode === 'string')\r\n\t\t\t\t\t\t\tjwCode = asset.videoAsset.jwCode;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\tlet link = `${title}`;\r\n\r\n\t\t\t\t\treturn $(link).data('assetData', asset);\r\n\r\n\t\t\t\t});\r\n\t\t\t\tcontentList.append(contentItems);\r\n\t\t\t\treturn contentSection;\r\n\t\t\t});\r\n\t\t\treturn html;\r\n\t\t}\r\n\r\n\t\t// endpoint: http://freightlinertrucks.azurewebsites.net/umbraco/surface/VIN/GetTruck?vin=GX1874\r\n\r\n\t\tfunction preventInvalidInput(event, val, regex, length) {\r\n\t\t\tlet validation = {\r\n\t\t\t\tevent,\r\n\t\t\t\tregex,\r\n\t\t\t\tlength,\r\n\t\t\t\terror: false,\r\n\t\t\t\tvalid: false\r\n\t\t\t};\r\n\r\n\t\t\tif (event.keyCode === 13 ||\r\n\t\t\t\tevent.keyCode === 8 ||\r\n\t\t\t\tevent.keyCode === 46 ||\r\n\t\t\t\tevent.keyCode === 9 ||\r\n\t\t\t\t(35 <= event.keyCode && event.keyCode <=40 )) {\r\n\t\t\t\tvalidation.valid = true;\r\n\t\t\t} else if (!val.match(regex)) {\r\n\t\t\t\tevent.preventDefault();\r\n\t\t\t\tvalidation.error = \"regex\";\r\n\t\t\t} else if (val.length > length && (document.getSelection().toString() === \"\" || val.indexOf(document.getSelection.toString()) !== -1)) {\r\n\t\t\t\tevent.preventDefault();\r\n\t\t\t\tvalidation.error = \"length\";\r\n\t\t\t} else {\r\n\t\t\t\tvalidation.valid = true;\r\n\t\t\t}\r\n\r\n\t\t\treturn validation;\r\n\t\t}\r\n\r\n\t\tfunction showError(error) {\r\n\t\t\tif (error.includes(\"status\") || error == \"\" || !error) {\r\n\t\t\t\terror = \"There are no resources available at this time for VIN \" + $vinNumber.val() +\".
You can find information for your truck model using the navigation below.\";\r\n\t\t\t}\r\n\t\t\tlet $searchError = $(\"#vin-search-error-msg\");\r\n\t\t\t$container.addClass(\"error\");\r\n\t\t\tif($searchError[0]){\r\n\t\t\t\t$searchError.html(error);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\t\r\n\t\t\t\t$results.html(`${$container.attr('error-message') || error}
`);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction hideError() {\r\n\t\t\t$container.removeClass(\"error\");\r\n\t\t\t$(\"#vin-search-error-msg\").html(\"\");\r\n\t\t}\r\n\r\n\t\tfunction removeLastChar(vin) {\r\n\t\t\t$vinNumber.val(vin.substring(0, vin.length - 1));\r\n\t\t}\r\n\r\n\t\tfunction trim (s, c) {\r\n\t\t\tif (c === \"]\") c = \"\\\\]\";\r\n\t\t\tif (c === \"\\\\\") c = \"\\\\\\\\\";\r\n\t\t\treturn s.replace(new RegExp(\r\n\t\t\t \"^[\" + c + \"]+|[\" + c + \"]+$\", \"g\"\r\n\t\t\t), \"\");\r\n\t\t}\r\n\r\n\t\tfunction getHash() {\r\n\t\t\tconst path = trim(window.location.pathname, '/').split('/');\r\n\t\t\tconst vin = path.length === 2 ? path[1] : 'abcdef';\r\n\t\t\treturn `${rootUrl}/VIN/${vin}`;\r\n\t\t}\r\n\r\n\t\tfunction processResponse(response) {\r\n\t\t\t$(\"#vin-search-error-msg\").empty();\r\n\t\t\t$container.removeClass('loading');\r\n\t\t\t$searchBtn.removeClass(\"loading\");\r\n\t\t\tif (response.errorFlag === \"true\") {\r\n\t\t\t\t$results.empty();\r\n\t\t\t\tshowError(response.errorMsg, response.serialNo);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\thideError();\r\n\t\t\t// set vin to feedback url\r\n\t\t\t$btnFeedback.attr(\"href\", feedbackUrl + \"?vin=\" + response.serialNo);\r\n\r\n\t\t\t$container.addClass(\"show-results\");\r\n\t\t\t$results.empty();\r\n\t\t\tlet total = response.categories.reduce((total, cat) => {\r\n\t\t\t\treturn total + parseInt(cat.assetQuantity, 10);\r\n\t\t\t}, 0);\r\n\t\t\tlet $header = $(`${response.model}
`)\r\n\t\t\t\t.appendTo($results);\r\n\t\t\tlet $contentSections = $(``)\r\n\t\t\t\t.appendTo($results);\r\n\t\t\tlet content = generateTruckMaterialsList(response);\r\n\t\t\t$contentSections.append(content);\r\n\t\t\t$(\"body, html\").animate({\r\n\t\t\t\tscrollTop: 0\r\n\t\t\t}, 500);\r\n }\r\n\r\n\t\t$vinNumber.on(\"keyup\", e => {\r\n\t\t\tlet vin = $vinNumber.val();\r\n\t\t\t\r\n\t\t\tlet validation = preventInvalidInput(e, vin, /^[0-9a-zA-Z]+$/, 6);\r\n\r\n\t\t\tswitch(validation.error) {\r\n\t\t\t\tcase \"regex\": {\r\n\t\t\t\t\tshowError(\"Only letters (a-z and A-Z) and numbers are allowed.\");\r\n\t\t\t\t\tremoveLastChar(vin);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\tcase \"length\": {\r\n\t\t\t\t\tshowError(\"Only enter the last 6 characters of your VIN.\");\r\n\t\t\t\t\tremoveLastChar(vin);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\tcase false: {\r\n\t\t\t\t\thideError();\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\tlet search$ = $searchBtn[0] ? Rx.Observable.fromEvent($searchBtn, \"click\")\r\n\t\t\t\t\t\t.do(e => {\r\n\t\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\t.map(() => {\r\n\t\t\t\t\t\t\treturn $vinNumber.val()\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\t.do(code => {\r\n\t\t\t\t\t\t\tif (code.length < 6) {\r\n\t\t\t\t\t\t\t\tshowError(\"Enter the last 6 characters of your VIN.\")\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\t.distinctUntilChanged((p, c) => {\r\n\t\t\t\t\t\t\treturn p === c;\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\t.filter(code => {\r\n\t\t\t\t\t\t\treturn code.length === 6;\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\t.do(code => {\r\n\t\t\t\t\t\t\t$searchBtn.addClass(\"loading\");\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\t.switchMap(code => {\r\n\t\t\t\t\t\t\treturn Rx.Observable.fromPromise($.ajax({\r\n\t\t\t\t\t\t\t\turl: `${rootUrl}/vin/${code}`,\r\n\t\t\t\t\t\t\t\tmethod: \"GET\"\r\n\t\t\t\t\t\t\t})).retry(2);\r\n\t\t\t\t\t\t}) :\r\n\t\t\tRx.Observable.fromPromise(\r\n\t\t\t\t$.ajax({\r\n\t\t\t\t\t\turl: getHash(),\r\n\t\t\t\t\t\tmethod: \"GET\"\r\n\t\t\t\t})\r\n\t\t\t).retry(2)\r\n\t\t\r\n\t\tsearch$\r\n\t\t\t.subscribe(response => {\r\n\t\t\t\tprocessResponse(response);\r\n\t\t\t}, (e) => {\r\n\t\t\t\tconst errorResponse = {\r\n\t\t\t\t\terrorFlag: 'true',\r\n\t\t\t\t\terrorMsg: e.responseText,\r\n\t\t\t\t\tserialNo: '',\r\n\t\t\t\t\tcategories: [],\r\n\t\t\t\t\tmodel: '',\r\n\t\t\t\t};\r\n\t\t\t\tprocessResponse(errorResponse);\r\n\t\t\t});\r\n\r\n\t\t\r\n\t\t$container.on(\"click\", \".btn-help\", (e) => {\r\n\t\t\tlightbox(`\r\n\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t

\r\n\t\t\t\t\t
\r\n\t\t\t\t
`);\r\n\t\t});\r\n\t});\r\n};\r\ndomReady.then(()=>vinLookup(jQuery));\r\n\r\nexport default vinLookup;"],"names":["domReady","Promise","resolve","setTimeout","document","readyState","addEventListener","window","CLIENT_RAZOR_ENV","domWrap","element","createElement","empty","store","on","action","delegationOrFn","fn","delegation","event","target","parentNode","matches","call","setSelected","className","childNodes","forEach","node","classList","remove","add","trigger","dispatchEvent","Event","bubbles","css","styles","Object","keys","key","style","wrapInner","wrapper","appendChild","firstChild","data","value","offset","rect","getBoundingClientRect","top","scrollY","left","scrollX","check","overflowLeft","overflowHorizontal","scrollLeft","overflowRight","scrollWidth","offsetWidth","htm","selector","content","current","self","trim","push","split","join","toString","defineProperty","get","template","innerHTML","Nodes","length","createRange","createContextualFragment","h","stack","ready","done","querySelector","body","Node","lightbox","e","closeModal","complete","openModal","dismissible","in_duration","out_duration","modal","opacity","undefined","starting_top","ending_top","overlay","lStack","width","getComputedStyle","contains","baseCSS","display","transitionDuration","scaleX","overflow","Rx","jQuery","rootUrl","vinLookup","$","each","$container","$results","find","$vinNumber","$searchBtn","$btnFeedback","feedbackUrl","attr","$section","parent","toggleClass","generateTruckMaterialsList","html","categories","map","cat","contentSection","contentHeader","name","parseInt","assetQuantity","appendTo","contentList","contentItems","assets","asset","typeLower","type","toLowerCase","url","title","jwCode","videoAsset","time","link","assetId","append","preventInvalidInput","val","regex","validation","error","valid","keyCode","match","preventDefault","getSelection","indexOf","showError","includes","$searchError","addClass","hideError","removeClass","removeLastChar","vin","substring","s","c","replace","RegExp","getHash","path","location","pathname","processResponse","response","errorFlag","errorMsg","serialNo","total","reduce","$header","model","$contentSections","animate","scrollTop","search$","Observable","fromEvent","do","code","distinctUntilChanged","p","filter","switchMap","fromPromise","ajax","method","retry","subscribe","errorResponse","responseText","then"],"sourceRoot":""}