{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/app/client/ApiClient.ts","webpack:///./src/index.tsx","webpack:///./src/app/App.tsx","webpack:///./src/app/context/ProductContext.ts","webpack:///./node_modules/whatwg-fetch/fetch.js","webpack:///external \"React\"","webpack:///external \"ReactDOM\"","webpack:///./src/app/components/ProductDescription.tsx","webpack:///./src/app/components/ProductHeading.tsx","webpack:///./src/app/components/ProductSpecifications.tsx","webpack:///./src/app/components/PartGroup.tsx"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","baseUrl","http","jsonParseReviver","this","window","productUrl","dealerId","language","showListPrice","showPartNumber","url_","replace","fetch","method","headers","Accept","then","_response","status","json","data","console","error","node","document","getElementById","url","getAttribute","companyId","toLocaleLowerCase","ReactDOM","render","App","setBaseUrl","React","useState","product","setProduct","EmptyResponse","loading","setLoading","setError","useEffect","style","createElement","href","rel","head","appendChild","parsedUrl","URL","apiClient","ApiClient","origin","getProduct","pathname","response","catch","finally","ProductContext","Provider","className","id","parts","partGroups","optionGroups","approvals","contentHtml","introductionHtml","productDescriptionHtml","productImages","productSpecifications","proposition65Warning","css","EmptyProduct","createContext","v","support","self","Blob","e","viewClasses","isArrayBufferView","ArrayBuffer","isView","obj","indexOf","toString","normalizeName","String","test","TypeError","toLowerCase","normalizeValue","iteratorFor","items","iterator","next","shift","done","Headers","map","forEach","append","Array","isArray","header","getOwnPropertyNames","consumed","body","bodyUsed","Promise","reject","fileReaderReady","reader","resolve","onload","result","onerror","readBlobAsArrayBuffer","blob","FileReader","promise","readAsArrayBuffer","bufferClone","buf","slice","view","Uint8Array","byteLength","set","buffer","Body","_initBody","_bodyInit","_bodyText","isPrototypeOf","_bodyBlob","FormData","_bodyFormData","URLSearchParams","DataView","_bodyArrayBuffer","type","rejected","Error","arrayBuffer","text","readAsText","chars","length","fromCharCode","join","formData","decode","JSON","parse","oldValue","has","callback","thisArg","keys","push","values","entries","methods","Request","input","options","upcased","credentials","signal","toUpperCase","referrer","form","trim","split","bytes","decodeURIComponent","Response","bodyInit","ok","statusText","clone","redirectStatuses","redirect","RangeError","location","DOMException","err","message","stack","constructor","init","request","aborted","xhr","XMLHttpRequest","abortXhr","abort","rawHeaders","getAllResponseHeaders","line","responseURL","responseText","ontimeout","onabort","open","withCredentials","responseType","setRequestHeader","addEventListener","onreadystatechange","readyState","removeEventListener","send","polyfill","useContext","dangerouslySetInnerHTML","__html","selectedImage","setSelectedImage","urlName","encodeURIComponent","link","imageUrl","target","src","alt","imageName","height","width","opacity","onClick","backgroundImage","ProductSpecification","html","setOpen","preventDefault","display","descriptionHtml","PartGroup","filter","isOpen","setIsOpen","filteredParts","setFilteredParts","filtered","description","listPrice","partNumber","includes","setFilter","placeholder","onChange"],"mappings":"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","file":"app.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n","/* tslint:disable */\r\n\r\nimport { ProductApiResponse } from \"../types/ProductType\";\r\n\r\n/* eslint-disable */\r\nexport class ApiClient {\r\n private http: {\r\n fetch(url: RequestInfo, init?: RequestInit): Promise;\r\n };\r\n private baseUrl: string;\r\n protected jsonParseReviver:\r\n | ((key: string, value: any) => any)\r\n | undefined = undefined;\r\n\r\n constructor(\r\n baseUrl?: string,\r\n http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }\r\n ) {\r\n this.http = http ? http : window;\r\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\r\n }\r\n\r\n /**\r\n * @return Success\r\n */\r\n getProduct(\r\n productUrl: string,\r\n dealerId: string,\r\n language: string = \"en\",\r\n showListPrice: boolean,\r\n showPartNumber: boolean\r\n ): Promise {\r\n let url_ = `${this.baseUrl}/umbraco/api/dealer/getproduct?url=${productUrl}&dealerId=${dealerId}&language=${language}&showListPrice=${showListPrice}&showPartNumber=${showPartNumber}`;\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n method: \"GET\",\r\n headers: {\r\n Accept: \"text/plain\",\r\n },\r\n };\r\n\r\n return this.http.fetch(url_, options_).then((_response: Response) => {\r\n if (_response.status === 200) {\r\n return _response.json().then((data) => {\r\n return data as ProductApiResponse;\r\n });\r\n } else {\r\n console.error(\"Non-200 response from API\");\r\n throw \"Could not get product\";\r\n }\r\n });\r\n }\r\n}\r\n","import * as React from 'react';\r\nimport * as ReactDOM from 'react-dom';\r\nimport { App } from './app/App';\r\nimport 'whatwg-fetch';// polyfill window.fetch\r\n\r\nlet node = document.getElementById('rl-product') as HTMLElement;\r\nlet url = node.getAttribute(\"data-url\");\r\nlet companyId = node.getAttribute(\"data-company-id\");\r\nlet language = node.getAttribute(\"data-language\");\r\nlet showPartNumber = node.getAttribute(\"data-show-part-number\");\r\nlet showListPrice = node.getAttribute(\"data-show-list-price\");\r\n\r\nif (showPartNumber) {\r\n showPartNumber = showPartNumber.toLocaleLowerCase();\r\n}\r\n\r\nif (showListPrice) {\r\n showListPrice = showListPrice.toLocaleLowerCase();\r\n}\r\n\r\nReactDOM.render(\r\n ,\r\n node\r\n);","import * as React from 'react';\r\n\r\nimport { ApiClient } from './client/ApiClient'\r\nimport { ProductContext, EmptyResponse } from './context/ProductContext'\r\n\r\nimport ConfigurationPropsType from './types/ConfigurationProps'\r\nimport { Product } from './types/ProductType'\r\n\r\nimport ProductHeading from './components/ProductHeading'\r\nimport ProductDescription from './components/ProductDescription'\r\nimport ProductSpecifications from './components/ProductSpecifications'\r\nimport PartGroups from './components/PartGroup'\r\n\r\nexport const App = ({ url, companyId, language, showListPrice, showPartNumber }: ConfigurationPropsType) => {\r\n const [baseUrl, setBaseUrl] = React.useState(\"\");\r\n const [product, setProduct] = React.useState(EmptyResponse.product);\r\n const [loading, setLoading] = React.useState(true);\r\n const [error, setError] = React.useState(false);\r\n\r\n React.useEffect(() => {\r\n if (!baseUrl) { return }\r\n var style = document.createElement('link');\r\n style.href = `${baseUrl}/${'assets/product-template/product.min.css'}`\r\n style.rel = \"stylesheet\";\r\n document.head.appendChild(style);\r\n }, [baseUrl])\r\n\r\n React.useEffect(() => {\r\n const parsedUrl = new URL(url || \"\")\r\n const apiClient = new ApiClient(parsedUrl.origin)\r\n setBaseUrl(parsedUrl.origin || \"\")\r\n\r\n apiClient.getProduct(parsedUrl.pathname, companyId || \"\", language || \"\", showListPrice, showPartNumber)\r\n .then(response => {\r\n setProduct(response.product)\r\n })\r\n .catch(() => {\r\n setError(true)\r\n })\r\n .finally(() => {\r\n setLoading(false)\r\n })\r\n }, [])\r\n\r\n if (loading) {\r\n return

Loading product

\r\n }\r\n\r\n if (error) {\r\n return

There was a problem loading the product.

\r\n }\r\n\r\n return \r\n \r\n \r\n
\r\n \r\n

Parts

\r\n \r\n

Options

\r\n \r\n
\r\n
\r\n}\r\n","import * as React from \"react\";\r\nimport { ProductApiResponse } from \"../types/ProductType\";\r\n\r\nconst EmptyResponse = {\r\n product: {\r\n approvals: [],\r\n contentHtml: null,\r\n introductionHtml: null,\r\n name: null,\r\n optionGroups: [],\r\n partGroups: [],\r\n productDescriptionHtml: null,\r\n productImages: [],\r\n productSpecifications: [],\r\n proposition65Warning: false,\r\n },\r\n css: \"\",\r\n} as ProductApiResponse;\r\n\r\nconst EmptyProduct = EmptyResponse.product;\r\n\r\nconst ProductContext = React.createContext(EmptyProduct);\r\n\r\nexport { ProductContext, EmptyResponse };\r\n","var support = {\n searchParams: 'URLSearchParams' in self,\n iterable: 'Symbol' in self && 'iterator' in Symbol,\n blob:\n 'FileReader' in self &&\n 'Blob' in self &&\n (function() {\n try {\n new Blob()\n return true\n } catch (e) {\n return false\n }\n })(),\n formData: 'FormData' in self,\n arrayBuffer: 'ArrayBuffer' in self\n}\n\nfunction isDataView(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n}\n\nif (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ]\n\n var isArrayBufferView =\n ArrayBuffer.isView ||\n function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n }\n}\n\nfunction normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name)\n }\n if (/[^a-z0-9\\-#$%&'*+.^_`|~]/i.test(name)) {\n throw new TypeError('Invalid character in header field name')\n }\n return name.toLowerCase()\n}\n\nfunction normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value)\n }\n return value\n}\n\n// Build a destructive iterator for the value list\nfunction iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift()\n return {done: value === undefined, value: value}\n }\n }\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n }\n }\n\n return iterator\n}\n\nexport function Headers(headers) {\n this.map = {}\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value)\n }, this)\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n this.append(header[0], header[1])\n }, this)\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name])\n }, this)\n }\n}\n\nHeaders.prototype.append = function(name, value) {\n name = normalizeName(name)\n value = normalizeValue(value)\n var oldValue = this.map[name]\n this.map[name] = oldValue ? oldValue + ', ' + value : value\n}\n\nHeaders.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)]\n}\n\nHeaders.prototype.get = function(name) {\n name = normalizeName(name)\n return this.has(name) ? this.map[name] : null\n}\n\nHeaders.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n}\n\nHeaders.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value)\n}\n\nHeaders.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this)\n }\n }\n}\n\nHeaders.prototype.keys = function() {\n var items = []\n this.forEach(function(value, name) {\n items.push(name)\n })\n return iteratorFor(items)\n}\n\nHeaders.prototype.values = function() {\n var items = []\n this.forEach(function(value) {\n items.push(value)\n })\n return iteratorFor(items)\n}\n\nHeaders.prototype.entries = function() {\n var items = []\n this.forEach(function(value, name) {\n items.push([name, value])\n })\n return iteratorFor(items)\n}\n\nif (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries\n}\n\nfunction consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true\n}\n\nfunction fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result)\n }\n reader.onerror = function() {\n reject(reader.error)\n }\n })\n}\n\nfunction readBlobAsArrayBuffer(blob) {\n var reader = new FileReader()\n var promise = fileReaderReady(reader)\n reader.readAsArrayBuffer(blob)\n return promise\n}\n\nfunction readBlobAsText(blob) {\n var reader = new FileReader()\n var promise = fileReaderReady(reader)\n reader.readAsText(blob)\n return promise\n}\n\nfunction readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf)\n var chars = new Array(view.length)\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i])\n }\n return chars.join('')\n}\n\nfunction bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength)\n view.set(new Uint8Array(buf))\n return view.buffer\n }\n}\n\nfunction Body() {\n this.bodyUsed = false\n\n this._initBody = function(body) {\n this._bodyInit = body\n if (!body) {\n this._bodyText = ''\n } else if (typeof body === 'string') {\n this._bodyText = body\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString()\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer)\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer])\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body)\n } else {\n this._bodyText = body = Object.prototype.toString.call(body)\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8')\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type)\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8')\n }\n }\n }\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n }\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n }\n }\n\n this.text = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n }\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n }\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n }\n\n return this\n}\n\n// HTTP methods whose capitalization should be normalized\nvar methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT']\n\nfunction normalizeMethod(method) {\n var upcased = method.toUpperCase()\n return methods.indexOf(upcased) > -1 ? upcased : method\n}\n\nexport function Request(input, options) {\n options = options || {}\n var body = options.body\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url\n this.credentials = input.credentials\n if (!options.headers) {\n this.headers = new Headers(input.headers)\n }\n this.method = input.method\n this.mode = input.mode\n this.signal = input.signal\n if (!body && input._bodyInit != null) {\n body = input._bodyInit\n input.bodyUsed = true\n }\n } else {\n this.url = String(input)\n }\n\n this.credentials = options.credentials || this.credentials || 'same-origin'\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers)\n }\n this.method = normalizeMethod(options.method || this.method || 'GET')\n this.mode = options.mode || this.mode || null\n this.signal = options.signal || this.signal\n this.referrer = null\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body)\n}\n\nRequest.prototype.clone = function() {\n return new Request(this, {body: this._bodyInit})\n}\n\nfunction decode(body) {\n var form = new FormData()\n body\n .trim()\n .split('&')\n .forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=')\n var name = split.shift().replace(/\\+/g, ' ')\n var value = split.join('=').replace(/\\+/g, ' ')\n form.append(decodeURIComponent(name), decodeURIComponent(value))\n }\n })\n return form\n}\n\nfunction parseHeaders(rawHeaders) {\n var headers = new Headers()\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ')\n preProcessedHeaders.split(/\\r?\\n/).forEach(function(line) {\n var parts = line.split(':')\n var key = parts.shift().trim()\n if (key) {\n var value = parts.join(':').trim()\n headers.append(key, value)\n }\n })\n return headers\n}\n\nBody.call(Request.prototype)\n\nexport function Response(bodyInit, options) {\n if (!options) {\n options = {}\n }\n\n this.type = 'default'\n this.status = options.status === undefined ? 200 : options.status\n this.ok = this.status >= 200 && this.status < 300\n this.statusText = 'statusText' in options ? options.statusText : 'OK'\n this.headers = new Headers(options.headers)\n this.url = options.url || ''\n this._initBody(bodyInit)\n}\n\nBody.call(Response.prototype)\n\nResponse.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n}\n\nResponse.error = function() {\n var response = new Response(null, {status: 0, statusText: ''})\n response.type = 'error'\n return response\n}\n\nvar redirectStatuses = [301, 302, 303, 307, 308]\n\nResponse.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n}\n\nexport var DOMException = self.DOMException\ntry {\n new DOMException()\n} catch (err) {\n DOMException = function(message, name) {\n this.message = message\n this.name = name\n var error = Error(message)\n this.stack = error.stack\n }\n DOMException.prototype = Object.create(Error.prototype)\n DOMException.prototype.constructor = DOMException\n}\n\nexport function fetch(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init)\n\n if (request.signal && request.signal.aborted) {\n return reject(new DOMException('Aborted', 'AbortError'))\n }\n\n var xhr = new XMLHttpRequest()\n\n function abortXhr() {\n xhr.abort()\n }\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n }\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL')\n var body = 'response' in xhr ? xhr.response : xhr.responseText\n resolve(new Response(body, options))\n }\n\n xhr.onerror = function() {\n reject(new TypeError('Network request failed'))\n }\n\n xhr.ontimeout = function() {\n reject(new TypeError('Network request failed'))\n }\n\n xhr.onabort = function() {\n reject(new DOMException('Aborted', 'AbortError'))\n }\n\n xhr.open(request.method, request.url, true)\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true\n } else if (request.credentials === 'omit') {\n xhr.withCredentials = false\n }\n\n if ('responseType' in xhr && support.blob) {\n xhr.responseType = 'blob'\n }\n\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value)\n })\n\n if (request.signal) {\n request.signal.addEventListener('abort', abortXhr)\n\n xhr.onreadystatechange = function() {\n // DONE (success or failure)\n if (xhr.readyState === 4) {\n request.signal.removeEventListener('abort', abortXhr)\n }\n }\n }\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit)\n })\n}\n\nfetch.polyfill = true\n\nif (!self.fetch) {\n self.fetch = fetch\n self.Headers = Headers\n self.Request = Request\n self.Response = Response\n}\n","module.exports = React;","module.exports = ReactDOM;","import * as React from 'react'\r\n\r\nimport { ProductContext } from '../context/ProductContext'\r\n\r\nconst ProductDescription = () => {\r\n const { productDescriptionHtml } = React.useContext(ProductContext)\r\n\r\n return
\r\n}\r\n\r\nexport default ProductDescription\r\n","import * as React from \"react\";\r\n\r\nimport { ProductContext } from \"../context/ProductContext\";\r\nimport { ProductImage } from \"../types/ProductType\";\r\n\r\ntype ProductHeadingProps = {\r\n baseUrl: string;\r\n};\r\n\r\nconst ProductHeading = ({ baseUrl }: ProductHeadingProps) => {\r\n const {\r\n name,\r\n introductionHtml,\r\n proposition65Warning,\r\n approvals,\r\n productImages,\r\n } = React.useContext(ProductContext);\r\n const [selectedImage, setSelectedImage] = React.useState({} as ProductImage);\r\n let urlName = \"\";\r\n if (name) {\r\n urlName = encodeURIComponent(name)\r\n };\r\n React.useEffect(() => {\r\n setSelectedImage(productImages[0] || ({} as ProductImage));\r\n }, [productImages]);\r\n\r\n return (\r\n
\r\n \r\n

{name}

\r\n\r\n
\r\n\r\n
\r\n

Approvals

\r\n

\r\n Some approval documents are available to view by clicking the icons\r\n below.\r\n

\r\n\r\n {approvals.map((p) => {\r\n if (p.link) {\r\n return (\r\n \r\n \r\n \r\n );\r\n } else {\r\n return (\r\n \r\n );\r\n }\r\n })}\r\n\r\n {proposition65Warning && (\r\n
\r\n \r\n

\r\n WARNING: Cancer and Reproductive Harm California Proposition 65\r\n

\r\n
\r\n )}\r\n\r\n \r\n Request Information\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n {selectedImage ? (\r\n \r\n ) : (\r\n \r\n )}\r\n
\r\n\r\n {/* @if (Model.Product360 != null)\r\n {\r\n
\r\n @Html.Magic360(Model.Product360)\r\n
\r\n } */}\r\n\r\n
    \r\n {productImages.map((o) => {\r\n return (\r\n
  • \r\n {\r\n setSelectedImage(o);\r\n }}\r\n style={{\r\n backgroundImage: `url('${baseUrl}${o.href}?height=100')`,\r\n }}\r\n >\r\n \r\n HD View\r\n \r\n
  • \r\n );\r\n })}\r\n\r\n {/* @if (Model.Product360 != null)\r\n {\r\n
  • \r\n \r\n 360 View\r\n
  • \r\n } */}\r\n\r\n {/* @if (Model.Videos != null)\r\n {\r\n foreach(var productVideo in Model.Videos)\r\n {\r\n if (productVideo == null) { continue; }\r\n\r\n var videoUrl = productVideo?.MediaLibraryVideo?.Url() ?? productVideo?.VideoUrl?.Url ?? \"\";\r\n if (string.IsNullOrEmpty(videoUrl)) { continue; }\r\n\r\n
  • \r\n \r\n Video\r\n
  • \r\n }\r\n } */}\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default ProductHeading;\r\n","import * as React from 'react'\r\n\r\nimport { ProductContext } from '../context/ProductContext'\r\n\r\ntype ProductSpecificationProps = {\r\n name: string | null;\r\n html: string | null;\r\n}\r\n\r\nconst ProductSpecification = ({ name, html }: ProductSpecificationProps) => {\r\n const [open, setOpen] = React.useState(false)\r\n\r\n return \r\n}\r\n\r\nconst ProductSpecifications = () => {\r\n const { productSpecifications } = React.useContext(ProductContext)\r\n\r\n return <>\r\n {productSpecifications.map(p => {\r\n return \r\n })}\r\n \r\n}\r\n\r\nexport default ProductSpecifications\r\n","import * as React from 'react'\r\n\r\nimport { PartGroup, IndividualPart } from '../types/ProductType'\r\n\r\ntype PartGroupProps = {\r\n name: string;\r\n parts: IndividualPart[];\r\n filter: string | undefined;\r\n showPartNumber: boolean;\r\n}\r\n\r\nconst PartGroup = ({ name, parts, filter, showPartNumber }: PartGroupProps) => {\r\n const [isOpen, setIsOpen] = React.useState(false)\r\n const [filteredParts, setFilteredParts] = React.useState(parts)\r\n\r\n React.useEffect(() => {\r\n if (!filter) {\r\n setFilteredParts(parts)\r\n } else {\r\n var filtered = parts.filter(p => {\r\n const lower = [p.description, p.listPrice, p.partNumber].map(p => p.toLowerCase())\r\n return lower.filter(p => p.includes(filter.toLowerCase())).length > 0\r\n })\r\n setFilteredParts(filtered)\r\n setIsOpen(true)\r\n }\r\n }, [filter])\r\n\r\n return <>\r\n

\r\n {\r\n setIsOpen(!isOpen)\r\n }} className={isOpen ? \"table-toggle active\" : \"table-toggle\"} aria-controls=\"part\" aria-expanded=\"false\">\r\n {name}\r\n \r\n

\r\n\r\n {isOpen &&\r\n \r\n \r\n {\r\n showPartNumber && \r\n }\r\n \r\n \r\n \r\n \r\n \r\n {\r\n showPartNumber && \r\n }\r\n \r\n \r\n \r\n \r\n \r\n\r\n {filteredParts.map(p => {\r\n return \r\n {\r\n showPartNumber && \r\n }\r\n \r\n \r\n \r\n })}\r\n\r\n \r\n
Part #Product DescriptionList Price
\r\n {p.partNumber}\r\n \r\n {p.description}\r\n \r\n {p.listPrice}\r\n
\r\n }\r\n \r\n}\r\n\r\ntype PartGroupsProps = {\r\n parts: PartGroup[];\r\n name: string;\r\n showPartNumber: boolean;\r\n}\r\n\r\nconst PartGroups = ({ parts, name, showPartNumber }: PartGroupsProps) => {\r\n const [filter, setFilter] = React.useState(\"\")\r\n\r\n if (parts.length === 0) {\r\n return

No {name} found for this product

\r\n }\r\n\r\n return <>\r\n
\r\n {\r\n const { target: { value } } = e\r\n setFilter(value)\r\n }} />\r\n
\r\n\r\n {parts.map(p => {\r\n return \r\n })}\r\n \r\n}\r\n\r\nexport default PartGroups\r\n"],"sourceRoot":""}