{"version":3,"file":"js/2996-fe2c362eba90273b95c5.js","mappings":"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","sources":["webpack://cricksapi/./app/javascript/packs/editor/common/commonUtils.tsx","webpack://cricksapi/./app/javascript/packs/entries/VehicleBuilder.js","webpack://cricksapi/./app/javascript/packs/preorder_cars.js"],"sourcesContent":["import { Dispatch, SetStateAction, useEffect, useState } from 'react'\n\nimport { DirectUpload } from '@rails/activestorage'\n\nimport type { LocationProps } from '../types'\n\n// Check if a color is dark\nexport function isDarkColor(color: string) {\n const hexColor = color.replace('#', '')\n\n // Convert hex color to RGB\n const r = parseInt(hexColor.slice(1, 3), 16)\n const g = parseInt(hexColor.slice(3, 5), 16)\n const b = parseInt(hexColor.slice(5, 7), 16)\n\n // Calculate luminance (brightness) using the formula\n // L = 0.299 * R + 0.587 * G + 0.114 * B\n const luminance = 0.299 * r + 0.587 * g + 0.114 * b\n\n // Set a threshold value (adjust as needed)\n const threshold = 140\n\n return luminance < threshold\n}\n\n// Function to validate a hex color code\nexport function isValidHexColor(hex: string) {\n const hexRegex = /^#([0-9A-Fa-f]{6})$/\n return hexRegex.test(hex)\n}\n\n// Function to validate hex, RGB, and RGBA color codes\nexport function isValidColor(color: string) {\n const hexRegex = /^#([0-9A-Fa-f]{6})$/\n const rgbRegex = /^rgb\\((\\d{1,3}),\\s*(\\d{1,3}),\\s*(\\d{1,3})\\)$/\n const rgbaRegex = /^rgba\\((\\d{1,3}),\\s*(\\d{1,3}),\\s*(\\d{1,3}),\\s*(0|1|0?\\.\\d+)\\)$/\n\n return hexRegex.test(color) || rgbRegex.test(color) || rgbaRegex.test(color)\n}\n\n// Apply styling to the holder element based on the block tunes data\nexport function initialiseStyling(holder: HTMLElement, data: any) {\n if (!holder || !data) {\n return\n }\n\n const screenType =\n window.innerWidth < 768 ? 'mobile' : window.innerWidth < 992 ? 'tablet' : 'desktop'\n\n // Contain\n // Hack to handle initial state of stretched image blocks\n if (holder.classList.contains('ce-block--stretched')) {\n const ceBlockContent = holder.querySelector('.ce-block__content')\n ceBlockContent.classList.remove('contained-content')\n const imageBlockContainer = holder.children[0]\n const imageBlockRow = imageBlockContainer.children[0]\n const imageBlockColumn = imageBlockRow.children[0]\n imageBlockContainer.classList.remove('container')\n imageBlockRow.classList.remove('row')\n imageBlockColumn.classList.remove('col-12')\n }\n\n // Classname\n if (data.classname && data.classname.className) {\n const newClasses = data.classname.className.split(' ')\n newClasses.forEach((className) => {\n if (className.trim() !== '') {\n holder.classList.add(className)\n }\n })\n }\n\n // Margin\n if (data.margin) {\n const marginType = data.margin\n screenType === 'mobile'\n ? data.margin?.mobile\n : screenType === 'tablet'\n ? data.margin?.tablet\n : data.margin\n holder.style.marginTop = `${marginType?.spacingTop * 0.5}rem` // Adjust as needed\n holder.style.marginBottom = `${marginType?.spacingBottom * 0.5}rem` // Adjust as needed\n }\n\n // Padding\n if (data.padding) {\n const paddingType = data.padding\n screenType === 'mobile'\n ? data.padding?.mobile\n : screenType === 'tablet'\n ? data.padding?.tablet\n : data.padding\n holder.style.paddingTop = `${paddingType?.paddingTop * 0.5}rem` // Adjust as needed\n holder.style.paddingBottom = `${paddingType?.paddingBottom * 0.5}rem` // Adjust as needed\n }\n\n // Background Colour\n if (data.backgroundColor) {\n if (\n !data.backgroundColor.customBackgroundType ||\n data.backgroundColor.customBackgroundType === 'color'\n ) {\n holder.style.backgroundColor = `${\n data.backgroundColor.backgroundColor !== 'custom'\n ? `var(--${data.backgroundColor.backgroundColor})`\n : data.backgroundColor.customBackgroundColor\n }`\n } else if (data.backgroundColor.customBackgroundType === 'gradient') {\n holder.style.background = `${data.backgroundColor.customGradient}`\n } else if (data.backgroundColor.customBackgroundType === 'image') {\n holder.style.backgroundImage = `url(${data.backgroundColor.customImage.url})`\n holder.style.backgroundSize = data.backgroundColor.customImage.layout\n holder.style.backgroundPosition = data.backgroundColor.customImage.position\n holder.style.backgroundRepeat = 'no-repeat'\n }\n }\n\n // Text Colour\n if (data.textColor) {\n holder.style.color = `${\n data.textColor.textColor !== 'custom'\n ? `var(--${data.textColor.textColor})`\n : data.textColor.customTextColor\n }`\n }\n}\n\n// Custom handling for image block formatting with stretched/contain\nexport function handleStretchedImage(block: any) {\n const imageBlockContainer = block.holder.children[0]\n const imageBlockRow = imageBlockContainer.children[0]\n const imageBlockColumn = imageBlockRow.children[0]\n\n // Don't do anything if contain is active\n if (!imageBlockColumn.classList.contains('col-lg-10')) {\n if (block.stretched) {\n imageBlockContainer.classList.remove('container')\n imageBlockRow.classList.remove('row')\n imageBlockColumn.classList.remove('col-12')\n } else {\n imageBlockContainer.classList.add('container')\n imageBlockRow.classList.add('row')\n imageBlockColumn.classList.add('col-12')\n }\n }\n}\n\n// Convert a string to a parameterised string (e.g. \"Hello World\" -> \"hello-world\")\nexport function parameterize(string: string) {\n if (!string) return ''\n return string\n .trim()\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, '-')\n .replace(/(^-|-$)/g, '')\n}\n\n// Convert a parameterised string to a readable string (e.g. \"hello-world\" -> \"Hello World\")\n// ? Duplicate of humanize\nexport function deparameterize(string: string) {\n if (!string) return ''\n return string\n .split('-')\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\n .join(' ')\n}\n\n// Capitalize the first letter of a string\nexport function capitalize(string: string) {\n if (typeof string !== 'string') return string\n return string.charAt(0).toUpperCase() + string.slice(1)\n}\n\n// Convert a string to a human readable string (e.g. \"hello-world\" -> \"Hello World\")\n// ? Duplicate of deparameterize\nexport function humanize(string: string) {\n if (typeof string !== 'string') return string\n return string\n .replace(/^[\\s_]+|[\\s_]+$/g, '')\n .replace(/[_\\s]+/g, ' ')\n .replace(/\\-/g, ' ')\n .replace(/^[a-z]/, function (m) {\n return m.toUpperCase()\n })\n}\n\n// Convert an array to a sentence (e.g. [\"Hello\", \"World\"] -> \"Hello and World\")\nexport function toSentence(arr: string[]) {\n if (arr?.length === 0 || !arr) {\n return undefined\n }\n if (arr?.length === 1) {\n return arr[0]\n }\n return arr.slice(0, arr.length - 1).join(', ') + ', and ' + arr.slice(-1)\n}\n\n//! Convert usages of this to filterUniqueItems\nexport function removeDuplicateLocations(locations: LocationProps[]) {\n const seenLocationIds = new Set()\n return locations?.filter((item) => {\n const locationId = item.id\n if (!seenLocationIds.has(locationId)) {\n seenLocationIds.add(locationId)\n return true\n }\n return false\n })\n}\n\n// Filter an array of objects to remove duplicates based on a key\nexport function filterUniqueItems(arr: T[], key: string) {\n const seenIds = new Set()\n return arr?.filter((item) => {\n const keys = key.split('.')\n let value = item\n for (const k of keys) {\n if (value && value.hasOwnProperty(k)) {\n value = value[k]\n } else {\n // Handle missing keys gracefully\n return false\n }\n }\n if (!seenIds.has(value)) {\n seenIds.add(value)\n return true\n }\n return false\n })\n}\n\nexport function generateRandomId(length: number) {\n const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'\n let randomId = ''\n\n for (let i = 0; i < length; i++) {\n const randomIndex = Math.floor(Math.random() * characters.length)\n randomId += characters.charAt(randomIndex)\n }\n\n return randomId\n}\n\n// Convert a number to a currency string (e.g. 1000 -> \"$1,000\")\nexport function toCurrency(value: number) {\n return `$${value === null ? 0 : value?.toFixed(0).replace(/(\\d)(?=(\\d{3})+$)/g, '$1,')}`\n}\n\n/** Remove HTML entities so that tags like `` work */\nexport function cleanHtml(text: string, websiteName: string) {\n return !text\n ? ''\n : text\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/\\{website\\.name\\}/g, websiteName)\n // ! These will need to be added eventually\n // .replace(/\\{website\\.city\\}/g, mockWebsite ? mockWebsite : WEBSITE.city)\n // .replace(/\\{website\\.state\\}/g, mockWebsite ? mockWebsite : WEBSITE.state)\n}\n\n// Render an edit settings button in the block's settings menu\nexport function renderEditSettingsButton(uniqueId: string) {\n const editButton = document.createElement('div')\n editButton.className = 'ce-popover-item w-100'\n\n editButton.innerHTML = `\n
\n
\n \n \n \n
\n
Edit Settings
\n
\n `\n\n editButton.addEventListener('click', () => {\n // Get the modal button element by its unique ID\n const button = document.getElementById(`Modal${uniqueId}`)\n\n // Check if the button element exists in the DOM\n if (button) {\n // Close the open tunes menu\n const openPopover = document.getElementsByClassName('ce-popover--opened')[0]\n if (openPopover) {\n openPopover.classList.remove('ce-popover--opened')\n }\n\n // Trigger a click on the hidden modal button\n button.click()\n }\n })\n\n return editButton\n}\n\n// Render a hidden modal button used to open the modal via the edit settings button\nexport function renderHiddenModalButton(uniqueId: string, setShow: (value: boolean) => void) {\n return (\n \n )\n}\n\n/**\n * Changes z-index of the embedded container to avoid issues with content overlaying the modal.\n * ! This is very hacky, I'm hoping to rework it when I rework the embedded editor tools.\n */\nexport function handleEmbeddedModal(uniqueId: string, show: boolean) {\n const modal = document.getElementById(`Modal${uniqueId}`)\n const embeddedContainer: HTMLElement | null = modal ? modal.closest('.embedded-container') : null\n\n if (embeddedContainer) {\n if (show) {\n embeddedContainer.style.zIndex = '2'\n } else {\n // Delay setting the z-index back to 1 to avoid issues with the content overlaying the modal\n setTimeout(() => {\n embeddedContainer.style.zIndex = '1'\n }, 500)\n }\n }\n}\n\n// There was an issue with >= getting translated to > in the HTML\n// The below snippet handles converting that BACK to >=\nexport function htmlDecode(input: string) {\n var doc = new DOMParser().parseFromString(input, 'text/html')\n return doc.documentElement.textContent\n}\n\n// Handle keydown events for embedded editor tools\nexport function handleEmbeddedEditorActions(container: HTMLElement, block: any) {\n if (container) {\n // Disable propagation of keydown events to avoid conflicts with the parent editor\n block.listeners.on(container, 'keydown', (event: Event) => {\n event.stopPropagation()\n })\n }\n}\n\n// Get the current screen type (mobile, tablet, desktop)\nexport function useResponsiveScreen() {\n const [screenType, setScreenType] = useState(\n window.innerWidth < 768 ? 'mobile' : window.innerWidth < 992 ? 'tablet' : 'desktop'\n )\n\n useEffect(() => {\n const handleResize = () => {\n setScreenType(\n window.innerWidth < 768 ? 'mobile' : window.innerWidth < 992 ? 'tablet' : 'desktop'\n )\n }\n\n window.addEventListener('resize', handleResize)\n\n return () => {\n window.removeEventListener('resize', handleResize)\n }\n }, [])\n\n return screenType\n}\n\n// Render tabs for tool settings modals\nexport function renderTabs(\n stepData: any[],\n activeIndexState: { activeIndex: number; previousActiveIndex: number },\n setActiveIndexState: Dispatch<\n SetStateAction<{ activeIndex: number; previousActiveIndex: number }>\n >,\n availableSteps: number[],\n customButton?: React.ReactNode\n) {\n return (\n
\n
\n
\n {/* Desktop Tabs */}\n
\n {stepData.map((tab, index) => (\n {\n setActiveIndexState({\n activeIndex: index,\n previousActiveIndex: activeIndexState.activeIndex,\n })\n }}\n disabled={availableSteps ? !availableSteps.includes(index) : false}\n >\n {tab.name}\n \n ))}\n
\n
{customButton && customButton}
\n {/* Mobile Dropdown */}\n
\n \n
\n {\n setActiveIndexState({\n activeIndex: parseInt(e?.target?.value),\n previousActiveIndex: activeIndexState.activeIndex,\n })\n }}\n >\n {stepData.map((tab, index) => (\n \n ))}\n \n {customButton && customButton}\n
\n
\n
\n
\n
\n )\n}\n\n// Handles rendering of next/previous buttons for the settings modal\nexport function renderStepButtons(\n activeIndexState: { activeIndex: number; previousActiveIndex: number },\n setActiveIndexState: Dispatch<\n SetStateAction<{ activeIndex: number; previousActiveIndex: number }>\n >,\n steps: any[],\n setShow: (value: boolean) => void,\n customNextStepHandling?: (activeIndex: number) => boolean\n) {\n return (\n
\n {/* Previous */}\n {activeIndexState?.activeIndex !== 0 && (\n {\n setActiveIndexState({\n activeIndex: activeIndexState.activeIndex - 1,\n previousActiveIndex: activeIndexState.activeIndex,\n })\n }}\n >\n Previous\n \n )}\n {/* Next/Done */}\n {\n if (customNextStepHandling) {\n if (!customNextStepHandling(activeIndexState?.activeIndex)) return // Don't allow step change\n }\n // Close Modal if last step\n if (activeIndexState?.activeIndex === steps.length - 1) {\n setShow(false)\n return // Don't increase index\n }\n setActiveIndexState({\n activeIndex: activeIndexState.activeIndex + 1,\n previousActiveIndex: activeIndexState.activeIndex,\n })\n }}\n >\n {activeIndexState?.activeIndex === steps.length - 1 ? 'Close' : 'Next'}\n \n
\n )\n}\n\n// This function hits the direct_upload_path to return a remote URL\n// Which is passed back to the client and is used to upload the asset directly to the\n// third party storage (in this case cloudinary).\n// Once the file has been uploaded to cloudinary, an additional call is made to the server\n// to get the asset URL AND link the asset back to the page via the cloudinary_images table\nexport function uploadFile(file: Blob) {\n const url = '/direct_upload_path'\n const upload = new DirectUpload(file, url)\n let imageUrl = document.getElementById('editorjs').getAttribute('imageUrl')\n\n return new Promise(function (resolve, reject) {\n upload.create((error, blob) => {\n if (error) {\n reject(error)\n } else {\n fetch(`${imageUrl}?signed_id=${blob.signed_id}`, {\n method: 'post',\n headers: {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n },\n })\n .then((res) => res.json())\n .then((res) => {\n resolve({\n success: 1,\n file: {\n url: res.file.url,\n width: res.file.width,\n height: res.file.height,\n },\n })\n })\n }\n })\n })\n}\n","import { useEffect, useState } from 'react'\n\nimport * as Routes from '../../routes'\nimport { ManufacturerSelect, Select } from './FormElements'\nimport { range, standardHeaders } from './utils'\n\nconst VehicleBuilder = ({\n manufacturer,\n setManufacturer,\n family,\n setFamily,\n year,\n setYear,\n defaultFamilyId,\n showBadge = false,\n defaultYear,\n bodyconfiguration,\n wheelbaseconfiguration,\n setWheelbaseconfiguration,\n setBodyconfiguration,\n bodyStyle,\n setBodyStyle,\n modelYear,\n setModelYear,\n badge,\n setBadge,\n colourOptions,\n colour,\n setColour,\n badgeHint,\n}) => {\n let [yearOptions, setYearOptions] = useState()\n let [badgeOptions, setBadgeOptions] = useState()\n let [families, setFamilies] = useState()\n let [bodyconfigurationOptions, setBodyconfigurationOptions] = useState()\n let [wheelbaseconfigurationOptions, setWheelbaseconfigurationOptions] = useState()\n let [familyOptions, setFamilyOptions] = useState()\n let [modelYearOptions, setModelYearOptions] = useState()\n let [bodyStyleOptions, setBodyStyleOptions] = useState()\n\n useEffect(() => {\n if (!manufacturer) {\n return\n }\n\n let families_url = Routes.manufacturer_families_path(manufacturer)\n\n setFamily(defaultFamilyId || null)\n setYear(defaultYear || null)\n setYearOptions(null)\n if (manufacturer) {\n fetch(families_url, { headers: standardHeaders })\n .then((res) => res.json())\n .then((res) => {\n setFamilies(res)\n setFamilyOptions(\n res.map((m) => {\n return { value: m.id, label: m.name }\n })\n )\n })\n }\n }, [manufacturer])\n\n useEffect(() => {\n setYear(defaultYear || null)\n if (family && families) {\n let current_family = families.filter((f) => f.id == family)[0]\n if (!current_family) {\n return\n }\n let years = range(current_family.year_start, current_family.year_end, 1)\n setYearOptions(\n years\n .map((y) => {\n return { value: y, label: y }\n })\n .reverse()\n )\n let newBadgeOptions = current_family.badges.map((b) => {\n return { value: b, label: b || '(No Badge)' }\n })\n setBadgeOptions([{ value: '', label: 'Select an option...' }, ...newBadgeOptions])\n setBodyconfigurationOptions(\n current_family.bodyconfigurations.map((b) => {\n return { value: b, label: b }\n })\n )\n setWheelbaseconfigurationOptions(\n current_family.wheelbaseconfigurations.map((b) => {\n return { value: b, label: b }\n })\n )\n setModelYearOptions(\n current_family.modelyears.map((b) => {\n return { value: b, label: b }\n })\n )\n setBodyStyleOptions(\n current_family.bodystyles.map((b) => {\n return { value: b, label: b }\n })\n )\n }\n }, [family, families])\n\n return (\n <>\n
\n \n
\n
\n o.value === family)}\n onChange={(e) => setFamily(e.value)}\n placeholder=\"Model...\"\n className=\"family-select\"\n menuPortalTarget={document.body}\n />\n
\n
\n o.value === year)}\n onChange={(e) => setYear(e.value)}\n placeholder=\"Year...\"\n className=\"year-select\"\n menuPortalTarget={document.body}\n />\n
\n {showBadge && (\n <>\n
\n o.value === badge)}\n onChange={(e) => setBadge(e.value)}\n placeholder=\"Badge...\"\n hint={badgeHint}\n menuPortalTarget={document.body}\n />\n
\n {bodyconfigurationOptions && bodyconfigurationOptions.length > 1 && (\n
\n o.value === bodyconfiguration)\n }\n onChange={(e) => setBodyconfiguration(e.value)}\n placeholder=\"Body configuration...\"\n menuPortalTarget={document.body}\n />\n
\n )}\n {wheelbaseconfigurationOptions && wheelbaseconfigurationOptions.length > 1 && (\n
\n o.value === wheelbaseconfiguration)\n }\n onChange={(e) => setWheelbaseconfiguration(e.value)}\n placeholder=\"Wheelbase configuration...\"\n menuPortalTarget={document.body}\n />\n
\n )}\n {typeof setModelYear === 'function' &&\n modelYearOptions &&\n modelYearOptions.length > 1 && (\n
\n o.value === modelYear)}\n onChange={(e) => setModelYear(e.value)}\n placeholder=\"Model year...\"\n hint=\"If blank, will apply to all model years\"\n menuPortalTarget={document.body}\n />\n
\n )}\n {typeof setBodyStyle === 'function' &&\n bodyStyleOptions &&\n bodyStyleOptions.length > 1 && (\n
\n o.value === bodyStyle)}\n onChange={(e) => setBodyStyle(e.value)}\n placeholder=\"Body style...\"\n hint=\"If blank, will apply to all body styles\"\n menuPortalTarget={document.body}\n />\n
\n )}\n
\n o.value === colour)}\n onChange={(e) => setColour(e.value)}\n placeholder=\"Colour...\"\n menuPortalTarget={document.body}\n />\n
\n \n )}\n \n )\n}\n\nexport default VehicleBuilder\n","import { useState } from 'react'\n\nimport * as ReactDOM from 'react-dom/client'\n\nimport { humanize } from './editor/common/commonUtils'\nimport VehicleBuilder from './entries/VehicleBuilder'\nimport { ready } from './entries/utils'\nimport { csrfToken } from './entries/utils'\n\nexport const Form = ({\n recordType,\n showBadge = false,\n colours,\n manufacturer_id,\n family_id,\n defaultYear,\n defaultBadge,\n defaultColour,\n defaultBodyconfiguration,\n defaultModelYear,\n defaultBodyStyle,\n}) => {\n let [manufacturer, setManufacturer] = useState(manufacturer_id)\n let [family, setFamily] = useState(family_id)\n let [year, setYear] = useState(defaultYear)\n let [badge, setBadge] = useState(defaultBadge)\n let [bodyconfiguration, setBodyconfiguration] = useState(defaultBodyconfiguration)\n let [wheelbaseconfiguration, setWheelbaseconfiguration] = useState()\n let [bodyStyle, setBodyStyle] = useState(defaultBodyStyle)\n let [modelYear, setModelYear] = useState(defaultModelYear)\n let defaultColours = []\n if (colours) {\n defaultColours = colours\n }\n let [colourOptions, setColourOptions] = useState(defaultColours)\n let [colour, setColour] = useState(defaultColour)\n\n return (\n <>\n \n \n \n \n \n {showBadge && (\n <>\n \n \n \n \n \n \n )}\n \n \n )\n}\n\nready(function () {\n let preorderForm = document.getElementById('react-preorder-form')\n if (preorderForm) {\n let manufacturer_id = preorderForm.getAttribute('manufacturer_id') || false\n const root = ReactDOM.createRoot(preorderForm)\n root.render(
)\n }\n})\n"],"names":["isValidHexColor","hex","test","isValidColor","color","initialiseStyling","holder","data","screenType","window","innerWidth","classList","contains","querySelector","remove","imageBlockContainer","children","imageBlockRow","imageBlockColumn","classname","className","split","forEach","trim","add","margin","_data$margin","_data$margin2","marginType","mobile","tablet","style","marginTop","concat","spacingTop","marginBottom","spacingBottom","padding","_data$padding","_data$padding2","paddingType","paddingTop","paddingBottom","backgroundColor","customBackgroundType","background","customGradient","backgroundImage","customImage","url","backgroundSize","layout","backgroundPosition","position","backgroundRepeat","customBackgroundColor","textColor","customTextColor","handleStretchedImage","block","stretched","parameterize","string","toLowerCase","replace","deparameterize","map","word","charAt","toUpperCase","slice","join","capitalize","humanize","m","toSentence","arr","length","removeDuplicateLocations","locations","seenLocationIds","Set","filter","item","locationId","id","has","filterUniqueItems","key","seenIds","_step","value","_iterator","_createForOfIteratorHelper","s","n","done","k","hasOwnProperty","err","e","f","generateRandomId","characters","randomId","i","randomIndex","Math","floor","random","toCurrency","toFixed","cleanHtml","text","websiteName","renderEditSettingsButton","uniqueId","editButton","document","createElement","innerHTML","addEventListener","button","getElementById","openPopover","getElementsByClassName","click","renderHiddenModalButton","setShow","_jsx","onClick","handleEmbeddedModal","show","modal","embeddedContainer","closest","zIndex","setTimeout","handleEmbeddedEditorActions","container","listeners","on","event","stopPropagation","useResponsiveScreen","_useState2","_slicedToArray","useState","setScreenType","useEffect","handleResize","removeEventListener","renderTabs","stepData","activeIndexState","setActiveIndexState","availableSteps","customButton","_activeIndexState$act","_jsxs","tab","index","activeIndex","width","minWidth","overflow","textOverflow","whiteSpace","previousActiveIndex","disabled","includes","name","htmlFor","defaultValue","onChange","_e$target","parseInt","target","renderStepButtons","steps","customNextStepHandling","_ref","manufacturer","setManufacturer","family","setFamily","year","setYear","defaultFamilyId","_ref$showBadge","showBadge","defaultYear","bodyconfiguration","wheelbaseconfiguration","setWheelbaseconfiguration","setBodyconfiguration","bodyStyle","setBodyStyle","modelYear","setModelYear","badge","setBadge","colourOptions","colour","setColour","badgeHint","yearOptions","setYearOptions","_useState4","badgeOptions","setBadgeOptions","_useState6","families","setFamilies","_useState8","bodyconfigurationOptions","setBodyconfigurationOptions","_useState10","wheelbaseconfigurationOptions","setWheelbaseconfigurationOptions","_useState12","familyOptions","setFamilyOptions","_useState14","modelYearOptions","setModelYearOptions","_useState16","bodyStyleOptions","setBodyStyleOptions","families_url","Routes","fetch","headers","standardHeaders","then","res","json","label","current_family","years","range","year_start","year_end","y","reverse","newBadgeOptions","badges","b","_toConsumableArray","bodyconfigurations","wheelbaseconfigurations","modelyears","bodystyles","_Fragment","ManufacturerSelect","Select","options","isDisabled","o","placeholder","menuPortalTarget","body","hint","Form","recordType","colours","manufacturer_id","family_id","defaultBadge","defaultColour","defaultBodyconfiguration","defaultModelYear","defaultBodyStyle","defaultColours","_useState18","_useState20","type","csrfToken","VehicleBuilder","ready","preorderForm","getAttribute","ReactDOM","render"],"sourceRoot":""}