{"version":3,"file":"290.fa26e0b7564eca68.js","mappings":"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","sources":["webpack:///./Scripts/Services/ConfiguratorService.js","webpack:///./Scripts/Components/Configurator/StackedPrices.js","webpack:///./Scripts/Services/conversions.js","webpack:///./Scripts/Services/utilities.js","webpack:///./Scripts/Components/Configurator/ProductQuantitySelector.js","webpack:///./Scripts/Components/Configurator/PanelGoodsMarking.js","webpack:///./Scripts/Components/Configurator/PanelDeliveryDate.js","webpack:///./Scripts/Components/Configurator/Certificate.js","webpack:///./Scripts/Components/Configurator/validateCuttingInputs.js","webpack:///./Scripts/Components/Configurator/PanelSubmit.js","webpack:///./Scripts/Components/Stock/ConfiguratorStock.js","webpack:///./Scripts/Components/Configurator/ConfiguratorProductDetails.js","webpack:///./Scripts/Components/Configurator/Tabs/GeneralPane.js","webpack:///./Scripts/Components/Configurator/PanelBlasting.js","webpack:///./Scripts/Components/Configurator/PanelMarking.js","webpack:///./Scripts/Components/Configurator/ProductServiceBlasting.js","webpack:///./Scripts/Services/rulesets.js","webpack:///./Scripts/Components/Configurator/PanelCuttingImage.js","webpack:///./Scripts/Components/Configurator/PanelBeamCuttingSvgAlt.js","webpack:///./Scripts/Components/Configurator/PanelBeam.js","webpack:///./Scripts/Components/Configurator/PanelCuttingLength.js","webpack:///./Scripts/Components/Configurator/PanelCoilFoiling.js","webpack:///./Scripts/Components/Configurator/PanelCoilPacking.js","webpack:///./Scripts/Components/Configurator/PanelCoilBase.js","webpack:///./Scripts/Components/Configurator/ProductServiceCutting.js","webpack:///./Scripts/Components/Configurator/ProductServiceSwell.js","webpack:///./Scripts/Components/Configurator/Tabs/ModeSelection.js","webpack:///./Scripts/Components/Configurator/Tabs/ProductionPane.js","webpack:///./Scripts/Components/Configurator/ConfiguratorBase.js","webpack:///./Scripts/Components/Configurator/ConfiguratorLoadingState.js","webpack:///./Scripts/Components/Configurator/Tabs/ConfiguratorTabs.js","webpack:///./Scripts/Services/HolidayCheck.js"],"sourcesContent":["\r\nexport const getStackedItem = (stackedPrices, totalWeight) => {\r\n if (!stackedPrices) {\r\n return;\r\n }\r\n const { quantityPriceList } = stackedPrices;\r\n let quantityUnit = totalWeight;\r\n\r\n if (quantityPriceList && quantityPriceList.length) {\r\n let stackedItem;\r\n\r\n for (let priceListItem of quantityPriceList) {\r\n let quantity = priceListItem.quantity;\r\n\r\n if (quantityUnit < quantity) {\r\n break;\r\n }\r\n stackedItem = priceListItem;\r\n }\r\n\r\n return stackedItem ? stackedItem : quantityPriceList[0];\r\n }\r\n\r\n return null;\r\n};\r\n","import React from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport { currencyFormat } from '../../Services/formatting';\r\nimport { translate } from '../../Services/translation';\r\nimport { getStackedItem } from '../../Services/ConfiguratorService';\r\n\r\nconst StackedPrices = () => {\r\n const stackedPrices = useSelector((state) => state.configurator.stackedPrices),\r\n totalWeight = useSelector((state) => state.configurator.totalWeight);\r\n\r\n if (!stackedPrices) {\r\n return
{translate('stacked.price.missingprices')}
\r\n }\r\n\r\n const { quantityPriceList, pricingUnitDisplayName, factorKg, pricingUnit } = stackedPrices;\r\n const stackedItem = getStackedItem(stackedPrices, totalWeight);\r\n\r\n const getStackedQuantity = (quantityPriceList, stackedItem) => {\r\n return stackedItem ? stackedItem.quantity : quantityPriceList[0].quantity;\r\n };\r\n\r\n const getMeterProgress = (quantityPriceList, stackedQuantity) => {\r\n let max = quantityPriceList.length,\r\n selectedIndex = 0;\r\n\r\n for (let i = 1; i < max; i++) {\r\n if (quantityPriceList[i].quantity === stackedQuantity) {\r\n selectedIndex = i + 1;\r\n break;\r\n }\r\n }\r\n\r\n if (selectedIndex === 0) {\r\n selectedIndex += 0.5;\r\n } else if (selectedIndex !== max) {\r\n selectedIndex -= 0.5;\r\n }\r\n\r\n return (selectedIndex > 0 ? (selectedIndex / max) * 100 : 0) + '%';\r\n };\r\n\r\n const renderDecimal = (value, useFactor) => {\r\n if (useFactor && pricingUnit !== 'kg') {\r\n return new Intl.NumberFormat(window.__litium.constants.currentLocale, {\r\n style: 'decimal',\r\n maximumFractionDigits: 0,\r\n }).format(value / factorKg);\r\n } else {\r\n return new Intl.NumberFormat(window.__litium.constants.currentLocale, {\r\n style: 'decimal',\r\n maximumFractionDigits: 2,\r\n }).format(value);\r\n }\r\n };\r\n\r\n const stackedQuantity = quantityPriceList && quantityPriceList.length ? getStackedQuantity(quantityPriceList, stackedItem) : null;\r\n\r\n return (\r\n
\r\n
\r\n {stackedQuantity ? (\r\n
\r\n
{'KG'}
\r\n \r\n
\r\n \r\n\r\n
\r\n
\r\n
\r\n {currencyFormat.formatToParts(0).find((e) => e.type === 'currency').value}\r\n {'/'}\r\n {pricingUnitDisplayName}\r\n
\r\n
\r\n ) : (\r\n ''\r\n )}\r\n
\r\n \r\n );\r\n};\r\n\r\nexport default StackedPrices;\r\n","const convertUnit = (quantity, sourceUnit, targetUnit) => {\r\n if (sourceUnit.unit === targetUnit.unit) {\r\n return quantity;\r\n }\r\n\r\n let factor = sourceUnit.conversionFactor > 0 ? sourceUnit.conversionFactor : 1,\r\n targetFactor = targetUnit.conversionFactor > 0 ? targetUnit.conversionFactor : 1;\r\n\r\n quantity = quantity * factor;\r\n\r\n return quantity / targetFactor;\r\n}\r\n\r\nexport default convertUnit;","export const lerp = (norm, min, max) => {\r\n return (max - min) * norm + min;\r\n}\r\n\r\nexport const norm = (value, min, max) => {\r\n return (value - min) / (max - min);\r\n}\r\n\r\nexport const map = (value, sourceMin, sourceMax, destMin, destMax) => {\r\n return lerp(norm(value, sourceMin, sourceMax), destMin, destMax);\r\n}","import React, { useState, useEffect, useRef, Fragment } from 'react';\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport convertUnit from '../../Services/conversions';\r\nimport { map } from '../../Services/utilities';\r\nimport { translate } from '../../Services/translation';\r\nimport { numberFormat } from '../../Services/formatting';\r\nimport { setTotalWeight as setWeight, setUnit, setBaseUnitQuantity, setSalesQuantity, } from '../../Actions/Configurator.action';\r\nimport { googleAnalytics } from '../../Services/googleAnalytics';\r\n\r\nconst ProductQuantitySelector = () => {\r\n const dispatch = useDispatch();\r\n const articleNumber = useSelector((state) => state.configurator.id);\r\n const configurator = useSelector((state) => state.configurator);\r\n const { totalWeight, orderRow, rules, selections, quantitySelector, baseUnitQuantity, informationToCustomer, infoTextQuantityMinLimit, selectedTab, } = configurator;\r\n\r\n if (!quantitySelector) {\r\n return null;\r\n }\r\n\r\n const { decimalQuantity, defaultUnit, baseUnit, unitConfigurableParentItem, quantityUnits, } = quantitySelector;\r\n\r\n const isUpdateMode = orderRow ? true : false,\r\n isConfigured = selectedTab !== 1,\r\n [selectedUnit, setSelectedUnit] = useState(quantitySelector.selectedUnit),\r\n [selectedUnitQuantity, setSelectedUnitQuantity] = useState(configurator.baseUnitQuantity),\r\n [baseQuantity, setBaseQuantity] = useState(configurator.baseUnitQuantity);\r\n\r\n const cuttingLength = selections['cuttingLength'] ? selections['cuttingLength'] : -1;\r\n\r\n const quantityInputElement = useRef(null);\r\n const decimalQuantityMin = 1;\r\n const readOnly = rules.isRemnant;\r\n\r\n useEffect(() => {\r\n initialize();\r\n }, [baseUnit, defaultUnit, isUpdateMode, rules.isRemnant, articleNumber, unitConfigurableParentItem, isConfigured, cuttingLength, quantityUnits,]);\r\n\r\n const initialize = () => {\r\n onSetUnit(selectedUnit.id);\r\n\r\n if (isUpdateMode) {\r\n updateQuantity(convertUnit(baseQuantity, baseUnit, selectedUnit), selectedUnit);\r\n } else {\r\n const initialQuantity = baseUnit.conversionFactor > 0 ? baseUnit.conversionFactor : 1;\r\n updateQuantity(initialQuantity, defaultUnit);\r\n }\r\n\r\n if (readOnly) {\r\n handleChangeQuantityUnit('pcs');\r\n }\r\n };\r\n\r\n const onSetUnit = (unit) => {\r\n dispatch(setUnit(unit));\r\n };\r\n\r\n const onTotalWeightChange = (quantity) => {\r\n dispatch(setWeight(quantity));\r\n };\r\n\r\n const onBaseUnitQuantityChange = (baseQuantity) => {\r\n dispatch(setBaseUnitQuantity(baseQuantity));\r\n };\r\n\r\n const updateQuantity = (quantity, unit) => {\r\n let baseQuantity = convertUnit(quantity, unit, baseUnit);\r\n\r\n if (!decimalQuantity) {\r\n baseQuantity = Math.ceil(baseQuantity.toFixed(2));\r\n }\r\n\r\n setBaseQuantity(baseQuantity);\r\n onBaseUnitQuantityChange(baseQuantity);\r\n\r\n let totalWeight = baseQuantity * convertUnit(1, baseUnit, getQuantityUnit('kg')).toFixed(2);\r\n setTotalWeight(totalWeight);\r\n\r\n setSelectedUnitQuantityState(baseQuantity * convertUnit(1, baseUnit, unit).toFixed(2));\r\n };\r\n\r\n const setTotalWeight = (weight) => {\r\n if (isCutLengthValid()) {\r\n weight = map(cuttingLength, 0, rules.length, 0, weight);\r\n } else if (rules.isRemnant && defaultUnit.unit === 'm') {\r\n weight = (rules.length / 1000) * weight;\r\n }\r\n onTotalWeightChange(weight);\r\n };\r\n\r\n const isCutLengthValid = () => {\r\n return (cuttingLength >= rules.minCutLength && cuttingLength <= rules.maxCutLength);\r\n };\r\n\r\n const getQuantityUnit = (unit) => {\r\n return quantityUnits.find((u) => u.unit === unit);\r\n };\r\n\r\n const setSelectedUnitQuantityState = (quantity) => {\r\n const fixedValue = Number(parseFloat(quantity).toFixed(2));\r\n setSelectedUnitQuantity(fixedValue);\r\n\r\n dispatch(setSalesQuantity(fixedValue));\r\n\r\n if (quantityInputElement.current) {\r\n quantityInputElement.current.value = fixedValue;\r\n }\r\n };\r\n\r\n const onQuantityInputElementPress = (event, isBlur) => {\r\n if (event.key === 'Enter' || isBlur) {\r\n let quantity = parseFloat(event.target.value);\r\n\r\n if (!quantity || quantity < decimalQuantityMin) {\r\n quantity = decimalQuantityMin;\r\n }\r\n\r\n updateQuantity(quantity, selectedUnit);\r\n\r\n if (isBlur == true) {\r\n googleAnalytics(\r\n {\r\n 'event': 'productConfigurator',\r\n 'fieldName': 'Quantity',\r\n 'value': quantity.toString(),\r\n 'unit': selectedUnit.unit,\r\n 'productId': articleNumber\r\n }\r\n );\r\n }\r\n }\r\n };\r\n\r\n const handleChangeQuantityUnit = (unit) => {\r\n const quantityUnit = getQuantityUnit(unit);\r\n\r\n if (quantityUnit) {\r\n setSelectedUnit(quantityUnit);\r\n onSetUnit(quantityUnit.id);\r\n\r\n if (quantityInputElement.current) {\r\n const newQuantity = convertUnit(selectedUnitQuantity, selectedUnit, quantityUnit);\r\n updateQuantity(newQuantity, quantityUnit);\r\n }\r\n }\r\n };\r\n\r\n let totalPcsWeight = convertUnit(baseUnitQuantity, baseUnit, getQuantityUnit('pcs'));\r\n let showInfoText = infoTextQuantityMinLimit == 0 ? true : totalPcsWeight >= infoTextQuantityMinLimit;\r\n\r\n return (\r\n \r\n {informationToCustomer && showInfoText && (\r\n
\r\n \r\n \r\n \r\n {informationToCustomer}\r\n
\r\n )}\r\n
\r\n
\r\n \r\n \r\n \r\n

\r\n {translate('config.productservicequandity')}\r\n

\r\n \r\n {translate('cart.weight')}: {numberFormat.format(totalWeight)} kg\r\n \r\n
\r\n
\r\n
\r\n
\r\n onQuantityInputElementPress(event, false)}\r\n onBlur={(event) => onQuantityInputElementPress(event, true)} ref={quantityInputElement} data-buy-quantity-input min='0' step='1' maxLength='9'\r\n className='product-detail__quantity-input form__input'\r\n />\r\n
\r\n
\r\n {quantityUnits && quantityUnits.length ? (\r\n \r\n ) : (\r\n \r\n )}\r\n
\r\n
\r\n

\r\n {translate('config.weight.information')}\r\n

\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default ProductQuantitySelector;\r\n","import React, { useState } from 'react';\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport { translate } from '../../Services/translation';\r\nimport { setDeliveryDetailsValues } from '../../Actions/Configurator.action';\r\nimport { googleAnalyticsProductConfigurator } from '../../Services/googleAnalytics';\r\n\r\nconst PanelGoodsMarking = (props) => {\r\n const dispatch = useDispatch();\r\n const configurator = useSelector((state) => state.configurator);\r\n const { id, selections, deliveryDetails } = configurator;\r\n let goodMarkingValue = deliveryDetails && deliveryDetails.goodsMarking || selections && selections[props.setting] || ''\r\n const [goodsMarkingValue, setGoodsMarkingValue] = useState(goodMarkingValue);\r\n\r\n const update = (e, isBlur) => {\r\n setGoodsMarkingValue(e);\r\n dispatch(setDeliveryDetailsValues({ [props.setting]: e }));\r\n if (isBlur) {\r\n googleAnalyticsProductConfigurator(props.setting, e.toString(), id);\r\n }\r\n };\r\n\r\n const getIconPath = () => {\r\n return '/ui/images/sprites/be-group.svg#' + props.icon;\r\n };\r\n\r\n return (\r\n
\r\n
\r\n \r\n \r\n \r\n

{translate(props.labelKey)}

\r\n { update(event.target.value); }} onBlur={(event) => { update(event.target.value, true); }} />\r\n
\r\n
\r\n {translate('configurator.goodsmarking.orderlinemessage')}\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default PanelGoodsMarking;\r\n","import React from 'react';\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport 'react-dates/initialize';\r\nimport 'react-dates/lib/css/_datepicker.css';\r\nimport \"react-datepicker/dist/react-datepicker.css\";\r\nimport { translate } from '../../Services/translation';\r\nimport { setDeliveryDetailsValues } from '../../Actions/Configurator.action';\r\nimport { googleAnalyticsProductConfigurator } from '../../Services/googleAnalytics';\r\nimport DatePicker from 'react-datepicker';\r\nimport isHoliday from '../../Services/HolidayCheck';\r\nimport { toBaseDateFormat, toCurrentLocaleFormat } from '../../Services/formatting';\r\nimport { subDays } from 'date-fns';\r\n\r\nconst PanelDeliveryDate = ({ setting, labelKey, icon, startDate }) => {\r\n const dispatch = useDispatch(),\r\n configurator = useSelector((state) => state.configurator),\r\n cart = useSelector((state) => state.cart),\r\n { id, delivery, deliveryDetails, orderRow } = configurator;\r\n\r\n const isUpdateMode = orderRow ? true : false;\r\n const startDateObj = startDate ? new Date(startDate) : new Date();\r\n\r\n const deliveryDate = (deliveryDetails && deliveryDetails.deliveryDate) ? new Date(deliveryDetails.deliveryDate) : null;\r\n let publicHolidays = (cart.holidays || []).filter(holiday => holiday.isPublicHoliday).map(holiday => holiday.holidayDate);\r\n let nonPublicHolidays = (cart.holidays || []).filter(holiday => !holiday.isPublicHoliday).map(holiday => holiday.holidayDate);\r\n\r\n const update = (selectedDate) => {\r\n if (selectedDate !== null) {\r\n const formattedDate = toBaseDateFormat(selectedDate);\r\n dispatch(setDeliveryDetailsValues({ [setting]: formattedDate }));\r\n googleAnalyticsProductConfigurator('deliveryDate', formattedDate, id);\r\n }\r\n };\r\n\r\n const getIconPath = () => {\r\n return '/ui/images/sprites/be-group.svg#' + icon;\r\n };\r\n\r\n return (\r\n
\r\n
\r\n \r\n \r\n \r\n

{translate(labelKey)}

\r\n {isUpdateMode && (\r\n
\r\n !isHoliday(day, subDays(startDateObj, 1), publicHolidays, nonPublicHolidays)}\r\n popperPlacement=\"bottom-end\"\r\n onChange={(date) => update(date)}\r\n customInput={\r\n \r\n }\r\n />\r\n
\r\n )}\r\n
\r\n
\r\n {translate('yourdeliverdays')}\r\n {delivery && delivery.websiteStringModeOfDelivery}\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default PanelDeliveryDate;","import React from 'react';\r\nimport { translate } from '../../Services/translation';\r\n\r\nconst Certificate = (props) => {\r\n const { labelKey, icon, certificateDescription } = props;\r\n const getIconPath = () => {\r\n return '/ui/images/sprites/be-group.svg#' + icon;\r\n };\r\n\r\n return (\r\n
\r\n
\r\n \r\n \r\n \r\n

{translate(labelKey)}

\r\n
\r\n
{translate(certificateDescription)}
\r\n
\r\n );\r\n};\r\n\r\nexport default Certificate;\r\n","import { translate } from '../../Services/translation';\r\n\r\nexport const validateInputs = (quantityRef, lengthRef) => {\r\n if (!quantityRef || !lengthRef) {\r\n return true;\r\n }\r\n\r\n if (!quantityRef || !quantityRef.current || !lengthRef || !lengthRef.current) {\r\n return;\r\n }\r\n\r\n for (let i = 0; i < quantityRef.current.length; i++) {\r\n const quantityInput = quantityRef.current[i];\r\n const lengthInput = lengthRef.current[i];\r\n\r\n if (quantityInput && lengthInput) {\r\n quantityInput.setCustomValidity('');\r\n lengthInput.setCustomValidity('');\r\n\r\n if (quantityInput.value === '' || !quantityInput.checkValidity()) {\r\n quantityInput.setCustomValidity(translate('cutting.cuttinginformation.quantity.validation'));\r\n quantityInput.reportValidity();\r\n return false;\r\n }\r\n\r\n if (lengthInput.value === '' || !lengthInput.checkValidity()) {\r\n lengthInput.setCustomValidity(translate('cutting.cuttinginformation.length.validation'));\r\n lengthInput.reportValidity();\r\n return false;\r\n }\r\n }\r\n }\r\n return true;\r\n};\r\n","import React, { Fragment, useState } from 'react';\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport { getStackedItem } from '../../Services/ConfiguratorService';\r\nimport { translate } from '../../Services/translation';\r\nimport convertUnit from '../../Services/conversions';\r\nimport { currencyFormat } from '../../Services/formatting';\r\nimport { receive } from '../../Actions/Cart.action';\r\nimport { close } from '../../Actions/Configurator.action';\r\nimport { post } from '../../Services/http';\r\nimport { updateCustomizedMessage } from '../../Actions/CustomizedMessage.action';\r\nimport LoaderBlockContent from './../LoaderBlockContent';\r\nimport { validateInputs } from './validateCuttingInputs';\r\nimport { googleAnalyticsAddToCart } from '../../Services/googleAnalytics'\r\n\r\nconst PanelSubmit = ({ quantityRef, lengthRef }) => {\r\n const dispatch = useDispatch(),\r\n configurator = useSelector((state) => state.configurator),\r\n selectedTab = useSelector((state) => state.configurator.selectedTab),\r\n stackedPrices = useSelector((state) => state.configurator.stackedPrices),\r\n totalWeight = useSelector((state) => state.configurator.totalWeight),\r\n stackedItem = getStackedItem(stackedPrices, totalWeight),\r\n [isLoading, setIsLoading] = useState(false);\r\n\r\n const {\r\n id,\r\n selections,\r\n rules,\r\n baseUnitQuantity,\r\n quantitySelector,\r\n selectedUnit,\r\n deliveryDetails,\r\n orderRow,\r\n salesQuantity,\r\n disableButton,\r\n isStandAlone\r\n } = configurator;\r\n\r\n const isUpdateMode = orderRow ? true : false;\r\n const isButtonDisabled = () => {\r\n if (rules && rules.isCoil) {\r\n return disableButton != null ? disableButton : true;\r\n } else if (selections != null) {\r\n let selection = selections;\r\n let isConfigured = selectedTab !== 1;\r\n if (isConfigured) {\r\n if (selection.cutCode != null) {\r\n let selectedCutType = rules.cutTypes.filter((c) => c.code === selection.cutCode);\r\n\r\n if (selectedCutType.length > 0) {\r\n // Check conditions for button disabled based on selectedCutType and other properties\r\n }\r\n }\r\n }\r\n return false;\r\n } else {\r\n return false;\r\n }\r\n };\r\n\r\n const addToCart = (selectedTab) => {\r\n if (validateInputs(quantityRef, lengthRef)) {\r\n setIsLoading(true);\r\n const timingLabel = `adding to cart (${id})`;\r\n console.time(timingLabel);\r\n renderGoogleAnalytics();\r\n\r\n post('/api/configurator/save', {\r\n articleNumber: id,\r\n quantity: baseUnitQuantity,\r\n salesQuantity: salesQuantity,\r\n selectedUnit: selectedUnit || (quantitySelector && quantitySelector.selectedUnit.id),\r\n orderRow,\r\n data: selections,\r\n deliveryDetails: deliveryDetails,\r\n isConfigured: selectedTab !== 1,\r\n })\r\n .then((response) => response.json())\r\n .then((cart) => {\r\n if (isUpdateMode == false) {\r\n const miniCart = document.getElementsByClassName('cart__info--hidden');\r\n while (miniCart.length > 0) {\r\n miniCart[0].classList.remove('cart__info--hidden');\r\n }\r\n }\r\n dispatch(receive({ ...cart, addedProduct: id }));\r\n })\r\n .finally(() => {\r\n console.timeEnd(timingLabel);\r\n setIsLoading(false);\r\n if (!isStandAlone) {\r\n dispatch(close());\r\n }\r\n dispatch(updateCustomizedMessage(translate('checkout.customizedmessage.createline.update')));\r\n });\r\n }\r\n };\r\n\r\n const renderGrandTotal = () => {\r\n let grandTotal = 0;\r\n\r\n if (stackedItem && quantitySelector) {\r\n let pricingUnit = quantitySelector.quantityUnits.find((u) => u.unit === stackedPrices.pricingUnit);\r\n\r\n let unit = convertUnit(baseUnitQuantity, quantitySelector.baseUnit, pricingUnit);\r\n grandTotal = unit * stackedItem.price;\r\n }\r\n\r\n return currencyFormat.format(grandTotal);\r\n };\r\n\r\n const renderGoogleAnalytics = () => {\r\n const product = [\r\n {\r\n name: configurator.articleName,\r\n id: configurator.id,\r\n category: configurator.breadcrumbs,\r\n campaignProduct: configurator.isCampaignProduct,\r\n },\r\n ];\r\n googleAnalyticsAddToCart(product)\r\n };\r\n\r\n return (\r\n \r\n {isLoading && (\r\n
\r\n \r\n
\r\n )}\r\n {!isLoading && (\r\n
\r\n {selectedTab === 1 && (\r\n
\r\n
\r\n {renderGrandTotal()}\r\n
\r\n
\r\n {translate('cart.priceinfo')}\r\n
\r\n
\r\n )}\r\n {/*selections && selections.isConfigured == true && (\r\n
\r\n
\r\n {translate('cart.priceconfigshow')}\r\n
\r\n\r\n
{translate('cart.priceinfo')}
\r\n
\r\n )*/}\r\n\r\n
\r\n { addToCart(selectedTab); }} >\r\n {translate(isUpdateMode ? 'cart.update' : 'cart.add')}\r\n \r\n
\r\n
\r\n )}\r\n
\r\n );\r\n};\r\n\r\nexport default PanelSubmit;\r\n","import React from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport { translate } from '../../Services/translation';\r\nimport StockDetails from './StockDetails';\r\n\r\nconst ConfiguratorStock = () => {\r\n const onHandModel = useSelector((state) => state.configurator.onHandModel),\r\n totalWeight = useSelector((state) => state.configurator.totalWeight),\r\n stackedPrices = useSelector((state) => state.configurator.stackedPrices),\r\n isStandAlone = useSelector((state) => state.configurator.isStandAlone),\r\n factorKg = stackedPrices ? stackedPrices.factorKg : null;\r\n\r\n if (!onHandModel) {\r\n return
{translate('config.onhand.missing')}
;\r\n }\r\n\r\n return (\r\n
\r\n
\r\n
\r\n
{translate('config.larger')}
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default ConfiguratorStock;\r\n","import React from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport { translate } from '../../Services/translation';\r\n\r\nconst ConfiguratorProductDetails = ({ useLongName = false }) => {\r\n const configurator = useSelector((state) => state.configurator),\r\n name = useSelector((state) => state.configurator.articleName),\r\n longName = useSelector((state) => state.configurator.longArticleName),\r\n description = useSelector((state) => state.configurator.description),\r\n imgUrl = useSelector((state) => state.configurator.articleImageURL),\r\n { isCampaignProduct, isEnvironmentalFriendly, isLoggedIn } = configurator;\r\n\r\n return (\r\n
\r\n
\r\n
\r\n product\r\n {isCampaignProduct && isLoggedIn && (\r\n
\r\n {translate('product.campaignbanner')}\r\n
\r\n )}\r\n {isEnvironmentalFriendly && isLoggedIn && (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n )}\r\n
\r\n
\r\n
\r\n

\r\n {useLongName ? longName : name}\r\n

\r\n

{description}

\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default ConfiguratorProductDetails;\r\n","import React from 'react';\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport { close } from '../../../Actions/Configurator.action';\r\nimport StackedPrices from '../StackedPrices';\r\nimport ProductQuantitySelector from '../ProductQuantitySelector';\r\nimport PanelGoodsMarking from '../PanelGoodsMarking';\r\nimport PanelDeliveryDate from '../PanelDeliveryDate';\r\nimport Certificate from '../Certificate';\r\nimport PanelSubmit from '../PanelSubmit';\r\nimport ConfiguratorStock from '../../Stock/ConfiguratorStock';\r\nimport ConfiguratorProductDetails from '../ConfiguratorProductDetails';\r\nimport closeIcon from '../../../../images/closeDialogIcon.svg';\r\n\r\nconst GeneralPane = () => {\r\n const dispatch = useDispatch();\r\n\r\n return (\r\n
\r\n dispatch(close())} >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nexport default GeneralPane;\r\n","import React, { useState, useEffect } from 'react';\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport { translate } from '../../Services/translation';\r\nimport orangePaintingBrush from '../../../images/orangePaintingBrush.svg';\r\nimport { setValues } from '../../Actions/Configurator.action';\r\nimport { googleAnalyticsProductConfigurator } from '../../Services/googleAnalytics';\r\n\r\nconst PanelBlasting = () => {\r\n const dispatch = useDispatch(),\r\n configurator = useSelector((state) => state.configurator),\r\n { id, rules, selections } = configurator;\r\n\r\n const updateSetting = (values) => {\r\n dispatch(setValues(values));\r\n };\r\n\r\n const [toggle, setToggle] = useState(false);\r\n\r\n const setBlastingColorCode = (colorCode, name) => {\r\n if (colorCode == -1) {\r\n updateSetting({ blastingDetails: { colorCode: colorCode, }, });\r\n\r\n googleAnalyticsProductConfigurator('blastPaintCode', ' ', id);\r\n }\r\n\r\n if (rules.colors.length > 0) {\r\n let color = rules.colors.filter((c) => c.colorCode == colorCode);\r\n if (color.length >= 1) {\r\n let thickness = color[0].thicknessOptions;\r\n updateSetting({\r\n blastingDetails: {\r\n blastPaintCode: thickness[0].blastPaintCode,\r\n colorCode: colorCode,\r\n isPainting: thickness[0].isPainting,\r\n name: thickness[0].isPainting ? thickness[0].name : 'Blasting',\r\n },\r\n });\r\n\r\n googleAnalyticsProductConfigurator('blastPaintColor', color[0].name, id);\r\n }\r\n }\r\n };\r\n\r\n const setThickness = (color, thickness) => {\r\n let thicknessName = (thickness.name != '' ? thickness.name : 'None');\r\n updateSetting({\r\n blastingDetails: {\r\n blastPaintCode: thickness.blastPaintCode,\r\n colorCode: color.colorCode,\r\n isPainting: thickness.isPainting,\r\n name: color.name + ' ' + thicknessName,\r\n },\r\n });\r\n\r\n googleAnalyticsProductConfigurator('thickness', thicknessName);\r\n };\r\n\r\n const getColorType = () => {\r\n return selections.blastingDetails != null && selections.blastingDetails.colorCode != null ? selections.blastingDetails.colorCode : null;\r\n };\r\n\r\n const getBlastingPaintCode = (blastPaintCode, colorCode) => {\r\n return selections.blastingDetails != null && selections.blastingDetails.blastPaintCode != null && selections.blastingDetails.colorCode > -1\r\n ? selections.blastingDetails.blastPaintCode === blastPaintCode && selections.blastingDetails.colorCode === colorCode\r\n : '';\r\n };\r\n\r\n const getSelectedText = () => {\r\n let colorType = getColorType();\r\n let selected = rules.colors.filter((c) => c.colorCode == colorType)[0] != null\r\n ? translate('blasting.' + rules.colors.filter((c) => c.colorCode == colorType)[0].name.toLowerCase().replace(/\\s+/g, ''))\r\n : translate('blasting.none');\r\n let blastingSize = getSelectedBlastingSize(colorType);\r\n\r\n return (selected + (blastingSize ? ' ' + getSelectedBlastingSize(colorType) : ''));\r\n };\r\n\r\n const getSelectedBlastingSize = (colorType) => {\r\n const selectedColor = rules.colors.filter((c) => c.colorCode == colorType)[0];\r\n if (selectedColor != undefined || selectedColor != null) {\r\n const selectedBlastCode1 = (selections.blastingDetails && selections.blastingDetails.blastPaintCode) || '';\r\n const selectedBlastingSize = selectedColor.thicknessOptions.filter((c) => c.blastPaintCode == selectedBlastCode1)[0].name;\r\n return selectedBlastingSize;\r\n }\r\n };\r\n\r\n if (rules.allowBlasting !== true && rules.allowPainting !== true) {\r\n return null;\r\n }\r\n\r\n return (\r\n <>\r\n
\r\n
\r\n \r\n

\r\n {translate('blasting.title')}\r\n

\r\n
\r\n { setToggle(!toggle); }}>\r\n {getSelectedText()}\r\n \r\n \r\n
\r\n
\r\n {toggle && (\r\n
\r\n
\r\n
\r\n
\r\n {rules.allowBlasting && (\r\n
setBlastingColorCode(-1)} >\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n

{translate('blasting.none')}

\r\n
\r\n
\r\n )}\r\n\r\n {rules.allowPainting && rules.colors.length > 0 &&\r\n rules.colors.map((value, index) => (\r\n
setBlastingColorCode(value.colorCode, value.name)}>\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n

\r\n {translate('blasting.' + value.name.toLowerCase().replace(/\\s+/g, ''))}\r\n

\r\n {value.thicknessOptions.length > 1 &&\r\n value.thicknessOptions.map(\r\n (thickness, innerIndex) => (\r\n
\r\n \r\n
\r\n )\r\n )}\r\n
\r\n
\r\n ))}\r\n
\r\n
\r\n
\r\n
\r\n )}\r\n
\r\n \r\n );\r\n};\r\n\r\nexport default PanelBlasting;\r\n","import React, { useState, useEffect, Fragment } from 'react';\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport { translate } from '../../Services/translation';\r\nimport { googleAnalyticsProductConfigurator } from '../../Services/googleAnalytics';\r\nimport { setValues, setCuttingDetails } from '../../Actions/Configurator.action';\r\n\r\nconst PanelMarking = ({ id, IsPopup }) => {\r\n const dispatch = useDispatch(),\r\n articleNumber = useSelector((state) => state.configurator.id),\r\n configurator = useSelector((state) => state.configurator),\r\n { selections, rules } = configurator;\r\n\r\n let cuttingDetail = selections.cuttingDetails.find((x) => x.id == id);\r\n let marking = cuttingDetail && cuttingDetail.marking;\r\n const [workPhaseMarkingText, setWorkPhaseMarkingText] = useState((marking && marking.workPhaseMarkingText) || ''),\r\n [drawingNumber, setDrawingNumber] = useState((marking && marking.drawingNumber) || ''),\r\n [workPhaseMarkingChargeNumber, setWorkPhaseMarkingChargeNumber] = useState((marking && marking.workPhaseMarkingChargeNumber) || false),\r\n [goodsMarking, setGoodsMarking] = useState((marking && marking.goodsMarking) || '');\r\n\r\n useEffect(() => {\r\n let data = {\r\n drawingNumber,\r\n workPhaseMarkingChargeNumber,\r\n workPhaseMarkingText,\r\n goodsMarking,\r\n description: (marking && marking.description) || '',\r\n inkjetIntegrationFlagIfCuttingOperation: rules && rules.inkjetIntegrationFlagIfCuttingOperation,\r\n };\r\n\r\n if (drawingNumber || workPhaseMarkingChargeNumber || workPhaseMarkingText || goodsMarking) {\r\n data.description = translate('marking.description');\r\n\r\n if (drawingNumber) {\r\n data.description += ` - ${drawingNumber}`;\r\n }\r\n\r\n if (workPhaseMarkingChargeNumber) {\r\n data.description += ` - ${translate('checkout.cart.specification.workphasemarkingchargenumber.true')}`;\r\n }\r\n\r\n if (workPhaseMarkingText) {\r\n data.description += ` - ${workPhaseMarkingText}`;\r\n }\r\n if (goodsMarking) {\r\n data.description += ` - ${goodsMarking}`;\r\n }\r\n }\r\n\r\n if (id) {\r\n dispatch(setCuttingDetails(id, 'marking', data));\r\n } else {\r\n dispatch(setValues({ marking: data }));\r\n }\r\n }, [workPhaseMarkingText, drawingNumber, workPhaseMarkingChargeNumber, goodsMarking]);\r\n\r\n const updateInkJetIntegrationFlag = (value) => {\r\n setWorkPhaseMarkingChargeNumber(value);\r\n googleAnalyticsProductConfigurator('workPhaseMarkingChargeNumber', value.toString(), articleNumber);\r\n\r\n if (value === true) {\r\n setWorkPhaseMarkingText('');\r\n }\r\n };\r\n\r\n const updateWorkPhaseMarkingText = (value, isBlur) => {\r\n setWorkPhaseMarkingText(value);\r\n\r\n if (isBlur) {\r\n googleAnalyticsProductConfigurator('workPhaseMarkingText', value.toString(), articleNumber);\r\n }\r\n };\r\n\r\n const updateDrawingsNumber = (value, isBlur) => {\r\n setDrawingNumber(value);\r\n\r\n if (isBlur) {\r\n googleAnalyticsProductConfigurator('drawingNumber', value.toString(), articleNumber);\r\n }\r\n };\r\n const updateGoodsMarking = (value, isBlur) => {\r\n setGoodsMarking(value);\r\n\r\n if (isBlur) {\r\n googleAnalyticsProductConfigurator('goodsMarking', value.toString(), articleNumber);\r\n }\r\n };\r\n\r\n return (\r\n
\r\n
\r\n

\r\n {translate('beamtype.markingtitle')}\r\n

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

\r\n {translate('beamtype.printmarkingdetails')}\r\n

\r\n
\r\n\r\n \r\n\r\n \r\n {IsPopup &&\r\n \r\n
\r\n \r\n \r\n \r\n \r\n {translate('configurator.goodsmarking.key')}\r\n \r\n { updateGoodsMarking(event.target.value, false); }} onBlur={(event) => { updateGoodsMarking(event.target.value, true); }} />\r\n
\r\n
{translate('configurator.goodsmarking.orderlinemessage')}
\r\n
\r\n }\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default PanelMarking;\r\n","import React, { Fragment } from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { translate } from '../../Services/translation';\r\nimport StackedPrices from './StackedPrices';\r\nimport PanelSubmit from './PanelSubmit';\r\nimport ConfiguratorProductDetails from './ConfiguratorProductDetails';\r\nimport { changeProductServiceTab } from '../../Actions/Configurator.action';\r\nimport ProductQuantitySelector from './ProductQuantitySelector';\r\nimport PanelBlasting from './PanelBlasting';\r\nimport PanelMarking from './PanelMarking';\r\nimport PanelGoodsMarking from './PanelGoodsMarking';\r\nimport PanelDeliveryDate from './PanelDeliveryDate';\r\n\r\nimport closeIcon from '../../../images/closeDialogIcon.svg';\r\n\r\nconst ProductServiceBlasting = () => {\r\n const dispatch = useDispatch();\r\n\r\n return (\r\n \r\n dispatch(changeProductServiceTab(0))}>\r\n
\r\n

{translate('blasting.title')}

\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nexport default ProductServiceBlasting;\r\n","const getCornerRules = (type, shape) => {\r\n let key = `${type}-${shape}`,\r\n background = `bg-${key}`,\r\n boxHeight = 140;\r\n\r\n const smallBoxes = ['N-C', 'P-C', 'R-C', 'F-C', 'I-C', 'G-LLC', 'I-LLC', 'F-LLC', 'N-LLC', 'P-LLC', 'Q-LLC', 'R-LLC', 'F-R', 'M-R', 'N-R', 'F-CR', 'M-CR', 'N-CR', 'F-RF', 'M-RF', 'N-RF', 'F-CRF', 'M-CRF', 'N-CRF', 'F-U', 'I-U', 'I-U', 'N-U', 'R-U', 'F-LS', 'G-LS', 'H-LS', 'I-LS', 'N-LS', 'P-LS', 'Q-LS', 'R-LS'];\r\n\r\n if (smallBoxes.includes(key)) {\r\n boxHeight = 70;\r\n }\r\n\r\n let ruleset = {\r\n 'A': {\r\n cornerA: -1,\r\n cornerB: -1\r\n },\r\n 'B': {\r\n cornerA: 4,\r\n cornerB: -1\r\n },\r\n 'C': {\r\n cornerA: 1,\r\n cornerB: -1\r\n },\r\n 'D': {\r\n cornerA: 3,\r\n cornerB: -1\r\n },\r\n 'E': {\r\n cornerA: 2,\r\n cornerB: -1\r\n },\r\n 'F': {\r\n cornerA: 4,\r\n cornerB: -1\r\n },\r\n 'G': {\r\n cornerA: 3,\r\n cornerB: -1\r\n },\r\n 'H': {\r\n cornerA: 2,\r\n cornerB: -1\r\n },\r\n 'I': {\r\n cornerA: 1,\r\n cornerB: -1\r\n },\r\n 'J': {\r\n cornerA: 1,\r\n cornerB: 3\r\n },\r\n 'K': {\r\n cornerA: 4,\r\n cornerB: 2\r\n },\r\n 'L': {\r\n cornerA: 4,\r\n cornerB: 3\r\n },\r\n 'M': {\r\n cornerA: 1,\r\n cornerB: 2\r\n },\r\n 'N': {\r\n cornerA: 4,\r\n cornerB: 2\r\n },\r\n 'P': {\r\n cornerA: 4,\r\n cornerB: 3\r\n },\r\n 'Q': {\r\n cornerA: 1,\r\n cornerB: 3\r\n },\r\n 'R': {\r\n cornerA: 1,\r\n cornerB: 2\r\n }\r\n }\r\n\r\n return {\r\n cornerA: ruleset[type].cornerA,\r\n cornerB: ruleset[type].cornerB,\r\n boxHeight,\r\n background\r\n };\r\n}\r\n\r\nexport default getCornerRules;","import React, { Fragment } from 'react';\r\nimport { lerp } from '../../Services/utilities';\r\nimport { translate } from '../../Services/translation';\r\n\r\nconst PanelCuttingImage = ({ id, rules, angleA, angleB, focusA, focusB }) => {\r\n const className = 'cut-image';\r\n const margin = 10;\r\n const box = {\r\n x: 10,\r\n y: 200,\r\n width: 1180,\r\n };\r\n const viewBox = {\r\n x: 0,\r\n y: 0,\r\n width: 1200,\r\n height: 400,\r\n };\r\n\r\n const calculateCorner = (corner, angle, box) => {\r\n if (corner > 0) {\r\n let result = calculateAngle(angle);\r\n\r\n if (corner === 1) {\r\n box.c4.x += result;\r\n } else if (corner === 4) {\r\n box.c1.x += result;\r\n } else if (corner === 3) {\r\n box.c2.x -= result;\r\n } else if (corner === 2) {\r\n box.c3.x -= result;\r\n }\r\n }\r\n };\r\n\r\n const calculateAngle = (angle) => {\r\n let angleRad = toRadian(angle),\r\n angle2Rad = toRadian(90 - angle),\r\n hyp = rules.boxHeight / Math.sin(angle2Rad);\r\n\r\n return hyp * Math.sin(angleRad);\r\n };\r\n\r\n const toRadian = (angle) => {\r\n return (angle / 180) * Math.PI;\r\n };\r\n\r\n const getCornerPosition = (corner) => {\r\n let basicBox = getBasicBox(box.x, box.y);\r\n return basicBox['c' + corner];\r\n };\r\n\r\n const getBasicBox = (x, y) => {\r\n return {\r\n c1: { x: x, y: y },\r\n c2: { x: x + box.width, y: y },\r\n c3: { x: x + box.width, y: y + rules.boxHeight },\r\n c4: { x: x, y: y + rules.boxHeight },\r\n };\r\n };\r\n\r\n const getCalcBox = (x, y) => {\r\n let basicBox = getBasicBox(x, y),\r\n calcBox = getBasicBox(x, y);\r\n\r\n calculateCorner(rules.cornerA, angleA, calcBox);\r\n calculateCorner(rules.cornerB, angleB, calcBox);\r\n\r\n return calcBox;\r\n };\r\n\r\n const getBoxPath = (calcBox) => {\r\n return `M${calcBox.c1.x} ${calcBox.c1.y} ${calcBox.c2.x} ${calcBox.c2.y} ${calcBox.c3.x} ${calcBox.c3.y} ${calcBox.c4.x} ${calcBox.c4.y}Z`;\r\n };\r\n\r\n const getFocusClass = () => {\r\n if (focusA) {\r\n return ' angle-focus angle-focus--a';\r\n } else if (focusB) {\r\n return ' angle-focus angle-focus--b';\r\n }\r\n\r\n return '';\r\n };\r\n\r\n const getTextPosition = (corner, angle) => {\r\n let basicBox = getBasicBox(box.x, box.y),\r\n calcBox = getBasicBox(box.x, box.y);\r\n\r\n calculateCorner(corner, angle, calcBox);\r\n\r\n if (corner === 4) {\r\n let m = lerp(0.5, basicBox.c1.x, calcBox.c1.x);\r\n\r\n return {\r\n x: m > 40 ? m : 40,\r\n y: basicBox.c1.y - 14,\r\n };\r\n } else if (corner === 3) {\r\n let m = lerp(0.5, basicBox.c2.x, calcBox.c2.x);\r\n\r\n return {\r\n x: m < basicBox.c2.x - 30 ? m : basicBox.c2.x - 30,\r\n y: basicBox.c2.y - 14,\r\n };\r\n } else if (corner === 2) {\r\n let m = lerp(0.5, basicBox.c3.x, calcBox.c3.x);\r\n\r\n return {\r\n x: m < basicBox.c3.x - 30 ? m : basicBox.c3.x - 30,\r\n y: basicBox.c3.y + 56,\r\n };\r\n } else if (corner === 1) {\r\n let m = lerp(0.5, basicBox.c4.x, calcBox.c4.x);\r\n\r\n return {\r\n x: m > 40 ? m : 40,\r\n y: basicBox.c4.y + 56,\r\n };\r\n }\r\n\r\n return cornerPosition;\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n {rules.background && (\r\n \r\n )}\r\n\r\n {rules.cornerA > 0 && (\r\n \r\n )}\r\n\r\n {rules.cornerB > 0 && (\r\n \r\n )}\r\n\r\n \r\n \r\n\r\n {rules.cornerA > 0 && (\r\n \r\n a\r\n \r\n )}\r\n\r\n {rules.cornerB > 0 && (\r\n \r\n b\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default PanelCuttingImage;\r\n","import React, { Fragment, useEffect, useState } from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport getCornerRules from '../../Services/rulesets';\r\nimport PanelCuttingImage from './PanelCuttingImage';\r\nimport { translate } from '../../Services/translation';\r\nimport { googleAnalyticsProductConfigurator } from '../../Services/googleAnalytics';\r\n\r\nconst PanelBeamCuttingSvgAlt = ({ id, onClick, items, cutType, shape }) => {\r\n const articleNumber = useSelector((state) => state.configurator.id);\r\n const [state, setState] = useState({\r\n showAngleAerror: false,\r\n showAngleBerror: false,\r\n focusAngleA: false,\r\n focusAngleB: false,\r\n });\r\n const [selectedItem, setSelectedItem] = useState(items.find((i) => i.code === cutType.cutCode));\r\n\r\n useEffect(() => {\r\n if (!cutType.cutCode && items.length > 0) {\r\n selectBeamType(0);\r\n } else {\r\n setSelectedItem(items.find((i) => i.code === cutType.cutCode));\r\n }\r\n }, [cutType]);\r\n\r\n const selectBeamType = (index) => {\r\n if (cutType.cutCode !== items[index].code) {\r\n onClick('cutAngleA', null);\r\n onClick('cutAngleB', null);\r\n onClick('cutCode', items[index].code);\r\n setSelectedItem(items[index]);\r\n googleAnalyticsProductConfigurator('selectedBeamType', items[index].type.toString(), articleNumber);\r\n } else {\r\n let selectedItem = items[index];\r\n onClick('cutCode', selectedItem.code);\r\n setSelectedItem(selectedItem);\r\n }\r\n };\r\n\r\n const updateMaxAngleA = (event, isBlur) => {\r\n setState({ ...state, showAngleAerror: false });\r\n let { value, min, max } = event.target;\r\n if (value == '') {\r\n setState({ ...state, showAngleAerror: true });\r\n }\r\n value = Math.max(Number(min), Math.min(Number(max), Number(value)));\r\n onClick('cutAngleA', value);\r\n\r\n if (isBlur) {\r\n googleAnalyticsProductConfigurator('cutAngleA', value.toString(), articleNumber);\r\n }\r\n\r\n };\r\n\r\n const updateMaxAngleB = (event, isBlur) => {\r\n setState({ ...state, showAngleBerror: false });\r\n let { value, min, max } = event.target;\r\n if (value == '') {\r\n setState({ ...state, showAngleBerror: true });\r\n }\r\n value = Math.max(Number(min), Math.min(Number(max), Number(value)));\r\n onClick('cutAngleB', value);\r\n\r\n if (isBlur) {\r\n googleAnalyticsProductConfigurator('cutAngleB', value.toString(), articleNumber);\r\n }\r\n };\r\n\r\n const getCutAngle = (type, fallback) => {\r\n let propertyName = `cutAngle${type}`;\r\n\r\n if (!cutType[propertyName] && fallback) {\r\n return fallback;\r\n }\r\n\r\n return cutType[propertyName] ? cutType[propertyName] : '';\r\n };\r\n\r\n const getPlaceHolderValue = (value) => {\r\n return `0-${value}°`;\r\n };\r\n\r\n const getIconShapeIcon = (rules) => {\r\n let left = 0,\r\n right = 0;\r\n\r\n if (rules.cornerA > 0) {\r\n switch (rules.cornerA) {\r\n case 1:\r\n left = 2;\r\n break;\r\n case 4:\r\n left = 1;\r\n break;\r\n case 2:\r\n right = 2;\r\n break;\r\n case 3:\r\n right = 1;\r\n break;\r\n }\r\n }\r\n\r\n if (rules.cornerB > 0 && right === 0) {\r\n right = rules.cornerB == 2 ? 2 : 1;\r\n }\r\n\r\n return `${left}-${right}`;\r\n };\r\n\r\n const setFocus = (propName, boolValue) => {\r\n setState({ ...state, [propName]: boolValue, });\r\n };\r\n\r\n return (\r\n \r\n \r\n {selectedItem && (\r\n
\r\n {cutType && (\r\n
\r\n \r\n
\r\n )}\r\n
\r\n {selectedItem.maxAngleA != -1 && (\r\n
\r\n {translate('beamtype.maxanglea')}\r\n *\r\n \r\n { updateMaxAngleA(event, false); }} onFocus={() => { setFocus('focusAngleA', true); }}\r\n onBlur={(event) => { updateMaxAngleA(event, true); setFocus('focusAngleA', false); }}\r\n >\r\n \r\n
\r\n )}\r\n {selectedItem.maxAngleB != -1 && (\r\n
\r\n {translate('beamtype.maxangleb')}\r\n *\r\n { updateMaxAngleB(event, false); }} onFocus={() => { setFocus('focusAngleB', true); }}\r\n onBlur={(event) => { updateMaxAngleB(event, true); setFocus('focusAngleB', false); }}\r\n >\r\n
\r\n )}\r\n
\r\n
\r\n )}\r\n
\r\n );\r\n};\r\n\r\nexport default PanelBeamCuttingSvgAlt;\r\n","import React, { Fragment, useState } from 'react';\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport { translate } from '../../Services/translation';\r\nimport PanelBeamCuttingSvgAlt from './PanelBeamCuttingSvgAlt';\r\nimport { setCuttingDetails } from '../../Actions/Configurator.action';\r\n\r\nconst PanelBeam = ({ id, currentCutType }) => {\r\n const [selectedBeamType, setSelectedBeamType] = useState(1);\r\n const configurator = useSelector((state) => state.configurator);\r\n const { erpVariantId, rules, selections } = configurator;\r\n\r\n let cuttingDetail = selections.cuttingDetails.find((x) => x.id == id);\r\n const dispatch = useDispatch();\r\n const [cutType, setCutType] = useState(cuttingDetail.cutType || {});\r\n\r\n const setTab = (type) => {\r\n setCutType({});\r\n //change('cutCode', null);\r\n setSelectedBeamType(type);\r\n };\r\n\r\n const getCutDescription = () => {\r\n let description = translate('panelbeam.description.cutcode') + cutType.cutCode;\r\n\r\n if (cutType.cutAngleA) {\r\n description += ', ' + translate('panelbeam.description.cutanglea') + cutType.cutAngleA + translate('panelbeam.description.delimiter');\r\n }\r\n\r\n if (cutType.cutAngleB) {\r\n description += ', ' + translate('panelbeam.description.cutangleb') + cutType.cutAngleB + translate('panelbeam.description.delimiter');\r\n }\r\n\r\n return description;\r\n };\r\n\r\n const change = (property, value) => {\r\n cutType[property] = value;\r\n setCutType(cutType);\r\n\r\n if (isCutValid()) {\r\n cutType.description = getCutDescription();\r\n dispatch(setCuttingDetails(id, 'cutType', cutType));\r\n }\r\n };\r\n\r\n const isCutValid = () => {\r\n if (!cutType || !cutType.cutCode) return false;\r\n\r\n let rule = rules.cutTypes.find((c) => c.code === cutType.cutCode);\r\n\r\n if (!rule) {\r\n console.error('could not find cut rules for code: ' + cutType.cutCode);\r\n return false;\r\n }\r\n\r\n if (rule.maxAngleA > -1 && !cutType.cutAngleA) {\r\n return false;\r\n }\r\n\r\n if (rule.maxAngleB > -1 && !cutType.cutAngleB) {\r\n return false;\r\n }\r\n\r\n return true;\r\n };\r\n\r\n const getAllAnglesItems = () => {\r\n let selectedBeam = selectedBeamType;\r\n let selectedBeamText = 'straight';\r\n if (selectedBeam === 1) {\r\n selectedBeamText = 'straight';\r\n } else if (selectedBeam === 0) {\r\n selectedBeamText = 'oneSide';\r\n } else if (selectedBeam === 2) {\r\n selectedBeamText = 'twoSides';\r\n }\r\n if (selectedBeam === -1) {\r\n selectedBeam = 1;\r\n }\r\n return rules.cutTypes.filter(\r\n (c) => c.type === selectedBeam || c.type === selectedBeamText\r\n );\r\n };\r\n\r\n return (\r\n \r\n
\r\n \r\n \r\n {/* Symbol contents */}\r\n \r\n \r\n {/* Symbol contents */}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n L\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n setTab(1)} className={selectedBeamType === 1 ? 'active' : ''}\r\n >\r\n {translate('beamtype.cuttingonestreight')}\r\n \r\n setTab(0)} className={selectedBeamType === 0 ? 'active' : ''}\r\n >\r\n {translate('beamtype.cuttingoneside')}\r\n \r\n setTab(2)} className={selectedBeamType === 2 ? 'active' : ''}\r\n >\r\n {translate('beamtype.cuttingtwoside')}\r\n \r\n
\r\n
\r\n {getAllAnglesItems().length > 0 && (\r\n \r\n )}\r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default PanelBeam;\r\n","import React, { useEffect, Fragment, useRef } from 'react';\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport { translate } from '../../Services/translation';\r\nimport { numberFormat } from '../../Services/formatting';\r\nimport convertUnit from '../../Services/conversions';\r\nimport { map } from '../../Services/utilities';\r\nimport PanelBeam from './PanelBeam';\r\nimport PanelMarking from './PanelMarking';\r\nimport { validateInputs } from './validateCuttingInputs';\r\nimport { googleAnalyticsProductConfigurator } from '../../Services/googleAnalytics';\r\nimport { setEmptyCuttingDetails as addCutting, setCuttingDetails, deleteCuttingDetails as deleteCutting, } from '../../Actions/Configurator.action';\r\n\r\nimport PlusIcon from '../../../images/Plus.svg';\r\nimport TrashCan from '../../../images/trashcan.svg';\r\n\r\nconst PanelCuttingLength = ({ quantityRef, lengthRef }) => {\r\n const kgSuffix = ' kg';\r\n const configurator = useSelector((state) => state.configurator);\r\n const { rules, selections, quantitySelector } = configurator;\r\n const { baseUnit, quantityUnits } = quantitySelector;\r\n\r\n const cuttingElementRef = useRef(null);\r\n const dispatch = useDispatch();\r\n\r\n useEffect(() => {\r\n if (selections.cuttingDetails && selections.cuttingDetails.length === 0) {\r\n cuttingAdd();\r\n }\r\n }, []);\r\n\r\n useEffect(() => {\r\n const handleClick = event => {\r\n if (cuttingElementRef.current > 0 && !event.target.closest('details')) {\r\n cuttingElementRef.current.querySelectorAll('details').forEach((detail) => detail.removeAttribute('open'));\r\n };\r\n };\r\n\r\n window.addEventListener('click', handleClick);\r\n\r\n return () => {\r\n window.removeEventListener('click', handleClick);\r\n };\r\n }, []);\r\n\r\n const handleInputChangeOrBlur = (id, field, event, isBlur = false) => {\r\n let { value, min, max } = event.target;\r\n\r\n event.target.setCustomValidity('');\r\n\r\n if (value === '' && !isBlur) {\r\n dispatch(setCuttingDetails(id, field, value));\r\n return;\r\n }\r\n\r\n if (value === '' && isBlur && min !== null) {\r\n value = min;\r\n } else if (isBlur) {\r\n value = Math.max(Number(min), Math.min(Number(max), Number(value)));\r\n }\r\n dispatch(setCuttingDetails(id, field, value));\r\n\r\n if (isBlur) {\r\n googleAnalyticsProductConfigurator(field === 'quantity' ? 'cuttingNumber' : 'cuttingLength', value);\r\n }\r\n };\r\n\r\n const cuttingAdd = () => {\r\n if (validateInputs(quantityRef, lengthRef)) {\r\n dispatch(addCutting());\r\n }\r\n };\r\n\r\n const handleDelete = (id) => {\r\n if (selections.cuttingDetails.length === 1) {\r\n dispatch(deleteCutting(id));\r\n dispatch(addCutting());\r\n } else {\r\n dispatch(deleteCutting(id));\r\n }\r\n };\r\n\r\n const calculateWeight = (row) => {\r\n const pcsUnit = quantityUnits.find((u) => u.unit === 'pcs'),\r\n kgUnit = quantityUnits.find((u) => u.unit === 'kg');\r\n\r\n let baseQuantity = convertUnit(row.quantity, pcsUnit, baseUnit),\r\n totalWeight = convertUnit(baseQuantity, baseUnit, kgUnit);\r\n\r\n if (isCutLengthValid(row.length)) {\r\n totalWeight = map(row.length, 0, rules.length, 0, totalWeight);\r\n }\r\n\r\n return totalWeight;\r\n };\r\n\r\n const isCutLengthValid = (length) => {\r\n return length >= rules.minCutLength && length <= rules.maxCutLength;\r\n };\r\n\r\n const getRowWeight = (accumulator, row) => {\r\n return accumulator + calculateWeight(row);\r\n };\r\n\r\n const getTotalWeight = () => {\r\n return selections.cuttingDetails.reduce(getRowWeight, 0);\r\n };\r\n\r\n return (\r\n \r\n
\r\n
\r\n {translate('cutting.cuttinglengthtitle')}\r\n
\r\n \r\n {translate('cutting.showtoleranser')}\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {selections.cuttingDetails && selections.cuttingDetails.map((row, index) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ))}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n {translate('cutting.cuttinginformation.pieces')}\r\n \r\n {translate('cutting.cuttinginformation.length')}\r\n \r\n {translate('cutting.cuttinginformation.capeType')}\r\n \r\n {translate('cutting.cuttinginformation.marking')}\r\n \r\n {translate('cutting.cuttinginformation.rowweight')}\r\n \r\n {/* Delete column */}\r\n
\r\n (quantityRef.current[index] = el)} className='cut-table__input' type='number' min='1' max='99999999'\r\n onChange={(event) => handleInputChangeOrBlur(row.id, 'quantity', event)}\r\n onBlur={(event) => handleInputChangeOrBlur(row.id, 'quantity', event, true)} value={row.quantity}\r\n />\r\n \r\n (lengthRef.current[index] = el)} className='cut-table__input' min={rules.minCutLength} max={rules.maxCutLength}\r\n type='number' value={row.length === 0 ? '' : row.length.toString()} placeholder={`${rules.minCutLength}-${rules.maxCutLength}`}\r\n onChange={(event) => handleInputChangeOrBlur(row.id, 'length', event)}\r\n onBlur={(event) => handleInputChangeOrBlur(row.id, 'length', event, true)}\r\n />\r\n \r\n
\r\n \r\n \r\n {row.cutType.description ? row.cutType.description : translate('not.selected')}\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n {row.marking.description ? row.marking.description : translate('not.selected')}\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n {numberFormat.format(getRowWeight(0, row)) + kgSuffix}\r\n \r\n handleDelete(row.id)}>\r\n Delete\r\n \r\n
\r\n \r\n Add{' '}\r\n {translate('cutting.cuttinginformation.add')}\r\n \r\n \r\n {translate('cutting.cuttinginformation.totalweight')}:{' ' + numberFormat.format(getTotalWeight()) + kgSuffix}\r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default PanelCuttingLength;\r\n","import React, { Fragment } from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { setCoilDetails } from '../../Actions/Configurator.action';\r\nimport { googleAnalyticsProductConfigurator } from '../../Services/googleAnalytics';\r\n\r\nconst PanelCoilFoiling = ({ id }) => {\r\n const dispatch = useDispatch(),\r\n articleNumber = useSelector((state) => state.configurator.id),\r\n configurator = useSelector((state) => state.configurator),\r\n { rules, selections } = configurator,\r\n { coilInfo } = rules,\r\n { foilingOptions } = coilInfo;\r\n\r\n const handleOptionChange = (key, value) => {\r\n dispatch(setCoilDetails(id, 'foilingCoils', key));\r\n\r\n googleAnalyticsProductConfigurator('foilingCoils', value.toString(), articleNumber);\r\n\r\n };\r\n\r\n const getSelectedFoilingCoil = (key) => {\r\n const foundFoilingCoils = selections.coilDetails.find((coil) => coil.id === id && coil.foilingCoils === key);\r\n return !!foundFoilingCoils;\r\n };\r\n\r\n return (\r\n \r\n
\r\n
\r\n
\r\n
\r\n {foilingOptions && Object.entries(foilingOptions).map(([key, value]) => (\r\n
\r\n \r\n
\r\n ))}\r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default PanelCoilFoiling;\r\n","import React, { Fragment } from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { setCoilDetails } from '../../Actions/Configurator.action';\r\n\r\nconst PanelCoilPacking = ({ id }) => {\r\n const dispatch = useDispatch();\r\n const configurator = useSelector((state) => state.configurator);\r\n const { rules, selections } = configurator;\r\n const { coilInfo } = rules;\r\n const { packingOptions } = coilInfo;\r\n\r\n const handleOptionChange = (key, value) => {\r\n dispatch(setCoilDetails(id, 'packingCoils', key));\r\n };\r\n\r\n const getSelectedPackingCoil = (key) => {\r\n const foundPackingCoil = selections.coilDetails.find((coil) => coil.id === id && coil.packingCoils === key);\r\n return !!foundPackingCoil;\r\n };\r\n\r\n const checkboxes = Object.entries(packingOptions)\r\n .filter(([key, value]) => window.__litium.constants.coils.standard.includes(key))\r\n .map(([key, value]) => (\r\n
\r\n \r\n
\r\n ));\r\n\r\n const radioButtons = Object.entries(packingOptions)\r\n .filter(([key, value]) => !window.__litium.constants.coils.standard.includes(key))\r\n .map(([key, value]) => (\r\n
\r\n \r\n
\r\n ));\r\n\r\n return (\r\n \r\n
\r\n
\r\n
\r\n
\r\n {checkboxes}\r\n {radioButtons}\r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default PanelCoilPacking;\r\n","import React, { useEffect, Fragment } from 'react';\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport { translate } from '../../Services/translation';\r\nimport { numberFormat } from '../../Services/formatting';\r\nimport convertUnit from '../../Services/conversions';\r\nimport { map } from '../../Services/utilities';\r\nimport PanelCoilFoiling from './PanelCoilFoiling';\r\nimport PanelCoilPacking from './PanelCoilPacking';\r\nimport { setEmptyCoilDetails as addCoil, setCoilDetails, deleteCoilDetails as deleteCoil } from '../../Actions/Configurator.action';\r\nimport { googleAnalyticsProductConfigurator } from '../../Services/googleAnalytics';\r\n\r\nimport PlusIcon from '../../../images/Plus.svg';\r\nimport TrashCan from '../../../images/trashcan.svg';\r\n\r\nconst PanelCoilBase = () => {\r\n const dispatch = useDispatch();\r\n const configurator = useSelector((state) => state.configurator);\r\n const { rules, selections, quantitySelector } = configurator;\r\n const { baseUnit, quantityUnits } = quantitySelector;\r\n const { coilInfo } = rules;\r\n const { foilingOptions, packingOptions } = coilInfo;\r\n const kgSuffix = ' kg';\r\n\r\n useEffect(() => {\r\n if (selections.coilDetails && selections.coilDetails.length == 0) {\r\n coilAdd();\r\n }\r\n }, []);\r\n\r\n const coilAdd = () => {\r\n dispatch(addCoil());\r\n };\r\n\r\n const handleInputChange = (id, field, value) => {\r\n dispatch(setCoilDetails(id, field, Number(value)));\r\n googleAnalyticsProductConfigurator(field, value, configurator.id);\r\n };\r\n\r\n const handleDelete = (id) => {\r\n if (selections.coilDetails.length === 1) {\r\n dispatch(deleteCoil(id));\r\n dispatch(addCoil());\r\n } else {\r\n dispatch(deleteCoil(id));\r\n }\r\n };\r\n\r\n const calculateWeight = (row) => {\r\n const pcsUnit = quantityUnits.find((u) => u.unit === 'pcs'),\r\n kgUnit = quantityUnits.find((u) => u.unit === 'kg');\r\n\r\n let baseQuantity = convertUnit(row.quantity, pcsUnit, baseUnit),\r\n totalWeight = convertUnit(baseQuantity, baseUnit, kgUnit);\r\n\r\n if (isCoilLengthValid(row.length)) {\r\n totalWeight = map(row.length, 0, rules.length, 0, totalWeight);\r\n }\r\n return totalWeight;\r\n };\r\n\r\n const isCoilLengthValid = (length) => {\r\n return length >= rules.minCutLength && length <= rules.maxCutLength;\r\n };\r\n\r\n const getRowWeight = (accumulator, row) => {\r\n return accumulator + calculateWeight(row);\r\n };\r\n\r\n const getTotalWeight = () => {\r\n return selections.coilDetails.reduce(getRowWeight, 0);\r\n };\r\n\r\n return (\r\n \r\n
\r\n
\r\n {translate('cutting.coil.title')}\r\n
\r\n \r\n {translate('cutting.coil.showtoleranser')}\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {selections.coilDetails && selections.coilDetails.map((row) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ))}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n {translate('cutting.coil.pieces')}\r\n \r\n {translate('cutting.coil.length')}\r\n \r\n {translate('cutting.coil.foiling')}\r\n \r\n {translate('cutting.coil.packing')}\r\n \r\n {translate('cutting.coil.maxcoils')}\r\n \r\n {translate('cutting.coil.rowweight')}\r\n \r\n {/* Delete column */}\r\n
\r\n handleInputChange(row.id, 'quantity', e.target.value)}\r\n onBlur={(e) => handleInputChange(row.id, 'quantity', e.target.value)} />\r\n \r\n handleInputChange(row.id, 'length', e.target.value)}\r\n onBlur={(e) => handleInputChange(row.id, 'length', e.target.value)} />\r\n \r\n
\r\n \r\n \r\n {row.foilingCoils ? foilingOptions[row.foilingCoils] : translate('not.selected')}\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n {row.packingCoils ? packingOptions[row.packingCoils] : translate('not.selected')}\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n {row.maxHeightCoils > 0 && row.maxWeightCoils > 0 ? row.maxHeightCoils + ' : ' + row.maxWeightCoils : translate('not.selected')}\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n handleInputChange(row.id, 'maxHeightCoils', e.target.value)}\r\n onBlur={(e) => handleInputChange(row.id, 'maxHeightCoils', e.target.value)}\r\n />\r\n
\r\n
\r\n \r\n handleInputChange(row.id, 'maxWeightCoils', e.target.value)}\r\n onBlur={(e) => handleInputChange(row.id, 'maxWeightCoils', e.target.value)}\r\n />\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {numberFormat.format(getRowWeight(0, row)) + kgSuffix}\r\n \r\n handleDelete(row.id)}>\r\n \r\n \r\n
\r\n \r\n {translate('cutting.coil..add')}\r\n \r\n \r\n \r\n {translate('cutting.coil.total') + ' ' + numberFormat.format(getTotalWeight()) + kgSuffix}\r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default PanelCoilBase;\r\n","import React, { Fragment, useRef } from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { translate } from '../../Services/translation';\r\nimport PanelBlasting from './PanelBlasting';\r\nimport PanelSubmit from './PanelSubmit';\r\nimport ConfiguratorProductDetails from './ConfiguratorProductDetails';\r\nimport { changeProductServiceTab } from '../../Actions/Configurator.action';\r\nimport PanelCuttingLength from './PanelCuttingLength';\r\nimport PanelCoilBase from './PanelCoilBase';\r\nimport PanelDeliveryDate from './PanelDeliveryDate';\r\n\r\nimport closeIcon from '../../../images/closeDialogIcon.svg';\r\n\r\nconst ProductServiceCutting = () => {\r\n const configurator = useSelector((state) => state.configurator),\r\n { rules } = configurator,\r\n { isCoil } = rules;\r\n const dispatch = useDispatch();\r\n const quantityRef = useRef([]);\r\n const lengthRef = useRef([]);\r\n\r\n return (\r\n \r\n dispatch(changeProductServiceTab(0))} >\r\n \r\n \r\n
\r\n

{translate('configurator.production.cutting.title')}

\r\n
\r\n \r\n {isCoil ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nexport default ProductServiceCutting;\r\n","import React, { Fragment } from 'react';\r\nimport { translate } from '../../Services/translation';\r\nimport PanelBlasting from './PanelBlasting';\r\nimport PanelSubmit from './PanelSubmit';\r\nimport ConfiguratorProductDetails from './ConfiguratorProductDetails';\r\nimport ProductQuantitySelector from './ProductQuantitySelector';\r\nimport { changeProductServiceTab } from '../../Actions/Configurator.action';\r\nimport { useDispatch } from 'react-redux';\r\nimport closeIcon from '../../../images/closeDialogIcon.svg';\r\n\r\nconst ProductServiceSwell = () => {\r\n const dispatch = useDispatch();\r\n\r\n return (\r\n \r\n dispatch(changeProductServiceTab(0))}>\r\n
\r\n

{translate('configurator.production.swell.title')}

\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n );\r\n};\r\nexport default ProductServiceSwell;\r\n","import React from 'react';\r\nimport { useDispatch } from 'react-redux';\r\nimport { changeProductServiceTab } from '../../../Actions/Configurator.action';\r\nimport plusIcon from '../../../../images/plusIcon.svg';\r\n\r\nconst ModeSelection = ({ tab, icon, title, text }) => {\r\n const dispatch = useDispatch();\r\n\r\n return (\r\n dispatch(changeProductServiceTab(tab))} className='configuratorServiceTab'>\r\n
\r\n
\r\n \r\n
{title}
\r\n
\r\n \r\n
\r\n
\r\n

{text}

\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default ModeSelection;\r\n","import React, { Fragment } from 'react';\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport { translate } from '../../../Services/translation';\r\nimport { close } from '../../../Actions/Configurator.action';\r\nimport ProductServiceBlasting from '../ProductServiceBlasting';\r\nimport ProductServiceCutting from '../ProductServiceCutting';\r\nimport ProductServiceSwell from '../ProductServiceSwell';\r\nimport ConfiguratorProductDetails from '../ConfiguratorProductDetails';\r\nimport ModeSelection from './ModeSelection';\r\n\r\n// Icons\r\nimport paintBrush from '../../../../images/Paintbrush.svg';\r\nimport plusIcon from '../../../../images/plusIcon.svg';\r\nimport cutingIcon from '../../../../images/cutingIcon.svg';\r\nimport splittingIcon from '../../../../images/splittingIcon.svg';\r\nimport closeDialogIcon from '../../../../images/closeDialogIcon.svg';\r\n\r\nconst ProductionPane = () => {\r\n const dispatch = useDispatch(),\r\n configurator = useSelector((state) => state.configurator),\r\n rules = useSelector((state) => state.configurator.rules);\r\n\r\n const selectedProductServiceTab = configurator.selectedProductServiceTab || 0;\r\n return (\r\n
\r\n {selectedProductServiceTab === 0 && (\r\n \r\n dispatch(close())} >\r\n \r\n \r\n

\r\n {translate('configurator.service.adjust')}\r\n

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

\r\n {translate('config.productionservices')}\r\n

\r\n
\r\n
\r\n {(rules.allowBlasting === true || rules.allowPainting === true) && (\r\n \r\n )}\r\n \r\n {/* */}\r\n
\r\n
\r\n
\r\n )}\r\n\r\n {selectedProductServiceTab === 1 && }\r\n {selectedProductServiceTab === 2 && }\r\n {selectedProductServiceTab === 3 && }\r\n
\r\n );\r\n};\r\n\r\nexport default ProductionPane;\r\n","import React from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport GeneralPane from './Tabs/GeneralPane';\r\nimport ProductionPane from './Tabs/ProductionPane';\r\n\r\nconst ConfiguratorBase = () => {\r\n const selectedTab = useSelector((state) => state.configurator.selectedTab),\r\n id = useSelector((state) => state.configurator.id);\r\n\r\n return (\r\n
\r\n {selectedTab === 1 && }\r\n {selectedTab === 2 && }\r\n\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default ConfiguratorBase;\r\n","import React from 'react';\r\n\r\nconst ConfiguratorLoadingState = () => {\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nexport default ConfiguratorLoadingState;\r\n","import React from 'react';\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport { changeTab } from '../../../Actions/Configurator.action';\r\nimport { translate } from '../../../Services/translation';\r\n\r\nconst ConfiguratorTabs = ({ isLoading }) => {\r\n const dispatch = useDispatch(),\r\n selectedTab = useSelector((state) => state.configurator.selectedTab),\r\n isConfigurable = useSelector((state) => state.configurator.isConfigurable);\r\n\r\n return (\r\n <>\r\n {isConfigurable && (\r\n
\r\n dispatch(changeTab(1))} className={'tab' + (selectedTab === 1 ? ' tab--active' : '')} >\r\n {translate('configurator.service.stock')}\r\n \r\n dispatch(changeTab(2))} className={'tab' + (selectedTab === 2 ? ' tab--active' : '')} >\r\n {translate('configurator.service.production')}\r\n \r\n
\r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default ConfiguratorTabs;\r\n","\r\nconst isHoliday = (date, startDate, publicHolidays, nonPublicHolidays) => {\r\n let daysInNumber = date.getDay();\r\n\r\n if (startDate && date <= startDate) {\r\n return true;\r\n }\r\n\r\n if (daysInNumber == 0 || daysInNumber == 6) {\r\n return true;\r\n } else {\r\n if ((publicHolidays && publicHolidays.length > 0) || (nonPublicHolidays && nonPublicHolidays.length > 0)) {\r\n const currentDate = ('0' + date).slice(-2) + '/' + ('0' + (date.getMonth() + 1)).slice(-2) + '/' + date.getYear(); // 'DD/MM/YYYY'\r\n const currentMonthDay = date.getDate() + '-' + (date.getMonth() + 1); // 'DD-MM'\r\n return (publicHolidays.includes(currentMonthDay) || nonPublicHolidays.includes(currentDate));\r\n } else {\r\n return false;\r\n }\r\n }\r\n}\r\n\r\nexport default isHoliday;\r\n"],"names":["getStackedItem","stackedPrices","totalWeight","quantityPriceList","quantityUnit","length","stackedItem","priceListItem","quantity","StackedPrices","useSelector","state","configurator","React","className","translate","pricingUnitDisplayName","factorKg","pricingUnit","renderDecimal","value","useFactor","Intl","NumberFormat","window","__litium","constants","currentLocale","style","maximumFractionDigits","format","stackedQuantity","getStackedQuantity","map","index","key","price","width","getMeterProgress","max","selectedIndex","i","currencyFormat","formatToParts","find","e","type","convertUnit","sourceUnit","targetUnit","unit","conversionFactor","lerp","norm","min","sourceMin","sourceMax","destMin","destMax","ProductQuantitySelector","dispatch","useDispatch","articleNumber","id","orderRow","rules","selections","quantitySelector","baseUnitQuantity","informationToCustomer","infoTextQuantityMinLimit","selectedTab","decimalQuantity","defaultUnit","baseUnit","unitConfigurableParentItem","quantityUnits","isUpdateMode","isConfigured","_useState","useState","selectedUnit","_useState2","_slicedToArray","setSelectedUnit","_useState3","_useState4","selectedUnitQuantity","setSelectedUnitQuantity","_useState5","_useState6","baseQuantity","setBaseQuantity","cuttingLength","quantityInputElement","useRef","readOnly","isRemnant","useEffect","initialize","onSetUnit","updateQuantity","initialQuantity","handleChangeQuantityUnit","setUnit","Math","ceil","toFixed","setBaseUnitQuantity","onBaseUnitQuantityChange","getQuantityUnit","setTotalWeight","setSelectedUnitQuantityState","weight","isCutLengthValid","setWeight","minCutLength","maxCutLength","u","fixedValue","Number","parseFloat","setSalesQuantity","current","onQuantityInputElementPress","event","isBlur","target","googleAnalytics","toString","newQuantity","totalPcsWeight","showInfoText","Fragment","href","numberFormat","disabled","defaultValue","onInput","onBlur","ref","step","maxLength","onChange","filter","available","description","htmlFor","quantityFieldId","props","deliveryDetails","goodMarkingValue","goodsMarking","setting","goodsMarkingValue","setGoodsMarkingValue","update","setDeliveryDetailsValues","googleAnalyticsProductConfigurator","icon","labelKey","placeholder","PanelDeliveryDate","startDate","cart","delivery","startDateObj","Date","deliveryDate","publicHolidays","holidays","holiday","isPublicHoliday","holidayDate","nonPublicHolidays","DatePicker","selected","filterDate","day","isHoliday","subDays","popperPlacement","date","selectedDate","formattedDate","toBaseDateFormat","customInput","toCurrentLocaleFormat","viewBox","xmlns","d","websiteStringModeOfDelivery","certificateDescription","validateInputs","quantityRef","lengthRef","quantityInput","lengthInput","setCustomValidity","checkValidity","reportValidity","PanelSubmit","isLoading","setIsLoading","salesQuantity","isStandAlone","disableButton","renderGoogleAnalytics","product","name","articleName","category","breadcrumbs","campaignProduct","isCampaignProduct","googleAnalyticsAddToCart","LoaderBlockContent","renderGrandTotal","grandTotal","onClick","timingLabel","console","time","post","data","then","response","json","miniCart","document","getElementsByClassName","classList","remove","receive","_objectSpread","addedProduct","finally","timeEnd","close","updateCustomizedMessage","addToCart","ConfiguratorStock","onHandModel","StockDetails","variantSystemId","stockArticle","articleWeight","articleFactorKg","ConfiguratorProductDetails","useLongName","longName","longArticleName","imgUrl","articleImageURL","isEnvironmentalFriendly","isLoggedIn","src","alt","GeneralPane","closeIcon","PanelGoodsMarking","Certificate","PanelBlasting","updateSetting","values","setValues","toggle","setToggle","setBlastingColorCode","colorCode","blastingDetails","colors","color","c","thickness","thicknessOptions","blastPaintCode","isPainting","getColorType","getSelectedBlastingSize","colorType","selectedColor","undefined","selectedBlastCode1","allowBlasting","allowPainting","getSelectedText","toLowerCase","replace","innerIndex","checked","setThickness","thicknessName","getBlastingPaintCode","PanelMarking","IsPopup","cuttingDetail","cuttingDetails","x","marking","workPhaseMarkingText","setWorkPhaseMarkingText","drawingNumber","setDrawingNumber","workPhaseMarkingChargeNumber","setWorkPhaseMarkingChargeNumber","_useState7","_useState8","setGoodsMarking","inkjetIntegrationFlagIfCuttingOperation","setCuttingDetails","updateWorkPhaseMarkingText","updateDrawingsNumber","updateGoodsMarking","updateInkJetIntegrationFlag","ProductServiceBlasting","changeProductServiceTab","getCornerRules","shape","background","boxHeight","includes","ruleset","cornerA","cornerB","PanelCuttingImage","angleA","angleB","focusA","focusB","box","calculateCorner","corner","angle","result","calculateAngle","c4","c1","c2","c3","angleRad","toRadian","angle2Rad","sin","PI","getCornerPosition","getBasicBox","y","getCalcBox","calcBox","getBoxPath","getTextPosition","basicBox","m","cornerPosition","height","clipPath","cx","cy","r","fill","strokeWidth","textAnchor","PanelBeamCuttingSvgAlt","items","cutType","showAngleAerror","showAngleBerror","focusAngleA","focusAngleB","setState","code","cutCode","selectedItem","setSelectedItem","selectBeamType","updateMaxAngleA","_event$target","updateMaxAngleB","_event$target2","getCutAngle","fallback","propertyName","getPlaceHolderValue","getIconShapeIcon","left","right","setFocus","propName","boolValue","round","maxAngleA","maxAngleB","onFocus","PanelBeam","currentCutType","selectedBeamType","setSelectedBeamType","erpVariantId","setCutType","setTab","isCutValid","rule","cutTypes","cutAngleA","cutAngleB","error","getAllAnglesItems","selectedBeam","selectedBeamText","display","x1","y1","x2","y2","stroke","strokeDasharray","strokeDashoffset","change","property","getCutDescription","PanelCuttingLength","cuttingElementRef","cuttingAdd","handleClick","closest","querySelectorAll","forEach","detail","removeAttribute","addEventListener","removeEventListener","handleInputChangeOrBlur","field","addCutting","getRowWeight","accumulator","row","pcsUnit","kgUnit","calculateWeight","toleranceImage","minWidth","el","title","tabIndex","handleDelete","deleteCutting","TrashCan","colSpan","PlusIcon","reduce","PanelCoilFoiling","foilingOptions","coilInfo","getSelectedFoilingCoil","coilDetails","coil","foilingCoils","Object","entries","handleOptionChange","setCoilDetails","PanelCoilPacking","packingOptions","getSelectedPackingCoil","packingCoils","checkboxes","coils","standard","radioButtons","PanelCoilBase","coilAdd","addCoil","handleInputChange","isCoilLengthValid","tolerance","maxHeightCoils","maxWeightCoils","deleteCoil","ProductServiceCutting","isCoil","ProductServiceSwell","ModeSelection","tab","text","ProductionPane","selectedProductServiceTab","closeDialogIcon","ConfiguratorBase","ConfiguratorLoadingState","ConfiguratorTabs","isConfigurable","changeTab","daysInNumber","getDay","currentDate","slice","getMonth","getYear","currentMonthDay","getDate"],"sourceRoot":""}