door_models 3.0.6 → 3.0.7
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 +209 -1592
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.esm.js +148 -1528
- package/dist/index.esm.js.map +1 -1
- package/package.json +1 -1
package/dist/index.esm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.esm.js","sources":["../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/react/cjs/react-jsx-runtime.development.js","../node_modules/react/jsx-runtime.js","../src/lib/context/DoorContext.tsx","../src/lib/components/DoorModels.tsx","../src/lib/components/DoorConfigurator.tsx"],"sourcesContent":["/**\n * @license React\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var f=require(\"react\"),k=Symbol.for(\"react.element\"),l=Symbol.for(\"react.fragment\"),m=Object.prototype.hasOwnProperty,n=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,g){var b,d={},e=null,h=null;void 0!==g&&(e=\"\"+g);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(h=a.ref);for(b in a)m.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:k,type:c,key:e,ref:h,props:d,_owner:n.current}}exports.Fragment=l;exports.jsx=q;exports.jsxs=q;\n","/**\n * @license React\n * react-jsx-runtime.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n'use strict';\n\nvar React = require('react');\n\n// ATTENTION\n// When adding new symbols to this file,\n// Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols'\n// The Symbol used to tag the ReactElement-like types.\nvar REACT_ELEMENT_TYPE = Symbol.for('react.element');\nvar REACT_PORTAL_TYPE = Symbol.for('react.portal');\nvar REACT_FRAGMENT_TYPE = Symbol.for('react.fragment');\nvar REACT_STRICT_MODE_TYPE = Symbol.for('react.strict_mode');\nvar REACT_PROFILER_TYPE = Symbol.for('react.profiler');\nvar REACT_PROVIDER_TYPE = Symbol.for('react.provider');\nvar REACT_CONTEXT_TYPE = Symbol.for('react.context');\nvar REACT_FORWARD_REF_TYPE = Symbol.for('react.forward_ref');\nvar REACT_SUSPENSE_TYPE = Symbol.for('react.suspense');\nvar REACT_SUSPENSE_LIST_TYPE = Symbol.for('react.suspense_list');\nvar REACT_MEMO_TYPE = Symbol.for('react.memo');\nvar REACT_LAZY_TYPE = Symbol.for('react.lazy');\nvar REACT_OFFSCREEN_TYPE = Symbol.for('react.offscreen');\nvar MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\nvar FAUX_ITERATOR_SYMBOL = '@@iterator';\nfunction getIteratorFn(maybeIterable) {\n if (maybeIterable === null || typeof maybeIterable !== 'object') {\n return null;\n }\n\n var maybeIterator = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL];\n\n if (typeof maybeIterator === 'function') {\n return maybeIterator;\n }\n\n return null;\n}\n\nvar ReactSharedInternals = React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n\nfunction error(format) {\n {\n {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n printWarning('error', format, args);\n }\n }\n}\n\nfunction printWarning(level, format, args) {\n // When changing this logic, you might want to also\n // update consoleWithStackDev.www.js as well.\n {\n var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\n var stack = ReactDebugCurrentFrame.getStackAddendum();\n\n if (stack !== '') {\n format += '%s';\n args = args.concat([stack]);\n } // eslint-disable-next-line react-internal/safe-string-coercion\n\n\n var argsWithFormat = args.map(function (item) {\n return String(item);\n }); // Careful: RN currently depends on this prefix\n\n argsWithFormat.unshift('Warning: ' + format); // We intentionally don't use spread (or .apply) directly because it\n // breaks IE9: https://github.com/facebook/react/issues/13610\n // eslint-disable-next-line react-internal/no-production-logging\n\n Function.prototype.apply.call(console[level], console, argsWithFormat);\n }\n}\n\n// -----------------------------------------------------------------------------\n\nvar enableScopeAPI = false; // Experimental Create Event Handle API.\nvar enableCacheElement = false;\nvar enableTransitionTracing = false; // No known bugs, but needs performance testing\n\nvar enableLegacyHidden = false; // Enables unstable_avoidThisFallback feature in Fiber\n// stuff. Intended to enable React core members to more easily debug scheduling\n// issues in DEV builds.\n\nvar enableDebugTracing = false; // Track which Fiber(s) schedule render work.\n\nvar REACT_MODULE_REFERENCE;\n\n{\n REACT_MODULE_REFERENCE = Symbol.for('react.module.reference');\n}\n\nfunction isValidElementType(type) {\n if (typeof type === 'string' || typeof type === 'function') {\n return true;\n } // Note: typeof might be other than 'symbol' or 'number' (e.g. if it's a polyfill).\n\n\n if (type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || enableDebugTracing || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || enableLegacyHidden || type === REACT_OFFSCREEN_TYPE || enableScopeAPI || enableCacheElement || enableTransitionTracing ) {\n return true;\n }\n\n if (typeof type === 'object' && type !== null) {\n if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || // This needs to include all possible module reference object\n // types supported by any Flight configuration anywhere since\n // we don't know which Flight build this will end up being used\n // with.\n type.$$typeof === REACT_MODULE_REFERENCE || type.getModuleId !== undefined) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction getWrappedName(outerType, innerType, wrapperName) {\n var displayName = outerType.displayName;\n\n if (displayName) {\n return displayName;\n }\n\n var functionName = innerType.displayName || innerType.name || '';\n return functionName !== '' ? wrapperName + \"(\" + functionName + \")\" : wrapperName;\n} // Keep in sync with react-reconciler/getComponentNameFromFiber\n\n\nfunction getContextName(type) {\n return type.displayName || 'Context';\n} // Note that the reconciler package should generally prefer to use getComponentNameFromFiber() instead.\n\n\nfunction getComponentNameFromType(type) {\n if (type == null) {\n // Host root, text node or just invalid type.\n return null;\n }\n\n {\n if (typeof type.tag === 'number') {\n error('Received an unexpected object in getComponentNameFromType(). ' + 'This is likely a bug in React. Please file an issue.');\n }\n }\n\n if (typeof type === 'function') {\n return type.displayName || type.name || null;\n }\n\n if (typeof type === 'string') {\n return type;\n }\n\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n return 'Fragment';\n\n case REACT_PORTAL_TYPE:\n return 'Portal';\n\n case REACT_PROFILER_TYPE:\n return 'Profiler';\n\n case REACT_STRICT_MODE_TYPE:\n return 'StrictMode';\n\n case REACT_SUSPENSE_TYPE:\n return 'Suspense';\n\n case REACT_SUSPENSE_LIST_TYPE:\n return 'SuspenseList';\n\n }\n\n if (typeof type === 'object') {\n switch (type.$$typeof) {\n case REACT_CONTEXT_TYPE:\n var context = type;\n return getContextName(context) + '.Consumer';\n\n case REACT_PROVIDER_TYPE:\n var provider = type;\n return getContextName(provider._context) + '.Provider';\n\n case REACT_FORWARD_REF_TYPE:\n return getWrappedName(type, type.render, 'ForwardRef');\n\n case REACT_MEMO_TYPE:\n var outerName = type.displayName || null;\n\n if (outerName !== null) {\n return outerName;\n }\n\n return getComponentNameFromType(type.type) || 'Memo';\n\n case REACT_LAZY_TYPE:\n {\n var lazyComponent = type;\n var payload = lazyComponent._payload;\n var init = lazyComponent._init;\n\n try {\n return getComponentNameFromType(init(payload));\n } catch (x) {\n return null;\n }\n }\n\n // eslint-disable-next-line no-fallthrough\n }\n }\n\n return null;\n}\n\nvar assign = Object.assign;\n\n// Helpers to patch console.logs to avoid logging during side-effect free\n// replaying on render function. This currently only patches the object\n// lazily which won't cover if the log function was extracted eagerly.\n// We could also eagerly patch the method.\nvar disabledDepth = 0;\nvar prevLog;\nvar prevInfo;\nvar prevWarn;\nvar prevError;\nvar prevGroup;\nvar prevGroupCollapsed;\nvar prevGroupEnd;\n\nfunction disabledLog() {}\n\ndisabledLog.__reactDisabledLog = true;\nfunction disableLogs() {\n {\n if (disabledDepth === 0) {\n /* eslint-disable react-internal/no-production-logging */\n prevLog = console.log;\n prevInfo = console.info;\n prevWarn = console.warn;\n prevError = console.error;\n prevGroup = console.group;\n prevGroupCollapsed = console.groupCollapsed;\n prevGroupEnd = console.groupEnd; // https://github.com/facebook/react/issues/19099\n\n var props = {\n configurable: true,\n enumerable: true,\n value: disabledLog,\n writable: true\n }; // $FlowFixMe Flow thinks console is immutable.\n\n Object.defineProperties(console, {\n info: props,\n log: props,\n warn: props,\n error: props,\n group: props,\n groupCollapsed: props,\n groupEnd: props\n });\n /* eslint-enable react-internal/no-production-logging */\n }\n\n disabledDepth++;\n }\n}\nfunction reenableLogs() {\n {\n disabledDepth--;\n\n if (disabledDepth === 0) {\n /* eslint-disable react-internal/no-production-logging */\n var props = {\n configurable: true,\n enumerable: true,\n writable: true\n }; // $FlowFixMe Flow thinks console is immutable.\n\n Object.defineProperties(console, {\n log: assign({}, props, {\n value: prevLog\n }),\n info: assign({}, props, {\n value: prevInfo\n }),\n warn: assign({}, props, {\n value: prevWarn\n }),\n error: assign({}, props, {\n value: prevError\n }),\n group: assign({}, props, {\n value: prevGroup\n }),\n groupCollapsed: assign({}, props, {\n value: prevGroupCollapsed\n }),\n groupEnd: assign({}, props, {\n value: prevGroupEnd\n })\n });\n /* eslint-enable react-internal/no-production-logging */\n }\n\n if (disabledDepth < 0) {\n error('disabledDepth fell below zero. ' + 'This is a bug in React. Please file an issue.');\n }\n }\n}\n\nvar ReactCurrentDispatcher = ReactSharedInternals.ReactCurrentDispatcher;\nvar prefix;\nfunction describeBuiltInComponentFrame(name, source, ownerFn) {\n {\n if (prefix === undefined) {\n // Extract the VM specific prefix used by each line.\n try {\n throw Error();\n } catch (x) {\n var match = x.stack.trim().match(/\\n( *(at )?)/);\n prefix = match && match[1] || '';\n }\n } // We use the prefix to ensure our stacks line up with native stack frames.\n\n\n return '\\n' + prefix + name;\n }\n}\nvar reentry = false;\nvar componentFrameCache;\n\n{\n var PossiblyWeakMap = typeof WeakMap === 'function' ? WeakMap : Map;\n componentFrameCache = new PossiblyWeakMap();\n}\n\nfunction describeNativeComponentFrame(fn, construct) {\n // If something asked for a stack inside a fake render, it should get ignored.\n if ( !fn || reentry) {\n return '';\n }\n\n {\n var frame = componentFrameCache.get(fn);\n\n if (frame !== undefined) {\n return frame;\n }\n }\n\n var control;\n reentry = true;\n var previousPrepareStackTrace = Error.prepareStackTrace; // $FlowFixMe It does accept undefined.\n\n Error.prepareStackTrace = undefined;\n var previousDispatcher;\n\n {\n previousDispatcher = ReactCurrentDispatcher.current; // Set the dispatcher in DEV because this might be call in the render function\n // for warnings.\n\n ReactCurrentDispatcher.current = null;\n disableLogs();\n }\n\n try {\n // This should throw.\n if (construct) {\n // Something should be setting the props in the constructor.\n var Fake = function () {\n throw Error();\n }; // $FlowFixMe\n\n\n Object.defineProperty(Fake.prototype, 'props', {\n set: function () {\n // We use a throwing setter instead of frozen or non-writable props\n // because that won't throw in a non-strict mode function.\n throw Error();\n }\n });\n\n if (typeof Reflect === 'object' && Reflect.construct) {\n // We construct a different control for this case to include any extra\n // frames added by the construct call.\n try {\n Reflect.construct(Fake, []);\n } catch (x) {\n control = x;\n }\n\n Reflect.construct(fn, [], Fake);\n } else {\n try {\n Fake.call();\n } catch (x) {\n control = x;\n }\n\n fn.call(Fake.prototype);\n }\n } else {\n try {\n throw Error();\n } catch (x) {\n control = x;\n }\n\n fn();\n }\n } catch (sample) {\n // This is inlined manually because closure doesn't do it for us.\n if (sample && control && typeof sample.stack === 'string') {\n // This extracts the first frame from the sample that isn't also in the control.\n // Skipping one frame that we assume is the frame that calls the two.\n var sampleLines = sample.stack.split('\\n');\n var controlLines = control.stack.split('\\n');\n var s = sampleLines.length - 1;\n var c = controlLines.length - 1;\n\n while (s >= 1 && c >= 0 && sampleLines[s] !== controlLines[c]) {\n // We expect at least one stack frame to be shared.\n // Typically this will be the root most one. However, stack frames may be\n // cut off due to maximum stack limits. In this case, one maybe cut off\n // earlier than the other. We assume that the sample is longer or the same\n // and there for cut off earlier. So we should find the root most frame in\n // the sample somewhere in the control.\n c--;\n }\n\n for (; s >= 1 && c >= 0; s--, c--) {\n // Next we find the first one that isn't the same which should be the\n // frame that called our sample function and the control.\n if (sampleLines[s] !== controlLines[c]) {\n // In V8, the first line is describing the message but other VMs don't.\n // If we're about to return the first line, and the control is also on the same\n // line, that's a pretty good indicator that our sample threw at same line as\n // the control. I.e. before we entered the sample frame. So we ignore this result.\n // This can happen if you passed a class to function component, or non-function.\n if (s !== 1 || c !== 1) {\n do {\n s--;\n c--; // We may still have similar intermediate frames from the construct call.\n // The next one that isn't the same should be our match though.\n\n if (c < 0 || sampleLines[s] !== controlLines[c]) {\n // V8 adds a \"new\" prefix for native classes. Let's remove it to make it prettier.\n var _frame = '\\n' + sampleLines[s].replace(' at new ', ' at '); // If our component frame is labeled \"<anonymous>\"\n // but we have a user-provided \"displayName\"\n // splice it in to make the stack more readable.\n\n\n if (fn.displayName && _frame.includes('<anonymous>')) {\n _frame = _frame.replace('<anonymous>', fn.displayName);\n }\n\n {\n if (typeof fn === 'function') {\n componentFrameCache.set(fn, _frame);\n }\n } // Return the line we found.\n\n\n return _frame;\n }\n } while (s >= 1 && c >= 0);\n }\n\n break;\n }\n }\n }\n } finally {\n reentry = false;\n\n {\n ReactCurrentDispatcher.current = previousDispatcher;\n reenableLogs();\n }\n\n Error.prepareStackTrace = previousPrepareStackTrace;\n } // Fallback to just using the name if we couldn't make it throw.\n\n\n var name = fn ? fn.displayName || fn.name : '';\n var syntheticFrame = name ? describeBuiltInComponentFrame(name) : '';\n\n {\n if (typeof fn === 'function') {\n componentFrameCache.set(fn, syntheticFrame);\n }\n }\n\n return syntheticFrame;\n}\nfunction describeFunctionComponentFrame(fn, source, ownerFn) {\n {\n return describeNativeComponentFrame(fn, false);\n }\n}\n\nfunction shouldConstruct(Component) {\n var prototype = Component.prototype;\n return !!(prototype && prototype.isReactComponent);\n}\n\nfunction describeUnknownElementTypeFrameInDEV(type, source, ownerFn) {\n\n if (type == null) {\n return '';\n }\n\n if (typeof type === 'function') {\n {\n return describeNativeComponentFrame(type, shouldConstruct(type));\n }\n }\n\n if (typeof type === 'string') {\n return describeBuiltInComponentFrame(type);\n }\n\n switch (type) {\n case REACT_SUSPENSE_TYPE:\n return describeBuiltInComponentFrame('Suspense');\n\n case REACT_SUSPENSE_LIST_TYPE:\n return describeBuiltInComponentFrame('SuspenseList');\n }\n\n if (typeof type === 'object') {\n switch (type.$$typeof) {\n case REACT_FORWARD_REF_TYPE:\n return describeFunctionComponentFrame(type.render);\n\n case REACT_MEMO_TYPE:\n // Memo may contain any component type so we recursively resolve it.\n return describeUnknownElementTypeFrameInDEV(type.type, source, ownerFn);\n\n case REACT_LAZY_TYPE:\n {\n var lazyComponent = type;\n var payload = lazyComponent._payload;\n var init = lazyComponent._init;\n\n try {\n // Lazy may contain any component type so we recursively resolve it.\n return describeUnknownElementTypeFrameInDEV(init(payload), source, ownerFn);\n } catch (x) {}\n }\n }\n }\n\n return '';\n}\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar loggedTypeFailures = {};\nvar ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\n\nfunction setCurrentlyValidatingElement(element) {\n {\n if (element) {\n var owner = element._owner;\n var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\n ReactDebugCurrentFrame.setExtraStackFrame(stack);\n } else {\n ReactDebugCurrentFrame.setExtraStackFrame(null);\n }\n }\n}\n\nfunction checkPropTypes(typeSpecs, values, location, componentName, element) {\n {\n // $FlowFixMe This is okay but Flow doesn't know it.\n var has = Function.call.bind(hasOwnProperty);\n\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error$1 = void 0; // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n // eslint-disable-next-line react-internal/prod-error-codes\n var err = Error((componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' + 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' + 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.');\n err.name = 'Invariant Violation';\n throw err;\n }\n\n error$1 = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED');\n } catch (ex) {\n error$1 = ex;\n }\n\n if (error$1 && !(error$1 instanceof Error)) {\n setCurrentlyValidatingElement(element);\n\n error('%s: type specification of %s' + ' `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error$1);\n\n setCurrentlyValidatingElement(null);\n }\n\n if (error$1 instanceof Error && !(error$1.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error$1.message] = true;\n setCurrentlyValidatingElement(element);\n\n error('Failed %s type: %s', location, error$1.message);\n\n setCurrentlyValidatingElement(null);\n }\n }\n }\n }\n}\n\nvar isArrayImpl = Array.isArray; // eslint-disable-next-line no-redeclare\n\nfunction isArray(a) {\n return isArrayImpl(a);\n}\n\n/*\n * The `'' + value` pattern (used in in perf-sensitive code) throws for Symbol\n * and Temporal.* types. See https://github.com/facebook/react/pull/22064.\n *\n * The functions in this module will throw an easier-to-understand,\n * easier-to-debug exception with a clear errors message message explaining the\n * problem. (Instead of a confusing exception thrown inside the implementation\n * of the `value` object).\n */\n// $FlowFixMe only called in DEV, so void return is not possible.\nfunction typeName(value) {\n {\n // toStringTag is needed for namespaced types like Temporal.Instant\n var hasToStringTag = typeof Symbol === 'function' && Symbol.toStringTag;\n var type = hasToStringTag && value[Symbol.toStringTag] || value.constructor.name || 'Object';\n return type;\n }\n} // $FlowFixMe only called in DEV, so void return is not possible.\n\n\nfunction willCoercionThrow(value) {\n {\n try {\n testStringCoercion(value);\n return false;\n } catch (e) {\n return true;\n }\n }\n}\n\nfunction testStringCoercion(value) {\n // If you ended up here by following an exception call stack, here's what's\n // happened: you supplied an object or symbol value to React (as a prop, key,\n // DOM attribute, CSS property, string ref, etc.) and when React tried to\n // coerce it to a string using `'' + value`, an exception was thrown.\n //\n // The most common types that will cause this exception are `Symbol` instances\n // and Temporal objects like `Temporal.Instant`. But any object that has a\n // `valueOf` or `[Symbol.toPrimitive]` method that throws will also cause this\n // exception. (Library authors do this to prevent users from using built-in\n // numeric operators like `+` or comparison operators like `>=` because custom\n // methods are needed to perform accurate arithmetic or comparison.)\n //\n // To fix the problem, coerce this object or symbol value to a string before\n // passing it to React. The most reliable way is usually `String(value)`.\n //\n // To find which value is throwing, check the browser or debugger console.\n // Before this exception was thrown, there should be `console.error` output\n // that shows the type (Symbol, Temporal.PlainDate, etc.) that caused the\n // problem and how that type was used: key, atrribute, input value prop, etc.\n // In most cases, this console output also shows the component and its\n // ancestor components where the exception happened.\n //\n // eslint-disable-next-line react-internal/safe-string-coercion\n return '' + value;\n}\nfunction checkKeyStringCoercion(value) {\n {\n if (willCoercionThrow(value)) {\n error('The provided key is an unsupported type %s.' + ' This value must be coerced to a string before before using it here.', typeName(value));\n\n return testStringCoercion(value); // throw (to help callers find troubleshooting comments)\n }\n }\n}\n\nvar ReactCurrentOwner = ReactSharedInternals.ReactCurrentOwner;\nvar RESERVED_PROPS = {\n key: true,\n ref: true,\n __self: true,\n __source: true\n};\nvar specialPropKeyWarningShown;\nvar specialPropRefWarningShown;\nvar didWarnAboutStringRefs;\n\n{\n didWarnAboutStringRefs = {};\n}\n\nfunction hasValidRef(config) {\n {\n if (hasOwnProperty.call(config, 'ref')) {\n var getter = Object.getOwnPropertyDescriptor(config, 'ref').get;\n\n if (getter && getter.isReactWarning) {\n return false;\n }\n }\n }\n\n return config.ref !== undefined;\n}\n\nfunction hasValidKey(config) {\n {\n if (hasOwnProperty.call(config, 'key')) {\n var getter = Object.getOwnPropertyDescriptor(config, 'key').get;\n\n if (getter && getter.isReactWarning) {\n return false;\n }\n }\n }\n\n return config.key !== undefined;\n}\n\nfunction warnIfStringRefCannotBeAutoConverted(config, self) {\n {\n if (typeof config.ref === 'string' && ReactCurrentOwner.current && self && ReactCurrentOwner.current.stateNode !== self) {\n var componentName = getComponentNameFromType(ReactCurrentOwner.current.type);\n\n if (!didWarnAboutStringRefs[componentName]) {\n error('Component \"%s\" contains the string ref \"%s\". ' + 'Support for string refs will be removed in a future major release. ' + 'This case cannot be automatically converted to an arrow function. ' + 'We ask you to manually fix this case by using useRef() or createRef() instead. ' + 'Learn more about using refs safely here: ' + 'https://reactjs.org/link/strict-mode-string-ref', getComponentNameFromType(ReactCurrentOwner.current.type), config.ref);\n\n didWarnAboutStringRefs[componentName] = true;\n }\n }\n }\n}\n\nfunction defineKeyPropWarningGetter(props, displayName) {\n {\n var warnAboutAccessingKey = function () {\n if (!specialPropKeyWarningShown) {\n specialPropKeyWarningShown = true;\n\n error('%s: `key` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName);\n }\n };\n\n warnAboutAccessingKey.isReactWarning = true;\n Object.defineProperty(props, 'key', {\n get: warnAboutAccessingKey,\n configurable: true\n });\n }\n}\n\nfunction defineRefPropWarningGetter(props, displayName) {\n {\n var warnAboutAccessingRef = function () {\n if (!specialPropRefWarningShown) {\n specialPropRefWarningShown = true;\n\n error('%s: `ref` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName);\n }\n };\n\n warnAboutAccessingRef.isReactWarning = true;\n Object.defineProperty(props, 'ref', {\n get: warnAboutAccessingRef,\n configurable: true\n });\n }\n}\n/**\n * Factory method to create a new React element. This no longer adheres to\n * the class pattern, so do not use new to call it. Also, instanceof check\n * will not work. Instead test $$typeof field against Symbol.for('react.element') to check\n * if something is a React Element.\n *\n * @param {*} type\n * @param {*} props\n * @param {*} key\n * @param {string|object} ref\n * @param {*} owner\n * @param {*} self A *temporary* helper to detect places where `this` is\n * different from the `owner` when React.createElement is called, so that we\n * can warn. We want to get rid of owner and replace string `ref`s with arrow\n * functions, and as long as `this` and owner are the same, there will be no\n * change in behavior.\n * @param {*} source An annotation object (added by a transpiler or otherwise)\n * indicating filename, line number, and/or other information.\n * @internal\n */\n\n\nvar ReactElement = function (type, key, ref, self, source, owner, props) {\n var element = {\n // This tag allows us to uniquely identify this as a React Element\n $$typeof: REACT_ELEMENT_TYPE,\n // Built-in properties that belong on the element\n type: type,\n key: key,\n ref: ref,\n props: props,\n // Record the component responsible for creating this element.\n _owner: owner\n };\n\n {\n // The validation flag is currently mutative. We put it on\n // an external backing store so that we can freeze the whole object.\n // This can be replaced with a WeakMap once they are implemented in\n // commonly used development environments.\n element._store = {}; // To make comparing ReactElements easier for testing purposes, we make\n // the validation flag non-enumerable (where possible, which should\n // include every environment we run tests in), so the test framework\n // ignores it.\n\n Object.defineProperty(element._store, 'validated', {\n configurable: false,\n enumerable: false,\n writable: true,\n value: false\n }); // self and source are DEV only properties.\n\n Object.defineProperty(element, '_self', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: self\n }); // Two elements created in two different places should be considered\n // equal for testing purposes and therefore we hide it from enumeration.\n\n Object.defineProperty(element, '_source', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: source\n });\n\n if (Object.freeze) {\n Object.freeze(element.props);\n Object.freeze(element);\n }\n }\n\n return element;\n};\n/**\n * https://github.com/reactjs/rfcs/pull/107\n * @param {*} type\n * @param {object} props\n * @param {string} key\n */\n\nfunction jsxDEV(type, config, maybeKey, source, self) {\n {\n var propName; // Reserved names are extracted\n\n var props = {};\n var key = null;\n var ref = null; // Currently, key can be spread in as a prop. This causes a potential\n // issue if key is also explicitly declared (ie. <div {...props} key=\"Hi\" />\n // or <div key=\"Hi\" {...props} /> ). We want to deprecate key spread,\n // but as an intermediary step, we will use jsxDEV for everything except\n // <div {...props} key=\"Hi\" />, because we aren't currently able to tell if\n // key is explicitly declared to be undefined or not.\n\n if (maybeKey !== undefined) {\n {\n checkKeyStringCoercion(maybeKey);\n }\n\n key = '' + maybeKey;\n }\n\n if (hasValidKey(config)) {\n {\n checkKeyStringCoercion(config.key);\n }\n\n key = '' + config.key;\n }\n\n if (hasValidRef(config)) {\n ref = config.ref;\n warnIfStringRefCannotBeAutoConverted(config, self);\n } // Remaining properties are added to a new props object\n\n\n for (propName in config) {\n if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n props[propName] = config[propName];\n }\n } // Resolve default props\n\n\n if (type && type.defaultProps) {\n var defaultProps = type.defaultProps;\n\n for (propName in defaultProps) {\n if (props[propName] === undefined) {\n props[propName] = defaultProps[propName];\n }\n }\n }\n\n if (key || ref) {\n var displayName = typeof type === 'function' ? type.displayName || type.name || 'Unknown' : type;\n\n if (key) {\n defineKeyPropWarningGetter(props, displayName);\n }\n\n if (ref) {\n defineRefPropWarningGetter(props, displayName);\n }\n }\n\n return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props);\n }\n}\n\nvar ReactCurrentOwner$1 = ReactSharedInternals.ReactCurrentOwner;\nvar ReactDebugCurrentFrame$1 = ReactSharedInternals.ReactDebugCurrentFrame;\n\nfunction setCurrentlyValidatingElement$1(element) {\n {\n if (element) {\n var owner = element._owner;\n var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\n ReactDebugCurrentFrame$1.setExtraStackFrame(stack);\n } else {\n ReactDebugCurrentFrame$1.setExtraStackFrame(null);\n }\n }\n}\n\nvar propTypesMisspellWarningShown;\n\n{\n propTypesMisspellWarningShown = false;\n}\n/**\n * Verifies the object is a ReactElement.\n * See https://reactjs.org/docs/react-api.html#isvalidelement\n * @param {?object} object\n * @return {boolean} True if `object` is a ReactElement.\n * @final\n */\n\n\nfunction isValidElement(object) {\n {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n }\n}\n\nfunction getDeclarationErrorAddendum() {\n {\n if (ReactCurrentOwner$1.current) {\n var name = getComponentNameFromType(ReactCurrentOwner$1.current.type);\n\n if (name) {\n return '\\n\\nCheck the render method of `' + name + '`.';\n }\n }\n\n return '';\n }\n}\n\nfunction getSourceInfoErrorAddendum(source) {\n {\n if (source !== undefined) {\n var fileName = source.fileName.replace(/^.*[\\\\\\/]/, '');\n var lineNumber = source.lineNumber;\n return '\\n\\nCheck your code at ' + fileName + ':' + lineNumber + '.';\n }\n\n return '';\n }\n}\n/**\n * Warn if there's no key explicitly set on dynamic arrays of children or\n * object keys are not valid. This allows us to keep track of children between\n * updates.\n */\n\n\nvar ownerHasKeyUseWarning = {};\n\nfunction getCurrentComponentErrorInfo(parentType) {\n {\n var info = getDeclarationErrorAddendum();\n\n if (!info) {\n var parentName = typeof parentType === 'string' ? parentType : parentType.displayName || parentType.name;\n\n if (parentName) {\n info = \"\\n\\nCheck the top-level render call using <\" + parentName + \">.\";\n }\n }\n\n return info;\n }\n}\n/**\n * Warn if the element doesn't have an explicit key assigned to it.\n * This element is in an array. The array could grow and shrink or be\n * reordered. All children that haven't already been validated are required to\n * have a \"key\" property assigned to it. Error statuses are cached so a warning\n * will only be shown once.\n *\n * @internal\n * @param {ReactElement} element Element that requires a key.\n * @param {*} parentType element's parent's type.\n */\n\n\nfunction validateExplicitKey(element, parentType) {\n {\n if (!element._store || element._store.validated || element.key != null) {\n return;\n }\n\n element._store.validated = true;\n var currentComponentErrorInfo = getCurrentComponentErrorInfo(parentType);\n\n if (ownerHasKeyUseWarning[currentComponentErrorInfo]) {\n return;\n }\n\n ownerHasKeyUseWarning[currentComponentErrorInfo] = true; // Usually the current owner is the offender, but if it accepts children as a\n // property, it may be the creator of the child that's responsible for\n // assigning it a key.\n\n var childOwner = '';\n\n if (element && element._owner && element._owner !== ReactCurrentOwner$1.current) {\n // Give the component that originally created this child.\n childOwner = \" It was passed a child from \" + getComponentNameFromType(element._owner.type) + \".\";\n }\n\n setCurrentlyValidatingElement$1(element);\n\n error('Each child in a list should have a unique \"key\" prop.' + '%s%s See https://reactjs.org/link/warning-keys for more information.', currentComponentErrorInfo, childOwner);\n\n setCurrentlyValidatingElement$1(null);\n }\n}\n/**\n * Ensure that every element either is passed in a static location, in an\n * array with an explicit keys property defined, or in an object literal\n * with valid key property.\n *\n * @internal\n * @param {ReactNode} node Statically passed child of any type.\n * @param {*} parentType node's parent's type.\n */\n\n\nfunction validateChildKeys(node, parentType) {\n {\n if (typeof node !== 'object') {\n return;\n }\n\n if (isArray(node)) {\n for (var i = 0; i < node.length; i++) {\n var child = node[i];\n\n if (isValidElement(child)) {\n validateExplicitKey(child, parentType);\n }\n }\n } else if (isValidElement(node)) {\n // This element was passed in a valid location.\n if (node._store) {\n node._store.validated = true;\n }\n } else if (node) {\n var iteratorFn = getIteratorFn(node);\n\n if (typeof iteratorFn === 'function') {\n // Entry iterators used to provide implicit keys,\n // but now we print a separate warning for them later.\n if (iteratorFn !== node.entries) {\n var iterator = iteratorFn.call(node);\n var step;\n\n while (!(step = iterator.next()).done) {\n if (isValidElement(step.value)) {\n validateExplicitKey(step.value, parentType);\n }\n }\n }\n }\n }\n }\n}\n/**\n * Given an element, validate that its props follow the propTypes definition,\n * provided by the type.\n *\n * @param {ReactElement} element\n */\n\n\nfunction validatePropTypes(element) {\n {\n var type = element.type;\n\n if (type === null || type === undefined || typeof type === 'string') {\n return;\n }\n\n var propTypes;\n\n if (typeof type === 'function') {\n propTypes = type.propTypes;\n } else if (typeof type === 'object' && (type.$$typeof === REACT_FORWARD_REF_TYPE || // Note: Memo only checks outer props here.\n // Inner props are checked in the reconciler.\n type.$$typeof === REACT_MEMO_TYPE)) {\n propTypes = type.propTypes;\n } else {\n return;\n }\n\n if (propTypes) {\n // Intentionally inside to avoid triggering lazy initializers:\n var name = getComponentNameFromType(type);\n checkPropTypes(propTypes, element.props, 'prop', name, element);\n } else if (type.PropTypes !== undefined && !propTypesMisspellWarningShown) {\n propTypesMisspellWarningShown = true; // Intentionally inside to avoid triggering lazy initializers:\n\n var _name = getComponentNameFromType(type);\n\n error('Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?', _name || 'Unknown');\n }\n\n if (typeof type.getDefaultProps === 'function' && !type.getDefaultProps.isReactClassApproved) {\n error('getDefaultProps is only used on classic React.createClass ' + 'definitions. Use a static property named `defaultProps` instead.');\n }\n }\n}\n/**\n * Given a fragment, validate that it can only be provided with fragment props\n * @param {ReactElement} fragment\n */\n\n\nfunction validateFragmentProps(fragment) {\n {\n var keys = Object.keys(fragment.props);\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n\n if (key !== 'children' && key !== 'key') {\n setCurrentlyValidatingElement$1(fragment);\n\n error('Invalid prop `%s` supplied to `React.Fragment`. ' + 'React.Fragment can only have `key` and `children` props.', key);\n\n setCurrentlyValidatingElement$1(null);\n break;\n }\n }\n\n if (fragment.ref !== null) {\n setCurrentlyValidatingElement$1(fragment);\n\n error('Invalid attribute `ref` supplied to `React.Fragment`.');\n\n setCurrentlyValidatingElement$1(null);\n }\n }\n}\n\nvar didWarnAboutKeySpread = {};\nfunction jsxWithValidation(type, props, key, isStaticChildren, source, self) {\n {\n var validType = isValidElementType(type); // We warn in this case but don't throw. We expect the element creation to\n // succeed and there will likely be errors in render.\n\n if (!validType) {\n var info = '';\n\n if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) {\n info += ' You likely forgot to export your component from the file ' + \"it's defined in, or you might have mixed up default and named imports.\";\n }\n\n var sourceInfo = getSourceInfoErrorAddendum(source);\n\n if (sourceInfo) {\n info += sourceInfo;\n } else {\n info += getDeclarationErrorAddendum();\n }\n\n var typeString;\n\n if (type === null) {\n typeString = 'null';\n } else if (isArray(type)) {\n typeString = 'array';\n } else if (type !== undefined && type.$$typeof === REACT_ELEMENT_TYPE) {\n typeString = \"<\" + (getComponentNameFromType(type.type) || 'Unknown') + \" />\";\n info = ' Did you accidentally export a JSX literal instead of a component?';\n } else {\n typeString = typeof type;\n }\n\n error('React.jsx: type is invalid -- expected a string (for ' + 'built-in components) or a class/function (for composite ' + 'components) but got: %s.%s', typeString, info);\n }\n\n var element = jsxDEV(type, props, key, source, self); // The result can be nullish if a mock or a custom function is used.\n // TODO: Drop this when these are no longer allowed as the type argument.\n\n if (element == null) {\n return element;\n } // Skip key warning if the type isn't valid since our key validation logic\n // doesn't expect a non-string/function type and can throw confusing errors.\n // We don't want exception behavior to differ between dev and prod.\n // (Rendering will throw with a helpful message and as soon as the type is\n // fixed, the key warnings will appear.)\n\n\n if (validType) {\n var children = props.children;\n\n if (children !== undefined) {\n if (isStaticChildren) {\n if (isArray(children)) {\n for (var i = 0; i < children.length; i++) {\n validateChildKeys(children[i], type);\n }\n\n if (Object.freeze) {\n Object.freeze(children);\n }\n } else {\n error('React.jsx: Static children should always be an array. ' + 'You are likely explicitly calling React.jsxs or React.jsxDEV. ' + 'Use the Babel transform instead.');\n }\n } else {\n validateChildKeys(children, type);\n }\n }\n }\n\n {\n if (hasOwnProperty.call(props, 'key')) {\n var componentName = getComponentNameFromType(type);\n var keys = Object.keys(props).filter(function (k) {\n return k !== 'key';\n });\n var beforeExample = keys.length > 0 ? '{key: someKey, ' + keys.join(': ..., ') + ': ...}' : '{key: someKey}';\n\n if (!didWarnAboutKeySpread[componentName + beforeExample]) {\n var afterExample = keys.length > 0 ? '{' + keys.join(': ..., ') + ': ...}' : '{}';\n\n error('A props object containing a \"key\" prop is being spread into JSX:\\n' + ' let props = %s;\\n' + ' <%s {...props} />\\n' + 'React keys must be passed directly to JSX without using spread:\\n' + ' let props = %s;\\n' + ' <%s key={someKey} {...props} />', beforeExample, componentName, afterExample, componentName);\n\n didWarnAboutKeySpread[componentName + beforeExample] = true;\n }\n }\n }\n\n if (type === REACT_FRAGMENT_TYPE) {\n validateFragmentProps(element);\n } else {\n validatePropTypes(element);\n }\n\n return element;\n }\n} // These two functions exist to still get child warnings in dev\n// even with the prod transform. This means that jsxDEV is purely\n// opt-in behavior for better messages but that we won't stop\n// giving you warnings if you use production apis.\n\nfunction jsxWithValidationStatic(type, props, key) {\n {\n return jsxWithValidation(type, props, key, true);\n }\n}\nfunction jsxWithValidationDynamic(type, props, key) {\n {\n return jsxWithValidation(type, props, key, false);\n }\n}\n\nvar jsx = jsxWithValidationDynamic ; // we may want to special case jsxs internally to take advantage of static children.\n// for now we can ship identical prod functions\n\nvar jsxs = jsxWithValidationStatic ;\n\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.jsx = jsx;\nexports.jsxs = jsxs;\n })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","import React, {\n createContext,\n useContext,\n useState,\n useEffect,\n useCallback,\n} from \"react\";\n\nimport { availableMaterials } from \"../components/DoorModels\";\ntype MaterialName = keyof typeof availableMaterials;\n// --- Type Definitions to Match JSON Structure ---\n\ntype DoorType = {\n doorMaterial: string;\n doorWidth: number;\n doorHeight: number;\n theDoorDepth: number;\n doorPivot: string;\n doorOpening: string;\n};\n\ntype DoorFrameType = {\n frameMaterial: string;\n doorStopMaterial?: string;\n gasketMaterial: string;\n hingeMaterial: string;\n glassMaterial?: string;\n frameDepth: number;\n topThk: string;\n sidesThk: string;\n notchDepth: string;\n notchWidth: string;\n doorStopWidth: number;\n doorStopDepth: number;\n doorStopOffset: string;\n notchposition: number;\n gasketWidth: number;\n gasketDepth: number;\n secondDoorStopWidth: number;\n secondDoorStopDepth: number;\n secondDoorStopOffset: number;\n};\n\ntype InteriorFanlightType = {\n visible: boolean;\n height: number;\n material: string;\n};\n\ntype ExteriorFanlightType = {\n visible: boolean;\n height: number;\n depth: number;\n material: string;\n};\n\ntype OcculusType = {\n visible: boolean;\n infillVisible: boolean;\n x1: number;\n x2: number;\n y1: number;\n y2: number;\n material: string;\n depth: number;\n};\n\ntype CoverPanelType = {\n visible: boolean;\n width: number;\n height: number;\n depth: number;\n material: string;\n};\n\ntype FrameAndDoorSettings = Partial<DoorFrameType> & { doorDepth?: number };\ntype GlassType = {\n visible: boolean;\n material: string;\n depth: number;\n};\n\n// --- Main Context Type ---\ntype ConfiguratorContextType = {\n isPlaneVisible: boolean;\n setIsPlaneVisible: React.Dispatch<React.SetStateAction<boolean>>;\n isFrameVisible: boolean;\n setIsFrameVisible: React.Dispatch<React.SetStateAction<boolean>>;\n cpid: string;\n setCpid: React.Dispatch<React.SetStateAction<string>>;\n door: DoorType;\n setDoor: React.Dispatch<React.SetStateAction<DoorType>>;\n doorFrame: DoorFrameType;\n setDoorFrame: React.Dispatch<React.SetStateAction<DoorFrameType>>;\n interiorFanlight: InteriorFanlightType;\n setInteriorFanlight: React.Dispatch<\n React.SetStateAction<InteriorFanlightType>\n >;\n exteriorFanlight: ExteriorFanlightType;\n setExteriorFanlight: React.Dispatch<\n React.SetStateAction<ExteriorFanlightType>\n >;\n exteriorFanlightType: string;\n setExteriorFanlightType: React.Dispatch<React.SetStateAction<string>>;\n occulus: OcculusType;\n setOcculus: React.Dispatch<React.SetStateAction<OcculusType>>;\n frontCoverPanel: CoverPanelType;\n setFrontCoverPanel: React.Dispatch<React.SetStateAction<CoverPanelType>>;\n backCoverPanel: CoverPanelType;\n setBackCoverPanel: React.Dispatch<React.SetStateAction<CoverPanelType>>;\n glass: GlassType;\n setGlass: React.Dispatch<React.SetStateAction<GlassType>>;\n frameType: string;\n setFrameType: React.Dispatch<React.SetStateAction<string>>;\n bodyType: string;\n setBodyType: React.Dispatch<React.SetStateAction<string>>;\n totalHeight: number;\n setTotalHeight: React.Dispatch<React.SetStateAction<number>>;\n totalWidth: number;\n setTotalWidth: React.Dispatch<React.SetStateAction<number>>;\n handleParseCpid: (cpidToParse: string) => void;\n // --- States for Test Materials ---\n testDoorMaterial: string;\n setTestDoorMaterial: React.Dispatch<React.SetStateAction<string>>;\n testFrameMaterial: string;\n setTestFrameMaterial: React.Dispatch<React.SetStateAction<string>>;\n testGasketMaterial: string;\n setTestGasketMaterial: React.Dispatch<React.SetStateAction<string>>;\n testInteriorFanlightMaterial: string;\n setTestInteriorFanlightMaterial: React.Dispatch<React.SetStateAction<string>>;\n testExteriorFanlightMaterial: string;\n setTestExteriorFanlightMaterial: React.Dispatch<React.SetStateAction<string>>;\n testOcculusInfillMaterial: string;\n setTestOcculusInfillMaterial: React.Dispatch<React.SetStateAction<string>>;\n testGlassInfillMaterial: string;\n setTestGlassInfillMaterial: React.Dispatch<React.SetStateAction<string>>;\n testDoorStopMaterial: string;\n setTestDoorStopMaterial: React.Dispatch<React.SetStateAction<string>>;\n testHingeMaterial: string;\n setTestHingeMaterial: React.Dispatch<React.SetStateAction<string>>;\n testFrontCoverPanelMaterial: string;\n setTestFrontCoverPanelMaterial: React.Dispatch<React.SetStateAction<string>>;\n testBackCoverPanelMaterial: string;\n setTestBackCoverPanelMaterial: React.Dispatch<React.SetStateAction<string>>;\n glassVisible: boolean;\n setGlassVisible: React.Dispatch<React.SetStateAction<boolean>>;\n glassDepth: number;\n setGlassDepth: React.Dispatch<React.SetStateAction<number>>;\n};\n\nconst ConfiguratorContext = createContext<ConfiguratorContextType | undefined>(\n undefined\n);\n\ntype ConfiguratorProviderProps = {\n children: React.ReactNode;\n};\n\nexport const ConfiguratorProvider = ({\n children,\n}: ConfiguratorProviderProps) => {\n const [isPlaneVisible, setIsPlaneVisible] = useState<boolean>(false);\n const [isFrameVisible, setIsFrameVisible] = useState<boolean>(true);\n const [cpid, setCpid] = useState<string>(\"\");\n const [totalHeight, setTotalHeight] = useState<number>(2700);\n const [totalWidth, setTotalWidth] = useState<number>(974);\n const [glassVisible, setGlassVisible] = useState(false);\n const [glassDepth, setGlassDepth] = useState(8);\n const [door, setDoor] = useState<DoorType>({\n doorMaterial: \"door_material\",\n doorWidth: 0,\n doorHeight: 0,\n theDoorDepth: 40,\n doorPivot: \"left\",\n doorOpening: \"out\",\n });\n const [doorFrame, setDoorFrame] = useState<DoorFrameType>({\n frameMaterial: \"doorFrame_material\",\n doorStopMaterial: \"doorStop_material\",\n gasketMaterial: \"gasket_material\",\n hingeMaterial: \"hinge_material\",\n glassMaterial: \"glass_material\",\n frameDepth: 103,\n topThk: \"20mm\",\n sidesThk: \"20mm\",\n doorStopOffset: \"30mm\",\n doorStopWidth: 20,\n doorStopDepth: 13,\n notchWidth: \"20mm\",\n notchDepth: \"40mm\",\n notchposition: 0.01,\n gasketDepth: 5,\n gasketWidth: 5,\n secondDoorStopWidth: 20,\n secondDoorStopDepth: 30,\n secondDoorStopOffset: 13,\n });\n const [interiorFanlight, setInteriorFanlight] =\n useState<InteriorFanlightType>({\n visible: false,\n height: 300,\n material: \"interiorFanlight_material\",\n });\n const [exteriorFanlight, setExteriorFanlight] =\n useState<ExteriorFanlightType>({\n visible: false,\n height: 300,\n depth: 60,\n material: \"exteriorFanlight_material\",\n });\n const [occulus, setOcculus] = useState<OcculusType>({\n visible: false,\n infillVisible: true,\n x1: 120,\n x2: 120,\n y1: 600,\n y2: 220,\n material: \"infill_material\",\n depth: 20,\n });\n const [frontCoverPanel, setFrontCoverPanel] = useState<CoverPanelType>({\n visible: false,\n width: 73,\n height: 2200,\n depth: 12,\n material: \"front_cover_material\",\n });\n const [backCoverPanel, setBackCoverPanel] = useState<CoverPanelType>({\n visible: false,\n width: 73,\n height: 2200,\n depth: 12,\n material: \"back_cover_material\",\n });\n const [glass, setGlass] = useState<GlassType>({\n visible: false,\n material: \"infill_material\",\n depth: 20,\n });\n const [frameType, setFrameType] = useState<string>(\"AF20_40\");\n const [bodyType, setBodyType] = useState<string>(\"40\");\n const [exteriorFanlightType, setExteriorFanlightType] =\n useState<string>(\"WPFL\");\n const [testDoorMaterial, setTestDoorMaterial] = useState<string>(\"brown\");\n const [testFrameMaterial, setTestFrameMaterial] = useState<string>(\"black\");\n const [testGasketMaterial, setTestGasketMaterial] =\n useState<string>(\"darkgrey\");\n const [testInteriorFanlightMaterial, setTestInteriorFanlightMaterial] =\n useState<string>(\"grey\");\n const [testExteriorFanlightMaterial, setTestExteriorFanlightMaterial] =\n useState<string>(\"metal\");\n const [testOcculusInfillMaterial, setTestOcculusInfillMaterial] =\n useState<string>(\"glass\");\n const [testGlassInfillMaterial, setTestGlassInfillMaterial] =\n useState<string>(\"glass\");\n const [testDoorStopMaterial, setTestDoorStopMaterial] =\n useState<string>(\"black\");\n const [testHingeMaterial, setTestHingeMaterial] = useState<string>(\"metal\");\n const [testFrontCoverPanelMaterial, setTestFrontCoverPanelMaterial] =\n useState<string>(\"aluminum\");\n const [testBackCoverPanelMaterial, setTestBackCoverPanelMaterial] =\n useState<string>(\"aluminum\");\n\n //\n const [parseMessage, setParseMessage] = useState({ type: \"\", text: \"\" });\n\n const handleParseCpid = useCallback(\n cpidToParse => {\n const showMessage = (text, type = \"error\") => {\n setParseMessage({ text, type });\n setTimeout(() => setParseMessage({ text: \"\", type: \"\" }), 4000);\n };\n\n if (!cpidToParse || !cpidToParse.trim().startsWith(\"P_\")) {\n showMessage(\"Invalid format: CPID must start with 'P_'.\");\n return;\n }\n\n const parts = cpidToParse.trim().split(\"_\");\n if (parts.length < 4) {\n showMessage(\"Invalid format: Not enough parts in CPID.\");\n return;\n }\n\n const newConfig = {\n fanlightVisible: false,\n fanlightType: \"WPFL\",\n interiorFanlightVisible: false,\n occulusVisible: false,\n frameType: \"\",\n bodyType: \"\",\n };\n let currentIndex = 1;\n\n // Door Type\n if (parts[currentIndex] === \"SD\") {\n currentIndex++;\n } else {\n showMessage(\"Unsupported Door Type: Only 'SD' is supported.\");\n return;\n }\n\n //Fanlight Type\n const fanlightPart = parts[currentIndex];\n const validFanlights = [\"WPFL\", \"ALDGFL\", \"ALSGFL\"];\n if (fanlightPart === \"FH\") {\n newConfig.fanlightVisible = false;\n currentIndex++;\n } else if (validFanlights.includes(fanlightPart)) {\n newConfig.fanlightVisible = true;\n newConfig.fanlightType = fanlightPart;\n currentIndex++;\n } else {\n showMessage(`Invalid Fanlight Type: '${fanlightPart}'.`);\n return;\n }\n\n // Frame and Body Type\n const validSimpleFrameTypes = [\n \"AF20\",\n \"AF40\",\n \"WF\",\n \"MXF\",\n \"MXCAF\",\n \"NOF\",\n ];\n const validBodyTypes = [\n \"40\",\n \"50\",\n \"FLI\",\n \"100\",\n \"WDG100\",\n \"SG8\",\n \"SG10\",\n \"SG12\",\n ];\n\n let framePart = parts[currentIndex];\n let bodyPartRaw = parts[currentIndex + 1] || \"\";\n let frameFound = false;\n\n if (`${framePart}_${bodyPartRaw}` === \"WDGF_WDG100\") {\n newConfig.frameType = \"WDGF_WDG100\";\n newConfig.bodyType = \"WDG100\";\n currentIndex += 2;\n frameFound = true;\n } else if (validSimpleFrameTypes.includes(framePart)) {\n let tempBody = bodyPartRaw.replace(\"OCC\", \"\");\n\n if (validBodyTypes.includes(tempBody)) {\n newConfig.frameType =\n framePart === \"NOF\" ? \"NOF\" : `${framePart}_${tempBody}`;\n\n newConfig.bodyType = tempBody;\n\n if (bodyPartRaw.endsWith(\"OCC\")) {\n newConfig.occulusVisible = true;\n }\n currentIndex += 2;\n frameFound = true;\n }\n }\n\n if (!frameFound) {\n showMessage(\n `Invalid Frame/Body combination starting with '${framePart}'.`\n );\n return;\n }\n\n for (let i = currentIndex; i < parts.length; i++) {\n if (parts[i] === \"IFL\") {\n newConfig.interiorFanlightVisible = true;\n } else if (parts[i] === \"OCC\") {\n newConfig.occulusVisible = true;\n }\n }\n\n // Apply final configuration\n setFrameType(newConfig.frameType);\n setBodyType(newConfig.bodyType);\n setExteriorFanlight(prev => ({\n ...prev,\n visible: newConfig.fanlightVisible,\n }));\n if (newConfig.fanlightVisible) {\n setExteriorFanlightType(newConfig.fanlightType);\n }\n setInteriorFanlight(prev => ({\n ...prev,\n visible: newConfig.interiorFanlightVisible,\n }));\n setOcculus(prev => ({ ...prev, visible: newConfig.occulusVisible }));\n showMessage(\"Configuration Applied!\", \"success\");\n },\n [\n setBodyType,\n setExteriorFanlight,\n setExteriorFanlightType,\n setFrameType,\n setInteriorFanlight,\n setOcculus,\n ]\n );\n\n // --- BodyType Effect ---\n useEffect(() => {\n let newDoorDepth = 40;\n let newMaterial = \"brown\";\n\n switch (bodyType) {\n case \"50\":\n newDoorDepth = 50;\n break;\n case \"SG8\":\n newDoorDepth = 8;\n newMaterial = \"glass\";\n break;\n case \"SG10\":\n newDoorDepth = 10;\n newMaterial = \"glass\";\n break;\n case \"SG12\":\n newDoorDepth = 12;\n newMaterial = \"glass\";\n break;\n }\n\n setDoor(prev => ({ ...prev, theDoorDepth: newDoorDepth }));\n setTestDoorMaterial(newMaterial);\n }, [bodyType]);\n\n // --- FrameType Effect ---\n useEffect(() => {\n setIsFrameVisible(frameType !== \"NOF\");\n\n setGlassVisible(false);\n\n let newSettings: FrameAndDoorSettings = {};\n\n let lookupKey = frameType;\n if (frameType.startsWith(\"AF20_SG\")) {\n lookupKey = \"AF20_40\";\n } else if (frameType.startsWith(\"AF40_SG\")) {\n lookupKey = \"AF40_40\";\n }\n\n switch (lookupKey) {\n case \"NOF\":\n newSettings = {\n topThk: \"0mm\",\n sidesThk: \"0mm\",\n frameDepth: 0,\n };\n break;\n case \"AF20_40\":\n newSettings = {\n frameDepth: 103,\n topThk: \"20mm\",\n sidesThk: \"20mm\",\n doorStopOffset: \"42mm\",\n doorStopWidth: 20,\n doorStopDepth: 13,\n notchWidth: \"20mm\",\n notchDepth: \"40mm\",\n notchposition: 0.01,\n gasketDepth: 5,\n gasketWidth: 5,\n };\n if (frameType === \"AF20_40\") {\n newSettings.doorDepth = 40;\n }\n break;\n case \"AF20_50\":\n newSettings = {\n doorDepth: 50,\n frameDepth: 103,\n topThk: \"20mm\",\n sidesThk: \"20mm\",\n doorStopOffset: \"30mm\",\n doorStopWidth: 20,\n doorStopDepth: 13,\n notchWidth: \"20mm\",\n notchDepth: \"40mm\",\n notchposition: 0.01,\n gasketDepth: 5,\n gasketWidth: 5,\n };\n break;\n case \"AF40_40\":\n newSettings = {\n frameDepth: 103,\n topThk: \"40mm\",\n sidesThk: \"40mm\",\n doorStopOffset: \"42mm\",\n doorStopWidth: 20,\n doorStopDepth: 13,\n notchWidth: \"20mm\",\n notchDepth: \"40mm\",\n notchposition: 0.01,\n gasketDepth: 5,\n gasketWidth: 5,\n };\n if (frameType === \"AF40_40\") {\n newSettings.doorDepth = 40;\n }\n break;\n case \"AF40_50\":\n newSettings = {\n doorDepth: 50,\n frameDepth: 103,\n topThk: \"40mm\",\n sidesThk: \"40mm\",\n doorStopOffset: \"30mm\",\n doorStopWidth: 20,\n doorStopDepth: 13,\n notchWidth: \"20mm\",\n notchDepth: \"40mm\",\n notchposition: 0.01,\n gasketDepth: 5,\n gasketWidth: 5,\n };\n break;\n case \"WF_40\":\n newSettings = {\n doorDepth: 39.6,\n frameDepth: 103,\n topThk: \"31.6mm\",\n sidesThk: \"31.6mm\",\n doorStopOffset: \"0mm\",\n doorStopWidth: 16.4,\n doorStopDepth: 58.4,\n notchWidth: \"20mm\",\n notchDepth: \"40mm\",\n notchposition: 0.01,\n gasketDepth: 5,\n gasketWidth: 5,\n };\n break;\n case \"WF_50\":\n newSettings = {\n doorDepth: 51.6,\n frameDepth: 103,\n topThk: \"31.6mm\",\n sidesThk: \"31.6mm\",\n doorStopOffset: \"0mm\",\n doorStopWidth: 16,\n doorStopDepth: 46.4,\n notchWidth: \"20mm\",\n notchDepth: \"40mm\",\n notchposition: 0.01,\n gasketDepth: 5,\n gasketWidth: 5,\n };\n break;\n case \"WF_100\":\n newSettings = {\n doorDepth: 102,\n frameDepth: 102,\n topThk: \"52mm\",\n sidesThk: \"52mm\",\n doorStopOffset: \"17.6mm\",\n doorStopWidth: 16.4,\n doorStopDepth: 44.8,\n notchWidth: \"16mm\",\n notchDepth: \"66.5mm\",\n notchposition: 0.02,\n gasketDepth: 5,\n gasketWidth: 5,\n secondDoorStopWidth: 29,\n secondDoorStopDepth: 17.6,\n secondDoorStopOffset: 0,\n };\n break;\n case \"WF_FLI\":\n newSettings = {\n doorDepth: 51,\n frameDepth: 102,\n topThk: \"52mm\",\n sidesThk: \"52mm\",\n doorStopOffset: \"17.4mm\",\n doorStopWidth: 16.4,\n doorStopDepth: 34,\n notchWidth: \"14mm\",\n notchDepth: \"66mm\",\n notchposition: 0.02,\n gasketDepth: 5,\n gasketWidth: 5,\n secondDoorStopWidth: 29,\n secondDoorStopDepth: 17.6,\n secondDoorStopOffset: 0,\n };\n break;\n case \"WDGF_WDG100\":\n newSettings = {\n doorDepth: 86,\n frameDepth: 86,\n topThk: \"50mm\",\n sidesThk: \"50mm\",\n doorStopOffset: \"34mm\",\n doorStopWidth: 13,\n doorStopDepth: 30,\n notchWidth: \"14mm\",\n notchDepth: \"66mm\",\n notchposition: 0.02,\n gasketDepth: 4.5,\n gasketWidth: 5,\n secondDoorStopWidth: 23,\n secondDoorStopDepth: 30,\n secondDoorStopOffset: 13,\n };\n setGlassVisible(true);\n break;\n case \"MXF_40\":\n newSettings = {\n doorDepth: 38,\n frameDepth: 103,\n topThk: \"18mm\",\n sidesThk: \"18mm\",\n doorStopOffset: \"45mm\",\n doorStopWidth: 15,\n doorStopDepth: 15,\n notchWidth: \"20mm\",\n notchDepth: \"40mm\",\n notchposition: 0.01,\n gasketDepth: 5,\n gasketWidth: 5,\n };\n break;\n case \"MXF_50\":\n newSettings = {\n doorDepth: 50,\n frameDepth: 103,\n topThk: \"18.2mm\",\n sidesThk: \"18.2mm\",\n doorStopOffset: \"33mm\",\n doorStopWidth: 15,\n doorStopDepth: 15,\n notchWidth: \"20mm\",\n notchDepth: \"40mm\",\n notchposition: 0.01,\n gasketDepth: 5,\n gasketWidth: 5,\n };\n break;\n case \"MXCAF_40\":\n newSettings = {\n doorDepth: 38,\n frameDepth: 103,\n topThk: \"18mm\",\n sidesThk: \"18mm\",\n doorStopOffset: \"45mm\",\n doorStopWidth: 15,\n doorStopDepth: 15,\n notchWidth: \"20mm\",\n notchDepth: \"40mm\",\n notchposition: 0.01,\n gasketDepth: 5,\n gasketWidth: 5,\n };\n break;\n case \"MXCAF_50\":\n newSettings = {\n doorDepth: 50,\n frameDepth: 103,\n topThk: \"18.2mm\",\n sidesThk: \"18.2mm\",\n doorStopOffset: \"33mm\",\n doorStopWidth: 15,\n doorStopDepth: 15,\n notchWidth: \"20mm\",\n notchDepth: \"40mm\",\n notchposition: 0.01,\n gasketDepth: 5,\n gasketWidth: 5,\n };\n break;\n default:\n break;\n }\n\n const isMxCaf = frameType.startsWith(\"MXCAF\");\n setFrontCoverPanel(prev => ({ ...prev, visible: isMxCaf }));\n setBackCoverPanel(prev => ({ ...prev, visible: isMxCaf }));\n\n const { doorDepth, ...newFrameSettings } = newSettings;\n setDoorFrame(prev => ({ ...prev, ...newFrameSettings }));\n\n if (doorDepth !== undefined) {\n setDoor(prev => ({ ...prev, theDoorDepth: doorDepth }));\n }\n }, [frameType]);\n\n // --- Exterior Fanlight Logic ---\n useEffect(() => {\n if (!exteriorFanlight.visible) return;\n switch (exteriorFanlightType) {\n case \"WPFL\":\n setExteriorFanlight(prev => ({ ...prev, depth: doorFrame.frameDepth }));\n setTestExteriorFanlightMaterial(\"metal\");\n break;\n case \"ALDGL\":\n setExteriorFanlight(prev => ({ ...prev, depth: doorFrame.frameDepth }));\n setTestExteriorFanlightMaterial(\"glass\");\n break;\n case \"ALSGL\":\n setExteriorFanlight(prev => ({ ...prev, depth: 40 }));\n setTestExteriorFanlightMaterial(\"glass\");\n break;\n default:\n break;\n }\n }, [\n exteriorFanlight.visible,\n exteriorFanlightType,\n doorFrame.frameDepth,\n setTestExteriorFanlightMaterial,\n setExteriorFanlight,\n ]);\n\n useEffect(() => {\n const topThkValue = parseInt(doorFrame.topThk) || 0;\n const exteriorFanlightHeight = exteriorFanlight.visible\n ? exteriorFanlight.height\n : 0;\n const newDoorHeight = totalHeight - topThkValue - exteriorFanlightHeight;\n\n setDoor(prevDoor => ({\n ...prevDoor,\n doorHeight: newDoorHeight > 0 ? newDoorHeight : 0,\n }));\n }, [\n totalHeight,\n doorFrame.topThk,\n exteriorFanlight.visible,\n exteriorFanlight.height,\n ]);\n\n useEffect(() => {\n const sidesThkValue = parseInt(doorFrame.sidesThk) || 0;\n const newDoorWidth = totalWidth - sidesThkValue * 2;\n setDoor(prevDoor => ({\n ...prevDoor,\n doorWidth: newDoorWidth > 0 ? newDoorWidth : 0,\n }));\n }, [totalWidth, doorFrame.sidesThk]);\n\n return (\n <ConfiguratorContext.Provider\n value={{\n isPlaneVisible,\n setIsPlaneVisible,\n isFrameVisible,\n setIsFrameVisible,\n cpid,\n setCpid,\n door,\n setDoor,\n doorFrame,\n setDoorFrame,\n interiorFanlight,\n setInteriorFanlight,\n exteriorFanlight,\n setExteriorFanlight,\n occulus,\n setOcculus,\n frontCoverPanel,\n setFrontCoverPanel,\n backCoverPanel,\n setBackCoverPanel,\n glass,\n setGlass,\n frameType,\n setFrameType,\n bodyType,\n setBodyType,\n totalHeight,\n setTotalHeight,\n totalWidth,\n setTotalWidth,\n exteriorFanlightType,\n setExteriorFanlightType,\n testDoorMaterial,\n setTestDoorMaterial,\n testFrameMaterial,\n setTestFrameMaterial,\n testGasketMaterial,\n setTestGasketMaterial,\n testInteriorFanlightMaterial,\n setTestInteriorFanlightMaterial,\n testExteriorFanlightMaterial,\n setTestExteriorFanlightMaterial,\n testOcculusInfillMaterial,\n setTestOcculusInfillMaterial,\n testGlassInfillMaterial,\n setTestGlassInfillMaterial,\n testDoorStopMaterial,\n setTestDoorStopMaterial,\n testHingeMaterial,\n setTestHingeMaterial,\n testFrontCoverPanelMaterial,\n setTestFrontCoverPanelMaterial,\n testBackCoverPanelMaterial,\n setTestBackCoverPanelMaterial,\n glassVisible,\n setGlassVisible,\n glassDepth,\n setGlassDepth,\n handleParseCpid,\n }}\n >\n {children}\n </ConfiguratorContext.Provider>\n );\n};\n\nexport const useConfigurator = () => {\n const context = useContext(ConfiguratorContext);\n if (!context) {\n throw new Error(\n \"useConfigurator must be used within a ConfiguratorProvider\"\n );\n }\n return context;\n};\n","import React, { useState, useMemo, useEffect } from \"react\";\nimport { Geometry, Base, Subtraction } from \"@react-three/csg\";\nimport { useConfigurator } from \"../context/DoorContext\";\nimport { useSpring, a } from \"@react-spring/three\";\nimport * as THREE from \"three\";\n\nconst placeholderMaterial = new THREE.MeshStandardMaterial({\n color: \"#cccccc\",\n roughness: 0.8,\n});\n\nconst placeholderMaterialforFrames = new THREE.MeshStandardMaterial({\n color: \"#000\",\n roughness: 0.8,\n});\n\nexport const availableMaterials = {\n black: new THREE.MeshStandardMaterial({ color: \"#000000\" }),\n metal: new THREE.MeshStandardMaterial({\n color: \"#0xaaaaaa\",\n metalness: 1.0,\n roughness: 0.4,\n }),\n darkgrey: new THREE.MeshStandardMaterial({ color: \"#5e5e5e\" }),\n grey: new THREE.MeshStandardMaterial({ color: \"#cccccc\" }),\n yellow: new THREE.MeshStandardMaterial({ color: \"#ffff00\" }),\n darkBrown: new THREE.MeshStandardMaterial({ color: \"#a0522d\" }),\n brown: new THREE.MeshStandardMaterial({ color: \"#d2b48c\" }),\n glass: new THREE.MeshStandardMaterial({\n color: \"#ffffff\",\n roughness: 0.1,\n transparent: true,\n opacity: 0.7,\n }),\n aluminum: new THREE.MeshStandardMaterial({\n color: \"#dcdcdc\",\n metalness: 1.0,\n roughness: 0.3,\n }),\n\n silver: new THREE.MeshStandardMaterial({\n color: \"#c0c0c0\",\n metalness: 1.0,\n roughness: 0.2,\n }),\n\n gold: new THREE.MeshStandardMaterial({\n color: \"#ffd700\",\n metalness: 1.0,\n roughness: 0.3,\n }),\n\n diamond: new THREE.MeshStandardMaterial({\n color: \"#e0f7fa\",\n metalness: 0.9,\n roughness: 0.05,\n transparent: true,\n opacity: 0.9,\n envMapIntensity: 1.5,\n }),\n};\n\nfunction GlassHinge({\n position,\n pivot,\n frameSideWidth,\n doorDepthM,\n material,\n gasketMaterial,\n}) {\n const plateWidth = 130 / 1000;\n const plateHeight = 55 / 1000;\n const plateThickness = 8 / 1000;\n const gasketThickness = 1 / 1000;\n const pivotRadius = 10 / 1000;\n const pivotHeight = plateHeight;\n\n const sideMultiplier = pivot === \"left\" ? 1 : -1;\n\n const plateOffsetX = sideMultiplier * (plateWidth / 2 + frameSideWidth);\n\n const holeRadius = 10 / 1000;\n const holeSpacingX = 45 / 1000;\n\n return (\n <group position={position}>\n <mesh material={material} castShadow receiveShadow position-x={0.01}>\n <cylinderGeometry args={[pivotRadius, pivotRadius, pivotHeight, 32]} />\n </mesh>\n\n <group position-x={plateOffsetX}>\n {/* Back Plate */}\n <mesh\n position-z={-(doorDepthM / 2) - plateThickness / 2 - gasketThickness}\n material={material}\n castShadow\n receiveShadow\n >\n <boxGeometry args={[plateWidth, plateHeight, plateThickness]} />\n </mesh>\n {/* Back Gasket */}\n <mesh\n position-z={-(doorDepthM / 2) - gasketThickness / 2}\n material={gasketMaterial}\n castShadow\n receiveShadow\n >\n <boxGeometry args={[plateWidth, plateHeight, gasketThickness]} />\n </mesh>\n {/* Front Plate with Holes */}\n <mesh\n position-z={doorDepthM / 2 + plateThickness / 2 + gasketThickness}\n castShadow\n receiveShadow\n >\n <Geometry useGroups>\n <Base material={material}>\n <boxGeometry args={[plateWidth, plateHeight, plateThickness]} />\n </Base>\n {/* Left Hole */}\n <Subtraction\n position={[-sideMultiplier * (holeSpacingX / 2), 0, 0]}\n rotation={[Math.PI / 2, 0, 0]}\n >\n <cylinderGeometry\n args={[holeRadius, holeRadius, plateThickness + 0.01, 32]}\n />\n </Subtraction>\n {/* Right Hole */}\n <Subtraction\n position={[sideMultiplier * (holeSpacingX / 2), 0, 0]}\n rotation={[Math.PI / 2, 0, 0]}\n >\n <cylinderGeometry\n args={[holeRadius, holeRadius, plateThickness + 0.01, 32]}\n />\n </Subtraction>\n </Geometry>\n </mesh>\n\n {/* Front Gasket */}\n <mesh\n position-z={doorDepthM / 2 + gasketThickness / 2}\n material={gasketMaterial}\n castShadow\n receiveShadow\n >\n <boxGeometry args={[plateWidth, plateHeight, gasketThickness]} />\n </mesh>\n </group>\n </group>\n );\n}\n\nfunction DoorStopCuts({\n visible,\n width,\n height,\n stopWidth,\n stopDepth,\n stopPositionZ,\n centerZ,\n glassDepthOffset = 0,\n material,\n setName,\n}: DoorStopCutsProps) {\n if (!visible) return null;\n\n return (\n <>\n {/* Top cut only */}\n <Subtraction\n name={`cut-top-${setName}`}\n material={material}\n position={[\n 0,\n height / 2 - stopWidth / 2 + 0.0001,\n stopPositionZ - centerZ,\n ]}\n >\n <boxGeometry args={[width + 0.01, stopWidth, stopDepth + 0.01]} />\n </Subtraction>\n\n {/* Left cut */}\n <Subtraction\n name={`cut-left-${setName}`}\n material={material}\n position={[\n -width / 2 + stopWidth / 2 - 0.0001,\n 0,\n stopPositionZ - centerZ,\n ]}\n >\n <boxGeometry args={[stopWidth, height + 0.01, stopDepth + 0.01]} />\n </Subtraction>\n\n {/* Right cut */}\n <Subtraction\n name={`cut-right-${setName}`}\n material={material}\n position={[\n width / 2 - stopWidth / 2 + 0.0001,\n 0,\n stopPositionZ - centerZ,\n ]}\n >\n <boxGeometry args={[stopWidth, height + 0.01, stopDepth + 0.01]} />\n </Subtraction>\n </>\n );\n}\n\ntype DoorModelsProps = {\n doorName?: string;\n};\n\ntype DoorStopCutsProps = {\n visible: boolean;\n width: number;\n height: number;\n stopWidth: number;\n stopDepth: number;\n stopPositionZ: number;\n centerZ: number;\n glassDepthOffset?: number;\n material: THREE.Material;\n setName: string;\n};\n\nfunction DoorModels({ doorName }: DoorModelsProps) {\n const {\n isPlaneVisible,\n isFrameVisible,\n door,\n doorFrame,\n interiorFanlight,\n exteriorFanlight,\n occulus,\n glass,\n frontCoverPanel,\n backCoverPanel,\n frameType,\n bodyType,\n exteriorFanlightType,\n testDoorMaterial,\n testFrameMaterial,\n testGasketMaterial,\n testInteriorFanlightMaterial,\n testExteriorFanlightMaterial,\n testOcculusInfillMaterial,\n testGlassInfillMaterial,\n testDoorStopMaterial,\n testHingeMaterial,\n glassVisible,\n testFrontCoverPanelMaterial,\n testBackCoverPanelMaterial,\n glassDepth,\n handleParseCpid,\n } = useConfigurator();\n\n useEffect(() => {\n if (doorName) {\n handleParseCpid(doorName);\n }\n }, [doorName, handleParseCpid]);\n\n // here i get material names from context\n const { doorMaterial: doorMaterialName } = door;\n const {\n frameMaterial: frameMaterialName,\n gasketMaterial: gasketMaterialName,\n doorStopMaterial: doorStopMaterialName,\n hingeMaterial: hingeMaterialName,\n } = doorFrame;\n const { material: interiorFanlightMaterialName } = interiorFanlight;\n const { material: exteriorFanlightMaterialName } = exteriorFanlight;\n const { material: occulusInfillMaterialName } = occulus;\n const { material: glassInfillMaterialName } = glass;\n\n const { material: frontCoverPanelMaterialName } = frontCoverPanel;\n const { material: backCoverPanelMaterialName } = backCoverPanel;\n\n // --- Material Logic ---\n const doorMaterial = useMemo(\n () =>\n availableMaterials[testDoorMaterial] ||\n availableMaterials[doorMaterialName] ||\n placeholderMaterial,\n [testDoorMaterial, doorMaterialName]\n );\n const frameMaterial = useMemo(\n () =>\n availableMaterials[testFrameMaterial] ||\n availableMaterials[frameMaterialName] ||\n placeholderMaterialforFrames,\n [testFrameMaterial, frameMaterialName]\n );\n const gasketMaterial = useMemo(\n () =>\n availableMaterials[testGasketMaterial] ||\n availableMaterials[gasketMaterialName] ||\n new THREE.MeshStandardMaterial({ color: \"#111111\" }),\n [testGasketMaterial, gasketMaterialName]\n );\n\n const doorStopMaterial = useMemo(() => {\n return (\n availableMaterials[testDoorStopMaterial] ||\n availableMaterials[\n (doorStopMaterialName as keyof typeof availableMaterials) || \"\"\n ] ||\n frameMaterial\n );\n }, [testDoorStopMaterial, doorStopMaterialName, frameType, frameMaterial]);\n\n const interiorFanlightMaterial = useMemo(\n () =>\n availableMaterials[testInteriorFanlightMaterial] ||\n availableMaterials[interiorFanlightMaterialName] ||\n placeholderMaterial,\n [testInteriorFanlightMaterial, interiorFanlightMaterialName]\n );\n const exteriorFanlightMaterial = useMemo(\n () =>\n availableMaterials[testExteriorFanlightMaterial] ||\n availableMaterials[exteriorFanlightMaterialName] ||\n placeholderMaterial,\n [testExteriorFanlightMaterial, exteriorFanlightMaterialName]\n );\n const occulusInfillMaterial = useMemo(\n () =>\n availableMaterials[testOcculusInfillMaterial] ||\n availableMaterials[occulusInfillMaterialName] ||\n placeholderMaterial,\n [testOcculusInfillMaterial, occulusInfillMaterialName]\n );\n const glassInfillMaterial = useMemo(\n () =>\n availableMaterials[testGlassInfillMaterial] ||\n availableMaterials[glassInfillMaterialName] ||\n placeholderMaterial,\n [testGlassInfillMaterial, glassInfillMaterialName]\n );\n\n const hingeBodyMaterial = useMemo(\n () =>\n availableMaterials[testHingeMaterial] ||\n availableMaterials[hingeMaterialName] ||\n new THREE.MeshStandardMaterial({\n color: \"#d4d4d4\",\n metalness: 1.0,\n roughness: 0.4,\n }),\n [testHingeMaterial, hingeMaterialName]\n );\n\n const frontCoverPanelMaterial = useMemo(\n () =>\n availableMaterials[testFrontCoverPanelMaterial] ||\n availableMaterials[frontCoverPanelMaterialName] ||\n placeholderMaterial,\n [testFrontCoverPanelMaterial, frontCoverPanelMaterialName]\n );\n\n const backCoverPanelMaterial = useMemo(\n () =>\n availableMaterials[testBackCoverPanelMaterial] ||\n availableMaterials[backCoverPanelMaterialName] ||\n placeholderMaterial,\n [testBackCoverPanelMaterial, backCoverPanelMaterialName]\n );\n\n const hingeAccentMaterial = useMemo(\n () =>\n new THREE.MeshStandardMaterial({\n color: \"#1a1a1a\",\n roughness: 0.1,\n }),\n []\n );\n\n // --- Dimension calculations ---\n const { doorWidth, doorHeight, theDoorDepth, doorPivot, doorOpening } = door;\n const {\n frameDepth,\n topThk,\n sidesThk,\n doorStopWidth,\n doorStopDepth,\n doorStopOffset,\n notchWidth,\n notchDepth,\n notchposition,\n gasketWidth,\n gasketDepth,\n secondDoorStopWidth,\n secondDoorStopDepth,\n secondDoorStopOffset,\n } = doorFrame;\n const { height: interiorFanlightHeightValue } = interiorFanlight;\n const {\n height: exteriorFanlightHeightValue,\n depth: exteriorFanlightDepthValue,\n } = exteriorFanlight;\n const {\n x1: occulusX1,\n x2: occulusX2,\n y1: occulusY1,\n y2: occulusY2,\n depth: occulusInfillDepth,\n } = occulus;\n const { width: architraveWidth, depth: architraveDepth } = frontCoverPanel;\n\n const interiorFanlightHeight = interiorFanlight.visible\n ? interiorFanlightHeightValue\n : 0;\n const mainDoorHeight = doorHeight - interiorFanlightHeight;\n\n const topThkValue = parseInt(topThk) || 20;\n const sidesThkValue = parseInt(sidesThk) || 20;\n\n // Convert dimensions from mm to meters\n const doorWidthM = doorWidth / 1000;\n const mainDoorHeightM = mainDoorHeight / 1000;\n const interiorFanlightHeightM = interiorFanlightHeight / 1000;\n const totalOpeningHeightM = doorHeight / 1000;\n const doorDepthM = theDoorDepth / 1000;\n const frameDepthM = frameDepth / 1000;\n const topFrameWidthM = topThkValue / 1000;\n const sidesFrameWidthM = sidesThkValue / 1000;\n const exteriorFanlightHeightM = exteriorFanlightHeightValue / 1000;\n const exteriorFanlightDepthM = exteriorFanlightDepthValue / 1000;\n const occulusX1M = occulusX1 / 1000;\n const occulusX2M = occulusX2 / 1000;\n const occulusY1M = occulusY1 / 1000;\n const occulusY2M = occulusY2 / 1000;\n const occulusInfillDepthM = occulusInfillDepth / 1000;\n const doorStopWidthM = doorStopWidth / 1000;\n const doorStopDepthM = doorStopDepth / 1000;\n\n // Architrave Dimensions\n const architraveProfileM = architraveWidth / 1000;\n const architraveDepthM = architraveDepth / 1000;\n\n // Gasket Dimensions\n const gasketWidthM = gasketWidth / 1000;\n const gasketDepthM = gasketDepth / 1000;\n\n const doorStopOffsetValue = parseInt(doorStopOffset);\n const doorStopOffsetFromEdgeM = doorStopOffsetValue / 1000;\n\n const notchDepthValue = parseInt(notchDepth) || 40;\n const notchWidthValue = parseInt(notchWidth) || 20;\n\n const notchWidthM = notchWidthValue / 1000;\n const notchDepthM = notchDepthValue / 1000;\n\n const isOpeningIn = doorOpening === \"in\";\n\n const doorStopPositionZ = useMemo(\n () =>\n isOpeningIn\n ? frameDepthM / 2 - doorStopOffsetFromEdgeM - doorStopDepthM / 2\n : -frameDepthM / 2 + doorStopOffsetFromEdgeM + doorStopDepthM / 2,\n [isOpeningIn, frameDepthM, doorStopOffsetFromEdgeM, doorStopDepthM]\n );\n\n const gasketZPosition = useMemo(\n () =>\n isOpeningIn\n ? doorStopPositionZ - doorStopDepthM / 2 - gasketDepthM / 2\n : doorStopPositionZ + doorStopDepthM / 2 + gasketDepthM / 2,\n [isOpeningIn, doorStopPositionZ, doorStopDepthM, gasketDepthM]\n );\n const secondDoorStopWidthM = secondDoorStopWidth / 1000;\n const secondDoorStopDepthM = secondDoorStopDepth / 1000;\n const secondDoorStopPositionZ = isOpeningIn\n ? frameDepthM / 2 - secondDoorStopDepthM / 2\n : -frameDepthM / 2 + secondDoorStopDepthM / 2;\n\n // Position the first glass panel against the primary doorstop\n\n const secondGasketZPosition = isOpeningIn\n ? secondDoorStopPositionZ - secondDoorStopDepthM / 2 - gasketDepthM / 2\n : secondDoorStopPositionZ + secondDoorStopDepthM / 2 + gasketDepthM / 2;\n\n const doorCenterZ = useMemo(() => {\n if (frameType === \"WF_FLI\") {\n if (isOpeningIn) {\n return frameDepthM / 2 - doorDepthM / 2;\n } else {\n return -frameDepthM / 2 + doorDepthM / 2;\n }\n }\n\n if (frameType === \"WDGF_WDG100\" || frameType === \"WF_100\") {\n return 0;\n } else {\n if (isOpeningIn) {\n const gasketBackFaceZ = gasketZPosition - gasketDepthM / 2;\n return gasketBackFaceZ - doorDepthM / 2;\n } else {\n const gasketFrontFaceZ = gasketZPosition + gasketDepthM / 2;\n return gasketFrontFaceZ + doorDepthM / 2;\n }\n }\n }, [\n isOpeningIn,\n gasketZPosition,\n gasketDepthM,\n doorDepthM,\n frameType,\n frameDepthM,\n ]);\n const GlassPanelDepthM = glassDepth / 1000;\n\n const frontGlassOffsetZ = doorDepthM / 2 + GlassPanelDepthM / 2;\n const backGlassOffsetZ = -doorDepthM / 2 - GlassPanelDepthM / 2;\n\n // --- Door Stop Positions on Door ---\n const doorStopOffsetOnDoor =\n frameType === \"WDGF_WDG100\" ? secondDoorStopWidthM / 2 : doorStopDepthM / 2;\n\n const exteriorFanlightZPosition =\n exteriorFanlightType === \"ALSGFL\"\n ? 0 // Center it\n : isOpeningIn\n ? -frameDepthM / 2 + exteriorFanlightDepthM / 2\n : frameDepthM / 2 - exteriorFanlightDepthM / 2;\n\n const occulusWidthM = doorWidthM - occulusX1M - occulusX2M;\n const occulusHeightM = mainDoorHeightM - occulusY1M - occulusY2M;\n const occulusPositionXM = (occulusX1M - occulusX2M) / 2;\n const occulusPositionYM = (occulusY2M - occulusY1M) / 2;\n\n const [isOpen, setIsOpen] = useState(false);\n const hingeSideX = doorPivot === \"left\" ? -doorWidthM / 2 : doorWidthM / 2;\n\n const leftGlass_Z =\n -frameDepthM / 2 + GlassPanelDepthM / 2 - GlassPanelDepthM;\n const rightGlass_Z =\n frameDepthM / 2 - GlassPanelDepthM / 2 + GlassPanelDepthM;\n // --- PIVOT ---\n const hingeZ = useMemo(() => {\n if (frameType === \"WF_FLI\") {\n if (isOpeningIn) {\n return doorCenterZ - doorDepthM / 2;\n } else {\n return doorCenterZ + doorDepthM / 2;\n }\n }\n return isOpeningIn ? -frameDepthM / 2 : frameDepthM / 2;\n }, [frameType, isOpeningIn, doorCenterZ, doorDepthM, frameDepthM]);\n\n const doorOffsetZ = useMemo(\n () => doorCenterZ - hingeZ,\n [doorCenterZ, hingeZ]\n );\n\n const directionMultiplier = doorOpening === \"in\" ? 1 : -1;\n const { rotation } = useSpring({\n rotation: isOpen\n ? [\n 0,\n (doorPivot === \"left\" ? Math.PI / 2 : -Math.PI / 2) *\n directionMultiplier,\n 0,\n ]\n : [0, 0, 0],\n config: { mass: 1, tension: 100, friction: 20 },\n });\n\n const handleClick = () => setIsOpen(!isOpen);\n\n const totalFrameWidth = doorWidthM + sidesFrameWidthM * 2;\n const totalFrameHeightM = totalOpeningHeightM + topFrameWidthM;\n const sideFrameCenterY = topFrameWidthM / 2;\n\n const interiorFanlightYPosition =\n totalOpeningHeightM / 2 - interiorFanlightHeightM / 2;\n const doorYPosition = -totalOpeningHeightM / 2 + mainDoorHeightM / 2;\n const topFrameCenterY = totalOpeningHeightM / 2 + topFrameWidthM / 2;\n const topOfFrameY = topFrameCenterY + topFrameWidthM / 2;\n const exteriorFanlightYPosition = topOfFrameY + exteriorFanlightHeightM / 2;\n\n const frontArchitraveZ = frameDepthM / 2 + architraveDepthM / 2;\n const backArchitraveZ = -frameDepthM / 2 - architraveDepthM / 2;\n\n const sideArchitraveHeight = totalOpeningHeightM;\n const sideArchitraveCenterY = 0;\n\n const leftArchitraveX = -doorWidthM / 2 - architraveProfileM / 2;\n const rightArchitraveX = doorWidthM / 2 + architraveProfileM / 2;\n\n const topArchitraveY = totalOpeningHeightM / 2 + architraveProfileM / 2;\n const topArchitraveWidth = doorWidthM + 2 * architraveProfileM;\n\n // --- Primary Gasket Edge Position Calculations ---\n const topGasketYPosition =\n totalOpeningHeightM / 2 - doorStopWidthM + gasketWidthM / 2;\n const leftGasketXPosition =\n -doorWidthM / 2 + doorStopWidthM - gasketWidthM / 2;\n const rightGasketXPosition =\n doorWidthM / 2 - doorStopWidthM + gasketWidthM / 2;\n\n // --- Second Gasket ---\n\n const secondTopGasketYPosition =\n totalOpeningHeightM / 2 - secondDoorStopWidthM + gasketWidthM / 2;\n\n const secondLeftGasketXPosition =\n -doorWidthM / 2 + secondDoorStopWidthM - gasketWidthM / 2;\n\n const secondRightGasketXPosition =\n doorWidthM / 2 - secondDoorStopWidthM + gasketWidthM / 2;\n // --- HINGE CALCULATIONS ---\n const hingeTotalHeightM = 120 / 1000;\n const hingeRadiusM = 8 / 1000;\n const capHeightM = 4 / 1000;\n const separatorHeightM = 4 / 1000;\n\n const barrelPartHeight =\n (hingeTotalHeightM - capHeightM * 2 - separatorHeightM) / 2;\n\n // --- HINGE VISIBILITY LOGIC ---\n const isGlassDoor = useMemo(\n () => [\"SG8\", \"SG10\", \"SG12\"].includes(bodyType),\n [bodyType]\n );\n\n // Calculate evenly spaced hinge positions\n const standardHingeYPositions = useMemo(() => {\n const numHinges = 4;\n const topMargin = 180 / 1000;\n const bottomMargin = 180 / 1000;\n const availableHeight = mainDoorHeightM - topMargin - bottomMargin;\n const spacing = availableHeight / (numHinges - 1);\n const positions: number[] = [];\n for (let i = 0; i < numHinges; i++) {\n positions.push(mainDoorHeightM / 2 - topMargin - i * spacing);\n }\n return positions;\n }, [mainDoorHeightM]);\n\n // Y positions for the new glass hinges\n const glassHingeYPositions = useMemo(() => {\n const topMargin = 250 / 1000;\n const secondTopMargin = 450 / 1000;\n const bottomMargin = 250 / 1000;\n\n const top = mainDoorHeightM / 2 - topMargin;\n const secondTop = mainDoorHeightM / 2 - secondTopMargin;\n const bottom = -mainDoorHeightM / 2 + bottomMargin;\n\n return [top, secondTop, bottom];\n }, [mainDoorHeightM]);\n\n const isStandardHingeVisible = useMemo(() => {\n if (isGlassDoor) return false;\n if (!isFrameVisible) return false;\n\n const invisibleFrameTypes = [\"WDGF_WDG100\", \"WF_100\", \"WF_FLI\"];\n if (invisibleFrameTypes.includes(frameType)) {\n return false;\n }\n\n return true;\n }, [isFrameVisible, frameType, isGlassDoor]);\n\n return (\n <>\n {frontCoverPanel.visible && (\n <group position-z={frontArchitraveZ}>\n {/* Top */}\n <mesh\n position={[0, topArchitraveY, 0]}\n castShadow\n material={frontCoverPanelMaterial}\n >\n <boxGeometry\n args={[topArchitraveWidth, architraveProfileM, architraveDepthM]}\n />\n </mesh>\n {/* Left */}\n <mesh\n position={[leftArchitraveX, sideArchitraveCenterY, 0]}\n castShadow\n material={frontCoverPanelMaterial}\n >\n <boxGeometry\n args={[\n architraveProfileM,\n sideArchitraveHeight,\n architraveDepthM,\n ]}\n />\n </mesh>\n {/* Right */}\n <mesh\n position={[rightArchitraveX, sideArchitraveCenterY, 0]}\n castShadow\n material={frontCoverPanelMaterial}\n >\n <boxGeometry\n args={[\n architraveProfileM,\n sideArchitraveHeight,\n architraveDepthM,\n ]}\n />\n </mesh>\n </group>\n )}\n {backCoverPanel.visible && (\n <group position-z={backArchitraveZ}>\n {/* Top */}\n <mesh\n position={[0, topArchitraveY, 0]}\n castShadow\n material={backCoverPanelMaterial}\n >\n <boxGeometry\n args={[topArchitraveWidth, architraveProfileM, architraveDepthM]}\n />\n </mesh>\n {/* Left */}\n <mesh\n position={[leftArchitraveX, sideArchitraveCenterY, 0]}\n castShadow\n material={backCoverPanelMaterial}\n >\n <boxGeometry\n args={[\n architraveProfileM,\n sideArchitraveHeight,\n architraveDepthM,\n ]}\n />\n </mesh>\n {/* Right */}\n <mesh\n position={[rightArchitraveX, sideArchitraveCenterY, 0]}\n castShadow\n material={backCoverPanelMaterial}\n >\n <boxGeometry\n args={[\n architraveProfileM,\n sideArchitraveHeight,\n architraveDepthM,\n ]}\n />\n </mesh>\n </group>\n )}\n\n {exteriorFanlight.visible && (\n <mesh\n position={[0, exteriorFanlightYPosition, exteriorFanlightZPosition]}\n castShadow\n material={exteriorFanlightMaterial}\n >\n <boxGeometry\n args={[\n totalFrameWidth,\n exteriorFanlightHeightM,\n exteriorFanlightDepthM,\n ]}\n />\n </mesh>\n )}\n\n {isFrameVisible && (\n <group>\n {/* --- Top Frame with CSG Cut --- */}\n <mesh castShadow position={[0, topFrameCenterY, 0]}>\n <Geometry useGroups>\n <Base name=\"frame-base\" material={frameMaterial}>\n <boxGeometry args={[doorWidthM, topFrameWidthM, frameDepthM]} />\n </Base>\n {![\"MXF_40\", \"MXF_50\", \"MXCAF_40\", \"MXCAF_50\"].includes(\n frameType\n ) && (\n <Subtraction\n name=\"cut-exterior\"\n material={frameMaterial}\n position={[0, notchposition, 0]}\n >\n <boxGeometry\n args={[doorWidthM + 0.01, notchWidthM, notchDepthM]}\n />\n </Subtraction>\n )}\n </Geometry>\n </mesh>\n\n {/* --- Left Frame with CSG Cut --- */}\n <mesh\n castShadow\n position={[\n -doorWidthM / 2 - sidesFrameWidthM / 2,\n sideFrameCenterY,\n 0,\n ]}\n >\n <Geometry useGroups>\n <Base name=\"frame-base\" material={frameMaterial}>\n <boxGeometry\n args={[sidesFrameWidthM, totalFrameHeightM, frameDepthM]}\n />\n </Base>\n {![\"MXF_40\", \"MXF_50\", \"MXCAF_40\", \"MXCAF_50\"].includes(\n frameType\n ) && (\n <Subtraction\n name=\"cut-exterior\"\n material={frameMaterial}\n position={[-notchposition, 0, 0]}\n >\n <boxGeometry\n args={[notchWidthM, totalFrameHeightM + 0.01, notchDepthM]}\n />\n </Subtraction>\n )}\n </Geometry>\n </mesh>\n\n {/* --- Right Frame with CSG Cut --- */}\n <mesh\n castShadow\n position={[\n doorWidthM / 2 + sidesFrameWidthM / 2,\n sideFrameCenterY,\n 0,\n ]}\n >\n <Geometry useGroups>\n <Base name=\"frame-base\" material={frameMaterial}>\n <boxGeometry\n args={[sidesFrameWidthM, totalFrameHeightM, frameDepthM]}\n />\n </Base>\n {![\"MXF_40\", \"MXF_50\", \"MXCAF_40\", \"MXCAF_50\"].includes(\n frameType\n ) && (\n <Subtraction\n name=\"cut-exterior\"\n material={frameMaterial}\n position={[notchposition, 0, 0]}\n >\n <boxGeometry\n args={[notchWidthM, totalFrameHeightM + 0.01, notchDepthM]}\n />\n </Subtraction>\n )}\n </Geometry>\n </mesh>\n\n {/* --- Door Stop Geometry --- */}\n <mesh\n castShadow\n position={[\n 0,\n totalOpeningHeightM / 2 - doorStopWidthM / 2,\n doorStopPositionZ,\n ]}\n material={doorStopMaterial}\n >\n <boxGeometry args={[doorWidthM, doorStopWidthM, doorStopDepthM]} />\n </mesh>\n <mesh\n castShadow\n position={[\n -doorWidthM / 2 + doorStopWidthM / 2,\n 0,\n doorStopPositionZ,\n ]}\n material={doorStopMaterial}\n >\n <boxGeometry\n args={[doorStopWidthM, totalOpeningHeightM, doorStopDepthM]}\n />\n </mesh>\n <mesh\n castShadow\n position={[\n doorWidthM / 2 - doorStopWidthM / 2,\n 0,\n doorStopPositionZ,\n ]}\n material={doorStopMaterial}\n >\n <boxGeometry\n args={[doorStopWidthM, totalOpeningHeightM, doorStopDepthM]}\n />\n </mesh>\n\n {/* --- Rubber Gasket Geometry (Primary) --- */}\n {frameType !== \"WF_FLI\" && (\n <>\n <mesh\n castShadow\n position={[0, topGasketYPosition, gasketZPosition]}\n material={gasketMaterial}\n >\n <boxGeometry\n args={[doorWidthM - 0.03, gasketWidthM + 0.005, gasketDepthM]}\n />\n </mesh>\n <mesh\n castShadow\n position={[\n leftGasketXPosition - 0.005,\n -0.005,\n gasketZPosition,\n ]}\n material={gasketMaterial}\n >\n <boxGeometry\n args={[\n gasketWidthM + 0.005,\n totalOpeningHeightM - 0.02,\n gasketDepthM,\n ]}\n />\n </mesh>\n <mesh\n castShadow\n position={[\n rightGasketXPosition + 0.005,\n -0.005,\n gasketZPosition,\n ]}\n material={gasketMaterial}\n >\n <boxGeometry\n args={[\n gasketWidthM + 0.005,\n totalOpeningHeightM - 0.02,\n gasketDepthM,\n ]}\n />\n </mesh>\n </>\n )}\n\n {(frameType === \"WDGF_WDG100\" ||\n frameType === \"WF_100\" ||\n frameType === \"WF_FLI\") && (\n <group>\n {/* --- Door Stops (Second) --- */}\n <group>\n <mesh\n castShadow\n position={[\n 0,\n totalOpeningHeightM / 2 - secondDoorStopWidthM / 2,\n secondDoorStopPositionZ,\n ]}\n material={doorStopMaterial}\n >\n <boxGeometry\n args={[\n doorWidthM,\n secondDoorStopWidthM,\n secondDoorStopDepthM,\n ]}\n />\n </mesh>\n <mesh\n castShadow\n position={[\n -doorWidthM / 2 + secondDoorStopWidthM / 2,\n 0,\n secondDoorStopPositionZ,\n ]}\n material={doorStopMaterial}\n >\n <boxGeometry\n args={[\n secondDoorStopWidthM,\n totalOpeningHeightM,\n secondDoorStopDepthM,\n ]}\n />\n </mesh>\n <mesh\n castShadow\n position={[\n doorWidthM / 2 - secondDoorStopWidthM / 2,\n 0,\n secondDoorStopPositionZ,\n ]}\n material={doorStopMaterial}\n >\n <boxGeometry\n args={[\n secondDoorStopWidthM,\n totalOpeningHeightM,\n secondDoorStopDepthM,\n ]}\n />\n </mesh>\n </group>\n\n {/* --- Gaskets (Second) --- */}\n <group>\n <mesh\n castShadow\n position={[\n 0,\n secondTopGasketYPosition - 0.005,\n secondGasketZPosition,\n ]}\n material={gasketMaterial}\n >\n <boxGeometry\n args={[\n doorWidthM - 0.03,\n gasketWidthM + 0.005,\n gasketDepthM,\n ]}\n />\n </mesh>\n <mesh\n castShadow\n position={[\n secondLeftGasketXPosition - 0.005,\n -0.01,\n secondGasketZPosition,\n ]}\n material={gasketMaterial}\n >\n <boxGeometry\n args={[\n gasketWidthM + 0.005,\n totalOpeningHeightM - 0.04,\n gasketDepthM,\n ]}\n />\n </mesh>\n <mesh\n castShadow\n position={[\n secondRightGasketXPosition + 0.005,\n -0.01,\n secondGasketZPosition,\n ]}\n material={gasketMaterial}\n >\n <boxGeometry\n args={[\n gasketWidthM + 0.004,\n totalOpeningHeightM - 0.04,\n gasketDepthM,\n ]}\n />\n </mesh>\n </group>\n\n {/* --- Glass Frame (if visible) --- */}\n {glassVisible && (\n <>\n {/* Back side */}\n <group>\n {/* Top frame */}\n {(frameType === \"WDGF_WDG100\" ||\n frameType === \"WF_100\") && (\n <mesh\n castShadow\n position={[\n 0,\n topFrameCenterY - secondDoorStopWidthM / 2,\n leftGlass_Z,\n ]}\n material={glassInfillMaterial}\n >\n <boxGeometry\n args={[\n doorWidthM - 2 * secondDoorStopWidthM,\n topFrameWidthM + secondDoorStopWidthM,\n GlassPanelDepthM,\n ]}\n />\n </mesh>\n )}\n {frameType !== \"WDGF_WDG100\" && frameType !== \"WF_100\" && (\n <mesh\n castShadow\n position={[0, topFrameCenterY, leftGlass_Z]}\n material={glassInfillMaterial}\n >\n <boxGeometry\n args={[\n doorWidthM - 2 * secondDoorStopWidthM,\n topFrameWidthM,\n GlassPanelDepthM,\n ]}\n />\n </mesh>\n )}\n\n {/* Left side frame */}\n <mesh\n castShadow\n position={[\n -doorWidthM / 2 -\n sidesFrameWidthM / 2 +\n secondDoorStopWidthM / 2,\n sideFrameCenterY,\n leftGlass_Z,\n ]}\n material={glassInfillMaterial}\n >\n <boxGeometry\n args={[\n sidesFrameWidthM + secondDoorStopWidthM,\n totalFrameHeightM,\n GlassPanelDepthM,\n ]}\n />\n </mesh>\n\n {/* Right side frame */}\n <mesh\n castShadow\n position={[\n doorWidthM / 2 +\n sidesFrameWidthM / 2 -\n secondDoorStopWidthM / 2,\n sideFrameCenterY,\n leftGlass_Z,\n ]}\n material={glassInfillMaterial}\n >\n <boxGeometry\n args={[\n sidesFrameWidthM + secondDoorStopWidthM,\n totalFrameHeightM,\n GlassPanelDepthM,\n ]}\n />\n </mesh>\n </group>\n\n {/* Front side */}\n <group>\n {/* Top frame */}\n <mesh\n castShadow\n position={[0, topFrameCenterY, rightGlass_Z]}\n material={glassInfillMaterial}\n >\n <boxGeometry\n args={[doorWidthM, topFrameWidthM, GlassPanelDepthM]}\n />\n </mesh>\n\n {/* Left side frame */}\n <mesh\n castShadow\n position={[\n -doorWidthM / 2 - sidesFrameWidthM / 2,\n sideFrameCenterY,\n rightGlass_Z,\n ]}\n material={glassInfillMaterial}\n >\n <boxGeometry\n args={[\n sidesFrameWidthM,\n totalFrameHeightM,\n GlassPanelDepthM,\n ]}\n />\n </mesh>\n\n {/* Right side frame */}\n <mesh\n castShadow\n position={[\n doorWidthM / 2 + sidesFrameWidthM / 2,\n sideFrameCenterY,\n rightGlass_Z,\n ]}\n material={glassInfillMaterial}\n >\n <boxGeometry\n args={[\n sidesFrameWidthM,\n totalFrameHeightM,\n GlassPanelDepthM,\n ]}\n />\n </mesh>\n </group>\n </>\n )}\n </group>\n )}\n </group>\n )}\n\n {interiorFanlight.visible && (\n <mesh\n position={[0, interiorFanlightYPosition, doorCenterZ]}\n castShadow\n material={interiorFanlightMaterial}\n >\n <boxGeometry\n args={[doorWidthM, interiorFanlightHeightM, doorDepthM]}\n />\n </mesh>\n )}\n\n {/* --- Standard Hinge (Static Part) --- */}\n {isStandardHingeVisible &&\n standardHingeYPositions.map((y, index) => (\n <group\n key={`frame-hinge-${index}`}\n position={[hingeSideX, doorYPosition + y, hingeZ]}\n >\n <mesh\n material={hingeBodyMaterial}\n position={[0, separatorHeightM / 2 + barrelPartHeight / 2, 0]}\n castShadow\n >\n <cylinderGeometry\n args={[hingeRadiusM, hingeRadiusM, barrelPartHeight, 32]}\n />\n </mesh>\n <mesh\n material={hingeAccentMaterial}\n position={[\n 0,\n separatorHeightM / 2 + barrelPartHeight + capHeightM / 2,\n 0,\n ]}\n castShadow\n >\n <cylinderGeometry\n args={[hingeRadiusM, hingeRadiusM, capHeightM, 32]}\n />\n </mesh>\n </group>\n ))}\n\n {/* --- PIVOT GROUP --- */}\n <a.group\n position={[hingeSideX, doorYPosition, hingeZ]}\n rotation={rotation.to((x, y, z) => [x, y, z] as any)}\n onClick={handleClick}\n onPointerOver={() => (document.body.style.cursor = \"pointer\")}\n onPointerOut={() => (document.body.style.cursor = \"auto\")}\n >\n {/* --- Standard Hinge (Door Side)--- */}\n {isStandardHingeVisible &&\n standardHingeYPositions.map((y, index) => (\n <group key={`door-hinge-${index}`} position={[0, y, 0]}>\n <mesh\n material={hingeBodyMaterial}\n position={[0, -separatorHeightM / 2 - barrelPartHeight / 2, 0]}\n castShadow\n >\n <cylinderGeometry\n args={[hingeRadiusM, hingeRadiusM, barrelPartHeight, 32]}\n />\n </mesh>\n <mesh\n material={hingeAccentMaterial}\n position={[\n 0,\n -separatorHeightM / 2 - barrelPartHeight - capHeightM / 2,\n 0,\n ]}\n castShadow\n >\n <cylinderGeometry\n args={[hingeRadiusM, hingeRadiusM, capHeightM, 32]}\n />\n </mesh>\n <mesh\n material={hingeAccentMaterial}\n position={[0, 0, 0]}\n castShadow\n >\n <cylinderGeometry\n args={[hingeRadiusM, hingeRadiusM, separatorHeightM, 32]}\n />\n </mesh>\n </group>\n ))}\n {/* --- Glass Hinge --- */}\n {isGlassDoor &&\n isFrameVisible &&\n glassHingeYPositions.map((y, index) => (\n <GlassHinge\n key={`glass-hinge-${index}`}\n position={[0, y, doorOffsetZ]}\n pivot={doorPivot}\n frameSideWidth={sidesFrameWidthM}\n doorDepthM={doorDepthM}\n material={hingeBodyMaterial}\n gasketMaterial={gasketMaterial}\n />\n ))}\n\n <group position={[-hingeSideX, 0, doorOffsetZ]}>\n <mesh castShadow>\n <Geometry useGroups>\n <Base name=\"door-base\" material={doorMaterial}>\n <boxGeometry args={[doorWidthM, mainDoorHeightM, doorDepthM]} />\n </Base>\n {/* First set of cuts */}\n <DoorStopCuts\n visible={\n frameType === \"WDGF_WDG100\" ||\n frameType === \"WF_100\" ||\n frameType === \"WF_FLI\"\n }\n width={doorWidthM}\n height={totalOpeningHeightM}\n stopWidth={doorStopWidthM}\n stopDepth={doorStopDepthM}\n stopPositionZ={doorStopPositionZ}\n centerZ={doorCenterZ}\n glassDepthOffset={GlassPanelDepthM / 2}\n material={doorMaterial}\n setName=\"1\"\n />\n\n {/* Second set of cuts */}\n <DoorStopCuts\n visible={\n frameType === \"WDGF_WDG100\" ||\n frameType === \"WF_100\" ||\n frameType === \"WF_FLI\"\n }\n width={doorWidthM}\n height={totalOpeningHeightM}\n stopWidth={secondDoorStopWidthM}\n stopDepth={secondDoorStopDepthM}\n stopPositionZ={secondDoorStopPositionZ}\n centerZ={doorCenterZ}\n glassDepthOffset={GlassPanelDepthM / 2}\n material={doorMaterial}\n setName=\"2\"\n />\n\n {/* Glass panels */}\n {glassVisible && (\n <>\n <mesh\n position={[0, 0, frontGlassOffsetZ]}\n castShadow\n material={glassInfillMaterial}\n >\n <boxGeometry\n args={[doorWidthM, mainDoorHeightM, GlassPanelDepthM]}\n />\n </mesh>\n\n {frameType !== \"WDGF_WDG100\" && frameType !== \"WF_100\" && (\n <mesh\n position={[0, 0, backGlassOffsetZ]}\n castShadow\n material={glassInfillMaterial}\n >\n <boxGeometry\n args={[doorWidthM, mainDoorHeightM, GlassPanelDepthM]}\n />\n </mesh>\n )}\n\n {(frameType === \"WDGF_WDG100\" || frameType === \"WF_100\") && (\n <mesh\n position={[\n 0,\n -secondDoorStopWidthM / 2,\n backGlassOffsetZ,\n ]}\n castShadow\n material={glassInfillMaterial}\n >\n <boxGeometry\n args={[\n doorWidthM - 2 * secondDoorStopWidthM,\n mainDoorHeightM - secondDoorStopWidthM,\n GlassPanelDepthM,\n ]}\n />\n </mesh>\n )}\n </>\n )}\n\n {/* Occulus cut */}\n {occulus.visible && occulusWidthM > 0 && occulusHeightM > 0 && (\n <Subtraction\n material={placeholderMaterial}\n position={[occulusPositionXM, occulusPositionYM, 0]}\n >\n <boxGeometry\n args={[occulusWidthM, occulusHeightM, doorDepthM + 0.01]}\n />\n </Subtraction>\n )}\n </Geometry>\n </mesh>\n\n {/* Occulus infill */}\n {occulus.visible &&\n occulus.infillVisible &&\n occulusWidthM > 0 &&\n occulusHeightM > 0 && (\n <mesh\n position={[occulusPositionXM, occulusPositionYM, 0]}\n castShadow\n material={occulusInfillMaterial}\n >\n <boxGeometry\n args={[occulusWidthM, occulusHeightM, occulusInfillDepthM]}\n />\n </mesh>\n )}\n </group>\n </a.group>\n\n {/* Floor plane */}\n {isPlaneVisible && (\n <mesh\n receiveShadow\n rotation={[-Math.PI / 2, 0, 0]}\n position={[0, -totalOpeningHeightM / 2 - 0.01, 0]}\n >\n <planeGeometry args={[10, 10]} />\n <meshStandardMaterial color=\"#f9f9f9\" side={THREE.DoubleSide} />\n </mesh>\n )}\n </>\n );\n}\n\nexport default DoorModels;\n","import React from \"react\";\nimport { ConfiguratorProvider } from \"../context/DoorContext\";\nimport DoorModels from \"./DoorModels\";\n\ntype DoorConfiguratorProps = {\n doorName?: string;\n showInterface?: boolean;\n};\n\nconst DoorConfigurator = ({\n doorName,\n showInterface = true,\n}: DoorConfiguratorProps) => {\n return (\n <ConfiguratorProvider>\n <DoorModels doorName={doorName} />\n </ConfiguratorProvider>\n );\n};\n\nexport default DoorConfigurator;\n"],"names":["jsxRuntimeModule","require$$0","require$$1","ConfiguratorContext","createContext","undefined","ConfiguratorProvider","_ref","children","isPlaneVisible","setIsPlaneVisible","useState","isFrameVisible","setIsFrameVisible","cpid","setCpid","totalHeight","setTotalHeight","totalWidth","setTotalWidth","glassVisible","setGlassVisible","glassDepth","setGlassDepth","door","setDoor","doorMaterial","doorWidth","doorHeight","theDoorDepth","doorPivot","doorOpening","doorFrame","setDoorFrame","frameMaterial","doorStopMaterial","gasketMaterial","hingeMaterial","glassMaterial","frameDepth","topThk","sidesThk","doorStopOffset","doorStopWidth","doorStopDepth","notchWidth","notchDepth","notchposition","gasketDepth","gasketWidth","secondDoorStopWidth","secondDoorStopDepth","secondDoorStopOffset","interiorFanlight","setInteriorFanlight","visible","height","material","exteriorFanlight","setExteriorFanlight","depth","occulus","setOcculus","infillVisible","x1","x2","y1","y2","frontCoverPanel","setFrontCoverPanel","width","backCoverPanel","setBackCoverPanel","glass","setGlass","frameType","setFrameType","bodyType","setBodyType","exteriorFanlightType","setExteriorFanlightType","testDoorMaterial","setTestDoorMaterial","testFrameMaterial","setTestFrameMaterial","testGasketMaterial","setTestGasketMaterial","testInteriorFanlightMaterial","setTestInteriorFanlightMaterial","testExteriorFanlightMaterial","setTestExteriorFanlightMaterial","testOcculusInfillMaterial","setTestOcculusInfillMaterial","testGlassInfillMaterial","setTestGlassInfillMaterial","testDoorStopMaterial","setTestDoorStopMaterial","testHingeMaterial","setTestHingeMaterial","testFrontCoverPanelMaterial","setTestFrontCoverPanelMaterial","testBackCoverPanelMaterial","setTestBackCoverPanelMaterial","parseMessage","setParseMessage","type","text","handleParseCpid","useCallback","cpidToParse","showMessage","arguments","length","setTimeout","trim","startsWith","parts","split","newConfig","fanlightVisible","fanlightType","interiorFanlightVisible","occulusVisible","currentIndex","fanlightPart","validFanlights","includes","concat","validSimpleFrameTypes","validBodyTypes","framePart","bodyPartRaw","frameFound","tempBody","replace","endsWith","i","prev","_objectSpread","useEffect","newDoorDepth","newMaterial","newSettings","lookupKey","doorDepth","isMxCaf","newFrameSettings","_objectWithoutProperties","_excluded","topThkValue","parseInt","exteriorFanlightHeight","newDoorHeight","prevDoor","sidesThkValue","newDoorWidth","_jsx","Provider","value","useConfigurator","context","useContext","Error","placeholderMaterial","THREE","MeshStandardMaterial","color","roughness","placeholderMaterialforFrames","availableMaterials","black","metal","metalness","darkgrey","grey","yellow","darkBrown","brown","transparent","opacity","aluminum","silver","gold","diamond","envMapIntensity","GlassHinge","position","pivot","frameSideWidth","doorDepthM","plateWidth","plateHeight","plateThickness","gasketThickness","pivotRadius","pivotHeight","sideMultiplier","plateOffsetX","holeRadius","holeSpacingX","_jsxs","castShadow","receiveShadow","args","Geometry","useGroups","Base","Subtraction","rotation","Math","PI","DoorStopCuts","_ref2","stopWidth","stopDepth","stopPositionZ","centerZ","glassDepthOffset","setName","_Fragment","name","DoorModels","_ref3","doorName","doorMaterialName","frameMaterialName","gasketMaterialName","doorStopMaterialName","hingeMaterialName","interiorFanlightMaterialName","exteriorFanlightMaterialName","occulusInfillMaterialName","glassInfillMaterialName","frontCoverPanelMaterialName","backCoverPanelMaterialName","useMemo","interiorFanlightMaterial","exteriorFanlightMaterial","occulusInfillMaterial","glassInfillMaterial","hingeBodyMaterial","frontCoverPanelMaterial","backCoverPanelMaterial","hingeAccentMaterial","interiorFanlightHeightValue","exteriorFanlightHeightValue","exteriorFanlightDepthValue","occulusX1","occulusX2","occulusY1","occulusY2","occulusInfillDepth","architraveWidth","architraveDepth","interiorFanlightHeight","mainDoorHeight","doorWidthM","mainDoorHeightM","interiorFanlightHeightM","totalOpeningHeightM","frameDepthM","topFrameWidthM","sidesFrameWidthM","exteriorFanlightHeightM","exteriorFanlightDepthM","occulusX1M","occulusX2M","occulusY1M","occulusY2M","occulusInfillDepthM","doorStopWidthM","doorStopDepthM","architraveProfileM","architraveDepthM","gasketWidthM","gasketDepthM","doorStopOffsetValue","doorStopOffsetFromEdgeM","notchDepthValue","notchWidthValue","notchWidthM","notchDepthM","isOpeningIn","doorStopPositionZ","gasketZPosition","secondDoorStopWidthM","secondDoorStopDepthM","secondDoorStopPositionZ","secondGasketZPosition","doorCenterZ","gasketBackFaceZ","gasketFrontFaceZ","GlassPanelDepthM","frontGlassOffsetZ","backGlassOffsetZ","exteriorFanlightZPosition","occulusWidthM","occulusHeightM","occulusPositionXM","occulusPositionYM","isOpen","setIsOpen","hingeSideX","leftGlass_Z","rightGlass_Z","hingeZ","doorOffsetZ","directionMultiplier","useSpring","config","mass","tension","friction","handleClick","totalFrameWidth","totalFrameHeightM","sideFrameCenterY","interiorFanlightYPosition","doorYPosition","topFrameCenterY","topOfFrameY","exteriorFanlightYPosition","frontArchitraveZ","backArchitraveZ","sideArchitraveHeight","sideArchitraveCenterY","leftArchitraveX","rightArchitraveX","topArchitraveY","topArchitraveWidth","topGasketYPosition","leftGasketXPosition","rightGasketXPosition","secondTopGasketYPosition","secondLeftGasketXPosition","secondRightGasketXPosition","hingeTotalHeightM","hingeRadiusM","capHeightM","separatorHeightM","barrelPartHeight","isGlassDoor","standardHingeYPositions","numHinges","topMargin","bottomMargin","availableHeight","spacing","positions","push","glassHingeYPositions","secondTopMargin","top","secondTop","bottom","isStandardHingeVisible","invisibleFrameTypes","map","y","index","a","group","to","x","z","onClick","onPointerOver","document","body","style","cursor","onPointerOut","side","DoubleSide","DoorConfigurator","showInterface"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.esm.js","sources":["../src/lib/context/DoorContext.tsx","../src/lib/components/DoorModels.tsx","../src/lib/components/DoorConfigurator.tsx"],"sourcesContent":["import React, {\n createContext,\n useContext,\n useState,\n useEffect,\n useCallback,\n} from \"react\";\n\nimport { availableMaterials } from \"../components/DoorModels\";\ntype MaterialName = keyof typeof availableMaterials;\n// --- Type Definitions to Match JSON Structure ---\n\ntype DoorType = {\n doorMaterial: string;\n doorWidth: number;\n doorHeight: number;\n theDoorDepth: number;\n doorPivot: string;\n doorOpening: string;\n};\n\ntype DoorFrameType = {\n frameMaterial: string;\n doorStopMaterial?: string;\n gasketMaterial: string;\n hingeMaterial: string;\n glassMaterial?: string;\n frameDepth: number;\n topThk: string;\n sidesThk: string;\n notchDepth: string;\n notchWidth: string;\n doorStopWidth: number;\n doorStopDepth: number;\n doorStopOffset: string;\n notchposition: number;\n gasketWidth: number;\n gasketDepth: number;\n secondDoorStopWidth: number;\n secondDoorStopDepth: number;\n secondDoorStopOffset: number;\n};\n\ntype InteriorFanlightType = {\n visible: boolean;\n height: number;\n material: string;\n};\n\ntype ExteriorFanlightType = {\n visible: boolean;\n height: number;\n depth: number;\n material: string;\n};\n\ntype OcculusType = {\n visible: boolean;\n infillVisible: boolean;\n x1: number;\n x2: number;\n y1: number;\n y2: number;\n material: string;\n depth: number;\n};\n\ntype CoverPanelType = {\n visible: boolean;\n width: number;\n height: number;\n depth: number;\n material: string;\n};\n\ntype FrameAndDoorSettings = Partial<DoorFrameType> & { doorDepth?: number };\ntype GlassType = {\n visible: boolean;\n material: string;\n depth: number;\n};\n\n// --- Main Context Type ---\ntype ConfiguratorContextType = {\n isPlaneVisible: boolean;\n setIsPlaneVisible: React.Dispatch<React.SetStateAction<boolean>>;\n isFrameVisible: boolean;\n setIsFrameVisible: React.Dispatch<React.SetStateAction<boolean>>;\n cpid: string;\n setCpid: React.Dispatch<React.SetStateAction<string>>;\n door: DoorType;\n setDoor: React.Dispatch<React.SetStateAction<DoorType>>;\n doorFrame: DoorFrameType;\n setDoorFrame: React.Dispatch<React.SetStateAction<DoorFrameType>>;\n interiorFanlight: InteriorFanlightType;\n setInteriorFanlight: React.Dispatch<\n React.SetStateAction<InteriorFanlightType>\n >;\n exteriorFanlight: ExteriorFanlightType;\n setExteriorFanlight: React.Dispatch<\n React.SetStateAction<ExteriorFanlightType>\n >;\n exteriorFanlightType: string;\n setExteriorFanlightType: React.Dispatch<React.SetStateAction<string>>;\n occulus: OcculusType;\n setOcculus: React.Dispatch<React.SetStateAction<OcculusType>>;\n frontCoverPanel: CoverPanelType;\n setFrontCoverPanel: React.Dispatch<React.SetStateAction<CoverPanelType>>;\n backCoverPanel: CoverPanelType;\n setBackCoverPanel: React.Dispatch<React.SetStateAction<CoverPanelType>>;\n glass: GlassType;\n setGlass: React.Dispatch<React.SetStateAction<GlassType>>;\n frameType: string;\n setFrameType: React.Dispatch<React.SetStateAction<string>>;\n bodyType: string;\n setBodyType: React.Dispatch<React.SetStateAction<string>>;\n totalHeight: number;\n setTotalHeight: React.Dispatch<React.SetStateAction<number>>;\n totalWidth: number;\n setTotalWidth: React.Dispatch<React.SetStateAction<number>>;\n handleParseCpid: (cpidToParse: string) => void;\n // --- States for Test Materials ---\n testDoorMaterial: string;\n setTestDoorMaterial: React.Dispatch<React.SetStateAction<string>>;\n testFrameMaterial: string;\n setTestFrameMaterial: React.Dispatch<React.SetStateAction<string>>;\n testGasketMaterial: string;\n setTestGasketMaterial: React.Dispatch<React.SetStateAction<string>>;\n testInteriorFanlightMaterial: string;\n setTestInteriorFanlightMaterial: React.Dispatch<React.SetStateAction<string>>;\n testExteriorFanlightMaterial: string;\n setTestExteriorFanlightMaterial: React.Dispatch<React.SetStateAction<string>>;\n testOcculusInfillMaterial: string;\n setTestOcculusInfillMaterial: React.Dispatch<React.SetStateAction<string>>;\n testGlassInfillMaterial: string;\n setTestGlassInfillMaterial: React.Dispatch<React.SetStateAction<string>>;\n testDoorStopMaterial: string;\n setTestDoorStopMaterial: React.Dispatch<React.SetStateAction<string>>;\n testHingeMaterial: string;\n setTestHingeMaterial: React.Dispatch<React.SetStateAction<string>>;\n testFrontCoverPanelMaterial: string;\n setTestFrontCoverPanelMaterial: React.Dispatch<React.SetStateAction<string>>;\n testBackCoverPanelMaterial: string;\n setTestBackCoverPanelMaterial: React.Dispatch<React.SetStateAction<string>>;\n glassVisible: boolean;\n setGlassVisible: React.Dispatch<React.SetStateAction<boolean>>;\n glassDepth: number;\n setGlassDepth: React.Dispatch<React.SetStateAction<number>>;\n};\n\nconst ConfiguratorContext = createContext<ConfiguratorContextType | undefined>(\n undefined\n);\n\ntype ConfiguratorProviderProps = {\n children: React.ReactNode;\n};\n\nexport const ConfiguratorProvider = ({\n children,\n}: ConfiguratorProviderProps) => {\n const [isPlaneVisible, setIsPlaneVisible] = useState<boolean>(false);\n const [isFrameVisible, setIsFrameVisible] = useState<boolean>(true);\n const [cpid, setCpid] = useState<string>(\"\");\n const [totalHeight, setTotalHeight] = useState<number>(2700);\n const [totalWidth, setTotalWidth] = useState<number>(974);\n const [glassVisible, setGlassVisible] = useState(false);\n const [glassDepth, setGlassDepth] = useState(8);\n const [door, setDoor] = useState<DoorType>({\n doorMaterial: \"door_material\",\n doorWidth: 0,\n doorHeight: 0,\n theDoorDepth: 40,\n doorPivot: \"left\",\n doorOpening: \"out\",\n });\n const [doorFrame, setDoorFrame] = useState<DoorFrameType>({\n frameMaterial: \"doorFrame_material\",\n doorStopMaterial: \"doorStop_material\",\n gasketMaterial: \"gasket_material\",\n hingeMaterial: \"hinge_material\",\n glassMaterial: \"glass_material\",\n frameDepth: 103,\n topThk: \"20mm\",\n sidesThk: \"20mm\",\n doorStopOffset: \"30mm\",\n doorStopWidth: 20,\n doorStopDepth: 13,\n notchWidth: \"20mm\",\n notchDepth: \"40mm\",\n notchposition: 0.01,\n gasketDepth: 5,\n gasketWidth: 5,\n secondDoorStopWidth: 20,\n secondDoorStopDepth: 30,\n secondDoorStopOffset: 13,\n });\n const [interiorFanlight, setInteriorFanlight] =\n useState<InteriorFanlightType>({\n visible: false,\n height: 300,\n material: \"interiorFanlight_material\",\n });\n const [exteriorFanlight, setExteriorFanlight] =\n useState<ExteriorFanlightType>({\n visible: false,\n height: 300,\n depth: 60,\n material: \"exteriorFanlight_material\",\n });\n const [occulus, setOcculus] = useState<OcculusType>({\n visible: false,\n infillVisible: true,\n x1: 120,\n x2: 120,\n y1: 600,\n y2: 220,\n material: \"infill_material\",\n depth: 20,\n });\n const [frontCoverPanel, setFrontCoverPanel] = useState<CoverPanelType>({\n visible: false,\n width: 73,\n height: 2200,\n depth: 12,\n material: \"front_cover_material\",\n });\n const [backCoverPanel, setBackCoverPanel] = useState<CoverPanelType>({\n visible: false,\n width: 73,\n height: 2200,\n depth: 12,\n material: \"back_cover_material\",\n });\n const [glass, setGlass] = useState<GlassType>({\n visible: false,\n material: \"infill_material\",\n depth: 20,\n });\n const [frameType, setFrameType] = useState<string>(\"AF20_40\");\n const [bodyType, setBodyType] = useState<string>(\"40\");\n const [exteriorFanlightType, setExteriorFanlightType] =\n useState<string>(\"WPFL\");\n const [testDoorMaterial, setTestDoorMaterial] = useState<string>(\"brown\");\n const [testFrameMaterial, setTestFrameMaterial] = useState<string>(\"black\");\n const [testGasketMaterial, setTestGasketMaterial] =\n useState<string>(\"darkgrey\");\n const [testInteriorFanlightMaterial, setTestInteriorFanlightMaterial] =\n useState<string>(\"grey\");\n const [testExteriorFanlightMaterial, setTestExteriorFanlightMaterial] =\n useState<string>(\"metal\");\n const [testOcculusInfillMaterial, setTestOcculusInfillMaterial] =\n useState<string>(\"glass\");\n const [testGlassInfillMaterial, setTestGlassInfillMaterial] =\n useState<string>(\"glass\");\n const [testDoorStopMaterial, setTestDoorStopMaterial] =\n useState<string>(\"black\");\n const [testHingeMaterial, setTestHingeMaterial] = useState<string>(\"metal\");\n const [testFrontCoverPanelMaterial, setTestFrontCoverPanelMaterial] =\n useState<string>(\"aluminum\");\n const [testBackCoverPanelMaterial, setTestBackCoverPanelMaterial] =\n useState<string>(\"aluminum\");\n\n //\n const [parseMessage, setParseMessage] = useState({ type: \"\", text: \"\" });\n\n const handleParseCpid = useCallback(\n cpidToParse => {\n const showMessage = (text, type = \"error\") => {\n setParseMessage({ text, type });\n setTimeout(() => setParseMessage({ text: \"\", type: \"\" }), 4000);\n };\n\n if (!cpidToParse || !cpidToParse.trim().startsWith(\"P_\")) {\n showMessage(\"Invalid format: CPID must start with 'P_'.\");\n return;\n }\n\n const parts = cpidToParse.trim().split(\"_\");\n if (parts.length < 4) {\n showMessage(\"Invalid format: Not enough parts in CPID.\");\n return;\n }\n\n const newConfig = {\n fanlightVisible: false,\n fanlightType: \"WPFL\",\n interiorFanlightVisible: false,\n occulusVisible: false,\n frameType: \"\",\n bodyType: \"\",\n };\n let currentIndex = 1;\n\n // Door Type\n if (parts[currentIndex] === \"SD\") {\n currentIndex++;\n } else {\n showMessage(\"Unsupported Door Type: Only 'SD' is supported.\");\n return;\n }\n\n //Fanlight Type\n const fanlightPart = parts[currentIndex];\n const validFanlights = [\"WPFL\", \"ALDGFL\", \"ALSGFL\"];\n if (fanlightPart === \"FH\") {\n newConfig.fanlightVisible = false;\n currentIndex++;\n } else if (validFanlights.includes(fanlightPart)) {\n newConfig.fanlightVisible = true;\n newConfig.fanlightType = fanlightPart;\n currentIndex++;\n } else {\n showMessage(`Invalid Fanlight Type: '${fanlightPart}'.`);\n return;\n }\n\n // Frame and Body Type\n const validSimpleFrameTypes = [\n \"AF20\",\n \"AF40\",\n \"WF\",\n \"MXF\",\n \"MXCAF\",\n \"NOF\",\n ];\n const validBodyTypes = [\n \"40\",\n \"50\",\n \"FLI\",\n \"100\",\n \"WDG100\",\n \"SG8\",\n \"SG10\",\n \"SG12\",\n ];\n\n let framePart = parts[currentIndex];\n let bodyPartRaw = parts[currentIndex + 1] || \"\";\n let frameFound = false;\n\n if (`${framePart}_${bodyPartRaw}` === \"WDGF_WDG100\") {\n newConfig.frameType = \"WDGF_WDG100\";\n newConfig.bodyType = \"WDG100\";\n currentIndex += 2;\n frameFound = true;\n } else if (validSimpleFrameTypes.includes(framePart)) {\n let tempBody = bodyPartRaw.replace(\"OCC\", \"\");\n\n if (validBodyTypes.includes(tempBody)) {\n newConfig.frameType =\n framePart === \"NOF\" ? \"NOF\" : `${framePart}_${tempBody}`;\n\n newConfig.bodyType = tempBody;\n\n if (bodyPartRaw.endsWith(\"OCC\")) {\n newConfig.occulusVisible = true;\n }\n currentIndex += 2;\n frameFound = true;\n }\n }\n\n if (!frameFound) {\n showMessage(\n `Invalid Frame/Body combination starting with '${framePart}'.`\n );\n return;\n }\n\n for (let i = currentIndex; i < parts.length; i++) {\n if (parts[i] === \"IFL\") {\n newConfig.interiorFanlightVisible = true;\n } else if (parts[i] === \"OCC\") {\n newConfig.occulusVisible = true;\n }\n }\n\n // Apply final configuration\n setFrameType(newConfig.frameType);\n setBodyType(newConfig.bodyType);\n setExteriorFanlight(prev => ({\n ...prev,\n visible: newConfig.fanlightVisible,\n }));\n if (newConfig.fanlightVisible) {\n setExteriorFanlightType(newConfig.fanlightType);\n }\n setInteriorFanlight(prev => ({\n ...prev,\n visible: newConfig.interiorFanlightVisible,\n }));\n setOcculus(prev => ({ ...prev, visible: newConfig.occulusVisible }));\n showMessage(\"Configuration Applied!\", \"success\");\n },\n [\n setBodyType,\n setExteriorFanlight,\n setExteriorFanlightType,\n setFrameType,\n setInteriorFanlight,\n setOcculus,\n ]\n );\n\n // --- BodyType Effect ---\n useEffect(() => {\n let newDoorDepth = 40;\n let newMaterial = \"brown\";\n\n switch (bodyType) {\n case \"50\":\n newDoorDepth = 50;\n break;\n case \"SG8\":\n newDoorDepth = 8;\n newMaterial = \"glass\";\n break;\n case \"SG10\":\n newDoorDepth = 10;\n newMaterial = \"glass\";\n break;\n case \"SG12\":\n newDoorDepth = 12;\n newMaterial = \"glass\";\n break;\n }\n\n setDoor(prev => ({ ...prev, theDoorDepth: newDoorDepth }));\n setTestDoorMaterial(newMaterial);\n }, [bodyType]);\n\n // --- FrameType Effect ---\n useEffect(() => {\n setIsFrameVisible(frameType !== \"NOF\");\n\n setGlassVisible(false);\n\n let newSettings: FrameAndDoorSettings = {};\n\n let lookupKey = frameType;\n if (frameType.startsWith(\"AF20_SG\")) {\n lookupKey = \"AF20_40\";\n } else if (frameType.startsWith(\"AF40_SG\")) {\n lookupKey = \"AF40_40\";\n }\n\n switch (lookupKey) {\n case \"NOF\":\n newSettings = {\n topThk: \"0mm\",\n sidesThk: \"0mm\",\n frameDepth: 0,\n };\n break;\n case \"AF20_40\":\n newSettings = {\n frameDepth: 103,\n topThk: \"20mm\",\n sidesThk: \"20mm\",\n doorStopOffset: \"42mm\",\n doorStopWidth: 20,\n doorStopDepth: 13,\n notchWidth: \"20mm\",\n notchDepth: \"40mm\",\n notchposition: 0.01,\n gasketDepth: 5,\n gasketWidth: 5,\n };\n if (frameType === \"AF20_40\") {\n newSettings.doorDepth = 40;\n }\n break;\n case \"AF20_50\":\n newSettings = {\n doorDepth: 50,\n frameDepth: 103,\n topThk: \"20mm\",\n sidesThk: \"20mm\",\n doorStopOffset: \"30mm\",\n doorStopWidth: 20,\n doorStopDepth: 13,\n notchWidth: \"20mm\",\n notchDepth: \"40mm\",\n notchposition: 0.01,\n gasketDepth: 5,\n gasketWidth: 5,\n };\n break;\n case \"AF40_40\":\n newSettings = {\n frameDepth: 103,\n topThk: \"40mm\",\n sidesThk: \"40mm\",\n doorStopOffset: \"42mm\",\n doorStopWidth: 20,\n doorStopDepth: 13,\n notchWidth: \"20mm\",\n notchDepth: \"40mm\",\n notchposition: 0.01,\n gasketDepth: 5,\n gasketWidth: 5,\n };\n if (frameType === \"AF40_40\") {\n newSettings.doorDepth = 40;\n }\n break;\n case \"AF40_50\":\n newSettings = {\n doorDepth: 50,\n frameDepth: 103,\n topThk: \"40mm\",\n sidesThk: \"40mm\",\n doorStopOffset: \"30mm\",\n doorStopWidth: 20,\n doorStopDepth: 13,\n notchWidth: \"20mm\",\n notchDepth: \"40mm\",\n notchposition: 0.01,\n gasketDepth: 5,\n gasketWidth: 5,\n };\n break;\n case \"WF_40\":\n newSettings = {\n doorDepth: 39.6,\n frameDepth: 103,\n topThk: \"31.6mm\",\n sidesThk: \"31.6mm\",\n doorStopOffset: \"0mm\",\n doorStopWidth: 16.4,\n doorStopDepth: 58.4,\n notchWidth: \"20mm\",\n notchDepth: \"40mm\",\n notchposition: 0.01,\n gasketDepth: 5,\n gasketWidth: 5,\n };\n break;\n case \"WF_50\":\n newSettings = {\n doorDepth: 51.6,\n frameDepth: 103,\n topThk: \"31.6mm\",\n sidesThk: \"31.6mm\",\n doorStopOffset: \"0mm\",\n doorStopWidth: 16,\n doorStopDepth: 46.4,\n notchWidth: \"20mm\",\n notchDepth: \"40mm\",\n notchposition: 0.01,\n gasketDepth: 5,\n gasketWidth: 5,\n };\n break;\n case \"WF_100\":\n newSettings = {\n doorDepth: 102,\n frameDepth: 102,\n topThk: \"52mm\",\n sidesThk: \"52mm\",\n doorStopOffset: \"17.6mm\",\n doorStopWidth: 16.4,\n doorStopDepth: 44.8,\n notchWidth: \"16mm\",\n notchDepth: \"66.5mm\",\n notchposition: 0.02,\n gasketDepth: 5,\n gasketWidth: 5,\n secondDoorStopWidth: 29,\n secondDoorStopDepth: 17.6,\n secondDoorStopOffset: 0,\n };\n break;\n case \"WF_FLI\":\n newSettings = {\n doorDepth: 51,\n frameDepth: 102,\n topThk: \"52mm\",\n sidesThk: \"52mm\",\n doorStopOffset: \"17.4mm\",\n doorStopWidth: 16.4,\n doorStopDepth: 34,\n notchWidth: \"14mm\",\n notchDepth: \"66mm\",\n notchposition: 0.02,\n gasketDepth: 5,\n gasketWidth: 5,\n secondDoorStopWidth: 29,\n secondDoorStopDepth: 17.6,\n secondDoorStopOffset: 0,\n };\n break;\n case \"WDGF_WDG100\":\n newSettings = {\n doorDepth: 86,\n frameDepth: 86,\n topThk: \"50mm\",\n sidesThk: \"50mm\",\n doorStopOffset: \"34mm\",\n doorStopWidth: 13,\n doorStopDepth: 30,\n notchWidth: \"14mm\",\n notchDepth: \"66mm\",\n notchposition: 0.02,\n gasketDepth: 4.5,\n gasketWidth: 5,\n secondDoorStopWidth: 23,\n secondDoorStopDepth: 30,\n secondDoorStopOffset: 13,\n };\n setGlassVisible(true);\n break;\n case \"MXF_40\":\n newSettings = {\n doorDepth: 38,\n frameDepth: 103,\n topThk: \"18mm\",\n sidesThk: \"18mm\",\n doorStopOffset: \"45mm\",\n doorStopWidth: 15,\n doorStopDepth: 15,\n notchWidth: \"20mm\",\n notchDepth: \"40mm\",\n notchposition: 0.01,\n gasketDepth: 5,\n gasketWidth: 5,\n };\n break;\n case \"MXF_50\":\n newSettings = {\n doorDepth: 50,\n frameDepth: 103,\n topThk: \"18.2mm\",\n sidesThk: \"18.2mm\",\n doorStopOffset: \"33mm\",\n doorStopWidth: 15,\n doorStopDepth: 15,\n notchWidth: \"20mm\",\n notchDepth: \"40mm\",\n notchposition: 0.01,\n gasketDepth: 5,\n gasketWidth: 5,\n };\n break;\n case \"MXCAF_40\":\n newSettings = {\n doorDepth: 38,\n frameDepth: 103,\n topThk: \"18mm\",\n sidesThk: \"18mm\",\n doorStopOffset: \"45mm\",\n doorStopWidth: 15,\n doorStopDepth: 15,\n notchWidth: \"20mm\",\n notchDepth: \"40mm\",\n notchposition: 0.01,\n gasketDepth: 5,\n gasketWidth: 5,\n };\n break;\n case \"MXCAF_50\":\n newSettings = {\n doorDepth: 50,\n frameDepth: 103,\n topThk: \"18.2mm\",\n sidesThk: \"18.2mm\",\n doorStopOffset: \"33mm\",\n doorStopWidth: 15,\n doorStopDepth: 15,\n notchWidth: \"20mm\",\n notchDepth: \"40mm\",\n notchposition: 0.01,\n gasketDepth: 5,\n gasketWidth: 5,\n };\n break;\n default:\n break;\n }\n\n const isMxCaf = frameType.startsWith(\"MXCAF\");\n setFrontCoverPanel(prev => ({ ...prev, visible: isMxCaf }));\n setBackCoverPanel(prev => ({ ...prev, visible: isMxCaf }));\n\n const { doorDepth, ...newFrameSettings } = newSettings;\n setDoorFrame(prev => ({ ...prev, ...newFrameSettings }));\n\n if (doorDepth !== undefined) {\n setDoor(prev => ({ ...prev, theDoorDepth: doorDepth }));\n }\n }, [frameType]);\n\n // --- Exterior Fanlight Logic ---\n useEffect(() => {\n if (!exteriorFanlight.visible) return;\n switch (exteriorFanlightType) {\n case \"WPFL\":\n setExteriorFanlight(prev => ({ ...prev, depth: doorFrame.frameDepth }));\n setTestExteriorFanlightMaterial(\"metal\");\n break;\n case \"ALDGL\":\n setExteriorFanlight(prev => ({ ...prev, depth: doorFrame.frameDepth }));\n setTestExteriorFanlightMaterial(\"glass\");\n break;\n case \"ALSGL\":\n setExteriorFanlight(prev => ({ ...prev, depth: 40 }));\n setTestExteriorFanlightMaterial(\"glass\");\n break;\n default:\n break;\n }\n }, [\n exteriorFanlight.visible,\n exteriorFanlightType,\n doorFrame.frameDepth,\n setTestExteriorFanlightMaterial,\n setExteriorFanlight,\n ]);\n\n useEffect(() => {\n const topThkValue = parseInt(doorFrame.topThk) || 0;\n const exteriorFanlightHeight = exteriorFanlight.visible\n ? exteriorFanlight.height\n : 0;\n const newDoorHeight = totalHeight - topThkValue - exteriorFanlightHeight;\n\n setDoor(prevDoor => ({\n ...prevDoor,\n doorHeight: newDoorHeight > 0 ? newDoorHeight : 0,\n }));\n }, [\n totalHeight,\n doorFrame.topThk,\n exteriorFanlight.visible,\n exteriorFanlight.height,\n ]);\n\n useEffect(() => {\n const sidesThkValue = parseInt(doorFrame.sidesThk) || 0;\n const newDoorWidth = totalWidth - sidesThkValue * 2;\n setDoor(prevDoor => ({\n ...prevDoor,\n doorWidth: newDoorWidth > 0 ? newDoorWidth : 0,\n }));\n }, [totalWidth, doorFrame.sidesThk]);\n\n return (\n <ConfiguratorContext.Provider\n value={{\n isPlaneVisible,\n setIsPlaneVisible,\n isFrameVisible,\n setIsFrameVisible,\n cpid,\n setCpid,\n door,\n setDoor,\n doorFrame,\n setDoorFrame,\n interiorFanlight,\n setInteriorFanlight,\n exteriorFanlight,\n setExteriorFanlight,\n occulus,\n setOcculus,\n frontCoverPanel,\n setFrontCoverPanel,\n backCoverPanel,\n setBackCoverPanel,\n glass,\n setGlass,\n frameType,\n setFrameType,\n bodyType,\n setBodyType,\n totalHeight,\n setTotalHeight,\n totalWidth,\n setTotalWidth,\n exteriorFanlightType,\n setExteriorFanlightType,\n testDoorMaterial,\n setTestDoorMaterial,\n testFrameMaterial,\n setTestFrameMaterial,\n testGasketMaterial,\n setTestGasketMaterial,\n testInteriorFanlightMaterial,\n setTestInteriorFanlightMaterial,\n testExteriorFanlightMaterial,\n setTestExteriorFanlightMaterial,\n testOcculusInfillMaterial,\n setTestOcculusInfillMaterial,\n testGlassInfillMaterial,\n setTestGlassInfillMaterial,\n testDoorStopMaterial,\n setTestDoorStopMaterial,\n testHingeMaterial,\n setTestHingeMaterial,\n testFrontCoverPanelMaterial,\n setTestFrontCoverPanelMaterial,\n testBackCoverPanelMaterial,\n setTestBackCoverPanelMaterial,\n glassVisible,\n setGlassVisible,\n glassDepth,\n setGlassDepth,\n handleParseCpid,\n }}\n >\n {children}\n </ConfiguratorContext.Provider>\n );\n};\n\nexport const useConfigurator = () => {\n const context = useContext(ConfiguratorContext);\n if (!context) {\n throw new Error(\n \"useConfigurator must be used within a ConfiguratorProvider\"\n );\n }\n return context;\n};\n","import React, { useState, useMemo, useEffect } from \"react\";\nimport { Geometry, Base, Subtraction } from \"@react-three/csg\";\nimport { useConfigurator } from \"../context/DoorContext\";\nimport { useSpring, a } from \"@react-spring/three\";\nimport * as THREE from \"three\";\n\nconst placeholderMaterial = new THREE.MeshStandardMaterial({\n color: \"#cccccc\",\n roughness: 0.8,\n});\n\nconst placeholderMaterialforFrames = new THREE.MeshStandardMaterial({\n color: \"#000\",\n roughness: 0.8,\n});\n\nexport const availableMaterials = {\n black: new THREE.MeshStandardMaterial({ color: \"#000000\" }),\n metal: new THREE.MeshStandardMaterial({\n color: \"#0xaaaaaa\",\n metalness: 1.0,\n roughness: 0.4,\n }),\n darkgrey: new THREE.MeshStandardMaterial({ color: \"#5e5e5e\" }),\n grey: new THREE.MeshStandardMaterial({ color: \"#cccccc\" }),\n yellow: new THREE.MeshStandardMaterial({ color: \"#ffff00\" }),\n darkBrown: new THREE.MeshStandardMaterial({ color: \"#a0522d\" }),\n brown: new THREE.MeshStandardMaterial({ color: \"#d2b48c\" }),\n glass: new THREE.MeshStandardMaterial({\n color: \"#ffffff\",\n roughness: 0.1,\n transparent: true,\n opacity: 0.7,\n }),\n aluminum: new THREE.MeshStandardMaterial({\n color: \"#dcdcdc\",\n metalness: 1.0,\n roughness: 0.3,\n }),\n\n silver: new THREE.MeshStandardMaterial({\n color: \"#c0c0c0\",\n metalness: 1.0,\n roughness: 0.2,\n }),\n\n gold: new THREE.MeshStandardMaterial({\n color: \"#ffd700\",\n metalness: 1.0,\n roughness: 0.3,\n }),\n\n diamond: new THREE.MeshStandardMaterial({\n color: \"#e0f7fa\",\n metalness: 0.9,\n roughness: 0.05,\n transparent: true,\n opacity: 0.9,\n envMapIntensity: 1.5,\n }),\n};\n\nfunction GlassHinge({\n position,\n pivot,\n frameSideWidth,\n doorDepthM,\n material,\n gasketMaterial,\n}) {\n const plateWidth = 130 / 1000;\n const plateHeight = 55 / 1000;\n const plateThickness = 8 / 1000;\n const gasketThickness = 1 / 1000;\n const pivotRadius = 10 / 1000;\n const pivotHeight = plateHeight;\n\n const sideMultiplier = pivot === \"left\" ? 1 : -1;\n\n const plateOffsetX = sideMultiplier * (plateWidth / 2 + frameSideWidth);\n\n const holeRadius = 10 / 1000;\n const holeSpacingX = 45 / 1000;\n\n return (\n <group position={position}>\n <mesh material={material} castShadow receiveShadow position-x={0.01}>\n <cylinderGeometry args={[pivotRadius, pivotRadius, pivotHeight, 32]} />\n </mesh>\n\n <group position-x={plateOffsetX}>\n {/* Back Plate */}\n <mesh\n position-z={-(doorDepthM / 2) - plateThickness / 2 - gasketThickness}\n material={material}\n castShadow\n receiveShadow\n >\n <boxGeometry args={[plateWidth, plateHeight, plateThickness]} />\n </mesh>\n {/* Back Gasket */}\n <mesh\n position-z={-(doorDepthM / 2) - gasketThickness / 2}\n material={gasketMaterial}\n castShadow\n receiveShadow\n >\n <boxGeometry args={[plateWidth, plateHeight, gasketThickness]} />\n </mesh>\n {/* Front Plate with Holes */}\n <mesh\n position-z={doorDepthM / 2 + plateThickness / 2 + gasketThickness}\n castShadow\n receiveShadow\n >\n <Geometry useGroups>\n <Base material={material}>\n <boxGeometry args={[plateWidth, plateHeight, plateThickness]} />\n </Base>\n {/* Left Hole */}\n <Subtraction\n position={[-sideMultiplier * (holeSpacingX / 2), 0, 0]}\n rotation={[Math.PI / 2, 0, 0]}\n >\n <cylinderGeometry\n args={[holeRadius, holeRadius, plateThickness + 0.01, 32]}\n />\n </Subtraction>\n {/* Right Hole */}\n <Subtraction\n position={[sideMultiplier * (holeSpacingX / 2), 0, 0]}\n rotation={[Math.PI / 2, 0, 0]}\n >\n <cylinderGeometry\n args={[holeRadius, holeRadius, plateThickness + 0.01, 32]}\n />\n </Subtraction>\n </Geometry>\n </mesh>\n\n {/* Front Gasket */}\n <mesh\n position-z={doorDepthM / 2 + gasketThickness / 2}\n material={gasketMaterial}\n castShadow\n receiveShadow\n >\n <boxGeometry args={[plateWidth, plateHeight, gasketThickness]} />\n </mesh>\n </group>\n </group>\n );\n}\n\nfunction DoorStopCuts({\n visible,\n width,\n height,\n stopWidth,\n stopDepth,\n stopPositionZ,\n centerZ,\n glassDepthOffset = 0,\n material,\n setName,\n}: DoorStopCutsProps) {\n if (!visible) return null;\n\n return (\n <>\n {/* Top cut only */}\n <Subtraction\n name={`cut-top-${setName}`}\n material={material}\n position={[\n 0,\n height / 2 - stopWidth / 2 + 0.0001,\n stopPositionZ - centerZ,\n ]}\n >\n <boxGeometry args={[width + 0.01, stopWidth, stopDepth + 0.01]} />\n </Subtraction>\n\n {/* Left cut */}\n <Subtraction\n name={`cut-left-${setName}`}\n material={material}\n position={[\n -width / 2 + stopWidth / 2 - 0.0001,\n 0,\n stopPositionZ - centerZ,\n ]}\n >\n <boxGeometry args={[stopWidth, height + 0.01, stopDepth + 0.01]} />\n </Subtraction>\n\n {/* Right cut */}\n <Subtraction\n name={`cut-right-${setName}`}\n material={material}\n position={[\n width / 2 - stopWidth / 2 + 0.0001,\n 0,\n stopPositionZ - centerZ,\n ]}\n >\n <boxGeometry args={[stopWidth, height + 0.01, stopDepth + 0.01]} />\n </Subtraction>\n </>\n );\n}\n\ntype DoorModelsProps = {\n doorName?: string;\n};\n\ntype DoorStopCutsProps = {\n visible: boolean;\n width: number;\n height: number;\n stopWidth: number;\n stopDepth: number;\n stopPositionZ: number;\n centerZ: number;\n glassDepthOffset?: number;\n material: THREE.Material;\n setName: string;\n};\n\nfunction DoorModels({ doorName }: DoorModelsProps) {\n const {\n isPlaneVisible,\n isFrameVisible,\n door,\n doorFrame,\n interiorFanlight,\n exteriorFanlight,\n occulus,\n glass,\n frontCoverPanel,\n backCoverPanel,\n frameType,\n bodyType,\n exteriorFanlightType,\n testDoorMaterial,\n testFrameMaterial,\n testGasketMaterial,\n testInteriorFanlightMaterial,\n testExteriorFanlightMaterial,\n testOcculusInfillMaterial,\n testGlassInfillMaterial,\n testDoorStopMaterial,\n testHingeMaterial,\n glassVisible,\n testFrontCoverPanelMaterial,\n testBackCoverPanelMaterial,\n glassDepth,\n handleParseCpid,\n } = useConfigurator();\n\n useEffect(() => {\n if (doorName) {\n handleParseCpid(doorName);\n }\n }, [doorName, handleParseCpid]);\n\n // here i get material names from context\n const { doorMaterial: doorMaterialName } = door;\n const {\n frameMaterial: frameMaterialName,\n gasketMaterial: gasketMaterialName,\n doorStopMaterial: doorStopMaterialName,\n hingeMaterial: hingeMaterialName,\n } = doorFrame;\n const { material: interiorFanlightMaterialName } = interiorFanlight;\n const { material: exteriorFanlightMaterialName } = exteriorFanlight;\n const { material: occulusInfillMaterialName } = occulus;\n const { material: glassInfillMaterialName } = glass;\n\n const { material: frontCoverPanelMaterialName } = frontCoverPanel;\n const { material: backCoverPanelMaterialName } = backCoverPanel;\n\n // --- Material Logic ---\n const doorMaterial = useMemo(\n () =>\n availableMaterials[testDoorMaterial] ||\n availableMaterials[doorMaterialName] ||\n placeholderMaterial,\n [testDoorMaterial, doorMaterialName]\n );\n const frameMaterial = useMemo(\n () =>\n availableMaterials[testFrameMaterial] ||\n availableMaterials[frameMaterialName] ||\n placeholderMaterialforFrames,\n [testFrameMaterial, frameMaterialName]\n );\n const gasketMaterial = useMemo(\n () =>\n availableMaterials[testGasketMaterial] ||\n availableMaterials[gasketMaterialName] ||\n new THREE.MeshStandardMaterial({ color: \"#111111\" }),\n [testGasketMaterial, gasketMaterialName]\n );\n\n const doorStopMaterial = useMemo(() => {\n return (\n availableMaterials[testDoorStopMaterial] ||\n availableMaterials[\n (doorStopMaterialName as keyof typeof availableMaterials) || \"\"\n ] ||\n frameMaterial\n );\n }, [testDoorStopMaterial, doorStopMaterialName, frameType, frameMaterial]);\n\n const interiorFanlightMaterial = useMemo(\n () =>\n availableMaterials[testInteriorFanlightMaterial] ||\n availableMaterials[interiorFanlightMaterialName] ||\n placeholderMaterial,\n [testInteriorFanlightMaterial, interiorFanlightMaterialName]\n );\n const exteriorFanlightMaterial = useMemo(\n () =>\n availableMaterials[testExteriorFanlightMaterial] ||\n availableMaterials[exteriorFanlightMaterialName] ||\n placeholderMaterial,\n [testExteriorFanlightMaterial, exteriorFanlightMaterialName]\n );\n const occulusInfillMaterial = useMemo(\n () =>\n availableMaterials[testOcculusInfillMaterial] ||\n availableMaterials[occulusInfillMaterialName] ||\n placeholderMaterial,\n [testOcculusInfillMaterial, occulusInfillMaterialName]\n );\n const glassInfillMaterial = useMemo(\n () =>\n availableMaterials[testGlassInfillMaterial] ||\n availableMaterials[glassInfillMaterialName] ||\n placeholderMaterial,\n [testGlassInfillMaterial, glassInfillMaterialName]\n );\n\n const hingeBodyMaterial = useMemo(\n () =>\n availableMaterials[testHingeMaterial] ||\n availableMaterials[hingeMaterialName] ||\n new THREE.MeshStandardMaterial({\n color: \"#d4d4d4\",\n metalness: 1.0,\n roughness: 0.4,\n }),\n [testHingeMaterial, hingeMaterialName]\n );\n\n const frontCoverPanelMaterial = useMemo(\n () =>\n availableMaterials[testFrontCoverPanelMaterial] ||\n availableMaterials[frontCoverPanelMaterialName] ||\n placeholderMaterial,\n [testFrontCoverPanelMaterial, frontCoverPanelMaterialName]\n );\n\n const backCoverPanelMaterial = useMemo(\n () =>\n availableMaterials[testBackCoverPanelMaterial] ||\n availableMaterials[backCoverPanelMaterialName] ||\n placeholderMaterial,\n [testBackCoverPanelMaterial, backCoverPanelMaterialName]\n );\n\n const hingeAccentMaterial = useMemo(\n () =>\n new THREE.MeshStandardMaterial({\n color: \"#1a1a1a\",\n roughness: 0.1,\n }),\n []\n );\n\n // --- Dimension calculations ---\n const { doorWidth, doorHeight, theDoorDepth, doorPivot, doorOpening } = door;\n const {\n frameDepth,\n topThk,\n sidesThk,\n doorStopWidth,\n doorStopDepth,\n doorStopOffset,\n notchWidth,\n notchDepth,\n notchposition,\n gasketWidth,\n gasketDepth,\n secondDoorStopWidth,\n secondDoorStopDepth,\n secondDoorStopOffset,\n } = doorFrame;\n const { height: interiorFanlightHeightValue } = interiorFanlight;\n const {\n height: exteriorFanlightHeightValue,\n depth: exteriorFanlightDepthValue,\n } = exteriorFanlight;\n const {\n x1: occulusX1,\n x2: occulusX2,\n y1: occulusY1,\n y2: occulusY2,\n depth: occulusInfillDepth,\n } = occulus;\n const { width: architraveWidth, depth: architraveDepth } = frontCoverPanel;\n\n const interiorFanlightHeight = interiorFanlight.visible\n ? interiorFanlightHeightValue\n : 0;\n const mainDoorHeight = doorHeight - interiorFanlightHeight;\n\n const topThkValue = parseInt(topThk) || 20;\n const sidesThkValue = parseInt(sidesThk) || 20;\n\n // Convert dimensions from mm to meters\n const doorWidthM = doorWidth / 1000;\n const mainDoorHeightM = mainDoorHeight / 1000;\n const interiorFanlightHeightM = interiorFanlightHeight / 1000;\n const totalOpeningHeightM = doorHeight / 1000;\n const doorDepthM = theDoorDepth / 1000;\n const frameDepthM = frameDepth / 1000;\n const topFrameWidthM = topThkValue / 1000;\n const sidesFrameWidthM = sidesThkValue / 1000;\n const exteriorFanlightHeightM = exteriorFanlightHeightValue / 1000;\n const exteriorFanlightDepthM = exteriorFanlightDepthValue / 1000;\n const occulusX1M = occulusX1 / 1000;\n const occulusX2M = occulusX2 / 1000;\n const occulusY1M = occulusY1 / 1000;\n const occulusY2M = occulusY2 / 1000;\n const occulusInfillDepthM = occulusInfillDepth / 1000;\n const doorStopWidthM = doorStopWidth / 1000;\n const doorStopDepthM = doorStopDepth / 1000;\n\n // Architrave Dimensions\n const architraveProfileM = architraveWidth / 1000;\n const architraveDepthM = architraveDepth / 1000;\n\n // Gasket Dimensions\n const gasketWidthM = gasketWidth / 1000;\n const gasketDepthM = gasketDepth / 1000;\n\n const doorStopOffsetValue = parseInt(doorStopOffset);\n const doorStopOffsetFromEdgeM = doorStopOffsetValue / 1000;\n\n const notchDepthValue = parseInt(notchDepth) || 40;\n const notchWidthValue = parseInt(notchWidth) || 20;\n\n const notchWidthM = notchWidthValue / 1000;\n const notchDepthM = notchDepthValue / 1000;\n\n const isOpeningIn = doorOpening === \"in\";\n\n const doorStopPositionZ = useMemo(\n () =>\n isOpeningIn\n ? frameDepthM / 2 - doorStopOffsetFromEdgeM - doorStopDepthM / 2\n : -frameDepthM / 2 + doorStopOffsetFromEdgeM + doorStopDepthM / 2,\n [isOpeningIn, frameDepthM, doorStopOffsetFromEdgeM, doorStopDepthM]\n );\n\n const gasketZPosition = useMemo(\n () =>\n isOpeningIn\n ? doorStopPositionZ - doorStopDepthM / 2 - gasketDepthM / 2\n : doorStopPositionZ + doorStopDepthM / 2 + gasketDepthM / 2,\n [isOpeningIn, doorStopPositionZ, doorStopDepthM, gasketDepthM]\n );\n const secondDoorStopWidthM = secondDoorStopWidth / 1000;\n const secondDoorStopDepthM = secondDoorStopDepth / 1000;\n const secondDoorStopPositionZ = isOpeningIn\n ? frameDepthM / 2 - secondDoorStopDepthM / 2\n : -frameDepthM / 2 + secondDoorStopDepthM / 2;\n\n // Position the first glass panel against the primary doorstop\n\n const secondGasketZPosition = isOpeningIn\n ? secondDoorStopPositionZ - secondDoorStopDepthM / 2 - gasketDepthM / 2\n : secondDoorStopPositionZ + secondDoorStopDepthM / 2 + gasketDepthM / 2;\n\n const doorCenterZ = useMemo(() => {\n if (frameType === \"WF_FLI\") {\n if (isOpeningIn) {\n return frameDepthM / 2 - doorDepthM / 2;\n } else {\n return -frameDepthM / 2 + doorDepthM / 2;\n }\n }\n\n if (frameType === \"WDGF_WDG100\" || frameType === \"WF_100\") {\n return 0;\n } else {\n if (isOpeningIn) {\n const gasketBackFaceZ = gasketZPosition - gasketDepthM / 2;\n return gasketBackFaceZ - doorDepthM / 2;\n } else {\n const gasketFrontFaceZ = gasketZPosition + gasketDepthM / 2;\n return gasketFrontFaceZ + doorDepthM / 2;\n }\n }\n }, [\n isOpeningIn,\n gasketZPosition,\n gasketDepthM,\n doorDepthM,\n frameType,\n frameDepthM,\n ]);\n const GlassPanelDepthM = glassDepth / 1000;\n\n const frontGlassOffsetZ = doorDepthM / 2 + GlassPanelDepthM / 2;\n const backGlassOffsetZ = -doorDepthM / 2 - GlassPanelDepthM / 2;\n\n // --- Door Stop Positions on Door ---\n const doorStopOffsetOnDoor =\n frameType === \"WDGF_WDG100\" ? secondDoorStopWidthM / 2 : doorStopDepthM / 2;\n\n const exteriorFanlightZPosition =\n exteriorFanlightType === \"ALSGFL\"\n ? 0 // Center it\n : isOpeningIn\n ? -frameDepthM / 2 + exteriorFanlightDepthM / 2\n : frameDepthM / 2 - exteriorFanlightDepthM / 2;\n\n const occulusWidthM = doorWidthM - occulusX1M - occulusX2M;\n const occulusHeightM = mainDoorHeightM - occulusY1M - occulusY2M;\n const occulusPositionXM = (occulusX1M - occulusX2M) / 2;\n const occulusPositionYM = (occulusY2M - occulusY1M) / 2;\n\n const [isOpen, setIsOpen] = useState(false);\n const hingeSideX = doorPivot === \"left\" ? -doorWidthM / 2 : doorWidthM / 2;\n\n const leftGlass_Z =\n -frameDepthM / 2 + GlassPanelDepthM / 2 - GlassPanelDepthM;\n const rightGlass_Z =\n frameDepthM / 2 - GlassPanelDepthM / 2 + GlassPanelDepthM;\n // --- PIVOT ---\n const hingeZ = useMemo(() => {\n if (frameType === \"WF_FLI\") {\n if (isOpeningIn) {\n return doorCenterZ - doorDepthM / 2;\n } else {\n return doorCenterZ + doorDepthM / 2;\n }\n }\n return isOpeningIn ? -frameDepthM / 2 : frameDepthM / 2;\n }, [frameType, isOpeningIn, doorCenterZ, doorDepthM, frameDepthM]);\n\n const doorOffsetZ = useMemo(\n () => doorCenterZ - hingeZ,\n [doorCenterZ, hingeZ]\n );\n\n const directionMultiplier = doorOpening === \"in\" ? 1 : -1;\n const { rotation } = useSpring({\n rotation: isOpen\n ? [\n 0,\n (doorPivot === \"left\" ? Math.PI / 2 : -Math.PI / 2) *\n directionMultiplier,\n 0,\n ]\n : [0, 0, 0],\n config: { mass: 1, tension: 100, friction: 20 },\n });\n\n const handleClick = () => setIsOpen(!isOpen);\n\n const totalFrameWidth = doorWidthM + sidesFrameWidthM * 2;\n const totalFrameHeightM = totalOpeningHeightM + topFrameWidthM;\n const sideFrameCenterY = topFrameWidthM / 2;\n\n const interiorFanlightYPosition =\n totalOpeningHeightM / 2 - interiorFanlightHeightM / 2;\n const doorYPosition = -totalOpeningHeightM / 2 + mainDoorHeightM / 2;\n const topFrameCenterY = totalOpeningHeightM / 2 + topFrameWidthM / 2;\n const topOfFrameY = topFrameCenterY + topFrameWidthM / 2;\n const exteriorFanlightYPosition = topOfFrameY + exteriorFanlightHeightM / 2;\n\n const frontArchitraveZ = frameDepthM / 2 + architraveDepthM / 2;\n const backArchitraveZ = -frameDepthM / 2 - architraveDepthM / 2;\n\n const sideArchitraveHeight = totalOpeningHeightM;\n const sideArchitraveCenterY = 0;\n\n const leftArchitraveX = -doorWidthM / 2 - architraveProfileM / 2;\n const rightArchitraveX = doorWidthM / 2 + architraveProfileM / 2;\n\n const topArchitraveY = totalOpeningHeightM / 2 + architraveProfileM / 2;\n const topArchitraveWidth = doorWidthM + 2 * architraveProfileM;\n\n // --- Primary Gasket Edge Position Calculations ---\n const topGasketYPosition =\n totalOpeningHeightM / 2 - doorStopWidthM + gasketWidthM / 2;\n const leftGasketXPosition =\n -doorWidthM / 2 + doorStopWidthM - gasketWidthM / 2;\n const rightGasketXPosition =\n doorWidthM / 2 - doorStopWidthM + gasketWidthM / 2;\n\n // --- Second Gasket ---\n\n const secondTopGasketYPosition =\n totalOpeningHeightM / 2 - secondDoorStopWidthM + gasketWidthM / 2;\n\n const secondLeftGasketXPosition =\n -doorWidthM / 2 + secondDoorStopWidthM - gasketWidthM / 2;\n\n const secondRightGasketXPosition =\n doorWidthM / 2 - secondDoorStopWidthM + gasketWidthM / 2;\n // --- HINGE CALCULATIONS ---\n const hingeTotalHeightM = 120 / 1000;\n const hingeRadiusM = 8 / 1000;\n const capHeightM = 4 / 1000;\n const separatorHeightM = 4 / 1000;\n\n const barrelPartHeight =\n (hingeTotalHeightM - capHeightM * 2 - separatorHeightM) / 2;\n\n // --- HINGE VISIBILITY LOGIC ---\n const isGlassDoor = useMemo(\n () => [\"SG8\", \"SG10\", \"SG12\"].includes(bodyType),\n [bodyType]\n );\n\n // Calculate evenly spaced hinge positions\n const standardHingeYPositions = useMemo(() => {\n const numHinges = 4;\n const topMargin = 180 / 1000;\n const bottomMargin = 180 / 1000;\n const availableHeight = mainDoorHeightM - topMargin - bottomMargin;\n const spacing = availableHeight / (numHinges - 1);\n const positions: number[] = [];\n for (let i = 0; i < numHinges; i++) {\n positions.push(mainDoorHeightM / 2 - topMargin - i * spacing);\n }\n return positions;\n }, [mainDoorHeightM]);\n\n // Y positions for the new glass hinges\n const glassHingeYPositions = useMemo(() => {\n const topMargin = 250 / 1000;\n const secondTopMargin = 450 / 1000;\n const bottomMargin = 250 / 1000;\n\n const top = mainDoorHeightM / 2 - topMargin;\n const secondTop = mainDoorHeightM / 2 - secondTopMargin;\n const bottom = -mainDoorHeightM / 2 + bottomMargin;\n\n return [top, secondTop, bottom];\n }, [mainDoorHeightM]);\n\n const isStandardHingeVisible = useMemo(() => {\n if (isGlassDoor) return false;\n if (!isFrameVisible) return false;\n\n const invisibleFrameTypes = [\"WDGF_WDG100\", \"WF_100\", \"WF_FLI\"];\n if (invisibleFrameTypes.includes(frameType)) {\n return false;\n }\n\n return true;\n }, [isFrameVisible, frameType, isGlassDoor]);\n\n return (\n <>\n {frontCoverPanel.visible && (\n <group position-z={frontArchitraveZ}>\n {/* Top */}\n <mesh\n position={[0, topArchitraveY, 0]}\n castShadow\n material={frontCoverPanelMaterial}\n >\n <boxGeometry\n args={[topArchitraveWidth, architraveProfileM, architraveDepthM]}\n />\n </mesh>\n {/* Left */}\n <mesh\n position={[leftArchitraveX, sideArchitraveCenterY, 0]}\n castShadow\n material={frontCoverPanelMaterial}\n >\n <boxGeometry\n args={[\n architraveProfileM,\n sideArchitraveHeight,\n architraveDepthM,\n ]}\n />\n </mesh>\n {/* Right */}\n <mesh\n position={[rightArchitraveX, sideArchitraveCenterY, 0]}\n castShadow\n material={frontCoverPanelMaterial}\n >\n <boxGeometry\n args={[\n architraveProfileM,\n sideArchitraveHeight,\n architraveDepthM,\n ]}\n />\n </mesh>\n </group>\n )}\n {backCoverPanel.visible && (\n <group position-z={backArchitraveZ}>\n {/* Top */}\n <mesh\n position={[0, topArchitraveY, 0]}\n castShadow\n material={backCoverPanelMaterial}\n >\n <boxGeometry\n args={[topArchitraveWidth, architraveProfileM, architraveDepthM]}\n />\n </mesh>\n {/* Left */}\n <mesh\n position={[leftArchitraveX, sideArchitraveCenterY, 0]}\n castShadow\n material={backCoverPanelMaterial}\n >\n <boxGeometry\n args={[\n architraveProfileM,\n sideArchitraveHeight,\n architraveDepthM,\n ]}\n />\n </mesh>\n {/* Right */}\n <mesh\n position={[rightArchitraveX, sideArchitraveCenterY, 0]}\n castShadow\n material={backCoverPanelMaterial}\n >\n <boxGeometry\n args={[\n architraveProfileM,\n sideArchitraveHeight,\n architraveDepthM,\n ]}\n />\n </mesh>\n </group>\n )}\n\n {exteriorFanlight.visible && (\n <mesh\n position={[0, exteriorFanlightYPosition, exteriorFanlightZPosition]}\n castShadow\n material={exteriorFanlightMaterial}\n >\n <boxGeometry\n args={[\n totalFrameWidth,\n exteriorFanlightHeightM,\n exteriorFanlightDepthM,\n ]}\n />\n </mesh>\n )}\n\n {isFrameVisible && (\n <group>\n {/* --- Top Frame with CSG Cut --- */}\n <mesh castShadow position={[0, topFrameCenterY, 0]}>\n <Geometry useGroups>\n <Base name=\"frame-base\" material={frameMaterial}>\n <boxGeometry args={[doorWidthM, topFrameWidthM, frameDepthM]} />\n </Base>\n {![\"MXF_40\", \"MXF_50\", \"MXCAF_40\", \"MXCAF_50\"].includes(\n frameType\n ) && (\n <Subtraction\n name=\"cut-exterior\"\n material={frameMaterial}\n position={[0, notchposition, 0]}\n >\n <boxGeometry\n args={[doorWidthM + 0.01, notchWidthM, notchDepthM]}\n />\n </Subtraction>\n )}\n </Geometry>\n </mesh>\n\n {/* --- Left Frame with CSG Cut --- */}\n <mesh\n castShadow\n position={[\n -doorWidthM / 2 - sidesFrameWidthM / 2,\n sideFrameCenterY,\n 0,\n ]}\n >\n <Geometry useGroups>\n <Base name=\"frame-base\" material={frameMaterial}>\n <boxGeometry\n args={[sidesFrameWidthM, totalFrameHeightM, frameDepthM]}\n />\n </Base>\n {![\"MXF_40\", \"MXF_50\", \"MXCAF_40\", \"MXCAF_50\"].includes(\n frameType\n ) && (\n <Subtraction\n name=\"cut-exterior\"\n material={frameMaterial}\n position={[-notchposition, 0, 0]}\n >\n <boxGeometry\n args={[notchWidthM, totalFrameHeightM + 0.01, notchDepthM]}\n />\n </Subtraction>\n )}\n </Geometry>\n </mesh>\n\n {/* --- Right Frame with CSG Cut --- */}\n <mesh\n castShadow\n position={[\n doorWidthM / 2 + sidesFrameWidthM / 2,\n sideFrameCenterY,\n 0,\n ]}\n >\n <Geometry useGroups>\n <Base name=\"frame-base\" material={frameMaterial}>\n <boxGeometry\n args={[sidesFrameWidthM, totalFrameHeightM, frameDepthM]}\n />\n </Base>\n {![\"MXF_40\", \"MXF_50\", \"MXCAF_40\", \"MXCAF_50\"].includes(\n frameType\n ) && (\n <Subtraction\n name=\"cut-exterior\"\n material={frameMaterial}\n position={[notchposition, 0, 0]}\n >\n <boxGeometry\n args={[notchWidthM, totalFrameHeightM + 0.01, notchDepthM]}\n />\n </Subtraction>\n )}\n </Geometry>\n </mesh>\n\n {/* --- Door Stop Geometry --- */}\n <mesh\n castShadow\n position={[\n 0,\n totalOpeningHeightM / 2 - doorStopWidthM / 2,\n doorStopPositionZ,\n ]}\n material={doorStopMaterial}\n >\n <boxGeometry args={[doorWidthM, doorStopWidthM, doorStopDepthM]} />\n </mesh>\n <mesh\n castShadow\n position={[\n -doorWidthM / 2 + doorStopWidthM / 2,\n 0,\n doorStopPositionZ,\n ]}\n material={doorStopMaterial}\n >\n <boxGeometry\n args={[doorStopWidthM, totalOpeningHeightM, doorStopDepthM]}\n />\n </mesh>\n <mesh\n castShadow\n position={[\n doorWidthM / 2 - doorStopWidthM / 2,\n 0,\n doorStopPositionZ,\n ]}\n material={doorStopMaterial}\n >\n <boxGeometry\n args={[doorStopWidthM, totalOpeningHeightM, doorStopDepthM]}\n />\n </mesh>\n\n {/* --- Rubber Gasket Geometry (Primary) --- */}\n {frameType !== \"WF_FLI\" && (\n <>\n <mesh\n castShadow\n position={[0, topGasketYPosition, gasketZPosition]}\n material={gasketMaterial}\n >\n <boxGeometry\n args={[doorWidthM - 0.03, gasketWidthM + 0.005, gasketDepthM]}\n />\n </mesh>\n <mesh\n castShadow\n position={[\n leftGasketXPosition - 0.005,\n -0.005,\n gasketZPosition,\n ]}\n material={gasketMaterial}\n >\n <boxGeometry\n args={[\n gasketWidthM + 0.005,\n totalOpeningHeightM - 0.02,\n gasketDepthM,\n ]}\n />\n </mesh>\n <mesh\n castShadow\n position={[\n rightGasketXPosition + 0.005,\n -0.005,\n gasketZPosition,\n ]}\n material={gasketMaterial}\n >\n <boxGeometry\n args={[\n gasketWidthM + 0.005,\n totalOpeningHeightM - 0.02,\n gasketDepthM,\n ]}\n />\n </mesh>\n </>\n )}\n\n {(frameType === \"WDGF_WDG100\" ||\n frameType === \"WF_100\" ||\n frameType === \"WF_FLI\") && (\n <group>\n {/* --- Door Stops (Second) --- */}\n <group>\n <mesh\n castShadow\n position={[\n 0,\n totalOpeningHeightM / 2 - secondDoorStopWidthM / 2,\n secondDoorStopPositionZ,\n ]}\n material={doorStopMaterial}\n >\n <boxGeometry\n args={[\n doorWidthM,\n secondDoorStopWidthM,\n secondDoorStopDepthM,\n ]}\n />\n </mesh>\n <mesh\n castShadow\n position={[\n -doorWidthM / 2 + secondDoorStopWidthM / 2,\n 0,\n secondDoorStopPositionZ,\n ]}\n material={doorStopMaterial}\n >\n <boxGeometry\n args={[\n secondDoorStopWidthM,\n totalOpeningHeightM,\n secondDoorStopDepthM,\n ]}\n />\n </mesh>\n <mesh\n castShadow\n position={[\n doorWidthM / 2 - secondDoorStopWidthM / 2,\n 0,\n secondDoorStopPositionZ,\n ]}\n material={doorStopMaterial}\n >\n <boxGeometry\n args={[\n secondDoorStopWidthM,\n totalOpeningHeightM,\n secondDoorStopDepthM,\n ]}\n />\n </mesh>\n </group>\n\n {/* --- Gaskets (Second) --- */}\n <group>\n <mesh\n castShadow\n position={[\n 0,\n secondTopGasketYPosition - 0.005,\n secondGasketZPosition,\n ]}\n material={gasketMaterial}\n >\n <boxGeometry\n args={[\n doorWidthM - 0.03,\n gasketWidthM + 0.005,\n gasketDepthM,\n ]}\n />\n </mesh>\n <mesh\n castShadow\n position={[\n secondLeftGasketXPosition - 0.005,\n -0.01,\n secondGasketZPosition,\n ]}\n material={gasketMaterial}\n >\n <boxGeometry\n args={[\n gasketWidthM + 0.005,\n totalOpeningHeightM - 0.04,\n gasketDepthM,\n ]}\n />\n </mesh>\n <mesh\n castShadow\n position={[\n secondRightGasketXPosition + 0.005,\n -0.01,\n secondGasketZPosition,\n ]}\n material={gasketMaterial}\n >\n <boxGeometry\n args={[\n gasketWidthM + 0.004,\n totalOpeningHeightM - 0.04,\n gasketDepthM,\n ]}\n />\n </mesh>\n </group>\n\n {/* --- Glass Frame (if visible) --- */}\n {glassVisible && (\n <>\n {/* Back side */}\n <group>\n {/* Top frame */}\n {(frameType === \"WDGF_WDG100\" ||\n frameType === \"WF_100\") && (\n <mesh\n castShadow\n position={[\n 0,\n topFrameCenterY - secondDoorStopWidthM / 2,\n leftGlass_Z,\n ]}\n material={glassInfillMaterial}\n >\n <boxGeometry\n args={[\n doorWidthM - 2 * secondDoorStopWidthM,\n topFrameWidthM + secondDoorStopWidthM,\n GlassPanelDepthM,\n ]}\n />\n </mesh>\n )}\n {frameType !== \"WDGF_WDG100\" && frameType !== \"WF_100\" && (\n <mesh\n castShadow\n position={[0, topFrameCenterY, leftGlass_Z]}\n material={glassInfillMaterial}\n >\n <boxGeometry\n args={[\n doorWidthM - 2 * secondDoorStopWidthM,\n topFrameWidthM,\n GlassPanelDepthM,\n ]}\n />\n </mesh>\n )}\n\n {/* Left side frame */}\n <mesh\n castShadow\n position={[\n -doorWidthM / 2 -\n sidesFrameWidthM / 2 +\n secondDoorStopWidthM / 2,\n sideFrameCenterY,\n leftGlass_Z,\n ]}\n material={glassInfillMaterial}\n >\n <boxGeometry\n args={[\n sidesFrameWidthM + secondDoorStopWidthM,\n totalFrameHeightM,\n GlassPanelDepthM,\n ]}\n />\n </mesh>\n\n {/* Right side frame */}\n <mesh\n castShadow\n position={[\n doorWidthM / 2 +\n sidesFrameWidthM / 2 -\n secondDoorStopWidthM / 2,\n sideFrameCenterY,\n leftGlass_Z,\n ]}\n material={glassInfillMaterial}\n >\n <boxGeometry\n args={[\n sidesFrameWidthM + secondDoorStopWidthM,\n totalFrameHeightM,\n GlassPanelDepthM,\n ]}\n />\n </mesh>\n </group>\n\n {/* Front side */}\n <group>\n {/* Top frame */}\n <mesh\n castShadow\n position={[0, topFrameCenterY, rightGlass_Z]}\n material={glassInfillMaterial}\n >\n <boxGeometry\n args={[doorWidthM, topFrameWidthM, GlassPanelDepthM]}\n />\n </mesh>\n\n {/* Left side frame */}\n <mesh\n castShadow\n position={[\n -doorWidthM / 2 - sidesFrameWidthM / 2,\n sideFrameCenterY,\n rightGlass_Z,\n ]}\n material={glassInfillMaterial}\n >\n <boxGeometry\n args={[\n sidesFrameWidthM,\n totalFrameHeightM,\n GlassPanelDepthM,\n ]}\n />\n </mesh>\n\n {/* Right side frame */}\n <mesh\n castShadow\n position={[\n doorWidthM / 2 + sidesFrameWidthM / 2,\n sideFrameCenterY,\n rightGlass_Z,\n ]}\n material={glassInfillMaterial}\n >\n <boxGeometry\n args={[\n sidesFrameWidthM,\n totalFrameHeightM,\n GlassPanelDepthM,\n ]}\n />\n </mesh>\n </group>\n </>\n )}\n </group>\n )}\n </group>\n )}\n\n {interiorFanlight.visible && (\n <mesh\n position={[0, interiorFanlightYPosition, doorCenterZ]}\n castShadow\n material={interiorFanlightMaterial}\n >\n <boxGeometry\n args={[doorWidthM, interiorFanlightHeightM, doorDepthM]}\n />\n </mesh>\n )}\n\n {/* --- Standard Hinge (Static Part) --- */}\n {isStandardHingeVisible &&\n standardHingeYPositions.map((y, index) => (\n <group\n key={`frame-hinge-${index}`}\n position={[hingeSideX, doorYPosition + y, hingeZ]}\n >\n <mesh\n material={hingeBodyMaterial}\n position={[0, separatorHeightM / 2 + barrelPartHeight / 2, 0]}\n castShadow\n >\n <cylinderGeometry\n args={[hingeRadiusM, hingeRadiusM, barrelPartHeight, 32]}\n />\n </mesh>\n <mesh\n material={hingeAccentMaterial}\n position={[\n 0,\n separatorHeightM / 2 + barrelPartHeight + capHeightM / 2,\n 0,\n ]}\n castShadow\n >\n <cylinderGeometry\n args={[hingeRadiusM, hingeRadiusM, capHeightM, 32]}\n />\n </mesh>\n </group>\n ))}\n\n {/* --- PIVOT GROUP --- */}\n <a.group\n position={[hingeSideX, doorYPosition, hingeZ]}\n rotation={rotation.to((x, y, z) => [x, y, z] as any)}\n onClick={handleClick}\n onPointerOver={() => (document.body.style.cursor = \"pointer\")}\n onPointerOut={() => (document.body.style.cursor = \"auto\")}\n >\n {/* --- Standard Hinge (Door Side)--- */}\n {isStandardHingeVisible &&\n standardHingeYPositions.map((y, index) => (\n <group key={`door-hinge-${index}`} position={[0, y, 0]}>\n <mesh\n material={hingeBodyMaterial}\n position={[0, -separatorHeightM / 2 - barrelPartHeight / 2, 0]}\n castShadow\n >\n <cylinderGeometry\n args={[hingeRadiusM, hingeRadiusM, barrelPartHeight, 32]}\n />\n </mesh>\n <mesh\n material={hingeAccentMaterial}\n position={[\n 0,\n -separatorHeightM / 2 - barrelPartHeight - capHeightM / 2,\n 0,\n ]}\n castShadow\n >\n <cylinderGeometry\n args={[hingeRadiusM, hingeRadiusM, capHeightM, 32]}\n />\n </mesh>\n <mesh\n material={hingeAccentMaterial}\n position={[0, 0, 0]}\n castShadow\n >\n <cylinderGeometry\n args={[hingeRadiusM, hingeRadiusM, separatorHeightM, 32]}\n />\n </mesh>\n </group>\n ))}\n {/* --- Glass Hinge --- */}\n {isGlassDoor &&\n isFrameVisible &&\n glassHingeYPositions.map((y, index) => (\n <GlassHinge\n key={`glass-hinge-${index}`}\n position={[0, y, doorOffsetZ]}\n pivot={doorPivot}\n frameSideWidth={sidesFrameWidthM}\n doorDepthM={doorDepthM}\n material={hingeBodyMaterial}\n gasketMaterial={gasketMaterial}\n />\n ))}\n\n <group position={[-hingeSideX, 0, doorOffsetZ]}>\n <mesh castShadow>\n <Geometry useGroups>\n <Base name=\"door-base\" material={doorMaterial}>\n <boxGeometry args={[doorWidthM, mainDoorHeightM, doorDepthM]} />\n </Base>\n {/* First set of cuts */}\n <DoorStopCuts\n visible={\n frameType === \"WDGF_WDG100\" ||\n frameType === \"WF_100\" ||\n frameType === \"WF_FLI\"\n }\n width={doorWidthM}\n height={totalOpeningHeightM}\n stopWidth={doorStopWidthM}\n stopDepth={doorStopDepthM}\n stopPositionZ={doorStopPositionZ}\n centerZ={doorCenterZ}\n glassDepthOffset={GlassPanelDepthM / 2}\n material={doorMaterial}\n setName=\"1\"\n />\n\n {/* Second set of cuts */}\n <DoorStopCuts\n visible={\n frameType === \"WDGF_WDG100\" ||\n frameType === \"WF_100\" ||\n frameType === \"WF_FLI\"\n }\n width={doorWidthM}\n height={totalOpeningHeightM}\n stopWidth={secondDoorStopWidthM}\n stopDepth={secondDoorStopDepthM}\n stopPositionZ={secondDoorStopPositionZ}\n centerZ={doorCenterZ}\n glassDepthOffset={GlassPanelDepthM / 2}\n material={doorMaterial}\n setName=\"2\"\n />\n\n {/* Glass panels */}\n {glassVisible && (\n <>\n <mesh\n position={[0, 0, frontGlassOffsetZ]}\n castShadow\n material={glassInfillMaterial}\n >\n <boxGeometry\n args={[doorWidthM, mainDoorHeightM, GlassPanelDepthM]}\n />\n </mesh>\n\n {frameType !== \"WDGF_WDG100\" && frameType !== \"WF_100\" && (\n <mesh\n position={[0, 0, backGlassOffsetZ]}\n castShadow\n material={glassInfillMaterial}\n >\n <boxGeometry\n args={[doorWidthM, mainDoorHeightM, GlassPanelDepthM]}\n />\n </mesh>\n )}\n\n {(frameType === \"WDGF_WDG100\" || frameType === \"WF_100\") && (\n <mesh\n position={[\n 0,\n -secondDoorStopWidthM / 2,\n backGlassOffsetZ,\n ]}\n castShadow\n material={glassInfillMaterial}\n >\n <boxGeometry\n args={[\n doorWidthM - 2 * secondDoorStopWidthM,\n mainDoorHeightM - secondDoorStopWidthM,\n GlassPanelDepthM,\n ]}\n />\n </mesh>\n )}\n </>\n )}\n\n {/* Occulus cut */}\n {occulus.visible && occulusWidthM > 0 && occulusHeightM > 0 && (\n <Subtraction\n material={placeholderMaterial}\n position={[occulusPositionXM, occulusPositionYM, 0]}\n >\n <boxGeometry\n args={[occulusWidthM, occulusHeightM, doorDepthM + 0.01]}\n />\n </Subtraction>\n )}\n </Geometry>\n </mesh>\n\n {/* Occulus infill */}\n {occulus.visible &&\n occulus.infillVisible &&\n occulusWidthM > 0 &&\n occulusHeightM > 0 && (\n <mesh\n position={[occulusPositionXM, occulusPositionYM, 0]}\n castShadow\n material={occulusInfillMaterial}\n >\n <boxGeometry\n args={[occulusWidthM, occulusHeightM, occulusInfillDepthM]}\n />\n </mesh>\n )}\n </group>\n </a.group>\n\n {/* Floor plane */}\n {isPlaneVisible && (\n <mesh\n receiveShadow\n rotation={[-Math.PI / 2, 0, 0]}\n position={[0, -totalOpeningHeightM / 2 - 0.01, 0]}\n >\n <planeGeometry args={[10, 10]} />\n <meshStandardMaterial color=\"#f9f9f9\" side={THREE.DoubleSide} />\n </mesh>\n )}\n </>\n );\n}\n\nexport default DoorModels;\n","import React from \"react\";\nimport { ConfiguratorProvider } from \"../context/DoorContext\";\nimport DoorModels from \"./DoorModels\";\n\ntype DoorConfiguratorProps = {\n doorName?: string;\n showInterface?: boolean;\n};\n\nconst DoorConfigurator = ({\n doorName,\n showInterface = true,\n}: DoorConfiguratorProps) => {\n return (\n <ConfiguratorProvider>\n <DoorModels doorName={doorName} />\n </ConfiguratorProvider>\n );\n};\n\nexport default DoorConfigurator;\n"],"names":["ConfiguratorContext","createContext","undefined","ConfiguratorProvider","_ref","children","isPlaneVisible","setIsPlaneVisible","useState","isFrameVisible","setIsFrameVisible","cpid","setCpid","totalHeight","setTotalHeight","totalWidth","setTotalWidth","glassVisible","setGlassVisible","glassDepth","setGlassDepth","door","setDoor","doorMaterial","doorWidth","doorHeight","theDoorDepth","doorPivot","doorOpening","doorFrame","setDoorFrame","frameMaterial","doorStopMaterial","gasketMaterial","hingeMaterial","glassMaterial","frameDepth","topThk","sidesThk","doorStopOffset","doorStopWidth","doorStopDepth","notchWidth","notchDepth","notchposition","gasketDepth","gasketWidth","secondDoorStopWidth","secondDoorStopDepth","secondDoorStopOffset","interiorFanlight","setInteriorFanlight","visible","height","material","exteriorFanlight","setExteriorFanlight","depth","occulus","setOcculus","infillVisible","x1","x2","y1","y2","frontCoverPanel","setFrontCoverPanel","width","backCoverPanel","setBackCoverPanel","glass","setGlass","frameType","setFrameType","bodyType","setBodyType","exteriorFanlightType","setExteriorFanlightType","testDoorMaterial","setTestDoorMaterial","testFrameMaterial","setTestFrameMaterial","testGasketMaterial","setTestGasketMaterial","testInteriorFanlightMaterial","setTestInteriorFanlightMaterial","testExteriorFanlightMaterial","setTestExteriorFanlightMaterial","testOcculusInfillMaterial","setTestOcculusInfillMaterial","testGlassInfillMaterial","setTestGlassInfillMaterial","testDoorStopMaterial","setTestDoorStopMaterial","testHingeMaterial","setTestHingeMaterial","testFrontCoverPanelMaterial","setTestFrontCoverPanelMaterial","testBackCoverPanelMaterial","setTestBackCoverPanelMaterial","parseMessage","setParseMessage","type","text","handleParseCpid","useCallback","cpidToParse","showMessage","arguments","length","setTimeout","trim","startsWith","parts","split","newConfig","fanlightVisible","fanlightType","interiorFanlightVisible","occulusVisible","currentIndex","fanlightPart","validFanlights","includes","concat","validSimpleFrameTypes","validBodyTypes","framePart","bodyPartRaw","frameFound","tempBody","replace","endsWith","i","prev","_objectSpread","useEffect","newDoorDepth","newMaterial","newSettings","lookupKey","doorDepth","isMxCaf","newFrameSettings","_objectWithoutProperties","_excluded","topThkValue","parseInt","exteriorFanlightHeight","newDoorHeight","prevDoor","sidesThkValue","newDoorWidth","_jsx","Provider","value","useConfigurator","context","useContext","Error","placeholderMaterial","THREE","MeshStandardMaterial","color","roughness","placeholderMaterialforFrames","availableMaterials","black","metal","metalness","darkgrey","grey","yellow","darkBrown","brown","transparent","opacity","aluminum","silver","gold","diamond","envMapIntensity","GlassHinge","position","pivot","frameSideWidth","doorDepthM","plateWidth","plateHeight","plateThickness","gasketThickness","pivotRadius","pivotHeight","sideMultiplier","plateOffsetX","holeRadius","holeSpacingX","_jsxs","castShadow","receiveShadow","args","Geometry","useGroups","Base","Subtraction","rotation","Math","PI","DoorStopCuts","_ref2","stopWidth","stopDepth","stopPositionZ","centerZ","glassDepthOffset","setName","_Fragment","name","DoorModels","_ref3","doorName","doorMaterialName","frameMaterialName","gasketMaterialName","doorStopMaterialName","hingeMaterialName","interiorFanlightMaterialName","exteriorFanlightMaterialName","occulusInfillMaterialName","glassInfillMaterialName","frontCoverPanelMaterialName","backCoverPanelMaterialName","useMemo","interiorFanlightMaterial","exteriorFanlightMaterial","occulusInfillMaterial","glassInfillMaterial","hingeBodyMaterial","frontCoverPanelMaterial","backCoverPanelMaterial","hingeAccentMaterial","interiorFanlightHeightValue","exteriorFanlightHeightValue","exteriorFanlightDepthValue","occulusX1","occulusX2","occulusY1","occulusY2","occulusInfillDepth","architraveWidth","architraveDepth","interiorFanlightHeight","mainDoorHeight","doorWidthM","mainDoorHeightM","interiorFanlightHeightM","totalOpeningHeightM","frameDepthM","topFrameWidthM","sidesFrameWidthM","exteriorFanlightHeightM","exteriorFanlightDepthM","occulusX1M","occulusX2M","occulusY1M","occulusY2M","occulusInfillDepthM","doorStopWidthM","doorStopDepthM","architraveProfileM","architraveDepthM","gasketWidthM","gasketDepthM","doorStopOffsetValue","doorStopOffsetFromEdgeM","notchDepthValue","notchWidthValue","notchWidthM","notchDepthM","isOpeningIn","doorStopPositionZ","gasketZPosition","secondDoorStopWidthM","secondDoorStopDepthM","secondDoorStopPositionZ","secondGasketZPosition","doorCenterZ","gasketBackFaceZ","gasketFrontFaceZ","GlassPanelDepthM","frontGlassOffsetZ","backGlassOffsetZ","exteriorFanlightZPosition","occulusWidthM","occulusHeightM","occulusPositionXM","occulusPositionYM","isOpen","setIsOpen","hingeSideX","leftGlass_Z","rightGlass_Z","hingeZ","doorOffsetZ","directionMultiplier","useSpring","config","mass","tension","friction","handleClick","totalFrameWidth","totalFrameHeightM","sideFrameCenterY","interiorFanlightYPosition","doorYPosition","topFrameCenterY","topOfFrameY","exteriorFanlightYPosition","frontArchitraveZ","backArchitraveZ","sideArchitraveHeight","sideArchitraveCenterY","leftArchitraveX","rightArchitraveX","topArchitraveY","topArchitraveWidth","topGasketYPosition","leftGasketXPosition","rightGasketXPosition","secondTopGasketYPosition","secondLeftGasketXPosition","secondRightGasketXPosition","hingeTotalHeightM","hingeRadiusM","capHeightM","separatorHeightM","barrelPartHeight","isGlassDoor","standardHingeYPositions","numHinges","topMargin","bottomMargin","availableHeight","spacing","positions","push","glassHingeYPositions","secondTopMargin","top","secondTop","bottom","isStandardHingeVisible","invisibleFrameTypes","map","y","index","a","group","to","x","z","onClick","onPointerOver","document","body","style","cursor","onPointerOut","side","DoubleSide","DoorConfigurator","showInterface"],"mappings":"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"}
|