door_models 5.0.4 → 5.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs.js","sources":["../src/lib/context/DoorContext.tsx","../src/lib/components/DoorModels.tsx","../src/lib/components/DoorConfigurator.tsx"],"sourcesContent":["import React, {\n createContext,\n useContext,\n useState,\n useEffect,\n useCallback,\n} from \"react\";\n\nimport { availableMaterials } from \"../components/DoorModels\";\ntype MaterialName = keyof typeof availableMaterials;\n// --- Type Definitions to Match JSON Structure ---\n\ntype DoorType = {\n doorMaterial: string;\n doorWidth: number;\n doorHeight: number;\n theDoorDepth: number;\n doorPivot: string;\n doorOpening: string;\n};\n\ntype DoorFrameType = {\n frameMaterial: string;\n doorStopMaterial?: string;\n gasketMaterial: string;\n hingeMaterial: string;\n glassMaterial?: string;\n frameDepth: number;\n topThk: string;\n sidesThk: string;\n notchDepth: string;\n notchWidth: string;\n doorStopWidth: number;\n doorStopDepth: number;\n doorStopOffset: string;\n notchposition: number;\n gasketWidth: number;\n gasketDepth: number;\n secondDoorStopWidth: number;\n secondDoorStopDepth: number;\n secondDoorStopOffset: number;\n};\n\ntype InteriorFanlightType = {\n visible: boolean;\n height: number;\n material: string;\n};\n\ntype ExteriorFanlightType = {\n visible: boolean;\n height: number;\n depth: number;\n material: string;\n};\n\ntype OcculusType = {\n visible: boolean;\n infillVisible: boolean;\n x1: number;\n x2: number;\n y1: number;\n y2: number;\n material: string;\n depth: number;\n};\n\ntype CoverPanelType = {\n visible: boolean;\n width: number;\n height: number;\n depth: number;\n material: string;\n};\n\ntype FrameAndDoorSettings = Partial<DoorFrameType> & { doorDepth?: number };\ntype GlassType = {\n visible: boolean;\n material: string;\n depth: number;\n};\n\n// --- Main Context Type ---\ntype ConfiguratorContextType = {\n is2D: boolean;\n setIs2D: React.Dispatch<React.SetStateAction<boolean>>;\n isPlaneVisible: boolean;\n setIsPlaneVisible: React.Dispatch<React.SetStateAction<boolean>>;\n isFrameVisible: boolean;\n setIsFrameVisible: React.Dispatch<React.SetStateAction<boolean>>;\n cpid: string;\n setCpid: React.Dispatch<React.SetStateAction<string>>;\n door: DoorType;\n setDoor: React.Dispatch<React.SetStateAction<DoorType>>;\n doorFrame: DoorFrameType;\n setDoorFrame: React.Dispatch<React.SetStateAction<DoorFrameType>>;\n interiorFanlight: InteriorFanlightType;\n setInteriorFanlight: React.Dispatch<\n React.SetStateAction<InteriorFanlightType>\n >;\n exteriorFanlight: ExteriorFanlightType;\n setExteriorFanlight: React.Dispatch<\n React.SetStateAction<ExteriorFanlightType>\n >;\n exteriorFanlightType: string;\n setExteriorFanlightType: React.Dispatch<React.SetStateAction<string>>;\n occulus: OcculusType;\n setOcculus: React.Dispatch<React.SetStateAction<OcculusType>>;\n frontCoverPanel: CoverPanelType;\n setFrontCoverPanel: React.Dispatch<React.SetStateAction<CoverPanelType>>;\n backCoverPanel: CoverPanelType;\n setBackCoverPanel: React.Dispatch<React.SetStateAction<CoverPanelType>>;\n glass: GlassType;\n setGlass: React.Dispatch<React.SetStateAction<GlassType>>;\n frameType: string;\n setFrameType: React.Dispatch<React.SetStateAction<string>>;\n bodyType: string;\n setBodyType: React.Dispatch<React.SetStateAction<string>>;\n totalHeight: number;\n setTotalHeight: React.Dispatch<React.SetStateAction<number>>;\n totalWidth: number;\n setTotalWidth: React.Dispatch<React.SetStateAction<number>>;\n handleParseCpid: (cpidToParse: string) => void;\n // --- States for Test Materials ---\n testDoorMaterial: string;\n setTestDoorMaterial: React.Dispatch<React.SetStateAction<string>>;\n testFrameMaterial: string;\n setTestFrameMaterial: React.Dispatch<React.SetStateAction<string>>;\n testGasketMaterial: string;\n setTestGasketMaterial: React.Dispatch<React.SetStateAction<string>>;\n testInteriorFanlightMaterial: string;\n setTestInteriorFanlightMaterial: React.Dispatch<React.SetStateAction<string>>;\n testExteriorFanlightMaterial: string;\n setTestExteriorFanlightMaterial: React.Dispatch<React.SetStateAction<string>>;\n testOcculusInfillMaterial: string;\n setTestOcculusInfillMaterial: React.Dispatch<React.SetStateAction<string>>;\n testGlassInfillMaterial: string;\n setTestGlassInfillMaterial: React.Dispatch<React.SetStateAction<string>>;\n testDoorStopMaterial: string;\n setTestDoorStopMaterial: React.Dispatch<React.SetStateAction<string>>;\n testHingeMaterial: string;\n setTestHingeMaterial: React.Dispatch<React.SetStateAction<string>>;\n testFrontCoverPanelMaterial: string;\n setTestFrontCoverPanelMaterial: React.Dispatch<React.SetStateAction<string>>;\n testBackCoverPanelMaterial: string;\n setTestBackCoverPanelMaterial: React.Dispatch<React.SetStateAction<string>>;\n glassVisible: boolean;\n setGlassVisible: React.Dispatch<React.SetStateAction<boolean>>;\n glassDepth: number;\n setGlassDepth: React.Dispatch<React.SetStateAction<number>>;\n};\n\nconst ConfiguratorContext = createContext<ConfiguratorContextType | undefined>(\n undefined\n);\n\ntype ConfiguratorProviderProps = {\n children: React.ReactNode;\n initialIs2D?: boolean;\n};\n\nexport const ConfiguratorProvider = ({\n children,\n initialIs2D = false,\n}: ConfiguratorProviderProps) => {\n const [is2D, setIs2D] = useState<boolean>(initialIs2D);\n const [isPlaneVisible, setIsPlaneVisible] = useState<boolean>(false);\n const [isFrameVisible, setIsFrameVisible] = useState<boolean>(true);\n const [cpid, setCpid] = useState<string>(\"\");\n const [totalHeight, setTotalHeight] = useState<number>(2700);\n const [totalWidth, setTotalWidth] = useState<number>(974);\n const [glassVisible, setGlassVisible] = useState(false);\n const [glassDepth, setGlassDepth] = useState(8);\n const [door, setDoor] = useState<DoorType>({\n doorMaterial: \"door_material\",\n doorWidth: 0,\n doorHeight: 0,\n theDoorDepth: 40,\n doorPivot: \"left\",\n doorOpening: \"out\",\n });\n const [doorFrame, setDoorFrame] = useState<DoorFrameType>({\n frameMaterial: \"doorFrame_material\",\n doorStopMaterial: \"doorStop_material\",\n gasketMaterial: \"gasket_material\",\n hingeMaterial: \"hinge_material\",\n glassMaterial: \"glass_material\",\n frameDepth: 103,\n topThk: \"20mm\",\n sidesThk: \"20mm\",\n doorStopOffset: \"30mm\",\n doorStopWidth: 20,\n doorStopDepth: 13,\n notchWidth: \"20mm\",\n notchDepth: \"40mm\",\n notchposition: 0.01,\n gasketDepth: 5,\n gasketWidth: 5,\n secondDoorStopWidth: 20,\n secondDoorStopDepth: 30,\n secondDoorStopOffset: 13,\n });\n const [interiorFanlight, setInteriorFanlight] =\n useState<InteriorFanlightType>({\n visible: false,\n height: 300,\n material: \"interiorFanlight_material\",\n });\n const [exteriorFanlight, setExteriorFanlight] =\n useState<ExteriorFanlightType>({\n visible: false,\n height: 300,\n depth: 60,\n material: \"exteriorFanlight_material\",\n });\n const [occulus, setOcculus] = useState<OcculusType>({\n visible: false,\n infillVisible: true,\n x1: 150,\n x2: 150,\n y1: 150,\n y2: 150,\n material: \"infill_material\",\n depth: 20,\n });\n const [frontCoverPanel, setFrontCoverPanel] = useState<CoverPanelType>({\n visible: false,\n width: 73,\n height: 2200,\n depth: 12,\n material: \"front_cover_material\",\n });\n const [backCoverPanel, setBackCoverPanel] = useState<CoverPanelType>({\n visible: false,\n width: 73,\n height: 2200,\n depth: 12,\n material: \"back_cover_material\",\n });\n const [glass, setGlass] = useState<GlassType>({\n visible: false,\n material: \"infill_material\",\n depth: 20,\n });\n const [frameType, setFrameType] = useState<string>(\"AF20_40\");\n const [bodyType, setBodyType] = useState<string>(\"40\");\n const [exteriorFanlightType, setExteriorFanlightType] =\n useState<string>(\"WPFL\");\n const [testDoorMaterial, setTestDoorMaterial] = useState<string>(\"brown\");\n const [testFrameMaterial, setTestFrameMaterial] = useState<string>(\"black\");\n const [testGasketMaterial, setTestGasketMaterial] =\n useState<string>(\"darkgrey\");\n const [testInteriorFanlightMaterial, setTestInteriorFanlightMaterial] =\n useState<string>(\"grey\");\n const [testExteriorFanlightMaterial, setTestExteriorFanlightMaterial] =\n useState<string>(\"metal\");\n const [testOcculusInfillMaterial, setTestOcculusInfillMaterial] =\n useState<string>(\"glass\");\n const [testGlassInfillMaterial, setTestGlassInfillMaterial] =\n useState<string>(\"glass\");\n const [testDoorStopMaterial, setTestDoorStopMaterial] =\n useState<string>(\"black\");\n const [testHingeMaterial, setTestHingeMaterial] = useState<string>(\"metal\");\n const [testFrontCoverPanelMaterial, setTestFrontCoverPanelMaterial] =\n useState<string>(\"aluminum\");\n const [testBackCoverPanelMaterial, setTestBackCoverPanelMaterial] =\n useState<string>(\"aluminum\");\n\n //\n const [parseMessage, setParseMessage] = useState({ type: \"\", text: \"\" });\n\n useEffect(() => {\n setIs2D(initialIs2D);\n }, [initialIs2D]);\n\n const handleParseCpid = useCallback(\n cpidToParse => {\n const showMessage = (text, type = \"error\") => {\n setParseMessage({ text, type });\n setTimeout(() => setParseMessage({ text: \"\", type: \"\" }), 4000);\n };\n\n if (!cpidToParse || !cpidToParse.trim().startsWith(\"P_\")) {\n showMessage(\"Invalid format: CPID must start with 'P_'.\");\n return;\n }\n\n const parts = cpidToParse.trim().split(\"_\");\n if (parts.length < 4) {\n showMessage(\"Invalid format: Not enough parts in CPID.\");\n return;\n }\n\n const newConfig = {\n fanlightVisible: false,\n fanlightType: \"WPFL\",\n interiorFanlightVisible: false,\n occulusVisible: false,\n frameType: \"\",\n bodyType: \"\",\n };\n let currentIndex = 1;\n\n // Door Type\n if (parts[currentIndex] === \"SD\") {\n currentIndex++;\n } else {\n showMessage(\"Unsupported Door Type: Only 'SD' is supported.\");\n return;\n }\n\n //Fanlight Type\n const fanlightPart = parts[currentIndex];\n const validFanlights = [\"WPFL\", \"ALDGFL\", \"ALSGFL\"];\n if (fanlightPart === \"FH\") {\n newConfig.fanlightVisible = false;\n currentIndex++;\n } else if (validFanlights.includes(fanlightPart)) {\n newConfig.fanlightVisible = true;\n newConfig.fanlightType = fanlightPart;\n currentIndex++;\n } else {\n showMessage(`Invalid Fanlight Type: '${fanlightPart}'.`);\n return;\n }\n\n // Frame and Body Type\n const validSimpleFrameTypes = [\n \"AF20\",\n \"AF40\",\n \"WF\",\n \"MXF\",\n \"MXCAF\",\n \"NOF\",\n ];\n const validBodyTypes = [\n \"40\",\n \"50\",\n \"FLI\",\n \"100\",\n \"WDG100\",\n \"SG8\",\n \"SG10\",\n \"SG12\",\n ];\n\n let framePart = parts[currentIndex];\n let bodyPartRaw = parts[currentIndex + 1] || \"\";\n let frameFound = false;\n\n if (`${framePart}_${bodyPartRaw}` === \"WDGF_WDG100\") {\n newConfig.frameType = \"WDGF_WDG100\";\n newConfig.bodyType = \"WDG100\";\n currentIndex += 2;\n frameFound = true;\n } else if (validSimpleFrameTypes.includes(framePart)) {\n let tempBody = bodyPartRaw.replace(\"OCC\", \"\");\n\n if (validBodyTypes.includes(tempBody)) {\n newConfig.frameType =\n framePart === \"NOF\" ? \"NOF\" : `${framePart}_${tempBody}`;\n\n newConfig.bodyType = tempBody;\n\n if (bodyPartRaw.endsWith(\"OCC\")) {\n newConfig.occulusVisible = true;\n }\n currentIndex += 2;\n frameFound = true;\n }\n }\n\n if (!frameFound) {\n showMessage(\n `Invalid Frame/Body combination starting with '${framePart}'.`\n );\n return;\n }\n\n for (let i = currentIndex; i < parts.length; i++) {\n if (parts[i] === \"IFL\") {\n newConfig.interiorFanlightVisible = true;\n } else if (parts[i] === \"OCC\") {\n newConfig.occulusVisible = true;\n }\n }\n\n // Apply final configuration\n setFrameType(newConfig.frameType);\n setBodyType(newConfig.bodyType);\n setExteriorFanlight(prev => ({\n ...prev,\n visible: newConfig.fanlightVisible,\n }));\n if (newConfig.fanlightVisible) {\n setExteriorFanlightType(newConfig.fanlightType);\n }\n setInteriorFanlight(prev => ({\n ...prev,\n visible: newConfig.interiorFanlightVisible,\n }));\n setOcculus(prev => ({ ...prev, visible: newConfig.occulusVisible }));\n showMessage(\"Configuration Applied!\", \"success\");\n },\n [\n setBodyType,\n setExteriorFanlight,\n setExteriorFanlightType,\n setFrameType,\n setInteriorFanlight,\n setOcculus,\n ]\n );\n\n // --- BodyType Effect ---\n useEffect(() => {\n let newDoorDepth = 40;\n let newMaterial = \"brown\";\n\n switch (bodyType) {\n case \"50\":\n newDoorDepth = 50;\n break;\n case \"SG8\":\n newDoorDepth = 8;\n newMaterial = \"glass\";\n break;\n case \"SG10\":\n newDoorDepth = 10;\n newMaterial = \"glass\";\n break;\n case \"SG12\":\n newDoorDepth = 12;\n newMaterial = \"glass\";\n break;\n }\n\n setDoor(prev => ({ ...prev, theDoorDepth: newDoorDepth }));\n setTestDoorMaterial(newMaterial);\n }, [bodyType]);\n\n // --- FrameType Effect ---\n useEffect(() => {\n setIsFrameVisible(frameType !== \"NOF\");\n\n setGlassVisible(false);\n\n let newSettings: FrameAndDoorSettings = {};\n\n let lookupKey = frameType;\n if (frameType.startsWith(\"AF20_SG\")) {\n lookupKey = \"AF20_40\";\n } else if (frameType.startsWith(\"AF40_SG\")) {\n lookupKey = \"AF40_40\";\n }\n\n switch (lookupKey) {\n case \"NOF\":\n newSettings = {\n topThk: \"0mm\",\n sidesThk: \"0mm\",\n frameDepth: 0,\n };\n break;\n case \"AF20_40\":\n newSettings = {\n frameDepth: 103,\n topThk: \"20mm\",\n sidesThk: \"20mm\",\n doorStopOffset: \"42mm\",\n doorStopWidth: 20,\n doorStopDepth: 13,\n notchWidth: \"20mm\",\n notchDepth: \"40mm\",\n notchposition: 0.01,\n gasketDepth: 5,\n gasketWidth: 5,\n };\n if (frameType === \"AF20_40\") {\n newSettings.doorDepth = 40;\n }\n break;\n case \"AF20_50\":\n newSettings = {\n doorDepth: 50,\n frameDepth: 103,\n topThk: \"20mm\",\n sidesThk: \"20mm\",\n doorStopOffset: \"30mm\",\n doorStopWidth: 20,\n doorStopDepth: 13,\n notchWidth: \"20mm\",\n notchDepth: \"40mm\",\n notchposition: 0.01,\n gasketDepth: 5,\n gasketWidth: 5,\n };\n break;\n case \"AF40_40\":\n newSettings = {\n frameDepth: 103,\n topThk: \"40mm\",\n sidesThk: \"40mm\",\n doorStopOffset: \"42mm\",\n doorStopWidth: 20,\n doorStopDepth: 13,\n notchWidth: \"20mm\",\n notchDepth: \"40mm\",\n notchposition: 0.01,\n gasketDepth: 5,\n gasketWidth: 5,\n };\n if (frameType === \"AF40_40\") {\n newSettings.doorDepth = 40;\n }\n break;\n case \"AF40_50\":\n newSettings = {\n doorDepth: 50,\n frameDepth: 103,\n topThk: \"40mm\",\n sidesThk: \"40mm\",\n doorStopOffset: \"30mm\",\n doorStopWidth: 20,\n doorStopDepth: 13,\n notchWidth: \"20mm\",\n notchDepth: \"40mm\",\n notchposition: 0.01,\n gasketDepth: 5,\n gasketWidth: 5,\n };\n break;\n case \"WF_40\":\n newSettings = {\n doorDepth: 39.6,\n frameDepth: 103,\n topThk: \"31.6mm\",\n sidesThk: \"31.6mm\",\n doorStopOffset: \"0mm\",\n doorStopWidth: 16.4,\n doorStopDepth: 58.4,\n notchWidth: \"20mm\",\n notchDepth: \"40mm\",\n notchposition: 0.01,\n gasketDepth: 5,\n gasketWidth: 5,\n };\n break;\n case \"WF_50\":\n newSettings = {\n doorDepth: 51.6,\n frameDepth: 103,\n topThk: \"31.6mm\",\n sidesThk: \"31.6mm\",\n doorStopOffset: \"0mm\",\n doorStopWidth: 16,\n doorStopDepth: 46.4,\n notchWidth: \"20mm\",\n notchDepth: \"40mm\",\n notchposition: 0.01,\n gasketDepth: 5,\n gasketWidth: 5,\n };\n break;\n case \"WF_100\":\n newSettings = {\n doorDepth: 102,\n frameDepth: 102,\n topThk: \"52mm\",\n sidesThk: \"52mm\",\n doorStopOffset: \"17.6mm\",\n doorStopWidth: 16.4,\n doorStopDepth: 44.8,\n notchWidth: \"16mm\",\n notchDepth: \"66.5mm\",\n notchposition: 0.02,\n gasketDepth: 5,\n gasketWidth: 5,\n secondDoorStopWidth: 29,\n secondDoorStopDepth: 17.6,\n secondDoorStopOffset: 0,\n };\n break;\n case \"WF_FLI\":\n newSettings = {\n doorDepth: 51,\n frameDepth: 102,\n topThk: \"52mm\",\n sidesThk: \"52mm\",\n doorStopOffset: \"17.4mm\",\n doorStopWidth: 16.4,\n doorStopDepth: 34,\n notchWidth: \"14mm\",\n notchDepth: \"66mm\",\n notchposition: 0.02,\n gasketDepth: 5,\n gasketWidth: 5,\n secondDoorStopWidth: 29,\n secondDoorStopDepth: 17.6,\n secondDoorStopOffset: 0,\n };\n break;\n case \"WDGF_WDG100\":\n newSettings = {\n doorDepth: 86,\n frameDepth: 86,\n topThk: \"50mm\",\n sidesThk: \"50mm\",\n doorStopOffset: \"34mm\",\n doorStopWidth: 13,\n doorStopDepth: 30,\n notchWidth: \"14mm\",\n notchDepth: \"66mm\",\n notchposition: 0.02,\n gasketDepth: 4.5,\n gasketWidth: 5,\n secondDoorStopWidth: 23,\n secondDoorStopDepth: 30,\n secondDoorStopOffset: 13,\n };\n setGlassVisible(true);\n break;\n case \"MXF_40\":\n newSettings = {\n doorDepth: 38,\n frameDepth: 103,\n topThk: \"18mm\",\n sidesThk: \"18mm\",\n doorStopOffset: \"45mm\",\n doorStopWidth: 15,\n doorStopDepth: 15,\n notchWidth: \"20mm\",\n notchDepth: \"40mm\",\n notchposition: 0.01,\n gasketDepth: 5,\n gasketWidth: 5,\n };\n break;\n case \"MXF_50\":\n newSettings = {\n doorDepth: 50,\n frameDepth: 103,\n topThk: \"18.2mm\",\n sidesThk: \"18.2mm\",\n doorStopOffset: \"33mm\",\n doorStopWidth: 15,\n doorStopDepth: 15,\n notchWidth: \"20mm\",\n notchDepth: \"40mm\",\n notchposition: 0.01,\n gasketDepth: 5,\n gasketWidth: 5,\n };\n break;\n case \"MXCAF_40\":\n newSettings = {\n doorDepth: 38,\n frameDepth: 103,\n topThk: \"18mm\",\n sidesThk: \"18mm\",\n doorStopOffset: \"45mm\",\n doorStopWidth: 15,\n doorStopDepth: 15,\n notchWidth: \"20mm\",\n notchDepth: \"40mm\",\n notchposition: 0.01,\n gasketDepth: 5,\n gasketWidth: 5,\n };\n break;\n case \"MXCAF_50\":\n newSettings = {\n doorDepth: 50,\n frameDepth: 103,\n topThk: \"18.2mm\",\n sidesThk: \"18.2mm\",\n doorStopOffset: \"33mm\",\n doorStopWidth: 15,\n doorStopDepth: 15,\n notchWidth: \"20mm\",\n notchDepth: \"40mm\",\n notchposition: 0.01,\n gasketDepth: 5,\n gasketWidth: 5,\n };\n break;\n default:\n break;\n }\n\n const isMxCaf = frameType.startsWith(\"MXCAF\");\n setFrontCoverPanel(prev => ({ ...prev, visible: isMxCaf }));\n setBackCoverPanel(prev => ({ ...prev, visible: isMxCaf }));\n\n const { doorDepth, ...newFrameSettings } = newSettings;\n setDoorFrame(prev => ({ ...prev, ...newFrameSettings }));\n\n if (doorDepth !== undefined) {\n setDoor(prev => ({ ...prev, theDoorDepth: doorDepth }));\n }\n }, [frameType]);\n\n // --- Exterior Fanlight Logic ---\n useEffect(() => {\n if (!exteriorFanlight.visible) return;\n switch (exteriorFanlightType) {\n case \"WPFL\":\n setExteriorFanlight(prev => ({ ...prev, depth: doorFrame.frameDepth }));\n setTestExteriorFanlightMaterial(\"metal\");\n break;\n case \"ALDGL\":\n setExteriorFanlight(prev => ({ ...prev, depth: doorFrame.frameDepth }));\n setTestExteriorFanlightMaterial(\"glass\");\n break;\n case \"ALSGL\":\n setExteriorFanlight(prev => ({ ...prev, depth: 40 }));\n setTestExteriorFanlightMaterial(\"glass\");\n break;\n default:\n break;\n }\n }, [\n exteriorFanlight.visible,\n exteriorFanlightType,\n doorFrame.frameDepth,\n setTestExteriorFanlightMaterial,\n setExteriorFanlight,\n ]);\n\n useEffect(() => {\n const topThkValue = parseInt(doorFrame.topThk) || 0;\n const exteriorFanlightHeight = exteriorFanlight.visible\n ? exteriorFanlight.height\n : 0;\n const newDoorHeight = totalHeight - topThkValue - exteriorFanlightHeight;\n\n setDoor(prevDoor => ({\n ...prevDoor,\n doorHeight: newDoorHeight > 0 ? newDoorHeight : 0,\n }));\n }, [\n totalHeight,\n doorFrame.topThk,\n exteriorFanlight.visible,\n exteriorFanlight.height,\n ]);\n\n useEffect(() => {\n const sidesThkValue = parseInt(doorFrame.sidesThk) || 0;\n const newDoorWidth = totalWidth - sidesThkValue * 2;\n setDoor(prevDoor => ({\n ...prevDoor,\n doorWidth: newDoorWidth > 0 ? newDoorWidth : 0,\n }));\n }, [totalWidth, doorFrame.sidesThk]);\n\n return (\n <ConfiguratorContext.Provider\n value={{\n is2D,\n setIs2D,\n isPlaneVisible,\n setIsPlaneVisible,\n isFrameVisible,\n setIsFrameVisible,\n cpid,\n setCpid,\n door,\n setDoor,\n doorFrame,\n setDoorFrame,\n interiorFanlight,\n setInteriorFanlight,\n exteriorFanlight,\n setExteriorFanlight,\n occulus,\n setOcculus,\n frontCoverPanel,\n setFrontCoverPanel,\n backCoverPanel,\n setBackCoverPanel,\n glass,\n setGlass,\n frameType,\n setFrameType,\n bodyType,\n setBodyType,\n totalHeight,\n setTotalHeight,\n totalWidth,\n setTotalWidth,\n exteriorFanlightType,\n setExteriorFanlightType,\n testDoorMaterial,\n setTestDoorMaterial,\n testFrameMaterial,\n setTestFrameMaterial,\n testGasketMaterial,\n setTestGasketMaterial,\n testInteriorFanlightMaterial,\n setTestInteriorFanlightMaterial,\n testExteriorFanlightMaterial,\n setTestExteriorFanlightMaterial,\n testOcculusInfillMaterial,\n setTestOcculusInfillMaterial,\n testGlassInfillMaterial,\n setTestGlassInfillMaterial,\n testDoorStopMaterial,\n setTestDoorStopMaterial,\n testHingeMaterial,\n setTestHingeMaterial,\n testFrontCoverPanelMaterial,\n setTestFrontCoverPanelMaterial,\n testBackCoverPanelMaterial,\n setTestBackCoverPanelMaterial,\n glassVisible,\n setGlassVisible,\n glassDepth,\n setGlassDepth,\n handleParseCpid,\n }}\n >\n {children}\n </ConfiguratorContext.Provider>\n );\n};\n\nexport const useConfigurator = () => {\n const context = useContext(ConfiguratorContext);\n if (!context) {\n throw new Error(\n \"useConfigurator must be used within a ConfiguratorProvider\"\n );\n }\n return context;\n};\n","import React, { useState, useMemo, useEffect } from \"react\";\nimport { Geometry, Base, Subtraction, Addition } from \"@react-three/csg\";\nimport { useConfigurator } from \"../context/DoorContext\";\nimport { useSpring, a } from \"@react-spring/three\";\nimport * as THREE from \"three\";\nimport { mergeBufferGeometries } from \"three/examples/jsm/utils/BufferGeometryUtils\";\nimport { RoundedBox } from \"@react-three/drei\";\n\nconst placeholderMaterial = new THREE.MeshStandardMaterial({\n color: \"#cccccc\",\n roughness: 0.8,\n});\n\nconst placeholderMaterialforFrames = new THREE.MeshStandardMaterial({\n color: \"#000\",\n roughness: 0.8,\n});\n\nexport const availableMaterials = {\n black: new THREE.MeshStandardMaterial({ color: \"#000000\" }),\n metal: new THREE.MeshStandardMaterial({\n color: \"#0xaaaaaa\",\n metalness: 1.0,\n roughness: 0.4,\n }),\n darkgrey: new THREE.MeshStandardMaterial({ color: \"#5e5e5e\" }),\n grey: new THREE.MeshStandardMaterial({ color: \"#cccccc\" }),\n yellow: new THREE.MeshStandardMaterial({ color: \"#ffff00\" }),\n darkBrown: new THREE.MeshStandardMaterial({ color: \"#a0522d\" }),\n brown: new THREE.MeshStandardMaterial({ color: \"#d2b48c\" }),\n glass: new THREE.MeshStandardMaterial({\n color: \"#ffffff\",\n roughness: 0.1,\n transparent: true,\n opacity: 0.7,\n }),\n aluminum: new THREE.MeshStandardMaterial({\n color: \"#abb0aa\",\n metalness: 0.8,\n roughness: 0.5,\n envMapIntensity: 1.2,\n }),\n\n aluminumBrighter: new THREE.MeshStandardMaterial({\n color: \"#cdcdcd\",\n metalness: 0.8,\n roughness: 0.5,\n envMapIntensity: 1.2,\n }),\n\n aluminumExtraBrighter: new THREE.MeshStandardMaterial({\n color: \"#ececec\",\n metalness: 0.8,\n roughness: 0.5,\n envMapIntensity: 1.2,\n }),\n silver: new THREE.MeshStandardMaterial({\n color: \"#c0c0c0\",\n metalness: 1.0,\n roughness: 0.2,\n }),\n\n gold: new THREE.MeshStandardMaterial({\n color: \"#ffd700\",\n metalness: 1.0,\n roughness: 0.3,\n }),\n\n diamond: new THREE.MeshStandardMaterial({\n color: \"#e0f7fa\",\n metalness: 0.9,\n roughness: 0.05,\n transparent: true,\n opacity: 0.9,\n envMapIntensity: 1.5,\n }),\n};\n\n// Custom hook for door handle calculations\nfunction StandardHandle({\n position,\n doorDepthM,\n doorPivot,\n frameType, // 👈\n}: {\n position: [number, number, number];\n doorDepthM: number;\n doorPivot: \"left\" | \"right\";\n frameType: string;\n}) {\n // --- Base Dimensions ---\n const roseRadius = 0.025;\n\n // --- Thickness ---\n // default 5mm, but 8mm + 1–2mm if WDG frame\n const roseThickness =\n frameType === \"WDGF_WDG100\"\n ? 0.008 + 0.0015 // average: 9.5mm\n : 0.005; // 5mm default\n\n const handleRadius = 0.009;\n const handleLength = 0.12;\n\n // face offset based on thickness\n const faceZ = doorDepthM / 2 + roseThickness / 2;\n const connectorLength = handleLength - 0.08;\n\n const cornerFrontZ = faceZ + roseThickness + connectorLength;\n const cornerBackZ = -faceZ - roseThickness - connectorLength;\n const roseGapY = 0.012;\n\n return (\n <group position={position}>\n {/* Roses + keyholes */}\n {[faceZ, -faceZ].map((z, i) => (\n <React.Fragment key={i}>\n {frameType === \"WDGF_WDG100\" ? (\n // --- Capsule rose ---\n <group position-z={z}>\n {/* Center rectangle */}\n <mesh\n material={availableMaterials.aluminum}\n castShadow\n receiveShadow\n >\n <boxGeometry\n args={[roseRadius * 2, roseRadius * 2, roseThickness]}\n />\n </mesh>\n {/* Top rounded end */}\n <mesh\n position-y={roseRadius}\n rotation={[Math.PI / 2, Math.PI / 2, 0]}\n material={availableMaterials.aluminum}\n castShadow\n receiveShadow\n >\n <cylinderGeometry\n args={[\n roseRadius,\n roseRadius,\n roseThickness,\n 32,\n 1,\n false,\n 0,\n Math.PI,\n ]}\n />\n </mesh>\n {/* Bottom rounded end */}\n <mesh\n position-y={-roseRadius}\n rotation={[-Math.PI / 2, Math.PI / 2, 0]}\n material={availableMaterials.aluminum}\n castShadow\n receiveShadow\n >\n <cylinderGeometry\n args={[\n roseRadius,\n roseRadius,\n roseThickness,\n 32,\n 1,\n false,\n 0,\n Math.PI,\n ]}\n />\n </mesh>\n </group>\n ) : (\n // --- Round rose ---\n <mesh\n rotation={[Math.PI / 2, 0, 0]}\n position-z={z}\n material={availableMaterials.aluminum}\n castShadow\n receiveShadow\n >\n <cylinderGeometry\n args={[roseRadius, roseRadius, roseThickness, 48]}\n />\n </mesh>\n )}\n\n {frameType === \"WDGF_WDG100\" ? (\n <group position-z={z} position-y={-(0.08 + roseGapY)}>\n {/* Center rectangle */}\n <mesh\n material={availableMaterials.aluminum}\n castShadow\n receiveShadow\n >\n <boxGeometry\n args={[\n (roseRadius - 0.008) * 2,\n (roseRadius - 0.008) * 2,\n roseThickness,\n ]}\n />\n </mesh>\n\n {/* Top rounded end */}\n <mesh\n position-y={roseRadius - 0.008}\n rotation={[Math.PI / 2, Math.PI / 2, 0]}\n material={availableMaterials.aluminum}\n castShadow\n receiveShadow\n >\n <cylinderGeometry\n args={[\n roseRadius - 0.008,\n roseRadius - 0.008,\n roseThickness,\n 32,\n 1,\n false,\n 0,\n Math.PI,\n ]}\n />\n </mesh>\n\n {/* Bottom rounded end */}\n <mesh\n position-y={-(roseRadius - 0.008)}\n rotation={[-Math.PI / 2, Math.PI / 2, 0]}\n material={availableMaterials.aluminum}\n castShadow\n receiveShadow\n >\n <cylinderGeometry\n args={[\n roseRadius - 0.008,\n roseRadius - 0.008,\n roseThickness,\n 32,\n 1,\n false,\n 0,\n Math.PI,\n ]}\n />\n </mesh>\n </group>\n ) : (\n <mesh\n rotation={[Math.PI / 2, 0, 0]}\n position-z={z}\n position-y={-(0.08 + roseGapY)}\n material={availableMaterials.aluminum}\n castShadow\n receiveShadow\n >\n <cylinderGeometry\n args={[roseRadius, roseRadius, roseThickness, 48]}\n />\n </mesh>\n )}\n\n <group\n position={[\n 0,\n -(0.08 + roseGapY), // 👈 same Y as small rose\n z + (z > 0 ? roseThickness : -roseThickness), // 👈 accounts for thickness\n ]}\n castShadow\n receiveShadow\n >\n <mesh\n rotation={[Math.PI / 2, 0, 0]}\n position={[0, 0.0075, 0]}\n material={availableMaterials.aluminumBrighter}\n >\n <cylinderGeometry args={[0.008, 0.008, roseThickness, 32]} />\n </mesh>\n <mesh\n position={[0, -0.0075, 0]}\n material={availableMaterials.aluminumBrighter}\n >\n <boxGeometry args={[0.008, 0.015, roseThickness]} />\n </mesh>\n </group>\n </React.Fragment>\n ))}\n\n {/* Handles (same as before)… */}\n <group scale={[doorPivot === \"left\" ? -1 : 1, 1, 1]}>\n {/* Front handle */}\n <group position={[0, 0, -0.01]}>\n <mesh\n position={[0, 0, faceZ + roseThickness + connectorLength / 2]}\n rotation={[Math.PI / 2, 0, 0]}\n castShadow\n receiveShadow\n material={availableMaterials.aluminum}\n >\n <cylinderGeometry\n args={[handleRadius, handleRadius, connectorLength, 48]}\n />\n </mesh>\n <mesh\n position={[0, 0, cornerFrontZ]}\n castShadow\n receiveShadow\n material={availableMaterials.aluminum}\n >\n <sphereGeometry args={[handleRadius, 32, 32]} />\n </mesh>\n <mesh\n position={[handleLength / 2, 0, cornerFrontZ]}\n rotation={[0, 0, Math.PI / 2]}\n castShadow\n receiveShadow\n material={availableMaterials.aluminum}\n >\n <cylinderGeometry\n args={[handleRadius, handleRadius, handleLength, 48]}\n />\n </mesh>\n </group>\n\n {/* Back handle */}\n <group position={[0, 0, 0.01]}>\n <mesh\n position={[0, 0, -faceZ - roseThickness - connectorLength / 2]}\n rotation={[Math.PI / 2, 0, 0]}\n castShadow\n receiveShadow\n material={availableMaterials.aluminum}\n >\n <cylinderGeometry\n args={[handleRadius, handleRadius, connectorLength, 48]}\n />\n </mesh>\n <mesh\n position={[0, 0, cornerBackZ]}\n castShadow\n receiveShadow\n material={availableMaterials.aluminum}\n >\n <sphereGeometry args={[handleRadius, 32, 32]} />\n </mesh>\n <mesh\n position={[handleLength / 2, 0, cornerBackZ]}\n rotation={[0, 0, Math.PI / 2]}\n castShadow\n receiveShadow\n material={availableMaterials.aluminum}\n >\n <cylinderGeometry\n args={[handleRadius, handleRadius, handleLength, 48]}\n />\n </mesh>\n </group>\n </group>\n </group>\n );\n}\n\nconst MergedPlate = ({ plateMaterial, roseThickness, faceZ }) => {\n const geometry = useMemo(() => {\n // Left half - sharp edges\n const leftHalf = new THREE.BoxGeometry(0.05, 0.24, roseThickness);\n leftHalf.translate(-0.025, 0, 0); // Center the left half\n\n const shape = new THREE.Shape();\n\n const width = 0.1;\n const height = 0.24;\n const radius = 0.01;\n\n shape.moveTo(-width / 2, -height / 2);\n shape.lineTo(-width / 2, height / 2);\n shape.lineTo(width / 2 - radius, height / 2);\n shape.absarc(\n width / 2 - radius,\n height / 2 - radius,\n radius,\n Math.PI / 2,\n 0,\n true\n );\n shape.lineTo(width / 2, -height / 2 + radius);\n shape.absarc(\n width / 2 - radius,\n -height / 2 + radius,\n radius,\n 0,\n -Math.PI / 2,\n true\n );\n shape.lineTo(-width / 2, -height / 2);\n\n const extrudeSettings = {\n steps: 2,\n depth: roseThickness,\n bevelEnabled: false,\n };\n\n return new THREE.ExtrudeGeometry(shape, extrudeSettings);\n }, [roseThickness]);\n\n return (\n <group position-z={faceZ}>\n <mesh\n geometry={geometry}\n material={plateMaterial}\n castShadow\n receiveShadow\n />\n </group>\n );\n};\n\nfunction GlassHandle({\n position,\n doorDepthM,\n doorPivot,\n}: {\n position: [number, number, number];\n doorDepthM: number;\n doorPivot: \"left\" | \"right\";\n}) {\n // --- Dimensions ---\n const roseRadius = 0.025;\n const roseThickness = 0.005;\n const handleRadius = 0.009;\n const handleLength = 0.12;\n const faceZ = doorDepthM / 2 + roseThickness / 2;\n const connectorLength = handleLength - 0.08;\n const cornerFrontZ = faceZ + roseThickness + connectorLength;\n const cornerBackZ = -faceZ - roseThickness - connectorLength;\n return (\n <group position={position}>\n {/* Backplate/Roses (both sides of glass door) */}\n {[faceZ, -faceZ].map((z, i) => (\n <React.Fragment key={i}>\n {/* Rose disc */}\n <mesh\n rotation={[Math.PI / 2, 0, 0]}\n position-z={z + (z > 0 ? roseThickness : -roseThickness) + 0.002}\n material={availableMaterials.aluminum}\n castShadow\n receiveShadow\n >\n <cylinderGeometry\n args={[roseRadius, roseRadius, roseThickness, 48]}\n />\n </mesh>\n\n {/* Keyhole shape (using r3f CSG instead of manual merge) */}\n <mesh\n position={[0, -0.08, z + (z > 0 ? roseThickness : -roseThickness)]}\n castShadow\n receiveShadow\n >\n {/* Circular part (rotated 90° on X) */}\n <mesh\n rotation={[Math.PI / 2, 0, 0]}\n position={[0, 0.0075, 0]}\n material={availableMaterials.aluminum}\n >\n <cylinderGeometry args={[0.008, 0.008, roseThickness, 32]} />\n </mesh>\n\n {/* Rectangular part (placed just below cylinder) */}\n <mesh\n position={[0, -0.0075, 0]}\n material={availableMaterials.aluminum}\n >\n <boxGeometry args={[0.008, 0.015, roseThickness]} />\n </mesh>\n </mesh>\n </React.Fragment>\n ))}\n\n {/* Handle rods */}\n <group scale-x={doorPivot === \"left\" ? -1 : 1}>\n {[faceZ, -faceZ].map((z, i) => (\n <MergedPlate\n key={`plate-${i}`}\n faceZ={z}\n plateMaterial={availableMaterials.aluminumExtraBrighter}\n roseThickness={roseThickness}\n />\n ))}\n {/* Front handle */}\n <group>\n {/* Horizontal cylinder */}\n <mesh\n position={[handleLength / 2, 0, faceZ + connectorLength]}\n rotation={[0, 0, Math.PI / 2]}\n material={availableMaterials.aluminum}\n castShadow\n receiveShadow\n >\n <cylinderGeometry\n args={[handleRadius, handleRadius, handleLength, 48]}\n />\n </mesh>\n {/* Vertical cylinder */}\n <mesh\n position={[0, 0, faceZ + connectorLength / 2]}\n rotation={[Math.PI / 2, 0, 0]}\n material={availableMaterials.aluminum}\n castShadow\n receiveShadow\n >\n <cylinderGeometry\n args={[handleRadius, handleRadius, connectorLength, 48]}\n />\n </mesh>\n {/* Corner sphere for radius effect */}\n <mesh\n position={[0, 0, faceZ + connectorLength]}\n material={availableMaterials.aluminum}\n castShadow\n receiveShadow\n >\n <sphereGeometry args={[handleRadius, 32, 32]} />\n </mesh>\n </group>\n\n {/* Back handle */}\n <group>\n {/* Horizontal cylinder */}\n <mesh\n position={[handleLength / 2, 0, -(faceZ + connectorLength)]}\n rotation={[0, 0, Math.PI / 2]}\n material={availableMaterials.aluminum}\n castShadow\n receiveShadow\n >\n <cylinderGeometry\n args={[handleRadius, handleRadius, handleLength, 48]}\n />\n </mesh>\n {/* Vertical cylinder */}\n <mesh\n position={[0, 0, -(faceZ + connectorLength / 2)]}\n rotation={[Math.PI / 2, 0, 0]}\n material={availableMaterials.aluminum}\n castShadow\n receiveShadow\n >\n <cylinderGeometry\n args={[handleRadius, handleRadius, connectorLength, 48]}\n />\n </mesh>\n {/* Corner sphere for radius effect */}\n <mesh\n position={[0, 0, -(faceZ + connectorLength)]}\n material={availableMaterials.aluminum}\n castShadow\n receiveShadow\n >\n <sphereGeometry args={[handleRadius, 32, 32]} />\n </mesh>\n </group>\n </group>\n </group>\n );\n}\n\nfunction DoorHandle({\n bodyType,\n handleX,\n handleHeightM,\n doorDepthM,\n doorPivot,\n}: {\n bodyType: string;\n handleX: number;\n handleHeightM: number;\n doorDepthM: number;\n doorPivot: \"left\" | \"right\";\n}) {\n const isSingleGlass = [\"SG8\", \"SG10\", \"SG12\"].includes(bodyType);\n const handlePos: [number, number, number] = [handleX, handleHeightM, 0];\n const frameType = useConfigurator().frameType;\n return isSingleGlass ? (\n <GlassHandle\n position={[handleX, handleHeightM, -0.0024]}\n doorDepthM={doorDepthM}\n doorPivot={doorPivot}\n />\n ) : (\n <StandardHandle\n position={handlePos}\n doorDepthM={doorDepthM}\n doorPivot={doorPivot}\n frameType={frameType}\n />\n );\n}\n\nfunction GlassHinge({\n position,\n pivot,\n frameSideWidth,\n doorDepthM,\n material,\n gasketMaterial,\n}) {\n const plateWidth = 130 / 1000;\n const plateHeight = 55 / 1000;\n const plateThickness = 8 / 1000;\n const gasketThickness = 1 / 1000;\n const pivotRadius = 10 / 1000;\n const pivotHeight = plateHeight;\n\n const sideMultiplier = pivot === \"left\" ? 1 : -1;\n\n const plateOffsetX = sideMultiplier * (plateWidth / 2 + frameSideWidth);\n\n const holeRadius = 10 / 1000;\n const holeSpacingX = 45 / 1000;\n\n return (\n <group position={position}>\n <mesh material={material} castShadow receiveShadow position-x={0.01}>\n <cylinderGeometry args={[pivotRadius, pivotRadius, pivotHeight, 32]} />\n </mesh>\n\n <group position-x={plateOffsetX}>\n {/* Back Plate */}\n <mesh\n position-z={-(doorDepthM / 2) - plateThickness / 2 - gasketThickness}\n material={material}\n castShadow\n receiveShadow\n >\n <boxGeometry args={[plateWidth, plateHeight, plateThickness]} />\n </mesh>\n {/* Back Gasket */}\n <mesh\n position-z={-(doorDepthM / 2) - gasketThickness / 2}\n material={gasketMaterial}\n castShadow\n receiveShadow\n >\n <boxGeometry args={[plateWidth, plateHeight, gasketThickness]} />\n </mesh>\n {/* Front Plate with Holes */}\n <mesh\n position-z={doorDepthM / 2 + plateThickness / 2 + gasketThickness}\n castShadow\n receiveShadow\n >\n <Geometry useGroups>\n <Base material={material}>\n <boxGeometry args={[plateWidth, plateHeight, plateThickness]} />\n </Base>\n {/* Left Hole */}\n <Subtraction\n position={[-sideMultiplier * (holeSpacingX / 2), 0, 0]}\n rotation={[Math.PI / 2, 0, 0]}\n >\n <cylinderGeometry\n args={[holeRadius, holeRadius, plateThickness + 0.01, 32]}\n />\n </Subtraction>\n {/* Right Hole */}\n <Subtraction\n position={[sideMultiplier * (holeSpacingX / 2), 0, 0]}\n rotation={[Math.PI / 2, 0, 0]}\n >\n <cylinderGeometry\n args={[holeRadius, holeRadius, plateThickness + 0.01, 32]}\n />\n </Subtraction>\n </Geometry>\n </mesh>\n\n {/* Front Gasket */}\n <mesh\n position-z={doorDepthM / 2 + gasketThickness / 2}\n material={gasketMaterial}\n castShadow\n receiveShadow\n >\n <boxGeometry args={[plateWidth, plateHeight, gasketThickness]} />\n </mesh>\n </group>\n </group>\n );\n}\n\nfunction DoorStopCuts({\n visible,\n width,\n height,\n stopWidth,\n stopDepth,\n stopPositionZ,\n centerZ,\n glassDepthOffset = 0,\n material,\n setName,\n}: DoorStopCutsProps) {\n if (!visible) return null;\n\n return (\n <>\n {/* Top cut only */}\n <Subtraction\n name={`cut-top-${setName}`}\n material={material}\n position={[\n 0,\n height / 2 - stopWidth / 2 + 0.0001,\n stopPositionZ - centerZ,\n ]}\n >\n <boxGeometry args={[width + 0.01, stopWidth, stopDepth + 0.01]} />\n </Subtraction>\n\n {/* Left cut */}\n <Subtraction\n name={`cut-left-${setName}`}\n material={material}\n position={[\n -width / 2 + stopWidth / 2 - 0.0001,\n 0,\n stopPositionZ - centerZ,\n ]}\n >\n <boxGeometry args={[stopWidth, height + 0.01, stopDepth + 0.01]} />\n </Subtraction>\n\n {/* Right cut */}\n <Subtraction\n name={`cut-right-${setName}`}\n material={material}\n position={[\n width / 2 - stopWidth / 2 + 0.0001,\n 0,\n stopPositionZ - centerZ,\n ]}\n >\n <boxGeometry args={[stopWidth, height + 0.01, stopDepth + 0.01]} />\n </Subtraction>\n </>\n );\n}\n\ntype DoorModelsProps = {\n doorName?: string;\n};\n\ntype DoorStopCutsProps = {\n visible: boolean;\n width: number;\n height: number;\n stopWidth: number;\n stopDepth: number;\n stopPositionZ: number;\n centerZ: number;\n glassDepthOffset?: number;\n material: THREE.Material;\n setName: string;\n};\n\nfunction DoorModels({ doorName }: DoorModelsProps) {\n const {\n is2D,\n totalWidth,\n totalHeight,\n isPlaneVisible,\n isFrameVisible,\n door,\n doorFrame,\n interiorFanlight,\n exteriorFanlight,\n occulus,\n glass,\n frontCoverPanel,\n backCoverPanel,\n frameType,\n bodyType,\n exteriorFanlightType,\n testDoorMaterial,\n testFrameMaterial,\n testGasketMaterial,\n testInteriorFanlightMaterial,\n testExteriorFanlightMaterial,\n testOcculusInfillMaterial,\n testGlassInfillMaterial,\n testDoorStopMaterial,\n testHingeMaterial,\n glassVisible,\n testFrontCoverPanelMaterial,\n testBackCoverPanelMaterial,\n glassDepth,\n handleParseCpid,\n } = useConfigurator();\n\n useEffect(() => {\n if (doorName) {\n handleParseCpid(doorName);\n }\n }, [doorName, handleParseCpid]);\n\n // here i get material names from context\n const { doorMaterial: doorMaterialName } = door;\n const {\n frameMaterial: frameMaterialName,\n gasketMaterial: gasketMaterialName,\n doorStopMaterial: doorStopMaterialName,\n hingeMaterial: hingeMaterialName,\n } = doorFrame;\n const { material: interiorFanlightMaterialName } = interiorFanlight;\n const { material: exteriorFanlightMaterialName } = exteriorFanlight;\n const { material: occulusInfillMaterialName } = occulus;\n const { material: glassInfillMaterialName } = glass;\n\n const { material: frontCoverPanelMaterialName } = frontCoverPanel;\n const { material: backCoverPanelMaterialName } = backCoverPanel;\n\n // --- Material Logic ---\n const doorMaterial = useMemo(\n () =>\n availableMaterials[testDoorMaterial] ||\n availableMaterials[doorMaterialName] ||\n placeholderMaterial,\n [testDoorMaterial, doorMaterialName]\n );\n const frameMaterial = useMemo(\n () =>\n availableMaterials[testFrameMaterial] ||\n availableMaterials[frameMaterialName] ||\n placeholderMaterialforFrames,\n [testFrameMaterial, frameMaterialName]\n );\n const gasketMaterial = useMemo(\n () =>\n availableMaterials[testGasketMaterial] ||\n availableMaterials[gasketMaterialName] ||\n new THREE.MeshStandardMaterial({ color: \"#111111\" }),\n [testGasketMaterial, gasketMaterialName]\n );\n\n const doorStopMaterial = useMemo(() => {\n return (\n availableMaterials[testDoorStopMaterial] ||\n availableMaterials[\n (doorStopMaterialName as keyof typeof availableMaterials) || \"\"\n ] ||\n frameMaterial\n );\n }, [testDoorStopMaterial, doorStopMaterialName, frameType, frameMaterial]);\n\n const interiorFanlightMaterial = useMemo(\n () =>\n availableMaterials[testInteriorFanlightMaterial] ||\n availableMaterials[interiorFanlightMaterialName] ||\n placeholderMaterial,\n [testInteriorFanlightMaterial, interiorFanlightMaterialName]\n );\n const exteriorFanlightMaterial = useMemo(\n () =>\n availableMaterials[testExteriorFanlightMaterial] ||\n availableMaterials[exteriorFanlightMaterialName] ||\n placeholderMaterial,\n [testExteriorFanlightMaterial, exteriorFanlightMaterialName]\n );\n const occulusInfillMaterial = useMemo(\n () =>\n availableMaterials[testOcculusInfillMaterial] ||\n availableMaterials[occulusInfillMaterialName] ||\n placeholderMaterial,\n [testOcculusInfillMaterial, occulusInfillMaterialName]\n );\n const glassInfillMaterial = useMemo(\n () =>\n availableMaterials[testGlassInfillMaterial] ||\n availableMaterials[glassInfillMaterialName] ||\n placeholderMaterial,\n [testGlassInfillMaterial, glassInfillMaterialName]\n );\n\n const hingeBodyMaterial = useMemo(\n () =>\n availableMaterials[testHingeMaterial] ||\n availableMaterials[hingeMaterialName] ||\n new THREE.MeshStandardMaterial({\n color: \"#d4d4d4\",\n metalness: 1.0,\n roughness: 0.4,\n }),\n [testHingeMaterial, hingeMaterialName]\n );\n\n const frontCoverPanelMaterial = useMemo(\n () =>\n availableMaterials[testFrontCoverPanelMaterial] ||\n availableMaterials[frontCoverPanelMaterialName] ||\n placeholderMaterial,\n [testFrontCoverPanelMaterial, frontCoverPanelMaterialName]\n );\n\n const backCoverPanelMaterial = useMemo(\n () =>\n availableMaterials[testBackCoverPanelMaterial] ||\n availableMaterials[backCoverPanelMaterialName] ||\n placeholderMaterial,\n [testBackCoverPanelMaterial, backCoverPanelMaterialName]\n );\n\n const hingeAccentMaterial = useMemo(\n () =>\n new THREE.MeshStandardMaterial({\n color: \"#1a1a1a\",\n roughness: 0.1,\n }),\n []\n );\n\n // --- Dimension calculations ---\n const { doorWidth, doorHeight, theDoorDepth, doorPivot, doorOpening } = door;\n const {\n frameDepth,\n topThk,\n sidesThk,\n doorStopWidth,\n doorStopDepth,\n doorStopOffset,\n notchWidth,\n notchDepth,\n notchposition,\n gasketWidth,\n gasketDepth,\n secondDoorStopWidth,\n secondDoorStopDepth,\n secondDoorStopOffset,\n } = doorFrame;\n const { height: interiorFanlightHeightValue } = interiorFanlight;\n const {\n height: exteriorFanlightHeightValue,\n depth: exteriorFanlightDepthValue,\n } = exteriorFanlight;\n const {\n x1: occulusX1,\n x2: occulusX2,\n y1: occulusY1,\n y2: occulusY2,\n depth: occulusInfillDepth,\n } = occulus;\n const { width: architraveWidth, depth: architraveDepth } = frontCoverPanel;\n\n const interiorFanlightHeight = interiorFanlight.visible\n ? interiorFanlightHeightValue\n : 0;\n const mainDoorHeight = doorHeight - interiorFanlightHeight;\n\n const topThkValue = parseInt(topThk) || 20;\n const sidesThkValue = parseInt(sidesThk) || 20;\n\n // Convert dimensions from mm to meters\n const doorWidthM = doorWidth / 1000;\n const mainDoorHeightM = mainDoorHeight / 1000;\n const interiorFanlightHeightM = interiorFanlightHeight / 1000;\n const totalOpeningHeightM = doorHeight / 1000;\n const doorDepthM = theDoorDepth / 1000;\n const frameDepthM = frameDepth / 1000;\n const topFrameWidthM = topThkValue / 1000;\n const sidesFrameWidthM = sidesThkValue / 1000;\n const exteriorFanlightHeightM = exteriorFanlight.visible\n ? exteriorFanlightHeightValue / 1000\n : 0;\n const exteriorFanlightDepthM = exteriorFanlightDepthValue / 1000;\n const occulusX1M = occulusX1 / 1000;\n const occulusX2M = occulusX2 / 1000;\n const occulusY1M = occulusY1 / 1000;\n const occulusY2M = occulusY2 / 1000;\n const occulusInfillDepthM = occulusInfillDepth / 1000;\n const doorStopWidthM = doorStopWidth / 1000;\n const doorStopDepthM = doorStopDepth / 1000;\n\n // Architrave Dimensions\n const architraveProfileM = architraveWidth / 1000;\n const architraveDepthM = architraveDepth / 1000;\n\n // Gasket Dimensions\n const gasketWidthM = gasketWidth / 1000;\n const gasketDepthM = gasketDepth / 1000;\n\n const doorStopOffsetValue = parseInt(doorStopOffset);\n const doorStopOffsetFromEdgeM = doorStopOffsetValue / 1000;\n\n const notchDepthValue = parseInt(notchDepth) || 40;\n const notchWidthValue = parseInt(notchWidth) || 20;\n\n const notchWidthM = notchWidthValue / 1000;\n const notchDepthM = notchDepthValue / 1000;\n\n const isOpeningIn = doorOpening === \"in\";\n\n const doorStopPositionZ = useMemo(\n () =>\n isOpeningIn\n ? frameDepthM / 2 - doorStopOffsetFromEdgeM - doorStopDepthM / 2\n : -frameDepthM / 2 + doorStopOffsetFromEdgeM + doorStopDepthM / 2,\n [isOpeningIn, frameDepthM, doorStopOffsetFromEdgeM, doorStopDepthM]\n );\n\n const gasketZPosition = useMemo(\n () =>\n isOpeningIn\n ? doorStopPositionZ - doorStopDepthM / 2 - gasketDepthM / 2\n : doorStopPositionZ + doorStopDepthM / 2 + gasketDepthM / 2,\n [isOpeningIn, doorStopPositionZ, doorStopDepthM, gasketDepthM]\n );\n const secondDoorStopWidthM = secondDoorStopWidth / 1000;\n const secondDoorStopDepthM = secondDoorStopDepth / 1000;\n const secondDoorStopPositionZ = isOpeningIn\n ? frameDepthM / 2 - secondDoorStopDepthM / 2\n : -frameDepthM / 2 + secondDoorStopDepthM / 2;\n\n // Position the first glass panel against the primary doorstop\n\n const secondGasketZPosition = isOpeningIn\n ? secondDoorStopPositionZ - secondDoorStopDepthM / 2 - gasketDepthM / 2\n : secondDoorStopPositionZ + secondDoorStopDepthM / 2 + gasketDepthM / 2;\n\n const doorCenterZ = useMemo(() => {\n if (frameType === \"WF_FLI\") {\n if (isOpeningIn) {\n return frameDepthM / 2 - doorDepthM / 2;\n } else {\n return -frameDepthM / 2 + doorDepthM / 2;\n }\n }\n\n if (frameType === \"WDGF_WDG100\" || frameType === \"WF_100\") {\n return 0;\n } else {\n if (isOpeningIn) {\n const gasketBackFaceZ = gasketZPosition - gasketDepthM / 2;\n return gasketBackFaceZ - doorDepthM / 2;\n } else {\n const gasketFrontFaceZ = gasketZPosition + gasketDepthM / 2;\n return gasketFrontFaceZ + doorDepthM / 2;\n }\n }\n }, [\n isOpeningIn,\n gasketZPosition,\n gasketDepthM,\n doorDepthM,\n frameType,\n frameDepthM,\n ]);\n const GlassPanelDepthM = glassDepth / 1000;\n\n const frontGlassOffsetZ = doorDepthM / 2 + GlassPanelDepthM / 2;\n const backGlassOffsetZ = -doorDepthM / 2 - GlassPanelDepthM / 2;\n\n // --- Door Stop Positions on Door ---\n const doorStopOffsetOnDoor =\n frameType === \"WDGF_WDG100\" ? secondDoorStopWidthM / 2 : doorStopDepthM / 2;\n\n const exteriorFanlightZPosition =\n exteriorFanlightType === \"ALSGFL\"\n ? 0 // Center it\n : isOpeningIn\n ? -frameDepthM / 2 + exteriorFanlightDepthM / 2\n : frameDepthM / 2 - exteriorFanlightDepthM / 2;\n\n const occulusWidthM = doorWidthM - occulusX1M - occulusX2M;\n const occulusHeightM = mainDoorHeightM - occulusY1M - occulusY2M;\n const occulusPositionXM = (occulusX1M - occulusX2M) / 2;\n const occulusPositionYM = (occulusY2M - occulusY1M) / 2;\n\n const [isOpen, setIsOpen] = useState(false);\n const hingeSideX = doorPivot === \"left\" ? -doorWidthM / 2 : doorWidthM / 2;\n\n const leftGlass_Z =\n -frameDepthM / 2 + GlassPanelDepthM / 2 - GlassPanelDepthM;\n const rightGlass_Z =\n frameDepthM / 2 - GlassPanelDepthM / 2 + GlassPanelDepthM;\n // --- PIVOT ---\n const hingeZ = useMemo(() => {\n if (frameType === \"WF_FLI\") {\n if (isOpeningIn) {\n return doorCenterZ - doorDepthM / 2;\n } else {\n return doorCenterZ + doorDepthM / 2;\n }\n }\n return isOpeningIn ? -frameDepthM / 2 : frameDepthM / 2;\n }, [frameType, isOpeningIn, doorCenterZ, doorDepthM, frameDepthM]);\n\n const doorOffsetZ = useMemo(\n () => doorCenterZ - hingeZ,\n [doorCenterZ, hingeZ]\n );\n\n const directionMultiplier = doorOpening === \"in\" ? 1 : -1;\n const { rotation } = useSpring({\n rotation: isOpen\n ? [\n 0,\n (doorPivot === \"left\" ? Math.PI / 2 : -Math.PI / 2) *\n directionMultiplier,\n 0,\n ]\n : [0, 0, 0],\n config: { mass: 1, tension: 100, friction: 20 },\n });\n\n const handleClick = () => setIsOpen(!isOpen);\n\n const totalFrameWidth = doorWidthM + sidesFrameWidthM * 2;\n const totalFrameHeightM = totalOpeningHeightM + topFrameWidthM;\n\n // --- Centering Logic ---\n const yCenteringOffset = -(topFrameWidthM + exteriorFanlightHeightM) / 2;\n\n const sideFrameCenterY = topFrameWidthM / 2;\n\n const interiorFanlightYPosition =\n totalOpeningHeightM / 2 - interiorFanlightHeightM / 2;\n const doorYPosition = -totalOpeningHeightM / 2 + mainDoorHeightM / 2;\n const topFrameCenterY = totalOpeningHeightM / 2 + topFrameWidthM / 2;\n const topOfFrameY = topFrameCenterY + topFrameWidthM / 2;\n const exteriorFanlightYPosition = topOfFrameY + exteriorFanlightHeightM / 2;\n\n const frontArchitraveZ = frameDepthM / 2 + architraveDepthM / 2;\n const backArchitraveZ = -frameDepthM / 2 - architraveDepthM / 2;\n\n const sideArchitraveHeight = totalOpeningHeightM;\n const sideArchitraveCenterY = 0;\n\n const leftArchitraveX = -doorWidthM / 2 - architraveProfileM / 2;\n const rightArchitraveX = doorWidthM / 2 + architraveProfileM / 2;\n\n const topArchitraveY = totalOpeningHeightM / 2 + architraveProfileM / 2;\n const topArchitraveWidth = doorWidthM + 2 * architraveProfileM;\n\n // --- Handle placement ---\n // Handle local placement on the DOOR LEAF so it follows rotation\n const handleCenterYFromDoorBottom = 1.0; // 1000 mm from bottom by default\n const safeHandleY = Math.min(\n Math.max(handleCenterYFromDoorBottom, 0.25),\n mainDoorHeightM - 0.25\n );\n const handleHeightM = -mainDoorHeightM / 2 + safeHandleY; // convert to door local Y\n\n // Check if the door is a glass type to adjust handle positioning\n const isSingleGlass = [\"SG8\", \"SG10\", \"SG12\"].includes(bodyType);\n const nonHingeSideX = doorPivot === \"left\" ? doorWidthM / 2 : -doorWidthM / 2;\n\n let handleX;\n\n if (isSingleGlass) {\n // For the glass handle, position it right at the edge.\n // The MergedPlate in GlassHandle is 0.1m wide, so we offset by half its width (0.05m).\n const plateHalfWidth = 0.05;\n handleX =\n nonHingeSideX + (doorPivot === \"left\" ? -plateHalfWidth : plateHalfWidth);\n } else {\n // For standard handles, keep the original margin.\n const latchMarginM = 0.08; // 80 mm from latch edge\n handleX =\n nonHingeSideX + (doorPivot === \"left\" ? -latchMarginM : latchMarginM);\n }\n // --- Primary Gasket Edge Position Calculations ---\n const topGasketYPosition =\n totalOpeningHeightM / 2 - doorStopWidthM + gasketWidthM / 2;\n const leftGasketXPosition =\n -doorWidthM / 2 + doorStopWidthM - gasketWidthM / 2;\n const rightGasketXPosition =\n doorWidthM / 2 - doorStopWidthM + gasketWidthM / 2;\n\n // --- Second Gasket ---\n\n const secondTopGasketYPosition =\n totalOpeningHeightM / 2 - secondDoorStopWidthM + gasketWidthM / 2;\n\n const secondLeftGasketXPosition =\n -doorWidthM / 2 + secondDoorStopWidthM - gasketWidthM / 2;\n\n const secondRightGasketXPosition =\n doorWidthM / 2 - secondDoorStopWidthM + gasketWidthM / 2;\n // --- HINGE CALCULATIONS ---\n const hingeTotalHeightM = 120 / 1000;\n const hingeRadiusM = 8 / 1000;\n const capHeightM = 4 / 1000;\n const separatorHeightM = 4 / 1000;\n\n const barrelPartHeight =\n (hingeTotalHeightM - capHeightM * 2 - separatorHeightM) / 2;\n\n // --- HINGE VISIBILITY LOGIC ---\n const isGlassDoor = useMemo(\n () => [\"SG8\", \"SG10\", \"SG12\"].includes(bodyType),\n [bodyType]\n );\n\n // Calculate evenly spaced hinge positions\n const standardHingeYPositions = useMemo(() => {\n const numHinges = 4;\n const topMargin = 180 / 1000;\n const bottomMargin = 180 / 1000;\n const availableHeight = mainDoorHeightM - topMargin - bottomMargin;\n const spacing = availableHeight / (numHinges - 1);\n const positions: number[] = [];\n for (let i = 0; i < numHinges; i++) {\n positions.push(mainDoorHeightM / 2 - topMargin - i * spacing);\n }\n return positions;\n }, [mainDoorHeightM]);\n\n // Y positions for the new glass hinges\n const glassHingeYPositions = useMemo(() => {\n const topMargin = 250 / 1000;\n const secondTopMargin = 450 / 1000;\n const bottomMargin = 250 / 1000;\n\n const top = mainDoorHeightM / 2 - topMargin;\n const secondTop = mainDoorHeightM / 2 - secondTopMargin;\n const bottom = -mainDoorHeightM / 2 + bottomMargin;\n\n return [top, secondTop, bottom];\n }, [mainDoorHeightM]);\n\n const isStandardHingeVisible = useMemo(() => {\n if (isGlassDoor) return false;\n if (!isFrameVisible) return false;\n\n const invisibleFrameTypes = [\"WDGF_WDG100\", \"WF_100\", \"WF_FLI\"];\n if (invisibleFrameTypes.includes(frameType)) {\n return false;\n }\n\n return true;\n }, [isFrameVisible, frameType, isGlassDoor]);\n\n if (is2D) {\n return (\n <group position-y={yCenteringOffset + 0.1}>\n <mesh>\n <boxGeometry args={[totalWidth / 1000, 0.1, frameDepth / 1000]} />\n <meshBasicMaterial color=\"white\" side={THREE.DoubleSide} />\n </mesh>\n </group>\n );\n }\n\n return (\n <group position-y={yCenteringOffset}>\n {frontCoverPanel.visible && (\n <group position-z={frontArchitraveZ}>\n {/* Top */}\n <mesh\n position={[0, topArchitraveY, 0]}\n castShadow\n material={frontCoverPanelMaterial}\n >\n <boxGeometry\n args={[topArchitraveWidth, architraveProfileM, architraveDepthM]}\n />\n </mesh>\n {/* Left */}\n <mesh\n position={[leftArchitraveX, sideArchitraveCenterY, 0]}\n castShadow\n material={frontCoverPanelMaterial}\n >\n <boxGeometry\n args={[\n architraveProfileM,\n sideArchitraveHeight,\n architraveDepthM,\n ]}\n />\n </mesh>\n {/* Right */}\n <mesh\n position={[rightArchitraveX, sideArchitraveCenterY, 0]}\n castShadow\n material={frontCoverPanelMaterial}\n >\n <boxGeometry\n args={[\n architraveProfileM,\n sideArchitraveHeight,\n architraveDepthM,\n ]}\n />\n </mesh>\n </group>\n )}\n {backCoverPanel.visible && (\n <group position-z={backArchitraveZ}>\n {/* Top */}\n <mesh\n position={[0, topArchitraveY, 0]}\n castShadow\n material={backCoverPanelMaterial}\n >\n <boxGeometry\n args={[topArchitraveWidth, architraveProfileM, architraveDepthM]}\n />\n </mesh>\n {/* Left */}\n <mesh\n position={[leftArchitraveX, sideArchitraveCenterY, 0]}\n castShadow\n material={backCoverPanelMaterial}\n >\n <boxGeometry\n args={[\n architraveProfileM,\n sideArchitraveHeight,\n architraveDepthM,\n ]}\n />\n </mesh>\n {/* Right */}\n <mesh\n position={[rightArchitraveX, sideArchitraveCenterY, 0]}\n castShadow\n material={backCoverPanelMaterial}\n >\n <boxGeometry\n args={[\n architraveProfileM,\n sideArchitraveHeight,\n architraveDepthM,\n ]}\n />\n </mesh>\n </group>\n )}\n\n {exteriorFanlight.visible && (\n <mesh\n position={[0, exteriorFanlightYPosition, exteriorFanlightZPosition]}\n castShadow\n material={exteriorFanlightMaterial}\n >\n <boxGeometry\n args={[\n totalFrameWidth,\n exteriorFanlightHeightM,\n exteriorFanlightDepthM,\n ]}\n />\n </mesh>\n )}\n\n {isFrameVisible && (\n <group>\n {/* --- Top Frame with CSG Cut --- */}\n <mesh castShadow position={[0, topFrameCenterY, 0]}>\n <Geometry useGroups>\n <Base name=\"frame-base\" material={frameMaterial}>\n <boxGeometry args={[doorWidthM, topFrameWidthM, frameDepthM]} />\n </Base>\n {![\"MXF_40\", \"MXF_50\", \"MXCAF_40\", \"MXCAF_50\"].includes(\n frameType\n ) && (\n <Subtraction\n name=\"cut-exterior\"\n material={frameMaterial}\n position={[0, notchposition, 0]}\n >\n <boxGeometry\n args={[doorWidthM + 0.01, notchWidthM, notchDepthM]}\n />\n </Subtraction>\n )}\n </Geometry>\n </mesh>\n\n {/* --- Left Frame with CSG Cut --- */}\n <mesh\n castShadow\n position={[\n -doorWidthM / 2 - sidesFrameWidthM / 2,\n sideFrameCenterY,\n 0,\n ]}\n >\n <Geometry useGroups>\n <Base name=\"frame-base\" material={frameMaterial}>\n <boxGeometry\n args={[sidesFrameWidthM, totalFrameHeightM, frameDepthM]}\n />\n </Base>\n {![\"MXF_40\", \"MXF_50\", \"MXCAF_40\", \"MXCAF_50\"].includes(\n frameType\n ) && (\n <Subtraction\n name=\"cut-exterior\"\n material={frameMaterial}\n position={[-notchposition, 0, 0]}\n >\n <boxGeometry\n args={[notchWidthM, totalFrameHeightM + 0.01, notchDepthM]}\n />\n </Subtraction>\n )}\n </Geometry>\n </mesh>\n\n {/* --- Right Frame with CSG Cut --- */}\n <mesh\n castShadow\n position={[\n doorWidthM / 2 + sidesFrameWidthM / 2,\n sideFrameCenterY,\n 0,\n ]}\n >\n <Geometry useGroups>\n <Base name=\"frame-base\" material={frameMaterial}>\n <boxGeometry\n args={[sidesFrameWidthM, totalFrameHeightM, frameDepthM]}\n />\n </Base>\n {![\"MXF_40\", \"MXF_50\", \"MXCAF_40\", \"MXCAF_50\"].includes(\n frameType\n ) && (\n <Subtraction\n name=\"cut-exterior\"\n material={frameMaterial}\n position={[notchposition, 0, 0]}\n >\n <boxGeometry\n args={[notchWidthM, totalFrameHeightM + 0.01, notchDepthM]}\n />\n </Subtraction>\n )}\n </Geometry>\n </mesh>\n\n {/* --- Door Stop Geometry --- */}\n <mesh\n castShadow\n position={[\n 0,\n totalOpeningHeightM / 2 - doorStopWidthM / 2,\n doorStopPositionZ,\n ]}\n material={doorStopMaterial}\n >\n <boxGeometry args={[doorWidthM, doorStopWidthM, doorStopDepthM]} />\n </mesh>\n <mesh\n castShadow\n position={[\n -doorWidthM / 2 + doorStopWidthM / 2,\n 0,\n doorStopPositionZ,\n ]}\n material={doorStopMaterial}\n >\n <boxGeometry\n args={[doorStopWidthM, totalOpeningHeightM, doorStopDepthM]}\n />\n </mesh>\n <mesh\n castShadow\n position={[\n doorWidthM / 2 - doorStopWidthM / 2,\n 0,\n doorStopPositionZ,\n ]}\n material={doorStopMaterial}\n >\n <boxGeometry\n args={[doorStopWidthM, totalOpeningHeightM, doorStopDepthM]}\n />\n </mesh>\n\n {/* --- Rubber Gasket Geometry (Primary) --- */}\n {frameType !== \"WF_FLI\" && (\n <>\n <mesh\n castShadow\n position={[0, topGasketYPosition, gasketZPosition]}\n material={gasketMaterial}\n >\n <boxGeometry\n args={[doorWidthM - 0.03, gasketWidthM + 0.005, gasketDepthM]}\n />\n </mesh>\n <mesh\n castShadow\n position={[\n leftGasketXPosition - 0.005,\n -0.005,\n gasketZPosition,\n ]}\n material={gasketMaterial}\n >\n <boxGeometry\n args={[\n gasketWidthM + 0.005,\n totalOpeningHeightM - 0.02,\n gasketDepthM,\n ]}\n />\n </mesh>\n <mesh\n castShadow\n position={[\n rightGasketXPosition + 0.005,\n -0.005,\n gasketZPosition,\n ]}\n material={gasketMaterial}\n >\n <boxGeometry\n args={[\n gasketWidthM + 0.005,\n totalOpeningHeightM - 0.02,\n gasketDepthM,\n ]}\n />\n </mesh>\n </>\n )}\n\n {(frameType === \"WDGF_WDG100\" ||\n frameType === \"WF_100\" ||\n frameType === \"WF_FLI\") && (\n <group>\n {/* --- Door Stops (Second) --- */}\n <group>\n <mesh\n castShadow\n position={[\n 0,\n totalOpeningHeightM / 2 - secondDoorStopWidthM / 2,\n secondDoorStopPositionZ,\n ]}\n material={doorStopMaterial}\n >\n <boxGeometry\n args={[\n doorWidthM,\n secondDoorStopWidthM,\n secondDoorStopDepthM,\n ]}\n />\n </mesh>\n <mesh\n castShadow\n position={[\n -doorWidthM / 2 + secondDoorStopWidthM / 2,\n 0,\n secondDoorStopPositionZ,\n ]}\n material={doorStopMaterial}\n >\n <boxGeometry\n args={[\n secondDoorStopWidthM,\n totalOpeningHeightM,\n secondDoorStopDepthM,\n ]}\n />\n </mesh>\n <mesh\n castShadow\n position={[\n doorWidthM / 2 - secondDoorStopWidthM / 2,\n 0,\n secondDoorStopPositionZ,\n ]}\n material={doorStopMaterial}\n >\n <boxGeometry\n args={[\n secondDoorStopWidthM,\n totalOpeningHeightM,\n secondDoorStopDepthM,\n ]}\n />\n </mesh>\n </group>\n\n {/* --- Gaskets (Second) --- */}\n <group>\n <mesh\n castShadow\n position={[\n 0,\n secondTopGasketYPosition - 0.005,\n secondGasketZPosition,\n ]}\n material={gasketMaterial}\n >\n <boxGeometry\n args={[\n doorWidthM - 0.03,\n gasketWidthM + 0.005,\n gasketDepthM,\n ]}\n />\n </mesh>\n <mesh\n castShadow\n position={[\n secondLeftGasketXPosition - 0.005,\n -0.01,\n secondGasketZPosition,\n ]}\n material={gasketMaterial}\n >\n <boxGeometry\n args={[\n gasketWidthM + 0.005,\n totalOpeningHeightM - 0.04,\n gasketDepthM,\n ]}\n />\n </mesh>\n <mesh\n castShadow\n position={[\n secondRightGasketXPosition + 0.005,\n -0.01,\n secondGasketZPosition,\n ]}\n material={gasketMaterial}\n >\n <boxGeometry\n args={[\n gasketWidthM + 0.004,\n totalOpeningHeightM - 0.04,\n gasketDepthM,\n ]}\n />\n </mesh>\n </group>\n\n {/* --- Glass Frame (if visible) --- */}\n {glassVisible && (\n <>\n {/* Back side */}\n <group>\n {/* Top frame */}\n {(frameType === \"WDGF_WDG100\" ||\n frameType === \"WF_100\") && (\n <mesh\n castShadow\n position={[\n 0,\n topFrameCenterY - secondDoorStopWidthM / 2,\n leftGlass_Z,\n ]}\n material={glassInfillMaterial}\n >\n <boxGeometry\n args={[\n doorWidthM - 2 * secondDoorStopWidthM,\n topFrameWidthM + secondDoorStopWidthM,\n GlassPanelDepthM,\n ]}\n />\n </mesh>\n )}\n {frameType !== \"WDGF_WDG100\" && frameType !== \"WF_100\" && (\n <mesh\n castShadow\n position={[0, topFrameCenterY, leftGlass_Z]}\n material={glassInfillMaterial}\n >\n <boxGeometry\n args={[\n doorWidthM - 2 * secondDoorStopWidthM,\n topFrameWidthM,\n GlassPanelDepthM,\n ]}\n />\n </mesh>\n )}\n\n {/* Left side frame */}\n <mesh\n castShadow\n position={[\n -doorWidthM / 2 -\n sidesFrameWidthM / 2 +\n secondDoorStopWidthM / 2,\n sideFrameCenterY,\n leftGlass_Z,\n ]}\n material={glassInfillMaterial}\n >\n <boxGeometry\n args={[\n sidesFrameWidthM + secondDoorStopWidthM,\n totalFrameHeightM,\n GlassPanelDepthM,\n ]}\n />\n </mesh>\n\n {/* Right side frame */}\n <mesh\n castShadow\n position={[\n doorWidthM / 2 +\n sidesFrameWidthM / 2 -\n secondDoorStopWidthM / 2,\n sideFrameCenterY,\n leftGlass_Z,\n ]}\n material={glassInfillMaterial}\n >\n <boxGeometry\n args={[\n sidesFrameWidthM + secondDoorStopWidthM,\n totalFrameHeightM,\n GlassPanelDepthM,\n ]}\n />\n </mesh>\n </group>\n\n {/* Front side */}\n <group>\n {/* Top frame */}\n <mesh\n castShadow\n position={[0, topFrameCenterY, rightGlass_Z]}\n material={glassInfillMaterial}\n >\n <boxGeometry\n args={[doorWidthM, topFrameWidthM, GlassPanelDepthM]}\n />\n </mesh>\n\n {/* Left side frame */}\n <mesh\n castShadow\n position={[\n -doorWidthM / 2 - sidesFrameWidthM / 2,\n sideFrameCenterY,\n rightGlass_Z,\n ]}\n material={glassInfillMaterial}\n >\n <boxGeometry\n args={[\n sidesFrameWidthM,\n totalFrameHeightM,\n GlassPanelDepthM,\n ]}\n />\n </mesh>\n\n {/* Right side frame */}\n <mesh\n castShadow\n position={[\n doorWidthM / 2 + sidesFrameWidthM / 2,\n sideFrameCenterY,\n rightGlass_Z,\n ]}\n material={glassInfillMaterial}\n >\n <boxGeometry\n args={[\n sidesFrameWidthM,\n totalFrameHeightM,\n GlassPanelDepthM,\n ]}\n />\n </mesh>\n </group>\n </>\n )}\n </group>\n )}\n </group>\n )}\n\n {interiorFanlight.visible && (\n <mesh\n position={[0, interiorFanlightYPosition, doorCenterZ]}\n castShadow\n material={interiorFanlightMaterial}\n >\n <boxGeometry\n args={[doorWidthM, interiorFanlightHeightM, doorDepthM]}\n />\n </mesh>\n )}\n\n {/* --- Standard Hinge (Static Part) --- */}\n {isStandardHingeVisible &&\n standardHingeYPositions.map((y, index) => (\n <group\n key={`frame-hinge-${index}`}\n position={[hingeSideX, doorYPosition + y, hingeZ]}\n >\n <mesh\n material={hingeBodyMaterial}\n position={[0, separatorHeightM / 2 + barrelPartHeight / 2, 0]}\n castShadow\n >\n <cylinderGeometry\n args={[hingeRadiusM, hingeRadiusM, barrelPartHeight, 32]}\n />\n </mesh>\n <mesh\n material={hingeAccentMaterial}\n position={[\n 0,\n separatorHeightM / 2 + barrelPartHeight + capHeightM / 2,\n 0,\n ]}\n castShadow\n >\n <cylinderGeometry\n args={[hingeRadiusM, hingeRadiusM, capHeightM, 32]}\n />\n </mesh>\n </group>\n ))}\n\n {/* --- PIVOT GROUP --- */}\n <a.group\n position={[hingeSideX, doorYPosition, hingeZ]}\n rotation={rotation.to((x, y, z) => [x, y, z] as any)}\n onClick={handleClick}\n onPointerOver={() => (document.body.style.cursor = \"pointer\")}\n onPointerOut={() => (document.body.style.cursor = \"auto\")}\n >\n {/* --- Standard Hinge (Door Side)--- */}\n {isStandardHingeVisible &&\n standardHingeYPositions.map((y, index) => (\n <group key={`door-hinge-${index}`} position={[0, y, 0]}>\n <mesh\n material={hingeBodyMaterial}\n position={[0, -separatorHeightM / 2 - barrelPartHeight / 2, 0]}\n castShadow\n >\n <cylinderGeometry\n args={[hingeRadiusM, hingeRadiusM, barrelPartHeight, 32]}\n />\n </mesh>\n <mesh\n material={hingeAccentMaterial}\n position={[\n 0,\n -separatorHeightM / 2 - barrelPartHeight - capHeightM / 2,\n 0,\n ]}\n castShadow\n >\n <cylinderGeometry\n args={[hingeRadiusM, hingeRadiusM, capHeightM, 32]}\n />\n </mesh>\n <mesh\n material={hingeAccentMaterial}\n position={[0, 0, 0]}\n castShadow\n >\n <cylinderGeometry\n args={[hingeRadiusM, hingeRadiusM, separatorHeightM, 32]}\n />\n </mesh>\n </group>\n ))}\n {/* --- Glass Hinge --- */}\n {isGlassDoor &&\n isFrameVisible &&\n glassHingeYPositions.map((y, index) => (\n <GlassHinge\n key={`glass-hinge-${index}`}\n position={[0, y, doorOffsetZ]}\n pivot={doorPivot}\n frameSideWidth={sidesFrameWidthM}\n doorDepthM={doorDepthM}\n material={hingeBodyMaterial}\n gasketMaterial={gasketMaterial}\n />\n ))}\n\n <group position={[-hingeSideX, 0, doorOffsetZ]}>\n <mesh castShadow>\n <Geometry useGroups>\n <Base name=\"door-base\" material={doorMaterial}>\n <boxGeometry args={[doorWidthM, mainDoorHeightM, doorDepthM]} />\n </Base>\n {/* First set of cuts */}\n <DoorStopCuts\n visible={\n frameType === \"WDGF_WDG100\" ||\n frameType === \"WF_100\" ||\n frameType === \"WF_FLI\"\n }\n width={doorWidthM}\n height={totalOpeningHeightM}\n stopWidth={doorStopWidthM}\n stopDepth={doorStopDepthM}\n stopPositionZ={doorStopPositionZ}\n centerZ={doorCenterZ}\n glassDepthOffset={GlassPanelDepthM / 2}\n material={doorMaterial}\n setName=\"1\"\n />\n\n {/* Second set of cuts */}\n <DoorStopCuts\n visible={\n frameType === \"WDGF_WDG100\" ||\n frameType === \"WF_100\" ||\n frameType === \"WF_FLI\"\n }\n width={doorWidthM}\n height={totalOpeningHeightM}\n stopWidth={secondDoorStopWidthM}\n stopDepth={secondDoorStopDepthM}\n stopPositionZ={secondDoorStopPositionZ}\n centerZ={doorCenterZ}\n glassDepthOffset={GlassPanelDepthM / 2}\n material={doorMaterial}\n setName=\"2\"\n />\n\n {/* Glass panels */}\n {glassVisible && (\n <>\n <mesh\n position={[0, 0, frontGlassOffsetZ]}\n castShadow\n material={glassInfillMaterial}\n >\n <boxGeometry\n args={[doorWidthM, mainDoorHeightM, GlassPanelDepthM]}\n />\n </mesh>\n\n {frameType !== \"WDGF_WDG100\" && frameType !== \"WF_100\" && (\n <mesh\n position={[0, 0, backGlassOffsetZ]}\n castShadow\n material={glassInfillMaterial}\n >\n <boxGeometry\n args={[doorWidthM, mainDoorHeightM, GlassPanelDepthM]}\n />\n </mesh>\n )}\n\n {(frameType === \"WDGF_WDG100\" || frameType === \"WF_100\") && (\n <mesh\n position={[\n 0,\n -secondDoorStopWidthM / 2,\n backGlassOffsetZ,\n ]}\n castShadow\n material={glassInfillMaterial}\n >\n <boxGeometry\n args={[\n doorWidthM - 2 * secondDoorStopWidthM,\n mainDoorHeightM - secondDoorStopWidthM,\n GlassPanelDepthM,\n ]}\n />\n </mesh>\n )}\n </>\n )}\n\n {/* Occulus cut */}\n {occulus.visible && occulusWidthM > 0 && occulusHeightM > 0 && (\n <Subtraction\n material={placeholderMaterial}\n position={[occulusPositionXM, occulusPositionYM, 0]}\n >\n <boxGeometry\n args={[occulusWidthM, occulusHeightM, doorDepthM + 0.01]}\n />\n </Subtraction>\n )}\n </Geometry>\n </mesh>\n\n {/* Occulus infill */}\n {occulus.visible &&\n occulus.infillVisible &&\n occulusWidthM > 0 &&\n occulusHeightM > 0 && (\n <mesh\n position={[occulusPositionXM, occulusPositionYM, 0]}\n castShadow\n material={occulusInfillMaterial}\n >\n <boxGeometry\n args={[occulusWidthM, occulusHeightM, occulusInfillDepthM]}\n />\n </mesh>\n )}\n\n {/* Door Handle - Positioned correctly relative to the door leaf */}\n <DoorHandle\n bodyType={bodyType}\n handleX={handleX}\n handleHeightM={handleHeightM}\n doorDepthM={doorDepthM}\n doorPivot={doorPivot}\n />\n </group>\n </a.group>\n\n {/* Floor plane */}\n {isPlaneVisible && (\n <mesh\n receiveShadow\n rotation={[-Math.PI / 2, 0, 0]}\n position={[0, -totalOpeningHeightM / 2 - yCenteringOffset - 0.01, 0]}\n >\n <planeGeometry args={[10, 10]} />\n <meshStandardMaterial color=\"#f9f9f9\" side={THREE.DoubleSide} />\n </mesh>\n )}\n </group>\n );\n}\n\nexport default DoorModels;\n","import React from \"react\";\nimport { ConfiguratorProvider } from \"../context/DoorContext\";\nimport DoorModels from \"./DoorModels\";\n\ntype DoorConfiguratorProps = {\n doorName?: string;\n showInterface?: boolean;\n is2D?: boolean;\n};\n\nconst DoorConfigurator = ({\n doorName,\n showInterface = true,\n is2D = false,\n}: DoorConfiguratorProps) => {\n return (\n <ConfiguratorProvider initialIs2D={is2D}>\n <DoorModels doorName={doorName} />\n </ConfiguratorProvider>\n );\n};\n\nexport default DoorConfigurator;\n"],"names":["ConfiguratorContext","createContext","undefined","ConfiguratorProvider","_ref","children","initialIs2D","is2D","setIs2D","useState","isPlaneVisible","setIsPlaneVisible","isFrameVisible","setIsFrameVisible","cpid","setCpid","totalHeight","setTotalHeight","totalWidth","setTotalWidth","glassVisible","setGlassVisible","glassDepth","setGlassDepth","door","setDoor","doorMaterial","doorWidth","doorHeight","theDoorDepth","doorPivot","doorOpening","doorFrame","setDoorFrame","frameMaterial","doorStopMaterial","gasketMaterial","hingeMaterial","glassMaterial","frameDepth","topThk","sidesThk","doorStopOffset","doorStopWidth","doorStopDepth","notchWidth","notchDepth","notchposition","gasketDepth","gasketWidth","secondDoorStopWidth","secondDoorStopDepth","secondDoorStopOffset","interiorFanlight","setInteriorFanlight","visible","height","material","exteriorFanlight","setExteriorFanlight","depth","occulus","setOcculus","infillVisible","x1","x2","y1","y2","frontCoverPanel","setFrontCoverPanel","width","backCoverPanel","setBackCoverPanel","glass","setGlass","frameType","setFrameType","bodyType","setBodyType","exteriorFanlightType","setExteriorFanlightType","testDoorMaterial","setTestDoorMaterial","testFrameMaterial","setTestFrameMaterial","testGasketMaterial","setTestGasketMaterial","testInteriorFanlightMaterial","setTestInteriorFanlightMaterial","testExteriorFanlightMaterial","setTestExteriorFanlightMaterial","testOcculusInfillMaterial","setTestOcculusInfillMaterial","testGlassInfillMaterial","setTestGlassInfillMaterial","testDoorStopMaterial","setTestDoorStopMaterial","testHingeMaterial","setTestHingeMaterial","testFrontCoverPanelMaterial","setTestFrontCoverPanelMaterial","testBackCoverPanelMaterial","setTestBackCoverPanelMaterial","parseMessage","setParseMessage","type","text","useEffect","handleParseCpid","useCallback","cpidToParse","showMessage","arguments","length","setTimeout","trim","startsWith","parts","split","newConfig","fanlightVisible","fanlightType","interiorFanlightVisible","occulusVisible","currentIndex","fanlightPart","validFanlights","includes","concat","validSimpleFrameTypes","validBodyTypes","framePart","bodyPartRaw","frameFound","tempBody","replace","endsWith","i","prev","_objectSpread","newDoorDepth","newMaterial","newSettings","lookupKey","doorDepth","isMxCaf","newFrameSettings","_objectWithoutProperties","_excluded","topThkValue","parseInt","exteriorFanlightHeight","newDoorHeight","prevDoor","sidesThkValue","newDoorWidth","_jsx","Provider","value","useConfigurator","context","useContext","Error","placeholderMaterial","THREE","MeshStandardMaterial","color","roughness","placeholderMaterialforFrames","availableMaterials","black","metal","metalness","darkgrey","grey","yellow","darkBrown","brown","transparent","opacity","aluminum","envMapIntensity","aluminumBrighter","aluminumExtraBrighter","silver","gold","diamond","StandardHandle","position","doorDepthM","roseRadius","roseThickness","handleRadius","handleLength","faceZ","connectorLength","cornerFrontZ","cornerBackZ","roseGapY","_jsxs","map","z","React","Fragment","castShadow","receiveShadow","args","rotation","Math","PI","scale","MergedPlate","_ref2","plateMaterial","geometry","useMemo","leftHalf","BoxGeometry","translate","shape","Shape","radius","moveTo","lineTo","absarc","extrudeSettings","steps","bevelEnabled","ExtrudeGeometry","GlassHandle","_ref3","DoorHandle","_ref4","handleX","handleHeightM","isSingleGlass","handlePos","GlassHinge","_ref5","pivot","frameSideWidth","plateWidth","plateHeight","plateThickness","gasketThickness","pivotRadius","pivotHeight","sideMultiplier","plateOffsetX","holeRadius","holeSpacingX","Geometry","useGroups","Base","Subtraction","DoorStopCuts","_ref6","stopWidth","stopDepth","stopPositionZ","centerZ","glassDepthOffset","setName","_Fragment","name","DoorModels","_ref7","doorName","doorMaterialName","frameMaterialName","gasketMaterialName","doorStopMaterialName","hingeMaterialName","interiorFanlightMaterialName","exteriorFanlightMaterialName","occulusInfillMaterialName","glassInfillMaterialName","frontCoverPanelMaterialName","backCoverPanelMaterialName","interiorFanlightMaterial","exteriorFanlightMaterial","occulusInfillMaterial","glassInfillMaterial","hingeBodyMaterial","frontCoverPanelMaterial","backCoverPanelMaterial","hingeAccentMaterial","interiorFanlightHeightValue","exteriorFanlightHeightValue","exteriorFanlightDepthValue","occulusX1","occulusX2","occulusY1","occulusY2","occulusInfillDepth","architraveWidth","architraveDepth","interiorFanlightHeight","mainDoorHeight","doorWidthM","mainDoorHeightM","interiorFanlightHeightM","totalOpeningHeightM","frameDepthM","topFrameWidthM","sidesFrameWidthM","exteriorFanlightHeightM","exteriorFanlightDepthM","occulusX1M","occulusX2M","occulusY1M","occulusY2M","occulusInfillDepthM","doorStopWidthM","doorStopDepthM","architraveProfileM","architraveDepthM","gasketWidthM","gasketDepthM","doorStopOffsetValue","doorStopOffsetFromEdgeM","notchDepthValue","notchWidthValue","notchWidthM","notchDepthM","isOpeningIn","doorStopPositionZ","gasketZPosition","secondDoorStopWidthM","secondDoorStopDepthM","secondDoorStopPositionZ","secondGasketZPosition","doorCenterZ","gasketBackFaceZ","gasketFrontFaceZ","GlassPanelDepthM","frontGlassOffsetZ","backGlassOffsetZ","exteriorFanlightZPosition","occulusWidthM","occulusHeightM","occulusPositionXM","occulusPositionYM","isOpen","setIsOpen","hingeSideX","leftGlass_Z","rightGlass_Z","hingeZ","doorOffsetZ","directionMultiplier","useSpring","config","mass","tension","friction","handleClick","totalFrameWidth","totalFrameHeightM","yCenteringOffset","sideFrameCenterY","interiorFanlightYPosition","doorYPosition","topFrameCenterY","topOfFrameY","exteriorFanlightYPosition","frontArchitraveZ","backArchitraveZ","sideArchitraveHeight","sideArchitraveCenterY","leftArchitraveX","rightArchitraveX","topArchitraveY","topArchitraveWidth","handleCenterYFromDoorBottom","safeHandleY","min","max","nonHingeSideX","plateHalfWidth","latchMarginM","topGasketYPosition","leftGasketXPosition","rightGasketXPosition","secondTopGasketYPosition","secondLeftGasketXPosition","secondRightGasketXPosition","hingeTotalHeightM","hingeRadiusM","capHeightM","separatorHeightM","barrelPartHeight","isGlassDoor","standardHingeYPositions","numHinges","topMargin","bottomMargin","availableHeight","spacing","positions","push","glassHingeYPositions","secondTopMargin","top","secondTop","bottom","isStandardHingeVisible","invisibleFrameTypes","side","DoubleSide","y","index","a","group","to","x","onClick","onPointerOver","document","body","style","cursor","onPointerOut","DoorConfigurator","showInterface"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs.js","sources":["../src/lib/context/DoorContext.tsx","../src/lib/components/DoorModels.tsx","../src/lib/components/DoorConfigurator.tsx"],"sourcesContent":["import React, {\n createContext,\n useContext,\n useState,\n useEffect,\n useCallback,\n} from \"react\";\n\nimport { availableMaterials } from \"../components/DoorModels\";\ntype MaterialName = keyof typeof availableMaterials;\n// --- Type Definitions to Match JSON Structure ---\n\ntype DoorType = {\n doorMaterial: string;\n doorWidth: number;\n doorHeight: number;\n theDoorDepth: number;\n doorPivot: string;\n doorOpening: string;\n};\n\ntype DoorFrameType = {\n frameMaterial: string;\n doorStopMaterial?: string;\n gasketMaterial: string;\n hingeMaterial: string;\n glassMaterial?: string;\n frameDepth: number;\n topThk: string;\n sidesThk: string;\n notchDepth: string;\n notchWidth: string;\n doorStopWidth: number;\n doorStopDepth: number;\n doorStopOffset: string;\n notchposition: number;\n gasketWidth: number;\n gasketDepth: number;\n secondDoorStopWidth: number;\n secondDoorStopDepth: number;\n secondDoorStopOffset: number;\n};\n\ntype InteriorFanlightType = {\n visible: boolean;\n height: number;\n material: string;\n};\n\ntype ExteriorFanlightType = {\n visible: boolean;\n height: number;\n depth: number;\n material: string;\n};\n\ntype OcculusType = {\n visible: boolean;\n infillVisible: boolean;\n x1: number;\n x2: number;\n y1: number;\n y2: number;\n material: string;\n depth: number;\n};\n\ntype CoverPanelType = {\n visible: boolean;\n width: number;\n height: number;\n depth: number;\n material: string;\n};\n\ntype FrameAndDoorSettings = Partial<DoorFrameType> & { doorDepth?: number };\ntype GlassType = {\n visible: boolean;\n material: string;\n depth: number;\n};\n\n// --- Main Context Type ---\ntype ConfiguratorContextType = {\n is2D: boolean;\n setIs2D: React.Dispatch<React.SetStateAction<boolean>>;\n isPlaneVisible: boolean;\n setIsPlaneVisible: React.Dispatch<React.SetStateAction<boolean>>;\n isFrameVisible: boolean;\n setIsFrameVisible: React.Dispatch<React.SetStateAction<boolean>>;\n cpid: string;\n setCpid: React.Dispatch<React.SetStateAction<string>>;\n door: DoorType;\n setDoor: React.Dispatch<React.SetStateAction<DoorType>>;\n doorFrame: DoorFrameType;\n setDoorFrame: React.Dispatch<React.SetStateAction<DoorFrameType>>;\n interiorFanlight: InteriorFanlightType;\n setInteriorFanlight: React.Dispatch<\n React.SetStateAction<InteriorFanlightType>\n >;\n exteriorFanlight: ExteriorFanlightType;\n setExteriorFanlight: React.Dispatch<\n React.SetStateAction<ExteriorFanlightType>\n >;\n exteriorFanlightType: string;\n setExteriorFanlightType: React.Dispatch<React.SetStateAction<string>>;\n occulus: OcculusType;\n setOcculus: React.Dispatch<React.SetStateAction<OcculusType>>;\n frontCoverPanel: CoverPanelType;\n setFrontCoverPanel: React.Dispatch<React.SetStateAction<CoverPanelType>>;\n backCoverPanel: CoverPanelType;\n setBackCoverPanel: React.Dispatch<React.SetStateAction<CoverPanelType>>;\n glass: GlassType;\n setGlass: React.Dispatch<React.SetStateAction<GlassType>>;\n frameType: string;\n setFrameType: React.Dispatch<React.SetStateAction<string>>;\n bodyType: string;\n setBodyType: React.Dispatch<React.SetStateAction<string>>;\n totalHeight: number;\n setTotalHeight: React.Dispatch<React.SetStateAction<number>>;\n totalWidth: number;\n setTotalWidth: React.Dispatch<React.SetStateAction<number>>;\n handleParseCpid: (cpidToParse: string) => void;\n // --- States for Test Materials ---\n testDoorMaterial: string;\n setTestDoorMaterial: React.Dispatch<React.SetStateAction<string>>;\n testFrameMaterial: string;\n setTestFrameMaterial: React.Dispatch<React.SetStateAction<string>>;\n testGasketMaterial: string;\n setTestGasketMaterial: React.Dispatch<React.SetStateAction<string>>;\n testInteriorFanlightMaterial: string;\n setTestInteriorFanlightMaterial: React.Dispatch<React.SetStateAction<string>>;\n testExteriorFanlightMaterial: string;\n setTestExteriorFanlightMaterial: React.Dispatch<React.SetStateAction<string>>;\n testOcculusInfillMaterial: string;\n setTestOcculusInfillMaterial: React.Dispatch<React.SetStateAction<string>>;\n testGlassInfillMaterial: string;\n setTestGlassInfillMaterial: React.Dispatch<React.SetStateAction<string>>;\n testDoorStopMaterial: string;\n setTestDoorStopMaterial: React.Dispatch<React.SetStateAction<string>>;\n testHingeMaterial: string;\n setTestHingeMaterial: React.Dispatch<React.SetStateAction<string>>;\n testFrontCoverPanelMaterial: string;\n setTestFrontCoverPanelMaterial: React.Dispatch<React.SetStateAction<string>>;\n testBackCoverPanelMaterial: string;\n setTestBackCoverPanelMaterial: React.Dispatch<React.SetStateAction<string>>;\n glassVisible: boolean;\n setGlassVisible: React.Dispatch<React.SetStateAction<boolean>>;\n glassDepth: number;\n setGlassDepth: React.Dispatch<React.SetStateAction<number>>;\n doorHeight: number;\n newPivotPosition: number;\n setNewPivotPosition: React.Dispatch<React.SetStateAction<number>>;\n};\n\nconst ConfiguratorContext = createContext<ConfiguratorContextType | undefined>(\n undefined\n);\n\ntype ConfiguratorProviderProps = {\n children: React.ReactNode;\n initialIs2D?: boolean;\n};\n\nexport const ConfiguratorProvider = ({\n children,\n initialIs2D = false,\n}: ConfiguratorProviderProps) => {\n const [is2D, setIs2D] = useState<boolean>(initialIs2D);\n const [isPlaneVisible, setIsPlaneVisible] = useState<boolean>(false);\n const [isFrameVisible, setIsFrameVisible] = useState<boolean>(true);\n const [cpid, setCpid] = useState<string>(\"\");\n const [totalHeight, setTotalHeight] = useState<number>(2700);\n const [totalWidth, setTotalWidth] = useState<number>(974);\n const [glassVisible, setGlassVisible] = useState(false);\n const [glassDepth, setGlassDepth] = useState(8);\n const [door, setDoor] = useState<DoorType>({\n doorMaterial: \"door_material\",\n doorWidth: 0,\n doorHeight: 0,\n theDoorDepth: 40,\n doorPivot: \"left\",\n doorOpening: \"out\",\n });\n const [doorFrame, setDoorFrame] = useState<DoorFrameType>({\n frameMaterial: \"doorFrame_material\",\n doorStopMaterial: \"doorStop_material\",\n gasketMaterial: \"gasket_material\",\n hingeMaterial: \"hinge_material\",\n glassMaterial: \"glass_material\",\n frameDepth: 103,\n topThk: \"20mm\",\n sidesThk: \"20mm\",\n doorStopOffset: \"30mm\",\n doorStopWidth: 20,\n doorStopDepth: 13,\n notchWidth: \"20mm\",\n notchDepth: \"40mm\",\n notchposition: 0.01,\n gasketDepth: 5,\n gasketWidth: 5,\n secondDoorStopWidth: 20,\n secondDoorStopDepth: 30,\n secondDoorStopOffset: 13,\n });\n const [interiorFanlight, setInteriorFanlight] =\n useState<InteriorFanlightType>({\n visible: false,\n height: 300,\n material: \"interiorFanlight_material\",\n });\n const [exteriorFanlight, setExteriorFanlight] =\n useState<ExteriorFanlightType>({\n visible: false,\n height: 300,\n depth: 60,\n material: \"exteriorFanlight_material\",\n });\n const [occulus, setOcculus] = useState<OcculusType>({\n visible: false,\n infillVisible: true,\n x1: 150,\n x2: 150,\n y1: 150,\n y2: 150,\n material: \"infill_material\",\n depth: 20,\n });\n const [frontCoverPanel, setFrontCoverPanel] = useState<CoverPanelType>({\n visible: false,\n width: 73,\n height: 2200,\n depth: 12,\n material: \"front_cover_material\",\n });\n const [backCoverPanel, setBackCoverPanel] = useState<CoverPanelType>({\n visible: false,\n width: 73,\n height: 2200,\n depth: 12,\n material: \"back_cover_material\",\n });\n const [glass, setGlass] = useState<GlassType>({\n visible: false,\n material: \"infill_material\",\n depth: 20,\n });\n const [frameType, setFrameType] = useState<string>(\"AF20_40\");\n const [bodyType, setBodyType] = useState<string>(\"40\");\n const [exteriorFanlightType, setExteriorFanlightType] =\n useState<string>(\"WPFL\");\n const [testDoorMaterial, setTestDoorMaterial] = useState<string>(\"brown\");\n const [testFrameMaterial, setTestFrameMaterial] = useState<string>(\"black\");\n const [testGasketMaterial, setTestGasketMaterial] =\n useState<string>(\"darkgrey\");\n const [testInteriorFanlightMaterial, setTestInteriorFanlightMaterial] =\n useState<string>(\"grey\");\n const [testExteriorFanlightMaterial, setTestExteriorFanlightMaterial] =\n useState<string>(\"metal\");\n const [testOcculusInfillMaterial, setTestOcculusInfillMaterial] =\n useState<string>(\"glass\");\n const [testGlassInfillMaterial, setTestGlassInfillMaterial] =\n useState<string>(\"glass\");\n const [testDoorStopMaterial, setTestDoorStopMaterial] =\n useState<string>(\"black\");\n const [testHingeMaterial, setTestHingeMaterial] = useState<string>(\"metal\");\n const [testFrontCoverPanelMaterial, setTestFrontCoverPanelMaterial] =\n useState<string>(\"aluminum\");\n const [testBackCoverPanelMaterial, setTestBackCoverPanelMaterial] =\n useState<string>(\"aluminum\");\n const doorHeight = 0;\n const [newPivotPosition, setNewPivotPosition] = useState<number>(0);\n const [parseMessage, setParseMessage] = useState({ type: \"\", text: \"\" });\n\n useEffect(() => {\n setIs2D(initialIs2D);\n }, [initialIs2D]);\n\n const handleParseCpid = useCallback(\n cpidToParse => {\n setTotalHeight(2700);\n setTotalWidth(974);\n\n const showMessage = (text, type = \"error\") => {\n setParseMessage({ text, type });\n setTimeout(() => setParseMessage({ text: \"\", type: \"\" }), 4000);\n };\n\n if (!cpidToParse || !cpidToParse.trim().startsWith(\"P_\")) {\n showMessage(\"Invalid format: CPID must start with 'P_'.\");\n return;\n }\n\n const parts = cpidToParse.trim().split(\"_\");\n if (parts.length < 4) {\n showMessage(\"Invalid format: Not enough parts in CPID.\");\n return;\n }\n\n const newConfig = {\n fanlightVisible: false,\n fanlightType: \"WPFL\",\n interiorFanlightVisible: false,\n occulusVisible: false,\n frameType: \"\",\n bodyType: \"\",\n };\n let currentIndex = 1;\n\n // Door Type\n if (parts[currentIndex] === \"SD\") {\n currentIndex++;\n } else {\n showMessage(\"Unsupported Door Type: Only 'SD' is supported.\");\n return;\n }\n\n //Fanlight Type\n const fanlightPart = parts[currentIndex];\n const validFanlights = [\"WPFL\", \"ALDGFL\", \"ALSGFL\"];\n if (fanlightPart === \"FH\") {\n newConfig.fanlightVisible = false;\n currentIndex++;\n } else if (validFanlights.includes(fanlightPart)) {\n setExteriorFanlight(prev => ({\n ...prev,\n height: 300,\n }));\n newConfig.fanlightVisible = true;\n newConfig.fanlightType = fanlightPart;\n currentIndex++;\n } else {\n showMessage(`Invalid Fanlight Type: '${fanlightPart}'.`);\n return;\n }\n\n // Frame and Body Type\n const validSimpleFrameTypes = [\n \"AF20\",\n \"AF40\",\n \"WF\",\n \"MXF\",\n \"MXCAF\",\n \"NOF\",\n ];\n const validBodyTypes = [\n \"40\",\n \"50\",\n \"FLI\",\n \"100\",\n \"WDG100\",\n \"SG8\",\n \"SG10\",\n \"SG12\",\n ];\n\n let framePart = parts[currentIndex];\n let bodyPartRaw = parts[currentIndex + 1] || \"\";\n let frameFound = false;\n\n if (`${framePart}_${bodyPartRaw}` === \"WDGF_WDG100\") {\n newConfig.frameType = \"WDGF_WDG100\";\n newConfig.bodyType = \"WDG100\";\n currentIndex += 2;\n frameFound = true;\n } else if (validSimpleFrameTypes.includes(framePart)) {\n let tempBody = bodyPartRaw.replace(\"OCC\", \"\");\n\n if (validBodyTypes.includes(tempBody)) {\n newConfig.frameType =\n framePart === \"NOF\" ? \"NOF\" : `${framePart}_${tempBody}`;\n\n newConfig.bodyType = tempBody;\n\n if (bodyPartRaw.endsWith(\"OCC\")) {\n newConfig.occulusVisible = true;\n setOcculus(prev => ({\n ...prev,\n x1: 150,\n x2: 150,\n y1: 150,\n y2: 150,\n }));\n }\n currentIndex += 2;\n frameFound = true;\n }\n }\n\n if (!frameFound) {\n showMessage(\n `Invalid Frame/Body combination starting with '${framePart}'.`\n );\n return;\n }\n\n for (let i = currentIndex; i < parts.length; i++) {\n if (parts[i] === \"IFL\") {\n setInteriorFanlight(prev => ({\n ...prev,\n height: 300,\n }));\n newConfig.interiorFanlightVisible = true;\n } else if (parts[i] === \"OCC\") {\n newConfig.occulusVisible = true;\n }\n }\n\n // Apply final configuration\n setFrameType(newConfig.frameType);\n setBodyType(newConfig.bodyType);\n setExteriorFanlight(prev => ({\n ...prev,\n visible: newConfig.fanlightVisible,\n }));\n if (newConfig.fanlightVisible) {\n setExteriorFanlightType(newConfig.fanlightType);\n }\n setInteriorFanlight(prev => ({\n ...prev,\n visible: newConfig.interiorFanlightVisible,\n }));\n setOcculus(prev => ({ ...prev, visible: newConfig.occulusVisible }));\n showMessage(\"Configuration Applied!\", \"success\");\n },\n [\n setBodyType,\n setExteriorFanlight,\n setExteriorFanlightType,\n setFrameType,\n setInteriorFanlight,\n setOcculus,\n ]\n );\n\n // --- BodyType Effect ---\n useEffect(() => {\n let newDoorDepth = 40;\n let newMaterial = \"brown\";\n\n switch (bodyType) {\n case \"50\":\n newDoorDepth = 50;\n break;\n case \"SG8\":\n newDoorDepth = 8;\n newMaterial = \"glass\";\n break;\n case \"SG10\":\n newDoorDepth = 10;\n newMaterial = \"glass\";\n break;\n case \"SG12\":\n newDoorDepth = 12;\n newMaterial = \"glass\";\n break;\n }\n\n setDoor(prev => ({ ...prev, theDoorDepth: newDoorDepth }));\n setTestDoorMaterial(newMaterial);\n }, [bodyType]);\n\n // --- FrameType Effect ---\n useEffect(() => {\n setIsFrameVisible(frameType !== \"NOF\");\n\n setGlassVisible(false);\n\n let newSettings: FrameAndDoorSettings = {};\n\n let lookupKey = frameType;\n if (frameType.startsWith(\"AF20_SG\")) {\n lookupKey = \"AF20_40\";\n } else if (frameType.startsWith(\"AF40_SG\")) {\n lookupKey = \"AF40_40\";\n }\n\n switch (lookupKey) {\n case \"NOF\":\n newSettings = {\n topThk: \"0mm\",\n sidesThk: \"0mm\",\n frameDepth: 0,\n };\n break;\n case \"AF20_40\":\n newSettings = {\n frameDepth: 103,\n topThk: \"20mm\",\n sidesThk: \"20mm\",\n doorStopOffset: \"42mm\",\n doorStopWidth: 20,\n doorStopDepth: 13,\n notchWidth: \"20mm\",\n notchDepth: \"40mm\",\n notchposition: 0.01,\n gasketDepth: 5,\n gasketWidth: 5,\n };\n if (frameType === \"AF20_40\") {\n newSettings.doorDepth = 40;\n }\n break;\n case \"AF20_50\":\n newSettings = {\n doorDepth: 50,\n frameDepth: 103,\n topThk: \"20mm\",\n sidesThk: \"20mm\",\n doorStopOffset: \"30mm\",\n doorStopWidth: 20,\n doorStopDepth: 13,\n notchWidth: \"20mm\",\n notchDepth: \"40mm\",\n notchposition: 0.01,\n gasketDepth: 5,\n gasketWidth: 5,\n };\n break;\n case \"AF40_40\":\n newSettings = {\n frameDepth: 103,\n topThk: \"40mm\",\n sidesThk: \"40mm\",\n doorStopOffset: \"42mm\",\n doorStopWidth: 20,\n doorStopDepth: 13,\n notchWidth: \"20mm\",\n notchDepth: \"40mm\",\n notchposition: 0.01,\n gasketDepth: 5,\n gasketWidth: 5,\n };\n if (frameType === \"AF40_40\") {\n newSettings.doorDepth = 40;\n }\n break;\n case \"AF40_50\":\n newSettings = {\n doorDepth: 50,\n frameDepth: 103,\n topThk: \"40mm\",\n sidesThk: \"40mm\",\n doorStopOffset: \"30mm\",\n doorStopWidth: 20,\n doorStopDepth: 13,\n notchWidth: \"20mm\",\n notchDepth: \"40mm\",\n notchposition: 0.01,\n gasketDepth: 5,\n gasketWidth: 5,\n };\n break;\n case \"WF_40\":\n newSettings = {\n doorDepth: 39.6,\n frameDepth: 103,\n topThk: \"31.6mm\",\n sidesThk: \"31.6mm\",\n doorStopOffset: \"0mm\",\n doorStopWidth: 16.4,\n doorStopDepth: 58.4,\n notchWidth: \"20mm\",\n notchDepth: \"40mm\",\n notchposition: 0.01,\n gasketDepth: 5,\n gasketWidth: 5,\n };\n break;\n case \"WF_50\":\n newSettings = {\n doorDepth: 51.6,\n frameDepth: 103,\n topThk: \"31.6mm\",\n sidesThk: \"31.6mm\",\n doorStopOffset: \"0mm\",\n doorStopWidth: 16,\n doorStopDepth: 46.4,\n notchWidth: \"20mm\",\n notchDepth: \"40mm\",\n notchposition: 0.01,\n gasketDepth: 5,\n gasketWidth: 5,\n };\n break;\n case \"WF_100\":\n newSettings = {\n doorDepth: 102,\n frameDepth: 102,\n topThk: \"52mm\",\n sidesThk: \"52mm\",\n doorStopOffset: \"17.6mm\",\n doorStopWidth: 16.4,\n doorStopDepth: 44.8,\n notchWidth: \"16mm\",\n notchDepth: \"66.5mm\",\n notchposition: 0.02,\n gasketDepth: 5,\n gasketWidth: 5,\n secondDoorStopWidth: 29,\n secondDoorStopDepth: 17.6,\n secondDoorStopOffset: 0,\n };\n break;\n case \"WF_FLI\":\n newSettings = {\n doorDepth: 51,\n frameDepth: 102,\n topThk: \"52mm\",\n sidesThk: \"52mm\",\n doorStopOffset: \"17.4mm\",\n doorStopWidth: 16.4,\n doorStopDepth: 34,\n notchWidth: \"14mm\",\n notchDepth: \"66mm\",\n notchposition: 0.02,\n gasketDepth: 5,\n gasketWidth: 5,\n secondDoorStopWidth: 29,\n secondDoorStopDepth: 17.6,\n secondDoorStopOffset: 0,\n };\n break;\n case \"WDGF_WDG100\":\n newSettings = {\n doorDepth: 86,\n frameDepth: 86,\n topThk: \"50mm\",\n sidesThk: \"50mm\",\n doorStopOffset: \"34mm\",\n doorStopWidth: 13,\n doorStopDepth: 30,\n notchWidth: \"14mm\",\n notchDepth: \"66mm\",\n notchposition: 0.02,\n gasketDepth: 4.5,\n gasketWidth: 5,\n secondDoorStopWidth: 23,\n secondDoorStopDepth: 30,\n secondDoorStopOffset: 13,\n };\n setGlassVisible(true);\n break;\n case \"MXF_40\":\n newSettings = {\n doorDepth: 38,\n frameDepth: 103,\n topThk: \"18mm\",\n sidesThk: \"18mm\",\n doorStopOffset: \"45mm\",\n doorStopWidth: 15,\n doorStopDepth: 15,\n notchWidth: \"20mm\",\n notchDepth: \"40mm\",\n notchposition: 0.01,\n gasketDepth: 5,\n gasketWidth: 5,\n };\n break;\n case \"MXF_50\":\n newSettings = {\n doorDepth: 50,\n frameDepth: 103,\n topThk: \"18.2mm\",\n sidesThk: \"18.2mm\",\n doorStopOffset: \"33mm\",\n doorStopWidth: 15,\n doorStopDepth: 15,\n notchWidth: \"20mm\",\n notchDepth: \"40mm\",\n notchposition: 0.01,\n gasketDepth: 5,\n gasketWidth: 5,\n };\n break;\n case \"MXCAF_40\":\n newSettings = {\n doorDepth: 38,\n frameDepth: 103,\n topThk: \"18mm\",\n sidesThk: \"18mm\",\n doorStopOffset: \"45mm\",\n doorStopWidth: 15,\n doorStopDepth: 15,\n notchWidth: \"20mm\",\n notchDepth: \"40mm\",\n notchposition: 0.01,\n gasketDepth: 5,\n gasketWidth: 5,\n };\n break;\n case \"MXCAF_50\":\n newSettings = {\n doorDepth: 50,\n frameDepth: 103,\n topThk: \"18.2mm\",\n sidesThk: \"18.2mm\",\n doorStopOffset: \"33mm\",\n doorStopWidth: 15,\n doorStopDepth: 15,\n notchWidth: \"20mm\",\n notchDepth: \"40mm\",\n notchposition: 0.01,\n gasketDepth: 5,\n gasketWidth: 5,\n };\n break;\n default:\n break;\n }\n\n const isMxCaf = frameType.startsWith(\"MXCAF\");\n setFrontCoverPanel(prev => ({ ...prev, visible: isMxCaf }));\n setBackCoverPanel(prev => ({ ...prev, visible: isMxCaf }));\n\n const { doorDepth, ...newFrameSettings } = newSettings;\n setDoorFrame(prev => ({ ...prev, ...newFrameSettings }));\n\n if (doorDepth !== undefined) {\n setDoor(prev => ({ ...prev, theDoorDepth: doorDepth }));\n }\n }, [frameType]);\n\n // --- Exterior Fanlight Logic ---\n useEffect(() => {\n if (!exteriorFanlight.visible) return;\n switch (exteriorFanlightType) {\n case \"WPFL\":\n setExteriorFanlight(prev => ({ ...prev, depth: doorFrame.frameDepth }));\n setTestExteriorFanlightMaterial(\"metal\");\n break;\n case \"ALDGFL\":\n setExteriorFanlight(prev => ({ ...prev, depth: doorFrame.frameDepth }));\n setTestExteriorFanlightMaterial(\"glass\");\n break;\n case \"ALSGFL\":\n setExteriorFanlight(prev => ({ ...prev, depth: 40 }));\n setTestExteriorFanlightMaterial(\"glass\");\n break;\n default:\n break;\n }\n }, [\n exteriorFanlight.visible,\n exteriorFanlightType,\n doorFrame.frameDepth,\n setTestExteriorFanlightMaterial,\n setExteriorFanlight,\n ]);\n\n useEffect(() => {\n setOcculus(prevOcculus => ({\n ...prevOcculus,\n depth: door.theDoorDepth,\n }));\n }, [door.theDoorDepth]);\n\n useEffect(() => {\n const topThkValue = parseInt(doorFrame.topThk) || 0;\n const exteriorFanlightHeight = exteriorFanlight.visible\n ? exteriorFanlight.height\n : 0;\n const newDoorHeight = totalHeight - topThkValue - exteriorFanlightHeight;\n\n setDoor(prevDoor => ({\n ...prevDoor,\n doorHeight: newDoorHeight > 0 ? newDoorHeight : 0,\n }));\n }, [\n totalHeight,\n doorFrame.topThk,\n exteriorFanlight.visible,\n exteriorFanlight.height,\n ]);\n\n useEffect(() => {\n const sidesThkValue = parseInt(doorFrame.sidesThk) || 0;\n const newDoorWidth = totalWidth - sidesThkValue * 2;\n setDoor(prevDoor => ({\n ...prevDoor,\n doorWidth: newDoorWidth > 0 ? newDoorWidth : 0,\n }));\n }, [totalWidth, doorFrame.sidesThk]);\n\n return (\n <ConfiguratorContext.Provider\n value={{\n is2D,\n setIs2D,\n isPlaneVisible,\n setIsPlaneVisible,\n isFrameVisible,\n setIsFrameVisible,\n cpid,\n setCpid,\n door,\n setDoor,\n doorFrame,\n setDoorFrame,\n interiorFanlight,\n setInteriorFanlight,\n exteriorFanlight,\n setExteriorFanlight,\n occulus,\n setOcculus,\n frontCoverPanel,\n setFrontCoverPanel,\n backCoverPanel,\n setBackCoverPanel,\n glass,\n setGlass,\n frameType,\n setFrameType,\n bodyType,\n setBodyType,\n totalHeight,\n setTotalHeight,\n totalWidth,\n setTotalWidth,\n exteriorFanlightType,\n setExteriorFanlightType,\n testDoorMaterial,\n setTestDoorMaterial,\n testFrameMaterial,\n setTestFrameMaterial,\n testGasketMaterial,\n setTestGasketMaterial,\n testInteriorFanlightMaterial,\n setTestInteriorFanlightMaterial,\n testExteriorFanlightMaterial,\n setTestExteriorFanlightMaterial,\n testOcculusInfillMaterial,\n setTestOcculusInfillMaterial,\n testGlassInfillMaterial,\n setTestGlassInfillMaterial,\n testDoorStopMaterial,\n setTestDoorStopMaterial,\n testHingeMaterial,\n setTestHingeMaterial,\n testFrontCoverPanelMaterial,\n setTestFrontCoverPanelMaterial,\n testBackCoverPanelMaterial,\n setTestBackCoverPanelMaterial,\n glassVisible,\n setGlassVisible,\n glassDepth,\n setGlassDepth,\n handleParseCpid,\n newPivotPosition,\n setNewPivotPosition,\n doorHeight,\n }}\n >\n {children}\n </ConfiguratorContext.Provider>\n );\n};\n\nexport const useConfigurator = () => {\n const context = useContext(ConfiguratorContext);\n if (!context) {\n throw new Error(\n \"useConfigurator must be used within a ConfiguratorProvider\"\n );\n }\n return context;\n};\n","import React, { useState, useMemo, useEffect, useRef } from \"react\";\nimport { Geometry, Base, Subtraction, Addition } from \"@react-three/csg\";\nimport { useConfigurator } from \"../context/DoorContext\";\nimport { useSpring, a } from \"@react-spring/three\";\nimport * as THREE from \"three\";\n\nconst placeholderMaterial = new THREE.MeshStandardMaterial({\n color: \"#cccccc\",\n roughness: 0.8,\n});\n\nconst placeholderMaterialforFrames = new THREE.MeshStandardMaterial({\n color: \"#000\",\n roughness: 0.8,\n});\n\nexport const availableMaterials = {\n black: new THREE.MeshStandardMaterial({ color: \"#000000\" }),\n metal: new THREE.MeshStandardMaterial({\n color: \"#0xaaaaaa\",\n metalness: 1.0,\n roughness: 0.4,\n }),\n darkgrey: new THREE.MeshStandardMaterial({ color: \"#5e5e5e\" }),\n grey: new THREE.MeshStandardMaterial({ color: \"#cccccc\" }),\n yellow: new THREE.MeshStandardMaterial({ color: \"#ffff00\" }),\n darkBrown: new THREE.MeshStandardMaterial({ color: \"#a0522d\" }),\n brown: new THREE.MeshStandardMaterial({ color: \"#d2b48c\" }),\n glass: new THREE.MeshStandardMaterial({\n color: \"#ffffff\",\n roughness: 0.1,\n transparent: true,\n opacity: 0.7,\n }),\n aluminum: new THREE.MeshStandardMaterial({\n color: \"#abb0aa\",\n metalness: 0.8,\n roughness: 0.5,\n envMapIntensity: 1.2,\n }),\n\n aluminumBrighter: new THREE.MeshStandardMaterial({\n color: \"#cdcdcd\",\n metalness: 0.8,\n roughness: 0.5,\n envMapIntensity: 1.2,\n }),\n\n aluminumExtraBrighter: new THREE.MeshStandardMaterial({\n color: \"#ececec\",\n metalness: 0.8,\n roughness: 0.5,\n envMapIntensity: 1.2,\n }),\n silver: new THREE.MeshStandardMaterial({\n color: \"#c0c0c0\",\n metalness: 1.0,\n roughness: 0.2,\n }),\n\n gold: new THREE.MeshStandardMaterial({\n color: \"#ffd700\",\n metalness: 1.0,\n roughness: 0.3,\n }),\n\n diamond: new THREE.MeshStandardMaterial({\n color: \"#e0f7fa\",\n metalness: 0.9,\n roughness: 0.05,\n transparent: true,\n opacity: 0.9,\n envMapIntensity: 1.5,\n }),\n};\n\n// Custom hook for door handle calculations\nfunction StandardHandle({\n position,\n doorDepthM,\n doorPivot,\n frameType, // 👈\n}: {\n position: [number, number, number];\n doorDepthM: number;\n doorPivot: \"left\" | \"right\";\n frameType: string;\n}) {\n // --- Base Dimensions ---\n const roseRadius = 0.035;\n\n // --- Thickness ---\n // default 5mm, but 8mm + 1–2mm if WDG frame\n const roseThickness =\n frameType === \"WDGF_WDG100\"\n ? 0.008 + 0.0015 // average: 9.5mm\n : 0.005; // 5mm default\n\n const handleRadius = 0.015;\n const handleLength = 0.2;\n\n // face offset based on thickness\n const faceZ = doorDepthM / 2 + roseThickness / 2;\n const connectorLength = handleLength / 3;\n\n const cornerFrontZ = faceZ + roseThickness + connectorLength;\n const cornerBackZ = -faceZ - roseThickness - connectorLength;\n const roseGapY = 0.07;\n\n return (\n <group position={position}>\n {/* Roses + keyholes */}\n {[faceZ, -faceZ].map((z, i) => (\n <React.Fragment key={i}>\n {frameType === \"WDGF_WDG100\" ? (\n // --- Capsule rose ---\n <group position-z={z}>\n {/* Center rectangle */}\n <mesh\n material={availableMaterials.aluminum}\n castShadow\n receiveShadow\n >\n <boxGeometry\n args={[roseRadius * 2, roseRadius * 2, roseThickness]}\n />\n </mesh>\n {/* Top rounded end */}\n <mesh\n position-y={roseRadius}\n rotation={[Math.PI / 2, Math.PI / 2, 0]}\n material={availableMaterials.aluminum}\n castShadow\n receiveShadow\n >\n <cylinderGeometry\n args={[\n roseRadius,\n roseRadius,\n roseThickness,\n 32,\n 1,\n false,\n 0,\n Math.PI,\n ]}\n />\n </mesh>\n {/* Bottom rounded end */}\n <mesh\n position-y={-roseRadius}\n rotation={[-Math.PI / 2, Math.PI / 2, 0]}\n material={availableMaterials.aluminum}\n castShadow\n receiveShadow\n >\n <cylinderGeometry\n args={[\n roseRadius,\n roseRadius,\n roseThickness,\n 32,\n 1,\n false,\n 0,\n Math.PI,\n ]}\n />\n </mesh>\n </group>\n ) : (\n // --- Round rose ---\n <mesh\n rotation={[Math.PI / 2, 0, 0]}\n position-z={z}\n material={availableMaterials.aluminum}\n castShadow\n receiveShadow\n >\n <cylinderGeometry\n args={[roseRadius, roseRadius, roseThickness, 48]}\n />\n </mesh>\n )}\n\n {frameType === \"WDGF_WDG100\" ? (\n <group position-z={z} position-y={-(0.08 + roseGapY)}>\n {/* Center rectangle */}\n <mesh\n material={availableMaterials.aluminum}\n castShadow\n receiveShadow\n >\n <boxGeometry\n args={[\n (roseRadius - 0.008) * 2,\n (roseRadius - 0.008) * 2,\n roseThickness,\n ]}\n />\n </mesh>\n\n {/* Top rounded end */}\n <mesh\n position-y={roseRadius - 0.008}\n rotation={[Math.PI / 2, Math.PI / 2, 0]}\n material={availableMaterials.aluminum}\n castShadow\n receiveShadow\n >\n <cylinderGeometry\n args={[\n roseRadius - 0.008,\n roseRadius - 0.008,\n roseThickness,\n 32,\n 1,\n false,\n 0,\n Math.PI,\n ]}\n />\n </mesh>\n\n {/* Bottom rounded end */}\n <mesh\n position-y={-(roseRadius - 0.008)}\n rotation={[-Math.PI / 2, Math.PI / 2, 0]}\n material={availableMaterials.aluminum}\n castShadow\n receiveShadow\n >\n <cylinderGeometry\n args={[\n roseRadius - 0.008,\n roseRadius - 0.008,\n roseThickness,\n 32,\n 1,\n false,\n 0,\n Math.PI,\n ]}\n />\n </mesh>\n </group>\n ) : (\n <mesh\n rotation={[Math.PI / 2, 0, 0]}\n position-z={z}\n position-y={-(0.08 + roseGapY)}\n material={availableMaterials.aluminum}\n castShadow\n receiveShadow\n >\n <cylinderGeometry\n args={[roseRadius, roseRadius, roseThickness, 48]}\n />\n </mesh>\n )}\n\n <group\n position={[\n 0,\n -(0.08 + roseGapY), // 👈 same Y as small rose\n z + (z > 0 ? roseThickness : -roseThickness), // 👈 accounts for thickness\n ]}\n castShadow\n receiveShadow\n >\n <mesh\n rotation={[Math.PI / 2, 0, 0]}\n position={[0, 0.0075, 0]}\n material={availableMaterials.aluminumBrighter}\n >\n <cylinderGeometry args={[0.01, 0.01, roseThickness, 32]} />\n </mesh>\n <mesh\n position={[0, -0.0075, 0]}\n material={availableMaterials.aluminumBrighter}\n >\n <boxGeometry args={[0.01, 0.015, roseThickness]} />\n </mesh>\n </group>\n </React.Fragment>\n ))}\n\n {/* Handles (same as before)… */}\n <group scale={[doorPivot === \"left\" ? -1 : 1, 1, 1]}>\n {/* Front handle */}\n <group position={[0, 0, -0.01]}>\n <mesh\n position={[0, 0, faceZ + roseThickness + connectorLength / 2]}\n rotation={[Math.PI / 2, 0, 0]}\n castShadow\n receiveShadow\n material={availableMaterials.aluminum}\n >\n <cylinderGeometry\n args={[handleRadius, handleRadius, connectorLength, 48]}\n />\n </mesh>\n <mesh\n position={[0, 0, cornerFrontZ]}\n castShadow\n receiveShadow\n material={availableMaterials.aluminum}\n >\n <sphereGeometry args={[handleRadius, 32, 32]} />\n </mesh>\n <mesh\n position={[handleLength / 2, 0, cornerFrontZ]}\n rotation={[0, 0, Math.PI / 2]}\n castShadow\n receiveShadow\n material={availableMaterials.aluminum}\n >\n <cylinderGeometry\n args={[handleRadius, handleRadius, handleLength, 48]}\n />\n </mesh>\n </group>\n\n {/* Back handle */}\n <group position={[0, 0, 0.01]}>\n <mesh\n position={[0, 0, -faceZ - roseThickness - connectorLength / 2]}\n rotation={[Math.PI / 2, 0, 0]}\n castShadow\n receiveShadow\n material={availableMaterials.aluminum}\n >\n <cylinderGeometry\n args={[handleRadius, handleRadius, connectorLength, 48]}\n />\n </mesh>\n <mesh\n position={[0, 0, cornerBackZ]}\n castShadow\n receiveShadow\n material={availableMaterials.aluminum}\n >\n <sphereGeometry args={[handleRadius, 32, 32]} />\n </mesh>\n <mesh\n position={[handleLength / 2, 0, cornerBackZ]}\n rotation={[0, 0, Math.PI / 2]}\n castShadow\n receiveShadow\n material={availableMaterials.aluminum}\n >\n <cylinderGeometry\n args={[handleRadius, handleRadius, handleLength, 48]}\n />\n </mesh>\n </group>\n </group>\n </group>\n );\n}\n\nconst MergedPlate = ({ plateMaterial, roseThickness, faceZ }) => {\n const geometry = useMemo(() => {\n // Left half - sharp edges\n const leftHalf = new THREE.BoxGeometry(0.05, 0.24, roseThickness);\n leftHalf.translate(-0.025, 0, 0); // Center the left half\n\n const shape = new THREE.Shape();\n\n const width = 0.1;\n const height = 0.24;\n const radius = 0.01;\n\n shape.moveTo(-width / 2, -height / 2);\n shape.lineTo(-width / 2, height / 2);\n shape.lineTo(width / 2 - radius, height / 2);\n shape.absarc(\n width / 2 - radius,\n height / 2 - radius,\n radius,\n Math.PI / 2,\n 0,\n true\n );\n shape.lineTo(width / 2, -height / 2 + radius);\n shape.absarc(\n width / 2 - radius,\n -height / 2 + radius,\n radius,\n 0,\n -Math.PI / 2,\n true\n );\n shape.lineTo(-width / 2, -height / 2);\n\n const extrudeSettings = {\n steps: 2,\n depth: roseThickness,\n bevelEnabled: false,\n };\n\n return new THREE.ExtrudeGeometry(shape, extrudeSettings);\n }, [roseThickness]);\n\n return (\n <group position-z={faceZ}>\n <mesh\n geometry={geometry}\n material={plateMaterial}\n castShadow\n receiveShadow\n />\n </group>\n );\n};\n\nfunction GlassHandle({\n position,\n doorDepthM,\n doorPivot,\n}: {\n position: [number, number, number];\n doorDepthM: number;\n doorPivot: \"left\" | \"right\";\n}) {\n // --- Dimensions ---\n const roseRadius = 0.035;\n const roseThickness = 0.005;\n const handleRadius = 0.015;\n const handleLength = 0.2;\n const faceZ = doorDepthM / 2 + roseThickness / 2;\n const connectorLength = handleLength / 3;\n const cornerFrontZ = faceZ + roseThickness + connectorLength;\n const cornerBackZ = -faceZ - roseThickness - connectorLength;\n return (\n <group position={position}>\n {/* Backplate/Roses (both sides of glass door) */}\n {[faceZ, -faceZ].map((z, i) => (\n <React.Fragment key={i}>\n {/* Rose disc */}\n <mesh\n rotation={[Math.PI / 2, 0, 0]}\n position-z={z + (z > 0 ? roseThickness : -roseThickness) + 0.002}\n material={availableMaterials.aluminum}\n castShadow\n receiveShadow\n >\n <cylinderGeometry\n args={[roseRadius, roseRadius, roseThickness, 48]}\n />\n </mesh>\n\n {/* Keyhole shape (using r3f CSG instead of manual merge) */}\n <mesh\n position={[0, -0.08, z + (z > 0 ? roseThickness : -roseThickness)]}\n castShadow\n receiveShadow\n >\n {/* Circular part (rotated 90° on X) */}\n <mesh\n rotation={[Math.PI / 2, 0, 0]}\n position={[0, 0.0075, 0]}\n material={availableMaterials.aluminum}\n >\n <cylinderGeometry args={[0.01, 0.01, roseThickness, 32]} />\n </mesh>\n\n {/* Rectangular part (placed just below cylinder) */}\n <mesh\n position={[0, -0.0075, 0]}\n material={availableMaterials.aluminum}\n >\n <boxGeometry args={[0.01, 0.015, roseThickness]} />\n </mesh>\n </mesh>\n </React.Fragment>\n ))}\n\n {/* Handle rods */}\n <group scale-x={doorPivot === \"left\" ? -1 : 1}>\n {[faceZ, -faceZ].map((z, i) => (\n <MergedPlate\n key={`plate-${i}`}\n faceZ={z}\n plateMaterial={availableMaterials.aluminumExtraBrighter}\n roseThickness={roseThickness}\n />\n ))}\n {/* Front handle */}\n <group>\n {/* Horizontal cylinder */}\n <mesh\n position={[handleLength / 2, 0, faceZ + connectorLength]}\n rotation={[0, 0, Math.PI / 2]}\n material={availableMaterials.aluminum}\n castShadow\n receiveShadow\n >\n <cylinderGeometry\n args={[handleRadius, handleRadius, handleLength, 48]}\n />\n </mesh>\n {/* Vertical cylinder */}\n <mesh\n position={[0, 0, faceZ + connectorLength / 2]}\n rotation={[Math.PI / 2, 0, 0]}\n material={availableMaterials.aluminum}\n castShadow\n receiveShadow\n >\n <cylinderGeometry\n args={[handleRadius, handleRadius, connectorLength, 48]}\n />\n </mesh>\n {/* Corner sphere for radius effect */}\n <mesh\n position={[0, 0, faceZ + connectorLength]}\n material={availableMaterials.aluminum}\n castShadow\n receiveShadow\n >\n <sphereGeometry args={[handleRadius, 32, 32]} />\n </mesh>\n </group>\n\n {/* Back handle */}\n <group>\n {/* Horizontal cylinder */}\n <mesh\n position={[handleLength / 2, 0, -(faceZ + connectorLength)]}\n rotation={[0, 0, Math.PI / 2]}\n material={availableMaterials.aluminum}\n castShadow\n receiveShadow\n >\n <cylinderGeometry\n args={[handleRadius, handleRadius, handleLength, 48]}\n />\n </mesh>\n {/* Vertical cylinder */}\n <mesh\n position={[0, 0, -(faceZ + connectorLength / 2)]}\n rotation={[Math.PI / 2, 0, 0]}\n material={availableMaterials.aluminum}\n castShadow\n receiveShadow\n >\n <cylinderGeometry\n args={[handleRadius, handleRadius, connectorLength, 48]}\n />\n </mesh>\n {/* Corner sphere for radius effect */}\n <mesh\n position={[0, 0, -(faceZ + connectorLength)]}\n material={availableMaterials.aluminum}\n castShadow\n receiveShadow\n >\n <sphereGeometry args={[handleRadius, 32, 32]} />\n </mesh>\n </group>\n </group>\n </group>\n );\n}\n\nfunction DoorHandle({\n bodyType,\n handleX,\n handleHeightM,\n doorDepthM,\n doorPivot,\n}: {\n bodyType: string;\n handleX: number;\n handleHeightM: number;\n doorDepthM: number;\n doorPivot: \"left\" | \"right\";\n}) {\n const isSingleGlass = [\"SG8\", \"SG10\", \"SG12\"].includes(bodyType);\n const handlePos: [number, number, number] = [handleX, handleHeightM, 0];\n const frameType = useConfigurator().frameType;\n return isSingleGlass ? (\n <GlassHandle\n position={[handleX, handleHeightM, -0.0024]}\n doorDepthM={doorDepthM}\n doorPivot={doorPivot}\n />\n ) : (\n <StandardHandle\n position={handlePos}\n doorDepthM={doorDepthM}\n doorPivot={doorPivot}\n frameType={frameType}\n />\n );\n}\n\nfunction GlassHinge({\n position,\n pivot,\n frameSideWidth,\n doorDepthM,\n material,\n gasketMaterial,\n}) {\n const plateWidth = 130 / 1000;\n const plateHeight = 55 / 1000;\n const plateThickness = 8 / 1000;\n const gasketThickness = 1 / 1000;\n const pivotRadius = 10 / 1000;\n const pivotHeight = plateHeight;\n\n const sideMultiplier = pivot === \"left\" ? 1 : -1;\n\n const plateOffsetX = sideMultiplier * (plateWidth / 2 + frameSideWidth);\n\n const holeRadius = 10 / 1000;\n const holeSpacingX = 45 / 1000;\n\n return (\n <group position={position}>\n <mesh material={material} castShadow receiveShadow position-x={0.01}>\n <cylinderGeometry args={[pivotRadius, pivotRadius, pivotHeight, 32]} />\n </mesh>\n\n <group position-x={plateOffsetX}>\n {/* Back Plate */}\n <mesh\n position-z={-(doorDepthM / 2) - plateThickness / 2 - gasketThickness}\n material={material}\n castShadow\n receiveShadow\n >\n <boxGeometry args={[plateWidth, plateHeight, plateThickness]} />\n </mesh>\n {/* Back Gasket */}\n <mesh\n position-z={-(doorDepthM / 2) - gasketThickness / 2}\n material={gasketMaterial}\n castShadow\n receiveShadow\n >\n <boxGeometry args={[plateWidth, plateHeight, gasketThickness]} />\n </mesh>\n {/* Front Plate with Holes */}\n <mesh\n position-z={doorDepthM / 2 + plateThickness / 2 + gasketThickness}\n castShadow\n receiveShadow\n >\n <Geometry useGroups>\n <Base material={material}>\n <boxGeometry args={[plateWidth, plateHeight, plateThickness]} />\n </Base>\n {/* Left Hole */}\n <Subtraction\n position={[-sideMultiplier * (holeSpacingX / 2), 0, 0]}\n rotation={[Math.PI / 2, 0, 0]}\n >\n <cylinderGeometry\n args={[holeRadius, holeRadius, plateThickness + 0.01, 32]}\n />\n </Subtraction>\n {/* Right Hole */}\n <Subtraction\n position={[sideMultiplier * (holeSpacingX / 2), 0, 0]}\n rotation={[Math.PI / 2, 0, 0]}\n >\n <cylinderGeometry\n args={[holeRadius, holeRadius, plateThickness + 0.01, 32]}\n />\n </Subtraction>\n </Geometry>\n </mesh>\n\n {/* Front Gasket */}\n <mesh\n position-z={doorDepthM / 2 + gasketThickness / 2}\n material={gasketMaterial}\n castShadow\n receiveShadow\n >\n <boxGeometry args={[plateWidth, plateHeight, gasketThickness]} />\n </mesh>\n </group>\n </group>\n );\n}\n\nfunction DoorStopCuts({\n visible,\n width,\n height,\n stopWidth,\n stopDepth,\n stopPositionZ,\n centerZ,\n glassDepthOffset = 0,\n material,\n setName,\n}: DoorStopCutsProps) {\n if (!visible) return null;\n\n return (\n <>\n {/* Top cut only */}\n <Subtraction\n name={`cut-top-${setName}`}\n material={material}\n position={[\n 0,\n height / 2 - stopWidth / 2 + 0.0001,\n stopPositionZ - centerZ,\n ]}\n >\n <boxGeometry args={[width + 0.01, stopWidth, stopDepth + 0.01]} />\n </Subtraction>\n\n {/* Left cut */}\n <Subtraction\n name={`cut-left-${setName}`}\n material={material}\n position={[\n -width / 2 + stopWidth / 2 - 0.0001,\n 0,\n stopPositionZ - centerZ,\n ]}\n >\n <boxGeometry args={[stopWidth, height + 0.01, stopDepth + 0.01]} />\n </Subtraction>\n\n {/* Right cut */}\n <Subtraction\n name={`cut-right-${setName}`}\n material={material}\n position={[\n width / 2 - stopWidth / 2 + 0.0001,\n 0,\n stopPositionZ - centerZ,\n ]}\n >\n <boxGeometry args={[stopWidth, height + 0.01, stopDepth + 0.01]} />\n </Subtraction>\n </>\n );\n}\n\ntype DoorModelsProps = {\n doorName?: string;\n};\n\ntype DoorStopCutsProps = {\n visible: boolean;\n width: number;\n height: number;\n stopWidth: number;\n stopDepth: number;\n stopPositionZ: number;\n centerZ: number;\n glassDepthOffset?: number;\n material: THREE.Material;\n setName: string;\n};\n\nfunction DoorModels({ doorName }: DoorModelsProps) {\n const {\n is2D,\n totalWidth,\n totalHeight,\n isPlaneVisible,\n isFrameVisible,\n door,\n doorFrame,\n interiorFanlight,\n exteriorFanlight,\n occulus,\n glass,\n frontCoverPanel,\n backCoverPanel,\n frameType,\n bodyType,\n exteriorFanlightType,\n testDoorMaterial,\n testFrameMaterial,\n testGasketMaterial,\n testInteriorFanlightMaterial,\n testExteriorFanlightMaterial,\n testOcculusInfillMaterial,\n testGlassInfillMaterial,\n testDoorStopMaterial,\n testHingeMaterial,\n glassVisible,\n testFrontCoverPanelMaterial,\n testBackCoverPanelMaterial,\n glassDepth,\n cpid,\n handleParseCpid,\n } = useConfigurator();\n\n useEffect(() => {\n if (doorName) {\n handleParseCpid(doorName);\n }\n }, [doorName, handleParseCpid]);\n\n // here i get material names from context\n const { doorMaterial: doorMaterialName } = door;\n const {\n frameMaterial: frameMaterialName,\n gasketMaterial: gasketMaterialName,\n doorStopMaterial: doorStopMaterialName,\n hingeMaterial: hingeMaterialName,\n } = doorFrame;\n const { material: interiorFanlightMaterialName } = interiorFanlight;\n const { material: exteriorFanlightMaterialName } = exteriorFanlight;\n const { material: occulusInfillMaterialName } = occulus;\n const { material: glassInfillMaterialName } = glass;\n\n const { material: frontCoverPanelMaterialName } = frontCoverPanel;\n const { material: backCoverPanelMaterialName } = backCoverPanel;\n\n // --- Material Logic ---\n const doorMaterial = useMemo(\n () =>\n availableMaterials[testDoorMaterial] ||\n availableMaterials[doorMaterialName] ||\n placeholderMaterial,\n [testDoorMaterial, doorMaterialName]\n );\n const frameMaterial = useMemo(\n () =>\n availableMaterials[testFrameMaterial] ||\n availableMaterials[frameMaterialName] ||\n placeholderMaterialforFrames,\n [testFrameMaterial, frameMaterialName]\n );\n const gasketMaterial = useMemo(\n () =>\n availableMaterials[testGasketMaterial] ||\n availableMaterials[gasketMaterialName] ||\n new THREE.MeshStandardMaterial({ color: \"#111111\" }),\n [testGasketMaterial, gasketMaterialName]\n );\n\n const doorStopMaterial = useMemo(() => {\n return (\n availableMaterials[testDoorStopMaterial] ||\n availableMaterials[\n (doorStopMaterialName as keyof typeof availableMaterials) || \"\"\n ] ||\n frameMaterial\n );\n }, [testDoorStopMaterial, doorStopMaterialName, frameType, frameMaterial]);\n\n const interiorFanlightMaterial = useMemo(\n () =>\n availableMaterials[testInteriorFanlightMaterial] ||\n availableMaterials[interiorFanlightMaterialName] ||\n placeholderMaterial,\n [testInteriorFanlightMaterial, interiorFanlightMaterialName]\n );\n const exteriorFanlightMaterial = useMemo(\n () =>\n availableMaterials[testExteriorFanlightMaterial] ||\n availableMaterials[exteriorFanlightMaterialName] ||\n placeholderMaterial,\n [testExteriorFanlightMaterial, exteriorFanlightMaterialName]\n );\n const occulusInfillMaterial = useMemo(\n () =>\n availableMaterials[testOcculusInfillMaterial] ||\n availableMaterials[occulusInfillMaterialName] ||\n placeholderMaterial,\n [testOcculusInfillMaterial, occulusInfillMaterialName]\n );\n const glassInfillMaterial = useMemo(\n () =>\n availableMaterials[testGlassInfillMaterial] ||\n availableMaterials[glassInfillMaterialName] ||\n placeholderMaterial,\n [testGlassInfillMaterial, glassInfillMaterialName]\n );\n\n const hingeBodyMaterial = useMemo(\n () =>\n availableMaterials[testHingeMaterial] ||\n availableMaterials[hingeMaterialName] ||\n new THREE.MeshStandardMaterial({\n color: \"#d4d4d4\",\n metalness: 1.0,\n roughness: 0.4,\n }),\n [testHingeMaterial, hingeMaterialName]\n );\n\n const frontCoverPanelMaterial = useMemo(\n () =>\n availableMaterials[testFrontCoverPanelMaterial] ||\n availableMaterials[frontCoverPanelMaterialName] ||\n placeholderMaterial,\n [testFrontCoverPanelMaterial, frontCoverPanelMaterialName]\n );\n\n const backCoverPanelMaterial = useMemo(\n () =>\n availableMaterials[testBackCoverPanelMaterial] ||\n availableMaterials[backCoverPanelMaterialName] ||\n placeholderMaterial,\n [testBackCoverPanelMaterial, backCoverPanelMaterialName]\n );\n\n const hingeAccentMaterial = useMemo(\n () =>\n new THREE.MeshStandardMaterial({\n color: \"#1a1a1a\",\n roughness: 0.1,\n }),\n []\n );\n\n // --- Dimension calculations ---\n const { doorWidth, doorHeight, theDoorDepth, doorPivot, doorOpening } = door;\n const {\n frameDepth,\n topThk,\n sidesThk,\n doorStopWidth,\n doorStopDepth,\n doorStopOffset,\n notchWidth,\n notchDepth,\n notchposition,\n gasketWidth,\n gasketDepth,\n secondDoorStopWidth,\n secondDoorStopDepth,\n secondDoorStopOffset,\n } = doorFrame;\n\n const initialDoorHeight = useRef<number>(doorHeight);\n\n // useEffect(() => {\n // initialDoorHeight.current = doorHeight;\n // }, [cpid]);\n\n const { height: interiorFanlightHeightValue } = interiorFanlight;\n const {\n height: exteriorFanlightHeightValue,\n depth: exteriorFanlightDepthValue,\n } = exteriorFanlight;\n const {\n x1: occulusX1,\n x2: occulusX2,\n y1: occulusY1,\n y2: occulusY2,\n depth: occulusInfillDepth,\n } = occulus;\n const { width: architraveWidth, depth: architraveDepth } = frontCoverPanel;\n\n const interiorFanlightHeight = interiorFanlight.visible\n ? interiorFanlightHeightValue\n : 0;\n const mainDoorHeight = doorHeight - interiorFanlightHeight;\n\n const topThkValue = parseInt(topThk) || 20;\n const sidesThkValue = parseInt(sidesThk) || 20;\n\n // Convert dimensions from mm to meters\n const doorWidthM = doorWidth / 1000;\n const mainDoorHeightM = mainDoorHeight / 1000;\n const interiorFanlightHeightM = interiorFanlightHeight / 1000;\n const totalOpeningHeightM = doorHeight / 1000;\n const doorDepthM = theDoorDepth / 1000;\n const frameDepthM = frameDepth / 1000;\n const topFrameWidthM = topThkValue / 1000;\n const sidesFrameWidthM = sidesThkValue / 1000;\n const exteriorFanlightHeightM = exteriorFanlight.visible\n ? exteriorFanlightHeightValue / 1000\n : 0;\n const exteriorFanlightDepthM = exteriorFanlightDepthValue / 1000;\n const occulusX1M = occulusX1 / 1000;\n const occulusX2M = occulusX2 / 1000;\n const occulusY1M = occulusY1 / 1000;\n const occulusY2M = occulusY2 / 1000;\n const occulusInfillDepthM = occulusInfillDepth / 1000;\n const doorStopWidthM = doorStopWidth / 1000;\n const doorStopDepthM = doorStopDepth / 1000;\n\n // Architrave Dimensions\n const architraveProfileM = architraveWidth / 1000;\n const architraveDepthM = architraveDepth / 1000;\n\n // Gasket Dimensions\n const gasketWidthM = gasketWidth / 1000;\n const gasketDepthM = gasketDepth / 1000;\n\n const doorStopOffsetValue = parseInt(doorStopOffset);\n const doorStopOffsetFromEdgeM = doorStopOffsetValue / 1000;\n\n const notchDepthValue = parseInt(notchDepth) || 40;\n const notchWidthValue = parseInt(notchWidth) || 20;\n\n const notchWidthM = notchWidthValue / 1000;\n const notchDepthM = notchDepthValue / 1000;\n\n const isOpeningIn = doorOpening === \"in\";\n\n const doorStopPositionZ = useMemo(\n () =>\n isOpeningIn\n ? frameDepthM / 2 - doorStopOffsetFromEdgeM - doorStopDepthM / 2\n : -frameDepthM / 2 + doorStopOffsetFromEdgeM + doorStopDepthM / 2,\n [isOpeningIn, frameDepthM, doorStopOffsetFromEdgeM, doorStopDepthM]\n );\n\n const gasketZPosition = useMemo(\n () =>\n isOpeningIn\n ? doorStopPositionZ - doorStopDepthM / 2 - gasketDepthM / 2\n : doorStopPositionZ + doorStopDepthM / 2 + gasketDepthM / 2,\n [isOpeningIn, doorStopPositionZ, doorStopDepthM, gasketDepthM]\n );\n const secondDoorStopWidthM = secondDoorStopWidth / 1000;\n const secondDoorStopDepthM = secondDoorStopDepth / 1000;\n const secondDoorStopPositionZ = isOpeningIn\n ? frameDepthM / 2 - secondDoorStopDepthM / 2\n : -frameDepthM / 2 + secondDoorStopDepthM / 2;\n\n // Position the first glass panel against the primary doorstop\n\n const secondGasketZPosition = isOpeningIn\n ? secondDoorStopPositionZ - secondDoorStopDepthM / 2 - gasketDepthM / 2\n : secondDoorStopPositionZ + secondDoorStopDepthM / 2 + gasketDepthM / 2;\n\n const doorCenterZ = useMemo(() => {\n if (frameType === \"WF_FLI\") {\n if (isOpeningIn) {\n return frameDepthM / 2 - doorDepthM / 2;\n } else {\n return -frameDepthM / 2 + doorDepthM / 2;\n }\n }\n\n if (frameType === \"WDGF_WDG100\" || frameType === \"WF_100\") {\n return 0;\n } else {\n if (isOpeningIn) {\n const gasketBackFaceZ = gasketZPosition - gasketDepthM / 2;\n return gasketBackFaceZ - doorDepthM / 2;\n } else {\n const gasketFrontFaceZ = gasketZPosition + gasketDepthM / 2;\n return gasketFrontFaceZ + doorDepthM / 2;\n }\n }\n }, [\n isOpeningIn,\n gasketZPosition,\n gasketDepthM,\n doorDepthM,\n frameType,\n frameDepthM,\n ]);\n const GlassPanelDepthM = glassDepth / 1000;\n\n const frontGlassOffsetZ = doorDepthM / 2 + GlassPanelDepthM / 2;\n const backGlassOffsetZ = -doorDepthM / 2 - GlassPanelDepthM / 2;\n\n // --- Door Stop Positions on Door ---\n const doorStopOffsetOnDoor =\n frameType === \"WDGF_WDG100\" ? secondDoorStopWidthM / 2 : doorStopDepthM / 2;\n\n const exteriorFanlightZPosition =\n exteriorFanlightType === \"ALSGFL\"\n ? 0 // Center it\n : isOpeningIn\n ? -frameDepthM / 2 + exteriorFanlightDepthM / 2\n : frameDepthM / 2 - exteriorFanlightDepthM / 2;\n\n const occulusWidthM = doorWidthM - occulusX1M - occulusX2M;\n const occulusHeightM = mainDoorHeightM - occulusY1M - occulusY2M;\n const occulusPositionXM = (occulusX1M - occulusX2M) / 2;\n const occulusPositionYM = (occulusY2M - occulusY1M) / 2;\n\n const [isOpen, setIsOpen] = useState(false);\n const hingeSideX = doorPivot === \"left\" ? -doorWidthM / 2 : doorWidthM / 2;\n\n const leftGlass_Z =\n -frameDepthM / 2 + GlassPanelDepthM / 2 - GlassPanelDepthM;\n const rightGlass_Z =\n frameDepthM / 2 - GlassPanelDepthM / 2 + GlassPanelDepthM;\n // --- PIVOT ---\n const hingeZ = useMemo(() => {\n if (frameType === \"WF_FLI\") {\n if (isOpeningIn) {\n return doorCenterZ - doorDepthM / 2;\n } else {\n return doorCenterZ + doorDepthM / 2;\n }\n }\n return isOpeningIn ? -frameDepthM / 2 : frameDepthM / 2;\n }, [frameType, isOpeningIn, doorCenterZ, doorDepthM, frameDepthM]);\n\n const doorOffsetZ = useMemo(\n () => doorCenterZ - hingeZ,\n [doorCenterZ, hingeZ]\n );\n\n const directionMultiplier = doorOpening === \"in\" ? 1 : -1;\n const { rotation } = useSpring({\n rotation: isOpen\n ? [\n 0,\n (doorPivot === \"left\" ? Math.PI / 2 : -Math.PI / 2) *\n directionMultiplier,\n 0,\n ]\n : [0, 0, 0],\n config: { mass: 1, tension: 100, friction: 20 },\n });\n\n const handleClick = () => setIsOpen(!isOpen);\n\n const totalFrameWidth = doorWidthM + sidesFrameWidthM * 2;\n const totalFrameHeightM = totalOpeningHeightM + topFrameWidthM;\n\n // --- Centering Logic ---\n const yCenteringOffset = -topFrameWidthM / 2;\n\n const sideFrameCenterY = topFrameWidthM / 2;\n\n const interiorFanlightYPosition =\n totalOpeningHeightM / 2 - interiorFanlightHeightM / 2;\n const doorYPosition = -totalOpeningHeightM / 2 + mainDoorHeightM / 2;\n const topFrameCenterY = totalOpeningHeightM / 2 + topFrameWidthM / 2;\n const topOfFrameY = topFrameCenterY + topFrameWidthM / 2;\n const exteriorFanlightYPosition = topOfFrameY + exteriorFanlightHeightM / 2;\n\n const frontArchitraveZ = frameDepthM / 2 + architraveDepthM / 2;\n const backArchitraveZ = -frameDepthM / 2 - architraveDepthM / 2;\n\n const sideArchitraveHeight = totalOpeningHeightM;\n const sideArchitraveCenterY = 0;\n\n const leftArchitraveX = -doorWidthM / 2 - architraveProfileM / 2;\n const rightArchitraveX = doorWidthM / 2 + architraveProfileM / 2;\n\n const topArchitraveY = totalOpeningHeightM / 2 + architraveProfileM / 2;\n const topArchitraveWidth = doorWidthM + 2 * architraveProfileM;\n\n // --- Handle placement ---\n // Handle local placement on the DOOR LEAF so it follows rotation\n const handleCenterYFromDoorBottom = 1.0; // 1000 mm from bottom by default\n const safeHandleY = Math.min(\n Math.max(handleCenterYFromDoorBottom, 0.25),\n mainDoorHeightM - 0.25\n );\n const handleHeightM = -mainDoorHeightM / 2 + safeHandleY; // convert to door local Y\n\n // Check if the door is a glass type to adjust handle positioning\n const isSingleGlass = [\"SG8\", \"SG10\", \"SG12\"].includes(bodyType);\n const nonHingeSideX = doorPivot === \"left\" ? doorWidthM / 2 : -doorWidthM / 2;\n\n let handleX;\n\n if (isSingleGlass) {\n // For the glass handle, position it right at the edge.\n // The MergedPlate in GlassHandle is 0.1m wide, so we offset by half its width (0.05m).\n const plateHalfWidth = 0.05;\n handleX =\n nonHingeSideX + (doorPivot === \"left\" ? -plateHalfWidth : plateHalfWidth);\n } else {\n // For standard handles, keep the original margin.\n const latchMarginM = 0.08; // 80 mm from latch edge\n handleX =\n nonHingeSideX + (doorPivot === \"left\" ? -latchMarginM : latchMarginM);\n }\n // --- Primary Gasket Edge Position Calculations ---\n const topGasketYPosition =\n totalOpeningHeightM / 2 - doorStopWidthM + gasketWidthM / 2;\n const leftGasketXPosition =\n -doorWidthM / 2 + doorStopWidthM - gasketWidthM / 2;\n const rightGasketXPosition =\n doorWidthM / 2 - doorStopWidthM + gasketWidthM / 2;\n\n // --- Second Gasket ---\n\n const secondTopGasketYPosition =\n totalOpeningHeightM / 2 - secondDoorStopWidthM + gasketWidthM / 2;\n\n const secondLeftGasketXPosition =\n -doorWidthM / 2 + secondDoorStopWidthM - gasketWidthM / 2;\n\n const secondRightGasketXPosition =\n doorWidthM / 2 - secondDoorStopWidthM + gasketWidthM / 2;\n // --- HINGE CALCULATIONS ---\n const hingeTotalHeightM = 120 / 1000;\n const hingeRadiusM = 8 / 1000;\n const capHeightM = 4 / 1000;\n const separatorHeightM = 4 / 1000;\n\n const barrelPartHeight =\n (hingeTotalHeightM - capHeightM * 2 - separatorHeightM) / 2;\n\n // --- HINGE VISIBILITY LOGIC ---\n const isGlassDoor = useMemo(\n () => [\"SG8\", \"SG10\", \"SG12\"].includes(bodyType),\n [bodyType]\n );\n\n const pivotNewPosition = (doorHeight - initialDoorHeight.current) / 2 / 1000;\n\n console.log(\"////////\");\n\n console.log(\"initialDoorHeight.current\", initialDoorHeight.current);\n console.log(\"doorHeight\", doorHeight);\n console.log(\"pivotNewPosition\", pivotNewPosition);\n\n console.log(\"////////\");\n\n // Calculate evenly spaced hinge positions\n const standardHingeYPositions = useMemo(() => {\n const numHinges = 4;\n const topMargin = 180 / 1000;\n const bottomMargin = 180 / 1000;\n const availableHeight = mainDoorHeightM - topMargin - bottomMargin;\n const spacing = availableHeight / (numHinges - 1);\n const positions: number[] = [];\n for (let i = 0; i < numHinges; i++) {\n positions.push(mainDoorHeightM / 2 - topMargin - i * spacing);\n }\n return positions;\n }, [mainDoorHeightM]);\n\n // Y positions for the new glass hinges\n const glassHingeYPositions = useMemo(() => {\n const topMargin = 250 / 1000;\n const secondTopMargin = 450 / 1000;\n const bottomMargin = 250 / 1000;\n\n const top = mainDoorHeightM / 2 - topMargin;\n const secondTop = mainDoorHeightM / 2 - secondTopMargin;\n const bottom = -mainDoorHeightM / 2 + bottomMargin;\n\n return [top, secondTop, bottom];\n }, [mainDoorHeightM]);\n\n const isStandardHingeVisible = useMemo(() => {\n if (isGlassDoor) return false;\n if (!isFrameVisible) return false;\n\n const invisibleFrameTypes = [\"WDGF_WDG100\", \"WF_100\", \"WF_FLI\"];\n if (invisibleFrameTypes.includes(frameType)) {\n return false;\n }\n\n return true;\n }, [isFrameVisible, frameType, isGlassDoor]);\n\n if (is2D) {\n return (\n <group position-y={yCenteringOffset + 0.1}>\n <mesh>\n <boxGeometry args={[totalWidth / 1000, 0.1, frameDepth / 1000]} />\n <meshBasicMaterial color=\"white\" side={THREE.DoubleSide} />\n </mesh>\n </group>\n );\n }\n\n return (\n <>\n <group position-y={yCenteringOffset + pivotNewPosition}>\n {frontCoverPanel.visible && (\n <group position-z={frontArchitraveZ}>\n {/* Top */}\n <mesh\n position={[0, topArchitraveY, 0]}\n castShadow\n material={frontCoverPanelMaterial}\n >\n <boxGeometry\n args={[\n topArchitraveWidth,\n architraveProfileM,\n architraveDepthM,\n ]}\n />\n </mesh>\n {/* Left */}\n <mesh\n position={[leftArchitraveX, sideArchitraveCenterY, 0]}\n castShadow\n material={frontCoverPanelMaterial}\n >\n <boxGeometry\n args={[\n architraveProfileM,\n sideArchitraveHeight,\n architraveDepthM,\n ]}\n />\n </mesh>\n {/* Right */}\n <mesh\n position={[rightArchitraveX, sideArchitraveCenterY, 0]}\n castShadow\n material={frontCoverPanelMaterial}\n >\n <boxGeometry\n args={[\n architraveProfileM,\n sideArchitraveHeight,\n architraveDepthM,\n ]}\n />\n </mesh>\n </group>\n )}\n {backCoverPanel.visible && (\n <group position-z={backArchitraveZ}>\n {/* Top */}\n <mesh\n position={[0, topArchitraveY, 0]}\n castShadow\n material={backCoverPanelMaterial}\n >\n <boxGeometry\n args={[\n topArchitraveWidth,\n architraveProfileM,\n architraveDepthM,\n ]}\n />\n </mesh>\n {/* Left */}\n <mesh\n position={[leftArchitraveX, sideArchitraveCenterY, 0]}\n castShadow\n material={backCoverPanelMaterial}\n >\n <boxGeometry\n args={[\n architraveProfileM,\n sideArchitraveHeight,\n architraveDepthM,\n ]}\n />\n </mesh>\n {/* Right */}\n <mesh\n position={[rightArchitraveX, sideArchitraveCenterY, 0]}\n castShadow\n material={backCoverPanelMaterial}\n >\n <boxGeometry\n args={[\n architraveProfileM,\n sideArchitraveHeight,\n architraveDepthM,\n ]}\n />\n </mesh>\n </group>\n )}\n\n {exteriorFanlight.visible && (\n <mesh\n position={[0, exteriorFanlightYPosition, exteriorFanlightZPosition]}\n castShadow\n material={exteriorFanlightMaterial}\n >\n <boxGeometry\n args={[\n totalFrameWidth,\n exteriorFanlightHeightM,\n exteriorFanlightDepthM,\n ]}\n />\n </mesh>\n )}\n\n {isFrameVisible && (\n <group>\n {/* --- Top Frame with CSG Cut --- */}\n <mesh castShadow position={[0, topFrameCenterY, 0]}>\n <Geometry useGroups>\n <Base name=\"frame-base\" material={frameMaterial}>\n <boxGeometry\n args={[doorWidthM, topFrameWidthM, frameDepthM]}\n />\n </Base>\n {![\"MXF_40\", \"MXF_50\", \"MXCAF_40\", \"MXCAF_50\"].includes(\n frameType\n ) && (\n <Subtraction\n name=\"cut-exterior\"\n material={frameMaterial}\n position={[0, notchposition, 0]}\n >\n <boxGeometry\n args={[doorWidthM + 0.01, notchWidthM, notchDepthM]}\n />\n </Subtraction>\n )}\n </Geometry>\n </mesh>\n\n {/* --- Left Frame with CSG Cut --- */}\n <mesh\n castShadow\n position={[\n -doorWidthM / 2 - sidesFrameWidthM / 2,\n sideFrameCenterY,\n 0,\n ]}\n >\n <Geometry useGroups>\n <Base name=\"frame-base\" material={frameMaterial}>\n <boxGeometry\n args={[sidesFrameWidthM, totalFrameHeightM, frameDepthM]}\n />\n </Base>\n {![\"MXF_40\", \"MXF_50\", \"MXCAF_40\", \"MXCAF_50\"].includes(\n frameType\n ) && (\n <Subtraction\n name=\"cut-exterior\"\n material={frameMaterial}\n position={[-notchposition, 0, 0]}\n >\n <boxGeometry\n args={[\n notchWidthM,\n totalFrameHeightM + 0.01,\n notchDepthM,\n ]}\n />\n </Subtraction>\n )}\n </Geometry>\n </mesh>\n\n {/* --- Right Frame with CSG Cut --- */}\n <mesh\n castShadow\n position={[\n doorWidthM / 2 + sidesFrameWidthM / 2,\n sideFrameCenterY,\n 0,\n ]}\n >\n <Geometry useGroups>\n <Base name=\"frame-base\" material={frameMaterial}>\n <boxGeometry\n args={[sidesFrameWidthM, totalFrameHeightM, frameDepthM]}\n />\n </Base>\n {![\"MXF_40\", \"MXF_50\", \"MXCAF_40\", \"MXCAF_50\"].includes(\n frameType\n ) && (\n <Subtraction\n name=\"cut-exterior\"\n material={frameMaterial}\n position={[notchposition, 0, 0]}\n >\n <boxGeometry\n args={[\n notchWidthM,\n totalFrameHeightM + 0.01,\n notchDepthM,\n ]}\n />\n </Subtraction>\n )}\n </Geometry>\n </mesh>\n\n {/* --- Door Stop Geometry --- */}\n <mesh\n castShadow\n position={[\n 0,\n totalOpeningHeightM / 2 - doorStopWidthM / 2,\n doorStopPositionZ,\n ]}\n material={doorStopMaterial}\n >\n <boxGeometry\n args={[doorWidthM, doorStopWidthM, doorStopDepthM]}\n />\n </mesh>\n <mesh\n castShadow\n position={[\n -doorWidthM / 2 + doorStopWidthM / 2,\n 0,\n doorStopPositionZ,\n ]}\n material={doorStopMaterial}\n >\n <boxGeometry\n args={[doorStopWidthM, totalOpeningHeightM, doorStopDepthM]}\n />\n </mesh>\n <mesh\n castShadow\n position={[\n doorWidthM / 2 - doorStopWidthM / 2,\n 0,\n doorStopPositionZ,\n ]}\n material={doorStopMaterial}\n >\n <boxGeometry\n args={[doorStopWidthM, totalOpeningHeightM, doorStopDepthM]}\n />\n </mesh>\n\n {/* --- Rubber Gasket Geometry (Primary) --- */}\n {frameType !== \"WF_FLI\" && (\n <>\n <mesh\n castShadow\n position={[0, topGasketYPosition, gasketZPosition]}\n material={gasketMaterial}\n >\n <boxGeometry\n args={[\n doorWidthM - 0.03,\n gasketWidthM + 0.005,\n gasketDepthM,\n ]}\n />\n </mesh>\n <mesh\n castShadow\n position={[\n leftGasketXPosition - 0.005,\n -0.005,\n gasketZPosition,\n ]}\n material={gasketMaterial}\n >\n <boxGeometry\n args={[\n gasketWidthM + 0.005,\n totalOpeningHeightM - 0.02,\n gasketDepthM,\n ]}\n />\n </mesh>\n <mesh\n castShadow\n position={[\n rightGasketXPosition + 0.005,\n -0.005,\n gasketZPosition,\n ]}\n material={gasketMaterial}\n >\n <boxGeometry\n args={[\n gasketWidthM + 0.005,\n totalOpeningHeightM - 0.02,\n gasketDepthM,\n ]}\n />\n </mesh>\n </>\n )}\n\n {(frameType === \"WDGF_WDG100\" ||\n frameType === \"WF_100\" ||\n frameType === \"WF_FLI\") && (\n <group>\n {/* --- Door Stops (Second) --- */}\n <group>\n <mesh\n castShadow\n position={[\n 0,\n totalOpeningHeightM / 2 - secondDoorStopWidthM / 2,\n secondDoorStopPositionZ,\n ]}\n material={doorStopMaterial}\n >\n <boxGeometry\n args={[\n doorWidthM,\n secondDoorStopWidthM,\n secondDoorStopDepthM,\n ]}\n />\n </mesh>\n <mesh\n castShadow\n position={[\n -doorWidthM / 2 + secondDoorStopWidthM / 2,\n 0,\n secondDoorStopPositionZ,\n ]}\n material={doorStopMaterial}\n >\n <boxGeometry\n args={[\n secondDoorStopWidthM,\n totalOpeningHeightM,\n secondDoorStopDepthM,\n ]}\n />\n </mesh>\n <mesh\n castShadow\n position={[\n doorWidthM / 2 - secondDoorStopWidthM / 2,\n 0,\n secondDoorStopPositionZ,\n ]}\n material={doorStopMaterial}\n >\n <boxGeometry\n args={[\n secondDoorStopWidthM,\n totalOpeningHeightM,\n secondDoorStopDepthM,\n ]}\n />\n </mesh>\n </group>\n\n {/* --- Gaskets (Second) --- */}\n <group>\n <mesh\n castShadow\n position={[\n 0,\n secondTopGasketYPosition - 0.005,\n secondGasketZPosition,\n ]}\n material={gasketMaterial}\n >\n <boxGeometry\n args={[\n doorWidthM - 0.03,\n gasketWidthM + 0.005,\n gasketDepthM,\n ]}\n />\n </mesh>\n <mesh\n castShadow\n position={[\n secondLeftGasketXPosition - 0.005,\n -0.01,\n secondGasketZPosition,\n ]}\n material={gasketMaterial}\n >\n <boxGeometry\n args={[\n gasketWidthM + 0.005,\n totalOpeningHeightM - 0.04,\n gasketDepthM,\n ]}\n />\n </mesh>\n <mesh\n castShadow\n position={[\n secondRightGasketXPosition + 0.005,\n -0.01,\n secondGasketZPosition,\n ]}\n material={gasketMaterial}\n >\n <boxGeometry\n args={[\n gasketWidthM + 0.004,\n totalOpeningHeightM - 0.04,\n gasketDepthM,\n ]}\n />\n </mesh>\n </group>\n\n {/* --- Glass Frame (if visible) --- */}\n {glassVisible && (\n <>\n {/* Back side */}\n <group>\n {/* Top frame */}\n {(frameType === \"WDGF_WDG100\" ||\n frameType === \"WF_100\") && (\n <mesh\n castShadow\n position={[\n 0,\n topFrameCenterY - secondDoorStopWidthM / 2,\n leftGlass_Z,\n ]}\n material={glassInfillMaterial}\n >\n <boxGeometry\n args={[\n doorWidthM - 2 * secondDoorStopWidthM,\n topFrameWidthM + secondDoorStopWidthM,\n GlassPanelDepthM,\n ]}\n />\n </mesh>\n )}\n {frameType !== \"WDGF_WDG100\" &&\n frameType !== \"WF_100\" && (\n <mesh\n castShadow\n position={[0, topFrameCenterY, leftGlass_Z]}\n material={glassInfillMaterial}\n >\n <boxGeometry\n args={[\n doorWidthM - 2 * secondDoorStopWidthM,\n topFrameWidthM,\n GlassPanelDepthM,\n ]}\n />\n </mesh>\n )}\n\n {/* Left side frame */}\n <mesh\n castShadow\n position={[\n -doorWidthM / 2 -\n sidesFrameWidthM / 2 +\n secondDoorStopWidthM / 2,\n sideFrameCenterY,\n leftGlass_Z,\n ]}\n material={glassInfillMaterial}\n >\n <boxGeometry\n args={[\n sidesFrameWidthM + secondDoorStopWidthM,\n totalFrameHeightM,\n GlassPanelDepthM,\n ]}\n />\n </mesh>\n\n {/* Right side frame */}\n <mesh\n castShadow\n position={[\n doorWidthM / 2 +\n sidesFrameWidthM / 2 -\n secondDoorStopWidthM / 2,\n sideFrameCenterY,\n leftGlass_Z,\n ]}\n material={glassInfillMaterial}\n >\n <boxGeometry\n args={[\n sidesFrameWidthM + secondDoorStopWidthM,\n totalFrameHeightM,\n GlassPanelDepthM,\n ]}\n />\n </mesh>\n </group>\n\n {/* Front side */}\n <group>\n {/* Top frame */}\n <mesh\n castShadow\n position={[0, topFrameCenterY, rightGlass_Z]}\n material={glassInfillMaterial}\n >\n <boxGeometry\n args={[doorWidthM, topFrameWidthM, GlassPanelDepthM]}\n />\n </mesh>\n\n {/* Left side frame */}\n <mesh\n castShadow\n position={[\n -doorWidthM / 2 - sidesFrameWidthM / 2,\n sideFrameCenterY,\n rightGlass_Z,\n ]}\n material={glassInfillMaterial}\n >\n <boxGeometry\n args={[\n sidesFrameWidthM,\n totalFrameHeightM,\n GlassPanelDepthM,\n ]}\n />\n </mesh>\n\n {/* Right side frame */}\n <mesh\n castShadow\n position={[\n doorWidthM / 2 + sidesFrameWidthM / 2,\n sideFrameCenterY,\n rightGlass_Z,\n ]}\n material={glassInfillMaterial}\n >\n <boxGeometry\n args={[\n sidesFrameWidthM,\n totalFrameHeightM,\n GlassPanelDepthM,\n ]}\n />\n </mesh>\n </group>\n </>\n )}\n </group>\n )}\n </group>\n )}\n\n {interiorFanlight.visible && (\n <mesh\n position={[0, interiorFanlightYPosition, doorCenterZ]}\n castShadow\n material={interiorFanlightMaterial}\n >\n <boxGeometry\n args={[doorWidthM, interiorFanlightHeightM, doorDepthM]}\n />\n </mesh>\n )}\n\n {/* --- Standard Hinge (Static Part) --- */}\n {isStandardHingeVisible &&\n standardHingeYPositions.map((y, index) => (\n <group\n key={`frame-hinge-${index}`}\n position={[hingeSideX, doorYPosition + y, hingeZ]}\n >\n <mesh\n material={hingeBodyMaterial}\n position={[0, separatorHeightM / 2 + barrelPartHeight / 2, 0]}\n castShadow\n >\n <cylinderGeometry\n args={[hingeRadiusM, hingeRadiusM, barrelPartHeight, 32]}\n />\n </mesh>\n <mesh\n material={hingeAccentMaterial}\n position={[\n 0,\n separatorHeightM / 2 + barrelPartHeight + capHeightM / 2,\n 0,\n ]}\n castShadow\n >\n <cylinderGeometry\n args={[hingeRadiusM, hingeRadiusM, capHeightM, 32]}\n />\n </mesh>\n </group>\n ))}\n\n {/* --- PIVOT GROUP --- */}\n <a.group\n position={[hingeSideX, doorYPosition, hingeZ]}\n rotation={rotation.to((x, y, z) => [x, y, z] as any)}\n onClick={handleClick}\n onPointerOver={() => (document.body.style.cursor = \"pointer\")}\n onPointerOut={() => (document.body.style.cursor = \"auto\")}\n >\n {/* --- Standard Hinge (Door Side)--- */}\n {isStandardHingeVisible &&\n standardHingeYPositions.map((y, index) => (\n <group key={`door-hinge-${index}`} position={[0, y, 0]}>\n <mesh\n material={hingeBodyMaterial}\n position={[\n 0,\n -separatorHeightM / 2 - barrelPartHeight / 2,\n 0,\n ]}\n castShadow\n >\n <cylinderGeometry\n args={[hingeRadiusM, hingeRadiusM, barrelPartHeight, 32]}\n />\n </mesh>\n <mesh\n material={hingeAccentMaterial}\n position={[\n 0,\n -separatorHeightM / 2 - barrelPartHeight - capHeightM / 2,\n 0,\n ]}\n castShadow\n >\n <cylinderGeometry\n args={[hingeRadiusM, hingeRadiusM, capHeightM, 32]}\n />\n </mesh>\n <mesh\n material={hingeAccentMaterial}\n position={[0, 0, 0]}\n castShadow\n >\n <cylinderGeometry\n args={[hingeRadiusM, hingeRadiusM, separatorHeightM, 32]}\n />\n </mesh>\n </group>\n ))}\n {/* --- Glass Hinge --- */}\n {isGlassDoor &&\n isFrameVisible &&\n glassHingeYPositions.map((y, index) => (\n <GlassHinge\n key={`glass-hinge-${index}`}\n position={[0, y, doorOffsetZ]}\n pivot={doorPivot}\n frameSideWidth={sidesFrameWidthM}\n doorDepthM={doorDepthM}\n material={hingeBodyMaterial}\n gasketMaterial={gasketMaterial}\n />\n ))}\n\n <group position={[-hingeSideX, 0, doorOffsetZ]}>\n <mesh castShadow>\n <Geometry useGroups>\n <Base name=\"door-base\" material={doorMaterial}>\n <boxGeometry\n args={[doorWidthM, mainDoorHeightM, doorDepthM]}\n />\n </Base>\n {/* First set of cuts */}\n <DoorStopCuts\n visible={\n frameType === \"WDGF_WDG100\" ||\n frameType === \"WF_100\" ||\n frameType === \"WF_FLI\"\n }\n width={doorWidthM}\n height={totalOpeningHeightM}\n stopWidth={doorStopWidthM}\n stopDepth={doorStopDepthM}\n stopPositionZ={doorStopPositionZ}\n centerZ={doorCenterZ}\n glassDepthOffset={GlassPanelDepthM / 2}\n material={doorMaterial}\n setName=\"1\"\n />\n\n {/* Second set of cuts */}\n <DoorStopCuts\n visible={\n frameType === \"WDGF_WDG100\" ||\n frameType === \"WF_100\" ||\n frameType === \"WF_FLI\"\n }\n width={doorWidthM}\n height={totalOpeningHeightM}\n stopWidth={secondDoorStopWidthM}\n stopDepth={secondDoorStopDepthM}\n stopPositionZ={secondDoorStopPositionZ}\n centerZ={doorCenterZ}\n glassDepthOffset={GlassPanelDepthM / 2}\n material={doorMaterial}\n setName=\"2\"\n />\n\n {/* Glass panels */}\n {glassVisible && (\n <>\n <mesh\n position={[0, 0, frontGlassOffsetZ]}\n castShadow\n material={glassInfillMaterial}\n >\n <boxGeometry\n args={[doorWidthM, mainDoorHeightM, GlassPanelDepthM]}\n />\n </mesh>\n\n {frameType !== \"WDGF_WDG100\" && frameType !== \"WF_100\" && (\n <mesh\n position={[0, 0, backGlassOffsetZ]}\n castShadow\n material={glassInfillMaterial}\n >\n <boxGeometry\n args={[doorWidthM, mainDoorHeightM, GlassPanelDepthM]}\n />\n </mesh>\n )}\n\n {(frameType === \"WDGF_WDG100\" ||\n frameType === \"WF_100\") && (\n <mesh\n position={[\n 0,\n -secondDoorStopWidthM / 2,\n backGlassOffsetZ,\n ]}\n castShadow\n material={glassInfillMaterial}\n >\n <boxGeometry\n args={[\n doorWidthM - 2 * secondDoorStopWidthM,\n mainDoorHeightM - secondDoorStopWidthM,\n GlassPanelDepthM,\n ]}\n />\n </mesh>\n )}\n </>\n )}\n\n {/* Occulus cut */}\n {occulus.visible && occulusWidthM > 0 && occulusHeightM > 0 && (\n <Subtraction\n material={placeholderMaterial}\n position={[occulusPositionXM, occulusPositionYM, 0]}\n >\n <boxGeometry\n args={[occulusWidthM, occulusHeightM, doorDepthM + 0.01]}\n />\n </Subtraction>\n )}\n </Geometry>\n </mesh>\n\n {/* Occulus infill */}\n {occulus.visible &&\n occulus.infillVisible &&\n occulusWidthM > 0 &&\n occulusHeightM > 0 && (\n <mesh\n position={[occulusPositionXM, occulusPositionYM, 0]}\n castShadow\n material={occulusInfillMaterial}\n >\n <boxGeometry\n args={[occulusWidthM, occulusHeightM, occulusInfillDepthM]}\n />\n </mesh>\n )}\n\n {/* Door Handle - Positioned correctly relative to the door leaf */}\n <DoorHandle\n bodyType={bodyType}\n handleX={handleX}\n handleHeightM={handleHeightM}\n doorDepthM={doorDepthM}\n doorPivot={doorPivot}\n />\n </group>\n </a.group>\n </group>\n\n {/* Floor plane */}\n {/* {isPlaneVisible && (\n <mesh\n receiveShadow\n rotation={[-Math.PI / 2, 0, 0]}\n position={[0, -1.35, 0]}\n >\n <planeGeometry args={[10, 10]} />\n <meshStandardMaterial color=\"#f9f9f9\" side={THREE.DoubleSide} />\n </mesh>\n )} */}\n </>\n );\n}\n\nexport default DoorModels;\n","import React from \"react\";\nimport { ConfiguratorProvider } from \"../context/DoorContext\";\nimport DoorModels from \"./DoorModels\";\n\ntype DoorConfiguratorProps = {\n doorName?: string;\n showInterface?: boolean;\n is2D?: boolean;\n};\n\nconst DoorConfigurator = ({\n doorName,\n showInterface = true,\n is2D = false,\n}: DoorConfiguratorProps) => {\n return (\n <ConfiguratorProvider initialIs2D={is2D}>\n <DoorModels doorName={doorName} />\n </ConfiguratorProvider>\n );\n};\n\nexport default DoorConfigurator;\n"],"names":["ConfiguratorContext","createContext","undefined","ConfiguratorProvider","_ref","children","initialIs2D","is2D","setIs2D","useState","isPlaneVisible","setIsPlaneVisible","isFrameVisible","setIsFrameVisible","cpid","setCpid","totalHeight","setTotalHeight","totalWidth","setTotalWidth","glassVisible","setGlassVisible","glassDepth","setGlassDepth","door","setDoor","doorMaterial","doorWidth","doorHeight","theDoorDepth","doorPivot","doorOpening","doorFrame","setDoorFrame","frameMaterial","doorStopMaterial","gasketMaterial","hingeMaterial","glassMaterial","frameDepth","topThk","sidesThk","doorStopOffset","doorStopWidth","doorStopDepth","notchWidth","notchDepth","notchposition","gasketDepth","gasketWidth","secondDoorStopWidth","secondDoorStopDepth","secondDoorStopOffset","interiorFanlight","setInteriorFanlight","visible","height","material","exteriorFanlight","setExteriorFanlight","depth","occulus","setOcculus","infillVisible","x1","x2","y1","y2","frontCoverPanel","setFrontCoverPanel","width","backCoverPanel","setBackCoverPanel","glass","setGlass","frameType","setFrameType","bodyType","setBodyType","exteriorFanlightType","setExteriorFanlightType","testDoorMaterial","setTestDoorMaterial","testFrameMaterial","setTestFrameMaterial","testGasketMaterial","setTestGasketMaterial","testInteriorFanlightMaterial","setTestInteriorFanlightMaterial","testExteriorFanlightMaterial","setTestExteriorFanlightMaterial","testOcculusInfillMaterial","setTestOcculusInfillMaterial","testGlassInfillMaterial","setTestGlassInfillMaterial","testDoorStopMaterial","setTestDoorStopMaterial","testHingeMaterial","setTestHingeMaterial","testFrontCoverPanelMaterial","setTestFrontCoverPanelMaterial","testBackCoverPanelMaterial","setTestBackCoverPanelMaterial","newPivotPosition","setNewPivotPosition","parseMessage","setParseMessage","type","text","useEffect","handleParseCpid","useCallback","cpidToParse","showMessage","arguments","length","setTimeout","trim","startsWith","parts","split","newConfig","fanlightVisible","fanlightType","interiorFanlightVisible","occulusVisible","currentIndex","fanlightPart","validFanlights","includes","prev","_objectSpread","concat","validSimpleFrameTypes","validBodyTypes","framePart","bodyPartRaw","frameFound","tempBody","replace","endsWith","i","newDoorDepth","newMaterial","newSettings","lookupKey","doorDepth","isMxCaf","newFrameSettings","_objectWithoutProperties","_excluded","prevOcculus","topThkValue","parseInt","exteriorFanlightHeight","newDoorHeight","prevDoor","sidesThkValue","newDoorWidth","_jsx","Provider","value","useConfigurator","context","useContext","Error","placeholderMaterial","THREE","MeshStandardMaterial","color","roughness","placeholderMaterialforFrames","availableMaterials","black","metal","metalness","darkgrey","grey","yellow","darkBrown","brown","transparent","opacity","aluminum","envMapIntensity","aluminumBrighter","aluminumExtraBrighter","silver","gold","diamond","StandardHandle","position","doorDepthM","roseRadius","roseThickness","handleRadius","handleLength","faceZ","connectorLength","cornerFrontZ","cornerBackZ","roseGapY","_jsxs","map","z","React","Fragment","castShadow","receiveShadow","args","rotation","Math","PI","scale","MergedPlate","_ref2","plateMaterial","geometry","useMemo","leftHalf","BoxGeometry","translate","shape","Shape","radius","moveTo","lineTo","absarc","extrudeSettings","steps","bevelEnabled","ExtrudeGeometry","GlassHandle","_ref3","DoorHandle","_ref4","handleX","handleHeightM","isSingleGlass","handlePos","GlassHinge","_ref5","pivot","frameSideWidth","plateWidth","plateHeight","plateThickness","gasketThickness","pivotRadius","pivotHeight","sideMultiplier","plateOffsetX","holeRadius","holeSpacingX","Geometry","useGroups","Base","Subtraction","DoorStopCuts","_ref6","stopWidth","stopDepth","stopPositionZ","centerZ","glassDepthOffset","setName","_Fragment","name","DoorModels","_ref7","doorName","doorMaterialName","frameMaterialName","gasketMaterialName","doorStopMaterialName","hingeMaterialName","interiorFanlightMaterialName","exteriorFanlightMaterialName","occulusInfillMaterialName","glassInfillMaterialName","frontCoverPanelMaterialName","backCoverPanelMaterialName","interiorFanlightMaterial","exteriorFanlightMaterial","occulusInfillMaterial","glassInfillMaterial","hingeBodyMaterial","frontCoverPanelMaterial","backCoverPanelMaterial","hingeAccentMaterial","initialDoorHeight","useRef","interiorFanlightHeightValue","exteriorFanlightHeightValue","exteriorFanlightDepthValue","occulusX1","occulusX2","occulusY1","occulusY2","occulusInfillDepth","architraveWidth","architraveDepth","interiorFanlightHeight","mainDoorHeight","doorWidthM","mainDoorHeightM","interiorFanlightHeightM","totalOpeningHeightM","frameDepthM","topFrameWidthM","sidesFrameWidthM","exteriorFanlightHeightM","exteriorFanlightDepthM","occulusX1M","occulusX2M","occulusY1M","occulusY2M","occulusInfillDepthM","doorStopWidthM","doorStopDepthM","architraveProfileM","architraveDepthM","gasketWidthM","gasketDepthM","doorStopOffsetValue","doorStopOffsetFromEdgeM","notchDepthValue","notchWidthValue","notchWidthM","notchDepthM","isOpeningIn","doorStopPositionZ","gasketZPosition","secondDoorStopWidthM","secondDoorStopDepthM","secondDoorStopPositionZ","secondGasketZPosition","doorCenterZ","gasketBackFaceZ","gasketFrontFaceZ","GlassPanelDepthM","frontGlassOffsetZ","backGlassOffsetZ","exteriorFanlightZPosition","occulusWidthM","occulusHeightM","occulusPositionXM","occulusPositionYM","isOpen","setIsOpen","hingeSideX","leftGlass_Z","rightGlass_Z","hingeZ","doorOffsetZ","directionMultiplier","useSpring","config","mass","tension","friction","handleClick","totalFrameWidth","totalFrameHeightM","yCenteringOffset","sideFrameCenterY","interiorFanlightYPosition","doorYPosition","topFrameCenterY","topOfFrameY","exteriorFanlightYPosition","frontArchitraveZ","backArchitraveZ","sideArchitraveHeight","sideArchitraveCenterY","leftArchitraveX","rightArchitraveX","topArchitraveY","topArchitraveWidth","handleCenterYFromDoorBottom","safeHandleY","min","max","nonHingeSideX","plateHalfWidth","latchMarginM","topGasketYPosition","leftGasketXPosition","rightGasketXPosition","secondTopGasketYPosition","secondLeftGasketXPosition","secondRightGasketXPosition","hingeTotalHeightM","hingeRadiusM","capHeightM","separatorHeightM","barrelPartHeight","isGlassDoor","pivotNewPosition","current","console","log","standardHingeYPositions","numHinges","topMargin","bottomMargin","availableHeight","spacing","positions","push","glassHingeYPositions","secondTopMargin","top","secondTop","bottom","isStandardHingeVisible","invisibleFrameTypes","side","DoubleSide","y","index","a","group","to","x","onClick","onPointerOver","document","body","style","cursor","onPointerOut","DoorConfigurator","showInterface"],"mappings":"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"}