door_models 5.4.4 → 5.4.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.
- package/dist/index.cjs.js +94 -13
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.esm.js +94 -13
- package/dist/index.esm.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs.js","sources":["../src/lib/context/DoorContext.tsx","../src/lib/utils/materials.ts","../src/lib/utils/materialUtils.ts","../src/lib/hooks/useDoorMaterials.ts","../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\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\ntype DoorPlaneType = {\n visible: boolean;\n material: string;\n};\n\ntype MaterialProps = {\n D_SRF_DECOR_2?: string;\n D_SRF_DECOR?: string;\n D_PRF_COLOR?: string;\n D_FR_SRF_DECOR?: string;\n D_FR_SRF_DECOR_S2?: string;\n D_FR_COLOR?: string;\n D_GASKET?: string;\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 frontDoorPlane: DoorPlaneType;\n setFrontDoorPlane: React.Dispatch<React.SetStateAction<DoorPlaneType>>;\n backDoorPlane: DoorPlaneType;\n setBackDoorPlane: React.Dispatch<React.SetStateAction<DoorPlaneType>>;\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 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 isDoubleDoor: boolean;\n setIsDoubleDoor: React.Dispatch<React.SetStateAction<boolean>>;\n materials: MaterialProps; // This state is kept to reflect props\n setMaterials: React.Dispatch<React.SetStateAction<MaterialProps>>; // Kept for sync\n};\n\nconst ConfiguratorContext = createContext<ConfiguratorContextType | undefined>(\n undefined\n);\n\ntype ConfiguratorProviderProps = {\n children: React.ReactNode;\n initialIs2D?: boolean;\n initialMaterials?: MaterialProps;\n};\n\nexport const ConfiguratorProvider = ({\n children,\n initialIs2D = false,\n initialMaterials = {},\n}: ConfiguratorProviderProps) => {\n const [materials, setMaterials] = useState<MaterialProps>(initialMaterials);\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 [isDoubleDoor, setIsDoubleDoor] = useState<boolean>(false);\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 [frontDoorPlane, setFrontDoorPlane] = useState<DoorPlaneType>({\n visible: true,\n material: \"frontDoor_material\",\n });\n const [backDoorPlane, setBackDoorPlane] = useState<DoorPlaneType>({\n visible: true,\n material: \"frontDoor_material\",\n });\n const [glass, setGlass] = useState<GlassType>({\n visible: false,\n material: \"infill_material\",\n depth: 20,\n });\n\n const defaultOptions = [\"D_PRF_COLOR\", \"D_FR_SRF_DECOR\", \"D_FR_SRF_DECOR_S2\"];\n\n function getFirstValidValue(\n values: string[],\n isValid: (val: string) => boolean\n ) {\n for (const val of values) {\n if (isValid(val)) return val;\n }\n return \"\";\n }\n\n const hasValue = (val: string) =>\n val !== null && val !== undefined && val !== \"\";\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\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 useEffect(() => {\n if (initialMaterials) {\n setMaterials(initialMaterials);\n }\n }, [initialMaterials]);\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 setIsDoubleDoor(false);\n setTotalHeight(2700);\n setTotalWidth(974);\n currentIndex++;\n } else if (parts[currentIndex] === \"DD\") {\n setIsDoubleDoor(true);\n setTotalWidth(1802);\n currentIndex++;\n } else {\n showMessage(\"Unsupported Door Type: Only 'SD' or 'DD' 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 setCpid(cpidToParse);\n\n showMessage(\"Configuration Applied!\", \"success\");\n },\n [\n setCpid,\n setBodyType,\n setExteriorFanlight,\n setExteriorFanlightType,\n setFrameType,\n setInteriorFanlight,\n setOcculus,\n setIsDoubleDoor,\n setTotalWidth,\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 }, [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 break;\n case \"ALDGFL\":\n setExteriorFanlight(prev => ({ ...prev, depth: doorFrame.frameDepth }));\n break;\n case \"ALSGFL\":\n setExteriorFanlight(prev => ({ ...prev, depth: 40 }));\n break;\n default:\n break;\n }\n }, [\n exteriorFanlight.visible,\n exteriorFanlightType,\n doorFrame.frameDepth,\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 numDoors = isDoubleDoor ? 2 : 1;\n const newDoorWidth = (totalWidth - sidesThkValue * 2) / numDoors;\n setDoor(prevDoor => ({\n ...prevDoor,\n doorWidth: newDoorWidth > 0 ? newDoorWidth : 0,\n }));\n }, [totalWidth, doorFrame.sidesThk, isDoubleDoor]);\n\n return (\n <ConfiguratorContext.Provider\n value={{\n materials,\n setMaterials,\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 frontDoorPlane,\n setFrontDoorPlane,\n backDoorPlane,\n setBackDoorPlane,\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 glassVisible,\n setGlassVisible,\n glassDepth,\n setGlassDepth,\n handleParseCpid,\n newPivotPosition,\n setNewPivotPosition,\n doorHeight,\n isDoubleDoor,\n setIsDoubleDoor,\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 * as THREE from \"three\";\n\nexport const availableMaterials = {\n black: new THREE.MeshStandardMaterial({ color: \"#000000\" }),\n metal: new THREE.MeshStandardMaterial({\n color: \"#aaaaaa\",\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 test_material: new THREE.MeshStandardMaterial({\n color: \"red\",\n roughness: 0.1,\n }),\n};\n\nexport const placeholderMaterial = new THREE.MeshStandardMaterial({\n color: \"#cccccc\",\n roughness: 0.8,\n});\n\nexport const placeholderMaterialforFrames = new THREE.MeshStandardMaterial({\n color: \"#000\",\n roughness: 0.8,\n});\n","import * as THREE from \"three\";\n\nexport type MaterialDefinition =\n | string\n | {\n value: string;\n opacity?: number;\n };\n\n// Helper function to check for hex color codes\nconst isHexColor = (str: string): boolean => /^#([0-9A-F]{3}){1,2}$/i.test(str);\n\n/**\n * A simple \"builder\" that creates a THREE.MeshStandardMaterial from a prop and an\n * optional map of pre-loaded textures. It now loads textures if they are not pre-loaded.\n * @param prop - The material definition (string or object).\n * @param textures - A map of URL -> THREE.Texture, provided by useTexture.\n * @returns A THREE.MeshStandardMaterial instance.\n */\nexport const buildMaterial = (\n prop?: MaterialDefinition,\n textures?: Record<string, THREE.Texture>\n): THREE.MeshStandardMaterial => {\n if (!prop) {\n return new THREE.MeshStandardMaterial({ color: \"#cccccc\", roughness: 0.8 });\n }\n\n const sourceValue = typeof prop === \"string\" ? prop : prop.value;\n const opacity = typeof prop === \"object\" ? prop.opacity : 1;\n\n // Start with base parameters.\n const params: THREE.MeshStandardMaterialParameters = {\n roughness: 0.8,\n side: THREE.DoubleSide,\n };\n\n if (isHexColor(sourceValue)) {\n // It's a color. Explicitly set the color and ensure no texture is applied.\n params.color = sourceValue;\n params.map = null;\n } else {\n // It's a texture. Explicitly set the color to white to avoid tinting the texture.\n params.color = \"#ffffff\";\n let texture: THREE.Texture | null = null;\n\n if (textures && textures[sourceValue]) {\n // Use the pre-loaded texture.\n texture = textures[sourceValue];\n } else if (sourceValue) {\n // Not pre-loaded, so load it now.\n // TextureLoader caches results internally, so this is efficient.\n texture = new THREE.TextureLoader().load(sourceValue);\n }\n params.map = texture;\n }\n\n // Handle transparency explicitly to prevent lingering state.\n if (opacity !== undefined && opacity < 1) {\n params.transparent = true;\n params.opacity = opacity;\n } else {\n // Explicitly turn transparency off if opacity is 1 or undefined.\n params.transparent = false;\n params.opacity = 1;\n }\n\n return new THREE.MeshStandardMaterial(params);\n};\n\nexport const getFirstValidValue = (\n values: (MaterialDefinition | undefined | null)[]\n): MaterialDefinition | undefined => {\n for (const val of values) {\n if (val) {\n return val;\n }\n }\n return undefined;\n};\n","import { useMemo } from \"react\";\nimport * as THREE from \"three\";\nimport { useTexture } from \"@react-three/drei\";\nimport {\n buildMaterial,\n getFirstValidValue,\n type MaterialDefinition,\n} from \"../utils/materialUtils\";\n\n// Re-export the type for easy access in other components\nexport type MaterialProps = {\n D_SRF_DECOR_2?: MaterialDefinition;\n D_SRF_DECOR?: MaterialDefinition;\n D_PRF_COLOR?: MaterialDefinition;\n D_FR_SRF_DECOR?: MaterialDefinition;\n D_FR_SRF_DECOR_S2?: MaterialDefinition;\n D_FR_COLOR?: MaterialDefinition;\n D_GASKET?: MaterialDefinition;\n Body?: MaterialDefinition;\n Hinge?: MaterialDefinition;\n HingeCuts?: MaterialDefinition;\n};\n\nexport const useDoorMaterials = (materialsProp: MaterialProps = {}) => {\n // 1. Collect all unique texture URLs from the props.\n const textureUrls = useMemo(() => {\n const urls = new Set<string>();\n // Iterate over all passed material props\n Object.values(materialsProp).forEach(prop => {\n // Get the value, whether it's a string or inside an object\n const value = typeof prop === \"string\" ? prop : prop?.value;\n // If it's a valid URL, add it to our set to avoid duplicates\n if (value && (value.startsWith(\"http\") || value.startsWith(\"/\"))) {\n urls.add(value);\n }\n });\n return Array.from(urls);\n }, [materialsProp]);\n\n // 2. Load all textures at once.\n // !! THIS IS THE MAGIC !!\n // `useTexture` will pause (\"suspend\") this component's rendering\n // until all textures in the array are fully loaded.\n const loadedTextures = useTexture(textureUrls);\n\n // 3. Create a map from URL back to the loaded THREE.Texture for easy lookup.\n const textureMap = useMemo(() => {\n const map: Record<string, THREE.Texture> = {};\n textureUrls.forEach((url, index) => {\n map[url] = loadedTextures[index];\n });\n return map;\n }, [textureUrls, loadedTextures]);\n\n // 4. Now that textures are guaranteed to be loaded, build all materials.\n // This memo ensures the materials are only created when props or textures change.\n return useMemo(() => {\n const build = (prop?: MaterialDefinition) =>\n buildMaterial(prop, textureMap);\n\n return {\n doorMaterial: build(materialsProp.Body),\n frameMaterial: build(\n getFirstValidValue([\n materialsProp.D_PRF_COLOR,\n materialsProp.D_FR_SRF_DECOR,\n materialsProp.D_FR_SRF_DECOR_S2,\n ])\n ),\n gasketMaterial: build(materialsProp.D_GASKET),\n doorStopMaterial: build(\n getFirstValidValue([\n materialsProp.D_PRF_COLOR,\n materialsProp.D_FR_SRF_DECOR,\n materialsProp.D_FR_SRF_DECOR_S2,\n ])\n ),\n interiorFanlightMaterial: build(materialsProp.D_SRF_DECOR),\n exteriorFanlightMaterial: build(materialsProp.D_SRF_DECOR),\n occulusInfillMaterial: build(materialsProp.D_FR_COLOR),\n glassInfillMaterial: build(materialsProp.D_FR_COLOR),\n frontCoverPanelMaterial: build(\n getFirstValidValue([\n materialsProp.D_PRF_COLOR,\n materialsProp.D_FR_SRF_DECOR,\n materialsProp.D_FR_SRF_DECOR_S2,\n ])\n ),\n backCoverPanelMaterial: build(\n getFirstValidValue([\n materialsProp.D_PRF_COLOR,\n materialsProp.D_FR_SRF_DECOR,\n materialsProp.D_FR_SRF_DECOR_S2,\n ])\n ),\n frontDoorPlaneMaterial: build(materialsProp.D_SRF_DECOR_2),\n backDoorPlaneMaterial: build(materialsProp.D_SRF_DECOR),\n hingeBodyMaterial: build(materialsProp.Hinge),\n hingeAccentMaterial: build(materialsProp.HingeCuts),\n };\n }, [materialsProp, textureMap]);\n};\n","import React, { useState, useMemo, useEffect, useRef } from \"react\";\nimport { Geometry, Base, Subtraction } from \"@react-three/csg\";\nimport { useConfigurator } from \"../context/DoorContext\";\nimport { useSpring, a } from \"@react-spring/three\";\nimport { availableMaterials } from \"../utils/materials\";\nimport {\n useDoorMaterials,\n type MaterialProps,\n} from \"../hooks/useDoorMaterials\";\n\nimport * as THREE from \"three\";\n\n// {\n// /* StandardHandle */\n// }\n\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 = frameType === \"WDGF_WDG100\" ? 0.008 + 0.0015 : 0.005;\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 material={availableMaterials.aluminum} castShadow>\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 >\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 >\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 >\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 material={availableMaterials.aluminum} castShadow>\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 >\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 >\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 >\n <cylinderGeometry\n args={[roseRadius, roseRadius, roseThickness, 48]}\n />\n </mesh>\n )}\n\n <group\n position={[\n 0,\n -(0.08 + roseGapY),\n z + (z > 0 ? roseThickness : -roseThickness),\n ]}\n castShadow\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 */}\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 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 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 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 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 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 material={availableMaterials.aluminum}\n >\n <cylinderGeometry\n args={[handleRadius, handleRadius, handleLength, 48]}\n />\n </mesh>\n </group>\n </group>\n </group>\n );\n}\n\n// {\n// /* MergedPlate */\n// }\n\nconst MergedPlate = ({ plateMaterial, roseThickness, faceZ }) => {\n const geometry = useMemo(() => {\n const shape = new THREE.Shape();\n const width = 0.1;\n const height = 0.24;\n const radius = 0.01;\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 const extrudeSettings = {\n steps: 2,\n depth: roseThickness,\n bevelEnabled: false,\n };\n return new THREE.ExtrudeGeometry(shape, extrudeSettings);\n }, [roseThickness]);\n\n return (\n <group position-z={faceZ}>\n <mesh geometry={geometry} material={plateMaterial} castShadow />\n </group>\n );\n};\n\n// {\n// /* GlassHandle */\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 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\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 >\n <cylinderGeometry\n args={[roseRadius, roseRadius, roseThickness, 48]}\n />\n </mesh>\n\n {/* Keyhole shape */}\n <mesh\n position={[0, -0.08, z + (z > 0 ? roseThickness : -roseThickness)]}\n castShadow\n >\n {/* Circular part */}\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 */}\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 >\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 >\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 >\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 >\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 >\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 >\n <sphereGeometry args={[handleRadius, 32, 32]} />\n </mesh>\n </group>\n </group>\n </group>\n );\n}\n\n// {\n// /* DoorHandle */\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();\n\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\n// {\n// /* GlassHinge */\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 >\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 >\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 >\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 >\n <boxGeometry args={[plateWidth, plateHeight, gasketThickness]} />\n </mesh>\n </group>\n </group>\n );\n}\n// {\n// /* DoorStopCutsProps */\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 material: THREE.Material;\n setName: string;\n};\n// {\n// /* DoorStopCuts */\n// }\nfunction DoorStopCuts({\n visible,\n width,\n height,\n stopWidth,\n stopDepth,\n stopPositionZ,\n centerZ,\n material,\n setName,\n}: DoorStopCutsProps) {\n if (!visible) return null;\n\n return (\n <>\n {/* Top cut */}\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\n// {\n// /* DoorModelsProps */\n// }\n\ntype DoorModelsProps = {\n doorName?: string;\n materials?: MaterialProps;\n doorPivot?: \"left\" | \"right\";\n doorOpening?: \"in\" | \"out\";\n totalWidth?: number;\n totalHeight?: number;\n frameDepth?: number;\n};\n\n// {\n// /* AllMaterialsType */\n// }\n\ntype AllMaterialsType = {\n doorMaterial: THREE.MeshStandardMaterial;\n frameMaterial: THREE.MeshStandardMaterial;\n gasketMaterial: THREE.MeshStandardMaterial;\n doorStopMaterial: THREE.MeshStandardMaterial;\n interiorFanlightMaterial: THREE.MeshStandardMaterial;\n exteriorFanlightMaterial: THREE.MeshStandardMaterial;\n occulusInfillMaterial: THREE.MeshStandardMaterial;\n glassInfillMaterial: THREE.MeshStandardMaterial;\n hingeBodyMaterial: THREE.MeshStandardMaterial;\n hingeAccentMaterial: THREE.MeshStandardMaterial;\n frontCoverPanelMaterial: THREE.MeshStandardMaterial;\n backCoverPanelMaterial: THREE.MeshStandardMaterial;\n frontDoorPlaneMaterial: THREE.MeshStandardMaterial;\n backDoorPlaneMaterial: THREE.MeshStandardMaterial;\n};\n\n// {\n// /* DoorLeafProps */\n// }\ntype DoorLeafProps = {\n pivot: \"left\" | \"right\";\n xOffset: number;\n materials: AllMaterialsType;\n};\n\n// {\n// /* DoorModels */\n// }\n\nfunction DoorModels({\n doorName,\n materials: materialsProp,\n doorPivot: doorPivotProp,\n doorOpening: doorOpeningProp,\n totalWidth: totalWidthProp,\n totalHeight: totalHeightProp,\n frameDepth: frameDepthProp,\n}: DoorModelsProps) {\n const {\n is2D,\n totalWidth,\n isFrameVisible,\n door,\n setDoor,\n doorFrame,\n setDoorFrame,\n interiorFanlight,\n exteriorFanlight,\n frontCoverPanel,\n backCoverPanel,\n frameType,\n glassVisible,\n glassDepth,\n handleParseCpid,\n isDoubleDoor,\n setMaterials,\n setTotalWidth,\n setTotalHeight,\n } = useConfigurator();\n\n useEffect(() => {\n if (doorName) {\n handleParseCpid(doorName);\n }\n }, [doorName, handleParseCpid]);\n\n useEffect(() => {\n if (materialsProp) {\n setMaterials(materialsProp as any);\n }\n }, [materialsProp, setMaterials]);\n\n useEffect(() => {\n if (doorPivotProp || doorOpeningProp) {\n setDoor(prevDoor => ({\n ...prevDoor,\n ...(doorPivotProp && { doorPivot: doorPivotProp }),\n ...(doorOpeningProp && { doorOpening: doorOpeningProp }),\n }));\n }\n }, [doorPivotProp, doorOpeningProp, setDoor]);\n\n useEffect(() => {\n if (totalWidthProp !== undefined) {\n setTotalWidth(totalWidthProp);\n }\n }, [totalWidthProp, setTotalWidth]);\n\n useEffect(() => {\n if (totalHeightProp !== undefined) {\n setTotalHeight(totalHeightProp);\n }\n }, [totalHeightProp, setTotalHeight]);\n\n useEffect(() => {\n if (frameDepthProp !== undefined) {\n setDoorFrame(prev => ({ ...prev, frameDepth: frameDepthProp }));\n }\n }, [frameDepthProp, setDoorFrame]);\n\n // --- Material Logic (Centralized in parent component) ---\n const allMaterials = useDoorMaterials(materialsProp);\n\n // --- Dimension calculations ---\n const { doorWidth, doorHeight, theDoorDepth } = door;\n const doorPivot = doorPivotProp || door.doorPivot;\n const doorOpening = doorOpeningProp || door.doorOpening;\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 } = doorFrame;\n\n const initialDoorHeight = useRef<number | null>(null);\n\n useEffect(() => {\n if (initialDoorHeight.current === null && doorHeight > 0) {\n initialDoorHeight.current = doorHeight;\n }\n }, [doorHeight]);\n\n const pivotNewPosition = useMemo(() => {\n if (initialDoorHeight.current === null || initialDoorHeight.current === 0)\n return 0;\n return (doorHeight - initialDoorHeight.current) / 2 / 1000;\n }, [doorHeight]);\n\n const { height: interiorFanlightHeightValue } = interiorFanlight;\n const {\n height: exteriorFanlightHeightValue,\n depth: exteriorFanlightDepthValue,\n } = exteriorFanlight;\n\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 totalWidthM =\n totalWidthProp !== undefined ? totalWidthProp / 1000 : totalWidth / 1000;\n const totalHeightM =\n totalHeightProp !== undefined ? totalHeightProp / 1000 : doorHeight / 1000;\n\n const interiorFanlightHeightM = interiorFanlightHeight / 1000;\n const doorWidthM = doorWidth / 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\n const totalOpeningWidthM = isDoubleDoor ? doorWidthM * 2 : doorWidthM;\n\n const exteriorFanlightHeightM = exteriorFanlight.visible\n ? exteriorFanlightHeightValue / 1000\n : 0;\n const exteriorFanlightDepthM = exteriorFanlightDepthValue / 1000;\n const doorStopWidthM = doorStopWidth / 1000;\n const doorStopDepthM = doorStopDepth / 1000;\n\n const architraveProfileM = architraveWidth / 1000;\n const architraveDepthM = architraveDepth / 1000;\n const gasketWidthM = gasketWidth / 1000;\n const gasketDepthM = gasketDepth / 1000;\n const doorStopOffsetFromEdgeM = parseInt(doorStopOffset) / 1000;\n const notchWidthM = (parseInt(notchWidth) || 20) / 1000;\n const notchDepthM = (parseInt(notchDepth) || 40) / 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\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 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 return isOpeningIn\n ? frameDepthM / 2 - doorDepthM / 2\n : -frameDepthM / 2 + doorDepthM / 2;\n }\n if ([\"WDGF_WDG100\", \"WF_100\"].includes(frameType)) {\n return 0;\n }\n const gasketFaceZ = isOpeningIn\n ? gasketZPosition - gasketDepthM / 2\n : gasketZPosition + gasketDepthM / 2;\n return isOpeningIn\n ? gasketFaceZ - doorDepthM / 2\n : gasketFaceZ + doorDepthM / 2;\n }, [\n isOpeningIn,\n gasketZPosition,\n gasketDepthM,\n doorDepthM,\n frameType,\n frameDepthM,\n ]);\n\n const GlassPanelDepthM = glassDepth / 1000;\n\n const doorInstances = useMemo(() => {\n if (isDoubleDoor) {\n return [\n { key: \"left\", pivot: \"left\" as const, x: -doorWidthM / 2 },\n { key: \"right\", pivot: \"right\" as const, x: doorWidthM / 2 },\n ];\n }\n return [{ key: \"single\", pivot: doorPivot, x: 0 }];\n }, [isDoubleDoor, doorWidthM, doorPivot]);\n\n // --- Centering & Positioning ---\n const yCenteringOffset = -topFrameWidthM / 2;\n const sideFrameCenterY = topFrameWidthM / 2;\n const interiorFanlightYPosition =\n totalOpeningHeightM / 2 - interiorFanlightHeightM / 2;\n const topFrameCenterY = totalOpeningHeightM / 2 + topFrameWidthM / 2;\n const exteriorFanlightYPosition =\n topFrameCenterY + topFrameWidthM / 2 + exteriorFanlightHeightM / 2;\n\n const frontArchitraveZ = frameDepthM / 2 + architraveDepthM / 2;\n const backArchitraveZ = -frameDepthM / 2 - architraveDepthM / 2;\n const leftArchitraveX = -totalOpeningWidthM / 2 - architraveProfileM / 2;\n const rightArchitraveX = totalOpeningWidthM / 2 + architraveProfileM / 2;\n const topArchitraveY = totalOpeningHeightM / 2 + architraveProfileM / 2;\n const topArchitraveWidth = totalOpeningWidthM + 2 * architraveProfileM;\n\n const topGasketYPosition =\n totalOpeningHeightM / 2 - doorStopWidthM + gasketWidthM / 2;\n const leftGasketXPosition =\n -totalOpeningWidthM / 2 + doorStopWidthM - gasketWidthM / 2;\n const rightGasketXPosition =\n totalOpeningWidthM / 2 - doorStopWidthM + gasketWidthM / 2;\n const secondTopGasketYPosition =\n totalOpeningHeightM / 2 - secondDoorStopWidthM + gasketWidthM / 2;\n const secondLeftGasketXPosition =\n -totalOpeningWidthM / 2 + secondDoorStopWidthM - gasketWidthM / 2;\n const secondRightGasketXPosition =\n totalOpeningWidthM / 2 - secondDoorStopWidthM + gasketWidthM / 2;\n\n const leftGlass_Z =\n -frameDepthM / 2 + GlassPanelDepthM / 2 - GlassPanelDepthM;\n const rightGlass_Z =\n frameDepthM / 2 - GlassPanelDepthM / 2 + GlassPanelDepthM;\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>\n {/*\n This invisible mesh acts as a stable bounding box.\n AutoFit will measure this box instead of the animated door parts,\n preventing the scaling distortion during the open/close animation.\n Its dimensions are the total dimensions passed in as props.\n */}\n <mesh visible={false}>\n <boxGeometry args={[totalWidthM, totalHeightM, frameDepthM]} />\n </mesh>\n\n {/* \n This group contains all the original, visible geometry.\n We apply the original positioning logic to this group\n to ensure it is placed correctly within the new parent container.\n */}\n <group position-y={yCenteringOffset + pivotNewPosition}>\n {frontCoverPanel.visible && (\n <group position-z={frontArchitraveZ}>\n <mesh\n position={[0, topArchitraveY, 0]}\n castShadow\n material={allMaterials.frontCoverPanelMaterial}\n >\n <boxGeometry\n args={[\n topArchitraveWidth,\n architraveProfileM,\n architraveDepthM,\n ]}\n />\n </mesh>\n <mesh\n position={[leftArchitraveX, 0, 0]}\n castShadow\n material={allMaterials.frontCoverPanelMaterial}\n >\n <boxGeometry\n args={[\n architraveProfileM,\n totalOpeningHeightM,\n architraveDepthM,\n ]}\n />\n </mesh>\n <mesh\n position={[rightArchitraveX, 0, 0]}\n castShadow\n material={allMaterials.frontCoverPanelMaterial}\n >\n <boxGeometry\n args={[\n architraveProfileM,\n totalOpeningHeightM,\n architraveDepthM,\n ]}\n />\n </mesh>\n </group>\n )}\n {backCoverPanel.visible && (\n <group position-z={backArchitraveZ}>\n <mesh\n position={[0, topArchitraveY, 0]}\n castShadow\n material={allMaterials.backCoverPanelMaterial}\n >\n <boxGeometry\n args={[\n topArchitraveWidth,\n architraveProfileM,\n architraveDepthM,\n ]}\n />\n </mesh>\n <mesh\n position={[leftArchitraveX, 0, 0]}\n castShadow\n material={allMaterials.backCoverPanelMaterial}\n >\n <boxGeometry\n args={[\n architraveProfileM,\n totalOpeningHeightM,\n architraveDepthM,\n ]}\n />\n </mesh>\n <mesh\n position={[rightArchitraveX, 0, 0]}\n castShadow\n material={allMaterials.backCoverPanelMaterial}\n >\n <boxGeometry\n args={[\n architraveProfileM,\n totalOpeningHeightM,\n architraveDepthM,\n ]}\n />\n </mesh>\n </group>\n )}\n {exteriorFanlight.visible && (\n <mesh\n position={[0, exteriorFanlightYPosition, 0]}\n castShadow\n material={allMaterials.exteriorFanlightMaterial}\n >\n <boxGeometry\n args={[\n totalOpeningWidthM + sidesFrameWidthM * 2,\n exteriorFanlightHeightM,\n exteriorFanlightDepthM,\n ]}\n />\n </mesh>\n )}\n {isFrameVisible && (\n <group>\n <mesh castShadow position={[0, topFrameCenterY, 0]}>\n <Geometry useGroups>\n <Base name=\"frame-base\" material={allMaterials.frameMaterial}>\n <boxGeometry\n args={[totalOpeningWidthM, 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={allMaterials.frameMaterial}\n position={[0, notchposition, 0]}\n >\n <boxGeometry\n args={[\n totalOpeningWidthM + 0.01,\n notchWidthM,\n notchDepthM,\n ]}\n />\n </Subtraction>\n )}\n </Geometry>\n </mesh>\n <mesh\n castShadow\n position={[\n -totalOpeningWidthM / 2 - sidesFrameWidthM / 2,\n sideFrameCenterY,\n 0,\n ]}\n >\n <Geometry useGroups>\n <Base name=\"frame-base\" material={allMaterials.frameMaterial}>\n <boxGeometry\n args={[\n sidesFrameWidthM,\n totalOpeningHeightM + topFrameWidthM,\n frameDepthM,\n ]}\n />\n </Base>\n {![\"MXF_40\", \"MXF_50\", \"MXCAF_40\", \"MXCAF_50\"].includes(\n frameType\n ) && (\n <Subtraction\n name=\"cut-exterior\"\n material={allMaterials.frameMaterial}\n position={[-notchposition, 0, 0]}\n >\n <boxGeometry\n args={[\n notchWidthM,\n totalOpeningHeightM + topFrameWidthM + 0.01,\n notchDepthM,\n ]}\n />\n </Subtraction>\n )}\n </Geometry>\n </mesh>\n <mesh\n castShadow\n position={[\n totalOpeningWidthM / 2 + sidesFrameWidthM / 2,\n sideFrameCenterY,\n 0,\n ]}\n >\n <Geometry useGroups>\n <Base name=\"frame-base\" material={allMaterials.frameMaterial}>\n <boxGeometry\n args={[\n sidesFrameWidthM,\n totalOpeningHeightM + topFrameWidthM,\n frameDepthM,\n ]}\n />\n </Base>\n {![\"MXF_40\", \"MXF_50\", \"MXCAF_40\", \"MXCAF_50\"].includes(\n frameType\n ) && (\n <Subtraction\n name=\"cut-exterior\"\n material={allMaterials.frameMaterial}\n position={[notchposition, 0, 0]}\n >\n <boxGeometry\n args={[\n notchWidthM,\n totalOpeningHeightM + topFrameWidthM + 0.01,\n notchDepthM,\n ]}\n />\n </Subtraction>\n )}\n </Geometry>\n </mesh>\n <mesh\n castShadow\n position={[\n 0,\n totalOpeningHeightM / 2 - doorStopWidthM / 2,\n doorStopPositionZ,\n ]}\n material={allMaterials.doorStopMaterial}\n >\n <boxGeometry\n args={[totalOpeningWidthM, doorStopWidthM, doorStopDepthM]}\n />\n </mesh>\n <mesh\n castShadow\n position={[\n -totalOpeningWidthM / 2 + doorStopWidthM / 2,\n 0,\n doorStopPositionZ,\n ]}\n material={allMaterials.doorStopMaterial}\n >\n <boxGeometry\n args={[doorStopWidthM, totalOpeningHeightM, doorStopDepthM]}\n />\n </mesh>\n <mesh\n castShadow\n position={[\n totalOpeningWidthM / 2 - doorStopWidthM / 2,\n 0,\n doorStopPositionZ,\n ]}\n material={allMaterials.doorStopMaterial}\n >\n <boxGeometry\n args={[doorStopWidthM, totalOpeningHeightM, doorStopDepthM]}\n />\n </mesh>\n {frameType !== \"WF_FLI\" && (\n <>\n <mesh\n castShadow\n position={[0, topGasketYPosition, gasketZPosition]}\n material={allMaterials.gasketMaterial}\n >\n <boxGeometry\n args={[\n totalOpeningWidthM - 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={allMaterials.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={allMaterials.gasketMaterial}\n >\n <boxGeometry\n args={[\n gasketWidthM + 0.005,\n totalOpeningHeightM - 0.02,\n gasketDepthM,\n ]}\n />\n </mesh>\n </>\n )}\n\n {[\"WDGF_WDG100\", \"WF_100\", \"WF_FLI\"].includes(frameType) && (\n <group>\n <group>\n <mesh\n castShadow\n position={[\n 0,\n totalOpeningHeightM / 2 - secondDoorStopWidthM / 2,\n secondDoorStopPositionZ,\n ]}\n material={allMaterials.doorStopMaterial}\n >\n <boxGeometry\n args={[\n totalOpeningWidthM,\n secondDoorStopWidthM,\n secondDoorStopDepthM,\n ]}\n />\n </mesh>\n <mesh\n castShadow\n position={[\n -totalOpeningWidthM / 2 + secondDoorStopWidthM / 2,\n 0,\n secondDoorStopPositionZ,\n ]}\n material={allMaterials.doorStopMaterial}\n >\n <boxGeometry\n args={[\n secondDoorStopWidthM,\n totalOpeningHeightM,\n secondDoorStopDepthM,\n ]}\n />\n </mesh>\n <mesh\n castShadow\n position={[\n totalOpeningWidthM / 2 - secondDoorStopWidthM / 2,\n 0,\n secondDoorStopPositionZ,\n ]}\n material={allMaterials.doorStopMaterial}\n >\n <boxGeometry\n args={[\n secondDoorStopWidthM,\n totalOpeningHeightM,\n secondDoorStopDepthM,\n ]}\n />\n </mesh>\n </group>\n\n <group>\n <mesh\n castShadow\n position={[\n 0,\n secondTopGasketYPosition - 0.005,\n secondGasketZPosition,\n ]}\n material={allMaterials.gasketMaterial}\n >\n <boxGeometry\n args={[\n totalOpeningWidthM - 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={allMaterials.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={allMaterials.gasketMaterial}\n >\n <boxGeometry\n args={[\n gasketWidthM + 0.004,\n totalOpeningHeightM - 0.04,\n gasketDepthM,\n ]}\n />\n </mesh>\n </group>\n {glassVisible && (\n <>\n <group>\n {[\"WDGF_WDG100\", \"WF_100\"].includes(frameType) && (\n <mesh\n castShadow\n position={[\n 0,\n topFrameCenterY - secondDoorStopWidthM / 2,\n leftGlass_Z,\n ]}\n material={allMaterials.glassInfillMaterial}\n >\n <boxGeometry\n args={[\n totalOpeningWidthM - 2 * secondDoorStopWidthM,\n topFrameWidthM + secondDoorStopWidthM,\n GlassPanelDepthM,\n ]}\n />\n </mesh>\n )}\n {![\"WDGF_WDG100\", \"WF_100\"].includes(frameType) && (\n <mesh\n castShadow\n position={[0, topFrameCenterY, leftGlass_Z]}\n material={allMaterials.glassInfillMaterial}\n >\n <boxGeometry\n args={[\n totalOpeningWidthM - 2 * secondDoorStopWidthM,\n topFrameWidthM,\n GlassPanelDepthM,\n ]}\n />\n </mesh>\n )}\n\n <mesh\n castShadow\n position={[\n -totalOpeningWidthM / 2 -\n sidesFrameWidthM / 2 +\n secondDoorStopWidthM / 2,\n sideFrameCenterY,\n leftGlass_Z,\n ]}\n material={allMaterials.glassInfillMaterial}\n >\n <boxGeometry\n args={[\n sidesFrameWidthM + secondDoorStopWidthM,\n totalOpeningHeightM + topFrameWidthM,\n GlassPanelDepthM,\n ]}\n />\n </mesh>\n\n <mesh\n castShadow\n position={[\n totalOpeningWidthM / 2 +\n sidesFrameWidthM / 2 -\n secondDoorStopWidthM / 2,\n sideFrameCenterY,\n leftGlass_Z,\n ]}\n material={allMaterials.glassInfillMaterial}\n >\n <boxGeometry\n args={[\n sidesFrameWidthM + secondDoorStopWidthM,\n totalOpeningHeightM + topFrameWidthM,\n GlassPanelDepthM,\n ]}\n />\n </mesh>\n </group>\n\n <group>\n <mesh\n castShadow\n position={[0, topFrameCenterY, rightGlass_Z]}\n material={allMaterials.glassInfillMaterial}\n >\n <boxGeometry\n args={[\n totalOpeningWidthM,\n topFrameWidthM,\n GlassPanelDepthM,\n ]}\n />\n </mesh>\n\n <mesh\n castShadow\n position={[\n -totalOpeningWidthM / 2 - sidesFrameWidthM / 2,\n sideFrameCenterY,\n rightGlass_Z,\n ]}\n material={allMaterials.glassInfillMaterial}\n >\n <boxGeometry\n args={[\n sidesFrameWidthM,\n totalOpeningHeightM + topFrameWidthM,\n GlassPanelDepthM,\n ]}\n />\n </mesh>\n\n <mesh\n castShadow\n position={[\n totalOpeningWidthM / 2 + sidesFrameWidthM / 2,\n sideFrameCenterY,\n rightGlass_Z,\n ]}\n material={allMaterials.glassInfillMaterial}\n >\n <boxGeometry\n args={[\n sidesFrameWidthM,\n totalOpeningHeightM + topFrameWidthM,\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={allMaterials.interiorFanlightMaterial}\n >\n <boxGeometry\n args={[totalOpeningWidthM, interiorFanlightHeightM, doorDepthM]}\n />\n </mesh>\n )}\n {doorInstances.map(instance => (\n <DoorLeaf\n key={instance.key}\n pivot={instance.pivot as \"left\" | \"right\"}\n xOffset={instance.x}\n materials={allMaterials}\n />\n ))}\n </group>\n </group>\n );\n}\n\n// {\n// /* DoorLeaf */\n// }\nfunction DoorLeaf({ pivot, xOffset, materials }: DoorLeafProps) {\n // Destructure materials from props.\n const {\n doorMaterial,\n glassInfillMaterial,\n hingeBodyMaterial,\n gasketMaterial,\n occulusInfillMaterial,\n frontDoorPlaneMaterial,\n backDoorPlaneMaterial,\n hingeAccentMaterial,\n } = materials;\n\n // Get NON-MATERIAL state from the context.\n const {\n isFrameVisible,\n door,\n doorFrame,\n interiorFanlight,\n occulus,\n frontDoorPlane,\n backDoorPlane,\n frameType,\n bodyType,\n exteriorFanlightType,\n glassVisible,\n glassDepth,\n } = useConfigurator();\n\n // --- Dimension calculations ---\n const { doorWidth, doorHeight, theDoorDepth, doorOpening } = door;\n const {\n frameDepth,\n topThk,\n sidesThk,\n doorStopWidth,\n doorStopDepth,\n doorStopOffset,\n gasketDepth,\n secondDoorStopWidth,\n secondDoorStopDepth,\n } = doorFrame;\n\n const initialDoorHeight = useRef<number | null>(null);\n\n useEffect(() => {\n if (doorHeight > 0 && initialDoorHeight.current === null) {\n initialDoorHeight.current = doorHeight;\n }\n }, [doorHeight]);\n\n const {\n x1: occulusX1,\n x2: occulusX2,\n y1: occulusY1,\n y2: occulusY2,\n depth: occulusInfillDepth,\n } = occulus;\n\n const interiorFanlightHeight = interiorFanlight.visible\n ? interiorFanlight.height\n : 0;\n const mainDoorHeight = doorHeight - interiorFanlightHeight;\n\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 totalOpeningHeightM = doorHeight / 1000;\n const doorDepthM = theDoorDepth / 1000;\n const frameDepthM = frameDepth / 1000;\n const sidesFrameWidthM = sidesThkValue / 1000;\n\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 const gasketDepthM = gasketDepth / 1000;\n\n const doorStopOffsetFromEdgeM = parseInt(doorStopOffset) / 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\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 const doorCenterZ = useMemo(() => {\n if (frameType === \"WF_FLI\") {\n return isOpeningIn\n ? frameDepthM / 2 - doorDepthM / 2\n : -frameDepthM / 2 + doorDepthM / 2;\n }\n if ([\"WDGF_WDG100\", \"WF_100\"].includes(frameType)) {\n return 0;\n }\n const gasketFaceZ = isOpeningIn\n ? gasketZPosition - gasketDepthM / 2\n : gasketZPosition + gasketDepthM / 2;\n return isOpeningIn\n ? gasketFaceZ - doorDepthM / 2\n : gasketFaceZ + doorDepthM / 2;\n }, [\n isOpeningIn,\n gasketZPosition,\n gasketDepthM,\n doorDepthM,\n frameType,\n frameDepthM,\n ]);\n\n const GlassPanelDepthM = glassDepth / 1000;\n const frontGlassOffsetZ = doorDepthM / 2 + GlassPanelDepthM / 2;\n const backGlassOffsetZ = -doorDepthM / 2 - GlassPanelDepthM / 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 useEffect(() => {\n const materialsToUpdate = [frontDoorPlaneMaterial, backDoorPlaneMaterial];\n materialsToUpdate.forEach(material => {\n // Check if the material has a texture map\n if (material.map) {\n // Set the texture to repeat\n material.map.wrapS = THREE.RepeatWrapping;\n material.map.wrapT = THREE.RepeatWrapping;\n\n material.map.repeat.set(doorWidthM, mainDoorHeightM);\n\n material.map.needsUpdate = true;\n }\n });\n }, [\n doorWidthM,\n mainDoorHeightM,\n frontDoorPlaneMaterial,\n backDoorPlaneMaterial,\n ]);\n\n const [isOpen, setIsOpen] = useState(false);\n const hingeSideX = pivot === \"left\" ? -doorWidthM / 2 : doorWidthM / 2;\n\n // --- PIVOT ---\n const hingeZ = useMemo(() => {\n if (frameType === \"WF_FLI\") {\n return isOpeningIn\n ? doorCenterZ - doorDepthM / 2\n : doorCenterZ + doorDepthM / 2;\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 (pivot === \"left\" ? Math.PI / 2 : -Math.PI / 2) * directionMultiplier,\n 0,\n ]\n : [0, 0, 0],\n config: { mass: 1, tension: 100, friction: 20 },\n });\n\n const handleClick = () => setIsOpen(!isOpen);\n const doorYPosition = -totalOpeningHeightM / 2 + mainDoorHeightM / 2;\n\n // Handle positioning logic\n const handleCenterYFromDoorBottom = 1.0;\n const safeHandleY = Math.min(\n Math.max(handleCenterYFromDoorBottom, 0.25),\n mainDoorHeightM - 0.25\n );\n const handleHeightM = -mainDoorHeightM / 2 + safeHandleY;\n\n const isSingleGlass = [\"SG8\", \"SG10\", \"SG12\"].includes(bodyType);\n const nonHingeSideX = pivot === \"left\" ? doorWidthM / 2 : -doorWidthM / 2;\n\n let handleX;\n if (isSingleGlass) {\n const plateHalfWidth = 0.05;\n handleX =\n nonHingeSideX + (pivot === \"left\" ? -plateHalfWidth : plateHalfWidth);\n } else {\n const latchMarginM = 0.08;\n handleX = nonHingeSideX + (pivot === \"left\" ? -latchMarginM : latchMarginM);\n }\n\n // Hinge dimension calculations\n const hingeTotalHeightM = 120 / 1000;\n const hingeRadiusM = 8 / 1000;\n const capHeightM = 4 / 1000;\n const separatorHeightM = 4 / 1000;\n const barrelPartHeight =\n (hingeTotalHeightM - capHeightM * 2 - separatorHeightM) / 2;\n const isGlassDoor = useMemo(\n () => [\"SG8\", \"SG10\", \"SG12\"].includes(bodyType),\n [bodyType]\n );\n\n // Hinge positioning logic\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 return Array.from(\n { length: numHinges },\n (_, i) => mainDoorHeightM / 2 - topMargin - i * spacing\n );\n }, [mainDoorHeightM]);\n\n const glassHingeYPositions = useMemo(() => {\n return [\n mainDoorHeightM / 2 - 250 / 1000,\n mainDoorHeightM / 2 - 450 / 1000,\n -mainDoorHeightM / 2 + 250 / 1000,\n ];\n }, [mainDoorHeightM]);\n\n const isStandardHingeVisible = useMemo(() => {\n if (isGlassDoor || !isFrameVisible) return false;\n return ![\"WDGF_WDG100\", \"WF_100\", \"WF_FLI\"].includes(frameType);\n }, [isFrameVisible, frameType, isGlassDoor]);\n\n return (\n <group position-x={xOffset}>\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 <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 {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\n {isGlassDoor &&\n isFrameVisible &&\n glassHingeYPositions.map((y, index) => (\n <GlassHinge\n key={`glass-hinge-${index}`}\n position={[0, y, doorOffsetZ + 0.0001]}\n pivot={pivot}\n frameSideWidth={sidesFrameWidthM}\n doorDepthM={doorDepthM}\n material={hingeBodyMaterial}\n gasketMaterial={gasketMaterial}\n />\n ))}\n\n <group position={[-hingeSideX, 0, doorOffsetZ]}>\n <mesh castShadow receiveShadow>\n <Geometry useGroups>\n <Base name=\"door-base\" material={doorMaterial}>\n <boxGeometry args={[doorWidthM, mainDoorHeightM, doorDepthM]} />\n </Base>\n <DoorStopCuts\n visible={[\"WDGF_WDG100\", \"WF_100\", \"WF_FLI\"].includes(\n frameType\n )}\n width={doorWidthM}\n height={totalOpeningHeightM}\n stopWidth={doorStopWidthM}\n stopDepth={doorStopDepthM}\n stopPositionZ={doorStopPositionZ}\n centerZ={doorCenterZ}\n material={doorMaterial}\n setName=\"1\"\n />\n <DoorStopCuts\n visible={[\"WDGF_WDG100\", \"WF_100\", \"WF_FLI\"].includes(\n frameType\n )}\n width={doorWidthM}\n height={totalOpeningHeightM}\n stopWidth={secondDoorStopWidthM}\n stopDepth={secondDoorStopDepthM}\n stopPositionZ={secondDoorStopPositionZ}\n centerZ={doorCenterZ}\n material={doorMaterial}\n setName=\"2\"\n />\n\n {occulus.visible && occulusWidthM > 0 && occulusHeightM > 0 && (\n <Subtraction\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 {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 {![\"WDGF_WDG100\", \"WF_100\"].includes(frameType) && (\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 {[\"WDGF_WDG100\", \"WF_100\"].includes(frameType) && (\n <mesh\n position={[0, -secondDoorStopWidthM / 2, backGlassOffsetZ]}\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 {frontDoorPlane.visible && (\n <mesh position={[0, 0, doorDepthM / 2 + 0.0005]} castShadow>\n <Geometry useGroups>\n <Base material={frontDoorPlaneMaterial}>\n <boxGeometry args={[doorWidthM, mainDoorHeightM, 0.001]} />\n </Base>\n {occulus.visible && occulusWidthM > 0 && occulusHeightM > 0 && (\n <Subtraction\n position={[occulusPositionXM, occulusPositionYM, 0]}\n >\n <boxGeometry\n args={[occulusWidthM, occulusHeightM, 0.002]}\n />\n </Subtraction>\n )}\n </Geometry>\n </mesh>\n )}\n {backDoorPlane.visible && (\n <mesh position={[0, 0, -doorDepthM / 2 - 0.0005]} castShadow>\n <Geometry useGroups>\n <Base material={backDoorPlaneMaterial}>\n <boxGeometry args={[doorWidthM, mainDoorHeightM, 0.0001]} />\n </Base>\n {occulus.visible && occulusWidthM > 0 && occulusHeightM > 0 && (\n <Subtraction\n position={[occulusPositionXM, occulusPositionYM, 0]}\n >\n <boxGeometry\n args={[occulusWidthM, occulusHeightM, 0.002]}\n />\n </Subtraction>\n )}\n </Geometry>\n </mesh>\n )}\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 <DoorHandle\n bodyType={bodyType}\n handleX={handleX}\n handleHeightM={handleHeightM}\n doorDepthM={doorDepthM}\n doorPivot={pivot}\n />\n </group>\n </a.group>\n </group>\n );\n}\n\nexport default DoorModels;\n","import React from \"react\";\nimport { ConfiguratorProvider } from \"../context/DoorContext\";\nimport DoorModels from \"./DoorModels\";\nimport type { MaterialProps } from \"../hooks/useDoorMaterials\";\n\ntype DoorConfiguratorProps = {\n doorName?: string;\n materials?: MaterialProps;\n doorPivot?: \"left\" | \"right\";\n doorOpening?: \"in\" | \"out\";\n is2D?: boolean;\n totalWidth?: number;\n totalHeight?: number;\n frameDepth?: number;\n};\n\nconst DoorConfigurator = ({\n doorName,\n materials,\n doorPivot,\n doorOpening,\n is2D = false,\n totalWidth,\n totalHeight,\n frameDepth,\n}: DoorConfiguratorProps) => {\n return (\n <ConfiguratorProvider initialIs2D={is2D}>\n <DoorModels\n doorName={doorName}\n materials={materials}\n doorPivot={doorPivot}\n doorOpening={doorOpening}\n totalWidth={totalWidth}\n totalHeight={totalHeight}\n frameDepth={frameDepth}\n />\n </ConfiguratorProvider>\n );\n};\n\nexport default DoorConfigurator;\n"],"names":["ConfiguratorContext","createContext","undefined","ConfiguratorProvider","_ref","children","initialIs2D","initialMaterials","materials","setMaterials","useState","is2D","setIs2D","isPlaneVisible","setIsPlaneVisible","isFrameVisible","setIsFrameVisible","cpid","setCpid","totalHeight","setTotalHeight","totalWidth","setTotalWidth","glassVisible","setGlassVisible","glassDepth","setGlassDepth","isDoubleDoor","setIsDoubleDoor","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","frontDoorPlane","setFrontDoorPlane","backDoorPlane","setBackDoorPlane","glass","setGlass","frameType","setFrameType","bodyType","setBodyType","exteriorFanlightType","setExteriorFanlightType","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","newSettings","lookupKey","doorDepth","isMxCaf","newFrameSettings","_objectWithoutProperties","_excluded","prevOcculus","topThkValue","parseInt","exteriorFanlightHeight","newDoorHeight","prevDoor","sidesThkValue","numDoors","newDoorWidth","_jsx","Provider","value","useConfigurator","context","useContext","Error","availableMaterials","black","THREE","MeshStandardMaterial","color","metal","metalness","roughness","darkgrey","grey","yellow","darkBrown","brown","transparent","opacity","aluminum","envMapIntensity","aluminumBrighter","aluminumExtraBrighter","silver","gold","diamond","test_material","isHexColor","str","test","buildMaterial","prop","textures","sourceValue","params","side","DoubleSide","map","texture","TextureLoader","load","getFirstValidValue","values","val","useDoorMaterials","materialsProp","textureUrls","useMemo","urls","Set","Object","forEach","add","Array","from","loadedTextures","useTexture","textureMap","url","index","build","Body","D_PRF_COLOR","D_FR_SRF_DECOR","D_FR_SRF_DECOR_S2","D_GASKET","interiorFanlightMaterial","D_SRF_DECOR","exteriorFanlightMaterial","occulusInfillMaterial","D_FR_COLOR","glassInfillMaterial","frontCoverPanelMaterial","backCoverPanelMaterial","frontDoorPlaneMaterial","D_SRF_DECOR_2","backDoorPlaneMaterial","hingeBodyMaterial","Hinge","hingeAccentMaterial","HingeCuts","StandardHandle","position","doorDepthM","roseRadius","roseThickness","handleRadius","handleLength","faceZ","connectorLength","cornerFrontZ","cornerBackZ","roseGapY","_jsxs","z","React","Fragment","castShadow","args","rotation","Math","PI","scale","MergedPlate","_ref2","plateMaterial","geometry","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","receiveShadow","Geometry","useGroups","Base","Subtraction","DoorStopCuts","_ref6","stopWidth","stopDepth","stopPositionZ","centerZ","setName","_Fragment","name","DoorModels","_ref7","doorName","doorPivotProp","doorOpeningProp","totalWidthProp","totalHeightProp","frameDepthProp","allMaterials","initialDoorHeight","useRef","current","pivotNewPosition","interiorFanlightHeightValue","exteriorFanlightHeightValue","exteriorFanlightDepthValue","architraveWidth","architraveDepth","interiorFanlightHeight","totalWidthM","totalHeightM","interiorFanlightHeightM","doorWidthM","totalOpeningHeightM","frameDepthM","topFrameWidthM","sidesFrameWidthM","totalOpeningWidthM","exteriorFanlightHeightM","exteriorFanlightDepthM","doorStopWidthM","doorStopDepthM","architraveProfileM","architraveDepthM","gasketWidthM","gasketDepthM","doorStopOffsetFromEdgeM","notchWidthM","notchDepthM","isOpeningIn","doorStopPositionZ","gasketZPosition","secondDoorStopWidthM","secondDoorStopDepthM","secondDoorStopPositionZ","secondGasketZPosition","doorCenterZ","gasketFaceZ","GlassPanelDepthM","doorInstances","key","x","yCenteringOffset","sideFrameCenterY","interiorFanlightYPosition","topFrameCenterY","exteriorFanlightYPosition","frontArchitraveZ","backArchitraveZ","leftArchitraveX","rightArchitraveX","topArchitraveY","topArchitraveWidth","topGasketYPosition","leftGasketXPosition","rightGasketXPosition","secondTopGasketYPosition","secondLeftGasketXPosition","secondRightGasketXPosition","leftGlass_Z","rightGlass_Z","instance","DoorLeaf","xOffset","_ref8","occulusX1","occulusX2","occulusY1","occulusY2","occulusInfillDepth","mainDoorHeight","mainDoorHeightM","occulusX1M","occulusX2M","occulusY1M","occulusY2M","occulusInfillDepthM","frontGlassOffsetZ","backGlassOffsetZ","occulusWidthM","occulusHeightM","occulusPositionXM","occulusPositionYM","materialsToUpdate","wrapS","RepeatWrapping","wrapT","repeat","set","needsUpdate","isOpen","setIsOpen","hingeSideX","hingeZ","doorOffsetZ","directionMultiplier","useSpring","config","mass","tension","friction","handleClick","doorYPosition","handleCenterYFromDoorBottom","safeHandleY","min","max","nonHingeSideX","plateHalfWidth","latchMarginM","hingeTotalHeightM","hingeRadiusM","capHeightM","separatorHeightM","barrelPartHeight","isGlassDoor","standardHingeYPositions","numHinges","topMargin","bottomMargin","availableHeight","spacing","_","glassHingeYPositions","isStandardHingeVisible","y","a","group","to","onClick","onPointerOver","document","body","style","cursor","onPointerOut","DoorConfigurator"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs.js","sources":["../src/lib/context/DoorContext.tsx","../src/lib/utils/materials.ts","../src/lib/utils/materialUtils.ts","../src/lib/hooks/useDoorMaterials.ts","../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\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\ntype DoorPlaneType = {\n visible: boolean;\n material: string;\n};\n\ntype MaterialProps = {\n D_SRF_DECOR_2?: string;\n D_SRF_DECOR?: string;\n D_PRF_COLOR?: string;\n D_FR_SRF_DECOR?: string;\n D_FR_SRF_DECOR_S2?: string;\n D_FR_COLOR?: string;\n D_GASKET?: string;\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 frontDoorPlane: DoorPlaneType;\n setFrontDoorPlane: React.Dispatch<React.SetStateAction<DoorPlaneType>>;\n backDoorPlane: DoorPlaneType;\n setBackDoorPlane: React.Dispatch<React.SetStateAction<DoorPlaneType>>;\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 totalDepth: number;\n setTotalDepth: React.Dispatch<React.SetStateAction<number>>;\n totalWidth: number;\n setTotalWidth: React.Dispatch<React.SetStateAction<number>>;\n handleParseCpid: (cpidToParse: string) => void;\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 isDoubleDoor: boolean;\n setIsDoubleDoor: React.Dispatch<React.SetStateAction<boolean>>;\n materials: MaterialProps; // This state is kept to reflect props\n setMaterials: React.Dispatch<React.SetStateAction<MaterialProps>>; // Kept for sync\n};\n\nconst ConfiguratorContext = createContext<ConfiguratorContextType | undefined>(\n undefined\n);\n\ntype ConfiguratorProviderProps = {\n children: React.ReactNode;\n initialIs2D?: boolean;\n initialMaterials?: MaterialProps;\n totalWidth?: number;\n totalHeight?: number;\n totalDepth?: number;\n};\n\nexport const ConfiguratorProvider = ({\n children,\n initialIs2D = false,\n initialMaterials = {},\n totalWidth: widthProp,\n totalHeight: heightProp,\n totalDepth: depthProp,\n}: ConfiguratorProviderProps) => {\n const [materials, setMaterials] = useState<MaterialProps>(initialMaterials);\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 [totalDepth, setTotalDepth] = useState<number>(103);\n const [glassVisible, setGlassVisible] = useState(false);\n const [glassDepth, setGlassDepth] = useState(8);\n const [isDoubleDoor, setIsDoubleDoor] = useState<boolean>(false);\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 [frontDoorPlane, setFrontDoorPlane] = useState<DoorPlaneType>({\n visible: true,\n material: \"frontDoor_material\",\n });\n const [backDoorPlane, setBackDoorPlane] = useState<DoorPlaneType>({\n visible: true,\n material: \"frontDoor_material\",\n });\n const [glass, setGlass] = useState<GlassType>({\n visible: false,\n material: \"infill_material\",\n depth: 20,\n });\n\n const [baseConfig, setBaseConfig] = useState<FrameAndDoorSettings | null>(\n null\n );\n\n const defaultOptions = [\"D_PRF_COLOR\", \"D_FR_SRF_DECOR\", \"D_FR_SRF_DECOR_S2\"];\n\n function getFirstValidValue(\n values: string[],\n isValid: (val: string) => boolean\n ) {\n for (const val of values) {\n if (isValid(val)) return val;\n }\n return \"\";\n }\n\n const hasValue = (val: string) =>\n val !== null && val !== undefined && val !== \"\";\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\n const doorHeight = 0;\n const [newPivotPosition, setNewPivotPosition] = useState<number>(0);\n const [parseMessage, setParseMessage] = useState({ type: \"\", text: \"\" });\n\n useEffect(() => {\n if (widthProp !== undefined) {\n setTotalWidth(widthProp);\n }\n }, [widthProp]);\n\n useEffect(() => {\n if (heightProp !== undefined) {\n setTotalHeight(heightProp);\n }\n }, [heightProp]);\n\n useEffect(() => {\n if (depthProp !== undefined) {\n setTotalDepth(depthProp);\n }\n }, [depthProp]);\n\n useEffect(() => {\n setIs2D(initialIs2D);\n }, [initialIs2D]);\n\n useEffect(() => {\n if (initialMaterials) {\n setMaterials(initialMaterials);\n }\n }, [initialMaterials]);\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 setIsDoubleDoor(false);\n setTotalHeight(2700);\n setTotalWidth(974);\n currentIndex++;\n } else if (parts[currentIndex] === \"DD\") {\n setIsDoubleDoor(true);\n setTotalWidth(1802);\n currentIndex++;\n } else {\n showMessage(\"Unsupported Door Type: Only 'SD' or 'DD' 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 setCpid(cpidToParse);\n\n showMessage(\"Configuration Applied!\", \"success\");\n },\n [\n setCpid,\n setBodyType,\n setExteriorFanlight,\n setExteriorFanlightType,\n setFrameType,\n setInteriorFanlight,\n setOcculus,\n setIsDoubleDoor,\n setTotalWidth,\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 }, [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 // Store pristine settings for scaling\n setBaseConfig(newSettings);\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\n // Sync totalDepth with the frame's default depth when frame type changes.\n if (newSettings.frameDepth) {\n setTotalDepth(newSettings.frameDepth);\n }\n }, [frameType]);\n\n // --- useEffect for scaling based on totalDepth ---\n useEffect(() => {\n if (!baseConfig || !baseConfig.frameDepth || baseConfig.frameDepth === 0)\n return;\n\n const baseFrameDepth = baseConfig.frameDepth;\n const ratio = totalDepth / baseFrameDepth;\n\n const scaleProportionally = (value: string | number | undefined): any => {\n if (typeof value === \"number\") {\n return value * ratio;\n }\n if (typeof value === \"string\" && value.endsWith(\"mm\")) {\n const num = parseFloat(value);\n if (!isNaN(num)) {\n return num * ratio + \"mm\";\n }\n }\n return value; // Return original if not scalable\n };\n\n setDoorFrame(prev => ({\n ...prev,\n frameDepth: totalDepth,\n doorStopDepth: scaleProportionally(baseConfig.doorStopDepth),\n notchDepth: scaleProportionally(baseConfig.notchDepth),\n gasketDepth: scaleProportionally(baseConfig.gasketDepth),\n secondDoorStopDepth: scaleProportionally(baseConfig.secondDoorStopDepth),\n }));\n\n if (baseConfig.doorDepth !== undefined) {\n const baseDoorDepth = baseConfig.doorDepth as number;\n const frameDelta = totalDepth - baseFrameDepth;\n let newDoorDepth;\n\n if (frameDelta > 0) {\n // --- THIS IS THE VALUE TO TWEAK ---\n // Increase this multiplier to make the door body grow faster when totalDepth increases.\n // A value of 1.0 means it grows at the same rate as the frame.\n // A value of 2.0 means it grows twice as fast as the frame.\n const increaseMultiplier = 0.8;\n newDoorDepth = baseDoorDepth + frameDelta * increaseMultiplier;\n } else {\n // When decreasing totalDepth, the door body scales down proportionally.\n newDoorDepth = baseDoorDepth * ratio;\n }\n setDoor(prev => ({ ...prev, theDoorDepth: newDoorDepth }));\n }\n\n const baseCoverPanelDepth = 12;\n setFrontCoverPanel(prev => ({\n ...prev,\n depth: baseCoverPanelDepth * ratio,\n }));\n setBackCoverPanel(prev => ({\n ...prev,\n depth: baseCoverPanelDepth * ratio,\n }));\n }, [totalDepth, baseConfig]);\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 break;\n case \"ALDGFL\":\n setExteriorFanlight(prev => ({ ...prev, depth: doorFrame.frameDepth }));\n break;\n case \"ALSGFL\":\n setExteriorFanlight(prev => ({ ...prev, depth: 40 }));\n break;\n default:\n break;\n }\n }, [\n exteriorFanlight.visible,\n exteriorFanlightType,\n doorFrame.frameDepth,\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 numDoors = isDoubleDoor ? 2 : 1;\n const newDoorWidth = (totalWidth - sidesThkValue * 2) / numDoors;\n setDoor(prevDoor => ({\n ...prevDoor,\n doorWidth: newDoorWidth > 0 ? newDoorWidth : 0,\n }));\n }, [totalWidth, doorFrame.sidesThk, isDoubleDoor]);\n\n return (\n <ConfiguratorContext.Provider\n value={{\n materials,\n setMaterials,\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 frontDoorPlane,\n setFrontDoorPlane,\n backDoorPlane,\n setBackDoorPlane,\n glass,\n setGlass,\n frameType,\n setFrameType,\n bodyType,\n setBodyType,\n totalHeight,\n setTotalHeight,\n totalDepth,\n setTotalDepth,\n totalWidth,\n setTotalWidth,\n exteriorFanlightType,\n setExteriorFanlightType,\n glassVisible,\n setGlassVisible,\n glassDepth,\n setGlassDepth,\n handleParseCpid,\n newPivotPosition,\n setNewPivotPosition,\n doorHeight,\n isDoubleDoor,\n setIsDoubleDoor,\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 * as THREE from \"three\";\n\nexport const availableMaterials = {\n black: new THREE.MeshStandardMaterial({ color: \"#000000\" }),\n metal: new THREE.MeshStandardMaterial({\n color: \"#aaaaaa\",\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 test_material: new THREE.MeshStandardMaterial({\n color: \"red\",\n roughness: 0.1,\n }),\n};\n\nexport const placeholderMaterial = new THREE.MeshStandardMaterial({\n color: \"#cccccc\",\n roughness: 0.8,\n});\n\nexport const placeholderMaterialforFrames = new THREE.MeshStandardMaterial({\n color: \"#000\",\n roughness: 0.8,\n});\n","import * as THREE from \"three\";\n\nexport type MaterialDefinition =\n | string\n | {\n value: string;\n opacity?: number;\n };\n\n// Helper function to check for hex color codes\nconst isHexColor = (str: string): boolean => /^#([0-9A-F]{3}){1,2}$/i.test(str);\n\n/**\n * A simple \"builder\" that creates a THREE.MeshStandardMaterial from a prop and an\n * optional map of pre-loaded textures. It now loads textures if they are not pre-loaded.\n * @param prop - The material definition (string or object).\n * @param textures - A map of URL -> THREE.Texture, provided by useTexture.\n * @returns A THREE.MeshStandardMaterial instance.\n */\nexport const buildMaterial = (\n prop?: MaterialDefinition,\n textures?: Record<string, THREE.Texture>\n): THREE.MeshStandardMaterial => {\n if (!prop) {\n return new THREE.MeshStandardMaterial({ color: \"#cccccc\", roughness: 0.8 });\n }\n\n const sourceValue = typeof prop === \"string\" ? prop : prop.value;\n const opacity = typeof prop === \"object\" ? prop.opacity : 1;\n\n // Start with base parameters.\n const params: THREE.MeshStandardMaterialParameters = {\n roughness: 0.8,\n side: THREE.DoubleSide,\n };\n\n if (isHexColor(sourceValue)) {\n // It's a color. Explicitly set the color and ensure no texture is applied.\n params.color = sourceValue;\n params.map = null;\n } else {\n // It's a texture. Explicitly set the color to white to avoid tinting the texture.\n params.color = \"#ffffff\";\n let texture: THREE.Texture | null = null;\n\n if (textures && textures[sourceValue]) {\n // Use the pre-loaded texture.\n texture = textures[sourceValue];\n } else if (sourceValue) {\n // Not pre-loaded, so load it now.\n // TextureLoader caches results internally, so this is efficient.\n texture = new THREE.TextureLoader().load(sourceValue);\n }\n params.map = texture;\n }\n\n // Handle transparency explicitly to prevent lingering state.\n if (opacity !== undefined && opacity < 1) {\n params.transparent = true;\n params.opacity = opacity;\n } else {\n // Explicitly turn transparency off if opacity is 1 or undefined.\n params.transparent = false;\n params.opacity = 1;\n }\n\n return new THREE.MeshStandardMaterial(params);\n};\n\nexport const getFirstValidValue = (\n values: (MaterialDefinition | undefined | null)[]\n): MaterialDefinition | undefined => {\n for (const val of values) {\n if (val) {\n return val;\n }\n }\n return undefined;\n};\n","import { useMemo } from \"react\";\nimport * as THREE from \"three\";\nimport { useTexture } from \"@react-three/drei\";\nimport {\n buildMaterial,\n getFirstValidValue,\n type MaterialDefinition,\n} from \"../utils/materialUtils\";\n\n// Re-export the type for easy access in other components\nexport type MaterialProps = {\n D_SRF_DECOR_2?: MaterialDefinition;\n D_SRF_DECOR?: MaterialDefinition;\n D_PRF_COLOR?: MaterialDefinition;\n D_FR_SRF_DECOR?: MaterialDefinition;\n D_FR_SRF_DECOR_S2?: MaterialDefinition;\n D_FR_COLOR?: MaterialDefinition;\n D_GASKET?: MaterialDefinition;\n Body?: MaterialDefinition;\n Hinge?: MaterialDefinition;\n HingeCuts?: MaterialDefinition;\n};\n\nexport const useDoorMaterials = (materialsProp: MaterialProps = {}) => {\n // 1. Collect all unique texture URLs from the props.\n const textureUrls = useMemo(() => {\n const urls = new Set<string>();\n // Iterate over all passed material props\n Object.values(materialsProp).forEach(prop => {\n // Get the value, whether it's a string or inside an object\n const value = typeof prop === \"string\" ? prop : prop?.value;\n // If it's a valid URL, add it to our set to avoid duplicates\n if (value && (value.startsWith(\"http\") || value.startsWith(\"/\"))) {\n urls.add(value);\n }\n });\n return Array.from(urls);\n }, [materialsProp]);\n\n // 2. Load all textures at once.\n // !! THIS IS THE MAGIC !!\n // `useTexture` will pause (\"suspend\") this component's rendering\n // until all textures in the array are fully loaded.\n const loadedTextures = useTexture(textureUrls);\n\n // 3. Create a map from URL back to the loaded THREE.Texture for easy lookup.\n const textureMap = useMemo(() => {\n const map: Record<string, THREE.Texture> = {};\n textureUrls.forEach((url, index) => {\n map[url] = loadedTextures[index];\n });\n return map;\n }, [textureUrls, loadedTextures]);\n\n // 4. Now that textures are guaranteed to be loaded, build all materials.\n // This memo ensures the materials are only created when props or textures change.\n return useMemo(() => {\n const build = (prop?: MaterialDefinition) =>\n buildMaterial(prop, textureMap);\n\n return {\n doorMaterial: build(materialsProp.Body),\n frameMaterial: build(\n getFirstValidValue([\n materialsProp.D_PRF_COLOR,\n materialsProp.D_FR_SRF_DECOR,\n materialsProp.D_FR_SRF_DECOR_S2,\n ])\n ),\n gasketMaterial: build(materialsProp.D_GASKET),\n doorStopMaterial: build(\n getFirstValidValue([\n materialsProp.D_PRF_COLOR,\n materialsProp.D_FR_SRF_DECOR,\n materialsProp.D_FR_SRF_DECOR_S2,\n ])\n ),\n interiorFanlightMaterial: build(materialsProp.D_SRF_DECOR),\n exteriorFanlightMaterial: build(materialsProp.D_SRF_DECOR),\n occulusInfillMaterial: build(materialsProp.D_FR_COLOR),\n glassInfillMaterial: build(materialsProp.D_FR_COLOR),\n frontCoverPanelMaterial: build(\n getFirstValidValue([\n materialsProp.D_PRF_COLOR,\n materialsProp.D_FR_SRF_DECOR,\n materialsProp.D_FR_SRF_DECOR_S2,\n ])\n ),\n backCoverPanelMaterial: build(\n getFirstValidValue([\n materialsProp.D_PRF_COLOR,\n materialsProp.D_FR_SRF_DECOR,\n materialsProp.D_FR_SRF_DECOR_S2,\n ])\n ),\n frontDoorPlaneMaterial: build(materialsProp.D_SRF_DECOR_2),\n backDoorPlaneMaterial: build(materialsProp.D_SRF_DECOR),\n hingeBodyMaterial: build(materialsProp.Hinge),\n hingeAccentMaterial: build(materialsProp.HingeCuts),\n };\n }, [materialsProp, textureMap]);\n};\n","import React, { useState, useMemo, useEffect, useRef } from \"react\";\nimport { Geometry, Base, Subtraction } from \"@react-three/csg\";\nimport { useConfigurator } from \"../context/DoorContext\";\nimport { useSpring, a } from \"@react-spring/three\";\nimport { availableMaterials } from \"../utils/materials\";\nimport {\n useDoorMaterials,\n type MaterialProps,\n} from \"../hooks/useDoorMaterials\";\n\nimport * as THREE from \"three\";\n\n// {\n// /* StandardHandle */\n// }\n\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 = frameType === \"WDGF_WDG100\" ? 0.008 + 0.0015 : 0.005;\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 material={availableMaterials.aluminum} castShadow>\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 >\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 >\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 >\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 material={availableMaterials.aluminum} castShadow>\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 >\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 >\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 >\n <cylinderGeometry\n args={[roseRadius, roseRadius, roseThickness, 48]}\n />\n </mesh>\n )}\n\n <group\n position={[\n 0,\n -(0.08 + roseGapY),\n z + (z > 0 ? roseThickness : -roseThickness),\n ]}\n castShadow\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 */}\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 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 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 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 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 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 material={availableMaterials.aluminum}\n >\n <cylinderGeometry\n args={[handleRadius, handleRadius, handleLength, 48]}\n />\n </mesh>\n </group>\n </group>\n </group>\n );\n}\n\n// {\n// /* MergedPlate */\n// }\n\nconst MergedPlate = ({ plateMaterial, roseThickness, faceZ }) => {\n const geometry = useMemo(() => {\n const shape = new THREE.Shape();\n const width = 0.1;\n const height = 0.24;\n const radius = 0.01;\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 const extrudeSettings = {\n steps: 2,\n depth: roseThickness,\n bevelEnabled: false,\n };\n return new THREE.ExtrudeGeometry(shape, extrudeSettings);\n }, [roseThickness]);\n\n return (\n <group position-z={faceZ}>\n <mesh geometry={geometry} material={plateMaterial} castShadow />\n </group>\n );\n};\n\n// {\n// /* GlassHandle */\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 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\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 >\n <cylinderGeometry\n args={[roseRadius, roseRadius, roseThickness, 48]}\n />\n </mesh>\n\n {/* Keyhole shape */}\n <mesh\n position={[0, -0.08, z + (z > 0 ? roseThickness : -roseThickness)]}\n castShadow\n >\n {/* Circular part */}\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 */}\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 >\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 >\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 >\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 >\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 >\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 >\n <sphereGeometry args={[handleRadius, 32, 32]} />\n </mesh>\n </group>\n </group>\n </group>\n );\n}\n\n// {\n// /* DoorHandle */\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();\n\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\n// {\n// /* GlassHinge */\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 >\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 >\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 >\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 >\n <boxGeometry args={[plateWidth, plateHeight, gasketThickness]} />\n </mesh>\n </group>\n </group>\n );\n}\n// {\n// /* DoorStopCutsProps */\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 material: THREE.Material;\n setName: string;\n};\n// {\n// /* DoorStopCuts */\n// }\nfunction DoorStopCuts({\n visible,\n width,\n height,\n stopWidth,\n stopDepth,\n stopPositionZ,\n centerZ,\n material,\n setName,\n}: DoorStopCutsProps) {\n if (!visible) return null;\n\n return (\n <>\n {/* Top cut */}\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\n// {\n// /* DoorModelsProps */\n// }\n\ntype DoorModelsProps = {\n doorName?: string;\n materials?: MaterialProps;\n doorPivot?: \"left\" | \"right\";\n doorOpening?: \"in\" | \"out\";\n totalWidth?: number;\n totalHeight?: number;\n totalDepth?: number;\n};\n\n// {\n// /* AllMaterialsType */\n// }\n\ntype AllMaterialsType = {\n doorMaterial: THREE.MeshStandardMaterial;\n frameMaterial: THREE.MeshStandardMaterial;\n gasketMaterial: THREE.MeshStandardMaterial;\n doorStopMaterial: THREE.MeshStandardMaterial;\n interiorFanlightMaterial: THREE.MeshStandardMaterial;\n exteriorFanlightMaterial: THREE.MeshStandardMaterial;\n occulusInfillMaterial: THREE.MeshStandardMaterial;\n glassInfillMaterial: THREE.MeshStandardMaterial;\n hingeBodyMaterial: THREE.MeshStandardMaterial;\n hingeAccentMaterial: THREE.MeshStandardMaterial;\n frontCoverPanelMaterial: THREE.MeshStandardMaterial;\n backCoverPanelMaterial: THREE.MeshStandardMaterial;\n frontDoorPlaneMaterial: THREE.MeshStandardMaterial;\n backDoorPlaneMaterial: THREE.MeshStandardMaterial;\n};\n\n// {\n// /* DoorLeafProps */\n// }\ntype DoorLeafProps = {\n pivot: \"left\" | \"right\";\n xOffset: number;\n materials: AllMaterialsType;\n};\n\n// {\n// /* DoorModels */\n// }\n\nfunction DoorModels({\n doorName,\n materials: materialsProp,\n doorPivot: doorPivotProp,\n doorOpening: doorOpeningProp,\n totalWidth: totalWidthProp,\n totalHeight: totalHeightProp,\n totalDepth: totalDepthProp,\n}: DoorModelsProps) {\n const {\n is2D,\n totalWidth,\n isFrameVisible,\n door,\n setDoor,\n doorFrame,\n setDoorFrame,\n interiorFanlight,\n exteriorFanlight,\n frontCoverPanel,\n backCoverPanel,\n frameType,\n glassVisible,\n glassDepth,\n handleParseCpid,\n isDoubleDoor,\n setMaterials,\n setTotalWidth,\n setTotalHeight,\n setTotalDepth,\n } = useConfigurator();\n\n useEffect(() => {\n if (doorName) {\n handleParseCpid(doorName);\n }\n }, [doorName, handleParseCpid]);\n\n useEffect(() => {\n if (materialsProp) {\n setMaterials(materialsProp as any);\n }\n }, [materialsProp, setMaterials]);\n\n useEffect(() => {\n if (doorPivotProp || doorOpeningProp) {\n setDoor(prevDoor => ({\n ...prevDoor,\n ...(doorPivotProp && { doorPivot: doorPivotProp }),\n ...(doorOpeningProp && { doorOpening: doorOpeningProp }),\n }));\n }\n }, [doorPivotProp, doorOpeningProp, setDoor]);\n\n useEffect(() => {\n if (totalWidthProp !== undefined) {\n setTotalWidth(totalWidthProp);\n }\n }, [totalWidthProp, setTotalWidth]);\n\n useEffect(() => {\n if (totalHeightProp !== undefined) {\n setTotalHeight(totalHeightProp);\n }\n }, [totalHeightProp, setTotalHeight]);\n\n useEffect(() => {\n if (totalDepthProp !== undefined) {\n setTotalDepth(totalDepthProp);\n }\n }, [totalDepthProp, setTotalDepth]);\n\n // --- Material Logic (Centralized in parent component) ---\n const allMaterials = useDoorMaterials(materialsProp);\n\n // --- Dimension calculations ---\n const { doorWidth, doorHeight, theDoorDepth } = door;\n const doorPivot = doorPivotProp || door.doorPivot;\n const doorOpening = doorOpeningProp || door.doorOpening;\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 } = doorFrame;\n\n const initialDoorHeight = useRef<number | null>(null);\n\n useEffect(() => {\n if (initialDoorHeight.current === null && doorHeight > 0) {\n initialDoorHeight.current = doorHeight;\n }\n }, [doorHeight]);\n\n const pivotNewPosition = useMemo(() => {\n if (initialDoorHeight.current === null || initialDoorHeight.current === 0)\n return 0;\n return (doorHeight - initialDoorHeight.current) / 2 / 1000;\n }, [doorHeight]);\n\n const { height: interiorFanlightHeightValue } = interiorFanlight;\n const {\n height: exteriorFanlightHeightValue,\n depth: exteriorFanlightDepthValue,\n } = exteriorFanlight;\n\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 totalWidthM =\n totalWidthProp !== undefined ? totalWidthProp / 1000 : totalWidth / 1000;\n const totalHeightM =\n totalHeightProp !== undefined ? totalHeightProp / 1000 : doorHeight / 1000;\n\n const interiorFanlightHeightM = interiorFanlightHeight / 1000;\n const doorWidthM = doorWidth / 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\n const totalOpeningWidthM = isDoubleDoor ? doorWidthM * 2 : doorWidthM;\n\n const exteriorFanlightHeightM = exteriorFanlight.visible\n ? exteriorFanlightHeightValue / 1000\n : 0;\n const exteriorFanlightDepthM = exteriorFanlightDepthValue / 1000;\n const doorStopWidthM = doorStopWidth / 1000;\n const doorStopDepthM = doorStopDepth / 1000;\n\n const architraveProfileM = architraveWidth / 1000;\n const architraveDepthM = architraveDepth / 1000;\n const gasketWidthM = gasketWidth / 1000;\n const gasketDepthM = gasketDepth / 1000;\n const doorStopOffsetFromEdgeM = parseInt(doorStopOffset) / 1000;\n const notchWidthM = (parseInt(notchWidth) || 20) / 1000;\n const notchDepthM = (parseInt(notchDepth) || 40) / 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\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 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 return isOpeningIn\n ? frameDepthM / 2 - doorDepthM / 2\n : -frameDepthM / 2 + doorDepthM / 2;\n }\n if ([\"WDGF_WDG100\", \"WF_100\"].includes(frameType)) {\n return 0;\n }\n const gasketFaceZ = isOpeningIn\n ? gasketZPosition - gasketDepthM / 2\n : gasketZPosition + gasketDepthM / 2;\n return isOpeningIn\n ? gasketFaceZ - doorDepthM / 2\n : gasketFaceZ + doorDepthM / 2;\n }, [\n isOpeningIn,\n gasketZPosition,\n gasketDepthM,\n doorDepthM,\n frameType,\n frameDepthM,\n ]);\n\n const GlassPanelDepthM = glassDepth / 1000;\n\n const doorInstances = useMemo(() => {\n if (isDoubleDoor) {\n return [\n { key: \"left\", pivot: \"left\" as const, x: -doorWidthM / 2 },\n { key: \"right\", pivot: \"right\" as const, x: doorWidthM / 2 },\n ];\n }\n return [{ key: \"single\", pivot: doorPivot, x: 0 }];\n }, [isDoubleDoor, doorWidthM, doorPivot]);\n\n // --- Centering & Positioning ---\n const yCenteringOffset = -topFrameWidthM / 2;\n const sideFrameCenterY = topFrameWidthM / 2;\n const interiorFanlightYPosition =\n totalOpeningHeightM / 2 - interiorFanlightHeightM / 2;\n const topFrameCenterY = totalOpeningHeightM / 2 + topFrameWidthM / 2;\n const exteriorFanlightYPosition =\n topFrameCenterY + topFrameWidthM / 2 + exteriorFanlightHeightM / 2;\n\n const frontArchitraveZ = frameDepthM / 2 + architraveDepthM / 2;\n const backArchitraveZ = -frameDepthM / 2 - architraveDepthM / 2;\n const leftArchitraveX = -totalOpeningWidthM / 2 - architraveProfileM / 2;\n const rightArchitraveX = totalOpeningWidthM / 2 + architraveProfileM / 2;\n const topArchitraveY = totalOpeningHeightM / 2 + architraveProfileM / 2;\n const topArchitraveWidth = totalOpeningWidthM + 2 * architraveProfileM;\n\n const topGasketYPosition =\n totalOpeningHeightM / 2 - doorStopWidthM + gasketWidthM / 2;\n const leftGasketXPosition =\n -totalOpeningWidthM / 2 + doorStopWidthM - gasketWidthM / 2;\n const rightGasketXPosition =\n totalOpeningWidthM / 2 - doorStopWidthM + gasketWidthM / 2;\n const secondTopGasketYPosition =\n totalOpeningHeightM / 2 - secondDoorStopWidthM + gasketWidthM / 2;\n const secondLeftGasketXPosition =\n -totalOpeningWidthM / 2 + secondDoorStopWidthM - gasketWidthM / 2;\n const secondRightGasketXPosition =\n totalOpeningWidthM / 2 - secondDoorStopWidthM + gasketWidthM / 2;\n\n const leftGlass_Z =\n -frameDepthM / 2 + GlassPanelDepthM / 2 - GlassPanelDepthM;\n const rightGlass_Z =\n frameDepthM / 2 - GlassPanelDepthM / 2 + GlassPanelDepthM;\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>\n {/*\n This invisible mesh acts as a stable bounding box.\n AutoFit will measure this box instead of the animated door parts,\n preventing the scaling distortion during the open/close animation.\n Its dimensions are the total dimensions passed in as props.\n */}\n <mesh visible={false}>\n <boxGeometry args={[totalWidthM, totalHeightM, frameDepthM]} />\n </mesh>\n\n {/* \n This group contains all the original, visible geometry.\n We apply the original positioning logic to this group\n to ensure it is placed correctly within the new parent container.\n */}\n <group position-y={yCenteringOffset + pivotNewPosition}>\n {frontCoverPanel.visible && (\n <group position-z={frontArchitraveZ}>\n <mesh\n position={[0, topArchitraveY, 0]}\n castShadow\n material={allMaterials.frontCoverPanelMaterial}\n >\n <boxGeometry\n args={[\n topArchitraveWidth,\n architraveProfileM,\n architraveDepthM,\n ]}\n />\n </mesh>\n <mesh\n position={[leftArchitraveX, 0, 0]}\n castShadow\n material={allMaterials.frontCoverPanelMaterial}\n >\n <boxGeometry\n args={[\n architraveProfileM,\n totalOpeningHeightM,\n architraveDepthM,\n ]}\n />\n </mesh>\n <mesh\n position={[rightArchitraveX, 0, 0]}\n castShadow\n material={allMaterials.frontCoverPanelMaterial}\n >\n <boxGeometry\n args={[\n architraveProfileM,\n totalOpeningHeightM,\n architraveDepthM,\n ]}\n />\n </mesh>\n </group>\n )}\n {backCoverPanel.visible && (\n <group position-z={backArchitraveZ}>\n <mesh\n position={[0, topArchitraveY, 0]}\n castShadow\n material={allMaterials.backCoverPanelMaterial}\n >\n <boxGeometry\n args={[\n topArchitraveWidth,\n architraveProfileM,\n architraveDepthM,\n ]}\n />\n </mesh>\n <mesh\n position={[leftArchitraveX, 0, 0]}\n castShadow\n material={allMaterials.backCoverPanelMaterial}\n >\n <boxGeometry\n args={[\n architraveProfileM,\n totalOpeningHeightM,\n architraveDepthM,\n ]}\n />\n </mesh>\n <mesh\n position={[rightArchitraveX, 0, 0]}\n castShadow\n material={allMaterials.backCoverPanelMaterial}\n >\n <boxGeometry\n args={[\n architraveProfileM,\n totalOpeningHeightM,\n architraveDepthM,\n ]}\n />\n </mesh>\n </group>\n )}\n {exteriorFanlight.visible && (\n <mesh\n position={[0, exteriorFanlightYPosition, 0]}\n castShadow\n material={allMaterials.exteriorFanlightMaterial}\n >\n <boxGeometry\n args={[\n totalOpeningWidthM + sidesFrameWidthM * 2,\n exteriorFanlightHeightM,\n exteriorFanlightDepthM,\n ]}\n />\n </mesh>\n )}\n {isFrameVisible && (\n <group>\n <mesh castShadow position={[0, topFrameCenterY, 0]}>\n <Geometry useGroups>\n <Base name=\"frame-base\" material={allMaterials.frameMaterial}>\n <boxGeometry\n args={[totalOpeningWidthM, 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={allMaterials.frameMaterial}\n position={[0, notchposition, 0]}\n >\n <boxGeometry\n args={[\n totalOpeningWidthM + 0.01,\n notchWidthM,\n notchDepthM,\n ]}\n />\n </Subtraction>\n )}\n </Geometry>\n </mesh>\n <mesh\n castShadow\n position={[\n -totalOpeningWidthM / 2 - sidesFrameWidthM / 2,\n sideFrameCenterY,\n 0,\n ]}\n >\n <Geometry useGroups>\n <Base name=\"frame-base\" material={allMaterials.frameMaterial}>\n <boxGeometry\n args={[\n sidesFrameWidthM,\n totalOpeningHeightM + topFrameWidthM,\n frameDepthM,\n ]}\n />\n </Base>\n {![\"MXF_40\", \"MXF_50\", \"MXCAF_40\", \"MXCAF_50\"].includes(\n frameType\n ) && (\n <Subtraction\n name=\"cut-exterior\"\n material={allMaterials.frameMaterial}\n position={[-notchposition, 0, 0]}\n >\n <boxGeometry\n args={[\n notchWidthM,\n totalOpeningHeightM + topFrameWidthM + 0.01,\n notchDepthM,\n ]}\n />\n </Subtraction>\n )}\n </Geometry>\n </mesh>\n <mesh\n castShadow\n position={[\n totalOpeningWidthM / 2 + sidesFrameWidthM / 2,\n sideFrameCenterY,\n 0,\n ]}\n >\n <Geometry useGroups>\n <Base name=\"frame-base\" material={allMaterials.frameMaterial}>\n <boxGeometry\n args={[\n sidesFrameWidthM,\n totalOpeningHeightM + topFrameWidthM,\n frameDepthM,\n ]}\n />\n </Base>\n {![\"MXF_40\", \"MXF_50\", \"MXCAF_40\", \"MXCAF_50\"].includes(\n frameType\n ) && (\n <Subtraction\n name=\"cut-exterior\"\n material={allMaterials.frameMaterial}\n position={[notchposition, 0, 0]}\n >\n <boxGeometry\n args={[\n notchWidthM,\n totalOpeningHeightM + topFrameWidthM + 0.01,\n notchDepthM,\n ]}\n />\n </Subtraction>\n )}\n </Geometry>\n </mesh>\n <mesh\n castShadow\n position={[\n 0,\n totalOpeningHeightM / 2 - doorStopWidthM / 2,\n doorStopPositionZ,\n ]}\n material={allMaterials.doorStopMaterial}\n >\n <boxGeometry\n args={[totalOpeningWidthM, doorStopWidthM, doorStopDepthM]}\n />\n </mesh>\n <mesh\n castShadow\n position={[\n -totalOpeningWidthM / 2 + doorStopWidthM / 2,\n 0,\n doorStopPositionZ,\n ]}\n material={allMaterials.doorStopMaterial}\n >\n <boxGeometry\n args={[doorStopWidthM, totalOpeningHeightM, doorStopDepthM]}\n />\n </mesh>\n <mesh\n castShadow\n position={[\n totalOpeningWidthM / 2 - doorStopWidthM / 2,\n 0,\n doorStopPositionZ,\n ]}\n material={allMaterials.doorStopMaterial}\n >\n <boxGeometry\n args={[doorStopWidthM, totalOpeningHeightM, doorStopDepthM]}\n />\n </mesh>\n {frameType !== \"WF_FLI\" && (\n <>\n <mesh\n castShadow\n position={[0, topGasketYPosition, gasketZPosition]}\n material={allMaterials.gasketMaterial}\n >\n <boxGeometry\n args={[\n totalOpeningWidthM - 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={allMaterials.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={allMaterials.gasketMaterial}\n >\n <boxGeometry\n args={[\n gasketWidthM + 0.005,\n totalOpeningHeightM - 0.02,\n gasketDepthM,\n ]}\n />\n </mesh>\n </>\n )}\n\n {[\"WDGF_WDG100\", \"WF_100\", \"WF_FLI\"].includes(frameType) && (\n <group>\n <group>\n <mesh\n castShadow\n position={[\n 0,\n totalOpeningHeightM / 2 - secondDoorStopWidthM / 2,\n secondDoorStopPositionZ,\n ]}\n material={allMaterials.doorStopMaterial}\n >\n <boxGeometry\n args={[\n totalOpeningWidthM,\n secondDoorStopWidthM,\n secondDoorStopDepthM,\n ]}\n />\n </mesh>\n <mesh\n castShadow\n position={[\n -totalOpeningWidthM / 2 + secondDoorStopWidthM / 2,\n 0,\n secondDoorStopPositionZ,\n ]}\n material={allMaterials.doorStopMaterial}\n >\n <boxGeometry\n args={[\n secondDoorStopWidthM,\n totalOpeningHeightM,\n secondDoorStopDepthM,\n ]}\n />\n </mesh>\n <mesh\n castShadow\n position={[\n totalOpeningWidthM / 2 - secondDoorStopWidthM / 2,\n 0,\n secondDoorStopPositionZ,\n ]}\n material={allMaterials.doorStopMaterial}\n >\n <boxGeometry\n args={[\n secondDoorStopWidthM,\n totalOpeningHeightM,\n secondDoorStopDepthM,\n ]}\n />\n </mesh>\n </group>\n\n <group>\n <mesh\n castShadow\n position={[\n 0,\n secondTopGasketYPosition - 0.005,\n secondGasketZPosition,\n ]}\n material={allMaterials.gasketMaterial}\n >\n <boxGeometry\n args={[\n totalOpeningWidthM - 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={allMaterials.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={allMaterials.gasketMaterial}\n >\n <boxGeometry\n args={[\n gasketWidthM + 0.004,\n totalOpeningHeightM - 0.04,\n gasketDepthM,\n ]}\n />\n </mesh>\n </group>\n {glassVisible && (\n <>\n <group>\n {[\"WDGF_WDG100\", \"WF_100\"].includes(frameType) && (\n <mesh\n castShadow\n position={[\n 0,\n topFrameCenterY - secondDoorStopWidthM / 2,\n leftGlass_Z,\n ]}\n material={allMaterials.glassInfillMaterial}\n >\n <boxGeometry\n args={[\n totalOpeningWidthM - 2 * secondDoorStopWidthM,\n topFrameWidthM + secondDoorStopWidthM,\n GlassPanelDepthM,\n ]}\n />\n </mesh>\n )}\n {![\"WDGF_WDG100\", \"WF_100\"].includes(frameType) && (\n <mesh\n castShadow\n position={[0, topFrameCenterY, leftGlass_Z]}\n material={allMaterials.glassInfillMaterial}\n >\n <boxGeometry\n args={[\n totalOpeningWidthM - 2 * secondDoorStopWidthM,\n topFrameWidthM,\n GlassPanelDepthM,\n ]}\n />\n </mesh>\n )}\n\n <mesh\n castShadow\n position={[\n -totalOpeningWidthM / 2 -\n sidesFrameWidthM / 2 +\n secondDoorStopWidthM / 2,\n sideFrameCenterY,\n leftGlass_Z,\n ]}\n material={allMaterials.glassInfillMaterial}\n >\n <boxGeometry\n args={[\n sidesFrameWidthM + secondDoorStopWidthM,\n totalOpeningHeightM + topFrameWidthM,\n GlassPanelDepthM,\n ]}\n />\n </mesh>\n\n <mesh\n castShadow\n position={[\n totalOpeningWidthM / 2 +\n sidesFrameWidthM / 2 -\n secondDoorStopWidthM / 2,\n sideFrameCenterY,\n leftGlass_Z,\n ]}\n material={allMaterials.glassInfillMaterial}\n >\n <boxGeometry\n args={[\n sidesFrameWidthM + secondDoorStopWidthM,\n totalOpeningHeightM + topFrameWidthM,\n GlassPanelDepthM,\n ]}\n />\n </mesh>\n </group>\n\n <group>\n <mesh\n castShadow\n position={[0, topFrameCenterY, rightGlass_Z]}\n material={allMaterials.glassInfillMaterial}\n >\n <boxGeometry\n args={[\n totalOpeningWidthM,\n topFrameWidthM,\n GlassPanelDepthM,\n ]}\n />\n </mesh>\n\n <mesh\n castShadow\n position={[\n -totalOpeningWidthM / 2 - sidesFrameWidthM / 2,\n sideFrameCenterY,\n rightGlass_Z,\n ]}\n material={allMaterials.glassInfillMaterial}\n >\n <boxGeometry\n args={[\n sidesFrameWidthM,\n totalOpeningHeightM + topFrameWidthM,\n GlassPanelDepthM,\n ]}\n />\n </mesh>\n\n <mesh\n castShadow\n position={[\n totalOpeningWidthM / 2 + sidesFrameWidthM / 2,\n sideFrameCenterY,\n rightGlass_Z,\n ]}\n material={allMaterials.glassInfillMaterial}\n >\n <boxGeometry\n args={[\n sidesFrameWidthM,\n totalOpeningHeightM + topFrameWidthM,\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={allMaterials.interiorFanlightMaterial}\n >\n <boxGeometry\n args={[totalOpeningWidthM, interiorFanlightHeightM, doorDepthM]}\n />\n </mesh>\n )}\n {doorInstances.map(instance => (\n <DoorLeaf\n key={instance.key}\n pivot={instance.pivot as \"left\" | \"right\"}\n xOffset={instance.x}\n materials={allMaterials}\n />\n ))}\n </group>\n </group>\n );\n}\n\n// {\n// /* DoorLeaf */\n// }\nfunction DoorLeaf({ pivot, xOffset, materials }: DoorLeafProps) {\n // Destructure materials from props.\n const {\n doorMaterial,\n glassInfillMaterial,\n hingeBodyMaterial,\n gasketMaterial,\n occulusInfillMaterial,\n frontDoorPlaneMaterial,\n backDoorPlaneMaterial,\n hingeAccentMaterial,\n } = materials;\n\n // Get NON-MATERIAL state from the context.\n const {\n isFrameVisible,\n door,\n doorFrame,\n interiorFanlight,\n occulus,\n frontDoorPlane,\n backDoorPlane,\n frameType,\n bodyType,\n exteriorFanlightType,\n glassVisible,\n glassDepth,\n } = useConfigurator();\n\n // --- Dimension calculations ---\n const { doorWidth, doorHeight, theDoorDepth, doorOpening } = door;\n const {\n frameDepth,\n topThk,\n sidesThk,\n doorStopWidth,\n doorStopDepth,\n doorStopOffset,\n gasketDepth,\n secondDoorStopWidth,\n secondDoorStopDepth,\n } = doorFrame;\n\n const initialDoorHeight = useRef<number | null>(null);\n\n useEffect(() => {\n if (doorHeight > 0 && initialDoorHeight.current === null) {\n initialDoorHeight.current = doorHeight;\n }\n }, [doorHeight]);\n\n const {\n x1: occulusX1,\n x2: occulusX2,\n y1: occulusY1,\n y2: occulusY2,\n depth: occulusInfillDepth,\n } = occulus;\n\n const interiorFanlightHeight = interiorFanlight.visible\n ? interiorFanlight.height\n : 0;\n const mainDoorHeight = doorHeight - interiorFanlightHeight;\n\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 totalOpeningHeightM = doorHeight / 1000;\n const doorDepthM = theDoorDepth / 1000;\n const frameDepthM = frameDepth / 1000;\n const sidesFrameWidthM = sidesThkValue / 1000;\n\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 const gasketDepthM = gasketDepth / 1000;\n\n const doorStopOffsetFromEdgeM = parseInt(doorStopOffset) / 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\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 const doorCenterZ = useMemo(() => {\n if (frameType === \"WF_FLI\") {\n return isOpeningIn\n ? frameDepthM / 2 - doorDepthM / 2\n : -frameDepthM / 2 + doorDepthM / 2;\n }\n if ([\"WDGF_WDG100\", \"WF_100\"].includes(frameType)) {\n return 0;\n }\n const gasketFaceZ = isOpeningIn\n ? gasketZPosition - gasketDepthM / 2\n : gasketZPosition + gasketDepthM / 2;\n return isOpeningIn\n ? gasketFaceZ - doorDepthM / 2\n : gasketFaceZ + doorDepthM / 2;\n }, [\n isOpeningIn,\n gasketZPosition,\n gasketDepthM,\n doorDepthM,\n frameType,\n frameDepthM,\n ]);\n\n const GlassPanelDepthM = glassDepth / 1000;\n const frontGlassOffsetZ = doorDepthM / 2 + GlassPanelDepthM / 2;\n const backGlassOffsetZ = -doorDepthM / 2 - GlassPanelDepthM / 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 useEffect(() => {\n const materialsToUpdate = [frontDoorPlaneMaterial, backDoorPlaneMaterial];\n materialsToUpdate.forEach(material => {\n // Check if the material has a texture map\n if (material.map) {\n // Set the texture to repeat\n material.map.wrapS = THREE.RepeatWrapping;\n material.map.wrapT = THREE.RepeatWrapping;\n\n material.map.repeat.set(doorWidthM, mainDoorHeightM);\n\n material.map.needsUpdate = true;\n }\n });\n }, [\n doorWidthM,\n mainDoorHeightM,\n frontDoorPlaneMaterial,\n backDoorPlaneMaterial,\n ]);\n\n const [isOpen, setIsOpen] = useState(false);\n const hingeSideX = pivot === \"left\" ? -doorWidthM / 2 : doorWidthM / 2;\n\n // --- PIVOT ---\n const hingeZ = useMemo(() => {\n if (frameType === \"WF_FLI\") {\n return isOpeningIn\n ? doorCenterZ - doorDepthM / 2\n : doorCenterZ + doorDepthM / 2;\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 (pivot === \"left\" ? Math.PI / 2 : -Math.PI / 2) * directionMultiplier,\n 0,\n ]\n : [0, 0, 0],\n config: { mass: 1, tension: 100, friction: 20 },\n });\n\n const handleClick = () => setIsOpen(!isOpen);\n const doorYPosition = -totalOpeningHeightM / 2 + mainDoorHeightM / 2;\n\n // Handle positioning logic\n const handleCenterYFromDoorBottom = 1.0;\n const safeHandleY = Math.min(\n Math.max(handleCenterYFromDoorBottom, 0.25),\n mainDoorHeightM - 0.25\n );\n const handleHeightM = -mainDoorHeightM / 2 + safeHandleY;\n\n const isSingleGlass = [\"SG8\", \"SG10\", \"SG12\"].includes(bodyType);\n const nonHingeSideX = pivot === \"left\" ? doorWidthM / 2 : -doorWidthM / 2;\n\n let handleX;\n if (isSingleGlass) {\n const plateHalfWidth = 0.05;\n handleX =\n nonHingeSideX + (pivot === \"left\" ? -plateHalfWidth : plateHalfWidth);\n } else {\n const latchMarginM = 0.08;\n handleX = nonHingeSideX + (pivot === \"left\" ? -latchMarginM : latchMarginM);\n }\n\n // Hinge dimension calculations\n const hingeTotalHeightM = 120 / 1000;\n const hingeRadiusM = 8 / 1000;\n const capHeightM = 4 / 1000;\n const separatorHeightM = 4 / 1000;\n const barrelPartHeight =\n (hingeTotalHeightM - capHeightM * 2 - separatorHeightM) / 2;\n const isGlassDoor = useMemo(\n () => [\"SG8\", \"SG10\", \"SG12\"].includes(bodyType),\n [bodyType]\n );\n\n // Hinge positioning logic\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 return Array.from(\n { length: numHinges },\n (_, i) => mainDoorHeightM / 2 - topMargin - i * spacing\n );\n }, [mainDoorHeightM]);\n\n const glassHingeYPositions = useMemo(() => {\n return [\n mainDoorHeightM / 2 - 250 / 1000,\n mainDoorHeightM / 2 - 450 / 1000,\n -mainDoorHeightM / 2 + 250 / 1000,\n ];\n }, [mainDoorHeightM]);\n\n const isStandardHingeVisible = useMemo(() => {\n if (isGlassDoor || !isFrameVisible) return false;\n return ![\"WDGF_WDG100\", \"WF_100\", \"WF_FLI\"].includes(frameType);\n }, [isFrameVisible, frameType, isGlassDoor]);\n\n return (\n <group position-x={xOffset}>\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 <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 {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\n {isGlassDoor &&\n isFrameVisible &&\n glassHingeYPositions.map((y, index) => (\n <GlassHinge\n key={`glass-hinge-${index}`}\n position={[0, y, doorOffsetZ + 0.0001]}\n pivot={pivot}\n frameSideWidth={sidesFrameWidthM}\n doorDepthM={doorDepthM}\n material={hingeBodyMaterial}\n gasketMaterial={gasketMaterial}\n />\n ))}\n\n <group position={[-hingeSideX, 0, doorOffsetZ]}>\n <mesh castShadow receiveShadow>\n <Geometry useGroups>\n <Base name=\"door-base\" material={doorMaterial}>\n <boxGeometry args={[doorWidthM, mainDoorHeightM, doorDepthM]} />\n </Base>\n <DoorStopCuts\n visible={[\"WDGF_WDG100\", \"WF_100\", \"WF_FLI\"].includes(\n frameType\n )}\n width={doorWidthM}\n height={totalOpeningHeightM}\n stopWidth={doorStopWidthM}\n stopDepth={doorStopDepthM}\n stopPositionZ={doorStopPositionZ}\n centerZ={doorCenterZ}\n material={doorMaterial}\n setName=\"1\"\n />\n <DoorStopCuts\n visible={[\"WDGF_WDG100\", \"WF_100\", \"WF_FLI\"].includes(\n frameType\n )}\n width={doorWidthM}\n height={totalOpeningHeightM}\n stopWidth={secondDoorStopWidthM}\n stopDepth={secondDoorStopDepthM}\n stopPositionZ={secondDoorStopPositionZ}\n centerZ={doorCenterZ}\n material={doorMaterial}\n setName=\"2\"\n />\n\n {occulus.visible && occulusWidthM > 0 && occulusHeightM > 0 && (\n <Subtraction\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 {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 {![\"WDGF_WDG100\", \"WF_100\"].includes(frameType) && (\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 {[\"WDGF_WDG100\", \"WF_100\"].includes(frameType) && (\n <mesh\n position={[0, -secondDoorStopWidthM / 2, backGlassOffsetZ]}\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 {frontDoorPlane.visible && (\n <mesh position={[0, 0, doorDepthM / 2 + 0.0005]} castShadow>\n <Geometry useGroups>\n <Base material={frontDoorPlaneMaterial}>\n <boxGeometry args={[doorWidthM, mainDoorHeightM, 0.001]} />\n </Base>\n {occulus.visible && occulusWidthM > 0 && occulusHeightM > 0 && (\n <Subtraction\n position={[occulusPositionXM, occulusPositionYM, 0]}\n >\n <boxGeometry\n args={[occulusWidthM, occulusHeightM, 0.002]}\n />\n </Subtraction>\n )}\n </Geometry>\n </mesh>\n )}\n {backDoorPlane.visible && (\n <mesh position={[0, 0, -doorDepthM / 2 - 0.0005]} castShadow>\n <Geometry useGroups>\n <Base material={backDoorPlaneMaterial}>\n <boxGeometry args={[doorWidthM, mainDoorHeightM, 0.0001]} />\n </Base>\n {occulus.visible && occulusWidthM > 0 && occulusHeightM > 0 && (\n <Subtraction\n position={[occulusPositionXM, occulusPositionYM, 0]}\n >\n <boxGeometry\n args={[occulusWidthM, occulusHeightM, 0.002]}\n />\n </Subtraction>\n )}\n </Geometry>\n </mesh>\n )}\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 <DoorHandle\n bodyType={bodyType}\n handleX={handleX}\n handleHeightM={handleHeightM}\n doorDepthM={doorDepthM}\n doorPivot={pivot}\n />\n </group>\n </a.group>\n </group>\n );\n}\n\nexport default DoorModels;\n","import React from \"react\";\nimport { ConfiguratorProvider } from \"../context/DoorContext\";\nimport DoorModels from \"./DoorModels\";\nimport type { MaterialProps } from \"../hooks/useDoorMaterials\";\n\ntype DoorConfiguratorProps = {\n doorName?: string;\n materials?: MaterialProps;\n doorPivot?: \"left\" | \"right\";\n doorOpening?: \"in\" | \"out\";\n is2D?: boolean;\n totalWidth?: number;\n totalHeight?: number;\n totalDepth?: number;\n};\n\nconst DoorConfigurator = ({\n doorName,\n materials,\n doorPivot,\n doorOpening,\n is2D = false,\n totalWidth,\n totalHeight,\n totalDepth,\n}: DoorConfiguratorProps) => {\n return (\n <ConfiguratorProvider\n initialIs2D={is2D}\n totalWidth={totalWidth}\n totalHeight={totalHeight}\n totalDepth={totalDepth}\n >\n <DoorModels\n doorName={doorName}\n materials={materials}\n doorPivot={doorPivot}\n doorOpening={doorOpening}\n />\n </ConfiguratorProvider>\n );\n};\n\nexport default DoorConfigurator;\n"],"names":["ConfiguratorContext","createContext","undefined","ConfiguratorProvider","_ref","children","initialIs2D","initialMaterials","totalWidth","widthProp","totalHeight","heightProp","totalDepth","depthProp","materials","setMaterials","useState","is2D","setIs2D","isPlaneVisible","setIsPlaneVisible","isFrameVisible","setIsFrameVisible","cpid","setCpid","setTotalHeight","setTotalWidth","setTotalDepth","glassVisible","setGlassVisible","glassDepth","setGlassDepth","isDoubleDoor","setIsDoubleDoor","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","frontDoorPlane","setFrontDoorPlane","backDoorPlane","setBackDoorPlane","glass","setGlass","baseConfig","setBaseConfig","frameType","setFrameType","bodyType","setBodyType","exteriorFanlightType","setExteriorFanlightType","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","newSettings","lookupKey","doorDepth","isMxCaf","newFrameSettings","_objectWithoutProperties","_excluded","baseFrameDepth","ratio","scaleProportionally","value","num","parseFloat","isNaN","baseDoorDepth","frameDelta","increaseMultiplier","baseCoverPanelDepth","prevOcculus","topThkValue","parseInt","exteriorFanlightHeight","newDoorHeight","prevDoor","sidesThkValue","numDoors","newDoorWidth","_jsx","Provider","useConfigurator","context","useContext","Error","availableMaterials","black","THREE","MeshStandardMaterial","color","metal","metalness","roughness","darkgrey","grey","yellow","darkBrown","brown","transparent","opacity","aluminum","envMapIntensity","aluminumBrighter","aluminumExtraBrighter","silver","gold","diamond","test_material","isHexColor","str","test","buildMaterial","prop","textures","sourceValue","params","side","DoubleSide","map","texture","TextureLoader","load","getFirstValidValue","values","val","useDoorMaterials","materialsProp","textureUrls","useMemo","urls","Set","Object","forEach","add","Array","from","loadedTextures","useTexture","textureMap","url","index","build","Body","D_PRF_COLOR","D_FR_SRF_DECOR","D_FR_SRF_DECOR_S2","D_GASKET","interiorFanlightMaterial","D_SRF_DECOR","exteriorFanlightMaterial","occulusInfillMaterial","D_FR_COLOR","glassInfillMaterial","frontCoverPanelMaterial","backCoverPanelMaterial","frontDoorPlaneMaterial","D_SRF_DECOR_2","backDoorPlaneMaterial","hingeBodyMaterial","Hinge","hingeAccentMaterial","HingeCuts","StandardHandle","position","doorDepthM","roseRadius","roseThickness","handleRadius","handleLength","faceZ","connectorLength","cornerFrontZ","cornerBackZ","roseGapY","_jsxs","z","React","Fragment","castShadow","args","rotation","Math","PI","scale","MergedPlate","_ref2","plateMaterial","geometry","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","receiveShadow","Geometry","useGroups","Base","Subtraction","DoorStopCuts","_ref6","stopWidth","stopDepth","stopPositionZ","centerZ","setName","_Fragment","name","DoorModels","_ref7","doorName","doorPivotProp","doorOpeningProp","totalWidthProp","totalHeightProp","totalDepthProp","allMaterials","initialDoorHeight","useRef","current","pivotNewPosition","interiorFanlightHeightValue","exteriorFanlightHeightValue","exteriorFanlightDepthValue","architraveWidth","architraveDepth","interiorFanlightHeight","totalWidthM","totalHeightM","interiorFanlightHeightM","doorWidthM","totalOpeningHeightM","frameDepthM","topFrameWidthM","sidesFrameWidthM","totalOpeningWidthM","exteriorFanlightHeightM","exteriorFanlightDepthM","doorStopWidthM","doorStopDepthM","architraveProfileM","architraveDepthM","gasketWidthM","gasketDepthM","doorStopOffsetFromEdgeM","notchWidthM","notchDepthM","isOpeningIn","doorStopPositionZ","gasketZPosition","secondDoorStopWidthM","secondDoorStopDepthM","secondDoorStopPositionZ","secondGasketZPosition","doorCenterZ","gasketFaceZ","GlassPanelDepthM","doorInstances","key","x","yCenteringOffset","sideFrameCenterY","interiorFanlightYPosition","topFrameCenterY","exteriorFanlightYPosition","frontArchitraveZ","backArchitraveZ","leftArchitraveX","rightArchitraveX","topArchitraveY","topArchitraveWidth","topGasketYPosition","leftGasketXPosition","rightGasketXPosition","secondTopGasketYPosition","secondLeftGasketXPosition","secondRightGasketXPosition","leftGlass_Z","rightGlass_Z","instance","DoorLeaf","xOffset","_ref8","occulusX1","occulusX2","occulusY1","occulusY2","occulusInfillDepth","mainDoorHeight","mainDoorHeightM","occulusX1M","occulusX2M","occulusY1M","occulusY2M","occulusInfillDepthM","frontGlassOffsetZ","backGlassOffsetZ","occulusWidthM","occulusHeightM","occulusPositionXM","occulusPositionYM","materialsToUpdate","wrapS","RepeatWrapping","wrapT","repeat","set","needsUpdate","isOpen","setIsOpen","hingeSideX","hingeZ","doorOffsetZ","directionMultiplier","useSpring","config","mass","tension","friction","handleClick","doorYPosition","handleCenterYFromDoorBottom","safeHandleY","min","max","nonHingeSideX","plateHalfWidth","latchMarginM","hingeTotalHeightM","hingeRadiusM","capHeightM","separatorHeightM","barrelPartHeight","isGlassDoor","standardHingeYPositions","numHinges","topMargin","bottomMargin","availableHeight","spacing","_","glassHingeYPositions","isStandardHingeVisible","y","a","group","to","onClick","onPointerOver","document","body","style","cursor","onPointerOut","DoorConfigurator"],"mappings":"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"}
|